Commit Graph
12 Commits
Author SHA1 Message Date
DealPotatoandClaude Opus 5.5 c03058cb2a fix(savedata): return PARAMETER for null Mount2 arguments
Main now answers null arguments of sceSaveDataMount with
SAVE_DATA_ERROR_PARAMETER instead of throwing (edf98688c8). Mount2 does
the same for a null mount or a null result, and guest_savedata_ps4
checks both.

AI-assisted: yes (Claude Code)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:06:26 +03:00
DealPotato e3022ccacb Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/savedata-mount2
# Conflicts:
#	docs/dev/debt/libSceSaveData.native.md
2026-10-28 11:47:37 +03:00
slopgobblercobbler edf98688c8 fix(libSceSaveData.native): validate null arguments in sceSaveDataDirNameSearchPs4 and sceSaveDataMount 2026-10-26 18:21:39 +01:00
DealPotatoandClaude Opus 5.5 7c3ba85c1f fix(savedata): follow the PS4 rows for Mount2 names and users, CREATE only
ntamas94's second PS4 Pro run and harisibrar1's review:
- a directory name containing "_" returns 0x809f0000 in either case;
  "surveytest" and "surveyTestAuto0" still mount;
- user IDs -1 and 0 return 0x809f0011;
- the 96-block minimum applies to CREATE only. CREATE2 was not
  measured, and applying it there refused opening an existing save
  with mode 0x22 and 0 blocks, which mount3 allows.

guest_savedata_ps4 checks each one, and the Mount2 debt entry records
what was measured and what was not.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 02:12:56 +03:00
DealPotato bd36686417 Merge #7780's head 7394d6254 into feat/savedata-mount2
# Conflicts:
#	core/libs/tests/GuestSaveDataPs4.cpp
2026-10-26 02:11:23 +03:00
Adrià FranchandClaude Sonnet 5.5 abe2603739 test(savedata): expect PARAMETER for null arguments in remaining tests
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 20:08:10 +01:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
DealPotatoandClaude Opus 5.5 29c972ae68 fix(savedata): answer sceSaveDataMount2's PS4 parameter errors
A PS4 Pro (firmware 10.71) answers sceSaveDataMount2 differently from Mount3 in three
cases, measured by ntamas94 on #8285: before sceSaveDataInitialize3 it returns
NOT_INITIALIZED, a mount mode of 0 is PARAMETER, and creating a save (CREATE or CREATE2)
of fewer than 96 blocks is PARAMETER. Mount2 now checks these before it mounts through
Mount3, so a refused create makes no directory. guest_savedata_ps4 covers each case.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 02:43:54 +03:00
Akul Tyagi 378ce8f9b5 test(libSceSaveData.native): cover transferring and v1 mount lifecycle 2026-10-24 04:46:44 +05:30
Get-fix f04d16d702 feat: PS4 NpTrophy, save data v1, NpWebApi offline and Limbo's other imports
NpTrophy reads the trophy count and icons from the title's trophy
package (names are encrypted and stay not implemented), PS4 v1 save data
calls wrap the native v2/v3 ones, and NpWebApi library contexts, handles
and push event filters work offline (service filters fail without a
signed-in user). libSceAjm is built from the libSceAjm.native sources
for PS4 titles. Limbo's (CUSA01664) remaining PS4 imports, including the
synchronous PS4 TUS calls and the Facebook dialog calls next to the
existing libraries, are exported as not implemented.
2026-10-22 00:35:09 +03:00
DealPotatoandClaude Opus 5.5 3a3ac668cd feat(savedata): add sceSaveDataMount2
PS4 titles mount their save data with sceSaveDataMount2 (SDK 2.00 and later), whose
SceSaveDataMount2 is Mount3's parameters without the system blocks and the resource
field: user ID, directory name, blocks and mount mode. The function converts the
parameters and mounts through Mount3, so the result, the mount point and the error codes
are Mount3's.

inFAMOUS Second Son (CUSA00004) calls it to open its saves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 11:32:36 +03:00
Adrià FranchandClaude e923bea317 feat(savedata): implement the PS4 transfer mount and directory search
Rename the two unknown libSceSaveData.native stubs to
sceSaveDataTransferringMountPs4 (RjMlsR8EXrw) and
sceSaveDataDirNameSearchPs4 (X4MYzukPc3g). There is no PS4 save area:
the mount returns NOT_FOUND like sceSaveDataTransferringMount, and the
search reports zero hits.

Co-Authored-By: Claude <[email protected]>
2026-10-05 19:41:59 +02:00