Commit Graph
24 Commits
Author SHA1 Message Date
Yunus Shaikh 8d3f15f0e0 Merge main into feat/appcontent-addcont-ids-and-rudp-mss-v2 2026-10-26 12:43:42 -07:00
Yunus Shaikh 8403d31744 test(libSceAppContent): drop two placeholder-throw checks
Below SDK 0x03500000, sceAppContentAddcontEnqueueDownloadSp and
sceAppContentAddcontShrink throw for a padded entitlement label. The
console accepts that input, so checks requiring the throw would fail
once the case is answered. The throw stays in the code, and the checks
from SDK 0x03500000 up stay.

Asked for in oneandonlydean's review.
2026-10-25 23:24:58 -07:00
al3w0f205 58cca6fe6d test(libSceAppContent): cover uninitialized rejection in sceAppContentTemporaryDataMount 2026-10-25 19:26:53 -05:00
al3w0f205 def6ca672c Merge remote-tracking branch 'origin/main' into test/appcontent-uninitialized-mount-and-infolist 2026-10-25 19:25:57 -05:00
Yunus Shaikh 8a9f6ca7bc Merge main into feat/appcontent-addcont-ids-and-rudp-mss-v2
Main implements sceAppContentGetEntitlementKey next to this branch's
sceAppContentGetPftFlag; the merge keeps both declarations, both test
blocks and both debt entries. With that export implemented, Export.cpp
has 8 NotImplemented exports, and the pending-exports count says 8.
2026-10-25 14:46:54 -07:00
Yunus Shaikh f4e9c0d208 feat(libSceAppContent): answer the entitlement-id, Sp, Shrink, IRO-tag and PFT calls
Seven pending add-content exports take dlc_emu's prototypes and the
answers dlc_emu gives for content it does not know, after the
library's initialization guard: NOT_FOUND for the entitlement-id mount
and enqueue, the Sp enqueue and Shrink; DRM_NO_ENTITLEMENT for the
entitlement-id info; 0 entries for the IRO-tag list; PFT flag 0.

A padded label answers PARAMETER from SDK 0x03500000. dlc_emu checks
the padding at every SDK while the done label calls gate it, so Sp and
Shrink throw for a padded label below 0x03500000.
2026-10-25 09:35:16 +00:00
Braxton Atkinson 4dcfc0b3db feat(libSceAppContent): implement sceAppContentGetEntitlementKey
Resolve the rebase conflicts with upstream's public API header migration. Put the typed entitlement-key layout and signature in Api.hpp, remove duplicate test/source declarations, and retain upstream's typed add-content checks and initialization behavior.

Keep ignoring the service label in the no-entitlement model. Cover labels 0, 7, 8 and UINT32_MAX without touching the output key. Update debt to distinguish firmware 13.42 module-side validation from the still-unverified system-service result. Evidence: https://github.com/boykopovar/AnyPS5/pull/9638#issuecomment-6390573735

Ubuntu 24.04, GCC 13.3, Release, upstream e7e3e9c198: actual libraries and guest_appcontent_tests built; guest_appcontent passes 1/1. Public-header audit, syntax checks of implementation and test, conventions, test registration and whitespace checks pass. No title or PS5 hardware tested; Windows was not rerun for this update.

AI-assisted: yes
2026-10-24 23:29:15 -05:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
al3w0f205 fcb9f57f50 test(libSceAppContent): cover uninitialized rejection in addcont mount and info queries 2026-10-23 11:32:58 -05:00
Dean ccf7f10407 Merge pull request #9114 from voidlakhan/feat/appcontent-temporary-data-mount
feat(libSceAppContent): implement temporary data mount
2026-10-23 11:02:29 +13:00
boykopovar f55e936f92 fix(appcontent): validate entitlement padding by sdk version 2026-10-21 21:54:21 +03:00
boykopovar 20a2488b4b fix(appcontent): restore initialization guards and validation 2026-10-21 21:54:20 +03:00
boykopovar 7b1bf85ffd fix(appcontent): enforce required output and mount pointers 2026-10-21 21:52:12 +03:00
lakhantheboss d1b7722630 feat(libSceAppContent): implement temporary data mount 2026-10-21 17:33:27 +05:30
slopggobblercobbler81 0029bddb55 fix(libSceAppContent): return NOT_MOUNTED for invalid download mount point
Return SCE_APP_CONTENT_ERROR_NOT_MOUNTED instead of throwing APS5_INVALID_ARG_EX when a mount point other than /download0 is passed to sceAppContentDownloadDataFormat or sceAppContentDownloadDataGetAvailableSpaceKb, aligning with sceAppContentTemporaryDataFormat. Check null mount_point in sceAppContentDownloadDataGetAvailableSpaceKb with SCE_APP_CONTENT_ERROR_PARAMETER.
2026-10-18 16:12:23 +02:00
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 <[email protected]>
2026-10-14 18:44:42 +00:00
ps54allandClaude Opus 5.5 bfe78af9f5 feat(libSceAppContent): export sceAppContentAddcontDelete
No additional content is ever installed, so deleting one finds nothing:
a null entitlement label answers PARAMETER and any other NOT_FOUND, the
same way sceAppContentAddcontEnqueueDownload does.

