1 #pragma once 2 3 #include "Types.h" 4 5 enum CONST_SIF_CMD 6 { 7 SIF_CMD_SETSREG = 0x80000001, 8 SIF_CMD_INIT = 0x80000002, 9 SIF_CMD_REND = 0x80000008, 10 SIF_CMD_BIND = 0x80000009, 11 SIF_CMD_CALL = 0x8000000A, 12 SIF_CMD_OTHERDATA = 0x8000000C, 13 }; 14 15 struct SIFDMAREG 16 { 17 uint32 srcAddr; 18 uint32 dstAddr; 19 uint32 size; 20 uint32 flags; 21 }; 22 static_assert(sizeof(SIFDMAREG) == 0x10, "sizeof(SIFDMAREG) must be 16 bytes."); 23 24 struct SIFCMDHEADER 25 { 26 uint32 packetSize : 8; 27 uint32 destSize : 24; 28 uint32 dest; 29 uint32 commandId; 30 uint32 optional; 31 }; 32 static_assert(sizeof(SIFCMDHEADER) == 0x10, "sizeof(SIFCMDHEADER) must be 16 bytes."); 33 34 struct SIFSETSREG 35 { 36 SIFCMDHEADER header; 37 uint32 index; 38 uint32 value; 39 }; 40 static_assert(sizeof(SIFSETSREG) == 0x18, "sizeof(SIFSETREG) must be 24 bytes."); 41 42 struct SIFRPCBIND 43 { 44 SIFCMDHEADER header; 45 uint32 recordId; 46 uint32 packetAddr; 47 uint32 rpcId; 48 uint32 clientDataAddr; 49 uint32 serverId; 50 }; 51 static_assert(sizeof(SIFRPCBIND) == 0x24, "sizeof(SIFRPCBIND) must be 36 bytes."); 52 53 struct SIFRPCCALL 54 { 55 SIFCMDHEADER header; 56 uint32 recordId; 57 uint32 packetAddr; 58 uint32 rpcId; 59 uint32 clientDataAddr; 60 uint32 rpcNumber; 61 uint32 sendSize; 62 uint32 recv; 63 uint32 recvSize; 64 uint32 recvMode; 65 uint32 serverDataAddr; 66 }; 67 static_assert(sizeof(SIFRPCCALL) == 0x38, "sizeof(SIFRPCCALL) must be 56 bytes."); 68 69 struct SIFRPCREQUESTEND 70 { 71 SIFCMDHEADER header; 72 uint32 recordId; 73 uint32 packetAddr; 74 uint32 rpcId; 75 uint32 clientDataAddr; 76 uint32 commandId; 77 uint32 serverDataAddr; 78 uint32 buffer; 79 uint32 cbuffer; 80 }; 81 static_assert(sizeof(SIFRPCREQUESTEND) == 0x30, "sizeof(SIFRPCREQUESTEND) must be 48 bytes."); 82 83 struct SIFRPCOTHERDATA 84 { 85 SIFCMDHEADER header; 86 uint32 recordId; 87 uint32 packetAddr; 88 uint32 rpcId; 89 uint32 receiveDataAddr; 90 uint32 srcPtr; 91 uint32 dstPtr; 92 uint32 size; 93 }; 94 static_assert(sizeof(SIFRPCOTHERDATA) == 0x2C, "sizeof(SIFRPCOTHERDATA) must be 44 bytes."); 95 96 struct SIFRPCHEADER 97 { 98 uint32 packetAddr; 99 uint32 rpcId; 100 uint32 semaId; 101 uint32 mode; 102 }; 103 static_assert(sizeof(SIFRPCHEADER) == 0x10, "sizeof(SIFRPCHEADER) must be 16 bytes."); 104 105 struct SIFRPCCLIENTDATA 106 { 107 SIFRPCHEADER header; 108 uint32 command; 109 uint32 buffPtr; 110 uint32 cbuffPtr; 111 uint32 endFctPtr; 112 uint32 endParam; 113 uint32 serverDataAddr; 114 }; 115 static_assert(sizeof(SIFRPCCLIENTDATA) == 0x28, "sizeof(SIFRPCCLIENTDATA) must be 40 bytes."); 116