X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Fmenu.c;h=901c72d510476ad8e47204d33ea0ffc4b2a66ec4;hb=fed9fd6f2cba07f2db3715d7f35f911a7b582517;hp=f1c786270a5bde65171c1b651685180817668ed7;hpb=6777e331551ed0cc90f4aa809bbd0fee23fcf1a6;p=pcsx_rearmed.git diff --git a/frontend/menu.c b/frontend/menu.c index f1c78627..901c72d5 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -87,6 +87,7 @@ typedef enum MA_OPT_VOUT_MODE, MA_OPT_SCANLINES, MA_OPT_SCANLINE_LEVEL, + MA_OPT_CENTERING, } menu_id; static int last_vout_w, last_vout_h, last_vout_bpp; @@ -110,7 +111,7 @@ int soft_filter; #define DEFAULT_PSX_CLOCK_S "50" #endif -static const char *bioses[24]; +static const char *bioses[32]; static const char *gpu_plugins[16]; static const char *spu_plugins[16]; static const char *memcards[32]; @@ -398,6 +399,7 @@ static const struct { CE_CONFIG_VAL(DisableStalls), CE_CONFIG_VAL(Cpu), CE_CONFIG_VAL(GpuListWalking), + CE_CONFIG_VAL(PreciseExceptions), CE_INTVAL(region), CE_INTVAL_V(g_scaler, 3), CE_INTVAL(g_gamma), @@ -449,6 +451,9 @@ static const struct { CE_INTVAL_P(gpu_peopsgl.iVRamSize), CE_INTVAL_P(gpu_peopsgl.iTexGarbageCollection), CE_INTVAL_P(gpu_peopsgl.dwActFixes), + CE_INTVAL_P(screen_centering_type), + CE_INTVAL_P(screen_centering_x), + CE_INTVAL_P(screen_centering_y), CE_INTVAL(spu_config.iUseReverb), CE_INTVAL(spu_config.iXAPitch), CE_INTVAL(spu_config.iUseInterpolation), @@ -1251,6 +1256,7 @@ static const char *men_soft_filter[] = { "None", #endif NULL }; static const char *men_dummy[] = { NULL }; +static const char *men_centering[] = { "Auto", "Ingame", "Force", NULL }; static const char h_scaler[] = "int. 2x - scales w. or h. 2x if it fits on screen\n" "int. 4:3 - uses integer if possible, else fractional"; static const char h_cscaler[] = "Displays the scaler layer, you can resize it\n" @@ -1315,6 +1321,7 @@ static int menu_loop_cscaler(int id, int keys) static menu_entry e_menu_gfx_options[] = { + mee_enum ("Screen centering", MA_OPT_CENTERING, pl_rearmed_cbs.screen_centering_type, men_centering), mee_enum_h ("Scaler", MA_OPT_VARSCALER, g_scaler, men_scaler, h_scaler), mee_enum ("Video output mode", MA_OPT_VOUT_MODE, plat_target.vout_method, men_dummy), mee_onoff ("Software Scaling", MA_OPT_SCALER2, soft_scaling, 1), @@ -1594,12 +1601,14 @@ static const char h_cfg_nodrc[] = "Disable dynamic recompiler and use interpret #endif static const char h_cfg_shacks[] = "Breaks games but may give better performance"; static const char h_cfg_icache[] = "Support F1 games (only when dynarec is off)"; -static const char h_cfg_gpul[] = "Try enabling this if the game is missing some graphics\n" +static const char h_cfg_exc[] = "Emulate some PSX's debug hw like breakpoints\n" + "and exceptions (slow, interpreter only, keep off)"; +static const char h_cfg_gpul[] = "Try enabling this if the game misses some graphics\n" "causes a performance hit"; static const char h_cfg_psxclk[] = "Over/under-clock the PSX, default is " DEFAULT_PSX_CLOCK_S "\n" "(adjust this if the game is too slow/too fast/hangs)"; -enum { AMO_XA, AMO_CDDA, AMO_IC, AMO_CPU, AMO_GPUL }; +enum { AMO_XA, AMO_CDDA, AMO_IC, AMO_BP, AMO_CPU, AMO_GPUL }; static menu_entry e_menu_adv_options[] = { @@ -1609,6 +1618,7 @@ static menu_entry e_menu_adv_options[] = mee_onoff_h ("Disable XA Decoding", 0, menu_iopts[AMO_XA], 1, h_cfg_xa), mee_onoff_h ("Disable CD Audio", 0, menu_iopts[AMO_CDDA], 1, h_cfg_cdda), mee_onoff_h ("ICache emulation", 0, menu_iopts[AMO_IC], 1, h_cfg_icache), + mee_onoff_h ("BP exception emulation", 0, menu_iopts[AMO_BP], 1, h_cfg_exc), mee_enum_h ("GPU l-list slow walking",0, menu_iopts[AMO_GPUL], men_gpul, h_cfg_gpul), #if !defined(DRC_DISABLE) || defined(LIGHTREC) mee_onoff_h ("Disable dynarec (slow!)",0, menu_iopts[AMO_CPU], 1, h_cfg_nodrc), @@ -1628,6 +1638,7 @@ static int menu_loop_adv_options(int id, int keys) { &Config.Xa, &menu_iopts[AMO_XA] }, { &Config.Cdda, &menu_iopts[AMO_CDDA] }, { &Config.icache_emulation, &menu_iopts[AMO_IC] }, + { &Config.PreciseExceptions, &menu_iopts[AMO_BP] }, { &Config.Cpu, &menu_iopts[AMO_CPU] }, }; int i; @@ -2011,6 +2022,10 @@ static int reset_game(void) ClosePlugins(); OpenPlugins(); SysReset(); + if (Config.HLE) { + if (LoadCdrom() == -1) + return -1; + } return 0; } @@ -2435,7 +2450,8 @@ static void scan_bios_plugins(void) continue; snprintf(fname, sizeof(fname), "%s/%s", Config.BiosDir, ent->d_name); - if (stat(fname, &st) != 0 || st.st_size != 512*1024) { + if (stat(fname, &st) != 0 + || (st.st_size != 512*1024 && st.st_size != 4*1024*1024)) { printf("bad BIOS file: %s\n", ent->d_name); continue; } @@ -2572,7 +2588,7 @@ void menu_init(void) i = plat_target.cpu_clock_set != NULL && plat_target.cpu_clock_get != NULL && cpu_clock_st > 0; - me_enable(e_menu_gfx_options, MA_OPT_CPU_CLOCKS, i); + me_enable(e_menu_options, MA_OPT_CPU_CLOCKS, i); i = me_id2offset(e_menu_gfx_options, MA_OPT_VOUT_MODE); e_menu_gfx_options[i].data = plat_target.vout_methods;