#include "emu.h"\r
#include "menu.h"\r
#include "usbjoy.h"\r
-#include "../common/arm_utils.h"\r
+#include "../common/emu.h"\r
#include "../common/menu.h"\r
+#include "../common/arm_utils.h"\r
#include "../common/readpng.h"\r
#include "version.h"\r
\r
#error "need d_type for file browser\r
#endif\r
\r
-extern char romFileName[PATH_MAX];\r
-extern char *rom_data;\r
extern int mmuhack_status;\r
-extern int state_slot;\r
-extern int config_slot, config_slot_current;\r
\r
static const char *gp2xKeyNames[] = {\r
"UP", "???", "LEFT", "???", "DOWN", "???", "RIGHT", "???",\r
"???", "???", "???", "PUSH", "???", "???", "???", "???"\r
};\r
\r
-char menuErrorMsg[40] = {0, };\r
-\r
static void menu_darken_bg(void *dst, int pixels, int darker);\r
static void menu_prepare_bg(int use_game_bg);\r
\r
\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
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
\r
for (slot = 0; slot < 10; slot++)\r
{\r
- if (emu_check_save_file(slot))\r
+ if (emu_checkSaveFile(slot))\r
{\r
state_slot_flags |= 1 << slot;\r
}\r
\r
if (strcmp(fname + strlen(fname) - 3, ".gz") == 0) {\r
file = gzopen(fname, "rb");\r
- emu_set_save_cbs(1);\r
+ emu_setSaveStateCbs(1);\r
} else {\r
file = fopen(fname, "rb");\r
- emu_set_save_cbs(0);\r
+ emu_setSaveStateCbs(0);\r
}\r
\r
if (file) {\r
areaClose(file);\r
}\r
\r
- emu_forced_frame();\r
+ emu_forcedFrame();\r
menu_prepare_bg(1);\r
\r
memcpy(Pico.vram, tmp_vram, sizeof(Pico.vram));\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
menu_id selected_id;\r
char *bios, *p;\r
\r
- if (find_bios(4, &bios)) { // US\r
+ if (emu_findBios(4, &bios)) { // US\r
for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
strncpy(bios_names.us, p, sizeof(bios_names.us)); bios_names.us[sizeof(bios_names.us)-1] = 0;\r
} else strcpy(bios_names.us, "NOT FOUND");\r
\r
- if (find_bios(8, &bios)) { // EU\r
+ if (emu_findBios(8, &bios)) { // EU\r
for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
strncpy(bios_names.eu, p, sizeof(bios_names.eu)); bios_names.eu[sizeof(bios_names.eu)-1] = 0;\r
} else strcpy(bios_names.eu, "NOT FOUND");\r
\r
- if (find_bios(1, &bios)) { // JP\r
+ if (emu_findBios(1, &bios)) { // JP\r
for (p = bios+strlen(bios)-1; p > bios && *p != '/'; p--); p++;\r
strncpy(bios_names.jp, p, sizeof(bios_names.jp)); bios_names.jp[sizeof(bios_names.jp)-1] = 0;\r
} else strcpy(bios_names.jp, "NOT FOUND");\r
if (inp & GP2X_START) { // BIOS testers\r
switch (selected_id) {\r
case MA_CDOPT_TESTBIOS_USA:\r
- if (find_bios(4, &bios)) { // test US\r
+ if (emu_findBios(4, &bios)) { // test US\r
strcpy(romFileName, bios);\r
engineState = PGS_ReloadRom;\r
return;\r
}\r
break;\r
case MA_CDOPT_TESTBIOS_EUR:\r
- if (find_bios(8, &bios)) { // test EU\r
+ if (emu_findBios(8, &bios)) { // test EU\r
strcpy(romFileName, bios);\r
engineState = PGS_ReloadRom;\r
return;\r
}\r
break;\r
case MA_CDOPT_TESTBIOS_JAP:\r
- if (find_bios(1, &bios)) { // test JP\r
+ if (emu_findBios(1, &bios)) { // test JP\r
strcpy(romFileName, bios);\r
engineState = PGS_ReloadRom;\r
return;\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
}\r
- scaling_update();\r
}\r
\r
static int menu_loop_options(void)\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
text_out16(tl_x, 20, "PicoDrive v" VERSION " (c) notaz, 2006,2007");\r
y = tl_y;\r
text_out16(tl_x, y, "Credits:");\r
- text_out16(tl_x, (y+=10), "Dave: Cyclone 68000 core,");\r
+ text_out16(tl_x, (y+=10), "fDave: Cyclone 68000 core,");\r
text_out16(tl_x, (y+=10), " base code of PicoDrive");\r
text_out16(tl_x, (y+=10), "Reesy & FluBBa: DrZ80 core");\r
text_out16(tl_x, (y+=10), "MAME devs: YM2612 and SN76496 cores");\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
selfname = romsel_loop(curr_path);\r
if (selfname) {\r
int ret = -1, cd_type;\r
- cd_type = emu_cd_check(NULL);\r
+ cd_type = emu_cdCheck(NULL);\r
if (cd_type > 0)\r
ret = Insert_CD(romFileName, cd_type == 2);\r
if (ret != 0) {\r