diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-01-02 07:55:52 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-01-02 07:55:52 +0000 |
| commit | d4a2f0051ab1a43fbf2376ec905319797a1fdc3c (patch) | |
| tree | 4094b1c78afb63fad13be19b271487ba8ebde4a8 /plugins | |
| parent | 975b596091422b2583ed6d5e0e56efeb4626dfac (diff) | |
| download | pcsxr-d4a2f0051ab1a43fbf2376ec905319797a1fdc3c.tar.gz | |
- dfsound: quick fix (FF9 music, maybe others as well).
- peopsxgl (unix): imported new config utility written by Kivutar, with minor amendments (https://github.com/Kivutar/cfgPeopsMesaGL).
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@61694 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/dfsound/externals.h | 2 | ||||
| -rw-r--r-- | plugins/dfsound/spu.c | 7 | ||||
| -rw-r--r-- | plugins/peopsxgl/Makefile.am | 2 | ||||
| -rw-r--r-- | plugins/peopsxgl/gpucfg/main.c | 1220 | ||||
| -rw-r--r-- | plugins/peopsxgl/gpucfg/peopsxgl.ui | 1727 |
5 files changed, 1616 insertions, 1342 deletions
diff --git a/plugins/dfsound/externals.h b/plugins/dfsound/externals.h index 3143c6df..b8a5c43d 100644 --- a/plugins/dfsound/externals.h +++ b/plugins/dfsound/externals.h @@ -276,7 +276,7 @@ extern unsigned long spuAddr; extern int bEndThread;
extern int bThreadEnded;
extern int bSpuInit;
-extern unsigned long dwNewChannel;
+extern uint32_t dwNewChannel;
extern int SSumR[];
extern int SSumL[];
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index f6c8ebd5..40e32094 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -109,7 +109,7 @@ static HANDLE hMainThread; static pthread_t thread = (pthread_t)-1; // thread id (linux) #endif -unsigned long dwNewChannel=0; // flags for faster testing, if new channel starts +uint32_t dwNewChannel=0; // flags for faster testing, if new channel starts void (CALLBACK *irqCallback)(void)=0; // func of main emu, called on spu irq void (CALLBACK *cddavCallback)(unsigned short,unsigned short)=0; @@ -596,7 +596,10 @@ static void *MAINThread(void *arg) for(ch=0;ch<MAXCHAN;ch++) // loop em all... we will collect 1 ms of sound of each playing channel { - if(s_chan[ch].bNew) StartSound(ch); // start new sound + if(s_chan[ch].bNew) {
+ StartSound(ch); // start new sound
+ dwNewChannel&=~(1<<ch); // clear new channel bit
+ } if(!s_chan[ch].bOn) continue; // channel not playing? next if(s_chan[ch].iActFreq!=s_chan[ch].iUsedFreq) // new psx frequency? diff --git a/plugins/peopsxgl/Makefile.am b/plugins/peopsxgl/Makefile.am index f0bb949a..e7478efa 100644 --- a/plugins/peopsxgl/Makefile.am +++ b/plugins/peopsxgl/Makefile.am @@ -20,4 +20,4 @@ cfgpeopsxgl_LDADD = $(GTK2_LIBS) glade_DATA = gpucfg/peopsxgl.ui gladedir = $(datadir)/psemu/ -#EXTRA_DIST = $(glade_DATA) +EXTRA_DIST = $(glade_DATA) diff --git a/plugins/peopsxgl/gpucfg/main.c b/plugins/peopsxgl/gpucfg/main.c index 199160c2..f9dbdeef 100644 --- a/plugins/peopsxgl/gpucfg/main.c +++ b/plugins/peopsxgl/gpucfg/main.c @@ -1,545 +1,723 @@ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include <gtk/gtk.h> - -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> +#include <stdlib.h> #include <string.h> -#define SETCHECK(winame) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (wndMain,winame)), TRUE) -#define SETEDITVAL(winame,v) sprintf(t,"%d",v);gtk_entry_set_text(GTK_ENTRY(gtk_builder_get_object (wndMain,winame)), t) -#define SETLIST(winame,v) gtk_combo_box_set_active(GTK_COMBO_BOX(gtk_builder_get_object(wndMain,winame)), v) - -static GtkBuilder *wndMain; -void SaveConfig(void); - -int main (int argc, char *argv[]) -{ - GtkWidget *main_win; - GError *error = NULL; - FILE *in;char t[256];int len,val; - char * pB, * p; - - if(argc!=2) return 0; - if(strcmp(argv[1],"CFG")!=0 && strcmp(argv[1],"ABOUT")!=0) - return 0; - - gtk_set_locale (); - gtk_init (&argc, &argv); - - wndMain = gtk_builder_new(); - gtk_builder_set_translation_domain(wndMain, PACKAGE_NAME); - if (!gtk_builder_add_from_file (wndMain, DATADIR "peopsxgl.ui", &error)) - { - g_warning ("Couldn't load builder file: %s", error->message); - g_error_free (error); - return -1; - } - - if (strcmp(argv[1],"ABOUT") == 0) - { - main_win = GTK_WIDGET(gtk_builder_get_object(wndMain, "AboutWnd")); - gtk_widget_show_all (main_win); - gtk_dialog_run(GTK_DIALOG(main_win)); - return 0; - } - - main_win = GTK_WIDGET(gtk_builder_get_object(wndMain, "CfgWnd")); - - 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;} - if(p) val=atoi(p+len); - if(val<10) val=10; - } - SETEDITVAL("edtXSize",val); - - val=480; - if(pB) - { - strcpy(t,"\nResY");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<10) val=10; - } - SETEDITVAL("edtYSize",val); - - val=0; - if(pB) - { - strcpy(t,"\nKeepRatio");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkKeepRatio"); - - val=0; - if(pB) - { - strcpy(t,"\nVRamSize");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1024) val=1024; - } - SETEDITVAL("edtMaxTex",val); - - val=0; - if(pB) - { - strcpy(t,"\n15bitMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chk15bitMdec"); - - val=0; - if(pB) - { - strcpy(t,"\nHiResTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>2) val=2; - } - SETLIST("cmbHiresTex",val); - - val=0; - if(pB) - { - strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkFullScreen"); - - val=0; - if(pB) - { - strcpy(t,"\nScanLines");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkScanlines"); - - val=0; - if(pB) - { - strcpy(t,"\nScanLinesBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<-1) val=-1; - if(val>255) val=255; - } - SETEDITVAL("edtScanBlend",val); - - val=1; - if(pB) - { - strcpy(t,"\nFrameTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>3) val=3; - } - SETLIST("cmbFrameTex",val); - - val=0; - if(pB) - { - strcpy(t,"\nFrameAccess");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>4) val=4; - } - SETLIST("cmbFrameAcc",val); - - val=0; - if(pB) - { - strcpy(t,"\nTexFilter");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>6) val=6; - } - SETLIST("cmbFilter",val); - - val=0; - if(pB) - { - strcpy(t,"\nAdvancedBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkABlend"); - - val=0; - if(pB) - { - strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkDither"); - - val=0; - if(pB) - { - strcpy(t,"\nLineMode");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkLinemode"); - - val=0; - if(pB) - { - strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkShowFPS"); - - val=1; - if(pB) - { - strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkFPSLimit"); - - val=0; - if(pB) - { - strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkFPSSkip"); - - val=2; - if(pB) - { - strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len)+1; - if(val<1) val=1; - if(val>2) val=2; - } - if(val==2) SETCHECK("rdbLimAuto"); - if(val==1) SETCHECK("rdbLimMan"); - - val=200; - if(pB) - { - strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1000) val=1000; - } - SETEDITVAL("edtFPSlim",val); - - val=2; - if(pB) - { - strcpy(t,"\nOffscreenDrawing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>4) val=4; - } - SETLIST("cmbOffscreen",val); - - val=1; - if(pB) - { - strcpy(t,"\nOpaquePass");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkOpaque"); - - val=0; - if(pB) - { - strcpy(t,"\nAntiAlias");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkAntiA"); - - val=0; - if(pB) - { - strcpy(t,"\nTexQuality");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>4) val=4; - } - SETLIST("cmbQuality",val); - - val=0; - if(pB) - { - strcpy(t,"\nMaskDetect");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkMaskBit"); - - val=1; - if(pB) - { - strcpy(t,"\nFastMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkFastMdec"); - - val=1; - if(pB) - { - strcpy(t,"\nOGLExtensions");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkExtensions"); - - val=0; - if(pB) - { - strcpy(t,"\nScreenSmoothing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkBlur"); - - val=0; - if(pB) - { - strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - if(val<0) val=0; - if(val>1) val=1; - } - if(val) SETCHECK("chkGameFixes"); - - val=0; - if(pB) - { - strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} - if(p) val=atoi(p+len); - } - - for(len=0;len<18;len++) - { - if(val & (1<<len)) - { - sprintf(t,"chkFix%d",len); - SETCHECK(t); - } - } - - if(pB) free(pB); - - gtk_widget_show_all (main_win); - if (gtk_dialog_run(GTK_DIALOG(main_win))==GTK_RESPONSE_OK) {SaveConfig();} - return 0; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// - -void SetCfgVal(char * pB,char * pE,int val) -{ - char * p, *ps, *pC;char t[32]; - - sprintf(t,"%d",val); - - p=strstr(pB,pE); - if(p) - { - p=strstr(p,"="); - if(!p) return; - p++; - while(*p && *p!='\n' && *p!='-' && (*p<'0' || *p>'9')) p++; - if(*p==0 || *p=='\n') return; - ps=p; - while((*p>='0' && *p<='9') || *p=='-') p++; - pC=(char *)malloc(32767); - strcpy(pC,p); - strcpy(ps,t); - strcat(pB,pC); - free(pC); - } - else - { - strcat(pB,pE); - strcat(pB," = "); - strcat(pB,t); - strcat(pB,"\n"); - } -} - -//////////////////////////////////////////////////////////////////////////////////////////////// - -#define GETEDITVAL(winame) atoi(gtk_entry_get_text(GTK_ENTRY(gtk_builder_get_object (wndMain,winame)))) -#define GETCHECK(winame) gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (wndMain,winame))) -#define GETLIST(winame) gtk_combo_box_get_active(GTK_COMBO_BOX(gtk_builder_get_object(wndMain,winame))) - -void SaveConfig(void) -{ - FILE *in;int len,val;char * pB;char t[16]; - - pB=(char *)malloc(32767); - memset(pB,0,32767); - - in = fopen("gpuPeopsMesaGL.cfg","rb"); - if(in) - { - len = fread(pB, 1, 32767, in); - fclose(in); - } - - /////////////////////////////////////////////////////////////////////////////// - - val=GETEDITVAL("edtXSize"); - if(val<10) val=10; - SetCfgVal(pB,"\nResX",val); - - val=GETEDITVAL("edtYSize"); - if(val<10) val=10; - SetCfgVal(pB,"\nResY",val); - - val=GETCHECK("chkKeepRatio"); - SetCfgVal(pB,"\nKeepRatio",val); - - val=GETEDITVAL("edtMaxTex"); - if(val<0) val=0; - if(val>1024) val=1024; - SetCfgVal(pB,"\nVRamSize",val); - - val=GETCHECK("chk15bitMdec"); - SetCfgVal(pB,"\n15bitMdec",val); - - val=GETLIST("cmbHiresTex"); - SetCfgVal(pB,"\nHiResTextures",val); - - val=GETCHECK("chkFullScreen"); - SetCfgVal(pB,"\nFullScreen",val); - - val=GETCHECK("chkScanlines"); - SetCfgVal(pB,"\nScanLines",val); - - val=GETEDITVAL("edtScanBlend"); - if(val<-1) val=-1; - if(val>255) val=255; - SetCfgVal(pB,"\nScanLinesBlend",val); - - val=GETLIST("cmbFrameTex"); - SetCfgVal(pB,"\nFrameTextures",val); - - val=GETLIST("cmbFrameAcc"); - SetCfgVal(pB,"\nFrameAccess",val); - - val=GETLIST("cmbFilter"); - SetCfgVal(pB,"\nTexFilter",val); - - val=GETCHECK("chkABlend"); - SetCfgVal(pB,"\nAdvancedBlend",val); +#include "config.h" - val=GETCHECK("chkDither"); - SetCfgVal(pB,"\nDithering",val); +#ifdef ENABLE_NLS +#include <libintl.h> +#include <locale.h> +#endif - val=GETCHECK("chkLinemode"); - SetCfgVal(pB,"\nLineMode",val); +// Widgets +GtkWidget *window, + *btnCancel, + *btnSave, + *spinXSize, + *spinYSize, + *chkKeepRatio, + *chkDithering, + *chkFullScreen, + *cbxTexQuality, + *cbxTexFiltering, + *cbxHiResTex, + *spinVRam, + *chkShowFPS, + *chkUseFPSLimit, + *vboxFPSLimit, + *radFPSLimitAuto, + *radFPSLimitManual, + *spinFPSLimit, + *chkUseFrameSkipping, + *cbxOffscreen, + *cbxFBTex, + *cbxFBAccess, + *chkMaskDetect, + *chkOpaquePass, + *chkAdvancedBlend, + *chkScanLines, + *spinScanLinesBlend, + *chkFastMdec, + *chk15bitMdec, + *chkLineMode, + *chkAntiAlias, + *chkOGLExtensions, + *chkScreenSmoothing, + *chkUseGameFixes, + *tblGameFixes, + *chkCfgFix1, + *chkCfgFix2, + *chkCfgFix4, + *chkCfgFix8, + *chkCfgFix16, + *chkCfgFix32, + *chkCfgFix64, + *chkCfgFix128, + *chkCfgFix256, + *chkCfgFix512, + *chkCfgFix1024, + *chkCfgFix2048, + *chkCfgFix4096, + *chkCfgFix8192, + *chkCfgFix16384, + *chkCfgFix32768, + *chkCfgFix65536, + *chkCfgFix131072, + *btnFast, + *btnBeautiful; + +// Save values to the config file +void on_btnSave_clicked( GtkObject *object, gpointer user_data ) { + FILE *out; + out = fopen( "gpuPeopsMesaGL.cfg", "w+" ); + + if ( out != NULL ) { + + // Computes the 'fixes' bitfield + int cfgFixes = 0; + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix1 ) ) ) { cfgFixes |= (1 << 0); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix2 ) ) ) { cfgFixes |= (1 << 1); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix4 ) ) ) { cfgFixes |= (1 << 2); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix8 ) ) ) { cfgFixes |= (1 << 3); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix16 ) ) ) { cfgFixes |= (1 << 4); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix32 ) ) ) { cfgFixes |= (1 << 5); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix64 ) ) ) { cfgFixes |= (1 << 6); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix128 ) ) ) { cfgFixes |= (1 << 7); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix256 ) ) ) { cfgFixes |= (1 << 8); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix512 ) ) ) { cfgFixes |= (1 << 9); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix1024 ) ) ) { cfgFixes |= (1 << 10); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix2048 ) ) ) { cfgFixes |= (1 << 11); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix4096 ) ) ) { cfgFixes |= (1 << 12); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix8192 ) ) ) { cfgFixes |= (1 << 13); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix16384 ) ) ) { cfgFixes |= (1 << 14); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix32768 ) ) ) { cfgFixes |= (1 << 15); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix65536 ) ) ) { cfgFixes |= (1 << 16); } + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkCfgFix131072 ) ) ) { cfgFixes |= (1 << 17); } + + // Print data to the config file + fprintf( out, "\nResX = %i", gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinXSize ) ) ); + fprintf( out, "\nResY = %i", gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinYSize ) ) ); + fprintf( out, "\nKeepRatio = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkKeepRatio ) ) ); + fprintf( out, "\nDithering = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkDithering ) ) ); + fprintf( out, "\nFullScreen = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkFullScreen ) ) ); + fprintf( out, "\nTexQuality = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxTexQuality ) ) ); + fprintf( out, "\nTexFilter = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxTexFiltering ) ) ); + fprintf( out, "\nHiResTextures = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxHiResTex ) ) ); + fprintf( out, "\nVRamSize = %i", gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinVRam ) ) ); + fprintf( out, "\nShowFPS = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkShowFPS ) ) ); + fprintf( out, "\nUseFrameLimit = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ) ) ); + fprintf( out, "\nFPSDetection = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( radFPSLimitAuto ) ) ); + fprintf( out, "\nFrameRate = %i", gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinFPSLimit ) ) ); + fprintf( out, "\nUseFrameSkip = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkUseFrameSkipping ) ) ); + fprintf( out, "\nOffscreenDrawing = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxOffscreen ) ) ); + fprintf( out, "\nFrameTextures = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxFBTex ) ) ); + fprintf( out, "\nFrameAccess = %i", gtk_combo_box_get_active( GTK_COMBO_BOX( cbxFBAccess ) ) ); + fprintf( out, "\nMaskDetect = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkMaskDetect ) ) ); + fprintf( out, "\nOpaquePass = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkOpaquePass ) ) ); + fprintf( out, "\nAdvancedBlend = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkAdvancedBlend ) ) ); + fprintf( out, "\nScanLines = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkScanLines ) ) ); + fprintf( out, "\nScanLinesBlend = %i", gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinScanLinesBlend ) ) ); + fprintf( out, "\nFastMdec = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkFastMdec ) ) ); + fprintf( out, "\n15bitMdec = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chk15bitMdec ) ) ); + fprintf( out, "\nLineMode = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkLineMode ) ) ); + fprintf( out, "\nAntiAlias = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkAntiAlias ) ) ); + fprintf( out, "\nOGLExtensions = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkOGLExtensions ) ) ); + fprintf( out, "\nScreenSmoothing = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkScreenSmoothing ) ) ); + fprintf( out, "\nUseFixes = %i", gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkUseGameFixes ) ) ); + fprintf( out, "\nCfgFixes = %i", cfgFixes ); + + fclose( out ); + } - val=GETCHECK("chkShowFPS"); - SetCfgVal(pB,"\nShowFPS",val); + gtk_main_quit(); +} - val=GETCHECK("chkFPSLimit"); - SetCfgVal(pB,"\nUseFrameLimit",val); +// Autoconfiguration callbacks + +void on_btnFast_clicked( GtkObject *object, gpointer user_data ) { + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinXSize ), 640 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinYSize ), 480 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkKeepRatio ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkDithering ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFullScreen ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexQuality ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexFiltering ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxHiResTex ), 0 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinVRam ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkShowFPS ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( radFPSLimitAuto ), 1 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinFPSLimit ), 200 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFrameSkipping ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxOffscreen ), 1 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBTex ), 1 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBAccess ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkMaskDetect ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOpaquePass ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAdvancedBlend ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScanLines ), 0 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinScanLinesBlend ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFastMdec ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chk15bitMdec ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkLineMode ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAntiAlias ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOGLExtensions ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScreenSmoothing ), 0 ); +} - val=GETCHECK("chkFPSSkip"); - SetCfgVal(pB,"\nUseFrameSkip",val); +void on_btnBeautiful_clicked( GtkObject *object, gpointer user_data ) { + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinXSize ), 640 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinYSize ), 480 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkKeepRatio ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkDithering ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFullScreen ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexQuality ), 3 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxTexFiltering ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxHiResTex ), 0 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinVRam ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkShowFPS ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( radFPSLimitAuto ), 1 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinFPSLimit ), 200 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkUseFrameSkipping ), 0 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxOffscreen ), 3 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBTex ), 2 ); + gtk_combo_box_set_active( GTK_COMBO_BOX( cbxFBAccess ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkMaskDetect ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOpaquePass ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAdvancedBlend ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScanLines ), 0 ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON( spinScanLinesBlend ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkFastMdec ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chk15bitMdec ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkLineMode ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkAntiAlias ), 0 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkOGLExtensions ), 1 ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( chkScreenSmoothing ), 0 ); +} - val=GETCHECK("rdbLimAuto"); - if(val) val=1; else val=0; - SetCfgVal(pB,"\nFPSDetection",val); +// Callbacks used to toggle the sensitivity of some parts of the GUI - val=GETEDITVAL("edtFPSlim"); - if(val<0) val=0; - if(val>1000) val=1000; - SetCfgVal(pB,"\nFrameRate",val); +void on_chkUseGameFixes_toggled( GtkObject *object, gpointer user_data ) { + gtk_widget_set_sensitive( tblGameFixes, gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkUseGameFixes ) ) ); +} - val=GETLIST("cmbOffscreen"); - SetCfgVal(pB,"\nOffscreenDrawing",val); +void on_chkUseFPSLimit_toggled( GtkObject *object, gpointer user_data ) { + gtk_widget_set_sensitive( vboxFPSLimit, gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkUseFPSLimit ) ) ); +} - val=GETCHECK("chkOpaque"); - SetCfgVal(pB,"\nOpaquePass",val); +void on_radFPSLimitManual_toggled( GtkObject *object, gpointer user_data ) { + gtk_widget_set_sensitive( spinFPSLimit, gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( radFPSLimitManual ) ) ); +} - val=GETCHECK("chkAntiA"); - SetCfgVal(pB,"\nAntiAlias",val); +void on_chkScanLines_toggled( GtkObject *object, gpointer user_data ) { + gtk_widget_set_sensitive( spinScanLinesBlend, gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( chkScanLines ) ) ); +} - val=GETLIST("cmbQuality"); - SetCfgVal(pB,"\nTexQuality",val); +/* Instanciates the GUI + Reads the config file + Sets widget states according to the config file + Connect callbacks to signals */ +int main( int argc, char **argv ) { + GtkBuilder *builder; + GError *error = NULL; + FILE *in; + char *pB, *p; + int len, val; + char t[256]; + +#ifdef ENABLE_NLS + setlocale (LC_ALL, ""); + bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif - val=GETCHECK("chkMaskBit"); - SetCfgVal(pB,"\nMaskDetect",val); + gtk_set_locale(); + gtk_init( &argc, &argv ); - val=GETCHECK("chkFastMdec"); - SetCfgVal(pB,"\nFastMdec",val); + builder = gtk_builder_new(); - val=GETCHECK("chkExtensions"); - SetCfgVal(pB,"\nOGLExtensions",val); + // Load the glade file + if ( !gtk_builder_add_from_file( builder, DATADIR "peopsxgl.ui", &error ) ) { + g_warning( "%s", error->message ); + g_free( error ); + return( 1 ); + } - val=GETCHECK("chkBlur"); - SetCfgVal(pB,"\nScreenSmoothing",val); + // Display the About dialog when the emulator ask for it + 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}; - val=GETCHECK("chkGameFixes"); - SetCfgVal(pB,"\nUseFixes",val); + widget = gtk_about_dialog_new(); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(widget), "OpenGL GPU Driver"); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.18"); + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(widget), "http://pcsxr.codeplex.com/"); - val=0; - for(len=0;len<18;len++) - { - sprintf(t,"chkFix%d",len); - if(GETCHECK(t)) val|=(1<<len); - } - SetCfgVal(pB,"\nCfgFixes",val); + gtk_dialog_run(GTK_DIALOG(widget)); + gtk_widget_destroy(widget); - /////////////////////////////////////////////////////////////////////////////// + return 0; + } - if((in=fopen("gpuPeopsMesaGL.cfg","wb"))!=NULL) - { - fwrite(pB,strlen(pB),1,in); - fclose(in); - } + // 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" ) ); + 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; + + 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 = 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, "\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, "\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, "\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, "\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 = 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 = 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 = 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,"\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 = 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, "\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, "\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, "\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 + gtk_signal_connect( GTK_OBJECT( window ), "destroy", GTK_SIGNAL_FUNC( gtk_main_quit ), NULL ); + gtk_signal_connect( GTK_OBJECT( btnCancel ), "clicked", GTK_SIGNAL_FUNC( gtk_main_quit ), NULL ); + gtk_signal_connect( GTK_OBJECT( btnSave ), "clicked", GTK_SIGNAL_FUNC( on_btnSave_clicked ), NULL ); + gtk_signal_connect( GTK_OBJECT( chkUseGameFixes ), "toggled", GTK_SIGNAL_FUNC( on_chkUseGameFixes_toggled ), NULL ); + gtk_signal_connect( GTK_OBJECT( chkUseFPSLimit ), "toggled", GTK_SIGNAL_FUNC( on_chkUseFPSLimit_toggled ), NULL ); + gtk_signal_connect( GTK_OBJECT( radFPSLimitManual ), "toggled", GTK_SIGNAL_FUNC( on_radFPSLimitManual_toggled ), NULL ); + gtk_signal_connect( GTK_OBJECT( chkScanLines ), "toggled", GTK_SIGNAL_FUNC( on_chkScanLines_toggled ), NULL ); + gtk_signal_connect( GTK_OBJECT( btnFast ), "clicked", GTK_SIGNAL_FUNC( on_btnFast_clicked ), NULL ); + gtk_signal_connect( GTK_OBJECT( btnBeautiful ), "clicked", GTK_SIGNAL_FUNC( on_btnBeautiful_clicked ), NULL ); + + // Call some callbacks to ensure widget state consistency + on_chkUseGameFixes_toggled( GTK_OBJECT( chkUseGameFixes ), NULL ); + on_chkUseFPSLimit_toggled( GTK_OBJECT( chkUseFPSLimit ), NULL ); + on_radFPSLimitManual_toggled( GTK_OBJECT( radFPSLimitManual ), NULL ); + on_chkScanLines_toggled( GTK_OBJECT( chkScanLines ), NULL ); + + gtk_widget_show( window ); + + gtk_main(); - free(pB); + return 0; } - - - diff --git a/plugins/peopsxgl/gpucfg/peopsxgl.ui b/plugins/peopsxgl/gpucfg/peopsxgl.ui index 538c08ce..b96b6485 100644 --- a/plugins/peopsxgl/gpucfg/peopsxgl.ui +++ b/plugins/peopsxgl/gpucfg/peopsxgl.ui @@ -1,1004 +1,911 @@ <?xml version="1.0"?> <interface> - <requires lib="gtk+" version="2.16"/> + <requires lib="gtk+" version="2.14"/> <!-- interface-naming-policy project-wide --> - <object class="GtkListStore" id="liststore6"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: Emulated vram - ok most times</col> - </row> - <row> - <col id="0" translatable="yes">1: Gfx card buffer reads</col> - </row> - <row> - <col id="0" translatable="yes">2: Gfx card buffer moves</col> - </row> - <row> - <col id="0" translatable="yes">3: Gfx buffer reads </col> - </row> - <row> - <col id="0" translatable="yes">4: Full Software (FVP)</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore5"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: None - Fastest, most glitches</col> - </row> - <row> - <col id="0" translatable="yes">1: Minimum - Missing screens</col> - </row> - <row> - <col id="0" translatable="yes">2: Standard - OK for most games</col> - </row> - <row> - <col id="0" translatable="yes">3: Enhanced - Shows more stuff</col> - </row> - <row> - <col id="0" translatable="yes">4: Extended - Causing garbage</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore4"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: Emulated vram - Needs FVP</col> - </row> - <row> - <col id="0" translatable="yes">1: Black - Fast, no effects</col> - </row> - <row> - <col id="0" translatable="yes">2: Gfx card buffer - Can be slow</col> - </row> - <row> - <col id="0" translatable="yes">3: Gfx card </col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore3"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: None (standard)</col> - </row> - <row> - <col id="0" translatable="yes">1: 2xSaI (much vram needed)</col> - </row> - <row> - <col id="0" translatable="yes">2: Scaled (needs tex filtering)</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore2"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: None</col> - </row> - <row> - <col id="0" translatable="yes">1: Standard - Glitches will happen</col> - </row> - <row> - <col id="0" translatable="yes">2: Extended - No black borders</col> - </row> - <row> - <col id="0" translatable="yes">3: Standard without sprites - unfiltered 2D</col> - </row> - <row> - <col id="0" translatable="yes">4: Extended without sprites - unfiltered 2D</col> - </row> - <row> - <col id="0" translatable="yes">5: Standard + smoothed sprites</col> - </row> - <row> - <col id="0" translatable="yes">6: Extended + smoothed sprites</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore1"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: don't care - Use driver's default textures</col> - </row> - <row> - <col id="0" translatable="yes">1: 4444 - Fast, but less colorful</col> - </row> - <row> - <col id="0" translatable="yes">2: 5551 - Nice colors, bad transparency</col> - </row> - <row> - <col id="0" translatable="yes">3: 8888 - Best colors, more ram needed</col> - </row> - <row> - <col id="0" translatable="yes">4: BGR8888 - Faster on some cards</col> - </row> - </data> - </object> - <object class="GtkDialog" id="CfgWnd"> + <object class="GtkDialog" id="MainDialog"> <property name="border_width">5</property> - <property name="title" translatable="yes">P.E.Op.S. MesaGL PSX GPU configuration...</property> + <property name="title" translatable="yes">OpenGL Driver configuration</property> <property name="resizable">False</property> - <property name="modal">True</property> <property name="window_position">center</property> <property name="type_hint">normal</property> + <property name="has_separator">False</property> <child internal-child="vbox"> - <object class="GtkVBox" id="fixed1"> + <object class="GtkVBox" id="dialog-vbox3"> + <property name="visible">True</property> <property name="orientation">vertical</property> + <property name="spacing">2</property> <child> - <object class="GtkHBox" id="my_hbox0"> - <property name="spacing">5</property> + <object class="GtkNotebook" id="notebook1"> + <property name="visible">True</property> + <property name="can_focus">True</property> <child> - <object class="GtkFrame" id="frmWindow"> - <property name="label_xalign">0</property> + <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> <child> - <object class="GtkVBox" id="fixed2"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> + <object class="GtkTable" id="table2"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> <child> - <object class="GtkTable" id="table1"> + <object class="GtkSpinButton" id="spinXSize"> <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">3</property> - <child> - <object class="GtkCheckButton" id="chkFullScreen"> - <property name="label" translatable="yes">Fullscreen</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="edtXSize"> - <property name="can_focus">True</property> - <property name="max_length">5</property> - <property name="invisible_char">•</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="edtYSize"> - <property name="can_focus">True</property> - <property name="invisible_char">•</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label2"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Width:</property> - <property name="justify">right</property> - </object> - </child> - <child> - <object class="GtkLabel" id="label3"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Height:</property> - <property name="justify">right</property> - </object> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> - </child> - <child> - <placeholder/> - </child> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">x</property> + <property name="numeric">True</property> </object> <packing> - <property name="position">0</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkDither"> - <property name="label" translatable="yes">Dithering</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkSpinButton" id="spinYSize"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">y</property> + <property name="numeric">True</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkKeepRatio"> - <property name="label" translatable="yes">Keep psx aspect ratio</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Width:</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> + <property name="x_options"></property> + <property name="y_options"></property> </packing> </child> + <child> + <object class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Height:</property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkFullScreen"> + <property name="label" translatable="yes">Fullscreen</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkDithering"> + <property name="label" translatable="yes">Dithering</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="frame-label1"> - <property name="label" translatable="yes">Window options</property> + <child> + <object class="GtkCheckButton" id="chkKeepRatio"> + <property name="label" translatable="yes">Keep psx aspect ratio</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> </child> </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">Window options</property> + </object> <packing> - <property name="position">0</property> + <property name="tab_fill">False</property> </packing> </child> <child> - <object class="GtkFrame" id="frmTextures"> - <property name="label_xalign">0</property> + <object class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> <child> - <object class="GtkVBox" id="fixed3"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> + <object class="GtkTable" id="table3"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkLabel" id="label9"> <property name="visible">True</property> - <child> - <object class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <object class="GtkLabel" id="label5"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Quality:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label6"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Filtering:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label23"> - <property name="xalign">0</property> - <property name="label" translatable="yes">HiRes Tex:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox3"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <object class="GtkComboBox" id="cmbQuality"> - <property name="model">liststore1</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext1"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkComboBox" id="cmbFilter"> - <property name="model">liststore2</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext2"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkComboBox" id="cmbHiresTex"> - <property name="model">liststore3</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext3"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> + <property name="xalign">0</property> + <property name="label" translatable="yes">Quality:</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Filtering:</property> </object> <packing> - <property name="position">0</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> <child> - <object class="GtkHBox" id="my_hbox6"> - <child> - <object class="GtkLabel" id="label7"> - <property name="label" translatable="yes">VRam size in MBytes (0..1024, 0=auto):</property> - <property name="justify">center</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="edtMaxTex"> - <property name="can_focus">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">HiRes Tex:</property> </object> <packing> - <property name="position">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="frame-label2"> - <property name="label" translatable="yes">Textures</property> - </object> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox2"> - <property name="visible">True</property> - <property name="spacing">5</property> - <child> - <object class="GtkFrame" id="frmFPS"> - <property name="label_xalign">0</property> - <child> - <object class="GtkVBox" id="fixed4"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> <child> - <object class="GtkCheckButton" id="chkShowFPS"> - <property name="label" translatable="yes">Show FPS display on startup</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxTexQuality"> + <property name="visible">True</property> + <property name="model">liststore6</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext6"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFPSLimit"> - <property name="label" translatable="yes">Use FPS limit</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxTexFiltering"> + <property name="visible">True</property> + <property name="model">liststore5</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext5"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="position">1</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFPSSkip"> - <property name="label" translatable="yes">Use Frame skipping</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxHiResTex"> + <property name="visible">True</property> + <property name="model">liststore4</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext4"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox4"> + <property name="visible">True</property> + <property name="spacing">5</property> <child> - <object class="GtkRadioButton" id="rdbLimAuto"> - <property name="label" translatable="yes">FPS limit auto-detection</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> - <property name="group">rdbLimMan</property> + <object class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">VRam size in MBytes (0..1024, 0=auto):</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkHBox" id="my_hbox12"> - <child> - <object class="GtkRadioButton" id="rdbLimMan"> - <property name="label" translatable="yes">FPS limit manual</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="edtFPSlim"> - <property name="can_focus">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label8"> - <property name="label" translatable="yes">FPS</property> - <property name="justify">center</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> + <object class="GtkSpinButton" id="spinVRam"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">v</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">1</property> </packing> </child> </object> - </child> - <child type="label"> - <object class="GtkLabel" id="frame-label3"> - <property name="label" translatable="yes">Framerate</property> - </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> </child> </object> <packing> - <property name="position">0</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Textures</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> </packing> </child> <child> - <object class="GtkFrame" id="frmCompat"> - <property name="label_xalign">0</property> + <object class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> + <child> + <object class="GtkCheckButton" id="chkShowFPS"> + <property name="label" translatable="yes">Show FPS display on startup</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkUseFPSLimit"> + <property name="label" translatable="yes">Use FPS limit</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> <child> - <object class="GtkVBox" id="fixed5"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> + <object class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="left_padding">20</property> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkVBox" id="vboxFPSLimit"> <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkRadioButton" id="radFPSLimitAuto"> + <property name="label" translatable="yes">FPS limit auto-detector</property> <property name="visible">True</property> - <property name="orientation">vertical</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">radFPSLimitManual</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">5</property> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkRadioButton" id="radFPSLimitManual"> + <property name="label" translatable="yes">FPS limit manual</property> <property name="visible">True</property> - <child> - <object class="GtkVBox" id="vbox4"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <object class="GtkLabel" id="label9"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Offscreen Drawing:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label10"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Framebuffer textures:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label22"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Framebuffer access:</property> - </object> - <packing> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox5"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <object class="GtkComboBox" id="cmbOffscreen"> - <property name="model">liststore5</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext5"/> - <attributes> - <attribute name="markup">0</attribute> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkComboBox" id="cmbFrameAcc"> - <property name="model">liststore6</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext6"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkComboBox" id="cmbFrameTex"> - <property name="model">liststore4</property> - <child> - <object class="GtkCellRendererText" id="cellrenderertext4"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="chkMaskBit"> - <property name="label" translatable="yes">Mask bit detection (needed by a few games, zbuffer)</property> <property name="can_focus">True</property> <property name="receives_default">False</property> + <property name="active">True</property> <property name="draw_indicator">True</property> </object> <packing> - <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkOpaque"> - <property name="label" translatable="yes">Alpha Multipass (correct opaque texture areas)</property> + <object class="GtkSpinButton" id="spinFPSLimit"> + <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">f</property> </object> <packing> - <property name="position">2</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkABlend"> - <property name="label" translatable="yes">Advanced blending (Accurate psx color emulation)</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="label" translatable="yes">FPS</property> </object> <packing> - <property name="position">3</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> </packing> </child> </object> <packing> - <property name="position">0</property> + <property name="expand">False</property> + <property name="position">1</property> </packing> </child> </object> - <packing> - <property name="position">0</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="frame-label4"> - <property name="label" translatable="yes">Compatibility</property> + <child> + <object class="GtkCheckButton" id="chkUseFrameSkipping"> + <property name="label" translatable="yes">Use Frame skipping</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> </child> </object> <packing> - <property name="position">1</property> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Framerate</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> </packing> </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="my_hbox3"> - <property name="spacing">5</property> <child> - <object class="GtkFrame" id="frmMisc"> - <property name="label_xalign">0</property> + <object class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> <child> - <object class="GtkVBox" id="fixed6"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> + <object class="GtkTable" id="table4"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> <child> - <object class="GtkHBox" id="my_hbox4"> - <child> - <object class="GtkCheckButton" id="chkScanlines"> - <property name="label" translatable="yes">Scanlines</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label11"> - <property name="label" translatable="yes">Blending (0..255,-1=dot):</property> - <property name="justify">center</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">13</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="edtScanBlend"> - <property name="can_focus">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> + <object class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Offscreen drawing:</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Framebuffer textures:</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFastMdec"> - <property name="label" translatable="yes">Unfiltered MDECs (small movie speedup)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Framebuffer access:</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chk15bitMdec"> - <property name="label" translatable="yes">Force 15 bit framebuffer updates (faster movies)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxOffscreen"> + <property name="visible">True</property> + <property name="model">liststore3</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext3"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkLinemode"> - <property name="label" translatable="yes">Line mode (polygons will not get filled)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxFBTex"> + <property name="visible">True</property> + <property name="model">liststore2</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext2"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkAntiA"> - <property name="label" translatable="yes">Polygon anti-aliasing (slow with most cards)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkComboBox" id="cbxFBAccess"> + <property name="visible">True</property> + <property name="model">liststore1</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext1"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkMaskDetect"> + <property name="label" translatable="yes">Mask bit detection (Needed by a few games, zbuffer)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkOpaquePass"> + <property name="label" translatable="yes">Alpha multipass (Correct opaque texture areas)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkAdvancedBlend"> + <property name="label" translatable="yes">Advanced blending (Accurate psx color emulation)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">Compatibility</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> + <child> + <object class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="spacing">5</property> <child> - <object class="GtkCheckButton" id="chkExtensions"> - <property name="label" translatable="yes">Use OpenGL extensions (recommended)</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkScanLines"> + <property name="label" translatable="yes">Scanlines Blending (0..255, -1=dot):</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">5</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkBlur"> - <property name="label" translatable="yes">Screen smoothing (can be slow or unsupported)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> + <object class="GtkSpinButton" id="spinScanLinesBlend"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">s</property> </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">6</property> + <property name="position">1</property> </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkFastMdec"> + <property name="label" translatable="yes">Unfiltered MDECs (Small movie speedup)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chk15bitMdec"> + <property name="label" translatable="yes">Force 15 bit framebuffer updates (Faster movies)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkLineMode"> + <property name="label" translatable="yes">Line mode (Polygons will not get filled)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="frame-label5"> - <property name="label" translatable="yes">Misc</property> + <child> + <object class="GtkCheckButton" id="chkAntiAlias"> + <property name="label" translatable="yes">Polygon anti-aliasing (Slow with most cards)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkOGLExtensions"> + <property name="label" translatable="yes">Use OpenGL extensions (Recommended)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkScreenSmoothing"> + <property name="label" translatable="yes">Screen smoothing (Can be slow or unsupported)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">6</property> + </packing> </child> </object> <packing> - <property name="position">0</property> + <property name="position">4</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes">Misc</property> + </object> + <packing> + <property name="position">4</property> + <property name="tab_fill">False</property> </packing> </child> <child> - <object class="GtkFrame" id="frmFixes"> - <property name="label_xalign">0</property> + <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="border_width">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> <child> - <object class="GtkVBox" id="fixed7"> - <property name="border_width">5</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkCheckButton" id="chkGameFixes"> - <property name="label" translatable="yes">Use game fixes</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> + <object class="GtkCheckButton" id="chkUseGameFixes"> + <property name="label" translatable="yes">Use game fixes</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment8"> + <property name="visible">True</property> + <property name="left_padding">20</property> <child> - <object class="GtkTable" id="fix_table"> + <object class="GtkTable" id="tblGameFixes"> + <property name="visible">True</property> <property name="n_rows">9</property> <property name="n_columns">2</property> - <property name="homogeneous">True</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> <child> - <object class="GtkCheckButton" id="chkFix0"> - <property name="label" translatable="yes">01: Battle cursor (FF7)</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix1"> + <property name="label" translatable="yes">Battle cursor (FF7)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> + <packing> + <property name="y_options"></property> + </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix1"> - <property name="label" translatable="yes">02: Direct FB updates</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix512"> + <property name="label" translatable="yes">Yellow rect (FF9)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chkCfgFix2"> + <property name="label" translatable="yes">Direct FB updates</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">1</property> <property name="bottom_attach">2</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix2"> - <property name="label" translatable="yes">04: Black brightness (Lunar)</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix4"> + <property name="label" translatable="yes">Black brightness (Lunar)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix3"> - <property name="label" translatable="yes">08: Swap front detection</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix8"> + <property name="label" translatable="yes">Swap front detection</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">3</property> <property name="bottom_attach">4</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix4"> - <property name="label" translatable="yes">10: Disable coord check</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix16"> + <property name="label" translatable="yes">Disable coord check</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">4</property> <property name="bottom_attach">5</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix5"> - <property name="label" translatable="yes">20: No blue glitches (LoD)</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix32"> + <property name="label" translatable="yes">No blue glitches (LoD)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">5</property> <property name="bottom_attach">6</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix6"> - <property name="label" translatable="yes">40: Soft FB access</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix64"> + <property name="label" translatable="yes">Soft FB access</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">6</property> <property name="bottom_attach">7</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix7"> - <property name="label" translatable="yes">80: PC fps calculation</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix128"> + <property name="label" translatable="yes">PC FPS calculation</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">7</property> <property name="bottom_attach">8</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix8"> - <property name="label" translatable="yes">100: Old frame skipping</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix256"> + <property name="label" translatable="yes">Old frame skipping</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> <packing> <property name="top_attach">8</property> <property name="bottom_attach">9</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix9"> - <property name="label" translatable="yes">200: Yellow rect (FF9)</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="chkFix10"> - <property name="label" translatable="yes">400: No subtr. blending</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix1024"> + <property name="label" translatable="yes">No subtr. blending</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1007,12 +914,14 @@ <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix11"> - <property name="label" translatable="yes">800: Lazy upload (DW7)</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix2048"> + <property name="label" translatable="yes">Lazy upload (DW7)</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1021,12 +930,14 @@ <property name="right_attach">2</property> <property name="top_attach">2</property> <property name="bottom_attach">3</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix12"> - <property name="label" translatable="yes">1000: Odd/even hack</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix4096"> + <property name="label" translatable="yes">Odd/even hack</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1035,12 +946,14 @@ <property name="right_attach">2</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix13"> - <property name="label" translatable="yes">2000: Adjust screen width</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix8192"> + <property name="label" translatable="yes">Adjust screen width</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1049,12 +962,14 @@ <property name="right_attach">2</property> <property name="top_attach">4</property> <property name="bottom_attach">5</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix14"> - <property name="label" translatable="yes">4000: Old texture filtering</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix16384"> + <property name="label" translatable="yes">Old texture filtering</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1063,12 +978,14 @@ <property name="right_attach">2</property> <property name="top_attach">5</property> <property name="bottom_attach">6</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix15"> - <property name="label" translatable="yes">8000: Additional uploads</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix32768"> + <property name="label" translatable="yes">Additional uploads</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1077,12 +994,15 @@ <property name="right_attach">2</property> <property name="top_attach">6</property> <property name="bottom_attach">7</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix16"> - <property name="label" translatable="yes">10000: unused</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix65536"> + <property name="label" translatable="yes">Unused</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1091,12 +1011,14 @@ <property name="right_attach">2</property> <property name="top_attach">7</property> <property name="bottom_attach">8</property> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkCheckButton" id="chkFix17"> - <property name="label" translatable="yes">20000: fake 'gpu busy'</property> - <property name="can_focus">False</property> + <object class="GtkCheckButton" id="chkCfgFix131072"> + <property name="label" translatable="yes">Fake 'GPU busy'</property> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="draw_indicator">True</property> </object> @@ -1105,104 +1027,275 @@ <property name="right_attach">2</property> <property name="top_attach">8</property> <property name="bottom_attach">9</property> + <property name="y_options"></property> </packing> </child> </object> - <packing> - <property name="position">1</property> - </packing> </child> </object> - </child> - <child type="label"> - <object class="GtkLabel" id="frame-label6"> - <property name="label" translatable="yes">Special game fixes</property> - </object> + <packing> + <property name="position">1</property> + </packing> </child> </object> <packing> - <property name="position">1</property> + <property name="position">5</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Special game fixes</property> + </object> + <packing> + <property name="position">5</property> + <property name="tab_fill">False</property> </packing> </child> </object> <packing> - <property name="position">2</property> + <property name="position">0</property> </packing> </child> <child internal-child="action_area"> - <object class="GtkHButtonBox" id="act_area1"> - <property name="layout_style">center</property> + <object class="GtkHButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="btnFast"> + <property name="label" translatable="yes">Fast</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Autoconfigure for fast display</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnBeautiful"> + <property name="label" translatable="yes">Beautiful</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Auto configure for beautiful display</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + <property name="secondary">True</property> + </packing> + </child> <child> <object class="GtkButton" id="btnSave"> <property name="label">gtk-ok</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> <property name="use_stock">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">2</property> </packing> </child> <child> <object class="GtkButton" id="btnCancel"> <property name="label">gtk-cancel</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="receives_default">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> <property name="use_stock">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">3</property> </packing> </child> </object> <packing> <property name="expand">False</property> <property name="pack_type">end</property> - <property name="position">3</property> + <property name="position">0</property> </packing> </child> </object> </child> <action-widgets> - <action-widget response="-5">btnSave</action-widget> - <action-widget response="-6">btnCancel</action-widget> + <action-widget response="0">btnFast</action-widget> + <action-widget response="0">btnBeautiful</action-widget> + <action-widget response="0">btnSave</action-widget> + <action-widget response="0">btnCancel</action-widget> </action-widgets> </object> - <object class="GtkAboutDialog" id="AboutWnd"> - <property name="border_width">5</property> - <property name="type_hint">dialog</property> - <property name="program_name">P.E.Op.S. MesaGL PSX GPU</property> - <property name="version">1.78</property> - <property name="copyright" translatable="yes">Coded by: Pete Bernert</property> - <property name="comments" translatable="yes">Release date: 01.04.2009</property> - <property name="website">http://www.pbernert.com</property> - <property name="website_label" translatable="yes">http://www.pbernert.com</property> - <child internal-child="vbox"> - <object class="GtkVBox" id="dialog-vbox3"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <placeholder/> - </child> - <child internal-child="action_area"> - <object class="GtkHButtonBox" id="dialog-action_area4"> - <property name="visible">True</property> - <property name="layout_style">end</property> - </object> - <packing> - <property name="expand">False</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> + <object class="GtkAdjustment" id="x"> + <property name="upper">9999</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="y"> + <property name="upper">9999</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="f"> + <property name="value">60</property> + <property name="lower">20</property> + <property name="upper">200</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkListStore" id="liststore1"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Emulated VRam - Ok most times</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer reads</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer moves</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer reads and moves</col> + </row> + <row> + <col id="0" translatable="yes">Full Software (FVP)</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore2"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Emulated VRam - Needs FVP</col> + </row> + <row> + <col id="0" translatable="yes">Black - Fast, no effects</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer - Can be slow</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card and soft - Slow</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore3"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None - Fastest, most glitches</col> + </row> + <row> + <col id="0" translatable="yes">Minimum - Missing screens</col> + </row> + <row> + <col id="0" translatable="yes">Standard - OK for most games</col> + </row> + <row> + <col id="0" translatable="yes">Enhanced - Shows more stuff</col> + </row> + <row> + <col id="0" translatable="yes">Extended - Causing garbage</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore4"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None (Standard)</col> + </row> + <row> + <col id="0" translatable="yes">2xSaI (Much vram needed)</col> + </row> + <row> + <col id="0" translatable="yes">Scaled (Needs tex filtering)</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore5"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None</col> + </row> + <row> + <col id="0" translatable="yes">Standard - Glitches will happen</col> + </row> + <row> + <col id="0" translatable="yes">Extended - No black borders</col> + </row> + <row> + <col id="0" translatable="yes">Standard without sprites - Unfiltered 2D</col> + </row> + <row> + <col id="0" translatable="yes">Extended without sprites - Unfiltered 2D</col> + </row> + <row> + <col id="0" translatable="yes">Standard + smoothed sprites</col> + </row> + <row> + <col id="0" translatable="yes">Extended + smoothed sprites</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore6"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Don't care - Use driver's default textures</col> + </row> + <row> + <col id="0" translatable="yes">4444 - Fast, but less colorful</col> + </row> + <row> + <col id="0" translatable="yes">5551 - Nice colors, bad transparency</col> + </row> + <row> + <col id="0" translatable="yes">8888 - Best colors, more ram needed</col> + </row> + <row> + <col id="0" translatable="yes">BGR8888 - Faster on some cards</col> + </row> + </data> + </object> + <object class="GtkAdjustment" id="v"> + <property name="upper">1024</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="s"> + <property name="lower">-1</property> + <property name="upper">255</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> </object> </interface> |
