Revert "Revert "Adds auto frameskip based on free audio buffer space""
[pcsx_rearmed.git] / frontend / libretro_core_options.h
index 46f7f8f..d8b37df 100644 (file)
@@ -51,17 +51,61 @@ extern "C" {
 
 struct retro_core_option_definition option_defs_us[] = {
    {
-      "pcsx_rearmed_frameskip",
+      "pcsx_rearmed_frameskip_type",
       "Frameskip",
-      "Choose how much frames should be skipped to improve performance at the expense of visual smoothness.",
+      "Skip frames to avoid audio buffer under-run (crackling). Improves performance at the expense of visual smoothness. 'Auto' skips frames when advised by the frontend. 'Auto (Threshold)' utilises the 'Frameskip Threshold (%)' setting. 'Fixed Interval' utilises the 'Frameskip Interval' setting.",
       {
-         { "0", NULL },
-         { "1", NULL },
-         { "2", NULL },
-         { "3", NULL },
+         { "disabled",       NULL },
+         { "auto",           "Auto" },
+         { "auto_threshold", "Auto (Threshold)" },
+         { "fixed_interval", "Fixed Interval" },
          { NULL, NULL },
       },
-      "0",
+      "disabled"
+   },
+   {
+      "pcsx_rearmed_frameskip_threshold",
+      "Frameskip Threshold (%)",
+      "When 'Frameskip' is set to 'Auto (Threshold)', specifies the audio buffer occupancy threshold (percentage) below which frames will be skipped. Higher values reduce the risk of crackling by causing frames to be dropped more frequently.",
+      {
+         { "15", NULL },
+         { "18", NULL },
+         { "21", NULL },
+         { "24", NULL },
+         { "27", NULL },
+         { "30", NULL },
+         { "33", NULL },
+         { "36", NULL },
+         { "39", NULL },
+         { "42", NULL },
+         { "45", NULL },
+         { "48", NULL },
+         { "51", NULL },
+         { "54", NULL },
+         { "57", NULL },
+         { "60", NULL },
+         { NULL, NULL },
+      },
+      "33"
+   },
+   {
+      "pcsx_rearmed_frameskip",
+      "Frameskip Interval",
+      "Specifies the maximum number of frames that can be skipped before a new frame is rendered.",
+      {
+         { "1",  NULL },
+         { "2",  NULL },
+         { "3",  NULL },
+         { "4",  NULL },
+         { "5",  NULL },
+         { "6",  NULL },
+         { "7",  NULL },
+         { "8",  NULL },
+         { "9",  NULL },
+         { "10", NULL },
+         { NULL, NULL },
+      },
+      "1"
    },
    {
       "pcsx_rearmed_bios",
@@ -98,176 +142,370 @@ struct retro_core_option_definition option_defs_us[] = {
       "disabled",
    },
    {
-      "pcsx_rearmed_pad1type",
-      "Pad 1 Type",
-      "Pad type for player 1",
+      "pcsx_rearmed_show_other_input_settings",
+      "Show other input settings",
+      "Shows or hides other inputs settings like multitaps, player 3-8 ports, analog fine-tunings, etc.",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
+         { "disabled", NULL },
+         { "enabled",  NULL },
          { NULL, NULL },
       },
-      "standard",
+      "disabled",
    },
    {
-      "pcsx_rearmed_pad2type",
-      "Pad 2 Type",
-      "Pad type for player 2",
+      "pcsx_rearmed_input_sensitivity",
+      "Emulated Mouse Sensitivity",
+      "Adjust responsiveness when using mouse controller (Default 1.0).",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
-         { NULL, NULL },
+         { "0.05", NULL },
+         { "0.10", NULL },
+         { "0.15", NULL },
+         { "0.20", NULL },
+         { "0.25", NULL },
+         { "0.30", NULL },
+         { "0.35", NULL },
+         { "0.40", NULL },
+         { "0.45", NULL },
+         { "0.50", NULL },
+         { "0.55", NULL },
+         { "0.60", NULL },
+         { "0.65", NULL },
+         { "0.70", NULL },
+         { "0.75", NULL },
+         { "0.80", NULL },
+         { "0.85", NULL },
+         { "0.90", NULL },
+         { "0.95", NULL },
+         { "1.00", NULL },
+         { "1.05", NULL },
+         { "1.10", NULL },
+         { "1.15", NULL },
+         { "1.20", NULL },
+         { "1.25", NULL },
+         { "1.30", NULL },
+         { "1.35", NULL },
+         { "1.40", NULL },
+         { "1.45", NULL },
+         { "1.50", NULL },
+         { "1.55", NULL },
+         { "1.60", NULL },
+         { "1.65", NULL },
+         { "1.70", NULL },
+         { "1.75", NULL },
+         { "1.80", NULL },
+         { "1.85", NULL },
+         { "1.90", NULL },
+         { "1.95", NULL },
+         { "2.00", NULL },
       },
-      "standard",
+      "1.00",
    },
    {
-      "pcsx_rearmed_pad3type",
-      "Pad 3 Type",
-      "Pad type for player 3",
+      "pcsx_rearmed_multitap",
+      "Multitap Mode (Restart)",
+      "Sets the playstation multitap peripheral to either controller port 1 or controller port 2 to support of upto 5 players simultaneously, or on both for upto 8 players simultaneously. Option depends on games that has support for multitap feature. Leave option on disabled if not such compatible games to avoid any input-related problems.",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
+         { "disabled",      NULL },
+         { "port 1",        NULL },
+         { "port 2",        NULL },
+         { "ports 1 and 2", NULL },
          { NULL, NULL },
       },
-      "none",
+      "disabled",
    },
    {
-      "pcsx_rearmed_pad4type",
-      "Pad 4 Type",
-      "Pad type for player 4",
+      "pcsx_rearmed_negcon_deadzone",
+      "NegCon Twist Deadzone (Percent)",
+      "Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
+         { "0",  NULL },
+         { "5",  NULL },
+         { "10", NULL },
+         { "15", NULL },
+         { "20", NULL },
+         { "25", NULL },
+         { "30", NULL },
          { NULL, NULL },
       },
