diff --git a/include/arm11/menu/menu_fb3ds.h b/include/arm11/menu/menu_fb3ds.h index 90cf0ab..aca2378 100644 --- a/include/arm11/menu/menu_fb3ds.h +++ b/include/arm11/menu/menu_fb3ds.h @@ -24,7 +24,7 @@ #define SUBMENU_SLOT_SETUP(x) \ { \ - "Boot Slot #" #x " Setup", 3, NULL, MENU_FLAG_SLOT(x), \ + "Boot Slot #" #x " Setup", 3, &menuPresetSlotConfig##x, MENU_FLAG_SLOT(x), \ { \ { "Select [slot " #x "] firm", DESC_FIRM_SLOT(x), &menuSetupBootSlot, (x-1)&0xF }, \ { "Select [slot " #x "] buttons", DESC_KEYS_SLOT(x), &menuSetupBootKeys, (x-1)&0xF }, \ diff --git a/include/arm11/menu/menu_func.h b/include/arm11/menu/menu_func.h index 1df0cc5..c97d610 100644 --- a/include/arm11/menu/menu_func.h +++ b/include/arm11/menu/menu_func.h @@ -23,6 +23,9 @@ u32 menuPresetBootMode(void); u32 menuPresetBootMenu(void); u32 menuPresetBootConfig(void); +u32 menuPresetSlotConfig1(void); +u32 menuPresetSlotConfig2(void); +u32 menuPresetSlotConfig3(void); u32 menuSetBootMode(PrintConsole* term_con, PrintConsole* menu_con, u32 param); u32 menuSetupBootSlot(PrintConsole* term_con, PrintConsole* menu_con, u32 param); diff --git a/source/arm11/menu/menu_func.c b/source/arm11/menu/menu_func.c index fcae2e5..8192f96 100644 --- a/source/arm11/menu/menu_func.c +++ b/source/arm11/menu/menu_func.c @@ -35,6 +35,12 @@ +#define PRESET_SLOT_CONFIG_FUNC(x) \ +u32 menuPresetSlotConfig##x(void) \ +{ \ + return menuPresetSlotConfig((x-1)); \ +} + u32 menuPresetBootMode(void) { if (configDataExist(KBootMode)) @@ -70,6 +76,22 @@ return res | menuPresetBootMenu(); } +u32 menuPresetSlotConfig(u32 slot) +{ + u32 res = 0; + + if (configDataExist(KBootOption1 + slot)) + res |= (1 << 0); + + if (configDataExist(KBootOption1Buttons + slot)) + res |= (1 << 1); + + return res; +} +PRESET_SLOT_CONFIG_FUNC(1) +PRESET_SLOT_CONFIG_FUNC(2) +PRESET_SLOT_CONFIG_FUNC(3) + u32 menuSetBootMode(PrintConsole* term_con, PrintConsole* menu_con, u32 param) { (void) term_con;