static menu_entry *cfg_opts[] = { opt_entries, opt2_entries, cdopt_entries };
static const int *cfg_opt_counts[] = { &opt_entry_count, &opt2_entry_count, &cdopt_entry_count };
-#define NL "\n"
+#define NL "\r\n"
-static void mystrip(char *str)
+static char *mystrip(char *str)
{
int i, len;
for (i = 0; i < len; i++)
if (str[i] != ' ') break;
if (i > 0) memmove(str, str + i, len - i + 1);
+
len = strlen(str);
for (i = len - 1; i >= 0; i--)
if (str[i] != ' ') break;
str[i+1] = 0;
+
+ return str;
}
switch (me->id)
{
case MA_OPT_RENDERER:
- if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&0x10) &&
+ if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&POPT_ALT_RENDERER) &&
!((defaultConfig.EmuOpt^currentConfig.EmuOpt)&0x80)) return;
- if (PicoOpt&0x10)
+ if (PicoOpt&POPT_ALT_RENDERER)
str = "8bit fast";
else if (currentConfig.EmuOpt&0x80)
str = "16bit accurate";
fprintf(f, "Frameskip = %s", str24);
break;
case MA_OPT_SOUND_QUALITY:
- if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&8) &&
+ if (no_def && !((defaultConfig.s_PicoOpt^PicoOpt)&POPT_EN_STEREO) &&
defaultConfig.s_PsndRate == PsndRate) return;
- str = (PicoOpt&0x08)?"stereo":"mono";
+ str = (PicoOpt&POPT_EN_STEREO)?"stereo":"mono";
fprintf(f, "Sound Quality = %i %s", PsndRate, str);
break;
case MA_OPT_REGION:
#endif
for (i = 0; i < sizeof(me_ctrl_actions) / sizeof(me_ctrl_actions[0]); i++) {
if (me_ctrl_actions[i].mask & binds[t]) {
- sprintf(act, "player%i ", ((binds[t]>>16)&1)+1);
- strncpy(act + 8, me_ctrl_actions[i].name, 31);
- break;
+ strncpy(act, me_ctrl_actions[i].name, 31);
+ fprintf(fn, "%s %s = player%i %s" NL, bind_str, names[t],
+ ((binds[t]>>16)&1)+1, mystrip(act));
}
}
- if (act[0] == 0)
- {
- for (i = 0; emuctrl_actions[i].name != NULL; i++)
- if (emuctrl_actions[i].mask & binds[t]) {
- strncpy(act, emuctrl_actions[i].name, 31);
- break;
- }
- }
- mystrip(act);
- fprintf(fn, "%s %s = %s" NL, bind_str, names[t], act);
+ for (i = 0; emuctrl_actions[i].name != NULL; i++) {
+ if (emuctrl_actions[i].mask & binds[t]) {
+ strncpy(act, emuctrl_actions[i].name, 31);
+ fprintf(fn, "%s %s = %s" NL, bind_str, names[t], mystrip(act));
+ }
+ }
}
}
keys_write(fn, "bind_joy2", currentConfig.JoyBinds[2], defaultConfig.JoyBinds[2], joyKeyNames, 1);
keys_write(fn, "bind_joy3", currentConfig.JoyBinds[3], defaultConfig.JoyBinds[3], joyKeyNames, 1);
+ if (section == NULL)
+ fprintf(fn, "Sound Volume = %i" NL, currentConfig.volume);
+
fprintf(fn, NL);
if (fo != NULL)
int size;
FILE *f;
- if (strlen(lastRomFile) == 0) return 0;
+ if (strlen(lastRomFile) == 0) return -1;
f = fopen(fname, "r");
if (f != NULL)
case MA_OPT_RENDERER:
if (strcasecmp(var, "Renderer") != 0) return 0;
if (strcasecmp(val, "8bit fast") == 0) {
- PicoOpt |= 0x10;
+ PicoOpt |= POPT_ALT_RENDERER;
}
else if (strcasecmp(val, "16bit accurate") == 0) {
- PicoOpt &= ~0x10;
+ PicoOpt &= ~POPT_ALT_RENDERER;
currentConfig.EmuOpt |= 0x80;
}
else if (strcasecmp(val, "8bit accurate") == 0) {
- PicoOpt &= ~0x10;
+ PicoOpt &= ~POPT_ALT_RENDERER;
currentConfig.EmuOpt &= ~0x80;
}
else
PsndRate = 22050;
while (*tmp == ' ') tmp++;
if (strcasecmp(tmp, "stereo") == 0) {
- PicoOpt |= 8;
+ PicoOpt |= POPT_EN_STEREO;
} else if (strcasecmp(tmp, "mono") == 0) {
- PicoOpt &= ~8;
+ PicoOpt &= ~POPT_EN_STEREO;
} else
return 0;
return 1;
}
+static unsigned int keys_encountered = 0;
+
static void keys_parse(const char *var, const char *val, int binds[32], const char *names[32])
{
- int t, i, keys_encountered = 0;
+ int t, i;
unsigned int player;
for (t = 0; t < 32; t++)
return;
}
- if (!(keys_encountered & (1<<t))) {
+ if (binds == currentConfig.KeyBinds && !(keys_encountered & (1<<t))) { // hack
binds[t] = 0;
keys_encountered |= 1<<t;
}
fail:
lprintf("unhandled action \"%s\"\n", val);
return;
-
}
if (strcasecmp(var, "LastUsedROM") == 0)
return; /* handled elsewhere */
+ if (strcasecmp(var, "Sound Volume") == 0) {
+ currentConfig.volume = atoi(val);
+ return;
+ }
+
// key binds
if (strncasecmp(var, "bind ", 5) == 0) {
keys_parse(var + 5, val, currentConfig.KeyBinds, keyNames);
FILE *f;
f = fopen(fname, "r");
- if (f == NULL) return 0;
+ if (f == NULL) return -1;
if (section != NULL)
{
}
}
+ keys_encountered = 0;
+
while (!feof(f))
{
tmp = fgets(line, sizeof(line), f);