static const char *rom_exts[] = {
"zip",
- "bin", "smd", "gen",
+ "bin", "smd", "gen", "md",
"iso", "cso", "cue",
"32x",
"sms",
// rrrr rggg gggb bbbb
static unsigned short fname2color(const char *fname)
{
- const char *ext = fname + strlen(fname) - 3;
static const char *other_exts[] = { "gmv", "pat" };
+ const char *ext;
int i;
- if (ext < fname) ext = fname;
+ ext = strrchr(fname, '.');
+ if (ext++ == NULL) {
+ ext = fname + strlen(fname) - 3;
+ if (ext < fname) ext = fname;
+ }
+
for (i = 0; rom_exts[i] != NULL; i++)
if (strcasecmp(ext, rom_exts[i]) == 0) return 0xbdff; // FIXME: mk defines
for (i = 0; i < array_size(other_exts); i++)
short *dst;
int x, y;
+ if (src == NULL) {
+ memset(g_menubg_ptr, 0, g_menuscreen_w * g_menuscreen_h * 2);
+ return;
+ }
+
if (!no_scale && g_menuscreen_w / w >= 2 && g_menuscreen_h / h >= 2)
{
unsigned int t, *d = g_menubg_ptr;
// convert from multiplier of VClk
static int mh_opt_sh2cycles(int id, int keys)
{
- int *mul = (id == MA_32XOPT_MSH2_CYCLES) ? &p32x_msh2_multiplier : &p32x_ssh2_multiplier;
+ int *khz = (id == MA_32XOPT_MSH2_CYCLES) ?
+ ¤tConfig.msh2_khz : ¤tConfig.ssh2_khz;
if (keys & (PBTN_LEFT|PBTN_RIGHT))
- *mul += (keys & PBTN_LEFT) ? -10 : 10;
+ *khz += (keys & PBTN_LEFT) ? -50 : 50;
if (keys & (PBTN_L|PBTN_R))
- *mul += (keys & PBTN_L) ? -100 : 100;
+ *khz += (keys & PBTN_L) ? -500 : 500;
- if (*mul < 1)
- *mul = 1;
- else if (*mul > (10 << SH2_MULTI_SHIFT))
- *mul = 10 << SH2_MULTI_SHIFT;
+ if (*khz < 1)
+ *khz = 1;
+ else if (*khz > 0x7fffffff / 1000)
+ *khz = 0x7fffffff / 1000;
return 0;
}
static const char *mgn_opt_sh2cycles(int id, int *offs)
{
- int mul = (id == MA_32XOPT_MSH2_CYCLES) ? p32x_msh2_multiplier : p32x_ssh2_multiplier;
-
- sprintf(static_buff, "%d", 7670 * mul >> SH2_MULTI_SHIFT);
+ int khz = (id == MA_32XOPT_MSH2_CYCLES) ?
+ currentConfig.msh2_khz : currentConfig.ssh2_khz;
+
+ sprintf(static_buff, "%d", khz);
return static_buff;
}
me_enable(e_menu_32x_options, MA_32XOPT_RENDERER, renderer_names32x[0] != NULL);
me_loop(e_menu_32x_options, &sel);
+ Pico32xSetClocks(currentConfig.msh2_khz * 1000, currentConfig.msh2_khz * 1000);
+
return 0;
}
ret = 0; /* no CD inserted */
}
- while (in_menu_wait_any(NULL, 50) & (PBTN_MENU|PBTN_MOK|PBTN_MBACK));
+ while (in_menu_wait_any(NULL, 50) & (PBTN_MENU|PBTN_MOK|PBTN_MBACK))
+ ;
in_set_config_int(0, IN_CFG_BLOCKING, 0);
plat_video_menu_leave();