Skip to content

refactor(libSceSaveData.native): name sceSaveDataPrepareForTransferring - #4906

Merged
adriadam10 merged 2 commits into
boykopovar:mainfrom
nicolasfalesy:feat/savedata-name-prepare-for-transferring
Oct 14, 2026
Merged

adriadam10 merged 2 commits into
boykopovar:mainfrom
nicolasfalesy:feat/savedata-name-prepare-for-transferring

Conversation

@nicolasfalesy

Copy link
Copy Markdown
Contributor

What

Names the libSceSaveData.native NID RvID8BVeg+g, declared as sceSaveDataUnknown_RvID8BVeg for Minecraft (PPSA17221). sceSaveDataPrepareForTransferring hashes to it:

$ python3 -c "import importlib.util as u; s=u.spec_from_file_location('n','tools/nid_names.py'); m=u.module_from_spec(s); s.loader.exec_module(m); print(m.compute_nid('sceSaveDataPrepareForTransferring'))"
RvID8BVeg+g

The name is not in aerolib (the pinned copy or the current one at fe2cc2948e). It was found by hashing combinations of the words in aerolib's libSceSaveData names, and it fits beside the sceSaveDataTransferringMountPs4 and sceSaveDataDirNameSearchPs4 imports it sits next to. As in #1145 and #2301, behaviour is unchanged: it still throws, and NotImplemented_nid_no_patch(__func__) now names the real function. Its arguments stay unknown; the debt entry says so and records where the name came from.

Tested

  • Linux (Arch, GCC 16.2.1, Release) on main c13dc7e: libs builds, and nm -D on libSceSaveData.native.prx shows the export RvID8BVeg+g.
  • tools/check_conventions.py --base upstream/main passes; tools/pr_overlap.py reports no overlap.
  • No title run: the function still throws, so nothing changes at runtime except its name in the message.

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
  • Unblocks: none
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Progress report (e154f56 → 31e53e5)

➖ System libraries: 88.79% (+0.0%, +1 declared, -1 removed functions)

🆕 1 declared as stubs
Library Name
libSceSaveData.native sceSaveDataPrepareForTransferring
🗑️ 1 removed
Library Name
libSceSaveData.native sceSaveDataUnknown_RvID8BVeg

nicolasfalesy and others added 2 commits October 14, 2026 19:17
The NID RvID8BVeg+g, declared as sceSaveDataUnknown_RvID8BVeg for
Minecraft (PPSA17221), hashes to sceSaveDataPrepareForTransferring. The
name is not in aerolib; it was found by combining words from the
libSceSaveData names that are. Behaviour is unchanged: it still throws,
now naming the real function.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017WeVmjnnPPKdxVTpr2Vjtw
@adriadam10

Copy link
Copy Markdown
Collaborator

Checked compute_nid("sceSaveDataPrepareForTransferring") = RvID8BVeg+g, the diff (rename only, still throws, debt line updated), and build + ctest of the libSceSaveData.native tests on top of current main (6/6).

One fix, pushed as a commit on your branch: the APS5_EXPORT("RvID8BVeg+g", sceSaveDataPrepareForTransferring); line is removed. The real name already hashes to that NID, so keeping the alias exports it twice, which the Windows PE patcher rejects (duplicate patched export name).

Merging once the full Build is green.

@adriadam10
adriadam10 force-pushed the feat/savedata-name-prepare-for-transferring branch from f095791 to 31e53e5 Compare October 14, 2026 17:20
@adriadam10
adriadam10 merged commit 1cbd74e into boykopovar:main Oct 14, 2026
8 checks passed
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.

2 participants