Skip to content

feat(libSceNpCppWebApi): implement model account ID accessors - #15816

Open
JJenkx wants to merge 2 commits into
boykopovar:mainfrom
JJenkx:feat/npcwa-model-account-ids-20261104
Open

JJenkx wants to merge 2 commits into
boykopovar:mainfrom
JJenkx:feat/npcwa-model-account-ids-20261104

Conversation

@JJenkx

@JJenkx JJenkx commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Current refresh: head 5c32718a423660ea130d0ac870a99619654fd1d9 includes main 151a2cb6e274; fresh scoped Linux CPU tests12/12, main11/11, all five individually selected same-executable refusal/pass controls. See the refresh comment for current evidence; prior Windows results retain their original pins.

What

Implement five previously refusing getAccountId exports with their measured return conventions:

  • Matchmaking2V1::{PlayerForRead, PlayerForOfferRead, Submitter} return the full 64-bit word at object+0x10.
  • Activities2V1::UserActivities::UserActivities and TitleCloudStorage2V1::Owner return a non-owning pointer to the member at object+0x10. They do not load its value. The pointee is kept opaque.

Correct the placeholder return types and implicit const void* self declarations. Both distinct bundled SDK modules (PPSA21564 and PPSA05347) have identical complete five-byte bodies for each export; each compiled implementation matches both references byte for byte. This is static analysis, not SDK execution or a console measurement. Other model fields, model construction and online responses remain unsupported; no title unblock or FPS gain is claimed.

Tested

Arch Linux x86-64, GCC 16.2.1, Release; main b11c7bf84f5 against change 7651a3979ff.

  • Main: 11/11 NpCppWebApi groups pass. Change: 12/12, zero failures/skips.
  • Three value getters: seven values each, including high-bit/full-width cases, with unchanged object/guard bytes. Two reference getters: member-address identity, aliasing after a member update, and unchanged bytes at three object locations.
  • Five separate negative controls link the new fixture against main's library; each fails at its selected export's exact not implemented refusal.
  • Header audit passes (406 libraries / 28,350 exports), as do conventions and diff checks.

Build scope: scoped CMake uses the repository's NpCppWebApi CMakeLists plus its three root-registered fixture owners and an existing libc provider. This is not a fresh whole-project build. Windows, GPU and title execution were not tested for this patch.

Reference provenance, source diff, build harness, complete logs, five negative controls and overlap review, SHA-256 5ea92adb85bc813f758c1246bf1c5944926d6a0cb9f81f2eacde26d71b642a05.

Overlap scan: 1879 open heads checked. It reports three matching Matchmaking exports in #13486; all three remain refusing stubs at the inspected head. That branch and #14212 already conflict with main. Manual main+peer versus change+peer merge-tree comparisons, reversing only this topic and normalizing Git conflict labels, leave those pre-existing conflicts unchanged. This adds implementations rather than duplicate implementations; preserve the new signatures/bodies when refreshing the inherited stubs. Neither PR is a dependency, and combined runtime behavior was not tested. Independent #15808 implements a different SessionManager getter; no dependency on it.

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 under Silent stubs in their library's technical debt file
  • 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
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Progress report (151a2cb → 5c32718)

📈 System libraries: 27.08% (+0.01%, +5 implemented functions)

✅ 5 implemented
Library Name
libSceNpCppWebApi _ZNK3sce2Np9CppWebApi10Activities2V114UserActivities14UserActivities12getAccountIdEv
libSceNpCppWebApi _ZNK3sce2Np9CppWebApi11Matchmaking2V113PlayerForRead12getAccountIdEv
libSceNpCppWebApi _ZNK3sce2Np9CppWebApi11Matchmaking2V118PlayerForOfferRead12getAccountIdEv
libSceNpCppWebApi _ZNK3sce2Np9CppWebApi11Matchmaking2V19Submitter12getAccountIdEv
libSceNpCppWebApi _ZNK3sce2Np9CppWebApi17TitleCloudStorage2V15Owner12getAccountIdEv

Changed libraries (implemented exports)

Library Before After Change
libSceNpCppWebApi 939/1426 (65.85%) 944/1426 (66.20%) +0.35%

@JJenkx

JJenkx commented Nov 4, 2026

Copy link
Copy Markdown
Contributor Author

Windows check for the scheduled cross-platform review, at head 7651a3979f merged onto main b611e634f7 (0d16980909, clean merge).

Setup: Windows 11 Enterprise 22621, WinLibs GCC 15.2 UCRT, Release. The hosted Windows check does not run this test on pull requests.

  • guest_np_cpp_web_api_account_ids passes in 3 of 3 runs.

AI-assisted: yes.

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Nov 5, 2026
@JJenkx

JJenkx commented Nov 5, 2026

Copy link
Copy Markdown
Contributor Author

Refreshed to 5c32718a423660ea130d0ac870a99619654fd1d9 on pinned main 151a2cb6e274f594a09c8a2ca42f44af2e5c40d8, retaining the prior public head. Source, declarations, test and CMake changes merge cleanly. The sole debt-file conflict now retains main's implemented factories and DataStatus iterators alongside this PR's account-ID layout/opaque-member limitations.

Fresh Linux Release scoped qualification: the actual NP module CMake owner and CPU fixtures build; 12/12 tests pass, zero skips, versus main's 11/11 existing cases. Using the exact same account-ID executable, each of its five individually selected accessor probes refuses on main (exit1) and passes with this change (exit0). ldd verifies the selected NP module for both arms. The tests cover full-width integer values, unchanged owner storage and non-owning member references across object displacements and member updates. Conventions and whitespace checks pass, with one nonfatal upstream debt-length warning.

Source diff, scoped build recipe, full build/test/JUnit logs, exact pins and five same-executable controls, SHA-256 477a234d47564c3541a1ba908ecfb259b5f0881b05b2eda9b9d02f07b5aeea90; uploaded artifact downloaded and verified. This is scoped Linux CPU qualification using a frozen libc provider. No fresh full-SDK/Windows/console/title-unblock or FPS claim; the previous Windows report retains its original pins. AI-assisted: yes.

@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Nov 5, 2026
@github-actions

github-actions Bot commented Nov 7, 2026 •

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
PR 15029 docs/dev/debt/libSceNpCppWebApi.md L49
PR 16128 docs/dev/debt/libSceNpCppWebApi.md L49
PR 16505 core/libs/prx/libSceNpCppWebApi/CMakeLists.txt L75
docs/dev/debt/libSceNpCppWebApi.md L49

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 14212 docs/dev/debt/libSceNpCppWebApi.md
PR 16436 core/libs/prx/libSceNpCppWebApi/Export.cpp

This branch has not been deployed

No deployments
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