1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-22 02:32:36 +01:00

Fake sceNpMatching2GetLobbyInfoList

This commit is contained in:
RipleyTom 2024-09-20 20:24:59 +02:00 committed by Megamouse
parent 9e460ebe0a
commit 9dd0b055d0
7 changed files with 159 additions and 99 deletions

View File

@ -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;
}

View File

@ -185,6 +185,7 @@ namespace np
u32 set_userinfo(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SetUserInfoRequest* req);
u32 get_ping_info(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SignalingGetPingInfoRequest* req);
u32 send_room_message(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SendRoomMessageRequest* req);
u32 get_lobby_info_list(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetLobbyInfoListRequest* req);
u32 get_match2_event(SceNpMatching2EventKey event_key, u32 dest_addr, u32 size);

View File

@ -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<SceNpMatching2RoomUpdateInfo*>(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));

View File

@ -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<SceNpMatching2GetServerInfoResponse*>(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<SceNpMatching2GetWorldInfoListResponse*>(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<SceNpMatching2SearchRoomResponse*>(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<SceNpMatching2RequestOptParam> 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<SceNpMatching2SignalingGetPingInfoResponse*>(edata.data());
@ -706,8 +706,8 @@ namespace np
}
vec_stream reply(reply_data, 1);
u32 addr = reply.get<u32>();
u16 port = reply.get<u16>();
const u32 addr = reply.get<u32>();
const u16 port = reply.get<u16>();
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<SceNpMatching2RequestOptParam> 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<SceNpMatching2GetLobbyInfoListResponse*>(edata.data());
resp->range.size = 1;
resp->range.startIndex = 1;
resp->range.total = 1;
auto lobby_data = edata.allocate<SceNpMatching2LobbyDataExternal>(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);

View File

@ -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<const char*>(user->npId.handle.data));
@ -17,7 +17,7 @@ namespace extra_nps
sceNp2.warning("avatarUrl: *0x%x(%s)", user->avatarUrl, user->avatarUrl ? static_cast<const char*>(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<u8>{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:");

View File

@ -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);

View File

@ -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: