Files
AnyPS5/docs/dev/debt/libSceInvitationDialog.md
T

3.1 KiB

libSceInvitationDialog technical debt

Silent stubs

  • sceInvitationDialogOpen, sceInvitationDialogGetResult (libSceInvitationDialog, PS4) - no dialog is shown and no invitation is sent: Open moves the dialog straight to FINISHED, and GetResult returns 0 with errorCode 0, result USER_CANCELED (1), the callbackArg of the last Open and a recipient count of 0, as shadPS4 reports when its window is dismissed and as libSceNpProfileDialog does. Not measured on a console.

Unknown function info

  • sceInvitationDialogOpen, sceInvitationDialogGetResult (libSceInvitationDialog, PS4) - the field names and the 144-byte InvitationDialogParam come from the shadPS4 header. They match the supplied libSceInvitationDialog.sprx: export 8XKR6wa64iQ at 0xFF0 checks the reserved bytes 0x18..0x37 of the result and writes its status at 0x08, and the helper at 0x410 copies eight bytes of the saved open parameter to 0x00, the eight result bytes to 0x08 and up to 16 20-byte online ids through the pointer at 0x10, after a four-byte count. A param whose size is not 144, or whose mode is neither 1 (send) nor 2 (receive), throws, and so does a result with a non-zero reserved byte. baseParam, userId and dataParam, with its 1 to 16 recipients, are not checked.
  • sceInvitationDialogOpen, sceInvitationDialogClose, sceInvitationDialogGetResult (libSceInvitationDialog, PS4) - two paths throw because shadPS4 and the other common dialogs here return different errors: Open before Initialize (shadPS4 INVALID_STATE, the Signin family NOT_INITIALIZED) and Close on a dialog that is not running, which is every Close after Initialize here (shadPS4 NOT_RUNNING, the Signin family 0). GetResult before the dialog finishes returns NOT_FINISHED even for a null result, as in shadPS4. shadPS4 returns the result value from GetResult; this returns 0, which the module writes at 0x08 as errorCode.

Functional

  • sceInvitationDialogInitialize, sceInvitationDialogTerminate (libSceInvitationDialog, PS4) - Initialize returns NOT_SYSTEM_INITIALIZED before sceCommonDialogInitialize, then ALREADY_INITIALIZED, then BUSY while another dialog holds the common dialog system, in shadPS4's order, and Terminate frees the system. Only this library takes the system through libSceCommonDialog so far, so the other common dialogs neither return BUSY because of it nor make it return BUSY. Not measured on a console.