pcsxr-1.9.92
[pcsx_rearmed.git] / plugins / peopsxgl / gpucfg / interface.c
1 #include "config.h"
2
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <unistd.h>
6 #include <string.h>
7
8 #include <gdk/gdkkeysyms.h>
9 #include <gtk/gtk.h>
10
11 #include "callbacks.h"
12 #include "interface.h"
13 #include "support.h"
14
15 #ifdef ENABLE_NLS
16 #include <libintl.h>
17 #include <locale.h>
18 #define _(x) gettext(x)
19 #else
20 #define _(x) (x)
21 #endif
22
23 GtkWidget*
24 create_CfgWnd (void)
25 {
26   GtkWidget *CfgWnd;
27   GtkWidget *fixed1;
28   GtkWidget *btnSave;
29   GtkWidget *frmTextures;
30   GtkWidget *fixed3;
31   GtkWidget *edtMaxTex;
32   GtkWidget *label5;
33   GtkWidget *cmbQuality;
34   GList *cmbQuality_items = NULL;
35   GtkWidget *combo_entry2;
36   GtkWidget *label7;
37   GtkWidget *cmbFilter;
38   GList *cmbFilter_items = NULL;
39   GtkWidget *combo_entry3;
40   GtkWidget *label6;
41   GtkWidget *label23;
42   GtkWidget *cmbHiresTex;
43   GList *cmbHiresTex_items = NULL;
44   GtkWidget *combo_entry7;
45   GtkWidget *frmWindow;
46   GtkWidget *fixed2;
47   GtkWidget *edtXSize;
48   GtkWidget *edtYSize;
49   GtkWidget *label2;
50   GtkWidget *label3;
51   GtkWidget *chkKeepRatio;
52   GtkWidget *chkFullScreen;
53   GtkWidget *chkDither;
54   GtkWidget *btnCancel;
55   GtkWidget *frmFPS;
56   GtkWidget *fixed4;
57   GtkWidget *edtFPSlim;
58   GtkWidget *label8;
59   GSList *fixed4_group = NULL;
60   GtkWidget *rdbLimMan;
61   GtkWidget *chkShowFPS;
62   GtkWidget *chkFPSLimit;
63   GtkWidget *rdbLimAuto;
64   GtkWidget *chkFPSSkip;
65   GtkWidget *frmCompat;
66   GtkWidget *fixed5;
67   GtkWidget *chkABlend;
68   GtkWidget *label10;
69   GtkWidget *label9;
70   GtkWidget *label22;
71   GtkWidget *chkOpaque;
72   GtkWidget *chkMaskBit;
73   GtkWidget *cmbOffscreen;
74   GList *cmbOffscreen_items = NULL;
75   GtkWidget *combo_entry4;
76   GtkWidget *cmbFrameTex;
77   GList *cmbFrameTex_items = NULL;
78   GtkWidget *combo_entry5;
79   GtkWidget *cmbFrameAcc;
80   GList *cmbFrameAcc_items = NULL;
81   GtkWidget *combo_entry6;
82   GtkWidget *frmFixes;
83   GtkWidget *fixed7;
84   GtkWidget *chkFix3;
85   GtkWidget *chkFix4;
86   GtkWidget *chkFix5;
87   GtkWidget *chkGameFixes;
88   GtkWidget *chkFix2;
89   GtkWidget *chkFix1;
90   GtkWidget *chkFix7;
91   GtkWidget *chkFix0;
92   GtkWidget *chkFix6;
93   GtkWidget *chkFix8;
94   GtkWidget *chkFix9;
95   GtkWidget *chkFix10;
96   GtkWidget *chkFix11;
97   GtkWidget *chkFix12;
98   GtkWidget *chkFix13;
99   GtkWidget *chkFix14;
100   GtkWidget *chkFix15;
101   GtkWidget *chkFix17;
102   GtkWidget *chkFix16;
103   GtkWidget *frmMisc;
104   GtkWidget *fixed6;
105   GtkWidget *edtScanBlend;
106   GtkWidget *chkScanlines;
107   GtkWidget *label11;
108   GtkWidget *chkBlur;
109   GtkWidget *chkExtensions;
110   GtkWidget *chkAntiA;
111   GtkWidget *chkLinemode;
112   GtkWidget *chkFastMdec;
113   GtkWidget *chk15bitMdec;
114
115   CfgWnd = gtk_window_new (GTK_WINDOW_TOPLEVEL);
116   gtk_object_set_data (GTK_OBJECT (CfgWnd), "CfgWnd", CfgWnd);
117   gtk_container_set_border_width (GTK_CONTAINER (CfgWnd), 8);
118   gtk_window_set_title (GTK_WINDOW (CfgWnd), _("OpenGL Driver configuration"));
119   gtk_window_set_position (GTK_WINDOW (CfgWnd), GTK_WIN_POS_CENTER);
120   gtk_window_set_modal (GTK_WINDOW (CfgWnd), TRUE);
121   gtk_window_set_policy (GTK_WINDOW (CfgWnd), FALSE, FALSE, FALSE);
122
123   fixed1 = gtk_fixed_new ();
124   gtk_widget_ref (fixed1);
125   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed1", fixed1,
126                             (GtkDestroyNotify) gtk_widget_unref);
127   gtk_widget_show (fixed1);
128   gtk_container_add (GTK_CONTAINER (CfgWnd), fixed1);
129
130   btnSave = gtk_button_new_with_label (_("OK"));
131   gtk_widget_ref (btnSave);
132   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "btnSave", btnSave,
133                             (GtkDestroyNotify) gtk_widget_unref);
134   gtk_widget_show (btnSave);
135   gtk_fixed_put (GTK_FIXED (fixed1), btnSave, 134, 552);
136   gtk_widget_set_usize (btnSave, 160, 24);
137
138   frmTextures = gtk_frame_new (_("Textures"));
139   gtk_widget_ref (frmTextures);
140   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmTextures", frmTextures,
141                             (GtkDestroyNotify) gtk_widget_unref);
142   gtk_widget_show (frmTextures);
143   gtk_fixed_put (GTK_FIXED (fixed1), frmTextures, 372, 0);
144   gtk_widget_set_usize (frmTextures, 364, 136);
145
146   fixed3 = gtk_fixed_new ();
147   gtk_widget_ref (fixed3);
148   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed3", fixed3,
149                             (GtkDestroyNotify) gtk_widget_unref);
150   gtk_widget_show (fixed3);
151   gtk_container_add (GTK_CONTAINER (frmTextures), fixed3);
152
153   edtMaxTex = gtk_entry_new ();
154   gtk_widget_ref (edtMaxTex);
155   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "edtMaxTex", edtMaxTex,
156                             (GtkDestroyNotify) gtk_widget_unref);
157   gtk_widget_show (edtMaxTex);
158   gtk_fixed_put (GTK_FIXED (fixed3), edtMaxTex, 278, 80);
159   gtk_widget_set_usize (edtMaxTex, 66, 24);
160
161   label5 = gtk_label_new (_("Quality:"));
162   gtk_widget_ref (label5);
163   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label5", label5,
164                             (GtkDestroyNotify) gtk_widget_unref);
165   gtk_widget_show (label5);
166   gtk_fixed_put (GTK_FIXED (fixed3), label5, 8, 0);
167   gtk_widget_set_usize (label5, 64, 24);
168
169   cmbQuality = gtk_combo_new ();
170   gtk_widget_ref (cmbQuality);
171   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbQuality", cmbQuality,
172                             (GtkDestroyNotify) gtk_widget_unref);
173   gtk_widget_show (cmbQuality);
174   gtk_fixed_put (GTK_FIXED (fixed3), cmbQuality, 80, 0);
175   gtk_widget_set_usize (cmbQuality, 264, 24);
176   gtk_combo_set_value_in_list (GTK_COMBO (cmbQuality), TRUE, FALSE);
177   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbQuality), TRUE);
178   cmbQuality_items = g_list_append (cmbQuality_items, (gpointer) _("0: don't care - Use driver's default textures"));
179   cmbQuality_items = g_list_append (cmbQuality_items, (gpointer) _("1: 4444 - Fast, but less colorful"));
180   cmbQuality_items = g_list_append (cmbQuality_items, (gpointer) _("2: 5551 - Nice colors, bad transparency"));
181   cmbQuality_items = g_list_append (cmbQuality_items, (gpointer) _("3: 8888 - Best colors, more ram needed"));
182   cmbQuality_items = g_list_append (cmbQuality_items, (gpointer) _("4: BGR8888 - Faster on some cards"));
183   gtk_combo_set_popdown_strings (GTK_COMBO (cmbQuality), cmbQuality_items);
184   g_list_free (cmbQuality_items);
185
186   combo_entry2 = GTK_COMBO (cmbQuality)->entry;
187   gtk_widget_ref (combo_entry2);
188   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry2", combo_entry2,
189                             (GtkDestroyNotify) gtk_widget_unref);
190   gtk_widget_show (combo_entry2);
191   gtk_entry_set_text (GTK_ENTRY (combo_entry2), _("0: don't care - Use driver's default textures"));
192
193   label7 = gtk_label_new (_("VRam size in MBytes (0..1024, 0=auto):"));
194   gtk_widget_ref (label7);
195   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label7", label7,
196                             (GtkDestroyNotify) gtk_widget_unref);
197   gtk_widget_show (label7);
198   gtk_fixed_put (GTK_FIXED (fixed3), label7, 8, 80);
199   gtk_widget_set_usize (label7, 260, 24);
200
201   cmbFilter = gtk_combo_new ();
202   gtk_widget_ref (cmbFilter);
203   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbFilter", cmbFilter,
204                             (GtkDestroyNotify) gtk_widget_unref);
205   gtk_widget_show (cmbFilter);
206   gtk_fixed_put (GTK_FIXED (fixed3), cmbFilter, 80, 24);
207   gtk_widget_set_usize (cmbFilter, 264, 24);
208   gtk_combo_set_value_in_list (GTK_COMBO (cmbFilter), TRUE, FALSE);
209   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbFilter), TRUE);
210   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("0: None"));
211   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("1: Standard - Glitches will happen"));
212   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("2: Extended - No black borders"));
213   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("3: Standard without sprites - unfiltered 2D"));
214   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("4: Extended without sprites - unfiltered 2D"));
215   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("5: Standard + smoothed sprites"));
216   cmbFilter_items = g_list_append (cmbFilter_items, (gpointer) _("6: Extended + smoothed sprites"));
217   gtk_combo_set_popdown_strings (GTK_COMBO (cmbFilter), cmbFilter_items);
218   g_list_free (cmbFilter_items);
219
220   combo_entry3 = GTK_COMBO (cmbFilter)->entry;
221   gtk_widget_ref (combo_entry3);
222   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry3", combo_entry3,
223                             (GtkDestroyNotify) gtk_widget_unref);
224   gtk_widget_show (combo_entry3);
225   gtk_entry_set_text (GTK_ENTRY (combo_entry3), _("0: None"));
226
227   label6 = gtk_label_new (_("Filtering:"));
228   gtk_widget_ref (label6);
229   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label6", label6,
230                             (GtkDestroyNotify) gtk_widget_unref);
231   gtk_widget_show (label6);
232   gtk_fixed_put (GTK_FIXED (fixed3), label6, 8, 24);
233   gtk_widget_set_usize (label6, 64, 24);
234
235   label23 = gtk_label_new (_("HiRes Tex:"));
236   gtk_widget_ref (label23);
237   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label23", label23,
238                             (GtkDestroyNotify) gtk_widget_unref);
239   gtk_widget_show (label23);
240   gtk_fixed_put (GTK_FIXED (fixed3), label23, 8, 48);
241   gtk_widget_set_usize (label23, 64, 24);
242
243   cmbHiresTex = gtk_combo_new ();
244   gtk_widget_ref (cmbHiresTex);
245   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbHiresTex", cmbHiresTex,
246                             (GtkDestroyNotify) gtk_widget_unref);
247   gtk_widget_show (cmbHiresTex);
248   gtk_fixed_put (GTK_FIXED (fixed3), cmbHiresTex, 80, 48);
249   gtk_widget_set_usize (cmbHiresTex, 264, 22);
250   gtk_combo_set_value_in_list (GTK_COMBO (cmbHiresTex), TRUE, FALSE);
251   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbHiresTex), TRUE);
252   cmbHiresTex_items = g_list_append (cmbHiresTex_items, (gpointer) _("0: None (standard)"));
253   cmbHiresTex_items = g_list_append (cmbHiresTex_items, (gpointer) _("1: 2xSaI (much vram needed)"));
254   cmbHiresTex_items = g_list_append (cmbHiresTex_items, (gpointer) _("2: Scaled (needs tex filtering)"));
255   gtk_combo_set_popdown_strings (GTK_COMBO (cmbHiresTex), cmbHiresTex_items);
256   g_list_free (cmbHiresTex_items);
257
258   combo_entry7 = GTK_COMBO (cmbHiresTex)->entry;
259   gtk_widget_ref (combo_entry7);
260   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry7", combo_entry7,
261                             (GtkDestroyNotify) gtk_widget_unref);
262   gtk_widget_show (combo_entry7);
263   gtk_entry_set_text (GTK_ENTRY (combo_entry7), _("0: None (standard)"));
264
265   frmWindow = gtk_frame_new (_("Window options"));
266   gtk_widget_ref (frmWindow);
267   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmWindow", frmWindow,
268                             (GtkDestroyNotify) gtk_widget_unref);
269   gtk_widget_show (frmWindow);
270   gtk_fixed_put (GTK_FIXED (fixed1), frmWindow, 0, 0);
271   gtk_widget_set_usize (frmWindow, 364, 136);
272
273   fixed2 = gtk_fixed_new ();
274   gtk_widget_ref (fixed2);
275   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed2", fixed2,
276                             (GtkDestroyNotify) gtk_widget_unref);
277   gtk_widget_show (fixed2);
278   gtk_container_add (GTK_CONTAINER (frmWindow), fixed2);
279
280   edtXSize = gtk_entry_new_with_max_length (5);
281   gtk_widget_ref (edtXSize);
282   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "edtXSize", edtXSize,
283                             (GtkDestroyNotify) gtk_widget_unref);
284   gtk_widget_show (edtXSize);
285   gtk_fixed_put (GTK_FIXED (fixed2), edtXSize, 56, 0);
286   gtk_widget_set_usize (edtXSize, 72, 24);
287
288   edtYSize = gtk_entry_new ();
289   gtk_widget_ref (edtYSize);
290   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "edtYSize", edtYSize,
291                             (GtkDestroyNotify) gtk_widget_unref);
292   gtk_widget_show (edtYSize);
293   gtk_fixed_put (GTK_FIXED (fixed2), edtYSize, 56, 32);
294   gtk_widget_set_usize (edtYSize, 72, 24);
295
296   label2 = gtk_label_new (_("Width:"));
297   gtk_widget_ref (label2);
298   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label2", label2,
299                             (GtkDestroyNotify) gtk_widget_unref);
300   gtk_widget_show (label2);
301   gtk_fixed_put (GTK_FIXED (fixed2), label2, 8, 0);
302   gtk_widget_set_usize (label2, 48, 24);
303   gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_RIGHT);
304
305   label3 = gtk_label_new (_("Height:"));
306   gtk_widget_ref (label3);
307   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label3", label3,
308                             (GtkDestroyNotify) gtk_widget_unref);
309   gtk_widget_show (label3);
310   gtk_fixed_put (GTK_FIXED (fixed2), label3, 8, 32);
311   gtk_widget_set_usize (label3, 48, 24);
312   gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_RIGHT);
313
314   chkKeepRatio = gtk_check_button_new_with_label (_("Keep psx aspect ratio"));
315   gtk_widget_ref (chkKeepRatio);
316   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkKeepRatio", chkKeepRatio,
317                             (GtkDestroyNotify) gtk_widget_unref);
318   gtk_widget_show (chkKeepRatio);
319   gtk_fixed_put (GTK_FIXED (fixed2), chkKeepRatio, 8, 88);
320   gtk_widget_set_usize (chkKeepRatio, 280, 24);
321
322   chkFullScreen = gtk_check_button_new_with_label (_("Fullscreen"));
323   gtk_widget_ref (chkFullScreen);
324   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFullScreen", chkFullScreen,
325                             (GtkDestroyNotify) gtk_widget_unref);
326   gtk_widget_show (chkFullScreen);
327   gtk_fixed_put (GTK_FIXED (fixed2), chkFullScreen, 196, 0);
328   gtk_widget_set_usize (chkFullScreen, 125, 24);
329
330   chkDither = gtk_check_button_new_with_label (_("Dithering"));
331   gtk_widget_ref (chkDither);
332   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkDither", chkDither,
333                             (GtkDestroyNotify) gtk_widget_unref);
334   gtk_widget_show (chkDither);
335   gtk_fixed_put (GTK_FIXED (fixed2), chkDither, 8, 64);
336   gtk_widget_set_usize (chkDither, 280, 24);
337
338   btnCancel = gtk_button_new_with_label (_("Cancel"));
339   gtk_widget_ref (btnCancel);
340   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "btnCancel", btnCancel,
341                             (GtkDestroyNotify) gtk_widget_unref);
342   gtk_widget_show (btnCancel);
343   gtk_fixed_put (GTK_FIXED (fixed1), btnCancel, 430, 552);
344   gtk_widget_set_usize (btnCancel, 160, 24);
345
346   frmFPS = gtk_frame_new (_("Framerate"));
347   gtk_widget_ref (frmFPS);
348   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmFPS", frmFPS,
349                             (GtkDestroyNotify) gtk_widget_unref);
350   gtk_widget_show (frmFPS);
351   gtk_fixed_put (GTK_FIXED (fixed1), frmFPS, 0, 136);
352   gtk_widget_set_usize (frmFPS, 364, 176);
353
354   fixed4 = gtk_fixed_new ();
355   gtk_widget_ref (fixed4);
356   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed4", fixed4,
357                             (GtkDestroyNotify) gtk_widget_unref);
358   gtk_widget_show (fixed4);
359   gtk_container_add (GTK_CONTAINER (frmFPS), fixed4);
360
361   edtFPSlim = gtk_entry_new ();
362   gtk_widget_ref (edtFPSlim);
363   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "edtFPSlim", edtFPSlim,
364                             (GtkDestroyNotify) gtk_widget_unref);
365   gtk_widget_show (edtFPSlim);
366   gtk_fixed_put (GTK_FIXED (fixed4), edtFPSlim, 175, 104);
367   gtk_widget_set_usize (edtFPSlim, 72, 24);
368
369   label8 = gtk_label_new (_("FPS"));
370   gtk_widget_ref (label8);
371   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label8", label8,
372                             (GtkDestroyNotify) gtk_widget_unref);
373   gtk_widget_show (label8);
374   gtk_fixed_put (GTK_FIXED (fixed4), label8, 250, 104);
375   gtk_widget_set_usize (label8, 40, 24);
376
377   rdbLimMan = gtk_radio_button_new_with_label (fixed4_group, _("FPS limit manual"));
378   fixed4_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rdbLimMan));
379   gtk_widget_ref (rdbLimMan);
380   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "rdbLimMan", rdbLimMan,
381                             (GtkDestroyNotify) gtk_widget_unref);
382   gtk_widget_show (rdbLimMan);
383   gtk_fixed_put (GTK_FIXED (fixed4), rdbLimMan, 32, 104);
384   gtk_widget_set_usize (rdbLimMan, 140, 24);
385
386   chkShowFPS = gtk_check_button_new_with_label (_("Show FPS display on startup"));
387   gtk_widget_ref (chkShowFPS);
388   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkShowFPS", chkShowFPS,
389                             (GtkDestroyNotify) gtk_widget_unref);
390   gtk_widget_show (chkShowFPS);
391   gtk_fixed_put (GTK_FIXED (fixed4), chkShowFPS, 8, 0);
392   gtk_widget_set_usize (chkShowFPS, 280, 24);
393
394   chkFPSLimit = gtk_check_button_new_with_label (_("Use FPS limit"));
395   gtk_widget_ref (chkFPSLimit);
396   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFPSLimit", chkFPSLimit,
397                             (GtkDestroyNotify) gtk_widget_unref);
398   gtk_widget_show (chkFPSLimit);
399   gtk_fixed_put (GTK_FIXED (fixed4), chkFPSLimit, 8, 24);
400   gtk_widget_set_usize (chkFPSLimit, 280, 24);
401
402   rdbLimAuto = gtk_radio_button_new_with_label (fixed4_group, _("FPS limit auto-detection"));
403   fixed4_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rdbLimAuto));
404   gtk_widget_ref (rdbLimAuto);
405   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "rdbLimAuto", rdbLimAuto,
406                             (GtkDestroyNotify) gtk_widget_unref);
407   gtk_widget_show (rdbLimAuto);
408   gtk_fixed_put (GTK_FIXED (fixed4), rdbLimAuto, 32, 80);
409   gtk_widget_set_usize (rdbLimAuto, 200, 24);
410
411   chkFPSSkip = gtk_check_button_new_with_label (_("Use Frame skipping"));
412   gtk_widget_ref (chkFPSSkip);
413   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFPSSkip", chkFPSSkip,
414                             (GtkDestroyNotify) gtk_widget_unref);
415   gtk_widget_show (chkFPSSkip);
416   gtk_fixed_put (GTK_FIXED (fixed4), chkFPSSkip, 8, 48);
417   gtk_widget_set_usize (chkFPSSkip, 280, 24);
418
419   frmCompat = gtk_frame_new (_("Compatibility"));
420   gtk_widget_ref (frmCompat);
421   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmCompat", frmCompat,
422                             (GtkDestroyNotify) gtk_widget_unref);
423   gtk_widget_show (frmCompat);
424   gtk_fixed_put (GTK_FIXED (fixed1), frmCompat, 372, 136);
425   gtk_widget_set_usize (frmCompat, 364, 176);
426
427   fixed5 = gtk_fixed_new ();
428   gtk_widget_ref (fixed5);
429   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed5", fixed5,
430                             (GtkDestroyNotify) gtk_widget_unref);
431   gtk_widget_show (fixed5);
432   gtk_container_add (GTK_CONTAINER (frmCompat), fixed5);
433
434   chkABlend = gtk_check_button_new_with_label (_("Advanced blending (Accurate psx color emulation)"));
435   gtk_widget_ref (chkABlend);
436   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkABlend", chkABlend,
437                             (GtkDestroyNotify) gtk_widget_unref);
438   gtk_widget_show (chkABlend);
439   gtk_fixed_put (GTK_FIXED (fixed5), chkABlend, 8, 128);
440   gtk_widget_set_usize (chkABlend, 366, 24);
441
442   label10 = gtk_label_new (_("Framebuffer textures:"));
443   gtk_widget_ref (label10);
444   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label10", label10,
445                             (GtkDestroyNotify) gtk_widget_unref);
446   gtk_widget_show (label10);
447   gtk_fixed_put (GTK_FIXED (fixed5), label10, 0, 24);
448   gtk_widget_set_usize (label10, 136, 24);
449
450   label9 = gtk_label_new (_("Offscreen Drawing:"));
451   gtk_widget_ref (label9);
452   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label9", label9,
453                             (GtkDestroyNotify) gtk_widget_unref);
454   gtk_widget_show (label9);
455   gtk_fixed_put (GTK_FIXED (fixed5), label9, 0, 0);
456   gtk_widget_set_usize (label9, 136, 24);
457
458   label22 = gtk_label_new (_("Framebuffer access:"));
459   gtk_widget_ref (label22);
460   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label22", label22,
461                             (GtkDestroyNotify) gtk_widget_unref);
462   gtk_widget_show (label22);
463   gtk_fixed_put (GTK_FIXED (fixed5), label22, 0, 48);
464   gtk_widget_set_usize (label22, 136, 24);
465
466   chkOpaque = gtk_check_button_new_with_label (_("Alpha Multipass (correct opaque texture areas)"));
467   gtk_widget_ref (chkOpaque);
468   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkOpaque", chkOpaque,
469                             (GtkDestroyNotify) gtk_widget_unref);
470   gtk_widget_show (chkOpaque);
471   gtk_fixed_put (GTK_FIXED (fixed5), chkOpaque, 8, 104);
472   gtk_widget_set_usize (chkOpaque, 366, 24);
473
474   chkMaskBit = gtk_check_button_new_with_label (_("Mask bit detection (needed by a few games, zbuffer)"));
475   gtk_widget_ref (chkMaskBit);
476   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkMaskBit", chkMaskBit,
477                             (GtkDestroyNotify) gtk_widget_unref);
478   gtk_widget_show (chkMaskBit);
479   gtk_fixed_put (GTK_FIXED (fixed5), chkMaskBit, 8, 80);
480   gtk_widget_set_usize (chkMaskBit, 366, 24);
481
482   cmbOffscreen = gtk_combo_new ();
483   gtk_widget_ref (cmbOffscreen);
484   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbOffscreen", cmbOffscreen,
485                             (GtkDestroyNotify) gtk_widget_unref);
486   gtk_widget_show (cmbOffscreen);
487   gtk_fixed_put (GTK_FIXED (fixed5), cmbOffscreen, 136, 0);
488   gtk_widget_set_usize (cmbOffscreen, 208, 24);
489   gtk_combo_set_value_in_list (GTK_COMBO (cmbOffscreen), TRUE, FALSE);
490   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbOffscreen), TRUE);
491   cmbOffscreen_items = g_list_append (cmbOffscreen_items, (gpointer) _("0: None - Fastest, most glitches"));
492   cmbOffscreen_items = g_list_append (cmbOffscreen_items, (gpointer) _("1: Minimum - Missing screens"));
493   cmbOffscreen_items = g_list_append (cmbOffscreen_items, (gpointer) _("2: Standard - OK for most games"));
494   cmbOffscreen_items = g_list_append (cmbOffscreen_items, (gpointer) _("3: Enhanced - Shows more stuff"));
495   cmbOffscreen_items = g_list_append (cmbOffscreen_items, (gpointer) _("4: Extended - Causing garbage"));
496   gtk_combo_set_popdown_strings (GTK_COMBO (cmbOffscreen), cmbOffscreen_items);
497   g_list_free (cmbOffscreen_items);
498
499   combo_entry4 = GTK_COMBO (cmbOffscreen)->entry;
500   gtk_widget_ref (combo_entry4);
501   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry4", combo_entry4,
502                             (GtkDestroyNotify) gtk_widget_unref);
503   gtk_widget_show (combo_entry4);
504   gtk_entry_set_text (GTK_ENTRY (combo_entry4), _("0: None - Fastest, most glitches"));
505
506   cmbFrameTex = gtk_combo_new ();
507   gtk_widget_ref (cmbFrameTex);
508   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbFrameTex", cmbFrameTex,
509                             (GtkDestroyNotify) gtk_widget_unref);
510   gtk_widget_show (cmbFrameTex);
511   gtk_fixed_put (GTK_FIXED (fixed5), cmbFrameTex, 136, 24);
512   gtk_widget_set_usize (cmbFrameTex, 208, 24);
513   gtk_combo_set_value_in_list (GTK_COMBO (cmbFrameTex), TRUE, FALSE);
514   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbFrameTex), TRUE);
515   cmbFrameTex_items = g_list_append (cmbFrameTex_items, (gpointer) _("0: Emulated vram - Needs FVP"));
516   cmbFrameTex_items = g_list_append (cmbFrameTex_items, (gpointer) _("1: Black - Fast, no effects"));
517   cmbFrameTex_items = g_list_append (cmbFrameTex_items, (gpointer) _("2: Gfx card buffer - Can be slow"));
518   cmbFrameTex_items = g_list_append (cmbFrameTex_items, (gpointer) _("3: Gfx card & soft - slow"));
519   gtk_combo_set_popdown_strings (GTK_COMBO (cmbFrameTex), cmbFrameTex_items);
520   g_list_free (cmbFrameTex_items);
521
522   combo_entry5 = GTK_COMBO (cmbFrameTex)->entry;
523   gtk_widget_ref (combo_entry5);
524   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry5", combo_entry5,
525                             (GtkDestroyNotify) gtk_widget_unref);
526   gtk_widget_show (combo_entry5);
527   gtk_entry_set_text (GTK_ENTRY (combo_entry5), _("0: Emulated vram - Needs FVP"));
528
529   cmbFrameAcc = gtk_combo_new ();
530   gtk_widget_ref (cmbFrameAcc);
531   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "cmbFrameAcc", cmbFrameAcc,
532                             (GtkDestroyNotify) gtk_widget_unref);
533   gtk_widget_show (cmbFrameAcc);
534   gtk_fixed_put (GTK_FIXED (fixed5), cmbFrameAcc, 136, 48);
535   gtk_widget_set_usize (cmbFrameAcc, 208, 22);
536   gtk_combo_set_value_in_list (GTK_COMBO (cmbFrameAcc), TRUE, FALSE);
537   gtk_combo_set_use_arrows_always (GTK_COMBO (cmbFrameAcc), TRUE);
538   cmbFrameAcc_items = g_list_append (cmbFrameAcc_items, (gpointer) _("0: Emulated vram - ok most times"));
539   cmbFrameAcc_items = g_list_append (cmbFrameAcc_items, (gpointer) _("1: Gfx card buffer reads"));
540   cmbFrameAcc_items = g_list_append (cmbFrameAcc_items, (gpointer) _("2: Gfx card buffer moves"));
541   cmbFrameAcc_items = g_list_append (cmbFrameAcc_items, (gpointer) _("3: Gfx buffer reads & moves"));
542   cmbFrameAcc_items = g_list_append (cmbFrameAcc_items, (gpointer) _("4: Full Software (FVP)"));
543   gtk_combo_set_popdown_strings (GTK_COMBO (cmbFrameAcc), cmbFrameAcc_items);
544   g_list_free (cmbFrameAcc_items);
545
546   combo_entry6 = GTK_COMBO (cmbFrameAcc)->entry;
547   gtk_widget_ref (combo_entry6);
548   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "combo_entry6", combo_entry6,
549                             (GtkDestroyNotify) gtk_widget_unref);
550   gtk_widget_show (combo_entry6);
551   gtk_entry_set_text (GTK_ENTRY (combo_entry6), _("0: Emulated vram - ok most times"));
552
553   frmFixes = gtk_frame_new (_("Special game fixes"));
554   gtk_widget_ref (frmFixes);
555   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmFixes", frmFixes,
556                             (GtkDestroyNotify) gtk_widget_unref);
557   gtk_widget_show (frmFixes);
558   gtk_fixed_put (GTK_FIXED (fixed1), frmFixes, 372, 312);
559   gtk_widget_set_usize (frmFixes, 364, 232);
560
561   fixed7 = gtk_fixed_new ();
562   gtk_widget_ref (fixed7);
563   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed7", fixed7,
564                             (GtkDestroyNotify) gtk_widget_unref);
565   gtk_widget_show (fixed7);
566   gtk_container_add (GTK_CONTAINER (frmFixes), fixed7);
567
568   chkGameFixes = gtk_check_button_new_with_label (_("Use game fixes"));
569   gtk_widget_ref (chkGameFixes);
570   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkGameFixes", chkGameFixes,
571                             (GtkDestroyNotify) gtk_widget_unref);
572   gtk_widget_show (chkGameFixes);
573   gtk_fixed_put (GTK_FIXED (fixed7), chkGameFixes, 8, 0);
574   gtk_widget_set_usize (chkGameFixes, 336, 24);
575
576   chkFix0 = gtk_check_button_new_with_label (_("Battle cursor (FF7)"));
577   gtk_widget_ref (chkFix0);
578   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix0", chkFix0,
579                             (GtkDestroyNotify) gtk_widget_unref);
580   gtk_widget_show (chkFix0);
581   gtk_fixed_put (GTK_FIXED (fixed7), chkFix0, 8, 24);
582   gtk_widget_set_usize (chkFix0, 196, 20);
583
584   chkFix1 = gtk_check_button_new_with_label (_("Direct FB updates"));
585   gtk_widget_ref (chkFix1);
586   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix1", chkFix1,
587                             (GtkDestroyNotify) gtk_widget_unref);
588   gtk_widget_show (chkFix1);
589   gtk_fixed_put (GTK_FIXED (fixed7), chkFix1, 8, 44);
590   gtk_widget_set_usize (chkFix1, 196, 20);
591
592   chkFix2 = gtk_check_button_new_with_label (_("Black brightness (Lunar)"));
593   gtk_widget_ref (chkFix2);
594   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix2", chkFix2,
595                             (GtkDestroyNotify) gtk_widget_unref);
596   gtk_widget_show (chkFix2);
597   gtk_fixed_put (GTK_FIXED (fixed7), chkFix2, 8, 64);
598   gtk_widget_set_usize (chkFix2, 196, 20);
599
600   chkFix3 = gtk_check_button_new_with_label (_("Swap front detection"));
601   gtk_widget_ref (chkFix3);
602   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix3", chkFix3,
603                             (GtkDestroyNotify) gtk_widget_unref);
604   gtk_widget_show (chkFix3);
605   gtk_fixed_put (GTK_FIXED (fixed7), chkFix3, 8, 84);
606   gtk_widget_set_usize (chkFix3, 196, 20);
607
608   chkFix4 = gtk_check_button_new_with_label (_("Disable coord check"));
609   gtk_widget_ref (chkFix4);
610   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix4", chkFix4,
611                             (GtkDestroyNotify) gtk_widget_unref);
612   gtk_widget_show (chkFix4);
613   gtk_fixed_put (GTK_FIXED (fixed7), chkFix4, 8, 104);
614   gtk_widget_set_usize (chkFix4, 196, 20);
615
616   chkFix5 = gtk_check_button_new_with_label (_("No blue glitches (LoD)"));
617   gtk_widget_ref (chkFix5);
618   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix5", chkFix5,
619                             (GtkDestroyNotify) gtk_widget_unref);
620   gtk_widget_show (chkFix5);
621   gtk_fixed_put (GTK_FIXED (fixed7), chkFix5, 8, 124);
622   gtk_widget_set_usize (chkFix5, 196, 20);
623
624   chkFix6 = gtk_check_button_new_with_label (_("Soft FB access"));
625   gtk_widget_ref (chkFix6);
626   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix6", chkFix6,
627                             (GtkDestroyNotify) gtk_widget_unref);
628   gtk_widget_show (chkFix6);
629   gtk_fixed_put (GTK_FIXED (fixed7), chkFix6, 8, 144);
630   gtk_widget_set_usize (chkFix6, 196, 20);
631
632   chkFix7 = gtk_check_button_new_with_label (_("PC fps calculation"));
633   gtk_widget_ref (chkFix7);
634   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix7", chkFix7,
635                             (GtkDestroyNotify) gtk_widget_unref);
636   gtk_widget_show (chkFix7);
637   gtk_fixed_put (GTK_FIXED (fixed7), chkFix7, 8, 164);
638   gtk_widget_set_usize (chkFix7, 196, 20);
639
640   chkFix8 = gtk_check_button_new_with_label (_("Old frame skipping"));
641   gtk_widget_ref (chkFix8);
642   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix8", chkFix8,
643                             (GtkDestroyNotify) gtk_widget_unref);
644   gtk_widget_show (chkFix8);
645   gtk_fixed_put (GTK_FIXED (fixed7), chkFix8, 8, 184);
646   gtk_widget_set_usize (chkFix8, 196, 20);
647
648   chkFix9 = gtk_check_button_new_with_label (_("Yellow rect (FF9)"));
649   gtk_widget_ref (chkFix9);
650   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix9", chkFix9,
651                             (GtkDestroyNotify) gtk_widget_unref);
652   gtk_widget_show (chkFix9);
653   gtk_fixed_put (GTK_FIXED (fixed7), chkFix9, 194, 24);
654   gtk_widget_set_usize (chkFix9, 196, 20);
655
656   chkFix10 = gtk_check_button_new_with_label (_("No subtr. blending"));
657   gtk_widget_ref (chkFix10);
658   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix10", chkFix10,
659                             (GtkDestroyNotify) gtk_widget_unref);
660   gtk_widget_show (chkFix10);
661   gtk_fixed_put (GTK_FIXED (fixed7), chkFix10, 194, 44);
662   gtk_widget_set_usize (chkFix10, 196, 20);
663
664   chkFix11 = gtk_check_button_new_with_label (_("Lazy upload (DW7)"));
665   gtk_widget_ref (chkFix11);
666   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix11", chkFix11,
667                             (GtkDestroyNotify) gtk_widget_unref);
668   gtk_widget_show (chkFix11);
669   gtk_fixed_put (GTK_FIXED (fixed7), chkFix11, 194, 64);
670   gtk_widget_set_usize (chkFix11, 196, 20);
671
672   chkFix12 = gtk_check_button_new_with_label (_("Odd/even hack"));
673   gtk_widget_ref (chkFix12);
674   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix12", chkFix12,
675                             (GtkDestroyNotify) gtk_widget_unref);
676   gtk_widget_show (chkFix12);
677   gtk_fixed_put (GTK_FIXED (fixed7), chkFix12, 194, 84);
678   gtk_widget_set_usize (chkFix12, 196, 20);
679
680   chkFix13 = gtk_check_button_new_with_label (_("Adjust screen width"));
681   gtk_widget_ref (chkFix13);
682   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix13", chkFix13,
683                             (GtkDestroyNotify) gtk_widget_unref);
684   gtk_widget_show (chkFix13);
685   gtk_fixed_put (GTK_FIXED (fixed7), chkFix13, 194, 104);
686   gtk_widget_set_usize (chkFix13, 196, 20);
687
688   chkFix14 = gtk_check_button_new_with_label (_("Old texture filtering"));
689   gtk_widget_ref (chkFix14);
690   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix14", chkFix14,
691                             (GtkDestroyNotify) gtk_widget_unref);
692   gtk_widget_show (chkFix14);
693   gtk_fixed_put (GTK_FIXED (fixed7), chkFix14, 194, 124);
694   gtk_widget_set_usize (chkFix14, 196, 20);
695
696   chkFix15 = gtk_check_button_new_with_label (_("Additional uploads"));
697   gtk_widget_ref (chkFix15);
698   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix15", chkFix15,
699                             (GtkDestroyNotify) gtk_widget_unref);
700   gtk_widget_show (chkFix15);
701   gtk_fixed_put (GTK_FIXED (fixed7), chkFix15, 194, 144);
702   gtk_widget_set_usize (chkFix15, 196, 20);
703
704   chkFix16 = gtk_check_button_new_with_label (_("unused"));
705   gtk_widget_ref (chkFix16);
706   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix16", chkFix16,
707                             (GtkDestroyNotify) gtk_widget_unref);
708   gtk_widget_show (chkFix16);
709   gtk_fixed_put (GTK_FIXED (fixed7), chkFix16, 194, 164);
710   gtk_widget_set_usize (chkFix16, 196, 20);
711
712   chkFix17 = gtk_check_button_new_with_label (_("Fake 'gpu busy'"));
713   gtk_widget_ref (chkFix17);
714   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFix17", chkFix17,
715                             (GtkDestroyNotify) gtk_widget_unref);
716   gtk_widget_show (chkFix17);
717   gtk_fixed_put (GTK_FIXED (fixed7), chkFix17, 194, 184);
718   gtk_widget_set_usize (chkFix17, 196, 20);
719
720   frmMisc = gtk_frame_new (_("Misc"));
721   gtk_widget_ref (frmMisc);
722   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "frmMisc", frmMisc,
723                             (GtkDestroyNotify) gtk_widget_unref);
724   gtk_widget_show (frmMisc);
725   gtk_fixed_put (GTK_FIXED (fixed1), frmMisc, 0, 312);
726   gtk_widget_set_usize (frmMisc, 364, 232);
727
728   fixed6 = gtk_fixed_new ();
729   gtk_widget_ref (fixed6);
730   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "fixed6", fixed6,
731                             (GtkDestroyNotify) gtk_widget_unref);
732   gtk_widget_show (fixed6);
733   gtk_container_add (GTK_CONTAINER (frmMisc), fixed6);
734
735   edtScanBlend = gtk_entry_new ();
736   gtk_widget_ref (edtScanBlend);
737   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "edtScanBlend", edtScanBlend,
738                             (GtkDestroyNotify) gtk_widget_unref);
739   gtk_widget_show (edtScanBlend);
740   gtk_fixed_put (GTK_FIXED (fixed6), edtScanBlend, 285, 0);
741   gtk_widget_set_usize (edtScanBlend, 54, 22);
742
743   chkScanlines = gtk_check_button_new_with_label (_("Scanlines"));
744   gtk_widget_ref (chkScanlines);
745   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkScanlines", chkScanlines,
746                             (GtkDestroyNotify) gtk_widget_unref);
747   gtk_widget_show (chkScanlines);
748   gtk_fixed_put (GTK_FIXED (fixed6), chkScanlines, 8, 0);
749   gtk_widget_set_usize (chkScanlines, 100, 24);
750
751   label11 = gtk_label_new (_("Blending (0..255, -1=dot):"));
752   gtk_widget_ref (label11);
753   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "label11", label11,
754                             (GtkDestroyNotify) gtk_widget_unref);
755   gtk_widget_show (label11);
756   gtk_fixed_put (GTK_FIXED (fixed6), label11, 108, 0);
757   gtk_widget_set_usize (label11, 164, 24);
758
759   chkBlur = gtk_check_button_new_with_label (_("Screen smoothing (can be slow or unsupported)"));
760   gtk_widget_ref (chkBlur);
761   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkBlur", chkBlur,
762                             (GtkDestroyNotify) gtk_widget_unref);
763   gtk_widget_show (chkBlur);
764   gtk_fixed_put (GTK_FIXED (fixed6), chkBlur, 8, 132);
765   gtk_widget_set_usize (chkBlur, 350, 20);
766
767   chkExtensions = gtk_check_button_new_with_label (_("Use OpenGL extensions (recommended)"));
768   gtk_widget_ref (chkExtensions);
769   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkExtensions", chkExtensions,
770                             (GtkDestroyNotify) gtk_widget_unref);
771   gtk_widget_show (chkExtensions);
772   gtk_fixed_put (GTK_FIXED (fixed6), chkExtensions, 8, 112);
773   gtk_widget_set_usize (chkExtensions, 350, 20);
774
775   chkAntiA = gtk_check_button_new_with_label (_("Polygon anti-aliasing (slow with most cards)"));
776   gtk_widget_ref (chkAntiA);
777   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkAntiA", chkAntiA,
778                             (GtkDestroyNotify) gtk_widget_unref);
779   gtk_widget_show (chkAntiA);
780   gtk_fixed_put (GTK_FIXED (fixed6), chkAntiA, 8, 92);
781   gtk_widget_set_usize (chkAntiA, 350, 20);
782
783   chkLinemode = gtk_check_button_new_with_label (_("Line mode (polygons will not get filled)"));
784   gtk_widget_ref (chkLinemode);
785   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkLinemode", chkLinemode,
786                             (GtkDestroyNotify) gtk_widget_unref);
787   gtk_widget_show (chkLinemode);
788   gtk_fixed_put (GTK_FIXED (fixed6), chkLinemode, 8, 72);
789   gtk_widget_set_usize (chkLinemode, 350, 20);
790
791   chk15bitMdec = gtk_check_button_new_with_label (_("Force 15 bit framebuffer updates (faster movies)"));
792   gtk_widget_ref (chk15bitMdec);
793   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chk15bitMdec", chk15bitMdec,
794                             (GtkDestroyNotify) gtk_widget_unref);
795   gtk_widget_show (chk15bitMdec);
796   gtk_fixed_put (GTK_FIXED (fixed6), chk15bitMdec, 8, 52);
797   gtk_widget_set_usize (chk15bitMdec, 350, 20);
798
799   chkFastMdec = gtk_check_button_new_with_label (_("Unfiltered MDECs (small movie speedup)"));
800   gtk_widget_ref (chkFastMdec);
801   gtk_object_set_data_full (GTK_OBJECT (CfgWnd), "chkFastMdec", chkFastMdec,
802                             (GtkDestroyNotify) gtk_widget_unref);
803   gtk_widget_show (chkFastMdec);
804   gtk_fixed_put (GTK_FIXED (fixed6), chkFastMdec, 8, 32);
805   gtk_widget_set_usize (chkFastMdec, 350, 20);
806
807   gtk_signal_connect (GTK_OBJECT (CfgWnd), "destroy",
808                       GTK_SIGNAL_FUNC (on_CfgWnd_destroy), NULL);
809   gtk_signal_connect (GTK_OBJECT (btnSave), "clicked",
810                       GTK_SIGNAL_FUNC (on_btnSave_clicked), NULL);
811   gtk_signal_connect (GTK_OBJECT (btnCancel), "clicked",
812                       GTK_SIGNAL_FUNC (on_btnCancel_clicked), NULL);
813
814   return CfgWnd;
815 }
816
817 GtkWidget*
818 create_AboutWnd (void)
819 {
820   GtkWidget *AboutWnd;
821   GtkWidget *fixed8;
822   GtkWidget *bntAClose;
823   GtkWidget *label13;
824   GtkWidget *label15;
825   GtkWidget *label21;
826   GtkWidget *label19;
827
828   AboutWnd = gtk_window_new (GTK_WINDOW_TOPLEVEL);
829   gtk_object_set_data (GTK_OBJECT (AboutWnd), "AboutWnd", AboutWnd);
830   gtk_container_set_border_width (GTK_CONTAINER (AboutWnd), 12);
831   gtk_window_set_title (GTK_WINDOW (AboutWnd), _("About"));
832   gtk_window_set_position (GTK_WINDOW (AboutWnd), GTK_WIN_POS_CENTER);
833   gtk_window_set_modal (GTK_WINDOW (AboutWnd), TRUE);
834   gtk_window_set_policy (GTK_WINDOW (AboutWnd), FALSE, FALSE, FALSE);
835
836   fixed8 = gtk_fixed_new ();
837   gtk_widget_ref (fixed8);
838   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "fixed8", fixed8,
839                             (GtkDestroyNotify) gtk_widget_unref);
840   gtk_widget_show (fixed8);
841   gtk_container_add (GTK_CONTAINER (AboutWnd), fixed8);
842
843   bntAClose = gtk_button_new_with_label (_("OK"));
844   gtk_widget_ref (bntAClose);
845   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "bntAClose", bntAClose,
846                             (GtkDestroyNotify) gtk_widget_unref);
847   gtk_widget_show (bntAClose);
848   gtk_fixed_put (GTK_FIXED (fixed8), bntAClose, 136, 184);
849   gtk_widget_set_uposition (bntAClose, 136, 184);
850   gtk_widget_set_usize (bntAClose, 88, 24);
851
852   label13 = gtk_label_new (_("Adapted from P.E.Op.S OpenGL GPU by Pete Bernert"));
853   gtk_widget_ref (label13);
854   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "label13", label13,
855                             (GtkDestroyNotify) gtk_widget_unref);
856   gtk_widget_show (label13);
857   gtk_fixed_put (GTK_FIXED (fixed8), label13, 0, 8);
858   gtk_widget_set_uposition (label13, 0, 8);
859   gtk_widget_set_usize (label13, 360, 16);
860
861   label15 = gtk_label_new (_("Homepage: http://www.pbernert.com"));
862   gtk_widget_ref (label15);
863   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "label15", label15,
864                             (GtkDestroyNotify) gtk_widget_unref);
865   gtk_widget_show (label15);
866   gtk_fixed_put (GTK_FIXED (fixed8), label15, 0, 40);
867   gtk_widget_set_uposition (label15, 0, 40);
868   gtk_widget_set_usize (label15, 360, 16);
869
870   label21 = gtk_label_new ("Compile date: " __DATE__);
871   gtk_widget_ref (label21);
872   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "label21", label21,
873                             (GtkDestroyNotify) gtk_widget_unref);
874   gtk_widget_show (label21);
875   gtk_fixed_put (GTK_FIXED (fixed8), label21, 0, 136);
876   gtk_widget_set_uposition (label21, 0, 136);
877   gtk_widget_set_usize (label21, 360, 16);
878
879   label19 = gtk_label_new (_("Version: 1.78"));
880   gtk_widget_ref (label19);
881   gtk_object_set_data_full (GTK_OBJECT (AboutWnd), "label19", label19,
882                             (GtkDestroyNotify) gtk_widget_unref);
883   gtk_widget_show (label19);
884   gtk_fixed_put (GTK_FIXED (fixed8), label19, 0, 104);
885   gtk_widget_set_uposition (label19, 0, 104);
886   gtk_widget_set_usize (label19, 360, 16);
887
888   gtk_signal_connect (GTK_OBJECT (AboutWnd), "destroy",
889                       GTK_SIGNAL_FUNC (on_AboutWnd_destroy),
890                       NULL);
891   gtk_signal_connect (GTK_OBJECT (bntAClose), "clicked",
892                       GTK_SIGNAL_FUNC (on_bntAClose_clicked),
893                       NULL);
894
895   return AboutWnd;
896 }