Repository navigation
feat(libSceAjm.native): build the WVorbis header packet - #9034
Merged
oneandonlydean merged 2 commits intoOct 23, 2026
Merged
Conversation
sceAjmDecWVorbisCreateHeaderPacket checks its 0x48-byte parameter as the PS5 module does and writes a five-entry length table, a Vorbis identification header from the parameters, an empty comment header and the setup packet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
|
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.
|
12 tasks done
12 tasks done
…ader-packet # Conflicts: # core/libs/prx/libSceAjm.native/Export.cpp # docs/dev/debt/libSceAjm.native.md
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
sceAjmDecWVorbisCreateHeaderPacket(Z4HDpe1ZEa4) threw. PPSA08427 and PPSA29340 import it, through the Wwise Vorbis hardware-decoder module they ship.In the decrypted PS5 12.00 module (0x59a0) it takes one 0x48-byte parameter. The fields are: structure size, channels, sample rate, bytes per second, the two block-size exponents, the setup packet and its size, the output buffer and its size, and the written size.
It checks, in this order:
0x8A6E0001;0x8A6E0002;0x8A6E0001;1 << blockSize0below 64,blockSize1 < blockSize0, or1 << blockSize1above 8192:0x8A6E0001. The shift is a 32-bitshlx, so exponents are taken modulo 32, and this is reproduced;0x8A6E0001;0x8A6E0004;0x8A6E0001;0x8A6E0003.It then writes, with an LSB-first bit writer:
The written size is 56 plus the setup size.
This PR writes the same bytes directly. One difference, recorded under Functional in the debt file: the console's bit writer only checks that each write starts inside the buffer, so it can accept a buffer a few bytes short and write past it. Here any output smaller than the whole packet returns
0x8A6E0003.sceAjmDecWVorbisCreateSetupPacketstill throws. It rebuilds Wwise's codebook references into the decoder's own codebook format and will be a separate PR. Ajm here has no WVorbis decoder, so a title gets past header creation but not decoding.The code is written from the observed behaviour and the public Vorbis header layout; nothing from the module is copied.
Tested
Linux (CachyOS, GCC, Release). The new
guest_ajm_wvorbischecks:All four
guest_ajm*tests pass.tools/check_conventions.pyis clean. No open PR implements these exports. Three-way merges with the open PRs touching these files add no conflicts: #3205, #6044, #6977, #8087, #8353, #8468.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code
https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK