Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Portal 2 [BLES01222] PRX loads trigger constant RPCN logon and logoff #16581

Open
InvoxiPlayGames opened this issue Jan 19, 2025 · 0 comments
Open
Labels

Comments

@InvoxiPlayGames
Copy link
Contributor

Also affects Counter-Strike Global Offensive [NPUB30589].

When Source Engine games like Portal 2 load their PRX modules, they try to initialise the sceNp library and then unload it, something similar to this:

int ret = sceNpInit();
sceNpDrmIsAvailable(prx_path, klicensee);
if (ret != NP_ALREADY_INIT)
  sceNpTerm();

With RPCN enabled, this leads to every PRX load triggering a logon followed by a logoff:

·W 0:00:18.031981 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111464, LR:0x0006f304]} sceNp: sceNpInit(poolsize=0x20000, poolptr=*0xd00df720)
·! 0:00:18.032095 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111464, LR:0x0006f304]} rpcn: Loading RPCN config. Path: C:/Users/Emma/RPCS3/config/rpcn.yml
·! 0:00:18.032440 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111464, LR:0x0006f304]} rpcn: Loading RPCN config. Path: C:/Users/Emma/RPCS3/config/rpcn.yml
·W 0:00:18.032547 {TID: 75480} rpcn: connect: Attempting to connect
·! 0:00:18.044804 {TID: 75480} rpcn: connect: Connection successful
·! 0:00:18.134658 {TID: 75480} rpcn: connect: Handshake successful
·! 0:00:18.134947 {TID: 75480} rpcn: connect: Waiting for protocol version
·! 0:00:18.196047 {TID: 75480} rpcn: connect: Protocol version matches
·! 0:00:18.196217 {TID: 75480} rpcn: Attempting to login!
·S 0:00:18.253791 {TID: 75480} rpcn: You are now logged in RPCN(IPG | IPG)!
·W 0:00:18.752828 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111474, LR:0x0006f348]} sceNp: sceNpDrmIsAvailable(k_licensee=*0xd00ff990, drm_path=*0xd00ff9b0)
·! 0:00:18.752996 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111474, LR:0x0006f348]} sceNp: npDrmIsAvailable(): KLicense key or KLIC=SNIP
·W 0:00:18.753015 {PPU[0x1000000] Thread (main_thread) [HLE:0x00111474, LR:0x0006f348]} sceNp: npDrmIsAvailable(): drm_path="/dev_hdd0/game/BLES01222/USRDIR/bin/tier0_ps3.sprx"
·W 0:00:18.779514 {PPU[0x1000000] Thread (main_thread) [HLE:0x0011146c, LR:0x0006f390]} sceNp: sceNpTerm()
·! 0:00:18.779680 {PPU[0x1000000] Thread (main_thread) [HLE:0x0011146c, LR:0x0006f390]} rpcn: Disconnecting from RPCN!
·! 0:00:18.791333 {TID: 40020} rpcn: recv failed: connection reset by server
·E 0:00:18.791494 {TID: 40020} rpcn: Disconnected

This leads to loading time taking longer since the connection to RPCN happens on the calling thread rather than in the background, as well as unnecessary load on the RPCN server, since this dance of loading a PRX file like this happens upwards of 25 times before Steam initialises sceNp for good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants