Previous release broke .dat booting from a 9.0 NAND if A9LH was installed
Also, more clean-up
This commit is contained in:
parent
9ab6d107b4
commit
a58cb05f2c
@ -26,6 +26,10 @@ char *firmPathPatched = NULL;
|
|||||||
|
|
||||||
void setupCFW(void){
|
void setupCFW(void){
|
||||||
|
|
||||||
|
//Determine if booting with A9LH via PDN_SPI_CNT
|
||||||
|
u8 a9lhBoot = (*(u8*)0x101401C0 == 0x0) ? 1 : 0;
|
||||||
|
//Retrieve the last booted FIRM via CFG_BOOTENV
|
||||||
|
u8 previousFirm = *(u8*)0x10010000;
|
||||||
u8 overrideConfig = 0;
|
u8 overrideConfig = 0;
|
||||||
char lastConfigPath[] = "rei/lastbootcfg";
|
char lastConfigPath[] = "rei/lastbootcfg";
|
||||||
|
|
||||||
@ -35,23 +39,23 @@ void setupCFW(void){
|
|||||||
//Get pressed buttons
|
//Get pressed buttons
|
||||||
pressed = HID_PAD;
|
pressed = HID_PAD;
|
||||||
|
|
||||||
//Determine if A9LH is installed via PDN_SPI_CNT and an user flag
|
//Determine if A9LH is installed
|
||||||
if((*(u8*)0x101401C0 == 0x0) || fileExists("/rei/installeda9lh")){
|
if(a9lhBoot || fileExists("/rei/installeda9lh")){
|
||||||
a9lhSetup = 1;
|
a9lhSetup = 1;
|
||||||
//Check flag for > 9.2 SysNAND
|
//Check flag for > 9.2 SysNAND
|
||||||
if(fileExists("/rei/updatedsysnand")) updatedSys = 1;
|
if(fileExists("/rei/updatedsysnand")) updatedSys = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//If using A9LH and it's a MCU reboot, try to force boot options
|
//If booting with A9LH and it's a MCU reboot, try to force boot options
|
||||||
if(a9lhSetup && *(u8*)0x10010000 && fileExists(lastConfigPath)){
|
if(a9lhBoot && previousFirm && fileExists(lastConfigPath)){
|
||||||
u8 tempConfig;
|
u8 tempConfig;
|
||||||
fileRead((u8*)&tempConfig, lastConfigPath, 1);
|
fileRead((u8*)&tempConfig, lastConfigPath, 1);
|
||||||
|
|
||||||
//Always force a sysNAND boot when quitting AGB_FIRM
|
//Always force a sysNAND boot when quitting AGB_FIRM
|
||||||
if(*(u8*)0x10010000 == 0x7) {
|
if(previousFirm == 0x7) {
|
||||||
if(!updatedSys) mode = tempConfig & 0x1;
|
if(!updatedSys) mode = tempConfig & 0x1;
|
||||||
overrideConfig = 1;
|
overrideConfig = 1;
|
||||||
//Else, force the last boot options unless A is pressed
|
//Else, force the last used boot options unless A is pressed
|
||||||
} else if(!(pressed & BUTTON_A)) {
|
} else if(!(pressed & BUTTON_A)) {
|
||||||
mode = tempConfig & 0x1;
|
mode = tempConfig & 0x1;
|
||||||
emuNAND = (tempConfig >> 1) & 0x1;
|
emuNAND = (tempConfig >> 1) & 0x1;
|
||||||
@ -71,7 +75,7 @@ void setupCFW(void){
|
|||||||
(!updatedSys && mode && !(pressed & BUTTON_R1))) emuNAND = 1;
|
(!updatedSys && mode && !(pressed & BUTTON_R1))) emuNAND = 1;
|
||||||
|
|
||||||
//Write the current boot options on A9LH
|
//Write the current boot options on A9LH
|
||||||
if(a9lhSetup){
|
if(a9lhBoot){
|
||||||
u8 tempConfig = (mode | (emuNAND << 1)) & 0x3;
|
u8 tempConfig = (mode | (emuNAND << 1)) & 0x3;
|
||||||
fileWrite((u8*)&tempConfig, lastConfigPath, 1);
|
fileWrite((u8*)&tempConfig, lastConfigPath, 1);
|
||||||
}
|
}
|
||||||
|
10
source/fs.c
10
source/fs.c
@ -18,16 +18,6 @@ int mountSD()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unmountSD()
|
|
||||||
{
|
|
||||||
if (f_mount(NULL, "0:", 1) != FR_OK) {
|
|
||||||
//printF("Failed to mount SD card!");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
//printF("Unmounted SD card");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fileReadOffset(u8 *dest, const char *path, u32 size, u32 offset){
|
int fileReadOffset(u8 *dest, const char *path, u32 size, u32 offset){
|
||||||
FRESULT fr;
|
FRESULT fr;
|
||||||
FIL fp;
|
FIL fp;
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
int mountSD();
|
int mountSD();
|
||||||
int unmountSD();
|
|
||||||
int fileReadOffset(u8 *dest, const char *path, u32 size, u32 offset);
|
int fileReadOffset(u8 *dest, const char *path, u32 size, u32 offset);
|
||||||
int fileRead(u8 *dest, const char *path, u32 size);
|
int fileRead(u8 *dest, const char *path, u32 size);
|
||||||
int fileWrite(const u8 *buffer, const char *path, u32 size);
|
int fileWrite(const u8 *buffer, const char *path, u32 size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user