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
|
pload_header7_t gLoaderHeader
|
||||||
{
|
{
|
||||||
.entryPoint = (void*)&_start,
|
.entryPoint = (void*)&_start,
|
||||||
.apiVersion = PICO_LOADER_API_VERSION,
|
.apiVersion = PICO_LOADER_API_VERSION
|
||||||
.v2 =
|
|
||||||
{
|
|
||||||
.launcherPath = "/_picoboot.nds"
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
@@ -436,17 +436,21 @@ void NdsLoader::InsertArgv()
|
|||||||
|
|
||||||
void NdsLoader::HandleHomebrewPatching()
|
void NdsLoader::HandleHomebrewPatching()
|
||||||
{
|
{
|
||||||
sendToArm9(IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES);
|
if (_launcherPath != nullptr && _launcherPath[0] != 0)
|
||||||
sendToArm9(16 * 1024); // required dldi space
|
|
||||||
void* dldiSpace = (void*)receiveFromArm9();
|
|
||||||
char* launcherPath = (char*)receiveFromArm9();
|
|
||||||
if (dldiSpace != nullptr)
|
|
||||||
{
|
{
|
||||||
dldi_copyTo(dldiSpace);
|
sendToArm9(IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB);
|
||||||
}
|
sendToArm9(16 * 1024); // required dldi space
|
||||||
if (launcherPath != nullptr)
|
void* dldiSpace = (void*)receiveFromArm9();
|
||||||
{
|
char* launcherPath = (char*)receiveFromArm9();
|
||||||
strncpy(launcherPath, _launcherPath, 256);
|
if (dldiSpace != nullptr)
|
||||||
|
{
|
||||||
|
dldi_copyTo(dldiSpace);
|
||||||
|
}
|
||||||
|
if (launcherPath != nullptr)
|
||||||
|
{
|
||||||
|
strncpy(launcherPath, _launcherPath, 256);
|
||||||
|
launcherPath[255] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,9 +233,8 @@ static void handleBootCommand()
|
|||||||
bootArm9();
|
bootArm9();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleApplyHomebrewPatches(u32 dldiRequiredSpace)
|
static void handleSetupHomebrewBootstub(u32 dldiRequiredSpace)
|
||||||
{
|
{
|
||||||
// Insert bootstub
|
|
||||||
PatchHeap patchHeap;
|
PatchHeap patchHeap;
|
||||||
PatchCodeCollection patchCodeCollection;
|
PatchCodeCollection patchCodeCollection;
|
||||||
void* patchSpace = (void*)&HOMEBREW_BOOTSTUB[1];
|
void* patchSpace = (void*)&HOMEBREW_BOOTSTUB[1];
|
||||||
@@ -328,10 +327,10 @@ static void handleArm7Command(u32 command)
|
|||||||
handleBootCommand();
|
handleBootCommand();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES:
|
case IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB:
|
||||||
{
|
{
|
||||||
u32 dldiRequiredSpace = receiveFromArm7();
|
u32 dldiRequiredSpace = receiveFromArm7();
|
||||||
handleApplyHomebrewPatches(dldiRequiredSpace);
|
handleSetupHomebrewBootstub(dldiRequiredSpace);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define IPC_COMMAND_ARM9_WRAM_CONFIG 1
|
#define IPC_COMMAND_ARM9_WRAM_CONFIG 1
|
||||||
#define IPC_COMMAND_ARM9_CLEAR_MAIN_MEM 2
|
#define IPC_COMMAND_ARM9_CLEAR_MAIN_MEM 2
|
||||||
#define IPC_COMMAND_ARM9_APPLY_PATCHES 3
|
#define IPC_COMMAND_ARM9_APPLY_PATCHES 3
|
||||||
#define IPC_COMMAND_ARM9_APPLY_ARM7_PATCHES 4
|
#define IPC_COMMAND_ARM9_APPLY_ARM7_PATCHES 4
|
||||||
#define IPC_COMMAND_ARM9_SET_AP_INFO 5
|
#define IPC_COMMAND_ARM9_SET_AP_INFO 5
|
||||||
#define IPC_COMMAND_ARM9_SET_ROM_FILE_INFO 6
|
#define IPC_COMMAND_ARM9_SET_ROM_FILE_INFO 6
|
||||||
#define IPC_COMMAND_ARM9_INITIALIZE_SD_CARD 8
|
#define IPC_COMMAND_ARM9_INITIALIZE_SD_CARD 8
|
||||||
#define IPC_COMMAND_ARM9_INITIALIZE_LOADER_INFO 9
|
#define IPC_COMMAND_ARM9_INITIALIZE_LOADER_INFO 9
|
||||||
#define IPC_COMMAND_ARM9_GET_SD_FUNCTIONS 0xA
|
#define IPC_COMMAND_ARM9_GET_SD_FUNCTIONS 0xA
|
||||||
#define IPC_COMMAND_ARM9_DISPLAY_ERROR 0xB
|
#define IPC_COMMAND_ARM9_DISPLAY_ERROR 0xB
|
||||||
#define IPC_COMMAND_ARM9_SWITCH_TO_DS_MODE 0xD
|
#define IPC_COMMAND_ARM9_SWITCH_TO_DS_MODE 0xD
|
||||||
#define IPC_COMMAND_ARM9_BOOT 0xF
|
#define IPC_COMMAND_ARM9_BOOT 0xF
|
||||||
#define IPC_COMMAND_ARM9_APPLY_HOMEBREW_PATCHES 0x10
|
#define IPC_COMMAND_ARM9_SETUP_HOMEBREW_BOOTSTUB 0x10
|
||||||
|
|||||||
Reference in New Issue
Block a user