From e09b3a980d58c06032c6ab65eeb7a04408dd1ad6 Mon Sep 17 00:00:00 2001 From: Tatsuya79 Date: Tue, 13 Feb 2018 00:55:05 +0100 Subject: Make 2 cycles oc profiles. --- libretro/libretro.c | 19 ++++++++++++++++--- src/snes9x.h | 7 ++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/libretro/libretro.c b/libretro/libretro.c index bbb7b92..6609973 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -92,6 +92,7 @@ static uint32 joys[5]; bool8 ROMAPUEnabled = 0; char currentWorkingDir[MAX_PATH+1] = {0}; bool overclock_cycles = false; +int one_c, slow_one_c, two_c; memstream_t *s_stream; @@ -354,7 +355,7 @@ void retro_init (void) { static const struct retro_variable vars[] = { - { "snes9x2002_overclock_cycles", "Reduce Slowdown (Hack, Unsafe, Restart); disabled|enabled" }, + { "snes9x2002_overclock_cycles", "Reduce Slowdown (Hack, Unsafe, Restart); disabled|compatible|max" }, { NULL, NULL }, }; @@ -431,8 +432,20 @@ static void check_variables(void) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - if (strcmp(var.value, "enabled") == 0) - overclock_cycles = true; + if (strcmp(var.value, "compatible") == 0) + { + overclock_cycles = true; + one_c = 4; + slow_one_c = 5; + two_c = 6; + } + else if (strcmp(var.value, "max") == 0) + { + overclock_cycles = true; + one_c = 3; + slow_one_c = 3; + two_c = 3; + } else overclock_cycles = false; } diff --git a/src/snes9x.h b/src/snes9x.h index 065b98d..b051828 100644 --- a/src/snes9x.h +++ b/src/snes9x.h @@ -134,6 +134,7 @@ enum }; extern bool overclock_cycles; +extern int one_c, slow_one_c, two_c; #define DEBUG_MODE_FLAG (1 << 0) #define TRACE_FLAG (1 << 1) @@ -149,9 +150,9 @@ extern bool overclock_cycles; #define IRQ_PENDING_FLAG (1 << 11) #ifdef VAR_CYCLES -#define ONE_CYCLE (overclock_cycles ? 4 : 6) -#define SLOW_ONE_CYCLE (overclock_cycles ? 4 : 8) -#define TWO_CYCLES (overclock_cycles ? 6 : 12) +#define ONE_CYCLE (overclock_cycles ? one_c : 6) +#define SLOW_ONE_CYCLE (overclock_cycles ? slow_one_c : 8) +#define TWO_CYCLES (overclock_cycles ? two_c : 12) #else #define ONE_CYCLE 1 #define SLOW_ONE_CYCLE 1 -- cgit v1.2.3