Compatibility with A9NC > 0.1.3

... this breaks compatibility with all versions <= 0.1.3
This commit is contained in:
d0k3 2018-02-21 02:00:53 +01:00
parent 8b21d0209b
commit bba90f14ad

View File

@ -1890,19 +1890,19 @@ u32 GodMode(int entrypoint) {
u32 last_write_perm = GetWritePermissions();
u32 last_clipboard_size = 0;
bool bootloader = IS_SIGHAX && (entrypoint == ENTRY_NANDBOOT);
bool bootmenu = bootloader && (BOOTMENU_KEY != BUTTON_START) && CheckButton(BOOTMENU_KEY);
bool godmode9 = !bootloader;
// FIRM from FCRAM handling
FirmHeader* firm_in_mem = (FirmHeader*) __FIRMTMP_ADDR; // should be safe here
memcpy(firm_in_mem, "NOPE", 4); // to prevent bootloops
if (bootloader) { // check for FIRM in FCRAM, but prevent bootloops
for (u8* addr = (u8*) __FCRAM0_ADDR + 0x200; addr < (u8*) __HEAP_END; addr += 0x400000) { // don't search the stack
if (memcmp(addr - 0x200, "A9NC", 4) != 0) continue;
u32 firm_size = GetFirmSize((FirmHeader*) (void*) addr);
if (!firm_size || (firm_size > (0x400000 - 0x200))) continue;
if (memcmp(firm_in_mem, "FIRM", 4) != 0) memmove(firm_in_mem, addr, firm_size);
if (memcmp(addr, "FIRM", 4) == 0) memcpy(addr, "NOPE", 4); // prevent bootloops
void* addr = (void*) __FIRMRAM_ADDR;
u32 firm_size = GetFirmSize((FirmHeader*) addr);
memcpy(firm_in_mem, "NOPE", 4); // overwrite header to prevent bootloops
if (firm_size && (firm_size <= (__FIRMRAM_END - __FIRMRAM_ADDR))) {
memcpy(firm_in_mem, addr, firm_size);
memcpy(addr, "NOPE", 4); // to prevent bootloops
}
}