DSP plugin merge - the two DSP plugins are now gone and all the code has been merged into Dolphin.

This WILL temporarily break the Linux and MacOSX builds but should be easy to fix.

Things left to do:
  * The UI on the new Audio tab for the LLE/HLE choice is ugly
  * At times the code still look "plugin-y" and needs cleanup
  * The two plugins should be merged further. DSPHLE should use the emulated memory etc of DSPLLE as much as possible, so that simply saving the DSPLLE state is enough. This would also bring the possibility of savestate compatibility between the two plugins.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6947 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2011-01-28 18:39:30 +00:00
parent 976420b9d5
commit 419d6a244b
116 changed files with 1271 additions and 3914 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="AudioCommon" Name="AudioCommon"
ProjectGUID="{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}" ProjectGUID="{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}"
RootNamespace="AudioCommon" RootNamespace="AudioCommon"
@ -62,6 +62,7 @@
/> />
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib"
AdditionalLibraryDirectories="" AdditionalLibraryDirectories=""
/> />
<Tool <Tool
@ -126,6 +127,7 @@
/> />
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib"
AdditionalLibraryDirectories="" AdditionalLibraryDirectories=""
/> />
<Tool <Tool
@ -325,6 +327,7 @@
/> />
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib"
AdditionalLibraryDirectories="" AdditionalLibraryDirectories=""
/> />
<Tool <Tool
@ -388,6 +391,7 @@
/> />
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib"
AdditionalLibraryDirectories="" AdditionalLibraryDirectories=""
/> />
<Tool <Tool

View File

@ -28,7 +28,7 @@
namespace AudioCommon namespace AudioCommon
{ {
SoundStream *InitSoundStream(CMixer *mixer) SoundStream *InitSoundStream(CMixer *mixer, void *hWnd)
{ {
// This looks evil. // This looks evil.
if (!mixer) if (!mixer)
@ -38,9 +38,9 @@ namespace AudioCommon
if (backend == BACKEND_OPENAL && OpenALStream::isValid()) if (backend == BACKEND_OPENAL && OpenALStream::isValid())
soundStream = new OpenALStream(mixer); soundStream = new OpenALStream(mixer);
else if (backend == BACKEND_NULLSOUND && NullSound::isValid()) else if (backend == BACKEND_NULLSOUND && NullSound::isValid())
soundStream = new NullSound(mixer, g_dspInitialize.hWnd); soundStream = new NullSound(mixer, hWnd);
else if (backend == BACKEND_DIRECTSOUND && DSound::isValid()) else if (backend == BACKEND_DIRECTSOUND && DSound::isValid())
soundStream = new DSound(mixer, g_dspInitialize.hWnd); soundStream = new DSound(mixer, hWnd);
else if (backend == BACKEND_XAUDIO2 && XAudio2::isValid()) else if (backend == BACKEND_XAUDIO2 && XAudio2::isValid())
soundStream = new XAudio2(mixer); soundStream = new XAudio2(mixer);
else if (backend == BACKEND_AOSOUND && AOSound::isValid()) else if (backend == BACKEND_AOSOUND && AOSound::isValid())
@ -86,7 +86,7 @@ namespace AudioCommon
soundStream = NULL; soundStream = NULL;
} }
INFO_LOG(DSPHLE, "Done shutting down sound stream"); NOTICE_LOG(DSPHLE, "Done shutting down sound stream");
} }
std::vector<std::string> GetSoundBackends() std::vector<std::string> GetSoundBackends()

View File

