Add svcGetSystemInfo option to get booted firm path
This commit is contained in:
parent
82d689b485
commit
06c3215546
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user