X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=8b67f17fef56f044f778e8fde8ec668b38d84bf7;hb=2c67e0e80f01116f7ce95cbe7161a9c331516fe2;hp=8fb58b791c5d6a7d23a24fec4f0ae5a1d7866db4;hpb=6b5beb44bae19400acddc052b3e475e638f3d50c;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 8fb58b79..8b67f17f 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -232,18 +232,19 @@ 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" }, + { "region", "Region; Auto|NTSC|PAL" }, +#ifdef __ARM_NEON__ + { "neon_interlace_enable", "Enable interlacing mode(s); disabled|enabled" }, { "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 +728,50 @@ 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) + pl_rearmed_cbs.frameskip = atoi(var.value); - if (!environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || !var.value) - return; + var.value = NULL; + var.key = "region"; - 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) + { + Config.PsxAuto = 0; + if (strcmp(var.value, "Automatic") == 0) + Config.PsxAuto = 1; + else if (strcmp(var.value, "NTSC") == 0) + Config.PsxType = 0; + else if (strcmp(var.value, "PAL") == 0) + Config.PsxType = 1; + } +#ifdef __ARM_NEON__ + var.value = "NULL"; + var.key = "neon_interlace_enable"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value) + { + if (strcmp(var.value, "disabled") == 0) + pl_rearmed_cbs.gpu_neon.allow_interlace = 0; + else if (strcmp(var.value, "enabled") == 0) + pl_rearmed_cbs.gpu_neon.allow_interlace = 1; + } + + + 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 }