From 3393e1ee03a1a5e5b7e3643073c60459fab913d8 Mon Sep 17 00:00:00 2001 From: cottonvibes Date: Wed, 3 Sep 2008 01:36:42 +0000 Subject: [PATCH] okay this took me a while, but i managed to make stuff a bit more organized. -New "Advanced" dialog handles all CPU/VU roundmodes, denormals are zero, and flush to zero options. -Moved GT4 and GoW hacks to the "GameFixes" dialog. -"Disable Underflow Checks" no longer controls DaZ, since the "Advanced" dialog handles that. if you guys don't know what to do in the Advanced dialog, just leave it at the defaults (its called advanced for a reason :p) Note: if you use Patches to change the roundmode, it will override the roundmode set in the Advanced dialog. git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@88 a6443dda-0b58-4228-96e9-037be469359c --- pcsx2/Misc.h | 11 ++-- pcsx2/Patch.c | 6 +- pcsx2/windows/WinMain.c | 114 ++++++++++++++++++++++++++++------ pcsx2/windows/ini.c | 23 ++++++- pcsx2/windows/pcsx2.rc | 80 +++++++++++++++++------- pcsx2/windows/resource.h | 22 ++++++- pcsx2/x86/ix86-32/iR5900-32.c | 6 +- 7 files changed, 208 insertions(+), 54 deletions(-) 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; }