diff --git a/arm9/source/launcher/AcekardLauncher.cpp b/arm9/source/launcher/AcekardLauncher.cpp index c292c2e..af7b059 100644 --- a/arm9/source/launcher/AcekardLauncher.cpp +++ b/arm9/source/launcher/AcekardLauncher.cpp @@ -46,6 +46,11 @@ bool AcekardLauncher::launchRom(std::string romPath, std::string savePath, u32 f dbg_printf("load %s\n", romPath.c_str()); + if (access("fat:/__rpg/akloader.nds", F_OK) != 0) { + printLoaderNotFound("fat:/__rpg/akloader.nds"); + return false; + } + // akloaders are very old and expect the old-style libfat mount points romPath.replace(0, 3, "fat0"); savePath.replace(0, 3, "fat0"); diff --git a/arm9/source/launcher/ILauncher.h b/arm9/source/launcher/ILauncher.h index 39b599d..e86d255 100644 --- a/arm9/source/launcher/ILauncher.h +++ b/arm9/source/launcher/ILauncher.h @@ -7,6 +7,12 @@ #pragma once #include +#include "../language.h" +#include "../ui/msgbox.h" + +static inline void printLoaderNotFound(std::string loaderPath) { + akui::messageBox(NULL, LANG("loader", "not found"), loaderPath, MB_OK); +} class ILauncher { public: diff --git a/arm9/source/launcher/NdsBootstrapLauncher.cpp b/arm9/source/launcher/NdsBootstrapLauncher.cpp index 426bb72..3122725 100644 --- a/arm9/source/launcher/NdsBootstrapLauncher.cpp +++ b/arm9/source/launcher/NdsBootstrapLauncher.cpp @@ -73,6 +73,12 @@ bool NdsBootstrapLauncher::prepareIni() { bool NdsBootstrapLauncher::launchRom(std::string romPath, std::string savePath, u32 flags, u32 cheatOffset, u32 cheatSize) { const char ndsBootstrapPath[] = SD_ROOT_0 "/_nds/nds-bootstrap-release.nds"; + + if (access(ndsBootstrapPath, F_OK) != 0) { + printLoaderNotFound(ndsBootstrapPath); + return false; + } + std::vector argv; mRomPath = romPath; diff --git a/arm9/source/launcher/PassMeLauncher.cpp b/arm9/source/launcher/PassMeLauncher.cpp index 88b8839..b584f67 100644 --- a/arm9/source/launcher/PassMeLauncher.cpp +++ b/arm9/source/launcher/PassMeLauncher.cpp @@ -16,6 +16,11 @@ bool PassMeLauncher::launchRom(std::string romPath, std::string savePath, u32 fl u32 cheatOffset, u32 cheatSize) { const char passMeLoaderPath[] = "fat:/__rpg/PassMeLoader.nds"; + if (access(passMeLoaderPath, F_OK) != 0) { + printLoaderNotFound(passMeLoaderPath); + return false; + } + std::vector argv; argv.push_back(passMeLoaderPath); eRunNdsRetCode rc = runNdsFile(argv[0], argv.size(), &argv[0]); diff --git a/language/English/language.txt b/language/English/language.txt index 3c36129..93a1ec6 100644 --- a/language/English/language.txt +++ b/language/English/language.txt @@ -275,5 +275,6 @@ favorites = Favorites [loader] text = Use ROM loader +not found = Loader not found [end]