Play-/Source/SifDefs.h
2018-04-30 21:01:23 +01:00

116 lines
2.3 KiB
C

#pragma once
#include "Types.h"
enum CONST_SIF_CMD
{
SIF_CMD_SETSREG = 0x80000001,
SIF_CMD_INIT = 0x80000002,
SIF_CMD_REND = 0x80000008,
SIF_CMD_BIND = 0x80000009,
SIF_CMD_CALL = 0x8000000A,
SIF_CMD_OTHERDATA = 0x8000000C,
};
struct SIFDMAREG
{
uint32 srcAddr;
uint32 dstAddr;
uint32 size;
uint32 flags;
};
static_assert(sizeof(SIFDMAREG) == 0x10, "sizeof(SIFDMAREG) must be 16 bytes.");
struct SIFCMDHEADER
{
uint32 packetSize : 8;
uint32 destSize : 24;
uint32 dest;
uint32 commandId;
uint32 optional;
};
static_assert(sizeof(SIFCMDHEADER) == 0x10, "sizeof(SIFCMDHEADER) must be 16 bytes.");
struct SIFSETSREG
{
SIFCMDHEADER header;
uint32 index;
uint32 value;
};
static_assert(sizeof(SIFSETSREG) == 0x18, "sizeof(SIFSETREG) must be 24 bytes.");
struct SIFRPCBIND
{
SIFCMDHEADER header;
uint32 recordId;
uint32 packetAddr;
uint32 rpcId;
uint32 clientDataAddr;
uint32 serverId;
};
static_assert(sizeof(SIFRPCBIND) == 0x24, "sizeof(SIFRPCBIND) must be 36 bytes.");
struct SIFRPCCALL
{
SIFCMDHEADER header;
uint32 recordId;
uint32 packetAddr;
uint32 rpcId;
uint32 clientDataAddr;
uint32 rpcNumber;
uint32 sendSize;
uint32 recv;
uint32 recvSize;
uint32 recvMode;
uint32 serverDataAddr;
};
static_assert(sizeof(SIFRPCCALL) == 0x38, "sizeof(SIFRPCCALL) must be 56 bytes.");
struct SIFRPCREQUESTEND
{
SIFCMDHEADER header;
uint32 recordId;
uint32 packetAddr;
uint32 rpcId;
uint32 clientDataAddr;
uint32 commandId;
uint32 serverDataAddr;
uint32 buffer;
uint32 cbuffer;
};
static_assert(sizeof(SIFRPCREQUESTEND) == 0x30, "sizeof(SIFRPCREQUESTEND) must be 48 bytes.");
struct SIFRPCOTHERDATA
{
SIFCMDHEADER header;
uint32 recordId;
uint32 packetAddr;
uint32 rpcId;
uint32 receiveDataAddr;
uint32 srcPtr;
uint32 dstPtr;
uint32 size;
};
static_assert(sizeof(SIFRPCOTHERDATA) == 0x2C, "sizeof(SIFRPCOTHERDATA) must be 44 bytes.");
struct SIFRPCHEADER
{
uint32 packetAddr;
uint32 rpcId;
uint32 semaId;
uint32 mode;
};
static_assert(sizeof(SIFRPCHEADER) == 0x10, "sizeof(SIFRPCHEADER) must be 16 bytes.");
struct SIFRPCCLIENTDATA
{
SIFRPCHEADER header;
uint32 command;
uint32 buffPtr;
uint32 cbuffPtr;
uint32 endFctPtr;
uint32 endParam;
uint32 serverDataAddr;
};
static_assert(sizeof(SIFRPCCLIENTDATA) == 0x28, "sizeof(SIFRPCCLIENTDATA) must be 40 bytes.");