\r
static void system_announce(void)\r
{\r
- const char *sys_name, *tv_standard;\r
+ const char *sys_name, *tv_standard, *extra = "";\r
int fps;\r
\r
if (PicoAHW & PAHW_SMS) {\r
sys_name = "Master System";\r
+#ifdef NO_SMS\r
+ extra = " [no support]";\r
+#endif\r
} else if (PicoAHW & PAHW_PICO) {\r
sys_name = "Pico";\r
} else if (PicoAHW & PAHW_MCD) {\r
tv_standard = Pico.m.pal ? "PAL" : "NTSC";\r
fps = Pico.m.pal ? 50 : 60;\r
\r
- emu_status_msg("%s %s / %dFPS", tv_standard, sys_name, fps);\r
+ emu_status_msg("%s %s / %dFPS%s", tv_standard, sys_name, fps, extra);\r
}\r
\r
// note: this function might mangle rom_fname\r
\r
get_ext(rom_fname, ext);\r
\r
- // check for movie file\r
+ // early cleanup\r
+ PicoPatchUnload();\r
if (movie_data) {\r
free(movie_data);\r
movie_data = 0;\r
}\r
+\r
if (!strcmp(ext, ".gmv"))\r
{\r
// check for both gmv and rom\r
}\r
\r
shutdown_MCD();\r
- PicoPatchUnload();\r
PicoCartUnload();\r
rom_loaded = 0;\r
\r
\r
void emu_32x_startup(void)\r
{\r
- plat_video_toggle_renderer(0, 0);\r
+ plat_video_toggle_renderer(0, 0); // HACK\r
system_announce();\r
+\r
+ // force mode change event\r
+ rendstatus_old = -1;\r
}\r
\r
void emu_reset_game(void)\r
\r
plat_status_msg_busy_first(tmp);\r
\r
- in_set_blocking(1);\r
+ in_set_config_int(0, IN_CFG_BLOCKING, 1);\r
while (in_menu_wait_any(50) & (PBTN_MA3|PBTN_MBACK))\r
;\r
while ( !((keys = in_menu_wait_any(50)) & (PBTN_MA3|PBTN_MBACK)) )\r
do_it = 0;\r
while (in_menu_wait_any(50) & (PBTN_MA3|PBTN_MBACK))\r
;\r
- in_set_blocking(0);\r
+ in_set_config_int(0, IN_CFG_BLOCKING, 0);\r
}\r
if (do_it) {\r
plat_status_msg_busy_first((which & PEV_STATE_LOAD) ? "LOADING STATE" : "SAVING STATE");\r
lprintf("failed to create: %s\n", path_with_reserve);\r
}\r
\r
+void emu_cmn_forced_frame(int no_scale, int do_emu)\r
+{\r
+ int po_old = PicoOpt;\r
+\r
+ memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4);\r
+\r
+ PicoOpt &= ~POPT_ALT_RENDERER;\r
+ PicoOpt |= POPT_ACC_SPRITES;\r
+ if (!no_scale)\r
+ PicoOpt |= POPT_EN_SOFTSCALE;\r
+\r
+ PicoDrawSetOutFormat(PDF_RGB555, 1);\r
+ Pico.m.dirtyPal = 1;\r
+ if (do_emu)\r
+ PicoFrame();\r
+ else\r
+ PicoFrameDrawOnly();\r
+\r
+ PicoOpt = po_old;\r
+}\r
+\r
void emu_init(void)\r
{\r
char path[512];\r
Pico.m.dirtyPal = 1;\r
rendstatus_old = -1;\r
\r
+ PicoLoopPrepare();\r
+\r
+ // prepare CD buffer\r
+ if (PicoAHW & PAHW_MCD)\r
+ PicoCDBufferInit();\r
+\r
+ pemu_loop_prep();\r
+\r
/* number of ticks per frame */\r
if (Pico.m.pal) {\r
target_fps = 50;\r
target_frametime = ms_to_ticks(1000) / 60 + 1;\r
}\r
\r
- // prepare CD buffer\r
- if (PicoAHW & PAHW_MCD)\r
- PicoCDBufferInit();\r
- PicoLoopPrepare();\r
-\r
- pemu_loop_prep();\r
-\r
timestamp_fps = get_ticks();\r
reset_timing = 1;\r
\r