From 9dd0b055d0ac4bdd3339bf5a099c4064cc568418 Mon Sep 17 00:00:00 2001 From: RipleyTom Date: Fri, 20 Sep 2024 20:24:59 +0200 Subject: [PATCH] Fake sceNpMatching2GetLobbyInfoList --- rpcs3/Emu/Cell/Modules/sceNp2.cpp | 7 ++ rpcs3/Emu/NP/np_handler.h | 1 + rpcs3/Emu/NP/np_notifications.cpp | 20 +++--- rpcs3/Emu/NP/np_requests.cpp | 83 ++++++++++++++++------- rpcs3/Emu/NP/np_structs_extra.cpp | 105 +++++++++++++++++------------- rpcs3/Emu/NP/np_structs_extra.h | 40 ++++++------ rpcs3/Emu/NP/rpcn_client.h | 2 - 7 files changed, 159 insertions(+), 99 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/sceNp2.cpp b/rpcs3/Emu/Cell/Modules/sceNp2.cpp index 3398bb8157..174a9ec0ce 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp2.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp2.cpp @@ -1656,6 +1656,13 @@ error_code sceNpMatching2GetLobbyInfoList( return res; } + const u32 request_id = nph.get_lobby_info_list(ctxId, optParam, reqParam.get_ptr()); + + if (assignedReqId) + { + *assignedReqId = request_id; + } + return CELL_OK; } diff --git a/rpcs3/Emu/NP/np_handler.h b/rpcs3/Emu/NP/np_handler.h index 4bbfc5535a..8b6f2f7110 100644 --- a/rpcs3/Emu/NP/np_handler.h +++ b/rpcs3/Emu/NP/np_handler.h @@ -185,6 +185,7 @@ namespace np u32 set_userinfo(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2SetUserInfoRequest* req); u32 get_ping_info(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2SignalingGetPingInfoRequest* req); u32 send_room_message(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2SendRoomMessageRequest* req); + u32 get_lobby_info_list(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2GetLobbyInfoListRequest* req); u32 get_match2_event(SceNpMatching2EventKey event_key, u32 dest_addr, u32 size); diff --git a/rpcs3/Emu/NP/np_notifications.cpp b/rpcs3/Emu/NP/np_notifications.cpp index 7d18133bd4..3634ad6cf9 100644 --- a/rpcs3/Emu/NP/np_notifications.cpp +++ b/rpcs3/Emu/NP/np_notifications.cpp @@ -23,7 +23,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMemberUpdateInfo, sizeof(SceNpMatching2RoomMemberUpdateInfo)); @@ -35,7 +35,7 @@ namespace np return; rpcn_log.notice("Received notification that user %s(%d) joined the room(%d)", notif_data->roomMemberDataInternal->userInfo.npId.handle.data, notif_data->roomMemberDataInternal->memberId, room_id); - extra_nps::print_room_member_data_internal(notif_data->roomMemberDataInternal.get_ptr()); + extra_nps::print_SceNpMatching2RoomMemberDataInternal(notif_data->roomMemberDataInternal.get_ptr()); if (room_event_cb) { @@ -59,7 +59,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMemberUpdateInfo, sizeof(SceNpMatching2RoomMemberUpdateInfo)); @@ -71,7 +71,7 @@ namespace np return; rpcn_log.notice("Received notification that user %s(%d) left the room(%d)", notif_data->roomMemberDataInternal->userInfo.npId.handle.data, notif_data->roomMemberDataInternal->memberId, room_id); - extra_nps::print_room_member_data_internal(notif_data->roomMemberDataInternal.get_ptr()); + extra_nps::print_SceNpMatching2RoomMemberDataInternal(notif_data->roomMemberDataInternal.get_ptr()); if (room_event_cb) { @@ -95,7 +95,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomUpdateInfo, sizeof(SceNpMatching2RoomUpdateInfo)); auto* notif_data = reinterpret_cast(edata.data()); @@ -129,7 +129,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomDataInternalUpdateInfo, sizeof(SceNpMatching2RoomDataInternalUpdateInfo)); @@ -139,7 +139,7 @@ namespace np np_cache.insert_room(notif_data->newRoomDataInternal.get_ptr()); - extra_nps::print_room_data_internal(notif_data->newRoomDataInternal.get_ptr()); + extra_nps::print_SceNpMatching2RoomDataInternal(notif_data->newRoomDataInternal.get_ptr()); rpcn_log.notice("Received notification that room(%d)'s data was updated", room_id); @@ -165,7 +165,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMemberDataInternalUpdateInfo, sizeof(SceNpMatching2RoomMemberDataInternalUpdateInfo)); @@ -177,7 +177,7 @@ namespace np return; rpcn_log.notice("Received notification that user's %s(%d) room (%d) data was updated", notif_data->newRoomMemberDataInternal->userInfo.npId.handle.data, notif_data->newRoomMemberDataInternal->memberId, room_id); - extra_nps::print_room_member_data_internal(notif_data->newRoomMemberDataInternal.get_ptr()); + extra_nps::print_SceNpMatching2RoomMemberDataInternal(notif_data->newRoomMemberDataInternal.get_ptr()); if (room_event_cb) { @@ -202,7 +202,7 @@ namespace np return; } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMessageInfo, sizeof(SceNpMatching2RoomMessageInfo)); diff --git a/rpcs3/Emu/NP/np_requests.cpp b/rpcs3/Emu/NP/np_requests.cpp index 33026986fc..4d4d01c812 100644 --- a/rpcs3/Emu/NP/np_requests.cpp +++ b/rpcs3/Emu/NP/np_requests.cpp @@ -64,7 +64,7 @@ namespace np { // TODO: actually implement interaction with server for this? const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_GetServerInfo); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetServerInfo, sizeof(SceNpMatching2GetServerInfoResponse)); SceNpMatching2GetServerInfoResponse* serv_info = reinterpret_cast(edata.data()); @@ -135,7 +135,7 @@ namespace np return error_and_disconnect("Malformed reply to GetWorldList command"); } - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetWorldInfoList, sizeof(SceNpMatching2GetWorldInfoListResponse)); auto* world_info = reinterpret_cast(edata.data()); @@ -160,7 +160,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_CreateJoinRoom); - extra_nps::print_createjoinroom(req); + extra_nps::print_SceNpMatching2CreateJoinRoomRequest(req); if (!get_rpcn()->createjoin_room(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -187,7 +187,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to CreateRoom command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_CreateJoinRoom, sizeof(SceNpMatching2CreateJoinRoomResponse)); @@ -199,7 +199,7 @@ namespace np np_cache.insert_room(room_info); np_cache.update_password(room_resp->roomDataInternal->roomId, cached_cj_password); - extra_nps::print_create_room_resp(room_resp); + extra_nps::print_SceNpMatching2CreateJoinRoomResponse(room_resp); cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); @@ -210,7 +210,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_JoinRoom); - extra_nps::print_joinroom(req); + extra_nps::print_SceNpMatching2JoinRoomRequest(req); if (!get_rpcn()->join_room(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -254,7 +254,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to JoinRoom command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_JoinRoom, sizeof(SceNpMatching2JoinRoomResponse)); @@ -265,7 +265,7 @@ namespace np np_cache.insert_room(room_info); - extra_nps::print_room_data_internal(room_info); + extra_nps::print_SceNpMatching2RoomDataInternal(room_info); cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); @@ -309,7 +309,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_SearchRoom); - extra_nps::print_search_room(req); + extra_nps::print_SceNpMatching2SearchRoomRequest(req); if (!get_rpcn()->search_room(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -333,7 +333,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to SearchRoom command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_SearchRoom, sizeof(SceNpMatching2SearchRoomResponse)); auto* search_resp = reinterpret_cast(edata.data()); @@ -341,7 +341,7 @@ namespace np SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(edata, resp, search_resp); np_memory.shrink_allocation(edata.addr(), edata.size()); - extra_nps::print_search_room_resp(search_resp); + extra_nps::print_SceNpMatching2SearchRoomResponse(search_resp); cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); return true; @@ -351,7 +351,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_GetRoomDataExternalList); - extra_nps::print_get_roomdata_external_list_req(req); + extra_nps::print_SceNpMatching2GetRoomDataExternalListRequest(req); if (!get_rpcn()->get_roomdata_external_list(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -375,7 +375,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to GetRoomDataExternalList command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomDataExternalList, sizeof(SceNpMatching2GetRoomDataExternalListResponse)); @@ -383,7 +383,7 @@ namespace np GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(edata, resp, sce_get_room_ext_resp, include_onlinename, include_avatarurl); np_memory.shrink_allocation(edata.addr(), edata.size()); - extra_nps::print_get_roomdata_external_list_resp(sce_get_room_ext_resp); + extra_nps::print_SceNpMatching2GetRoomDataExternalListResponse(sce_get_room_ext_resp); cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); @@ -394,7 +394,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_SetRoomDataExternal); - extra_nps::print_set_roomdata_ext_req(req); + extra_nps::print_SceNpMatching2SetRoomDataExternalRequest(req); if (!get_rpcn()->set_roomdata_external(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -444,7 +444,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to GetRoomDataInternal command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomDataInternal, sizeof(SceNpMatching2GetRoomDataInternalResponse)); @@ -455,7 +455,7 @@ namespace np np_cache.insert_room(room_info); - extra_nps::print_room_data_internal(room_info); + extra_nps::print_SceNpMatching2RoomDataInternal(room_info); cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); @@ -466,7 +466,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_SetRoomDataInternal); - extra_nps::print_set_roomdata_int_req(req); + extra_nps::print_SceNpMatching2SetRoomDataInternalRequest(req); if (!get_rpcn()->set_roomdata_internal(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -492,7 +492,7 @@ namespace np u32 np_handler::get_roommemberdata_internal(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2GetRoomMemberDataInternalRequest* req) { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_GetRoomMemberDataInternal); - extra_nps::print_get_roommemberdata_int_req(req); + extra_nps::print_SceNpMatching2GetRoomMemberDataInternalRequest(req); if (!get_rpcn()->get_roommemberdata_internal(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -532,7 +532,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to GetRoomMemberDataInternal command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomMemberDataInternal, sizeof(SceNpMatching2GetRoomMemberDataInternalResponse)); @@ -549,7 +549,7 @@ namespace np { const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_SetRoomMemberDataInternal); - extra_nps::print_set_roommemberdata_int_req(req); + extra_nps::print_SceNpMatching2SetRoomMemberDataInternalRequest(req); if (!get_rpcn()->set_roommemberdata_internal(req_id, get_match2_context(ctx_id)->communicationId, req)) { @@ -629,7 +629,7 @@ namespace np if (reply.is_error()) return error_and_disconnect("Malformed reply to PingRoomOwner command"); - u32 event_key = get_event_key(); + const u32 event_key = get_event_key(); auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_SignalingGetPingInfo, sizeof(SceNpMatching2SignalingGetPingInfoResponse)); auto* final_ping_resp = reinterpret_cast(edata.data()); @@ -706,8 +706,8 @@ namespace np } vec_stream reply(reply_data, 1); - u32 addr = reply.get(); - u16 port = reply.get(); + const u32 addr = reply.get(); + const u16 port = reply.get(); if (reply.is_error()) return error_and_disconnect("Malformed reply to RequestSignalingInfos command"); @@ -718,6 +718,41 @@ namespace np return true; } + u32 np_handler::get_lobby_info_list(SceNpMatching2ContextId ctx_id, vm::cptr optParam, const SceNpMatching2GetLobbyInfoListRequest* req) + { + // Hack + // Note that this is fake and needs to be properly implemented both on server and on rpcs3 + + extra_nps::print_SceNpMatching2GetLobbyInfoListRequest(req); + + const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_GetLobbyInfoList); + auto cb_info_opt = take_pending_request(req_id); + + if (!cb_info_opt) + return true; + + const u32 event_key = get_event_key(); + + auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetLobbyInfoList, sizeof(SceNpMatching2GetLobbyInfoListResponse)); + auto* resp = reinterpret_cast(edata.data()); + + resp->range.size = 1; + resp->range.startIndex = 1; + resp->range.total = 1; + auto lobby_data = edata.allocate(sizeof(SceNpMatching2LobbyDataExternal), resp->lobbyDataExternal); + lobby_data->serverId = 1; + lobby_data->worldId = req->worldId; + lobby_data->lobbyId = 1; + lobby_data->maxSlot = 64; + lobby_data->curMemberNum = 0; + lobby_data->flagAttr = SCE_NP_MATCHING2_LOBBY_FLAG_ATTR_PERMANENT; + + np_memory.shrink_allocation(edata.addr(), edata.size()); + cb_info_opt->queue_callback(req_id, event_key, 0, edata.size()); + + return req_id; + } + void np_handler::req_ticket([[maybe_unused]] u32 version, [[maybe_unused]] const SceNpId* npid, const char* service_id, const u8* cookie, u32 cookie_size, [[maybe_unused]] const char* entitlement_id, [[maybe_unused]] u32 consumed_count) { const u32 req_id = get_req_id(REQUEST_ID_HIGH::MISC); diff --git a/rpcs3/Emu/NP/np_structs_extra.cpp b/rpcs3/Emu/NP/np_structs_extra.cpp index 93b8a5ef70..d64b76be0a 100644 --- a/rpcs3/Emu/NP/np_structs_extra.cpp +++ b/rpcs3/Emu/NP/np_structs_extra.cpp @@ -9,7 +9,7 @@ LOG_CHANNEL(sceNp2); namespace extra_nps { - void print_userinfo2(const SceNpUserInfo2* user) + void print_SceNpUserInfo2(const SceNpUserInfo2* user) { sceNp2.warning("SceNpUserInfo2:"); sceNp2.warning("npid: %s", static_cast(user->npId.handle.data)); @@ -17,7 +17,7 @@ namespace extra_nps sceNp2.warning("avatarUrl: *0x%x(%s)", user->avatarUrl, user->avatarUrl ? static_cast(user->avatarUrl->data) : ""); } - void print_sigoptparam(const SceNpMatching2SignalingOptParam* opt) + void print_SceNpMatching2SignalingOptParam(const SceNpMatching2SignalingOptParam* opt) { sceNp2.warning("SceNpMatching2SignalingOptParam:"); sceNp2.warning("type: %d", opt->type); @@ -30,7 +30,7 @@ namespace extra_nps sceNp2.warning("Id: 0x%x, num:%d(0x%x)", attr->id, attr->num, attr->num); } - void print_bin_attr(const SceNpMatching2BinAttr* bin) + void print_SceNpMatching2BinAttr(const SceNpMatching2BinAttr* bin) { const auto ptr = +bin->ptr; const u32 size = bin->size; @@ -43,19 +43,19 @@ namespace extra_nps } } - void print_bin_attr_internal(const SceNpMatching2RoomBinAttrInternal* bin) + void print_SceNpMatching2BinAttr_internal(const SceNpMatching2RoomBinAttrInternal* bin) { sceNp2.warning("updateDate: %llu updateMemberId: %d", bin->updateDate.tick, bin->updateMemberId); - print_bin_attr(&bin->data); + print_SceNpMatching2BinAttr(&bin->data); } void print_member_bin_attr_internal(const SceNpMatching2RoomMemberBinAttrInternal* bin) { sceNp2.warning("updateDate: %llu", bin->updateDate.tick); - print_bin_attr(&bin->data); + print_SceNpMatching2BinAttr(&bin->data); } - void print_presence_data(const SceNpMatching2PresenceOptionData* opt) + void print_SceNpMatching2PresenceOptionData(const SceNpMatching2PresenceOptionData* opt) { sceNp2.warning("Data: %s", std::basic_string_view{std::data(opt->data), std::size(opt->data)}); } @@ -67,7 +67,7 @@ namespace extra_nps sceNp2.warning("size: %d", range->size); } - void print_range_filter(const SceNpMatching2RangeFilter* filt) + void print_SceNpMatching2RangeFilter(const SceNpMatching2RangeFilter* filt) { sceNp2.warning("startIndex: %d", filt->startIndex); sceNp2.warning("max: %d", filt->max); @@ -82,10 +82,10 @@ namespace extra_nps void print_bin_search_filter(const SceNpMatching2BinSearchFilter* filt) { sceNp2.warning("searchOperator: %s", filt->searchOperator); - print_bin_attr(&filt->attr); + print_SceNpMatching2BinAttr(&filt->attr); } - void print_createjoinroom(const SceNpMatching2CreateJoinRoomRequest* req) + void print_SceNpMatching2CreateJoinRoomRequest(const SceNpMatching2CreateJoinRoomRequest* req) { sceNp2.warning("SceNpMatching2CreateJoinRoomRequest:"); sceNp2.warning("worldId: %d", req->worldId); @@ -96,7 +96,7 @@ namespace extra_nps sceNp2.warning("roomBinAttrInternalNum: %d", req->roomBinAttrInternalNum); for (u32 i = 0; i < req->roomBinAttrInternalNum && req->roomBinAttrInternal; i++) - print_bin_attr(&req->roomBinAttrInternal[i]); + print_SceNpMatching2BinAttr(&req->roomBinAttrInternal[i]); sceNp2.warning("roomSearchableIntAttrExternal: *0x%x", req->roomSearchableIntAttrExternal); sceNp2.warning("roomSearchableIntAttrExternalNum: %d", req->roomSearchableIntAttrExternalNum); @@ -108,13 +108,13 @@ namespace extra_nps sceNp2.warning("roomSearchableBinAttrExternalNum: %d", req->roomSearchableBinAttrExternalNum); for (u32 i = 0; i < req->roomSearchableBinAttrExternalNum && req->roomSearchableBinAttrExternal; i++) - print_bin_attr(&req->roomSearchableBinAttrExternal[i]); - + print_SceNpMatching2BinAttr(&req->roomSearchableBinAttrExternal[i]); + sceNp2.warning("roomBinAttrExternal: *0x%x", req->roomBinAttrExternal); sceNp2.warning("roomBinAttrExternalNum: %d", req->roomBinAttrExternalNum); for (u32 i = 0; i < req->roomBinAttrExternalNum && req->roomBinAttrExternal; i++) - print_bin_attr(&req->roomBinAttrExternal[i]); + print_SceNpMatching2BinAttr(&req->roomBinAttrExternal[i]); sceNp2.warning("roomPassword: *0x%x", req->roomPassword); sceNp2.warning("groupConfig: *0x%x", req->groupConfig); @@ -129,16 +129,16 @@ namespace extra_nps sceNp2.warning("roomMemberBinAttrInternalNum: %d", req->roomMemberBinAttrInternalNum); for (u32 i = 0; i < req->roomMemberBinAttrInternalNum && req->roomMemberBinAttrInternal; i++) - print_bin_attr(&req->roomMemberBinAttrInternal[i]); + print_SceNpMatching2BinAttr(&req->roomMemberBinAttrInternal[i]); sceNp2.warning("teamId: %d", req->teamId); sceNp2.warning("sigOptParam: *0x%x", req->sigOptParam); if (req->sigOptParam) - print_sigoptparam(req->sigOptParam.get_ptr()); + print_SceNpMatching2SignalingOptParam(req->sigOptParam.get_ptr()); } - void print_joinroom(const SceNpMatching2JoinRoomRequest* req) + void print_SceNpMatching2JoinRoomRequest(const SceNpMatching2JoinRoomRequest* req) { sceNp2.warning("SceNpMatching2JoinRoomRequest:"); sceNp2.warning("roomId: %d", req->roomId); @@ -146,20 +146,20 @@ namespace extra_nps sceNp2.warning("joinRoomGroupLabel: *0x%x", req->joinRoomGroupLabel); sceNp2.warning("roomMemberBinAttrInternal: *0x%x", req->roomMemberBinAttrInternal); sceNp2.warning("roomMemberBinAttrInternalNum: %d", req->roomMemberBinAttrInternalNum); - print_presence_data(&req->optData); + print_SceNpMatching2PresenceOptionData(&req->optData); sceNp2.warning("teamId: %d", req->teamId); for (u32 i = 0; i < req->roomMemberBinAttrInternalNum && req->roomMemberBinAttrInternal; i++) - print_bin_attr(&req->roomMemberBinAttrInternal[i]); + print_SceNpMatching2BinAttr(&req->roomMemberBinAttrInternal[i]); } - void print_search_room(const SceNpMatching2SearchRoomRequest* req) + void print_SceNpMatching2SearchRoomRequest(const SceNpMatching2SearchRoomRequest* req) { sceNp2.warning("SceNpMatching2SearchRoomRequest:"); sceNp2.warning("option: 0x%x", req->option); sceNp2.warning("worldId: %d", req->worldId); sceNp2.warning("lobbyId: %lld", req->lobbyId); - print_range_filter(&req->rangeFilter); + print_SceNpMatching2RangeFilter(&req->rangeFilter); sceNp2.warning("flagFilter: 0x%x", req->flagFilter); sceNp2.warning("flagAttr: 0x%x", req->flagAttr); sceNp2.warning("intFilter: *0x%x", req->intFilter); @@ -176,7 +176,7 @@ namespace extra_nps sceNp2.warning("attrId[%d] = 0x%x", i, req->attrId[i]); } - void print_search_room_resp(const SceNpMatching2SearchRoomResponse* resp) + void print_SceNpMatching2SearchRoomResponse(const SceNpMatching2SearchRoomResponse* resp) { sceNp2.warning("SceNpMatching2SearchRoomResponse:"); print_range(&resp->range); @@ -185,12 +185,12 @@ namespace extra_nps for (u32 i = 0; i < resp->range.total; i++) { sceNp2.warning("SceNpMatching2SearchRoomResponse[%d]:", i); - print_room_data_external(room_ptr); + print_SceNpMatching2RoomDataExternal(room_ptr); room_ptr = room_ptr->next.get_ptr(); } } - void print_room_member_data_internal(const SceNpMatching2RoomMemberDataInternal* member) + void print_SceNpMatching2RoomMemberDataInternal(const SceNpMatching2RoomMemberDataInternal* member) { sceNp2.warning("SceNpMatching2RoomMemberDataInternal:"); sceNp2.warning("next: *0x%x", member->next); @@ -209,7 +209,7 @@ namespace extra_nps print_member_bin_attr_internal(&member->roomMemberBinAttrInternal[i]); } - void print_room_data_internal(const SceNpMatching2RoomDataInternal* room) + void print_SceNpMatching2RoomDataInternal(const SceNpMatching2RoomDataInternal* room) { sceNp2.warning("SceNpMatching2RoomDataInternal:"); sceNp2.warning("serverId: %d", room->serverId); @@ -223,7 +223,7 @@ namespace extra_nps auto cur_member = room->memberList.members; while (cur_member) { - print_room_member_data_internal(cur_member.get_ptr()); + print_SceNpMatching2RoomMemberDataInternal(cur_member.get_ptr()); cur_member = cur_member->next; } sceNp2.warning("membersNum: %d", room->memberList.membersNum); @@ -236,10 +236,10 @@ namespace extra_nps sceNp2.warning("roomBinAttrInternal: *0x%x", room->roomBinAttrInternal); sceNp2.warning("roomBinAttrInternalNum: %d", room->roomBinAttrInternalNum); for (u32 i = 0; i < room->roomBinAttrInternalNum && room->roomBinAttrInternal; i++) - print_bin_attr_internal(&room->roomBinAttrInternal[i]); + print_SceNpMatching2BinAttr_internal(&room->roomBinAttrInternal[i]); } - void print_room_data_external(const SceNpMatching2RoomDataExternal* room) + void print_SceNpMatching2RoomDataExternal(const SceNpMatching2RoomDataExternal* room) { sceNp2.warning("SceNpMatching2RoomDataExternal:"); sceNp2.warning("next: *0x%x", room->next); @@ -257,7 +257,7 @@ namespace extra_nps sceNp2.warning("owner: *0x%x", room->owner); if (room->owner) - print_userinfo2(room->owner.get_ptr()); + print_SceNpUserInfo2(room->owner.get_ptr()); sceNp2.warning("roomGroup: *0x%x", room->roomGroup); // TODO: print roomGroup @@ -273,24 +273,24 @@ namespace extra_nps sceNp2.warning("roomSearchableBinAttrExternalNum: %d", room->roomSearchableBinAttrExternalNum); for (u32 i = 0; i < room->roomSearchableBinAttrExternalNum && room->roomSearchableBinAttrExternal; i++) - print_bin_attr(&room->roomSearchableBinAttrExternal[i]); + print_SceNpMatching2BinAttr(&room->roomSearchableBinAttrExternal[i]); sceNp2.warning("roomBinAttrExternal: *0x%x", room->roomBinAttrExternal); sceNp2.warning("roomBinAttrExternalNum: %d", room->roomBinAttrExternalNum); for (u32 i = 0; i < room->roomBinAttrExternalNum && room->roomBinAttrExternal; i++) - print_bin_attr(&room->roomBinAttrExternal[i]); + print_SceNpMatching2BinAttr(&room->roomBinAttrExternal[i]); } - void print_create_room_resp(const SceNpMatching2CreateJoinRoomResponse* resp) + void print_SceNpMatching2CreateJoinRoomResponse(const SceNpMatching2CreateJoinRoomResponse* resp) { sceNp2.warning("SceNpMatching2CreateJoinRoomResponse:"); sceNp2.warning("roomDataInternal: *0x%x", resp->roomDataInternal); if (resp->roomDataInternal) - print_room_data_internal(resp->roomDataInternal.get_ptr()); + print_SceNpMatching2RoomDataInternal(resp->roomDataInternal.get_ptr()); } - void print_set_roomdata_ext_req(const SceNpMatching2SetRoomDataExternalRequest* req) + void print_SceNpMatching2SetRoomDataExternalRequest(const SceNpMatching2SetRoomDataExternalRequest* req) { sceNp2.warning("SceNpMatching2SetRoomDataExternalRequest:"); sceNp2.warning("roomId: %d", req->roomId); @@ -304,16 +304,16 @@ namespace extra_nps sceNp2.warning("roomSearchableBinAttrExternalNum: %d", req->roomSearchableBinAttrExternalNum); for (u32 i = 0; i < req->roomSearchableBinAttrExternalNum && req->roomSearchableBinAttrExternal; i++) - print_bin_attr(&req->roomSearchableBinAttrExternal[i]); + print_SceNpMatching2BinAttr(&req->roomSearchableBinAttrExternal[i]); sceNp2.warning("roomBinAttrExternal: *0x%x", req->roomBinAttrExternal); sceNp2.warning("roomBinAttrExternalNum: %d", req->roomBinAttrExternalNum); for (u32 i = 0; i < req->roomBinAttrExternalNum && req->roomBinAttrExternal; i++) - print_bin_attr(&req->roomBinAttrExternal[i]); + print_SceNpMatching2BinAttr(&req->roomBinAttrExternal[i]); } - void print_set_roomdata_int_req(const SceNpMatching2SetRoomDataInternalRequest* req) + void print_SceNpMatching2SetRoomDataInternalRequest(const SceNpMatching2SetRoomDataInternalRequest* req) { sceNp2.warning("SceNpMatching2SetRoomDataInternalRequest:"); sceNp2.warning("roomId: %d", req->roomId); @@ -323,7 +323,7 @@ namespace extra_nps sceNp2.warning("roomBinAttrInternalNum: %d", req->roomBinAttrInternalNum); for (u32 i = 0; i < req->roomBinAttrInternalNum && req->roomBinAttrInternal; i++) - print_bin_attr(&req->roomBinAttrInternal[i]); + print_SceNpMatching2BinAttr(&req->roomBinAttrInternal[i]); sceNp2.warning("passwordConfig: *0x%x", req->passwordConfig); sceNp2.warning("passwordConfigNum: %d", req->passwordConfigNum); @@ -332,7 +332,7 @@ namespace extra_nps sceNp2.warning("ownerPrivilegeRankNum: %d", req->ownerPrivilegeRankNum); } - void print_get_roommemberdata_int_req(const SceNpMatching2GetRoomMemberDataInternalRequest* req) + void print_SceNpMatching2GetRoomMemberDataInternalRequest(const SceNpMatching2GetRoomMemberDataInternalRequest* req) { sceNp2.warning("SceNpMatching2GetRoomMemberDataInternalRequest:"); sceNp2.warning("roomId: %d", req->roomId); @@ -345,7 +345,7 @@ namespace extra_nps } } - void print_set_roommemberdata_int_req(const SceNpMatching2SetRoomMemberDataInternalRequest* req) + void print_SceNpMatching2SetRoomMemberDataInternalRequest(const SceNpMatching2SetRoomMemberDataInternalRequest* req) { sceNp2.warning("SceNpMatching2SetRoomMemberDataInternalRequest:"); sceNp2.warning("roomId: %d", req->roomId); @@ -356,10 +356,10 @@ namespace extra_nps sceNp2.warning("roomMemberBinAttrInternal: *0x%x", req->roomMemberBinAttrInternal); sceNp2.warning("roomMemberBinAttrInternalNum: %d", req->roomMemberBinAttrInternalNum); for (u32 i = 0; i < req->roomMemberBinAttrInternalNum && req->roomMemberBinAttrInternal; i++) - print_bin_attr(&req->roomMemberBinAttrInternal[i]); + print_SceNpMatching2BinAttr(&req->roomMemberBinAttrInternal[i]); } - void print_get_roomdata_external_list_req(const SceNpMatching2GetRoomDataExternalListRequest* req) + void print_SceNpMatching2GetRoomDataExternalListRequest(const SceNpMatching2GetRoomDataExternalListRequest* req) { sceNp2.warning("SceNpMatching2GetRoomDataExternalListRequest:"); sceNp2.warning("roomId: *0x%x", req->roomId); @@ -376,7 +376,7 @@ namespace extra_nps } } - void print_get_roomdata_external_list_resp(const SceNpMatching2GetRoomDataExternalListResponse* resp) + void print_SceNpMatching2GetRoomDataExternalListResponse(const SceNpMatching2GetRoomDataExternalListResponse* resp) { sceNp2.warning("SceNpMatching2GetRoomDataExternalListResponse:"); sceNp2.warning("roomDataExternal: *0x%x", resp->roomDataExternal); @@ -387,11 +387,28 @@ namespace extra_nps for (u32 i = 0; i < resp->roomDataExternalNum && cur_room; i++) { sceNp2.warning("SceNpMatching2GetRoomDataExternalListResponse[%d]:", i); - print_room_data_external(cur_room.get_ptr()); + print_SceNpMatching2RoomDataExternal(cur_room.get_ptr()); cur_room = cur_room->next; } } + void print_SceNpMatching2GetLobbyInfoListRequest(const SceNpMatching2GetLobbyInfoListRequest* resp) + { + sceNp2.warning("SceNpMatching2GetLobbyInfoListRequest:"); + sceNp2.warning("worldId: %d", resp->worldId); + print_SceNpMatching2RangeFilter(&resp->rangeFilter); + sceNp2.warning("attrIdNum: %d", resp->attrIdNum); + sceNp2.warning("attrId: *0x%x", resp->attrId); + + if (resp->attrId) + { + for (u32 i = 0; i < resp->attrIdNum; i++) + { + sceNp2.warning("attrId[%d] = %d", i, resp->attrId[i]); + } + } + } + void print_SceNpBasicAttachmentData(const SceNpBasicAttachmentData* data) { sceNp.warning("SceNpBasicAttachmentData:"); diff --git a/rpcs3/Emu/NP/np_structs_extra.h b/rpcs3/Emu/NP/np_structs_extra.h index 072a37b1f3..d05711fabd 100644 --- a/rpcs3/Emu/NP/np_structs_extra.h +++ b/rpcs3/Emu/NP/np_structs_extra.h @@ -4,26 +4,28 @@ namespace extra_nps { - void print_userinfo2(const SceNpUserInfo2* user); - void print_sigoptparam(const SceNpMatching2SignalingOptParam* opt); - void print_bin_attr(const SceNpMatching2BinAttr* bin); - void print_presence_data(const SceNpMatching2PresenceOptionData* opt); - void print_range_filter(const SceNpMatching2RangeFilter* filt); - void print_room_data_internal(const SceNpMatching2RoomDataInternal* room); - void print_room_data_external(const SceNpMatching2RoomDataExternal* room); - void print_room_member_data_internal(const SceNpMatching2RoomMemberDataInternal* member); + void print_SceNpUserInfo2(const SceNpUserInfo2* user); + void print_SceNpMatching2SignalingOptParam(const SceNpMatching2SignalingOptParam* opt); + void print_SceNpMatching2BinAttr(const SceNpMatching2BinAttr* bin); + void print_SceNpMatching2PresenceOptionData(const SceNpMatching2PresenceOptionData* opt); + void print_SceNpMatching2RangeFilter(const SceNpMatching2RangeFilter* filt); + void print_SceNpMatching2RoomDataInternal(const SceNpMatching2RoomDataInternal* room); + void print_SceNpMatching2RoomDataExternal(const SceNpMatching2RoomDataExternal* room); + void print_SceNpMatching2RoomMemberDataInternal(const SceNpMatching2RoomMemberDataInternal* member); - void print_createjoinroom(const SceNpMatching2CreateJoinRoomRequest* req); - void print_create_room_resp(const SceNpMatching2CreateJoinRoomResponse* resp); - void print_joinroom(const SceNpMatching2JoinRoomRequest* req); - void print_search_room(const SceNpMatching2SearchRoomRequest* req); - void print_search_room_resp(const SceNpMatching2SearchRoomResponse* resp); - void print_set_roomdata_ext_req(const SceNpMatching2SetRoomDataExternalRequest* req); - void print_set_roomdata_int_req(const SceNpMatching2SetRoomDataInternalRequest* req); - void print_get_roommemberdata_int_req(const SceNpMatching2GetRoomMemberDataInternalRequest* req); - void print_set_roommemberdata_int_req(const SceNpMatching2SetRoomMemberDataInternalRequest* req); - void print_get_roomdata_external_list_req(const SceNpMatching2GetRoomDataExternalListRequest* req); - void print_get_roomdata_external_list_resp(const SceNpMatching2GetRoomDataExternalListResponse* resp); + void print_SceNpMatching2CreateJoinRoomRequest(const SceNpMatching2CreateJoinRoomRequest* req); + void print_SceNpMatching2CreateJoinRoomResponse(const SceNpMatching2CreateJoinRoomResponse* resp); + void print_SceNpMatching2JoinRoomRequest(const SceNpMatching2JoinRoomRequest* req); + void print_SceNpMatching2SearchRoomRequest(const SceNpMatching2SearchRoomRequest* req); + void print_SceNpMatching2SearchRoomResponse(const SceNpMatching2SearchRoomResponse* resp); + void print_SceNpMatching2SetRoomDataExternalRequest(const SceNpMatching2SetRoomDataExternalRequest* req); + void print_SceNpMatching2SetRoomDataInternalRequest(const SceNpMatching2SetRoomDataInternalRequest* req); + void print_SceNpMatching2GetRoomMemberDataInternalRequest(const SceNpMatching2GetRoomMemberDataInternalRequest* req); + void print_SceNpMatching2SetRoomMemberDataInternalRequest(const SceNpMatching2SetRoomMemberDataInternalRequest* req); + void print_SceNpMatching2GetRoomDataExternalListRequest(const SceNpMatching2GetRoomDataExternalListRequest* req); + void print_SceNpMatching2GetRoomDataExternalListResponse(const SceNpMatching2GetRoomDataExternalListResponse* resp); + + void print_SceNpMatching2GetLobbyInfoListRequest(const SceNpMatching2GetLobbyInfoListRequest* resp); void print_SceNpBasicAttachmentData(const SceNpBasicAttachmentData* data); void print_SceNpBasicExtendedAttachmentData(const SceNpBasicExtendedAttachmentData* data); diff --git a/rpcs3/Emu/NP/rpcn_client.h b/rpcs3/Emu/NP/rpcn_client.h index dafe57d991..152a5bd7ee 100644 --- a/rpcs3/Emu/NP/rpcn_client.h +++ b/rpcs3/Emu/NP/rpcn_client.h @@ -44,8 +44,6 @@ constexpr usz COMMUNICATION_ID_COMID_COMPONENT_SIZE = 9; constexpr usz COMMUNICATION_ID_SUBID_COMPONENT_SIZE = 2; constexpr usz COMMUNICATION_ID_SIZE = COMMUNICATION_ID_COMID_COMPONENT_SIZE + COMMUNICATION_ID_SUBID_COMPONENT_SIZE + 1; - - class vec_stream { public: