#include "emu.h"
#include "menu_pico.h"
#include "input_pico.h"
-
-#include <version.h>
+#include "version.h"
#include <pico/pico.h>
#include <pico/patch.h>
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;
{
static int sel = 0;
- me_enable(e_menu_keyconfig, MA_OPT_SAVECFG_GAME, rom_loaded);
+ me_enable(e_menu_keyconfig, MA_OPT_SAVECFG_GAME, PicoGameLoaded);
me_loop(e_menu_keyconfig, &sel);
return 0;
}
// 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;
}
i = me_id2offset(e_menu_options, MA_OPT_CPU_CLOCKS);
e_menu_options[i].enabled = e_menu_options[i].name[0] ? 1 : 0;
- me_enable(e_menu_options, MA_OPT_SAVECFG_GAME, rom_loaded);
+ me_enable(e_menu_options, MA_OPT_SAVECFG_GAME, PicoGameLoaded);
me_enable(e_menu_options, MA_OPT_LOADCFG, config_slot != config_slot_current);
me_loop(e_menu_options, &sel);
switch (id)
{
case MA_MAIN_RESUME_GAME:
- if (rom_loaded)
+ if (PicoGameLoaded)
return 1;
break;
case MA_MAIN_SAVE_STATE:
- if (rom_loaded)
+ if (PicoGameLoaded)
return menu_loop_savestate(0);
break;
case MA_MAIN_LOAD_STATE:
- if (rom_loaded)
+ if (PicoGameLoaded)
return menu_loop_savestate(1);
break;
case MA_MAIN_RESET_GAME:
- if (rom_loaded) {
+ if (PicoGameLoaded) {
emu_reset_game();
return 1;
}
engineState = PGS_Quit;
return 1;
case MA_MAIN_PATCHES:
- if (rom_loaded && PicoPatches) {
+ if (PicoGameLoaded && PicoPatches) {
menu_loop_patches();
PicoPatchApply();
menu_update_msg("Patches applied");
{
static int sel = 0;
- me_enable(e_menu_main, MA_MAIN_RESUME_GAME, rom_loaded);
- me_enable(e_menu_main, MA_MAIN_SAVE_STATE, rom_loaded);
- me_enable(e_menu_main, MA_MAIN_LOAD_STATE, rom_loaded);
- me_enable(e_menu_main, MA_MAIN_RESET_GAME, rom_loaded);
+ me_enable(e_menu_main, MA_MAIN_RESUME_GAME, PicoGameLoaded);
+ me_enable(e_menu_main, MA_MAIN_SAVE_STATE, PicoGameLoaded);
+ me_enable(e_menu_main, MA_MAIN_LOAD_STATE, PicoGameLoaded);
+ me_enable(e_menu_main, MA_MAIN_RESET_GAME, PicoGameLoaded);
me_enable(e_menu_main, MA_MAIN_PATCHES, PicoPatches != NULL);
- menu_enter(rom_loaded);
+ menu_enter(PicoGameLoaded);
in_set_config_int(0, IN_CFG_BLOCKING, 1);
me_loop_d(e_menu_main, &sel, NULL, menu_main_plat_draw);
- if (rom_loaded) {
+ if (PicoGameLoaded) {
if (engineState == PGS_Menu)
engineState = PGS_Running;
/* wait until menu, ok, back is released */
{
int ret = 1, sel = 0;
- menu_enter(rom_loaded);
+ menu_enter(PicoGameLoaded);
in_set_config_int(0, IN_CFG_BLOCKING, 1);
me_loop(e_menu_tray, &sel);
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();