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

13 lines
2.9 KiB
Markdown

# libSceMsgDialog technical debt
### Silent stubs
- [libSceMsgDialog](../../../core/libs/prx/libSceMsgDialog/Export.cpp) - 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](../../../core/libs/prx/libSceMsgDialog/Export.cpp) - a progress bar dialog runs until `sceMsgDialogClose` or for 30 seconds, and `sceMsgDialogProgressBarInc`, `sceMsgDialogProgressBarSetMsg` and `sceMsgDialogProgressBarSetValue` ignore their arguments
### Unknown function info
- [sceMsgDialogOpen](../../../core/libs/prx/libSceMsgDialog/Export.cpp) (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](../../../core/libs/prx/libSceMsgDialog/include/MsgDialogRequest.hpp) (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](../../../core/libs/prx/libSceMsgDialog/include/MsgDialogRequest.hpp) (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