Implement NS_LaunchFIRM and NS_LaunchApplicationFIRM (#316)
This commit is contained in:
parent
bd34fd59db
commit
0eb70a4350
@ -10,6 +10,12 @@ Result nsInit(void);
|
|||||||
/// Exits NS.
|
/// Exits NS.
|
||||||
void nsExit(void);
|
void nsExit(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Launches a title and the required firmware (only if necessary).
|
||||||
|
* @param titleid ID of the title to launch, 0 for gamecard, JPN System Settings' titleID for System Settings.
|
||||||
|
*/
|
||||||
|
Result NS_LaunchFIRM(u64 titleid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Launches a title.
|
* @brief Launches a title.
|
||||||
* @param titleid ID of the title to launch, or 0 for gamecard.
|
* @param titleid ID of the title to launch, or 0 for gamecard.
|
||||||
@ -18,6 +24,13 @@ void nsExit(void);
|
|||||||
*/
|
*/
|
||||||
Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid);
|
Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Launches a title and the required firmware.
|
||||||
|
* @param titleid ID of the title to launch, 0 for gamecard.
|
||||||
|
* @param flags Flags for firm-launch. bit0: require an application title-info structure in FIRM paramters to be specified via FIRM parameters. bit1: if clear, NS will check certain Configuration Memory fields.
|
||||||
|
*/
|
||||||
|
Result NS_LaunchApplicationFIRM(u64 titleid, u32 flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reboots to a title.
|
* @brief Reboots to a title.
|
||||||
* @param mediatype Mediatype of the title.
|
* @param mediatype Mediatype of the title.
|
||||||
|
@ -25,6 +25,20 @@ void nsExit(void)
|
|||||||
svcCloseHandle(nsHandle);
|
svcCloseHandle(nsHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result NS_LaunchFIRM(u64 titleid)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x1,3,0); // 0x100C0
|
||||||
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(nsHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid)
|
Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -42,6 +56,21 @@ Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result NS_LaunchApplicationFIRM(u64 titleid, u32 flags)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x5,3,0); // 0x500C0
|
||||||
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
|
cmdbuf[3] = flags;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(nsHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
Result NS_RebootToTitle(u8 mediatype, u64 titleid)
|
Result NS_RebootToTitle(u8 mediatype, u64 titleid)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user