Files
AnyPS5/docs/dev/debt/libSceMsgDialog.md
T
MarcZX10 8bec123452 docs(libSceMsgDialog): split the progress bar statement from the dialog entry
The silent stub entry grew past 1000 characters. The progress bar statement
moves to its own entry unchanged.
2026-10-29 14:06:19 +00:00

2.9 KiB

libSceMsgDialog technical debt

Silent stubs

  • libSceMsgDialog - only a user message dialog with button type 0, 1, 3 or 4 shows UI, and only while the video output has a window to draw it. A progress bar, a system message, a user message of any other button type, a dialog opened with no window, one opened while another dialog is shown and one that no flip drew within three seconds show none: sceMsgDialogOpen opens them without sceMsgDialogInitialize as well, and they finish on the second sceMsgDialogGetStatus or sceMsgDialogUpdateStatus call; the first 160 characters of a user message are only logged. The button a player picks, or that a dialog without UI picks (2 for YES_NO_FOCUS_NO, otherwise 1), is kept but not returned, as sceMsgDialogGetResult is exported by libSceMsgDialog.native.
  • libSceMsgDialog - a progress bar dialog runs until sceMsgDialogClose or for 30 seconds, and sceMsgDialogProgressBarInc, sceMsgDialogProgressBarSetMsg and sceMsgDialogProgressBarSetValue ignore their arguments

Unknown function info

  • sceMsgDialogOpen (libSceMsgDialog) - the SceMsgDialogParam layout it reads is not measured on a PS5: the mode at 0x38 (1 user message, 2 progress bar, 3 system message), the user message parameter pointer at 0x40, and in that parameter the button type at 0 and the message pointer at 8. A mode outside 1 to 3, or a parameter that cannot be read, is treated as a user message; only Windows checks that the memory is readable, so on Linux any non-null pointer is read. The errors 0x80b80003 (not initialized), 0x80b80007 (busy), 0x80b8000b (not running) and 0x80b8000d (null argument) are not measured either. PPSA21564 01.007.000 (at 0x1D8C) and PPSA30839 01.003.000 (0x19690), disassembled for this entry, write this layout: 0x88 at 0x30, mode 1 and the parameter at 0x40 with the message at 8, and PPSA21564 the button type at 0. Closes when: measured on a PS5
  • sceMsgDialogOpen (libSceMsgDialog) - the dialog the overlay draws is not modelled on a PS5: the labels OK, Yes, No and Cancel are English and fixed, the message is drawn with the system keyboard's bitmap font, wrapped at 36 columns and cut to 8 lines with dots, and a character the font lacks is drawn as a box. Closes when: measured on a PS5
  • sceMsgDialogOpen (libSceMsgDialog) - the button ids of an answer are the button's position plus one (OK 1; YES 1 and NO 2; OK 1 and CANCEL 2) and a cancel input picks the last button; neither is measured on a PS5, nor is the id after the title closes the dialog (libSceMsgDialog.native keeps 1). Button types from 5 on are not shown. Closes when: measured on a PS5