libretro: don't make cycle_multiplier depend on device
authornotaz <notasas@gmail.com>
Fri, 8 Nov 2024 00:41:35 +0000 (02:41 +0200)
committernotaz <notasas@gmail.com>
Fri, 8 Nov 2024 00:41:35 +0000 (02:41 +0200)
It causes different compatibility on different devices.
If the user wants to win some fps this way, they should just
change their config.

frontend/libretro.c
frontend/libretro_core_options.h
libpcsxcore/psxcommon.h

index 68ec65f..aa69ce6 100644 (file)
@@ -2297,7 +2297,10 @@ static void update_variables(bool in_flight)
    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
    {
       int psxclock = atoi(var.value);
-      Config.cycle_multiplier = 10000 / psxclock;
+      if (strcmp(var.value, "auto") == 0 || psxclock == 0)
+         Config.cycle_multiplier = CYCLE_MULT_DEFAULT;
+      else
+         Config.cycle_multiplier = 10000 / psxclock;
    }
 
 #if !defined(DRC_DISABLE) && !defined(LIGHTREC)
@@ -3612,13 +3615,6 @@ void retro_init(void)
    if (environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble))
       rumble_cb = rumble.set_rumble_state;
 
-   /* Set how much slower PSX CPU runs * 100 (so that 200 is 2 times)
-    * we have to do this because cache misses and some IO penalties
-    * are not emulated. Warning: changing this may break compatibility. */
-   Config.cycle_multiplier = CYCLE_MULT_DEFAULT;
-#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
-   Config.cycle_multiplier = 200;
-#endif
    pl_rearmed_cbs.gpu_peops.iUseDither = 1;
    pl_rearmed_cbs.gpu_peops.dwActFixes = GPU_PEOPS_OLD_FRAME_SKIP;
 
index ed2f41c..220df0f 100644 (file)
@@ -239,6 +239,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
       NULL,
       "system",
       {
+         { "auto", "Auto" },
          { "30",  NULL },
          { "31",  NULL },
          { "32",  NULL },
@@ -312,11 +313,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
          { "100", NULL },
          { NULL, NULL },
       },
-#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
-      "50",
-#else
-      "57",
-#endif
+      "auto",
    },
    {
       "pcsx_rearmed_dithering",
index 68c32a9..8a0ac70 100644 (file)
@@ -112,6 +112,8 @@ extern int Log;
 
 void __Log(char *fmt, ...);
 
+// lots of timing depends on this and makes or breaks compatibility,
+// don't change unless you're going to retest hundreds of games
 #define CYCLE_MULT_DEFAULT 175
 
 typedef struct {