Files
AnyPS5/docs/dev/debt/libSceMsgDialog.md
T
MarcZX10 4de331c64b docs(libSceMsgDialog): dialogs that show no UI finish on different status calls
Old claim: the dialogs that show nothing (progress bar, system message, other
button types, no window, opened while another is shown, no flip within three
seconds) finish on the second sceMsgDialogGetStatus or sceMsgDialogUpdateStatus
call.

What the code does: a progress bar runs until sceMsgDialogClose or 30 seconds
(Export.cpp L64-65); a dialog that is not presented finishes on the second
status call (L67, L99); a presented dialog that no flip drew leaves the modal
state at the first poll after three seconds (ModalDialog.cpp L45-47, 3000 ms in
ModalDialog.hpp); sceMsgDialogOpen returns busy while a dialog runs (Export.cpp
L94). The entry is split in two so each stays under 1000 characters.

Permalinks at b1b5353cfc:
- https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceMsgDialog/Export.cpp#L55-L68
- https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceMsgDialog/Export.cpp#L94-L100
- https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceIme/src/ModalDialog.cpp#L45-L47
2026-10-30 13:56:09 +00:00

3.2 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, except that one opened while another is shown returns busy; a progress bar finishes after 30 seconds or on sceMsgDialogClose, a system message, another button type or a dialog with no window finishes on the second sceMsgDialogGetStatus or sceMsgDialogUpdateStatus call, and a shown one that no flip drew finishes at the first status call after three seconds; the first 160 characters of a user message are only logged.
  • libSceMsgDialog - 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