-      "none",
+      "0",
    },
    {
-      "pcsx_rearmed_pad5type",
-      "Pad 5 Type",
-      "Pad type for player 5",
-      {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
-         { NULL, NULL },
-      },
-      "none",
-   },{
-      "pcsx_rearmed_pad6type",
-      "Pad 6 Type",
-      "Pad type for player 6",
-      {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
-         { NULL, NULL },
-      },
-      "none",
-   },{
-      "pcsx_rearmed_pad7type",
-      "Pad 7 Type",
-      "Pad type for player 7",
+      "pcsx_rearmed_negcon_response",
+      "NegCon Twist Response",
+      "Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
+         { "linear",    NULL },
+         { "quadratic", NULL },
+         { "cubic",     NULL },
          { NULL, NULL },
       },
-      "none",
-   },{
-      "pcsx_rearmed_pad8type",
-      "Pad 8 Type",
-      "Pad type for player 8",
+      "linear",
+   },
+   {
+      "pcsx_rearmed_analog_axis_modifier",
+      "Analog axis bounds.",
+      "Range bounds for analog axis. Square bounds help controllers with highly circular ranges that are unable to fully saturate the x and y axis at 45degree deflections.",
       {
-         { "standard",  NULL },
-         { "analog",    NULL },
-         { "dualshock", NULL },
-         { "negcon",    NULL },
-         { "none",      NULL },
+         { "circle", NULL },
+         { "square", NULL },
          { NULL, NULL },
       },
-      "none",
+      "circle",
    },
    {
-      "pcsx_rearmed_multitap1",
-      "Multitap 1",
-      "Enables/Disables multitap on port 1, allowing upto 5 players in games that permit it.",
+      "pcsx_rearmed_vibration",
+      "Enable Vibration",
+      "Enables vibration feedback for controllers that supports vibration features.",
       {
-         { "auto",     NULL },
          { "disabled", NULL },
          { "enabled",  NULL },
          { NULL, NULL },
       },
-      "auto",
+      "enabled",
    },
    {
-      "pcsx_rearmed_multitap2",
-      "Multitap 2",
-      "Enables/Disables multitap on port 2, allowing up to 8 players in games that permit it. Multitap 1 has to be enabled for this to work.",
+      "pcsx_rearmed_gunconadjustx",
+      "Guncon Adjust X",
+      "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies an increment on the x axis.",
       {
-         { "auto",     NULL },
-         { "disabled", NULL },
-         { "enabled",  NULL },
+         { "0", NULL },
+         { "-25", NULL },
+         { "-24", NULL },
+         { "-23", NULL },
+         { "-22", NULL },
+         { "-21", NULL },
+         { "-20", NULL },
+         { "-19", NULL },
+         { "-18", NULL },
+         { "-17", NULL },
+         { "-16", NULL },
+         { "-15", NULL },
+         { "-14", NULL },
+         { "-13", NULL },
+         { "-12", NULL },
+         { "-11", NULL },
+         { "-10", NULL },
+         { "-09", NULL },
+         { "-08", NULL },
+         { "-07", NULL },
+         { "-06", NULL },
+         { "-05", NULL },
+         { "-04", NULL },
+         { "-03", NULL },
+         { "-02", NULL },
+         { "-01", NULL },
+         { "00", NULL },
+         { "01", NULL },
+         { "02", NULL },
+         { "03", NULL },
+         { "04", NULL },
+         { "05", NULL },
+         { "06", NULL },
+         { "07", NULL },
+         { "08", NULL },
+         { "09", NULL },
+         { "10", NULL },
+         { "11", NULL },
+         { "12", NULL },
+         { "13", NULL },
+         { "14", NULL },
+         { "15", NULL },
+         { "16", NULL },
+         { "17", NULL },
+         { "18", NULL },
+         { "19", NULL },
+         { "20", NULL },
+         { "21", NULL },
+         { "22", NULL },
+         { "23", NULL },
+         { "24", NULL },
+         { "25", NULL },
          { NULL, NULL },
       },
-      "auto",
+      "0",
    },
    {
-      "pcsx_rearmed_negcon_deadzone",
-      "NegCon Twist Deadzone (Percent)",
-      "Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.",
+      "pcsx_rearmed_gunconadjusty",
+      "Guncon Adjust Y",
+      "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies an increment on the y axis.",
       {
-         { "0",  NULL },
-         { "5",  NULL },
+         { "0", NULL },
+         { "-25", NULL },
+         { "-24", NULL },
+         { "-23", NULL },
+         { "-22", NULL },
+         { "-21", NULL },
+         { "-20", NULL },
+         { "-19", NULL },
+         { "-18", NULL },
+         { "-17", NULL },
+         { "-16", NULL },
+         { "-15", NULL },
+         { "-14", NULL },
+         { "-13", NULL },
+         { "-12", NULL },
+         { "-11", NULL },
+         { "-10", NULL },
+         { "-09", NULL },
+         { "-08", NULL },
+         { "-07", NULL },
+         { "-06", NULL },
+         { "-05", NULL },
+         { "-04", NULL },
+         { "-03", NULL },
+         { "-02", NULL },
+         { "-01", NULL },
+         { "00", NULL },
+         { "01", NULL },
+         { "02", NULL },
+         { "03", NULL },
+         { "04", NULL },
+         { "05", NULL },
+         { "06", NULL },
+         { "07", NULL },
+         { "08", NULL },
+         { "09", NULL },
          { "10", NULL },
+         { "11", NULL },
+         { "12", NULL },
+         { "13", NULL },
+         { "14", NULL },
          { "15", NULL },
+         { "16", NULL },
+         { "17", NULL },
+         { "18", NULL },
+         { "19", NULL },
          { "20", NULL },
+         { "21", NULL },
+         { "22", NULL },
+         { "23", NULL },
+         { "24", NULL },
          { "25", NULL },
-         { "30", NULL },
          { NULL, NULL },
       },
       "0",
    },
    {
-      "pcsx_rearmed_negcon_response",
-      "NegCon Twist Response",
-      "Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.",
+      "pcsx_rearmed_gunconadjustratiox",
+      "Guncon Adjust Ratio X",
+      "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies a ratio on the x axis.",
       {
-         { "linear",    NULL },
-         { "quadratic", NULL },
-         { "cubic",     NULL },
+         { "1", NULL },
+         { "0.75", NULL },
+         { "0.76", NULL },
+         { "0.77", NULL },
+         { "0.78", NULL },
+         { "0.79", NULL },
+         { "0.80", NULL },
+         { "0.81", NULL },
+         { "0.82", NULL },
+         { "0.83", NULL },
+         { "0.84", NULL },
+         { "0.85", NULL },
+         { "0.86", NULL },
+         { "0.87", NULL },
+         { "0.88", NULL },
+         { "0.89", NULL },
+         { "0.90", NULL },
+         { "0.91", NULL },
+         { "0.92", NULL },
+         { "0.93", NULL },
+         { "0.94", NULL },
+         { "0.95", NULL },
+         { "0.96", NULL },
+         { "0.97", NULL },
+         { "0.98", NULL },
+         { "0.99", NULL },
+         { "1.00", NULL },
+         { "1.01", NULL },
+         { "1.02", NULL },
+         { "1.03", NULL },
+         { "1.04", NULL },
+         { "1.05", NULL },
+         { "1.06", NULL },
+         { "1.07", NULL },
+         { "1.08", NULL },
+         { "1.09", NULL },
+         { "1.10", NULL },
+         { "1.11", NULL },
+         { "1.12", NULL },
+         { "1.13", NULL },
+         { "1.14", NULL },
+         { "1.15", NULL },
+         { "1.16", NULL },
+         { "1.17", NULL },
+         { "1.18", NULL },
+         { "1.19", NULL },
+         { "1.20", NULL },
+         { "1.21", NULL },
+         { "1.22", NULL },
+         { "1.23", NULL },
+         { "1.24", NULL },
+         { "1.25", NULL },
          { NULL, NULL },
       },
-      "linear",
+      "1",
    },
    {
-      "pcsx_rearmed_vibration",
-      "Enable Vibration",
-      "Enables vibration feedback for controllers that supports vibration features.",
+      "pcsx_rearmed_gunconadjustratioy",
+      "Guncon Adjust Ratio Y",
+      "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies a ratio on the y axis.",
       {
-         { "disabled", NULL },
-         { "enabled",  NULL },
+         { "1", NULL },
+         { "0.75", NULL },
+         { "0.76", NULL },
+         { "0.77", NULL },
+         { "0.78", NULL },
+         { "0.79", NULL },
+         { "0.80", NULL },
+         { "0.81", NULL },
+         { "0.82", NULL },
+         { "0.83", NULL },
+         { "0.84", NULL },
+         { "0.85", NULL },
+         { "0.86", NULL },
+         { "0.87", NULL },
+         { "0.88", NULL },
+         { "0.89", NULL },
+         { "0.90", NULL },
+         { "0.91", NULL },
+         { "0.92", NULL },
+         { "0.93", NULL },
+         { "0.94", NULL },
+         { "0.95", NULL },
+         { "0.96", NULL },
+         { "0.97", NULL },
+         { "0.98", NULL },
+         { "0.99", NULL },
+         { "1.00", NULL },
+         { "1.01", NULL },
+         { "1.02", NULL },
+         { "1.03", NULL },
+         { "1.04", NULL },
+         { "1.05", NULL },
+         { "1.06", NULL },
+         { "1.07", NULL },
+         { "1.08", NULL },
+         { "1.09", NULL },
+         { "1.10", NULL },
+         { "1.11", NULL },
+         { "1.12", NULL },
+         { "1.13", NULL },
+         { "1.14", NULL },
+         { "1.15", NULL },
+         { "1.16", NULL },
+         { "1.17", NULL },
+         { "1.18", NULL },
+         { "1.19", NULL },
+         { "1.20", NULL },
+         { "1.21", NULL },
+         { "1.22", NULL },
+         { "1.23", NULL },
+         { "1.24", NULL },
+         { "1.25", NULL },
          { NULL, NULL },
       },
-      "enabled",
+      "1",
    },
    {
       "pcsx_rearmed_dithering",
@@ -278,7 +516,7 @@ struct retro_core_option_definition option_defs_us[] = {
          { "enabled",  NULL },
          { NULL, NULL },
       },
-#ifdef HAVE_LIBNX
+#if defined HAVE_LIBNX || defined _3DS
          "disabled",
 #else
       "enabled",
@@ -297,10 +535,13 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "enabled",
    },
