Commit Graph
18 Commits
Author SHA1 Message Date
BunnyFlandClaude Opus 5.5 f4d2d44466 fix(libSceAudio3d): let open ex check like open in a PS4 process
In firmware 13.42 sceAudio3dPortOpenEx only sets the flag that skips
the PS4-process AudioOut2 advances, which this library never makes, so
it now opens like sceAudio3dPortOpen. A PS4-process open reports an
open port before an unsupported buffer mode or bed count, as the
firmware does, and the debt entry records the advances after an open
and a push for a PS4 SDK of 0x11000000 or later.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 96aa06c34f fix(libSceAudio3d): follow the firmware's PS4-process branch
Store sceKernelIsPs4Process at sceAudio3dInitialize as firmware 13.42
does and follow its PS4-process answers: bed write2 rejects route 1 on a
2-bed port, audio out open rejects port type 3 with param bit 17 and
checks like a PS5 process otherwise, and a repeated initialize returns
NOT_READY before the reserved check. Formats 6 and 7 throw for a PS4
process because the firmware rewrites them by PS4 SDK version, which
this project cannot read yet. Test the outputs loop and its reports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 7f45264713 fix(libSceAudio3d): keep PS4-process answers and read the port id only for reports
Choose the firmware 13.42 PS5 rules or the earlier answers by
sceKernelIsPs4Process for the port open, open ex, create and bed write2
route checks, read the port id for a call report only when a call
handler is registered, as the firmware does, and report a null
parameter pointer from sceAudio3dAudioOutOutputs without pointer
arithmetic on null.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 5f25ef8a97 feat(libSceAudio3d): follow firmware 13.42 for the port, report and audio out calls
sceAudio3dPortOpenEx, sceAudio3dPortDestroy, sceAudio3dPortGetStatus,
sceAudio3dReportRegisterHandler and sceAudio3dReportUnregisterHandler are
implemented, and sceAudio3dPortOpen, sceAudio3dPortCreate, the object
and audio out calls and the port close follow the checks of firmware
13.42's libSceAudio3d.sprx for a PS5 process.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
MarcZX10 74d5f2ce23 docs(libSceAudio3d): PortAdvance on a full queue returns NOT_READY, it does not throw
Old claim: a repeated sceAudio3dInitialize and sceAudio3dPortAdvance on a full queue
both throw.

What the code does: sceAudio3dInitialize throws (Unsupported) on a repeated call, but
sceAudio3dPortAdvance returns AUDIO3D_ERROR_NOT_READY (0x80EA0007) when the queue is
at queue_depth. The entry below this one already states that.

Permalinks at b1b5353cfc:
- https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceAudio3d/Export.cpp#L183-L189
- https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceAudio3d/Export.cpp#L198-L202
2026-10-30 18:49:34 +00:00
simnJS cffb533c1b feat(audio3d): route sceAudio3dPortCreate through the 0x10 port open
sceAudio3dPortCreate checks its port id and reserved argument as shadPS4
does, then opens with a 0x10 parameter block. That block selects buffer
mode 0, which still throws, so no port is opened yet.

The 0x10 and 0x18 blocks of sceAudio3dPortOpen now take the defaults
shadPS4 and prosper fill in and go through the field checks before the
buffer mode throws.

sceAudio3dPortDestroy and sceAudio3dPortGetStatus get the signatures
from Orbital and SharpProspero and keep throwing; the debt entries of
the six remaining exports say what is still unknown.
2026-10-28 15:05:28 +01:00
Kyon b5d41024b1 feat(libSceAudio3d): implement error descriptions 2026-10-24 20:16:40 +02:00
Dean ccab14d394 Merge pull request #8915 from hypermoist/feat/audio3d-speaker-array
feat(audio3d): forward the speaker-array calls to AudioOut2
2026-10-23 14:13:57 +13:00
boykopovar 69a0a691d1 fix(audio3d): restore attribute count output contract 2026-10-21 21:52:29 +03:00
hypermistandClaude Opus 5.5 51c5f528be feat(audio3d): forward the speaker-array calls to AudioOut2
sceAudio3dGetSpeakerArrayMemorySize, CreateSpeakerArray, DeleteSpeakerArray
and GetSpeakerArrayMixCoefficients(2) forward to the AudioOut2 speaker-array
calls as the console does: the memory size asks for no ambisonics, create
rejects a null handle or parameters with SCE_AUDIO3D_ERROR_INVALID_PARAMETER
and passes no ambisonics parameters, and MixCoefficients passes height_aware 0
and a 0.1 downmix spread radius. AudioOut2 create no longer rejects a null
ambisonics pointer, which the console accepts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-21 18:56:28 +13:00
Yuri Olive 68f9b47be0 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/audio-missing-exports
# Conflicts:
#	docs/dev/debt/libSceAudio3d.md
2026-10-20 17:55:03 -03:00
011010 64092044df fix(libSceAudio3d): queue the bed writes and consume one per advance
sceAudio3dBedWrite2 stored the bed in a single slot that
sceAudio3dPortAdvance mixed without clearing, so an advance with no new
write replayed the previous block instead of mixing silence, and two
writes before one advance kept only the second.

The writes are queued now, as shadPS4's ConvertAndEnqueue does: the
queue is bounded by queue_depth and returns NOT_READY when full, an
advance consumes one bed, and an advance with nothing queued mixes
silence through the mixer's empty-source path, which the mixer test
already covers.

guest_audio3d_port gains the queue case: fill the queue, require
NOT_READY, advance, and require the consumed bed to make room. It fails
on the old code at the NOT_READY of the full queue.
2026-10-20 22:06:52 +02:00
011010 7887d17766 fix(libSceAudio3d): use the reference error code for an unsupported buffer mode
The branch invented AUDIO3D_ERROR_NOT_SUPPORTED as 0x80EA0005, which
shadPS4's error enum names OUT_OF_MEMORY. Both shadPS4 and prosper
put the unsupported buffer mode at 0x80EA0008, prosper from the PS5
module's own error table.

The debt entries now name the reference behind each unverified
choice: the downmix coefficients and the dropped LFE follow shadPS4
(fpPS4 agrees) against prosper's contradiction, the channel order
follows shadPS4, prosper and fpPS4, the return of
sceAudio3dAudioOutOutput follows KytyPS5 and prosper against
shadPS4's total-sample answer, and the full-queue NOT_READY follows
shadPS4, the only reference with a body.

The stubs leave the branch: this pull request carries the bed path
alone.
2026-10-20 22:06:52 +02:00
husari.orozco c917d7dbf7 docs(technical-debt): record the audio3d bed and audio out behaviour 2026-10-20 22:06:52 +02:00
Yuri Olive 02998c3bd0 fix(libSceAudio3d): leave the functions #6148 implements 2026-10-20 10:32:08 -03:00
Yuri Olive d4387fbaf7 feat(libSceAudioIn,libSceAudio3d,libSceVoice): export missing firmware interfaces 2026-10-20 07:10:28 -03:00
Adrià FranchandClaude aa00274346 docs(debt): record inferred sceAudio3dPortGetAttributesSupported list
Co-Authored-By: Claude <[email protected]>
2026-10-16 21:41:16 +02:00
Adrià FranchandClaude 342a8c4590 docs(debt): move library entries to one file per library
Co-Authored-By: Claude <[email protected]>
2026-10-12 20:38:29 +02:00