Brought the Erementar Gerad gamefix over to Linux, and got rid of some junk that isn't neccesary now that the crc version of the hack is gone.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1438 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-06-26 05:14:58 +00:00
parent 6b2c26a617
commit 6e5d4a5d15
9 changed files with 32 additions and 30 deletions

View File

@ -394,7 +394,6 @@ void cdvdReadKey(u8 arg0, u16 arg1, u32 arg2, u8* key) {
{ {
ElfCRC = loadElfCRC( str ); ElfCRC = loadElfCRC( str );
ElfApplyPatches(); ElfApplyPatches();
LoadGameSpecificSettings();
GSsetGameCRC( ElfCRC, 0 ); GSsetGameCRC( ElfCRC, 0 );
} }
} }
@ -584,7 +583,6 @@ void cdvdNewDiskCB()
{ {
ElfCRC = loadElfCRC( str ); ElfCRC = loadElfCRC( str );
ElfApplyPatches(); ElfApplyPatches();
LoadGameSpecificSettings();
GSsetGameCRC( ElfCRC, 0 ); GSsetGameCRC( ElfCRC, 0 );
} }

View File

@ -565,23 +565,7 @@ int loadElfFile(const char *filename)
Console::Status( "loadElfFile: %s; CRC = %8.8X", params filename, ElfCRC); Console::Status( "loadElfFile: %s; CRC = %8.8X", params filename, ElfCRC);
ElfApplyPatches(); ElfApplyPatches();
LoadGameSpecificSettings();
return 0; 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;
}
}

View File

@ -26,7 +26,6 @@ extern unsigned int args_ptr;
//------------------- //-------------------
int loadElfFile(const char *filename); int loadElfFile(const char *filename);
u32 loadElfCRC(const char *filename); u32 loadElfCRC(const char *filename);
void LoadGameSpecificSettings();
void ElfApplyPatches(); void ElfApplyPatches();
extern u32 ElfCRC; extern u32 ElfCRC;

View File

@ -30,6 +30,7 @@ GtkWidget *GameFixDlg, *SpeedHacksDlg;
set_checked(GameFixDlg, "check_FPU_Compare", (Config.GameFixes & FLAG_FPU_Compare)); 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_FPU_Mul", (Config.GameFixes & FLAG_FPU_MUL));
set_checked(GameFixDlg, "check_DMAExec", (Config.GameFixes & FLAG_DMAExec)); 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_show_all(GameFixDlg);
gtk_widget_set_sensitive(MainWindow, FALSE); 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_Compare") ? FLAG_FPU_Compare : 0;
Config.GameFixes |= is_checked(GameFixDlg, "check_FPU_Mul") ? FLAG_FPU_MUL : 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_DMAExec") ? FLAG_DMAExec : 0;
Config.GameFixes |= is_checked(GameFixDlg, "check_XGKick") ? FLAG_XGKick : 0;
SaveConfig(); SaveConfig();

View File

@ -127,6 +127,8 @@ char ee_cycle_labels[3][256] =
#define FLAG_FPU_MUL 0x8 #define FLAG_FPU_MUL 0x8
//Fatal Frame //Fatal Frame
#define FLAG_DMAExec 0x10 #define FLAG_DMAExec 0x10
//Erementar Gerad
#define FLAG_XGKick 0x20
#define FLAG_VU_NO_OVERFLOW 0x2 #define FLAG_VU_NO_OVERFLOW 0x2
#define FLAG_VU_EXTRA_OVERFLOW 0x40 #define FLAG_VU_EXTRA_OVERFLOW 0x40

View File

@ -940,6 +940,7 @@ create_GameFixDlg (void)
GtkWidget *check_FPU_Mul; GtkWidget *check_FPU_Mul;
GtkWidget *check_VU_Clip; GtkWidget *check_VU_Clip;
GtkWidget *check_DMAExec; GtkWidget *check_DMAExec;
GtkWidget *check_XGKick;
GtkWidget *label42; GtkWidget *label42;
GtkWidget *dialog_action_area1; GtkWidget *dialog_action_area1;
GtkWidget *cancelbutton1; GtkWidget *cancelbutton1;
@ -996,6 +997,11 @@ create_GameFixDlg (void)
gtk_widget_show (check_DMAExec); gtk_widget_show (check_DMAExec);
gtk_box_pack_start (GTK_BOX (vbox30), check_DMAExec, FALSE, FALSE, 0); 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 (_("<b>Some games need special settings.\nConfigure them here.</b>")); label42 = gtk_label_new (_("<b>Some games need special settings.\nConfigure them here.</b>"));
gtk_widget_set_name (label42, "label42"); gtk_widget_set_name (label42, "label42");
gtk_widget_show (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_FPU_Mul, "check_FPU_Mul");
GLADE_HOOKUP_OBJECT (GameFixDlg, check_VU_Clip, "check_VU_Clip"); GLADE_HOOKUP_OBJECT (GameFixDlg, check_VU_Clip, "check_VU_Clip");
GLADE_HOOKUP_OBJECT (GameFixDlg, check_DMAExec, "check_DMAExec"); 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 (GameFixDlg, label42, "label42");
GLADE_HOOKUP_OBJECT_NO_REF (GameFixDlg, dialog_action_area1, "dialog_action_area1"); GLADE_HOOKUP_OBJECT_NO_REF (GameFixDlg, dialog_action_area1, "dialog_action_area1");
GLADE_HOOKUP_OBJECT (GameFixDlg, cancelbutton1, "cancelbutton1"); GLADE_HOOKUP_OBJECT (GameFixDlg, cancelbutton1, "cancelbutton1");

View File

@ -1984,6 +1984,26 @@ Causes freezing in Gust games and crashing in some TriAce games</property>
<property name="fill">False</property> <property name="fill">False</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkCheckButton" id="check_XGKick">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">VU XGkick Hack - Fix for Erementar Gerad.
Adds more delay to VU XGkick instructions. Corrects the color of some graphics.</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> </widget>
</child> </child>
</widget> </widget>

View File

@ -653,13 +653,10 @@ int AddPatch(int Mode, int Place, int Address, int Size, u64 data)
void patchFunc_ffxhack( char * cmd, char * param ) 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 ) void patchFunc_xkickdelay( char * cmd, char * param )
{ {
g_VUGameFixes |= VUFIX_XGKICKDELAY2;
} }
void patchFunc_fastmemory( char * cmd, char * param ) void patchFunc_fastmemory( char * cmd, char * param )

View File

@ -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 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;