Use IPC helpers for pm

This commit is contained in:
Lectem 2015-09-09 15:56:27 -04:00
parent d97d5f26a4
commit 8dd1bbb0ce

View File

@ -4,6 +4,7 @@
#include <3ds/svc.h>
#include <3ds/srv.h>
#include <3ds/services/pm.h>
#include <3ds/ipc.h>
static Handle pmHandle;
@ -22,7 +23,7 @@ Result PM_LaunchTitle(u8 mediatype, u64 titleid, u32 launch_flags)
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00010140;
cmdbuf[0] = IPC_MakeHeader(0x1,5,0); // 0x10140
cmdbuf[1] = titleid & 0xffffffff;
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
cmdbuf[3] = mediatype;
@ -39,7 +40,7 @@ Result PM_GetTitleExheaderFlags(u8 mediatype, u64 titleid, u8* out)
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00080100;
cmdbuf[0] = IPC_MakeHeader(0x8,4,0); // 0x80100
cmdbuf[1] = titleid & 0xffffffff;
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
cmdbuf[3] = mediatype;
@ -57,9 +58,9 @@ Result PM_SetFIRMLaunchParams(u32 size, u8* in)
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00090042;
cmdbuf[0] = IPC_MakeHeader(0x9,1,2); // 0x90042
cmdbuf[1] = size;
cmdbuf[2] = (size << 0x4) | 0xa;
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
cmdbuf[3] = (u32)in;
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
@ -72,9 +73,9 @@ Result PM_GetFIRMLaunchParams(u32 size, u8* out)
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00070042;
cmdbuf[0] = IPC_MakeHeader(0x7,1,2); // 0x70042
cmdbuf[1] = size;
cmdbuf[2] = (size << 0x4) | 0xc;
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
cmdbuf[3] = (u32)out;
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
@ -87,10 +88,10 @@ Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in)
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00020082;
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x20082
cmdbuf[1] = firm_titleid_low;
cmdbuf[2] = size;
cmdbuf[3] = (size << 0x4) | 0xa;
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
cmdbuf[4] = (u32)in;
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;