diff options
-rw-r--r-- | libretro/libretro.c | 19 | ||||
-rw-r--r-- | 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
|