diff --git a/arm9/src/bgMenu.cpp b/arm9/src/bgMenu.cpp index 75dca01..437ac30 100644 --- a/arm9/src/bgMenu.cpp +++ b/arm9/src/bgMenu.cpp @@ -46,7 +46,7 @@ static const auto& getBackgroundList() return bgs; } -std::span backgroundMenu() +std::optional> backgroundMenu() { //top screen clearScreen(&topScreen); @@ -88,15 +88,24 @@ std::span backgroundMenu() } } + if(programEnd) + return std::nullopt; + auto selection = static_cast(m->cursor); - if(selection > bgs.size()) + if(selection == bgs.size()) return {}; + else if (selection > bgs.size()) + { + return std::nullopt; + } try { const auto res = parseGif(bgs[selection].second.data(), currentlyLoadedGif, bgGetGfxPtr(bgGifTop)); + swiWaitForVBlank(); bgHide(topScreen.bgId); bgShow(bgGifTop); auto confirmed = (choiceBox("Confirm this background?") == YES); + swiWaitForVBlank(); bgShow(topScreen.bgId); bgHide(bgGifTop); if(confirmed) diff --git a/arm9/src/bgMenu.h b/arm9/src/bgMenu.h index 96bb4d4..f85d785 100644 --- a/arm9/src/bgMenu.h +++ b/arm9/src/bgMenu.h @@ -2,8 +2,9 @@ #define BGMENU_H #include +#include #include -std::span backgroundMenu(); +std::optional> backgroundMenu(); -#endif \ No newline at end of file +#endif diff --git a/arm9/src/main.cpp b/arm9/src/main.cpp index a498d32..8cbc510 100644 --- a/arm9/src/main.cpp +++ b/arm9/src/main.cpp @@ -620,7 +620,8 @@ void customBg() { { return; } - customBgSpan = backgroundMenu(); + if(auto newBg = backgroundMenu(); newBg.has_value()) + customBgSpan = *newBg; } void doMainMenu(consoleInfo& info) {