Commit Graph
30 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 1772448638 HLE: Don't delay results in an interrupt handler
hleDelayResult and Sas's delay put the wait on whatever thread was
current, which in an interrupt handler is the idle thread it runs on.
With both idle threads waiting there's nothing left to schedule, the
same crash as sceDisplaySetMode in Gods Eater Burst's vblank handler.

Where pspautotests intr/delays shows what hardware returns there,
match it: sceIoOpen and __sceSasCore fail with ILLEGAL_CONTEXT,
sceMpegCreate with 80618008, and sceAtracReinit can deinit but not set
up the codec (807f00fd).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 15:49:26 -06:00
Henrik RydgårdandClaude Opus 5.5 c162eb3d74 sceAudiocodec: Match hardware setup, framing, errors and timing; fix Atrac3 polarity
Checked against pspautotests audio/audiocodec, recorded on a PSP.

- Atrac3+: at3Related selects headered (mpeg.prx) or raw (libatrac3plus)
  frames, instead of sniffing for the sync word. The header's size field
  is 10 bits, as the context's. Header errors 0x211/0x213, bad frames
  0x20a, all returning SCE_AVCODEC_ERROR_INVALID_DATA with nothing read.
- The first successfully decoded Atrac3+ frame, and the first two AAC
  frames, produce no output. Checked sample-for-sample against hardware.
- Atrac3: the parameter at 0x28 selects the frame layout, as
  libatrac3plus.prx's table maps it. We used to read its low bit as a
  joint-stereo flag, which decoded mono (0x0F) streams as stereo garbage.
  AtracCtx2 had the table's fields swapped the same way.
- at3_standalone's Atrac3 output was inverted relative to the PSP's
  (sceAtrac too). Negate the IMDCT scale.
- CheckNeedMem sizes (AAC is 0x658c), codec 0x1004/0x1005, Init
  validation (AAC sample rate, Atrac3 parameter, Atrac3+ channels), and
  ReleaseEDRAM clearing edramAddr.
- Every call that reaches the ME now blocks for its measured time, and
  decode time is modelled per codec and frame size.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:57:41 -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ård a591fbff38 Move two more error codes to the enum 2026-01-08 22:02:08 +01:00
Henrik Rydgård cfba17b6e6 Correct error codes from sceUtilityLoadAvModule / UnloadAvModule.
Fixes #20775
2025-09-04 15:18:15 +02:00
Henrik Rydgård a08b6c1340 More error code cleanup 2025-08-06 17:44:54 +02:00
Henrik Rydgård 3e2dce1e54 Move AdHoc error codes to the big enum, fix the naming convention to be consistent 2025-08-06 17:44:54 +02:00
Henrik Rydgård 4d7b51d8cb Reimplement AA3 header parsing 2025-07-22 17:48:20 +02:00
Henrik Rydgård b34f34ebde Move some more error codes to the big enum 2025-04-07 22:25:36 +02:00
Henrik Rydgård 89c0b5f20b sceNetResolver: Move error codes to enum, modernize logging 2025-04-07 22:16:32 +02:00
Henrik Rydgård 291e5ef1c6 Move sceMp3 error codes to the big enum 2025-04-03 21:15:09 +02:00
Henrik Rydgård 3b86539632 Fixed the dumper, so now it's complete. More games work. 2025-04-03 15:31:30 +02:00
Henrik Rydgård a555fe8924 Partially implement sceReg 2025-04-03 14:13:50 +02:00
Henrik Rydgård 77e1c9dd69 Work on audiocodec 2025-04-02 13:30:34 +02:00
Henrik Rydgård 1bd5cffa1d Initial work on re-implementing atrac-through-sas 2025-03-25 22:01:30 +01:00
Henrik Rydgård 4b123a2e09 Move the sceSas error codes into the big enum 2025-03-25 12:04:33 +01:00
Henrik Rydgård 63c4b2e9b3 Move SSL error codes to the big enumt 2025-03-21 20:45:23 +01:00
Henrik Rydgård 0f840e6240 Move JPEG error codes to the big enum, some include cleanup 2025-03-21 20:44:46 +01:00
Henrik Rydgård 999bf59ae1 Move mutex error codes into the big enum 2025-03-21 20:44:46 +01:00
Henrik Rydgård 82728652d8 Move Font and Psmf error codes to the big enum 2025-03-21 20:44:46 +01:00
Henrik Rydgård ea198dd593 Add mpeg error codes to the big enum 2025-03-21 20:44:46 +01:00
Henrik Rydgård b99348383c Some new findings, loop work 2025-03-18 09:36:33 +01:00
Henrik Rydgård af8d14c546 Buildfix 2025-03-08 23:56:01 +01:00
Henrik Rydgård 5ac7b8b9ee Rename the Atrac errors to match the pattern 2025-02-24 12:49:44 -06:00
Henrik Rydgård 59a4eb0ea5 Add Atrac error codes to the big enum 2025-02-24 12:07:21 -06:00
Henrik Rydgård d1e5b45b4b Consolidate the last spread-out error codes. 2025-02-04 12:34:49 -06:00
Henrik Rydgård d2c1c7b54f Consolidate even more error codes 2025-02-04 12:32:11 -06:00
Henrik Rydgård a18eb97be3 Consolidate more error codes into the big enum 2025-02-04 12:11:22 -06:00
Henrik Rydgård 34169cdb8e More error code consolidation 2025-02-04 11:53:22 -06:00
Henrik Rydgård b2b0ff1753 Consolidate error codes in ErrorCodes.h 2025-02-04 11:53:00 -06:00