summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:07:35 +0100
committeriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:07:35 +0100
commit8b4350fee747708ffd376744ef5dc1e239a87ba6 (patch)
treea9ab6e2f25e06edc7c668353f8000856704f7fa3 /gui
parente3df273095a5800e3dcdcb63bd66e269c0c2d3a8 (diff)
downloadpcsxr-8b4350fee747708ffd376744ef5dc1e239a87ba6.tar.gz
Bring up to date with PCSX-R master (97809)
Diffstat (limited to 'gui')
-rwxr-xr-xgui/ConfDlg.c14
-rwxr-xr-xgui/Config.c10
-rwxr-xr-xgui/GtkGui.c6
-rwxr-xr-xgui/Linux.h4
-rwxr-xr-xgui/MemcardDlg.c16
-rwxr-xr-xgui/Plugin.c112
6 files changed, 93 insertions, 69 deletions
diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c
index 966a58c0..d71326c7 100755
--- a/gui/ConfDlg.c
+++ b/gui/ConfDlg.c
@@ -899,6 +899,12 @@ void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
sscanf(gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object(builder, "GtkEntry_RewindInterval"))), "%lu", &tmp);
Config.RewindInterval = tmp;
+ sscanf(gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object(builder, "GtkEntry_AltSpeed1"))), "%lu", &tmp);
+ Config.AltSpeed1 = tmp;
+
+ sscanf(gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object(builder, "GtkEntry_AltSpeed2"))), "%lu", &tmp);
+ Config.AltSpeed2 = tmp;
+
Config.Xa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Xa")));
Config.SioIrq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_SioIrq")));
Config.Mdec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Mdec")));
@@ -981,6 +987,14 @@ void OnConf_Cpu() {
// Enabled only if interpreter
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "frame_rew")), Config.Cpu);
+ snprintf(buf, sizeof(buf), "%u", Config.AltSpeed1);
+ widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkEntry_AltSpeed1"));
+ gtk_entry_set_text(GTK_ENTRY(widget), buf);
+
+ snprintf(buf, sizeof(buf), "%u", Config.AltSpeed2);
+ widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkEntry_AltSpeed2"));
+ gtk_entry_set_text(GTK_ENTRY(widget), buf);
+
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Xa")), Config.Xa);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_SioIrq")), Config.SioIrq);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Mdec")), Config.Mdec);
diff --git a/gui/Config.c b/gui/Config.c
index 3c0aa923..25e2e54b 100755
--- a/gui/Config.c
+++ b/gui/Config.c
@@ -148,6 +148,13 @@ int LoadConfig(PcsxConfig *Conf) {
Config.RewindCount = GetValuel(data, "RewindCount");
Config.RewindInterval = GetValuel(data, "RewindInterval");
+ Config.AltSpeed1 = GetValuel(data, "AltSpeed1");
+ if (!Config.AltSpeed1)
+ Config.AltSpeed1 = 50;
+ Config.AltSpeed2 = GetValuel(data, "AltSpeed2");
+ if (!Config.AltSpeed2)
+ Config.AltSpeed2 = 250;
+
Config.HackFix = GetValuel(data, "HackFix");
free(data);
@@ -199,6 +206,9 @@ void SaveConfig() {
SetValuel("RewindCount", Config.RewindCount);
SetValuel("RewindInterval", Config.RewindInterval);
+ SetValuel("AltSpeed1", Config.AltSpeed1);
+ SetValuel("AltSpeed2", Config.AltSpeed2);
+
SetValuel("HackFix", Config.HackFix);
fclose(f);
diff --git a/gui/GtkGui.c b/gui/GtkGui.c
index 04fbcd36..3185e51a 100755
--- a/gui/GtkGui.c
+++ b/gui/GtkGui.c
@@ -229,7 +229,11 @@ gchar* get_state_filename(int i) {
trimlabel = get_cdrom_label_trim();
- sprintf(SStateFile, "%.32s-%.9s.%3.3d", trimlabel, CdromId, i);
+ if (i >= OLD_SLOT && i <= LAST_OLD_SLOT) {
+ sprintf(SStateFile, "%.32s-%.9s.old_%d", trimlabel, CdromId, i - OLD_SLOT);
+ } else {
+ sprintf(SStateFile, "%.32s-%.9s.%3.3d", trimlabel, CdromId, i);
+ }
state_filename = g_build_filename (getenv("HOME"), STATES_DIR, SStateFile, NULL);
g_free(trimlabel);
diff --git a/gui/Linux.h b/gui/Linux.h
index 4e1543c0..db70a2a9 100755
--- a/gui/Linux.h
+++ b/gui/Linux.h
@@ -37,6 +37,10 @@
#define CHEATS_DIR "/.pcsxr/cheats/"
#define PATCHES_DIR "/.pcsxr/patches/"
+#define OLD_SLOT 1000
+#define NUM_OLD_SLOTS 2
+#define LAST_OLD_SLOT (OLD_SLOT + NUM_OLD_SLOTS - 1)
+
extern gboolean UseGui;
extern int StatesC;
char cfgfile[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */
diff --git a/gui/MemcardDlg.c b/gui/MemcardDlg.c
index e0e15d9d..b777126e 100755
--- a/gui/MemcardDlg.c
+++ b/gui/MemcardDlg.c
@@ -137,7 +137,7 @@ static gchar* MCDStatusToChar(McdBlock *Info) {
state = _("Link");
else if (ISLINKENDBLOCK(Info))
state = _("End link");
- } else
+ } else
state = _("Free");
return state;
}
@@ -203,8 +203,20 @@ static void LoadListItems(int mcd, boolean newstore) {
if (newstore) gtk_list_store_append(store, &iter);
+ GError *error=NULL;
title = g_convert(Info->sTitle, strlen(Info->sTitle), "UTF-8",
- "Shift-JIS", NULL, NULL, NULL);
+ "Shift-JIS", NULL, NULL, &error);
+
+ if (error)
+ {
+ // Some characters caused problems because of custom encoding.
+ // Let's use the ASCII title as fallback.
+ // Otherwise custom decoding from that region
+ // of BIOS needed which is way overkill here.
+ title = g_convert(Info->Title, strlen(Info->Title), "UTF-8",
+ "Shift-JIS", NULL, NULL, NULL);
+ g_clear_error(&error);
+ }
gtk_list_store_set(store, &iter,
CL_ICON, pixbuf,
diff --git a/gui/Plugin.c b/gui/Plugin.c
index 08627455..0adf3b5e 100755
--- a/gui/Plugin.c
+++ b/gui/Plugin.c
@@ -42,6 +42,8 @@ extern void LidInterrupt();
unsigned long gpuDisp;
int StatesC = 0;
+unsigned char loadedOld = FALSE;
+int speed = 100;
extern int UseGui;
void gpuShowPic() {
@@ -77,9 +79,23 @@ void gpuShowPic() {
void KeyStateSave(int i) {
gchar *state_filename;
+ gchar *oldname, *newname;
+ int j;
state_filename = get_state_filename (i);
+ if (i < OLD_SLOT && !loadedOld) {
+ newname = get_state_filename (LAST_OLD_SLOT);
+ for (j = LAST_OLD_SLOT - 1; j >= OLD_SLOT; --j) {
+ oldname = get_state_filename (j);
+ rename(oldname, newname);
+ g_free (newname);
+ newname = oldname;
+ }
+ rename(state_filename, newname);
+ g_free (newname);
+ }
state_save (state_filename);
+ loadedOld = FALSE;
g_free (state_filename);
}
@@ -87,6 +103,8 @@ void KeyStateSave(int i) {
void KeyStateLoad(int i) {
gchar *state_filename;
+ loadedOld = (i >= OLD_SLOT && i <= LAST_OLD_SLOT);
+
state_filename = get_state_filename (i);
state_load (state_filename);
@@ -108,6 +126,7 @@ void PADhandleKey(int key) {
char Text[MAXPATHLEN];
gchar *state_filename;
time_t now;
+ int slot;
short rel = 0; //released key flag
@@ -155,69 +174,20 @@ void PADhandleKey(int key) {
if (modalt) KeyStateLoad(10);
break;
- case XK_1:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(0);
- if (modctrl) KeyStateSave(0);
- break;
- case XK_2:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(1);
- if (modctrl) KeyStateSave(1);
- break;
- case XK_3:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(2);
- if (modctrl) KeyStateSave(2);
- break;
- case XK_4:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(3);
- if (modctrl) KeyStateSave(3);
- break;
- case XK_5:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(4);
- if (modctrl) KeyStateSave(4);
- break;
- case XK_6:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(5);
- if (modctrl) KeyStateSave(5);
- break;
- case XK_7:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(6);
- if (modctrl) KeyStateSave(6);
- break;
- case XK_8:
+ case XK_1: case XK_2: case XK_3: case XK_4: case XK_5:
+ case XK_6: case XK_7: case XK_8: case XK_9:
+ slot = key - XK_1;
if (modalt && modctrl)
return;
- if (modalt) KeyStateLoad(7);
- if (modctrl) KeyStateSave(7);
- break;
- case XK_9:
- if (modalt && modctrl)
- return;
- if (modalt) KeyStateLoad(8);
- if (modctrl) KeyStateSave(8);
+ if (modalt) KeyStateLoad(slot);
+ else if (modctrl) KeyStateSave(slot);
+ else KeyStateLoad(OLD_SLOT + slot);
break;
case XK_F1:
GPU_freeze(2, (GPUFreeze_t *)&StatesC);
- state_filename = get_state_filename (StatesC);
- state_save (state_filename);
-
- g_free (state_filename);
+ KeyStateSave(StatesC);
gpuShowPic();
-
break;
case XK_F2:
if (StatesC < (MAX_SLOTS - 1)) StatesC++;
@@ -226,15 +196,7 @@ void PADhandleKey(int key) {
gpuShowPic();
break;
case XK_F3:
- state_filename = get_state_filename (StatesC);
- state_load (state_filename);
-
- g_free (state_filename);
-
- // HACKHACK: prevent crash when using recompiler due to execution not
- // returned from compiled code. This WILL cause memory leak, however a
- // large amount of refactor is needed for a proper fix.
- if (Config.Cpu == CPU_DYNAREC) psxCpu->Execute();
+ KeyStateLoad(StatesC);
gpuShowPic();
break;
case XK_F4:
@@ -290,6 +252,22 @@ void PADhandleKey(int key) {
tslastpressed = now;
RewindState();
break;
+ case XK_bracketleft:
+ if (speed == Config.AltSpeed1) {
+ speed = 100;
+ } else {
+ speed = Config.AltSpeed1;
+ }
+ GPU_setSpeed(speed / 100.0);
+ break;
+ case XK_bracketright:
+ if (speed == Config.AltSpeed2) {
+ speed = 100;
+ } else {
+ speed = Config.AltSpeed2;
+ }
+ GPU_setSpeed(speed / 100.0);
+ break;
case XK_Escape:
// TODO
// the architecture is too broken to actually restart the GUI
@@ -298,8 +276,10 @@ void PADhandleKey(int key) {
// Fixing this would probably require a complete reworking of
// all functions, so that they return 0 or 1 for success
// that way, execution wouldn't continue
- if (CdromId[0] != '\0')
+ if (CdromId[0] != '\0') {
+ loadedOld = TRUE;
KeyStateSave(10);
+ }
ClosePlugins();
UpdateMenuSlots();
if (!UseGui) OnFile_Exit();