Repository navigation
fix(libSceAudioOut): report the front left speaker at +30 degrees, as the console does - #6871
Merged
adriadam10 merged 1 commit intoOct 19, 2026
Conversation
… the console does A PS5 (firmware 13.60) reports the front left speaker of its speaker info at +30 degrees and the front right one at -30, and -360 for the azimuth and elevation of every empty slot, in every HDMI device type and channel setting it offered. sceAudioOut2GetSpeakerInfo reported the front pair the other way round and empty slots as 0, the front centre direction. The type stays 0: the console's type followed the HDMI device type, and it reported 0 with the device set to TV.
|
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.
|
Collaborator
|
Checked the diff against the console measurements in the description (front pair +30/-30, -360 in unused slots, type and available bits unchanged), the updated |
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
A PS5 reports, in
sceAudioOut2GetSpeakerInfo, the front left speaker at +30 degrees and the front right one at -30 (the azimuth grows to the left), and -360 for the azimuth and the elevation of every slot without a speaker. Here the front pair was the other way round, at -30 and +30, and the 14 unused slots held 0 and 0, the front centre direction.This PR reports the stereo pair the way the console orients it and puts -360 in the unused slots. The type stays 0 and the available bits stay
0x3. On the console the type followed the HDMI device type, 0 for TV, 1 for AV amplifier and 2 for sound bar, which SharpProspero names television, AV receiver and sound bar, and the available bits followed the channels.Title
ASTRO BOT (PPSA21567, my own dump) calls
sceAudioOut2GetSpeakerInfowith flags 0 about 93 times a second (18,379 calls in a 197 s run from launch through the title screen, the save selection and the galaxy map) and reads the two front angles (#4317).I measured no difference in those scenes: in one run with each pair of angles through the same scripted input (a local build that switched them with an environment variable), with SDL's disk audio driver capturing the mix, the left/right balance was the same, a mean (L - R) / (L + R) per second of +0.004 with the old angles and +0.003 with the new ones. This emulator applies only the PCM data and volume attributes of a port (ids 0 and 1) and ignores the others.
Measured
PS5, firmware 13.60, from a homebrew payload process that calls the system's own
libSceAudioOutthroughdlopen/dlsym, aftersceAudioOut2Initialize, in every HDMI device type and channel setting the console offered. Only the AV amplifier type lets the channel count be chosen; the TV and sound bar types keep it fixed.typeavailable_bits0x3F0x30x3F0x30x3FThe other slots include slot 3, the LFE, in the 5.1 layouts.
flagswas 0 throughout. 7.1 reported 2 channels on this console's HDMI chain, so the 7.1 layout itself is not measured. Flags 1 gave the same as flags 0. Flags 2, 4 and0x80000000returned0x80268001, a null pointer0x8026800C, and a call beforesceAudioOut2Initialize0x80268006; those error paths are unchanged and listed in TechnicalDebt, together with the port states the same payload read.Probe output (PS5 firmware 13.60, payload process)
Tested
audio_out2_device_statenow checks the front pair at +30 and -30 and -360 in the other 14 slots; withAudioOut2SpeakerArray.cppas onmainit aborts. The nineaudio_out2tests pass.-j8onmain(82ddae75b) and on this branch. 1286 of 1287 pass here;agc_driver_tessellationfails as onmain.BUILD_TESTING=ON, GPU tests skipped:main(82ddae75b) does not buildGpuIndirectArgumentsMisalignedWriterAhead.cppwith MinGW (alignas(65536)is above the object file's maximum of 8192; agc tests:GpuIndirectArgumentsMisalignedWriterAhead.cppdoes not compile with MinGW GCC (alignas(65536)) #6716, test(agc): align the indirect arguments block at run time #6452), somainand this branch were built withninja -k 0and that test does not run.audio_out2_device_statepasses. 1319 of 1321 pass; the other failure isguest_kqueue(0xc0000409), as onmain, whereguest_shader_linkandagc_shader_helpersalso timed out.tools/check_conventions.pypasses.tools/pr_overlap.pyfinds no overlap with open pull requests.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code