Commit Graph
26 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 9e69c1f9aa Savedata: Keep the IO thread out of the dialog's state
Replaces the temporary fix that did the hidden modes' IO inside Update.

The IO thread read and wrote the dialog's request, display state and save
list, all shared with the emulator thread, which kept using them to draw the
dialog and reload the request from the game.

Now the IO thread works on its own copy of the request, its own SavedataParam
and directory names resolved up front, and shares nothing else with the
emulator thread but the (locked) file system, MemoryStick_FreeSpace's cached
use and sceChnnlsv's scratch buffer and kirk state, the last two now under
locks too. It still reads and writes the game's buffers directly, like a PSP's
utility threads and sceIoReadAsync do, so a savestate waits for it before it
saves or loads memory. Save
bookkeeping, the save indicator and display changes happen on the emulator
thread when the results are taken, and only the request fields the IO changed
are copied back, so a game's own edits in the meantime survive.

Hidden modes take the results at the next Update (or, with Host IO timing,
the first Update that finds them done). The visible dialogs keep drawing and
take them once the IO is done; save and load used to stall the emulator
thread for the whole operation. Savestates keep results that haven't been
taken yet.

When the results land in PSP memory doesn't matter to games, so
utility/savedata/filelist now only prints them once the utility has finished.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 12:50:39 -06:00
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) <noreply@anthropic.com>
2026-09-25 12:50:23 -06:00
Henrik RydgårdandClaude Opus 5.5 20970d5fad Dialog: Follow the firmware's thread priorities in init/shutdown
On a PSP, dialog init and shutdown happen partly at the accessThread
priority and partly at the graphicsThread priority, one phase after the
other. Model that with one helper thread that switches priority per phase,
and let starting it reschedule normally instead of disabling interrupts.

A caller with worse priority than both now sees shutdown complete inside
ShutdownStart, as on hardware. NFL Street 3 (graphics 17, access 19,
caller 111) calls the next InitStart right after ShutdownStart and used to
loop forever on 'A save request is already running' (#19957). The utility
pspautotests, where the caller has better priority, are unchanged.

Also logs the dialog thread priorities at debug level.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 19:25:24 -06:00
Henrik Rydgård 198d86a9b1 Move the PSP system language logic into sceUtility. 2025-11-04 11:48:47 +01:00
Henrik Rydgård adbceabd93 Show fake-loaded HLE modules in the debugger. Notify Atrac of its address when one is loaded
Will be useful later.
2025-03-15 15:56:11 +01:00
Henrik Rydgård 34169cdb8e More error code consolidation 2025-02-04 11:53:22 -06:00
AdamN 98dba643f4 Just the sceUtility changes from ANR2ME's branch 2025-01-06 14:38:45 +01:00
ANR2ME dcf3ece8f4 Implement NP Signin Dialog (faked signin) 2022-08-04 16:12:25 +07: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 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
lioncash b9886942a7 Fix some vertical alignments in misc Core source files. 2014-03-03 11:16:53 -05:00
Henrik Rydgard 9bde25dfa9 Moving the lang mapping to Config clears up some obcure file-to-file build dependency.
Should fix the build.
2014-01-03 19:04:43 +01:00
Henrik Rydgård ce378b231f Delete CPU.cpp/h , cleanup 2013-12-30 00:11:29 +01:00
The Dax a15ba1322d Move GetLangValuesMapping out of MiscScreens.cpp so it can be used globally. 2013-09-25 21:06:58 -04:00
Unknown W. Brackets b264915d28 Correct sceUtilityGetSystemParamString() per tests. 2013-04-20 09:37:47 -07:00
CrazyMax 61a7c821d2 add save/load PSP parameters from ini file; 2013-04-19 21:59:24 +03: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
raven02 4d1903f50c Set time format in config 2013-01-21 21:35:31 +08:00
Xele02 ccdc0b77c1 Set the PSP language in the config file 2013-01-20 10:50: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 d378b1c324 Deallocate properly in shutdown, not in init. 2012-12-24 01:41:15 -08:00
Henrik Rydgard 64cc573703 Switch to "GPL 2.0 or later" for various reasons. I wrote most of the code I imported from Dolphin (which is GPL2-but-not-later), so it should be OK. 2012-11-04 23:24:00 +01:00
Henrik Rydgard 4f7ad15758 Add snapshot of the whole source code. 2012-11-01 16:19:01 +01:00