diff --git a/pcsx2/CDVD/CDVD.cpp b/pcsx2/CDVD/CDVD.cpp index 3bd4b07bc4..486c09af24 100644 --- a/pcsx2/CDVD/CDVD.cpp +++ b/pcsx2/CDVD/CDVD.cpp @@ -394,7 +394,6 @@ void cdvdReadKey(u8 arg0, u16 arg1, u32 arg2, u8* key) { { ElfCRC = loadElfCRC( str ); ElfApplyPatches(); - LoadGameSpecificSettings(); GSsetGameCRC( ElfCRC, 0 ); } } @@ -584,7 +583,6 @@ void cdvdNewDiskCB() { ElfCRC = loadElfCRC( str ); ElfApplyPatches(); - LoadGameSpecificSettings(); GSsetGameCRC( ElfCRC, 0 ); } diff --git a/pcsx2/Elfheader.cpp b/pcsx2/Elfheader.cpp index 5bf94204b3..d77d4b015f 100644 --- a/pcsx2/Elfheader.cpp +++ b/pcsx2/Elfheader.cpp @@ -565,23 +565,7 @@ int loadElfFile(const char *filename) Console::Status( "loadElfFile: %s; CRC = %8.8X", params filename, ElfCRC); ElfApplyPatches(); - LoadGameSpecificSettings(); - + return 0; } -#include "VU.h" -int g_VUGameFixes = 0; - -// fixme - this should be moved to patches or eliminated -void LoadGameSpecificSettings() -{ - // default - g_VUGameFixes = 0; - - switch(ElfCRC) { - case 0xb99379b7: // erementar gerad (discolored chars) - g_VUGameFixes |= VUFIX_XGKICKDELAY2; // Tested - still needed - arcum42 - break; - } -} diff --git a/pcsx2/Elfheader.h b/pcsx2/Elfheader.h index c6c93beb1d..4e352d020e 100644 --- a/pcsx2/Elfheader.h +++ b/pcsx2/Elfheader.h @@ -26,7 +26,6 @@ extern unsigned int args_ptr; //------------------- int loadElfFile(const char *filename); u32 loadElfCRC(const char *filename); -void LoadGameSpecificSettings(); void ElfApplyPatches(); extern u32 ElfCRC; diff --git a/pcsx2/Linux/HacksDlg.cpp b/pcsx2/Linux/HacksDlg.cpp index e620ba0ccc..c4e17fcab1 100644 --- a/pcsx2/Linux/HacksDlg.cpp +++ b/pcsx2/Linux/HacksDlg.cpp @@ -30,6 +30,7 @@ GtkWidget *GameFixDlg, *SpeedHacksDlg; set_checked(GameFixDlg, "check_FPU_Compare", (Config.GameFixes & FLAG_FPU_Compare)); set_checked(GameFixDlg, "check_FPU_Mul", (Config.GameFixes & FLAG_FPU_MUL)); set_checked(GameFixDlg, "check_DMAExec", (Config.GameFixes & FLAG_DMAExec)); + set_checked(GameFixDlg, "check_XGKick", (Config.GameFixes & FLAG_XGKick)); gtk_widget_show_all(GameFixDlg); gtk_widget_set_sensitive(MainWindow, FALSE); @@ -47,6 +48,7 @@ void on_Game_Fix_OK(GtkButton *button, gpointer user_data) Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Compare") ? FLAG_FPU_Compare : 0; Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Mul") ? FLAG_FPU_MUL : 0; Config.GameFixes |= is_checked(GameFixDlg, "check_DMAExec") ? FLAG_DMAExec : 0; + Config.GameFixes |= is_checked(GameFixDlg, "check_XGKick") ? FLAG_XGKick : 0; SaveConfig(); diff --git a/pcsx2/Linux/Linux.h b/pcsx2/Linux/Linux.h index 15252e76c5..49de616d43 100644 --- a/pcsx2/Linux/Linux.h +++ b/pcsx2/Linux/Linux.h @@ -127,6 +127,8 @@ char ee_cycle_labels[3][256] = #define FLAG_FPU_MUL 0x8 //Fatal Frame #define FLAG_DMAExec 0x10 +//Erementar Gerad +#define FLAG_XGKick 0x20 #define FLAG_VU_NO_OVERFLOW 0x2 #define FLAG_VU_EXTRA_OVERFLOW 0x40 diff --git a/pcsx2/Linux/interface.c b/pcsx2/Linux/interface.c index a6d8daaf5f..774b27f02c 100644 --- a/pcsx2/Linux/interface.c +++ b/pcsx2/Linux/interface.c @@ -940,6 +940,7 @@ create_GameFixDlg (void) GtkWidget *check_FPU_Mul; GtkWidget *check_VU_Clip; GtkWidget *check_DMAExec; + GtkWidget *check_XGKick; GtkWidget *label42; GtkWidget *dialog_action_area1; GtkWidget *cancelbutton1; @@ -996,6 +997,11 @@ create_GameFixDlg (void) gtk_widget_show (check_DMAExec); gtk_box_pack_start (GTK_BOX (vbox30), check_DMAExec, FALSE, FALSE, 0); + check_XGKick = gtk_check_button_new_with_mnemonic (_("VU XGkick Hack - Fix for Erementar Gerad. \nAdds more delay to VU XGkick instructions. Corrects the color of some graphics.")); + gtk_widget_set_name (check_XGKick, "check_XGKick"); + gtk_widget_show (check_XGKick); + gtk_box_pack_start (GTK_BOX (vbox30), check_XGKick, FALSE, FALSE, 0); + label42 = gtk_label_new (_("Some games need special settings.\nConfigure them here.")); gtk_widget_set_name (label42, "label42"); gtk_widget_show (label42); @@ -1040,6 +1046,7 @@ create_GameFixDlg (void) GLADE_HOOKUP_OBJECT (GameFixDlg, check_FPU_Mul, "check_FPU_Mul"); GLADE_HOOKUP_OBJECT (GameFixDlg, check_VU_Clip, "check_VU_Clip"); GLADE_HOOKUP_OBJECT (GameFixDlg, check_DMAExec, "check_DMAExec"); + GLADE_HOOKUP_OBJECT (GameFixDlg, check_XGKick, "check_XGKick"); GLADE_HOOKUP_OBJECT (GameFixDlg, label42, "label42"); GLADE_HOOKUP_OBJECT_NO_REF (GameFixDlg, dialog_action_area1, "dialog_action_area1"); GLADE_HOOKUP_OBJECT (GameFixDlg, cancelbutton1, "cancelbutton1"); diff --git a/pcsx2/Linux/pcsx2.glade b/pcsx2/Linux/pcsx2.glade index 54f489309d..841d42da45 100644 --- a/pcsx2/Linux/pcsx2.glade +++ b/pcsx2/Linux/pcsx2.glade @@ -1984,6 +1984,26 @@ Causes freezing in Gust games and crashing in some TriAce games False + + + + True + True + VU XGkick Hack - Fix for Erementar Gerad. +Adds more delay to VU XGkick instructions. Corrects the color of some graphics. + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + diff --git a/pcsx2/Patch.cpp b/pcsx2/Patch.cpp index 618e6f5041..85d40b1277 100644 --- a/pcsx2/Patch.cpp +++ b/pcsx2/Patch.cpp @@ -653,13 +653,10 @@ int AddPatch(int Mode, int Place, int Address, int Size, u64 data) void patchFunc_ffxhack( char * cmd, char * param ) { - //Keeping this as a dummy a while :p - //g_FFXHack = 1; } void patchFunc_xkickdelay( char * cmd, char * param ) { - g_VUGameFixes |= VUFIX_XGKICKDELAY2; } void patchFunc_fastmemory( char * cmd, char * param ) diff --git a/pcsx2/VU.h b/pcsx2/VU.h index fb9602afe7..c339c4cf9b 100644 --- a/pcsx2/VU.h +++ b/pcsx2/VU.h @@ -196,10 +196,3 @@ static __forceinline u32* GET_VU_MEM(VURegs* VU, u32 addr) return (u32*)(VU0.Mem+(addr&0x0fff)); // for addr 0x0000 to 0x4000 just wrap around } - - -// various fixes to enable per game (all are off by default) -#define VUFIX_SIGNEDZERO 1 -#define VUFIX_EXTRAFLAGS 2 -#define VUFIX_XGKICKDELAY2 4 -extern int g_VUGameFixes;