frontend: Wiz/Caanoo tweaks + banner image from darklight1138
[pcsx_rearmed.git] / frontend / menu.c
index 5d40d96..cfdc62d 100644 (file)
@@ -79,7 +79,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
@@ -179,35 +180,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;
 
        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();
 }
@@ -282,6 +266,7 @@ static const struct {
        CE_INTVAL(in_evdev_allow_abs_only),
        CE_INTVAL(volume_boost),
        CE_INTVAL(psx_clock),
+       CE_INTVAL(new_dynarec_hacks),
 };
 
 static char *get_cd_label(void)
@@ -475,8 +460,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;
 
@@ -738,6 +725,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 }
 };
 
@@ -815,7 +806,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);
@@ -1203,6 +1194,27 @@ 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, break memcards";
+static const char h_cfg_gteunn[]  = "May cause graphical glitches";
+static const char h_cfg_gteflgs[] = "Will cause graphical glitches";
+
+static menu_entry e_menu_speed_hacks[] =
+{
+       mee_range_h   ("PSX CPU clock, %%",        0, psx_clock, 1, 500, h_cfg_psxclk),
+       mee_onoff_h   ("Disable SMC checks",       0, new_dynarec_hacks, NDHACK_NO_SMC_CHECK, h_cfg_nosmc),
+       mee_onoff_h   ("Assume GTE regs unneeded", 0, new_dynarec_hacks, NDHACK_GTE_UNNEEDED, h_cfg_gteunn),
+       mee_onoff_h   ("Disable GTE flags",        0, new_dynarec_hacks, NDHACK_GTE_NO_FLAGS, h_cfg_gteflgs),
+       mee_end,
+};
+
+static int menu_loop_speed_hacks(int id, int keys)
+{
+       static int sel = 0;
+       me_loop(e_menu_speed_hacks, &sel);
+       return 0;
+}
+
 static const char *men_cfg_cdrr[] = { "Auto", "ON", "OFF", NULL };
 static const char h_cfg_cpul[]   = "Shows CPU usage in %";
 static const char h_cfg_spu[]    = "Shows active SPU channels\n"
@@ -1217,12 +1229,11 @@ static const char h_cfg_rcnt1[]  = "Parasite Eve 2, Vandal Hearts 1/2 Fix\n"
                                   "(timing hack, breaks other games)";
 static const char h_cfg_rcnt2[]  = "InuYasha Sengoku Battle Fix\n"
                                   "(timing hack, breaks other games)";
-static const char h_cfg_cdrr[]   = "Compatibility tweak (fixes Team Buddies, maybe more)\n"
-                                  "(CD timing hack, breaks FMVs)";
-static const char h_cfg_psxclk[] = "Over/under-clock the PSX, default is " DEFAULT_PSX_CLOCK_S "\n"
-                                  "(may break games, must reload game to take effect)";
+static const char h_cfg_cdrr[]   = "Compatibility tweak (CD timing hack, breaks FMVs)";
 static const char h_cfg_nodrc[]  = "Disable dynamic recompiler and use interpreter\n"
                                   "Might be useful to overcome some dynarec bugs";
+static const char h_cfg_shacks[] = "Breaks games but may give better performance\n"
+                                  "must reload game for any change to take effect";
 
 static menu_entry e_menu_adv_options[] =
 {
@@ -1236,8 +1247,8 @@ static menu_entry e_menu_adv_options[] =
        //mee_onoff_h   ("Rootcounter hack",       0, Config.RCntFix, 1, h_cfg_rcnt1),
        mee_onoff_h   ("Rootcounter hack 2",     0, Config.VSyncWA, 1, h_cfg_rcnt2),
        mee_enum_h    ("CD read reschedule hack",0, Config.CdrReschedule, men_cfg_cdrr, h_cfg_cdrr),
-       mee_range_h   ("PSX CPU clock, %%",      0, psx_clock, 1, 500, h_cfg_psxclk),
        mee_onoff_h   ("Disable dynarec (slow!)",0, Config.Cpu, 1, h_cfg_nodrc),
+       mee_handler_h ("[Speed hacks]",             menu_loop_speed_hacks, h_cfg_shacks),
        mee_end,
 };
 
@@ -1666,6 +1677,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;
 }