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
This commit is contained in:
cottonvibes 2008-09-03 01:36:42 +00:00 committed by Gregory Hainaut
parent dae102b8a3
commit 3393e1ee03
7 changed files with 208 additions and 54 deletions

View File

@ -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;

View File

@ -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
}

View File

@ -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);

View File

@ -26,6 +26,9 @@
#include "win32.h"
#include <sys/stat.h>
//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);
}

View File

@ -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

View File

@ -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

View File

@ -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;
}