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;
#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];
CE_CONFIG_VAL(icache_emulation),
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),
CE_INTVAL_N("adev0_is_nublike", in_adev_is_nublike[0]),
CE_INTVAL_N("adev1_is_nublike", in_adev_is_nublike[1]),
CE_INTVAL_V(frameskip, 3),
- CE_INTVAL_P(thread_rendering),
CE_INTVAL_P(gpu_peops.iUseDither),
CE_INTVAL_P(gpu_peops.dwActFixes),
- CE_INTVAL_P(gpu_unai.ilace_force),
- CE_INTVAL_P(gpu_unai.pixel_skip),
- CE_INTVAL_P(gpu_unai.lighting),
- CE_INTVAL_P(gpu_unai.fast_lighting),
- CE_INTVAL_P(gpu_unai.blending),
- CE_INTVAL_P(gpu_unai.dithering),
CE_INTVAL_P(gpu_unai.lineskip),
CE_INTVAL_P(gpu_unai.abe_hack),
CE_INTVAL_P(gpu_unai.no_light),
CE_INTVAL_P(gpu_unai.no_blend),
- CE_INTVAL_P(gpu_unai.scale_hires),
+#if 0
+ CE_INTVAL_P(gpu_senquack.ilace_force),
+ CE_INTVAL_P(gpu_senquack.pixel_skip),
+ CE_INTVAL_P(gpu_senquack.lighting),
+ CE_INTVAL_P(gpu_senquack.fast_lighting),
+ CE_INTVAL_P(gpu_senquack.blending),
+ CE_INTVAL_P(gpu_senquack.dithering),
+ CE_INTVAL_P(gpu_senquack.scale_hires),
+#endif
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.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),
#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"
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),
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 resolution", 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 menu_entry e_menu_plugin_gpu_unai[] =
{
- //mee_onoff ("Skip every 2nd line", 0, pl_rearmed_cbs.gpu_unai.lineskip, 1),
- //mee_onoff ("Abe's Odyssey hack", 0, pl_rearmed_cbs.gpu_unai.abe_hack, 1),
- //mee_onoff ("Disable lighting", 0, pl_rearmed_cbs.gpu_unai.no_light, 1),
- //mee_onoff ("Disable blending", 0, pl_rearmed_cbs.gpu_unai.no_blend, 1),
- mee_onoff ("Interlace", 0, pl_rearmed_cbs.gpu_unai.ilace_force, 1),
- mee_onoff ("Dithering", 0, pl_rearmed_cbs.gpu_unai.dithering, 1),
- mee_onoff ("Lighting", 0, pl_rearmed_cbs.gpu_unai.lighting, 1),
- mee_onoff ("Fast lighting", 0, pl_rearmed_cbs.gpu_unai.fast_lighting, 1),
- mee_onoff ("Blending", 0, pl_rearmed_cbs.gpu_unai.blending, 1),
- mee_onoff ("Pixel skip", 0, pl_rearmed_cbs.gpu_unai.pixel_skip, 1),
+ mee_onoff ("Skip every 2nd line", 0, pl_rearmed_cbs.gpu_unai.lineskip, 1),
+ mee_onoff ("Abe's Odyssey hack", 0, pl_rearmed_cbs.gpu_unai.abe_hack, 1),
+ mee_onoff ("Disable lighting", 0, pl_rearmed_cbs.gpu_unai.no_light, 1),
+ mee_onoff ("Disable blending", 0, pl_rearmed_cbs.gpu_unai.no_blend, 1),
mee_end,
};
return 0;
}
+static menu_entry e_menu_plugin_gpu_senquack[] =
+{
+#if 0
+ mee_onoff ("Interlace", 0, pl_rearmed_cbs.gpu_senquack.ilace_force, 1),
+ mee_onoff ("Dithering", 0, pl_rearmed_cbs.gpu_senquack.dithering, 1),
+ mee_onoff ("Lighting", 0, pl_rearmed_cbs.gpu_senquack.lighting, 1),
+ mee_onoff ("Fast lighting", 0, pl_rearmed_cbs.gpu_senquack.fast_lighting, 1),
+ mee_onoff ("Blending", 0, pl_rearmed_cbs.gpu_senquack.blending, 1),
+ mee_onoff ("Pixel skip", 0, pl_rearmed_cbs.gpu_senquack.pixel_skip, 1),
+#endif
+ mee_end,
+};
+
+static int menu_loop_plugin_gpu_senquack(int id, int keys)
+{
+ int sel = 0;
+ me_loop(e_menu_plugin_gpu_senquack, &sel);
+ return 0;
+}
+
+
static const char *men_gpu_dithering[] = { "None", "Game dependant", "Always", NULL };
//static const char h_gpu_0[] = "Needed for Chrono Cross";
static const char h_gpu_1[] = "Capcom fighting games";
#endif
"gpu_peops is Pete's soft GPU, slow but accurate\n"
"gpu_unai is GPU from PCSX4ALL, fast but glitchy\n"
+ "gpu_senquack is more accurate but slower\n"
"gpu_gles Pete's hw GPU, uses 3D chip but is glitchy\n"
"must save config and reload the game if changed";
static const char h_plugin_spu[] = "spunull effectively disables sound\n"
static const char h_gpu_peops[] = "Configure P.E.Op.S. SoftGL Driver V1.17";
static const char h_gpu_peopsgl[]= "Configure P.E.Op.S. MesaGL Driver V1.78";
static const char h_gpu_unai[] = "Configure Unai/PCSX4ALL Team GPU plugin";
+static const char h_gpu_senquack[] = "Configure Unai/PCSX4ALL Senquack plugin";
static const char h_spu[] = "Configure built-in P.E.Op.S. Sound Driver V1.7";
static menu_entry e_menu_plugin_options[] =
#endif
mee_handler_h ("Configure gpu_peops plugin", menu_loop_plugin_gpu_peops, h_gpu_peops),
mee_handler_h ("Configure gpu_unai GPU plugin", menu_loop_plugin_gpu_unai, h_gpu_unai),
+ mee_handler_h ("Configure gpu_senquack GPU plugin", menu_loop_plugin_gpu_senquack, h_gpu_senquack),
mee_handler_h ("Configure gpu_gles GPU plugin", menu_loop_plugin_gpu_peopsgl, h_gpu_peopsgl),
mee_handler_h ("Configure built-in SPU plugin", menu_loop_plugin_spu, h_spu),
mee_end,
return 0;
}
+static const char *men_gpul[] = { "Auto", "Off", "On", NULL };
+
static const char h_cfg_cpul[] = "Shows CPU usage in %";
static const char h_cfg_spu[] = "Shows active SPU channels\n"
"(green: normal, red: fmod, blue: noise)";
#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_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 };
+enum { AMO_XA, AMO_CDDA, AMO_IC, AMO_BP, AMO_CPU, AMO_GPUL };
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),
#endif
{ &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;
for (i = 0; i < ARRAY_SIZE(opts); i++)
*opts[i].mopt = *opts[i].opt;
+ menu_iopts[AMO_GPUL] = Config.GpuListWalking + 1;
+
me_loop(e_menu_adv_options, &sel);
+
for (i = 0; i < ARRAY_SIZE(opts); i++)
*opts[i].opt = *opts[i].mopt;
+ Config.GpuListWalking = menu_iopts[AMO_GPUL] - 1;
+
return 0;
}
ClosePlugins();
OpenPlugins();
SysReset();
- if (CheckCdrom() != -1) {
- LoadCdrom();
+ if (Config.HLE) {
+ if (LoadCdrom() == -1)
+ return -1;
}
return 0;
}
static int run_bios(void)
{
+ boolean origSlowBoot = Config.SlowBoot;
+
if (bios_sel == 0)
return -1;
ready_to_go = 0;
if (reload_plugins(NULL) != 0)
return -1;
+ Config.SlowBoot = 1;
SysReset();
+ Config.SlowBoot = origSlowBoot;
ready_to_go = 1;
return 0;
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;
}
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;
psxCpu = &psxInt;
#endif
if (psxCpu != prev_cpu) {
+ prev_cpu->Notify(R3000ACPU_NOTIFY_BEFORE_SAVE, NULL);
prev_cpu->Shutdown();
psxCpu->Init();
- // note that this does not really reset, just clears drc caches
psxCpu->Reset();
+ psxCpu->Notify(R3000ACPU_NOTIFY_AFTER_LOAD, NULL);
}
menu_sync_config();