From bf7a850701b680c61ff66ff6ae144969078c8697 Mon Sep 17 00:00:00 2001 From: Pk11 Date: Tue, 30 Nov 2021 01:37:26 -0600 Subject: [PATCH] Fix power off, hide Reboot in DS mode --- arm9/source/startMenu.cpp | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/arm9/source/startMenu.cpp b/arm9/source/startMenu.cpp index f2a9054..d5acc61 100644 --- a/arm9/source/startMenu.cpp +++ b/arm9/source/startMenu.cpp @@ -7,10 +7,17 @@ #include #include +#include #define ITEMS_PER_SCREEN 8 -constexpr std::array startMenuItems = { +enum class StartMenuItem : u8 { + powerOff = 0, + reboot = 1, + langauge = 2 +}; + +constexpr std::array startMenuStrings = { &STR_POWER_OFF, &STR_REBOOT, &STR_LANGUAGE @@ -23,6 +30,20 @@ constexpr std::array, 3> languageList = {{ }}; void startMenu() { + std::vector startMenuItems; + if(isDSiMode()) { + startMenuItems = { + StartMenuItem::powerOff, + StartMenuItem::reboot, + StartMenuItem::langauge + }; + } else { + startMenuItems = { + StartMenuItem::powerOff, + StartMenuItem::langauge + }; + } + int cursorPosition = 0; u16 pressed, held; while(1) { @@ -30,9 +51,9 @@ void startMenu() { font->print(0, 3, false, STR_START_MENU, Alignment::center); for(int i = 0; i < (int)startMenuItems.size(); i++) { if(cursorPosition == i) - font->printf(0, 5 + i, false, Alignment::center, Palette::white, "> %s <", startMenuItems[i]->c_str()); + font->printf(0, 5 + i, false, Alignment::center, Palette::white, "> %s <", startMenuStrings[u8(startMenuItems[i])]->c_str()); else - font->print(0, 5 + i, false, startMenuItems[i]->c_str(), Alignment::center); + font->print(0, 5 + i, false, startMenuStrings[u8(startMenuItems[i])]->c_str(), Alignment::center); } font->print(0, 5 + startMenuItems.size() + 1, false, STR_A_SELECT_B_CANCEL, Alignment::center); font->update(false); @@ -53,15 +74,15 @@ void startMenu() { if(cursorPosition >= (int)startMenuItems.size()) cursorPosition = 0; } else if(pressed & KEY_A) { - switch(cursorPosition) { - case 0: // Power off - // TODO + switch(startMenuItems[cursorPosition]) { + case StartMenuItem::powerOff: + systemShutDown(); break; - case 1: // Reboot + case StartMenuItem::reboot: fifoSendValue32(FIFO_USER_02, 1); while(1) swiWaitForVBlank(); break; - case 2: // language + case StartMenuItem::langauge: languageMenu(); break; }