diff --git a/injector/source/patcher.c b/injector/source/patcher.c index 4242cd2..a2e63c3 100644 --- a/injector/source/patcher.c +++ b/injector/source/patcher.c @@ -19,18 +19,6 @@ typedef struct __attribute__((packed)) CFWInfo info = {0}; -int __attribute__((naked)) svcGetCFWInfo(CFWInfo __attribute__((unused)) *out) -{ - __asm__ volatile("svc 0x2E; bx lr"); -} - -static void loadCFWInfo(void) -{ - static bool infoLoaded = false; - if(!infoLoaded) svcGetCFWInfo(&info); - infoLoaded = true; -} - #ifndef PATH_MAX #define PATH_MAX 255 #define CONFIG(a) (((info.config >> (a + 16)) & 1) != 0) @@ -118,6 +106,26 @@ static int fileOpen(IFile *file, FS_ArchiveID archiveId, const char *path, int f return IFile_Open(file, archiveId, archivePath, filePath, flags); } +int __attribute__((naked)) svcGetCFWInfo(CFWInfo __attribute__((unused)) *out) +{ + __asm__ volatile("svc 0x2E; bx lr"); +} + +static void loadCFWInfo(void) +{ + static bool infoLoaded = false; + if(!infoLoaded) + { + svcGetCFWInfo(&info); + IFile file; + if(R_SUCCEEDED(fileOpen(&file, ARCHIVE_SDMC, "/", FS_OPEN_READ))) //init SD card for firmlaunch patches + { + IFile_Close(&file); + } + } + infoLoaded = true; +} + static bool secureInfoExists(void) { static bool exists = false; @@ -584,4 +592,4 @@ void patchCode(u64 progId, u8 *code, u32 size) break; } -} \ No newline at end of file +} diff --git a/source/draw.c b/source/draw.c index b23bc09..e715554 100644 --- a/source/draw.c +++ b/source/draw.c @@ -43,7 +43,7 @@ static inline int strlen(const char *string) bool loadSplash(void) { //Don't delay boot nor init the screens if no splash image is on the SD - if(getFileSize("/luma/splash.bin") + getFileSize("/luma/splash.bin") == 0) + if(getFileSize("/luma/splash.bin") + getFileSize("/luma/splashbottom.bin") == 0) return false; initScreens(); @@ -98,4 +98,4 @@ int drawString(const char *string, int posX, int posY, u32 color) } return posY; -} \ No newline at end of file +}