Pouare514
5099184d4d
feat(prx): fmodstudio unknown NIDs throw via NotImplemented
...
Convert 5 remaining pure stubs (log + return 0) to throwing with
literal NID, keep trailing return 0. Real SDL/state-tracking impls
(20 studio + 2 libfmod + C++ classes) untouched. Remove stale
logging-stub comments only around touched stubs.
Throwing: Cm2cmtCv8cA, EfM9xXvBmxk, Js90KQXVS4s, oCYWES02VPc, vVwA2cZA5e4
2026-09-27 16:10:41 +02:00
Pouare514
030e62dfa3
feat(prx): fmod real audio output via SDL + identify 22/27 NIDs
...
- libfmod: route createSound (OPENMEMORY WAV/RAW, file placeholder sine)
+ playSound + update() mixer pump into SDL queue (48k stereo F32,
mirrors libSceAudioOut). Channel::setVolume/isPlaying/position now
track real PCM cursor with loop support. Silent fallback via
ANYPS5_FMOD_SILENT=1, NOSOUND output, or SDL open failure.
Link SDL2-static like libSceAudioOut.
- NIDs: recompute from public FMOD headers (fmod.h/hpp + fmod_studio
2.0) with exact Itanium manglings (g++ nm) + SHA1+suffix
(NidCompute.cpp). Identify 2/2 libfmod (setFileSystem, setCallback)
+ 20/25 studio (const createInstance, getEvent, getCoreSystem,
getSoundInfo, etc.). Replace stubs with ABI-compatible real
impls; 5 studio remain unknown (Cm2cmtCv8cA, EfM9xXvBmxk,
Js90KQXVS4s, oCYWES02VPc, vVwA2cZA5e4).
- Tests: coverage OK (51+42 Legends NIDs, missing 0), audio smoke
(WAV 4800f + RAW 2048f, volume, channelsPlaying, stop) OK real
and silent.
2026-09-27 13:24:34 +02:00