Skip to content

docs(libSceSaveData.native): record what firmware 13.42 does in sceSaveDataGetProgress - #15097

Open
BunnyFl wants to merge 4 commits into
boykopovar:mainfrom
BunnyFl:docs/savedata-getprogress-firmware
Open

BunnyFl wants to merge 4 commits into
boykopovar:mainfrom
BunnyFl:docs/savedata-getprogress-firmware

Conversation

@BunnyFl

@BunnyFl BunnyFl commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

What

The sceSaveDataGetProgress entry in docs/dev/debt/libSceSaveData.native.md, merged with #15077, says three things that firmware 13.42 settles otherwise:

The entry now says what firmware 13.42's libSceSaveData.sprx does. The export stays NotImplemented_nid_no_patch; no code changes.

Source: firmware 13.42 libSceSaveData.sprx (sha256 1d214285f188f1c0821a611a08345833dd379cee547d5834e64228cde906a567), export ANmSWUiyyGQ at 0x39af0. Read from disassembly only, not measured on a console:

39b00: ctx = [0x64040] ; test ctx ; je 39b3b    ; 39b3b: 0x809f0001, no library context
39b05: (ctx->state & ~1) != 2 -> 0x809f0000      ; state gate before the pointer is looked at
39b1b: call 0x1d6c0(ctx, progress)
  1d6dc: ctx[0x38] < 0 -> return it
  1d6eb: ctx[0x10] == NULL -> 0x809f8002
  1d6f0: progress == NULL -> 0x809f8004
  1d74e: call 0x1a0a0(conn, request 5, ..., 0x80-byte reply)   ; save-data service request
  1d757: vmovss xmm0, [reply] ; vmovss [progress], xmm0           ; float stored through the pointer
39b28: on a negative result, tail-calls 0x1d480(ctx, 5)

So the value comes from the save-data service, and mapping it to the library's backup copy would be a host model rather than the console's behaviour. I left out 0x809F8002 and the 0x1d480 error path from the entry, since neither is traced to a caller-visible meaning.

  • Docs only; one line in docs/dev/debt/libSceSaveData.native.md (760 characters).

Tested

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
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

🤖 Generated with Claude Code

…veDataGetProgress

The entry took the float* parameter from the OpenOrbis headers and
shadPS4, said the PS5 module may differ, and planned to map the value
to sceSaveDataBackup's copy. Firmware 13.42's libSceSaveData.sprx
confirms the float*, checks the library context and state before a
null pointer, and reads the value from a save-data service request,
so that mapping would be a host model.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Hi BunnyFl, could you qualify the new validation-order sentence with the internal status and connection checks from your trace? The helper returns ctx[0x38] when negative and checks ctx[0x10] before it tests progress, so “then 0x809F8004 for a null pointer, and otherwise sends request 5” reads more definitively than the shown paths support. Saying that the pointer check follows those helper checks and that a successful service reply supplies the float would retain the useful source finding without assigning a caller-visible meaning to the untraced errors.

@github-actions

github-actions Bot commented Nov 2, 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 12748 docs/dev/debt/libSceSaveData.native.md L24-25

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 8630 docs/dev/debt/libSceSaveData.native.md
PR 12625 docs/dev/debt/libSceSaveData.native.md
PR 13551 docs/dev/debt/libSceSaveData.native.md
PR 14150 docs/dev/debt/libSceSaveData.native.md
PR 14212 docs/dev/debt/libSceSaveData.native.md

@github-actions github-actions Bot added the docs label Nov 2, 2026
… order

The null-pointer result comes from the helper at 0x1d6c0 after its own
status and connection checks, and only a successful service reply
supplies the float, so say that instead of a definite two-step order.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BunnyFl

BunnyFl commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

@oneandonlydean Thanks, done in c1939a16e5. The sentence now says the pointer goes to an internal helper that first checks its own status and connection fields, whose results aren't traced, and only then returns 0x809F8004 for a null pointer. Past those checks it sends request 5, and a successful reply supplies the stored float. The entry is 913 characters, and check_conventions.py passes.

AI-assisted: yes (Claude Code)

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Nov 2, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed needs rebase Conflicts with main, rebase needed labels Nov 3, 2026
…ogress-firmware

# Conflicts:
#	docs/dev/debt/libSceSaveData.native.md

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants