7.9 KiB
libSceAppContent technical debt
Unknown function info
- libSceAppContent additional exports - these name/NID pairs are present in the 13.60 export inventory. Parameter lists, return types and behavior are unverified. Parameterless
intdeclarations are import-resolution placeholders, not verified ABI prototypes; every entry throws throughNotImplemented_nid_no_patch. No runtime functionality is implemented.
| Name | NID |
|---|---|
sceAppContentCheckBundleLicenseOnDisc |
xZo2-418Wdo |
sceAppContentDownloadDataGetBlockSize |
9ht66cHTj7g |
sceAppContentGetGameTrialsFlag |
1saJukIkcKw |
sceAppContentGetPlayableStatus |
y8meQn-Qy5c |
-
sceAppContentDownloadDataGetAvailableSpaceKb (libSceAppContent) - a title whose
param.jsondeclaresdownloadDataSize0 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. One disassembled title (PPSA15246) calls it with the/download0mount point and a zeroed 64-bit output, ignores the return value and multiplies the output by 1024, so for that title an error that leaves the output untouched and an OK with 0 KB look the same -
sceAppContentDownloadDataFormat (libSceAppContent) - empties the
/download0directory, creating it if needed. Imported by PPSA01317. A null mount point returnsPARAMETERand another mount point returnsNOT_MOUNTEDas insceAppContentTemporaryDataFormatandsceAppContentDownloadDataGetAvailableSpaceKb; the console's error codes for both and its behaviour with files still open are unverified -
libSceAppContent pending exports - 8 named callable exports are listed in the PS5 3.20 export table and were cross-checked against the same module in PS5 firmware 13.60. Their signatures and behaviour are unverified; the declarations use the no-parameter unknown-signature convention and throw through
NotImplemented_nid_no_patch.
Functional
-
Initialization - service readiness and boot attributes are not modeled; successful initialization returns a zero boot record. Initialization-state guards, SDK 0x01500000 repeated-initialization errors and reserved-field checks are recovered. SDK-dependent service-error translation remains incomplete.
-
Additional content (libSceAppContent) is not installed or mounted:
sceAppContentAddcontMountanswersNOT_FOUNDfor every entitlement label andsceAppContentAddcontUnmountfor every mount point, as no add-content mount is ever handed out;sceAppContentGetAddcontInfoanswersDRM_NO_ENTITLEMENTfor every label andsceAppContentGetAddcontInfoListreports 0 entries;sceAppContentAddcontEnqueueDownloadanswersPARAMETERfor a null label andNOT_FOUNDotherwise, since no download is ever queued;sceAppContentAddcontDeleteanswersPARAMETERfor a null label andNOT_FOUNDotherwise, since no additional content is ever installed.sceAppContentGetAddcontDownloadProgressanswersPARAMETERfor a null label or progress andNOT_FOUNDotherwise, as dlc_emu does for a label that is not installed additional content, and never writes the progress. Its 16-byte layout (DataSize, thenDownloadedSize, both 64-bit) follows SharpProspero and is unused here. The signatures ofsceAppContentAddcontEnqueueDownloadandsceAppContentGetAddcontDownloadProgressfollow SharpProspero, and the signature ofsceAppContentAddcontDeletefollows 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 -
sceAppContentAddcontEnqueueDownloadByEntitlemetId, sceAppContentAddcontEnqueueDownloadSp, sceAppContentAddcontMountByEntitlemetId and sceAppContentAddcontShrink (libSceAppContent) - unverified on a PS5. After the initialization guard they answer
PARAMETERfor a null argument andNOT_FOUNDotherwise, without writing the mount point, as dlc_emu does for content it does not know; the prototypes are dlc_emu's. dlc_emu rejects a padded label at every SDK while the label calls above check it only from SDK 0x01500000 or 0x03500000, soSpandShrinkanswerPARAMETERfor one from SDK 0x03500000 and throw below it -
sceAppContentGetAddcontInfoByEntitlementId, sceAppContentGetAddcontInfoListByIroTag and sceAppContentGetPftFlag (libSceAppContent) - unverified on a PS5. After the initialization guard they give dlc_emu's answers for content it does not know:
DRM_NO_ENTITLEMENTwithout writing the info, 0 entries for any tag (a nullhitNumbeside a list returns 0, unlikesceAppContentGetAddcontInfoList), and a PFT flag of 0, andPARAMETERfor null arguments, with dlc_emu's prototypes -
sceAppContentGetEntitlementKey (libSceAppContent) - the service result without an entitlement is unverified: this model returns
DRM_NO_ENTITLEMENTand leaves the 16-byte key unchanged. Initialization, null-pointer and SDK 0x01500000 label-padding checks match the reported firmware 13.42 module probe, run in an emulator, not on hardware. That module forwards service labels 0, 7, 8 and 0xFFFFFFFF without checking them; this library ignores the service label. The system service's own validation and errors remain unknown. -
Temporary app-content storage console behaviour and hardware return values are unverified, including behaviour with open files across unmount; host filesystem failures throw. Storage models one
/temp0mount, preserving files on unmount while rejecting new path resolutions until remount, and leaving existing open host descriptors usable.sceAppContentTemporaryDataMountdelegates tosceAppContentTemporaryDataMount2with option 1 (TEMPORARY_DATA_OPTION_FORMAT) to format on mount as shadPS4 does. Mount, format, space-query and unmount errors follow fpPS4; pointer ABI follows SharpProspero.