Skip to content

feat(libSceContentDelete): implement content delete exports - #4130

Closed
MarcZX10 wants to merge 1 commit into
boykopovar:mainfrom
MarcZX10:codex/carry-content-delete-4109
Closed

MarcZX10 wants to merge 1 commit into
boykopovar:mainfrom
MarcZX10:codex/carry-content-delete-4109

Conversation

@MarcZX10

Copy link
Copy Markdown
Contributor

What

Carries screamm's ContentDelete implementation from issue #4109, preserving the original feature commit author. Implements sceContentDeleteById and sceContentDeleteByPath with the signatures supported by Orbital and SharpProspero. Since this emulator has no host content library, calls after initialization throw an explicit diagnostic for missing content rather than returning false success; null paths and calls outside the initialized lifetime are also handled explicitly. Adds regression coverage and moves sceContentDeleteById out of the generic unimplemented test.

This carries only the ContentDelete commit; it does not include the separate AudioOut2 change in #4109. PR #3724 has an adjacent change to the same test CMake file, so merging both may require reconciling their test link lists. The implementations are independent.

Tested

  • Linux x86-64, GCC 12.2, Release/Ninja: built guest_content_delete_tests and guest_content_unimplemented_tests; CTest guest_content_delete and guest_content_unimplemented passed (2/2).
  • tools/check_conventions.py --base upstream/main and git diff --check passed.
  • Windows was not run locally; CI will verify it.

Checklist

  • Based on current main; no other open PR implements these functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw; silent stubs are listed in TechnicalDebt
  • No notes or investigation files added to the repository
  • No new third-party code
  • Generic behavior, not specific to one title
  • Depends on: none
  • AI-assisted: yes

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Local validation on current main (Linux x86-64, GCC 12.2, Release/Ninja): built guest_content_delete_tests and guest_content_unimplemented_tests; both guest_content_delete and guest_content_unimplemented passed (2/2). tools/check_conventions.py --base upstream/main and git diff --check also passed. The carried feature commit retains screamm as its original author.

@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Progress report (1acfa7f → 32864c6)

📈 System libraries: 86.42% (+0.06%, +2 implemented functions)

✅ 2 implemented
Library Name
libSceContentDelete sceContentDeleteById
libSceContentDelete sceContentDeleteByPath

@MarcZX10
MarcZX10 force-pushed the codex/carry-content-delete-4109 branch from 0601a9f to 3063e54 Compare October 12, 2026 17:17
@MarcZX10
MarcZX10 force-pushed the codex/carry-content-delete-4109 branch from 3063e54 to 2d6600b Compare October 12, 2026 18:36
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 12, 2026
…eteByPath

Cult of the Lamb (PPSA06465, boykopovar#2686) stops at start-up on the first one:

    FAIL: unresolved ELF import pXJh3aVk8Ks from libSceContentDelete.prx

Both exports have been on main without an implementation (boykopovar#2740); the
call itself has not been observed yet.

Orbital (cc408367, tools/ida/db_types.json:541-542) and SharpProspero
(5dfdb4b0, Interop/Content/ContentDelete.cs:25-42) agree on the
signatures: a 64-bit SceContentSearchContentId and a UTF-8 path. The
content library is empty on the host, since libSceContentExport exports
nothing into it, so no id or path can be found. SharpProspero gives only
NoPermission (0x809D5006) and no public source gives the not-found code,
so both calls throw with the id or path named once the null path and the
initialization are checked, like the "not in the host content library"
throws of boykopovar#3724. sceContentDeleteById moves from
guest_content_unimplemented to the new guest_content_delete test.

NIDs pXJh3aVk8Ks and qC3QW+AltHs match tools/nid_names.py and the shadPS4
aerolib list.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 9281848)
@MarcZX10
MarcZX10 force-pushed the codex/carry-content-delete-4109 branch from 2d6600b to 32864c6 Compare October 12, 2026 18:48
@oneandonlydean oneandonlydean self-assigned this Oct 12, 2026
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed needs rebase Conflicts with main, rebase needed labels Oct 12, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Closing: both functions are already exported on main and still throw on every call here, so nothing is implemented and no title gets further. Reopen when a title calls one and the console's answer is known.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build docs needs rebase Conflicts with main, rebase needed prx

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants