X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmenu.c;h=9ebfa861d0b100331db92ca4e0cb69132b42e645;hp=d5c7d91a567a496bf1b6e86988082687c41d099d;hb=384f5f43a20879e2553acd17b76e82059092fafb;hpb=8f8926485e641efb187ff9ae11cef9d23d1e8982 diff --git a/frontend/menu.c b/frontend/menu.c index d5c7d91a..9ebfa861 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -22,7 +22,9 @@ #include "omap.h" #include "common/plat.h" #include "../libpcsxcore/misc.h" +#include "../libpcsxcore/cdrom.h" #include "../libpcsxcore/psemu_plugin_defs.h" +#include "../plugins/dfinput/pad.h" #include "revision.h" #define MENU_X2 1 @@ -36,6 +38,7 @@ typedef enum MA_MAIN_LOAD_STATE, MA_MAIN_RESET_GAME, MA_MAIN_LOAD_ROM, + MA_MAIN_SWAP_CD, MA_MAIN_RUN_BIOS, MA_MAIN_CONTROLS, MA_MAIN_CREDITS, @@ -159,7 +162,8 @@ static void menu_set_defconfig(void) iUseReverb = 2; iUseInterpolation = 1; - iXAPitch = iSPUIRQWait = 0; + iXAPitch = 0; + iSPUIRQWait = 1; iUseTimer = 2; menu_sync_config(); @@ -177,6 +181,10 @@ static void menu_set_defconfig(void) #define CE_INTVAL(val) \ { #val, sizeof(val), &val } +// 'versioned' var, used when defaults change +#define CE_INTVAL_V(val, ver) \ + { #val #ver, sizeof(val), &val } + static const struct { const char *name; size_t len; @@ -211,9 +219,9 @@ static const struct { CE_INTVAL(UseFrameSkip), CE_INTVAL(dwActFixes), CE_INTVAL(iUseReverb), - CE_INTVAL(iUseInterpolation), CE_INTVAL(iXAPitch), - CE_INTVAL(iSPUIRQWait), + CE_INTVAL_V(iUseInterpolation, 2), + CE_INTVAL_V(iSPUIRQWait, 2), CE_INTVAL(iUseTimer), }; @@ -1026,7 +1034,7 @@ static int menu_loop_plugin_gpu(int id, int keys) static const char *men_spu_reverb[] = { "Off", "Fake", "On", NULL }; static const char *men_spu_interp[] = { "None", "Simple", "Gaussian", "Cubic", NULL }; -static const char h_spu_irq_wait[] = "Wait for CPU; only useful for some games, may cause glitches"; +static const char h_spu_irq_wait[] = "Wait for CPU (recommended set to ON)"; static const char h_spu_thread[] = "Run sound emulation in main thread (recommended)"; static menu_entry e_menu_plugin_spu[] = @@ -1330,6 +1338,36 @@ static int romsel_run(void) return 0; } +static int swap_cd_image(void) +{ + char *fname; + + fname = menu_loop_romsel(last_selected_fname, sizeof(last_selected_fname)); + if (fname == NULL) + return -1; + + printf("selected file: %s\n", fname); + + CdromId[0] = '\0'; + CdromLabel[0] = '\0'; + + set_cd_image(fname); + if (ReloadCdromPlugin() < 0) { + me_update_msg("failed to load cdr plugin"); + return -1; + } + if (CDR_open() < 0) { + me_update_msg("failed to open cdr plugin"); + return -1; + } + + SetCdOpenCaseTime(time(NULL) + 2); + LidInterrupt(); + + strcpy(last_selected_fname, rom_fname_reload); + return 0; +} + static int main_menu_handler(int id, int keys) { switch (id) @@ -1354,6 +1392,10 @@ static int main_menu_handler(int id, int keys) if (romsel_run() == 0) return 1; break; + case MA_MAIN_SWAP_CD: + if (swap_cd_image() == 0) + return 1; + break; case MA_MAIN_RUN_BIOS: if (run_bios() == 0) return 1; @@ -1382,6 +1424,7 @@ static menu_entry e_menu_main[] = mee_handler_id("Load State", MA_MAIN_LOAD_STATE, main_menu_handler), mee_handler_id("Reset game", MA_MAIN_RESET_GAME, main_menu_handler), mee_handler_id("Load CD image", MA_MAIN_LOAD_ROM, main_menu_handler), + mee_handler_id("Change CD image", MA_MAIN_SWAP_CD, main_menu_handler), mee_handler_id("Run BIOS", MA_MAIN_RUN_BIOS, main_menu_handler), mee_handler ("Options", menu_loop_options), mee_handler ("Controls", menu_loop_keyconfig), @@ -1404,6 +1447,7 @@ void menu_loop(void) me_enable(e_menu_main, MA_MAIN_SAVE_STATE, ready_to_go && CdromId[0]); me_enable(e_menu_main, MA_MAIN_LOAD_STATE, ready_to_go && CdromId[0]); me_enable(e_menu_main, MA_MAIN_RESET_GAME, ready_to_go); + me_enable(e_menu_main, MA_MAIN_SWAP_CD, ready_to_go); me_enable(e_menu_main, MA_MAIN_RUN_BIOS, bios_sel != 0); in_set_config_int(0, IN_CFG_BLOCKING, 1); @@ -1627,6 +1671,8 @@ void menu_prepare_emu(void) if (ret) fprintf(stderr, "Warning: GPU_open returned %d\n", ret); } + + dfinput_activate(in_type == PSE_PAD_TYPE_ANALOGPAD); } void me_update_msg(const char *msg)