@ -20,13 +20,11 @@
#include "Common.h" #include "Common.h"
#include "AudioCommonConfig.h" #include "AudioCommonConfig.h"
#include "../../../PluginSpecs/pluginspecs_dsp.h"
#include "SoundStream.h" #include "SoundStream.h"
class CMixer; class CMixer;
extern DSPInitialize g_dspInitialize;
extern SoundStream *soundStream; extern SoundStream *soundStream;
extern AudioCommonConfig ac_Config; extern AudioCommonConfig ac_Config;
@ -57,7 +55,7 @@ union UDSPControl
namespace AudioCommon namespace AudioCommon
{ {
SoundStream *InitSoundStream(CMixer *mixer = NULL); SoundStream *InitSoundStream(CMixer *mixer, void *hWnd);
void ShutdownSoundStream(); void ShutdownSoundStream();
std::vector<std::string> GetSoundBackends(); std::vector<std::string> GetSoundBackends();
bool UseJIT(); bool UseJIT();

View File

@ -16,8 +16,12 @@
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "AudioCommon.h" #include "AudioCommon.h"
AudioCommonConfig ac_Config; AudioCommonConfig ac_Config;
// This shouldn't be a global, at least not here.
SoundStream *soundStream;
// Load from given file // Load from given file
void AudioCommonConfig::Load(IniFile &file) { void AudioCommonConfig::Load(IniFile &file) {
file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true); file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true);

View File

@ -125,9 +125,9 @@ bool DSound::Start()
if (FAILED(DirectSoundCreate8(0, &ds, 0))) if (FAILED(DirectSoundCreate8(0, &ds, 0)))
return false; return false;
if (g_dspInitialize.hWnd) if (hWnd)
{ {
HRESULT hr = ds->SetCooperativeLevel((HWND)g_dspInitialize.hWnd, DSSCL_PRIORITY); HRESULT hr = ds->SetCooperativeLevel((HWND)hWnd, DSSCL_PRIORITY);
} }
if (!CreateBuffer()) if (!CreateBuffer())
return false; return false;

View File

@ -60,13 +60,14 @@ class DSound : public SoundStream
bool WriteDataToBuffer(DWORD dwOffset, char* soundData, DWORD dwSoundBytes); bool WriteDataToBuffer(DWORD dwOffset, char* soundData, DWORD dwSoundBytes);
public: public:
DSound(CMixer *mixer, void *hWnd = NULL) DSound(CMixer *mixer, void *_hWnd = NULL)
: SoundStream(mixer) : SoundStream(mixer)
, bufferSize(0) , bufferSize(0)
, currentPos(0) , currentPos(0)
, lastPos(0) , lastPos(0)
, dsBuffer(0) , dsBuffer(0)
, ds(0) , ds(0)
, hWnd(_hWnd)
{} {}
virtual ~DSound() {} virtual ~DSound() {}

View File

@ -21,6 +21,11 @@
#include "AudioCommon.h" #include "AudioCommon.h"
#include "CPUDetect.h" #include "CPUDetect.h"
#include "../../Core/Src/HW/AudioInterface.h"
// UGLINESS
#include "../../Core/Src/PowerPC/PowerPC.h"
#if _M_SSE >= 0x301 && !(defined __GNUC__ && !defined __SSSE3__) #if _M_SSE >= 0x301 && !(defined __GNUC__ && !defined __SSSE3__)
#include <tmmintrin.h> #include <tmmintrin.h>
#endif #endif
@ -33,14 +38,11 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
if (!samples) if (!samples)
return 0; return 0;
if (g_dspInitialize.pEmulatorState) if (PowerPC::GetState() != 0)
{ {
if (*g_dspInitialize.pEmulatorState != 0) // Silence
{ memset(samples, 0, numSamples * 4);
// Silence return numSamples;
memset(samples, 0, numSamples * 4);
return numSamples;
}
} }
unsigned int numLeft = Common::AtomicLoad(m_numSamples); unsigned int numLeft = Common::AtomicLoad(m_numSamples);
@ -127,7 +129,7 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
if (m_EnableDTKMusic) if (m_EnableDTKMusic)
{ {
// Re-sampling is done inside // Re-sampling is done inside
g_dspInitialize.pGetAudioStreaming(samples, numSamples, m_sampleRate); AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate);
} }
Common::AtomicAdd(m_numSamples, -(s32)numLeft); Common::AtomicAdd(m_numSamples, -(s32)numLeft);
@ -136,18 +138,15 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
} }
void CMixer::PushSamples(short *samples, unsigned int num_samples) void CMixer::PushSamples(const short *samples, unsigned int num_samples)
{ {
if (m_throttle) if (m_throttle)
{ {
// The auto throttle function. This loop will put a ceiling on the CPU MHz. // The auto throttle function. This loop will put a ceiling on the CPU MHz.
while (num_samples + Common::AtomicLoad(m_numSamples) > MAX_SAMPLES) while (num_samples + Common::AtomicLoad(m_numSamples) > MAX_SAMPLES)
{ {
if (g_dspInitialize.pEmulatorState) if (*PowerPC::GetStatePtr() != 0)
{ break;
if (*g_dspInitialize.pEmulatorState != 0)
break;
}
// Shortcut key for Throttle Skipping // Shortcut key for Throttle Skipping
#ifdef _WIN32 #ifdef _WIN32
if (GetAsyncKeyState(VK_TAB)) break;; if (GetAsyncKeyState(VK_TAB)) break;;

View File

@ -48,11 +48,11 @@ public:
// Called from audio threads // Called from audio threads
virtual unsigned int Mix(short* samples, unsigned int numSamples); virtual unsigned int Mix(short* samples, unsigned int numSamples);
virtual void Premix(short *samples, unsigned int numSamples) {} virtual void Premix(short * /*samples*/, unsigned int /*numSamples*/) {}
unsigned int GetNumSamples(); unsigned int GetNumSamples();
// Called from main thread // Called from main thread
virtual void PushSamples(short* samples, unsigned int num_samples); virtual void PushSamples(const short* samples, unsigned int num_samples);
unsigned int GetSampleRate() {return m_sampleRate;} unsigned int GetSampleRate() {return m_sampleRate;}
void SetThrottle(bool use) { m_throttle = use;} void SetThrottle(bool use) { m_throttle = use;}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="Common" Name="Common"
ProjectGUID="{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}" ProjectGUID="{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}"
RootNamespace="Common" RootNamespace="Common"
@ -464,14 +464,6 @@
RelativePath=".\Src\Plugin.h" RelativePath=".\Src\Plugin.h"
> >
</File> </File>
<File
RelativePath=".\Src\PluginDSP.cpp"
>
</File>
<File
RelativePath=".\Src\PluginDSP.h"
>
</File>
<File <File
RelativePath=".\Src\PluginVideo.cpp" RelativePath=".\Src\PluginVideo.cpp"
> >

View File

@ -1,62 +0,0 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "PluginDSP.h"
namespace Common {
PluginDSP::PluginDSP(const char *_Filename)
: CPlugin(_Filename), validDSP(false)
{
DSP_ReadMailboxHigh = reinterpret_cast<TDSP_ReadMailBox>
(LoadSymbol("DSP_ReadMailboxHigh"));
DSP_ReadMailboxLow = reinterpret_cast<TDSP_ReadMailBox>
(LoadSymbol("DSP_ReadMailboxLow"));
DSP_WriteMailboxHigh = reinterpret_cast<TDSP_WriteMailBox>
(LoadSymbol("DSP_WriteMailboxHigh"));
DSP_WriteMailboxLow = reinterpret_cast<TDSP_WriteMailBox>
(LoadSymbol("DSP_WriteMailboxLow"));
DSP_ReadControlRegister = reinterpret_cast<TDSP_ReadControlRegister>
(LoadSymbol("DSP_ReadControlRegister"));
DSP_WriteControlRegister = reinterpret_cast<TDSP_WriteControlRegister>
(LoadSymbol("DSP_WriteControlRegister"));
DSP_Update = reinterpret_cast<TDSP_Update>
(LoadSymbol("DSP_Update"));
DSP_SendAIBuffer = reinterpret_cast<TDSP_SendAIBuffer>
(LoadSymbol("DSP_SendAIBuffer"));
DSP_StopSoundStream = reinterpret_cast<TDSP_StopSoundStream>
(LoadSymbol("DSP_StopSoundStream"));
DSP_ClearAudioBuffer = reinterpret_cast<TDSP_ClearAudioBuffer>
(LoadSymbol("DSP_ClearAudioBuffer"));
if ((DSP_ReadMailboxHigh != 0) &&
(DSP_ReadMailboxLow != 0) &&
(DSP_WriteMailboxHigh != 0) &&
(DSP_WriteMailboxLow != 0) &&
(DSP_ReadControlRegister != 0) &&
(DSP_WriteControlRegister != 0) &&
(DSP_SendAIBuffer != 0) &&
(DSP_Update != 0) &&
(DSP_StopSoundStream != 0) &&
(DSP_ClearAudioBuffer != 0))
validDSP = true;
}
PluginDSP::~PluginDSP() {
}
} // namespace

View File

@ -1,60 +0,0 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _PLUGINDSP_H_
#define _PLUGINDSP_H_
#include "pluginspecs_dsp.h"
#include "Plugin.h"
namespace Common {
typedef void (__cdecl* TDSP_WriteMailBox)(bool _CPUMailbox, unsigned short);
typedef unsigned short (__cdecl* TDSP_ReadMailBox)(bool _CPUMailbox);
typedef unsigned short (__cdecl* TDSP_ReadControlRegister)();
typedef unsigned short (__cdecl* TDSP_WriteControlRegister)(unsigned short);
typedef void (__cdecl *TDSP_SendAIBuffer)(unsigned int address, unsigned int num_samples);
typedef void (__cdecl *TDSP_Update)(int cycles);
typedef void (__cdecl *TDSP_StopSoundStream)();
typedef void (__cdecl *TDSP_ClearAudioBuffer)();
class PluginDSP : public CPlugin
{
public:
PluginDSP(const char *_Filename);
virtual ~PluginDSP();
virtual bool IsValid() {return validDSP;};
TDSP_ReadMailBox DSP_ReadMailboxHigh;
TDSP_ReadMailBox DSP_ReadMailboxLow;
TDSP_WriteMailBox DSP_WriteMailboxHigh;
TDSP_WriteMailBox DSP_WriteMailboxLow;
TDSP_ReadControlRegister DSP_ReadControlRegister;
TDSP_WriteControlRegister DSP_WriteControlRegister;
TDSP_SendAIBuffer DSP_SendAIBuffer;
TDSP_Update DSP_Update;
TDSP_StopSoundStream DSP_StopSoundStream;
TDSP_ClearAudioBuffer DSP_ClearAudioBuffer;
private:
bool validDSP;
};
} // namespace
#endif // _PLUGINDSP_H_

View File

@ -13,6 +13,7 @@ set(SRCS Src/ActionReplay.cpp
Src/OnFrame.cpp Src/OnFrame.cpp
Src/PatchEngine.cpp Src/PatchEngine.cpp
Src/PluginManager.cpp Src/PluginManager.cpp
Src/PluginDSP.cpp
Src/State.cpp Src/State.cpp
Src/stdafx.cpp Src/stdafx.cpp
Src/Tracer.cpp Src/Tracer.cpp
@ -32,6 +33,32 @@ set(SRCS Src/ActionReplay.cpp
Src/HW/AudioInterface.cpp Src/HW/AudioInterface.cpp
Src/HW/CPU.cpp Src/HW/CPU.cpp
Src/HW/DSP.cpp Src/HW/DSP.cpp
Src/DSPHandler.cpp
Src/MailHandler.cpp
Src/HLEMixer.cpp
Src/main.cpp
Src/Config.cpp
Src/HW/DSPHLE/UCodes/UCode_AX.cpp
Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp
Src/HW/DSPHLE/UCodes/UCode_CARD.cpp
Src/HW/DSPHLE/UCodes/UCode_InitAudioSystem.cpp
Src/HW/DSPHLE/UCodes/UCode_ROM.cpp
Src/HW/DSPHLE/UCodes/UCodes.cpp
Src/HW/DSPHLE/UCodes/UCode_GBA.cpp
Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp
Src/HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp
Src/HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp
Src/HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp)
Src/HW/DSPHLE/DSPHandler.cpp
Src/HW/DSPHLE/HLEMixer.cpp
Src/HW/DSPHLE/MailHandler.cpp
Src/HW/DSPHLE/DSPHLE.cpp
Src/HW/DSPLLE/DSPDebugInterface.cpp
Src/HW/DSPLLE/DSPHost.cpp
Src/HW/DSPLLE/DSPSymbols.cpp
Src/HW/DSPLLE/DSPLLEGlobals.cpp
Src/HW/DSPLLE/DSPLLE.cpp
Src/HW/DSPLLE/DSPLLETools.cpp
Src/HW/DVDInterface.cpp Src/HW/DVDInterface.cpp
Src/HW/EXI_Channel.cpp Src/HW/EXI_Channel.cpp
Src/HW/EXI.cpp Src/HW/EXI.cpp

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="Core" Name="Core"
ProjectGUID="{F0B874CB-4476-4199-9315-8343D05AE684}" ProjectGUID="{F0B874CB-4476-4199-9315-8343D05AE684}"
RootNamespace="Core" RootNamespace="Core"
@ -45,7 +45,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -116,7 +116,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -191,7 +191,7 @@
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
OmitFramePointers="true" OmitFramePointers="true"
EnableFiberSafeOptimizations="false" EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0" PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -269,7 +269,7 @@
OmitFramePointers="true" OmitFramePointers="true"
EnableFiberSafeOptimizations="false" EnableFiberSafeOptimizations="false"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0" PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -344,7 +344,7 @@
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
OmitFramePointers="true" OmitFramePointers="true"
EnableFiberSafeOptimizations="false" EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="NDEBUG;_LIB;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0" PreprocessorDefinitions="NDEBUG;_LIB;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="true" BufferSecurityCheck="true"
@ -419,7 +419,7 @@
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
OmitFramePointers="true" OmitFramePointers="true"
EnableFiberSafeOptimizations="false" EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include" AdditionalIncludeDirectories=".\Core\Core\Src\Debugger;..\Common\Src;..\DiscIO\Src;..\DSPCore\Src;..\AudioCommon\Src;..\..\Core\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\LZO;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib;..\..\..\Externals\Lua;..\..\..\Externals\SFML\include"
PreprocessorDefinitions="NDEBUG;_LIB;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0" PreprocessorDefinitions="NDEBUG;_LIB;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="false" BufferSecurityCheck="false"
@ -719,6 +719,190 @@
RelativePath=".\Src\Hw\DSP.h" RelativePath=".\Src\Hw\DSP.h"
> >
</File> </File>
<Filter
Name="HLE"
>
<File
RelativePath=".\Src\HW\DSPHLE\DSPHandler.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\DSPHandler.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\DSPHLE.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\DSPHLE.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\DSPHLEGlobals.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\HLEMixer.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\HLEMixer.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\MailHandler.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\MailHandler.h"
>
</File>
<Filter
Name="UCodes"
>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AX.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AX.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AX_ADPCM.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AX_Voice.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AXStructs.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AXWii.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_AXWii.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_CARD.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_CARD.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_GBA.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_GBA.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_InitAudioSystem.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_InitAudioSystem.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_ROM.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_ROM.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda_ADPCM.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda_Obsolete.txt"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda_Synth.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCode_Zelda_Voice.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCodes.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPHLE\UCodes\UCodes.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="LLE"
>
<File
RelativePath=".\Src\HW\DSPLLE\DSPDebugInterface.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPDebugInterface.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPHost.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLE.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLE.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLEGlobals.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLEGlobals.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLETools.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPLLETools.h"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPSymbols.cpp"
>
</File>
<File
RelativePath=".\Src\HW\DSPLLE\DSPSymbols.h"
>
</File>
</Filter>
</Filter> </Filter>
<Filter <Filter
Name="DI - DVD Interface" Name="DI - DVD Interface"
@ -1513,6 +1697,10 @@
> >
</File> </File>
</Filter> </Filter>
<File
RelativePath=".\CMakeLists.txt"
>
</File>
<File <File
RelativePath=".\Src\ConfigManager.cpp" RelativePath=".\Src\ConfigManager.cpp"
> >
@ -1585,6 +1773,14 @@
RelativePath=".\Src\PatchEngine.h" RelativePath=".\Src\PatchEngine.h"
> >
</File> </File>
<File
RelativePath=".\Src\PluginDSP.cpp"
>
</File>
<File
RelativePath=".\Src\PluginDSP.h"
>
</File>
<File <File
RelativePath=".\Src\PluginManager.cpp" RelativePath=".\Src\PluginManager.cpp"
> >

View File

@ -155,6 +155,7 @@ void SConfig::SaveSettings()
ini.Set("Core", "CPUCore", m_LocalCoreStartupParameter.iCPUCore); ini.Set("Core", "CPUCore", m_LocalCoreStartupParameter.iCPUCore);
ini.Set("Core", "CPUThread", m_LocalCoreStartupParameter.bCPUThread); ini.Set("Core", "CPUThread", m_LocalCoreStartupParameter.bCPUThread);
ini.Set("Core", "DSPThread", m_LocalCoreStartupParameter.bDSPThread); ini.Set("Core", "DSPThread", m_LocalCoreStartupParameter.bDSPThread);
ini.Set("Core", "DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
ini.Set("Core", "SkipIdle", m_LocalCoreStartupParameter.bSkipIdle); ini.Set("Core", "SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
ini.Set("Core", "LockThreads", m_LocalCoreStartupParameter.bLockThreads); ini.Set("Core", "LockThreads", m_LocalCoreStartupParameter.bLockThreads);
ini.Set("Core", "DefaultGCM", m_LocalCoreStartupParameter.m_strDefaultGCM); ini.Set("Core", "DefaultGCM", m_LocalCoreStartupParameter.m_strDefaultGCM);
@ -184,7 +185,6 @@ void SConfig::SaveSettings()
// Plugins // Plugins
ini.Set("Core", "GFXPlugin", m_LocalCoreStartupParameter.m_strVideoPlugin); ini.Set("Core", "GFXPlugin", m_LocalCoreStartupParameter.m_strVideoPlugin);
ini.Set("Core", "DSPPlugin", m_LocalCoreStartupParameter.m_strDSPPlugin);
ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX)); ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX));
m_SYSCONF->Save(); m_SYSCONF->Save();
@ -280,6 +280,7 @@ void SConfig::LoadSettings()
ini.Get("Core", "HLE_BS2", &m_LocalCoreStartupParameter.bHLE_BS2, false); ini.Get("Core", "HLE_BS2", &m_LocalCoreStartupParameter.bHLE_BS2, false);
ini.Get("Core", "CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 1); ini.Get("Core", "CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 1);
ini.Get("Core", "DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false); ini.Get("Core", "DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false);
ini.Get("Core", "DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
ini.Get("Core", "CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true); ini.Get("Core", "CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
ini.Get("Core", "SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true); ini.Get("Core", "SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
ini.Get("Core", "LockThreads", &m_LocalCoreStartupParameter.bLockThreads, false); ini.Get("Core", "LockThreads", &m_LocalCoreStartupParameter.bLockThreads, false);
@ -318,7 +319,6 @@ void SConfig::LoadSettings()
// Plugins // Plugins
ini.Get("Core", "GFXPlugin", &m_LocalCoreStartupParameter.m_strVideoPlugin, m_DefaultGFXPlugin.c_str()); ini.Get("Core", "GFXPlugin", &m_LocalCoreStartupParameter.m_strVideoPlugin, m_DefaultGFXPlugin.c_str());
ini.Get("Core", "DSPPlugin", &m_LocalCoreStartupParameter.m_strDSPPlugin, m_DefaultDSPPlugin.c_str());
} }
m_SYSCONF = new SysConf(); m_SYSCONF = new SysConf();

View File

@ -59,6 +59,7 @@
#include "PowerPC/JitCommon/JitBase.h" #include "PowerPC/JitCommon/JitBase.h"
#include "PluginManager.h" #include "PluginManager.h"
#include "PluginDSP.h"
#include "ConfigManager.h" #include "ConfigManager.h"
#include "VolumeHandler.h" #include "VolumeHandler.h"
@ -369,24 +370,7 @@ void EmuThread()
Callback_PeekMessages = VideoInitialize.pPeekMessages; Callback_PeekMessages = VideoInitialize.pPeekMessages;
g_pUpdateFPSDisplay = VideoInitialize.pUpdateFPSDisplay; g_pUpdateFPSDisplay = VideoInitialize.pUpdateFPSDisplay;
// Load and init DSPPlugin DSP::GetPlugin()->Initialize(g_pWindowHandle, _CoreParameter.bWii, _CoreParameter.bDSPThread);
DSPInitialize dspInit;
dspInit.hWnd = g_pWindowHandle;
dspInit.pARAM_Read_U8 = (u8 (__cdecl *)(const u32))DSP::ReadARAM;
dspInit.pARAM_Write_U8 = (void (__cdecl *)(const u8, const u32))DSP::WriteARAM;
dspInit.pGetARAMPointer = DSP::GetARAMPtr;
dspInit.pGetMemoryPointer = Memory::GetPointer;
dspInit.pLog = Callback_DSPLog;
dspInit.pName = Callback_ISOName;
dspInit.pDebuggerBreak = Callback_DebuggerBreak;
dspInit.pGenerateDSPInterrupt = Callback_DSPInterrupt;
dspInit.pGetAudioStreaming = AudioInterface::Callback_GetStreaming;
dspInit.pGetSampleRate = AudioInterface::Callback_GetSampleRate;
dspInit.pEmulatorState = (int *)PowerPC::GetStatePtr();
dspInit.bWii = _CoreParameter.bWii;
dspInit.bOnThread = _CoreParameter.bDSPThread;
Plugins.GetDSP()->Initialize((void *)&dspInit);
Pad::Initialize(g_pWindowHandle); Pad::Initialize(g_pWindowHandle);
@ -484,7 +468,7 @@ void EmuThread()
// Stop audio thread - Actually this does nothing on HLE plugin. // Stop audio thread - Actually this does nothing on HLE plugin.
// But stops the DSP Interpreter on LLE plugin. // But stops the DSP Interpreter on LLE plugin.
Plugins.GetDSP()->DSP_StopSoundStream(); DSP::GetPlugin()->DSP_StopSoundStream();
// We must set up this flag before executing HW::Shutdown() // We must set up this flag before executing HW::Shutdown()
g_bHwInit = false; g_bHwInit = false;
@ -499,7 +483,6 @@ void EmuThread()
Pad::Shutdown(); Pad::Shutdown();
Wiimote::Shutdown(); Wiimote::Shutdown();
Plugins.ShutdownPlugins();
NOTICE_LOG(CONSOLE, "%s", StopMessage(false, "Plugins shutdown").c_str()); NOTICE_LOG(CONSOLE, "%s", StopMessage(false, "Plugins shutdown").c_str());

View File

@ -42,7 +42,7 @@ SCoreStartupParameter::SCoreStartupParameter()
bJITBranchOff(false), bJITProfiledReJIT(false), bJITBranchOff(false), bJITProfiledReJIT(false),
bJITILTimeProfiling(false), bJITILOutputIR(false), bJITILTimeProfiling(false), bJITILOutputIR(false),
bEnableFPRF(false), bEnableFPRF(false),
bCPUThread(true), bDSPThread(false), bCPUThread(true), bDSPThread(false), bDSPHLE(true),
bSkipIdle(true), bNTSC(false), bNTSCJ(false), bSkipIdle(true), bNTSC(false), bNTSCJ(false),
bHLE_BS2(true), bUseFastMem(false), bHLE_BS2(true), bUseFastMem(false),
bLockThreads(false), bLockThreads(false),
@ -72,6 +72,7 @@ void SCoreStartupParameter::LoadDefaults()
bCPUThread = false; bCPUThread = false;
bSkipIdle = false; bSkipIdle = false;
bRunCompareServer = false; bRunCompareServer = false;
bDSPHLE = true;
bDSPThread = true; bDSPThread = true;
bLockThreads = true; bLockThreads = true;
bEnableFPRF = false; bEnableFPRF = false;

View File

@ -69,6 +69,7 @@ struct SCoreStartupParameter
bool bCPUThread; bool bCPUThread;
bool bDSPThread; bool bDSPThread;
bool bDSPHLE;
bool bSkipIdle; bool bSkipIdle;
bool bNTSC; bool bNTSC;
bool bNTSCJ; bool bNTSCJ;
@ -129,7 +130,6 @@ struct SCoreStartupParameter
// files // files
std::string m_strVideoPlugin; std::string m_strVideoPlugin;
std::string m_strDSPPlugin;
std::string m_strFilename; std::string m_strFilename;
std::string m_strBootROM; std::string m_strBootROM;

View File

@ -47,6 +47,7 @@
#include "../PowerPC/PowerPC.h" #include "../PowerPC/PowerPC.h"
#include "../PluginManager.h" #include "../PluginManager.h"
#include "../ConfigManager.h" #include "../ConfigManager.h"
#include "../PluginDSP.h"
namespace DSP namespace DSP
{ {
@ -60,8 +61,8 @@ enum
DSP_MAIL_FROM_DSP_LO = 0x5006, DSP_MAIL_FROM_DSP_LO = 0x5006,
DSP_CONTROL = 0x500A, DSP_CONTROL = 0x500A,
DSP_INTERRUPT_CONTROL = 0x5010, DSP_INTERRUPT_CONTROL = 0x5010,
AR_INFO = 0x5012, // These names are a good guess at best AR_INFO = 0x5012, // These names are a good guess at best
AR_MODE = 0x5016, // AR_MODE = 0x5016, //
AR_REFRESH = 0x501a, AR_REFRESH = 0x501a,
AR_DMA_MMADDR_H = 0x5020, AR_DMA_MMADDR_H = 0x5020,
AR_DMA_MMADDR_L = 0x5022, AR_DMA_MMADDR_L = 0x5022,
@ -71,7 +72,7 @@ enum
AR_DMA_CNT_L = 0x502A, AR_DMA_CNT_L = 0x502A,
AUDIO_DMA_START_HI = 0x5030, AUDIO_DMA_START_HI = 0x5030,
AUDIO_DMA_START_LO = 0x5032, AUDIO_DMA_START_LO = 0x5032,
AUDIO_DMA_BLOCKS_LENGTH = 0x5034, // Ever used? AUDIO_DMA_BLOCKS_LENGTH = 0x5034, // Ever used?
AUDIO_DMA_CONTROL_LEN = 0x5036, AUDIO_DMA_CONTROL_LEN = 0x5036,
AUDIO_DMA_BLOCKS_LEFT = 0x503A, AUDIO_DMA_BLOCKS_LEFT = 0x503A,
}; };
@ -211,7 +212,7 @@ static ARAM_Info g_ARAM_Info;
static u16 g_AR_MODE; static u16 g_AR_MODE;
static u16 g_AR_REFRESH; static u16 g_AR_REFRESH;
Common::PluginDSP *dsp_plugin; PluginDSP *dsp_plugin;
static int dsp_slice = 0; static int dsp_slice = 0;
static bool dsp_is_lle = false; static bool dsp_is_lle = false;
@ -229,6 +230,8 @@ void DoState(PointerWrap &p)
p.Do(g_ARAM_Info); p.Do(g_ARAM_Info);
p.Do(g_AR_MODE); p.Do(g_AR_MODE);
p.Do(g_AR_REFRESH); p.Do(g_AR_REFRESH);
dsp_plugin->DoState(p);
} }
@ -245,13 +248,15 @@ void GenerateDSPInterrupt_Wrapper(u64 userdata, int cyclesLate)
GenerateDSPInterrupt((DSPInterruptType)(userdata&0xFFFF), (bool)((userdata>>16) & 1)); GenerateDSPInterrupt((DSPInterruptType)(userdata&0xFFFF), (bool)((userdata>>16) & 1));
} }
void Init() PluginDSP *GetPlugin()
{ {
dsp_plugin = CPluginManager::GetInstance().GetDSP(); return dsp_plugin;
PLUGIN_INFO DSPType; }
dsp_plugin->GetInfo(DSPType);
std::string DSPName(DSPType.Name); void Init(bool hle)
dsp_is_lle = (DSPName.find("LLE") != std::string::npos) || (DSPName.find("lle") != std::string::npos); {
dsp_plugin = CreateDSPPlugin(hle);
dsp_is_lle = dsp_plugin->IsLLE();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii)
{ {
@ -263,7 +268,7 @@ void Init()
} }
else else
{ {
// On the GC, ARAM is accessible only through this interface (unless you're doing mmu tricks?...) // On the GC, ARAM is accessible only through this interface.
g_ARAM.wii_mode = false; g_ARAM.wii_mode = false;
g_ARAM.size = ARAM_SIZE; g_ARAM.size = ARAM_SIZE;
g_ARAM.mask = ARAM_MASK; g_ARAM.mask = ARAM_MASK;
@ -288,6 +293,8 @@ void Shutdown()
FreeMemoryPages(g_ARAM.ptr, g_ARAM.size); FreeMemoryPages(g_ARAM.ptr, g_ARAM.size);
g_ARAM.ptr = NULL; g_ARAM.ptr = NULL;
dsp_plugin->Shutdown();
delete dsp_plugin;
dsp_plugin = NULL; dsp_plugin = NULL;
} }
@ -301,11 +308,11 @@ void Read16(u16& _uReturnValue, const u32 _iAddress)
dsp_plugin->DSP_Update(DSP_MAIL_SLICE); dsp_plugin->DSP_Update(DSP_MAIL_SLICE);
dsp_slice -= DSP_MAIL_SLICE; dsp_slice -= DSP_MAIL_SLICE;
} }
_uReturnValue = dsp_plugin->DSP_ReadMailboxHigh(true); _uReturnValue = dsp_plugin->DSP_ReadMailBoxHigh(true);
break; break;
case DSP_MAIL_TO_DSP_LO: case DSP_MAIL_TO_DSP_LO:
_uReturnValue = dsp_plugin->DSP_ReadMailboxLow(true); _uReturnValue = dsp_plugin->DSP_ReadMailBoxLow(true);
break; break;
case DSP_MAIL_FROM_DSP_HI: case DSP_MAIL_FROM_DSP_HI:
@ -313,11 +320,11 @@ void Read16(u16& _uReturnValue, const u32 _iAddress)
dsp_plugin->DSP_Update(DSP_MAIL_SLICE); dsp_plugin->DSP_Update(DSP_MAIL_SLICE);
dsp_slice -= DSP_MAIL_SLICE; dsp_slice -= DSP_MAIL_SLICE;
} }
_uReturnValue = dsp_plugin->DSP_ReadMailboxHigh(false); _uReturnValue = dsp_plugin->DSP_ReadMailBoxHigh(false);
break; break;
case DSP_MAIL_FROM_DSP_LO: case DSP_MAIL_FROM_DSP_LO:
_uReturnValue = dsp_plugin->DSP_ReadMailboxLow(false); _uReturnValue = dsp_plugin->DSP_ReadMailBoxLow(false);
break; break;
case DSP_CONTROL: case DSP_CONTROL:
@ -382,11 +389,11 @@ void Write16(const u16 _Value, const u32 _Address)
{ {
// DSP // DSP
case DSP_MAIL_TO_DSP_HI: case DSP_MAIL_TO_DSP_HI:
dsp_plugin->DSP_WriteMailboxHigh(true, _Value); dsp_plugin->DSP_WriteMailBoxHigh(true, _Value);
break; break;
case DSP_MAIL_TO_DSP_LO: case DSP_MAIL_TO_DSP_LO:
dsp_plugin->DSP_WriteMailboxLow(true, _Value); dsp_plugin->DSP_WriteMailBoxLow(true, _Value);
break; break;
case DSP_MAIL_FROM_DSP_HI: case DSP_MAIL_FROM_DSP_HI:
@ -527,7 +534,7 @@ void Read32(u32& _uReturnValue, const u32 _iAddress)
{ {
// DSP // DSP
case DSP_MAIL_TO_DSP_HI: case DSP_MAIL_TO_DSP_HI:
_uReturnValue = (dsp_plugin->DSP_ReadMailboxHigh(true) << 16) | dsp_plugin->DSP_ReadMailboxLow(true); _uReturnValue = (dsp_plugin->DSP_ReadMailBoxHigh(true) << 16) | dsp_plugin->DSP_ReadMailBoxLow(true);
break; break;
// AI // AI
@ -563,8 +570,8 @@ void Write32(const u32 _iValue, const u32 _iAddress)
{ {
// DSP // DSP
case DSP_MAIL_TO_DSP_HI: case DSP_MAIL_TO_DSP_HI:
dsp_plugin->DSP_WriteMailboxHigh(true, _iValue >> 16); dsp_plugin->DSP_WriteMailBoxHigh(true, _iValue >> 16);
dsp_plugin->DSP_WriteMailboxLow(true, (u16)_iValue); dsp_plugin->DSP_WriteMailBoxLow(true, (u16)_iValue);
break; break;
// AI // AI

View File

@ -20,6 +20,7 @@
#include "Common.h" #include "Common.h"
class PointerWrap; class PointerWrap;
class PluginDSP;
namespace DSP namespace DSP
{ {
@ -38,8 +39,11 @@ enum
ARAM_MASK = 0x00FFFFFF, ARAM_MASK = 0x00FFFFFF,
}; };
void Init(); void Init(bool hle);
void Shutdown(); void Shutdown();
PluginDSP *GetPlugin();
void DoState(PointerWrap &p); void DoState(PointerWrap &p);
void GenerateDSPInterrupt(DSPInterruptType _DSPInterruptType, bool _bSet = true); void GenerateDSPInterrupt(DSPInterruptType _DSPInterruptType, bool _bSet = true);

View File

@ -0,0 +1,229 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include <iostream>
#include "DSPHLEGlobals.h" // Local
#include "ChunkFile.h"
#include "IniFile.h"
#include "HLEMixer.h"
#include "DSPHandler.h"
#include "Config.h"
#include "Setup.h"
#include "StringUtil.h"
#include "LogManager.h"
#include "IniFile.h"
#include "DSPHLE.h"
#include "../AudioInterface.h"
DSPHLE::DSPHLE() {
g_InitMixer = false;
soundStream = NULL;
}
// Mailbox utility
struct DSPState
{
u32 CPUMailbox;
u32 DSPMailbox;
void Reset() {
CPUMailbox = 0x00000000;
DSPMailbox = 0x00000000;
}
DSPState()
{
Reset();
}
};
DSPState g_dspState;
void DSPHLE::Initialize(void *hWnd, bool bWii, bool bDSPThread)
{
this->hWnd = hWnd;
this->bWii = bWii;
g_InitMixer = false;
g_dspState.Reset();
CDSPHandler::CreateInstance(bWii);
}
void DSPHLE::DSP_StopSoundStream()
{
}
void DSPHLE::Shutdown()
{
AudioCommon::ShutdownSoundStream();
// Delete the UCodes
CDSPHandler::Destroy();
}
void DSPHLE::DoState(PointerWrap &p)
{
p.Do(g_InitMixer);
CDSPHandler::GetInstance().GetUCode()->DoState(p);
}
void DSPHLE::EmuStateChange(PLUGIN_EMUSTATE newState)
{
DSP_ClearAudioBuffer((newState == PLUGIN_EMUSTATE_PLAY) ? false : true);
}
// Mailbox fuctions
unsigned short DSPHLE::DSP_ReadMailBoxHigh(bool _CPUMailbox)
{
if (_CPUMailbox)
{
return (g_dspState.CPUMailbox >> 16) & 0xFFFF;
}
else
{
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh();
}
}
unsigned short DSPHLE::DSP_ReadMailBoxLow(bool _CPUMailbox)
{
if (_CPUMailbox)
{
return g_dspState.CPUMailbox & 0xFFFF;
}
else
{
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow();
}
}
void DSPHLE::DSP_WriteMailBoxHigh(bool _CPUMailbox, unsigned short _Value)
{
if (_CPUMailbox)
{
g_dspState.CPUMailbox = (g_dspState.CPUMailbox & 0xFFFF) | (_Value << 16);
}
else
{
PanicAlert("CPU can't write %08x to DSP mailbox", _Value);
}
}
void DSPHLE::DSP_WriteMailBoxLow(bool _CPUMailbox, unsigned short _Value)
{
if (_CPUMailbox)
{
g_dspState.CPUMailbox = (g_dspState.CPUMailbox & 0xFFFF0000) | _Value;
CDSPHandler::GetInstance().SendMailToDSP(g_dspState.CPUMailbox);
// Mail sent so clear MSB to show that it is progressed
g_dspState.CPUMailbox &= 0x7FFFFFFF;
}
else
{
PanicAlert("CPU can't write %08x to DSP mailbox", _Value);
}
}
// Other DSP fuctions
unsigned short DSPHLE::DSP_WriteControlRegister(unsigned short _Value)
{
UDSPControl Temp(_Value);
if (!g_InitMixer)
{
if (!Temp.DSPHalt && Temp.DSPInit)
{
unsigned int AISampleRate, DACSampleRate, BackendSampleRate;
AudioInterface::Callback_GetSampleRate(AISampleRate, DACSampleRate);
std::string frequency = ac_Config.sFrequency;
if (frequency == "48,000 Hz")
BackendSampleRate = 48000;
else
BackendSampleRate = 32000;
soundStream = AudioCommon::InitSoundStream(
new HLEMixer(AISampleRate, DACSampleRate, BackendSampleRate), hWnd);
if(!soundStream) PanicAlert("Error starting up sound stream");
// Mixer is initialized
g_InitMixer = true;
}
}
return CDSPHandler::GetInstance().WriteControlRegister(_Value);
}
unsigned short DSPHLE::DSP_ReadControlRegister()
{
return CDSPHandler::GetInstance().ReadControlRegister();
}
void DSPHLE::DSP_Update(int cycles)
{
// This is called OFTEN - better not do anything expensive!
// ~1/6th as many cycles as the period PPC-side.
CDSPHandler::GetInstance().Update(cycles / 6);
}
// The reason that we don't disable this entire
// function when Other Audio is disabled is that then we can't turn it back on
// again once the game has started.
void DSPHLE::DSP_SendAIBuffer(unsigned int address, unsigned int num_samples)
{
if (!soundStream)
return;
CMixer* pMixer = soundStream->GetMixer();
if (pMixer && address)
{
short* samples = (short*)HLEMemory_Get_Pointer(address);
// Internal sample rate is always 32khz
pMixer->PushSamples(samples, num_samples);
// FIXME: Write the audio to a file
//if (log_ai)
// g_wave_writer.AddStereoSamples(samples, 8);
}
soundStream->Update();
}
void DSPHLE::DSP_ClearAudioBuffer(bool mute)
{
if (soundStream)
soundStream->Clear(mute);
}
#define HLE_CONFIG_FILE "DSP.ini"
void DSPHLE_LoadConfig()
{
// first load defaults
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + HLE_CONFIG_FILE).c_str());
ac_Config.Load(file);
}
void DSPHLE_SaveConfig()
{
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + HLE_CONFIG_FILE).c_str());
ac_Config.Set(file);
file.Save((std::string(File::GetUserPath(D_CONFIG_IDX)) + HLE_CONFIG_FILE).c_str());
}

View File

@ -0,0 +1,86 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _DSPHLE_H
#define _DSPHLE_H
#include "SoundStream.h"
#include "DSPHLEGlobals.h" // Local
#include "../../PluginDSP.h"
class DSPHLE : public PluginDSP {
public:
DSPHLE();
~DSPHLE();
virtual void Initialize(void *hWnd, bool bWii, bool bDSPThread);
virtual void Shutdown();
virtual bool IsLLE() { return false; }
/*
GUI
virtual void Config(void *_hwnd);
virtual void About(void *_hwnd);
virtual void *Debug(void *Parent, bool Show);
*/
virtual void DoState(PointerWrap &p);
virtual void EmuStateChange(PLUGIN_EMUSTATE newState);
virtual void DSP_WriteMailBoxHigh(bool _CPUMailbox, unsigned short);
virtual void DSP_WriteMailBoxLow(bool _CPUMailbox, unsigned short);
virtual unsigned short DSP_ReadMailBoxHigh(bool _CPUMailbox);
virtual unsigned short DSP_ReadMailBoxLow(bool _CPUMailbox);
virtual unsigned short DSP_ReadControlRegister();
virtual unsigned short DSP_WriteControlRegister(unsigned short);
virtual void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples);
virtual void DSP_Update(int cycles);
virtual void DSP_StopSoundStream();
virtual void DSP_ClearAudioBuffer(bool mute);
private:
// Declarations and definitions
void *hWnd;
bool bWii;
bool g_InitMixer;
SoundStream *soundStream;
// Mailbox utility
struct DSPState
{
u32 CPUMailbox;
u32 DSPMailbox;
void Reset() {
CPUMailbox = 0x00000000;
DSPMailbox = 0x00000000;
}
DSPState()
{
Reset();
}
};
DSPState g_dspState;
};
// Hack to be deleted.
void DSPHLE_LoadConfig();
void DSPHLE_SaveConfig();
#endif // _DSPHLE_H

View File

@ -15,29 +15,37 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
// TODO: Get rid of this file.
#ifndef _GLOBALS_H
#define _GLOBALS_H
#include "Common.h" #include "Common.h"
#include "IniFile.h" #include "StringUtil.h"
#include "Config.h" #include "../Memmap.h"
#include "AudioCommon.h"
#include "FileUtil.h"
#define LLE_CONFIG_FILE "DSPLLE.ini" inline u8 HLEMemory_Read_U8(u32 _uAddress)
CConfig g_Config;
void CConfig::Load()
{ {
// first load defaults _uAddress &= Memory::RAM_MASK;
IniFile file; return Memory::m_pRAM[_uAddress];
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str());
ac_Config.Load(file);
} }
void CConfig::Save() inline u16 HLEMemory_Read_U16(u32 _uAddress)
{ {
IniFile file; _uAddress &= Memory::RAM_MASK;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str()); return Common::swap16(*(u16*)&Memory::m_pRAM[_uAddress]);
ac_Config.Set(file);
file.Save((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str());
} }
inline u32 HLEMemory_Read_U32(u32 _uAddress)
{
_uAddress &= Memory::RAM_MASK;
return Common::swap32(*(u32*)&Memory::m_pRAM[_uAddress]);
}
inline void* HLEMemory_Get_Pointer(u32 _uAddress)
{
_uAddress &= Memory::RAM_MASK;
return &Memory::m_pRAM[_uAddress];
}
#endif

View File

@ -19,11 +19,12 @@
CDSPHandler* CDSPHandler::m_pInstance = NULL; CDSPHandler* CDSPHandler::m_pInstance = NULL;
CDSPHandler::CDSPHandler() CDSPHandler::CDSPHandler(bool bWii)
: m_pUCode(NULL), : m_pUCode(NULL),
m_lastUCode(NULL), m_lastUCode(NULL),
m_bHalt(false), m_bHalt(false),
m_bAssertInt(false) m_bAssertInt(false),
m_bWii(bWii)
{ {
SetUCode(UCODE_ROM); SetUCode(UCODE_ROM);
m_DSPControl.DSPHalt = 1; m_DSPControl.DSPHalt = 1;
@ -85,7 +86,7 @@ void CDSPHandler::SetUCode(u32 _crc)
m_pUCode = NULL; m_pUCode = NULL;
m_MailHandler.Clear(); m_MailHandler.Clear();
m_pUCode = UCodeFactory(_crc, m_MailHandler); m_pUCode = UCodeFactory(_crc, m_MailHandler, m_bWii);
} }
// TODO do it better? // TODO do it better?
@ -98,7 +99,7 @@ void CDSPHandler::SwapUCode(u32 _crc)
if (m_lastUCode == NULL) if (m_lastUCode == NULL)
{ {
m_lastUCode = m_pUCode; m_lastUCode = m_pUCode;
m_pUCode = UCodeFactory(_crc, m_MailHandler); m_pUCode = UCodeFactory(_crc, m_MailHandler, m_bWii);
} }
else else
{ {

View File

@ -47,16 +47,16 @@ public:
m_pInstance = NULL; m_pInstance = NULL;
} }
static CDSPHandler& CreateInstance() static CDSPHandler& CreateInstance(bool bWii)
{ {
if (!m_pInstance) if (!m_pInstance)
m_pInstance = new CDSPHandler(); m_pInstance = new CDSPHandler(bWii);
return *m_pInstance; return *m_pInstance;
} }
private: private:
CDSPHandler(); CDSPHandler(bool bWii);
~CDSPHandler(); ~CDSPHandler();
// singleton instance // singleton instance
@ -70,6 +70,7 @@ private:
bool m_bHalt; bool m_bHalt;
bool m_bAssertInt; bool m_bAssertInt;
bool m_bWii;
}; };
#endif #endif

View File

