mirror of https://github.com/PCSX2/pcsx2.git
The Gust fix is back in. The previous behavior is in as a gamehack for Fatal Frame, and any other games adversely affected. Checkbox not yet implemented for Windows.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1436 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
ac7f3bc19d
commit
89dc306861
|
@ -70,6 +70,7 @@ extern SessionOverrideFlags g_Session;
|
|||
#define CHECK_FPUCOMPAREHACK (Config.GameFixes & 0x4) // Special Fix for Digimon Rumble Arena 2, fixes spinning/hanging on intro-menu.
|
||||
#define CHECK_VUCLIPFLAGHACK (Config.GameFixes & 0x2) // Special Fix for Persona games, maybe others. It's to do with the VU clip flag (again).
|
||||
#define CHECK_FPUMULHACK (Config.GameFixes & 0x8) // Special Fix for Tales of Destiny hangs.
|
||||
#define CHECK_DMAEXECHACK (Config.GameFixes & 0x10) // Special Fix for Fatal Frame; breaks Gust and Tri-Ace games.
|
||||
|
||||
//------------ Advanced Options!!! ---------------
|
||||
#define CHECK_VU_OVERFLOW (Config.vuOptions & 0x1)
|
||||
|
|
|
@ -102,8 +102,8 @@ static void DmaExec( void (*func)(), u32 mem, u32 value )
|
|||
DMA_LOG( "DMAExec32 Attempt to run DMA while one is already active mem = %x", mem );
|
||||
|
||||
// Returning here breaks every single Gust game written. :(
|
||||
// Not returning here breaks a bunch of other games. I'll let someone else figure it out...
|
||||
return;
|
||||
// Not returning here breaks Fatal Frame. Gamefix time.
|
||||
if (CHECK_DMAEXECHACK) return;
|
||||
}
|
||||
|
||||
// Upper 16bits of QWC should not be written since QWC is 16bits in size.
|
||||
|
|
|
@ -29,6 +29,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));
|
||||
|
||||
gtk_widget_show_all(GameFixDlg);
|
||||
gtk_widget_set_sensitive(MainWindow, FALSE);
|
||||
|
@ -45,6 +46,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;
|
||||
|
||||
SaveConfig();
|
||||
|
||||
|
|
|
@ -125,6 +125,8 @@ char ee_cycle_labels[3][256] =
|
|||
#define FLAG_FPU_Compare 0x4
|
||||
//Tales of Destiny - IDC_GAMEFIX5
|
||||
#define FLAG_FPU_MUL 0x8
|
||||
//Fatal Frame
|
||||
#define FLAG_DMAExec 0x10
|
||||
|
||||
#define FLAG_VU_NO_OVERFLOW 0x2
|
||||
#define FLAG_VU_EXTRA_OVERFLOW 0x40
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
|
||||
void
|
||||
On_Dialog_Close (GtkDialog *dialog,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_Advanced_Defaults (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
@ -246,6 +250,10 @@ void
|
|||
OnHelp_About (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
OnCpuCheckToggled (GtkToggleButton *togglebutton,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
OnCpu_Ok (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
@ -257,11 +265,3 @@ OnLogging_Ok (GtkButton *button,
|
|||
void
|
||||
OnMemcards_Ok (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
On_Dialog_Close (GtkDialog *dialog,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
OnCpuCheckToggled (GtkToggleButton *togglebutton,
|
||||
gpointer user_data);
|
||||
|
|
|
@ -939,6 +939,7 @@ create_GameFixDlg (void)
|
|||
GtkWidget *check_VU_Add_Sub;
|
||||
GtkWidget *check_FPU_Mul;
|
||||
GtkWidget *check_VU_Clip;
|
||||
GtkWidget *check_DMAExec;
|
||||
GtkWidget *label42;
|
||||
GtkWidget *dialog_action_area1;
|
||||
GtkWidget *cancelbutton1;
|
||||
|
@ -990,6 +991,11 @@ create_GameFixDlg (void)
|
|||
gtk_widget_show (check_VU_Clip);
|
||||
gtk_box_pack_start (GTK_BOX (vbox30), check_VU_Clip, FALSE, FALSE, 0);
|
||||
|
||||
check_DMAExec = gtk_check_button_new_with_mnemonic (_("DMAExec Hack - Fixes Fatal Frame, possibly others.\nCauses freezing in Gust games and crashing in some TriAce games"));
|
||||
gtk_widget_set_name (check_DMAExec, "check_DMAExec");
|
||||
gtk_widget_show (check_DMAExec);
|
||||
gtk_box_pack_start (GTK_BOX (vbox30), check_DMAExec, FALSE, FALSE, 0);
|
||||
|
||||
label42 = gtk_label_new (_("<b>Some games need special settings.\nConfigure them here.</b>"));
|
||||
gtk_widget_set_name (label42, "label42");
|
||||
gtk_widget_show (label42);
|
||||
|
@ -1033,6 +1039,7 @@ create_GameFixDlg (void)
|
|||
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, check_DMAExec, "check_DMAExec");
|
||||
GLADE_HOOKUP_OBJECT (GameFixDlg, label42, "label42");
|
||||
GLADE_HOOKUP_OBJECT_NO_REF (GameFixDlg, dialog_action_area1, "dialog_action_area1");
|
||||
GLADE_HOOKUP_OBJECT (GameFixDlg, cancelbutton1, "cancelbutton1");
|
||||
|
|
|
@ -1964,6 +1964,26 @@ If you have problems, Disable all of these and try again.</property>
|
|||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="check_DMAExec">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">DMAExec Hack - Fixes Fatal Frame, possibly others.
|
||||
Causes freezing in Gust games and crashing in some TriAce games</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
|
|
@ -525,6 +525,7 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
if(Config.GameFixes & 0x4) CheckDlgButton(hDlg, IDC_GAMEFIX3, TRUE);//Digimon FPU compare fix
|
||||
if(Config.GameFixes & 0x2) CheckDlgButton(hDlg, IDC_GAMEFIX4, TRUE);//Persona3/4 fix
|
||||
if(Config.GameFixes & 0x8) CheckDlgButton(hDlg, IDC_GAMEFIX5, TRUE);//Tales of Destiny fix
|
||||
//if(Config.GameFixes & 0x10) CheckDlgButton(hDlg, IDC_GAMEFIX?, TRUE);//Fatal Frame fix
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
|
@ -535,6 +536,7 @@ BOOL APIENTRY GameFixes(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX3) ? 0x4 : 0;
|
||||
newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX4) ? 0x2 : 0;
|
||||
newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX5) ? 0x8 : 0;
|
||||
//newfixes |= IsDlgButtonChecked(hDlg, IDC_GAMEFIX?) ? 0x10 : 0;
|
||||
|
||||
EndDialog(hDlg, TRUE);
|
||||
|
||||
|
|
Loading…
Reference in New Issue