diff --git a/source/crypto.c b/source/crypto.c index 589fbc8..b82ae90 100755 --- a/source/crypto.c +++ b/source/crypto.c @@ -380,7 +380,6 @@ void arm9Loader(u8 *arm9Section) { //Determine the arm9loader version u32 a9lVersion; - switch(arm9Section[0x53]) { case 0xFF: diff --git a/source/draw.c b/source/draw.c index ae34f46..4a98161 100644 --- a/source/draw.c +++ b/source/draw.c @@ -46,7 +46,7 @@ bool loadSplash(void) //Don't delay boot if no splash image is on the SD if(fileRead(fb->top_left, "/luma/splash.bin") + - fileRead(fb->bottom, "/luma/splashbottom.bin") != 0) return true; + fileRead(fb->bottom, "/luma/splashbottom.bin")) return true; return false; } diff --git a/source/firm.c b/source/firm.c index 74fc484..d1a1f0a 100755 --- a/source/firm.c +++ b/source/firm.c @@ -285,7 +285,7 @@ static inline void patchNativeFirm(u32 firmVersion, FirmwareSource nandType, u32 //Apply FIRM0/1 writes patches on sysNAND to protect A9LH else if(isA9lh) patchFirmWrites(process9Offset, process9Size); - //Apply firmlaunch patches, not on 9.0 FIRM as it breaks firmlaunchhax + //Apply firmlaunch patches patchFirmlaunches(process9Offset, process9Size, process9MemAddr); //11.0 FIRM patches @@ -294,6 +294,7 @@ static inline void patchNativeFirm(u32 firmVersion, FirmwareSource nandType, u32 //Apply anti-anti-DG patches patchTitleInstallMinVersionCheck(process9Offset, process9Size); + //Restore SVCBackdoor reimplementSvcBackdoor((u8 *)firm + section[1].offset, section[1].size); } } diff --git a/source/fs.c b/source/fs.c index fb9f107..080327f 100644 --- a/source/fs.c +++ b/source/fs.c @@ -133,7 +133,7 @@ u32 firmRead(void *dest, u32 firmType) f_opendir(&dir, path); - u32 id = 0xFFFFFFFF; + u32 firmVersion = 0xFFFFFFFF; //Parse the target directory while(f_readdir(&dir, &info) == FR_OK && info.fname[0]) @@ -142,15 +142,15 @@ u32 firmRead(void *dest, u32 firmType) if(info.altname[9] != 'A') continue; //Convert the .app name to an integer - u32 tempId = 0; + u32 tempVersion = 0; for(char *tmp = info.altname; *tmp != '.'; tmp++) { - tempId <<= 4; - tempId += *tmp > '9' ? *tmp - 'A' + 10 : *tmp - '0'; + tempVersion <<= 4; + tempVersion += *tmp > '9' ? *tmp - 'A' + 10 : *tmp - '0'; } //Found an older cxi - if(tempId < id) id = tempId; + if(tempVersion < firmVersion) firmVersion = tempVersion; } f_closedir(&dir); @@ -162,16 +162,15 @@ u32 firmRead(void *dest, u32 firmType) u32 i = 42; //Convert back the .app name from integer to array - u32 tempId = id; - - while(tempId) + u32 tempVersion = firmVersion; + while(tempVersion) { static const char hexDigits[] = "0123456789ABCDEF"; - path[i--] = hexDigits[tempId & 0xF]; - tempId >>= 4; + path[i--] = hexDigits[tempVersion & 0xF]; + tempVersion >>= 4; } fileRead(dest, path); - return id; + return firmVersion; } \ No newline at end of file diff --git a/source/screen.c b/source/screen.c index 5a317f0..b56a1e5 100644 --- a/source/screen.c +++ b/source/screen.c @@ -32,7 +32,8 @@ #include "draw.h" #include "i2c.h" -vu32 *arm11Entry = (vu32 *)0x1FFFFFF8; +vu32 *const arm11Entry = (vu32 *)0x1FFFFFF8; +static const u32 brightness[4] = {0x5F, 0x4C, 0x39, 0x26}; void __attribute__((naked)) arm11Stub(void) { @@ -46,14 +47,13 @@ void __attribute__((naked)) arm11Stub(void) ((void (*)())*arm11Entry)(); } -static inline void invokeArm11Function(void (*func)()) +static void invokeArm11Function(void (*func)()) { static bool hasCopiedStub = false; - if(!hasCopiedStub) { - memcpy((void *)ARM11_STUB_ADDRESS, arm11Stub, 0x40); - flushDCacheRange((void *)ARM11_STUB_ADDRESS, 0x40); + memcpy((void *)ARM11_STUB_ADDRESS, arm11Stub, 0x30); + flushDCacheRange((void *)ARM11_STUB_ADDRESS, 0x30); hasCopiedStub = true; } @@ -62,8 +62,6 @@ static inline void invokeArm11Function(void (*func)()) *arm11Entry = ARM11_STUB_ADDRESS; } -static const u32 brightness[4] = {0x5F, 0x4C, 0x39, 0x26}; - void deinitScreens(void) { void __attribute__((naked)) ARM11(void) @@ -85,7 +83,6 @@ void deinitScreens(void) void updateBrightness(u32 brightnessIndex) { static u32 brightnessLevel; - brightnessLevel = brightness[brightnessIndex]; void __attribute__((naked)) ARM11(void)