diff --git a/rpcs3-tests/rpcs3-tests.vcxproj b/rpcs3-tests/rpcs3-tests.vcxproj
index e71d6ae72..7956ee5f0 100644
--- a/rpcs3-tests/rpcs3-tests.vcxproj
+++ b/rpcs3-tests/rpcs3-tests.vcxproj
@@ -108,6 +108,12 @@
{c4a10229-4712-4bd2-b63e-50d93c67a038}
+
+ {30a05c4d-f5fd-421c-a864-17a64bdeaa75}
+
+
+ {78cb2f39-b809-4a06-8329-8c0a19119d3d}
+
{24c45343-fd20-5c92-81c1-35a2ae841e79}
diff --git a/rpcs3.sln b/rpcs3.sln
index 6bdd5a94c..5769fb4e3 100644
--- a/rpcs3.sln
+++ b/rpcs3.sln
@@ -201,6 +201,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shader_code", "rsx_program_
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rsx_decompiler", "rsx_program_decompiler\rsx_decompiler\rsx_decompiler.vcxproj", "{7D73447B-3D2D-4DFE-BF62-57E644C1D09F}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XAudio", "rpcs3\XAudio.vcxproj", "{78CB2F39-B809-4A06-8329-8C0A19119D3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenAL", "rpcs3\OpenAL.vcxproj", "{30A05C4D-F5FD-421C-A864-17A64BDEAA75}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug - LLVM|x64 = Debug - LLVM|x64
@@ -672,6 +676,34 @@ Global
{7D73447B-3D2D-4DFE-BF62-57E644C1D09F}.Release - LLVM|x64.Build.0 = Release|x64
{7D73447B-3D2D-4DFE-BF62-57E644C1D09F}.Release|x64.ActiveCfg = Release|x64
{7D73447B-3D2D-4DFE-BF62-57E644C1D09F}.Release|x64.Build.0 = Release|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug - LLVM|x64.ActiveCfg = Debug - LLVM|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug - LLVM|x64.Build.0 = Debug - LLVM|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug - MemLeak|x64.ActiveCfg = Debug - MemLeak|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug - MemLeak|x64.Build.0 = Debug - MemLeak|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug|x64.ActiveCfg = Debug|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Debug|x64.Build.0 = Debug|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.DLL Debug|x64.ActiveCfg = Debug|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.DLL Debug|x64.Build.0 = Debug|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.DLL Release|x64.ActiveCfg = Release|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.DLL Release|x64.Build.0 = Release|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Release - LLVM|x64.ActiveCfg = Release - LLVM|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Release - LLVM|x64.Build.0 = Release - LLVM|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Release|x64.ActiveCfg = Release|x64
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}.Release|x64.Build.0 = Release|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug - LLVM|x64.ActiveCfg = Debug - LLVM|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug - LLVM|x64.Build.0 = Debug - LLVM|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug - MemLeak|x64.ActiveCfg = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug - MemLeak|x64.Build.0 = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug|x64.ActiveCfg = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Debug|x64.Build.0 = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.DLL Debug|x64.ActiveCfg = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.DLL Debug|x64.Build.0 = Debug|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.DLL Release|x64.ActiveCfg = Release|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.DLL Release|x64.Build.0 = Release|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Release - LLVM|x64.ActiveCfg = Release - LLVM|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Release - LLVM|x64.Build.0 = Release - LLVM|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Release|x64.ActiveCfg = Release|x64
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -707,5 +739,7 @@ Global
{FAC9B17B-F4B8-4B75-8AEB-C8C7CB92B078} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
{3384223A-6D97-4799-9862-359F85312892} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
{7D73447B-3D2D-4DFE-BF62-57E644C1D09F} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
EndGlobalSection
EndGlobal
diff --git a/rpcs3/Emu/Audio/AudioManager.cpp b/rpcs3/Emu/Audio/AudioManager.cpp
index 39e21ef46..615a518c0 100644
--- a/rpcs3/Emu/Audio/AudioManager.cpp
+++ b/rpcs3/Emu/Audio/AudioManager.cpp
@@ -1,9 +1,7 @@
#include "stdafx.h"
+#include "Emu/System.h"
#include "AudioManager.h"
-#include "AL/OpenALThread.h"
#include "Emu/state.h"
-#include "Null/NullAudioThread.h"
-#include "XAudio2/XAudio2Thread.h"
AudioManager::AudioManager() : m_audio_out(nullptr)
{
@@ -20,19 +18,10 @@ void AudioManager::Init()
m_audio_info.Init();
- switch (rpcs3::state.config.audio.out.value())
- {
- default:
- case audio_output_type::Null: m_audio_out = new NullAudioThread(); break;
- case audio_output_type::OpenAL: m_audio_out = new OpenALThread(); break;
-#ifdef _MSC_VER
- case audio_output_type::XAudio2: m_audio_out = new XAudio2Thread(); break;
-#endif
- }
+ m_audio_out = Emu.GetCallbacks().get_audio();
}
void AudioManager::Close()
{
- delete m_audio_out;
- m_audio_out = nullptr;
+ m_audio_out.reset();
}
diff --git a/rpcs3/Emu/Audio/AudioManager.h b/rpcs3/Emu/Audio/AudioManager.h
index a1f50c84d..149fa15ed 100644
--- a/rpcs3/Emu/Audio/AudioManager.h
+++ b/rpcs3/Emu/Audio/AudioManager.h
@@ -17,7 +17,7 @@ struct AudioInfo
class AudioManager
{
AudioInfo m_audio_info;
- AudioThread* m_audio_out;
+ std::shared_ptr m_audio_out;
public:
AudioManager();
~AudioManager();
diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h
index 5b83cf7ca..2f731afe3 100644
--- a/rpcs3/Emu/System.h
+++ b/rpcs3/Emu/System.h
@@ -15,6 +15,7 @@ struct EmuCallbacks
std::function()> get_pad_handler;
std::function(frame_type)> get_gs_frame;
std::function()> get_gs_render;
+ std::function()> get_audio;
std::function()> get_msg_dialog;
std::function()> get_save_dialog;
};
diff --git a/rpcs3/OpenAL.vcxproj b/rpcs3/OpenAL.vcxproj
new file mode 100644
index 000000000..e9cf28720
--- /dev/null
+++ b/rpcs3/OpenAL.vcxproj
@@ -0,0 +1,129 @@
+
+
+
+
+ Debug - LLVM
+ x64
+
+
+ Debug - MemLeak
+ x64
+
+
+ Debug
+ x64
+
+
+ Release - LLVM
+ x64
+
+
+ Release
+ x64
+
+
+
+ {30A05C4D-F5FD-421C-A864-17A64BDEAA75}
+ Win32Proj
+ OpenAL
+ 8.1
+
+
+
+ StaticLibrary
+ v140
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+
+ .\OpenAL\include;%(AdditionalIncludeDirectories)
+ true
+
+
+
+
+ .\OpenAL\include;%(AdditionalIncludeDirectories)
+ true
+
+
+
+
+ .\OpenAL\include;%(AdditionalIncludeDirectories)
+ true
+
+
+
+
+ .\OpenAL\include;%(AdditionalIncludeDirectories)
+ true
+
+
+
+
+ .\OpenAL\include;%(AdditionalIncludeDirectories)
+ true
+
+
+
+
+
+
+
+
+
+
+ {c4a10229-4712-4bd2-b63e-50d93c67a038}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rpcs3/OpenAL.vcxproj.filters b/rpcs3/OpenAL.vcxproj.filters
new file mode 100644
index 000000000..84058485a
--- /dev/null
+++ b/rpcs3/OpenAL.vcxproj.filters
@@ -0,0 +1,19 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Source Files
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/rpcs3/XAudio.vcxproj b/rpcs3/XAudio.vcxproj
new file mode 100644
index 000000000..3e2b6a28e
--- /dev/null
+++ b/rpcs3/XAudio.vcxproj
@@ -0,0 +1,127 @@
+
+
+
+
+ Debug - LLVM
+ x64
+
+
+ Debug - MemLeak
+ x64
+
+
+ Debug
+ x64
+
+
+ Release - LLVM
+ x64
+
+
+ Release
+ x64
+
+
+
+ {78CB2F39-B809-4A06-8329-8C0A19119D3D}
+ XAudio
+ 8.1
+
+
+
+ StaticLibrary
+ Unicode
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+
+ ..\minidx9\Include;%(AdditionalIncludeDirectories)
+
+
+
+
+ ..\minidx9\Include;%(AdditionalIncludeDirectories)
+
+
+
+
+ ..\minidx9\Include;%(AdditionalIncludeDirectories)
+
+
+
+
+ ..\minidx9\Include;%(AdditionalIncludeDirectories)
+
+
+
+
+ ..\minidx9\Include;%(AdditionalIncludeDirectories)
+
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+ $(SolutionDir)lib\$(Configuration)-$(Platform)\
+ $(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\
+
+
+
+ {c4a10229-4712-4bd2-b63e-50d93c67a038}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rpcs3/XAudio.vcxproj.filters b/rpcs3/XAudio.vcxproj.filters
new file mode 100644
index 000000000..6b9690542
--- /dev/null
+++ b/rpcs3/XAudio.vcxproj.filters
@@ -0,0 +1,19 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Fichiers sources
+
+
+
+
+ Fichiers sources
+
+
+
\ No newline at end of file
diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj
index 1d2f5f1d6..ddfa06f7b 100644
--- a/rpcs3/emucore.vcxproj
+++ b/rpcs3/emucore.vcxproj
@@ -223,10 +223,8 @@
-
-
@@ -499,12 +497,10 @@
-
-
diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters
index 8ae7833a6..30963300e 100644
--- a/rpcs3/emucore.vcxproj.filters
+++ b/rpcs3/emucore.vcxproj.filters
@@ -39,9 +39,6 @@
{5a18e5b1-2632-4849-ba94-e7a2ea0b78fa}
-
- {f5d19014-3c8f-43d2-bb46-af3d7f4add2b}
-
{960c535f-dabe-4f7e-b73f-fb0fac60d7c0}
@@ -75,9 +72,6 @@
{1eae80f6-5aef-4049-81a0-bbfd7602f8f6}
-
- {1d6abf72-0f18-43ec-9351-1fed1a3d1a1e}
-
{2a8841dc-bce0-41bb-9fcb-5bf1f8dda213}
@@ -359,9 +353,6 @@
Emu\Audio
-
- Emu\Audio\AL
-
Emu\Memory
@@ -527,9 +518,6 @@
Utilities
-
- Emu\Audio\XAudio2
-
Emu\SysCalls\Modules
@@ -1256,9 +1244,6 @@
Emu\Audio
-
- Emu\Audio\AL
-
Emu\Memory
@@ -1469,9 +1454,6 @@
Emu\Audio
-
- Emu\Audio\XAudio2
-
Emu\SysCalls\Modules
diff --git a/rpcs3/rpcs3.cpp b/rpcs3/rpcs3.cpp
index 0ff4e3c84..ef79af239 100644
--- a/rpcs3/rpcs3.cpp
+++ b/rpcs3/rpcs3.cpp
@@ -32,8 +32,11 @@
#include "Emu/RSX/Null/NullGSRender.h"
#include "Emu/RSX/GL/GLGSRender.h"
+#include "Emu/Audio/Null/NullAudioThread.h"
+#include "Emu/Audio/AL/OpenALThread.h"
#ifdef _MSC_VER
#include "Emu/RSX/D3D12/D3D12GSRender.h"
+#include "Emu/Audio/XAudio2/XAudio2Thread.h"
#endif
#ifdef _WIN32
@@ -144,6 +147,19 @@ bool Rpcs3App::OnInit()
}
};
+ callbacks.get_audio = []() -> std::shared_ptr
+ {
+ switch (rpcs3::state.config.audio.out.value())
+ {
+ default:
+ case audio_output_type::Null: return std::make_shared();
+ case audio_output_type::OpenAL: return std::make_shared();
+#ifdef _MSC_VER
+ case audio_output_type::XAudio2: return std::make_shared();
+#endif
+ }
+ };
+
callbacks.get_msg_dialog = []() -> std::shared_ptr
{
return std::make_shared();
diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj
index 9e3439594..9ea603980 100644
--- a/rpcs3/rpcs3.vcxproj
+++ b/rpcs3/rpcs3.vcxproj
@@ -107,6 +107,36 @@
false
+
+ ..\minidx9\Include;..\OpenAL\include;%(AdditionalIncludeDirectories)
+
+
+ ..\minidx9\Include;..\OpenAL\include;%(AdditionalIncludeDirectories)
+
+
+ ..\minidx9\Include;..\OpenAL\include;%(AdditionalIncludeDirectories)
+
+
+ ..\minidx9\Include;..\OpenAL\include;%(AdditionalIncludeDirectories)
+
+
+ ..\minidx9\Include;..\OpenAL\include;%(AdditionalIncludeDirectories)
+
+
+ ..\OpenAL\libs\Win64;%(AdditionalLibraryDirectories)
+
+
+ ..\OpenAL\libs\Win64;%(AdditionalLibraryDirectories)
+
+
+ ..\OpenAL\libs\Win64;%(AdditionalLibraryDirectories)
+
+
+ ..\OpenAL\libs\Win64;%(AdditionalLibraryDirectories)
+
+
+ ..\OpenAL\libs\Win64;%(AdditionalLibraryDirectories)
+
@@ -191,6 +221,12 @@
{3384223a-6d97-4799-9862-359f85312892}
+
+ {30a05c4d-f5fd-421c-a864-17a64bdeaa75}
+
+
+ {78cb2f39-b809-4a06-8329-8c0a19119d3d}
+
diff --git a/rpcs3_default.props b/rpcs3_default.props
index 85f925671..e15c2e89c 100644
--- a/rpcs3_default.props
+++ b/rpcs3_default.props
@@ -6,7 +6,7 @@
true
- .\;..\;..\asmjit\src\asmjit;..\wxWidgets\include\msvc;..\wxWidgets\include;.\OpenAL\include;..\ffmpeg\WindowsInclude;..\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);..\llvm\include;..\llvm_build\include;$(UniversalCRT_IncludePath);..\minidx9\Include;..\minidx12\Include;..\glm
+ .\;..\;..\asmjit\src\asmjit;..\wxWidgets\include\msvc;..\wxWidgets\include;..\ffmpeg\WindowsInclude;..\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);..\llvm\include;..\llvm_build\include;$(UniversalCRT_IncludePath);..\minidx12\Include;..\glm
Level3
false
true
@@ -20,7 +20,7 @@
true
odbc32.lib;odbccp32.lib;comctl32.lib;ws2_32.lib;shlwapi.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;%(AdditionalDependencies)
true
- ..\wxWidgets\lib\vc_x64_lib;..\ffmpeg\Windows\x86_64\lib;..\OpenAL\libs\Win64
+ ..\wxWidgets\lib\vc_x64_lib;..\ffmpeg\Windows\x86_64\lib
0x10000
false