X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fgp2x%2Fmenu.c;h=5ff8ac0aa28d2fcef6b522131bf87aeb7b76f750;hb=eacee137eed2f00111e03544f6b1e43d20a7403b;hp=a60e4d8018ff1b1073a9fc562782258c0c1deff1;hpb=ea8c405fa721a8658b1f7c51cf6238ba2bba8a17;p=picodrive.git diff --git a/platform/gp2x/menu.c b/platform/gp2x/menu.c index a60e4d8..5ff8ac0 100644 --- a/platform/gp2x/menu.c +++ b/platform/gp2x/menu.c @@ -133,23 +133,43 @@ static void menu_flip(void) // --------- loading ROM screen ---------- +static int cdload_called = 0; + static void load_progress_cb(int percent) { int ln, len = percent * 320 / 100; unsigned short *dst = (unsigned short *)gp2x_screen + 320*20; if (len > 320) len = 320; - for (ln = 10; ln > 0; ln--, dst += 320) + for (ln = 8; ln > 0; ln--, dst += 320) memset(dst, 0xff, len*2); menu_flip(); } +static void cdload_progress_cb(int percent) +{ + int ln, len = percent * 320 / 100; + unsigned short *dst = (unsigned short *)gp2x_screen + 320*20; + + memset(dst, 0xff, 320*2*8); + + smalltext_out16(1, 3*10, "Processing CD image / MP3s", 0xffff); + smalltext_out16_lim(1, 4*10, romFileName, 0xffff, 80); + dst += 320*30; + + if (len > 320) len = 320; + for (ln = 8; ln > 0; ln--, dst += 320) + memset(dst, 0xff, len*2); + menu_flip(); + cdload_called = 1; +} + void menu_romload_prepare(const char *rom_name) { const char *p = rom_name + strlen(rom_name); while (p > rom_name && *p != '/') p--; - if (rom_data) gp2x_pd_clone_buffer2(); + if (rom_loaded) gp2x_pd_clone_buffer2(); else memset(gp2x_screen, 0, 320*240*2); smalltext_out16(1, 1, "Loading", 0xffff); @@ -157,12 +177,14 @@ void menu_romload_prepare(const char *rom_name) gp2x_memcpy_buffers(3, gp2x_screen, 0, 320*240*2); menu_flip(); PicoCartLoadProgressCB = load_progress_cb; + PicoCDLoadProgressCB = cdload_progress_cb; + cdload_called = 0; } void menu_romload_end(void) { - PicoCartLoadProgressCB = NULL; - smalltext_out16(1, 30, "Starting emulation...", 0xffff); + PicoCartLoadProgressCB = PicoCDLoadProgressCB = NULL; + smalltext_out16(1, cdload_called ? 60 : 30, "Starting emulation...", 0xffff); menu_flip(); } @@ -172,7 +194,7 @@ void menu_romload_end(void) static unsigned short file2color(const char *fname) { const char *ext = fname + strlen(fname) - 3; - static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso" }; + static const char *rom_exts[] = { "zip", "bin", "smd", "gen", "iso", "cso" }; static const char *other_exts[] = { "gmv", "pat" }; int i; @@ -193,7 +215,7 @@ static void draw_dirlist(char *curdir, struct dirent **namelist, int n, int sel) gp2x_pd_clone_buffer2(); - if (rom_data == NULL) { + if (!rom_loaded) { menu_darken_bg(gp2x_screen, 320*240, 0); } @@ -816,6 +838,7 @@ static bind_action_t emuctrl_actions[] = { "Switch Renderer", 1<<26 }, { "Volume Down ", 1<<30 }, { "Volume Up ", 1<<29 }, + { "Fast forward ", 1<<22 }, { "Enter Menu ", 1<<23 }, }; @@ -837,7 +860,7 @@ static void kc_sel_loop(void) case 1: key_config_loop(ctrl_actions, is_6button ? 12 : 8, 1); return; case 2: key_config_loop(emuctrl_actions, sizeof(emuctrl_actions)/sizeof(emuctrl_actions[0]), -1); return; - case 3: if (rom_data == NULL) emu_WriteConfig(0); return; + case 3: if (!rom_loaded) emu_WriteConfig(0); return; default: return; } } @@ -1250,6 +1273,10 @@ static void menu_options_save(void) PicoOpt = currentConfig.PicoOpt; PsndRate = currentConfig.PsndRate; PicoRegionOverride = currentConfig.PicoRegion; + if (PicoRegionOverride) { + // force setting possibly changed.. + Pico.m.pal = (PicoRegionOverride == 2 || PicoRegionOverride == 8) ? 1 : 0; + } if (!(PicoOpt & 0x20)) { // unbind XYZ MODE, just in case unbind_action(0xf00, -1, -1); @@ -1267,7 +1294,7 @@ static int menu_loop_options(void) currentConfig.PsndRate = PsndRate; currentConfig.PicoRegion = PicoRegionOverride; - me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_data != NULL); + me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_loaded); me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_LOADCFG, config_slot != config_slot_current); menu_sel_max = me_count_enabled(opt_entries, OPT_ENTRY_COUNT) - 1; if (menu_sel > menu_sel_max) menu_sel = menu_sel_max; @@ -1394,7 +1421,7 @@ static void draw_menu_credits(void) text_out16(tl_x, 20, "PicoDrive v" VERSION " (c) notaz, 2006,2007"); y = tl_y; text_out16(tl_x, y, "Credits:"); - text_out16(tl_x, (y+=10), "Dave: Cyclone 68000 core,"); + text_out16(tl_x, (y+=10), "fDave: Cyclone 68000 core,"); text_out16(tl_x, (y+=10), " base code of PicoDrive"); text_out16(tl_x, (y+=10), "Reesy & FluBBa: DrZ80 core"); text_out16(tl_x, (y+=10), "MAME devs: YM2612 and SN76496 cores"); @@ -1458,10 +1485,10 @@ static void menu_loop_root(void) int ret, menu_sel_max; unsigned long inp = 0; - me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_data != NULL); - me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_data != NULL); - me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_data != NULL); - me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_data != NULL); + me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_loaded); + me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_loaded); + me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_loaded); + me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_loaded); me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_PATCHES, PicoPatches != NULL); menu_sel_max = me_count_enabled(main_entries, MAIN_ENTRY_COUNT) - 1; @@ -1479,7 +1506,7 @@ static void menu_loop_root(void) if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; } if((inp & (GP2X_L|GP2X_R)) == (GP2X_L|GP2X_R)) debug_menu_loop(); if(inp &(GP2X_SELECT|GP2X_X)){ - if (rom_data) { + if (rom_loaded) { while (gp2x_joystick_read(1) & (GP2X_SELECT|GP2X_X)) usleep(50*1000); // wait until select is released engineState = PGS_Running; break; @@ -1489,14 +1516,14 @@ static void menu_loop_root(void) switch (me_index2id(main_entries, MAIN_ENTRY_COUNT, menu_sel)) { case MA_MAIN_RESUME_GAME: - if (rom_data) { + if (rom_loaded) { while (gp2x_joystick_read(1) & GP2X_B) usleep(50*1000); engineState = PGS_Running; return; } break; case MA_MAIN_SAVE_STATE: - if (rom_data) { + if (rom_loaded) { if(savestate_menu_loop(0)) continue; engineState = PGS_Running; @@ -1504,7 +1531,7 @@ static void menu_loop_root(void) } break; case MA_MAIN_LOAD_STATE: - if (rom_data) { + if (rom_loaded) { if(savestate_menu_loop(1)) continue; engineState = PGS_Running; @@ -1512,7 +1539,7 @@ static void menu_loop_root(void) } break; case MA_MAIN_RESET_GAME: - if (rom_data) { + if (rom_loaded) { emu_ResetGame(); engineState = PGS_Running; return; @@ -1555,7 +1582,7 @@ static void menu_loop_root(void) engineState = PGS_Quit; return; case MA_MAIN_PATCHES: - if (rom_data && PicoPatches) { + if (rom_loaded && PicoPatches) { patches_menu_loop(); PicoPatchApply(); strcpy(menuErrorMsg, "Patches applied"); @@ -1614,7 +1641,7 @@ static void menu_prepare_bg(int use_game_bg) static void menu_gfx_prepare(void) { - menu_prepare_bg(rom_data != NULL); + menu_prepare_bg(rom_loaded); // switch to 16bpp gp2x_video_changemode2(16);