\r
#include <pico/pico_int.h>\r
#include <pico/patch.h>\r
-#include <zlib/zlib.h>\r
\r
#define array_size(x) (sizeof(x) / sizeof(x[0]))\r
\r
struct PicoVideo tmp_pv;\r
unsigned short tmp_cram[0x40];\r
unsigned short tmp_vsram[0x40];\r
- void *tmp_vram, *file;\r
+ void *tmp_vram;\r
char *fname;\r
\r
fname = emu_get_save_fname(1, 0, slot);\r
memcpy(tmp_vsram, Pico.vsram, sizeof(Pico.vsram));\r
memcpy(&tmp_pv, &Pico.video, sizeof(Pico.video));\r
\r
- if (strcmp(fname + strlen(fname) - 3, ".gz") == 0) {\r
- file = gzopen(fname, "rb");\r
- emu_setSaveStateCbs(1);\r
- } else {\r
- file = fopen(fname, "rb");\r
- emu_setSaveStateCbs(0);\r
- }\r
-\r
- if (file) {\r
- if (PicoAHW & PAHW_MCD) {\r
- PicoCdLoadStateGfx(file);\r
- } else {\r
- areaSeek(file, 0x10020, SEEK_SET); // skip header and RAM in state file\r
- areaRead(Pico.vram, 1, sizeof(Pico.vram), file);\r
- areaSeek(file, 0x2000, SEEK_CUR);\r
- areaRead(Pico.cram, 1, sizeof(Pico.cram), file);\r
- areaRead(Pico.vsram, 1, sizeof(Pico.vsram), file);\r
- areaSeek(file, 0x221a0, SEEK_SET);\r
- areaRead(&Pico.video, 1, sizeof(Pico.video), file);\r
- }\r
- areaClose(file);\r
- }\r
+ PicoStateLoadVDP(fname);\r
\r
/* do a frame and fetch menu bg */\r
pemu_forced_frame(POPT_EN_SOFTSCALE);\r
\r
static menu_entry e_menu_cd_options[] =\r
{\r
- mee_onoff("CD LEDs", MA_CDOPT_LEDS, currentConfig.EmuOpt, 0x0400),\r
+ mee_onoff("CD LEDs", MA_CDOPT_LEDS, currentConfig.EmuOpt, EOPT_EN_CD_LEDS),\r
mee_onoff("CDDA audio", MA_CDOPT_CDDA, PicoOpt, POPT_EN_MCD_CDDA),\r
mee_onoff("PCM audio", MA_CDOPT_PCM, PicoOpt, POPT_EN_MCD_PCM),\r
mee_cust ("ReadAhead buffer", MA_CDOPT_READAHEAD, mh_cdopt_ra, mgn_cdopt_ra),\r
mee_cust ("Confirm savestate", MA_OPT_CONFIRM_STATES,mh_opt_misc, mgn_opt_c_saves),\r
mee_range (cpu_clk_name, MA_OPT_CPU_CLOCKS, currentConfig.CPUclock, 20, 900),\r
mee_handler ("[Display options]", menu_loop_gfx_options),\r
- mee_handler ("[Advanced options]", menu_loop_adv_options),\r
mee_handler ("[Sega/Mega CD options]", menu_loop_cd_options),\r
+ mee_handler ("[Advanced options]", menu_loop_adv_options),\r
mee_handler_mkname_id(MA_OPT_SAVECFG, mh_saveloadcfg, mgn_savecfg),\r
mee_handler_id("Save cfg for current game only", MA_OPT_SAVECFG_GAME, mh_saveloadcfg),\r
mee_handler_mkname_id(MA_OPT_LOADCFG, mh_saveloadcfg, mgn_loadcfg),\r
\r
static int mh_tray_load_cd(menu_id id, int keys)\r
{\r
- cd_img_type cd_type;\r
char *ret_name;\r
- int ret = -1;\r
\r
ret_name = romsel_run();\r
if (ret_name == NULL)\r
return 0;\r
\r
- cd_type = emu_cd_check(NULL, ret_name);\r
- if (cd_type != CIT_NOT_CD)\r
- ret = Insert_CD(ret_name, cd_type);\r
- if (ret != 0) {\r
- me_update_msg("Load failed, invalid CD image?");\r
- return 0;\r
- }\r
-\r
engineState = PGS_RestartRun;\r
- return 1;\r
+ return emu_swap_cd(ret_name);\r
}\r
\r
static int mh_tray_nothing(menu_id id, int keys)\r
\r
static menu_entry e_menu_tray[] =\r
{\r
- mee_label ("The unit is about to"),\r
- mee_label ("close the CD tray."),\r
+ mee_label ("The CD tray has opened."),\r
mee_label (""),\r
mee_label (""),\r
mee_handler("Load CD image", mh_tray_load_cd),\r
mee_handler("Insert nothing", mh_tray_nothing),\r
+ mee_end,\r
};\r
\r
int menu_loop_tray(void)\r
\r
if (!is_wiz) {\r
me_enable(e_menu_gfx_options, MA_OPT_TEARING_FIX, 0);\r
+ i = me_id2offset(e_menu_gfx_options, MA_OPT_TEARING_FIX);\r
+ e_menu_gfx_options[i].need_to_save = 0;\r
return;\r
}\r
\r
\r
i = me_id2offset(e_menu_gfx_options, MA_OPT_SCALING);\r
e_menu_gfx_options[i].max = 1; /* only off and sw */\r
+ i = me_id2offset(e_menu_gfx_options, MA_OPT_ARM940_SOUND);\r
+ e_menu_gfx_options[i].need_to_save = 0;\r
}\r
\r
/* TODO: rename */\r