From d898288100e0c02875fb6a1e565e048386ea9cb9 Mon Sep 17 00:00:00 2001 From: retro-wertz Date: Tue, 30 Jul 2019 00:51:06 +0800 Subject: [PATCH] Automatically hide some core options depending on rom image type - loading gba games will automatically hide gb/gbc only related core options at startup - loading a gb/gbc game will also hide gba only options... --- src/libretro/libretro.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/libretro/libretro.cpp b/src/libretro/libretro.cpp index bf1aa312..d77f730f 100644 --- a/src/libretro/libretro.cpp +++ b/src/libretro/libretro.cpp @@ -1204,6 +1204,41 @@ static void update_variables(bool startup) int val = (!strcmp(var.value, "enabled")) ? 1 : 0; set_gbColorCorrection(val); } + + // Hide some core options depending on rom image type + if (startup) { + unsigned i; + struct retro_core_option_display option_display; + char gb_options[5][25] = { + "vbam_palettes", + "vbam_gbHardware", + "vbam_allowcolorizerhack", + "vbam_showborders", + "vbam_gbcoloroption" + }; + char gba_options[4][22] = { + "vbam_solarsensor", + "vbam_sound_5", + "vbam_sound_6", + "vbam_gyro_sensitivity" + }; + + // Show or hide GB/GBC only options + option_display.visible = (type == IMAGE_GB) ? 1 : 0; + for (i = 0; i < 5; i++) + { + option_display.key = gb_options[i]; + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY, &option_display); + } + + // Show or hide GBA only options + option_display.visible = (type == IMAGE_GBA) ? 1 : 0; + for (i = 0; i < 4; i++) + { + option_display.key = gba_options[i]; + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY, &option_display); + } + } } // System analog stick range is -0x7fff to 0x7fff