libretro: sound fix and a few options
authornotaz <notasas@gmail.com>
Mon, 23 Sep 2013 23:31:45 +0000 (02:31 +0300)
committernotaz <notasas@gmail.com>
Tue, 24 Sep 2013 00:57:43 +0000 (03:57 +0300)
platform/libretro.c

index 4903847..f3252ab 100644 (file)
@@ -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";