From 5a5baa280f725d25f38f1025d92fb521fdba8940 Mon Sep 17 00:00:00 2001 From: neonloop Date: Sun, 27 Mar 2022 17:11:07 +0000 Subject: Updates patches for upstream snes9x2002 changes --- overrides/snes9x2002.h | 9 +++--- .../snes9x2002/0001-frameskip-interval-max.patch | 33 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 patches/snes9x2002/0001-frameskip-interval-max.patch diff --git a/overrides/snes9x2002.h b/overrides/snes9x2002.h index 00ff40b..fb54780 100644 --- a/overrides/snes9x2002.h +++ b/overrides/snes9x2002.h @@ -5,23 +5,22 @@ static const struct core_override_option snes9x2002_core_option_overrides[] = { .key = "snes9x2002_frameskip", .info = "Skip frames to avoid audio crackling. Improves performance at the expense of visual smoothness.", .default_value = "auto", - .retro_var_value = "Frameskip ; disabled|auto|threshold" }, { .key = "snes9x2002_frameskip_threshold", + .desc = "FS Threshold (%)", .info = "When 'Frameskip' is set to 'Threshold', sets how low the audio buffer can get before frames will be skipped.", - .retro_var_value = "FS Threshold (%); 30|40|50|60", }, { .key = "snes9x2002_frameskip_interval", + .desc = "FS Interval", .info = "The maximum number of frames that can be skipped before a new frame is rendered.", .default_value = "4", - .retro_var_value = "FS Interval; 1|2|3|4|5|6|7|8|9" }, { .key = "snes9x2002_overclock_cycles", - .info = "Hack, unsafe. Requires restart.", - .retro_var_value = "Overclock (Restart); disabled|compatible|max" + .desc = "Overclock (Restart)", + .info = "Alleviate normal SNES slowdown. Compatible keeps as much compatibility as possible. Max will reduce more slowdown but break more games.", }, { NULL } }; diff --git a/patches/snes9x2002/0001-frameskip-interval-max.patch b/patches/snes9x2002/0001-frameskip-interval-max.patch new file mode 100644 index 0000000..737936d --- /dev/null +++ b/patches/snes9x2002/0001-frameskip-interval-max.patch @@ -0,0 +1,33 @@ +diff --git a/libretro/libretro.c b/libretro/libretro.c +index 5f947ef..dc48f3d 100644 +--- a/libretro/libretro.c ++++ b/libretro/libretro.c +@@ -105,10 +105,6 @@ typedef enum + FRAMESKIP_FIXED_INTERVAL + } frameskip_type_t; + +-/* Maximum number of consecutive frames that +- * can be skipped */ +-#define FRAMESKIP_MAX 30 +- + static frameskip_type_t frameskip_type = FRAMESKIP_NONE; + static unsigned frameskip_threshold = 0; + static unsigned frameskip_interval = 0; +@@ -638,7 +634,7 @@ void retro_run (void) + retro_audio_buff_underrun; + + if (!skip_frame || +- (frameskip_counter >= FRAMESKIP_MAX)) ++ (frameskip_counter >= frameskip_interval)) + { + skip_frame = false; + frameskip_counter = 0; +@@ -652,7 +648,7 @@ void retro_run (void) + (retro_audio_buff_occupancy < frameskip_threshold); + + if (!skip_frame || +- (frameskip_counter >= FRAMESKIP_MAX)) ++ (frameskip_counter >= frameskip_interval)) + { + skip_frame = false; + frameskip_counter = 0; -- cgit v1.2.3