diff --git a/rpcs3/Emu/Cell/Modules/sceNp.cpp b/rpcs3/Emu/Cell/Modules/sceNp.cpp index c3ab3c7438..8056c49225 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp.cpp @@ -422,7 +422,7 @@ error_code sceNpInit(u32 poolsize, vm::ptr poolptr) return SCE_NP_ERROR_INVALID_ARGUMENT; } - if (poolsize < SCE_NP_MIN_POOLSIZE) + if (poolsize < SCE_NP_MIN_POOL_SIZE) { return SCE_NP_ERROR_INSUFFICIENT_BUFFER; } @@ -5064,7 +5064,7 @@ error_code sceNpSignalingGetLocalNetInfo(u32 ctx_id, vm::ptrnat_status = 0; info->upnp_status = 0; info->npport_status = 0; - info->npport = 3658; + info->npport = SCE_NP_PORT; return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/sceNp.h b/rpcs3/Emu/Cell/Modules/sceNp.h index a41830f3c1..5f6b6226b2 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.h +++ b/rpcs3/Emu/Cell/Modules/sceNp.h @@ -515,7 +515,8 @@ enum enum { - SCE_NP_MIN_POOLSIZE = 128 * 1024 + SCE_NP_PORT = 3658, + SCE_NP_MIN_POOL_SIZE = 128 * 1024 }; enum @@ -529,6 +530,17 @@ enum : u64 SCE_NP_DRM_TIME_INFO_ENDLESS = 0x7FFFFFFFFFFFFFFFULL }; +enum +{ + SCE_NP_MANAGER_SUB_SIGNIN_MAX = 3, +}; + +enum +{ + SCE_NP_MANAGER_SUB_SIGNIN_RESULT_OK = 0, + SCE_NP_MANAGER_SUB_SIGNIN_RESULT_CANCEL = 1, +}; + // NP Manager Utility statuses enum { @@ -539,7 +551,10 @@ enum SCE_NP_MANAGER_STATUS_ONLINE = 3, }; -#define SCE_NP_MANAGER_EVENT_GOT_TICKET 255 +enum +{ + SCE_NP_MANAGER_EVENT_GOT_TICKET = 255 +}; // Event types enum @@ -824,6 +839,12 @@ enum SCE_NP_ENTITLEMENT_ID_SIZE = 32, }; +enum +{ + SCE_NP_ENTITLEMENT_TYPE_NON_CONSUMABLE = 0, + SCE_NP_ENTITLEMENT_TYPE_CONSUMABLE = 1 +}; + // Constants for ranking (score) functions and structures enum { @@ -906,6 +927,16 @@ enum SCE_NP_SERVICE_ID_SIZE = 24, }; +enum +{ + SCE_NP_LOOKUP_MAX_CTX_NUM = 32 +}; + +enum +{ + SCE_NP_AUTH_OAUTH_REQUEST_ID_MAX = 4 +}; + struct SceNpDrmKey { u8 keydata[16]; diff --git a/rpcs3/Emu/Cell/Modules/sceNp2.h b/rpcs3/Emu/Cell/Modules/sceNp2.h index 6602a61bc8..73c91827e2 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp2.h +++ b/rpcs3/Emu/Cell/Modules/sceNp2.h @@ -136,6 +136,7 @@ enum SCE_NP_MATCHING2_INVITATION_TARGET_SESSION_MAX = 2, SCE_NP_MATCHING2_LOBBY_MEMBER_DATA_INTERNAL_LIST_MAX = 256, SCE_NP_MATCHING2_LOBBY_MEMBER_DATA_INTERNAL_EXTENDED_DATA_LIST_MAX = 64, + SCE_NP_MATCHING2_LOBBY_BIN_ATTR_INTERNAL_NUM = 2, SCE_NP_MATCHING2_LOBBYMEMBER_BIN_ATTR_INTERNAL_NUM = 1, SCE_NP_MATCHING2_LOBBYMEMBER_BIN_ATTR_INTERNAL_MAX_SIZE = 64, SCE_NP_MATCHING2_LOBBY_MAX_SLOT = 256, @@ -149,6 +150,7 @@ enum SCE_NP_MATCHING2_ROOM_BIN_ATTR_INTERNAL_NUM = 2, SCE_NP_MATCHING2_ROOM_BIN_ATTR_INTERNAL_MAX_SIZE = 256, SCE_NP_MATCHING2_ROOM_SEARCHABLE_INT_ATTR_EXTERNAL_NUM = 8, + SCE_NP_MATCHING2_ROOM_SEARCHABLE_BIN_ATTR_EXTERNAL_NUM = 1, SCE_NP_MATCHING2_ROOM_SEARCHABLE_BIN_ATTR_EXTERNAL_MAX_SIZE = 64, SCE_NP_MATCHING2_ROOMMEMBER_BIN_ATTR_INTERNAL_NUM = 1, SCE_NP_MATCHING2_ROOMMEMBER_BIN_ATTR_INTERNAL_MAX_SIZE = 64, @@ -156,6 +158,7 @@ enum SCE_NP_MATCHING2_USER_BIN_ATTR_NUM = 1, SCE_NP_MATCHING2_USER_BIN_ATTR_MAX_SIZE = 128, SCE_NP_MATCHING2_GET_USER_INFO_LIST_NPID_NUM_MAX = 25, + SCE_NP_MATCHING2_GET_ROOM_DATA_EXTERNAL_LIST_ROOM_NUM_MAX = 20, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetServerInfo = 4, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetWorldInfoList = 3848, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomMemberDataExternalList = 15624, @@ -187,6 +190,20 @@ enum SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_LobbyInvitationInfo = 870, }; +enum +{ + SCE_NP_MATCHING2_MAX_SIZE_RoomDataExternal = 1288, + SCE_NP_MATCHING2_MAX_SIZE_RoomMemberDataInternal = 368, + SCE_NP_MATCHING2_MAX_SIZE_LobbyMemberDataInternal = 668, + SCE_NP_MATCHING2_MAX_SIZE_LobbyMemberDataInternal_NoExtendedData = 80, + SCE_NP_MATCHING2_MAX_SIZE_UserInfo = 704, +}; + +enum +{ + SCE_NP_MATCHING2_TITLE_PASSPHRASE_SIZE = 128 +}; + // Comparison operator specified as the search condition enum { @@ -222,6 +239,11 @@ enum SCE_NP_MATCHING2_SIGNALING_TYPE_STAR = 2, }; +enum +{ + SCE_NP_MATCHING2_SIGNALING_FLAG_MANUAL_MODE = 0x01 +}; + // Event cause enum { @@ -300,6 +322,12 @@ enum SCE_NP_MATCHING2_SEND_MSG_OPTION_WITH_AVATARURL = 0x04, }; +enum +{ + SCE_NP_MATCHING2_ROOM_ALLOWED_USER_MAX = 100, + SCE_NP_MATCHING2_ROOM_BLOCKED_USER_MAX = 100, +}; + // Flag-type lobby attribute enum { @@ -328,7 +356,8 @@ enum // Flah-type room member attribute enum { - SCE_NP_MATCHING2_ROOMMEMBER_FLAG_ATTR_OWNER = 0x80000000, + SCE_NP_MATCHING2_LOBBYMEMBER_FLAG_ATTR_OWNER = 0x80000000, + SCE_NP_MATCHING2_ROOMMEMBER_FLAG_ATTR_OWNER = 0x80000000, }; // ID of external room search integer attribute @@ -357,6 +386,13 @@ enum SCE_NP_MATCHING2_ROOM_BIN_ATTR_EXTERNAL_2_ID = 0x0056, }; +// ID of internal lobby binary attribute +enum +{ + SCE_NP_MATCHING2_LOBBY_BIN_ATTR_INTERNAL_1_ID = 0x0037, + SCE_NP_MATCHING2_LOBBY_BIN_ATTR_INTERNAL_2_ID = 0x0038, +}; + // ID of internal room binary attribute enum { @@ -451,8 +487,9 @@ enum // Signaling event enum { - SCE_NP_MATCHING2_SIGNALING_EVENT_Dead = 0x5101, - SCE_NP_MATCHING2_SIGNALING_EVENT_Established = 0x5102, + SCE_NP_MATCHING2_SIGNALING_EVENT_Dead = 0x5101, + SCE_NP_MATCHING2_SIGNALING_EVENT_Established = 0x5102, + SCE_NP_MATCHING2_SIGNALING_EVENT_NetInfoResult = 0x5103, }; // Context event @@ -463,6 +500,14 @@ enum SCE_NP_MATCHING2_CONTEXT_EVENT_Stop = 0x6f03, }; +enum +{ + SCE_NP_MATCHING2_SIGNALING_NETINFO_NAT_STATUS_UNKNOWN = 0, + SCE_NP_MATCHING2_SIGNALING_NETINFO_NAT_STATUS_TYPE = 1, + SCE_NP_MATCHING2_SIGNALING_NETINFO_NAT_STATUS_TYPE2 = 2, + SCE_NP_MATCHING2_SIGNALING_NETINFO_NAT_STATUS_TYPE3 = 3, +}; + typedef u16 SceNpMatching2ServerId; typedef u32 SceNpMatching2WorldId; typedef u16 SceNpMatching2WorldNumber; diff --git a/rpcs3/Emu/Cell/Modules/sceNpClans.h b/rpcs3/Emu/Cell/Modules/sceNpClans.h index 9e5c56c054..f0d1d54630 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpClans.h +++ b/rpcs3/Emu/Cell/Modules/sceNpClans.h @@ -109,6 +109,34 @@ enum SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX = 100, }; +enum +{ + SCE_NP_CLANS_FIELDS_SEARCHABLE_ATTR_INT_ATTR1 = 0x00000001, + SCE_NP_CLANS_FIELDS_SEARCHABLE_ATTR_INT_ATTR2 = 0x00000002, + SCE_NP_CLANS_FIELDS_SEARCHABLE_ATTR_INT_ATTR3 = 0x00000004, + SCE_NP_CLANS_FIELDS_SEARCHABLE_ATTR_BIN_ATTR1 = 0x00000008, + SCE_NP_CLANS_FIELDS_SEARCHABLE_PROFILE_TAG = 0x00000010, + SCE_NP_CLANS_FIELDS_SEARCHABLE_PROFILE_NUM_MEMBERS = 0x00000020, + SCE_NP_CLANS_FIELDS_UPDATABLE_CLAN_INFO_DESCR = 0x00000040, + SCE_NP_CLANS_FIELDS_UPDATABLE_CLAN_INFO_BIN_DATA1 = 0x00000080, + SCE_NP_CLANS_FIELDS_UPDATABLE_MEMBER_INFO_DESCR = 0x00000100, + SCE_NP_CLANS_FIELDS_UPDATABLE_MEMBER_INFO_BIN_ATTR1 = 0x00000200, + SCE_NP_CLANS_FIELDS_UPDATABLE_MEMBER_INFO_BIN_DATA1 = 0x00000400, + SCE_NP_CLANS_FIELDS_UPDATABLE_MEMBER_INFO_ALLOW_MSG = 0x00000800, +}; + +enum +{ + SCE_NP_CLANS_MESSAGE_OPTIONS_NONE = 0x00000000, + SCE_NP_CLANS_MESSAGE_OPTIONS_CENSOR = 0x00000001, +}; + +enum +{ + SCE_NP_CLANS_INVALID_ID = 0, + SCE_NP_CLANS_INVALID_REQUEST_HANDLE = 0, +}; + // Request handle for clan API using SceNpClansRequestHandle = vm::ptr; diff --git a/rpcs3/Emu/Cell/Modules/sceNpTus.h b/rpcs3/Emu/Cell/Modules/sceNpTus.h index 3a6f3370e5..dd18dc53e1 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpTus.h +++ b/rpcs3/Emu/Cell/Modules/sceNpTus.h @@ -15,6 +15,30 @@ enum SCE_NP_TUS_MAX_SELECTED_FRIENDS_NUM = 100, }; +enum +{ + SCE_NP_TUS_OPETYPE_EQUAL = 1, + SCE_NP_TUS_OPETYPE_NOT_EQUAL, + SCE_NP_TUS_OPETYPE_GREATER_THAN, + SCE_NP_TUS_OPETYPE_GREATER_OR_EQUAL, + SCE_NP_TUS_OPETYPE_LESS_THAN, + SCE_NP_TUS_OPETYPE_LESS_OR_EQUAL +}; + +enum +{ + SCE_NP_TUS_VARIABLE_SORTTYPE_DESCENDING_DATE = 1, + SCE_NP_TUS_VARIABLE_SORTTYPE_ASCENDING_DATE, + SCE_NP_TUS_VARIABLE_SORTTYPE_DESCENDING_VALUE, + SCE_NP_TUS_VARIABLE_SORTTYPE_ASCENDING_VALUE +}; + +enum +{ + SCE_NP_TUS_DATASTATUS_SORTTYPE_DESCENDING_DATE = 1, + SCE_NP_TUS_DATASTATUS_SORTTYPE_ASCENDING_DATE +}; + enum SceNpTssStatusCodeType { SCE_NP_TSS_STATUS_TYPE_OK, diff --git a/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2p.cpp b/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2p.cpp index b82c208a91..638cb0bbd0 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2p.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2p.cpp @@ -77,13 +77,13 @@ s32 lv2_socket_p2p::bind(const sys_net_sockaddr& addr, s32 ps3_id) sys_net.notice("[P2P] Trying to bind %s:%d:%d", np::ip_to_string(std::bit_cast(psa_in_p2p->sin_addr)), p2p_port, p2p_vport); - if (p2p_port != 3658) + if (p2p_port != SCE_NP_PORT) { if (p2p_port == 0) { return -SYS_NET_EINVAL; } - sys_net.warning("[P2P] Attempting to bind a socket to a port != 3658"); + sys_net.warning("[P2P] Attempting to bind a socket to a port != %d", +SCE_NP_PORT); } socket_type real_socket{}; diff --git a/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2ps.cpp b/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2ps.cpp index e92f5150ba..3f30a1fe55 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2ps.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net/lv2_socket_p2ps.cpp @@ -531,12 +531,12 @@ s32 lv2_socket_p2ps::bind(const sys_net_sockaddr& addr, s32 ps3_id) if (p2p_port == 0) { - p2p_port = 3658; + p2p_port = SCE_NP_PORT; } - if (p2p_port != 3658) + if (p2p_port != SCE_NP_PORT) { - sys_net.warning("[P2PS] Attempting to bind a socket to a port != 3658"); + sys_net.warning("[P2PS] Attempting to bind a socket to a port != %d", +SCE_NP_PORT); } socket_type real_socket{}; diff --git a/rpcs3/Emu/Cell/lv2/sys_net/network_context.cpp b/rpcs3/Emu/Cell/lv2/sys_net/network_context.cpp index 686400e5d8..3ba143685e 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net/network_context.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net/network_context.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Emu/Cell/lv2/sys_sync.h" +#include "Emu/Cell/Modules/sceNp.h" // for SCE_NP_PORT #include "network_context.h" #include "Emu/system_config.h" @@ -14,14 +15,14 @@ s32 send_packet_from_p2p_port(const std::vector& data, const sockaddr_in& ad auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - if (nc.list_p2p_ports.contains(3658)) + if (nc.list_p2p_ports.contains(SCE_NP_PORT)) { - auto& def_port = nc.list_p2p_ports.at(3658); + auto& def_port = nc.list_p2p_ports.at(SCE_NP_PORT); res = ::sendto(def_port.p2p_socket, reinterpret_cast(data.data()), data.size(), 0, reinterpret_cast(&addr), sizeof(sockaddr_in)); } else { - sys_net.error("send_packet_from_p2p_port: port %d not present", 3658); + sys_net.error("send_packet_from_p2p_port: port %d not present", +SCE_NP_PORT); } } @@ -34,9 +35,9 @@ std::vector> get_rpcn_msgs() auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - if (nc.list_p2p_ports.contains(3658)) + if (nc.list_p2p_ports.contains(SCE_NP_PORT)) { - auto& def_port = nc.list_p2p_ports.at(3658); + auto& def_port = nc.list_p2p_ports.at(SCE_NP_PORT); { std::lock_guard lock(def_port.s_rpcn_mutex); msgs = std::move(def_port.rpcn_msgs); @@ -45,7 +46,7 @@ std::vector> get_rpcn_msgs() } else { - sys_net.error("get_rpcn_msgs: port %d not present", 3658); + sys_net.error("get_rpcn_msgs: port %d not present", +SCE_NP_PORT); } } @@ -58,9 +59,9 @@ std::vector, std::vector>> get_sign_msgs() auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - if (nc.list_p2p_ports.contains(3658)) + if (nc.list_p2p_ports.contains(SCE_NP_PORT)) { - auto& def_port = nc.list_p2p_ports.at(3658); + auto& def_port = nc.list_p2p_ports.at(SCE_NP_PORT); { std::lock_guard lock(def_port.s_sign_mutex); msgs = std::move(def_port.sign_msgs); @@ -69,7 +70,7 @@ std::vector, std::vector>> get_sign_msgs() } else { - sys_net.error("get_sign_msgs: port %d not present", 3658); + sys_net.error("get_sign_msgs: port %d not present", +SCE_NP_PORT); } } @@ -85,7 +86,7 @@ void need_network() network_thread::network_thread() noexcept { if (g_cfg.net.psn_status == np_psn_status::psn_rpcn) - list_p2p_ports.emplace(std::piecewise_construct, std::forward_as_tuple(3658), std::forward_as_tuple(3658)); + list_p2p_ports.emplace(std::piecewise_construct, std::forward_as_tuple(SCE_NP_PORT), std::forward_as_tuple(SCE_NP_PORT)); } network_thread::~network_thread()