git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@83100 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
SND\edgbla_cp 2013-02-23 02:54:51 +00:00
parent d3b43b5b64
commit 56fc32e977
13 changed files with 897 additions and 852 deletions

View File

@ -23,7 +23,7 @@ PCSX-Reloaded Authors/Contributors: avlex (Help on xcode project)
Benoît Gschwind (MDEC decoder improvements)
ckain (Various bugfixes)
Dario (Various bugfixes)
edgbla (Root counters, various core/plugin fixes)
edgbla (Root counters, SIO1, various core/plugin fixes)
Firnis (GTE code from PCSX-Revolution Project)
Hopkat (Sound plugin improvements, core fixes)
Gabriele Gorla (MDEC decoder)

View File

@ -29,6 +29,7 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netdb.h>
#include <unistd.h>
#endif
#include "typedefs.h"

View File

@ -97,16 +97,14 @@ void OnCopyIP(GtkWidget *widget, gpointer user_data) {
/***************************************************************************/
static
s32 configure() {
void configure() {
GtkBuilder *builder;
GtkWidget *widget, *MainWindow;
builder = gtk_builder_new();
if (!gtk_builder_add_from_file(builder, DATADIR "sio1.ui", NULL)) {
if(!gtk_builder_add_from_file(builder, DATADIR "sio1.ui", NULL))
g_warning("We could not load the interface!");
return 0;
}
settingsRead();
@ -144,31 +142,26 @@ s32 configure() {
settings.port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
widget = gtk_builder_get_object(builder, "rbDisabled");
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
settings.player = PLAYER_DISABLED;
}
else {
widget = gtk_builder_get_object(builder, "rbServer");
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
settings.player = PLAYER_MASTER;
} else {
else
settings.player = PLAYER_SLAVE;
}
}
settingsWrite();
gtk_widget_destroy(MainWindow);
return 1;
}
gtk_widget_destroy(MainWindow);
return 0;
}
static
s32 about() {
void about() {
const char *authors[]= {"edgbla <edgbla@yandex.ru>", NULL};
GtkWidget *widget;
@ -194,13 +187,22 @@ int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
if(argc > 1) {
if(!strcmp(argv[1], "configure"))
return configure();
if(!strcmp(argv[1], "about"))
return about();
if (argc < 2) {
printf ("Usage: cfgBladeSio1 {about | configure}\n");
return 0;
}
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgBladeSio1 {about | configure}\n");
return 0;
}
if(!strcmp(argv[1], "configure"))
configure();
else if(!strcmp(argv[1], "about"))
about();
return 0;
}

View File

@ -206,6 +206,13 @@ static void OnConfigExit(GtkWidget *widget, gpointer user_data) {
long CDRconfigure() {
LoadConf();
builder = gtk_builder_new();
if (!gtk_builder_add_from_file(builder, DATADIR "dfcdrom.ui", NULL)) {
g_warning("We could not load the interface!");
return 0;
}
MainWindow = gtk_builder_get_object(builder, "CfgWnd");
gtk_window_set_title(GTK_WINDOW(MainWindow), _("CDR configuration"));
@ -268,20 +275,21 @@ int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
if (argc != 2) return 0;
if (strcmp(argv[1], "configure") == 0) {
builder = gtk_builder_new();
if (!gtk_builder_add_from_file(builder, DATADIR "dfcdrom.ui", NULL)) {
g_warning("We could not load the interface!");
return 0;
}
CDRconfigure();
} else {
CDRabout();
if (argc < 2) {
printf ("Usage: cfgBladeSio1 {about | configure}\n");
return 0;
}
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgBladeSio1 {about | configure}\n");
return 0;
}
if(!strcmp(argv[1], "configure"))
CDRconfigure();
else if(!strcmp(argv[1], "about"))
CDRabout();
return 0;
}

View File

@ -775,11 +775,21 @@ int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
if (argc > 1 && !strcmp(argv[1], "-about")) {
PADabout();
} else {
PADconfigure();
if (argc < 2) {
printf ("Usage: cfgDFInput {about | configure}\n");
return 0;
}
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgDFInput {about | configure}\n");
return 0;
}
if(!strcmp(argv[1], "configure"))
PADconfigure();
else if(!strcmp(argv[1], "about"))
PADabout();
return 0;
}

View File

@ -655,7 +655,7 @@ long PADconfigure(void) {
if (pid == 0) {
if (fork() == 0) {
execl("cfg/cfgDFInput", "cfgDFInput", NULL);
execl("cfg/cfgDFInput", "cfgDFInput", "configure", NULL);
}
exit(0);
} else if (pid > 0) {
@ -670,7 +670,7 @@ void PADabout(void) {
if (pid == 0) {
if (fork() == 0) {
execl("cfg/cfgDFInput", "cfgDFInput", "-about", NULL);
execl("cfg/cfgDFInput", "cfgDFInput", "about", NULL);
}
exit(0);
} else if (pid > 0) {

View File

@ -214,18 +214,31 @@ int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
if (!strcmp(argv[1], "configure")) {
CFGconfigure();
} else if (!strcmp(argv[1], "open")) {
return CFGopen();
} else if (!strcmp(argv[1], "wait")) {
CFGwait();
} else if (!strcmp(argv[1], "pause")) {
return CFGpause();
} else if (!strcmp(argv[1], "about")) {
CFGabout();
} else if (!strcmp(argv[1], "message")) {
CFGmessage(&argv[2], argc - 2);
if (argc < 2) {
printf ("Usage: cfgDFNet {about | configure | open | wait | pause | message}\n");
return 0;
}
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgDFNet {about | configure | open | wait | pause | message}\n");
return 0;
}
if(argc > 1) {
if (!strcmp(argv[1], "configure")) {
CFGconfigure();
} else if (!strcmp(argv[1], "about")) {
CFGabout();
} else if (!strcmp(argv[1], "open")) {
return CFGopen();
} else if (!strcmp(argv[1], "wait")) {
CFGwait();
} else if (!strcmp(argv[1], "pause")) {
return CFGpause();
} else if (!strcmp(argv[1], "message")) {
CFGmessage(&argv[2], argc - 2);
}
}
return 0;

View File

@ -1436,7 +1436,7 @@ long CALLBACK SPUconfigure(void)
#elif defined (_MACOSX)
DoConfiguration();
#else
StartCfgTool("CFG");
StartCfgTool("configure");
#endif
return 0;
@ -1451,7 +1451,7 @@ void CALLBACK SPUabout(void)
#elif defined (_MACOSX)
DoAbout();
#else
StartCfgTool("ABOUT");
StartCfgTool("about");
#endif
}

View File

@ -66,19 +66,20 @@ int main(int argc, char *argv[])
textdomain (GETTEXT_PACKAGE);
#endif
if (argc != 2) {
printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
if (argc < 2) {
printf ("Usage: cfgDFSound {about | configure}\n");
return 0;
}
if (strcmp(argv[1], "CFG") != 0 && strcmp(argv[1], "ABOUT") != 0) {
printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgDFSound {about | configure}\n");
return 0;
}
gtk_init(&argc, &argv);
if (strcmp(argv[1], "ABOUT") == 0) {
if (strcmp(argv[1], "about") == 0) {
const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL};
widget = gtk_about_dialog_new ();
gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (widget), "dfsound PCSXR Sound Plugin");
@ -94,143 +95,145 @@ int main(int argc, char *argv[])
return 0;
}
else if (strcmp(argv[1], "configure") == 0) {
builder = gtk_builder_new();
builder = gtk_builder_new();
if (!gtk_builder_add_from_file(builder, DATADIR "dfsound.ui", NULL)) {
g_warning("We could not load the interface!");
return 0;
}
MainWindow = gtk_builder_get_object(builder, "CfgWnd");
if (!gtk_builder_add_from_file(builder, DATADIR "dfsound.ui", NULL)) {
g_warning("We could not load the interface!");
return 0;
strcpy(cfg, CONFIG_FILENAME);
in = fopen(cfg, READBINARY);
if (in) {
pB = (char *)malloc(32767);
memset(pB, 0, 32767);
len = fread(pB, 1, 32767, in);
fclose(in);
} else {
pB = 0;
printf ("Error - no configuration file\n");
/* TODO Raise error - no configuration file */
}
/* ADB TODO Replace a lot of the following with common functions */
if (pB) {
strcpy(t, "\nVolume");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, -1, 4) + 1;
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "cbVolume2")), val);
if (pB) {
strcpy(t, "\nUseInterpolation");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 3);
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "cbInterpolation2")), val);
if (pB) {
strcpy(t, "\nXAPitch");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkXASpeed")), val);
if (pB) {
strcpy(t, "\nHighCompMode");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 1;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkHiCompat")), val);
if (pB) {
strcpy(t, "\nSPUIRQWait");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 1;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkIRQWait")), val);
if (pB) {
strcpy(t, "\nDisStereo");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkDisStereo")), val);
if (pB) {
strcpy(t, "\nFreqResponse");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkFreqResponse")), val);
if (pB) {
strcpy(t, "\nUseReverb");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 2);
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX(gtk_builder_get_object(builder, "cbReverb2")), val);
if (pB)
free(pB);
widget = gtk_builder_get_object(builder, "CfgWnd");
g_signal_connect_data(G_OBJECT(widget), "destroy",
G_CALLBACK(SaveConfig), builder, NULL, 0);
widget = gtk_builder_get_object(builder, "btn_close");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnConfigClose), builder, NULL, G_CONNECT_AFTER);
gtk_widget_show(MainWindow);
gtk_main();
}
MainWindow = gtk_builder_get_object(builder, "CfgWnd");
strcpy(cfg, CONFIG_FILENAME);
in = fopen(cfg, READBINARY);
if (in) {
pB = (char *)malloc(32767);
memset(pB, 0, 32767);
len = fread(pB, 1, 32767, in);
fclose(in);
} else {
pB = 0;
printf ("Error - no configuration file\n");
/* TODO Raise error - no configuration file */
}
/* ADB TODO Replace a lot of the following with common functions */
if (pB) {
strcpy(t, "\nVolume");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, -1, 4) + 1;
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "cbVolume2")), val);
if (pB) {
strcpy(t, "\nUseInterpolation");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 3);
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "cbInterpolation2")), val);
if (pB) {
strcpy(t, "\nXAPitch");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkXASpeed")), val);
if (pB) {
strcpy(t, "\nHighCompMode");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 1;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkHiCompat")), val);
if (pB) {
strcpy(t, "\nSPUIRQWait");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 1;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkIRQWait")), val);
if (pB) {
strcpy(t, "\nDisStereo");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkDisStereo")), val);
if (pB) {
strcpy(t, "\nFreqResponse");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 1);
} else val = 0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "chkFreqResponse")), val);
if (pB) {
strcpy(t, "\nUseReverb");
p = strstr(pB, t);
if (p) {
p = strstr(p, "=");
len = 1;
}
val = set_limit (p, len, 0, 2);
} else val = 2;
gtk_combo_box_set_active(GTK_COMBO_BOX(gtk_builder_get_object(builder, "cbReverb2")), val);
if (pB)
free(pB);
widget = gtk_builder_get_object(builder, "CfgWnd");
g_signal_connect_data(G_OBJECT(widget), "destroy",
G_CALLBACK(SaveConfig), builder, NULL, 0);
widget = gtk_builder_get_object(builder, "btn_close");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnConfigClose), builder, NULL, G_CONNECT_AFTER);
gtk_widget_show(MainWindow);
gtk_main();
return 0;
}

View File

@ -217,15 +217,12 @@ void ExecCfg(char *arg) {
void SoftDlgProc(void)
{
ExecCfg("CFG");
ExecCfg("configure");
}
void AboutDlgProc(void)
{
char args[256];
sprintf(args, "ABOUT");
ExecCfg(args);
ExecCfg("about");
}
void ReadConfig(void)

View File

@ -117,19 +117,20 @@ main (int argc, char *argv[])
textdomain (GETTEXT_PACKAGE);
#endif
if (argc!=2) {
printf("Usage: cfgDFXVideo {ABOUT | CFG}\n");
return 0;
}
if(strcmp(argv[1],"CFG")!=0 && strcmp(argv[1],"ABOUT")!=0) {
printf("Usage: cfgDFXVideo {ABOUT | CFG}\n");
return 0;
}
if (argc < 2) {
printf ("Usage: cfgDFXVideo {about | configure}\n");
return 0;
}
gtk_init (&argc, &argv);
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgDFXVideo {about | configure}\n");
return 0;
}
gtk_init (&argc, &argv);
if (strcmp(argv[1], "ABOUT") == 0) {
if (strcmp(argv[1], "about") == 0) {
const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL};
widget = gtk_about_dialog_new ();
gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (widget), "P.E.Op.S PCSXR Video Plugin");
@ -137,7 +138,7 @@ main (int argc, char *argv[])
gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors);
gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (widget), "http://pcsx-df.sourceforge.net/");
g_signal_connect_data(G_OBJECT(widget), "response",
g_signal_connect_data(G_OBJECT(widget), "response",
G_CALLBACK(on_about_clicked), NULL, NULL, G_CONNECT_AFTER);
gtk_widget_show (widget);
@ -145,189 +146,191 @@ main (int argc, char *argv[])
return 0;
}
else {
builder = gtk_builder_new();
if (!gtk_builder_add_from_file(builder, DATADIR "dfxvideo.ui", NULL)) {
g_warning("We could not load the interface!");
return -1;
}
builder = gtk_builder_new();
/*ADB wndMain = gtk_builder_get_object(builder, "CfgWnd");*/
strcpy(cfg, CONFIG_FILENAME);
in = fopen(cfg,READBINARY);
/* ADB TODO This is bad - asking for problems; need to read in line by line */
if(in)
{
pB=(char *)malloc(32767);
memset(pB,0,32767);
len = fread(pB, 1, 32767, in);
fclose(in);
}
else{ pB=0;printf("Couldn't find config file %s\n", cfg);}
/* ADB TODO Parse this like we parse the config file in PCSXR - use common functions! */
val=1;
if(pB)
{
strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1600);
}
if (val == 1600) val = VIDMODE_1600x1200;
else if (val == 1280) val = VIDMODE_1280x1024;
else if (val == 1152) val = VIDMODE_1152x864;
else if (val == 1024) val = VIDMODE_1024x768;
else if (val == 800) val = VIDMODE_800x600;
else if (val == 640) val = VIDMODE_640x480;
else if (val == 320) val = VIDMODE_320x200;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "resCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nNoStretch");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 9);
}
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "stretchCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 2);
}
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "ditherCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nMaintain43");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "maintain43")), val);
val=0; //ADB Leave - these are default values
if(pB)
{
strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkFullscreen")), val);
val=0;
if(pB)
{
strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkShowFPS")), val);
val=1;
if(pB)
{
strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkSetFPS")), val);
val=0;
if(pB)
{
strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 1, 2);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkAutoFPSLimit")), (val-1));
val=0;
if(pB)
{
strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkFrameSkip")), val);
valf=200;
if(pB)
{
strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
if(p) valf=(float)atoi(p+len) / 10;
if(valf<1) valf=1;
if(valf>500) valf=500;
}
sprintf(tempstr,"%.1f",valf);
gtk_entry_set_text(gtk_builder_get_object(builder, "entryFPS"),tempstr);
val=0;
if(pB)
{
strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkUseFixes")), val);
if(pB)
{
strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
if (p)
val = atoi(p + len);
}
for (i=0; i<11; i++)
{
sprintf(tempstr, "checkFix%d", i+1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder,tempstr)), (val>>i)&1 );
}
if(pB) free(pB);
widget = gtk_builder_get_object(builder, "CfgWnd");
g_signal_connect_data(G_OBJECT(widget), "destroy",
G_CALLBACK(SaveConfig), NULL, NULL, 0);
widget = gtk_builder_get_object(builder, "btn_close");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnConfigClose), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkFullscreen");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fullscreen_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkUseFixes");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_use_fixes_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkSetFPS");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fps_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkAutoFPSLimit");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fps_toggled), NULL, NULL, G_CONNECT_AFTER);
on_fullscreen_toggled(widget, NULL);
on_fps_toggled(widget, NULL);
on_use_fixes_toggled(widget, NULL);
gtk_main ();
}
if (!gtk_builder_add_from_file(builder, DATADIR "dfxvideo.ui", NULL)) {
g_warning("We could not load the interface!");
return -1;
}
/*ADB wndMain = gtk_builder_get_object(builder, "CfgWnd");*/
strcpy(cfg, CONFIG_FILENAME);
in = fopen(cfg,READBINARY);
/* ADB TODO This is bad - asking for problems; need to read in line by line */
if(in)
{
pB=(char *)malloc(32767);
memset(pB,0,32767);
len = fread(pB, 1, 32767, in);
fclose(in);
}
else{ pB=0;printf("Couldn't find config file %s\n", cfg);}
/* ADB TODO Parse this like we parse the config file in PCSXR - use common functions! */
val=1;
if(pB)
{
strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1600);
}
if (val == 1600) val = VIDMODE_1600x1200;
else if (val == 1280) val = VIDMODE_1280x1024;
else if (val == 1152) val = VIDMODE_1152x864;
else if (val == 1024) val = VIDMODE_1024x768;
else if (val == 800) val = VIDMODE_800x600;
else if (val == 640) val = VIDMODE_640x480;
else if (val == 320) val = VIDMODE_320x200;
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "resCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nNoStretch");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 9);
}
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "stretchCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 2);
}
gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object(builder, "ditherCombo2")), val);
val=0;
if(pB)
{
strcpy(t,"\nMaintain43");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "maintain43")), val);
val=0; //ADB Leave - these are default values
if(pB)
{
strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkFullscreen")), val);
val=0;
if(pB)
{
strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkShowFPS")), val);
val=1;
if(pB)
{
strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkSetFPS")), val);
val=0;
if(pB)
{
strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 1, 2);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkAutoFPSLimit")), (val-1));
val=0;
if(pB)
{
strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkFrameSkip")), val);
valf=200;
if(pB)
{
strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
if(p) valf=(float)atoi(p+len) / 10;
if(valf<1) valf=1;
if(valf>500) valf=500;
}
sprintf(tempstr,"%.1f",valf);
gtk_entry_set_text(gtk_builder_get_object(builder, "entryFPS"),tempstr);
val=0;
if(pB)
{
strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
val = set_limit (p, len, 0, 1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "checkUseFixes")), val);
if(pB)
{
strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
if (p)
val = atoi(p + len);
}
for (i=0; i<11; i++)
{
sprintf(tempstr, "checkFix%d", i+1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder,tempstr)), (val>>i)&1 );
}
if(pB) free(pB);
widget = gtk_builder_get_object(builder, "CfgWnd");
g_signal_connect_data(G_OBJECT(widget), "destroy",
G_CALLBACK(SaveConfig), NULL, NULL, 0);
widget = gtk_builder_get_object(builder, "btn_close");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnConfigClose), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkFullscreen");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fullscreen_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkUseFixes");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_use_fixes_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkSetFPS");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fps_toggled), NULL, NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "checkAutoFPSLimit");
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_fps_toggled), NULL, NULL, G_CONNECT_AFTER);
on_fullscreen_toggled(widget, NULL);
on_fps_toggled(widget, NULL);
on_use_fixes_toggled(widget, NULL);
gtk_main ();
return 0;
}

