From 4c887d89f8cd9ce8e6f135ce5caa92b2b23491e0 Mon Sep 17 00:00:00 2001 From: Tatsuya79 Date: Fri, 9 Feb 2018 18:44:47 +0100 Subject: Add sprite limit hack. --- libretro.c | 13 +++++++++++++ source/gfx.c | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/libretro.c b/libretro.c index 42e316d..c5895c6 100644 --- a/libretro.c +++ b/libretro.c @@ -37,6 +37,7 @@ struct retro_perf_callback perf_cb; char retro_save_directory[PATH_MAX]; char retro_base_name[PATH_MAX]; bool overclock_cycles = false; +bool reduce_sprite_flicker = false; #ifdef _WIN32 char slash = '\\'; @@ -296,6 +297,7 @@ void retro_init(void) { { "catsfc_VideoMode", "Video Mode; auto|NTSC|PAL" }, { "catsfc_overclock_cycles", "CPU Overclock (Hack, Unsafe, Restart); disabled|enabled" }, + { "catsfc_reduce_sprite_flicker", "Reduce Flickering (Hack, Unsafe); disabled|enabled" }, { NULL, NULL }, }; @@ -391,6 +393,17 @@ static void check_variables(void) else overclock_cycles = false; } + + var.key = "catsfc_reduce_sprite_flicker"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + reduce_sprite_flicker = true; + else + reduce_sprite_flicker = false; + } } #ifdef PSP diff --git a/source/gfx.c b/source/gfx.c index 6dd9ff5..1b9928d 100644 --- a/source/gfx.c +++ b/source/gfx.c @@ -36,6 +36,8 @@ extern SLineMatrixData LineMatrixData [240]; extern uint8_t Mode7Depths [2]; +extern bool reduce_sprite_flicker; + #define CLIP_10_BIT_SIGNED(a) \ ((a) & ((1 << 10) - 1)) + (((((a) & (1 << 13)) ^ (1 << 13)) - (1 << 13)) >> 3) @@ -611,7 +613,7 @@ void S9xSetupOBJ(void) for (i = 0; i < SNES_HEIGHT_EXTENDED; i++) { GFX.OBJLines[i].RTOFlags = 0; - GFX.OBJLines[i].Tiles = 34; + GFX.OBJLines[i].Tiles = (reduce_sprite_flicker ? 60 : 34); } FirstSprite = PPU.FirstSprite; S = FirstSprite; @@ -733,7 +735,7 @@ void S9xSetupOBJ(void) for (Y = 0; Y < SNES_HEIGHT_EXTENDED; Y++) { GFX.OBJLines[Y].RTOFlags = Y ? GFX.OBJLines[Y - 1].RTOFlags : 0; - GFX.OBJLines[Y].Tiles = 34; + GFX.OBJLines[Y].Tiles = (reduce_sprite_flicker ? 60 : 34); j = 0; if (AnyOBJOnLine[Y]) { -- cgit v1.2.3 From b23fdeb8198fb625331740a0c12d5663a03a816c Mon Sep 17 00:00:00 2001 From: Tatsuya79 Date: Fri, 9 Feb 2018 19:08:36 +0100 Subject: renaming --- libretro.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro.c b/libretro.c index c5895c6..7172cee 100644 --- a/libretro.c +++ b/libretro.c @@ -296,7 +296,7 @@ void retro_init(void) static const struct retro_variable vars[] = { { "catsfc_VideoMode", "Video Mode; auto|NTSC|PAL" }, - { "catsfc_overclock_cycles", "CPU Overclock (Hack, Unsafe, Restart); disabled|enabled" }, + { "catsfc_overclock_cycles", "Reduce Slowdown (Hack, Unsafe, Restart); disabled|enabled" }, { "catsfc_reduce_sprite_flicker", "Reduce Flickering (Hack, Unsafe); disabled|enabled" }, { NULL, NULL }, }; -- cgit v1.2.3