diff --git a/pcsx2/Linux/HacksDlg.cpp b/pcsx2/Linux/HacksDlg.cpp index 7a13ad8d83..1f4a29936f 100644 --- a/pcsx2/Linux/HacksDlg.cpp +++ b/pcsx2/Linux/HacksDlg.cpp @@ -23,11 +23,13 @@ GtkWidget *GameFixDlg, *SpeedHacksDlg; void on_Game_Fixes(GtkMenuItem *menuitem, gpointer user_data) { GameFixDlg = create_GameFixDlg(); + + set_checked(GameFixDlg, "check_VU_Add_Sub", (Config.GameFixes & FLAG_VU_ADD_SUB)); + set_checked(GameFixDlg, "check_VU_Clip", (Config.GameFixes & FLAG_VU_CLIP)); set_checked(GameFixDlg, "check_FPU_Compare", (Config.GameFixes & FLAG_FPU_Compare)); - set_checked(GameFixDlg, "check_VU_Add_Sub", (Config.GameFixes & FLAG_VU_ADD_SUB)); set_checked(GameFixDlg, "check_FPU_Mul", (Config.GameFixes & FLAG_FPU_MUL)); - + gtk_widget_show_all(GameFixDlg); gtk_widget_set_sensitive(MainWindow, FALSE); gtk_main(); @@ -37,11 +39,15 @@ void on_Game_Fix_OK(GtkButton *button, gpointer user_data) { Config.GameFixes = 0; - Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Compare") ? FLAG_FPU_Compare : 0; + Config.GameFixes |= is_checked(GameFixDlg, "check_VU_Add_Sub") ? FLAG_VU_ADD_SUB : 0; + Config.GameFixes |= is_checked(GameFixDlg, "check_VU_Clip") ? FLAG_VU_CLIP : 0; + + Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Compare") ? FLAG_FPU_Compare : 0; Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Mul") ? FLAG_FPU_MUL : 0; SaveConfig(); + gtk_widget_destroy(GameFixDlg); gtk_widget_set_sensitive(MainWindow, TRUE); gtk_main_quit(); diff --git a/pcsx2/Linux/Linux.h b/pcsx2/Linux/Linux.h index fc9b436e44..5ca6f7f9f8 100644 --- a/pcsx2/Linux/Linux.h +++ b/pcsx2/Linux/Linux.h @@ -100,8 +100,12 @@ char iop_log_names[9][32] = "Cdr Log", "GPU Log" }; + //Tri-Ace - IDC_GAMEFIX2 #define FLAG_VU_ADD_SUB 0x1 +// Persona3/4 - IDC_GAMEFIX4 +#define FLAG_VU_CLIP 0x2 + // Digimon Rumble Arena - IDC_GAMEFIX3 #define FLAG_FPU_Compare 0x4 //Tales of Destiny - IDC_GAMEFIX5 diff --git a/pcsx2/Linux/interface.c b/pcsx2/Linux/interface.c index 62bceb6fdc..f62270e3d4 100644 --- a/pcsx2/Linux/interface.c +++ b/pcsx2/Linux/interface.c @@ -891,6 +891,7 @@ create_GameFixDlg (void) GtkWidget *check_FPU_Compare; GtkWidget *check_VU_Add_Sub; GtkWidget *check_FPU_Mul; + GtkWidget *check_VU_Clip; GtkWidget *label42; GtkWidget *dialog_action_area1; GtkWidget *cancelbutton1; @@ -937,6 +938,11 @@ create_GameFixDlg (void) gtk_widget_show (check_FPU_Mul); gtk_box_pack_start (GTK_BOX (vbox30), check_FPU_Mul, FALSE, TRUE, 0); + check_VU_Clip = gtk_check_button_new_with_mnemonic (_("VU Clip Hack - Fixes missing ground geometry in Persona.")); + gtk_widget_set_name (check_VU_Clip, "check_VU_Clip"); + gtk_widget_show (check_VU_Clip); + gtk_box_pack_start (GTK_BOX (vbox30), check_VU_Clip, 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); @@ -976,6 +982,7 @@ create_GameFixDlg (void) GLADE_HOOKUP_OBJECT (GameFixDlg, check_FPU_Compare, "check_FPU_Compare"); GLADE_HOOKUP_OBJECT (GameFixDlg, check_VU_Add_Sub, "check_VU_Add_Sub"); GLADE_HOOKUP_OBJECT (GameFixDlg, check_FPU_Mul, "check_FPU_Mul"); + GLADE_HOOKUP_OBJECT (GameFixDlg, check_VU_Clip, "check_VU_Clip"); 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 103e4c2b04..4e2513352c 100644 --- a/pcsx2/Linux/pcsx2.glade +++ b/pcsx2/Linux/pcsx2.glade @@ -1923,6 +1923,25 @@ Known to work well with a couple games, namely Shadow of the Colossus (but break True + + + + True + True + VU Clip Hack - Fixes missing ground geometry in Persona. + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + +