summaryrefslogtreecommitdiff
path: root/gui/ConfDlg.c
diff options
context:
space:
mode:
authorStelios Tsampas <loathingkernel@gmail.com>2017-07-17 23:22:35 +0300
committerStelios Tsampas <loathingkernel@gmail.com>2017-07-17 23:22:35 +0300
commitf48b5b2ac35ee69db0c0ffd3f411ffc21b7d5789 (patch)
tree22d499eabc60f6fbb1ecd05b2ca9c53ac931e3cb /gui/ConfDlg.c
parent7a43668f9d227213586a305d1913d3c4b5d98f5a (diff)
downloadpcsxr-f48b5b2ac35ee69db0c0ffd3f411ffc21b7d5789.tar.gz
* Add configuration UI for PGXP.
* Clean generated files with `make clean`
Diffstat (limited to 'gui/ConfDlg.c')
-rwxr-xr-xgui/ConfDlg.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c
index 30d3df1f..529e2722 100755
--- a/gui/ConfDlg.c
+++ b/gui/ConfDlg.c
@@ -845,6 +845,7 @@ static void FindNetPlugin() {
}
GtkWidget *CpuDlg;
+GtkWidget *PgxpDlg;
GList *psxglist;
char *psxtypes[] = {
"NTSC",
@@ -1033,5 +1034,87 @@ void OnConf_Cpu() {
G_CALLBACK(OnCpu_Clicked), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
}
+//When a different mode is selected, display some informational text
+static void OnPgxp_ModeChanged(GtkWidget *widget, gpointer user_data) {
+ uint8_t mode;
+
+ mode = gtk_combo_box_get_active(GTK_COMBO_BOX(
+ gtk_builder_get_object(builder, "PGXP_Mode")));
+
+ switch (mode) {
+ case 0:
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")),
+ _("Disabled"));
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")),
+ _("PGXP is not mirroring any functions currently."));
+ break;
+ case 1:
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")),
+ _("Memory operations only"));
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")),
+ _("PGXP is mirroring load, store and processor transfer operations of the CPU and GTE."));
+ break;
+ case 2:
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")),
+ _("Memory and CPU arithmetic operations"));
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")),
+ _("PGXP is mirroring load, store and transfer operations of the CPU and GTE and arithmetic/logic functions of the PSX CPU.\n(WARNING: This mode is currently unfinished and may cause incorrect behaviour in some games)."));
+ break;
+ default:
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")),
+ _("Error"));
+ gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")),
+ _("Unknown mode."));
+ }
+}
+
+static void OnPgxp_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
+
+ Config.PGXP_GTE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_GTE")));
+ Config.PGXP_Cache = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_Cache")));
+ Config.PGXP_Texture = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_Texture")));
+
+ Config.PGXP_Mode = gtk_combo_box_get_active(GTK_COMBO_BOX(
+ gtk_builder_get_object(builder, "PGXP_Mode")));
+
+ EmuSetPGXPMode(Config.PGXP_Mode);
+ SaveConfig();
+
+ gtk_widget_destroy(PgxpDlg);
+ PgxpDlg = NULL;
+}
+
void OnConf_Pgxp() {
+ GtkWidget *widget;
+ char buf[25];
+
+ builder = gtk_builder_new();
+
+ if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) {
+ g_warning("Error: interface could not be loaded!");
+ return;
+ }
+
+ PgxpDlg = GTK_WIDGET(gtk_builder_get_object(builder, "PgxpDlg"));
+ gtk_window_set_default_size(GTK_WINDOW(PgxpDlg), 320, 320);
+ gtk_widget_show (PgxpDlg);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_GTE")), Config.PGXP_GTE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_Cache")), Config.PGXP_Cache);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+ gtk_builder_get_object(builder, "PGXP_Texture")), Config.PGXP_Texture);
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(
+ gtk_builder_get_object(builder, "PGXP_Mode")), Config.PGXP_Mode);
+ OnPgxp_ModeChanged(NULL, NULL);
+
+ g_signal_connect_data(G_OBJECT(gtk_builder_get_object(builder, "PGXP_Mode")), "changed",
+ G_CALLBACK(OnPgxp_ModeChanged), builder, NULL, G_CONNECT_AFTER);
+ g_signal_connect_data(G_OBJECT(PgxpDlg), "response",
+ G_CALLBACK(OnPgxp_Clicked), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
}