#include "stdafx.h" #include "Emu/System.h" #include "Emu/ARMv7/PSVFuncList.h" #include "sceNet.h" #include "sceNpCommon.h" extern psv_log_base sceNpMatching; struct SceNpMatching2MemoryInfo { u32 totalMemSize; u32 curMemUsage; u32 maxMemUsage; u8 reserved[12]; }; typedef u16 SceNpMatching2ServerId; typedef u32 SceNpMatching2WorldId; typedef u16 SceNpMatching2WorldNumber; typedef u64 SceNpMatching2LobbyId; typedef u16 SceNpMatching2LobbyNumber; typedef u64 SceNpMatching2RoomId; typedef u16 SceNpMatching2RoomNumber; typedef u16 SceNpMatching2ContextId; typedef u32 SceNpMatching2RequestId; typedef u32 SceNpMatching2SignalingRequestId; typedef u8 SceNpMatching2NatType; typedef u8 SceNpMatching2Operator; typedef u8 SceNpMatching2CastType; struct SceNpMatching2SessionPassword { u8 data[8]; }; typedef u8 SceNpMatching2SessionType; typedef u8 SceNpMatching2EventCause; struct SceNpMatching2PresenceOptionData { u8 data[16]; u32 len; }; typedef u16 SceNpMatching2AttributeId; typedef u32 SceNpMatching2FlagAttr; struct SceNpMatching2IntAttr { SceNpMatching2AttributeId id; u8 padding[2]; u32 num; }; struct SceNpMatching2BinAttr { SceNpMatching2AttributeId id; u8 padding[2]; vm::psv::ptr ptr; u32 size; }; struct SceNpMatching2RangeFilter { u32 startIndex; u32 max; }; struct SceNpMatching2IntSearchFilter { SceNpMatching2Operator searchOperator; u8 padding[3]; SceNpMatching2IntAttr attr; }; struct SceNpMatching2BinSearchFilter { SceNpMatching2Operator searchOperator; u8 padding[3]; SceNpMatching2BinAttr attr; }; struct SceNpMatching2Range { u32 startIndex; u32 total; u32 resultCount; }; struct SceNpMatching2JoinedSessionInfo { SceNpMatching2SessionType sessionType; u8 padding1[1]; SceNpMatching2ServerId serverId; SceNpMatching2WorldId worldId; SceNpMatching2LobbyId lobbyId; SceNpMatching2RoomId roomId; u64 joinDate; }; struct SceNpMatching2UserInfo { vm::psv::ptr next; SceNpId npId; vm::psv::ptr userBinAttr; u32 userBinAttrNum; vm::psv::ptr joinedSessionInfo; u32 joinedSessionInfoNum; }; typedef u8 SceNpMatching2ServerStatus; struct SceNpMatching2Server { SceNpMatching2ServerId serverId; SceNpMatching2ServerStatus status; u8 padding[1]; }; struct SceNpMatching2World { vm::psv::ptr next; SceNpMatching2WorldId worldId; u32 numOfLobby; u32 maxNumOfTotalLobbyMember; u32 curNumOfTotalLobbyMember; u32 curNumOfRoom; u32 curNumOfTotalRoomMember; bool withEntitlementId; SceNpEntitlementId entitlementId; u8 padding[3]; }; typedef u16 SceNpMatching2LobbyMemberId; struct SceNpMatching2LobbyMemberBinAttrInternal { u64 updateDate; SceNpMatching2BinAttr data; u8 padding[4]; }; struct SceNpMatching2LobbyMemberDataInternal { vm::psv::ptr next; SceNpId npId; u64 joinDate; SceNpMatching2LobbyMemberId memberId; u8 padding[2]; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr joinedSessionInfo; u32 joinedSessionInfoNum; vm::psv::ptr lobbyMemberBinAttrInternal; u32 lobbyMemberBinAttrInternalNum; }; struct SceNpMatching2LobbyMemberIdList { vm::psv::ptr memberId; u32 memberIdNum; SceNpMatching2LobbyMemberId me; u8 padding[6]; }; struct SceNpMatching2LobbyBinAttrInternal { u64 updateDate; SceNpMatching2LobbyMemberId updateMemberId; u8 padding[2]; SceNpMatching2BinAttr data; }; struct SceNpMatching2LobbyDataExternal { vm::psv::ptr next; SceNpMatching2ServerId serverId; u8 padding1[2]; SceNpMatching2WorldId worldId; u8 padding2[4]; SceNpMatching2LobbyId lobbyId; u32 maxSlot; u32 curMemberNum; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr lobbySearchableIntAttrExternal; u32 lobbySearchableIntAttrExternalNum; vm::psv::ptr lobbySearchableBinAttrExternal; u32 lobbySearchableBinAttrExternalNum; vm::psv::ptr lobbyBinAttrExternal; u32 lobbyBinAttrExternalNum; u8 padding3[4]; }; struct SceNpMatching2LobbyDataInternal { SceNpMatching2ServerId serverId; u8 padding1[2]; SceNpMatching2WorldId worldId; SceNpMatching2LobbyId lobbyId; u32 maxSlot; SceNpMatching2LobbyMemberIdList memberIdList; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr lobbyBinAttrInternal; u32 lobbyBinAttrInternalNum; }; union SceNpMatching2LobbyMessageDestination { SceNpMatching2LobbyMemberId unicastTarget; struct { vm::psv::ptr memberId; u32 memberIdNum; } multicastTarget; }; typedef u8 SceNpMatching2RoomGroupId; typedef u16 SceNpMatching2RoomMemberId; typedef u8 SceNpMatching2TeamId; typedef u8 SceNpMatching2Role; typedef u8 SceNpMatching2BlockKickFlag; struct SceNpMatching2GroupLabel { u8 data[8]; }; typedef u64 SceNpMatching2RoomPasswordSlotMask; typedef u64 SceNpMatching2RoomJoinedSlotMask; struct SceNpMatching2RoomGroupConfig { u32 slotNum; bool withLabel; SceNpMatching2GroupLabel label; bool withPassword; u8 padding[2]; }; struct SceNpMatching2RoomGroupPasswordConfig { SceNpMatching2RoomGroupId groupId; bool withPassword; u8 padding[1]; }; struct SceNpMatching2RoomMemberBinAttrInternal { u64 updateDate; SceNpMatching2BinAttr data; u8 padding[4]; }; struct SceNpMatching2RoomGroup { SceNpMatching2RoomGroupId groupId; bool withPassword; bool withLabel; u8 padding[1]; SceNpMatching2GroupLabel label; u32 slotNum; u32 curGroupMemberNum; }; struct SceNpMatching2RoomMemberDataExternal { struct vm::psv::ptr next; SceNpId npId; u64 joinDate; SceNpMatching2Role role; u8 padding[7]; }; struct SceNpMatching2RoomMemberDataInternal { struct vm::psv::ptr next; SceNpId npId; u64 joinDate; SceNpMatching2RoomMemberId memberId; SceNpMatching2TeamId teamId; u8 padding1[1]; vm::psv::ptr roomGroup; SceNpMatching2NatType natType; u8 padding2[3]; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr roomMemberBinAttrInternal; u32 roomMemberBinAttrInternalNum; }; struct SceNpMatching2RoomMemberDataInternalList { vm::psv::ptr members; u32 membersNum; vm::psv::ptr me; vm::psv::ptr owner; }; struct SceNpMatching2RoomBinAttrInternal { u64 updateDate; SceNpMatching2RoomMemberId updateMemberId; u8 padding[2]; SceNpMatching2BinAttr data; }; struct SceNpMatching2RoomDataExternal { vm::psv::ptr next; u16 maxSlot; u16 curMemberNum; SceNpMatching2ServerId serverId; u8 padding[2]; SceNpMatching2WorldId worldId; SceNpMatching2LobbyId lobbyId; SceNpMatching2RoomId roomId; SceNpMatching2RoomPasswordSlotMask passwordSlotMask; SceNpMatching2RoomJoinedSlotMask joinedSlotMask; u16 publicSlotNum; u16 privateSlotNum; u16 openPublicSlotNum; u16 openPrivateSlotNum; vm::psv::ptr owner; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr roomGroup; u32 roomGroupNum; vm::psv::ptr roomSearchableIntAttrExternal; u32 roomSearchableIntAttrExternalNum; vm::psv::ptr roomSearchableBinAttrExternal; u32 roomSearchableBinAttrExternalNum; vm::psv::ptr roomBinAttrExternal; u32 roomBinAttrExternalNum; }; struct SceNpMatching2RoomDataInternal { u16 maxSlot; SceNpMatching2ServerId serverId; SceNpMatching2WorldId worldId; SceNpMatching2LobbyId lobbyId; SceNpMatching2RoomId roomId; SceNpMatching2RoomPasswordSlotMask passwordSlotMask; SceNpMatching2RoomJoinedSlotMask joinedSlotMask; u16 publicSlotNum; u16 privateSlotNum; u16 openPublicSlotNum; u16 openPrivateSlotNum; SceNpMatching2RoomMemberDataInternalList memberList; vm::psv::ptr roomGroup; u32 roomGroupNum; SceNpMatching2FlagAttr flagAttr; u8 padding[4]; vm::psv::ptr roomBinAttrInternal; u32 roomBinAttrInternalNum; }; union SceNpMatching2RoomMessageDestination { SceNpMatching2RoomMemberId unicastTarget; struct { vm::psv::ptr memberId; u32 memberIdNum; } multicastTarget; SceNpMatching2TeamId multicastTargetTeamId; }; struct SceNpMatching2InvitationData { vm::psv::ptr targetSession; u32 targetSessionNum; vm::psv::ptr optData; u32 optDataLen; }; typedef u16 SceNpMatching2Event; typedef vm::psv::ptr data, vm::psv::ptr arg )> SceNpMatching2RequestCallback; typedef vm::psv::ptr data, vm::psv::ptr arg )> SceNpMatching2LobbyEventCallback; typedef vm::psv::ptr data, vm::psv::ptr arg )> SceNpMatching2RoomEventCallback; typedef vm::psv::ptr data, vm::psv::ptr arg )> SceNpMatching2LobbyMessageCallback; typedef vm::psv::ptr data, vm::psv::ptr arg )> SceNpMatching2RoomMessageCallback; typedef vm::psv::ptr arg )> SceNpMatching2SignalingCallback; typedef vm::psv::ptr arg )> SceNpMatching2ContextCallback; struct SceNpMatching2RequestOptParam { SceNpMatching2RequestCallback cbFunc; vm::psv::ptr cbFuncArg; u32 timeout; u16 appReqId; u8 padding[2]; }; struct SceNpMatching2GetWorldInfoListRequest { SceNpMatching2ServerId serverId; }; struct SceNpMatching2GetWorldInfoListResponse { vm::psv::ptr world; u32 worldNum; }; struct SceNpMatching2SetUserInfoRequest { SceNpMatching2ServerId serverId; u8 padding[2]; vm::psv::ptr userBinAttr; u32 userBinAttrNum; }; struct SceNpMatching2GetUserInfoListRequest { SceNpMatching2ServerId serverId; u8 padding[2]; vm::psv::ptr npId; u32 npIdNum; vm::psv::ptr attrId; u32 attrIdNum; s32 option; }; struct SceNpMatching2GetUserInfoListResponse { vm::psv::ptr userInfo; u32 userInfoNum; }; struct SceNpMatching2GetRoomMemberDataExternalListRequest { SceNpMatching2RoomId roomId; }; struct SceNpMatching2GetRoomMemberDataExternalListResponse { vm::psv::ptr roomMemberDataExternal; u32 roomMemberDataExternalNum; }; struct SceNpMatching2SetRoomDataExternalRequest { SceNpMatching2RoomId roomId; vm::psv::ptr roomSearchableIntAttrExternal; u32 roomSearchableIntAttrExternalNum; vm::psv::ptr roomSearchableBinAttrExternal; u32 roomSearchableBinAttrExternalNum; vm::psv::ptr roomBinAttrExternal; u32 roomBinAttrExternalNum; }; struct SceNpMatching2GetRoomDataExternalListRequest { vm::psv::ptr roomId; u32 roomIdNum; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2GetRoomDataExternalListResponse { vm::psv::ptr roomDataExternal; u32 roomDataExternalNum; }; typedef u8 SceNpMatching2SignalingType; typedef u8 SceNpMatching2SignalingFlag; struct SceNpMatching2SignalingOptParam { SceNpMatching2SignalingType type; SceNpMatching2SignalingFlag flag; SceNpMatching2RoomMemberId hubMemberId; u8 reserved2[4]; }; struct SceNpMatching2CreateJoinRoomRequest { SceNpMatching2WorldId worldId; u8 padding1[4]; SceNpMatching2LobbyId lobbyId; u32 maxSlot; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr roomBinAttrInternal; u32 roomBinAttrInternalNum; vm::psv::ptr roomSearchableIntAttrExternal; u32 roomSearchableIntAttrExternalNum; vm::psv::ptr roomSearchableBinAttrExternal; u32 roomSearchableBinAttrExternalNum; vm::psv::ptr roomBinAttrExternal; u32 roomBinAttrExternalNum; vm::psv::ptr roomPassword; vm::psv::ptr groupConfig; u32 groupConfigNum; vm::psv::ptr passwordSlotMask; vm::psv::ptr allowedUser; u32 allowedUserNum; vm::psv::ptr blockedUser; u32 blockedUserNum; vm::psv::ptr joinRoomGroupLabel; vm::psv::ptr roomMemberBinAttrInternal; u32 roomMemberBinAttrInternalNum; SceNpMatching2TeamId teamId; u8 padding2[3]; vm::psv::ptr sigOptParam; u8 padding3[4]; }; struct SceNpMatching2CreateJoinRoomResponse { vm::psv::ptr roomDataInternal; }; struct SceNpMatching2JoinRoomRequest { SceNpMatching2RoomId roomId; vm::psv::ptr roomPassword; vm::psv::ptr joinRoomGroupLabel; vm::psv::ptr roomMemberBinAttrInternal; u32 roomMemberBinAttrInternalNum; SceNpMatching2PresenceOptionData optData; SceNpMatching2TeamId teamId; u8 padding[3]; vm::psv::ptr blockedUser; u32 blockedUserNum; }; struct SceNpMatching2JoinRoomResponse { vm::psv::ptr roomDataInternal; }; struct SceNpMatching2LeaveRoomRequest { SceNpMatching2RoomId roomId; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2GrantRoomOwnerRequest { SceNpMatching2RoomId roomId; SceNpMatching2RoomMemberId newOwner; u8 padding[2]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2KickoutRoomMemberRequest { SceNpMatching2RoomId roomId; SceNpMatching2RoomMemberId target; SceNpMatching2BlockKickFlag blockKickFlag; u8 padding[1]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2SearchRoomRequest { s32 option; SceNpMatching2WorldId worldId; SceNpMatching2LobbyId lobbyId; SceNpMatching2RangeFilter rangeFilter; SceNpMatching2FlagAttr flagFilter; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr intFilter; u32 intFilterNum; vm::psv::ptr binFilter; u32 binFilterNum; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2SearchRoomResponse { SceNpMatching2Range range; vm::psv::ptr roomDataExternal; }; struct SceNpMatching2SendRoomMessageRequest { SceNpMatching2RoomId roomId; SceNpMatching2CastType castType; u8 padding[3]; SceNpMatching2RoomMessageDestination dst; vm::psv::ptr msg; u32 msgLen; s32 option; }; struct SceNpMatching2SendRoomChatMessageRequest { SceNpMatching2RoomId roomId; SceNpMatching2CastType castType; u8 padding[3]; SceNpMatching2RoomMessageDestination dst; vm::psv::ptr msg; u32 msgLen; s32 option; }; struct SceNpMatching2SendRoomChatMessageResponse { bool filtered; }; struct SceNpMatching2SetRoomDataInternalRequest { SceNpMatching2RoomId roomId; SceNpMatching2FlagAttr flagFilter; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr roomBinAttrInternal; u32 roomBinAttrInternalNum; vm::psv::ptr passwordConfig; u32 passwordConfigNum; vm::psv::ptr passwordSlotMask; vm::psv::ptr ownerPrivilegeRank; u32 ownerPrivilegeRankNum; u8 padding[4]; }; struct SceNpMatching2GetRoomDataInternalRequest { SceNpMatching2RoomId roomId; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2GetRoomDataInternalResponse { vm::psv::ptr roomDataInternal; }; struct SceNpMatching2SetRoomMemberDataInternalRequest { SceNpMatching2RoomId roomId; SceNpMatching2RoomMemberId memberId; SceNpMatching2TeamId teamId; u8 padding[5]; SceNpMatching2FlagAttr flagFilter; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr roomMemberBinAttrInternal; u32 roomMemberBinAttrInternalNum; }; struct SceNpMatching2GetRoomMemberDataInternalRequest { SceNpMatching2RoomId roomId; SceNpMatching2RoomMemberId memberId; u8 padding[6]; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2GetRoomMemberDataInternalResponse { vm::psv::ptr roomMemberDataInternal; }; struct SceNpMatching2SetSignalingOptParamRequest { SceNpMatching2RoomId roomId; SceNpMatching2SignalingOptParam sigOptParam; }; struct SceNpMatching2GetLobbyInfoListRequest { SceNpMatching2WorldId worldId; SceNpMatching2RangeFilter rangeFilter; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2GetLobbyInfoListResponse { SceNpMatching2Range range; vm::psv::ptr lobbyDataExternal; }; struct SceNpMatching2JoinLobbyRequest { SceNpMatching2LobbyId lobbyId; vm::psv::ptr joinedSessionInfo; u32 joinedSessionInfoNum; vm::psv::ptr lobbyMemberBinAttrInternal; u32 lobbyMemberBinAttrInternalNum; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2JoinLobbyResponse { vm::psv::ptr lobbyDataInternal; }; struct SceNpMatching2LeaveLobbyRequest { SceNpMatching2LobbyId lobbyId; SceNpMatching2PresenceOptionData optData; u8 padding[4]; }; struct SceNpMatching2SetLobbyMemberDataInternalRequest { SceNpMatching2LobbyId lobbyId; SceNpMatching2LobbyMemberId memberId; u8 padding1[2]; SceNpMatching2FlagAttr flagFilter; SceNpMatching2FlagAttr flagAttr; vm::psv::ptr joinedSessionInfo; u32 joinedSessionInfoNum; vm::psv::ptr lobbyMemberBinAttrInternal; u32 lobbyMemberBinAttrInternalNum; u8 padding2[4]; }; struct SceNpMatching2GetLobbyMemberDataInternalRequest { SceNpMatching2LobbyId lobbyId; SceNpMatching2LobbyMemberId memberId; u8 padding[6]; vm::psv::ptr attrId; u32 attrIdNum; }; struct SceNpMatching2GetLobbyMemberDataInternalResponse { vm::psv::ptr lobbyMemberDataInternal; }; struct SceNpMatching2GetLobbyMemberDataInternalListRequest { SceNpMatching2LobbyId lobbyId; vm::psv::ptr memberId; u32 memberIdNum; vm::psv::ptr attrId; u32 attrIdNum; bool extendedData; u8 padding[7]; }; struct SceNpMatching2GetLobbyMemberDataInternalListResponse { vm::psv::ptr lobbyMemberDataInternal; u32 lobbyMemberDataInternalNum; }; struct SceNpMatching2SendLobbyChatMessageRequest { SceNpMatching2LobbyId lobbyId; SceNpMatching2CastType castType; u8 padding[3]; SceNpMatching2LobbyMessageDestination dst; vm::psv::ptr msg; u32 msgLen; s32 option; }; struct SceNpMatching2SendLobbyChatMessageResponse { bool filtered; }; struct SceNpMatching2SendLobbyInvitationRequest { SceNpMatching2LobbyId lobbyId; SceNpMatching2CastType castType; u8 padding[3]; SceNpMatching2LobbyMessageDestination dst; SceNpMatching2InvitationData invitationData; s32 option; }; struct SceNpMatching2RoomMemberUpdateInfo { vm::psv::ptr roomMemberDataInternal; SceNpMatching2EventCause eventCause; u8 padding[3]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomOwnerUpdateInfo { SceNpMatching2RoomMemberId prevOwner; SceNpMatching2RoomMemberId newOwner; SceNpMatching2EventCause eventCause; u8 padding[3]; vm::psv::ptr roomPassword; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomUpdateInfo { SceNpMatching2EventCause eventCause; u8 padding[3]; s32 errorCode; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2RoomDataInternalUpdateInfo { vm::psv::ptr newRoomDataInternal; vm::psv::ptr newFlagAttr; vm::psv::ptr prevFlagAttr; vm::psv::ptr newRoomPasswordSlotMask; vm::psv::ptr prevRoomPasswordSlotMask; vm::psv::ptr *newRoomGroup; u32 newRoomGroupNum; vm::psv::ptr *newRoomBinAttrInternal; u32 newRoomBinAttrInternalNum; }; struct SceNpMatching2RoomMemberDataInternalUpdateInfo { vm::psv::ptr newRoomMemberDataInternal; vm::psv::ptr newFlagAttr; vm::psv::ptr prevFlagAttr; vm::psv::ptr newTeamId; vm::psv::ptr *newRoomMemberBinAttrInternal; u32 newRoomMemberBinAttrInternalNum; }; struct SceNpMatching2SignalingOptParamUpdateInfo { SceNpMatching2SignalingOptParam newSignalingOptParam; }; struct SceNpMatching2RoomMessageInfo { bool filtered; SceNpMatching2CastType castType; u8 padding[2]; vm::psv::ptr dst; vm::psv::ptr srcMember; vm::psv::ptr msg; u32 msgLen; }; struct SceNpMatching2LobbyMemberUpdateInfo { vm::psv::ptr lobbyMemberDataInternal; SceNpMatching2EventCause eventCause; u8 padding[3]; SceNpMatching2PresenceOptionData optData; }; struct SceNpMatching2LobbyUpdateInfo { SceNpMatching2EventCause eventCause; u8 padding[3]; s32 errorCode; }; struct SceNpMatching2LobbyMemberDataInternalUpdateInfo { SceNpMatching2LobbyMemberId memberId; u8 padding[2]; SceNpId npId; SceNpMatching2FlagAttr flagFilter; SceNpMatching2FlagAttr newFlagAttr; vm::psv::ptr newJoinedSessionInfo; u32 newJoinedSessionInfoNum; vm::psv::ptr newLobbyMemberBinAttrInternal; u32 newLobbyMemberBinAttrInternalNum; }; struct SceNpMatching2LobbyMessageInfo { bool filtered; SceNpMatching2CastType castType; u8 padding[2]; vm::psv::ptr dst; vm::psv::ptr srcMember; vm::psv::ptr msg; u32 msgLen; }; struct SceNpMatching2LobbyInvitationInfo { SceNpMatching2CastType castType; u8 padding[3]; vm::psv::ptr dst; vm::psv::ptr srcMember; SceNpMatching2InvitationData invitationData; }; union SceNpMatching2SignalingConnectionInfo { u32 rtt; u32 bandwidth; SceNpId npId; struct { SceNetInAddr addr; u16 port; u8 padding[2]; } address; u32 packetLoss; }; struct SceNpMatching2SignalingNetInfo { u32 size; SceNetInAddr localAddr; SceNetInAddr mappedAddr; s32 natStatus; }; // Functions s32 sceNpMatching2Init( const u32 poolSize, const s32 threadPriority, const s32 cpuAffinityMask, const u32 threadStackSize) { throw __FUNCTION__; } s32 sceNpMatching2Term() { throw __FUNCTION__; } s32 sceNpMatching2CreateContext( vm::psv::ptr npId, vm::psv::ptr commId, vm::psv::ptr passPhrase, vm::psv::ptr ctxId) { throw __FUNCTION__; } s32 sceNpMatching2DestroyContext(const SceNpMatching2ContextId ctxId) { throw __FUNCTION__; } s32 sceNpMatching2ContextStart(const SceNpMatching2ContextId ctxId, const u64 timeout) { throw __FUNCTION__; } s32 sceNpMatching2AbortContextStart(const SceNpMatching2ContextId ctxId) { throw __FUNCTION__; } s32 sceNpMatching2ContextStop(const SceNpMatching2ContextId ctxId) { throw __FUNCTION__; } s32 sceNpMatching2SetDefaultRequestOptParam(const SceNpMatching2ContextId ctxId, vm::psv::ptr optParam) { throw __FUNCTION__; } s32 sceNpMatching2RegisterRoomEventCallback(const SceNpMatching2ContextId ctxId, SceNpMatching2RoomEventCallback cbFunc, vm::psv::ptr cbFuncArg) { throw __FUNCTION__; } s32 sceNpMatching2RegisterRoomMessageCallback(const SceNpMatching2ContextId ctxId, SceNpMatching2RoomMessageCallback cbFunc, vm::psv::ptr cbFuncArg) { throw __FUNCTION__; } s32 sceNpMatching2RegisterSignalingCallback(const SceNpMatching2ContextId ctxId, SceNpMatching2SignalingCallback cbFunc, vm::psv::ptr cbFuncArg) { throw __FUNCTION__; } s32 sceNpMatching2RegisterContextCallback(SceNpMatching2ContextCallback cbFunc, vm::psv::ptr cbFuncArg) { throw __FUNCTION__; } s32 sceNpMatching2AbortRequest(const SceNpMatching2ContextId ctxId, const SceNpMatching2RequestId reqId) { throw __FUNCTION__; } s32 sceNpMatching2GetMemoryInfo(vm::psv::ptr memInfo) { throw __FUNCTION__; } s32 sceNpMatching2GetServerLocal(const SceNpMatching2ContextId ctxId, vm::psv::ptr server) { throw __FUNCTION__; } s32 sceNpMatching2GetWorldInfoList( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2CreateJoinRoom( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2SearchRoom( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2JoinRoom( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2LeaveRoom( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2GetSignalingOptParamLocal( const SceNpMatching2ContextId ctxId, const SceNpMatching2RoomId roomId, vm::psv::ptr signalingOptParam) { throw __FUNCTION__; } s32 sceNpMatching2SetRoomDataExternal( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2KickoutRoomMember( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2SendRoomChatMessage( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2SendRoomMessage( const SceNpMatching2ContextId ctxId, vm::psv::ptr reqParam, vm::psv::ptr optParam, vm::psv::ptr assignedReqId) { throw __FUNCTION__; } s32 sceNpMatching2SignalingGetConnectionStatus( SceNpMatching2ContextId ctxId, SceNpMatching2RoomId roomId, SceNpMatching2RoomMemberId memberId, vm::psv::ptr connStatus, vm::psv::ptr peerAddr, vm::psv::ptr peerPort) { throw __FUNCTION__; } s32 sceNpMatching2SignalingGetConnectionInfo( SceNpMatching2ContextId ctxId, SceNpMatching2RoomId roomId, SceNpMatching2RoomMemberId memberId, s32 code, vm::psv::ptr info) { throw __FUNCTION__; } s32 sceNpMatching2SignalingGetLocalNetInfo(vm::psv::ptr netinfo) { throw __FUNCTION__; } s32 sceNpMatching2SignalingGetPeerNetInfo( SceNpMatching2ContextId ctxId, SceNpMatching2RoomId roomId, SceNpMatching2RoomMemberId memberId, vm::psv::ptr reqId) { throw __FUNCTION__; } s32 sceNpMatching2SignalingCancelPeerNetInfo( SceNpMatching2ContextId ctxId, SceNpMatching2SignalingRequestId reqId) { throw __FUNCTION__; } s32 sceNpMatching2SignalingGetPeerNetInfoResult( SceNpMatching2ContextId ctxId, SceNpMatching2SignalingRequestId reqId, vm::psv::ptr netinfo) { throw __FUNCTION__; } #define REG_FUNC(nid, name) reg_psv_func(nid, &sceNpMatching, #name, name) psv_log_base sceNpMatching("SceNpMatching2", []() { sceNpMatching.on_load = nullptr; sceNpMatching.on_unload = nullptr; sceNpMatching.on_stop = nullptr; REG_FUNC(0xEBB1FE74, sceNpMatching2Init); REG_FUNC(0x0124641C, sceNpMatching2Term); REG_FUNC(0xADF578E1, sceNpMatching2CreateContext); REG_FUNC(0x368AA759, sceNpMatching2DestroyContext); REG_FUNC(0xBB2E7559, sceNpMatching2ContextStart); REG_FUNC(0xF2847E3B, sceNpMatching2AbortContextStart); REG_FUNC(0x506454DE, sceNpMatching2ContextStop); REG_FUNC(0xF3A43C50, sceNpMatching2SetDefaultRequestOptParam); REG_FUNC(0xF486991B, sceNpMatching2RegisterRoomEventCallback); REG_FUNC(0xFA51949B, sceNpMatching2RegisterRoomMessageCallback); REG_FUNC(0xF9E35566, sceNpMatching2RegisterContextCallback); REG_FUNC(0x74EB6CE9, sceNpMatching2AbortRequest); REG_FUNC(0x7BD39E50, sceNpMatching2GetMemoryInfo); REG_FUNC(0x65C0FEED, sceNpMatching2GetServerLocal); REG_FUNC(0xC086B560, sceNpMatching2GetWorldInfoList); REG_FUNC(0x818A9499, sceNpMatching2CreateJoinRoom); REG_FUNC(0xD48BAF13, sceNpMatching2SearchRoom); REG_FUNC(0x33F7D5AE, sceNpMatching2JoinRoom); REG_FUNC(0xC8B0C9EE, sceNpMatching2LeaveRoom); REG_FUNC(0x495D2B46, sceNpMatching2GetSignalingOptParamLocal); REG_FUNC(0xE0BE0510, sceNpMatching2SendRoomChatMessage); REG_FUNC(0x7B908D99, sceNpMatching2SendRoomMessage); REG_FUNC(0x4E4C55BD, sceNpMatching2SignalingGetConnectionStatus); REG_FUNC(0x20598618, sceNpMatching2SignalingGetConnectionInfo); REG_FUNC(0x79310806, sceNpMatching2SignalingGetLocalNetInfo); REG_FUNC(0xF0CB1DD3, sceNpMatching2SignalingGetPeerNetInfo); REG_FUNC(0xADCD102C, sceNpMatching2SignalingCancelPeerNetInfo); REG_FUNC(0xFDC7B2C9, sceNpMatching2SignalingGetPeerNetInfoResult); REG_FUNC(0x1C60BC5B, sceNpMatching2RegisterSignalingCallback); REG_FUNC(0x8F88AC7E, sceNpMatching2SetRoomDataExternal); REG_FUNC(0xA8021394, sceNpMatching2KickoutRoomMember); });