+#endif
+
+#if !defined(DRC_DISABLE) && !defined(LIGHTREC)
    {
       "pcsx_rearmed_psxclock",
       "PSX CPU Clock",
-#ifdef HAVE_PRE_ARMV7
+#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
       "Overclock or underclock the PSX clock. Default is 50",
 #else
       "Overclock or underclock the PSX clock. Default is 57",
@@ -379,15 +620,15 @@ struct retro_core_option_definition option_defs_us[] = {
          { "100", NULL },
          { NULL, NULL },
       },
-#ifdef HAVE_PRE_ARMV7
+#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
       "50",
 #else
       "57",
 #endif
    },
-#endif /* DRC_DISABLE */
+#endif /* !DRC_DISABLE && !LIGHTREC */
 
-#ifdef __ARM_NEON__
+#ifdef GPU_NEON
    {
       "pcsx_rearmed_neon_interlace_enable",
       "Enable Interlacing Mode",
@@ -421,7 +662,7 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "disabled",
    },
-#endif /* __ARM_NEON__ */
+#endif /* GPU_NEON */
 
    {
       "pcsx_rearmed_duping_enable",
@@ -604,7 +845,7 @@ struct retro_core_option_definition option_defs_us[] = {
          { "enabled",  NULL },
          { NULL, NULL},
       },
-      "enabled",
+      "disabled",
    },
    {
       "pcsx_rearmed_gpu_unai_ilace_force",
@@ -628,7 +869,36 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "disabled",
    },
