Commit Graph
14 Commits
Author SHA1 Message Date
Yunus Shaikh 9c9a58f669 Merge main into feat/unbuilt-exports-guard 2026-10-30 00:44:14 -07:00
Yunus Shaikh 60baf80572 test(prx): look up each pending export by name in the built library
Release builds fold a declared function's address compared with nullptr
to false, so the tables' loops compiled away together with the tables'
references to the exports, and the checks passed without the library
exporting anything. Each test now gets its library's built file from its
add_test line, opens it, looks up every name in its table, and requires
one name the library doesn't export not to resolve. The table entries
are read through a volatile copy, so the test binaries keep importing
them.
2026-10-28 10:25:40 -07:00
milescovielloandClaude Opus 5.5 894e3cdd22 test(libSceNpTrophy2): check the handle sceNpTrophy2CreateHandle writes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 07:27:43 +00:00
Yunus Shaikh 19b89c1499 Merge #10944 into feat/unbuilt-exports-guard 2026-10-26 07:55:32 -07:00
Ahmad Mujahid a073f12cd0 test: check the split-export stubs are linked without calling them 2026-10-26 18:34:31 +04:00
Yunus Shaikh 856a0b78d5 test(prx): check that the newly built exports are exported, not that they throw
A check that a placeholder throws "not implemented" fails as soon as the
export is implemented. The export tables now only require each entry's
address, so they still fail to build when an export goes missing, and an
implementation doesn't break them. The libSceNgs2 calls with real
signatures go into the same kind of table.

Asked for in oneandonlydean's review.
2026-10-25 23:02:58 -07:00
Yunus Shaikh bd97351d00 test(prx): check every stub the newly built Export.cpp files export
The build fix checks one export per library. Call the rest through
their headers and require std::runtime_error with "<name> not
implemented": 34 more in libSceAgcDriver, 14 more in libSceNgs2.native
plus libSceNgs2's six PendingExports.cpp stubs, 22 more in
libSceNpTrophy2 and 10 more in libSceNpUniversalDataSystem. The 14
libSceAudiodec.native and 2 libSceAvPlayer.native exports had no test,
so each gets a guest executable of its own.
2026-10-25 13:52:48 +00:00
Ahmad Mujahid 11b193cf35 fix(prx): build and export the stubs that eight libraries never shipped
The 2026-10-21 split PRs added Export.cpp stub files to seven libraries
that have their own CMakeLists.txt, so core/libs/CMakeLists.txt never
adds Export.cpp for them and no target compiled the 101 stubs. A title
that imports one fails to load instead of throwing on the call.

Ngs2, Ngs2.native and AvPlayer.native build with hidden visibility, so
their stub files also need default visibility. libSceNgs2 already
compiled PendingExports.cpp, but its 6 stubs stayed local.
2026-10-25 15:10:46 +04:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
jagrat Singh 36bc227284 feat(libSceNpTrophy2): implement sceNpTrophy2GetRewardIcon
Implement sceNpTrophy2GetRewardIcon matching PPSA06888 and SharpProspero signatures. Zeroes size if non-null and returns SCE_NP_TROPHY2_ERROR_ICON_FILE_NOT_FOUND following KytyPS5 when icons are unavailable offline. Updates guest tests and technical debt documentation.
2026-10-22 09:35:00 +05:30
Simon 69e3c1d115 fix(libSceNpTrophy2): accept a null details or data in GetTrophyInfo and GetGroupInfo
sceNpTrophy2GetTrophyInfo and sceNpTrophy2GetGroupInfo rejected a call
unless both outputs were given, although both already fill each output
only when it is not null. PPSA18391 (Clickteam Fusion) queries trophies
with a null details. Only a call with neither output is rejected now, as
in sceNpTrophy2GetGameInfo.
2026-10-11 15:35:56 +02:00
Adrià Franch ddf6b8c984 test(libSceNpTrophy2): cover sceNpTrophy2ShowTrophyList, take the context argument 2026-10-11 13:08:03 +02:00
PacukaandClaude Opus 5.5 30a6e03636 fix(trophy2): accept a null data or details in sceNpTrophy2GetGameInfo
The Smurfs Dreams (Unreal Engine) asks only for the game details and
passes a null data pointer; on success it reads the trophy count from the
details, on a negative result it takes its error path. The function
already fills each output only when it is given, but rejected the call
unless both were. Only a call without either output is rejected now.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 17:58:35 +02:00
Adrià FranchandClaude f3e783b6cb feat(libs): implement sceNpTrophy2UnregisterUnlockCallback
Co-Authored-By: Claude <[email protected]>
2026-10-05 19:14:49 +02:00