aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortwinaphex2013-05-24 01:19:56 +0200
committertwinaphex2013-05-24 01:19:56 +0200
commita8f3f1d2071185633a8ccaa387e8d3c68fba5014 (patch)
tree68632d0ae61094a4be42f07af15b6c2252e2884b
parent6b5beb44bae19400acddc052b3e475e638f3d50c (diff)
downloadpcsx_rearmed-a8f3f1d2071185633a8ccaa387e8d3c68fba5014.tar.gz
pcsx_rearmed-a8f3f1d2071185633a8ccaa387e8d3c68fba5014.tar.bz2
pcsx_rearmed-a8f3f1d2071185633a8ccaa387e8d3c68fba5014.zip
(Libretro) Add core options - Frameskip and (for ARM NEON only)
Software filter (None/Scale2x/Eagle2x)
-rw-r--r--frontend/libretro.c45
1 files changed, 33 insertions, 12 deletions
diff --git a/frontend/libretro.c b/frontend/libretro.c
index 8fb58b7..f212cdd 100644
--- a/frontend/libretro.c
+++ b/frontend/libretro.c
@@ -39,6 +39,8 @@ static int samples_sent, samples_to_send;
static int plugins_opened;
static int is_pal_mode;
+extern int soft_filter;
+
/* memory card data */
extern char Mcd1Data[MCD_SIZE];
extern char McdDisable[2];
@@ -232,18 +234,18 @@ void out_register_libretro(struct out_driver *drv)
/* libretro */
void retro_set_environment(retro_environment_t cb)
{
-#ifdef __ARM_NEON__
static const struct retro_variable vars[] = {
+ { "frameskip", "Frameskip; 0|1|2|3" },
+#ifdef __ARM_NEON__
+ { "soft_filter", "Software filter; none|scale2x|eagle2x" },
{ "neon_enhancement_enable", "Enhanced resolution (slow); disabled|enabled" },
+#endif
{ NULL, NULL },
};
environ_cb = cb;
cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars);
-#else
- environ_cb = cb;
-#endif
}
void retro_set_video_refresh(retro_video_refresh_t cb) { video_cb = cb; }
@@ -727,18 +729,37 @@ static const unsigned short retro_psx_map[] = {
static void update_variables(void)
{
-#ifdef __ARM_NEON__
struct retro_variable var;
+
var.value = NULL;
- var.key = "neon_enhancement_enable";
+ var.key = "frameskip";
- if (!environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || !var.value)
- return;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ pl_rearmed_cbs.frameskip = atoi(var.value);
+#ifdef __ARM_NEON__
+ var.value = NULL;
+ var.key = "soft_filter";
- if (strcmp(var.value, "disabled") == 0)
- pl_rearmed_cbs.gpu_neon.enhancement_enable = 0;
- else if (strcmp(var.value, "enabled") == 0)
- pl_rearmed_cbs.gpu_neon.enhancement_enable = 1;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ if (strcmp(var.value, "none"))
+ soft_filter = 0;
+ else if (strcmp(var.value, "scale2x"))
+ soft_filter = 1;
+ else if (strcmp(var.value, "eagle2x"))
+ soft_filter = 2;
+ }
+
+ var.value = NULL;
+ var.key = "neon_enhancement_enable";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_enable = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_enable = 1;
+ }
#endif
}