}\r
\r
static const char * const biosfiles_us[] = {\r
- "us_scd1_9210", "us_scd2_9306", "SegaCDBIOS9303", "bios_CD_U"\r
+ "us_scd2_9306", "SegaCDBIOS9303", "us_scd1_9210", "bios_CD_U"\r
};\r
static const char * const biosfiles_eu[] = {\r
- "eu_mcd1_9210", "eu_mcd2_9306", "eu_mcd2_9303", "bios_CD_E"\r
+ "eu_mcd2_9306", "eu_mcd2_9303", "eu_mcd1_9210", "bios_CD_E"\r
};\r
static const char * const biosfiles_jp[] = {\r
- "jp_mcd1_9112", "jp_mcd1_9111", "bios_CD_J"\r
+ "jp_mcd2_921222", "jp_mcd1_9112", "jp_mcd1_9111", "bios_CD_J"\r
};\r
\r
static const char *find_bios(int *region, const char *cd_fname)\r
#endif\r
} else if (PicoAHW & PAHW_PICO) {\r
sys_name = "Pico";\r
+ } else if ((PicoAHW & (PAHW_32X|PAHW_MCD)) == (PAHW_32X|PAHW_MCD)) {\r
+ sys_name = "32X + Mega CD";\r
+ if ((Pico.m.hardware & 0xc0) == 0x80)\r
+ sys_name = "32X + Sega CD";\r
} else if (PicoAHW & PAHW_MCD) {\r
sys_name = "Mega CD";\r
if ((Pico.m.hardware & 0xc0) == 0x80)\r
\r
int emu_reload_rom(const char *rom_fname_in)\r
{\r
+ // use setting before rom config is loaded\r
+ int autoload = g_autostateld_opt;\r
char *rom_fname = NULL;\r
char ext[5];\r
enum media_type_e media_type;\r
if (currentConfig.EmuOpt & EOPT_EN_SRAM)\r
emu_save_load_game(1, 1);\r
\r
+ // state autoload?\r
+ if (autoload) {\r
+ int time, newest = 0, newest_slot = -1;\r
+ int slot;\r
+\r
+ for (slot = 0; slot < 10; slot++) {\r
+ if (emu_check_save_file(slot, &time)) {\r
+ if (time > newest) {\r
+ newest = time;\r
+ newest_slot = slot;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (newest_slot >= 0) {\r
+ lprintf("autoload slot %d\n", newest_slot);\r
+ state_slot = newest_slot;\r
+ emu_save_load_game(1, 0);\r
+ }\r
+ else {\r
+ lprintf("no save to autoload.\n");\r
+ }\r
+ }\r
+\r
retval = 1;\r
out:\r
if (menu_romload_started)\r
\r
int emu_swap_cd(const char *fname)\r
{\r
- cd_img_type cd_type;\r
+ enum cd_img_type cd_type;\r
int ret = -1;\r
\r
cd_type = PicoCdCheck(fname, NULL);\r
if (cd_type != CIT_NOT_CD)\r
- ret = Insert_CD(fname, cd_type);\r
+ ret = cdd_load(fname, cd_type);\r
if (ret != 0) {\r
menu_update_msg("Load failed, invalid CD image?");\r
return 0;\r
}\r
\r
strncpy(rom_fname_loaded, fname, sizeof(rom_fname_loaded)-1);\r
- rom_fname_loaded[sizeof(rom_fname_loaded)-1] = 0;\r
+ rom_fname_loaded[sizeof(rom_fname_loaded) - 1] = 0;\r
+\r
return 1;\r
}\r
\r
defaultConfig.EmuOpt = 0x9d | EOPT_EN_CD_LEDS;\r
defaultConfig.s_PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80 |\r
POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_MCD_GFX |\r
- POPT_EN_SVP_DRC|POPT_ACC_SPRITES |\r
+ POPT_EN_DRC|POPT_ACC_SPRITES |\r
POPT_EN_32X|POPT_EN_PWM;\r
defaultConfig.s_PsndRate = 44100;\r
defaultConfig.s_PicoRegion = 0; // auto\r
PsndRate = currentConfig.s_PsndRate;\r
PicoRegionOverride = currentConfig.s_PicoRegion;\r
PicoAutoRgnOrder = currentConfig.s_PicoAutoRgnOrder;\r
- PicoCDBuffers = currentConfig.s_PicoCDBuffers;\r
}\r
\r
int emu_read_config(const char *rom_fname, int no_defaults)\r
}\r
}\r
\r
-static int try_ropen_file(const char *fname)\r
+static int try_ropen_file(const char *fname, int *time)\r
{\r
+ struct stat st;\r
FILE *f;\r
\r
f = fopen(fname, "rb");\r
if (f) {\r
+ if (time != NULL) {\r
+ *time = 0;\r
+ if (fstat(fileno(f), &st) == 0)\r
+ *time = (int)st.st_mtime;\r
+ }\r
fclose(f);\r
return 1;\r
}\r
return 0;\r
}\r
\r
-char *emu_get_save_fname(int load, int is_sram, int slot)\r
+char *emu_get_save_fname(int load, int is_sram, int slot, int *time)\r
{\r
char *saveFname = static_buff;\r
char ext[16];\r
if (!load)\r
return saveFname;\r
\r
- if (try_ropen_file(saveFname))\r
+ if (try_ropen_file(saveFname, time))\r
return saveFname;\r
\r
romfname_ext(saveFname, sizeof(static_buff), NULL, ext);\r
- if (try_ropen_file(saveFname))\r
+ if (try_ropen_file(saveFname, time))\r
return saveFname;\r
}\r
else\r
}\r
else {\r
romfname_ext(saveFname, sizeof(static_buff), "mds" PATH_SEP, ext);\r
- if (try_ropen_file(saveFname))\r
+ if (try_ropen_file(saveFname, time))\r
return saveFname;\r
\r
romfname_ext(saveFname, sizeof(static_buff), NULL, ext);\r
- if (try_ropen_file(saveFname))\r
+ if (try_ropen_file(saveFname, time))\r
return saveFname;\r
\r
// try the other ext\r
strcat(ext, ext_othr);\r
\r
romfname_ext(saveFname, sizeof(static_buff), "mds"PATH_SEP, ext);\r
- if (try_ropen_file(saveFname))\r
+ if (try_ropen_file(saveFname, time))\r
return saveFname;\r
}\r
}\r
\r
int emu_check_save_file(int slot, int *time)\r
{\r
- return emu_get_save_fname(1, 0, slot) ? 1 : 0;\r
+ return emu_get_save_fname(1, 0, slot, time) ? 1 : 0;\r
}\r
\r
int emu_save_load_game(int load, int sram)\r
char *saveFname;\r
\r
// make save filename\r
- saveFname = emu_get_save_fname(load, sram, state_slot);\r
+ saveFname = emu_get_save_fname(load, sram, state_slot, NULL);\r
if (saveFname == NULL) {\r
if (!sram)\r
emu_status_msg(load ? "LOAD FAILED (missing file)" : "SAVE FAILED");\r
filter_old = currentConfig.filter;\r
}\r
\r
-printf("-- gamma %d\n", currentConfig.gamma);\r
plat_target_gamma_set(currentConfig.gamma, 0);\r
\r
pemu_loop_prep();\r
\r
PicoLoopPrepare();\r
\r
- // prepare CD buffer\r
- if (PicoAHW & PAHW_MCD)\r
- PicoCDBufferInit();\r
-\r
plat_video_loop_prepare();\r
emu_loop_prep();\r
pemu_sound_start();\r
\r
pemu_loop_end();\r
emu_sound_stop();\r
-\r
- // pemu_loop_end() might want to do 1 frame for bg image,\r
- // so free CD buffer here\r
- if (PicoAHW & PAHW_MCD)\r
- PicoCDBufferFree();\r
}\r
-\r