Commit Graph
19 Commits
Author SHA1 Message Date
MarcZX10 67fd3c26b3 fix(libSceMsgDialog): act only on the dialog this library opened
The dialog request carries the message dialog owner id, and the status poll,
close and terminate pass it, so terminating libSceMsgDialog no longer resets or
finishes a dialog another library is showing.
2026-10-29 14:06:18 +00:00
MarcZX10 8660db0414 test(libSceMsgDialog): cover presenting a user message dialog
guest_msg_dialog_tests opens dialogs through the exports. Without a presenter a
dialog finishes on the second status call and nothing is shown. With one, the
dialog is shown, stays running across status calls, refuses a second open,
finishes when answered, and a close or a terminate closes or resets the
session. A dialog without buttons, a progress bar, a system message and a
dialog the session refuses because another one is showing keep the automatic
answer.
2026-10-29 14:06:13 +00:00
MarcZX10 76758cfe39 feat(libSceMsgDialog): show user message dialogs in the overlay
sceMsgDialogOpen builds a modal dialog request from the user message and, when
the session accepts it because a presenter exists and no other dialog is
showing, marks the dialog as presented: it stays running until the player
answers it or the title closes it. Progress bars, system messages, dialogs
without buttons or with an unknown button type, and any dialog opened with no
presenter keep the automatic answer on the second status call. The log line
says whether the dialog was shown.
2026-10-29 14:06:13 +00:00
MarcZX10 dbfc84ef5b feat(libSceMsgDialog): close and reset the dialog session with the dialog
sceMsgDialogClose closes the session of a presented dialog, so the overlay and
its input capture go away, and sceMsgDialogTerminate resets the session. No
dialog is presented yet.
2026-10-29 14:06:13 +00:00
MarcZX10 6abb8f2810 feat(libSceMsgDialog): finish a presented dialog when the player answers it
A dialog marked as presented stays running until the modal dialog session
reports an answer or is closed or reset, instead of finishing on the second
status call, and an answer sets the button id the dialog keeps. Nothing marks a
dialog as presented yet, so every dialog still finishes as before.
2026-10-29 14:06:13 +00:00
MarcZX10 9ee08226e9 build(libSceMsgDialog): link libSceIme
libSceMsgDialog calls the modal dialog session that libSceIme hosts, in the same way
libSceImeDialog calls its keyboard hooks. Nothing calls it yet.
2026-10-29 14:06:13 +00:00
MarcZX10 abca7499a4 test(libSceMsgDialog): cover the dialog request
msg_dialog_request_tests checks the buttons, focus and cancel button of the four
presented button types, the decoded message, and that other button types, modes
and parameters without a user message or a message pointer are refused without
touching the output.
2026-10-29 14:06:13 +00:00
MarcZX10 e0d9b76aa0 feat(libSceMsgDialog): build a modal dialog request from a user message
MsgDialog::BuildRequest turns a parsed user message with button type 0, 1, 3 or 4
into a ModalDialogRequest: OK; Yes and No; OK and Cancel; Yes and No with the
focus on No. The cancel input picks the last button. Dialogs without a message
pointer, in progress bar or system message mode, without buttons or with a
button type outside those four are not presented, so their callers keep the
automatic answer. The button id of a choice is its index plus one.
2026-10-29 14:06:13 +00:00
MarcZX10 e738432232 test(libSceMsgDialog): cover the UTF-8 decode
msg_dialog_text_tests checks ASCII, two-, three- and four-byte sequences,
the replacement of an invalid lead byte, a stray continuation byte, overlong
forms, an encoded surrogate, a code point past U+10FFFF and truncated or broken
sequences.
2026-10-29 14:06:13 +00:00
MarcZX10 7143ace9e7 feat(libSceMsgDialog): decode the UTF-8 message of a dialog to UTF-16
The overlay draws UTF-16 code units. MsgDialog::DecodeUtf8 converts a guest
message, replacing each byte of an invalid, overlong, truncated or surrogate
sequence and each stray continuation byte with U+FFFD, and encoding code points
past U+FFFF as surrogate pairs.
2026-10-29 14:06:13 +00:00
MarcZX10 8861cedb74 test(libSceMsgDialog): cover the SceMsgDialogParam parse
A host-only test builds parameters in memory and checks the mode fallback, the
other modes not reading a user message, the button type, a null message
pointer, the 1024-byte cap and the 160-character masked log text. It gives
libSceMsgDialog its own CMakeLists.txt, which builds the same Export.cpp as
before.
2026-10-29 14:06:12 +00:00
MarcZX10 3f73df139d refactor(libSceMsgDialog): parse SceMsgDialogParam into a typed header
sceMsgDialogOpen read the mode, the user message parameter, the button type and
the message through a function that wrote file-scope state. The parse is now a
stateless header returning a ParsedParam, so both message dialog libraries and
tests can share it. The mode, the readability checks, the focused button and the
logged text are unchanged.
2026-10-29 14:06:12 +00:00
ElysiaAlarienandClaude Opus 5.5 a11ae425d4 docs(libSceMsgDialog): record the silent stub and parameter layout as debt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 22:11:32 -04:00
boykopovar a448723103 fix(sdk): remove duplicate message dialog result export 2026-10-24 23:17:48 +03:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
OverkillLabs 2e8c1096fd feat(libSceMsgDialog): real dialog state machine, auto-answer without UI
Replace the unimplemented stubs with a working NONE -> INITIALIZED ->
RUNNING -> FINISHED state machine for the message dialog PRX. Open()
best-effort parses the SceMsgDialogParam layout to pick a sensible
default button (auto-focus-no variants answer No, everything else
answers Yes/OK), then auto-finishes the dialog after a couple of status
polls so a title that waits on a dialog for user input never blocks
forever. Progress-bar mode is instead closed by the title itself via
sceMsgDialogClose, with a time cap as a safety net. GetResult now fills
in a real SceMsgDialogResult (mode/result/buttonId) instead of leaving
the caller's buffer untouched.
2026-09-28 13:28:49 +03:00
boykopovar abc72da741 feat(libs): define vabi macros + add to declarations 2026-09-10 08:07:03 +03:00
boykopovar 6123893998 feat(libs): throw not impl ex in every stub 2026-09-06 15:05:04 +03:00
boykopovar 59bee8d187 feat(libs): add libs function signatures 2026-08-20 23:18:16 +03:00