diff --git a/pcsx2/Misc.h b/pcsx2/Misc.h index b49309b638..005dc61929 100644 --- a/pcsx2/Misc.h +++ b/pcsx2/Misc.h @@ -90,7 +90,6 @@ extern SessionOverrideFlags g_Session; //------------ SPECIAL GAME FIXES!!! --------------- #define CHECK_VUADDSUBHACK (Config.GameFixes & 0x1) // Special Fix for Tri-ace games, they use an encryption algorithm that requires VU addi opcode to be bit-accurate. #define CHECK_FPUCOMPAREHACK (Config.GameFixes & 0x4) // Special Fix for Digimon Rumble Arena 2, fixes spinning/hanging on intro-menu. -#define CHECK_FCORHACK (Config.GameFixes & 0x8) // Special Fix for ICO, cures SPS due to some misscalculation of the clip flag. //------------ Advanced Options!!! --------------- #define CHECK_VU_OVERFLOW (Config.vuOptions & 0x1) #define CHECK_VU_EXTRA_OVERFLOW (Config.vuOptions & 0x2) // If enabled, Operands are clamped before being used in the VU recs diff --git a/pcsx2/windows/WinMain.cpp b/pcsx2/windows/WinMain.cpp index 8fb08199c2..15817062d1 100644 --- a/pcsx2/windows/WinMain.cpp +++ b/pcsx2/windows/WinMain.cpp @@ -539,8 +539,7 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) switch (message) { case WM_INITDIALOG: if(Config.GameFixes & 0x1) CheckDlgButton(hDlg, IDC_GAMEFIX2, TRUE);//Tri-Ace fix - if(Config.GameFixes & 0x4) CheckDlgButton(hDlg, IDC_GAMEFIX3, TRUE);//Tekken 5 fix - if(Config.GameFixes & 0x8) CheckDlgButton(hDlg, IDC_GAMEFIX7, TRUE);//ICO fix + if(Config.GameFixes & 0x4) CheckDlgButton(hDlg, IDC_GAMEFIX3, TRUE);//Digimon FPU compare fix return TRUE; case WM_COMMAND: @@ -549,7 +548,6 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) uint newfixes = 0; newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX2) ? 0x1 : 0; newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX3) ? 0x4 : 0; - newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX7) ? 0x8 : 0; EndDialog(hDlg, TRUE); diff --git a/pcsx2/windows/pcsx2.rc b/pcsx2/windows/pcsx2.rc index df34a677bd..4a088745c1 100644 --- a/pcsx2/windows/pcsx2.rc +++ b/pcsx2/windows/pcsx2.rc @@ -79,16 +79,14 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Game Special Fixes" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,85,99,50,14 - PUSHBUTTON "Cancel",IDCANCEL,139,99,50,14 + DEFPUSHBUTTON "OK",IDOK,85,91,50,14 + PUSHBUTTON "Cancel",IDCANCEL,139,91,50,14 CTEXT "Some games need special settings.\nConfigure them here.",IDC_STATIC,7,7,264,17 GROUPBOX "PCSX2 Gamefixes",IDC_STATIC,7,31,264,89 CONTROL "FPU Compare Hack - Special fix for Digimon Rumble Arena 2.",IDC_GAMEFIX3, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,51,249,10 CONTROL "VU Add / Sub Hack - Special fix for Tri-Ace games!",IDC_GAMEFIX2, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,65,252,10 - CONTROL "VU FCOR Hack - Special Fix for ICO SPS.",IDC_GAMEFIX7, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,79,252,10 END diff --git a/pcsx2/x86/iVUmicroLower.cpp b/pcsx2/x86/iVUmicroLower.cpp index 4728927857..df1a35f718 100644 --- a/pcsx2/x86/iVUmicroLower.cpp +++ b/pcsx2/x86/iVUmicroLower.cpp @@ -1454,18 +1454,12 @@ void recVUMI_FCOR( VURegs *VU, int info ) { int ftreg; //SysPrintf("recVUMI_FCOR\n"); - if(CHECK_FCORHACK) {//ICO Miss-calculated CLIP flag so always set to true (probably a zerorec pipeline problem) - ftreg = ALLOCVI(1, MODE_WRITE|MODE_8BITREG); - MOV32ItoR( ftreg, 1 ); - } - else { - ftreg = ALLOCVI(1, MODE_WRITE); - MOV32MtoR( ftreg, VU_VI_ADDR(REG_CLIP_FLAG, 1) ); - OR32ItoR ( ftreg, VU->code ); - AND32ItoR( ftreg, 0xffffff ); - ADD32ItoR( ftreg, 1 ); // If 24 1's will make 25th bit 1, else 0 - SHR32ItoR( ftreg, 24 ); // Get the 25th bit (also clears the rest of the garbage in the reg) - } + ftreg = ALLOCVI(1, MODE_WRITE); + MOV32MtoR( ftreg, VU_VI_ADDR(REG_CLIP_FLAG, 1) ); + OR32ItoR ( ftreg, VU->code ); + AND32ItoR( ftreg, 0xffffff ); + ADD32ItoR( ftreg, 1 ); // If 24 1's will make 25th bit 1, else 0 + SHR32ItoR( ftreg, 24 ); // Get the 25th bit (also clears the rest of the garbage in the reg) } //------------------------------------------------------------------