mirror of
https://github.com/libretro/snes9x2010.git
synced 2025-03-02 04:57:33 +00:00
Merge pull request #107 from Tatsuya79/master
Change cycles hack. Add sprite limit tweak.
This commit is contained in:
commit
fc6e980615
@ -224,7 +224,8 @@ static retro_audio_sample_batch_t audio_batch_cb = NULL;
|
||||
static retro_environment_t environ_cb = NULL;
|
||||
|
||||
extern s9xcommand_t keymap[1024];
|
||||
|
||||
bool overclock_cycles = false;
|
||||
bool reduce_sprite_flicker = false;
|
||||
|
||||
static void check_variables(void)
|
||||
{
|
||||
@ -283,6 +284,17 @@ static void check_variables(void)
|
||||
overclock_cycles = false;
|
||||
}
|
||||
|
||||
var.key = "snes9x_next_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;
|
||||
}
|
||||
|
||||
if (reset_sfx)
|
||||
S9xResetSuperFX();
|
||||
}
|
||||
@ -376,13 +388,13 @@ void retro_set_input_state(retro_input_state_t cb)
|
||||
}
|
||||
|
||||
static bool use_overscan;
|
||||
bool overclock_cycles = false;
|
||||
|
||||
void retro_set_environment(retro_environment_t cb)
|
||||
{
|
||||
static const struct retro_variable vars[] = {
|
||||
{ "snes9x_next_overclock", "SuperFX Overclock; Disabled(10MHz)|40MHz|60MHz|80MHz|100MHz|Underclock(5MHz)|Underclock(8MHz)" },
|
||||
{ "snes9x_next_overclock_cycles", "CPU Overclock (Hack, Unsafe); disabled|enabled" },
|
||||
{ "snes9x_next_overclock_cycles", "Reduce Slowdown (Hack, Unsafe); disabled|enabled" },
|
||||
{ "snes9x_next_reduce_sprite_flicker", "Reduce Flickering (Hack, Unsafe); disabled|enabled" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
|
@ -188,6 +188,7 @@
|
||||
#include "bsx.h"
|
||||
|
||||
extern uint8 OpenBus;
|
||||
extern bool overclock_cycles;
|
||||
|
||||
int32 memory_speed (uint32 address)
|
||||
{
|
||||
@ -196,7 +197,7 @@ int32 memory_speed (uint32 address)
|
||||
if (address & 0x800000)
|
||||
return (CPU.FastROMSpeed);
|
||||
|
||||
return (SLOW_ONE_CYCLE);
|
||||
return (overclock_cycles ? 6 : SLOW_ONE_CYCLE);
|
||||
}
|
||||
|
||||
if ((address + 0x6000) & 0x4000)
|
||||
|
@ -200,6 +200,8 @@ extern uint8 *HDMAMemPointers[8];
|
||||
extern struct SLineData LineData[240];
|
||||
static uint8 dma_sa1_channels_chars[9][8];
|
||||
|
||||
extern bool reduce_sprite_flicker;
|
||||
|
||||
#define TILE_PLUS(t, x) (((t) & 0xfc00) | ((t + x) & 0x3ff))
|
||||
|
||||
bool8 S9xGraphicsInit (void)
|
||||
@ -391,7 +393,7 @@ static void SetupOBJ (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);
|
||||
for ( j = 0; j < 32; j++)
|
||||
GFX.OBJLines[i].OBJ[j].Sprite = -1;
|
||||
}
|
||||
@ -522,7 +524,7 @@ static void SetupOBJ (void)
|
||||
int j;
|
||||
|
||||
GFX.OBJLines[Y_two].RTOFlags = Y_two ? GFX.OBJLines[Y_two - 1].RTOFlags : 0;
|
||||
GFX.OBJLines[Y_two].Tiles = 34;
|
||||
GFX.OBJLines[Y_two].Tiles = (reduce_sprite_flicker ? 60 : 34);
|
||||
|
||||
FirstSprite = (PPU.FirstSprite + Y_two) & 0x7f;
|
||||
S = FirstSprite;
|
||||
|
@ -233,9 +233,9 @@ extern "C" {
|
||||
#define SNES_MAX_PAL_VCOUNTER 312
|
||||
#define SNES_HCOUNTER_MAX 341
|
||||
|
||||
#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 ? 3 : 6)
|
||||
#define SLOW_ONE_CYCLE (overclock_cycles ? 1 : 8)
|
||||
#define TWO_CYCLES (overclock_cycles ? 1 : 12)
|
||||
#define ONE_DOT_CYCLE 4
|
||||
#define ONE_DOT_CYCLE_DIV_2 2
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user