@ -16,14 +16,14 @@
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "Config.h" // Local #include "Config.h" // Local
#include "Globals.h" #include "DSPHLEGlobals.h"
#include "DSPHandler.h" #include "DSPHandler.h"
#include "HLEMixer.h" #include "HLEMixer.h"
void HLEMixer::Premix(short *samples, unsigned int numSamples) void HLEMixer::Premix(short *samples, unsigned int numSamples)
{ {
// if this was called directly from the HLE // if this was called directly from the HLE
if (g_Config.m_EnableHLEAudio && IsHLEReady()) if (IsHLEReady())
{ {
IUCode *pUCode = CDSPHandler::GetInstance().GetUCode(); IUCode *pUCode = CDSPHandler::GetInstance().GetUCode();
if (pUCode && samples) if (pUCode && samples)

View File

@ -18,13 +18,12 @@
#include "FileUtil.h" // For IsDirectory() #include "FileUtil.h" // For IsDirectory()
#include "StringUtil.h" // For StringFromFormat() #include "StringUtil.h" // For StringFromFormat()
#include <sstream> #include <sstream>
#include "../Config.h"
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "Mixer.h" #include "Mixer.h"
#include "../MailHandler.h" #include "../MailHandler.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "../../DSP.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_AXStructs.h" #include "UCode_AXStructs.h"
#include "UCode_AX.h" #include "UCode_AX.h"
@ -66,8 +65,8 @@ static void ProcessUpdates(AXPB &PB)
int on = 0, off = 0; int on = 0, off = 0;
for (int j = 0; j < numupd; j++) for (int j = 0; j < numupd; j++)
{ {
const u16 updpar = Memory_Read_U16(updaddr + j*4); const u16 updpar = HLEMemory_Read_U16(updaddr + j*4);
const u16 upddata = Memory_Read_U16(updaddr + j*4 + 2); const u16 upddata = HLEMemory_Read_U16(updaddr + j*4 + 2);
// some safety checks, I hope it's enough // some safety checks, I hope it's enough
if (updaddr > 0x80000000 && updaddr < 0x817fffff if (updaddr > 0x80000000 && updaddr < 0x817fffff
&& updpar < 63 && updpar > 3 // updpar > 3 because we don't want to change && updpar < 63 && updpar > 3 // updpar > 3 because we don't want to change
@ -91,8 +90,8 @@ static void VoiceHacks(AXPB &pb)
const u32 sampleEnd = (pb.audio_addr.end_addr_hi << 16) | pb.audio_addr.end_addr_lo; const u32 sampleEnd = (pb.audio_addr.end_addr_hi << 16) | pb.audio_addr.end_addr_lo;
const u32 loopPos = (pb.audio_addr.loop_addr_hi << 16) | pb.audio_addr.loop_addr_lo; const u32 loopPos = (pb.audio_addr.loop_addr_hi << 16) | pb.audio_addr.loop_addr_lo;
// const u32 updaddr = (u32)(pb.updates.data_hi << 16) | pb.updates.data_lo; // const u32 updaddr = (u32)(pb.updates.data_hi << 16) | pb.updates.data_lo;
// const u16 updpar = Memory_Read_U16(updaddr); // const u16 updpar = HLEMemory_Read_U16(updaddr);
// const u16 upddata = Memory_Read_U16(updaddr + 2); // const u16 upddata = HLEMemory_Read_U16(updaddr + 2);
// ======================================================================================= // =======================================================================================
/* Fix problems introduced with the SSBM fix. Sometimes when a music stream ended sampleEnd /* Fix problems introduced with the SSBM fix. Sometimes when a music stream ended sampleEnd
@ -258,12 +257,12 @@ void CUCode_AX::Update(int cycles)
if (NeedsResumeMail()) if (NeedsResumeMail())
{ {
m_rMailHandler.PushMail(DSP_RESUME); m_rMailHandler.PushMail(DSP_RESUME);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
// check if we have to send something // check if we have to send something
else if (!m_rMailHandler.IsEmpty()) else if (!m_rMailHandler.IsEmpty())
{ {
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
} }
@ -300,26 +299,26 @@ bool CUCode_AX::AXTask(u32& _uMail)
while (bExecuteList) while (bExecuteList)
{ {
static int last_valid_command = 0; static int last_valid_command = 0;
u16 iCommand = Memory_Read_U16(uAddress); u16 iCommand = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
switch (iCommand) switch (iCommand)
{ {
case AXLIST_STUDIOADDR: //00 case AXLIST_STUDIOADDR: //00
Addr__AXStudio = Memory_Read_U32(uAddress); Addr__AXStudio = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST studio address: %08x", uAddress, Addr__AXStudio); DEBUG_LOG(DSPHLE, "%08x : AXLIST studio address: %08x", uAddress, Addr__AXStudio);
break; break;
case 0x001: // 2byte x 10 case 0x001: // 2byte x 10
{ {
u32 address = Memory_Read_U32(uAddress); u32 address = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
u16 param1 = Memory_Read_U16(uAddress); u16 param1 = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
u16 param2 = Memory_Read_U16(uAddress); u16 param2 = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
u16 param3 = Memory_Read_U16(uAddress); u16 param3 = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
DEBUG_LOG(DSPHLE, "%08x : AXLIST 1: %08x, %04x, %04x, %04x", uAddress, address, param1, param2, param3); DEBUG_LOG(DSPHLE, "%08x : AXLIST 1: %08x, %04x, %04x, %04x", uAddress, address, param1, param2, param3);
} }
@ -332,10 +331,10 @@ bool CUCode_AX::AXTask(u32& _uMail)
// //
case AXLIST_PBADDR: //02 case AXLIST_PBADDR: //02
{ {
PBaddr[numPBaddr] = Memory_Read_U32(uAddress); PBaddr[numPBaddr] = HLEMemory_Read_U32(uAddress);
numPBaddr++; numPBaddr++;
m_addressPBs = Memory_Read_U32(uAddress); // left in for now m_addressPBs = HLEMemory_Read_U32(uAddress); // left in for now
uAddress += 4; uAddress += 4;
soundStream->GetMixer()->SetHLEReady(true); soundStream->GetMixer()->SetHLEReady(true);
DEBUG_LOG(DSPHLE, "%08x : AXLIST PB address: %08x", uAddress, m_addressPBs); DEBUG_LOG(DSPHLE, "%08x : AXLIST PB address: %08x", uAddress, m_addressPBs);
@ -347,52 +346,52 @@ bool CUCode_AX::AXTask(u32& _uMail)
break; break;
case 0x0004: // AUX? case 0x0004: // AUX?
Addr__4_1 = Memory_Read_U32(uAddress); Addr__4_1 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
Addr__4_2 = Memory_Read_U32(uAddress); Addr__4_2 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST 4_1 4_2 addresses: %08x %08x", uAddress, Addr__4_1, Addr__4_2); DEBUG_LOG(DSPHLE, "%08x : AXLIST 4_1 4_2 addresses: %08x %08x", uAddress, Addr__4_1, Addr__4_2);
break; break;
case 0x0005: case 0x0005:
Addr__5_1 = Memory_Read_U32(uAddress); Addr__5_1 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
Addr__5_2 = Memory_Read_U32(uAddress); Addr__5_2 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST 5_1 5_2 addresses: %08x %08x", uAddress, Addr__5_1, Addr__5_2); DEBUG_LOG(DSPHLE, "%08x : AXLIST 5_1 5_2 addresses: %08x %08x", uAddress, Addr__5_1, Addr__5_2);
break; break;
case 0x0006: case 0x0006:
Addr__6 = Memory_Read_U32(uAddress); Addr__6 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST 6 address: %08x", uAddress, Addr__6); DEBUG_LOG(DSPHLE, "%08x : AXLIST 6 address: %08x", uAddress, Addr__6);
break; break;
case AXLIST_SBUFFER: case AXLIST_SBUFFER:
Addr__AXOutSBuffer = Memory_Read_U32(uAddress); Addr__AXOutSBuffer = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST OutSBuffer address: %08x", uAddress, Addr__AXOutSBuffer); DEBUG_LOG(DSPHLE, "%08x : AXLIST OutSBuffer address: %08x", uAddress, Addr__AXOutSBuffer);
break; break;
case 0x0009: case 0x0009:
Addr__9 = Memory_Read_U32(uAddress); Addr__9 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST 6 address: %08x", uAddress, Addr__9); DEBUG_LOG(DSPHLE, "%08x : AXLIST 6 address: %08x", uAddress, Addr__9);
break; break;
case AXLIST_COMPRESSORTABLE: // 0xa case AXLIST_COMPRESSORTABLE: // 0xa
Addr__A = Memory_Read_U32(uAddress); Addr__A = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST CompressorTable address: %08x", uAddress, Addr__A); DEBUG_LOG(DSPHLE, "%08x : AXLIST CompressorTable address: %08x", uAddress, Addr__A);
break; break;
case 0x000e: case 0x000e:
Addr__AXOutSBuffer_1 = Memory_Read_U32(uAddress); Addr__AXOutSBuffer_1 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
// Addr__AXOutSBuffer_2 is the address in RAM that we are supposed to mix to. // Addr__AXOutSBuffer_2 is the address in RAM that we are supposed to mix to.
// Although we don't, currently. // Although we don't, currently.
Addr__AXOutSBuffer_2 = Memory_Read_U32(uAddress); Addr__AXOutSBuffer_2 = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
DEBUG_LOG(DSPHLE, "%08x : AXLIST sbuf2 addresses: %08x %08x", uAddress, Addr__AXOutSBuffer_1, Addr__AXOutSBuffer_2); DEBUG_LOG(DSPHLE, "%08x : AXLIST sbuf2 addresses: %08x %08x", uAddress, Addr__AXOutSBuffer_1, Addr__AXOutSBuffer_2);
break; break;
@ -413,7 +412,7 @@ bool CUCode_AX::AXTask(u32& _uMail)
break; break;
case 0x0012: case 0x0012:
Addr__12 = Memory_Read_U16(uAddress); Addr__12 = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
break; break;
@ -433,7 +432,7 @@ bool CUCode_AX::AXTask(u32& _uMail)
while (num < 64+32) while (num < 64+32)
{ {
char szTemp2[128] = ""; char szTemp2[128] = "";
sprintf(szTemp2, "%s0x%04x\n", num == 0 ? ">>" : " ", Memory_Read_U16(uAddress + num)); sprintf(szTemp2, "%s0x%04x\n", num == 0 ? ">>" : " ", HLEMemory_Read_U16(uAddress + num));
strcat(szTemp, szTemp2); strcat(szTemp, szTemp2);
num += 2; num += 2;
} }

View File

@ -19,7 +19,6 @@
#define _UCODE_AX #define _UCODE_AX
#include <iostream> #include <iostream>
#include "pluginspecs_dsp.h"
#include "UCode_AXStructs.h" #include "UCode_AXStructs.h"
enum enum

View File

@ -146,12 +146,12 @@ void CUCode_AXWii::Update(int cycles)
if (NeedsResumeMail()) if (NeedsResumeMail())
{ {
m_rMailHandler.PushMail(DSP_RESUME); m_rMailHandler.PushMail(DSP_RESUME);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
// check if we have to send something // check if we have to send something
else if (!m_rMailHandler.IsEmpty()) else if (!m_rMailHandler.IsEmpty())
{ {
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
} }
@ -167,20 +167,20 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
/* /*
for (int i=0;i<64;i++) { for (int i=0;i<64;i++) {
NOTICE_LOG(DSPHLE,"%x - %08x",uAddress+(i*4),Memory_Read_U32(uAddress+(i*4))); NOTICE_LOG(DSPHLE,"%x - %08x",uAddress+(i*4),HLEMemory_Read_U32(uAddress+(i*4)));
} }
*/ */
while (bExecuteList) while (bExecuteList)
{ {
u16 iCommand = Memory_Read_U16(uAddress); u16 iCommand = HLEMemory_Read_U16(uAddress);
uAddress += 2; uAddress += 2;
//NOTICE_LOG(DSPHLE,"AXWII - AXLIST CMD %X",iCommand); //NOTICE_LOG(DSPHLE,"AXWII - AXLIST CMD %X",iCommand);
switch (iCommand) switch (iCommand)
{ {
case 0x0000: case 0x0000:
Addr__AXStudio = Memory_Read_U32(uAddress); Addr__AXStudio = HLEMemory_Read_U32(uAddress);
uAddress += 4; uAddress += 4;
break; break;
@ -194,7 +194,7 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
case 0x0004: case 0x0004:
// PBs are here now // PBs are here now
m_addressPBs = Memory_Read_U32(uAddress); m_addressPBs = HLEMemory_Read_U32(uAddress);
soundStream->GetMixer()->SetHLEReady(true); soundStream->GetMixer()->SetHLEReady(true);
// soundStream->Update(); // soundStream->Update();
uAddress += 4; uAddress += 4;
@ -210,7 +210,7 @@ bool CUCode_AXWii::AXTask(u32& _uMail)
break; break;
case 0x0007: // AXLIST_SBUFFER case 0x0007: // AXLIST_SBUFFER
Addr__AXOutSBuffer = Memory_Read_U32(uAddress); Addr__AXOutSBuffer = HLEMemory_Read_U32(uAddress);
uAddress += 10; uAddress += 10;
break; break;

View File

@ -17,7 +17,9 @@
#ifndef _UCODE_AX_ADPCM_H #ifndef _UCODE_AX_ADPCM_H
#define _UCODE_AX_ADPCM_H #define _UCODE_AX_ADPCM_H
#include "../Globals.h"
#include "../DSPHLEGlobals.h"
#include "../../DSP.h"
inline s16 ADPCM_Step(PBADPCMInfo &adpcm, u32& samplePos, u32 newSamplePos, u16 frac) inline s16 ADPCM_Step(PBADPCMInfo &adpcm, u32& samplePos, u32 newSamplePos, u16 frac)
{ {
@ -25,7 +27,7 @@ inline s16 ADPCM_Step(PBADPCMInfo &adpcm, u32& samplePos, u32 newSamplePos, u16
{ {
if ((samplePos & 15) == 0) if ((samplePos & 15) == 0)
{ {
adpcm.pred_scale = g_dspInitialize.pARAM_Read_U8((samplePos & ~15) >> 1); adpcm.pred_scale = DSP::ReadARAM((samplePos & ~15) >> 1);
samplePos += 2; samplePos += 2;
newSamplePos += 2; newSamplePos += 2;
} }
@ -37,8 +39,8 @@ inline s16 ADPCM_Step(PBADPCMInfo &adpcm, u32& samplePos, u32 newSamplePos, u16
s32 coef2 = adpcm.coefs[coef_idx * 2 + 1]; s32 coef2 = adpcm.coefs[coef_idx * 2 + 1];
int temp = (samplePos & 1) ? int temp = (samplePos & 1) ?
(g_dspInitialize.pARAM_Read_U8(samplePos >> 1) & 0xF) : (DSP::ReadARAM(samplePos >> 1) & 0xF) :
(g_dspInitialize.pARAM_Read_U8(samplePos >> 1) >> 4); (DSP::ReadARAM(samplePos >> 1) >> 4);
if (temp >= 8) if (temp >= 8)
temp -= 16; temp -= 16;

View File

@ -22,13 +22,11 @@
#include "UCode_AX_ADPCM.h" #include "UCode_AX_ADPCM.h"
#include "UCode_AX.h" #include "UCode_AX.h"
#include "Mixer.h" #include "Mixer.h"
#include "../main.h"
#include "../Config.h"
// MRAM -> ARAM for GC // MRAM -> ARAM for GC
inline bool ReadPB(u32 addr, AXPB &PB) inline bool ReadPB(u32 addr, AXPB &PB)
{ {
const u16* PB_in_mram = (const u16*)g_dspInitialize.pGetMemoryPointer(addr); const u16* PB_in_mram = (const u16*)Memory::GetPointer(addr);
if (PB_in_mram == NULL) if (PB_in_mram == NULL)
return false; return false;
u16* PB_in_aram = (u16*)&PB; u16* PB_in_aram = (u16*)&PB;
@ -44,7 +42,7 @@ inline bool ReadPB(u32 addr, AXPB &PB)
// MRAM -> ARAM for Wii // MRAM -> ARAM for Wii
inline bool ReadPB(u32 addr, AXPBWii &PB) inline bool ReadPB(u32 addr, AXPBWii &PB)
{ {
const u16* PB_in_mram = (const u16*)g_dspInitialize.pGetMemoryPointer(addr); const u16* PB_in_mram = (const u16*)Memory::GetPointer(addr);
if (PB_in_mram == NULL) if (PB_in_mram == NULL)
return false; return false;
u16* PB_in_aram = (u16*)&PB; u16* PB_in_aram = (u16*)&PB;
@ -64,7 +62,7 @@ inline bool ReadPB(u32 addr, AXPBWii &PB)
inline bool WritePB(u32 addr, AXPB &PB) inline bool WritePB(u32 addr, AXPB &PB)
{ {
const u16* PB_in_aram = (const u16*)&PB; const u16* PB_in_aram = (const u16*)&PB;
u16* PB_in_mram = (u16*)g_dspInitialize.pGetMemoryPointer(addr); u16* PB_in_mram = (u16*)Memory::GetPointer(addr);
if (PB_in_mram == NULL) if (PB_in_mram == NULL)
return false; return false;
@ -80,7 +78,7 @@ inline bool WritePB(u32 addr, AXPB &PB)
inline bool WritePB(u32 addr, AXPBWii &PB) inline bool WritePB(u32 addr, AXPBWii &PB)
{ {
const u16* PB_in_aram = (const u16*)&PB; const u16* PB_in_aram = (const u16*)&PB;
u16* PB_in_mram = (u16*)g_dspInitialize.pGetMemoryPointer(addr); u16* PB_in_mram = (u16*)Memory::GetPointer(addr);
if (PB_in_mram == NULL) if (PB_in_mram == NULL)
return false; return false;
@ -167,8 +165,8 @@ inline void MixAddVoice(ParamBlockType &pb,
switch (pb.audio_addr.sample_format) switch (pb.audio_addr.sample_format)
{ {
case AUDIOFORMAT_PCM8: case AUDIOFORMAT_PCM8:
pb.adpcm.yn2 = ((s8)g_dspInitialize.pARAM_Read_U8(samplePos)) << 8; //current sample pb.adpcm.yn2 = ((s8)DSP::ReadARAM(samplePos)) << 8; //current sample
pb.adpcm.yn1 = ((s8)g_dspInitialize.pARAM_Read_U8(samplePos + 1)) << 8; //next sample pb.adpcm.yn1 = ((s8)DSP::ReadARAM(samplePos + 1)) << 8; //next sample
if (pb.src_type == SRCTYPE_NEAREST) if (pb.src_type == SRCTYPE_NEAREST)
sample = pb.adpcm.yn2; sample = pb.adpcm.yn2;
@ -179,8 +177,8 @@ inline void MixAddVoice(ParamBlockType &pb,
break; break;
case AUDIOFORMAT_PCM16: case AUDIOFORMAT_PCM16:
pb.adpcm.yn2 = (s16)(u16)((g_dspInitialize.pARAM_Read_U8(samplePos * 2) << 8) | (g_dspInitialize.pARAM_Read_U8((samplePos * 2 + 1)))); //current sample pb.adpcm.yn2 = (s16)(u16)((DSP::ReadARAM(samplePos * 2) << 8) | (DSP::ReadARAM((samplePos * 2 + 1)))); //current sample
pb.adpcm.yn1 = (s16)(u16)((g_dspInitialize.pARAM_Read_U8((samplePos + 1) * 2) << 8) | (g_dspInitialize.pARAM_Read_U8(((samplePos + 1) * 2 + 1)))); //next sample pb.adpcm.yn1 = (s16)(u16)((DSP::ReadARAM((samplePos + 1) * 2) << 8) | (DSP::ReadARAM(((samplePos + 1) * 2 + 1)))); //next sample
if (pb.src_type == SRCTYPE_NEAREST) if (pb.src_type == SRCTYPE_NEAREST)
sample = pb.adpcm.yn2; sample = pb.adpcm.yn2;

View File

@ -15,10 +15,11 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_CARD.h" #include "UCode_CARD.h"
#include "../../DSP.h"
CUCode_CARD::CUCode_CARD(CMailHandler& _rMailHandler) CUCode_CARD::CUCode_CARD(CMailHandler& _rMailHandler)
@ -40,7 +41,7 @@ void CUCode_CARD::Update(int cycles)
// check if we have to sent something // check if we have to sent something
if (!m_rMailHandler.IsEmpty()) if (!m_rMailHandler.IsEmpty())
{ {
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
} }

View File

@ -15,11 +15,13 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_GBA.h" #include "UCode_GBA.h"
#include "../../DSP.h"
CUCode_GBA::CUCode_GBA(CMailHandler& _rMailHandler) CUCode_GBA::CUCode_GBA(CMailHandler& _rMailHandler)
: IUCode(_rMailHandler) : IUCode(_rMailHandler)
{ {
@ -36,7 +38,7 @@ void CUCode_GBA::Update(int cycles)
// check if we have to send something // check if we have to send something
if (!m_rMailHandler.IsEmpty()) if (!m_rMailHandler.IsEmpty())
{ {
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
} }
@ -69,7 +71,7 @@ void CUCode_GBA::HandleMail(u32 _uMail)
// 32 bytes from mram addr to dram @ 0 // 32 bytes from mram addr to dram @ 0
for (int i = 0; i < 8; i++, mramaddr += 4) for (int i = 0; i < 8; i++, mramaddr += 4)
((u32*)&sec_params)[i] = Memory_Read_U32(mramaddr); ((u32*)&sec_params)[i] = HLEMemory_Read_U32(mramaddr);
// This is the main decrypt routine // This is the main decrypt routine
u16 x11 = 0, x12 = 0, u16 x11 = 0, x12 = 0,
@ -118,8 +120,8 @@ void CUCode_GBA::HandleMail(u32 _uMail)
} }
// Send the result back to mram // Send the result back to mram
*(u32*)Memory_Get_Pointer(sec_params.dest_addr) = Common::swap32((x20 << 16) | x21); *(u32*)HLEMemory_Get_Pointer(sec_params.dest_addr) = Common::swap32((x20 << 16) | x21);
*(u32*)Memory_Get_Pointer(sec_params.dest_addr+4) = Common::swap32((x22 << 16) | x23); *(u32*)HLEMemory_Get_Pointer(sec_params.dest_addr+4) = Common::swap32((x22 << 16) | x23);
// Done! // Done!
DEBUG_LOG(DSPHLE, "\n%08x -> key %08x len %08x dest_addr %08x unk1 %08x unk2 %08x" DEBUG_LOG(DSPHLE, "\n%08x -> key %08x len %08x dest_addr %08x unk1 %08x unk2 %08x"

View File

@ -15,7 +15,7 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_InitAudioSystem.h" #include "UCode_InitAudioSystem.h"

View File

@ -15,11 +15,12 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_ROM.h" #include "UCode_ROM.h"
#include "Hash.h" #include "Hash.h"
#include "../../Memmap.h"
CUCode_Rom::CUCode_Rom(CMailHandler& _rMailHandler) CUCode_Rom::CUCode_Rom(CMailHandler& _rMailHandler)
: IUCode(_rMailHandler) : IUCode(_rMailHandler)
@ -96,7 +97,7 @@ void CUCode_Rom::HandleMail(u32 _uMail)
void CUCode_Rom::BootUCode() void CUCode_Rom::BootUCode()
{ {
u32 ector_crc = HashEctor( u32 ector_crc = HashEctor(
(u8*)Memory_Get_Pointer(m_CurrentUCode.m_RAMAddress), (u8*)HLEMemory_Get_Pointer(m_CurrentUCode.m_RAMAddress),
m_CurrentUCode.m_Length); m_CurrentUCode.m_Length);
#if defined(_DEBUG) || defined(DEBUGFAST) #if defined(_DEBUG) || defined(DEBUGFAST)
@ -106,7 +107,7 @@ void CUCode_Rom::BootUCode()
FILE* pFile = fopen(binFile, "wb"); FILE* pFile = fopen(binFile, "wb");
if (pFile) if (pFile)
{ {
fwrite((u8*)Memory_Get_Pointer(m_CurrentUCode.m_RAMAddress), m_CurrentUCode.m_Length, 1, pFile); fwrite((u8*)Memory::GetPointer(m_CurrentUCode.m_RAMAddress), m_CurrentUCode.m_Length, 1, pFile);
fclose(pFile); fclose(pFile);
} }
#endif #endif

View File

@ -19,16 +19,16 @@
// Zelda: The Windwaker, Mario Sunshine, Mario Kart, Twilight Princess, // Zelda: The Windwaker, Mario Sunshine, Mario Kart, Twilight Princess,
// Super Mario Galaxy // Super Mario Galaxy
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_Zelda.h" #include "UCode_Zelda.h"
#include "../MailHandler.h" #include "../MailHandler.h"
#include "../main.h"
#include "Mixer.h" #include "Mixer.h"
#include "WaveFile.h" #include "WaveFile.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
#include "../../DSP.h"
CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler, u32 _CRC) CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler, u32 _CRC)
@ -80,7 +80,7 @@ CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler, u32 _CRC)
else else
{ {
m_rMailHandler.PushMail(DSP_INIT); m_rMailHandler.PushMail(DSP_INIT);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
m_rMailHandler.PushMail(0xF3551111); // handshake m_rMailHandler.PushMail(0xF3551111); // handshake
} }
@ -108,9 +108,9 @@ CUCode_Zelda::~CUCode_Zelda()
u8 *CUCode_Zelda::GetARAMPointer(u32 address) u8 *CUCode_Zelda::GetARAMPointer(u32 address)
{ {
if (IsDMAVersion()) if (IsDMAVersion())
return (u8 *)(g_dspInitialize.pGetMemoryPointer(m_DMABaseAddr)) + address; return (u8 *)(Memory::GetPointer(m_DMABaseAddr)) + address;
else else
return (u8 *)(g_dspInitialize.pGetARAMPointer()) + address; return (u8 *)(DSP::GetARAMPtr()) + address;
} }
void CUCode_Zelda::Update(int cycles) void CUCode_Zelda::Update(int cycles)
@ -118,13 +118,13 @@ void CUCode_Zelda::Update(int cycles)
if (!IsLightVersion()) if (!IsLightVersion())
{ {
if (m_rMailHandler.GetNextMail() == DSP_FRAME_END) if (m_rMailHandler.GetNextMail() == DSP_FRAME_END)
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
if (NeedsResumeMail()) if (NeedsResumeMail())
{ {
m_rMailHandler.PushMail(DSP_RESUME); m_rMailHandler.PushMail(DSP_RESUME);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
} }
@ -145,7 +145,7 @@ void CUCode_Zelda::HandleMail_LightVersion(u32 _uMail)
if (m_bSyncCmdPending) if (m_bSyncCmdPending)
{ {
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
m_CurBuffer++; m_CurBuffer++;
if (m_CurBuffer == m_NumBuffers) if (m_CurBuffer == m_NumBuffers)
@ -208,13 +208,13 @@ void CUCode_Zelda::HandleMail_SMSVersion(u32 _uMail)
m_CurBuffer++; m_CurBuffer++;
m_rMailHandler.PushMail(DSP_SYNC); m_rMailHandler.PushMail(DSP_SYNC);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
m_rMailHandler.PushMail(0xF355FF00 | m_CurBuffer); m_rMailHandler.PushMail(0xF355FF00 | m_CurBuffer);
if (m_CurBuffer == m_NumBuffers) if (m_CurBuffer == m_NumBuffers)
{ {
m_rMailHandler.PushMail(DSP_FRAME_END); m_rMailHandler.PushMail(DSP_FRAME_END);
//g_dspInitialize.pGenerateDSPInterrupt(); // DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
soundStream->GetMixer()->SetHLEReady(true); soundStream->GetMixer()->SetHLEReady(true);
DEBUG_LOG(DSPHLE, "Update the SoundThread to be in sync"); DEBUG_LOG(DSPHLE, "Update the SoundThread to be in sync");
@ -335,7 +335,7 @@ void CUCode_Zelda::HandleMail_NormalVersion(u32 _uMail)
m_CurBuffer++; m_CurBuffer++;
m_rMailHandler.PushMail(DSP_SYNC); m_rMailHandler.PushMail(DSP_SYNC);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
m_rMailHandler.PushMail(0xF355FF00 | m_CurBuffer); m_rMailHandler.PushMail(0xF355FF00 | m_CurBuffer);
m_CurVoice = 0; m_CurVoice = 0;
@ -465,12 +465,12 @@ void CUCode_Zelda::ExecuteList()
m_ReverbPBsAddr = Read32() & 0x7FFFFFFF; // WARNING: reverb PBs are very different from voice PBs! m_ReverbPBsAddr = Read32() & 0x7FFFFFFF; // WARNING: reverb PBs are very different from voice PBs!
// Read the other table // Read the other table
u16 *TempPtr = (u16*) g_dspInitialize.pGetMemoryPointer(m_UnkTableAddr); u16 *TempPtr = (u16*)Memory::GetPointer(m_UnkTableAddr);
for (int i = 0; i < 0x280; i++) for (int i = 0; i < 0x280; i++)
m_MiscTable[i] = (s16)Common::swap16(TempPtr[i]); m_MiscTable[i] = (s16)Common::swap16(TempPtr[i]);
// Read AFC coef table // Read AFC coef table
TempPtr = (u16*) g_dspInitialize.pGetMemoryPointer(m_AFCCoefTableAddr); TempPtr = (u16*)Memory::GetPointer(m_AFCCoefTableAddr);
for (int i = 0; i < 32; i++) for (int i = 0; i < 32; i++)
m_AFCCoefTable[i] = (s16)Common::swap16(TempPtr[i]); m_AFCCoefTable[i] = (s16)Common::swap16(TempPtr[i]);
@ -563,7 +563,7 @@ void CUCode_Zelda::ExecuteList()
else else
{ {
m_rMailHandler.PushMail(DSP_SYNC); m_rMailHandler.PushMail(DSP_SYNC);
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
m_rMailHandler.PushMail(0xF3550000 | Sync); m_rMailHandler.PushMail(0xF3550000 | Sync);
} }
} }

View File

@ -74,7 +74,7 @@ void CUCode_Zelda::UpdatePB(ZPB& _rPB, int *templbuffer, int *temprbuffer, u32 _
{ {
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
inBuffer[i] = g_dspInitialize.pARAM_Read_U8(ARAMAddr); inBuffer[i] = DSP::ReadARAM(ARAMAddr);
ARAMAddr++; ARAMAddr++;
} }
@ -97,7 +97,7 @@ void CUCode_Zelda::UpdatePB(ZPB& _rPB, int *templbuffer, int *temprbuffer, u32 _
{ {
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
inBuffer[i] = g_dspInitialize.pARAM_Read_U8(ARAMAddr); inBuffer[i] = DSP::ReadARAM(ARAMAddr);
ARAMAddr++; ARAMAddr++;
} }
@ -144,7 +144,7 @@ void CUCode_Zelda::UpdatePB(ZPB& _rPB, int *templbuffer, int *temprbuffer, u32 _
static u8 Buffer[500000]; static u8 Buffer[500000];
for (int i =0; i<NumberOfSamples*9; i++) for (int i =0; i<NumberOfSamples*9; i++)
{ {
Buffer[i] = g_dspInitialize.pARAM_Read_U8(ARAMAddr+i); Buffer[i] = DSP::ReadARAM(ARAMAddr+i);
} }
// yes, the dumps are really zelda sound ;) // yes, the dumps are really zelda sound ;)

View File

@ -17,11 +17,11 @@
#include <math.h> #include <math.h>
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_Zelda.h" #include "UCode_Zelda.h"
#include "AudioCommon.h"
#include "../main.h"
#include "Mixer.h" #include "Mixer.h"
void CUCode_Zelda::RenderSynth_RectWave(ZeldaVoicePB &PB, s32* _Buffer, int _Size) void CUCode_Zelda::RenderSynth_RectWave(ZeldaVoicePB &PB, s32* _Buffer, int _Size)

View File

@ -15,18 +15,21 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include <sstream>
#include "../DSPHLEGlobals.h"
#include "UCodes.h" #include "UCodes.h"
#include "UCode_Zelda.h" #include "UCode_Zelda.h"
#include "../main.h" // #include "../main.h"
#include "AudioCommon.h"
#include "Mixer.h" #include "Mixer.h"
#include "../../Memmap.h"
#include <sstream> #include "../../DSP.h"
void CUCode_Zelda::ReadVoicePB(u32 _Addr, ZeldaVoicePB& PB) void CUCode_Zelda::ReadVoicePB(u32 _Addr, ZeldaVoicePB& PB)
{ {
u16 *memory = (u16*)g_dspInitialize.pGetMemoryPointer(_Addr); u16 *memory = (u16*)Memory::GetPointer(_Addr);
// Perform byteswap // Perform byteswap
for (int i = 0; i < (0x180 / 2); i++) for (int i = 0; i < (0x180 / 2); i++)
@ -45,7 +48,7 @@ void CUCode_Zelda::ReadVoicePB(u32 _Addr, ZeldaVoicePB& PB)
void CUCode_Zelda::WritebackVoicePB(u32 _Addr, ZeldaVoicePB& PB) void CUCode_Zelda::WritebackVoicePB(u32 _Addr, ZeldaVoicePB& PB)
{ {
u16 *memory = (u16*)g_dspInitialize.pGetMemoryPointer(_Addr); u16 *memory = (u16*)Memory::GetPointer(_Addr);
// Word swap all 32-bit variables. // Word swap all 32-bit variables.
PB.RestartPos = (PB.RestartPos << 16) | (PB.RestartPos >> 16); PB.RestartPos = (PB.RestartPos << 16) | (PB.RestartPos >> 16);
@ -284,11 +287,11 @@ void CUCode_Zelda::RenderVoice_AFC(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
const u8 *source; const u8 *source;
u32 ram_mask = 1024 * 1024 * 16 - 1; u32 ram_mask = 1024 * 1024 * 16 - 1;
if (IsDMAVersion()) { if (IsDMAVersion()) {
source = g_dspInitialize.pGetMemoryPointer(m_DMABaseAddr); source = Memory::GetPointer(m_DMABaseAddr);
ram_mask = 1024 * 1024 * 64 - 1; ram_mask = 1024 * 1024 * 64 - 1;
} }
else else
source = g_dspInitialize.pGetARAMPointer(); source = DSP::GetARAMPtr();
int sampleCount = 0; // must be above restart. int sampleCount = 0; // must be above restart.
@ -417,7 +420,7 @@ void CUCode_Zelda::RenderVoice_Raw(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
ACC0 -= ACC1; ACC0 -= ACC1;
PB.Unk36[0] = ACC0 >> 16; PB.Unk36[0] = (u16)(ACC0 >> 16);
// This subtract does really not make much sense at all. // This subtract does really not make much sense at all.
ACC0 -= AX0 << 16; ACC0 -= AX0 << 16;
@ -436,7 +439,7 @@ void CUCode_Zelda::RenderVoice_Raw(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
PB.StartAddr = PB.LoopStartPos; PB.StartAddr = PB.LoopStartPos;
Decoder21_ReadAudio(PB, ACC0 >> 16, _Buffer); Decoder21_ReadAudio(PB, (int)(ACC0 >> 16), _Buffer);
return; return;
} }
@ -467,7 +470,7 @@ void Decoder21_ReadAudio(ZeldaVoicePB &PB, int size, s16 *_Buffer)
// ACC1 is the read size // ACC1 is the read size
const u32 ram_mask = 0x1FFFFFF; const u32 ram_mask = 0x1FFFFFF;
const u8 *source = g_dspInitialize.pGetMemoryPointer(0x80000000); const u8 *source = Memory::GetPointer(0x80000000);
const u16 *src = (u16 *)(source + (ACC0 & ram_mask)); const u16 *src = (u16 *)(source + (ACC0 & ram_mask));
for (u32 i = 0; i < (ACC1 >> 16); i++) { for (u32 i = 0; i < (ACC1 >> 16); i++) {

View File

@ -15,7 +15,7 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "../Globals.h" #include "../DSPHLEGlobals.h"
#include "UCodes.h" #include "UCodes.h"
@ -29,7 +29,7 @@
#include "Hash.h" #include "Hash.h"
#include "../DSPHandler.h" #include "../DSPHandler.h"
IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler) IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler, bool bWii)
{ {
switch (_CRC) switch (_CRC)
{ {
@ -95,7 +95,7 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
return new CUCode_AXWii(_rMailHandler, _CRC); return new CUCode_AXWii(_rMailHandler, _CRC);
default: default:
if (g_dspInitialize.bWii) if (bWii)
{ {
PanicAlert("DSPHLE: Unknown ucode (CRC = %08x) - forcing AXWii.\n\nTry LLE plugin if this is homebrew.", _CRC); PanicAlert("DSPHLE: Unknown ucode (CRC = %08x) - forcing AXWii.\n\nTry LLE plugin if this is homebrew.", _CRC);
return new CUCode_AXWii(_rMailHandler, _CRC); return new CUCode_AXWii(_rMailHandler, _CRC);
@ -144,7 +144,7 @@ void IUCode::PrepareBootUCode(u32 mail)
m_UploadSetupInProgress = false; m_UploadSetupInProgress = false;
u32 ector_crc = HashEctor( u32 ector_crc = HashEctor(
(u8*)Memory_Get_Pointer(m_NextUCode.iram_mram_addr), (u8*)HLEMemory_Get_Pointer(m_NextUCode.iram_mram_addr),
m_NextUCode.iram_size); m_NextUCode.iram_size);
#if defined(_DEBUG) || defined(DEBUGFAST) #if defined(_DEBUG) || defined(DEBUGFAST)
@ -154,7 +154,7 @@ void IUCode::PrepareBootUCode(u32 mail)
FILE* pFile = fopen(binFile, "wb"); FILE* pFile = fopen(binFile, "wb");
if (pFile) if (pFile)
{ {
fwrite((u8*)Memory_Get_Pointer(m_NextUCode.iram_mram_addr), m_NextUCode.iram_size, 1, pFile); fwrite((u8*)Memory::GetPointer(m_NextUCode.iram_mram_addr), m_NextUCode.iram_size, 1, pFile);
fclose(pFile); fclose(pFile);
} }
#endif #endif

View File

@ -94,6 +94,6 @@ private:
bool m_NeedsResumeMail; bool m_NeedsResumeMail;
}; };
extern IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler); extern IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler, bool bWii);
#endif #endif

View File

@ -19,18 +19,20 @@
#include "Hash.h" #include "Hash.h"
#include "DSPHost.h" #include "DSPHost.h"
#include "DSPSymbols.h" #include "DSPSymbols.h"
#include "Tools.h" #include "DSPLLETools.h"
#include "pluginspecs_dsp.h" #include "../DSP.h"
#include "../../ConfigManager.h"
extern DSPInitialize g_dspInitialize; #include "../../PowerPC/PowerPC.h"
/*
ECTORTODO
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
#include "DSPConfigDlgLLE.h"
#include "Debugger/DSPDebugWindow.h" // For the DSPDebuggerLLE class #include "Debugger/DSPDebugWindow.h" // For the DSPDebuggerLLE class
extern DSPDebuggerLLE* m_DebuggerFrame; extern DSPDebuggerLLE* m_DebuggerFrame;
#endif #endif
*/
// The user of the DSPCore library must supply a few functions so that the // The user of the DSPCore library must supply a few functions so that the
// emulation core can access the environment it runs in. If the emulation // emulation core can access the environment it runs in. If the emulation
@ -39,28 +41,29 @@ extern DSPDebuggerLLE* m_DebuggerFrame;
u8 DSPHost_ReadHostMemory(u32 addr) u8 DSPHost_ReadHostMemory(u32 addr)
{ {
return g_dspInitialize.pARAM_Read_U8(addr); return DSP::ReadARAM(addr);
} }
void DSPHost_WriteHostMemory(u8 value, u32 addr) void DSPHost_WriteHostMemory(u8 value, u32 addr)
{ {
g_dspInitialize.pARAM_Write_U8(value, addr); DSP::WriteARAM(value, addr);
} }
bool DSPHost_OnThread() bool DSPHost_OnThread()
{ {
return g_dspInitialize.bOnThread; const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter;
return _CoreParameter.bDSPThread;
} }
bool DSPHost_Running() bool DSPHost_Running()
{ {
return !(*g_dspInitialize.pEmulatorState); return !(*PowerPC::GetStatePtr());
} }
void DSPHost_InterruptRequest() void DSPHost_InterruptRequest()
{ {
// Fire an interrupt on the PPC ASAP. // Fire an interrupt on the PPC ASAP.
g_dspInitialize.pGenerateDSPInterrupt(); DSP::GenerateDSPInterruptFromPlugin(DSP::INT_DSP);
} }
u32 DSPHost_CodeLoaded(const u8 *ptr, int size) u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
@ -100,17 +103,20 @@ u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
// Always add the ROM. // Always add the ROM.
DSPSymbols::AutoDisassembly(0x8000, 0x9000); DSPSymbols::AutoDisassembly(0x8000, 0x9000);
/* ECTORTODO
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
if (m_DebuggerFrame) if (m_DebuggerFrame)
m_DebuggerFrame->Refresh(); m_DebuggerFrame->Refresh();
#endif #endif
*/
return ector_crc; return ector_crc;
} }
void DSPHost_UpdateDebugger() void DSPHost_UpdateDebugger()
{ {
/* ECTORTODO
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
if (m_DebuggerFrame) if (m_DebuggerFrame)
m_DebuggerFrame->Refresh(); m_DebuggerFrame->Refresh();
#endif #endif */
} }

View File

@ -25,7 +25,7 @@
#include "ChunkFile.h" #include "ChunkFile.h"
#include "IniFile.h" #include "IniFile.h"
#include "Globals.h" // Local #include "DSPLLEGlobals.h" // Local
#include "DSPInterpreter.h" #include "DSPInterpreter.h"
#include "DSPHWInterface.h" #include "DSPHWInterface.h"
#include "disassemble.h" #include "disassemble.h"
@ -37,136 +37,23 @@
#include "DSPTables.h" #include "DSPTables.h"
#include "DSPCore.h" #include "DSPCore.h"
#include "DSPLLE.h"
#include "../Memmap.h"
#include "../AudioInterface.h"
#if defined(HAVE_WX) && HAVE_WX
#include "DSPConfigDlgLLE.h"
DSPConfigDialogLLE* m_ConfigFrame = NULL;
#include "Debugger/DSPDebugWindow.h"
#endif
PLUGIN_GLOBALS* globals = NULL; DSPLLE::DSPLLE() {
DSPInitialize g_dspInitialize; soundStream = NULL;
std::thread g_hDSPThread; g_InitMixer = false;
SoundStream *soundStream = NULL; bIsRunning = false;
bool g_InitMixer = false; cycle_count = 0;
bool bIsRunning = false;
volatile u32 cycle_count = 0;
// Standard crap to make wxWidgets happy
#ifdef _WIN32
HINSTANCE g_hInstance;
wxLocale *InitLanguageSupport()
{
wxLocale *m_locale;
unsigned int language = 0;
IniFile ini;
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
ini.Get("Interface", "Language", &language, wxLANGUAGE_DEFAULT);
// Load language if possible, fall back to system default otherwise
if(wxLocale::IsAvailable(language))
{
m_locale = new wxLocale(language);
m_locale->AddCatalogLookupPathPrefix(wxT("Languages"));
m_locale->AddCatalog(wxT("dolphin-emu"));
if(!m_locale->IsOk())
{
PanicAlertT("Error loading selected language. Falling back to system default.");
delete m_locale;
m_locale = new wxLocale(wxLANGUAGE_DEFAULT);
}
}
else
{
PanicAlertT("The selected language is not supported by your system. Falling back to system default.");
m_locale = new wxLocale(wxLANGUAGE_DEFAULT);
}
return m_locale;
} }
class wxDLLApp : public wxApp DSPLLE::~DSPLLE() {
{
bool OnInit()
{
return true;
}
};
IMPLEMENT_APP_NO_MAIN(wxDLLApp)
WXDLLIMPEXP_BASE void wxSetInstance(HINSTANCE hInst);
BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
{
static wxLocale *m_locale;
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
wxSetInstance((HINSTANCE)hinstDLL);
wxInitialize();
m_locale = InitLanguageSupport();
}
break;
case DLL_PROCESS_DETACH:
wxUninitialize();
delete m_locale;
break;
}
g_hInstance = hinstDLL;
return TRUE;
}
#endif
void GetDllInfo(PLUGIN_INFO* _PluginInfo)
{
_PluginInfo->Version = 0x0100;
_PluginInfo->Type = PLUGIN_TYPE_DSP;
#ifdef DEBUGFAST
sprintf(_PluginInfo->Name, "Dolphin DSP-LLE Plugin (DebugFast)");
#elif defined _DEBUG
sprintf(_PluginInfo->Name, "Dolphin DSP-LLE Plugin (Debug)");
#else
sprintf(_PluginInfo->Name, _trans("Dolphin DSP-LLE Plugin"));
#endif
} }
void SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals) void DSPLLE::DoState(PointerWrap &p)
{ {
globals = _pPluginGlobals;
LogManager::SetInstance((LogManager *)globals->logManager);
}
void DllConfig(void *_hParent)
{
#if defined(HAVE_WX) && HAVE_WX
m_ConfigFrame = new DSPConfigDialogLLE((wxWindow *)_hParent);
// add backends
std::vector<std::string> backends = AudioCommon::GetSoundBackends();
for (std::vector<std::string>::const_iterator iter = backends.begin();
iter != backends.end(); ++iter)
{
m_ConfigFrame->AddBackend((*iter).c_str());
}
m_ConfigFrame->ShowModal();
m_ConfigFrame->Destroy();
#endif
}
void DoState(unsigned char **ptr, int mode)
{
PointerWrap p(ptr, mode);
p.Do(g_InitMixer); p.Do(g_InitMixer);
p.Do(g_dsp.r); p.Do(g_dsp.r);
@ -194,11 +81,12 @@ void DoState(unsigned char **ptr, int mode)
p.Do(cycle_count); p.Do(cycle_count);
} }
void EmuStateChange(PLUGIN_EMUSTATE newState) void DSPLLE::EmuStateChange(PLUGIN_EMUSTATE newState)
{ {
DSP_ClearAudioBuffer((newState == PLUGIN_EMUSTATE_PLAY) ? false : true); DSP_ClearAudioBuffer((newState == PLUGIN_EMUSTATE_PLAY) ? false : true);
} }
/* ECTORTODO
void *DllDebugger(void *_hParent, bool Show) void *DllDebugger(void *_hParent, bool Show)
{ {
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
@ -208,43 +96,47 @@ void *DllDebugger(void *_hParent, bool Show)
return NULL; return NULL;
#endif #endif
} }
*/
// Regular thread // Regular thread
void dsp_thread() void DSPLLE::dsp_thread(DSPLLE *lpParameter)
{ {
while (bIsRunning) DSPLLE *dsp_lle = (DSPLLE *)lpParameter;
while (dsp_lle->bIsRunning)
{ {
int cycles = (int)cycle_count; int cycles = (int)dsp_lle->cycle_count;
if (cycles > 0) { if (cycles > 0) {
if (dspjit) if (dspjit)
DSPCore_RunCycles(cycles); DSPCore_RunCycles(cycles);
else else
DSPInterpreter::RunCycles(cycles); DSPInterpreter::RunCycles(cycles);
Common::AtomicAdd(cycle_count, -cycles); Common::AtomicAdd(dsp_lle->cycle_count, -cycles);
} }
// yield? // yield?
} }
} }
void DSP_DebugBreak() /* ECTORTODO
void DSPLLE::DSP_DebugBreak()
{ {
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
// if (m_DebuggerFrame) // if (m_DebuggerFrame)
// m_DebuggerFrame->DebugBreak(); // m_DebuggerFrame->DebugBreak();
#endif #endif
} }
*/
void Initialize(void *init) void DSPLLE::Initialize(void *hWnd, bool bWii, bool bDSPThread)
{ {
this->hWnd = hWnd;
this->bWii = bWii;
this->bDSPThread = bDSPThread;
g_InitMixer = false; g_InitMixer = false;
bool bCanWork = true; bool bCanWork = true;
char irom_file[MAX_PATH]; char irom_file[MAX_PATH];
char coef_file[MAX_PATH]; char coef_file[MAX_PATH];
g_dspInitialize = *(DSPInitialize*)init;
g_Config.Load();
snprintf(irom_file, MAX_PATH, "%s%s", snprintf(irom_file, MAX_PATH, "%s%s",
File::GetSysDirectory().c_str(), GC_SYS_DIR DIR_SEP DSP_IROM); File::GetSysDirectory().c_str(), GC_SYS_DIR DIR_SEP DSP_IROM);
@ -258,7 +150,7 @@ void Initialize(void *init)
File::GetUserPath(D_GCUSER_IDX), DIR_SEP DSP_COEF); File::GetUserPath(D_GCUSER_IDX), DIR_SEP DSP_COEF);
bCanWork = DSPCore_Init(irom_file, coef_file, AudioCommon::UseJIT()); bCanWork = DSPCore_Init(irom_file, coef_file, AudioCommon::UseJIT());
g_dsp.cpu_ram = g_dspInitialize.pGetMemoryPointer(0); g_dsp.cpu_ram = Memory::GetPointer(0);
DSPCore_Reset(); DSPCore_Reset();
if (!bCanWork) if (!bCanWork)
@ -273,34 +165,37 @@ void Initialize(void *init)
InitInstructionTable(); InitInstructionTable();
if (g_dspInitialize.bOnThread) if (bDSPThread)
{ {
g_hDSPThread = std::thread(dsp_thread); // g_hDSPThread = new Common::Thread(dsp_thread, (void *)this);
g_hDSPThread = std::thread(dsp_thread, this);
} }
/*
ECTORTODO
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
if (m_DebuggerFrame) if (m_DebuggerFrame)
m_DebuggerFrame->Refresh(); m_DebuggerFrame->Refresh();
#endif #endif
*/
} }
void DSP_StopSoundStream() void DSPLLE::DSP_StopSoundStream()
{ {
DSPInterpreter::Stop(); DSPInterpreter::Stop();
bIsRunning = false; bIsRunning = false;
if (g_dspInitialize.bOnThread) if (bDSPThread)
{ {
g_hDSPThread.join(); g_hDSPThread.join();
} }
} }
void Shutdown() void DSPLLE::Shutdown()
{ {
AudioCommon::ShutdownSoundStream(); AudioCommon::ShutdownSoundStream();
DSPCore_Shutdown(); DSPCore_Shutdown();
} }
u16 DSP_WriteControlRegister(u16 _uFlag) u16 DSPLLE::DSP_WriteControlRegister(u16 _uFlag)
{ {
UDSPControl Temp(_uFlag); UDSPControl Temp(_uFlag);
if (!g_InitMixer) if (!g_InitMixer)
@ -308,8 +203,8 @@ u16 DSP_WriteControlRegister(u16 _uFlag)
if (!Temp.DSPHalt && Temp.DSPInit) if (!Temp.DSPHalt && Temp.DSPInit)
{ {
unsigned int AISampleRate, DACSampleRate; unsigned int AISampleRate, DACSampleRate;
g_dspInitialize.pGetSampleRate(AISampleRate, DACSampleRate); AudioInterface::Callback_GetSampleRate(AISampleRate, DACSampleRate);
soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate)); soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate), hWnd);
if(!soundStream) PanicAlert("Error starting up sound stream"); if(!soundStream) PanicAlert("Error starting up sound stream");
// Mixer is initialized // Mixer is initialized
g_InitMixer = true; g_InitMixer = true;
@ -321,7 +216,7 @@ u16 DSP_WriteControlRegister(u16 _uFlag)
// and immediately process it, if it has. // and immediately process it, if it has.
if (_uFlag & 2) if (_uFlag & 2)
{ {
if (!g_dspInitialize.bOnThread) if (!bDSPThread)
{ {
DSPCore_CheckExternalInterrupt(); DSPCore_CheckExternalInterrupt();
DSPCore_CheckExceptions(); DSPCore_CheckExceptions();
@ -336,12 +231,12 @@ u16 DSP_WriteControlRegister(u16 _uFlag)
return DSPInterpreter::ReadCR(); return DSPInterpreter::ReadCR();
} }
u16 DSP_ReadControlRegister() u16 DSPLLE::DSP_ReadControlRegister()
{ {
return DSPInterpreter::ReadCR(); return DSPInterpreter::ReadCR();
} }
u16 DSP_ReadMailboxHigh(bool _CPUMailbox) u16 DSPLLE::DSP_ReadMailBoxHigh(bool _CPUMailbox)
{ {
if (_CPUMailbox) if (_CPUMailbox)
return gdsp_mbox_read_h(GDSP_MBOX_CPU); return gdsp_mbox_read_h(GDSP_MBOX_CPU);
@ -349,7 +244,7 @@ u16 DSP_ReadMailboxHigh(bool _CPUMailbox)
return gdsp_mbox_read_h(GDSP_MBOX_DSP); return gdsp_mbox_read_h(GDSP_MBOX_DSP);
} }
u16 DSP_ReadMailboxLow(bool _CPUMailbox) u16 DSPLLE::DSP_ReadMailBoxLow(bool _CPUMailbox)
{ {
if (_CPUMailbox) if (_CPUMailbox)
return gdsp_mbox_read_l(GDSP_MBOX_CPU); return gdsp_mbox_read_l(GDSP_MBOX_CPU);
@ -357,7 +252,7 @@ u16 DSP_ReadMailboxLow(bool _CPUMailbox)
return gdsp_mbox_read_l(GDSP_MBOX_DSP); return gdsp_mbox_read_l(GDSP_MBOX_DSP);
} }
void DSP_WriteMailboxHigh(bool _CPUMailbox, u16 _uHighMail) void DSPLLE::DSP_WriteMailBoxHigh(bool _CPUMailbox, u16 _uHighMail)
{ {
if (_CPUMailbox) if (_CPUMailbox)
{ {
@ -381,7 +276,7 @@ void DSP_WriteMailboxHigh(bool _CPUMailbox, u16 _uHighMail)
} }
} }
void DSP_WriteMailboxLow(bool _CPUMailbox, u16 _uLowMail) void DSPLLE::DSP_WriteMailBoxLow(bool _CPUMailbox, u16 _uLowMail)
{ {
if (_CPUMailbox) if (_CPUMailbox)
{ {
@ -393,7 +288,7 @@ void DSP_WriteMailboxLow(bool _CPUMailbox, u16 _uLowMail)
} }
} }
void DSP_Update(int cycles) void DSPLLE::DSP_Update(int cycles)
{ {
unsigned int dsp_cycles = cycles / 6; //(jit?20:6); unsigned int dsp_cycles = cycles / 6; //(jit?20:6);
@ -416,7 +311,7 @@ void DSP_Update(int cycles)
} }
*/ */
// If we're not on a thread, run cycles here. // If we're not on a thread, run cycles here.
if (!g_dspInitialize.bOnThread) if (!bDSPThread)
{ {
// ~1/6th as many cycles as the period PPC-side. // ~1/6th as many cycles as the period PPC-side.
DSPCore_RunCycles(dsp_cycles); DSPCore_RunCycles(dsp_cycles);
@ -430,7 +325,7 @@ void DSP_Update(int cycles)
} }
} }
void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples) void DSPLLE::DSP_SendAIBuffer(unsigned int address, unsigned int num_samples)
{ {
if (!soundStream) if (!soundStream)
return; return;
@ -439,16 +334,33 @@ void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples)
if (pMixer != 0 && address != 0) if (pMixer != 0 && address != 0)
{ {
short *samples = (short *)Memory_Get_Pointer(address); const short *samples = (const short *)LLEMemory_Get_Pointer(address);
pMixer->PushSamples(samples, num_samples); pMixer->PushSamples(samples, num_samples);
} }
soundStream->Update(); soundStream->Update();
} }
void DSP_ClearAudioBuffer(bool mute) void DSPLLE::DSP_ClearAudioBuffer(bool mute)
{ {
if (soundStream) if (soundStream)
soundStream->Clear(mute); soundStream->Clear(mute);
} }
#define LLE_CONFIG_FILE "DSPLLE.ini"
void DSPLLE_LoadConfig()
{
// first load defaults
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str());
ac_Config.Load(file);
}
void DSPLLE_SaveConfig()
{
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str());
ac_Config.Set(file);
file.Save((std::string(File::GetUserPath(D_CONFIG_IDX)) + LLE_CONFIG_FILE).c_str());
}

View File

@ -0,0 +1,76 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _DSPLLE_H
#define _DSPLLE_H
#include "Thread.h"
#include "SoundStream.h"
#include "DSPLLEGlobals.h" // Local
#include "../../PluginDSP.h"
class DSPLLE : public PluginDSP {
public:
DSPLLE();
~DSPLLE();
virtual void Initialize(void *hWnd, bool bWii, bool bDSPThread);
virtual void Shutdown();
virtual bool IsLLE() { return true; }
void SetGlobals(PLUGIN_GLOBALS* _PluginGlobals);
/*
GUI
virtual void Config(void *_hwnd);
virtual void About(void *_hwnd);
virtual void *Debug(void *Parent, bool Show);
*/
virtual void DoState(PointerWrap &p);
virtual void EmuStateChange(PLUGIN_EMUSTATE newState);
virtual void DSP_WriteMailBoxHigh(bool _CPUMailbox, unsigned short);
virtual void DSP_WriteMailBoxLow(bool _CPUMailbox, unsigned short);
virtual unsigned short DSP_ReadMailBoxHigh(bool _CPUMailbox);
virtual unsigned short DSP_ReadMailBoxLow(bool _CPUMailbox);
virtual unsigned short DSP_ReadControlRegister();
virtual unsigned short DSP_WriteControlRegister(unsigned short);
virtual void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples);
virtual void DSP_Update(int cycles);
virtual void DSP_StopSoundStream();
virtual void DSP_ClearAudioBuffer(bool mute);
private:
static void dsp_thread(DSPLLE* lpParameter);
std::thread g_hDSPThread;
SoundStream *soundStream;
bool g_InitMixer;
void *hWnd;
bool bWii;
bool bDSPThread;
bool bIsRunning;
volatile u32 cycle_count;
};
// Hack to be deleted.
void DSPLLE_LoadConfig();
void DSPLLE_SaveConfig();
#endif // _DSPLLE_H

View File

@ -21,7 +21,9 @@
#include "Common.h" // for Common::swap #include "Common.h" // for Common::swap
#include "DSPCore.h" #include "DSPCore.h"
#include "Globals.h" #include "DSPLLEGlobals.h"
// TODO: Get rid of this file.
// ======================================================================================= // =======================================================================================
// For PB address detection // For PB address detection
@ -30,17 +32,17 @@
// This will only work on GC, not Wii. // This will only work on GC, not Wii.
u32 RAM_MASK = 0x1FFFFFF; u32 RAM_MASK = 0x1FFFFFF;
u16 Memory_Read_U16(u32 _uAddress) u16 LLEMemory_Read_U16(u32 _uAddress)
{ {
return Common::swap16(*(u16*)&g_dsp.cpu_ram[_uAddress & RAM_MASK]); return Common::swap16(*(u16*)&g_dsp.cpu_ram[_uAddress & RAM_MASK]);
} }
u32 Memory_Read_U32(u32 _uAddress) u32 LLEMemory_Read_U32(u32 _uAddress)
{ {
return Common::swap32(*(u32*)&g_dsp.cpu_ram[_uAddress & RAM_MASK]); return Common::swap32(*(u32*)&g_dsp.cpu_ram[_uAddress & RAM_MASK]);
} }
void* Memory_Get_Pointer(u32 _uAddress) void* LLEMemory_Get_Pointer(u32 _uAddress)
{ {
return &g_dsp.cpu_ram[_uAddress & RAM_MASK]; return &g_dsp.cpu_ram[_uAddress & RAM_MASK];
} }

View File

@ -22,11 +22,13 @@
#include "AudioCommon.h" #include "AudioCommon.h"
#include <stdio.h> #include <stdio.h>
// TODO: Get rid of this file.
#define PROFILE 0 #define PROFILE 0
u16 Memory_Read_U16(u32 _uAddress); // For PB address detection u16 LLEMemory_Read_U16(u32 _uAddress); // For PB address detection
u32 Memory_Read_U32(u32 _uAddress); u32 LLEMemory_Read_U32(u32 _uAddress);
void* Memory_Get_Pointer(u32 _uAddress); void* LLEMemory_Get_Pointer(u32 _uAddress);
#if PROFILE #if PROFILE
void ProfilerDump(u64 _count); void ProfilerDump(u64 _count);

View File

@ -19,12 +19,12 @@
#include <stdlib.h> #include <stdlib.h>
#include "Common.h" #include "Common.h"
#include "Globals.h" #include "DSPLLEGlobals.h"
#include "FileUtil.h" #include "FileUtil.h"
#include "DSPCore.h" #include "DSPCore.h"
#include "DSPCodeUtil.h" #include "DSPCodeUtil.h"
#include "Tools.h" #include "DSPLLETools.h"
#include "disassemble.h" #include "disassemble.h"
#include "DSPInterpreter.h" #include "DSPInterpreter.h"

View File

@ -20,7 +20,6 @@
#include "Common.h" #include "Common.h"
#include "SymbolDB.h" #include "SymbolDB.h"
#include "AudioCommon.h"
#include <stdio.h> #include <stdio.h>

View File

@ -53,7 +53,7 @@ namespace HW
SerialInterface::Init(); SerialInterface::Init();
ProcessorInterface::Init(); ProcessorInterface::Init();
Memory::Init(); Memory::Init();
DSP::Init(); DSP::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE);
DVDInterface::Init(); DVDInterface::Init();
GPFifo::Init(); GPFifo::Init();
ExpansionInterface::Init(); ExpansionInterface::Init();

View File

@ -71,6 +71,7 @@ IPC_HLE_PERIOD: For the Wiimote this is the call schedule:
#include "../CoreTiming.h" #include "../CoreTiming.h"
#include "../ConfigManager.h" #include "../ConfigManager.h"
#include "../IPC_HLE/WII_IPC_HLE.h" #include "../IPC_HLE/WII_IPC_HLE.h"
#include "../PluginDSP.h"
#include "Thread.h" #include "Thread.h"
#include "Timer.h" #include "Timer.h"
@ -241,16 +242,11 @@ void PatchEngineCallback(u64 userdata, int cyclesLate)
void Init() void Init()
{ {
PLUGIN_INFO DSPType;
(*CPluginManager::GetInstance().GetDSP()).GetInfo(DSPType);
std::string DSPName(DSPType.Name);
bool UsingDSPLLE = (DSPName.find("LLE") != std::string::npos) || (DSPName.find("lle") != std::string::npos);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii)
{ {
CPU_CORE_CLOCK = 729000000u; CPU_CORE_CLOCK = 729000000u;
if (!UsingDSPLLE) if (!DSP::GetPlugin()->IsLLE())
DSP_PERIOD = (int)(GetTicksPerSecond() * 0.003f); DSP_PERIOD = (int)(GetTicksPerSecond() * 0.003f);
// AyuanX: TO BE TWEAKED // AyuanX: TO BE TWEAKED
@ -266,11 +262,11 @@ void Init()
{ {
CPU_CORE_CLOCK = 486000000u; CPU_CORE_CLOCK = 486000000u;
if (!UsingDSPLLE) if (!DSP::GetPlugin()->IsLLE())
DSP_PERIOD = (int)(GetTicksPerSecond() * 0.005f); DSP_PERIOD = (int)(GetTicksPerSecond() * 0.005f);
} }
if (UsingDSPLLE) if (DSP::GetPlugin()->IsLLE())
DSP_PERIOD = 12000; // TO BE TWEAKED DSP_PERIOD = 12000; // TO BE TWEAKED
// This is the biggest question mark. // This is the biggest question mark.

View File

@ -28,10 +28,12 @@
#include "State.h" #include "State.h"
#include "ConfigManager.h" #include "ConfigManager.h"
#include "PluginManager.h" #include "PluginManager.h"
#include "HW/DSP.h"
#include "HW/Memmap.h" #include "HW/Memmap.h"
#include "Host.h" #include "Host.h"
#include "PowerPC/PowerPC.h" #include "PowerPC/PowerPC.h"
#include "CoreTiming.h" #include "CoreTiming.h"
#include "PluginDSP.h"
extern "C" { extern "C" {
#include "lua.h" #include "lua.h"
@ -2956,8 +2958,7 @@ DEFINE_LUA_FUNCTION(movie_close, "")
DEFINE_LUA_FUNCTION(sound_clear, "") DEFINE_LUA_FUNCTION(sound_clear, "")
{ {
if(CPluginManager::GetInstance().GetDSP()) DSP::GetPlugin()->DSP_ClearAudioBuffer(false);
CPluginManager::GetInstance().GetDSP()->DSP_ClearAudioBuffer();
return 0; return 0;
} }

View File

@ -130,13 +130,13 @@ bool IsUsingPad(int controller)
switch (controller) switch (controller)
{ {
case 0: case 0:
return g_numPads & 0x01; return (g_numPads & 0x01) != 0;
case 1: case 1:
return g_numPads & 0x02; return (g_numPads & 0x02) != 0;
case 2: case 2:
return g_numPads & 0x04; return (g_numPads & 0x04) != 0;
case 3: case 3:
return g_numPads & 0x08; return (g_numPads & 0x08) != 0;
default: default:
return false; return false;
} }

View File

@ -15,20 +15,24 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#ifndef _PLUGIN_DSP_HLE_CONFIG_H #include "PluginDSP.h"
#define _PLUGIN_DSP_HLE_CONFIG_H
#include <string> #include "HW/DSPLLE/DSPLLE.h"
#include "HW/DSPHLE/DSPHLE.h"
struct CConfig PluginDSP *CreateDSPPlugin(bool HLE)
{ {
bool m_EnableHLEAudio; if (HLE)
{
void Load(); DSPHLE_LoadConfig();
void Save(); return new DSPHLE();
}; }
else
extern CConfig g_Config; {
DSPLLE_LoadConfig();
#endif // _PLUGIN_DSP_HLE_CONFIG_H return new DSPLLE();
}
}
PluginDSP::PluginDSP() {}
PluginDSP::~PluginDSP() {}

View File

@ -0,0 +1,60 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _PLUGINDSP_H_
#define _PLUGINDSP_H_
#include "Plugin.h" // TODO: Only here for EmuStateChange
#include "ChunkFile.h"
class PluginDSP
{
public:
PluginDSP();
~PluginDSP();
virtual bool IsLLE() = 0;
virtual void Initialize(void *hWnd, bool bWii, bool bDSPThread) = 0;
virtual void Shutdown() = 0;
/*
GUI
virtual void Config(void *_hwnd) = 0;
virtual void About(void *_hwnd) = 0;
virtual void *Debug(void *Parent, bool Show) = 0;
*/
virtual void DoState(PointerWrap &p) = 0;
virtual void EmuStateChange(PLUGIN_EMUSTATE newState) = 0;
virtual void DSP_WriteMailBoxHigh(bool _CPUMailbox, unsigned short) = 0;
virtual void DSP_WriteMailBoxLow(bool _CPUMailbox, unsigned short) = 0;
virtual unsigned short DSP_ReadMailBoxHigh(bool _CPUMailbox) = 0;
virtual unsigned short DSP_ReadMailBoxLow(bool _CPUMailbox) = 0;
virtual unsigned short DSP_ReadControlRegister() = 0;
virtual unsigned short DSP_WriteControlRegister(unsigned short) = 0;
virtual void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples) = 0;
virtual void DSP_Update(int cycles) = 0;
virtual void DSP_StopSoundStream() = 0;
virtual void DSP_ClearAudioBuffer(bool mute) = 0;
};
PluginDSP *CreateDSPPlugin(bool LLE);
#endif // _PLUGINDSP_H_

View File

@ -70,7 +70,6 @@ CPluginManager::CPluginManager()
// Set initial values to NULL. // Set initial values to NULL.
m_video = NULL; m_video = NULL;
m_dsp = NULL;
} }
// This will call FreeLibrary() for all plugins // This will call FreeLibrary() for all plugins
@ -79,7 +78,6 @@ CPluginManager::~CPluginManager()
INFO_LOG(CONSOLE, "Delete CPluginManager\n"); INFO_LOG(CONSOLE, "Delete CPluginManager\n");
delete m_PluginGlobals; delete m_PluginGlobals;
delete m_dsp;
delete m_video; delete m_video;
} }
@ -104,27 +102,9 @@ bool CPluginManager::InitPlugins()
} }
INFO_LOG(CONSOLE, "After GetVideo\n"); INFO_LOG(CONSOLE, "After GetVideo\n");
if (!GetDSP()) {
PanicAlertT("Can't init DSP Plugin");
return false;
}
return true; return true;
} }
// FreeLibrary() after ShutDown() is disabled for some plugins. See the comment in the file description
// for an explanation about the current LoadLibrary() and FreeLibrary() behavior.
void CPluginManager::ShutdownPlugins()
{
if (m_dsp)
{
m_dsp->Shutdown();
FreeDSP();
NOTICE_LOG(CONSOLE, "%s", Core::StopMessage(false, "Audio shutdown").c_str());
}
}
void CPluginManager::ShutdownVideoPlugin() void CPluginManager::ShutdownVideoPlugin()
{ {
if (m_video) if (m_video)
@ -216,10 +196,6 @@ void *CPluginManager::LoadPlugin(const char *_rFilename)
plugin = new Common::PluginVideo(_rFilename); plugin = new Common::PluginVideo(_rFilename);
break; break;
case PLUGIN_TYPE_DSP:
plugin = new Common::PluginDSP(_rFilename);
break;
default: default:
PanicAlertT("Trying to load unsupported type %d", type); PanicAlertT("Trying to load unsupported type %d", type);
return NULL; return NULL;
@ -286,28 +262,6 @@ void CPluginManager::ScanForPlugins()
} }
} }
/* Create or return the already created plugin pointers. This will be called
often for the DSP from the DSP files.
We don't need to check if [Plugin]->IsValid() here because it will not be set by LoadPlugin()
if it's not valid.
*/
Common::PluginDSP *CPluginManager::GetDSP()
{
if (m_dsp != NULL)
{
if (m_dsp->GetFilename() == m_params->m_strDSPPlugin)
return m_dsp;
else
FreeDSP();
}
// Else load a new plugin
m_dsp = (Common::PluginDSP*)LoadPlugin(m_params->m_strDSPPlugin.c_str());
return m_dsp;
}
Common::PluginVideo *CPluginManager::GetVideo() Common::PluginVideo *CPluginManager::GetVideo()
{ {
/* We don't need to check if m_video->IsValid() here, because m_video will not be set by LoadPlugin() /* We don't need to check if m_video->IsValid() here, because m_video will not be set by LoadPlugin()
@ -331,21 +285,11 @@ void CPluginManager::FreeVideo()
m_video = NULL; m_video = NULL;
} }
void CPluginManager::FreeDSP()
{
WARN_LOG(CONSOLE, "%s", Core::StopMessage(false, "Will unload audio DLL").c_str());
delete m_dsp;
m_dsp = NULL;
}
void CPluginManager::EmuStateChange(PLUGIN_EMUSTATE newState) void CPluginManager::EmuStateChange(PLUGIN_EMUSTATE newState)
{ {
GetVideo()->EmuStateChange(newState); GetVideo()->EmuStateChange(newState);
GetDSP()->EmuStateChange(newState);
} }
// Call DLL functions // Call DLL functions
// ------------ // ------------
@ -365,11 +309,6 @@ void CPluginManager::OpenConfig(void* _Parent, const char *_rFilename, PLUGIN_TY
GetVideo()->Config(_Parent); GetVideo()->Config(_Parent);
break; break;
case PLUGIN_TYPE_DSP:
if (GetDSP() != NULL)
GetDSP()->Config(_Parent);
break;
default: default:
PanicAlertT("Type %d config not supported in plugin %s", Type, _rFilename); PanicAlertT("Type %d config not supported in plugin %s", Type, _rFilename);
break; break;
@ -379,7 +318,7 @@ void CPluginManager::OpenConfig(void* _Parent, const char *_rFilename, PLUGIN_TY
// Open debugging window. Type = Video or DSP. Show = Show or hide window. // Open debugging window. Type = Video or DSP. Show = Show or hide window.
void *CPluginManager::OpenDebug(void* _Parent, const char *_rFilename, PLUGIN_TYPE Type, bool Show) void *CPluginManager::OpenDebug(void* _Parent, const char *_rFilename, PLUGIN_TYPE Type, bool Show)
{ {
if (! File::Exists((File::GetPluginsDirectory() + _rFilename).c_str())) if (!File::Exists((File::GetPluginsDirectory() + _rFilename).c_str()))
{ {
PanicAlert("Can't find plugin %s", _rFilename); PanicAlert("Can't find plugin %s", _rFilename);
return NULL; return NULL;
@ -391,10 +330,6 @@ void *CPluginManager::OpenDebug(void* _Parent, const char *_rFilename, PLUGIN_TY
return GetVideo()->Debug(_Parent, Show); return GetVideo()->Debug(_Parent, Show);
break; break;
case PLUGIN_TYPE_DSP:
return GetDSP()->Debug(_Parent, Show);
break;
default: default:
PanicAlert("Type %d debug not supported in plugin %s", Type, _rFilename); PanicAlert("Type %d debug not supported in plugin %s", Type, _rFilename);
return NULL; return NULL;

View File

@ -19,7 +19,6 @@
#define __PLUGIN_MANAGER_H_ #define __PLUGIN_MANAGER_H_
#include "Plugin.h" #include "Plugin.h"
#include "PluginDSP.h"
#include "PluginVideo.h" #include "PluginVideo.h"
#include "CoreParameter.h" #include "CoreParameter.h"
@ -49,15 +48,12 @@ public:
static void Shutdown(); static void Shutdown();
Common::PluginVideo *GetVideo(); Common::PluginVideo *GetVideo();
Common::PluginDSP *GetDSP();
void FreeVideo(); void FreeVideo();
void FreeDSP();
void EmuStateChange(PLUGIN_EMUSTATE newState); void EmuStateChange(PLUGIN_EMUSTATE newState);
bool InitPlugins(); bool InitPlugins();
void ShutdownPlugins();
void ShutdownVideoPlugin(); void ShutdownVideoPlugin();
void ScanForPlugins(); void ScanForPlugins();
void OpenConfig(void* _Parent, const char *_rFilename, PLUGIN_TYPE Type); void OpenConfig(void* _Parent, const char *_rFilename, PLUGIN_TYPE Type);
@ -71,7 +67,6 @@ private:
CPluginInfos m_PluginInfos; CPluginInfos m_PluginInfos;
PLUGIN_GLOBALS *m_PluginGlobals; PLUGIN_GLOBALS *m_PluginGlobals;
Common::PluginVideo *m_video; Common::PluginVideo *m_video;
Common::PluginDSP *m_dsp;
SCoreStartupParameter * m_params; SCoreStartupParameter * m_params;
CPluginManager(); CPluginManager();

View File

@ -18,6 +18,7 @@ files = [
"MemTools.cpp", "MemTools.cpp",
"PatchEngine.cpp", "PatchEngine.cpp",
"PluginManager.cpp", "PluginManager.cpp",
"PluginDSP.cpp",
"LuaInterface.cpp", "LuaInterface.cpp",
"State.cpp", "State.cpp",
"Tracer.cpp", "Tracer.cpp",
@ -37,6 +38,27 @@ files = [
"HW/AudioInterface.cpp", "HW/AudioInterface.cpp",
"HW/CPU.cpp", "HW/CPU.cpp",
"HW/DSP.cpp", "HW/DSP.cpp",
"HW/DSPHLE/UCodes/UCode_AX.cpp",
"HW/DSPHLE/UCodes/UCode_AXWii.cpp",
"HW/DSPHLE/UCodes/UCode_CARD.cpp",
"HW/DSPHLE/UCodes/UCode_InitAudioSystem.cpp",
"HW/DSPHLE/UCodes/UCode_ROM.cpp",
"HW/DSPHLE/UCodes/UCodes.cpp",
"HW/DSPHLE/UCodes/UCode_GBA.cpp",
"HW/DSPHLE/UCodes/UCode_Zelda.cpp",
"HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp",
"HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp",
"HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp",)
"HW/DSPHLE/DSPHandler.cpp",
"HW/DSPHLE/HLEMixer.cpp",
"HW/DSPHLE/MailHandler.cpp",
"HW/DSPHLE/DSPHLE.cpp",
"HW/DSPLLE/DSPDebugInterface.cpp",
"HW/DSPLLE/DSPHost.cpp",
"HW/DSPLLE/DSPSymbols.cpp",
"HW/DSPLLE/DSPLLEGlobals.cpp",
"HW/DSPLLE/DSPLLE.cpp",
"HW/DSPLLE/DSPLLETools.cpp",
"HW/DVDInterface.cpp", "HW/DVDInterface.cpp",
"HW/EXI.cpp", "HW/EXI.cpp",
"HW/EXI_Channel.cpp", "HW/EXI_Channel.cpp",

View File

@ -25,6 +25,7 @@
#include "CoreTiming.h" #include "CoreTiming.h"
#include "OnFrame.h" #include "OnFrame.h"
#include "HW/Wiimote.h" #include "HW/Wiimote.h"
#include "HW/DSP.h"
#include "HW/HW.h" #include "HW/HW.h"
#include "PowerPC/PowerPC.h" #include "PowerPC/PowerPC.h"
#include "PowerPC/JitCommon/JitBase.h" #include "PowerPC/JitCommon/JitBase.h"
@ -89,7 +90,7 @@ void DoState(PointerWrap &p)
// Begin with video plugin, so that it gets a chance to clear it's caches and writeback modified things to RAM // Begin with video plugin, so that it gets a chance to clear it's caches and writeback modified things to RAM
CPluginManager &pm = CPluginManager::GetInstance(); CPluginManager &pm = CPluginManager::GetInstance();
pm.GetVideo()->DoState(p.GetPPtr(), p.GetMode()); pm.GetVideo()->DoState(p.GetPPtr(), p.GetMode());
pm.GetDSP()->DoState(p.GetPPtr(), p.GetMode());
if (Core::g_CoreStartupParameter.bWii) if (Core::g_CoreStartupParameter.bWii)
Wiimote::DoState(p.GetPPtr(), p.GetMode()); Wiimote::DoState(p.GetPPtr(), p.GetMode());
PowerPC::DoState(p); PowerPC::DoState(p);

View File

@ -3,6 +3,10 @@ set(SRCS Src/BreakpointDlg.cpp
Src/BreakpointWindow.cpp Src/BreakpointWindow.cpp
Src/CodeWindow.cpp Src/CodeWindow.cpp
Src/CodeWindowFunctions.cpp Src/CodeWindowFunctions.cpp
Src/DSPDebugWindow.cpp
Src/DSPDebugWindow.h
Src/DSPRegisterView.cpp
Src/DSPRegisterView.h
Src/JitWindow.cpp Src/JitWindow.cpp
Src/MemoryCheckDlg.cpp Src/MemoryCheckDlg.cpp
Src/MemoryWindow.cpp Src/MemoryWindow.cpp

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="Debugger" Name="Debugger"
ProjectGUID="{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}" ProjectGUID="{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}"
RootNamespace="DebuggerWX" RootNamespace="DebuggerWX"
@ -46,7 +46,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -113,7 +113,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true" MinimalRebuild="true"
ExceptionHandling="2" ExceptionHandling="2"
@ -179,7 +179,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="false" BufferSecurityCheck="false"
@ -246,7 +246,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions="/MP" AdditionalOptions="/MP"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="false" BufferSecurityCheck="false"
@ -311,7 +311,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;DEBUGFAST" PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;DEBUGFAST"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="0" BasicRuntimeChecks="0"
@ -379,7 +379,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
WholeProgramOptimization="false" WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\InputCommon\Src;..\DSPCore\Src;..\..\PluginSpecs;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\DebuggerUICommon\Src"
PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;DEBUGFAST" PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;DEBUGFAST"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -732,6 +732,10 @@
RelativePath=".\src\BreakpointWindow.h" RelativePath=".\src\BreakpointWindow.h"
> >
</File> </File>
<File
RelativePath=".\CMakeLists.txt"
>
</File>
<File <File
RelativePath=".\src\CodeWindow.cpp" RelativePath=".\src\CodeWindow.cpp"
> >
@ -784,6 +788,22 @@
RelativePath=".\Src\CodeWindowFunctions.cpp" RelativePath=".\Src\CodeWindowFunctions.cpp"
> >
</File> </File>
<File
RelativePath=".\Src\DSPDebugWindow.cpp"
>
</File>
<File
RelativePath=".\Src\DSPDebugWindow.h"
>
</File>
<File
RelativePath=".\Src\DSPRegisterView.cpp"
>
</File>
<File
RelativePath=".\Src\DSPRegisterView.h"
>
</File>
<File <File
RelativePath=".\src\JitWindow.cpp" RelativePath=".\src\JitWindow.cpp"
> >

View File

@ -90,6 +90,7 @@ class CCodeWindow
void ToggleBreakPointWindow(bool bShow); void ToggleBreakPointWindow(bool bShow);
void ToggleMemoryWindow(bool bShow); void ToggleMemoryWindow(bool bShow);
void ToggleJitWindow(bool bShow); void ToggleJitWindow(bool bShow);
void ToggleSoundWindow(bool bShow);
void ToggleDLLWindow(int Id, bool bShow); void ToggleDLLWindow(int Id, bool bShow);
void OnChangeFont(wxCommandEvent& event); void OnChangeFont(wxCommandEvent& event);

View File

@ -512,6 +512,27 @@ void CCodeWindow::ToggleJitWindow(bool bShow)
} }
} }
void CCodeWindow::ToggleSoundWindow(bool bShow)
{
GetMenuBar()->FindItem(IDM_SOUNDWINDOW)->Check(bShow);
if (bShow)
{
/* TODO: Resurrect DSP debugger window.
if (!m_JitWindow)
m_JitWindow = new CJitWindow(Parent, IDM_SOUNDWINDOW);
Parent->DoAddPage(m_JitWindow,
iNbAffiliation[IDM_SOUNDWINDOW - IDM_LOGWINDOW],
Parent->bFloatWindow[IDM_SOUNDWINDOW - IDM_LOGWINDOW]);
*/
}
else // Close
{
//Parent->DoRemovePage(m_JitWindow, false);
// m_JitWindow = NULL;
}
}
// Notice: This windows docking will produce several wx debugging messages for plugin // Notice: This windows docking will produce several wx debugging messages for plugin
// windows when ::GetWindowRect and ::DestroyWindow fails in wxApp::CleanUp() for the // windows when ::GetWindowRect and ::DestroyWindow fails in wxApp::CleanUp() for the
// plugin. // plugin.
@ -525,10 +546,6 @@ void CCodeWindow::ToggleDLLWindow(int Id, bool bShow)
switch(Id) switch(Id)
{ {
case IDM_SOUNDWINDOW:
DLLName = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin.c_str();
PluginType = PLUGIN_TYPE_DSP;
break;
case IDM_VIDEOWINDOW: case IDM_VIDEOWINDOW:
DLLName = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin.c_str(); DLLName = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin.c_str();
PluginType = PLUGIN_TYPE_VIDEO; PluginType = PLUGIN_TYPE_VIDEO;

View File

@ -22,11 +22,12 @@
#include <wx/artprov.h> #include <wx/artprov.h>
#include "StringUtil.h"
#include "DSPDebugWindow.h" #include "DSPDebugWindow.h"
#include "DSPRegisterView.h" #include "DSPRegisterView.h"
#include "CodeView.h" #include "CodeView.h"
#include "MemoryView.h" #include "MemoryView.h"
#include "../DSPSymbols.h" #include "HW\DSPLLE\DSPSymbols.h"
// Define these here to avoid undefined symbols while still saving functionality // Define these here to avoid undefined symbols while still saving functionality
void Host_NotifyMapLoaded() {} void Host_NotifyMapLoaded() {}

View File

@ -38,7 +38,7 @@
#include "disassemble.h" #include "disassemble.h"
#include "DSPInterpreter.h" #include "DSPInterpreter.h"
#include "DSPMemoryMap.h" #include "DSPMemoryMap.h"
#include "../DSPDebugInterface.h" #include "HW/DSPLLE/DSPDebugInterface.h"
class DSPRegisterView; class DSPRegisterView;
class CCodeView; class CCodeView;

View File

@ -11,6 +11,10 @@ files = [
"BreakpointWindow.cpp", "BreakpointWindow.cpp",
"CodeWindow.cpp", "CodeWindow.cpp",
"CodeWindowFunctions.cpp", "CodeWindowFunctions.cpp",
"Src/DSPDebugWindow.cpp",
"Src/DSPDebugWindow.h",
"Src/DSPRegisterView.cpp",
"Src/DSPRegisterView.h",
"MemoryCheckDlg.cpp", "MemoryCheckDlg.cpp",
"MemoryWindow.cpp", "MemoryWindow.cpp",
"RegisterWindow.cpp", "RegisterWindow.cpp",

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="Dolphin" Name="Dolphin"
ProjectGUID="{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}" ProjectGUID="{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}"
RootNamespace="DolphinWX" RootNamespace="DolphinWX"
@ -56,7 +56,7 @@
Optimization="3" Optimization="3"
InlineFunctionExpansion="0" InlineFunctionExpansion="0"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
StringPooling="false" StringPooling="false"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -90,11 +90,11 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/$(PlatformName)/Dolphin.exe" OutputFile="../../../Binary/$(PlatformName)/Dolphin.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win32/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreAllDefaultLibraries="false" IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
@ -175,7 +175,7 @@
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
OmitFramePointers="false" OmitFramePointers="false"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -208,11 +208,11 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/$(PlatformName)/Dolphin.exe" OutputFile="../../../Binary/$(PlatformName)/Dolphin.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win64/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreAllDefaultLibraries="false" IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
@ -287,7 +287,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0" PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -321,11 +321,11 @@
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalOptions="/TLBID:1" AdditionalOptions="/TLBID:1"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28ud.lib wxmsw28ud_core.lib wxmsw28ud_adv.lib wxmsw28ud_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28ud.lib wxmsw28ud_core.lib wxmsw28ud_adv.lib wxmsw28ud_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/Win32/DolphinD.exe" OutputFile="../../../Binary/Win32/DolphinD.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win32/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb" ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
@ -398,7 +398,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true" MinimalRebuild="true"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -432,11 +432,11 @@
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalOptions="/TLBID:1" AdditionalOptions="/TLBID:1"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28ud.lib wxmsw28ud_core.lib wxmsw28ud_adv.lib wxmsw28ud_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28ud.lib wxmsw28ud_core.lib wxmsw28ud_adv.lib wxmsw28ud_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/x64/DolphinD.exe" OutputFile="../../../Binary/x64/DolphinD.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win64/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb" ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
@ -511,7 +511,7 @@
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="DEBUGFAST;WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" PreprocessorDefinitions="DEBUGFAST;WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -546,11 +546,11 @@
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalOptions="/NODEFAULTLIB:msvcrt.lib&#x0D;&#x0A;/NODEFAULTLIB:libcmtd.lib" AdditionalOptions="/NODEFAULTLIB:msvcrt.lib&#x0D;&#x0A;/NODEFAULTLIB:libcmtd.lib"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/Win32/DolphinDF.exe" OutputFile="../../../Binary/Win32/DolphinDF.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win32/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb" ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
@ -627,7 +627,7 @@
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include" AdditionalIncludeDirectories="..\Common\Src;..\Core\Src;..\AudioCommon\Src;..\InputCommon\Src;..\DebuggerWX\src;..\DebuggerUICommon\Src;..\DiscIO\Src;..\AudioCommon\Src..\InputCommon\Src;..\..\PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\..\..\Externals\SFML\include;..\..\..\Externals\CLRun\include"
PreprocessorDefinitions="DEBUGFAST;WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS" PreprocessorDefinitions="DEBUGFAST;WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -659,11 +659,11 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib" AdditionalDependencies="Iphlpapi.lib comctl32.lib rpcrt4.lib winmm.lib wxbase28u.lib wxmsw28u_core.lib wxmsw28u_adv.lib wxmsw28u_aui.lib OpenAL32.lib"
OutputFile="../../../Binary/x64/DolphinDF.exe" OutputFile="../../../Binary/x64/DolphinDF.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;&quot;../../../Externals/OpenAL/$(PlatformName)/&quot;;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;" AdditionalLibraryDirectories="&quot;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)&quot;;../../../Externals/OpenAL/Win64/;&quot;..\..\..\Externals\SDL\$(PlatformName)&quot;"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true" GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb" ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
@ -840,6 +840,22 @@
RelativePath=".\src\ConfigMain.h" RelativePath=".\src\ConfigMain.h"
> >
</File> </File>
<File
RelativePath=".\Src\DSPHLEConfigDlg.cpp"
>
</File>
<File
RelativePath=".\Src\DSPHLEConfigDlg.h"
>
</File>
<File
RelativePath=".\Src\DSPLLEConfigDlg.cpp"
>
</File>
<File
RelativePath=".\Src\DSPLLEConfigDlg.h"
>
</File>
<File <File
RelativePath=".\src\Frame.cpp" RelativePath=".\src\Frame.cpp"
> >

View File

@ -17,6 +17,7 @@
#include <string> // System #include <string> // System
#include <vector> #include <vector>
#include <wx/spinbutt.h>
#include "Common.h" #include "Common.h"
#include "CommonPaths.h" #include "CommonPaths.h"
@ -24,11 +25,15 @@
#include "Core.h" // Core #include "Core.h" // Core
#include "HW/EXI.h" #include "HW/EXI.h"
#include "HW/SI.h" #include "HW/SI.h"
#include "HW/DSPHLE/DSPHLE.h"
#include "HW/DSPLLE/DSPLLE.h"
#include "Globals.h" // Local #include "Globals.h" // Local
#include "ConfigMain.h" #include "ConfigMain.h"
#include "PluginManager.h" #include "PluginManager.h"
#include "ConfigManager.h" #include "ConfigManager.h"
#include "DSPHLEConfigDlg.h"
#include "DSPLLEConfigDlg.h"
#include "SysConf.h" #include "SysConf.h"
#include "Frame.h" #include "Frame.h"
#include "HotkeyDlg.h" #include "HotkeyDlg.h"
@ -118,6 +123,9 @@ EVT_CHECKBOX(ID_DISPLAY_RENDERTOMAIN, CConfigMain::DisplaySettingsChanged)
EVT_CHECKBOX(ID_DISPLAY_PROGSCAN, CConfigMain::DisplaySettingsChanged) EVT_CHECKBOX(ID_DISPLAY_PROGSCAN, CConfigMain::DisplaySettingsChanged)
EVT_CHECKBOX(ID_DISPLAY_NTSCJ, CConfigMain::DisplaySettingsChanged) EVT_CHECKBOX(ID_DISPLAY_NTSCJ, CConfigMain::DisplaySettingsChanged)
EVT_CHECKBOX(ID_AUDIO_DSP_HLE, CConfigMain::AudioSettingsChanged)
EVT_BUTTON(ID_AUDIO_CONFIG, CConfigMain::OnDSPConfig)
EVT_CHECKBOX(ID_INTERFACE_CONFIRMSTOP, CConfigMain::DisplaySettingsChanged) EVT_CHECKBOX(ID_INTERFACE_CONFIRMSTOP, CConfigMain::DisplaySettingsChanged)
EVT_CHECKBOX(ID_INTERFACE_USEPANICHANDLERS, CConfigMain::DisplaySettingsChanged) EVT_CHECKBOX(ID_INTERFACE_USEPANICHANDLERS, CConfigMain::DisplaySettingsChanged)
EVT_RADIOBOX(ID_INTERFACE_THEME, CConfigMain::DisplaySettingsChanged) EVT_RADIOBOX(ID_INTERFACE_THEME, CConfigMain::DisplaySettingsChanged)
@ -164,9 +172,6 @@ EVT_FILEPICKER_CHANGED(ID_APPLOADERPATH, CConfigMain::ApploaderPathChanged)
EVT_CHOICE(ID_GRAPHIC_CB, CConfigMain::OnSelectionChanged) EVT_CHOICE(ID_GRAPHIC_CB, CConfigMain::OnSelectionChanged)
EVT_BUTTON(ID_GRAPHIC_CONFIG, CConfigMain::OnConfig) EVT_BUTTON(ID_GRAPHIC_CONFIG, CConfigMain::OnConfig)
EVT_CHOICE(ID_DSP_CB, CConfigMain::OnSelectionChanged)
EVT_BUTTON(ID_DSP_CONFIG, CConfigMain::OnConfig)
END_EVENT_TABLE() END_EVENT_TABLE()
CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style) CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style)
@ -211,6 +216,9 @@ void CConfigMain::UpdateGUI()
ProgressiveScan->Disable(); ProgressiveScan->Disable();
NTSCJ->Disable(); NTSCJ->Disable();
// Disable stuff on AudioPage
DSP_HLE->Disable();
DSPConfig->Disable();
// Disable stuff on GamecubePage // Disable stuff on GamecubePage
GCSystemLang->Disable(); GCSystemLang->Disable();
@ -232,7 +240,6 @@ void CConfigMain::UpdateGUI()
// Disable stuff on PluginsPage // Disable stuff on PluginsPage
GraphicSelection->Disable(); GraphicSelection->Disable();
DSPSelection->Disable();
} }
} }
@ -349,12 +356,17 @@ void CConfigMain::InitializeGUIValues()
UsePanicHandlers->SetValue(startup_params.bUsePanicHandlers); UsePanicHandlers->SetValue(startup_params.bUsePanicHandlers);
Theme->SetSelection(startup_params.iTheme); Theme->SetSelection(startup_params.iTheme);
// need redesign // need redesign
for (unsigned int i = 0; i < sizeof(langIds) / sizeof(wxLanguage); i++) for (unsigned int i = 0; i < sizeof(langIds) / sizeof(wxLanguage); i++) {
if (langIds[i] == SConfig::GetInstance().m_InterfaceLanguage) if (langIds[i] == SConfig::GetInstance().m_InterfaceLanguage)
{ {
InterfaceLang->SetSelection(i); InterfaceLang->SetSelection(i);
break; break;
} }
}
// Audio
DSP_HLE->SetValue(startup_params.bDSPHLE);
// Gamecube - IPL // Gamecube - IPL
GCSystemLang->SetSelection(startup_params.SelectedLanguage); GCSystemLang->SetSelection(startup_params.SelectedLanguage);
@ -389,7 +401,6 @@ void CConfigMain::InitializeGUIValues()
// Plugins // Plugins
FillChoiceBox(GraphicSelection, PLUGIN_TYPE_VIDEO, startup_params.m_strVideoPlugin); FillChoiceBox(GraphicSelection, PLUGIN_TYPE_VIDEO, startup_params.m_strVideoPlugin);
FillChoiceBox(DSPSelection, PLUGIN_TYPE_DSP, startup_params.m_strDSPPlugin);
} }
void CConfigMain::InitializeGUITooltips() void CConfigMain::InitializeGUITooltips()
@ -424,11 +435,9 @@ void CConfigMain::InitializeGUITooltips()
InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart.")); InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart."));
// Gamecube - Devices // Gamecube - Devices
GCEXIDevice[2]->SetToolTip(_("Serial Port 1 - This is the port which devices such as the net adapter use")); GCEXIDevice[2]->SetToolTip(_("Serial Port 1 - This is the port which devices such as the net adapter use"));
// Wii - Devices // Wii - Devices
WiiKeyboard->SetToolTip(_("This could cause slow down in Wii Menu and some games.")); WiiKeyboard->SetToolTip(_("This could cause slow down in Wii Menu and some games."));
} }
@ -441,6 +450,7 @@ void CConfigMain::CreateGUIControls()
Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize); Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize);
GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE, wxDefaultPosition, wxDefaultSize); GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE, wxDefaultPosition, wxDefaultSize);
DisplayPage = new wxPanel(Notebook, ID_DISPLAYPAGE, wxDefaultPosition, wxDefaultSize); DisplayPage = new wxPanel(Notebook, ID_DISPLAYPAGE, wxDefaultPosition, wxDefaultSize);
AudioPage = new wxPanel(Notebook, ID_AUDIOPAGE, wxDefaultPosition, wxDefaultSize);
GamecubePage = new wxPanel(Notebook, ID_GAMECUBEPAGE, wxDefaultPosition, wxDefaultSize); GamecubePage = new wxPanel(Notebook, ID_GAMECUBEPAGE, wxDefaultPosition, wxDefaultSize);
WiiPage = new wxPanel(Notebook, ID_WIIPAGE, wxDefaultPosition, wxDefaultSize); WiiPage = new wxPanel(Notebook, ID_WIIPAGE, wxDefaultPosition, wxDefaultSize);
PathsPage = new wxPanel(Notebook, ID_PATHSPAGE, wxDefaultPosition, wxDefaultSize); PathsPage = new wxPanel(Notebook, ID_PATHSPAGE, wxDefaultPosition, wxDefaultSize);
@ -448,6 +458,7 @@ void CConfigMain::CreateGUIControls()
Notebook->AddPage(GeneralPage, _("General")); Notebook->AddPage(GeneralPage, _("General"));
Notebook->AddPage(DisplayPage, _("Display")); Notebook->AddPage(DisplayPage, _("Display"));
Notebook->AddPage(AudioPage, _("Audio"));
Notebook->AddPage(GamecubePage, _("Gamecube")); Notebook->AddPage(GamecubePage, _("Gamecube"));
Notebook->AddPage(WiiPage, _("Wii")); Notebook->AddPage(WiiPage, _("Wii"));
Notebook->AddPage(PathsPage, _("Paths")); Notebook->AddPage(PathsPage, _("Paths"));
@ -513,6 +524,14 @@ void CConfigMain::CreateGUIControls()
ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm On Stop"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm On Stop"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
UsePanicHandlers = new wxCheckBox(DisplayPage, ID_INTERFACE_USEPANICHANDLERS, _("Use Panic Handlers"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); UsePanicHandlers = new wxCheckBox(DisplayPage, ID_INTERFACE_USEPANICHANDLERS, _("Use Panic Handlers"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Audio page
sAudioPage = new wxBoxSizer(wxVERTICAL);
DSP_HLE = new wxCheckBox(AudioPage, ID_AUDIO_DSP_HLE, _("DSP HLE emulation (fast)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
DSPConfig = new wxButton(AudioPage, ID_AUDIO_CONFIG, _("Configure DSP"), wxDefaultPosition, wxDefaultSize);
sAudioPage->Add(DSP_HLE);
sAudioPage->Add(DSPConfig);
AudioPage->SetSizer(sAudioPage);
// Themes - this should really be a wxChoice... // Themes - this should really be a wxChoice...
Theme = new wxRadioBox(DisplayPage, ID_INTERFACE_THEME, _("Theme"), wxDefaultPosition, wxDefaultSize, arrayStringFor_Themes, 1, wxRA_SPECIFY_ROWS); Theme = new wxRadioBox(DisplayPage, ID_INTERFACE_THEME, _("Theme"), wxDefaultPosition, wxDefaultSize, arrayStringFor_Themes, 1, wxRA_SPECIFY_ROWS);
@ -786,21 +805,13 @@ void CConfigMain::CreateGUIControls()
GraphicSelection = new wxChoice(PluginsPage, ID_GRAPHIC_CB, wxDefaultPosition, wxDefaultSize, 0, NULL, 0, wxDefaultValidator); GraphicSelection = new wxChoice(PluginsPage, ID_GRAPHIC_CB, wxDefaultPosition, wxDefaultSize, 0, NULL, 0, wxDefaultValidator);
GraphicConfig = new wxButton(PluginsPage, ID_GRAPHIC_CONFIG, _("Config..."), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); GraphicConfig = new wxButton(PluginsPage, ID_GRAPHIC_CONFIG, _("Config..."), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
sbDSPPlugin = new wxStaticBoxSizer(wxHORIZONTAL, PluginsPage, _("DSP"));
DSPSelection = new wxChoice(PluginsPage, ID_DSP_CB, wxDefaultPosition, wxDefaultSize, 0, NULL, 0, wxDefaultValidator);
DSPConfig = new wxButton(PluginsPage, ID_DSP_CONFIG, _("Config..."), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
// Populate the settings // Populate the settings
sbGraphicsPlugin->Add(GraphicSelection, 1, wxEXPAND|wxALL, 5); sbGraphicsPlugin->Add(GraphicSelection, 1, wxEXPAND|wxALL, 5);
sbGraphicsPlugin->Add(GraphicConfig, 0, wxALL, 5); sbGraphicsPlugin->Add(GraphicConfig, 0, wxALL, 5);
sbDSPPlugin->Add(DSPSelection, 1, wxEXPAND|wxALL, 5);
sbDSPPlugin->Add(DSPConfig, 0, wxALL, 5);
// Populate the Plugins page // Populate the Plugins page
sPluginsPage = new wxBoxSizer(wxVERTICAL); sPluginsPage = new wxBoxSizer(wxVERTICAL);
sPluginsPage->Add(sbGraphicsPlugin, 0, wxEXPAND|wxALL, 5); sPluginsPage->Add(sbGraphicsPlugin, 0, wxEXPAND|wxALL, 5);
sPluginsPage->Add(sbDSPPlugin, 0, wxEXPAND|wxALL, 5);
PluginsPage->SetSizer(sPluginsPage); PluginsPage->SetSizer(sPluginsPage);
@ -947,6 +958,15 @@ void CConfigMain::DisplaySettingsChanged(wxCommandEvent& event)
} }
} }
void CConfigMain::AudioSettingsChanged(wxCommandEvent& event)
{
switch (event.GetId())
{
case ID_AUDIO_DSP_HLE:
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE = DSP_HLE->IsChecked();
break;
}
}
// GC settings // GC settings
// ----------------------- // -----------------------
@ -1122,9 +1142,6 @@ void CConfigMain::WiiSettingsChanged(wxCommandEvent& event)
} }
// Paths settings // Paths settings
// ------------------- // -------------------
void CConfigMain::ISOPathsSelectionChanged(wxCommandEvent& WXUNUSED (event)) void CConfigMain::ISOPathsSelectionChanged(wxCommandEvent& WXUNUSED (event))
@ -1198,8 +1215,6 @@ void CConfigMain::OnSelectionChanged(wxCommandEvent& WXUNUSED (event))
// Update plugin filenames // Update plugin filenames
if (GetFilename(GraphicSelection, SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin)) if (GetFilename(GraphicSelection, SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin))
CPluginManager::GetInstance().FreeVideo(); CPluginManager::GetInstance().FreeVideo();
if (GetFilename(DSPSelection, SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin))
CPluginManager::GetInstance().FreeDSP();
} }
void CConfigMain::OnConfig(wxCommandEvent& event) void CConfigMain::OnConfig(wxCommandEvent& event)
@ -1209,12 +1224,28 @@ void CConfigMain::OnConfig(wxCommandEvent& event)
case ID_GRAPHIC_CONFIG: case ID_GRAPHIC_CONFIG:
CallConfig(GraphicSelection); CallConfig(GraphicSelection);
break; break;
case ID_DSP_CONFIG: }
CallConfig(DSPSelection); }
void CConfigMain::OnDSPConfig(wxCommandEvent& event)
{
switch (event.GetId())
{
case ID_AUDIO_CONFIG:
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE) {
DSPConfigDialogHLE *dlg = new DSPConfigDialogHLE(this);
dlg->ShowModal();
dlg->Destroy();
} else {
DSPConfigDialogLLE *dlg = new DSPConfigDialogLLE(this);
dlg->ShowModal();
dlg->Destroy();
}
break; break;
} }
} }
void CConfigMain::CallConfig(wxChoice* _pChoice) void CConfigMain::CallConfig(wxChoice* _pChoice)
{ {
int Index = _pChoice->GetSelection(); int Index = _pChoice->GetSelection();

View File

@ -20,6 +20,7 @@
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/gbsizer.h> #include <wx/gbsizer.h>
#include <wx/spinbutt.h>
#include <wx/notebook.h> #include <wx/notebook.h>
#include <wx/filepicker.h> #include <wx/filepicker.h>
#include "ConfigManager.h" #include "ConfigManager.h"
@ -43,6 +44,7 @@ public:
void CloseClick(wxCommandEvent& event); void CloseClick(wxCommandEvent& event);
void OnSelectionChanged(wxCommandEvent& event); void OnSelectionChanged(wxCommandEvent& event);
void OnConfig(wxCommandEvent& event); void OnConfig(wxCommandEvent& event);
void OnDSPConfig(wxCommandEvent& event);
bool bRefreshList; bool bRefreshList;
@ -51,6 +53,7 @@ private:
wxPanel* GeneralPage; wxPanel* GeneralPage;
wxPanel* GamecubePage; wxPanel* GamecubePage;
wxPanel* DisplayPage; wxPanel* DisplayPage;
wxPanel* AudioPage;
wxPanel* WiiPage; wxPanel* WiiPage;
wxPanel* PathsPage; wxPanel* PathsPage;
wxPanel* PluginsPage; wxPanel* PluginsPage;
@ -86,6 +89,11 @@ private:
wxCheckBox* ProgressiveScan; wxCheckBox* ProgressiveScan;
wxCheckBox* NTSCJ; wxCheckBox* NTSCJ;
// Audio
wxBoxSizer* sAudioPage; // GC settings
wxCheckBox* DSP_HLE;
wxButton* DSPConfig;
// Interface // Interface
wxCheckBox* ConfirmStop; wxCheckBox* ConfirmStop;
wxCheckBox* UsePanicHandlers; wxCheckBox* UsePanicHandlers;
@ -142,7 +150,6 @@ private:
wxDirPickerCtrl* DVDRoot; wxDirPickerCtrl* DVDRoot;
wxFilePickerCtrl* ApploaderPath; wxFilePickerCtrl* ApploaderPath;
wxBoxSizer* sPluginsPage; // Plugins settings wxBoxSizer* sPluginsPage; // Plugins settings
wxStaticBoxSizer* sbGraphicsPlugin, *sbDSPPlugin; // Graphics, DSP sections wxStaticBoxSizer* sbGraphicsPlugin, *sbDSPPlugin; // Graphics, DSP sections
@ -150,10 +157,6 @@ private:
wxChoice* GraphicSelection; wxChoice* GraphicSelection;
wxButton* GraphicConfig; wxButton* GraphicConfig;
// DSP
wxChoice* DSPSelection;
wxButton* DSPConfig;
wxButton* m_Ok; wxButton* m_Ok;
FILE* pStream; FILE* pStream;
@ -174,6 +177,7 @@ private:
ID_NOTEBOOK = 1000, ID_NOTEBOOK = 1000,
ID_GENERALPAGE, ID_GENERALPAGE,
ID_DISPLAYPAGE, ID_DISPLAYPAGE,
ID_AUDIOPAGE,
ID_GAMECUBEPAGE, ID_GAMECUBEPAGE,
ID_WIIPAGE, ID_WIIPAGE,
ID_PATHSPAGE, ID_PATHSPAGE,
@ -202,6 +206,10 @@ private:
ID_DISPLAY_PROGSCAN, ID_DISPLAY_PROGSCAN,
ID_DISPLAY_NTSCJ, ID_DISPLAY_NTSCJ,
// Audio Settings
ID_AUDIO_DSP_HLE,
ID_AUDIO_CONFIG,
// Interface settings // Interface settings
ID_INTERFACE_CONFIRMSTOP, ID_INTERFACE_CONFIRMSTOP,
ID_INTERFACE_USEPANICHANDLERS, ID_INTERFACE_USEPANICHANDLERS,
@ -269,6 +277,8 @@ private:
void AddResolutions(); void AddResolutions();
void OnSpin(wxSpinEvent& event); void OnSpin(wxSpinEvent& event);
void AudioSettingsChanged(wxCommandEvent& event);
void GCSettingsChanged(wxCommandEvent& event); void GCSettingsChanged(wxCommandEvent& event);
void ChooseMemcardPath(std::string& strMemcard, bool isSlotA); void ChooseMemcardPath(std::string& strMemcard, bool isSlotA);
void ChooseSIDevice(std::string deviceName, int deviceNum); void ChooseSIDevice(std::string deviceName, int deviceNum);

View File

@ -15,12 +15,14 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "Config.h" #include <vector>
#include "ConfigDlg.h" #include <string>
#include "HW/DSPHLE/DSPHLE.h"
#include "DSPHLEConfigDlg.h"
BEGIN_EVENT_TABLE(DSPConfigDialogHLE, wxDialog) BEGIN_EVENT_TABLE(DSPConfigDialogHLE, wxDialog)
EVT_BUTTON(wxID_OK, DSPConfigDialogHLE::SettingsChanged) EVT_BUTTON(wxID_OK, DSPConfigDialogHLE::SettingsChanged)
EVT_CHECKBOX(ID_ENABLE_HLE_AUDIO, DSPConfigDialogHLE::SettingsChanged)
EVT_CHECKBOX(ID_ENABLE_DTK_MUSIC, DSPConfigDialogHLE::SettingsChanged) EVT_CHECKBOX(ID_ENABLE_DTK_MUSIC, DSPConfigDialogHLE::SettingsChanged)
EVT_CHECKBOX(ID_ENABLE_THROTTLE, DSPConfigDialogHLE::SettingsChanged) EVT_CHECKBOX(ID_ENABLE_THROTTLE, DSPConfigDialogHLE::SettingsChanged)
EVT_CHOICE(ID_FREQUENCY, DSPConfigDialogHLE::SettingsChanged) EVT_CHOICE(ID_FREQUENCY, DSPConfigDialogHLE::SettingsChanged)
@ -32,6 +34,7 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id,
const wxString &title, const wxPoint &position, const wxSize& size, long style) const wxString &title, const wxPoint &position, const wxSize& size, long style)
: wxDialog(parent, id, title, position, size, style) : wxDialog(parent, id, title, position, size, style)
{ {
DSPHLE_LoadConfig();
wxButton *m_OK = new wxButton(this, wxID_OK, _("OK"), wxButton *m_OK = new wxButton(this, wxID_OK, _("OK"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
@ -39,8 +42,6 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id,
wxStaticBoxSizer *sbSettingsV = new wxStaticBoxSizer(wxVERTICAL, this, _("Volume")); wxStaticBoxSizer *sbSettingsV = new wxStaticBoxSizer(wxVERTICAL, this, _("Volume"));
// Create items // Create items
m_buttonEnableHLEAudio = new wxCheckBox(this, ID_ENABLE_HLE_AUDIO, _("Enable HLE Audio"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
m_buttonEnableDTKMusic = new wxCheckBox(this, ID_ENABLE_DTK_MUSIC, _("Enable DTK Music"), m_buttonEnableDTKMusic = new wxCheckBox(this, ID_ENABLE_DTK_MUSIC, _("Enable DTK Music"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
m_buttonEnableThrottle = new wxCheckBox(this, ID_ENABLE_THROTTLE, _("Enable Audio Throttle"), m_buttonEnableThrottle = new wxCheckBox(this, ID_ENABLE_THROTTLE, _("Enable Audio Throttle"),
@ -63,12 +64,10 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id,
ac_Config.m_Volume), wxDefaultPosition, wxDefaultSize, 0); ac_Config.m_Volume), wxDefaultPosition, wxDefaultSize, 0);
// Update values // Update values
m_buttonEnableHLEAudio->SetValue(g_Config.m_EnableHLEAudio ? true : false);
m_buttonEnableDTKMusic->SetValue(ac_Config.m_EnableDTKMusic ? true : false); m_buttonEnableDTKMusic->SetValue(ac_Config.m_EnableDTKMusic ? true : false);
m_buttonEnableThrottle->SetValue(ac_Config.m_EnableThrottle ? true : false); m_buttonEnableThrottle->SetValue(ac_Config.m_EnableThrottle ? true : false);
// Add tooltips // Add tooltips
m_buttonEnableHLEAudio->SetToolTip(_("This is usually used to play voice and sound effects."));
m_buttonEnableDTKMusic->SetToolTip(_("This is used to play music tracks, like BGM.")); m_buttonEnableDTKMusic->SetToolTip(_("This is used to play music tracks, like BGM."));
m_buttonEnableThrottle->SetToolTip(_("This is used to control game speed by sound throttle.\nDisabling this could cause abnormal game speed, such as too fast.\nBut sometimes enabling this could cause constant noise.\n\nKeyboard Shortcut <TAB>: Hold down to instantly disable Throttle.")); m_buttonEnableThrottle->SetToolTip(_("This is used to control game speed by sound throttle.\nDisabling this could cause abnormal game speed, such as too fast.\nBut sometimes enabling this could cause constant noise.\n\nKeyboard Shortcut <TAB>: Hold down to instantly disable Throttle."));
m_FrequencySelection-> m_FrequencySelection->
@ -83,7 +82,6 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id,
wxBoxSizer *sFrequency = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sFrequency = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *sButtons = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sButtons = new wxBoxSizer(wxHORIZONTAL);
sbSettings->Add(m_buttonEnableHLEAudio, 0, wxALL, 5);
sbSettings->Add(m_buttonEnableDTKMusic, 0, wxALL, 5); sbSettings->Add(m_buttonEnableDTKMusic, 0, wxALL, 5);
sbSettings->Add(m_buttonEnableThrottle, 0, wxALL, 5); sbSettings->Add(m_buttonEnableThrottle, 0, wxALL, 5);
@ -115,6 +113,15 @@ DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id,
sMain->Add(sButtons, 0, wxALL|wxEXPAND, 4); sMain->Add(sButtons, 0, wxALL|wxEXPAND, 4);
SetSizerAndFit(sMain); SetSizerAndFit(sMain);
// add backends
std::vector<std::string> backends = AudioCommon::GetSoundBackends();
for (std::vector<std::string>::const_iterator iter = backends.begin();
iter != backends.end(); ++iter)
{
AddBackend((*iter).c_str());
}
// Center window // Center window
CenterOnParent(); CenterOnParent();
} }
@ -148,14 +155,13 @@ void DSPConfigDialogHLE::VolumeChanged(wxScrollEvent& WXUNUSED(event))
void DSPConfigDialogHLE::SettingsChanged(wxCommandEvent& event) void DSPConfigDialogHLE::SettingsChanged(wxCommandEvent& event)
{ {
g_Config.m_EnableHLEAudio = m_buttonEnableHLEAudio->GetValue();
ac_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue(); ac_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue();
ac_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue(); ac_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue();
ac_Config.sBackend = m_BackendSelection->GetStringSelection().mb_str(); ac_Config.sBackend = m_BackendSelection->GetStringSelection().mb_str();
ac_Config.sFrequency = m_FrequencySelection->GetStringSelection().mb_str(); ac_Config.sFrequency = m_FrequencySelection->GetStringSelection().mb_str();
ac_Config.Update(); ac_Config.Update();
g_Config.Save(); DSPHLE_SaveConfig();
if (event.GetId() == wxID_OK) if (event.GetId() == wxID_OK)
EndModal(wxID_OK); EndModal(wxID_OK);

View File

@ -29,7 +29,7 @@ class DSPConfigDialogHLE : public wxDialog
public: public:
DSPConfigDialogHLE(wxWindow *parent, DSPConfigDialogHLE(wxWindow *parent,
wxWindowID id = wxID_ANY, wxWindowID id = wxID_ANY,
const wxString &title = _("Dolphin DSP-HLE Plugin Settings"), const wxString &title = _("DSP-HLE Settings"),
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE); long style = wxDEFAULT_DIALOG_STYLE);
@ -42,7 +42,6 @@ private:
wxSlider* m_volumeSlider; wxSlider* m_volumeSlider;
wxStaticText* m_volumeText; wxStaticText* m_volumeText;
wxCheckBox* m_buttonEnableHLEAudio;
wxCheckBox* m_buttonEnableDTKMusic; wxCheckBox* m_buttonEnableDTKMusic;
wxCheckBox* m_buttonEnableThrottle; wxCheckBox* m_buttonEnableThrottle;
wxArrayString wxArrayBackends; wxArrayString wxArrayBackends;

View File

@ -16,8 +16,8 @@
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "Config.h" #include "HW/DSPLLE/DSPLLE.h"
#include "DSPConfigDlgLLE.h" #include "DSPLLEConfigDlg.h"
BEGIN_EVENT_TABLE(DSPConfigDialogLLE, wxDialog) BEGIN_EVENT_TABLE(DSPConfigDialogLLE, wxDialog)
EVT_BUTTON(wxID_OK, DSPConfigDialogLLE::SettingsChanged) EVT_BUTTON(wxID_OK, DSPConfigDialogLLE::SettingsChanged)
@ -31,8 +31,7 @@ END_EVENT_TABLE()
DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style) DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style)
: wxDialog(parent, id, title, position, size, style) : wxDialog(parent, id, title, position, size, style)
{ {
// Load config settings DSPLLE_LoadConfig();
g_Config.Load();
m_OK = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); m_OK = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
@ -87,6 +86,15 @@ DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wx
sMain->Add(sButtons, 0, wxALL|wxEXPAND, 4); sMain->Add(sButtons, 0, wxALL|wxEXPAND, 4);
SetSizerAndFit(sMain); SetSizerAndFit(sMain);
// add backends
std::vector<std::string> backends = AudioCommon::GetSoundBackends();
for (std::vector<std::string>::const_iterator iter = backends.begin();
iter != backends.end(); ++iter)
{
AddBackend((*iter).c_str());
}
// Center window // Center window
CenterOnParent(); CenterOnParent();
} }
@ -127,7 +135,7 @@ void DSPConfigDialogLLE::SettingsChanged(wxCommandEvent& event)
ac_Config.sBackend = m_BackendSelection->GetStringSelection().mb_str(); ac_Config.sBackend = m_BackendSelection->GetStringSelection().mb_str();
ac_Config.Update(); ac_Config.Update();
g_Config.Save(); DSPLLE_SaveConfig();
if (event.GetId() == wxID_OK) if (event.GetId() == wxID_OK)
EndModal(wxID_OK); EndModal(wxID_OK);

View File

@ -22,6 +22,7 @@
#include <wx/dialog.h> #include <wx/dialog.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/statbox.h> #include <wx/statbox.h>
#include "AudioCommon.h" #include "AudioCommon.h"
class DSPConfigDialogLLE : public wxDialog class DSPConfigDialogLLE : public wxDialog
@ -29,7 +30,7 @@ class DSPConfigDialogLLE : public wxDialog
public: public:
DSPConfigDialogLLE(wxWindow *parent, DSPConfigDialogLLE(wxWindow *parent,
wxWindowID id = wxID_ANY, wxWindowID id = wxID_ANY,
const wxString &title = _("Dolphin DSP-LLE Plugin Settings"), const wxString &title = _("DSP-LLE Settings"),
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE); long style = wxDEFAULT_DIALOG_STYLE);

View File

@ -195,7 +195,7 @@ void CFrame::OnToggleWindow(wxCommandEvent& event)
g_pCodeWindow->ToggleJitWindow(bShow); g_pCodeWindow->ToggleJitWindow(bShow);
break; break;
case IDM_SOUNDWINDOW: case IDM_SOUNDWINDOW:
g_pCodeWindow->ToggleDLLWindow(IDM_SOUNDWINDOW, bShow); g_pCodeWindow->ToggleSoundWindow(bShow);
break; break;
case IDM_VIDEOWINDOW: case IDM_VIDEOWINDOW:
g_pCodeWindow->ToggleDLLWindow(IDM_VIDEOWINDOW, bShow); g_pCodeWindow->ToggleDLLWindow(IDM_VIDEOWINDOW, bShow);

View File

@ -44,6 +44,8 @@ Core::GetWindowHandle().
#include "CheatsWindow.h" #include "CheatsWindow.h"
#include "LuaWindow.h" #include "LuaWindow.h"
#include "AboutDolphin.h" #include "AboutDolphin.h"
#include "DSPHLEConfigDlg.h"
#include "DSPLLEConfigDlg.h"
#include "GameListCtrl.h" #include "GameListCtrl.h"
#include "BootManager.h" #include "BootManager.h"
#include "LogWindow.h" #include "LogWindow.h"
@ -1059,18 +1061,15 @@ void CFrame::OnPluginGFX(wxCommandEvent& WXUNUSED (event))
void CFrame::OnPluginDSP(wxCommandEvent& WXUNUSED (event)) void CFrame::OnPluginDSP(wxCommandEvent& WXUNUSED (event))
{ {
#ifdef _WIN32 if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE) {
Disable(); // Fake a modal dialog DSPConfigDialogHLE *dlg = new DSPConfigDialogHLE(this);
#endif dlg->ShowModal();
CPluginManager::GetInstance().OpenConfig( dlg->Destroy();
this, } else {
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin.c_str(), DSPConfigDialogLLE *dlg = new DSPConfigDialogLLE(this);
PLUGIN_TYPE_DSP dlg->ShowModal();
); dlg->Destroy();
#ifdef _WIN32 }
Enable();
Raise();
#endif
} }
void CFrame::OnPluginPAD(wxCommandEvent& WXUNUSED (event)) void CFrame::OnPluginPAD(wxCommandEvent& WXUNUSED (event))

View File

@ -19,8 +19,8 @@
// This file holds global data for DolphinWx and DebuggerWx // This file holds global data for DolphinWx and DebuggerWx
#ifndef _GLOBALS_H #ifndef _WX_GLOBALS_H
#define _GLOBALS_H #define _WX_GLOBALS_H
#include "Common.h" #include "Common.h"
@ -273,4 +273,4 @@ enum
extern const wxEventType wxEVT_HOST_COMMAND; extern const wxEventType wxEVT_HOST_COMMAND;
#endif // _GLOBALS_H #endif // _WX_GLOBALS_H

View File

@ -290,10 +290,6 @@ bool DolphinApp::OnInit()
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin =
std::string(videoPluginFilename.mb_str()); std::string(videoPluginFilename.mb_str());
if (selectAudioPlugin && audioPluginFilename != wxEmptyString)
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin =
std::string(audioPluginFilename.mb_str());
// Enable the PNG image handler for screenshots // Enable the PNG image handler for screenshots
wxImage::AddHandler(new wxPNGHandler); wxImage::AddHandler(new wxPNGHandler);

View File

@ -95,14 +95,6 @@ inline u32* Memory_Read_U32_Unswapped_Ptr(u32 _uAddress)
} }
inline float Memory_Read_Float(u32 _uAddress)
{
union {u32 i; float f;} temp;
temp.i = Memory_Read_U32(_uAddress);
return temp.f;
}
// Logging // Logging
// ---------- // ----------
void HandleGLError(); void HandleGLError();

View File

@ -1,12 +1,14 @@
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C++ Express 2008 # Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "Core\Core\Core.vcproj", "{F0B874CB-4476-4199-9315-8343D05AE684}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "Core\Core\Core.vcproj", "{F0B874CB-4476-4199-9315-8343D05AE684}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA} = {C7E5D50A-2916-464B-86A7-E10B3CC88ADA} {C7E5D50A-2916-464B-86A7-E10B3CC88ADA} = {C7E5D50A-2916-464B-86A7-E10B3CC88ADA}
{DA4CA030-A741-4DDC-9DA8-B2F351F0F158} = {DA4CA030-A741-4DDC-9DA8-B2F351F0F158} {DA4CA030-A741-4DDC-9DA8-B2F351F0F158} = {DA4CA030-A741-4DDC-9DA8-B2F351F0F158}
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF} {33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF}
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6} = {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63} {3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
{823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4} {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4}
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED} = {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510}
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A} {B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
@ -63,14 +65,13 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Dolphin", "Core\DolphinWX\DolphinWX.vcproj", "{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Dolphin", "Core\DolphinWX\DolphinWX.vcproj", "{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA} = {C7E5D50A-2916-464B-86A7-E10B3CC88ADA} {C7E5D50A-2916-464B-86A7-E10B3CC88ADA} = {C7E5D50A-2916-464B-86A7-E10B3CC88ADA}
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8} = {D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}
{D4833C30-FA5F-4DFE-BD32-109DE1F09ED1} = {D4833C30-FA5F-4DFE-BD32-109DE1F09ED1} {D4833C30-FA5F-4DFE-BD32-109DE1F09ED1} = {D4833C30-FA5F-4DFE-BD32-109DE1F09ED1}
{05C75041-D67D-4903-A362-8395A7B35C75} = {05C75041-D67D-4903-A362-8395A7B35C75} {05C75041-D67D-4903-A362-8395A7B35C75} = {05C75041-D67D-4903-A362-8395A7B35C75}
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF} {33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF}
{11F55366-12EC-4C44-A8CB-1D4E315D61ED} = {11F55366-12EC-4C44-A8CB-1D4E315D61ED} {11F55366-12EC-4C44-A8CB-1D4E315D61ED} = {11F55366-12EC-4C44-A8CB-1D4E315D61ED}
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6} = {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63} {3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
{823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4} {823DDC98-42D5-4A38-88CF-9DC06C788AE4} = {823DDC98-42D5-4A38-88CF-9DC06C788AE4}
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4} = {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} = {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} = {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA} = {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA} {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA} = {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510}
@ -84,6 +85,7 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "Core\DebuggerWX\DebuggerWX.vcproj", "{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "Core\DebuggerWX\DebuggerWX.vcproj", "{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{F81AE75C-3D17-4D8C-A201-82FA5351C123} = {F81AE75C-3D17-4D8C-A201-82FA5351C123} {F81AE75C-3D17-4D8C-A201-82FA5351C123} = {F81AE75C-3D17-4D8C-A201-82FA5351C123}
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED} = {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} {29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510}
{F0B874CB-4476-4199-9315-8343D05AE684} = {F0B874CB-4476-4199-9315-8343D05AE684} {F0B874CB-4476-4199-9315-8343D05AE684} = {F0B874CB-4476-4199-9315-8343D05AE684}
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A} {B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
@ -98,17 +100,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoCommon", "Core\VideoCo
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_DSP_HLE", "Plugins\Plugin_DSP_HLE\Plugin_DSP_HLE.vcproj", "{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}"
ProjectSection(ProjectDependencies) = postProject
{05C75041-D67D-4903-A362-8395A7B35C75} = {05C75041-D67D-4903-A362-8395A7B35C75}
{11F55366-12EC-4C44-A8CB-1D4E315D61ED} = {11F55366-12EC-4C44-A8CB-1D4E315D61ED}
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6} = {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} = {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}
{1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE} = {1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE}
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LZO", "..\Externals\LZO\LZO.vcproj", "{33546D62-7F34-4EA6-A88E-D538B36E16BF}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LZO", "..\Externals\LZO\LZO.vcproj", "{33546D62-7F34-4EA6-A88E-D538B36E16BF}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A} {B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
@ -125,19 +116,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioCommon", "Core\AudioCo
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A} {B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_DSP_LLE", "Plugins\Plugin_DSP_LLE\Plugin_DSP_LLE.vcproj", "{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}"
ProjectSection(ProjectDependencies) = postProject
{05C75041-D67D-4903-A362-8395A7B35C75} = {05C75041-D67D-4903-A362-8395A7B35C75}
{F81AE75C-3D17-4D8C-A201-82FA5351C123} = {F81AE75C-3D17-4D8C-A201-82FA5351C123}
{11F55366-12EC-4C44-A8CB-1D4E315D61ED} = {11F55366-12EC-4C44-A8CB-1D4E315D61ED}
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6} = {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED} = {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} = {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}
{1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE} = {1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE}
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSPCore", "Core\DSPCore\DSPCore.vcproj", "{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSPCore", "Core\DSPCore\DSPCore.vcproj", "{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A} {B807E8DB-4241-4754-BC2A-2F435BCA881A} = {B807E8DB-4241-4754-BC2A-2F435BCA881A}
@ -380,18 +358,6 @@ Global
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|Win32.Build.0 = Release|Win32 {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|Win32.Build.0 = Release|Win32
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.ActiveCfg = Release|x64 {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.ActiveCfg = Release|x64
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.Build.0 = Release|x64 {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.Build.0 = Release|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Debug|Win32.ActiveCfg = Debug|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Debug|Win32.Build.0 = Debug|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Debug|x64.ActiveCfg = Debug|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Debug|x64.Build.0 = Debug|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.DebugFast|Win32.ActiveCfg = DebugFast|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.DebugFast|Win32.Build.0 = DebugFast|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.DebugFast|x64.ActiveCfg = DebugFast|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.DebugFast|x64.Build.0 = DebugFast|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Release|Win32.ActiveCfg = Release|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Release|Win32.Build.0 = Release|Win32
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Release|x64.ActiveCfg = Release|x64
{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}.Release|x64.Build.0 = Release|x64
{33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|Win32.ActiveCfg = Debug|Win32 {33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|Win32.ActiveCfg = Debug|Win32
{33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|Win32.Build.0 = Debug|Win32 {33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|Win32.Build.0 = Debug|Win32
{33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|x64.ActiveCfg = Debug|x64 {33546D62-7F34-4EA6-A88E-D538B36E16BF}.Debug|x64.ActiveCfg = Debug|x64
@ -428,18 +394,6 @@ Global
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|Win32.Build.0 = Release|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|Win32.Build.0 = Release|Win32
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.ActiveCfg = Release|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.ActiveCfg = Release|x64
{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.Build.0 = Release|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.Build.0 = Release|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|Win32.ActiveCfg = Debug|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|Win32.Build.0 = Debug|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|x64.ActiveCfg = Debug|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|x64.Build.0 = Debug|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|Win32.ActiveCfg = DebugFast|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|Win32.Build.0 = DebugFast|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|x64.ActiveCfg = DebugFast|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|x64.Build.0 = DebugFast|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|Win32.ActiveCfg = Release|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|Win32.Build.0 = Release|Win32
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|x64.ActiveCfg = Release|x64
{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|x64.Build.0 = Release|x64
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|Win32.ActiveCfg = Debug|Win32 {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|Win32.ActiveCfg = Debug|Win32
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|Win32.Build.0 = Debug|Win32 {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|Win32.Build.0 = Debug|Win32
{838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|x64.ActiveCfg = Debug|x64 {838A89A3-3AA0-4A45-ACBE-3D1E0980C2ED}.Debug|x64.ActiveCfg = Debug|x64

View File

@ -1,115 +0,0 @@
//__________________________________________________________________________________________________
// Common dsp plugin spec, version #1.0 maintained by F|RES
//
#ifndef _DSP_H_INCLUDED__
#define _DSP_H_INCLUDED__
#include "PluginSpecs.h"
#include "ExportProlog.h"
typedef unsigned char (*TARAM_Read_U8)(const unsigned int _uAddress);
typedef void (*TARAM_Write_U8)(const unsigned char _uValue, const unsigned int _uAddress);
typedef unsigned char* (*TGetMemoryPointer)(const unsigned int _uAddress);
typedef unsigned char* (*TGetARAMPointer)(void);
typedef void (*TLogv)(const char* _szMessage, int _v);
typedef const char* (*TName)(void);
typedef void (*TDebuggerBreak)(void);
typedef void (*TGenerateDSPInt)(void);
typedef unsigned int (*TAudioGetStreaming)(short* _pDestBuffer, unsigned int _numSamples, unsigned int _sampleRate);
typedef void (*TGetSampleRate)(unsigned int &AISampleRate, unsigned int &DACSampleRate);
typedef struct
{
void *hWnd;
TARAM_Read_U8 pARAM_Read_U8;
TARAM_Write_U8 pARAM_Write_U8;
TGetMemoryPointer pGetMemoryPointer;
TGetARAMPointer pGetARAMPointer;
TLogv pLog;
TName pName;
TDebuggerBreak pDebuggerBreak;
TGenerateDSPInt pGenerateDSPInterrupt;
TAudioGetStreaming pGetAudioStreaming;
TGetSampleRate pGetSampleRate;
int *pEmulatorState;
bool bWii;
bool bOnThread;
} DSPInitialize;
// __________________________________________________________________________________________________
// Function: DSP_ReadMailboxHigh
// Purpose: Send mail to high DSP Mailbox
// input: none
// output: none
//
EXPORT unsigned short CALL DSP_ReadMailboxHigh(bool _CPUMailbox);
// __________________________________________________________________________________________________
// Function: DSP_ReadMailboxLow
// Purpose: Send mail to low DSP Mailbox
// input: none
// output: none
//
EXPORT unsigned short CALL DSP_ReadMailboxLow(bool _CPUMailbox);
// __________________________________________________________________________________________________
// Function: DSP_WriteMailboxHigh
// Purpose: Send mail to high CPU Mailbox
// input: none
// output: none
//
EXPORT void CALL DSP_WriteMailboxHigh(bool _CPUMailbox, unsigned short _uHighMail);
// __________________________________________________________________________________________________
// Function: DSP_WriteMailboxLow
// Purpose: Send mail to low CPU Mailbox
// input: none
// output: none
//
EXPORT void CALL DSP_WriteMailboxLow(bool _CPUMailbox, unsigned short _uLowMail);
// __________________________________________________________________________________________________
// Function: DSP_WriteControlRegister
// Purpose: This function is called if the core reads from the DSP control register
// input: Value to be written
// output: value of the control register
//
EXPORT unsigned short CALL DSP_WriteControlRegister(unsigned short _Value);
// __________________________________________________________________________________________________
// Function: DSP_ReadControlRegister
// Purpose: This function is called if the core reads from the DSP control register
// output: value of the control register
//
EXPORT unsigned short CALL DSP_ReadControlRegister(void);
// __________________________________________________________________________________________________
// Function: DSP_Update
// Purpose: This function is called from time to time from the core.
// input: cycles - run this number of DSP clock cycles.
// output: TRUE if the flag is set, else FALSE
//
EXPORT void CALL DSP_Update(int cycles);
// __________________________________________________________________________________________________
// Function: DSP_SendAIBuffer
// Purpose: This function sends the current AI Buffer to the DSP plugin
// input: _Address : Memory-Address
// input: _Number : Number of the Samples
//
EXPORT void CALL DSP_SendAIBuffer(unsigned int address, unsigned int num_samples);
// __________________________________________________________________________________________________
// Function: DSP_StopSoundStream
// Purpose: Stops audio playback. Must be called before Shutdown().
EXPORT void CALL DSP_StopSoundStream();
// __________________________________________________________________________________________________
// Function: DSP_ClearAudioBuffer
// Purpose: Stops audio. Called while pausing to stop the annoying noises.
EXPORT void CALL DSP_ClearAudioBuffer(bool mute);
#include "ExportEpilog.h"
#endif

View File

@ -1,5 +1,3 @@
add_subdirectory(Plugin_DSP_HLE)
add_subdirectory(Plugin_DSP_LLE)
add_subdirectory(Plugin_VideoOGL) add_subdirectory(Plugin_VideoOGL)
add_subdirectory(Plugin_VideoSoftware) add_subdirectory(Plugin_VideoSoftware)
# TODO: Add other plugins here! # TODO: Add other plugins here!

View File

@ -1,27 +0,0 @@
set(SRCS
Src/DSPHandler.cpp
Src/MailHandler.cpp
Src/HLEMixer.cpp
Src/main.cpp
Src/Config.cpp
Src/UCodes/UCode_AX.cpp
Src/UCodes/UCode_AXWii.cpp
Src/UCodes/UCode_CARD.cpp
Src/UCodes/UCode_InitAudioSystem.cpp
Src/UCodes/UCode_ROM.cpp
Src/UCodes/UCodes.cpp
Src/UCodes/UCode_GBA.cpp
Src/UCodes/UCode_Zelda.cpp
Src/UCodes/UCode_Zelda_ADPCM.cpp
Src/UCodes/UCode_Zelda_Voice.cpp
Src/UCodes/UCode_Zelda_Synth.cpp)
if(wxWidgets_FOUND)
set(SRCS ${SRCS} Src/ConfigDlg.cpp)
endif(wxWidgets_FOUND)
add_library(Plugin_DSP_HLE MODULE ${SRCS})
target_link_libraries(Plugin_DSP_HLE audiocommon common ${wxWidgets_LIBRARIES})
install(TARGETS Plugin_DSP_HLE
LIBRARY DESTINATION ${plugindir}
RUNTIME DESTINATION ${plugindir})

View File

@ -1,829 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="Plugin_DSP_HLE"
ProjectGUID="{D6E56527-BBB9-4EAD-A6EC-49D4BF6AFCD8}"
RootNamespace="Plugin_DSP"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;_SECURE_SCL=0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="4"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib rpcrt4.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28ud.lib wxmsw28ud_core.lib"
OutputFile="../../../Binary/Win32/Plugins/Plugin_DSP_HLED.dll"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win32/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win32\OpenAL32.dll ..\..\..\Binary\Win32\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win32\wrap_oal.dll ..\..\..\Binary\Win32\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="LOGGING;WIN32;_DEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;_SECURE_SCL=0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib rpcrt4.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28ud.lib wxmsw28ud_core.lib"
OutputFile="../../../Binary/x64/Plugins/Plugin_DSP_HLED.dll"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win64/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win64\OpenAL32.dll ..\..\..\Binary\x64\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win64\wrap_oal.dll ..\..\..\Binary\x64\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="2"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28u.lib wxmsw28u_core.lib"
OutputFile="../../../Binary/Win32/Plugins/Plugin_DSP_HLE.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win32/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win32\OpenAL32.dll ..\..\..\Binary\Win32\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win32\wrap_oal.dll ..\..\..\Binary\Win32\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="2"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28u.lib wxmsw28u_core.lib"
OutputFile="../../../Binary/x64/Plugins/Plugin_DSP_HLE.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win64/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win64\OpenAL32.dll ..\..\..\Binary\x64\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win64\wrap_oal.dll ..\..\..\Binary\x64\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="DEBUGFAST;WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="2"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28u.lib wxmsw28u_core.lib"
OutputFile="../../../Binary/Win32/Plugins/Plugin_DSP_HLEDF.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win32/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win32\OpenAL32.dll ..\..\..\Binary\Win32\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win32\wrap_oal.dll ..\..\..\Binary\Win32\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="DebugFast|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
AdditionalIncludeDirectories="../../Core/Common/Src;../../Core/AudioCommon/Src;../../PluginSpecs;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
PreprocessorDefinitions="LOGGING;WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_HLE_EXPORTS;DEBUGFAST;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib dsound.lib dxerr.lib comctl32.lib winmm.lib OpenAL32.lib wxbase28u.lib wxmsw28u_core.lib"
OutputFile="../../../Binary/x64/Plugins/Plugin_DSP_HLEDF.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;..\..\AudioCommon\$(PlatformName)\$(ConfigurationName)&quot;;../../../Externals/OpenAL/Win64/;..\..\..\Externals\wxWidgets\lib\vc_lib\$(PlatformName)"
GenerateManifest="false"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)\$(TargetName).pdb"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(PlatformName)\$(ConfigurationName)\$(TargetName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy ..\..\..\Externals\OpenAL\Win64\OpenAL32.dll ..\..\..\Binary\x64\OpenAL32.dll /Y&#x0D;&#x0A;copy ..\..\..\Externals\OpenAL\Win64\wrap_oal.dll ..\..\..\Binary\x64\wrap_oal.dll /Y&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="UCodes"
>
<File
RelativePath=".\Src\UCodes\UCode_CARD.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_CARD.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_GBA.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_GBA.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_InitAudioSystem.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_InitAudioSystem.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_ROM.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_ROM.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCodes.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCodes.h"
>
</File>
<Filter
Name="AX"
>
<File
RelativePath=".\Src\UCodes\UCode_AX.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="4"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="4"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="4"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|x64"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="4"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AX.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AX_ADPCM.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AX_Voice.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AXStructs.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AXWii.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_AXWii.h"
>
</File>
</Filter>
<Filter
Name="Zelda"
>
<File
RelativePath="..\..\..\docs\DSP\DSP_UC_Luigi.txt"
>
</File>
<File
RelativePath="..\..\..\docs\DSP\DSP_UC_Zelda.txt"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda.h"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda_ADPCM.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda_Obsolete.txt"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda_Synth.cpp"
>
</File>
<File
RelativePath=".\Src\UCodes\UCode_Zelda_Voice.cpp"
>
</File>
</Filter>
</Filter>
<Filter
Name="ConfigDialog"
>
<File
RelativePath=".\Src\ConfigDlg.cpp"
>
</File>
<File
RelativePath=".\Src\ConfigDlg.h"
>
</File>
</Filter>
<File
RelativePath=".\Src\Config.cpp"
>
</File>
<File
RelativePath=".\Src\Config.h"
>
</File>
<File
RelativePath=".\Src\DSPHandler.cpp"
>
</File>
<File
RelativePath=".\Src\DSPHandler.h"
>
</File>
<File
RelativePath=".\Src\Globals.h"
>
</File>
<File
RelativePath=".\Src\HLEMixer.cpp"
>
</File>
<File
RelativePath=".\Src\HLEMixer.h"
>
</File>
<File
RelativePath=".\Src\MailHandler.cpp"
>
</File>
<File
RelativePath=".\Src\MailHandler.h"
>
</File>
<File
RelativePath=".\Src\main.cpp"
>
</File>
<File
RelativePath=".\Src\main.h"
>
</File>
<File
RelativePath=".\Src\SConscript"
>
</File>
<File
RelativePath=".\Src\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\Src\stdafx.h"
>
</File>
</Files>
<Globals>
<Global
Name="RESOURCE_FILE"
Value="Src\resource.rc"
/>
</Globals>
</VisualStudioProject>

View File

@ -1,305 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugFast|Win32">
<Configuration>DebugFast</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugFast|x64">
<Configuration>DebugFast</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{27980B4B-F26C-41E8-9C44-A3D4F259D6E7}</ProjectGuid>
<RootNamespace>Plugin_DSP_HLE</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<OutDir>$(PlatformName)\$(ConfigurationName)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<IntDir>$(PlatformName)\$(ConfigurationName)</IntDir>
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>DEBUGFAST;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\Core\Common\Src;..\..\PluginSpecs;..\..\Core\AudioCommon\Src;..\..\..\Externals\wxWidgets\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>DEBUGFAST;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Binary\$(PlatformName)\Plugins\$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Src\Config.cpp" />
<ClCompile Include="Src\ConfigDlg.cpp" />
<ClCompile Include="Src\DSPHandler.cpp" />
<ClCompile Include="Src\HLEMixer.cpp" />
<ClCompile Include="Src\MailHandler.cpp" />
<ClCompile Include="Src\main.cpp" />
<ClCompile Include="Src\stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="Src\UCodes\UCodes.cpp" />
<ClCompile Include="Src\UCodes\UCode_AX.cpp" />
<ClCompile Include="Src\UCodes\UCode_AXWii.cpp" />
<ClCompile Include="Src\UCodes\UCode_CARD.cpp" />
<ClCompile Include="Src\UCodes\UCode_GBA.cpp" />
<ClCompile Include="Src\UCodes\UCode_InitAudioSystem.cpp" />
<ClCompile Include="Src\UCodes\UCode_ROM.cpp" />
<ClCompile Include="Src\UCodes\UCode_Zelda.cpp" />
<ClCompile Include="Src\UCodes\UCode_Zelda_ADPCM.cpp" />
<ClCompile Include="Src\UCodes\UCode_Zelda_Synth.cpp" />
<ClCompile Include="Src\UCodes\UCode_Zelda_Voice.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Src\Config.h" />
<ClInclude Include="Src\ConfigDlg.h" />
<ClInclude Include="Src\DSPHandler.h" />
<ClInclude Include="Src\Globals.h" />
<ClInclude Include="Src\HLEMixer.h" />
<ClInclude Include="Src\MailHandler.h" />
<ClInclude Include="Src\main.h" />
<ClInclude Include="Src\stdafx.h" />
<ClInclude Include="Src\UCodes\UCodes.h" />
<ClInclude Include="Src\UCodes\UCode_AX.h" />
<ClInclude Include="Src\UCodes\UCode_AXStructs.h" />
<ClInclude Include="Src\UCodes\UCode_AXWii.h" />
<ClInclude Include="Src\UCodes\UCode_AX_ADPCM.h" />
<ClInclude Include="Src\UCodes\UCode_AX_Voice.h" />
<ClInclude Include="Src\UCodes\UCode_CARD.h" />
<ClInclude Include="Src\UCodes\UCode_GBA.h" />
<ClInclude Include="Src\UCodes\UCode_InitAudioSystem.h" />
<ClInclude Include="Src\UCodes\UCode_ROM.h" />
<ClInclude Include="Src\UCodes\UCode_Zelda.h" />
</ItemGroup>
<ItemGroup>
<None Include="Src\SConscript" />
<None Include="Src\UCodes\UCode_Zelda_Obsolete.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Externals\wxWidgets\build\msw\wx_adv.vcxproj">
<Project>{0e231fb1-f3c9-4724-accb-de8bcb3c089e}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\wxWidgets\build\msw\wx_base.vcxproj">
<Project>{1c8436c9-dbaf-42be-83bc-cf3ec9175abe}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\wxWidgets\build\msw\wx_core.vcxproj">
<Project>{11f55366-12ec-4c44-a8cb-1d4e315d61ed}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Core\AudioCommon\AudioCommon.vcxproj">
<Project>{37d007bd-d66c-4eaf-b56c-bd1aac340a05}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,44 +0,0 @@
// Copyright (C) 2003 Dolphin Project.
// This program 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, version 2.0.
// This program 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 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "Globals.h"
#include "Common.h"
#include "IniFile.h"
#include "Config.h"
#include "AudioCommon.h"
#include "FileUtil.h"
CConfig g_Config;
void CConfig::Load()
{
// first load defaults
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + "DSP.ini").c_str());
file.Get("Config", "EnableHLEAudio", &m_EnableHLEAudio, true); // Sound Settings
ac_Config.Load(file);
}
void CConfig::Save()
{
IniFile file;
file.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + "DSP.ini").c_str());
file.Set("Config", "EnableHLEAudio", m_EnableHLEAudio); // Sound Settings
ac_Config.Set(file);
file.Save((std::string(File::GetUserPath(D_CONFIG_IDX)) + "DSP.ini").c_str());
}

Some files were not shown because too many files have changed in this diff Show More