Files
AnyPS5/docs/dev/debt/libSceGameLiveStreaming.md

8.0 KiB

libSceGameLiveStreaming technical debt

Functional

  • sceGameLiveStreamingEnableLiveStreaming - a call outside sceGameLiveStreamingInitialize and sceGameLiveStreamingTerminate throws, as the module's error for it is not confirmed (sceGameLiveStreamingTerminate and sceGameLiveStreamingGetCurrentStatus2 return 0x80A00004; fpPS4 does not return its SCE_GAME_LIVE_STREAMING_ERROR_NOT_INITIALIZED from this call). Otherwise both values are accepted and change nothing, as no broadcast is ever on air. The signature, int sceGameLiveStreamingEnableLiveStreaming(const bool), follows Orbital and fpPS4
  • libSceGameLiveStreaming - native initialization requires exactly 0x4000 heap bytes before checking repeated initialization. Host lifecycle and pointer errors now match the wrapper, but service registration, allocation failures and asynchronous service readiness are not modelled. The host becomes ready immediately after initialization.
  • sceGameLiveStreamingGetCurrentStatus2 - the supplied module confirms the 72-byte layout and inactive status (user -1, remaining bytes zero). Live service counters, active-user changes and broadcast-resolution conversion are unimplemented. In the 25 instructions after their one call, PPSA01494, PPSA30839 and PPSA31162 read isOnAir (the byte at 4) and spectatorCounts (the word at 8), so those two are the fields these titles act on; here they stay false and 0.
  • sceGameLiveStreamingGetProgramInfo (libSceGameLiveStreaming) - the PS5 13.60 module clears the 0x134C-byte program info, asks the system service for its first 0xFD4 bytes and returns 0x80A00002 for a null pointer and 0x80A00004 before initialization. With nothing broadcast here the info stays zero, which assumes the service reports an empty program when nothing is on air; the field layout is unknown. Two titles (PPSA03001 at 0x1ad86b4, PPSA07426 at 0xe89594) disassembled for this entry pass the address of a stack buffer with no store into it between the start of the block and the call; for a result other than 0 they do not read it, for 0 they copy three text fields at offsets 0, 0x802 and 0xC03, and they do not tell 0x80A00002 from 0x80A00004. The buffer size is not shown.

Silent stubs

  • sceGameLiveStreamingPermitLiveStreaming - this and fifteen related setting, feedback and message calls (see Api.hpp) validate their arguments and store nothing, as no broadcast is ever on air. The checks (not initialized, null pointers, feedback type 1-3, string lengths 240/720/45/360, at most 16 spoiler tags and 5 preset commands, zero reserved tails in the 224-byte spoiler tag, 228-byte preset command and camera setting) come from a report on #9524 that ran each function of the firmware 13.42 module with the service call stubbed. The order between argument checks, the camera setting size and the other struct fields are not measured, nor what the service returns after validation: the calls return 0 and queries report zero messages.

Unknown function info