summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-28 11:34:19 +0000
committerSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-28 11:34:19 +0000
commitbfc8e12c52df1f7cbe8fafaf7804b56db3103f8f (patch)
tree863705c68b3e5432f41ebe866565ca0431799b5b
parent5ba533776f6e8a3a0e56b104fc95e2c85ba09b3d (diff)
downloadpcsxr-bfc8e12c52df1f7cbe8fafaf7804b56db3103f8f.tar.gz
Added option to not have memory card plugged. Chronicles of the Sword password screen can now be accessed.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@88004 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--data/pcsxr.ui21
-rwxr-xr-xgui/ConfDlg.c3
-rwxr-xr-xgui/Config.c2
-rwxr-xr-xlibpcsxcore/psxcommon.h1
-rwxr-xr-xlibpcsxcore/sio.c13
5 files changed, 32 insertions, 8 deletions
diff --git a/data/pcsxr.ui b/data/pcsxr.ui
index 5ac053e6..439c5302 100644
--- a/data/pcsxr.ui
+++ b/data/pcsxr.ui
@@ -1830,8 +1830,8 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="GtkCheckButton_Widescreen">
- <property name="label" translatable="yes">Widescreen (GTE Hack)</property>
+ <object class="GtkCheckButton" id="GtkCheckButton_NoMemcard">
+ <property name="label" translatable="yes">No memcard (COTS password option)</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -1846,6 +1846,23 @@
<property name="y_options"></property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="GtkCheckButton_Widescreen">
+ <property name="label" translatable="yes">Widescreen (GTE Hack)</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">12</property>
+ <property name="bottom_attach">13</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
</object>
</child>
<child type="label">
diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c
index 5b869c3b..163e75a3 100755
--- a/gui/ConfDlg.c
+++ b/gui/ConfDlg.c
@@ -925,7 +925,7 @@ void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
Config.PsxOut = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_PsxOut")));
Config.SpuIrq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_SpuIrq")));
Config.RCntFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_RCntFix")));
- Config.VSyncWA = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_VSyncWA")));
+ 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")));
SaveConfig();
@@ -981,6 +981,7 @@ void OnConf_Cpu() {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_SpuIrq")), Config.SpuIrq);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_RCntFix")), Config.RCntFix);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_VSyncWA")), Config.VSyncWA);
+ 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);
// Setup a handler for when Close or Cancel is clicked
diff --git a/gui/Config.c b/gui/Config.c
index bce65ac3..1f370a82 100755
--- a/gui/Config.c
+++ b/gui/Config.c
@@ -137,6 +137,7 @@ int LoadConfig(PcsxConfig *Conf) {
Config.SpuIrq = GetValueb(data, "SpuIrq");
Config.RCntFix = GetValueb(data, "RCntFix");
Config.VSyncWA = GetValueb(data, "VSyncWA");
+ Config.NoMemcard = GetValueb(data, "NoMemcard");
Config.Widescreen = GetValueb(data, "Widescreen");
Config.Cpu = GetValuel(data, "Cpu");
@@ -183,6 +184,7 @@ void SaveConfig() {
SetValueb("SpuIrq", Config.SpuIrq);
SetValueb("RCntFix", Config.RCntFix);
SetValueb("VSyncWA", Config.VSyncWA);
+ SetValueb("NoMemcard", Config.NoMemcard);
SetValueb("Widescreen", Config.Widescreen);
SetValuel("Cpu", Config.Cpu);
diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h
index 9fc1628b..bd12ef51 100755
--- a/libpcsxcore/psxcommon.h
+++ b/libpcsxcore/psxcommon.h
@@ -150,6 +150,7 @@ typedef struct {
boolean RCntFix;
boolean UseNet;
boolean VSyncWA;
+ boolean NoMemcard;
boolean Widescreen;
boolean HideCursor;
boolean SaveWindowPos;
diff --git a/libpcsxcore/sio.c b/libpcsxcore/sio.c
index deca287a..22ca23e5 100755
--- a/libpcsxcore/sio.c
+++ b/libpcsxcore/sio.c
@@ -718,19 +718,22 @@ void sioWrite8(unsigned char value) {
SIO_INT(SIO_CYCLES);
return;
case 0x81: // start memcard
+ //case 0x82: case 0x83: case 0x84: // Multitap memcard access
StatReg |= RX_RDY;
-#if 0
+
// Chronicles of the Sword - no memcard = password options
- if( Config.Memcard == 1 ) return;
-#endif
- memcpy(buf, cardh, 4);
+ if( Config.NoMemcard || ((strlen(Config.Mcd1) <=0) && (strlen(Config.Mcd2) <=0)) ) {
+ memset(buf, 0x00, 4);
+ } else {
+ memcpy(buf, cardh, 4);
+ }
+
parp = 0;
bufcount = 3;
mcdst = 1;
rdwr = 0;
SIO_INT(SIO_CYCLES);
return;
-
case 0xae: // GameShark CDX - start dongle
StatReg |= RX_RDY;
gsdonglest = 1;