frontend: get rid of plat_rescan_inputs
[pcsx_rearmed.git] / frontend / menu.c
index 2a0de56..53f296a 100644 (file)
@@ -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,
@@ -79,7 +81,8 @@ static char last_selected_fname[MAXPATHLEN];
 static int warned_about_bios, region, in_type_sel1, in_type_sel2;
 static int psx_clock;
 static int memcard1_sel, memcard2_sel;
-int g_opts, analog_deadzone;
+int g_opts;
+int analog_deadzone; // for Caanoo
 
 #ifdef __ARM_ARCH_7A__
 #define DEFAULT_PSX_CLOCK 57
@@ -168,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;
        }
 
@@ -179,36 +182,18 @@ static void menu_sync_config(void)
 
 static void menu_set_defconfig(void)
 {
+       emu_set_default_config();
+
        g_opts = 0;
        scaling = SCALE_4_3;
        volume_boost = 0;
        frameskip = 0;
-       analog_deadzone = 70;
+       analog_deadzone = 50;
        psx_clock = DEFAULT_PSX_CLOCK;
-       new_dynarec_hacks = 0;
 
        region = 0;
        in_type_sel1 = in_type_sel2 = 0;
        in_evdev_allow_abs_only = 0;
-       Config.Xa = Config.Cdda = Config.Sio =
-       Config.SpuIrq = Config.RCntFix = Config.VSyncWA = 0;
-       Config.CdrReschedule = 0;
-
-       pl_rearmed_cbs.gpu_peops.iUseDither = 0;
-       pl_rearmed_cbs.gpu_peops.dwActFixes = 1<<7;
-       pl_rearmed_cbs.gpu_unai.abe_hack =
-       pl_rearmed_cbs.gpu_unai.no_light =
-       pl_rearmed_cbs.gpu_unai.no_blend = 0;
-
-       iUseReverb = 2;
-       iUseInterpolation = 1;
-       iXAPitch = 0;
-       iSPUIRQWait = 1;
-       iUseTimer = 2;
-#ifndef __ARM_ARCH_7A__ /* XXX */
-       iUseReverb = 0;
-       iUseInterpolation = 0;
-#endif
 
        menu_sync_config();
 }
@@ -477,8 +462,10 @@ fail:
 // rrrr rggg gggb bbbb
 static unsigned short fname2color(const char *fname)
 {
-       static const char *cdimg_exts[] = { ".bin", ".img", ".mdf", ".iso", ".cue", ".z", ".bz", ".znx", ".pbp" };
-       static const char *other_exts[] = { ".ccd", ".toc", ".mds", ".sub", ".table", ".index", ".sbi" };
+       static const char *cdimg_exts[] = { ".bin", ".img", ".mdf", ".iso", ".cue", ".z",
+                                           ".bz", ".znx", ".pbp", ".cbn" };
+       static const char *other_exts[] = { ".ccd", ".toc", ".mds", ".sub",
+                                           ".table", ".index", ".sbi" };
        const char *ext = strrchr(fname, '.');
        int i;
 
@@ -740,6 +727,10 @@ me_bind_action emuctrl_actions[] =
        { "Gun A button     ", 1 << SACTION_GUN_A },
        { "Gun B button     ", 1 << SACTION_GUN_B },
        { "Gun Offscreen Trigger", 1 << SACTION_GUN_TRIGGER2 },
+#ifndef __ARM_ARCH_7A__ /* XXX */
+       { "Volume Up        ", 1 << SACTION_VOLUME_UP },
+       { "Volume Down      ", 1 << SACTION_VOLUME_DOWN },
+#endif
        { NULL,                0 }
 };
 
@@ -817,7 +808,7 @@ static void keys_write_all(FILE *f)
                        }
 
                        kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_EMU)];
-                       for (i = 0; kbinds && i < ARRAY_SIZE(emuctrl_actions) - 1; i++) {
+                       for (i = 0; kbinds && emuctrl_actions[i].name != NULL; i++) {
                                mask = emuctrl_actions[i].mask;
                                if (mask & kbinds) {
                                        strncpy(act, emuctrl_actions[i].name, 31);
@@ -969,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;
@@ -1206,7 +1197,7 @@ static int menu_loop_plugin_options(int id, int keys)
 // ------------ adv options menu ------------
 
 static const char h_cfg_psxclk[]  = "Over/under-clock the PSX, default is " DEFAULT_PSX_CLOCK_S "\n";
-static const char h_cfg_nosmc[]   = "Will cause crashes when loading";
+static const char h_cfg_nosmc[]   = "Will cause crashes when loading, break memcards";
 static const char h_cfg_gteunn[]  = "May cause graphical glitches";
 static const char h_cfg_gteflgs[] = "Will cause graphical glitches";
 
@@ -1588,6 +1579,7 @@ static int reload_plugins(const char *cdimg)
        }
        plugin_call_rearmed_cbs();
 
+       cdrIsoMultidiskCount = 1;
        CdromId[0] = '\0';
        CdromLabel[0] = '\0';
 
@@ -1656,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;
 }
 
@@ -1688,6 +1682,9 @@ static int romsel_run(void)
                        return -1;
        }
 
+       if (Config.HLE)
+               printf("note: running without BIOS, expect compatibility problems\n");
+
        strcpy(last_selected_fname, rom_fname_reload);
        return 0;
 }
@@ -1722,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)
@@ -1750,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;
@@ -1775,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,
 };
@@ -1787,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);