diff --git a/rpcs3/Emu/NP/np_handler.cpp b/rpcs3/Emu/NP/np_handler.cpp index 4597d27b19..954f3ab941 100644 --- a/rpcs3/Emu/NP/np_handler.cpp +++ b/rpcs3/Emu/NP/np_handler.cpp @@ -1497,12 +1497,26 @@ namespace np u32 np_handler::get_num_friends() { - return get_rpcn()->get_num_friends(); + if (g_cfg.net.psn_status != np_psn_status::psn_rpcn) + { + return 0; + } + else + { + return get_rpcn()->get_num_friends(); + } } u32 np_handler::get_num_blocks() { - return get_rpcn()->get_num_blocks(); + if (g_cfg.net.psn_status != np_psn_status::psn_rpcn) + { + return 0; + } + else + { + return get_rpcn()->get_num_blocks(); + } } std::pair> np_handler::get_friend_by_index(u32 index) diff --git a/rpcs3/Emu/NP/np_requests.cpp b/rpcs3/Emu/NP/np_requests.cpp index 23e18f1353..fe117a6e37 100644 --- a/rpcs3/Emu/NP/np_requests.cpp +++ b/rpcs3/Emu/NP/np_requests.cpp @@ -843,6 +843,21 @@ namespace np cookie_vec.assign(cookie, cookie + cookie_size); } + if (g_cfg.net.psn_status != np_psn_status::psn_rpcn) + { + // TODO(InvoxiPlayGames): generate ticket data that is valid, for games that need to dig into the data + std::vector ticketdata = {0x41, 0x42, 0x43, 0x44}; + current_ticket = ticket(std::move(ticketdata)); + auto ticket_size = static_cast(current_ticket.size()); + + sysutil_register_cb([manager_cb = this->manager_cb, ticket_size, manager_cb_arg = this->manager_cb_arg](ppu_thread& cb_ppu) -> s32 + { + manager_cb(cb_ppu, SCE_NP_MANAGER_EVENT_GOT_TICKET, ticket_size, manager_cb_arg); + return 0; + }); + return; + } + if (!get_rpcn()->req_ticket(req_id, service_id_str, cookie_vec)) { rpcn_log.error("Disconnecting from RPCN!");