mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
5.0 KiB
5.0 KiB
libSceVoiceQoS technical debt
Silent stubs
- sceVoiceQoSReadPacket (libSceVoiceQoS) - network voice packet streaming is not implemented: it returns 0 and writes size 0 (indicating no packet is available). Aliens: Fireteam Elite (PPSA03393) calls it on its startup path (
0x76D14C-0x76D16E) and stops withnot implementedif it throws - sceVoiceQoSWritePacket (libSceVoiceQoS) - network voice packet streaming is not implemented: it returns 0 leaving
*sizeuntouched (treating all input bytes as accepted). Aliens: Fireteam Elite (PPSA03393) sets*sizeto the packet size beforeWritePacket(0x76CEB9-0x76CEC4), compares*sizeagainst that input size upon return (0x76CF07-0x76CF10) to verify all bytes were accepted, and stops withnot implementedif it throws
Unknown function info
- sceVoiceQoSSetConnectionAttribute (libSceVoiceQoS, NID
KCGOxg8iX7s) is a throwing stub declared without parameters, like the other endpoint calls of the library: PPSA04159 fails to load without it and its signature is unknown. The name hashes to the imported NID (tools/nid_names.py) - sceVoiceQoSInit (libSceVoiceQoS) -
0x804E0905for a second initialization comes from prosper's reading of the module and was not measured: on a PS5 a valid call blocks inside a homebrew payload, so it never returns there. PPSA26344's two call sites (0xE307BF,0x151C45D) pass an allocated pointer, a 0x40000-byte block and app type 0x10000000; the app type and block are not used.sceVoiceQoSCreateLocalEndpointtakes four arguments (int* id, userId, deviceInId, deviceOutId) as declared in fpPS4 (src/ps4_libscevoice.pas,ps4_sceVoiceQoSCreateLocalEndpoint); signatures forDeleteLocalEndpoint(id),CreateRemoteEndpoint(int* id),DeleteRemoteEndpoint(id),Connect(int* id, local, remote),Disconnect(connection),SetLocalEndpointAttribute(id, attribute, value, size),SetRemoteEndpointAttribute(id, attribute, value, size), andGetLocalEndpointAttribute(id, attribute, value, size)were verified against call sites in Aliens: Fireteam Elite (PPSA03393, e.g.0x76D132,0x76D16E,0x76CECB). Endpoints and connections are tracked by allocated id; duplicate connections and deleting an endpoint while referenced in a connection are permitted as the console is not known to reject them; endpoint attributes are stored as given (including empty or non-positive sizes), as their ids and defaults are unknown. The not-initialized error 0x804E0901 is assumed from the 0x804E09xx numbering, and unknown ids returnARGUMENT_INVALID. Aliens: Fireteam Elite (PPSA03393) uses all implemented calls on its load path; it stops withnot implementedwhen any unimplemented call throws - libSceVoiceQoS firmware exports (libSceVoiceQoS) -
sceVoiceQoSGetRemoteEndpointAttribute,sceVoiceQoSGetConnectionAttributeandsceVoiceQoSGetStatusfollow public PS4 SDK prototypes in Orbital and remain throwing stubs as endpoint and connection attribute storage is unverified on hardware.sceVoiceQoSEnableChat,sceVoiceQoSDisableChat,sceVoiceQoSDebugGetStatus,sceVoiceQoSInitHQ,sceVoiceQoSSetMode, andsceVoiceQoSTerminateare declared without parameters from the firmware export database (aerolib.csv); their guest signatures are unverified on hardware and every call throws
Functional
- sceVoiceQoSEnd (libSceVoiceQoS) -
0x804E0901(not initialized) before any initialization was measured on a PS5 (firmware 13.60, #1407); ending an initialized library was not, because a validsceVoiceQoSInitnever returns inside a homebrew payload. PPSA14632 calls it at shutdown and PPSA26344 after a nonzerosceVoiceQoSInit. After an initialization it returns 0 and clears the init flag, so the library can be initialized again. Whether the console also ends the libSceVoice instance that itssceVoiceQoSInitstarts (prosper's reading of the module), and what it answers while endpoints exist, is unknown; here it drops every endpoint and connection - sceVoiceQoSGetLocalEndpoint, sceVoiceQoSGetRemoteEndpoint (libSceVoiceQoS) - signatures follow Orbital (
GetLocalEndpoint(connectionId, int* localId)andGetRemoteEndpoint(connectionId, int* remoteId)). Operations look up the connection by allocated id and return the connected local or remote endpoint id; an unknown connection id or null output pointer returnsARGUMENT_INVALID(0x804E0902), and calling before initialization returns0x804E0901