Files

1.8 KiB

libSceNgs2 technical debt

Unknown function info

  • sceNgs2FftQuerySize (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 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 (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.