diff --git a/plugins/spu2-x/src/Dma.cpp b/plugins/spu2-x/src/Dma.cpp index ef69752971..57bea6131d 100644 --- a/plugins/spu2-x/src/Dma.cpp +++ b/plugins/spu2-x/src/Dma.cpp @@ -243,45 +243,6 @@ void DoDMAWrite(int core,u16 *pMem,u32 size) cacheLine++; } while ( cacheLine != &cacheEnd ); -#if 0 - // Pcm Cache Invalidation! - // It's a requirement that we mask bits for the blocks that are written to *only*, - // because doing anything else can cause the cache to fail, thanks to the progressive - // nature of the SPU2's ADPCM encoding. (the same thing that makes it impossible - // to use SSE optimizations on it). - - u8* cache = (u8*)pcm_cache_flags; - - // Step 1: Clear bits in the front remainder. - - const int pcmTSA = Cores[core].TSA / pcm_WordsPerBlock; - const int pcmTDA = buff1end / pcm_WordsPerBlock; - const int remFront = pcmTSA & 31; - const int remBack = ((buff1end+pcm_WordsPerBlock-1)/pcm_WordsPerBlock) & 31; // round up to get the end remainder - - int flagTSA = pcmTSA / 32; - - if( remFront ) - { - // need to clear some upper bits of this u32 - uint mask = (1ul< 0 ) { // second branch needs cleared: @@ -388,13 +353,15 @@ void SPU2readDMA(int core, u16* pMem, u32 size) } } } + + Cores[core].TDA = buff2end; } else { // Buffer doesn't wrap/overflow! // Just set the TDA and check for an IRQ... - Cores[core].TDA = buff1end; + Cores[core].TDA = (buff1end + 0x20) & 0xfffff; for( int i=0; i<2; i++ ) { @@ -411,6 +378,7 @@ void SPU2readDMA(int core, u16* pMem, u32 size) } } } + Cores[core].TDA = buff1end; } diff --git a/plugins/spu2-x/src/SndOut.cpp b/plugins/spu2-x/src/SndOut.cpp index 9fbda2a5ba..2c047736b4 100644 --- a/plugins/spu2-x/src/SndOut.cpp +++ b/plugins/spu2-x/src/SndOut.cpp @@ -78,6 +78,14 @@ public: return L"No Sound (Emulate SPU2 only)"; } + void ReadSettings() + { + } + + void WriteSettings() const + { + } + } NullOut; SndOutModule* mods[]= diff --git a/plugins/spu2-x/src/SndOut.h b/plugins/spu2-x/src/SndOut.h index 4bdddb0315..c97851938d 100644 --- a/plugins/spu2-x/src/SndOut.h +++ b/plugins/spu2-x/src/SndOut.h @@ -339,7 +339,7 @@ class SndOutModule { public: // Virtual destructor, because it helps fight C+++ funny-business. - virtual ~SndOutModule(){}; + virtual ~SndOutModule() {} // Returns a unique identification string for this driver. // (usually just matches the driver's cpp filename) @@ -352,11 +352,20 @@ public: virtual s32 Init()=0; virtual void Close()=0; virtual s32 Test() const=0; + + // Gui function: Used to open the configuration box for this driver. #ifdef _MSC_VER virtual void Configure(HWND parent)=0; #else virtual void Configure(uptr parent)=0; #endif + + // Loads settings from the INI file for this driver + virtual void ReadSettings()=0; + + // Saves settings to the INI file for this driver + virtual void WriteSettings() const=0; + virtual bool Is51Out() const=0; // Returns the number of empty samples in the output buffer. diff --git a/plugins/spu2-x/src/Win32/Config.cpp b/plugins/spu2-x/src/Win32/Config.cpp index dfe3958c20..b400380b9c 100644 --- a/plugins/spu2-x/src/Win32/Config.cpp +++ b/plugins/spu2-x/src/Win32/Config.cpp @@ -47,7 +47,6 @@ bool timeStretchDisabled = false; u32 OutputModule = 0; -CONFIG_DSOUNDOUT Config_DSoundOut; CONFIG_WAVEOUT Config_WaveOut; CONFIG_XAUDIO2 Config_XAudio2; @@ -65,7 +64,7 @@ void ReadSettings() AutoDMAPlayRate[0] = CfgReadInt(L"MIXING",L"AutoDMA_Play_Rate_0",0); AutoDMAPlayRate[1] = CfgReadInt(L"MIXING",L"AutoDMA_Play_Rate_1",0); - Interpolation = CfgReadInt(L"MIXING",L"Interpolation",1); + Interpolation = CfgReadInt( L"MIXING",L"Interpolation", 1 ); timeStretchDisabled = CfgReadBool( L"OUTPUT", L"Disable_Timestretch", false ); EffectsDisabled = CfgReadBool( L"MIXING", L"Disable_Effects", false ); @@ -84,11 +83,11 @@ void ReadSettings() dspPluginEnabled= CfgReadBool(L"DSP PLUGIN",L"Enabled",false); // Read DSOUNDOUT and WAVEOUT configs: - CfgReadStr( L"DSOUNDOUT", L"Device", Config_DSoundOut.Device, 254, L"default" ); CfgReadStr( L"WAVEOUT", L"Device", Config_WaveOut.Device, 254, L"default" ); - Config_DSoundOut.NumBuffers = CfgReadInt( L"DSOUNDOUT", L"Buffer_Count", 5 ); Config_WaveOut.NumBuffers = CfgReadInt( L"WAVEOUT", L"Buffer_Count", 4 ); + DSoundOut->ReadSettings(); + SoundtouchCfg::ReadSettings(); DebugConfig::ReadSettings(); @@ -97,9 +96,6 @@ void ReadSettings() Clampify( SndOutLatencyMS, LATENCY_MIN, LATENCY_MAX ); - Clampify( Config_DSoundOut.NumBuffers, (s8)2, (s8)8 ); - Clampify( Config_DSoundOut.NumBuffers, (s8)3, (s8)8 ); - if( mods[OutputModule] == NULL ) { // Unsupported or legacy module. @@ -125,19 +121,15 @@ void WriteSettings() CfgWriteBool(L"OUTPUT",L"Disable_Timestretch", timeStretchDisabled); CfgWriteBool(L"OUTPUT",L"Disable_StereoExpansion", StereoExpansionDisabled); - if( Config_DSoundOut.Device.empty() ) Config_DSoundOut.Device = L"default"; if( Config_WaveOut.Device.empty() ) Config_WaveOut.Device = L"default"; - - CfgWriteStr(L"DSOUNDOUT",L"Device",Config_DSoundOut.Device); - CfgWriteInt(L"DSOUNDOUT",L"Buffer_Count",Config_DSoundOut.NumBuffers); - CfgWriteStr(L"WAVEOUT",L"Device",Config_WaveOut.Device); CfgWriteInt(L"WAVEOUT",L"Buffer_Count",Config_WaveOut.NumBuffers); CfgWriteStr(L"DSP PLUGIN",L"Filename",dspPlugin); CfgWriteInt(L"DSP PLUGIN",L"ModuleNum",dspPluginModule); CfgWriteBool(L"DSP PLUGIN",L"Enabled",dspPluginEnabled); - + + DSoundOut->WriteSettings(); SoundtouchCfg::WriteSettings(); DebugConfig::WriteSettings(); diff --git a/plugins/spu2-x/src/Win32/Config.h b/plugins/spu2-x/src/Win32/Config.h index 57c6ad734e..bd1ff56079 100644 --- a/plugins/spu2-x/src/Win32/Config.h +++ b/plugins/spu2-x/src/Win32/Config.h @@ -128,19 +128,6 @@ struct CONFIG_XAUDIO2 } }; -// DSOUND -struct CONFIG_DSOUNDOUT -{ - std::wstring Device; - s8 NumBuffers; - - CONFIG_DSOUNDOUT() : - Device(), - NumBuffers( 3 ) - { - } -}; - // WAVEOUT struct CONFIG_WAVEOUT { @@ -154,7 +141,6 @@ struct CONFIG_WAVEOUT } }; -extern CONFIG_DSOUNDOUT Config_DSoundOut; extern CONFIG_WAVEOUT Config_WaveOut; extern CONFIG_XAUDIO2 Config_XAudio2; diff --git a/plugins/spu2-x/src/Win32/SndOut_DSound.cpp b/plugins/spu2-x/src/Win32/SndOut_DSound.cpp index a45b33e1f2..b18d987346 100644 --- a/plugins/spu2-x/src/Win32/SndOut_DSound.cpp +++ b/plugins/spu2-x/src/Win32/SndOut_DSound.cpp @@ -25,21 +25,29 @@ #define DIRECTSOUND_VERSION 0x1000 #include -static ds_device_data devices[32]; -static int ndevs; -static GUID DevGuid; // currently employed GUID. -static bool haveGuid; - -class DSound: public SndOutModule +class DSound : public SndOutModule { private: static const uint MAX_BUFFER_COUNT = 8; - static const int PacketsPerBuffer = 1; static const int BufferSize = SndOutPacketSize * PacketsPerBuffer; + ////////////////////////////////////////////////////////////////////////////////////////// + // Configuration Vars - u32 numBuffers; // cached copy of our configuration setting. + wstring m_Device; + u8 m_NumBuffers; + bool m_DisableGlobalFocus; + bool m_UseHardware; + + ds_device_data m_devices[32]; + int ndevs; + GUID DevGuid; // currently employed GUID. + bool haveGuid; + + ////////////////////////////////////////////////////////////////////////////////////////// + // Instance vars + int channel; int myLastWrite; // last write position, in bytes @@ -69,7 +77,7 @@ private: while( dsound_running ) { - u32 rv = WaitForMultipleObjects(numBuffers,buffer_events,FALSE,200); + u32 rv = WaitForMultipleObjects(m_NumBuffers,buffer_events,FALSE,200); T* p1, *oldp1; LPVOID p2; @@ -99,8 +107,6 @@ private: public: s32 Init() { - numBuffers = Config_DSoundOut.NumBuffers; - // // Initialize DSound // @@ -108,12 +114,12 @@ public: try { - if( Config_DSoundOut.Device.empty() ) + if( m_Device.empty() ) throw std::runtime_error( "screw it" ); // Convert from unicode to ANSI: char guid[256]; - sprintf_s( guid, "%S", Config_DSoundOut.Device.c_str() ); + sprintf_s( guid, "%S", m_Device.c_str() ); if( (FAILED(GUIDFromString( guid, &cGuid ))) || FAILED( DirectSoundCreate8(&cGuid,&dsound,NULL) ) ) @@ -155,16 +161,29 @@ public: memset(&desc, 0, sizeof(DSBUFFERDESC)); desc.dwSize = sizeof(DSBUFFERDESC); - desc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPOSITIONNOTIFY;// _CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY; - desc.dwBufferBytes = BufferSizeBytes * numBuffers; + desc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPOSITIONNOTIFY; + desc.dwBufferBytes = BufferSizeBytes * m_NumBuffers; desc.lpwfxFormat = &wfx; - desc.dwFlags |= DSBCAPS_LOCSOFTWARE; - desc.dwFlags |= DSBCAPS_GLOBALFOCUS; + // Try a hardware buffer first, and then fall back on a software buffer if + // that one fails. - if( FAILED(dsound->CreateSoundBuffer(&desc,&buffer_,0) ) ) - throw std::runtime_error( "DirectSound Error: Interface could not be queried." ); - + desc.dwFlags |= m_UseHardware ? DSBCAPS_LOCHARDWARE : DSBCAPS_LOCSOFTWARE; + desc.dwFlags |= m_DisableGlobalFocus ? DSBCAPS_STICKYFOCUS : DSBCAPS_GLOBALFOCUS; + + if( FAILED(dsound->CreateSoundBuffer(&desc, &buffer_, 0) ) ) + { + if( m_UseHardware ) + { + desc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_LOCSOFTWARE; + desc.dwFlags |= m_DisableGlobalFocus ? DSBCAPS_STICKYFOCUS : DSBCAPS_GLOBALFOCUS; + + if( FAILED(dsound->CreateSoundBuffer(&desc, &buffer_, 0) ) ) + throw std::runtime_error( "DirectSound Error: Buffer could not be created." ); + } + + throw std::runtime_error( "DirectSound Error: Buffer could not be created." ); + } if( FAILED(buffer_->QueryInterface(IID_IDirectSoundBuffer8,(void**)&buffer)) ) throw std::runtime_error( "DirectSound Error: Interface could not be queried." ); @@ -173,7 +192,7 @@ public: DSBPOSITIONNOTIFY not[MAX_BUFFER_COUNT]; - for(u32 i=0;iSetNotificationPositions(numBuffers,not); + buffer_notify->SetNotificationPositions(m_NumBuffers,not); LPVOID p1=0,p2=0; DWORD s1=0,s2=0; @@ -224,7 +243,7 @@ public: { buffer->Stop(); - for(u32 i=0;i=0) - { SendMessage(GetDlgItem(hWnd,IDC_DS_DEVICE),CB_SETCURSEL,tSel,0); - } INIT_SLIDER( IDC_BUFFERS_SLIDER, 2, MAX_BUFFER_COUNT, 2, 1, 1 ); - SendMessage(GetDlgItem(hWnd,IDC_BUFFERS_SLIDER),TBM_SETPOS,TRUE,Config_DSoundOut.NumBuffers); - swprintf_s(temp, L"%d (%d ms latency)",Config_DSoundOut.NumBuffers, 1000 / (96000 / (Config_DSoundOut.NumBuffers * BufferSize))); + SendMessage(GetDlgItem(hWnd,IDC_BUFFERS_SLIDER),TBM_SETPOS,TRUE,m_NumBuffers); + swprintf_s(temp, L"%d (%d ms latency)",m_NumBuffers, 1000 / (96000 / (m_NumBuffers * BufferSize))); SetWindowText(GetDlgItem(hWnd,IDC_LATENCY_LABEL),temp); + + SET_CHECK( IDC_GLOBALFOCUS_DISABLE, m_DisableGlobalFocus ); + SET_CHECK( IDC_USE_HARDWARE, m_UseHardware ); } break; @@ -310,41 +328,47 @@ private: switch (wmId) { case IDOK: + { + int i = (int)SendMessage(GetDlgItem(hWnd,IDC_DS_DEVICE),CB_GETCURSEL,0,0); + + if(!m_devices[i].hasGuid) { - int i = (int)SendMessage(GetDlgItem(hWnd,IDC_DS_DEVICE),CB_GETCURSEL,0,0); - - if(!devices[i].hasGuid) - { - Config_DSoundOut.Device[0] = 0; // clear device name to "" - } - else - { - swprintf_s(temp, L"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", - devices[i].guid.Data1, - devices[i].guid.Data2, - devices[i].guid.Data3, - devices[i].guid.Data4[0], - devices[i].guid.Data4[1], - devices[i].guid.Data4[2], - devices[i].guid.Data4[3], - devices[i].guid.Data4[4], - devices[i].guid.Data4[5], - devices[i].guid.Data4[6], - devices[i].guid.Data4[7] - ); - Config_DSoundOut.Device = temp; - } - - Config_DSoundOut.NumBuffers = (int)SendMessage( GetDlgItem( hWnd, IDC_BUFFERS_SLIDER ), TBM_GETPOS, 0, 0 ); - - if( Config_DSoundOut.NumBuffers < 2 ) Config_DSoundOut.NumBuffers = 2; - if( Config_DSoundOut.NumBuffers > MAX_BUFFER_COUNT ) Config_DSoundOut.NumBuffers = MAX_BUFFER_COUNT; + m_Device[0] = 0; // clear device name to "" } + else + { + swprintf_s(temp, L"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", + m_devices[i].guid.Data1, + m_devices[i].guid.Data2, + m_devices[i].guid.Data3, + m_devices[i].guid.Data4[0], + m_devices[i].guid.Data4[1], + m_devices[i].guid.Data4[2], + m_devices[i].guid.Data4[3], + m_devices[i].guid.Data4[4], + m_devices[i].guid.Data4[5], + m_devices[i].guid.Data4[6], + m_devices[i].guid.Data4[7] + ); + m_Device = temp; + } + + m_NumBuffers = (int)SendMessage( GetDlgItem( hWnd, IDC_BUFFERS_SLIDER ), TBM_GETPOS, 0, 0 ); + + if( m_NumBuffers < 2 ) m_NumBuffers = 2; + if( m_NumBuffers > MAX_BUFFER_COUNT ) m_NumBuffers = MAX_BUFFER_COUNT; + EndDialog(hWnd,0); - break; + } + break; + case IDCANCEL: EndDialog(hWnd,0); - break; + break; + + HANDLE_CHECK( IDC_GLOBALFOCUS_DISABLE, m_DisableGlobalFocus ); + HANDLE_CHECK( IDC_USE_HARDWARE, m_UseHardware ); + default: return FALSE; } @@ -355,14 +379,15 @@ private: { wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); - switch(wmId) { + switch(wmId) + { //case TB_ENDTRACK: //case TB_THUMBPOSITION: case TB_LINEUP: case TB_LINEDOWN: case TB_PAGEUP: case TB_PAGEDOWN: - wmEvent=(int)SendMessage((HWND)lParam,TBM_GETPOS,0,0); + wmEvent = (int)SendMessage((HWND)lParam,TBM_GETPOS,0,0); case TB_THUMBTRACK: { wchar_t temp[128]; @@ -385,6 +410,9 @@ private: return TRUE; } + static BOOL CALLBACK ConfigProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + static BOOL CALLBACK DSEnumCallback( LPGUID lpGuid, LPCTSTR lpcstrDescription, LPCTSTR lpcstrModule, LPVOID lpContext ); + public: virtual void Configure(HWND parent) { @@ -427,7 +455,36 @@ public: { return L"DirectSound (nice)"; } + + void ReadSettings() + { + CfgReadStr( L"DSOUNDOUT", L"Device", m_Device, 254, L"default" ); + m_NumBuffers = CfgReadInt( L"DSOUNDOUT", L"Buffer_Count", 5 ); + m_DisableGlobalFocus = CfgReadBool( L"DSOUNDOUT", L"Disable_Global_Focus", false ); + m_UseHardware = CfgReadBool( L"DSOUNDOUT", L"Use_Hardware", false ); + + Clampify( m_NumBuffers, (u8)3, (u8)8 ); + } + + void WriteSettings() const + { + CfgWriteStr( L"DSOUNDOUT", L"Device", m_Device.empty() ? L"default" : m_Device ); + CfgWriteInt( L"DSOUNDOUT", L"Buffer_Count", m_NumBuffers ); + CfgWriteBool( L"DSOUNDOUT", L"Disable_Global_Focus", m_DisableGlobalFocus ); + CfgWriteBool( L"DSOUNDOUT", L"Use_Hardware", m_UseHardware ); + } } DS; -SndOutModule *DSoundOut=&DS; +BOOL CALLBACK DSound::ConfigProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + return DS._ConfigProc( hWnd, uMsg, wParam, lParam ); +} + +BOOL CALLBACK DSound::DSEnumCallback( LPGUID lpGuid, LPCTSTR lpcstrDescription, LPCTSTR lpcstrModule, LPVOID lpContext ) +{ + jASSUME( DSoundOut != NULL ); + return DS._DSEnumCallback( lpGuid, lpcstrDescription, lpcstrModule, lpContext ); +} + +SndOutModule *DSoundOut = &DS; diff --git a/plugins/spu2-x/src/Win32/SndOut_XAudio2.cpp b/plugins/spu2-x/src/Win32/SndOut_XAudio2.cpp index 8354c6aa96..8b7cefaf33 100644 --- a/plugins/spu2-x/src/Win32/SndOut_XAudio2.cpp +++ b/plugins/spu2-x/src/Win32/SndOut_XAudio2.cpp @@ -367,6 +367,14 @@ public: return L"XAudio 2 (Recommended)"; } + void ReadSettings() + { + } + + void WriteSettings() const + { + } + } XA2; SndOutModule *XAudio2Out = &XA2; diff --git a/plugins/spu2-x/src/Win32/SndOut_waveOut.cpp b/plugins/spu2-x/src/Win32/SndOut_waveOut.cpp index bbe6485d61..1394f6a275 100644 --- a/plugins/spu2-x/src/Win32/SndOut_waveOut.cpp +++ b/plugins/spu2-x/src/Win32/SndOut_waveOut.cpp @@ -316,6 +316,14 @@ public: return L"waveOut (Laggy)"; } + void ReadSettings() + { + } + + void WriteSettings() const + { + } + } WO; SndOutModule *WaveOut = &WO; diff --git a/plugins/spu2-x/src/Win32/Spu2-X.rc b/plugins/spu2-x/src/Win32/Spu2-X.rc index 97ab3edbd5..94c31330d7 100644 --- a/plugins/spu2-x/src/Win32/Spu2-X.rc +++ b/plugins/spu2-x/src/Win32/Spu2-X.rc @@ -83,19 +83,22 @@ BEGIN DEFPUSHBUTTON "Close",IDOK,269,504,50,14 END -IDD_DSOUND DIALOGEX 0, 0, 182, 121 +IDD_DSOUND DIALOGEX 0, 0, 196, 218 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "DirectSound Output Module Settings" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,67,103,50,14 - PUSHBUTTON "Cancel",IDCANCEL,127,103,50,14 - COMBOBOX IDC_DS_DEVICE,4,15,173,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK",IDOK,83,200,50,14 + PUSHBUTTON "Cancel",IDCANCEL,141,200,50,14 + COMBOBOX IDC_DS_DEVICE,4,15,146,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "DirectSound Device",IDC_STATIC,4,3,63,8 - LTEXT "Number of Buffers",IDC_STATIC,4,40,61,11 - CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,74,48,103,10 - LTEXT "Increase the buffer count if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,8,66,169,27 - CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,78,37,95,11 + CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,38,137,108,10 + LTEXT "Increase the buffer count if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,11,157,169,27 + CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,44,123,95,11 + CONTROL "Disable Global Focus",IDC_GLOBALFOCUS_DISABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,4,38,140,10 + LTEXT "If you have audio problems, try checking one or both of the options above. They don't really affect sound processing, but some drivers are picky and work nicer with different seetings.",IDC_STATIC,16,68,175,38 + CONTROL "Use Hardware Buffers",IDC_USE_HARDWARE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,53,140,10 + GROUPBOX "Output Buffers",IDC_STATIC,4,111,185,79 END IDD_WAVEOUT DIALOGEX 0, 0, 170, 122 @@ -210,9 +213,9 @@ BEGIN IDD_DSOUND, DIALOG BEGIN LEFTMARGIN, 4 - RIGHTMARGIN, 177 + RIGHTMARGIN, 191 TOPMARGIN, 3 - BOTTOMMARGIN, 117 + BOTTOMMARGIN, 214 END IDD_WAVEOUT, DIALOG diff --git a/plugins/spu2-x/src/Win32/resource.h b/plugins/spu2-x/src/Win32/resource.h index 1607a60ced..a508cf2e3e 100644 --- a/plugins/spu2-x/src/Win32/resource.h +++ b/plugins/spu2-x/src/Win32/resource.h @@ -50,6 +50,9 @@ #define IDC_RESET_DEFAULTS 1057 #define IDC_OPEN_CONFIG_SOUNDTOUCH 1058 #define IDC_OPEN_CONFIG_DEBUG 1059 +#define IDC_GLOBALFOCUS_DISABLE 1060 +#define IDC_GLOBALFOCUS_DISABLE2 1061 +#define IDC_USE_HARDWARE 1061 // Next default values for new objects // @@ -57,7 +60,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 119 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1060 +#define _APS_NEXT_CONTROL_VALUE 1061 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif