Add svcGetSystemInfo option to get booted firm path

This commit is contained in:
PabloMK7 2023-06-17 17:21:42 +02:00 committed by TuxSH
parent 82d689b485
commit 06c3215546
3 changed files with 16 additions and 1 deletions

View File

@ -44,6 +44,8 @@
#define K11EXT_VA 0x70000000 #define K11EXT_VA 0x70000000
extern u16 launchedPath[];
u8 *getProcess9Info(u8 *pos, u32 size, u32 *process9Size, u32 *process9MemAddr) u8 *getProcess9Info(u8 *pos, u32 size, u32 *process9Size, u32 *process9MemAddr)
{ {
u8 *temp = memsearch(pos, "NCCH", size, 4); u8 *temp = memsearch(pos, "NCCH", size, 4);
@ -139,6 +141,8 @@ u32 installK11Extension(u8 *pos, u32 size, bool needToInitSd, u32 baseK11VA, u32
u64 autobootTwlTitleId; u64 autobootTwlTitleId;
u8 autobootCtrAppmemtype; u8 autobootCtrAppmemtype;
u16 launchedPath[80+1];
} info; } info;
}; };
@ -226,6 +230,8 @@ u32 installK11Extension(u8 *pos, u32 size, bool needToInitSd, u32 baseK11VA, u32
if(needToInitSd) info->flags |= 1 << 5; if(needToInitSd) info->flags |= 1 << 5;
if(isSdMode) info->flags |= 1 << 6; if(isSdMode) info->flags |= 1 << 6;
memcpy(info->launchedPath, launchedPath, sizeof(info->launchedPath));
return 0; return 0;
} }

View File

@ -146,6 +146,8 @@ typedef struct CfwInfo
u64 autobootTwlTitleId; u64 autobootTwlTitleId;
u8 autobootCtrAppmemtype; u8 autobootCtrAppmemtype;
u16 launchedPath[80+1];
} CfwInfo; } CfwInfo;
extern CfwInfo cfwInfo; extern CfwInfo cfwInfo;

View File

@ -37,7 +37,14 @@ Result GetSystemInfoHook(s64 *out, s32 type, s32 param)
{ {
case 0x10000: case 0x10000:
{ {
switch(param) if (param >= 0x400 && param < 0x500) {
*out = 0;
s32 offset = param - 0x400;
s32 toCopy = (s32)sizeof(cfwInfo.launchedPath) - offset;
if (toCopy > 8) toCopy = 8;
memcpy(out, (u8*)cfwInfo.launchedPath + offset, (toCopy > 0) ? toCopy : 0);
}
else switch(param)
{ {
// Please do not use these, except 0, 1, and 0x200 // Please do not use these, except 0, 1, and 0x200
// Other types may get removed or reordered without notice // Other types may get removed or reordered without notice