Commit Graph
52 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 5f261bd7ff Utility: Stand in for the HtmlViewer, offering to open the page in a browser
Instead of the PSP's web browser, a dialog shows the URL the game wants
and opens it in the host's browser on X, or backs out on O. Either way the
game sees the browser closed normally. Platforms that can't open a URL
(the new SYSPROP_CAN_LAUNCH_URL) only offer to back out. Only plain
printable-ASCII http(s) addresses are handed over, and on Linux without a
shell.

What the firmware does (sceUtility_Driver, 6.61, plus
utility/dialog/htmlviewer): the HtmlViewer has its own state apart from the
other dialogs, so they don't block each other, and its calls return
WRONG_TYPE until one has started. The request size picks the 2.00 to 3.00
layout, and InitStart allocates 3.5MB of user memory (4.5MB with options
bit 0x400 from 2.70 on), failing with 800200d9 without it.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-25 12:50:23 -06:00
Henrik RydgårdandClaude Opus 5.5 3c15b2b112 Utility: One dialog at a time whatever its type, like the firmware
On a PSP, every InitStart fails with INVALID_STATUS until the last dialog
started is back at NONE, including while it's shutting down, and before
its params are checked. A failed InitStart leaves the current type alone.
We returned WRONG_TYPE instead, and a failed InitStart (e.g. a bad size)
still switched the current type, so every later dialog was refused. (One of
ours that fails after already starting, as savedata can, still becomes the
current type, since the game may poll it.)

The busy check applies status changes that are due, but doesn't use up an
auto status dialog's one-time INITIALIZE/SHUTDOWN reports; one that only
waits to report SHUTDOWN is let finish. Auto status dialogs now release
volatile memory on the way to NONE, including when the game saw RUNNING
before the init thread was done, which used to leave it locked for the next
dialog. GamedataInstall no longer requires currentDialogActive, which its
ShutdownStart cleared even when it then failed, so it could never finish -
and would now have blocked every other dialog.

