diff --git a/pcsx2_suite_2008.sln b/pcsx2_suite_2008.sln index 5e56431fdb..8cdbed4367 100644 --- a/pcsx2_suite_2008.sln +++ b/pcsx2_suite_2008.sln @@ -148,6 +148,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdv EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vc2008.vcproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadSSSPSX", "plugins\SSSPSXPAD\PadSSSPSX_vc2008.vcproj", "{6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -686,6 +688,24 @@ Global {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32 {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.Build.0 = Release|Win32 {5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Debug|Win32.ActiveCfg = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Debug|Win32.Build.0 = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Debug|x64.ActiveCfg = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Devel|Win32.ActiveCfg = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Devel|Win32.Build.0 = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Devel|x64.ActiveCfg = Debug|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE2|Win32.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE2|Win32.Build.0 = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE2|x64.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE4|Win32.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE4|Win32.Build.0 = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSE4|x64.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSSE3|Win32.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSSE3|Win32.Build.0 = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release SSSE3|x64.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release|Win32.ActiveCfg = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release|Win32.Build.0 = Release|Win32 + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -701,6 +721,7 @@ Global {E1828E40-2FBB-48FE-AE7F-5587755DCE0E} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} {5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} {5CF88D5F-64DD-4EDC-9F1A-436BD502940A} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} + {6C8D28E4-447E-4856-BD9E-6B8F5E7C58C9} = {703FD00B-D7A0-41E3-BD03-CEC86B385DAF} {2F6C0388-20CB-4242-9F6C-A6EBB6A83F47} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {F4EB4AB2-C595-4B05-8BC0-059024BC796C} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {26511268-2902-4997-8421-ECD7055F9E28} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} diff --git a/plugins/SSSPSXPAD/PadSSSPSX.cpp b/plugins/SSSPSXPAD/PadSSSPSX.cpp index 1af632c045..a59398b0be 100644 --- a/plugins/SSSPSXPAD/PadSSSPSX.cpp +++ b/plugins/SSSPSXPAD/PadSSSPSX.cpp @@ -6,17 +6,40 @@ #include #include #include +#include #include "PadSSSPSX.h" -static const char* LibraryName = "SSSPSX PAD Plugin Pressure Mod"; +#ifdef _MSC_VER +# include "svnrev.h" +#endif + static const unsigned char version = 0x0002; static const unsigned char revision = 1; static const unsigned char build = 6; +static const unsigned char buildfix = 1; HMODULE hInstance; HWND hTargetWnd; +static std::string s_strIniPath( "inis/" ); + +static CRITICAL_SECTION update_lock; + +struct EnterScopedSection +{ + CRITICAL_SECTION& m_cs; + + EnterScopedSection( CRITICAL_SECTION& cs ) : m_cs( cs ) { + EnterCriticalSection( &m_cs ); + } + + ~EnterScopedSection() { + LeaveCriticalSection( &m_cs ); + } +}; + + static struct { Config config; @@ -315,17 +338,20 @@ static bool GetKeyState (u8* keyboard) return TRUE; } -static void MakeConfigFileName (char* fname) +static std::string MakeConfigFileName() { - GetModuleFileName (hInstance, fname, 256); - strcpy (fname + strlen (fname) - 3, "cfg"); + //GetModuleFileName (hInstance, fname, 256); + //strcpy (fname + strlen (fname) - 3, "cfg"); + + return s_strIniPath + "PadSSSPSX.cfg"; } static void SaveConfig (void) { - char fname[256]; - MakeConfigFileName (fname); - HANDLE hFile = CreateFile (fname, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + const std::string fname( MakeConfigFileName() ); + CreateDirectory( s_strIniPath.c_str(), NULL ); + + HANDLE hFile = CreateFile (fname.c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (hFile != INVALID_HANDLE_VALUE) { DWORD number_of_bytes; @@ -336,9 +362,8 @@ static void SaveConfig (void) static void LoadConfig (void) { - char fname[256]; - MakeConfigFileName (fname); - HANDLE hFile = CreateFile (fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + const std::string fname( MakeConfigFileName() ); + HANDLE hFile = CreateFile (fname.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (hFile != INVALID_HANDLE_VALUE) { DWORD number_of_bytes; @@ -421,7 +446,7 @@ static void UpdateState (const int pad) if (GetKeyState (keystate) == FALSE) return; } - KeyPress (pad, index, keystate[key] & 0x80); + KeyPress (pad, index, !!(keystate[key] & 0x80)); } else { @@ -434,7 +459,7 @@ static void UpdateState (const int pad) } if (key < 0x2000) { - KeyPress (pad, index, global.JoyState[joypad].rgbButtons[key & 0xff]); + KeyPress (pad, index, !!(global.JoyState[joypad].rgbButtons[key & 0xff])); } else if (key < 0x3000) { @@ -644,6 +669,57 @@ static BOOL CALLBACK ConfigureDlgProc (const HWND hWnd, const UINT msg, const WP return FALSE; } +static char LibraryName[256]; +#define SSSPSX_NAME "SSSPSX PAD Pressure Mod" + +static void InitLibraryName() +{ +#ifndef PCSX2_DEVBUILD + + // Public Release! + // Output a simplified string that's just our name: + + strcpy_s( LibraryName, SSSPSX_NAME ); + +#else + #ifdef SVN_REV_UNKNOWN + + // Unknown revision. + // Output a name that includes devbuild status but not + // subversion revision tags: + + strcpy_s( LibraryName, SSSPSX_NAME + #ifdef PCSX2_DEBUG + "-Debug" + #elif defined( PCSX2_DEVBUILD ) + "-Dev" + #else + "" + #endif + ); + + #else + + // Use TortoiseSVN's SubWCRev utility's output + // to label the specific revision: + + sprintf_s( LibraryName, SSSPSX_NAME " r%d%s" + #ifdef PCSX2_DEBUG + "-Debug" + #elif defined( PCSX2_DEVBUILD ) + "-Dev" + #else + "" + #endif + ,SVN_REV, + SVN_MODS ? "m" : "" + ); + #endif +#endif + +} + + u32 CALLBACK PS2EgetLibType (void) { return 0x02; @@ -651,12 +727,13 @@ u32 CALLBACK PS2EgetLibType (void) const char* CALLBACK PS2EgetLibName (void) { + InitLibraryName(); return LibraryName; } u32 CALLBACK PS2EgetLibVersion2 (u32 type) { - return (version << 16) | (revision << 8) | build; + return (version << 16) | (revision << 8) | build | (buildfix<<24); } u32 CALLBACK PSEgetLibType (void) @@ -666,6 +743,7 @@ u32 CALLBACK PSEgetLibType (void) const char* CALLBACK PSEgetLibName (void) { + InitLibraryName(); return LibraryName; } @@ -676,11 +754,13 @@ u32 CALLBACK PSEgetLibVersion (void) s32 CALLBACK PADinit (u32 flags) { + InitializeCriticalSection( &update_lock ); return 0; } void CALLBACK PADshutdown (void) { + DeleteCriticalSection( &update_lock ); } static int n_open = 0; @@ -778,6 +858,18 @@ static u8 get_pressure (const DWORD now, const DWORD press) return 255; } +// Should be called from the thread that owns our hwnd, but older versions of PCSX2 +// don't always follow that rule. Supposedly DInput is happiest called from the +// thread that owns the hwnd, but on the other hand it doesn't really seem to care +// in practice. So a basic mutex lock should do the trick. +void CALLBACK PADupdate (int pad) +{ + EnterScopedSection scoped_lock( update_lock ); + UpdateState( 0 ); + UpdateState( 1 ); +} + +// Called from the context of the EE thread. u8 CALLBACK PADpoll (const u8 value) { const int pad = global.curPad; @@ -799,7 +891,9 @@ u8 CALLBACK PADpoll (const u8 value) return 0xf3; case 0x42: case 0x43: - if (value == 0x42) UpdateState (pad); + { + EnterScopedSection scoped_lock( update_lock ); + //if (value == 0x42) UpdateState (pad); global.cmdLen = 2 + 2 * (global.padID[pad] & 0x0f); buf[1] = global.padModeC[pad] ? 0x00 : 0x5a; *(u16*)&buf[2] = global.padStat[pad]; @@ -836,6 +930,7 @@ u8 CALLBACK PADpoll (const u8 value) return (u8)global.padID[pad]; } break; + } case 0x44: global.cmdLen = sizeof (cmd44); memcpy (buf, cmd44, sizeof (cmd44)); @@ -862,13 +957,19 @@ u8 CALLBACK PADpoll (const u8 value) memcpy (buf, cmd4d, sizeof (cmd4d)); return 0xf3; case 0x4f: + { + EnterScopedSection scoped_lock( update_lock ); global.padID[pad] = 0x79; global.padMode2[pad] = 1; global.cmdLen = sizeof (cmd4f); memcpy (buf, cmd4f, sizeof (cmd4f)); return 0xf3; } + } } + + EnterScopedSection scoped_lock( update_lock ); + switch (global.curCmd) { case 0x42: @@ -1019,13 +1120,20 @@ void CALLBACK PADconfigure (void) void CALLBACK PADabout (void) { - MessageBox (0, "Copyright (C) 2004-2005 Nagisa", "SSSPSX PAD plugin", 0); + MessageBox (GetActiveWindow(), "Copyright (C) 2004-2005 Nagisa\nVersion 1.6.1\n\nModified by Jake Stine for PCSX2 0.9.7 compatibility.", + "SSSPSX PAD plugin", MB_OK | MB_SETFOREGROUND); } s32 CALLBACK PADtest (void) { return 0; } + +void CALLBACK PADsetSettingsDir(const char* dir) +{ + s_strIniPath = (dir==NULL) ? "inis/" : dir; +} + //#ifdef _WIN64 BOOL APIENTRY DllMain(HMODULE hInst, DWORD dwReason, LPVOID lpReserved) { diff --git a/plugins/SSSPSXPAD/PadSSSPSX.def b/plugins/SSSPSXPAD/PadSSSPSX.def index a791c60dd7..54e983e366 100644 --- a/plugins/SSSPSXPAD/PadSSSPSX.def +++ b/plugins/SSSPSXPAD/PadSSSPSX.def @@ -1,22 +1,23 @@ -LIBRARY "PadSSSPSX" - -EXPORTS - PSEgetLibType @1 - PSEgetLibName @2 - PSEgetLibVersion @3 - PS2EgetLibType @4 - PS2EgetLibName @5 - PS2EgetLibVersion2 @6 - PADinit @7 - PADshutdown @8 - PADopen @9 - PADclose @10 - PADkeyEvent @11 - PADstartPoll @12 - PADpoll @13 - PADreadPort1 @14 - PADreadPort2 @15 - PADquery @16 - PADconfigure @17 - PADtest @18 - PADabout @19 +;LIBRARY "PadSSSPSX" + +EXPORTS + PSEgetLibType @1 + PSEgetLibName @2 + PSEgetLibVersion @3 + PS2EgetLibType @4 + PS2EgetLibName @5 + PS2EgetLibVersion2 @6 + PADinit @7 + PADshutdown @8 + PADopen @9 + PADclose @10 + PADkeyEvent @11 + PADstartPoll @12 + PADpoll @13 + PADreadPort1 @14 + PADreadPort2 @15 + PADquery @16 + PADconfigure @17 + PADtest @18 + PADabout @19 + PADsetSettingsDir @20 \ No newline at end of file diff --git a/plugins/SSSPSXPAD/PadSSSPSX.vcproj b/plugins/SSSPSXPAD/PadSSSPSX.vcproj deleted file mode 100644 index ffdcde1e62..0000000000 --- a/plugins/SSSPSXPAD/PadSSSPSX.vcproj +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/SSSPSXPAD/PadSSSPSX_2005_x64.vcproj b/plugins/SSSPSXPAD/PadSSSPSX_2005_x64.vcproj deleted file mode 100644 index 10e14a5680..0000000000 --- a/plugins/SSSPSXPAD/PadSSSPSX_2005_x64.vcproj +++ /dev/null @@ -1,490 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.sln b/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.sln deleted file mode 100644 index 498a495cc1..0000000000 --- a/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadSSSPSX_vc2005beta2", "PadSSSPSX_vc2005beta2.vcproj", "{79D9E8A9-C764-4082-826C-B715341FB1E9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Debug|Win32.ActiveCfg = Debug|Win32 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Debug|Win32.Build.0 = Debug|Win32 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Debug|x64.ActiveCfg = Debug|x64 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Debug|x64.Build.0 = Debug|x64 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Release|Win32.ActiveCfg = Release|Win32 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Release|Win32.Build.0 = Release|Win32 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Release|x64.ActiveCfg = Release|x64 - {79D9E8A9-C764-4082-826C-B715341FB1E9}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.vcproj b/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.vcproj deleted file mode 100644 index 6cbdcc850f..0000000000 --- a/plugins/SSSPSXPAD/PadSSSPSX_vc2005beta2.vcproj +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/SSSPSXPAD/PadSSSPSX_vc2008.vcproj b/plugins/SSSPSXPAD/PadSSSPSX_vc2008.vcproj new file mode 100644 index 0000000000..f1fa9275cc --- /dev/null +++ b/plugins/SSSPSXPAD/PadSSSPSX_vc2008.vcproj @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/SSSPSXPAD/ProjectRootDir.vsprops b/plugins/SSSPSXPAD/ProjectRootDir.vsprops new file mode 100644 index 0000000000..a05dc73a56 --- /dev/null +++ b/plugins/SSSPSXPAD/ProjectRootDir.vsprops @@ -0,0 +1,11 @@ + + + + diff --git a/plugins/SSSPSXPAD/licence.txt b/plugins/SSSPSXPAD/licence.txt index b3143dc8ee..24f3b8b11b 100644 --- a/plugins/SSSPSXPAD/licence.txt +++ b/plugins/SSSPSXPAD/licence.txt @@ -1 +1 @@ -see http://www.gnu.org/copyleft/gpl.html +see http://www.gnu.org/copyleft/gpl.html diff --git a/plugins/SSSPSXPAD/readmewip.txt b/plugins/SSSPSXPAD/readmewip.txt index 144433621d..fe3e66ea52 100644 --- a/plugins/SSSPSXPAD/readmewip.txt +++ b/plugins/SSSPSXPAD/readmewip.txt @@ -1,48 +1,48 @@ -SSSPSX Pad - An Open Source Pad plugin for PSX and PS2 emulators -Author: Nagisa -Homepage: http://www.asahi-net.or.jp/~bz7t-skmt/ - -Overview: --Small executable program --Source code under 1000 step,20kb binary --Open Source,under the GPL Licence - - -Features: - -For PS1 emulators -- Force feedback support (PCSX only) - Delete the following PCSX sorce code. - File: sio.c Line: 138 -@--------------------- -@if (buf[parp] == 0x41) { -@@switch (value) { -@@@case 0x43: -@@@@buf[1] = 0x43; -@@@@break; -@@@case 0x45: -@@@@buf[1] = 0xf3; -@@@@break; -@@} -@} -@--------------------- - -For PCSX2 --Force feedback support (maybe) --PADKeyEvent API support --Using DirectInput 9 (game controller and keyboard) - -Thanks to: -http://www.hm5.aitai.ne.jp/~takuya/index.html#ds2_analisys for the valuable info -PCSX2 team for the PadWinKeyb source code -bositman for some report - -Version History: -v1.0: -Initial Release -v1.1: -Changed to DirectInput 9 -v1.2: -PADKeyEvent API support added -v1.3: -DirectInput collision problem fixed -v1.4: -Added timeout on settings dialog.If the countdown ends, the key will be set to "NONE". - -Changed "ESC" key action on settings dialog.If you press the "ESC" key, the setting will keep the previous one. - -Fixed silly bug. (dont ask me about it). -v1.5: -Fixed 0x4D packet. +SSSPSX Pad - An Open Source Pad plugin for PSX and PS2 emulators +Author: Nagisa +Homepage: http://www.asahi-net.or.jp/~bz7t-skmt/ + +Overview: +-Small executable program +-Source code under 1000 step,20kb binary +-Open Source,under the GPL Licence + + +Features: + +For PS1 emulators +- Force feedback support (PCSX only) + Delete the following PCSX sorce code. + File: sio.c Line: 138 +@--------------------- +@if (buf[parp] == 0x41) { +@@switch (value) { +@@@case 0x43: +@@@@buf[1] = 0x43; +@@@@break; +@@@case 0x45: +@@@@buf[1] = 0xf3; +@@@@break; +@@} +@} +@--------------------- + +For PCSX2 +-Force feedback support (maybe) +-PADKeyEvent API support +-Using DirectInput 9 (game controller and keyboard) + +Thanks to: +http://www.hm5.aitai.ne.jp/~takuya/index.html#ds2_analisys for the valuable info +PCSX2 team for the PadWinKeyb source code +bositman for some report + +Version History: +v1.0: -Initial Release +v1.1: -Changed to DirectInput 9 +v1.2: -PADKeyEvent API support added +v1.3: -DirectInput collision problem fixed +v1.4: -Added timeout on settings dialog.If the countdown ends, the key will be set to "NONE". + -Changed "ESC" key action on settings dialog.If you press the "ESC" key, the setting will keep the previous one. + -Fixed silly bug. (dont ask me about it). +v1.5: -Fixed 0x4D packet. diff --git a/plugins/zerogs/dx/Windows/GSsoftdx.def b/plugins/zerogs/dx/Windows/GSsoftdx.def index aca9c7a7a7..6e882957b0 100644 --- a/plugins/zerogs/dx/Windows/GSsoftdx.def +++ b/plugins/zerogs/dx/Windows/GSsoftdx.def @@ -32,4 +32,5 @@ EXPORTS GSsetFrameSkip @35 GSsetGameCRC @36 GSgetLastTag @37 - GSsetupRecording @38 \ No newline at end of file + GSsetupRecording @38 + GSsetSettingsDir @39 \ No newline at end of file diff --git a/plugins/zerogs/opengl/Win32/zerogs.def b/plugins/zerogs/opengl/Win32/zerogs.def index 9eb7169345..396ee27def 100644 --- a/plugins/zerogs/opengl/Win32/zerogs.def +++ b/plugins/zerogs/opengl/Win32/zerogs.def @@ -34,4 +34,4 @@ EXPORTS GSsetGameCRC @36 GSgetLastTag @37 GSsetupRecording @38 - GSsetSettingsDir @38 \ No newline at end of file + GSsetSettingsDir @39 \ No newline at end of file