diff --git a/pcsx2/Misc.h b/pcsx2/Misc.h index ef12cb5fdf..e251b4f9eb 100644 --- a/pcsx2/Misc.h +++ b/pcsx2/Misc.h @@ -52,7 +52,7 @@ #define CHECK_DUALCORE (Config.Options&PCSX2_DUALCORE) #define CHECK_EEREC (Config.Options&PCSX2_EEREC) #define CHECK_COP2REC (Config.Options&PCSX2_COP2REC) // goes with ee option -//------------ SPEED/MISC HACKS!!! --------------- +//------------ SPEED HACKS!!! --------------- #define CHECK_OVERFLOW (!(Config.Hacks & 0x2)) #define CHECK_EXTRA_OVERFLOW (Config.Hacks & 0x40) // If enabled, Operands are checked for infinities before being used in the VU recs #define CHECK_FPU_OVERFLOW (!(Config.Hacks & 0x800)) @@ -61,10 +61,11 @@ #define CHECK_IOPSYNC_HACK (Config.Hacks & 0x10) #define CHECK_EE_IOP_EXTRA (Config.Hacks & 0x20) #define CHECK_UNDERFLOW (!(Config.Hacks & 0x8)) -#define CHECK_DENORMALS ((Config.Hacks & 0x400) ? 0xffc0 : 0x7f80) //If enabled, Denormals are Zero for the recs and flush to zero is enabled as well +//#define CHECK_DENORMALS ((Config.Hacks & 0x400) ? 0xffc0 : 0x7f80) //If enabled, Denormals are Zero for the recs and flush to zero is enabled as well #define CHECK_FASTBRANCHES (Config.Hacks & 0x80) -#define CHECK_VUCLIPHACK (Config.Hacks & 0x100) // Special Fix for GoW, updates the clipflag differently in recVUMI_CLIP() (note: turning this hack on, breaks Rockstar games) -#define CHECK_FPUCLAMPHACK (Config.Hacks & 0x200) // Special Fix for GT4, different clamping for FPU (Note: sets negative infinity to positive fMax when clamping, which the real ps2 doesn't do) +//------------ SPECIAL GAME FIXES!!! --------------- +#define CHECK_FPUCLAMPHACK (Config.GameFixes & 0x1) // Special Fix for GT4, different clamping for FPU (Note: sets negative infinity to positive fMax when clamping, which the real ps2 doesn't do) +#define CHECK_VUCLIPHACK (Config.GameFixes & 0x2) // Special Fix for GoW, updates the clipflag differently in recVUMI_CLIP() (note: turning this hack on, breaks Rockstar games) #define CHECK_FRAMELIMIT (Config.Options&PCSX2_FRAMELIMIT_MASK) @@ -107,6 +108,8 @@ typedef struct { int CustomFrameSkip; int CustomConsecutiveFrames; int CustomConsecutiveSkip; + u32 sseMXCSR; + u32 sseVUMXCSR; } PcsxConfig; extern PcsxConfig Config; diff --git a/pcsx2/Patch.c b/pcsx2/Patch.c index b31f37fae0..bbe5910c14 100644 --- a/pcsx2/Patch.c +++ b/pcsx2/Patch.c @@ -586,8 +586,8 @@ void patchFunc_roundmode( char * cmd, char * param ) int index; char * pText; - u32 eetype = (g_sseMXCSR & 0x6000); - u32 vutype = (g_sseVUMXCSR & 0x6000); + u32 eetype = (Config.sseMXCSR & 0x6000); + u32 vutype = (Config.sseVUMXCSR & 0x6000); index = 0; pText = strtok( param, ", " ); @@ -633,6 +633,6 @@ void SetRoundMode(u32 ee, u32 vu) { // don't set a state for interpreter only #ifndef PCSX2_NORECBUILD - SetCPUState( (g_sseMXCSR & 0x9fff) | ee, (g_sseVUMXCSR & 0x9fff) | vu); + SetCPUState( (Config.sseMXCSR & 0x9fff) | ee, (Config.sseVUMXCSR & 0x9fff) | vu); #endif } diff --git a/pcsx2/windows/WinMain.c b/pcsx2/windows/WinMain.c index 6489e6dbff..d412d1fb4e 100644 --- a/pcsx2/windows/WinMain.c +++ b/pcsx2/windows/WinMain.c @@ -47,7 +47,7 @@ #include "iCore.h" #include "iVUzerorec.h" -#include "patch.h" +#include "Patch.h" #include "cheats/cheats.h" #include "../Paths.h" @@ -722,18 +722,16 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { case WM_INITDIALOG: SetWindowText(hDlg, _("Game specific Fixes")); - if(Config.GameFixes & 0x1) CheckDlgButton(hDlg, IDC_ROUNDMODE, TRUE); + if(Config.GameFixes & 0x1) CheckDlgButton(hDlg, IDC_GAMEFIX1, TRUE); + if(Config.GameFixes & 0x2) CheckDlgButton(hDlg, IDC_GAMEFIX2, TRUE); return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK) { Config.GameFixes = 0; - Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_ROUNDMODE) ? 0x1 : 0; - - if (Config.GameFixes & 0x1) g_sseMXCSR |= 0x6000; - else g_sseMXCSR &= 0x9fff; - SetCPUState(g_sseMXCSR, g_sseVUMXCSR); + Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX1) ? 0x1 : 0; + Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX2) ? 0x2 : 0; SaveConfig(); @@ -761,9 +759,9 @@ BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { if(Config.Hacks & 0x20) CheckDlgButton(hDlg, IDC_SYNCHACK3, TRUE); if(Config.Hacks & 0x40) CheckDlgButton(hDlg, IDC_VU_OVERFLOWHACK, 2); if(Config.Hacks & 0x80) CheckDlgButton(hDlg, IDC_FASTBRANCHES, TRUE); - if(Config.Hacks & 0x100) CheckDlgButton(hDlg, IDC_VUCLIPHACK, TRUE); - if(Config.Hacks & 0x200) CheckDlgButton(hDlg, IDC_FPUCLAMPHACK, TRUE); - if(Config.Hacks & 0x400) CheckDlgButton(hDlg, IDC_DENORMALS, 2); + //if(Config.Hacks & 0x100) CheckDlgButton(hDlg, IDC_VUCLIPHACK, TRUE); + //if(Config.Hacks & 0x200) CheckDlgButton(hDlg, IDC_FPUCLAMPHACK, TRUE); + //if(Config.Hacks & 0x400) CheckDlgButton(hDlg, IDC_DENORMALS, 2); if(Config.Hacks & 0x800) CheckDlgButton(hDlg, IDC_FPU_OVERFLOWHACK, TRUE); if(Config.Hacks & 0x1000) CheckDlgButton(hDlg, IDC_FPU_OVERFLOWHACK, 2); @@ -779,14 +777,11 @@ BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_SYNCHACK2) ? 0x10 : 0; Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_SYNCHACK3) ? 0x20 : 0; Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_FASTBRANCHES) ? 0x80 : 0; - Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_VUCLIPHACK) ? 0x100 : 0; - Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_FPUCLAMPHACK) ? 0x200 : 0; - Config.Hacks |= ( IsDlgButtonChecked(hDlg, IDC_DENORMALS) == 2 ) ? 0x408 : (IsDlgButtonChecked(hDlg, IDC_DENORMALS) ? 0x8 : 0); // 0x408 == greyed checkbox (DaZ SSE flag; so the CPU sets denormals to zero) + //Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_VUCLIPHACK) ? 0x100 : 0; + //Config.Hacks |= IsDlgButtonChecked(hDlg, IDC_FPUCLAMPHACK) ? 0x200 : 0; + //Config.Hacks |= ( IsDlgButtonChecked(hDlg, IDC_DENORMALS) == 2 ) ? 0x408 : (IsDlgButtonChecked(hDlg, IDC_DENORMALS) ? 0x8 : 0); // 0x408 == greyed checkbox (DaZ SSE flag; so the CPU sets denormals to zero) Config.Hacks |= ( IsDlgButtonChecked(hDlg, IDC_FPU_OVERFLOWHACK) == 2 ) ? 0x1000 : (IsDlgButtonChecked(hDlg, IDC_FPU_OVERFLOWHACK) ? 0x800 : 0); // 0x1000 == greyed checkbox (extra overflow checking); 0x800 == checked (disable overflow checking) - g_sseVUMXCSR = CHECK_DENORMALS; - SetCPUState(g_sseMXCSR, g_sseVUMXCSR); - SaveConfig(); EndDialog(hDlg, TRUE); @@ -800,6 +795,82 @@ BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return FALSE; } +BOOL APIENTRY AdvancedOptionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_INITDIALOG: + SetWindowText(hDlg, _("Advanced Options")); + CheckRadioButton(hDlg, IDC_EE_ROUNDMODE0, IDC_EE_ROUNDMODE3, IDC_EE_ROUNDMODE0 + ( (Config.sseMXCSR & 0x6000) >> 13)); + CheckRadioButton(hDlg, IDC_VU_ROUNDMODE0, IDC_VU_ROUNDMODE3, IDC_VU_ROUNDMODE0 + ( (Config.sseVUMXCSR & 0x6000) >> 13)); + + if (Config.sseMXCSR & 0x8000) CheckDlgButton(hDlg, IDC_EE_CHECK1, TRUE); + if (Config.sseVUMXCSR & 0x8000) CheckDlgButton(hDlg, IDC_VU_CHECK1, TRUE); + + if (Config.sseMXCSR & 0x0040) CheckDlgButton(hDlg, IDC_EE_CHECK2, TRUE); + if (Config.sseVUMXCSR & 0x0040) CheckDlgButton(hDlg, IDC_VU_CHECK2, TRUE); + + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDOK: + + Config.sseMXCSR &= 0x1fbf; + Config.sseVUMXCSR &= 0x1fbf; + + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_ROUNDMODE0) ? 0x0000 : 0; // Round Nearest + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_ROUNDMODE1) ? 0x2000 : 0; // Round Negative + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_ROUNDMODE2) ? 0x4000 : 0; // Round Postive + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_ROUNDMODE3) ? 0x6000 : 0; // Round Zero / Chop + + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_ROUNDMODE0) ? 0x0000 : 0; + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_ROUNDMODE1) ? 0x2000 : 0; + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_ROUNDMODE2) ? 0x4000 : 0; + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_ROUNDMODE3) ? 0x6000 : 0; + + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_CHECK1) ? 0x8000 : 0; + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_CHECK1) ? 0x8000 : 0; + + Config.sseMXCSR |= IsDlgButtonChecked(hDlg, IDC_EE_CHECK2) ? 0x0040 : 0; + Config.sseVUMXCSR |= IsDlgButtonChecked(hDlg, IDC_VU_CHECK2) ? 0x0040 : 0; + + SetCPUState(Config.sseMXCSR, Config.sseVUMXCSR); + SaveConfig(); + + EndDialog(hDlg, TRUE); + break; + + case IDCANCEL: + + EndDialog(hDlg, TRUE); + break; + + case IDC_EE_ROUNDMODE0: + case IDC_EE_ROUNDMODE1: + case IDC_EE_ROUNDMODE2: + case IDC_EE_ROUNDMODE3: + + CheckRadioButton(hDlg, IDC_EE_ROUNDMODE0, IDC_EE_ROUNDMODE3, IDC_EE_ROUNDMODE0 + ( LOWORD(wParam) % IDC_EE_ROUNDMODE0 ) ); + break; + + case IDC_VU_ROUNDMODE0: + case IDC_VU_ROUNDMODE1: + case IDC_VU_ROUNDMODE2: + case IDC_VU_ROUNDMODE3: + + CheckRadioButton(hDlg, IDC_VU_ROUNDMODE0, IDC_VU_ROUNDMODE3, IDC_VU_ROUNDMODE0 + ( LOWORD(wParam) % IDC_VU_ROUNDMODE0 ) ); + break; + + } + + return TRUE; + } + + return FALSE; +} + HBITMAP hbitmap_background;//the background image LRESULT WINAPI MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -838,9 +909,15 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { case ID_GAMEFIXES: DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_GAMEFIXES), hWnd, (DLGPROC)GameFixes); return TRUE; + case ID_HACKS: DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_HACKS), hWnd, (DLGPROC)HacksProc); return TRUE; + + case ID_ADVANCED_OPTIONS: + DialogBox(gApp.hInstance, MAKEINTRESOURCE(IDD_ADVANCED_OPTIONS), hWnd, (DLGPROC)AdvancedOptionsProc); + return TRUE; + case ID_CHEAT_FINDER_SHOW: ShowFinder(pInstance,hWnd); return TRUE; @@ -1167,9 +1244,10 @@ void CreateMainMenu() { ADDMENUITEM(0,_("E&xecute"), ID_RUN_EXECUTE); ADDSUBMENU(0,_("&Config")); -#ifdef PCSX2_DEVBUILD +//#ifdef PCSX2_DEVBUILD // ADDMENUITEM(0,_("&Advanced"), ID_CONFIG_ADVANCED); -#endif +//#endif + ADDMENUITEM(0,_("Advanced"), ID_ADVANCED_OPTIONS); ADDMENUITEM(0,_("Speed &Hacks"), ID_HACKS); ADDMENUITEM(0,_("Gamefixes"), ID_GAMEFIXES); ADDMENUITEM(0,_("&Patches"), ID_PATCHBROWSER); diff --git a/pcsx2/windows/ini.c b/pcsx2/windows/ini.c index 341e7a583b..4d3c744fb5 100644 --- a/pcsx2/windows/ini.c +++ b/pcsx2/windows/ini.c @@ -26,6 +26,9 @@ #include "win32.h" #include +//extern u32 g_sseMXCSR; +//extern u32 g_sseVUMXCSR; + int LoadConfig() { FILE *fp; @@ -90,7 +93,19 @@ int LoadConfig() { //cpu GetPrivateProfileString("Cpu Options", "Options", NULL, szValue, 20, szIniFile); Conf->Options= (u32)strtoul(szValue, NULL, 10); - + + if ( GetPrivateProfileString("Cpu Options", "sseMXCSR", NULL, szValue, 20, szIniFile) ) { + Conf->sseMXCSR = strtoul(szValue, NULL, 0); + g_sseMXCSR = Conf->sseMXCSR; + } + else Config.sseMXCSR = g_sseMXCSR; + + if ( GetPrivateProfileString("Cpu Options", "sseVUMXCSR", NULL, szValue, 20, szIniFile) ) { + Conf->sseVUMXCSR = strtoul(szValue, NULL, 0); + g_sseVUMXCSR = Conf->sseVUMXCSR; + } + else Config.sseVUMXCSR = g_sseVUMXCSR; + //Misc GetPrivateProfileString("Misc", "Patch", NULL, szValue, 20, szIniFile); Conf->Patch = strtoul(szValue, NULL, 10); @@ -104,6 +119,7 @@ int LoadConfig() { GetPrivateProfileString("Misc", "GameFixes", NULL, szValue, 20, szIniFile); Conf->GameFixes = strtoul(szValue, NULL, 0); + #ifdef ENABLE_NLS sprintf(text, "LANGUAGE=%s", Conf->Lang); #ifdef _WIN32 @@ -174,6 +190,10 @@ void SaveConfig() { //cpu sprintf(szValue,"%u", Conf->Options); WritePrivateProfileString("Cpu Options","Options",szValue,szIniFile); + sprintf(szValue,"%u",Conf->sseMXCSR); + WritePrivateProfileString("Cpu Options","sseMXCSR",szValue,szIniFile); + sprintf(szValue,"%u",Conf->sseVUMXCSR); + WritePrivateProfileString("Cpu Options","sseVUMXCSR",szValue,szIniFile); //Misc sprintf(szValue,"%u",Conf->Patch); WritePrivateProfileString("Misc","Patch",szValue,szIniFile); @@ -184,6 +204,5 @@ void SaveConfig() { sprintf(szValue,"%u",Conf->GameFixes); WritePrivateProfileString("Misc","GameFixes",szValue,szIniFile); - } diff --git a/pcsx2/windows/pcsx2.rc b/pcsx2/windows/pcsx2.rc index 80a9faae73..72e4675f58 100644 --- a/pcsx2/windows/pcsx2.rc +++ b/pcsx2/windows/pcsx2.rc @@ -75,15 +75,18 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN // Dialog // -IDD_GAMEFIXES DIALOGEX 0, 0, 316, 184 +IDD_GAMEFIXES DIALOGEX 0, 0, 291, 153 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" +CAPTION "Game Special Fixes" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,205,163,50,14 - PUSHBUTTON "Cancel",IDCANCEL,259,163,50,14 - LTEXT "Some games need special settings. Configure them here",IDC_STATIC,60,7,181,8 - CONTROL "Change EE Recompiler Roundmode",IDC_ROUNDMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,25,127,10 + DEFPUSHBUTTON "OK",IDOK,99,132,50,14 + PUSHBUTTON "Cancel",IDCANCEL,153,132,50,14 + CTEXT "Some games need special settings.\nConfigure them here.",IDC_STATIC,7,7,277,17 + CONTROL "FPU Clamp Hack - Special fix for Gran Turismo 4 and possibly other games.",IDC_GAMEFIX1, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,34,277,12 + CONTROL "VU Clip Hack - Special fix for God of War; Breaks Rockstar games!",IDC_GAMEFIX2, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,277,12 END @@ -98,11 +101,9 @@ BEGIN IDD_GAMEFIXES, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 309 - VERTGUIDE, 60 - VERTGUIDE, 241 + RIGHTMARGIN, 284 TOPMARGIN, 7 - BOTTOMMARGIN, 177 + BOTTOMMARGIN, 146 END END #endif // APSTUDIO_INVOKED @@ -889,6 +890,31 @@ BEGIN LTEXT "User Name:",IDC_STATIC,7,41,38,8 END +IDD_ADVANCED_OPTIONS DIALOGEX 0, 0, 231, 163 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Advanced Options" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,64,142,50,14 + PUSHBUTTON "Cancel",IDCANCEL,123,142,50,14 + RADIOBUTTON "Nearest",IDC_EE_ROUNDMODE0,23,33,59,16 + RADIOBUTTON "Negative",IDC_EE_ROUNDMODE1,23,48,49,16 + RADIOBUTTON "Positive",IDC_EE_ROUNDMODE2,23,62,44,16 + RADIOBUTTON "Chop / Zero",IDC_EE_ROUNDMODE3,23,76,54,16 + GROUPBOX "Roundmode",IDC_STATIC,14,23,69,75 + GROUPBOX "Roundmode",IDC_STATIC,130,23,72,76 + GROUPBOX "EE Recs Options",IDC_STATIC,7,7,101,129 + CONTROL "Flush to Zero",IDC_EE_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,103,58,13 + CONTROL "Denormals are Zero",IDC_EE_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,117,79,13 + CONTROL "Flush to Zero",IDC_VU_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,103,58,13 + CONTROL "Denormals are Zero",IDC_VU_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,117,81,13 + GROUPBOX "VU Recs Options",IDC_STATIC,121,7,103,129 + RADIOBUTTON "Nearest",IDC_VU_ROUNDMODE0,141,35,42,12 + RADIOBUTTON "Negative",IDC_VU_ROUNDMODE1,141,50,41,12 + RADIOBUTTON "Positive",IDC_VU_ROUNDMODE2,141,65,39,12 + RADIOBUTTON "Chop / Zero",IDC_VU_ROUNDMODE3,141,79,52,12 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -945,6 +971,22 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 72 END + + IDD_ADVANCED_OPTIONS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 224 + VERTGUIDE, 14 + VERTGUIDE, 23 + VERTGUIDE, 130 + VERTGUIDE, 141 + TOPMARGIN, 7 + BOTTOMMARGIN, 156 + HORZGUIDE, 23 + HORZGUIDE, 103 + HORZGUIDE, 117 + HORZGUIDE, 136 + END END #endif // APSTUDIO_INVOKED @@ -988,13 +1030,13 @@ BEGIN CONTROL 132,IDC_PS2SILVER_RECT,"Static",SS_BITMAP,0,167,70,74 END -IDD_HACKS DIALOGEX 0, 0, 511, 275 +IDD_HACKS DIALOGEX 0, 0, 511, 243 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "PCSX2 Speed Hacks" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,195,254,50,14 - PUSHBUTTON "Cancel",IDCANCEL,251,254,50,14 + DEFPUSHBUTTON "OK",IDOK,205,222,50,14 + PUSHBUTTON "Cancel",IDCANCEL,261,222,50,14 CONTROL "EE Sync Hack (x2) - Doubles the cycle rate of the EE. ( Big Speedup in most games! )",IDC_SYNCHACK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,111,418,10 CONTROL "Disable VU Overflow Checks - *Checked = Disables overflow checks. ( Speedup! ) *Greyed = Extra overflow checks. ( Helps SPS, Slow! )",IDC_VU_OVERFLOWHACK, @@ -1012,14 +1054,10 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,180,423,10 CTEXT "If you have problems, disable all these and try again",IDC_STATIC,7,22,497,8 GROUPBOX "Overflow and Underflow",IDC_STATIC,7,36,497,58 - CONTROL "Disable Underflow Checks - *Checked = Disables underflow checks. ( Speedup! ) *Greyed = DaZ flag. ( Big Speedup on Intel CPU's )",IDC_DENORMALS, - "Button",BS_AUTO3STATE | WS_TABSTOP,14,77,483,10 + CONTROL "Disable Underflow Checks - *Checked = Disables underflow checks. ( Speedup! )",IDC_DENORMALS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,319,10 GROUPBOX "Sync Hacks",IDC_STATIC,7,98,497,63 - GROUPBOX "Miscellaneous / Special Game Fixes",IDC_STATIC,7,165,497,76 - CONTROL "VU Clip Hack - Special fix for God of War; Breaks Rockstar games!",IDC_VUCLIPHACK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,224,421,10 - CONTROL "FPU Clamp Hack - Special fix for Gran Turismo 4 and possibly other games.",IDC_FPUCLAMPHACK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,209,428,10 + GROUPBOX "Miscellaneous",IDC_STATIC,7,165,497,50 END @@ -1042,7 +1080,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 504 TOPMARGIN, 7 - BOTTOMMARGIN, 268 + BOTTOMMARGIN, 236 END END #endif // APSTUDIO_INVOKED diff --git a/pcsx2/windows/resource.h b/pcsx2/windows/resource.h index 2e9f7adeb6..3582b5961f 100644 --- a/pcsx2/windows/resource.h +++ b/pcsx2/windows/resource.h @@ -38,6 +38,8 @@ #define IDD_DUMP 136 #define IDD_DUMPMEM 137 #define IDD_PATCHBROWSER 138 +#define IDD_ADVOPTIONS 140 +#define IDD_ADVANCED_OPTIONS 140 #define IDD_FINDER 174 #define IDD_ADD 175 #define IDD_ADDGS 176 @@ -608,11 +610,26 @@ #define IDC_ICON2 1300 #define IDC_CHECK1 1300 #define IDC_SOUNDHACK 1300 +#define IDC_EE_CHECK1 1300 +#define IDC_GAMEFIX1 1300 #define IDC_DENORMALS 1301 +#define IDC_EE_CHECK2 1301 +#define IDC_CHECK3 1301 +#define IDC_GAMEFIX2 1301 #define IDC_VUCLIPHACK 1302 +#define IDC_VU_CHECK1 1302 #define IDC_FRAMELIMIT_OPTIONS 1303 #define IDC_FPUCLAMPHACK 1303 +#define IDC_VU_CHECK2 1303 #define IDC_ROUNDMODE 1304 +#define IDC_EE_ROUNDMODE0 1305 +#define IDC_EE_ROUNDMODE1 1306 +#define IDC_EE_ROUNDMODE2 1307 +#define IDC_EE_ROUNDMODE3 1308 +#define IDC_VU_ROUNDMODE0 1311 +#define IDC_VU_ROUNDMODE1 1312 +#define IDC_VU_ROUNDMODE2 1313 +#define IDC_VU_ROUNDMODE3 1314 #define IDC_LOG 1500 #define IDC_CPULOG 1500 #define IDC_MEMLOG 1501 @@ -740,15 +757,16 @@ #define ID_CHEAT_BROWSER_SHOW 40101 #define ID_HACKS 40102 #define ID_GAMEFIXES 40103 +#define ID_ADVANCED_OPTIONS 40104 #define ID_LANGS 50000 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 140 +#define _APS_NEXT_RESOURCE_VALUE 141 #define _APS_NEXT_COMMAND_VALUE 40018 -#define _APS_NEXT_CONTROL_VALUE 1304 +#define _APS_NEXT_CONTROL_VALUE 1309 #define _APS_NEXT_SYMED_VALUE 102 #endif #endif diff --git a/pcsx2/x86/ix86-32/iR5900-32.c b/pcsx2/x86/ix86-32/iR5900-32.c index d623980ac3..25f6d11068 100644 --- a/pcsx2/x86/ix86-32/iR5900-32.c +++ b/pcsx2/x86/ix86-32/iR5900-32.c @@ -1583,10 +1583,8 @@ int recInit( void ) g_MACFlagTransform[i] = macarr[i>>4]|(macarr[i&15]<<4); } - g_sseVUMXCSR = CHECK_DENORMALS; - if (Config.GameFixes & 0x1) g_sseMXCSR |= 0x6000; - else g_sseMXCSR &= 0x9fff; - SetCPUState(g_sseMXCSR, g_sseVUMXCSR); + + SetCPUState(Config.sseMXCSR, Config.sseVUMXCSR); return 0; }