pcsxr-1.9.92
[pcsx_rearmed.git] / plugins / peopsxgl / gpucfg / main.c
CommitLineData
ef79bbde
P
1#include "config.h"
2
3#include <gtk/gtk.h>
4
5#include "interface.h"
6#include "support.h"
7#include <unistd.h>
8#include <stdio.h>
9#include <stdlib.h>
10#include <string.h>
11
12#ifdef ENABLE_NLS
13#include <libintl.h>
14#include <locale.h>
15#endif
16
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)
21
22static GtkWidget * wndMain=0;
23
24int main (int argc, char *argv[])
25{
26 GtkWidget *CfgWnd;
27 FILE *in;char t[256];int len,val;
28 char * pB, * p;
29
30 if(argc!=2) return 0;
31 if(strcmp(argv[1],"CFG")!=0 && strcmp(argv[1],"ABOUT")!=0)
32 return 0;
33
34#ifdef ENABLE_NLS
35 setlocale (LC_ALL, "");
36 bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
37 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
38 textdomain (GETTEXT_PACKAGE);
39#endif
40
41 gtk_set_locale ();
42 gtk_init (&argc, &argv);
43
44 if (strcmp(argv[1],"ABOUT") == 0)
45 {
46 CfgWnd = create_AboutWnd ();
47 gtk_widget_show (CfgWnd);
48 gtk_main ();
49 return 0;
50 }
51
52 CfgWnd = create_CfgWnd ();
53 wndMain = CfgWnd;
54
55 in = fopen("gpuPeopsMesaGL.cfg","rb");
56 if(in)
57 {
58 pB=(char *)malloc(32767);
59 memset(pB,0,32767);
60 len = fread(pB, 1, 32767, in);
61 fclose(in);
62 }
63 else pB=0;
64
65 val=640;
66 if(pB)
67 {
68 strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
69 if(p) val=atoi(p+len);
70 if(val<10) val=10;
71 }
72 SETEDITVAL("edtXSize",val);
73
74 val=480;
75 if(pB)
76 {
77 strcpy(t,"\nResY");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
78 if(p) val=atoi(p+len);
79 if(val<10) val=10;
80 }
81 SETEDITVAL("edtYSize",val);
82
83 val=0;
84 if(pB)
85 {
86 strcpy(t,"\nKeepRatio");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
87 if(p) val=atoi(p+len);
88 if(val<0) val=0;
89 if(val>1) val=1;
90 }
91 if(val) SETCHECK("chkKeepRatio");
92
93 val=0;
94 if(pB)
95 {
96 strcpy(t,"\nVRamSize");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
97 if(p) val=atoi(p+len);
98 if(val<0) val=0;
99 if(val>1024) val=1024;
100 }
101 SETEDITVAL("edtMaxTex",val);
102
103 val=0;
104 if(pB)
105 {
106 strcpy(t,"\n15bitMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
107 if(p) val=atoi(p+len);
108 if(val<0) val=0;
109 if(val>1) val=1;
110 }
111 if(val) SETCHECK("chk15bitMdec");
112
113 val=0;
114 if(pB)
115 {
116 strcpy(t,"\nHiResTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
117 if(p) val=atoi(p+len);
118 if(val<0) val=0;
119 if(val>2) val=2;
120 }
121 SETLIST("cmbHiresTex",val);
122
123 val=0;
124 if(pB)
125 {
126 strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
127 if(p) val=atoi(p+len);
128 if(val<0) val=0;
129 if(val>1) val=1;
130 }
131 if(val) SETCHECK("chkFullScreen");
132
133 val=0;
134 if(pB)
135 {
136 strcpy(t,"\nScanLines");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
137 if(p) val=atoi(p+len);
138 if(val<0) val=0;
139 if(val>1) val=1;
140 }
141 if(val) SETCHECK("chkScanlines");
142
143 val=0;
144 if(pB)
145 {
146 strcpy(t,"\nScanLinesBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
147 if(p) val=atoi(p+len);
148 if(val<-1) val=-1;
149 if(val>255) val=255;
150 }
151 SETEDITVAL("edtScanBlend",val);
152
153 val=1;
154 if(pB)
155 {
156 strcpy(t,"\nFrameTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
157 if(p) val=atoi(p+len);
158 if(val<0) val=0;
159 if(val>3) val=3;
160 }
161 SETLIST("cmbFrameTex",val);
162
163 val=0;
164 if(pB)
165 {
166 strcpy(t,"\nFrameAccess");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
167 if(p) val=atoi(p+len);
168 if(val<0) val=0;
169 if(val>4) val=4;
170 }
171 SETLIST("cmbFrameAcc",val);
172
173 val=0;
174 if(pB)
175 {
176 strcpy(t,"\nTexFilter");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
177 if(p) val=atoi(p+len);
178 if(val<0) val=0;
179 if(val>6) val=6;
180 }
181 SETLIST("cmbFilter",val);
182
183 val=0;
184 if(pB)
185 {
186 strcpy(t,"\nAdvancedBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
187 if(p) val=atoi(p+len);
188 if(val<0) val=0;
189 if(val>1) val=1;
190 }
191 if(val) SETCHECK("chkABlend");
192
193 val=0;
194 if(pB)
195 {
196 strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
197 if(p) val=atoi(p+len);
198 if(val<0) val=0;
199 if(val>1) val=1;
200 }
201 if(val) SETCHECK("chkDither");
202
203 val=0;
204 if(pB)
205 {
206 strcpy(t,"\nLineMode");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
207 if(p) val=atoi(p+len);
208 if(val<0) val=0;
209 if(val>1) val=1;
210 }
211 if(val) SETCHECK("chkLinemode");
212
213 val=0;
214 if(pB)
215 {
216 strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
217 if(p) val=atoi(p+len);
218 if(val<0) val=0;
219 if(val>1) val=1;
220 }
221 if(val) SETCHECK("chkShowFPS");
222
223 val=1;
224 if(pB)
225 {
226 strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
227 if(p) val=atoi(p+len);
228 if(val<0) val=0;
229 if(val>1) val=1;
230 }
231 if(val) SETCHECK("chkFPSLimit");
232
233 val=0;
234 if(pB)
235 {
236 strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
237 if(p) val=atoi(p+len);
238 if(val<0) val=0;
239 if(val>1) val=1;
240 }
241 if(val) SETCHECK("chkFPSSkip");
242
243 val=2;
244 if(pB)
245 {
246 strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
247 if(p) val=atoi(p+len)+1;
248 if(val<1) val=1;
249 if(val>2) val=2;
250 }
251 if(val==2) SETCHECK("rdbLimAuto");
252 if(val==1) SETCHECK("rdbLimMan");
253
254 val=200;
255 if(pB)
256 {
257 strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
258 if(p) val=atoi(p+len);
259 if(val<0) val=0;
260 if(val>1000) val=1000;
261 }
262 SETEDITVAL("edtFPSlim",val);
263
264 val=2;
265 if(pB)
266 {
267 strcpy(t,"\nOffscreenDrawing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
268 if(p) val=atoi(p+len);
269 if(val<0) val=0;
270 if(val>4) val=4;
271 }
272 SETLIST("cmbOffscreen",val);
273
274 val=1;
275 if(pB)
276 {
277 strcpy(t,"\nOpaquePass");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
278 if(p) val=atoi(p+len);
279 if(val<0) val=0;
280 if(val>1) val=1;
281 }
282 if(val) SETCHECK("chkOpaque");
283
284 val=0;
285 if(pB)
286 {
287 strcpy(t,"\nAntiAlias");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
288 if(p) val=atoi(p+len);
289 if(val<0) val=0;
290 if(val>1) val=1;
291 }
292 if(val) SETCHECK("chkAntiA");
293
294 val=0;
295 if(pB)
296 {
297 strcpy(t,"\nTexQuality");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
298 if(p) val=atoi(p+len);
299 if(val<0) val=0;
300 if(val>4) val=4;
301 }
302 SETLIST("cmbQuality",val);
303
304 val=0;
305 if(pB)
306 {
307 strcpy(t,"\nMaskDetect");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
308 if(p) val=atoi(p+len);
309 if(val<0) val=0;
310 if(val>1) val=1;
311 }
312 if(val) SETCHECK("chkMaskBit");
313
314 val=1;
315 if(pB)
316 {
317 strcpy(t,"\nFastMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
318 if(p) val=atoi(p+len);
319 if(val<0) val=0;
320 if(val>1) val=1;
321 }
322 if(val) SETCHECK("chkFastMdec");
323
324 val=0;
325 if(pB)
326 {
327 strcpy(t,"\nOGLExtensions");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
328 if(p) val=atoi(p+len);
329 if(val<0) val=0;
330 if(val>1) val=1;
331 }
332 if(val) SETCHECK("chkExtensions");
333
334 val=0;
335 if(pB)
336 {
337 strcpy(t,"\nScreenSmoothing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
338 if(p) val=atoi(p+len);
339 if(val<0) val=0;
340 if(val>1) val=1;
341 }
342 if(val) SETCHECK("chkBlur");
343
344 val=0;
345 if(pB)
346 {
347 strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
348 if(p) val=atoi(p+len);
349 if(val<0) val=0;
350 if(val>1) val=1;
351 }
352 if(val) SETCHECK("chkGameFixes");
353
354 val=0;
355 if(pB)
356 {
357 strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
358 if(p) val=atoi(p+len);
359 }
360
361 for(len=0;len<18;len++)
362 {
363 if(val & (1<<len))
364 {
365 sprintf(t,"chkFix%d",len);
366 SETCHECK(t);
367 }
368 }
369
370 if(pB) free(pB);
371
372 gtk_widget_show (CfgWnd);
373 gtk_main ();
374 return 0;
375}
376
377////////////////////////////////////////////////////////////////////////////////////////////////
378
379void SetCfgVal(char * pB,char * pE,int val)
380{
381 char * p, *ps, *pC;char t[32];
382
383 sprintf(t,"%d",val);
384
385 p=strstr(pB,pE);
386 if(p)
387 {
388 p=strstr(p,"=");
389 if(!p) return;
390 p++;
391 while(*p && *p!='\n' && *p!='-' && (*p<'0' || *p>'9')) p++;
392 if(*p==0 || *p=='\n') return;
393 ps=p;
394 while((*p>='0' && *p<='9') || *p=='-') p++;
395 pC=(char *)malloc(32767);
396 strcpy(pC,p);
397 strcpy(ps,t);
398 strcat(pB,pC);
399 free(pC);
400 }
401 else
402 {
403 strcat(pB,pE);
404 strcat(pB," = ");
405 strcat(pB,t);
406 strcat(pB,"\n");
407 }
408}
409
410////////////////////////////////////////////////////////////////////////////////////////////////
411
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)))
415
416void SaveConfig(void)
417{
418 FILE *in;int len,val;char * pB;char t[16];
419
420 pB=(char *)malloc(32767);
421 memset(pB,0,32767);
422
423 in = fopen("gpuPeopsMesaGL.cfg","rb");
424 if(in)
425 {
426 len = fread(pB, 1, 32767, in);
427 fclose(in);
428 }
429
430 ///////////////////////////////////////////////////////////////////////////////
431
432 val=GETEDITVAL("edtXSize");
433 if(val<10) val=10;
434 SetCfgVal(pB,"\nResX",val);
435
436 val=GETEDITVAL("edtYSize");
437 if(val<10) val=10;
438 SetCfgVal(pB,"\nResY",val);
439
440 val=GETCHECK("chkKeepRatio");
441 SetCfgVal(pB,"\nKeepRatio",val);
442
443 val=GETEDITVAL("edtMaxTex");
444 if(val<0) val=0;
445 if(val>1024) val=1024;
446 SetCfgVal(pB,"\nVRamSize",val);
447
448 val=GETCHECK("chk15bitMdec");
449 SetCfgVal(pB,"\n15bitMdec",val);
450
451 val=GETLIST("cmbHiresTex");
452 SetCfgVal(pB,"\nHiResTextures",val);
453
454 val=GETCHECK("chkFullScreen");
455 SetCfgVal(pB,"\nFullScreen",val);
456
457 val=GETCHECK("chkScanlines");
458 SetCfgVal(pB,"\nScanLines",val);
459
460 val=GETEDITVAL("edtScanBlend");
461 if(val<-1) val=-1;
462 if(val>255) val=255;
463 SetCfgVal(pB,"\nScanLinesBlend",val);
464
465 val=GETLIST("cmbFrameTex");
466 SetCfgVal(pB,"\nFrameTextures",val);
467
468 val=GETLIST("cmbFrameAcc");
469 SetCfgVal(pB,"\nFrameAccess",val);
470
471 val=GETLIST("cmbFilter");
472 SetCfgVal(pB,"\nTexFilter",val);
473
474 val=GETCHECK("chkABlend");
475 SetCfgVal(pB,"\nAdvancedBlend",val);
476
477 val=GETCHECK("chkDither");
478 SetCfgVal(pB,"\nDithering",val);
479
480 val=GETCHECK("chkLinemode");
481 SetCfgVal(pB,"\nLineMode",val);
482
483 val=GETCHECK("chkShowFPS");
484 SetCfgVal(pB,"\nShowFPS",val);
485
486 val=GETCHECK("chkFPSLimit");
487 SetCfgVal(pB,"\nUseFrameLimit",val);
488
489 val=GETCHECK("chkFPSSkip");
490 SetCfgVal(pB,"\nUseFrameSkip",val);
491
492 val=GETCHECK("rdbLimAuto");
493 if(val) val=1; else val=0;
494 SetCfgVal(pB,"\nFPSDetection",val);
495
496 val=GETEDITVAL("edtFPSlim");
497 if(val<0) val=0;
498 if(val>1000) val=1000;
499 SetCfgVal(pB,"\nFrameRate",val);
500
501 val=GETLIST("cmbOffscreen");
502 SetCfgVal(pB,"\nOffscreenDrawing",val);
503
504 val=GETCHECK("chkOpaque");
505 SetCfgVal(pB,"\nOpaquePass",val);
506
507 val=GETCHECK("chkAntiA");
508 SetCfgVal(pB,"\nAntiAlias",val);
509
510 val=GETLIST("cmbQuality");
511 SetCfgVal(pB,"\nTexQuality",val);
512
513 val=GETCHECK("chkMaskBit");
514 SetCfgVal(pB,"\nMaskDetect",val);
515
516 val=GETCHECK("chkFastMdec");
517 SetCfgVal(pB,"\nFastMdec",val);
518
519 val=GETCHECK("chkExtensions");
520 SetCfgVal(pB,"\nOGLExtensions",val);
521
522 val=GETCHECK("chkBlur");
523 SetCfgVal(pB,"\nScreenSmoothing",val);
524
525 val=GETCHECK("chkGameFixes");
526 SetCfgVal(pB,"\nUseFixes",val);
527
528 val=0;
529 for(len=0;len<18;len++)
530 {
531 sprintf(t,"chkFix%d",len);
532 if(GETCHECK(t)) val|=(1<<len);
533 }
534 SetCfgVal(pB,"\nCfgFixes",val);
535
536 ///////////////////////////////////////////////////////////////////////////////
537
538 if((in=fopen("gpuPeopsMesaGL.cfg","wb"))!=NULL)
539 {
540 fwrite(pB,strlen(pB),1,in);
541 fclose(in);
542 }
543
544 free(pB);
545}
546
547
548