summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:56:46 +0100
committeriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:56:46 +0100
commitf7f38c4b89937391a8ba7c785d0d6b108ac02eb7 (patch)
tree2d217ed22e273b8ff29f181585258b2b5e7b389c
parent61a6f15af54923b16d6a7d84ba5fee50e30b4665 (diff)
downloadpcsxr-f7f38c4b89937391a8ba7c785d0d6b108ac02eb7.tar.gz
This Son of Ugly's Wipeout patch
from https://github.com/SonofUgly/PCSX-Reloaded via Solis
-rw-r--r--data/pcsxr.ui17
-rwxr-xr-xgui/ConfDlg.c3
-rwxr-xr-xgui/Config.c2
-rwxr-xr-xlibpcsxcore/psxcommon.h1
-rwxr-xr-xlibpcsxcore/psxmem.c42
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;