diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2016-03-30 15:56:46 +0100 |
|---|---|---|
| committer | iCatButler <i.am.catbutler@gmail.com> | 2016-03-30 15:56:46 +0100 |
| commit | f7f38c4b89937391a8ba7c785d0d6b108ac02eb7 (patch) | |
| tree | 2d217ed22e273b8ff29f181585258b2b5e7b389c | |
| parent | 61a6f15af54923b16d6a7d84ba5fee50e30b4665 (diff) | |
| download | pcsxr-f7f38c4b89937391a8ba7c785d0d6b108ac02eb7.tar.gz | |
This Son of Ugly's Wipeout patch
from https://github.com/SonofUgly/PCSX-Reloaded via Solis
| -rw-r--r-- | data/pcsxr.ui | 17 | ||||
| -rwxr-xr-x | gui/ConfDlg.c | 3 | ||||
| -rwxr-xr-x | gui/Config.c | 2 | ||||
| -rwxr-xr-x | libpcsxcore/psxcommon.h | 1 | ||||
| -rwxr-xr-x | libpcsxcore/psxmem.c | 42 |
5 files changed, 46 insertions, 19 deletions
diff --git a/data/pcsxr.ui b/data/pcsxr.ui index 23b7d449..5c13e6e9 100644 --- a/data/pcsxr.ui +++ b/data/pcsxr.ui @@ -4150,6 +4150,23 @@ <property name="y_options"/> </packing> </child> + <child> + <object class="GtkCheckButton" id="GtkCheckButton_MemHack"> + <property name="label" translatable="yes">Wipeout memory hack (causes slowdowns in many games)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="top_attach">14</property> + <property name="bottom_attach">15</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"/> + </packing> + </child> </object> </child> <child type="label"> diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c index d71326c7..e1214fbc 100755 --- a/gui/ConfDlg.c +++ b/gui/ConfDlg.c @@ -945,7 +945,7 @@ void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { Config.NoMemcard = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_NoMemcard"))); Config.Widescreen = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Widescreen"))); Config.HackFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_HackFix"))); - + Config.MemHack = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_MemHack"))); SaveConfig(); gtk_widget_destroy(CpuDlg); @@ -1027,6 +1027,7 @@ void OnConf_Cpu() { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_NoMemcard")), Config.NoMemcard); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Widescreen")), Config.Widescreen); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_HackFix")), Config.HackFix); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_MemHack")), Config.MemHack); // Setup a handler for when Close or Cancel is clicked g_signal_connect_data(G_OBJECT(CpuDlg), "response", diff --git a/gui/Config.c b/gui/Config.c index 25e2e54b..dad43220 100755 --- a/gui/Config.c +++ b/gui/Config.c @@ -156,6 +156,7 @@ int LoadConfig(PcsxConfig *Conf) { Config.AltSpeed2 = 250; Config.HackFix = GetValuel(data, "HackFix"); + Config.MemHack = GetValuel(data, "MemHack"); free(data); @@ -210,6 +211,7 @@ void SaveConfig() { SetValuel("AltSpeed2", Config.AltSpeed2); SetValuel("HackFix", Config.HackFix); + SetValuel("MemHack", Config.MemHack); fclose(f); } diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h index 3f13dfa8..61a675ca 100755 --- a/libpcsxcore/psxcommon.h +++ b/libpcsxcore/psxcommon.h @@ -162,6 +162,7 @@ typedef struct { u32 AltSpeed1; // Percent relative to natural speed. u32 AltSpeed2; u8 HackFix; + u8 MemHack; #ifdef _WIN32 char Lang[256]; #endif diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c index 285eaf67..fc748698 100755 --- a/libpcsxcore/psxmem.c +++ b/libpcsxcore/psxmem.c @@ -143,9 +143,10 @@ u8 psxMemRead8(u32 mem) { char *p; u32 t; - - psxRegs.cycle += 0; - + if (Config.MemHack) + { + psxRegs.cycle += 0; + } t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { @@ -172,10 +173,11 @@ u16 psxMemRead16(u32 mem) { char *p; u32 t; + if (Config.MemHack) + { + psxRegs.cycle += 1; + } - psxRegs.cycle += 1; - - t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) @@ -201,10 +203,11 @@ u32 psxMemRead32(u32 mem) { char *p; u32 t; + if (Config.MemHack) + { + psxRegs.cycle += 1; + } - psxRegs.cycle += 1; - - t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) @@ -230,10 +233,11 @@ void psxMemWrite8(u32 mem, u8 value) { char *p; u32 t; + if (Config.MemHack) + { + psxRegs.cycle += 1; + } - psxRegs.cycle += 1; - - t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) @@ -261,10 +265,11 @@ void psxMemWrite16(u32 mem, u16 value) { char *p; u32 t; + if (Config.MemHack) + { + psxRegs.cycle += 1; + } - psxRegs.cycle += 1; - - t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) @@ -292,9 +297,10 @@ void psxMemWrite32(u32 mem, u32 value) { char *p; u32 t; - - psxRegs.cycle += 1; - + if (Config.MemHack) + { + psxRegs.cycle += 1; + } // if ((mem&0x1fffff) == 0x71E18 || value == 0x48088800) SysPrintf("t2fix!!\n"); t = mem >> 16; |
