aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authornotaz2011-02-08 18:21:17 +0200
committernotaz2011-02-10 02:07:54 +0200
commit1df403c52368a3930b67dedabf8c0e1d522f1cc3 (patch)
tree2c5b522c3626332d287704a3a1800aa9f923d809 /frontend
parentcdb31c9557f464b452ce6dc78b58b7e73cd423d8 (diff)
downloadpcsx_rearmed-1df403c52368a3930b67dedabf8c0e1d522f1cc3.tar.gz
pcsx_rearmed-1df403c52368a3930b67dedabf8c0e1d522f1cc3.tar.bz2
pcsx_rearmed-1df403c52368a3930b67dedabf8c0e1d522f1cc3.zip
add cd swap functionality
Diffstat (limited to 'frontend')
-rw-r--r--frontend/menu.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/frontend/menu.c b/frontend/menu.c
index 7762905..20d334c 100644
--- a/frontend/menu.c
+++ b/frontend/menu.c
@@ -22,6 +22,7 @@
#include "omap.h"
#include "common/plat.h"
#include "../libpcsxcore/misc.h"
+#include "../libpcsxcore/cdrom.h"
#include "../libpcsxcore/psemu_plugin_defs.h"
#include "revision.h"
@@ -36,6 +37,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,
@@ -1335,6 +1337,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)
@@ -1359,6 +1391,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;
@@ -1387,6 +1423,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),
@@ -1409,6 +1446,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);