#pragma once #include "sceNet.h" #include "sceNpCommon.h" struct SceNpMatching2MemoryInfo { le_t totalMemSize; le_t curMemUsage; le_t maxMemUsage; u8 reserved[12]; }; struct SceNpMatching2SessionPassword { u8 data[8]; }; struct SceNpMatching2PresenceOptionData { u8 data[16]; le_t len; }; struct SceNpMatching2IntAttr { le_t id; u8 padding[2]; le_t num; }; struct SceNpMatching2BinAttr { le_t id; u8 padding[2]; vm::lptr ptr; le_t size; }; struct SceNpMatching2RangeFilter { le_t startIndex; le_t max; }; struct SceNpMatching2IntSearchFilter { u8 searchOperator; u8 padding[3]; SceNpMatching2IntAttr attr; }; struct SceNpMatching2BinSearchFilter { u8 searchOperator; u8 padding[3]; SceNpMatching2BinAttr attr; }; struct SceNpMatching2Range { le_t startIndex; le_t total; le_t resultCount; }; struct SceNpMatching2JoinedSessionInfo { u8 sessionType; u8 padding1[1]; le_t serverId; le_t worldId; le_t lobbyId; le_t roomId; le_t joinDate; }; struct SceNpMatching2UserInfo { vm::lptr next; SceNpId npId; vm::lptr userBinAttr; le_t userBinAttrNum; vm::lptr joinedSessionInfo; le_t joinedSessionInfoNum; }; struct SceNpMatching2Server { le_t serverId; u8 status; u8 padding[1]; }; struct SceNpMatching2World { vm::lptr next; le_t worldId; le_t numOfLobby; le_t maxNumOfTotalLobbyMember; le_t curNumOfTotalLobbyMember; le_t curNumOfRoom; le_t curNumOfTotalRoomMember; b8 withEntitlementId; SceNpEntitlementId entitlementId; u8 padding[3]; }; struct SceNpMatching2LobbyMemberBinAttrInternal { le_t updateDate; SceNpMatching2BinAttr data; u8 padding[4]; }; struct SceNpMatching2LobbyMemberDataInternal { vm::lptr next; SceNpId npId; le_t joinDate; le_t memberId; u8 padding[2]; le_t flagAttr; vm::lptr joinedSessionInfo; le_t joinedSessionInfoNum; vm::lptr lobbyMemberBinAttrInternal; le_t lobbyMemberBinAttrInternalNum; }; struct SceNpMatching2LobbyMemberIdList { vm::lptr memberId; le_t memberIdNum; le_t me; u8 padding[6]; }; struct SceNpMatching2LobbyBinAttrInternal { le_t updateDate; le_t updateMemberId; u8 padding[2]; SceNpMatching2BinAttr data; }; struct SceNpMatching2LobbyDataExternal { vm::lptr next; le_t serverId; u8 padding1[2]; le_t worldId; u8 padding2[4]; le_t lobbyId; le_t maxSlot; le_t curMemberNum; le_t flagAttr; vm::lptr lobbySearchableIntAttrExternal; le_t lobbySearchableIntAttrExternalNum; vm::lptr lobbySearchableBinAttrExternal; le_t lobbySearchableBinAttrExternalNum; vm::lptr lobbyBinAttrExternal; le_t lobbyBinAttrExternalNum; u8 padding3[4]; }; struct SceNpMatching2LobbyDataInternal { le_t serverId; u8 padding1[2]; le_t worldId; le_t lobbyId; le_t maxSlot; SceNpMatching2LobbyMemberIdList memberIdList; le_t flagAttr; vm::lptr lobbyBinAttrInternal; le_t lobbyBinAttrInternalNum; }; union SceNpMatching2LobbyMessageDestination { le_t unicastTarget; struct { vm::lptr memberId; le_t memberIdNum; } multicastTarget; }; struct SceNpMatching2GroupLabel { u8 data[8]; }; struct SceNpMatching2RoomGroupConfig { le_t slotNum; b8 withLabel; SceNpMatching2GroupLabel label; b8 withPassword; u8 padding[2]; }; struct SceNpMatching2RoomGroupPasswordConfig { u8 groupId; b8 withPassword; u8 padding[1]; }; struct SceNpMatching2RoomMemberBinAttrInternal { le_t updateDate; SceNpMatching2BinAttr data; u8 padding[4]; }; struct SceNpMatching2RoomGroup { u8 groupId; b8 withPassword; b8 withLabel; u8 padding[1]; SceNpMatching2GroupLabel label; le_t slotNum; le_t curGroupMemberNum; }; struct SceNpMatching2RoomMemberDataExternal { vm::lptr next; SceNpId npId; le_t joinDate; u8 role; u8 padding[7]; }; struct SceNpMatching2RoomMemberDataInternal { vm::lptr next; SceNpId npId; le_t joinDate; le_t memberId; u8 teamId; u8 padding1[1]; vm::lptr roomGroup; u8 natType; u8 padding2[3]; le_t flagAttr; vm::lptr roomMemberBinAttrInternal; le_t roomMemberBinAttrInternalNum; }; struct SceNpMatching2RoomMemberDataInternalList { vm::lptr members; le_t membersNum; vm::lptr me; vm::lptr owner; }; struct SceNpMatching2RoomBinAttrInternal { le_t updateDate; le_t updateMemberId; u8 padding[2]; SceNpMatching2BinAttr data; }; struct SceNpMatching2RoomDataExternal { vm::lptr next; le_t maxSlot; le_t curMemberNum; le_t serverId; u8 padding[2]; le_t worldId; le_t lobbyId; le_t roomId; le_t passwordSlotMask; le_t joinedSlotMask; le_t publicSlotNum; le_t privateSlotNum; le_t openPublicSlotNum; le_t openPrivateSlotNum; vm::lptr owner; le_t flagAttr; vm::lptr roomGroup; le_t roomGroupNum; vm::lptr roomSearchableIntAttrExternal; le_t roomSearchableIntAttrExternalNum; vm::lptr roomSearchableBinAttrExternal; le_t roomSearchableBinAttrExternalNum; vm::lptr roomBinAttrExternal; le_t roomBinAttrExternalNum; }; struct SceNpMatching2RoomDataInternal { le_t maxSlot; le_t serverId; le_t worldId; le_t lobbyId; le_t roomId; le_t passwordSlotMask; le_t joinedSlotMask; le_t publicSlotNum; le_t privateSlotNum; le_t openPublicSlotNum; le_t openPrivateSlotNum; SceNpMatching2RoomMemberDataInternalList memberList; vm::lptr roomGroup; le_t roomGroupNum; le_t flagAttr; u8 padding[4]; vm::lptr roomBinAttrInternal; le_t roomBinAttrInternalNum; }; union SceNpMatching2RoomMessageDestination { le_t unicastTarget; struct { vm::lptr memberId; le_t memberIdNum; } multicastTarget; u8 multicastTargetTeamId; }; struct SceNpMatching2InvitationData { vm::lptr targetSession; le_t targetSessionNum; vm::lptr optData; le_t optDataLen; }; using SceNpMatching2RequestCallback = void(u16 ctxId, u32 reqId, u16 event, s32 errorCode, vm::cptr data, vm::ptr arg); using SceNpMatching2LobbyEventCallback = void(u16 ctxId, u64 lobbyId, u16 event, s32 errorCode, vm::cptr data, vm::ptr arg); using SceNpMatching2RoomEventCallback = void(u16 ctxId, u64 roomId, u16 event, s32 errorCode, vm::cptr data, vm::ptr arg); using SceNpMatching2LobbyMessageCallback = void(u16 ctxId, u64 lobbyId, u16 srcMemberId, u16 event, s32 errorCode, vm::cptr data, vm::ptr arg); using SceNpMatching2RoomMessageCallback = void(u16 ctxId, u64 roomId, u16 srcMemberId, u16 event, s32 errorCode, vm::cptr data, vm::ptr arg); using SceNpMatching2SignalingCallback = void(u16 ctxId, u64 roomId, u16 peerMemberId, u16 event, s32 errorCode, vm::ptr arg); using SceNpMatching2ContextCallback = void(u16 ctxId, u16 event, u8 eventCause, s32 errorCode, vm::ptr arg); struct SceNpMatching2RequestOptParam { vm::lptr cbFunc; vm::lptr cbFuncArg; le_t timeout; le_t appReqId; u8 padding[2]; }; struct SceNpMatching2GetWorldInfoListRequest { le_t serverId; }; struct SceNpMatching2GetWorldInfoListResponse { vm::lptr world; le_t worldNum; }; struct SceNpMatching2SetUserInfoRequest { le_t serverId; u8 padding[2]; vm::lptr userBinAttr; le_t userBinAttrNum; }; struct SceNpMatching2GetUserInfoListRequest { le_t serverId; u8 padding[2]; vm::lptr npId; le_t npIdNum; vm::lptr attrId; le_t attrIdNum; le_t option; }; struct SceNpMatching2GetUserInfoListResponse { vm::lptr userInfo; le_t userInfoNum; }; struct SceNpMatching2GetRoomMemberDataExternalListRequest { le_t roomId; }; struct SceNpMatching2GetRoomMemberDataExternalListResponse { vm::lptr roomMemberDataExternal; le_t roomMemberDataExternalNum; }; struct SceNpMatching2SetRoomDataExternalRequest { le_t roomId; vm::lptr roomSearchableIntAttrExternal; le_t roomSearchableIntAttrExternalNum; vm::lptr roomSearchableBinAttrExternal; le_t roomSearchableBinAttrExternalNum; vm::lptr roomBinAttrExternal; le_t roomBinAttrExternalNum; }; struct SceNpMatching2GetRoomDataExternalListRequest { vm::lptr roomId; le_t roomIdNum; vm::lcptr attrId; le_t attrIdNum; }; struct SceNpMatching2GetRoomDataExternalListResponse { vm::lptr roomDataExternal; le_t roomDataExternalNum; }; struct SceNpMatching2SignalingOptParam { u8 type; u8 flag; le_t hubMemberId; u8 reserved2[4]; }; struct SceNpMatching2CreateJoinRoomRequest { le_t worldId; u8 padding1[4]; le_t lobbyId; le_t maxSlot; le_t flagAttr; vm::lptr roomBinAttrInternal; le_t roomBinAttrInternalNum; vm::lptr roomSearchableIntAttrExternal; le_t roomSearchableIntAttrExternalNum; vm::lptr roomSearchableBinAttrExternal; le_t roomSearchableBinAttrExternalNum; vm::lptr roomBinAttrExternal; le_t roomBinAttrExternalNum; vm::lptr roomPassword; vm::lptr groupConfig; le_t groupConfigNum; vm::lptr passwordSlotMask; vm::lptr allowedUser; le_t allowedUserNum; vm::lptr blockedUser; le_t blockedUserNum; vm::lptr joinRoomGroupLabel; vm::lptr roomMemberBinAttrInternal; le_t roomMemberBinAttrInternalNum; u8 teamId; u8 padding2[3]; vm::lptr sigOptParam; u8 padding3[4]; }; struct SceNpMatching2CreateJoinRoomResponse { vm::lptr roomDataInternal; }; struct SceNpMatching2JoinRoomRequest { le_t roomId; vm::lptr roomPassword; vm::lptr joinRoomGroupLabel; vm::lptr roomMemberBinAttrInternal; le_t roomMemberBinAttrInternalNum; SceNpMatching2PresenceOptionData optData; u8 teamId; u8 padding[3]; vm::lptr blockedUser; le_t blockedUserNum; }; struct SceNpMatching2JoinRoomResponse { vm::lptr roomDataInternal; }; struct SceNpMatching2LeaveRoomRequest { le_t roomId; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2GrantRoomOwnerRequest { le_t roomId; le_t newOwner; u8 padding[2]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2KickoutRoomMemberRequest { le_t roomId; le_t target; u8 blockKickFlag; u8 padding[1]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2SearchRoomRequest { le_t option; le_t worldId; le_t lobbyId; SceNpMatching2RangeFilter rangeFilter; le_t flagFilter; le_t flagAttr; vm::lptr intFilter; le_t intFilterNum; vm::lptr binFilter; le_t binFilterNum; vm::lptr attrId; le_t attrIdNum; }; struct SceNpMatching2SearchRoomResponse { SceNpMatching2Range range; vm::lptr roomDataExternal; }; struct SceNpMatching2SendRoomMessageRequest { le_t roomId; u8 castType; u8 padding[3]; SceNpMatching2RoomMessageDestination dst; vm::lcptr msg; le_t msgLen; le_t option; }; struct SceNpMatching2SendRoomChatMessageRequest { le_t roomId; u8 castType; u8 padding[3]; SceNpMatching2RoomMessageDestination dst; vm::lcptr msg; le_t msgLen; le_t option; }; struct SceNpMatching2SendRoomChatMessageResponse { b8 filtered; }; struct SceNpMatching2SetRoomDataInternalRequest { le_t roomId; le_t flagFilter; le_t flagAttr; vm::lptr roomBinAttrInternal; le_t roomBinAttrInternalNum; vm::lptr passwordConfig; le_t passwordConfigNum; vm::lptr passwordSlotMask; vm::lptr ownerPrivilegeRank; le_t ownerPrivilegeRankNum; u8 padding[4]; }; struct SceNpMatching2GetRoomDataInternalRequest { le_t roomId; vm::lcptr attrId; le_t attrIdNum; }; struct SceNpMatching2GetRoomDataInternalResponse { vm::lptr roomDataInternal; }; struct SceNpMatching2SetRoomMemberDataInternalRequest { le_t roomId; le_t memberId; u8 teamId; u8 padding[5]; le_t flagFilter; le_t flagAttr; vm::lptr roomMemberBinAttrInternal; le_t roomMemberBinAttrInternalNum; }; struct SceNpMatching2GetRoomMemberDataInternalRequest { le_t roomId; le_t memberId; u8 padding[6]; vm::lcptr attrId; le_t attrIdNum; }; struct SceNpMatching2GetRoomMemberDataInternalResponse { vm::lptr roomMemberDataInternal; }; struct SceNpMatching2SetSignalingOptParamRequest { le_t roomId; SceNpMatching2SignalingOptParam sigOptParam; }; struct SceNpMatching2GetLobbyInfoListRequest { le_t worldId; SceNpMatching2RangeFilter rangeFilter; vm::lptr attrId; le_t attrIdNum; }; struct SceNpMatching2GetLobbyInfoListResponse { SceNpMatching2Range range; vm::lptr lobbyDataExternal; }; struct SceNpMatching2JoinLobbyRequest { le_t lobbyId; vm::lptr joinedSessionInfo; le_t joinedSessionInfoNum; vm::lptr lobbyMemberBinAttrInternal; le_t lobbyMemberBinAttrInternalNum; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2JoinLobbyResponse { vm::lptr lobbyDataInternal; }; struct SceNpMatching2LeaveLobbyRequest { le_t lobbyId; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2SetLobbyMemberDataInternalRequest { le_t lobbyId; le_t memberId; u8 padding1[2]; le_t flagFilter; le_t flagAttr; vm::lptr joinedSessionInfo; le_t joinedSessionInfoNum; vm::lptr lobbyMemberBinAttrInternal; le_t lobbyMemberBinAttrInternalNum; u8 padding2[4]; }; struct SceNpMatching2GetLobbyMemberDataInternalRequest { le_t lobbyId; le_t memberId; u8 padding[6]; vm::lcptr attrId; le_t attrIdNum; }; struct SceNpMatching2GetLobbyMemberDataInternalResponse { vm::lptr lobbyMemberDataInternal; }; struct SceNpMatching2GetLobbyMemberDataInternalListRequest { le_t lobbyId; vm::lptr memberId; le_t memberIdNum; vm::lcptr attrId; le_t attrIdNum; b8 extendedData; u8 padding[7]; }; struct SceNpMatching2GetLobbyMemberDataInternalListResponse { vm::lptr lobbyMemberDataInternal; le_t lobbyMemberDataInternalNum; }; struct SceNpMatching2SendLobbyChatMessageRequest { le_t lobbyId; u8 castType; u8 padding[3]; SceNpMatching2LobbyMessageDestination dst; vm::lcptr msg; le_t msgLen; le_t option; }; struct SceNpMatching2SendLobbyChatMessageResponse { b8 filtered; }; struct SceNpMatching2SendLobbyInvitationRequest { le_t lobbyId; u8 castType; u8 padding[3]; SceNpMatching2LobbyMessageDestination dst; SceNpMatching2InvitationData invitationData; le_t option; }; struct SceNpMatching2RoomMemberUpdateInfo { vm::lptr roomMemberDataInternal; u8 eventCause; u8 padding[3]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomOwnerUpdateInfo { le_t prevOwner; le_t newOwner; u8 eventCause; u8 padding[3]; vm::lptr roomPassword; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomUpdateInfo { u8 eventCause; u8 padding[3]; le_t errorCode; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomDataInternalUpdateInfo { vm::lptr newRoomDataInternal; vm::lptr newFlagAttr; vm::lptr prevFlagAttr; vm::lptr newRoomPasswordSlotMask; vm::lptr prevRoomPasswordSlotMask; vm::lptr *newRoomGroup; le_t newRoomGroupNum; vm::lptr *newRoomBinAttrInternal; le_t newRoomBinAttrInternalNum; }; struct SceNpMatching2RoomMemberDataInternalUpdateInfo { vm::lptr newRoomMemberDataInternal; vm::lptr newFlagAttr; vm::lptr prevFlagAttr; vm::lptr newTeamId; vm::lptr *newRoomMemberBinAttrInternal; le_t newRoomMemberBinAttrInternalNum; }; struct SceNpMatching2SignalingOptParamUpdateInfo { SceNpMatching2SignalingOptParam newSignalingOptParam; }; struct SceNpMatching2RoomMessageInfo { b8 filtered; u8 castType; u8 padding[2]; vm::lptr dst; vm::lptr srcMember; vm::lcptr msg; le_t msgLen; }; struct SceNpMatching2LobbyMemberUpdateInfo { vm::lptr lobbyMemberDataInternal; u8 eventCause; u8 padding[3]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2LobbyUpdateInfo { u8 eventCause; u8 padding[3]; le_t errorCode; }; struct SceNpMatching2LobbyMemberDataInternalUpdateInfo { le_t memberId; u8 padding[2]; SceNpId npId; le_t flagFilter; le_t newFlagAttr; vm::lptr newJoinedSessionInfo; le_t newJoinedSessionInfoNum; vm::lptr newLobbyMemberBinAttrInternal; le_t newLobbyMemberBinAttrInternalNum; }; struct SceNpMatching2LobbyMessageInfo { b8 filtered; u8 castType; u8 padding[2]; vm::lptr dst; vm::lptr srcMember; vm::lcptr msg; le_t msgLen; }; struct SceNpMatching2LobbyInvitationInfo { u8 castType; u8 padding[3]; vm::lptr dst; vm::lptr srcMember; SceNpMatching2InvitationData invitationData; }; union SceNpMatching2SignalingConnectionInfo { le_t rtt; le_t bandwidth; SceNpId npId; struct { SceNetInAddr addr; le_t port; u8 padding[2]; } address; le_t packetLoss; }; struct SceNpMatching2SignalingNetInfo { le_t size; SceNetInAddr localAddr; SceNetInAddr mappedAddr; le_t natStatus; };