mirror of https://github.com/PCSX2/pcsx2.git
found out why GT4 needed the hack, and fixed it correctly :D no need for the Gamefix hack anymore :p
git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@102 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
parent
6f3a4a032d
commit
c9be136946
|
@ -67,8 +67,8 @@
|
|||
#define CHECK_FPU_EXTRA_FLAGS (!(Config.Hacks & 0x200)) // Sets correct flags in the FPU recs
|
||||
|
||||
//------------ 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_FPUCLAMPHACK2 (Config.GameFixes & 0x4) // Special Fix for Tekken 5, different clamping for FPU (sets infinities to zero)
|
||||
//#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_FPUCLAMPHACK (Config.GameFixes & 0x4) // Special Fix for Tekken 5, different clamping for FPU (sets infinities to zero)
|
||||
#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)
|
||||
|
|
|
@ -722,7 +722,7 @@ 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_GAMEFIX1, TRUE);
|
||||
//if(Config.GameFixes & 0x1) CheckDlgButton(hDlg, IDC_GAMEFIX1, TRUE);
|
||||
if(Config.GameFixes & 0x2) CheckDlgButton(hDlg, IDC_GAMEFIX2, TRUE);
|
||||
if(Config.GameFixes & 0x4) CheckDlgButton(hDlg, IDC_GAMEFIX3, TRUE);
|
||||
return TRUE;
|
||||
|
@ -731,7 +731,7 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
if (LOWORD(wParam) == IDOK)
|
||||
{
|
||||
Config.GameFixes = 0;
|
||||
Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX1) ? 0x1 : 0;
|
||||
//Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX1) ? 0x1 : 0;
|
||||
Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX2) ? 0x2 : 0;
|
||||
Config.GameFixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX3) ? 0x4 : 0;
|
||||
|
||||
|
@ -1242,8 +1242,8 @@ void CreateMainMenu() {
|
|||
ADDMENUITEM(1, _("&Low"), ID_PROCESSLOW );
|
||||
ADDMENUITEM(1, _("High"), ID_PROCESSHIGH);
|
||||
ADDMENUITEM(1, _("Normal"), ID_PROCESSNORMAL);
|
||||
ADDMENUITEM(0,_("Re&set"), ID_RUN_RESET);
|
||||
ADDMENUITEM(0,_("&Arguments"), ID_RUN_CMDLINE);
|
||||
ADDMENUITEM(0,_("Re&set"), ID_RUN_RESET);
|
||||
ADDMENUITEM(0,_("E&xecute"), ID_RUN_EXECUTE);
|
||||
|
||||
ADDSUBMENU(0,_("&Config"));
|
||||
|
|
|
@ -83,13 +83,11 @@ BEGIN
|
|||
DEFPUSHBUTTON "OK",IDOK,103,154,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,157,154,50,14
|
||||
CTEXT "Some games need special settings.\nConfigure them here.",IDC_STATIC,7,7,297,17
|
||||
CONTROL "FPU Clamp Hack - Special fix for Gran Turismo 4 and possibly other games.",IDC_GAMEFIX1,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,48,265,10
|
||||
CONTROL "VU Clip Hack - Special fix for God of War; Breaks Rockstar games!",IDC_GAMEFIX2,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,72,252,10
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,60,252,10
|
||||
GROUPBOX "PCSX2 Gamefixes",IDC_STATIC,6,30,294,112
|
||||
CONTROL "FPU Clamp Hack 2 - Special fix for Tekken 5 and maybe other games.",IDC_GAMEFIX3,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,60,253,10
|
||||
CONTROL "FPU Clamp Hack - Special fix for Tekken 5 and maybe other games.",IDC_GAMEFIX3,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,47,253,10
|
||||
END
|
||||
|
||||
|
||||
|
|
|
@ -762,34 +762,29 @@ FPURECOMPILE_CONSTCODE(C_LE, XMMINFO_READS|XMMINFO_READT);
|
|||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// Doesnt seem to like negatives - Ruins katamari graphics
|
||||
// I REPEAT THE SIGN BIT (THATS 0x80000000) MUST *NOT* BE SET, jeez.
|
||||
static PCSX2_ALIGNED16(u32 s_overflowmask[]) = {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
|
||||
static u32 s_signbit = 0x80000000;
|
||||
extern int g_VuNanHandling;
|
||||
|
||||
void fpuFloat(regd) {
|
||||
if (CHECK_FPU_OVERFLOW) {
|
||||
SSE_MAXSS_M32_to_XMM(regd, (uptr)&g_minvals[0]);
|
||||
if (CHECK_FPU_OVERFLOW) { // MIN() must be before MAX()!
|
||||
SSE_MINSS_M32_to_XMM(regd, (uptr)&g_maxvals[0]);
|
||||
SSE_MAXSS_M32_to_XMM(regd, (uptr)&g_minvals[0]);
|
||||
}
|
||||
}
|
||||
|
||||
void ClampValues(regd) {
|
||||
|
||||
if (CHECK_FPUCLAMPHACK2) {
|
||||
if (CHECK_FPUCLAMPHACK) {
|
||||
int t5reg = _allocTempXMMreg(XMMT_FPS, -1);
|
||||
|
||||
SSE_XORPS_XMM_to_XMM(t5reg, t5reg);
|
||||
SSE_CMPORDSS_XMM_to_XMM(t5reg, regd);
|
||||
|
||||
//if( g_VuNanHandling )
|
||||
//SSE_ORPS_M128_to_XMM(t5reg, (uptr)s_overflowmask);
|
||||
|
||||
SSE_ANDPS_XMM_to_XMM(regd, t5reg);
|
||||
//SSE_MAXSS_M32_to_XMM(regd, (uptr)&g_minvals[0]);
|
||||
//SSE_MINSS_M32_to_XMM(regd, (uptr)&g_maxvals[0]);
|
||||
|
||||
SSE_MINSS_M32_to_XMM(regd, (uptr)&g_maxvals[0]);
|
||||
SSE_MAXSS_M32_to_XMM(regd, (uptr)&g_minvals[0]);
|
||||
|
||||
|
||||
_freeXMMreg(t5reg);
|
||||
}
|
||||
|
@ -798,23 +793,7 @@ void ClampValues(regd) {
|
|||
}
|
||||
|
||||
void ClampValues2(regd) {
|
||||
if (CHECK_FPUCLAMPHACK) { // This fixes Gran Turismo 4 graphics ( Converts NaN to Positive Maximum )
|
||||
|
||||
int t5reg = _allocTempXMMreg(XMMT_FPS, -1);
|
||||
|
||||
SSE_XORPS_XMM_to_XMM(t5reg, t5reg);
|
||||
SSE_CMPORDSS_XMM_to_XMM(t5reg, regd);
|
||||
|
||||
SSE_ORPS_M128_to_XMM(t5reg, (uptr)s_overflowmask); // fixes katamari falling off podium
|
||||
|
||||
SSE_ANDPS_XMM_to_XMM(regd, t5reg);
|
||||
|
||||
//SSE_MAXSS_M32_to_XMM(regd, (uptr)&g_minvals[0]);
|
||||
SSE_MINSS_M32_to_XMM(regd, (uptr)&g_maxvals[0]);
|
||||
|
||||
_freeXMMreg(t5reg);
|
||||
}
|
||||
else fpuFloat(regd);
|
||||
fpuFloat(regd);
|
||||
}
|
||||
|
||||
static void (*recComOpXMM_to_XMM[] )(x86SSERegType, x86SSERegType) = {
|
||||
|
|
Loading…
Reference in New Issue