17 #define SETCHECK(winame) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON ((GtkWidget*) gtk_object_get_data (GTK_OBJECT (CfgWnd),winame)), TRUE)
18 #define SETEDIT(winame,sz) gtk_entry_set_text(GTK_ENTRY((GtkWidget*) gtk_object_get_data (GTK_OBJECT (CfgWnd),winame)), sz)
19 #define SETEDITVAL(winame,v) sprintf(t,"%d",v);gtk_entry_set_text(GTK_ENTRY((GtkWidget*) gtk_object_get_data (GTK_OBJECT (CfgWnd),winame)), t)
20 #define SETLIST(winame,v) gtk_list_select_item(GTK_LIST(GTK_COMBO((GtkWidget*) gtk_object_get_data (GTK_OBJECT (CfgWnd),winame))->list),v)
22 static GtkWidget * wndMain=0;
24 int main (int argc, char *argv[])
27 FILE *in;char t[256];int len,val;
31 if(strcmp(argv[1],"CFG")!=0 && strcmp(argv[1],"ABOUT")!=0)
35 setlocale (LC_ALL, "");
36 bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
37 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
38 textdomain (GETTEXT_PACKAGE);
42 gtk_init (&argc, &argv);
44 if (strcmp(argv[1],"ABOUT") == 0)
46 CfgWnd = create_AboutWnd ();
47 gtk_widget_show (CfgWnd);
52 CfgWnd = create_CfgWnd ();
55 in = fopen("gpuPeopsMesaGL.cfg","rb");
58 pB=(char *)malloc(32767);
60 len = fread(pB, 1, 32767, in);
68 strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
69 if(p) val=atoi(p+len);
72 SETEDITVAL("edtXSize",val);
77 strcpy(t,"\nResY");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
78 if(p) val=atoi(p+len);
81 SETEDITVAL("edtYSize",val);
86 strcpy(t,"\nKeepRatio");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
87 if(p) val=atoi(p+len);
91 if(val) SETCHECK("chkKeepRatio");
96 strcpy(t,"\nVRamSize");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
97 if(p) val=atoi(p+len);
99 if(val>1024) val=1024;
101 SETEDITVAL("edtMaxTex",val);
106 strcpy(t,"\n15bitMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
107 if(p) val=atoi(p+len);
111 if(val) SETCHECK("chk15bitMdec");
116 strcpy(t,"\nHiResTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
117 if(p) val=atoi(p+len);
121 SETLIST("cmbHiresTex",val);
126 strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
127 if(p) val=atoi(p+len);
131 if(val) SETCHECK("chkFullScreen");
136 strcpy(t,"\nScanLines");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
137 if(p) val=atoi(p+len);
141 if(val) SETCHECK("chkScanlines");
146 strcpy(t,"\nScanLinesBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
147 if(p) val=atoi(p+len);
151 SETEDITVAL("edtScanBlend",val);
156 strcpy(t,"\nFrameTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
157 if(p) val=atoi(p+len);
161 SETLIST("cmbFrameTex",val);
166 strcpy(t,"\nFrameAccess");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
167 if(p) val=atoi(p+len);
171 SETLIST("cmbFrameAcc",val);
176 strcpy(t,"\nTexFilter");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
177 if(p) val=atoi(p+len);
181 SETLIST("cmbFilter",val);
186 strcpy(t,"\nAdvancedBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
187 if(p) val=atoi(p+len);
191 if(val) SETCHECK("chkABlend");
196 strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
197 if(p) val=atoi(p+len);
201 if(val) SETCHECK("chkDither");
206 strcpy(t,"\nLineMode");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
207 if(p) val=atoi(p+len);
211 if(val) SETCHECK("chkLinemode");
216 strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
217 if(p) val=atoi(p+len);
221 if(val) SETCHECK("chkShowFPS");
226 strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
227 if(p) val=atoi(p+len);
231 if(val) SETCHECK("chkFPSLimit");
236 strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
237 if(p) val=atoi(p+len);
241 if(val) SETCHECK("chkFPSSkip");
246 strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
247 if(p) val=atoi(p+len)+1;
251 if(val==2) SETCHECK("rdbLimAuto");
252 if(val==1) SETCHECK("rdbLimMan");
257 strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
258 if(p) val=atoi(p+len);
260 if(val>1000) val=1000;
262 SETEDITVAL("edtFPSlim",val);
267 strcpy(t,"\nOffscreenDrawing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
268 if(p) val=atoi(p+len);
272 SETLIST("cmbOffscreen",val);
277 strcpy(t,"\nOpaquePass");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
278 if(p) val=atoi(p+len);
282 if(val) SETCHECK("chkOpaque");
287 strcpy(t,"\nAntiAlias");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
288 if(p) val=atoi(p+len);
292 if(val) SETCHECK("chkAntiA");
297 strcpy(t,"\nTexQuality");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
298 if(p) val=atoi(p+len);
302 SETLIST("cmbQuality",val);
307 strcpy(t,"\nMaskDetect");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
308 if(p) val=atoi(p+len);
312 if(val) SETCHECK("chkMaskBit");
317 strcpy(t,"\nFastMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
318 if(p) val=atoi(p+len);
322 if(val) SETCHECK("chkFastMdec");
327 strcpy(t,"\nOGLExtensions");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
328 if(p) val=atoi(p+len);
332 if(val) SETCHECK("chkExtensions");
337 strcpy(t,"\nScreenSmoothing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
338 if(p) val=atoi(p+len);
342 if(val) SETCHECK("chkBlur");
347 strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
348 if(p) val=atoi(p+len);
352 if(val) SETCHECK("chkGameFixes");
357 strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
358 if(p) val=atoi(p+len);
361 for(len=0;len<18;len++)
365 sprintf(t,"chkFix%d",len);
372 gtk_widget_show (CfgWnd);
377 ////////////////////////////////////////////////////////////////////////////////////////////////
379 void SetCfgVal(char * pB,char * pE,int val)
381 char * p, *ps, *pC;char t[32];
391 while(*p && *p!='\n' && *p!='-' && (*p<'0' || *p>'9')) p++;
392 if(*p==0 || *p=='\n') return;
394 while((*p>='0' && *p<='9') || *p=='-') p++;
395 pC=(char *)malloc(32767);
410 ////////////////////////////////////////////////////////////////////////////////////////////////
412 #define GETEDITVAL(winame) atoi(gtk_entry_get_text(GTK_ENTRY((GtkWidget*) gtk_object_get_data (GTK_OBJECT (wndMain),winame))))
413 #define GETCHECK(winame) gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ((GtkWidget*) gtk_object_get_data (GTK_OBJECT (wndMain),winame)))?1:0
414 #define GETLIST(winame) atoi(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO((GtkWidget*) gtk_object_get_data (GTK_OBJECT (wndMain),winame))->entry)))
416 void SaveConfig(void)
418 FILE *in;int len,val;char * pB;char t[16];
420 pB=(char *)malloc(32767);
423 in = fopen("gpuPeopsMesaGL.cfg","rb");
426 len = fread(pB, 1, 32767, in);
430 ///////////////////////////////////////////////////////////////////////////////
432 val=GETEDITVAL("edtXSize");
434 SetCfgVal(pB,"\nResX",val);
436 val=GETEDITVAL("edtYSize");
438 SetCfgVal(pB,"\nResY",val);
440 val=GETCHECK("chkKeepRatio");
441 SetCfgVal(pB,"\nKeepRatio",val);
443 val=GETEDITVAL("edtMaxTex");
445 if(val>1024) val=1024;
446 SetCfgVal(pB,"\nVRamSize",val);
448 val=GETCHECK("chk15bitMdec");
449 SetCfgVal(pB,"\n15bitMdec",val);
451 val=GETLIST("cmbHiresTex");
452 SetCfgVal(pB,"\nHiResTextures",val);
454 val=GETCHECK("chkFullScreen");
455 SetCfgVal(pB,"\nFullScreen",val);
457 val=GETCHECK("chkScanlines");
458 SetCfgVal(pB,"\nScanLines",val);
460 val=GETEDITVAL("edtScanBlend");
463 SetCfgVal(pB,"\nScanLinesBlend",val);
465 val=GETLIST("cmbFrameTex");
466 SetCfgVal(pB,"\nFrameTextures",val);
468 val=GETLIST("cmbFrameAcc");
469 SetCfgVal(pB,"\nFrameAccess",val);
471 val=GETLIST("cmbFilter");
472 SetCfgVal(pB,"\nTexFilter",val);
474 val=GETCHECK("chkABlend");
475 SetCfgVal(pB,"\nAdvancedBlend",val);
477 val=GETCHECK("chkDither");
478 SetCfgVal(pB,"\nDithering",val);
480 val=GETCHECK("chkLinemode");
481 SetCfgVal(pB,"\nLineMode",val);
483 val=GETCHECK("chkShowFPS");
484 SetCfgVal(pB,"\nShowFPS",val);
486 val=GETCHECK("chkFPSLimit");
487 SetCfgVal(pB,"\nUseFrameLimit",val);
489 val=GETCHECK("chkFPSSkip");
490 SetCfgVal(pB,"\nUseFrameSkip",val);
492 val=GETCHECK("rdbLimAuto");
493 if(val) val=1; else val=0;
494 SetCfgVal(pB,"\nFPSDetection",val);
496 val=GETEDITVAL("edtFPSlim");
498 if(val>1000) val=1000;
499 SetCfgVal(pB,"\nFrameRate",val);
501 val=GETLIST("cmbOffscreen");
502 SetCfgVal(pB,"\nOffscreenDrawing",val);
504 val=GETCHECK("chkOpaque");
505 SetCfgVal(pB,"\nOpaquePass",val);
507 val=GETCHECK("chkAntiA");
508 SetCfgVal(pB,"\nAntiAlias",val);
510 val=GETLIST("cmbQuality");
511 SetCfgVal(pB,"\nTexQuality",val);
513 val=GETCHECK("chkMaskBit");
514 SetCfgVal(pB,"\nMaskDetect",val);
516 val=GETCHECK("chkFastMdec");
517 SetCfgVal(pB,"\nFastMdec",val);
519 val=GETCHECK("chkExtensions");
520 SetCfgVal(pB,"\nOGLExtensions",val);
522 val=GETCHECK("chkBlur");
523 SetCfgVal(pB,"\nScreenSmoothing",val);
525 val=GETCHECK("chkGameFixes");
526 SetCfgVal(pB,"\nUseFixes",val);
529 for(len=0;len<18;len++)
531 sprintf(t,"chkFix%d",len);
532 if(GETCHECK(t)) val|=(1<<len);
534 SetCfgVal(pB,"\nCfgFixes",val);
536 ///////////////////////////////////////////////////////////////////////////////
538 if((in=fopen("gpuPeopsMesaGL.cfg","wb"))!=NULL)
540 fwrite(pB,strlen(pB),1,in);