Commit Graph
189 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 db071361b0 Savestate: Wait for the SAS and IO threads before touching memory
Both drained only in their own DoState, after memory and Atrac contexts
had already been replaced under a mix or read still in flight. Also fix
sceUmd loading umdActivated into the wrong variable, and count each save
once in saveStateGeneration (it also bumped in the measuring pass).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:34:05 -06:00
Henrik RydgårdandClaude Opus 5.5 b39cf47124 Charge measured SAS mix time, and share the Media Engine between its jobs
The SAS mix estimate was a guess capped at 1200us. Measured on a PSP
(pspautotests audio/timing/sastiming), a mix costs 110us plus 0.49us per grain
sample, plus per voice and sample 0.445us + 0.0675us per unit of pitch ratio
(VAG; PCM and noise slightly less), plus 0.64us per sample with a reverb type
set. Linear to 1% across 64-2048 samples and 0-32 voices: 32 VAG voices at 512
samples take 8.7ms, not 1.2.

The mix runs on the Media Engine, as do video and audio decoding, so they now
queue behind each other there (MEScheduleJob). A game that keeps SAS running
during a movie - Star Wars: Lethal Alliance - decodes more slowly for it, like
on hardware.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 17:33:33 -06:00
Henrik Rydgård 5402579a44 sceSas: correct the reverb presets
The reverb presets came from nocash's PS1 table. Six of the nine are
identical on the PSP, but three are not.

Also correct our linear interpolation expression: we were close but
our formula can produce an off by 1 at times.
2026-09-09 10:48:53 -06:00
Henrik Rydgård 90d8be9348 sceSasSetGrain/SasReverb: validate grain size and reverb preset index
sceSasSetGrain took no validation at all, unlike sceSasInit's grain
size check - a bad value could both throw on SasInstance::SetGrainSize's
allocation and, for a moderately large but successfully-allocated
value beyond PSP_SAS_MAX_GRAIN, read out of bounds of the fixed-size
mixTemp_ buffer during mixing. Apply the same bounds sceSasInit uses.

SasReverb::SetPreset() only checked the upper bound of `preset` before
indexing presets[], not the lower bound (-1 means "off"). The only
live HLE entry point (sceSasRevType) already clamps to [-1, 8], but
DoState() passes a savestate-deserialized value straight through with
no revalidation, so a corrupted/malicious savestate could index
presets[] negatively.
2026-08-12 09:43:23 +02:00
Henrik Rydgård 0596ee97f6 More memory access cleanup 2026-08-11 20:14:01 +02:00
Henrik Rydgård 3c81d6b121 More manual Read_U32 cleanup
Buildfix
2026-08-11 10:28:36 +02:00
Henrik Rydgård bdd72c08f3 Fix dirtying caused by clip flag state. This could probably be a bit smarter. 2026-05-30 21:47:21 +02:00
Henrik Rydgård a721a0b6dd Minor refactor 2025-06-16 18:29:38 +02:00
Henrik Rydgård 3ccbebb27a SasAudio: Don't reset the decoder on SetVoice if all params are the same
Should fix #20507
2025-06-12 13:07:17 +02:00
Henrik Rydgård 9bb00ca87d Minor cleanup in sceSas 2025-04-30 15:53:55 +02:00
Henrik Rydgård 3c4566717c Add muting flag to sceSasAudio as well. 2025-04-12 11:35:55 +02:00
Henrik Rydgård 3d8233b7f8 Some sceAudiocodec MP3 work. Not yet working in Beats (trying to DisableHLE of sceMp3). 2025-04-07 10:27:53 +02:00
Henrik Rydgård 4e25f44eef Rename some module-related functions to include HLE where appropriate 2025-03-31 11:17:50 +02:00
Henrik Rydgård 96ca0e95f3 Cleanup logging 2025-03-25 22:01:33 +01:00
Henrik Rydgård 5ea7729f66 More work on atrac-through-sas 2025-03-25 22:01:33 +01: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 0f840e6240 Move JPEG error codes to the big enum, some include cleanup 2025-03-21 20:44:46 +01:00
Henrik Rydgård 4325ec945b Add new sas integration unit test 2025-03-19 12:14:29 +01:00
Henrik Rydgård ad2791a9cf More HLE logging cleanup 2025-03-05 17:02:46 +01:00
Henrik Rydgård 47ef0e9b6e More logging refactoring 2025-03-05 17:02:46 +01:00
Henrik Rydgård 34308a326c Add basic sceSas state viewer to debugger 2025-02-19 10:50:32 -06:00
Henrik Rydgård 28b2c7f540 HLE log rename part 1: Remove duplicate log functions. Return type should be determined by metadata. 2025-01-29 09:45:39 +01:00
Henrik Rydgård e8be4bbaae Improve code generation for HLE debug logging
Should shrink code size a bit, not expecting much performance change.

