drc: fall back to interpreter on delay slot link reg dependencies
[pcsx_rearmed.git] / plugins / dfsound / spucfg-0.1df / main.c
... / ...
CommitLineData
1#include "config.h"
2
3#include <unistd.h>
4#include <stdio.h>
5#include <stdlib.h>
6#include <string.h>
7#include <sys/stat.h>
8
9#include <glade/glade.h>
10#include <gtk/gtk.h>
11
12#ifdef ENABLE_NLS
13#include <libintl.h>
14#include <locale.h>
15#endif
16
17#define READBINARY "rb"
18#define WRITEBINARY "wb"
19#define CONFIG_FILENAME "dfsound.cfg"
20
21void SaveConfig(GtkWidget *widget, gpointer user_datal);
22
23/* This function checks for the value being outside the accepted range,
24 and returns the appropriate boundary value */
25int set_limit (char *p, int len, int lower, int upper)
26{
27 int val = 0;
28
29 if (p)
30 val = atoi(p + len);
31
32 if (val < lower)
33 val = lower;
34 if (val > upper)
35 val = upper;
36
37 return val;
38}
39
40void on_about_clicked (GtkWidget *widget, gpointer user_data)
41{
42 gtk_widget_destroy (widget);
43 exit (0);
44}
45
46void OnConfigClose(GtkWidget *widget, gpointer user_data)
47{
48 GladeXML *xml = (GladeXML *)user_data;
49
50 gtk_widget_destroy(glade_xml_get_widget(xml, "CfgWnd"));
51 gtk_exit(0);
52}
53
54int main(int argc, char *argv[])
55{
56 GtkWidget *widget;
57 GladeXML *xml;
58 FILE *in;
59 char t[256];
60 int len, val = 0;
61 char *pB, *p;
62 char cfg[255];
63
64#ifdef ENABLE_NLS
65 setlocale (LC_ALL, "");
66 bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
67 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
68 textdomain (GETTEXT_PACKAGE);
69#endif
70
71 if (argc != 2) {
72 printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
73 return 0;
74 }
75
76 if (strcmp(argv[1], "CFG") != 0 && strcmp(argv[1], "ABOUT") != 0) {
77 printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
78 return 0;
79 }
80
81 gtk_set_locale();
82 gtk_init(&argc, &argv);
83
84 if (strcmp(argv[1], "ABOUT") == 0) {
85 const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL};
86 widget = gtk_about_dialog_new ();
87 gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (widget), "dfsound PCSX Sound Plugin");
88 gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (widget), "1.6");
89 gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors);
90 gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (widget), "http://pcsx-df.sourceforge.net/");
91
92 g_signal_connect_data(GTK_OBJECT(widget), "response",
93 GTK_SIGNAL_FUNC(on_about_clicked), NULL, NULL, G_CONNECT_AFTER);
94
95 gtk_widget_show (widget);
96 gtk_main();
97
98 return 0;
99 }
100
101 xml = glade_xml_new(DATADIR "dfsound.glade2", "CfgWnd", NULL);
102 if (!xml) {
103 g_warning("We could not load the interface!");
104 return 255;
105 }
106
107 strcpy(cfg, CONFIG_FILENAME);
108
109 in = fopen(cfg, READBINARY);
110 if (in) {
111 pB = (char *)malloc(32767);
112 memset(pB, 0, 32767);
113 len = fread(pB, 1, 32767, in);
114 fclose(in);
115 } else {
116 pB = 0;
117 printf ("Error - no configuration file\n");
118 /* TODO Raise error - no configuration file */
119 }
120
121 /* ADB TODO Replace a lot of the following with common functions */
122 if (pB) {
123 strcpy(t, "\nVolume");
124 p = strstr(pB, t);
125 if (p) {
126 p = strstr(p, "=");
127 len = 1;
128 }
129 val = set_limit (p, len, 0, 4);
130 } else val = 2;
131
132 gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "cbVolume2")), val);
133
134 if (pB) {
135 strcpy(t, "\nUseInterpolation");
136 p = strstr(pB, t);
137 if (p) {
138 p = strstr(p, "=");
139 len = 1;
140 }
141 val = set_limit (p, len, 0, 3);
142 } else val = 2;
143
144 gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "cbInterpolation2")), val);
145
146 if (pB) {
147 strcpy(t, "\nXAPitch");
148 p = strstr(pB, t);
149 if (p) {
150 p = strstr(p, "=");
151 len = 1;
152 }
153 val = set_limit (p, len, 0, 1);
154 } else val = 0;
155
156 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkXASpeed")), val);
157
158 if (pB) {
159 strcpy(t, "\nHighCompMode");
160 p = strstr(pB, t);
161 if (p) {
162 p = strstr(p, "=");
163 len = 1;
164 }
165 val = set_limit (p, len, 0, 1);
166 } else val = 0;
167
168 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkHiCompat")), val);
169
170 if (pB) {
171 strcpy(t, "\nSPUIRQWait");
172 p = strstr(pB, t);
173 if (p) {
174 p = strstr(p, "=");
175 len = 1;
176 }
177
178 val = set_limit (p, len, 0, 1);
179 } else val = 1;
180
181 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkIRQWait")), val);
182
183 if (pB) {
184 strcpy(t, "\nDisStereo");
185 p = strstr(pB, t);
186 if (p) {
187 p = strstr(p, "=");
188 len = 1;
189 }
190
191 val = set_limit (p, len, 0, 1);
192 } else val = 0;
193
194 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkDisStereo")), val);
195
196 if (pB) {
197 strcpy(t, "\nUseReverb");
198 p = strstr(pB, t);
199 if (p) {
200 p = strstr(p, "=");
201 len = 1;
202 }
203 val = set_limit (p, len, 0, 2);
204 } else val = 2;
205
206 gtk_combo_box_set_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbReverb2")), val);
207
208 if (pB)
209 free(pB);
210
211 widget = glade_xml_get_widget(xml, "CfgWnd");
212 g_signal_connect_data(GTK_OBJECT(widget), "destroy",
213 GTK_SIGNAL_FUNC(SaveConfig), xml, NULL, 0);
214
215 widget = glade_xml_get_widget(xml, "btn_close");
216 g_signal_connect_data(GTK_OBJECT(widget), "clicked",
217 GTK_SIGNAL_FUNC(OnConfigClose), xml, NULL, G_CONNECT_AFTER);
218
219 gtk_main();
220 return 0;
221}
222
223void SaveConfig(GtkWidget *widget, gpointer user_data)
224{
225 GladeXML *xml = (GladeXML *)user_data;
226 FILE *fp;
227 int val;
228
229 fp = fopen(CONFIG_FILENAME, WRITEBINARY);
230 if (fp == NULL) {
231 fprintf(stderr, "Unable to write to configuration file %s!\n", CONFIG_FILENAME);
232 gtk_exit(0);
233 }
234
235 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbVolume2")));
236 fprintf(fp, "\nVolume = %d\n", val);
237
238 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbInterpolation2")));
239 fprintf(fp, "\nUseInterpolation = %d\n", val);
240
241 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkXASpeed")));
242 fprintf(fp, "\nXAPitch = %d\n", val);
243
244 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkHiCompat")));
245 fprintf(fp, "\nHighCompMode = %d\n", val);
246
247 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkIRQWait")));
248 fprintf(fp, "\nSPUIRQWait = %d\n", val);
249
250 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkDisStereo")));
251 fprintf(fp, "\nDisStereo = %d\n", val);
252
253 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbReverb2")));
254 fprintf(fp, "\nUseReverb = %d\n", val);
255
256 fclose(fp);
257 gtk_exit(0);
258}