Files
AnyPS5/docs/dev/debt/libSceAppContent.md
T
KernelPanicNTandClaude Opus 5.5 7d42db40a3 feat(libSceAppContent): implement sceAppContentGetAddcontDownloadProgress
The signature (uint32_t service label, const NpUnifiedEntitlementLabel*,
progress*) follows SharpProspero Interop/AppContent/AppContent.cs.
dlc_emu dlc_content.cpp (fcf69b16) answers PARAMETER for a null label or
progress and NOT_FOUND for a label that is not installed additional
content. No additional content is ever installed here, as
sceAppContentAddcontMount, sceAppContentAddcontEnqueueDownload and
sceAppContentAddcontDelete already model, so every other call answers
NOT_FOUND and the progress, whose 16-byte layout SharpProspero gives,
is never written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:44:42 +00:00

3.4 KiB

libSceAppContent technical debt

Unknown function info

  • sceAppContentDownloadDataGetAvailableSpaceKb (libSceAppContent) - a title whose param.json declares downloadDataSize 0 gets 0 KB and OK; the console's behaviour for a title without a download data area is unverified (it may return an error instead). KytyPS5 does not special-case it, and shadPS4 stubs 1048576 KB
  • sceAppContentDownloadDataFormat (libSceAppContent) - empties the /download0 directory, creating it if needed. Imported by PPSA01317. A null mount point returns PARAMETER as sceAppContentTemporaryDataFormat does, and another mount point throws as in sceAppContentDownloadDataGetAvailableSpaceKb; the console's error codes for both and its behaviour with files still open are unverified

Functional

  • Additional content (libSceAppContent) is not installed or mounted: sceAppContentAddcontMount answers NOT_FOUND for every entitlement label and sceAppContentAddcontUnmount for every mount point, as no add-content mount is ever handed out; sceAppContentGetAddcontInfo answers DRM_NO_ENTITLEMENT for every label and sceAppContentGetAddcontInfoList reports 0 entries; sceAppContentAddcontEnqueueDownload answers PARAMETER for a null label and NOT_FOUND otherwise, since no download is ever queued; sceAppContentAddcontDelete answers PARAMETER for a null label and NOT_FOUND otherwise, since no additional content is ever installed. sceAppContentGetAddcontDownloadProgress answers PARAMETER for a null label or progress and NOT_FOUND otherwise, as dlc_emu does for a label that is not installed additional content, and never writes the progress. Its 16-byte layout (DataSize, then DownloadedSize, both 64-bit) follows SharpProspero and is unused here. The signatures of sceAppContentAddcontEnqueueDownload and sceAppContentGetAddcontDownloadProgress follow SharpProspero, and the signature of sceAppContentAddcontDelete follows dlc_emu; dlc_emu is not a console measurement and no console source gives the error codes, so the signatures and the error codes are unverified
  • Temporary app-content storage tracks one /temp0 mount, preserves its files on unmount, and rejects new path resolutions until remount. Mount, format, space-query and unmount errors follow fpPS4; the pointer ABI is also declared by SharpProspero. Existing open host descriptors remain usable after unmount; console behaviour with open files is unverified. Host filesystem failures still throw.