Use IPC helpers for pm
This commit is contained in:
parent
d97d5f26a4
commit
8dd1bbb0ce
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/pm.h>
|
#include <3ds/services/pm.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle pmHandle;
|
static Handle pmHandle;
|
||||||
|
|
||||||
@ -22,7 +23,7 @@ Result PM_LaunchTitle(u8 mediatype, u64 titleid, u32 launch_flags)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010140;
|
cmdbuf[0] = IPC_MakeHeader(0x1,5,0); // 0x10140
|
||||||
cmdbuf[1] = titleid & 0xffffffff;
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = mediatype;
|
cmdbuf[3] = mediatype;
|
||||||
@ -39,7 +40,7 @@ Result PM_GetTitleExheaderFlags(u8 mediatype, u64 titleid, u8* out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00080100;
|
cmdbuf[0] = IPC_MakeHeader(0x8,4,0); // 0x80100
|
||||||
cmdbuf[1] = titleid & 0xffffffff;
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = mediatype;
|
cmdbuf[3] = mediatype;
|
||||||
@ -57,9 +58,9 @@ Result PM_SetFIRMLaunchParams(u32 size, u8* in)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090042;
|
cmdbuf[0] = IPC_MakeHeader(0x9,1,2); // 0x90042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = (size << 0x4) | 0xa;
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[3] = (u32)in;
|
cmdbuf[3] = (u32)in;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
||||||
@ -72,9 +73,9 @@ Result PM_GetFIRMLaunchParams(u32 size, u8* out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070042;
|
cmdbuf[0] = IPC_MakeHeader(0x7,1,2); // 0x70042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = (size << 0x4) | 0xc;
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[3] = (u32)out;
|
cmdbuf[3] = (u32)out;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
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;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020082;
|
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x20082
|
||||||
cmdbuf[1] = firm_titleid_low;
|
cmdbuf[1] = firm_titleid_low;
|
||||||
cmdbuf[2] = size;
|
cmdbuf[2] = size;
|
||||||
cmdbuf[3] = (size << 0x4) | 0xa;
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[4] = (u32)in;
|
cmdbuf[4] = (u32)in;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user