+   {
+      "pcsx_rearmed_gpu_unai_scale_hires",
+      "(GPU) Enable Hi-Res Downscaling",
+      "When enabled, will scale hi-res modes to 320x240, skipping unrendered pixels.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+#ifdef _MIYOO
+      "enabled",
+#else
+      "disabled",
+#endif
+   },
 #endif /* GPU UNAI Advanced Settings */
+#ifdef THREAD_RENDERING
+   {
+      "pcsx_rearmed_gpu_thread_rendering",
+      "Threaded Rendering",
+      "When enabled, runs GPU commands in a thread. Sync waits for drawing to finish before vsync. Async will not wait unless there's another frame behind it.",
+      {
+         { "disabled", NULL },
+         { "sync",  NULL },
+         { "async",  NULL },
+         { NULL, NULL},
+      },
+      "disabled",
+   },
+#endif
 
    {
       "pcsx_rearmed_show_bios_bootlogo",
@@ -650,7 +920,11 @@ struct retro_core_option_definition option_defs_us[] = {
          { "enabled",  NULL },
          { NULL, NULL },
       },
+#ifdef HAVE_PRE_ARMV7
+      "disabled",
+#else
       "enabled",
+#endif
    },
    {
       "pcsx_rearmed_spu_interpolation",
@@ -663,11 +937,15 @@ struct retro_core_option_definition option_defs_us[] = {
          { "off",      "disabled" },
          { NULL, NULL },
       },
+#ifdef HAVE_PRE_ARMV7
+      "off",
+#else
       "simple",
+#endif
    },
    {
-      "pcsx_rearmed_idiablofix",
-      "Diablo Music Fix",
+      "pcsx_rearmed_pe2_fix",
+      "Parasite Eve 2/Vandal Hearts 1/2 Fix",
       NULL,
       {
          { "disabled", NULL },
@@ -677,9 +955,9 @@ struct retro_core_option_definition option_defs_us[] = {
       "disabled",
    },
    {
-      "pcsx_rearmed_pe2_fix",
-      "Parasite Eve 2/Vandal Hearts 1/2 Fix",
-      NULL,
+      "pcsx_rearmed_icache_emulation",
+      "Instruction Cache emulation",
+      "Enables or disables instruction cache emulation. Slower, but more accurate. Fails to run Spyro 2 PAL. This allows you to run F1 2001, Formula One Arcade, F1 99 and other games that may need instruction cache emulation. Interpreter only and partial on lightrec, does nothing on the ARMv7 backend.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
@@ -698,7 +976,20 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "disabled",
    },
-
+#ifndef _WIN32
+   {
+      "pcsx_rearmed_async_cd",
+      "CD Access Method (Restart)",
+      "Select method used to read data from content disk images. 'Synchronous' mimics original hardware. 'Asynchronous' can reduce stuttering on devices with slow storage. 'Precache' loads disk image into memory for faster access (CHD only).",
+      {
+         { "sync",     "Synchronous" },
+         { "async",    "Asynchronous" },
+         { "precache", "Precache" },
+         { NULL, NULL},
+      },
+      "sync",
+   },
+#endif
    /* ADVANCED OPTIONS */
    {
       "pcsx_rearmed_noxadecoding",
@@ -722,8 +1013,19 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "enabled",
    },
+   {
+      "pcsx_rearmed_spuirq",
+      "SPU IRQ Always Enabled",
+      "Compatibility tweak, should be left to off in most cases.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
 
-#ifndef DRC_DISABLE
+#if !defined(DRC_DISABLE) && !defined(LIGHTREC)
    {
       "pcsx_rearmed_nosmccheck",
       "(Speed Hack) Disable SMC Checks",
@@ -757,7 +1059,29 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "disabled",
    },
-#endif /* DRC_DISABLE */
+   {
+      "pcsx_rearmed_nostalls",
+      "Disable CPU/GTE stalls",
+      "Will cause some games to run too fast.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_nocompathacks",
+      "Disable compat hacks",
+      "Disables game-specific compatibility hacks.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+#endif /* !DRC_DISABLE && !LIGHTREC */
 
    { NULL, NULL, NULL, {{0}}, NULL },
 };