/// Exits NS.
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.
* @param titleid ID of the title to launch, or 0 for gamecard.
*/
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.
* @param mediatype Mediatype of the title.
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 ret = 0;
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 ret = 0;