mirror of
https://github.com/azahar-emu/ArticBaseServer
synced 2025-11-07 07:30:04 +01:00
97 lines
3.1 KiB
C++
97 lines
3.1 KiB
C++
#include "3ds.h"
|
|
#include <3ds/result.h>
|
|
#include <3ds/svc.h>
|
|
#include "amExtension.hpp"
|
|
|
|
Result AM_GetTitleInfoIgnorePlatform(FS_MediaType mediatype, u32 titleCount, u64 *titleIds, AM_TitleEntry *titleInfo)
|
|
{
|
|
Result ret = 0;
|
|
u32 *cmdbuf = getThreadCommandBuffer();
|
|
|
|
cmdbuf[0] = IPC_MakeHeader(0x2C,2,4); // 0x002C0084
|
|
cmdbuf[1] = mediatype;
|
|
cmdbuf[2] = titleCount;
|
|
cmdbuf[3] = IPC_Desc_Buffer(titleCount*sizeof(u64),IPC_BUFFER_R);
|
|
cmdbuf[4] = (u32)titleIds;
|
|
cmdbuf[5] = IPC_Desc_Buffer(titleCount*sizeof(AM_TitleEntry),IPC_BUFFER_W);
|
|
cmdbuf[6] = (u32)titleInfo;
|
|
|
|
if(R_FAILED(ret = svcSendSyncRequest(*amGetSessionHandle()))) return ret;
|
|
|
|
return (Result)cmdbuf[1];
|
|
}
|
|
|
|
Result AMAPP_FindDLCContentInfos(FS_MediaType mediatype, u64 title_id, u32 contentCount, u16 *contentIds, AM_ContentInfo *contentInfos)
|
|
{
|
|
Result ret = 0;
|
|
u32 *cmdbuf = getThreadCommandBuffer();
|
|
|
|
cmdbuf[0] = IPC_MakeHeader(0x1002,4,4); // 0x10020104
|
|
cmdbuf[1] = mediatype;
|
|
*(u64*)(&cmdbuf[2]) = title_id;
|
|
cmdbuf[4] = contentCount;
|
|
cmdbuf[5] = IPC_Desc_Buffer(contentCount*sizeof(u16),IPC_BUFFER_R);
|
|
cmdbuf[6] = (u32)contentIds;
|
|
cmdbuf[7] = IPC_Desc_Buffer(contentCount*sizeof(AM_ContentInfo),IPC_BUFFER_W);
|
|
cmdbuf[8] = (u32)contentInfos;
|
|
|
|
if(R_FAILED(ret = svcSendSyncRequest(*amGetSessionHandle()))) return ret;
|
|
|
|
return (Result)cmdbuf[1];
|
|
}
|
|
|
|
Result AMAPP_GetDLCTitleInfos(FS_MediaType mediatype, u32 titleCount, u64 *titleIds, AM_TitleEntry *titleInfo)
|
|
{
|
|
Result ret = 0;
|
|
u32 *cmdbuf = getThreadCommandBuffer();
|
|
|
|
cmdbuf[0] = IPC_MakeHeader(0x1005,2,4); // 0x10050084
|
|
cmdbuf[1] = mediatype;
|
|
cmdbuf[2] = titleCount;
|
|
cmdbuf[3] = IPC_Desc_Buffer(titleCount*sizeof(u64),IPC_BUFFER_R);
|
|
cmdbuf[4] = (u32)titleIds;
|
|
cmdbuf[5] = IPC_Desc_Buffer(titleCount*sizeof(AM_TitleEntry),IPC_BUFFER_W);
|
|
cmdbuf[6] = (u32)titleInfo;
|
|
|
|
if(R_FAILED(ret = svcSendSyncRequest(*amGetSessionHandle()))) return ret;
|
|
|
|
return (Result)cmdbuf[1];
|
|
}
|
|
|
|
Result AMAPP_ListDataTitleTicketInfos(u32* ticketReadCount, u64 titleID, u32 ticketInfoCount, u32 offset, AM_TicketInfo* ticketInfos)
|
|
{
|
|
Result ret = 0;
|
|
u32 *cmdbuf = getThreadCommandBuffer();
|
|
|
|
cmdbuf[0] = (IPC_MakeHeader(0x1007,4,2)); // 0x10070102
|
|
cmdbuf[1] = ticketInfoCount;
|
|
cmdbuf[2] = titleID & 0xffffffff;
|
|
cmdbuf[3] = (u32)(titleID >> 32);
|
|
cmdbuf[4] = offset;
|
|
cmdbuf[5] = IPC_Desc_Buffer(ticketInfoCount * sizeof(AM_TicketInfo), IPC_BUFFER_W);
|
|
cmdbuf[6] = (u32)ticketInfos;
|
|
|
|
if(R_FAILED(ret = svcSendSyncRequest(*amGetSessionHandle()))) return ret;
|
|
|
|
*ticketReadCount = cmdbuf[2];
|
|
|
|
return (Result)cmdbuf[1];
|
|
}
|
|
|
|
Result AMAPP_GetPatchTitleInfos(FS_MediaType mediatype, u32 titleCount, u64 *titleIds, AM_TitleEntry *titleInfo)
|
|
{
|
|
Result ret = 0;
|
|
u32 *cmdbuf = getThreadCommandBuffer();
|
|
|
|
cmdbuf[0] = IPC_MakeHeader(0x100D,2,4); // 0x100D0084
|
|
cmdbuf[1] = mediatype;
|
|
cmdbuf[2] = titleCount;
|
|
cmdbuf[3] = IPC_Desc_Buffer(titleCount*sizeof(u64),IPC_BUFFER_R);
|
|
cmdbuf[4] = (u32)titleIds;
|
|
cmdbuf[5] = IPC_Desc_Buffer(titleCount*sizeof(AM_TitleEntry),IPC_BUFFER_W);
|
|
cmdbuf[6] = (u32)titleInfo;
|
|
|
|
if(R_FAILED(ret = svcSendSyncRequest(*amGetSessionHandle()))) return ret;
|
|
|
|
return (Result)cmdbuf[1];
|
|
} |