mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-07-09 17:25:37 -06:00
Matching2 Part1: general additions, corrections, and sorting. (#4625)
This commit is contained in:
parent
6f568eaec9
commit
b564846b3c
@ -630,8 +630,9 @@ set(NP_LIBS src/core/libraries/np/np_error.h
|
|||||||
src/core/libraries/np/np_common.h
|
src/core/libraries/np/np_common.h
|
||||||
src/core/libraries/np/np_manager.cpp
|
src/core/libraries/np/np_manager.cpp
|
||||||
src/core/libraries/np/np_manager.h
|
src/core/libraries/np/np_manager.h
|
||||||
src/core/libraries/np/np_matching2.cpp
|
src/core/libraries/np/np_matching2/np_matching2.cpp
|
||||||
src/core/libraries/np/np_matching2.h
|
src/core/libraries/np/np_matching2/np_matching2.h
|
||||||
|
src/core/libraries/np/np_matching2/np_matching2_types.h
|
||||||
src/core/libraries/np/np_trophy.cpp
|
src/core/libraries/np/np_trophy.cpp
|
||||||
src/core/libraries/np/np_trophy.h
|
src/core/libraries/np/np_trophy.h
|
||||||
src/core/libraries/np/np_tus.cpp
|
src/core/libraries/np/np_tus.cpp
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
#include "core/libraries/np/np_commerce/np_commerce.h"
|
#include "core/libraries/np/np_commerce/np_commerce.h"
|
||||||
#include "core/libraries/np/np_common.h"
|
#include "core/libraries/np/np_common.h"
|
||||||
#include "core/libraries/np/np_manager.h"
|
#include "core/libraries/np/np_manager.h"
|
||||||
#include "core/libraries/np/np_matching2.h"
|
#include "core/libraries/np/np_matching2/np_matching2.h"
|
||||||
#include "core/libraries/np/np_partner.h"
|
#include "core/libraries/np/np_partner.h"
|
||||||
#include "core/libraries/np/np_party.h"
|
#include "core/libraries/np/np_party.h"
|
||||||
#include "core/libraries/np/np_profile_dialog/np_profile_dialog.h"
|
#include "core/libraries/np/np_profile_dialog/np_profile_dialog.h"
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "common/types.h"
|
|
||||||
|
|
||||||
namespace Core::Loader {
|
|
||||||
class SymbolsResolver;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Libraries::Np::NpMatching2 {
|
|
||||||
|
|
||||||
using OrbisNpMatching2AttributeId = u16;
|
|
||||||
using OrbisNpMatching2ContextId = u16;
|
|
||||||
using OrbisNpMatching2Event = u16;
|
|
||||||
using OrbisNpMatching2EventCause = u8;
|
|
||||||
using OrbisNpMatching2Flags = u32;
|
|
||||||
using OrbisNpMatching2LobbyId = u64;
|
|
||||||
using OrbisNpMatching2NatType = u8;
|
|
||||||
using OrbisNpMatching2RequestId = u16;
|
|
||||||
using OrbisNpMatching2RoomId = u64;
|
|
||||||
using OrbisNpMatching2RoomMemberId = u16;
|
|
||||||
using OrbisNpMatching2ServerId = u16;
|
|
||||||
using OrbisNpMatching2TeamId = u8;
|
|
||||||
using OrbisNpMatching2WorldId = u32;
|
|
||||||
|
|
||||||
constexpr int ORBIS_NP_MATCHING2_ERROR_NOT_INITIALIZED = 0x80550c01;
|
|
||||||
constexpr int ORBIS_NP_MATCHING2_ERROR_ALREADY_INITIALIZED = 0x80550c02;
|
|
||||||
constexpr int ORBIS_NP_MATCHING2_ERROR_INVALID_ARGUMENT = 0x80550c15;
|
|
||||||
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_CREATE_JOIN_ROOM = 0x0101;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_CREATE_JOIN_ROOM_A = 0x7101;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_GET_WORLD_INFO_LIST = 0x0002;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM_A = 0x7106;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_LEAVE_ROOM = 0x0103;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SEND_ROOM_MESSAGE = 0x0108;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_ROOM_DATA_EXTERNAL = 0x0004;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_ROOM_DATA_INTERNAL = 0x1106;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_USER_INFO = 0x0007;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_CONTEXT_EVENT_START_OVER = 0x6F01;
|
|
||||||
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_CONTEXT_EVENT_STARTED = 0x6F02;
|
|
||||||
|
|
||||||
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_CONTEXT_ERROR = 10;
|
|
||||||
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_CONTEXT_ACTION = 11;
|
|
||||||
|
|
||||||
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
|
||||||
} // namespace Libraries::Np::NpMatching2
|
|
||||||
@ -9,7 +9,8 @@
|
|||||||
#include "core/libraries/error_codes.h"
|
#include "core/libraries/error_codes.h"
|
||||||
#include "core/libraries/libs.h"
|
#include "core/libraries/libs.h"
|
||||||
#include "core/libraries/np/np_manager.h"
|
#include "core/libraries/np/np_manager.h"
|
||||||
#include "core/libraries/np/np_matching2.h"
|
#include "core/libraries/np/np_matching2/np_matching2.h"
|
||||||
|
#include "core/libraries/np/np_matching2/np_matching2_types.h"
|
||||||
#include "core/libraries/np/np_types.h"
|
#include "core/libraries/np/np_types.h"
|
||||||
#include "core/libraries/system/userservice.h"
|
#include "core/libraries/system/userservice.h"
|
||||||
|
|
||||||
@ -18,27 +19,6 @@ namespace Libraries::Np::NpMatching2 {
|
|||||||
static bool g_initialized = false;
|
static bool g_initialized = false;
|
||||||
static OrbisNpMatching2ContextId contextId = 1;
|
static OrbisNpMatching2ContextId contextId = 1;
|
||||||
|
|
||||||
struct NpMatching2ContextEvent {
|
|
||||||
OrbisNpMatching2ContextId contextId;
|
|
||||||
OrbisNpMatching2Event event;
|
|
||||||
OrbisNpMatching2EventCause cause;
|
|
||||||
int errorCode;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NpMatching2LobbyEvent {
|
|
||||||
OrbisNpMatching2ContextId contextId;
|
|
||||||
OrbisNpMatching2LobbyId lobbyId;
|
|
||||||
OrbisNpMatching2Event event;
|
|
||||||
void* data;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NpMatching2RoomEvent {
|
|
||||||
OrbisNpMatching2ContextId contextId;
|
|
||||||
OrbisNpMatching2RoomId roomId;
|
|
||||||
OrbisNpMatching2Event event;
|
|
||||||
void* data;
|
|
||||||
};
|
|
||||||
|
|
||||||
static std::mutex g_events_mutex;
|
static std::mutex g_events_mutex;
|
||||||
static std::deque<NpMatching2ContextEvent> g_ctx_events;
|
static std::deque<NpMatching2ContextEvent> g_ctx_events;
|
||||||
static std::deque<NpMatching2LobbyEvent> g_lobby_events;
|
static std::deque<NpMatching2LobbyEvent> g_lobby_events;
|
||||||
@ -46,16 +26,6 @@ static std::deque<NpMatching2RoomEvent> g_room_events;
|
|||||||
static std::mutex g_responses_mutex;
|
static std::mutex g_responses_mutex;
|
||||||
static std::deque<std::function<void()>> g_responses;
|
static std::deque<std::function<void()>> g_responses;
|
||||||
|
|
||||||
struct OrbisNpMatching2CreateContextParameter {
|
|
||||||
Libraries::Np::OrbisNpId* npId;
|
|
||||||
void* npCommunicationId;
|
|
||||||
void* npPassphrase;
|
|
||||||
Libraries::Np::OrbisNpServiceLabel serviceLabel;
|
|
||||||
u64 size;
|
|
||||||
};
|
|
||||||
|
|
||||||
static_assert(sizeof(OrbisNpMatching2CreateContextParameter) == 0x28);
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2CreateContext(const OrbisNpMatching2CreateContextParameter* param,
|
int PS4_SYSV_ABI sceNpMatching2CreateContext(const OrbisNpMatching2CreateContextParameter* param,
|
||||||
OrbisNpMatching2ContextId* ctxId) {
|
OrbisNpMatching2ContextId* ctxId) {
|
||||||
LOG_DEBUG(Lib_NpMatching2, "called, npId = {}, serviceLabel = {}, size = {}",
|
LOG_DEBUG(Lib_NpMatching2, "called, npId = {}, serviceLabel = {}, size = {}",
|
||||||
@ -73,14 +43,6 @@ int PS4_SYSV_ABI sceNpMatching2CreateContext(const OrbisNpMatching2CreateContext
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2CreateContextParameterA {
|
|
||||||
Libraries::UserService::OrbisUserServiceUserId userId;
|
|
||||||
Libraries::Np::OrbisNpServiceLabel serviceLabel;
|
|
||||||
u64 size;
|
|
||||||
};
|
|
||||||
|
|
||||||
static_assert(sizeof(OrbisNpMatching2CreateContextParameterA) == 16);
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2CreateContextA(const OrbisNpMatching2CreateContextParameterA* param,
|
int PS4_SYSV_ABI sceNpMatching2CreateContextA(const OrbisNpMatching2CreateContextParameterA* param,
|
||||||
OrbisNpMatching2ContextId* ctxId) {
|
OrbisNpMatching2ContextId* ctxId) {
|
||||||
LOG_DEBUG(Lib_NpMatching2, "called, userId = {}, serviceLabel = {}, size = {}", param->userId,
|
LOG_DEBUG(Lib_NpMatching2, "called, userId = {}, serviceLabel = {}, size = {}", param->userId,
|
||||||
@ -98,19 +60,6 @@ int PS4_SYSV_ABI sceNpMatching2CreateContextA(const OrbisNpMatching2CreateContex
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
using OrbisNpMatching2RequestCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId,
|
|
||||||
OrbisNpMatching2RequestId,
|
|
||||||
OrbisNpMatching2Event, int, void*,
|
|
||||||
void*);
|
|
||||||
|
|
||||||
struct OrbisNpMatching2RequestOptParam {
|
|
||||||
OrbisNpMatching2RequestCallback callback;
|
|
||||||
void* arg;
|
|
||||||
u32 timeout;
|
|
||||||
u16 appId;
|
|
||||||
u8 dummy[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
static std::optional<OrbisNpMatching2RequestOptParam> defaultRequestOptParam = std::nullopt;
|
static std::optional<OrbisNpMatching2RequestOptParam> defaultRequestOptParam = std::nullopt;
|
||||||
|
|
||||||
auto GetOptParam(OrbisNpMatching2RequestOptParam* requestOpt) {
|
auto GetOptParam(OrbisNpMatching2RequestOptParam* requestOpt) {
|
||||||
@ -119,84 +68,6 @@ auto GetOptParam(OrbisNpMatching2RequestOptParam* requestOpt) {
|
|||||||
: std::optional<OrbisNpMatching2RequestOptParam>{});
|
: std::optional<OrbisNpMatching2RequestOptParam>{});
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2CreateJoinRoomRequestA {
|
|
||||||
u16 maxSlot;
|
|
||||||
OrbisNpMatching2TeamId teamId;
|
|
||||||
u8 pad[5];
|
|
||||||
OrbisNpMatching2Flags flags;
|
|
||||||
OrbisNpMatching2WorldId worldId;
|
|
||||||
OrbisNpMatching2LobbyId lobbyId;
|
|
||||||
void* roomPasswd;
|
|
||||||
void* passwdSlotMask;
|
|
||||||
void* groupConfig;
|
|
||||||
u64 groupConfigs;
|
|
||||||
void* joinGroupLabel;
|
|
||||||
Libraries::Np::OrbisNpAccountId* allowedUser;
|
|
||||||
u64 allowedUsers;
|
|
||||||
Libraries::Np::OrbisNpAccountId* blockedUser;
|
|
||||||
u64 blockedUsers;
|
|
||||||
void* internalBinAttr;
|
|
||||||
u64 internalBinAttrs;
|
|
||||||
void* externalSearchIntAttr;
|
|
||||||
u64 externalSearchIntAttrs;
|
|
||||||
void* externalSearchBinAttr;
|
|
||||||
u64 externalSearchBinAttrs;
|
|
||||||
void* externalBinAttr;
|
|
||||||
u64 externalBinAttrs;
|
|
||||||
void* memberInternalBinAttr;
|
|
||||||
u64 memberInternalBinAttrs;
|
|
||||||
void* signalingParam;
|
|
||||||
};
|
|
||||||
|
|
||||||
static_assert(sizeof(OrbisNpMatching2CreateJoinRoomRequestA) == 184);
|
|
||||||
|
|
||||||
struct OrbisNpMatching2RoomDataInternal {
|
|
||||||
u16 publicSlots;
|
|
||||||
u16 privateSlots;
|
|
||||||
u16 openPublicSlots;
|
|
||||||
u16 openPrivateSlots;
|
|
||||||
u16 maxSlot;
|
|
||||||
OrbisNpMatching2ServerId serverId;
|
|
||||||
OrbisNpMatching2WorldId worldId;
|
|
||||||
OrbisNpMatching2LobbyId lobbyId;
|
|
||||||
OrbisNpMatching2RoomId roomId;
|
|
||||||
u64 passwdSlotMask;
|
|
||||||
u64 joinedSlotMask;
|
|
||||||
void* roomGroup;
|
|
||||||
u64 roomGroups;
|
|
||||||
OrbisNpMatching2Flags flags;
|
|
||||||
u8 pad[4];
|
|
||||||
void* internalBinAttr;
|
|
||||||
u64 internalBinAttrs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2RoomMemberDataInternalA {
|
|
||||||
OrbisNpMatching2RoomMemberDataInternalA* next;
|
|
||||||
u64 joinDateTicks;
|
|
||||||
Libraries::Np::OrbisNpPeerAddressA user;
|
|
||||||
Libraries::Np::OrbisNpOnlineId onlineId;
|
|
||||||
u8 pad[4];
|
|
||||||
OrbisNpMatching2RoomMemberId memberId;
|
|
||||||
OrbisNpMatching2TeamId teamId;
|
|
||||||
OrbisNpMatching2NatType natType;
|
|
||||||
OrbisNpMatching2Flags flags;
|
|
||||||
void* roomGroup;
|
|
||||||
void* roomMemberInternalBinAttr;
|
|
||||||
u64 roomMemberInternalBinAttrs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2RoomMemberDataInternalListA {
|
|
||||||
OrbisNpMatching2RoomMemberDataInternalA* members;
|
|
||||||
u64 membersNum;
|
|
||||||
OrbisNpMatching2RoomMemberDataInternalA* me;
|
|
||||||
OrbisNpMatching2RoomMemberDataInternalA* owner;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2CreateJoinRoomResponseA {
|
|
||||||
OrbisNpMatching2RoomDataInternal* roomData;
|
|
||||||
OrbisNpMatching2RoomMemberDataInternalListA members;
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2CreateJoinRoomA(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2CreateJoinRoomA(OrbisNpMatching2ContextId ctxId,
|
||||||
OrbisNpMatching2CreateJoinRoomRequestA* request,
|
OrbisNpMatching2CreateJoinRoomRequestA* request,
|
||||||
OrbisNpMatching2RequestOptParam* requestOpt,
|
OrbisNpMatching2RequestOptParam* requestOpt,
|
||||||
@ -270,11 +141,6 @@ int PS4_SYSV_ABI sceNpMatching2CreateJoinRoomA(OrbisNpMatching2ContextId ctxId,
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
using OrbisNpMatching2ContextCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId,
|
|
||||||
OrbisNpMatching2Event event,
|
|
||||||
OrbisNpMatching2EventCause cause,
|
|
||||||
int errorCode, void* userdata);
|
|
||||||
|
|
||||||
std::function<void(const NpMatching2ContextEvent*)> npMatching2ContextCallback = nullptr;
|
std::function<void(const NpMatching2ContextEvent*)> npMatching2ContextCallback = nullptr;
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2RegisterContextCallback(OrbisNpMatching2ContextCallback callback,
|
int PS4_SYSV_ABI sceNpMatching2RegisterContextCallback(OrbisNpMatching2ContextCallback callback,
|
||||||
@ -292,10 +158,6 @@ int PS4_SYSV_ABI sceNpMatching2RegisterContextCallback(OrbisNpMatching2ContextCa
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
using OrbisNpMatching2LobbyEventCallback =
|
|
||||||
PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId, OrbisNpMatching2LobbyId lobbyId,
|
|
||||||
OrbisNpMatching2Event event, void* data, void* userdata);
|
|
||||||
|
|
||||||
std::function<void(const NpMatching2LobbyEvent*)> npMatching2LobbyCallback = nullptr;
|
std::function<void(const NpMatching2LobbyEvent*)> npMatching2LobbyCallback = nullptr;
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2RegisterLobbyEventCallback(
|
int PS4_SYSV_ABI sceNpMatching2RegisterLobbyEventCallback(
|
||||||
@ -313,11 +175,6 @@ int PS4_SYSV_ABI sceNpMatching2RegisterLobbyEventCallback(
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
using OrbisNpMatching2RoomEventCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId,
|
|
||||||
OrbisNpMatching2RoomId roomId,
|
|
||||||
OrbisNpMatching2Event event,
|
|
||||||
void* data, void* userdata);
|
|
||||||
|
|
||||||
std::function<void(const NpMatching2RoomEvent*)> npMatching2RoomCallback = nullptr;
|
std::function<void(const NpMatching2RoomEvent*)> npMatching2RoomCallback = nullptr;
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2RegisterRoomEventCallback(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2RegisterRoomEventCallback(OrbisNpMatching2ContextId ctxId,
|
||||||
@ -336,19 +193,6 @@ int PS4_SYSV_ABI sceNpMatching2RegisterRoomEventCallback(OrbisNpMatching2Context
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2SignalingEvent {
|
|
||||||
OrbisNpMatching2ContextId contextId;
|
|
||||||
OrbisNpMatching2RoomId roomId;
|
|
||||||
OrbisNpMatching2RoomMemberId roomMemberId;
|
|
||||||
OrbisNpMatching2Event event;
|
|
||||||
int errorCode;
|
|
||||||
};
|
|
||||||
|
|
||||||
using OrbisNpMatching2SignalingCallback =
|
|
||||||
PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId, OrbisNpMatching2RoomId roomId,
|
|
||||||
OrbisNpMatching2RoomMemberId roomMemberId, OrbisNpMatching2Event event,
|
|
||||||
int errorCode, void* userdata);
|
|
||||||
|
|
||||||
std::function<void(const OrbisNpMatching2SignalingEvent*)> npMatching2SignalingCallback = nullptr;
|
std::function<void(const OrbisNpMatching2SignalingEvent*)> npMatching2SignalingCallback = nullptr;
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2RegisterSignalingCallback(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2RegisterSignalingCallback(OrbisNpMatching2ContextId ctxId,
|
||||||
@ -421,11 +265,6 @@ void ProcessEvents() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2InitializeParameter {
|
|
||||||
u64 poolSize;
|
|
||||||
//
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2Initialize(OrbisNpMatching2InitializeParameter* param) {
|
int PS4_SYSV_ABI sceNpMatching2Initialize(OrbisNpMatching2InitializeParameter* param) {
|
||||||
LOG_DEBUG(Lib_NpMatching2, "called");
|
LOG_DEBUG(Lib_NpMatching2, "called");
|
||||||
|
|
||||||
@ -484,26 +323,6 @@ int PS4_SYSV_ABI sceNpMatching2GetServerId(OrbisNpMatching2ContextId ctxId,
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2GetWorldInfoListRequest {
|
|
||||||
OrbisNpMatching2ServerId serverId;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2World {
|
|
||||||
OrbisNpMatching2World* next;
|
|
||||||
OrbisNpMatching2WorldId worldId;
|
|
||||||
u32 lobbiesNum;
|
|
||||||
u32 maxLobbyMembersNum;
|
|
||||||
u32 lobbyMembersNum;
|
|
||||||
u32 roomsNum;
|
|
||||||
u32 roomMembersNum;
|
|
||||||
u8 pad[3];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2GetWorldInfoListResponse {
|
|
||||||
OrbisNpMatching2World* world;
|
|
||||||
u64 worldNum;
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2GetWorldInfoList(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2GetWorldInfoList(OrbisNpMatching2ContextId ctxId,
|
||||||
OrbisNpMatching2GetWorldInfoListRequest* request,
|
OrbisNpMatching2GetWorldInfoListRequest* request,
|
||||||
OrbisNpMatching2RequestOptParam* requestOpt,
|
OrbisNpMatching2RequestOptParam* requestOpt,
|
||||||
@ -538,16 +357,6 @@ int PS4_SYSV_ABI sceNpMatching2GetWorldInfoList(OrbisNpMatching2ContextId ctxId,
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2PresenceOptionData {
|
|
||||||
u8 data[16];
|
|
||||||
u64 len;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2LeaveRoomRequest {
|
|
||||||
OrbisNpMatching2RoomId roomId;
|
|
||||||
OrbisNpMatching2PresenceOptionData optData;
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2LeaveRoom(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2LeaveRoom(OrbisNpMatching2ContextId ctxId,
|
||||||
OrbisNpMatching2LeaveRoomRequest* request,
|
OrbisNpMatching2LeaveRoomRequest* request,
|
||||||
OrbisNpMatching2RequestOptParam* requestOpt,
|
OrbisNpMatching2RequestOptParam* requestOpt,
|
||||||
@ -578,38 +387,6 @@ int PS4_SYSV_ABI sceNpMatching2LeaveRoom(OrbisNpMatching2ContextId ctxId,
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2RangeFilter {
|
|
||||||
u32 start;
|
|
||||||
u32 max;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2SearchRoomRequest {
|
|
||||||
int option;
|
|
||||||
OrbisNpMatching2WorldId worldId;
|
|
||||||
OrbisNpMatching2LobbyId lobbyId;
|
|
||||||
OrbisNpMatching2RangeFilter rangeFilter;
|
|
||||||
OrbisNpMatching2Flags flags1;
|
|
||||||
OrbisNpMatching2Flags flags2;
|
|
||||||
void* intFilter;
|
|
||||||
u64 intFilters;
|
|
||||||
void* binFilter;
|
|
||||||
u64 binFilters;
|
|
||||||
OrbisNpMatching2AttributeId* attr;
|
|
||||||
u64 attrs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2Range {
|
|
||||||
u32 start;
|
|
||||||
u32 total;
|
|
||||||
u32 results;
|
|
||||||
u8 pad[4];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OrbisNpMatching2SearchRoomResponseA {
|
|
||||||
OrbisNpMatching2Range range;
|
|
||||||
void* roomDataExt;
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2SearchRoom(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2SearchRoom(OrbisNpMatching2ContextId ctxId,
|
||||||
OrbisNpMatching2SearchRoomRequest* request,
|
OrbisNpMatching2SearchRoomRequest* request,
|
||||||
OrbisNpMatching2RequestOptParam* requestOpt,
|
OrbisNpMatching2RequestOptParam* requestOpt,
|
||||||
@ -642,13 +419,6 @@ int PS4_SYSV_ABI sceNpMatching2SearchRoom(OrbisNpMatching2ContextId ctxId,
|
|||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OrbisNpMatching2SetUserInfoRequest {
|
|
||||||
OrbisNpMatching2ServerId serverId;
|
|
||||||
u8 padding[6];
|
|
||||||
void* userBinAttr;
|
|
||||||
u64 userBinAttrs;
|
|
||||||
};
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceNpMatching2SetUserInfo(OrbisNpMatching2ContextId ctxId,
|
int PS4_SYSV_ABI sceNpMatching2SetUserInfo(OrbisNpMatching2ContextId ctxId,
|
||||||
OrbisNpMatching2SetUserInfoRequest* request,
|
OrbisNpMatching2SetUserInfoRequest* request,
|
||||||
OrbisNpMatching2RequestOptParam* requestOpt,
|
OrbisNpMatching2RequestOptParam* requestOpt,
|
||||||
82
src/core/libraries/np/np_matching2/np_matching2.h
Normal file
82
src/core/libraries/np/np_matching2/np_matching2.h
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "common/types.h"
|
||||||
|
|
||||||
|
namespace Core::Loader {
|
||||||
|
class SymbolsResolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Libraries::Np::NpMatching2 {
|
||||||
|
|
||||||
|
using OrbisNpMatching2AttributeId = u16;
|
||||||
|
using OrbisNpMatching2ContextId = u16;
|
||||||
|
using OrbisNpMatching2Event = u16;
|
||||||
|
using OrbisNpMatching2EventCause = u8;
|
||||||
|
using OrbisNpMatching2Flags = u32;
|
||||||
|
using OrbisNpMatching2LobbyId = u64;
|
||||||
|
using OrbisNpMatching2NatType = u8;
|
||||||
|
using OrbisNpMatching2RequestId = u32;
|
||||||
|
using OrbisNpMatching2RoomId = u64;
|
||||||
|
using OrbisNpMatching2RoomMemberId = u16;
|
||||||
|
using OrbisNpMatching2RoomPasswordSlotMask = u64;
|
||||||
|
using OrbisNpMatching2ServerId = u16;
|
||||||
|
using OrbisNpMatching2SignalingFlag = u8;
|
||||||
|
using OrbisNpMatching2SignalingRequestId = u32;
|
||||||
|
using OrbisNpMatching2SignalingType = u8;
|
||||||
|
using OrbisNpMatching2TeamId = u8;
|
||||||
|
using OrbisNpMatching2WorldId = u32;
|
||||||
|
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_GET_WORLD_INFO_LIST = 0x0002;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_ROOM_DATA_EXTERNAL = 0x0004;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_USER_INFO = 0x0007;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_CREATE_JOIN_ROOM = 0x0101;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_JOIN_ROOM = 0x0102;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_LEAVE_ROOM = 0x0103;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_KICKOUT_ROOM_MEMBER = 0x0104;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_GRANT_ROOM_OWNER = 0x0105;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM = 0x0106;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SEND_ROOM_MESSAGE = 0x0108;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SET_ROOM_DATA_INTERNAL = 0x0109;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_GET_ROOM_DATA_INTERNAL = 0x010A;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_JOIN_LOBBY = 0x0201;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SIGNALING_GET_PING_INFO = 0x0E01;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_MEMBER_JOINED = 0x1101;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_MEMBER_LEFT = 0x1102;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_KICKEDOUT = 0x1103;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_ROOM_DESTROYED = 0x1104;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_ROOM_OWNER_CHANGED = 0x1105;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_UPDATED_ROOM_DATA_INTERNAL = 0x1106;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_UPDATED_ROOM_MEMBER_DATA_INTERNAL =
|
||||||
|
0x1107;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_UPDATED_SIGNALING_OPT_PARAM = 0x1108;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_SIGNALING_EVENT_DEAD = 0x5101;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_SIGNALING_EVENT_ESTABLISHED = 0x5102;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_SIGNALING_EVENT_NETINFO_ERROR = 0x5103;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_CONTEXT_EVENT_START_OVER = 0x6F01;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_CONTEXT_EVENT_STARTED = 0x6F02;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_CONTEXT_EVENT_STOPPED = 0x6F03;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_CREATE_JOIN_ROOM_A = 0x7101;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM_A = 0x7106;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_MEMBER_JOINED_A = 0x8101;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_MEMBER_LEFT_A = 0x8102;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_EVENT_UPDATED_ROOM_MEMBER_DATA_INTERNAL_A =
|
||||||
|
0x8107;
|
||||||
|
constexpr OrbisNpMatching2Event ORBIS_NP_MATCHING2_ROOM_MSG_EVENT_MESSAGE_A = 0x9102;
|
||||||
|
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_LEAVE_ACTION = 1;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_KICKOUT_ACTION = 2;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_GRANT_OWNER_ACTION = 3;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_MEMBER_DISAPPEARED = 5;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_NP_SIGNED_OUT = 8;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_CONTEXT_ERROR = 10;
|
||||||
|
constexpr OrbisNpMatching2EventCause ORBIS_NP_MATCHING2_EVENT_CAUSE_CONTEXT_ACTION = 11;
|
||||||
|
|
||||||
|
constexpr OrbisNpMatching2SignalingType ORBIS_NP_MATCHING2_SIGNALING_TYPE_NONE = 0;
|
||||||
|
constexpr OrbisNpMatching2SignalingType ORBIS_NP_MATCHING2_SIGNALING_TYPE_MESH = 1;
|
||||||
|
constexpr OrbisNpMatching2SignalingType ORBIS_NP_MATCHING2_SIGNALING_TYPE_STAR = 2;
|
||||||
|
|
||||||
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
||||||
|
} // namespace Libraries::Np::NpMatching2
|
||||||
305
src/core/libraries/np/np_matching2/np_matching2_types.h
Normal file
305
src/core/libraries/np/np_matching2/np_matching2_types.h
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "common/types.h"
|
||||||
|
#include "core/libraries/np/np_matching2/np_matching2.h"
|
||||||
|
#include "core/libraries/np/np_types.h"
|
||||||
|
#include "core/libraries/rtc/rtc.h"
|
||||||
|
#include "core/libraries/system/userservice.h"
|
||||||
|
|
||||||
|
namespace Libraries::Np::NpMatching2 {
|
||||||
|
|
||||||
|
using OrbisNpMatching2ContextCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId,
|
||||||
|
OrbisNpMatching2Event event,
|
||||||
|
OrbisNpMatching2EventCause cause,
|
||||||
|
int errorCode, void* userdata);
|
||||||
|
|
||||||
|
using OrbisNpMatching2LobbyEventCallback =
|
||||||
|
PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId, OrbisNpMatching2LobbyId lobbyId,
|
||||||
|
OrbisNpMatching2Event event, void* data, void* userdata);
|
||||||
|
|
||||||
|
using OrbisNpMatching2RequestCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId,
|
||||||
|
OrbisNpMatching2RequestId,
|
||||||
|
OrbisNpMatching2Event, int,
|
||||||
|
const void*, void*);
|
||||||
|
|
||||||
|
using OrbisNpMatching2RoomEventCallback = PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId,
|
||||||
|
OrbisNpMatching2RoomId roomId,
|
||||||
|
OrbisNpMatching2Event event,
|
||||||
|
const void* data, void* userdata);
|
||||||
|
|
||||||
|
using OrbisNpMatching2RoomMessageCallback =
|
||||||
|
PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId, OrbisNpMatching2RoomId roomId,
|
||||||
|
OrbisNpMatching2RoomMemberId srcMemberId, OrbisNpMatching2Event event,
|
||||||
|
const void* data, void* userdata);
|
||||||
|
|
||||||
|
using OrbisNpMatching2SignalingCallback =
|
||||||
|
PS4_SYSV_ABI void (*)(OrbisNpMatching2ContextId contextId, OrbisNpMatching2RoomId roomId,
|
||||||
|
OrbisNpMatching2RoomMemberId roomMemberId, OrbisNpMatching2Event event,
|
||||||
|
int errorCode, void* userdata);
|
||||||
|
|
||||||
|
// internal - to be removed.
|
||||||
|
struct NpMatching2ContextEvent {
|
||||||
|
OrbisNpMatching2ContextId contextId;
|
||||||
|
OrbisNpMatching2Event event;
|
||||||
|
OrbisNpMatching2EventCause cause;
|
||||||
|
int errorCode;
|
||||||
|
};
|
||||||
|
|
||||||
|
// internal - to be removed.
|
||||||
|
struct NpMatching2LobbyEvent {
|
||||||
|
OrbisNpMatching2ContextId contextId;
|
||||||
|
OrbisNpMatching2LobbyId lobbyId;
|
||||||
|
OrbisNpMatching2Event event;
|
||||||
|
void* data;
|
||||||
|
};
|
||||||
|
|
||||||
|
// internal - to be removed.
|
||||||
|
struct NpMatching2RoomEvent {
|
||||||
|
OrbisNpMatching2ContextId contextId;
|
||||||
|
OrbisNpMatching2RoomId roomId;
|
||||||
|
OrbisNpMatching2Event event;
|
||||||
|
void* data;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2BinAttr {
|
||||||
|
OrbisNpMatching2AttributeId id;
|
||||||
|
u8 pad[6];
|
||||||
|
u8* data;
|
||||||
|
u64 dataSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2CreateContextParameter {
|
||||||
|
Libraries::Np::OrbisNpId* npId;
|
||||||
|
void* npCommunicationId;
|
||||||
|
void* npPassphrase;
|
||||||
|
Libraries::Np::OrbisNpServiceLabel serviceLabel;
|
||||||
|
u64 size;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(OrbisNpMatching2CreateContextParameter) == 0x28);
|
||||||
|
|
||||||
|
struct OrbisNpMatching2CreateContextParameterA {
|
||||||
|
Libraries::UserService::OrbisUserServiceUserId userId;
|
||||||
|
Libraries::Np::OrbisNpServiceLabel serviceLabel;
|
||||||
|
u64 size;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(OrbisNpMatching2CreateContextParameterA) == 16);
|
||||||
|
|
||||||
|
struct OrbisNpMatching2IntAttr {
|
||||||
|
OrbisNpMatching2AttributeId id;
|
||||||
|
u8 padding[2];
|
||||||
|
u32 num;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2SignalingOptParam {
|
||||||
|
OrbisNpMatching2SignalingType type;
|
||||||
|
OrbisNpMatching2SignalingFlag flag;
|
||||||
|
OrbisNpMatching2RoomMemberId memberId;
|
||||||
|
u8 padding[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2CreateJoinRoomRequestA {
|
||||||
|
u16 maxSlot;
|
||||||
|
OrbisNpMatching2TeamId teamId;
|
||||||
|
u8 pad[5];
|
||||||
|
OrbisNpMatching2Flags flags;
|
||||||
|
OrbisNpMatching2WorldId worldId;
|
||||||
|
OrbisNpMatching2LobbyId lobbyId;
|
||||||
|
void* roomPasswd;
|
||||||
|
OrbisNpMatching2RoomPasswordSlotMask* passwdSlotMask;
|
||||||
|
void* groupConfig;
|
||||||
|
u64 groupConfigs;
|
||||||
|
void* joinGroupLabel;
|
||||||
|
Libraries::Np::OrbisNpAccountId* allowedUser;
|
||||||
|
u64 allowedUsers;
|
||||||
|
Libraries::Np::OrbisNpAccountId* blockedUser;
|
||||||
|
u64 blockedUsers;
|
||||||
|
OrbisNpMatching2BinAttr* internalBinAttr;
|
||||||
|
u64 internalBinAttrs;
|
||||||
|
OrbisNpMatching2IntAttr* externalSearchIntAttr;
|
||||||
|
u64 externalSearchIntAttrs;
|
||||||
|
OrbisNpMatching2BinAttr* externalSearchBinAttr;
|
||||||
|
u64 externalSearchBinAttrs;
|
||||||
|
OrbisNpMatching2BinAttr* externalBinAttr;
|
||||||
|
u64 externalBinAttrs;
|
||||||
|
OrbisNpMatching2BinAttr* memberInternalBinAttr;
|
||||||
|
u64 memberInternalBinAttrs;
|
||||||
|
OrbisNpMatching2SignalingOptParam* signalingParam;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(OrbisNpMatching2CreateJoinRoomRequestA) == 184);
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RoomDataInternal {
|
||||||
|
u16 publicSlots;
|
||||||
|
u16 privateSlots;
|
||||||
|
u16 openPublicSlots;
|
||||||
|
u16 openPrivateSlots;
|
||||||
|
u16 maxSlot;
|
||||||
|
OrbisNpMatching2ServerId serverId;
|
||||||
|
OrbisNpMatching2WorldId worldId;
|
||||||
|
OrbisNpMatching2LobbyId lobbyId;
|
||||||
|
OrbisNpMatching2RoomId roomId;
|
||||||
|
OrbisNpMatching2RoomPasswordSlotMask passwdSlotMask;
|
||||||
|
u64 joinedSlotMask;
|
||||||
|
void* roomGroup;
|
||||||
|
u64 roomGroups;
|
||||||
|
OrbisNpMatching2Flags flags;
|
||||||
|
u8 pad[4];
|
||||||
|
void* internalBinAttr;
|
||||||
|
u64 internalBinAttrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RoomMemberDataInternalA {
|
||||||
|
OrbisNpMatching2RoomMemberDataInternalA* next;
|
||||||
|
Libraries::Rtc::OrbisRtcTick joinDateTicks;
|
||||||
|
Libraries::Np::OrbisNpPeerAddressA user;
|
||||||
|
Libraries::Np::OrbisNpOnlineId onlineId;
|
||||||
|
u8 pad[4];
|
||||||
|
OrbisNpMatching2RoomMemberId memberId;
|
||||||
|
OrbisNpMatching2TeamId teamId;
|
||||||
|
OrbisNpMatching2NatType natType;
|
||||||
|
OrbisNpMatching2Flags flags;
|
||||||
|
void* roomGroup;
|
||||||
|
void* roomMemberInternalBinAttr;
|
||||||
|
u64 roomMemberInternalBinAttrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RoomMemberDataInternalListA {
|
||||||
|
OrbisNpMatching2RoomMemberDataInternalA* members;
|
||||||
|
u64 membersNum;
|
||||||
|
OrbisNpMatching2RoomMemberDataInternalA* me;
|
||||||
|
OrbisNpMatching2RoomMemberDataInternalA* owner;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2CreateJoinRoomResponseA {
|
||||||
|
OrbisNpMatching2RoomDataInternal* roomData;
|
||||||
|
OrbisNpMatching2RoomMemberDataInternalListA members;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2GetWorldInfoListRequest {
|
||||||
|
OrbisNpMatching2ServerId serverId;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2World {
|
||||||
|
OrbisNpMatching2World* next;
|
||||||
|
OrbisNpMatching2WorldId worldId;
|
||||||
|
u32 lobbiesNum;
|
||||||
|
u32 maxLobbyMembersNum;
|
||||||
|
u32 lobbyMembersNum;
|
||||||
|
u32 roomsNum;
|
||||||
|
u32 roomMembersNum;
|
||||||
|
u8 pad[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2GetWorldInfoListResponse {
|
||||||
|
OrbisNpMatching2World* world;
|
||||||
|
u64 worldNum;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2InitializeParameter {
|
||||||
|
u64 poolSize;
|
||||||
|
u64 unknown;
|
||||||
|
s32 priority;
|
||||||
|
u8 padding[4];
|
||||||
|
u64 stackSize;
|
||||||
|
u64 size;
|
||||||
|
u64 sslPoolSize;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(OrbisNpMatching2InitializeParameter) == 0x30);
|
||||||
|
|
||||||
|
struct OrbisNpMatching2PresenceOptionData {
|
||||||
|
u8 data[16];
|
||||||
|
u64 len;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2LeaveRoomRequest {
|
||||||
|
OrbisNpMatching2RoomId roomId;
|
||||||
|
OrbisNpMatching2PresenceOptionData optData;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2Range {
|
||||||
|
u32 start;
|
||||||
|
u32 total;
|
||||||
|
u32 results;
|
||||||
|
u8 pad[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RangeFilter {
|
||||||
|
u32 start;
|
||||||
|
u32 max;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RequestOptParam {
|
||||||
|
OrbisNpMatching2RequestCallback callback;
|
||||||
|
void* arg;
|
||||||
|
u32 timeout;
|
||||||
|
u16 appId;
|
||||||
|
u8 padding[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2RoomDataExternalA {
|
||||||
|
OrbisNpMatching2RoomDataExternalA* next;
|
||||||
|
u16 maxSlot;
|
||||||
|
u16 curMembers;
|
||||||
|
OrbisNpMatching2Flags flags;
|
||||||
|
OrbisNpMatching2ServerId serverId;
|
||||||
|
u8 pad[2];
|
||||||
|
OrbisNpMatching2WorldId worldId;
|
||||||
|
OrbisNpMatching2LobbyId lobbyId;
|
||||||
|
OrbisNpMatching2RoomId roomId;
|
||||||
|
OrbisNpMatching2RoomPasswordSlotMask passwdSlotMask;
|
||||||
|
u64 joinedSlotMask;
|
||||||
|
u16 publicSlots;
|
||||||
|
u16 privateSlots;
|
||||||
|
u16 openPublicSlots;
|
||||||
|
u16 openPrivateSlots;
|
||||||
|
Libraries::Np::OrbisNpPeerAddressA owner;
|
||||||
|
Libraries::Np::OrbisNpOnlineId ownerOnlineId;
|
||||||
|
void* roomGroup;
|
||||||
|
u64 roomGroups;
|
||||||
|
OrbisNpMatching2IntAttr* externalSearchIntAttr;
|
||||||
|
u64 externalSearchIntAttrs;
|
||||||
|
OrbisNpMatching2BinAttr* externalSearchBinAttr;
|
||||||
|
u64 externalSearchBinAttrs;
|
||||||
|
OrbisNpMatching2BinAttr* externalBinAttr;
|
||||||
|
u64 externalBinAttrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2SearchRoomRequest {
|
||||||
|
int option;
|
||||||
|
OrbisNpMatching2WorldId worldId;
|
||||||
|
OrbisNpMatching2LobbyId lobbyId;
|
||||||
|
OrbisNpMatching2RangeFilter rangeFilter;
|
||||||
|
OrbisNpMatching2Flags flags1;
|
||||||
|
OrbisNpMatching2Flags flags2;
|
||||||
|
void* intFilter;
|
||||||
|
u64 intFilters;
|
||||||
|
void* binFilter;
|
||||||
|
u64 binFilters;
|
||||||
|
OrbisNpMatching2AttributeId* attr;
|
||||||
|
u64 attrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2SearchRoomResponseA {
|
||||||
|
OrbisNpMatching2Range range;
|
||||||
|
OrbisNpMatching2RoomDataExternalA* roomDataExt;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNpMatching2SetUserInfoRequest {
|
||||||
|
OrbisNpMatching2ServerId serverId;
|
||||||
|
u8 padding[6];
|
||||||
|
OrbisNpMatching2BinAttr* userBinAttr;
|
||||||
|
u64 userBinAttrs;
|
||||||
|
};
|
||||||
|
|
||||||
|
// internal - to be removed.
|
||||||
|
struct OrbisNpMatching2SignalingEvent {
|
||||||
|
OrbisNpMatching2ContextId contextId;
|
||||||
|
OrbisNpMatching2RoomId roomId;
|
||||||
|
OrbisNpMatching2RoomMemberId roomMemberId;
|
||||||
|
OrbisNpMatching2Event event;
|
||||||
|
int errorCode;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Libraries::Np::NpMatching2
|
||||||
Loading…
Reference in New Issue
Block a user