View File

@ -3000,8 +3000,8 @@ long CALLBACK GPUconfigure(void)
#elif defined(_MACGL)
long CALLBACK GPUconfigure(void)
{
DlgProc();
return 0;
DlgProc();
return 0;
}
#else
@ -3057,7 +3057,7 @@ void StartCfgTool(char *arg) // linux: start external cfg tool
long CALLBACK GPUconfigure(void)
{
StartCfgTool("CFG");
StartCfgTool("configure");
return 0;
}
@ -3140,16 +3140,12 @@ long CALLBACK GPUdmaChain(uint32_t *baseAddrL, uint32_t addr)
void CALLBACK GPUabout(void)
{
#ifdef _WINDOWS
HWND hWP=GetActiveWindow(); // to be sure
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_ABOUT),
hWP,(DLGPROC)AboutDlgProc);
HWND hWP=GetActiveWindow(); // to be sure
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_ABOUT), hWP,(DLGPROC)AboutDlgProc);
#elif defined(_MACGL)
AboutDlgProc();
#else
StartCfgTool("ABOUT");
StartCfgTool("about");
#endif
}

View File

@ -239,6 +239,17 @@ int main( int argc, char **argv ) {
gtk_init( &argc, &argv );
if (argc < 2) {
printf ("Usage: cfgpeopsxgl {about | configure}\n");
return 0;
}
if (strcmp(argv[1], "configure") != 0 &&
strcmp(argv[1], "about") != 0) {
printf ("Usage: cfgpeopsxgl {about | configure}\n");
return 0;
}
builder = gtk_builder_new();
// Load the glade file
@ -249,7 +260,7 @@ int main( int argc, char **argv ) {
}
// Display the About dialog when the emulator ask for it
if ( argv[1] && strcmp( argv[1], "ABOUT" ) == 0 ) {
if ( argv[1] && strcmp( argv[1], "about" ) == 0 ) {
GtkWidget *widget;
const char *authors[]= {"Adapted from P.E.Op.S OpenGL GPU by Pete Bernert", NULL};
@ -264,488 +275,489 @@ int main( int argc, char **argv ) {
return 0;
}
else {
// Get widgets from the glade file
window = GTK_WIDGET( gtk_builder_get_object( builder, "MainDialog" ) );
btnCancel = GTK_WIDGET( gtk_builder_get_object( builder, "btnCancel" ) );
btnSave = GTK_WIDGET( gtk_builder_get_object( builder, "btnSave" ) );
spinXSize = GTK_WIDGET( gtk_builder_get_object( builder, "spinXSize" ) );
spinYSize = GTK_WIDGET( gtk_builder_get_object( builder, "spinYSize" ) );
chkKeepRatio = GTK_WIDGET( gtk_builder_get_object( builder, "chkKeepRatio" ) );
chkDithering = GTK_WIDGET( gtk_builder_get_object( builder, "chkDithering" ) );
chkFullScreen = GTK_WIDGET( gtk_builder_get_object( builder, "chkFullScreen" ) );
cbxTexQuality = GTK_WIDGET( gtk_builder_get_object( builder, "cbxTexQuality" ) );
cbxTexFiltering = GTK_WIDGET( gtk_builder_get_object( builder, "cbxTexFiltering" ) );
cbxHiResTex = GTK_WIDGET( gtk_builder_get_object( builder, "cbxHiResTex" ) );
spinVRam = GTK_WIDGET( gtk_builder_get_object( builder, "spinVRam" ) );
chkShowFPS = GTK_WIDGET( gtk_builder_get_object( builder, "chkShowFPS" ) );
chkUseFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseFPSLimit" ) );
vboxFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "vboxFPSLimit" ) );
radFPSLimitAuto = GTK_WIDGET( gtk_builder_get_object( builder, "radFPSLimitAuto" ) );
radFPSLimitManual = GTK_WIDGET( gtk_builder_get_object( builder, "radFPSLimitManual" ) );
spinFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "spinFPSLimit" ) );
chkUseFrameSkipping = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseFrameSkipping" ) );
cbxOffscreen = GTK_WIDGET( gtk_builder_get_object( builder, "cbxOffscreen" ) );
cbxFBTex = GTK_WIDGET( gtk_builder_get_object( builder, "cbxFBTex" ) );
cbxFBAccess = GTK_WIDGET( gtk_builder_get_object( builder, "cbxFBAccess" ) );
chkMaskDetect = GTK_WIDGET( gtk_builder_get_object( builder, "chkMaskDetect" ) );
chkOpaquePass = GTK_WIDGET( gtk_builder_get_object( builder, "chkOpaquePass" ) );
chkAdvancedBlend = GTK_WIDGET( gtk_builder_get_object( builder, "chkAdvancedBlend" ) );
chkScanLines = GTK_WIDGET( gtk_builder_get_object( builder, "chkScanLines" ) );
spinScanLinesBlend = GTK_WIDGET( gtk_builder_get_object( builder, "spinScanLinesBlend" ) );
chkFastMdec = GTK_WIDGET( gtk_builder_get_object( builder, "chkFastMdec" ) );
chk15bitMdec = GTK_WIDGET( gtk_builder_get_object( builder, "chk15bitMdec" ) );
chkLineMode = GTK_WIDGET( gtk_builder_get_object( builder, "chkLineMode" ) );
chkAntiAlias = GTK_WIDGET( gtk_builder_get_object( builder, "chkAntiAlias" ) );
chkOGLExtensions = GTK_WIDGET( gtk_builder_get_object( builder, "chkOGLExtensions" ) );
chkScreenSmoothing = GTK_WIDGET( gtk_builder_get_object( builder, "chkScreenSmoothing" ) );
chkGteAccuracy = GTK_WIDGET( gtk_builder_get_object( builder, "chkGteAccuracy" ) );
chkUseGameFixes = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseGameFixes" ) );
tblGameFixes = GTK_WIDGET( gtk_builder_get_object( builder, "tblGameFixes" ) );
chkCfgFix1 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix1" ) );
chkCfgFix2 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix2" ) );
chkCfgFix4 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix4" ) );
chkCfgFix8 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix8" ) );
chkCfgFix16 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix16" ) );
chkCfgFix32 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix32" ) );
chkCfgFix64 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix64" ) );
chkCfgFix128 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix128" ) );
chkCfgFix256 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix256" ) );
chkCfgFix512 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix512" ) );
chkCfgFix1024 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix1024" ) );
chkCfgFix2048 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix2048" ) );
chkCfgFix4096 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix4096" ) );
chkCfgFix8192 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix8192" ) );
chkCfgFix16384 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix16384" ) );
chkCfgFix32768 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix32768" ) );
chkCfgFix65536 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix65536" ) );
chkCfgFix131072 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix131072" ) );
btnFast = GTK_WIDGET( gtk_builder_get_object( builder, "btnFast" ) );
btnBeautiful = GTK_WIDGET( gtk_builder_get_object( builder, "btnBeautiful" ) );
// Get widgets from the glade file
window = GTK_WIDGET( gtk_builder_get_object( builder, "MainDialog" ) );
btnCancel = GTK_WIDGET( gtk_builder_get_object( builder, "btnCancel" ) );
btnSave = GTK_WIDGET( gtk_builder_get_object( builder, "btnSave" ) );
spinXSize = GTK_WIDGET( gtk_builder_get_object( builder, "spinXSize" ) );
spinYSize = GTK_WIDGET( gtk_builder_get_object( builder, "spinYSize" ) );
chkKeepRatio = GTK_WIDGET( gtk_builder_get_object( builder, "chkKeepRatio" ) );
chkDithering = GTK_WIDGET( gtk_builder_get_object( builder, "chkDithering" ) );
chkFullScreen = GTK_WIDGET( gtk_builder_get_object( builder, "chkFullScreen" ) );
cbxTexQuality = GTK_WIDGET( gtk_builder_get_object( builder, "cbxTexQuality" ) );
cbxTexFiltering = GTK_WIDGET( gtk_builder_get_object( builder, "cbxTexFiltering" ) );
cbxHiResTex = GTK_WIDGET( gtk_builder_get_object( builder, "cbxHiResTex" ) );
spinVRam = GTK_WIDGET( gtk_builder_get_object( builder, "spinVRam" ) );
chkShowFPS = GTK_WIDGET( gtk_builder_get_object( builder, "chkShowFPS" ) );
chkUseFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseFPSLimit" ) );
vboxFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "vboxFPSLimit" ) );
radFPSLimitAuto = GTK_WIDGET( gtk_builder_get_object( builder, "radFPSLimitAuto" ) );
radFPSLimitManual = GTK_WIDGET( gtk_builder_get_object( builder, "radFPSLimitManual" ) );
spinFPSLimit = GTK_WIDGET( gtk_builder_get_object( builder, "spinFPSLimit" ) );
chkUseFrameSkipping = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseFrameSkipping" ) );
cbxOffscreen = GTK_WIDGET( gtk_builder_get_object( builder, "cbxOffscreen" ) );
cbxFBTex = GTK_WIDGET( gtk_builder_get_object( builder, "cbxFBTex" ) );
cbxFBAccess = GTK_WIDGET( gtk_builder_get_object( builder, "cbxFBAccess" ) );
chkMaskDetect = GTK_WIDGET( gtk_builder_get_object( builder, "chkMaskDetect" ) );
chkOpaquePass = GTK_WIDGET( gtk_builder_get_object( builder, "chkOpaquePass" ) );
chkAdvancedBlend = GTK_WIDGET( gtk_builder_get_object( builder, "chkAdvancedBlend" ) );
chkScanLines = GTK_WIDGET( gtk_builder_get_object( builder, "chkScanLines" ) );
spinScanLinesBlend = GTK_WIDGET( gtk_builder_get_object( builder, "spinScanLinesBlend" ) );
chkFastMdec = GTK_WIDGET( gtk_builder_get_object( builder, "chkFastMdec" ) );
chk15bitMdec = GTK_WIDGET( gtk_builder_get_object( builder, "chk15bitMdec" ) );
chkLineMode = GTK_WIDGET( gtk_builder_get_object( builder, "chkLineMode" ) );
chkAntiAlias = GTK_WIDGET( gtk_builder_get_object( builder, "chkAntiAlias" ) );
chkOGLExtensions = GTK_WIDGET( gtk_builder_get_object( builder, "chkOGLExtensions" ) );
chkScreenSmoothing = GTK_WIDGET( gtk_builder_get_object( builder, "chkScreenSmoothing" ) );
chkGteAccuracy = GTK_WIDGET( gtk_builder_get_object( builder, "chkGteAccuracy" ) );
chkUseGameFixes = GTK_WIDGET( gtk_builder_get_object( builder, "chkUseGameFixes" ) );
tblGameFixes = GTK_WIDGET( gtk_builder_get_object( builder, "tblGameFixes" ) );
chkCfgFix1 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix1" ) );
chkCfgFix2 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix2" ) );
chkCfgFix4 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix4" ) );
chkCfgFix8 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix8" ) );
chkCfgFix16 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix16" ) );
chkCfgFix32 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix32" ) );
chkCfgFix64 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix64" ) );
chkCfgFix128 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix128" ) );
chkCfgFix256 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix256" ) );
chkCfgFix512 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix512" ) );
chkCfgFix1024 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix1024" ) );
chkCfgFix2048 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix2048" ) );
chkCfgFix4096 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix4096" ) );
chkCfgFix8192 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix8192" ) );
chkCfgFix16384 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix16384" ) );
chkCfgFix32768 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix32768" ) );
chkCfgFix65536 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix65536" ) );
chkCfgFix131072 = GTK_WIDGET( gtk_builder_get_object( builder, "chkCfgFix131072" ) );
btnFast = GTK_WIDGET( gtk_builder_get_object( builder, "btnFast" ) );
btnBeautiful = GTK_WIDGET( gtk_builder_get_object( builder, "btnBeautiful" ) );
// Read the config file
in = fopen( "gpuPeopsMesaGL.cfg", "rb" );
if ( in ) {
pB = (char *) malloc( 32767 );
memset( pB, 0, 32767 );
len = fread( pB, 1, 32767, in );
fclose(in);
}
else pB = 0;
// Read the config file
in = fopen( "gpuPeopsMesaGL.cfg", "rb" );
if ( in ) {
pB = (char *) malloc( 32767 );
memset( pB, 0, 32767 );
len = fread( pB, 1, 32767, in );
fclose(in);
}
else pB = 0;
val = 640;
if ( pB ) {
strcpy( t, "\nResX" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinXSize ), val );
val = 640;
if ( pB ) {
strcpy( t, "\nResX" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinXSize ), val );
val = 480;
if ( pB ) {
strcpy( t, "\nResY" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinYSize ), val );
val = 480;
if ( pB ) {
strcpy( t, "\nResY" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinYSize ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nKeepRatio" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkKeepRatio ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nKeepRatio" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkKeepRatio ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nDithering" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkDithering ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nDithering" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkDithering ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nFullScreen" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFullScreen ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nTexQuality" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexQuality ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nFullScreen" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFullScreen ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nTexQuality" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexQuality ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nTexFilter" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexFiltering ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nTexFilter" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexFiltering ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nHiResTextures" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxHiResTex ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nHiResTextures" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxHiResTex ), val );
val = 0;
if ( pB ) {
strcpy(t,"\nVRamSize");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinVRam ), val );
val = 0;
if ( pB ) {
strcpy(t,"\nVRamSize");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinVRam ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nShowFPS" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkShowFPS ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nShowFPS" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkShowFPS ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nUseFrameLimit" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nUseFrameLimit" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFPSDetection" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( radFPSLimitAuto ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFPSDetection" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( radFPSLimitAuto ), val );
val = 200;
if ( pB ) {
strcpy(t,"\nFrameRate");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinFPSLimit ), val );
val = 200;
if ( pB ) {
strcpy(t,"\nFrameRate");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinFPSLimit ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nUseFrameSkip" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFrameSkipping ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nUseFrameSkip" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFrameSkipping ), val );
val = 2;
if ( pB ) {
strcpy( t, "\nOffscreenDrawing" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxOffscreen ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFrameTextures" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBTex ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nFrameAccess" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBAccess ), val );
val = 2;
if ( pB ) {
strcpy( t, "\nOffscreenDrawing" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxOffscreen ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFrameTextures" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBTex ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nFrameAccess" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBAccess ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nMaskDetect" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkMaskDetect ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nMaskDetect" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkMaskDetect ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nOpaquePass" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOpaquePass ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nOpaquePass" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOpaquePass ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nAdvancedBlend" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAdvancedBlend ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nAdvancedBlend" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAdvancedBlend ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nScanLines" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScanLines ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nScanLines" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScanLines ), val );
val = 0;
if ( pB ) {
strcpy(t,"\nScanLinesBlend");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinScanLinesBlend ), val );
val = 0;
if ( pB ) {
strcpy(t,"\nScanLinesBlend");
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinScanLinesBlend ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFastMdec" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFastMdec ), val );
val = 1;
if ( pB ) {
strcpy( t, "\nFastMdec" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFastMdec ), val );
val = 0;
if ( pB ) {
strcpy( t, "\n15bitMdec" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chk15bitMdec ), val );
val = 0;
if ( pB ) {
strcpy( t, "\n15bitMdec" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chk15bitMdec ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nLineMode" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkLineMode ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nLineMode" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkLineMode ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nAntiAlias" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAntiAlias ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nAntiAlias" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAntiAlias ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nOGLExtensions" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOGLExtensions ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nOGLExtensions" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOGLExtensions ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nScreenSmoothing" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScreenSmoothing ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nScreenSmoothing" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScreenSmoothing ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nGteAccuracy" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkGteAccuracy ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nUseFixes" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseGameFixes ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nGteAccuracy" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkGteAccuracy ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nCfgFixes" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
if ( val & (1 << 17) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix131072 ), TRUE ); }
if ( val & (1 << 16) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix65536 ), TRUE ); }
if ( val & (1 << 15) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix32768 ), TRUE ); }
if ( val & (1 << 14) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix16384 ), TRUE ); }
if ( val & (1 << 13) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix8192 ), TRUE ); }
if ( val & (1 << 12) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix4096 ), TRUE ); }
if ( val & (1 << 11) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix2048 ), TRUE ); }
if ( val & (1 << 10) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix1024 ), TRUE ); }
if ( val & (1 << 9) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix512 ), TRUE ); }
if ( val & (1 << 8) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix256 ), TRUE ); }
if ( val & (1 << 7) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix128 ), TRUE ); }
if ( val & (1 << 6) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix64 ), TRUE ); }
if ( val & (1 << 5) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix32 ), TRUE ); }
if ( val & (1 << 4) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix16 ), TRUE ); }
if ( val & (1 << 3) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix8 ), TRUE ); }
if ( val & (1 << 2) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix4 ), TRUE ); }
if ( val & (1 << 1) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix2 ), TRUE ); }
if ( val & (1 << 0) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix1 ), TRUE ); }
gtk_builder_connect_signals( builder, NULL );
g_object_unref( G_OBJECT( builder ) );
// Connect callbacks to signals
g_signal_connect(G_OBJECT( window ), "destroy", G_CALLBACK( gtk_main_quit ), NULL );
g_signal_connect(G_OBJECT( btnCancel ), "clicked", G_CALLBACK( gtk_main_quit ), NULL );
g_signal_connect(G_OBJECT( btnSave ), "clicked", G_CALLBACK( on_btnSave_clicked ), NULL );
g_signal_connect(G_OBJECT( chkUseGameFixes ), "toggled", G_CALLBACK( on_chkUseGameFixes_toggled ), NULL );
g_signal_connect(G_OBJECT( chkUseFPSLimit ), "toggled", G_CALLBACK( on_chkUseFPSLimit_toggled ), NULL );
g_signal_connect(G_OBJECT( radFPSLimitManual ), "toggled", G_CALLBACK( on_radFPSLimitManual_toggled ), NULL );
g_signal_connect(G_OBJECT( chkScanLines ), "toggled", G_CALLBACK( on_chkScanLines_toggled ), NULL );
g_signal_connect(G_OBJECT( btnFast ), "clicked", G_CALLBACK( on_btnFast_clicked ), NULL );
g_signal_connect(G_OBJECT( btnBeautiful ), "clicked", G_CALLBACK( on_btnBeautiful_clicked ), NULL );
// Call some callbacks to ensure widget state consistency
on_chkUseGameFixes_toggled( G_OBJECT( chkUseGameFixes ), NULL );
on_chkUseFPSLimit_toggled( G_OBJECT( chkUseFPSLimit ), NULL );
on_radFPSLimitManual_toggled( G_OBJECT( radFPSLimitManual ), NULL );
on_chkScanLines_toggled( G_OBJECT( chkScanLines ), NULL );
gtk_widget_show( window );
gtk_main();
}
val = 0;
if ( pB ) {
strcpy( t, "\nUseFixes" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseGameFixes ), val );
val = 0;
if ( pB ) {
strcpy( t, "\nCfgFixes" );
p = strstr( pB, t );
if ( p ) {
p = strstr( p, "=" );
len = 1;
val = atoi( p + len );
}
}
if ( val & (1 << 17) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix131072 ), TRUE ); }
if ( val & (1 << 16) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix65536 ), TRUE ); }
if ( val & (1 << 15) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix32768 ), TRUE ); }
if ( val & (1 << 14) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix16384 ), TRUE ); }
if ( val & (1 << 13) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix8192 ), TRUE ); }
if ( val & (1 << 12) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix4096 ), TRUE ); }
if ( val & (1 << 11) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix2048 ), TRUE ); }
if ( val & (1 << 10) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix1024 ), TRUE ); }
if ( val & (1 << 9) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix512 ), TRUE ); }
if ( val & (1 << 8) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix256 ), TRUE ); }
if ( val & (1 << 7) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix128 ), TRUE ); }
if ( val & (1 << 6) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix64 ), TRUE ); }
if ( val & (1 << 5) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix32 ), TRUE ); }
if ( val & (1 << 4) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix16 ), TRUE ); }
if ( val & (1 << 3) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix8 ), TRUE ); }
if ( val & (1 << 2) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix4 ), TRUE ); }
if ( val & (1 << 1) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix2 ), TRUE ); }
if ( val & (1 << 0) ) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkCfgFix1 ), TRUE ); }
gtk_builder_connect_signals( builder, NULL );
g_object_unref( G_OBJECT( builder ) );
// Connect callbacks to signals
g_signal_connect(G_OBJECT( window ), "destroy", G_CALLBACK( gtk_main_quit ), NULL );
g_signal_connect(G_OBJECT( btnCancel ), "clicked", G_CALLBACK( gtk_main_quit ), NULL );
g_signal_connect(G_OBJECT( btnSave ), "clicked", G_CALLBACK( on_btnSave_clicked ), NULL );
g_signal_connect(G_OBJECT( chkUseGameFixes ), "toggled", G_CALLBACK( on_chkUseGameFixes_toggled ), NULL );
g_signal_connect(G_OBJECT( chkUseFPSLimit ), "toggled", G_CALLBACK( on_chkUseFPSLimit_toggled ), NULL );
g_signal_connect(G_OBJECT( radFPSLimitManual ), "toggled", G_CALLBACK( on_radFPSLimitManual_toggled ), NULL );
g_signal_connect(G_OBJECT( chkScanLines ), "toggled", G_CALLBACK( on_chkScanLines_toggled ), NULL );
g_signal_connect(G_OBJECT( btnFast ), "clicked", G_CALLBACK( on_btnFast_clicked ), NULL );
g_signal_connect(G_OBJECT( btnBeautiful ), "clicked", G_CALLBACK( on_btnBeautiful_clicked ), NULL );
// Call some callbacks to ensure widget state consistency
on_chkUseGameFixes_toggled( G_OBJECT( chkUseGameFixes ), NULL );
on_chkUseFPSLimit_toggled( G_OBJECT( chkUseFPSLimit ), NULL );
on_radFPSLimitManual_toggled( G_OBJECT( radFPSLimitManual ), NULL );
on_chkScanLines_toggled( G_OBJECT( chkScanLines ), NULL );
gtk_widget_show( window );
gtk_main();
return 0;
}