mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-06-02 01:06:50 +02:00
Only setup homebrew bootstub when launcherPath is set
This commit is contained in:
@@ -10,9 +10,5 @@ extern u8 __bss_size[];
|
||||
pload_header7_t gLoaderHeader
|
||||
{
|
||||
.entryPoint = (void*)&_start,
|
||||
.apiVersion = PICO_LOADER_API_VERSION,
|
||||
.v2 =
|
||||
{
|
||||
.launcherPath = "/_picoboot.nds"
|
||||
}
|
||||
.apiVersion = PICO_LOADER_API_VERSION
|
||||
};
|
||||
@@ -436,17 +436,21 @@ void NdsLoader::InsertArgv()
|
||||
|
||||
void NdsLoader::HandleHomebrewPatching()
|
||||
{
|
||||
sendToArm9(IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES);
|
||||
sendToArm9(16 * 1024); // required dldi space
|
||||
void* dldiSpace = (void*)receiveFromArm9();
|
||||
char* launcherPath = (char*)receiveFromArm9();
|
||||
if (dldiSpace != nullptr)
|
||||
if (_launcherPath != nullptr && _launcherPath[0] != 0)
|
||||
{
|
||||
dldi_copyTo(dldiSpace);
|
||||
}
|
||||
if (launcherPath != nullptr)
|
||||
{
|
||||
strncpy(launcherPath, _launcherPath, 256);
|
||||
sendToArm9(IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB);
|
||||
sendToArm9(16 * 1024); // required dldi space
|
||||
void* dldiSpace = (void*)receiveFromArm9();
|
||||
char* launcherPath = (char*)receiveFromArm9();
|
||||
if (dldiSpace != nullptr)
|
||||
{
|
||||
dldi_copyTo(dldiSpace);
|
||||
}
|
||||
if (launcherPath != nullptr)
|
||||
{
|
||||
strncpy(launcherPath, _launcherPath, 256);
|
||||
launcherPath[255] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -233,9 +233,8 @@ static void handleBootCommand()
|
||||
bootArm9();
|
||||
}
|
||||
|
||||
static void handleApplyHomebrewPatches(u32 dldiRequiredSpace)
|
||||
static void handleSetupHomebrewBootstub(u32 dldiRequiredSpace)
|
||||
{
|
||||
// Insert bootstub
|
||||
PatchHeap patchHeap;
|
||||
PatchCodeCollection patchCodeCollection;
|
||||
void* patchSpace = (void*)&HOMEBREW_BOOTSTUB[1];
|
||||
@@ -328,10 +327,10 @@ static void handleArm7Command(u32 command)
|
||||
handleBootCommand();
|
||||
break;
|
||||
}
|
||||
case IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES:
|
||||
case IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB:
|
||||
{
|
||||
u32 dldiRequiredSpace = receiveFromArm7();
|
||||
handleApplyHomebrewPatches(dldiRequiredSpace);
|
||||
handleSetupHomebrewBootstub(dldiRequiredSpace);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#define IPC_COMMAND_ARM9_WRAM_CONFIG 1
|
||||
#define IPC_COMMAND_ARM9_CLEAR_MAIN_MEM 2
|
||||
#define IPC_COMMAND_ARM9_APPLY_PATCHES 3
|
||||
#define IPC_COMMAND_ARM9_APPLY_ARM7_PATCHES 4
|
||||
#define IPC_COMMAND_ARM9_SET_AP_INFO 5
|
||||
#define IPC_COMMAND_ARM9_SET_ROM_FILE_INFO 6
|
||||
#define IPC_COMMAND_ARM9_INITIALIZE_SD_CARD 8
|
||||
#define IPC_COMMAND_ARM9_INITIALIZE_LOADER_INFO 9
|
||||
#define IPC_COMMAND_ARM9_GET_SD_FUNCTIONS 0xA
|
||||
#define IPC_COMMAND_ARM9_DISPLAY_ERROR 0xB
|
||||
#define IPC_COMMAND_ARM9_SWITCH_TO_DS_MODE 0xD
|
||||
#define IPC_COMMAND_ARM9_BOOT 0xF
|
||||
#define IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES 0x10
|
||||
#define IPC_COMMAND_ARM9_WRAM_CONFIG 1
|
||||
#define IPC_COMMAND_ARM9_CLEAR_MAIN_MEM 2
|
||||
#define IPC_COMMAND_ARM9_APPLY_PATCHES 3
|
||||
#define IPC_COMMAND_ARM9_APPLY_ARM7_PATCHES 4
|
||||
#define IPC_COMMAND_ARM9_SET_AP_INFO 5
|
||||
#define IPC_COMMAND_ARM9_SET_ROM_FILE_INFO 6
|
||||
#define IPC_COMMAND_ARM9_INITIALIZE_SD_CARD 8
|
||||
#define IPC_COMMAND_ARM9_INITIALIZE_LOADER_INFO 9
|
||||
#define IPC_COMMAND_ARM9_GET_SD_FUNCTIONS 0xA
|
||||
#define IPC_COMMAND_ARM9_DISPLAY_ERROR 0xB
|
||||
#define IPC_COMMAND_ARM9_SWITCH_TO_DS_MODE 0xD
|
||||
#define IPC_COMMAND_ARM9_BOOT 0xF
|
||||
#define IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB 0x10
|
||||
|
||||
Reference in New Issue
Block a user