Add "Return to Home Menu" button for consoles with broken Home Buttons (#2143)

This commit is contained in:
Angel Martin 2025-12-12 12:39:16 -08:00 committed by GitHub
parent 4cfca3c55d
commit db639a80c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 31 additions and 1 deletions

View File

@ -62,7 +62,7 @@ typedef struct MenuItem {
typedef struct Menu { typedef struct Menu {
const char *title; const char *title;
MenuItem items[24]; MenuItem items[25];
} Menu; } Menu;
extern u32 menuCombo; extern u32 menuCombo;

View File

@ -36,6 +36,7 @@ void RosalinaMenu_TakeScreenshot(void);
void RosalinaMenu_ShowCredits(void); void RosalinaMenu_ShowCredits(void);
void RosalinaMenu_ProcessList(void); void RosalinaMenu_ProcessList(void);
void RosalinaMenu_SaveSettings(void); void RosalinaMenu_SaveSettings(void);
void RosalinaMenu_HomeMenu(void);
void RosalinaMenu_Cheats(void); void RosalinaMenu_Cheats(void);
void RosalinaMenu_PowerOffOrReboot(void); void RosalinaMenu_PowerOffOrReboot(void);

View File

@ -55,6 +55,7 @@ Menu rosalinaMenu = {
{ "System configuration...", MENU, .menu = &sysconfigMenu }, { "System configuration...", MENU, .menu = &sysconfigMenu },
{ "Miscellaneous options...", MENU, .menu = &miscellaneousMenu }, { "Miscellaneous options...", MENU, .menu = &miscellaneousMenu },
{ "Save settings", METHOD, .method = &RosalinaMenu_SaveSettings }, { "Save settings", METHOD, .method = &RosalinaMenu_SaveSettings },
{ "Return To Home Menu", METHOD, .method = &RosalinaMenu_HomeMenu },
{ "Power off / reboot", METHOD, .method = &RosalinaMenu_PowerOffOrReboot }, { "Power off / reboot", METHOD, .method = &RosalinaMenu_PowerOffOrReboot },
{ "System info", METHOD, .method = &RosalinaMenu_ShowSystemInfo }, { "System info", METHOD, .method = &RosalinaMenu_ShowSystemInfo },
{ "Credits", METHOD, .method = &RosalinaMenu_ShowCredits }, { "Credits", METHOD, .method = &RosalinaMenu_ShowCredits },
@ -301,6 +302,34 @@ static Result RosalinaMenu_WriteScreenshot(IFile *file, u32 width, bool top, boo
return res; return res;
} }
void RosalinaMenu_HomeMenu(void) {
Draw_Lock();
Draw_ClearFramebuffer();
Draw_FlushFramebuffer();
Draw_Unlock();
do {
Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- Return to Home");
srvPublishToSubscriber(0x204, 0);
Draw_Lock();
Draw_ClearFramebuffer();
Draw_DrawString(10, 30, COLOR_WHITE, "Exit Rosalina to get back to the Home Menu.");
Draw_DrawString(10, 40, COLOR_WHITE, "Press A to confirm");
Draw_FlushFramebuffer();
Draw_Unlock();
u32 pressed = waitInputWithTimeout(1000);
if(pressed & KEY_A)
return;
else if(pressed & KEY_B)
return;
}
while(!menuShouldExit);
}
void RosalinaMenu_TakeScreenshot(void) void RosalinaMenu_TakeScreenshot(void)
{ {
IFile file = {0}; IFile file = {0};