Metal Gear Solid 4 Master Collection (PPSA18194) imports it in its game
executable, which fails to load without it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 23:56:39 +02:00
David fdfe2204aa feat(libSceAppContent): implement sceAppContentAddcontEnqueueDownload
The signature (uint32_t service label, const NpUnifiedEntitlementLabel*)
follows SharpProspero Interop/AppContent/AppContent.cs (5dfdb4b0). dlc_emu
dlc_content.cpp (fcf69b16) answers NOT_FOUND for a label that is not a
known add-on and PARAMETER for a null label. No add-on content is ever
installed here, as sceAppContentAddcontMount and sceAppContentGetAddcontInfo
already model, so every non-null label answers NOT_FOUND and nothing is
queued. dlc_emu's nonzero-padding check is left out, as sibling functions
do not check it and no console source confirms it.

Carried from @screamm with author attribution preserved.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 16:33:45 +02:00
8a7e1195d4 feat(exports): export the calls PPSA01317 imports
Gran Turismo 7 (PPSA01317) fails to load on unresolved imports and on
two needed libraries that AnyPS5 does not build (#4782).

- sceAppContentDownloadDataFormat empties /download0, as
  sceAppContentTemporaryDataFormat does for /temp0.
- sceNpAuthSetTimeout returns REQUEST_NOT_FOUND for an unknown request
  like the other request calls, and OK otherwise; no request reaches the
  network the timeouts would bound.
- sceNpWebApi2PushEventSetHandleTimeout throws for an unknown library
  context, like sceNpWebApi2GetMemoryPoolStats, and returns OK
  otherwise; push event handles are not tracked and nothing waits on
  one offline.
- sceSslDisableVerifyOption, sceSslGetAlpnSelected, sceSslSetAlpn,
  sceSslSetMinSslVersion, sceAudioOutDeviceIdOpen and the unnamed
  libScePsml NIDs xNZM9Y5lf-M and lcZD9tJraAw are declared without
  parameters and throw; their signatures are unknown.
- libSceUsbStorage and libSceUsbStorageDialog exist with no exports,
  like libSceXml: the title lists both as needed but imports nothing
  from them.

Each assumption is recorded in the library's technical debt file.

Co-authored-by: dawid-swiecicki <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 01:11:29 +02:00
TibixDev 33555244c3 fix(appcontent): track temporary storage mounts
Preserve files across unmount, block new lookups until remount, and validate mount-dependent operations. Keep prior-run storage inaccessible after initialization.

Written with AI assistance.
2026-10-08 13:00:00 +02:00
Adrià FranchandClaude 1b9a1243dc test(libSceAppContent): pin sceAppContentAppParamGetInt ids 0..5
Co-Authored-By: Claude <[email protected]>
2026-10-08 07:49:22 +02:00
MerijnandClaude Opus 5.5 83e754a885 test(appcontent): cover a title without download data
GuestAppContent now writes a param.json that declares downloadDataSize 0
and checks that sceAppContentDownloadDataGetAvailableSpaceKb returns OK
with 0 KB for /download0 (it threw before), and PARAMETER for a null
result. TechnicalDebt records that the console's behaviour for such a
title is unverified.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 21:51:53 +02:00
Adrià FranchandClaude 5b331ed022 feat(libSceAppContent): implement sceAppContentGetAddcontInfo and GetAddcontInfoList
Co-Authored-By: Claude <[email protected]>
2026-10-07 18:14:04 +02:00
ChadandClaude Opus 5.5 ebe0515180 feat(libSceAppContent): answer add-content mounts without installed content
No additional content is installed, so sceAppContentAddcontMount returns
SCE_APP_CONTENT_ERROR_NOT_FOUND with the mount point untouched, and
sceAppContentAddcontUnmount finds no mount to release. A missing label
or mount point is a parameter error. The library gets its own
CMakeLists for the new guest_appcontent test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:19:09 -05:00