diff options
author | twinaphex | 2013-05-24 01:19:56 +0200 |
---|---|---|
committer | twinaphex | 2013-05-24 01:19:56 +0200 |
commit | a8f3f1d2071185633a8ccaa387e8d3c68fba5014 (patch) | |
tree | 68632d0ae61094a4be42f07af15b6c2252e2884b | |
parent | 6b5beb44bae19400acddc052b3e475e638f3d50c (diff) | |
download | pcsx_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.c | 45 |
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 } |