Replace "Enable splash screen with no screen-init" by "Display splash screen before payloads".
The screens will be initied if and only if there are splash files to display.
This commit is contained in:
parent
457b4cec13
commit
3bc966f84e
@ -42,7 +42,7 @@ void configureCFW(const char *configPath)
|
|||||||
"( ) Enable region/language emu. and ext. .code",
|
"( ) Enable region/language emu. and ext. .code",
|
||||||
"( ) Show current NAND in System Settings",
|
"( ) Show current NAND in System Settings",
|
||||||
"( ) Show GBA boot screen in patched AGB_FIRM",
|
"( ) Show GBA boot screen in patched AGB_FIRM",
|
||||||
"( ) Enable splash screen with no screen-init",
|
"( ) Display splash screen before payloads",
|
||||||
"( ) Use a PIN" };
|
"( ) Use a PIN" };
|
||||||
|
|
||||||
struct multiOption {
|
struct multiOption {
|
||||||
|
@ -42,13 +42,16 @@ static inline int strlen(const char *string)
|
|||||||
|
|
||||||
bool loadSplash(void)
|
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)
|
||||||
|
return false;
|
||||||
|
|
||||||
initScreens();
|
initScreens();
|
||||||
|
|
||||||
//Don't delay boot if no splash image is on the SD
|
fileRead(fb->top_left, "/luma/splash.bin");
|
||||||
if(fileRead(fb->top_left, "/luma/splash.bin") +
|
fileRead(fb->bottom, "/luma/splashbottom.bin");
|
||||||
fileRead(fb->bottom, "/luma/splashbottom.bin")) return true;
|
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawCharacter(char character, int posX, int posY, u32 color)
|
void drawCharacter(char character, int posX, int posY, u32 color)
|
||||||
|
@ -179,14 +179,23 @@ void main(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* If L and R/A/Select or one of the single payload buttons are pressed,
|
/* If L and R/A/Select or one of the single payload buttons are pressed,
|
||||||
chainload an external payload (verify the PIN if needed)*/
|
chainload an external payload (the PIN, if any, has been verified)*/
|
||||||
|
|
||||||
|
if(CONFIG(6) && loadSplash())
|
||||||
|
{
|
||||||
|
nbChronoStarted = 2;
|
||||||
|
chrono(0);
|
||||||
|
chrono(3);
|
||||||
|
nbChronoStarted = 0;
|
||||||
|
pressed = HID_PAD;
|
||||||
|
}
|
||||||
|
|
||||||
bool shouldLoadPayload = (pressed & SINGLE_PAYLOAD_BUTTONS) || ((pressed & BUTTON_L1) && (pressed & L_PAYLOAD_BUTTONS));
|
bool shouldLoadPayload = (pressed & SINGLE_PAYLOAD_BUTTONS) || ((pressed & BUTTON_L1) && (pressed & L_PAYLOAD_BUTTONS));
|
||||||
|
|
||||||
if(shouldLoadPayload)
|
if(shouldLoadPayload)
|
||||||
loadPayload(pressed);
|
loadPayload(pressed, nbChronoStarted != 2);
|
||||||
|
|
||||||
//If screens are inited or the corresponding option is set, load splash screen
|
if(!CONFIG(6) && loadSplash())
|
||||||
if((PDN_GPU_CNT != 1 || CONFIG(6)) && loadSplash())
|
|
||||||
{
|
{
|
||||||
nbChronoStarted = 2;
|
nbChronoStarted = 2;
|
||||||
chrono(0);
|
chrono(0);
|
||||||
|
10
source/fs.c
10
source/fs.c
@ -46,6 +46,7 @@ u32 fileRead(void *dest, const char *path)
|
|||||||
{
|
{
|
||||||
unsigned int read;
|
unsigned int read;
|
||||||
size = f_size(&file);
|
size = f_size(&file);
|
||||||
|
if(dest != NULL)
|
||||||
f_read(&file, dest, size, &read);
|
f_read(&file, dest, size, &read);
|
||||||
f_close(&file);
|
f_close(&file);
|
||||||
}
|
}
|
||||||
@ -54,6 +55,11 @@ u32 fileRead(void *dest, const char *path)
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 getFileSize(const char *path)
|
||||||
|
{
|
||||||
|
return fileRead(NULL, path);
|
||||||
|
}
|
||||||
|
|
||||||
bool fileWrite(const void *buffer, const char *path, u32 size)
|
bool fileWrite(const void *buffer, const char *path, u32 size)
|
||||||
{
|
{
|
||||||
FIL file;
|
FIL file;
|
||||||
@ -75,7 +81,7 @@ void createDirectory(const char *path)
|
|||||||
f_mkdir(path);
|
f_mkdir(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadPayload(u32 pressed)
|
void loadPayload(u32 pressed, bool needToInitScreens)
|
||||||
{
|
{
|
||||||
const char *pattern;
|
const char *pattern;
|
||||||
|
|
||||||
@ -100,7 +106,7 @@ void loadPayload(u32 pressed)
|
|||||||
|
|
||||||
if(result == FR_OK && info.fname[0])
|
if(result == FR_OK && info.fname[0])
|
||||||
{
|
{
|
||||||
initScreens();
|
if(needToInitScreens) initScreens();
|
||||||
|
|
||||||
u32 *const loaderAddress = (u32 *)0x24FFFF00;
|
u32 *const loaderAddress = (u32 *)0x24FFFF00;
|
||||||
|
|
||||||
|
@ -30,7 +30,8 @@ extern bool isN3DS;
|
|||||||
|
|
||||||
void mountFs(void);
|
void mountFs(void);
|
||||||
u32 fileRead(void *dest, const char *path);
|
u32 fileRead(void *dest, const char *path);
|
||||||
|
u32 getFileSize(const char *path);
|
||||||
bool fileWrite(const void *buffer, const char *path, u32 size);
|
bool fileWrite(const void *buffer, const char *path, u32 size);
|
||||||
void createDirectory(const char *path);
|
void createDirectory(const char *path);
|
||||||
void loadPayload(u32 pressed);
|
void loadPayload(u32 pressed, bool needToInitScreens);
|
||||||
u32 firmRead(void *dest, u32 firmType);
|
u32 firmRead(void *dest, u32 firmType);
|
Reference in New Issue
Block a user