Also: MsgDialog accepts exactly the three sizes sceUtility_Driver does (we
memcpy'd whatever size was given), and HtmlViewer GetStatus answers
WRONG_TYPE.

Adds utility/dialog/status and utility/dialog/priority, recorded on a PSP.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-25 12:50:23 -06:00
Henrik RydgårdandClaude Opus 5.5 ec00700730 Dialog: Fade in 200ms like the firmware, and accept input while fading in
On a PSP, dialog animations advance by animSpeed frames per Update and the
fades take about 200ms. Ours took 500ms (1/30 s per animSpeed, over
FADE_TIME 1.0), and all input was ignored until it finished, which made
dialogs feel sluggish, noticeably so in 30fps games. Input is still
ignored while fading out, once a choice has been made.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-23 19:25:24 -06:00
Henrik Rydgård 7dde367ead Improve logging in sceUtility *GetStatus functions 2025-08-06 17:45:39 +02:00
Henrik Rydgård e2bfc48886 Sanity checks in Vulkan backend, PSPDialog 2025-05-14 00:39:00 +02:00
Henrik Rydgård b2b0ff1753 Consolidate error codes in ErrorCodes.h 2025-02-04 11:53:00 -06:00
Henrik Rydgård ca54fe9234 Deduplicate some code, fix some style 2025-01-14 12:38:20 +01:00
Henrik Rydgård eccd7f3767 More const/static-ification 2024-09-17 15:22:37 +02:00
Henrik Rydgård c5791764d8 Make the i18n T function use std::string_view
Buildfixes, crashfixes

One more

Android buildfix

Buildfix Qt
2024-02-12 18:44:39 +01:00
Unknown W. Brackets fcc1abc7c3 Dialog: Update by button flag consistently.
Always check for the flag to change in Update().
2023-02-08 19:02:37 -08:00
Henrik Rydgård 21647cd3c1 Blind workaround for Shining Ark circle button problem
Seems the game might not handle the case of confirm button being set to
cross properly, so force it to circle if this game is running.

Fixes #15663 (hopefully..)
2022-11-27 23:32:43 +01:00
Henrik Rydgård c9048c3748 Shrink the DeferredDrawcall struct, because why not. Assorted cleanup 2022-09-01 11:59:33 +02:00
Henrik Rydgård 70b9dcc9a3 Initialize a bunch of Dialog structs 2022-08-18 16:46:22 +02:00
Unknown W. Brackets 2479d52202 Global: Reduce includes of common headers.
In many places, string, map, or Common.h were included but not needed.
2022-01-30 16:35:33 -08:00
Unknown W. Brackets 429b4594d0 Dialog: Use a thread to init dialogs too. 2021-04-07 18:13:46 -07:00
Unknown W. Brackets 88fe2e9863 Dialog: Use dialog type header more consistently. 2021-02-27 13:43:12 -08:00
Unknown W. Brackets 52c5f4bf95 Dialog: Respect accessThread priority on shutdown.
This influences shutdown timing.
2021-02-27 13:15:12 -08:00
Unknown W. Brackets aa13f5afb7 Dialog: Track type id on dialog class. 2021-02-27 12:01:52 -08:00
Unknown W. Brackets 2a9dde684d Dialog: Unlock volatile without Update call.
Crisis Core depends on this unlocking, likely it should really be on a
thread.
2021-02-16 19:15:09 -08:00
Unknown W. Brackets e42dac2fb4 Dialog: Simulate volatile memory lock behavior.
Also simply clear to zero, which isn't exactly correct but should be
fairly close.  See #8288 (NBA Live 08 hang.)
2021-01-18 11:07:21 -08:00
Unknown W. Brackets 8bd32b6009 Dialog: Manage status only through accessors. 2021-01-18 10:46:57 -08:00
Unknown W. Brackets 4573907098 Savedata: Prevent garbage bleeding into save icons.
This pads out the icon data and also fixes a potential buffer overflow
during image data copy.
2021-01-03 16:26:31 -08:00
Henrik Rydgård 0e3a84b4a8 Move most GPU things to Common.
It works after the move, on Windows and Android at least.

Deletes the D3DX9 shader compiler loader, which was not used.
2020-10-04 23:39:02 +02:00
Unknown W. Brackets 143ba22097 PPGe: Handle text shadows more consistently.
Don't really want them wrapping differently or etc.  Let's handle
centrally so we can make them consistent and better.
2020-07-13 18:20:57 -07:00
Henrik Rydgård 45d94c4877 Switch all images to dynamic lookup in the atlas by string ID.
SLN fix

It works, but with the wrong images and the wrong characters!

Fix another bug in atlastool's binary output

Get Android building again.

Oops, didn't mean to disable this permanently.

Error checking

Minor cleanup

Gotta tweak my git ignores...

Regenerate metadata
2020-03-01 12:06:47 +01:00
Henrik Rydgård 6a1fa728d8 Remove Globals.h 2017-08-31 17:15:22 +02:00
sum2012 e5001a115f Implemented sceUtilityGetSystemParamInt 2017-06-06 19:05:59 +02:00
sum2012 8c33284901 Fix sceUtilityScreenshotUpdate
Fix "After the developer/publisher screen and the age warning only a
black screen."
2014-03-30 09:29:11 +08:00
Unknown W. Brackets 996fa39684 Reduce some unnecessary includes in Core/. 2014-03-15 10:41:07 -07:00
lioncash b9886942a7 Fix some vertical alignments in misc Core source files. 2014-03-03 11:16:53 -05:00
Unknown W. Brackets e30e8937c1 Make it possible to override dialog fade out.
Useful to show multiple osk dialogs.  Not sure if any game actually uses
this feature...
2014-02-08 17:44:14 -08:00
Unknown W. Brackets 67b1aee1f8 Use a time delay to change sceUtility statuses.
This is probably more based on IO (maybe even loading and unloading
the module for the dialog or something?) but time should approximate it.

May improve games not expecting the status to switch right away.
2014-02-08 09:39:50 -08:00
Unknown W. Brackets 77acd0729f Use the latch in dialogs throughout.
This makes it so that rapid fire works for them as well.
2014-02-02 15:48:29 -08:00
Unknown W. Brackets 05ad9721d9 Allow msgdialog override of ok/cancel button text.
Per tests, and hints from JPCSP.
2014-01-23 01:02:41 -08:00
Henrik Rydgård 00c32ddadb Mostly get rid of including "Globals.h" 2013-12-30 10:17:11 +01:00
The Dax 92ab821f14 Allow the OSK text input buttons to be held and thus repeat. 2013-12-14 18:18:18 -05:00
The Dax 814a81b692 Allow held directional buttons to scroll up and down the list repeatedly. 2013-12-08 20:33:16 -05:00
Henrik Rydgard 1ec0a977e4 Fix too-slow fade in/out of save dialogs and others in 30hz games. 2013-10-16 18:54:40 +02:00
Unknown W. Brackets 0b5bdeb1d3 Fix some compile failures under big endian. 2013-07-28 21:04:17 -07:00
Unknown W. Brackets 777074cfe1 Switch to _le memory layout specs in dialogs. 2013-07-27 15:30:18 -07:00
aquanull b5440ecb65 Unify some common elements of dialogs. 2013-06-10 21:24:49 +08:00
aquanull 3c140106be Auto-height the "borders" of the message text area.
More dialog tweaks.
2013-06-10 21:24:48 +08:00
Unknown W. Brackets 7d17ed8a8e Correctly shutdown dialogs on game reset. 2013-05-31 01:41:04 -07:00
Unknown W. Brackets f8d726c5ea Validate OSK struct size and don't do copying.
The PSP itself only allows the correct size struct.
2013-04-20 15:03:32 -07:00
Unknown W. Brackets 8aeaedc597 Don't allow sceUtility dialogs to overlap.
PSP doesn't allow this, and apparently some games depend on it
or else they start getting confused.
2013-03-30 22:48:17 -07:00
Unknown W. Brackets 2a6457b6ab Cut down on h files including PointerWrap.
This makes changes to it a bit faster to build.
2013-02-04 08:26:59 -08:00
Xele02 1f4f5eaf9a Add fade in / out on dialog to allow time for the user to release
button.
2013-01-19 00:46:05 +01:00
Unknown W. Brackets fd2f609367 Save the savedata and other dialog state.
Although, hopefully it wouldn't be running anyway.
2012-12-28 13:55:31 -08:00
Unknown W. Brackets f8f581794f Make sure sceUtility funcs all return error codes.
Right now, everything is 0, but before it wasn't returning anything.
Returning 0 actually made some games start working right.
2012-12-25 01:07:04 -08:00
TMaul 0414b072a4 Display OSK message
And some cleanup
2012-12-15 17:13:58 +00:00