diff --git a/libctru/include/3ds/services/ns.h b/libctru/include/3ds/services/ns.h index 4f11036..5e787a3 100644 --- a/libctru/include/3ds/services/ns.h +++ b/libctru/include/3ds/services/ns.h @@ -24,6 +24,8 @@ Result NS_LaunchFIRM(u64 titleid); */ Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid); +/// Terminates the application from which this function is called +Result NS_TerminateTitle(void); /** * @brief Launches a title and the required firmware. * @param titleid ID of the title to launch, 0 for gamecard. diff --git a/libctru/source/services/ns.c b/libctru/source/services/ns.c index 11ddf39..29e607e 100644 --- a/libctru/source/services/ns.c +++ b/libctru/source/services/ns.c @@ -56,6 +56,18 @@ Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid) return (Result)cmdbuf[1]; } +Result NS_TerminateTitle(void) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x3,0,0); // 0x30000 + + if(R_FAILED(ret = svcSendSyncRequest(nsHandle)))return ret; + + return (Result)cmdbuf[1]; +} + Result NS_LaunchApplicationFIRM(u64 titleid, u32 flags) { Result ret = 0;