diff --git a/source/fs.c b/source/fs.c index 5ade819..f6c4430 100644 --- a/source/fs.c +++ b/source/fs.c @@ -88,6 +88,11 @@ void fileDelete(const char *path) f_unlink(path); } +void fileRename(const char *oldPath, const char *newPath) +{ + f_rename(oldPath, newPath); +} + u32 firmRead(void *dest) { const char *firmFolders[] = {"00000002", "20000002"}; diff --git a/source/fs.h b/source/fs.h index 058392e..080e647 100644 --- a/source/fs.h +++ b/source/fs.h @@ -29,4 +29,5 @@ void unmountCtrNand(void); u32 fileRead(void *dest, const char *path, u32 maxSize); bool fileWrite(const void *buffer, const char *path, u32 size); void fileDelete(const char *path); +void fileRename(const char *oldPath, const char *newPath); u32 firmRead(void *dest); \ No newline at end of file diff --git a/source/installer.c b/source/installer.c index 95e6173..aad2a61 100755 --- a/source/installer.c +++ b/source/installer.c @@ -206,6 +206,8 @@ static inline void installer(bool isOtpless) { magic = 0xDEADCAFE; + fileRename("arm9loaderhax.bin", "arm9loaderhax.bak"); + if(!fileWrite((void *)0x23F00000, "arm9loaderhax.bin", 0x10000)) shutdown(1, "Error: couldn't write arm9loaderhax.bin"); } @@ -273,7 +275,11 @@ static inline void installer(bool isOtpless) drawTitle(); - if(sdmmc_sdcard_init(true, false) && mountFs(true)) fileDelete("arm9loaderhax.bin"); + if(sdmmc_sdcard_init(true, false) && mountFs(true)) + { + fileDelete("arm9loaderhax.bin"); + fileRename("arm9loaderhax.bak", "arm9loaderhax.bin"); + } else { posY = drawString("Couldn't remove arm9loaderhax.bin!", 10, posY + SPACING_Y, COLOR_RED);