X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmain.c;h=480319892f669abc5b67e2657939cd9aa7cf0c69;hp=a71ddea3a669bcc0e4a69e8673180cd8c0f03b80;hb=79f216e32563acc81517729fe56a6f11f110b0a4;hpb=e0aec5eebf0fefe7a7314940546ef8a23d2169b7 diff --git a/frontend/main.c b/frontend/main.c index a71ddea3..48031989 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -32,6 +32,9 @@ #include "libpicofe/plat.h" #include "libpicofe/readpng.h" #endif +#ifndef BOOT_MSG +#define BOOT_MSG "Booting up..." +#endif // don't include debug.h - it breaks ARM build (R1 redefined) void StartDebugger(); @@ -51,6 +54,8 @@ enum sched_action emu_action, emu_action_old; char hud_msg[64]; int hud_new_msg; +static void toggle_fast_forward(int force_off); + static void make_path(char *buf, size_t size, const char *dir, const char *fname) { if (fname) @@ -207,6 +212,7 @@ void do_emu_action(void) break; #ifndef NO_FRONTEND case SACTION_ENTER_MENU: + toggle_fast_forward(1); menu_loop(); return; case SACTION_NEXT_SSLOT: @@ -242,6 +248,10 @@ do_state_slot: GPU_open(&gpuDisp, "PCSX", NULL); } break; + case SACTION_FAST_FORWARD: + toggle_fast_forward(0); + plugin_call_rearmed_cbs(); + break; case SACTION_SCREENSHOT: { char buf[MAXPATHLEN]; @@ -386,7 +396,7 @@ out: fclose(f); } -void emu_on_new_cd(void) +void emu_on_new_cd(int show_hud_msg) { ClearAllCheats(); parse_cwcheat(); @@ -396,8 +406,10 @@ void emu_on_new_cd(void) printf("----------------------------------------------------------\n"); } - snprintf(hud_msg, sizeof(hud_msg), "Booting up..."); - hud_new_msg = 2; + if (show_hud_msg) { + snprintf(hud_msg, sizeof(hud_msg), BOOT_MSG); + hud_new_msg = 3; + } } int emu_core_preinit(void) @@ -553,7 +565,7 @@ int main(int argc, char *argv[]) printf(_("Could not load CD-ROM!\n")); return -1; } - emu_on_new_cd(); + emu_on_new_cd(!loadst); ready_to_go = 1; } } @@ -588,6 +600,40 @@ int main(int argc, char *argv[]) return 0; } + +static void toggle_fast_forward(int force_off) +{ + static int fast_forward; + static int normal_g_opts; + static int normal_frameskip; + static int normal_enhancement_enable; + + if (force_off && !fast_forward) + return; + + fast_forward = !fast_forward; + if (fast_forward) { + normal_g_opts = g_opts; + normal_frameskip = pl_rearmed_cbs.frameskip; + normal_enhancement_enable = + pl_rearmed_cbs.gpu_neon.enhancement_enable; + + g_opts |= OPT_NO_FRAMELIM; + pl_rearmed_cbs.frameskip = 3; + pl_rearmed_cbs.gpu_neon.enhancement_enable = 0; + } else { + g_opts = normal_g_opts; + pl_rearmed_cbs.frameskip = normal_frameskip; + pl_rearmed_cbs.gpu_neon.enhancement_enable = + normal_enhancement_enable; + + pl_timing_prepare(Config.PsxType); + } + + if (!force_off) + snprintf(hud_msg, sizeof(hud_msg), "FAST FORWARD %s", + fast_forward ? "ON" : "OFF"); +} #endif void SysRunGui() {