diff --git a/pcsx2_suite_2008.sln b/pcsx2_suite_2008.sln
index d72e6c3e0a..12e10535a3 100644
--- a/pcsx2_suite_2008.sln
+++ b/pcsx2_suite_2008.sln
@@ -33,6 +33,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPU2-X", "plugins\spu2-x\sr
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D} = {E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}
{C34487AF-228A-4D11-8E50-27803DF76873} = {C34487AF-228A-4D11-8E50-27803DF76873}
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E} = {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}
+ {A51123F5-9505-4EAE-85E7-D320290A272C} = {A51123F5-9505-4EAE-85E7-D320290A272C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSdx", "plugins\GSdx\GSdx_vs2008.vcproj", "{18E42F6F-3A62-41EE-B42F-79366C4F1E95}"
diff --git a/plugins/spu2-x/src/Global.h b/plugins/spu2-x/src/Global.h
index e5e4efb908..ee69ef9ce2 100644
--- a/plugins/spu2-x/src/Global.h
+++ b/plugins/spu2-x/src/Global.h
@@ -73,6 +73,7 @@ static __forceinline T GetClamped( T src, T min, T max )
}
extern void SysMessage(const char *fmt, ...);
+extern void SysMessage(const wchar_t *fmt, ...);
//////////////////////////////////////////////////////////////
// Dev / Debug conditionals --
diff --git a/plugins/spu2-x/src/PS2E-spu2.cpp b/plugins/spu2-x/src/PS2E-spu2.cpp
index e380696c2d..d686cc2204 100644
--- a/plugins/spu2-x/src/PS2E-spu2.cpp
+++ b/plugins/spu2-x/src/PS2E-spu2.cpp
@@ -126,14 +126,28 @@ EXPORT_C_(void) SPU2configure()
EXPORT_C_(void) SPU2about()
{
- //InitLibraryName();
- //SysMessage( libraryName );
AboutBox();
}
+#include "x86emitter/tools.h"
+
EXPORT_C_(s32) SPU2test()
{
- return SndBuffer::Test();
+ cpudetectInit();
+ if( !x86caps.hasStreamingSIMDExtensions || !x86caps.hasStreamingSIMD2Extensions )
+ {
+ SysMessage( "Your CPU does not support SSE2 instructions.\nThe SPU2-X plugin requires SSE2 to run." );
+ return -1;
+ }
+
+ if( !SndBuffer::Test() )
+ {
+ // TODO : Implement a proper dialog that allows the user to test different audio out drivers.
+ SysMessage( L"The '%s' driver test failed. Please configure\ndifferent SoundOut module and try again.", mods[OutputModule]->GetIdent() );
+ return -1;
+ }
+
+ return 0;
}
// --------------------------------------------------------------------------------------
diff --git a/plugins/spu2-x/src/Windows/CfgHelpers.cpp b/plugins/spu2-x/src/Windows/CfgHelpers.cpp
index 4969db6ac1..8e180c6a72 100644
--- a/plugins/spu2-x/src/Windows/CfgHelpers.cpp
+++ b/plugins/spu2-x/src/Windows/CfgHelpers.cpp
@@ -28,7 +28,18 @@ void SysMessage(const char *fmt, ...)
sprintf_s(tmp,fmt,list);
va_end(list);
swprintf_s(wtmp, L"%S", tmp);
- MessageBox(0, wtmp, L"SPU2-X System Message", 0);
+ MessageBox( GetActiveWindow(), wtmp, L"SPU2-X System Message", MB_OK | MB_SETFOREGROUND);
+}
+
+void SysMessage(const wchar_t *fmt, ...)
+{
+ va_list list;
+ wchar_t wtmp[512];
+
+ va_start(list,fmt);
+ swprintf_s(wtmp,fmt,list);
+ va_end(list);
+ MessageBox( GetActiveWindow(), wtmp, L"SPU2-X System Message", MB_OK | MB_SETFOREGROUND);
}
//////
diff --git a/plugins/spu2-x/src/Windows/Spu2-X_vs2008.vcproj b/plugins/spu2-x/src/Windows/Spu2-X_vs2008.vcproj
index 8c2cf88fd9..69131b61e2 100644
--- a/plugins/spu2-x/src/Windows/Spu2-X_vs2008.vcproj
+++ b/plugins/spu2-x/src/Windows/Spu2-X_vs2008.vcproj
@@ -18,7 +18,7 @@