Merge pull request #547 from gameblabla/blues_clues_fix_audio_fmv
[pcsx_rearmed.git] / frontend / libretro.c
index e9567de..33f2a42 100644 (file)
@@ -121,7 +121,6 @@ int in_mouse[8][2];
 int multitap1 = 0;
 int multitap2 = 0;
 int in_enable_vibration = 1;
-static int input_changed = 0;
 
 // NegCon adjustment parameters
 // > The NegCon 'twist' action is somewhat awkward when mapped
@@ -592,37 +591,24 @@ unsigned retro_api_version(void)
 
 static void update_multitap(void)
 {
-   struct retro_variable var = {};
+   struct retro_variable var = { 0 };
+
+   multitap1 = 0;
+   multitap2 = 0;
 
    var.value = NULL;
    var.key = "pcsx_rearmed_multitap";
    if (environ_cb && (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value))
    {
-      if (strcmp(var.value, "port 1 only") == 0)
-      {
+      if (strcmp(var.value, "port 1") == 0)
          multitap1 = 1;
-         multitap2 = 0;
-      }
-      else if (strcmp(var.value, "port 2 only") == 0)
-      {
-         multitap1 = 0;
+      else if (strcmp(var.value, "port 2") == 0)
          multitap2 = 1;
-      }
-      else if (strcmp(var.value, "both") == 0)
+      else if (strcmp(var.value, "ports 1 and 2") == 0)
       {
          multitap1 = 1;
          multitap2 = 1;
       }
-      else
-      {
-         multitap1 = 0;
-         multitap2 = 0;
-      }
-   }
-   else
-   {
-      multitap1 = 0;
-      multitap2 = 0;
    }
 }
 
@@ -659,7 +645,6 @@ void retro_set_controller_port_device(unsigned port, unsigned device)
    }
 
    SysPrintf("port: %u  device: %s\n", port + 1, get_pse_pad_label[in_type[port]]);
-   input_changed = 1;
 }
 
 void retro_get_system_info(struct retro_system_info *info)
@@ -1352,14 +1337,12 @@ bool retro_load_game(const struct retro_game_info *info)
 
       for (i = 0; i < sizeof(disks) / sizeof(disks[0]) && i < cdrIsoMultidiskCount; i++)
       {
-         char disk_name[PATH_MAX];
-         char disk_label[PATH_MAX];
-         disk_name[0] = '\0';
-         disk_label[0] = '\0';
+         char disk_name[PATH_MAX - 16] = { 0 };
+         char disk_label[PATH_MAX] = { 0 };
 
          disks[i].fname = strdup(info->path);
 
-         get_disk_label(disk_name, info->path, PATH_MAX);
+         get_disk_label(disk_name, info->path, sizeof(disk_name));
          snprintf(disk_label, sizeof(disk_label), "%s #%u", disk_name, (unsigned)i + 1);
          disks[i].flabel = strdup(disk_label);
 
@@ -1400,6 +1383,10 @@ bool retro_load_game(const struct retro_game_info *info)
       }
    }
 
+   /* set ports to use "standard controller" initially */
+   for (i = 0; i < 8; ++i)
+      in_type[i] = PSE_PAD_TYPE_STANDARD;
+
    plugin_call_rearmed_cbs();
    /* dfinput_activate(); */
 
@@ -1420,8 +1407,6 @@ bool retro_load_game(const struct retro_game_info *info)
 
    set_retro_memmap();
 
-   input_changed = 1;
-
    return true;
 }
 
@@ -1510,9 +1495,6 @@ static void update_variables(bool in_flight)
          Config.PsxType = 1;
    }
 
-   /*for (i = 0; i < PORTS_NUMBER; i++)
-      update_controller_port_variable(i);*/
-
    update_multitap();
 
    var.value = NULL;
@@ -1650,7 +1632,9 @@ static void update_variables(bool in_flight)
    var.value = NULL;
    var.key = "pcsx_rearmed_drc";
 
-   if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+   if (!environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
+      var.value = "enabled";
+
    {
       R3000Acpu *prev_cpu = psxCpu;
 #if defined(LIGHTREC)
@@ -1716,17 +1700,6 @@ static void update_variables(bool in_flight)
          Config.RCntFix = 1;
    }
 
-   var.value = NULL;
-   var.key = "pcsx_rearmed_idiablofix";
-
-   if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
-   {
-      if (strcmp(var.value, "disabled") == 0)
-         spu_config.idiablofix = 0;
-      else if (strcmp(var.value, "enabled") == 0)
-         spu_config.idiablofix = 1;
-   }
-
    var.value = NULL;
    var.key = "pcsx_rearmed_inuyasha_fix";
 
@@ -2520,19 +2493,6 @@ static void print_internal_fps(void)
 
 void retro_run(void)
 {
-   /* update multitap when inputs have changed */
-   /* this is only applied on core restart */
-   if (input_changed)
-   {
-      int i;
-      input_changed = 0;
-      update_multitap();
-      for (i = 0; i < 8; i++)
-         SysDLog("Player %d: %s\n", i + 1, get_pse_pad_label[in_type[i]]);
-      SysDLog("Multiplayer 1: %s\n", multitap1 ? "enabled" : "disabled");
-      SysDLog("Multiplayer 2: %s\n", multitap2 ? "enabled" : "disabled");
-   }
-
    //SysReset must be run while core is running,Not in menu (Locks up Retroarch)
    if (rebootemu != 0)
    {
@@ -2803,7 +2763,8 @@ void retro_init(void)
 #ifdef _3DS
    vout_buf = linearMemAlign(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2, 0x80);
 #elif defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) && !defined(VITA) && !defined(__SWITCH__)
-   posix_memalign(&vout_buf, 16, VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2);
+   if (posix_memalign(&vout_buf, 16, VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2) != 0)
+      vout_buf = (void *) 0;
 #else
    vout_buf = malloc(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2);
 #endif