Внимание: числа в VAG хранятся в формате big endian!
Файл начинается с заголовка размером 48 байт:
0x00 - 4 «волшебных» байта «VAGp»
0x04 - версия (4-байтное слово) - 3 или 32
0x08 - 4 зарезервированных байта
0x0C - размер звуковых данных в байтах (4-байтное слово)
0x10 - частота дискретизации в герцах (4-байтное слово)
0x14 - 12 зарезервированных байт
0x20 -
ASCII-имя звука (16 байт).
Дальше идут данные ADPCM, которые хранятся блоками по 16 байт. Структура блока следующая:
1 байт (uint8) - параметры декодирования (shift factor и фильтр)
1 байт (uint8) - флаги управления воспроизведением: 3 = блок завершает цикл, 6 = блок начинает цикл, 7 = блок завершает воспроизведение
14 байт (28 сэмплов) - звуковые данные блока.
Декодировать ADPCM программно не нужно, SPU делает это аппаратно.