AnyPS5/docs/dev/debt/libSceAudio3d.md

2.0 KiB

libSceAudio3d technical debt

Silent stubs

  • libSceAudio3d - the port produces no sound: objects can be reserved and sceAudio3dObjectSetAttributes accepts their attributes, but the library has no bed exports or mixing to give them audio, the attributes have no effect and sceAudio3dPortPush only paces the queue at granularity samples per frame at 48 kHz. sceAudio3dPortSetAttribute accepts the late reverb level and the downmix spread attributes and ignores them. sceAudio3dObjectSetAttributes validates the port, the reserved object and the attribute array (an object id that was never reserved returns the invalid-object error, while shadPS4 returns success for it and the error only for a released object; neither is measured on a console), treating the reset-state attribute as valid with a null value and requiring a value for the others; the attribute identifiers and the value of each are not interpreted. sceAudio3dPortFlush drops the frames queued by sceAudio3dPortAdvance instead of mixing and submitting them to an output, as there is no output

Unknown function info

  • sceAudio3dPortOpen (libSceAudio3d) - buffer modes 0 and 1 (also selected by the 0x10 and 0x18 parameter sizes) and 3 beds depend on an SDK version check in the module (prosper) and throw. A repeated sceAudio3dInitialize (NOT_READY in shadPS4, 0 in prosper) and sceAudio3dPortAdvance on a full queue (NOT_READY in shadPS4, unhandled in KytyPS5) throw too
  • sceAudio3dObjectReserve (libSceAudio3d) - object ids, the max_objects limit and the checks of sceAudio3dObjectReserve and sceAudio3dObjectUnreserve follow shadPS4 (PS4), the only reference with a body: ids count up from 1 per port, skipping 0, 0xFFFFFFFF and ids in use, and a failed reserve writes 0xFFFFFFFF