mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
7 lines
1.8 KiB
Markdown
7 lines
1.8 KiB
Markdown
# libSceNgs2 technical debt
|
|
|
|
### Unknown function info
|
|
|
|
- [sceNgs2FftQuerySize](../../../core/libs/prx/libSceNgs2/PendingExports.cpp) (libSceNgs2) - implemented in `libSceNgs2.native/src/System.cpp` from the firmware 11.00 module at `0x430`, whose table is at `0x30b30`: lengths 8..12 select 64, 128, 256, 512 and 1024 samples from the entry at offset 4, bit 1 of the flags halves the count, and the work size is `32 * count + 64`. `-1` for a length outside 8..12 is the module's own return; `-1` for a null output is this implementation's guard, since the module writes through the pointer after validating only the length. [sceNgs2FftInit and sceNgs2FftProcess](../../../core/libs/prx/libSceNgs2/PendingExports.cpp) still throw: the 7.3 KB AVX radix-8 kernel and its packed input/output layout are not recovered, and no dump imports these NIDs.
|
|
- [sceNgs2ParseWaveformUser, sceNgs2SystemEnumHandles, sceNgs2SystemEnumRackHandles](../../../core/libs/prx/libSceNgs2/PendingExports.cpp) (libSceNgs2) - implemented in `libSceNgs2.native/src/System.cpp` from the firmware 11.00 module at `0x10810`, `0xf270` and `0xf0d0`. `sceNgs2ParseWaveformUser` passes a type-2 read descriptor to the module helper at `0xfac0`, which calls the handler as `handler(user_data, offset, data, size)` and expects an `int32_t`; in the module a negative return becomes `0x804A0408`, as does a null handler, and a null output becomes `0x804A0053`. The 256 MiB RIFF cap, which returns `SCE_NGS2_ERROR_INVALID_WAVEFORM_DATA`, and buffering the whole RIFF body after the 12-byte header are this implementation's safety choices, not measured on a console. The enumerators return the count of live systems or racks and fill up to the requested count; a null output with a nonzero count returns `0x804A0053` and an unknown system `0x804A0230`. No dump imports these NIDs.
|