X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmenu.c;h=53f296a24565fb57166f25acac52bc9ae0297828;hp=cfdc62d8e1ba8eac99dd1cf5776b04a194392de2;hb=956f312925948e46da9c3596efadc4babc666a4d;hpb=221be40d20d1fc4e1c597b087ea54130b80739f1 diff --git a/frontend/menu.c b/frontend/menu.c index cfdc62d8..53f296a2 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -28,6 +28,7 @@ #include "linux/in_evdev.h" #include "../libpcsxcore/misc.h" #include "../libpcsxcore/cdrom.h" +#include "../libpcsxcore/cdriso.h" #include "../libpcsxcore/psemu_plugin_defs.h" #include "../libpcsxcore/new_dynarec/new_dynarec.h" #include "../plugins/dfinput/main.h" @@ -44,6 +45,7 @@ typedef enum MA_MAIN_RESET_GAME, MA_MAIN_LOAD_ROM, MA_MAIN_SWAP_CD, + MA_MAIN_SWAP_CD_MULTI, MA_MAIN_RUN_BIOS, MA_MAIN_RUN_EXE, MA_MAIN_CONTROLS, @@ -169,7 +171,7 @@ static void menu_sync_config(void) default: in_type2 = PSE_PAD_TYPE_STANDARD; } if (in_evdev_allow_abs_only != allow_abs_only_old) { - plat_rescan_inputs(); + in_probe(); allow_abs_only_old = in_evdev_allow_abs_only; } @@ -958,7 +960,7 @@ static int mh_savecfg(int id, int keys) static int mh_input_rescan(int id, int keys) { //menu_sync_config(); - plat_rescan_inputs(); + in_probe(); me_update_msg("rescan complete."); return 0; @@ -1577,6 +1579,7 @@ static int reload_plugins(const char *cdimg) } plugin_call_rearmed_cbs(); + cdrIsoMultidiskCount = 1; CdromId[0] = '\0'; CdromLabel[0] = '\0'; @@ -1645,6 +1648,8 @@ static int run_cd_image(const char *fname) } ready_to_go = 1; + snprintf(hud_msg, sizeof(hud_msg), "Booting up..."); + hud_new_msg = 2; return 0; } @@ -1714,6 +1719,24 @@ static int swap_cd_image(void) return 0; } +static int swap_cd_multidisk(void) +{ + cdrIsoMultidiskSelect++; + CdromId[0] = '\0'; + CdromLabel[0] = '\0'; + + CDR_close(); + if (CDR_open() < 0) { + me_update_msg("failed to open cdr plugin"); + return -1; + } + + SetCdOpenCaseTime(time(NULL) + 2); + LidInterrupt(); + + return 0; +} + static int main_menu_handler(int id, int keys) { switch (id) @@ -1742,6 +1765,10 @@ static int main_menu_handler(int id, int keys) if (swap_cd_image() == 0) return 1; break; + case MA_MAIN_SWAP_CD_MULTI: + if (swap_cd_multidisk() == 0) + return 1; + break; case MA_MAIN_RUN_BIOS: if (run_bios() == 0) return 1; @@ -1767,9 +1794,10 @@ static int main_menu_handler(int id, int keys) static menu_entry e_menu_main2[] = { - 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_id("Run EXE", MA_MAIN_RUN_EXE, main_menu_handler), + mee_handler_id("Change CD image", MA_MAIN_SWAP_CD, main_menu_handler), + mee_handler_id("Next multidisk CD", MA_MAIN_SWAP_CD_MULTI, main_menu_handler), + mee_handler_id("Run BIOS", MA_MAIN_RUN_BIOS, main_menu_handler), + mee_handler_id("Run EXE", MA_MAIN_RUN_EXE, main_menu_handler), mee_handler ("Memcard manager", menu_loop_memcards), mee_end, }; @@ -1779,6 +1807,7 @@ static int main_menu2_handler(int id, int keys) static int sel = 0; me_enable(e_menu_main2, MA_MAIN_SWAP_CD, ready_to_go); + me_enable(e_menu_main2, MA_MAIN_SWAP_CD_MULTI, ready_to_go && cdrIsoMultidiskCount > 1); me_enable(e_menu_main2, MA_MAIN_RUN_BIOS, bios_sel != 0); return me_loop_d(e_menu_main2, &sel, NULL, draw_frame_main);