Libretro: Add core options for Sound Interpolation and Filtering
This commit is contained in:
parent
94f1102395
commit
4d4819f055
|
@ -41,8 +41,10 @@ static retro_input_state_t input_cb;
|
||||||
retro_audio_sample_batch_t audio_batch_cb;
|
retro_audio_sample_batch_t audio_batch_cb;
|
||||||
static retro_environment_t environ_cb;
|
static retro_environment_t environ_cb;
|
||||||
|
|
||||||
static bool enableRtc;
|
static float sndFiltering = 0.5f;
|
||||||
static bool can_dupe;
|
static bool sndInterpolation = true;
|
||||||
|
static bool enableRtc = false;
|
||||||
|
static bool can_dupe = false;
|
||||||
int emulating = 0;
|
int emulating = 0;
|
||||||
static unsigned controller_layout = 0;
|
static unsigned controller_layout = 0;
|
||||||
|
|
||||||
|
@ -192,6 +194,8 @@ void retro_set_environment(retro_environment_t cb)
|
||||||
struct retro_variable variables[] = {
|
struct retro_variable variables[] = {
|
||||||
{ "vbam_solarsensor", "Solar Sensor Level; 0|1|2|3|4|5|6|7|8|9|10" },
|
{ "vbam_solarsensor", "Solar Sensor Level; 0|1|2|3|4|5|6|7|8|9|10" },
|
||||||
{ "vbam_usebios", "Use BIOS file (Restart); disabled|enabled" },
|
{ "vbam_usebios", "Use BIOS file (Restart); disabled|enabled" },
|
||||||
|
{ "vbam_soundinterpolation", "Sound Interpolation; disabled|enabled" },
|
||||||
|
{ "vbam_soundfiltering", "Sound Filtering; 5|6|7|8|9|10|0|1|2|3|4" },
|
||||||
{ "vbam_layer_1", "Show layer 1; enabled|disabled" },
|
{ "vbam_layer_1", "Show layer 1; enabled|disabled" },
|
||||||
{ "vbam_layer_2", "Show layer 2; enabled|disabled" },
|
{ "vbam_layer_2", "Show layer 2; enabled|disabled" },
|
||||||
{ "vbam_layer_3", "Show layer 3; enabled|disabled" },
|
{ "vbam_layer_3", "Show layer 3; enabled|disabled" },
|
||||||
|
@ -497,6 +501,12 @@ static void gba_init(void)
|
||||||
emulating = 1;
|
emulating = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gba_soundchanged(void)
|
||||||
|
{
|
||||||
|
soundInterpolation = sndInterpolation;
|
||||||
|
soundFiltering = sndFiltering;
|
||||||
|
}
|
||||||
|
|
||||||
void retro_deinit(void)
|
void retro_deinit(void)
|
||||||
{
|
{
|
||||||
emulating = 0;
|
emulating = 0;
|
||||||
|
@ -557,6 +567,7 @@ static uint8_t sensorDarknessLevel = 0; // so we can adjust sensor from gamepad
|
||||||
|
|
||||||
static void update_variables(void)
|
static void update_variables(void)
|
||||||
{
|
{
|
||||||
|
bool sound_changed = false;
|
||||||
char key[256];
|
char key[256];
|
||||||
struct retro_variable var;
|
struct retro_variable var;
|
||||||
var.key = key;
|
var.key = key;
|
||||||
|
@ -592,6 +603,36 @@ static void update_variables(void)
|
||||||
if (soundGetEnable() != sound_enabled)
|
if (soundGetEnable() != sound_enabled)
|
||||||
soundSetEnable(sound_enabled & 0x30F);
|
soundSetEnable(sound_enabled & 0x30F);
|
||||||
|
|
||||||
|
var.key = "vbam_soundinterpolation";
|
||||||
|
var.value = NULL;
|
||||||
|
|
||||||
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
||||||
|
{
|
||||||
|
bool newval = (strcmp(var.value, "enabled") == 0);
|
||||||
|
if (sndInterpolation != newval)
|
||||||
|
{
|
||||||
|
sndInterpolation = newval;
|
||||||
|
sound_changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var.key = "vbam_soundfiltering";
|
||||||
|
var.value = NULL;
|
||||||
|
|
||||||
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
||||||
|
{
|
||||||
|
float newval = atof(var.value) * 0.1f;
|
||||||
|
if (sndFiltering != newval)
|
||||||
|
{
|
||||||
|
sndFiltering = newval;
|
||||||
|
sound_changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sound_changed)
|
||||||
|
//Update interpolation and filtering values
|
||||||
|
gba_soundchanged();
|
||||||
|
|
||||||
var.key = "vbam_usebios";
|
var.key = "vbam_usebios";
|
||||||
var.value = NULL;
|
var.value = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue