From 27f190ea0097fa6a6f51bfacfd38a984d797e59b Mon Sep 17 00:00:00 2001 From: notaz Date: Tue, 24 Sep 2013 02:31:45 +0300 Subject: [PATCH] libretro: sound fix and a few options --- platform/libretro.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/platform/libretro.c b/platform/libretro.c index 49038471..f3252ab5 100644 --- a/platform/libretro.c +++ b/platform/libretro.c @@ -292,6 +292,8 @@ void retro_set_environment(retro_environment_t cb) //{ "region", "Region; Auto|NTSC|PAL" }, { "picodrive_input1", "Input device 1; 3 button pad|6 button pad|None" }, { "picodrive_input2", "Input device 2; 3 button pad|6 button pad|None" }, + { "picodrive_sprlim", "No sprite limit; disabled|enabled" }, + { "picodrive_ramcart", "MegaCD RAM cart; disabled|enabled" }, #ifdef DRC_SH2 { "picodrive_drc", "Dynamic recompilers; enabled|disabled" }, #endif @@ -704,7 +706,7 @@ bool retro_load_game(const struct retro_game_info *info) PicoWriteSound = snd_write; memset(sndBuffer, 0, sizeof(sndBuffer)); PsndOut = sndBuffer; - PsndRerate(1); + PsndRerate(0); return true; } @@ -799,6 +801,24 @@ static void update_variables(void) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) PicoSetInputDevice(1, input_name_to_val(var.value)); + var.value = NULL; + var.key = "picodrive_sprlim"; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + if (strcmp(var.value, "enabled") == 0) + PicoOpt |= POPT_DIS_SPRITE_LIM; + else + PicoOpt &= ~POPT_DIS_SPRITE_LIM; + } + + var.value = NULL; + var.key = "picodrive_ramcart"; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + if (strcmp(var.value, "enabled") == 0) + PicoOpt |= POPT_EN_MCD_RAMCART; + else + PicoOpt &= ~POPT_EN_MCD_RAMCART; + } + #ifdef DRC_SH2 var.value = NULL; var.key = "picodrive_drc"; -- 2.39.5