diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 66e650b72..3c5b278bb 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -288,6 +288,12 @@ static void _reloadSettings(void) { mCoreConfigSetDefaultIntValue(&core->config, "sgb.borders", strcmp(var.value, "ON") == 0); } + var.key = "mgba_gb_colors_preset"; + var.value = 0; + if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + mCoreConfigSetDefaultIntValue(&core->config, "gb.colors", strtol(var.value, NULL, 10)); + } + _updateGbPal(); #endif diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index ca1b6514e..dba9078a4 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -138,6 +138,22 @@ struct retro_core_option_v2_definition option_defs_us[] = { }, "Grayscale" }, + { + "mgba_gb_colors_preset", + "Hardware Preset Game Boy Palettes (Restart)", + NULL, + "Use the palettes for Game Boy games that have presets on the Game Boy Color or Super Game Boy.", + NULL, + "video", + { + { "0", "" }, + { "1", "Game Boy Color presets only" }, + { "2", "Super Game Boy presets only" }, + { "3", "Any available presets" }, + { NULL, NULL }, + }, + "ON" + }, { "mgba_sgb_borders", "Use Super Game Boy Borders (Restart)",