Only one custom music track plays in NHL Legacy
Quick summary
In NHL Legacy custom music plays only briefly at the start of a match, then
becomes permanently silent. Investigation of the log shows this is not a
decode failure — cellMusicDecode HLE implementation appears to decode the
entire MP3 file at maximum CPU speed instead of at playback rate, causing
the game to receive status=1 (decode finished) prematurely and issue
SetDecodeCommand2(STOP) before the audio has actually been heard.
Reproduction steps
- Place a custom MP3 in
dev_hdd0/music/<folder>/ - Boot NHL Legacy, configure custom music in EA Trax Manager
- Start a match
Observed behavior (from log)
Music Decode Thread decoder timestamps:
- At wall-clock
0:02:00.262decoder starts onmix.mp3 - At wall-clock
0:02:05.654(5.4 seconds later) decoder logstimestamp_us=14148034560— i.e. ~3 hours 55 minutes of audio decoded - Decoder then logs
waiting until track is consumed...
Game-side reaction:
- At
0:03:14.148game callscellMusicDecodeGetDecodeStatus2→ returnsstatus=1 - Immediately after, game calls
cellMusicDecodeSetDecodeCommand2(0x0)(STOP) - Decoder logs
finished playlist - 36 seconds later,
EAAudioCore Dacthread begins callingcellMusicDecodeRead2to consume buffered audio — every call fails withCELL_MUSIC_DECODE_ERROR_NO_LPCM_DATA(8000+ occurrences in the log) - No further
SetDecodeCommand2(START)is issued — music is silent for the rest of the session
Expected behavior
cellMusicDecode should produce decoded PCM data at approximately the
playback rate of the source, not at maximum CPU speed. status=1 should
arrive only when the actual audio content has been delivered to the game,
not when the source file has been fully read from disk and decoded into a
buffer. This matches the real PS3 behavior where decoding and playback
are tied to the audio hardware clock.
System configuration
- RPCS3 build: 0.0.40-19381-2613d7ee Alpha
- OS: Windows
- Game: NHL Legacy Edition [serial — подставь свой, BLUS31418 или BLES02220]
- Custom music: single MP3 file, ~4 hours, re-encoded via
ffmpeg -map_metadata -1 -id3v2_version 3 -c:a libmp3lame -b:a 192k -ar 44100 -ac 2
Attachments
Full log: RPCS3.log.gz (attached) Filtered music_lines.txt (attached) showing the complete cellMusicDecode call sequence including the race between Music Decode Thread and EAAudioCore Dac thread.
Related
This may be related to but is distinct from #12309 (which describes decode-level LPCM failures). In the present issue, the decoder works correctly — the failure mode is the racing between decoder output speed and game-side playback consumption.
Source: RPCS3/rpcs3