\r
// --------- loading ROM screen ----------\r
\r
+static int cdload_called = 0;\r
+\r
static void load_progress_cb(int percent)\r
{\r
int ln, len = percent * 320 / 100;\r
unsigned short *dst = (unsigned short *)gp2x_screen + 320*20;\r
\r
if (len > 320) len = 320;\r
- for (ln = 10; ln > 0; ln--, dst += 320)\r
+ for (ln = 8; ln > 0; ln--, dst += 320)\r
memset(dst, 0xff, len*2);\r
menu_flip();\r
}\r
\r
+static void cdload_progress_cb(int percent)\r
+{\r
+ int ln, len = percent * 320 / 100;\r
+ unsigned short *dst = (unsigned short *)gp2x_screen + 320*20;\r
+\r
+ memset(dst, 0xff, 320*2*8);\r
+\r
+ smalltext_out16(1, 3*10, "Processing CD image / MP3s", 0xffff);\r
+ smalltext_out16_lim(1, 4*10, romFileName, 0xffff, 80);\r
+ dst += 320*30;\r
+\r
+ if (len > 320) len = 320;\r
+ for (ln = 8; ln > 0; ln--, dst += 320)\r
+ memset(dst, 0xff, len*2);\r
+ menu_flip();\r
+ cdload_called = 1;\r
+}\r
+\r
void menu_romload_prepare(const char *rom_name)\r
{\r
const char *p = rom_name + strlen(rom_name);\r
while (p > rom_name && *p != '/') p--;\r
\r
- if (rom_data) gp2x_pd_clone_buffer2();\r
+ if (rom_loaded) gp2x_pd_clone_buffer2();\r
else memset(gp2x_screen, 0, 320*240*2);\r
\r
smalltext_out16(1, 1, "Loading", 0xffff);\r
gp2x_memcpy_buffers(3, gp2x_screen, 0, 320*240*2);\r
menu_flip();\r
PicoCartLoadProgressCB = load_progress_cb;\r
+ PicoCDLoadProgressCB = cdload_progress_cb;\r
+ cdload_called = 0;\r
}\r
\r
void menu_romload_end(void)\r
{\r
- PicoCartLoadProgressCB = NULL;\r
- smalltext_out16(1, 30, "Starting emulation...", 0xffff);\r
+ PicoCartLoadProgressCB = PicoCDLoadProgressCB = NULL;\r
+ smalltext_out16(1, cdload_called ? 60 : 30, "Starting emulation...", 0xffff);\r
menu_flip();\r
}\r
\r
static unsigned short file2color(const char *fname)\r
{\r
const char *ext = fname + strlen(fname) - 3;\r
- static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso" };\r
+ static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso", "cso" };\r
static const char *other_exts[] = { "gmv", "pat" };\r
int i;\r
\r
\r
gp2x_pd_clone_buffer2();\r
\r
- if (rom_data == NULL) {\r
+ if (!rom_loaded) {\r
menu_darken_bg(gp2x_screen, 320*240, 0);\r
}\r
\r
{ "Switch Renderer", 1<<26 },\r
{ "Volume Down ", 1<<30 },\r
{ "Volume Up ", 1<<29 },\r
+ { "Fast forward ", 1<<22 },\r
{ "Enter Menu ", 1<<23 },\r
};\r
\r
case 1: key_config_loop(ctrl_actions, is_6button ? 12 : 8, 1); return;\r
case 2: key_config_loop(emuctrl_actions,\r
sizeof(emuctrl_actions)/sizeof(emuctrl_actions[0]), -1); return;\r
- case 3: if (rom_data == NULL) emu_WriteConfig(0); return;\r
+ case 3: if (!rom_loaded) emu_WriteConfig(0); return;\r
default: return;\r
}\r
}\r
PicoOpt = currentConfig.PicoOpt;\r
PsndRate = currentConfig.PsndRate;\r
PicoRegionOverride = currentConfig.PicoRegion;\r
+ if (PicoRegionOverride) {\r
+ // force setting possibly changed..\r
+ Pico.m.pal = (PicoRegionOverride == 2 || PicoRegionOverride == 8) ? 1 : 0;\r
+ }\r
if (!(PicoOpt & 0x20)) {\r
// unbind XYZ MODE, just in case\r
unbind_action(0xf00, -1, -1);\r
currentConfig.PsndRate = PsndRate;\r
currentConfig.PicoRegion = PicoRegionOverride;\r
\r
- me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_data != NULL);\r
+ me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_loaded);\r
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_LOADCFG, config_slot != config_slot_current);\r
menu_sel_max = me_count_enabled(opt_entries, OPT_ENTRY_COUNT) - 1;\r
if (menu_sel > menu_sel_max) menu_sel = menu_sel_max;\r
int ret, menu_sel_max;\r
unsigned long inp = 0;\r
\r
- me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_data != NULL);\r
- me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_data != NULL);\r
- me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_data != NULL);\r
- me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_data != NULL);\r
+ me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_loaded);\r
+ me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_loaded);\r
+ me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_loaded);\r
+ me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_loaded);\r
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_PATCHES, PicoPatches != NULL);\r
\r
menu_sel_max = me_count_enabled(main_entries, MAIN_ENTRY_COUNT) - 1;\r
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }\r
if((inp & (GP2X_L|GP2X_R)) == (GP2X_L|GP2X_R)) debug_menu_loop();\r
if(inp &(GP2X_SELECT|GP2X_X)){\r
- if (rom_data) {\r
+ if (rom_loaded) {\r
while (gp2x_joystick_read(1) & (GP2X_SELECT|GP2X_X)) usleep(50*1000); // wait until select is released\r
engineState = PGS_Running;\r
break;\r
switch (me_index2id(main_entries, MAIN_ENTRY_COUNT, menu_sel))\r
{\r
case MA_MAIN_RESUME_GAME:\r
- if (rom_data) {\r
+ if (rom_loaded) {\r
while (gp2x_joystick_read(1) & GP2X_B) usleep(50*1000);\r
engineState = PGS_Running;\r
return;\r
}\r
break;\r
case MA_MAIN_SAVE_STATE:\r
- if (rom_data) {\r
+ if (rom_loaded) {\r
if(savestate_menu_loop(0))\r
continue;\r
engineState = PGS_Running;\r
}\r
break;\r
case MA_MAIN_LOAD_STATE:\r
- if (rom_data) {\r
+ if (rom_loaded) {\r
if(savestate_menu_loop(1))\r
continue;\r
engineState = PGS_Running;\r
}\r
break;\r
case MA_MAIN_RESET_GAME:\r
- if (rom_data) {\r
+ if (rom_loaded) {\r
emu_ResetGame();\r
engineState = PGS_Running;\r
return;\r
engineState = PGS_Quit;\r
return;\r
case MA_MAIN_PATCHES:\r
- if (rom_data && PicoPatches) {\r
+ if (rom_loaded && PicoPatches) {\r
patches_menu_loop();\r
PicoPatchApply();\r
strcpy(menuErrorMsg, "Patches applied");\r
\r
static void menu_gfx_prepare(void)\r
{\r
- menu_prepare_bg(rom_data != NULL);\r
+ menu_prepare_bg(rom_loaded);\r
\r
// switch to 16bpp\r
gp2x_video_changemode2(16);\r