Henrik Rydgård and Claude Opus 5.5
b9ea98d2c5
Atrac3: Set up the decoder the way libatrac3plus does
...
libatrac3plus picks the codec parameter from the frame size and the
header's joint stereo flag, and the channel count plays no part. We
guessed joint stereo from the frame size and channel count instead, so
LocoRoco 2's MuiMui house music never started: the game writes a 2-channel
normal-stereo header for every track it streams, and that 0xC0 track holds
one mono sound unit per frame. Taken as joint stereo, its first frame failed
during setup, and the game retried forever.
Now the joint stereo flag comes from the track header, and the decoder's
channel count from the parameter it maps to, so that track decodes as mono
into both output channels, as on hardware. Low-level decoding, which has
no header, still goes by the frame size. Atrac2 saves the flag; older
states fall back to the guess.
Fixes #8647 .
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-29 17:14:00 -06:00
Henrik Rydgård
4d7b51d8cb
Reimplement AA3 header parsing
2025-07-22 17:48:20 +02:00
Henrik Rydgård
5c77ff9147
Atrac: Rework the header dependencies
2025-06-25 11:34:07 +02:00
Henrik Rydgård
6df9e513c1
Logging, comments and debugger fixes, plus simple dumping of the first block of streaming Atrac3
2025-06-25 01:08:47 +02:00
Henrik Rydgård
ea29fd284f
sceAtrac: Logging improvements, constification (and not)
2025-06-24 21:36:04 +02:00
Henrik Rydgård
e5d00ce493
Fix startup on Android, oops
...
Forgot that we can't create android-compatible threads in global
constructors, for JNI reasons.
2025-03-27 01:58:53 +01:00
Henrik Rydgård
172e54286e
Refactor a bit to make it easier to expose the streaming state to the debugger.
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
44bb7a1ac5
Buildfix, minor savestate fix
2025-03-21 20:45:12 +01:00
Henrik Rydgård
ec169e9fa9
Sol Trigger fix
2025-03-19 11:41:13 +01:00
Henrik Rydgård
da2b3fdd13
Warning fixes. Don't clamp readsize to reported file size.
2025-03-19 10:42:32 +01:00
Henrik Rydgård
6d7625ea6b
Implement save state support, with backwards compatibility.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
89a73be155
Compute the joint-stereo flag as needed instead of storing it.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
01076d2a4f
InitLowLevel parameter cleanup
2025-03-18 09:36:33 +01:00
Henrik Rydgård
4a4332b22e
Remove hack where we snuck AtracID into the contexts. Not suppose to be there.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
34c21ed271
track_ removal, part 2 - done!
2025-03-18 09:36:33 +01:00
Henrik Rydgård
02f06faad1
Atrac2 track_ removal, part 1
2025-03-18 09:36:33 +01:00
Henrik Rydgård
4379c1ad49
Rebase fixups
2025-03-18 09:36:33 +01:00
Henrik Rydgård
bb436cda8f
Reimplement a lot of logic, implement loop streaming properly
2025-03-18 09:36:33 +01:00
Henrik Rydgård
9cc7bab3a5
Implement the simplest looping case (fully loaded audio)
2025-03-18 09:36:33 +01:00
Henrik Rydgård
92737be87e
Minor simplification
2025-03-18 09:36:33 +01:00
Henrik Rydgård
f4fe91beae
Remove unnecessary state variable, fix reset-seeks to fractional positions
2025-03-18 09:36:33 +01:00
Henrik Rydgård
da27e2a93f
Fix seeking to offsets other than 0 in a couple of the modes
2025-03-18 09:36:33 +01:00
Henrik Rydgård
8b02766702
Some cleanup and refactor.
2025-03-18 09:36:33 +01:00
Henrik Rydgård
36fdb09056
Break apart the SetData function
2025-03-18 09:36:33 +01:00
Henrik Rydgård
8f66ebde90
Shuffle things around a bit
2025-03-18 09:36:33 +01:00
Henrik Rydgård
bab09ea30a
Implement sceAtracGetInternalError
2025-03-18 09:36:33 +01:00
Henrik Rydgård
54acb07ded
ImDebugger: Add more atrac information
2025-03-18 09:36:32 +01:00
Henrik Rydgård
7a4d175e06
Port over some utility functions, fix bugs.
2025-03-18 09:36:32 +01:00
Henrik Rydgård
9c02eab137
More work - start work on handling buffer wraparound properly. Passes the full test with 1 wraparound!
2025-03-18 09:36:32 +01:00
Henrik Rydgård
724fc1dd95
Work on the new implementation.
2025-03-18 09:36:32 +01:00
Henrik Rydgård
818e7a99bd
minor refactor
2025-03-17 11:02:59 +01:00
Henrik Rydgård
63c997b973
Fix an ordering issue in Atrac context creation
2025-03-16 22:46:44 +01:00
Henrik Rydgård
b7782d98f3
Prepare for Atrac context data to work the new way. Not actually active yet. Also restrict old versions to 4 contexts.
2025-03-16 19:32:03 +01:00
Henrik Rydgård
4fbdb58beb
Merge the "Analyze" function into SetData
2025-03-16 19:32:00 +01:00
Henrik Rydgård
3979b6af54
Combine the two Analyze functions
2025-03-16 12:59:32 +01:00
Henrik Rydgård
8ab41e387e
Reorganize to make the next step easier
2025-03-16 12:21:55 +01:00
Henrik Rydgård
bcf89754c7
First step: Split out the track analysis.
2025-03-16 12:21:55 +01:00
Henrik Rydgård
3d143a0cba
Finally get rid of the GetTrack() accessor
2025-03-16 11:29:00 +01:00
Henrik Rydgård
a3b43d8283
Refactor CurrentSample and ResetPlayPosition
2025-03-16 11:18:33 +01:00
Henrik Rydgård
fd9564166b
More GetTrack removal
2025-03-16 11:06:52 +01:00
Henrik Rydgård
beaced1c87
Move loop status and reset info param validation in behind the AtracBase interface
2025-03-16 09:48:13 +01:00
Henrik Rydgård
9788a770a7
Add a DecodeLowLevel wrapper to the AtracBase interface
2025-03-16 09:47:36 +01:00
Henrik Rydgård
c33a86561f
Remove the strange "successCode" argument to SetData
2025-03-16 09:00:27 +01:00
Henrik Rydgård
5b625bfd3e
Share GetSecondBufferInfo between implementations
2024-04-16 23:07:03 +02:00
Henrik Rydgård
f05f9a6de3
Code cleanup and comments
2024-04-16 22:54:53 +02:00
Henrik Rydgård
f3d6c93339
Add empty AtracCtx2 implementation, and a dev setting to select it. Savestates don't work.
2024-04-15 13:50:16 +02:00