X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmenu.c;h=24080b9833f34f44014e5c78d406bc3068f989b0;hp=ce65ccf45a19c9c25548573455d223ced70e2696;hb=cbd45cda748f1aaf46ecb665a9d10177da688e88;hpb=41f55c9fb3e682e2c424e98ec70ab6aad226f85d diff --git a/frontend/menu.c b/frontend/menu.c index ce65ccf4..24080b98 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -77,9 +77,18 @@ static int scaling, filter, cpu_clock, cpu_clock_st, volume_boost, frameskip; static char rom_fname_reload[MAXPATHLEN]; 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; +#ifdef __ARM_ARCH_7A__ +#define DEFAULT_PSX_CLOCK 57 +#define DEFAULT_PSX_CLOCK_S "57" +#else +#define DEFAULT_PSX_CLOCK 50 +#define DEFAULT_PSX_CLOCK_S "50" +#endif + // sound plugin extern int iUseReverb; extern int iUseInterpolation; @@ -146,6 +155,8 @@ static void menu_sync_config(void) Config.PsxAuto = 0; Config.PsxType = region - 1; } + cycle_multiplier = 10000 / psx_clock; + switch (in_type_sel1) { case 1: in_type1 = PSE_PAD_TYPE_ANALOGPAD; break; case 2: in_type1 = PSE_PAD_TYPE_GUNCON; break; @@ -173,6 +184,7 @@ static void menu_set_defconfig(void) volume_boost = 0; frameskip = 0; analog_deadzone = 70; + psx_clock = DEFAULT_PSX_CLOCK; region = 0; in_type_sel1 = in_type_sel2 = 0; @@ -192,6 +204,10 @@ static void menu_set_defconfig(void) iXAPitch = 0; iSPUIRQWait = 1; iUseTimer = 2; +#ifndef __ARM_ARCH_7A__ /* XXX */ + iUseReverb = 0; + iUseInterpolation = 0; +#endif menu_sync_config(); } @@ -265,6 +281,7 @@ static const struct { CE_INTVAL(warned_about_bios), CE_INTVAL(in_evdev_allow_abs_only), CE_INTVAL(volume_boost), + CE_INTVAL(psx_clock), }; static char *get_cd_label(void) @@ -361,7 +378,7 @@ static int menu_load_config(int is_game) f = fopen(cfgfile, "r"); if (f == NULL) { printf("menu_load_config: failed to open: %s\n", cfgfile); - return -1; + goto fail; } fseek(f, 0, SEEK_END); @@ -429,6 +446,14 @@ static int menu_load_config(int is_game) } } + keys_load_all(cfg); + ret = 0; +fail_read: + free(cfg); +fail: + if (f != NULL) + fclose(f); + menu_sync_config(); // sync plugins @@ -444,12 +469,6 @@ static int menu_load_config(int is_game) if (strcmp(Config.Spu, spu_plugins[i]) == 0) { spu_plugsel = i; break; } - keys_load_all(cfg); - ret = 0; -fail_read: - free(cfg); -fail: - fclose(f); return ret; } @@ -1200,6 +1219,8 @@ 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_nodrc[] = "Disable dynamic recompiler and use interpreter\n" "Might be useful to overcome some dynarec bugs"; @@ -1215,6 +1236,7 @@ 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_end, }; @@ -1440,14 +1462,22 @@ static void menu_bios_warn(void) { int inp; static const char msg[] = - "You don't seem to have copied any BIOS files to\n" + "You don't seem to have copied any BIOS\n" + "files to\n" +#ifdef __ARM_ARCH_7A__ // XXX "/pandora/appdata/pcsx_rearmed/bios/\n\n" - "While many games work fine with fake (HLE) BIOS,\n" - "others (like MGS and FF8) require BIOS to work.\n" - "After copying the file, you'll also need to\n" - "select it in the emu's options->[BIOS/Plugins]\n\n" - "The file is usually named SCPH1001.BIN, but\n" - "other not compressed files can be used too.\n\n" +#else + "pcsx_rearmed/bios/\n\n" +#endif + "While many games work fine with fake\n" + "(HLE) BIOS, others (like MGS and FF8)\n" + "require BIOS to work.\n" + "After copying the file, you'll also need\n" + "to select it in the emu's menu:\n" + "options->[BIOS/Plugins]\n\n" + "The file is usually named SCPH1001.BIN,\n" + "but other not compressed files can be\n" + "used too.\n\n" "Press (B) or (X) to continue"; while (1) @@ -1989,16 +2019,10 @@ void menu_notify_mode_change(int w, int h, int bpp) g_layer_w = w; g_layer_h = h; break; - case SCALE_4_3: - mult = 240.0f / (float)h * 4.0f / 3.0f; - if (h > 256) - mult *= 2.0f; - g_layer_w = mult * (float)g_menuscreen_h; - g_layer_h = g_menuscreen_h; - printf(" -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult); - break; - case SCALE_4_3v2: + if (h > g_menuscreen_h || (240 < h && h <= 360)) + goto fractional_4_3; + // 4:3 that prefers integer scaling imult = g_menuscreen_h / h; g_layer_w = w * imult; @@ -2009,6 +2033,16 @@ void menu_notify_mode_change(int w, int h, int bpp) printf(" -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult); break; + fractional_4_3: + case SCALE_4_3: + mult = 240.0f / (float)h * 4.0f / 3.0f; + if (h > 256) + mult *= 2.0f; + g_layer_w = mult * (float)g_menuscreen_h; + g_layer_h = g_menuscreen_h; + printf(" -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult); + break; + case SCALE_FULLSCREEN: g_layer_w = g_menuscreen_w; g_layer_h = g_menuscreen_h;