Commit Graph
128 Commits
Author SHA1 Message Date
MarcZX10 5b7ba8484a Merge remote-tracking branch 'upstream/main' into feat/host-free-space
# Conflicts:
#	core/libs/prx/libSceSaveData.native/Export.cpp
2026-10-31 00:26:47 +00:00
Adrià 6472c708ae Merge pull request #13324 from JJenkx/fix/savedata-mount-host-failure
fix(savedata): keep failed host mounts unpublished
2026-10-30 21:46:41 +01:00
MarcZX10 10fe6196e2 feat(libSceSaveData.native): bound a save's free blocks by the host volume
With ANYPS5_FREE_SPACE=host, sceSaveDataGetMountInfo and the directory-name
search report a save's free blocks as the smaller of its own free blocks and
the 64 KiB blocks the save's volume still has. A full volume reports none
free, so a title that checks for room sees the same answer the create check
gives. Unset, the free blocks stay the save's own.
2026-10-30 18:48:57 +00:00
MarcZX10 4385554953 feat(libSceSaveData.native): refuse a new save the host volume cannot hold
With ANYPS5_FREE_SPACE=host, creating a save first checks the free space of
the save directory's volume against the save's size, 16384 blocks when the
title passes none. A save that does not fit fails with NO_SPACE_FS and
reports the blocks missing in required_blocks, and no directory is made.
If the volume cannot be queried, the create keeps today's behaviour and one
line goes to stderr. Opening an existing save and the default fixed mode are
unchanged.
2026-10-30 18:48:56 +00:00
MarcZX10 0a27bb9dd9 feat(libSceSaveData.native): validate ANYPS5_FREE_SPACE at every save mount
Every sceSaveDataMount3 call reads ANYPS5_FREE_SPACE and stops the title with
an error naming the variable when it is not fixed or host. Unset keeps
today's behaviour, so no save is created differently by default.
2026-10-30 18:48:56 +00:00
JJenkx 2606c33532 fix(savedata): report host mount errors without unwinding 2026-10-30 14:08:25 -04:00
Adrià f91137142e Merge pull request #13027 from Celegans12/feat/savedata-inventory-exports-20261030
feat(savedata): add missing cloud and sync inventory exports
2026-10-30 13:45:45 +01:00
JJenkx 0c110bdf8e fix(savedata): keep failed host mounts unpublished 2026-10-30 08:12:24 -04:00
Adrià 0d62a3e0db Merge pull request #12699 from SnekPolylepis/feat/savedata-mounted-count-and-lifecycle
feat(libSceSaveData): add provisional abort and clear progress stubs
2026-10-30 05:51:21 +01:00
Adrià f67988f8e8 Merge pull request #12644 from slopgobblercobbler/fix/savedata-backup-dir-name-validation
fix(libSceSaveData.native): validate directory name in sceSaveDataBackup
2026-10-30 02:52:13 +01:00
Codex 2299b471cb feat(savedata): retain seven inventory exports within reviewed scope 2026-10-30 03:22:06 +02:00
Codex d058e59ffd feat(savedata): add missing cloud and sync inventory exports 2026-10-30 00:20:59 +02:00
SnekPolylepis e64a9b14ef Merge main into SaveData lifecycle branch 2026-10-29 09:54:32 -05:00
SnekPolylepis 8436d54350 fix(savedata): leave mounted count unimplemented 2026-10-29 09:52:50 -05:00
Adrià 5a88858805 Merge pull request #11720 from ionut27001/fix/savedata-cancel-not-initialized
fix(libSceSaveData.native): answer sceSaveDataCancel before initialization as measured in a PS5 payload
2026-10-29 12:57:24 +01:00
Adrià 50b6ea0dc5 Merge pull request #12444 from BunnyFl/fix/savedata-memory-host-write
fix(libSceSaveData): hold a host write over save memory reads into guest buffers
2026-10-29 12:56:55 +01:00
slopgobblercobbler 43dc8a75c7 fix(libSceSaveData.native): validate directory name in sceSaveDataBackup 2026-10-29 11:34:09 +01:00
Zain 7016a894f7 feat(libSceSaveData): implement sceSaveDataGetMountedSaveDataCount, sceSaveDataAbort, and sceSaveDataClearProgress 2026-10-28 21:39:18 -05:00
JJenkxandClaude Opus 5.5 1f8b81f3cd fix(libSceSaveData): read a save directory's time natively on Windows
When a save has no stored mtime, its parameters fall back to the save
directory's modification time. On Windows std::filesystem reads that
through the UCRT stat call, which converts through local time using TZ,
so with a TZ other than the Windows zone, including one libc applies
from the guest environment, the reported time was off by the
difference between the zones. The fallback now reads the time with
GetFileAttributesExW. guest_savedata_search checks it under TZ values
12 hours either side of UTC.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 21:12:20 -04:00
ionut27001 a21f985dcf fix(libSceSaveData.native): answer sceSaveDataCancel before initialization as measured in a PS5 payload 2026-10-28 15:37:18 +01:00
BunnyFlandClaude Opus 5.5 ff2e92939f fix(libSceSaveData): hold a host write over save memory reads into guest buffers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 14:23:10 +01:00
Dean 1068cd6b76 Merge pull request #7780 from savvaniss/fix/savedata-ps4-modules
fix(savedata): build libSceSaveData and libSceSaveDataDialog from the native sources
2026-10-28 13:48:05 +13:00
slopgobblercobbler 5bb4711bb8 fix(libSceSaveData.native): return SAVE_DATA_ERROR_PARAMETER on null argument in sceSaveDataConvert 2026-10-27 08:57:14 +01:00
slopgobblercobbler edf98688c8 fix(libSceSaveData.native): validate null arguments in sceSaveDataDirNameSearchPs4 and sceSaveDataMount 2026-10-26 18:21:39 +01:00
Dean a0ca5bdc71 Merge pull request #10295 from al3w0f205/test/savedata-convert-null-struct-validation
test(libSceSaveData.native): cover null convert struct and directory name validation
2026-10-26 19:59:27 +13:00
Savvanis SpyrosandClaude Opus 5.5 7394d62549 Merge branch 'main' into fix/savedata-ps4-modules
main's canonical-header refactor (f38d29fd08) edited the old libSceSaveData and libSceSaveDataDialog sources this branch removes, and made EventFlag.cpp, libSceNpCommon's Runtime.cpp and GuestKernelErrors.cpp include the old SaveDataCore.hpp. Those three use nothing from it and build without it, so the include is dropped. SaveDataWriteReplacement.cpp takes main's canonical header and keeps only the native path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 23:06:41 +02:00
slopggobblercobbler81 9c232b38fe fix(savedata): validate null arguments in delete, search, and mount3 2026-10-25 20:07:59 +01:00
Dean 74dfabae2c Merge pull request #10294 from al3w0f205/test/savedata-delete-null-struct-validation
test(libSceSaveData.native): cover null delete struct and directory name validation
2026-10-26 05:36:42 +13:00
Dean Galvin f30a7444a8 test(savedata): unwind the null-input throw on Windows
guest_savedata_convert catches the runtime_error that the PRX raises for null arguments, so the target needs configure_windows_unwind like the other savedata targets that catch; without it the throw terminates the process on MinGW.
2026-10-26 03:24:03 +13:00
Dean Galvin f66b095ada test(savedata): unwind the null-input throw on Windows
guest_savedata_delete catches the runtime_error that the PRX raises for null arguments, so the target needs configure_windows_unwind like the other savedata targets that catch; without it the throw terminates the process on MinGW.
2026-10-26 03:24:02 +13:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
Savvanis SpyrosandClaude Opus 5.5 797e2b9733 Merge branch 'main' into fix/savedata-ps4-modules
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 16:33:37 +03:00
Dean 7c9d3a005e Merge pull request #8990 from voidlakhan/fix/savedata-null-argument-parameter-error
fix(savedata): validate backup and event result arguments
2026-10-24 01:29:00 +13:00
Dean dd7a2c964d Merge pull request #6313 from mazen320/fix/savedata-convert-completion-event
fix(savedata): queue conversion completion events
2026-10-23 19:28:07 +13:00
Dean da54c652e3 Merge pull request #9433 from Get-fix/ps4/limbo-libs
feat: PS4 NpTrophy, save data v1, NpWebApi offline and Limbo's other imports
2026-10-22 18:00:00 +13:00
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
boykopovar 07a181649c fix(savedata): restore cancellation and transfer preparation arguments 2026-10-21 21:53:23 +03:00
Maz f638400709 fix(savedata): queue conversion completion events 2026-10-21 18:07:54 +04:00
Savvanis Spyros 5a1ffa01b3 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into fix/savedata-ps4-modules
# Conflicts:
#	core/libs/prx/libSceSaveData/Export.cpp
#	docs/dev/debt/libSceSaveData.md
2026-10-21 13:08:27 +03:00
lakhantheboss 2b1eb36139 fix(savedata): validate backup and event result arguments 2026-10-21 14:06:38 +05:30
Dean 1bcaa14234 Merge pull request #8307 from hypermoist/fix/libs-console-results-part2
fix(libs): return what the firmware returns from 31 more calls it does not implement
2026-10-21 20:57:00 +13:00
lakhantheboss d3542d5eed fix(savedata): return parameter errors for null arguments 2026-10-21 13:23:15 +05:30
Dean d243cc5cab Merge pull request #7960 from Lindamea1/fix/savedata-ps5-64k-blocks
fix(libSceSaveData.native): count PS5 save data in 64 KiB blocks, at most 16384
2026-10-21 04:08:02 +13:00
pushkarreddyy 3bb39053ae fix(savedata): return parameter error on null arguments in umount2, loadIcon and saveIcon 2026-10-20 12:54:28 +02:00
Adrià 4f99cbffd7 Merge pull request #7536 from voidlakhan/fix/savedata-setparam-null-arguments
fix(savedata): return parameter error on null arguments in setParam
2026-10-20 12:18:56 +02:00
hypermistandClaude Opus 5.5 db25758397 fix(libs): return what the firmware returns from 29 more calls it does not implement
The NetCtl ApRp calls, the SaveData debug calls, HttpDbgEnableProfile,
HttpDbgSetPrintf, PadEnableExtensionPort and VideoRecording Init, Term
and SendCommand return 0; ImeForTestFunction returns 0x80BC00FF; the Hmd
distortion work memory align and size are 0x400 and 0x20000 and
DistortionGetCompoundEyeCorrectionCommand returns 0x81110009;
AjmInstanceCodecType returns the instance id shifted right by 14.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-20 22:38:57 +13:00
juanpimg 2f0ed638dc feat(prx): declare the missing PS5 3.20 system exports
AnyPS5 resolves a title's imports by NID, so a title that imports a system
function no library provides fails to load with an unresolved import. The
PS5 3.20 export inventory lists 193 such exports across 37 PS5 system
libraries AnyPS5 implements but does not provide.

