Skip to content

feat(libSceNpPartner001): implement sceNpEAAccessInitialize and sceNpEAAccessTerminate - #4639

Closed
akkadbakkad89 wants to merge 1 commit into
boykopovar:mainfrom
akkadbakkad89:carry/np-ea-access-init-3339
Closed

akkadbakkad89 wants to merge 1 commit into
boykopovar:mainfrom
akkadbakkad89:carry/np-ea-access-init-3339

Conversation

@akkadbakkad89

Copy link
Copy Markdown
Contributor

What

Carries the fix branch from issue #3339 (commit b86fc65 by @screamm, authorship preserved) rebased onto current main.

Implements sceNpEAAccessInitialize / sceNpEAAccessTerminate in libSceNpPartner001 as an atomic initialized-state machine: first init returns 0, double init throws, terminate flips the state back and throws when not initialized. Behaviour and open questions (no server contact; signed-out behaviour unverified; divergence from shadPS4's PS4 return codes) are recorded in TechnicalDebt. Adds guest_np_partner test covering the invalid/valid init/term sequences.

Tested

Ubuntu 24.04 (WSL2), GCC 13.3, full cmake -DBUILD_TESTING=ON build + libs target: 960/960 ctest tests pass (hardware-dependent shader/video tests skipped as expected). New guest_np_partner test passes. python3 tools/check_conventions.py --base upstream/main clean. No title run (function-level change only).

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Unblocks: none (PPSA23566 imports these functions but has not stopped on them)
  • AI-assisted: yes (original commit by @screamm with Claude; carried and verified by Devin)

…EAAccessTerminate

UFC 6 (PPSA23566) imports both. Initialization marks the library
initialized and termination clears it, as in shadPS4. Termination
without initialization and a second initialization throw, since no
PS5 source settles their results.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
#3694 docs/dev/TechnicalDebt.md L722
#3718 core/libs/prx/libSceNpPartner001/CMakeLists.txt
core/libs/tests/GuestNpPartner.cpp
#3720 docs/dev/TechnicalDebt.md L722
#3980 docs/dev/TechnicalDebt.md L722
#4197 docs/dev/TechnicalDebt.md L722
#4254 docs/dev/TechnicalDebt.md L722
#4374 docs/dev/TechnicalDebt.md L722
#4376 docs/dev/TechnicalDebt.md L722
#4378 docs/dev/TechnicalDebt.md L722
#4379 docs/dev/TechnicalDebt.md L722
#4384 docs/dev/TechnicalDebt.md L722
#4386 docs/dev/TechnicalDebt.md L722
#4447 core/libs/prx/libSceNpPartner001/Export.cpp L1, L5-6
#4516 docs/dev/TechnicalDebt.md L722

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant