mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
With an NP title id in place, a PS4 Pro (firmware 10.71) answers 0x80551607 from sceNpTrophyRegisterContext through an aborted handle, ahead of the missing trophy package (0x80551626 through a live handle). The earlier measurement stopped at the NP title id lookup on both handles. Co-Authored-By: Claude Opus 5.5 <[email protected]>
2.6 KiB
2.6 KiB
libSceNpTrophy technical debt
Unknown function info
- sceNpTrophyRegisterContext, sceNpTrophyGetTrophyUnlockState, sceNpTrophyUnlockTrophy (libSceNpTrophy, PS4) - the trophy definitions in
TROPCONF.ESFMare encrypted, so the trophy count is the number of consecutiveTROPnnn.PNGicons in the title's/app0/sce_sys/trophy/trophyNN.trp. Unlocks are kept per user and service label in_trophy/trophyNN.<user id>under the working directory, no platinum trophy is reported (platinumIdis -1), and a locked trophy's icon fails withTROPHY_NOT_UNLOCKED. None of it is checked on a console. - sceNpTrophyAbortHandle (libSceNpTrophy, PS4) - measured on a PS4 Pro (firmware 10.71): after an abort,
sceNpTrophyGetTrophyUnlockStateandsceNpTrophyGetGameIconthrough that handle answer 0x80551607, before the not-registered check, andsceNpTrophyRegisterContextanswers 0x80551607 before the missing trophy package (0x80551626 for a live handle); aborting again answers 0. The other calls that take the handle are assumed to answer 0x80551607 the same way, aslibSceNpTrophy.sprxof firmware 10.71 maps the service's abort answer to it on the shared request path. On the consolesceNpTrophyRegisterContextchecks the process's NP title id before it reaches the service, so a title without one gets the NP title id error instead; AnyPS5 has no NP title id and does not model that step
Functional
- sceNpTrophyGetGameInfo (libSceNpTrophy) - the trophy configuration
TROPCONF.ESFMis encrypted and not read, so the game details report the trophy count taken from theTROPnnn.PNGicons and the group count taken from theGRnnn.PNGicons of the trophy package; the per-grade counts are 0, the title and description are empty, and the progress percentage is unlocked trophies over all trophies instead of the console's grade-weighted points - sceNpTrophyGetGroupInfo (libSceNpTrophy) - only the base game group (id -1) is answered, with the same counts as the game; an id past the
GRnnn.PNGicons returnsINVALID_GROUP_ID, and an existing group throws because the trophies of a group are listed only in the encrypted configuration - sceNpTrophyGetTrophyInfo (libSceNpTrophy) - the grade is reported as unknown, the trophy is never hidden, the name and description are empty and the unlock timestamp is 0; a package with groups throws, since a trophy's group is listed only in the encrypted configuration