This avoids emitting a DoLog call when MAX_LOGLEVEL excludes the log statement,
just like for regular logs.
2025-01-28 17:04:20 +01:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 61af237f98 Check v.on for whether to trigger v.playing, like before. 2023-09-06 15:46:07 +02:00
Henrik Rydgård 8b32a1e5e2 Remove the weird ChangedParams thing entirely and do the straightforward thing 2023-09-06 14:52:57 +02:00
Henrik Rydgård 1ee4c63bba Logging: __sceCore isn't very interesting, log as verbose 2023-09-06 11:25:19 +02:00
Henrik Rydgård 3b6989bff7 Hook up progress bar, minor fixes 2023-06-26 10:01:41 +02:00
Unknown W. Brackets 92585403c4 Sas: Make ADSR fields private. 2023-01-14 16:55:40 -08:00
Henrik Rydgård f4a6d291e1 Common: Capitalize setCurrentThreadName(). 2021-04-30 23:02:36 -07:00
Henrik Rydgård 93fd62f54b Merge pull request #13832 from unknownbrackets/events
SaveState: Make event restoring more obvious
2021-02-15 23:39:42 +01:00
Unknown W. Brackets c99de6409d Sas: Minor clenaup. 2021-02-06 18:37:05 -08:00
Unknown W. Brackets 06f8ab5a49 SaveState: Make event restoring more obvious.
We still must restore all events, but everything can be taken care of
during the save state load.
2020-12-28 13:29:19 -08:00
Henrik Rydgård 821817e6d4 Move the profiler to Common 2020-10-04 11:42:16 +02:00
Henrik Rydgård 15382d5f94 Move threading utils from native to Common 2020-10-01 09:27:25 +02:00
Henrik Rydgård 3162f30158 Merge base/basictypes.h into Common/Common.h (mostly). 2020-09-29 15:51:51 +02:00
Unknown W. Brackets b8342fb8ec SaveState: Rename ChunkFile files to Serialize.
Makes more sense and less weird than ChunkFileDoMap, etc.
2020-08-10 08:04:05 +00:00
Unknown W. Brackets 4b4e3432cd SaveState: Split Do() into a separate header. 2020-08-10 08:03:41 +00:00
Henrik Rydgård 2eaa1db046 Vulkan: Track down another one of those minor resource leaks.
Also no need to zero, queue for delete does it already.
2020-03-09 00:48:00 +01:00
Henrik Rydgård 4f1e0de9a9 Add missing includes. Remove some more unnecessary #ifdef _DEBUG checks - the debugger is supposed to work in release mode too. 2017-12-20 11:24:05 +01:00
Henrik Rydgard 26a2d42731 Big mutex overhaul - remove our custom ones, make them non-recursive where possible 2017-02-28 11:40:29 +01:00
Henrik Rydgard 50be4e72b2 Get rid of our own silly reimplementation of std::thread 2017-02-27 20:51:36 +01:00
Florent Castelli e0ff68b3f6 c++11: Remove compat header base/functional.h
We want a proper C++11, not tr1. We don't target those compilers anyway.
2016-10-12 11:32:45 +02:00
Unknown W. Brackets 666f1898c6 Fix crash loading old savestates.
Oops.  Forgot that this could be saved as -1 when loading an old
savestate, and then resaving it.

Fixes #8531.
2016-01-30 21:39:25 -08:00
Unknown W. Brackets f759a2a3fd Sas: Sync result when mix calling thread returns. 2015-11-25 18:44:43 -08:00
Unknown W. Brackets 546590106f Sas: Fail to mix when dispatch disabled. 2015-11-25 18:44:42 -08:00
Unknown W. Brackets 23441d12fb Sas: Estimate time taken for mixing.
Tests seem to show it's not affected by mhz.
2015-11-25 18:44:34 -08:00
Unknown W. Brackets 5a6c8b513c Sas: Drain thread before reading/writing SAS state.
This should be the safest option, but I'm pretty sure some operations give
a BUSY operation or have different behavior, actually.
2015-11-25 18:44:32 -08:00
Unknown W. Brackets fc8acc781e Sas: Add config for SAS thread. 2015-11-25 18:44:31 -08:00