X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmenu.c;h=f0fd17c4c7b12dccb6bc8f43dcbea6afafca9039;hp=7babfabf3db09ecfc87e6c937550e16508f4b61b;hb=d81b8e972678928ffece2d38213de8048f5e872d;hpb=6645608833266df41ce8e07eacc3b18b77fe9e0e diff --git a/frontend/menu.c b/frontend/menu.c index 7babfabf..f0fd17c4 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -78,22 +78,14 @@ typedef enum MA_OPT_SCALER_C, } menu_id; -enum { - SCALE_1_1, - SCALE_4_3, - SCALE_4_3v2, - SCALE_FULLSCREEN, - SCALE_CUSTOM, -}; - static int last_vout_w, last_vout_h, last_vout_bpp; -static int scaling, cpu_clock, cpu_clock_st, volume_boost, frameskip; +static int 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; +int g_opts, g_scaler; int soft_scaling, analog_deadzone; // for Caanoo int filter; @@ -216,7 +208,7 @@ static void menu_set_defconfig(void) emu_set_default_config(); g_opts = 0; - scaling = SCALE_4_3; + g_scaler = SCALE_4_3; volume_boost = 0; frameskip = 0; analog_deadzone = 50; @@ -276,7 +268,7 @@ static const struct { CE_CONFIG_VAL(Cpu), CE_CONFIG_VAL(CdrReschedule), CE_INTVAL(region), - CE_INTVAL_V(scaling, 2), + CE_INTVAL_V(g_scaler, 2), CE_INTVAL(g_layer_x), CE_INTVAL(g_layer_y), CE_INTVAL(g_layer_w), @@ -296,6 +288,8 @@ static const struct { CE_INTVAL_P(gpu_unai.no_light), CE_INTVAL_P(gpu_unai.no_blend), CE_INTVAL_P(gpu_neon.allow_interlace), + CE_INTVAL_P(gpu_neon.enhancement_enable), + CE_INTVAL_P(gpu_neon.enhancement_no_main), CE_INTVAL_P(gpu_peopsgl.bDrawDither), CE_INTVAL_P(gpu_peopsgl.iFilterType), CE_INTVAL_P(gpu_peopsgl.iFrameTexType), @@ -372,7 +366,7 @@ static int menu_write_config(int is_game) break; default: printf("menu_write_config: unhandled len %d for %s\n", - config_data[i].len, config_data[i].name); + (int)config_data[i].len, config_data[i].name); break; } } @@ -487,7 +481,7 @@ static int menu_load_config(int is_game) break; default: printf("menu_load_config: unhandled len %d for %s\n", - config_data[i].len, config_data[i].name); + (int)config_data[i].len, config_data[i].name); break; } } @@ -669,6 +663,7 @@ me_bind_action emuctrl_actions[] = { "Next Save Slot ", 1 << SACTION_NEXT_SSLOT }, { "Toggle Frameskip ", 1 << SACTION_TOGGLE_FSKIP }, { "Take Screenshot ", 1 << SACTION_SCREENSHOT }, + { "Toggle Renderer ", 1 << SACTION_TOGGLE_RENDERER }, { "Enter Menu ", 1 << SACTION_ENTER_MENU }, #ifdef __ARM_ARCH_7A__ /* XXX */ { "Minimize ", 1 << SACTION_MINIMIZE }, @@ -1045,7 +1040,7 @@ static int menu_loop_cscaler(int id, int keys) { unsigned int inp; - scaling = SCALE_CUSTOM; + g_scaler = SCALE_CUSTOM; plat_gvideo_open(Config.PsxType); @@ -1095,7 +1090,7 @@ static int menu_loop_cscaler(int id, int keys) static menu_entry e_menu_gfx_options[] = { - mee_enum ("Scaler", MA_OPT_SCALER, scaling, men_scaler), + mee_enum ("Scaler", MA_OPT_SCALER, g_scaler, men_scaler), mee_onoff ("Software Scaling", MA_OPT_SCALER2, soft_scaling, 1), mee_enum ("Filter", MA_OPT_FILTERING, filter, men_dummy), // mee_onoff ("Vsync", 0, vsync, 1), @@ -1127,17 +1122,21 @@ void menu_set_filter_list(void *filters) #ifdef __ARM_NEON__ static const char h_gpu_neon[] = "Configure built-in NEON GPU plugin"; +static const char h_gpu_neon_enhanced[] = "Renders in double resolution at the cost of lower performance"; +static const char h_gpu_neon_enhanced_hack[] = "Speed hack for above option (glitches some games)"; static const char *men_gpu_interlace[] = { "Off", "On", "Auto", NULL }; static menu_entry e_menu_plugin_gpu_neon[] = { mee_enum ("Enable interlace mode", 0, pl_rearmed_cbs.gpu_neon.allow_interlace, men_gpu_interlace), + mee_onoff_h ("Enhanced resolution (slow)", 0, pl_rearmed_cbs.gpu_neon.enhancement_enable, 1, h_gpu_neon_enhanced), + mee_onoff_h ("Enhanced res. speed hack", 0, pl_rearmed_cbs.gpu_neon.enhancement_no_main, 1, h_gpu_neon_enhanced_hack), mee_end, }; static int menu_loop_plugin_gpu_neon(int id, int keys) { - int sel = 0; + static int sel = 0; me_loop(e_menu_plugin_gpu_neon, &sel); return 0; } @@ -2266,58 +2265,9 @@ void menu_init(void) void menu_notify_mode_change(int w, int h, int bpp) { - float mult; - int imult; - last_vout_w = w; last_vout_h = h; last_vout_bpp = bpp; - - // XXX: should really menu code cotrol the layer size? - switch (scaling) { - case SCALE_1_1: - g_layer_w = w; g_layer_h = h; - 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; - g_layer_h = h * imult; - mult = (float)g_layer_w / (float)g_layer_h; - if (mult < 1.25f || mult > 1.666f) - g_layer_w = 4.0f/3.0f * (float)g_layer_h; - 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; - break; - - default: - break; - } - - g_layer_x = g_menuscreen_w / 2 - g_layer_w / 2; - g_layer_y = g_menuscreen_h / 2 - g_layer_h / 2; - if (g_layer_x < 0) g_layer_x = 0; - if (g_layer_y < 0) g_layer_y = 0; - if (g_layer_w > g_menuscreen_w) g_layer_w = g_menuscreen_w; - if (g_layer_h > g_menuscreen_h) g_layer_w = g_menuscreen_h; } static void menu_leave_emu(void) @@ -2361,8 +2311,6 @@ void menu_prepare_emu(void) plat_video_menu_leave(); - menu_notify_mode_change(last_vout_w, last_vout_h, last_vout_bpp); - psxCpu = (Config.Cpu == CPU_INTERPRETER) ? &psxInt : &psxRec; if (psxCpu != prev_cpu) // note that this does not really reset, just clears drc caches