Files
NikoandClaude Opus 5.5 cfb371d5e1 feat(libSceVoice): implement sceVoicePausePortAll and sceVoiceResumePortAll
Both threw. They now take no arguments and return 0x804E0801 while the
library is not initialized and 0 otherwise, as shadPS4's PS4 versions
do; that not-initialized code is the one prosper reads for
sceVoiceStart, and RPCS3's PS3 calls make the same check. Like
sceVoicePausePort they change no reported state: VitaSDK documents that
pausing every port keeps buffered data and the reported port state, and
nothing here processes port data.

guest_voice calls both before sceVoiceInit and after sceVoiceEnd
(0x804E0801), and twice each with ports open, where GetPortInfo still
reports the same type, state and frame size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 05:01:43 +02:00

6.2 KiB

libSceVoice technical debt

Silent stubs

  • sceVoiceGetPortAttr (libSceVoice) - attribute 1001 writes one zero byte and returns 0 for an existing port; the backend processes no voice audio. PPSA34501 requests size 1 and reads one byte on success, and this fallback avoids its startup exception. The name follows attribute 1001 (CELLVOICE_ATTR_VAD) (Voice Activity Detection) in RPCS3, not confirmed for the PS5. The correct result, eligible port types and behaviour are unknown.

Unknown function info

  • sceVoiceResetPort (libSceVoice) - the (uint32_t portId) signature is the PS Vita one in VitaSDK and the PS3 cellVoiceResetPort in RPCS3; that the PS5 library takes the same argument is assumed. A reset clears a port's buffered data, and ports here buffer nothing (sceVoiceReadFromOPort returns 0 bytes and sceVoiceWriteToIPort throws), so it only checks that the library is initialized and the port exists, as RPCS3 does, and keeps the port's connections, volume and mute flag. An uninitialized library or an unknown port throws like the other port calls; the console's error codes are not measured. PPSA23566 imports it
  • sceVoiceGetResourceInfo (libSceVoice) - the (VoiceResourceInfo* info) signature and port limits (7 voice inputs, 7 voice outputs, 1 device input, 1 device output, 64 total ports) are the PS Vita ones in VitaSDK; that the PS5 library uses the same layout and limits is assumed. An uninitialized library or a null output pointer throws like the other Voice calls; console limits and error codes are not measured. PPSA23566 imports it
  • sceVoiceEnableChat, sceVoiceDisableChat (libSceVoice) take no arguments and return 0, following SharpProspero and the sceAudioOut2EnableChat model. The host mixes no chat audio, so the calls only record whether chat audio is enabled and fail when the library is not initialized. Console error codes and chat session requirements are unverified. PPSA23566 imports them
  • sceVoiceInit, sceVoiceStart, sceVoiceCreatePort, sceVoiceGetPortInfo (libSceVoice) - a second sceVoiceInit returns 0x804E0802, and Start, CreatePort and GetPortInfo return 0x804E0801 before checking any argument while the library is not initialized, as prosper reads them from the shipped module. The other port and lifecycle calls still throw when the library is not initialized, since prosper gives no module address for them. Whether sceVoiceInit checks a null param before its state is unknown, so a null param still throws first, and that sceVoiceEnd returns the library to the not-initialized state is assumed. Closes when: the other entry points are read from the module or measured on a PS5
  • sceVoicePausePort, sceVoiceResumePort (libSceVoice) - not measured on a PS5: the (uint32_t portId) signature follows VitaSDK and the PS3 calls in RPCS3, and the console's error codes and its result for pausing a paused port or resuming a running one are unknown (0 here, as in RPCS3). Both only check that the library is initialized and the port exists: VitaSDK documents that a paused port keeps its data and reported state, and nothing here processes port data. PPSA24191 imports them
  • sceVoicePausePortAll, sceVoiceResumePortAll (libSceVoice) - not measured on a PS5: both return 0x804E0801 while the library is not initialized and 0 otherwise, as in shadPS4; prosper reads the same code for sceVoiceStart, and the PS3 calls in RPCS3 make the same check. Like sceVoicePausePort they change nothing that is reported: VitaSDK documents that pausing every port keeps the buffered data and the reported state, and nothing here processes port data
  • sceVoiceInitHQ (libSceVoice) - unknown signature
  • sceVoiceGetMemorySize (libSceVoice) - unknown signature
  • sceVoiceDeviceInCustomerData (libSceVoice) - unknown signature
  • sceVoiceQAEnableRecording (libSceVoice) - unknown signature
  • sceVoiceVADAdjustment (libSceVoice) - unknown signature
  • sceVoiceVADPVTAdjustment (libSceVoice) - unknown signature
  • sceVoiceVADSetVersion (libSceVoice) - unknown signature
  • sceVoiceSetMuteFlagAll (libSceVoice) - unknown signature
  • sceVoiceSetBitRate (libSceVoice) - unknown signature
  • sceVoiceUpdatePort (libSceVoice) - unknown signature