Declare them as throwing stubs so those titles load and reach their next
blocker. Each declaration calls NotImplemented_nid_no_patch and returns 0;
none of them implements the function. Declarations with a credible
prototype use it and cite the source with a pinned commit, and the rest
are declared without parameters, which resolves the import without making
an ABI claim. The technical-debt files record the limitation per library.

libSceMbus and libSceSystemService are left out because pull request #7821
declares them. libSceAgc is left out because its exports are versioned, so
the 3.20 NID names a different symbol from the one AnyPS5 ships.
libSceAvPlayer.native is left out because it compiles libSceAvPlayer's
Export.cpp.

Names and NIDs come from the PS5 3.20 export inventory at
https://github.com/DNNDHH/PS5-3.20_Libs/tree/b2a77c09cd71c01f34c790cfbe98c751a13262ad
2026-10-19 23:16:55 +02:00
Savvanis SpyrosandClaude Opus 5.5 0e88700965 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into fix/savedata-ps4-modules
Keep SaveDataCore.hpp deleted: main's RemoveTree change to it (a96833682) also applies to the .native Export.cpp this branch builds from, which merged cleanly.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 20:53:00 +03:00
Lindamea1andClaude Opus 5.5 6206c230c4 fix(libSceSaveData.native): count PS5 save data in 64 KiB blocks, at most 16384
The PS5 references count save data differently from the PS4: SharpEmu
uses a 64 KiB block, and SharpEmu and KytyPS5 allow 48 to 16384 blocks
per save, which at 64 KiB a block is 3 MiB to 1 GiB, the PS4's byte
range. The module used the PS4 values, 32 KiB blocks and a 32768-block
maximum. At 64 KiB a block, sceSaveDataDirNameSearch and
sceSaveDataGetMountInfo therefore counted up to twice the blocks a
save's files use, and a save without a recorded size reported 32768
blocks, which is 2 GiB.

The search test now expects 64 KiB blocks and the 16384 maximum, and
the block accounting gets its own technical debt entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 16:49:19 +01:00
Savvanis Spyros fda475e541 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into fix/savedata-ps4-modules
# Conflicts:
#	core/libs/CMakeLists.txt
2026-10-19 17:33:25 +03:00