Существуют как обычные PSG, так и расширенные EPSG. Кроме того, существуют
PSG2-файлы, аналогичные ZX50-файлам.

PSG

Данные файлы создаются эмулятором Speccy 'x128' by James McKay, а также
эмулятором fMSX, которым пользоваться не приходилось. Что касается
первого, то
он при создании PSG файлов допускает ошибки. Поэтому лучше всего
пользоваться
эмулятором Speccy "Z80 Stealth" Кирилла Колпакова (Mr.Kirill). Кирилл в своё
время охотно внедрил в свой эмулятор некоторые предложенные Сергеем Бульбой
функции, сильно упрощающие процесс создания PSG файлов. Кроме того,
последние
версии Z80 Stealth позволяют с легкостью создавать PSG-файлы, используя
возможности встроенного отладчика. Скачать эмулятор можно с
http://z80.da.ru/.

Ниже предложено всё, что удалось найти в Интернете.

Смещение Число байт Описание
+0 3 Идентификатор 'PSG'
+3 1 Маркер, равный "1Ah"
+4 1 Номер версии
+5 1 Частота прерываний (для версий 10+).
+6 10 Неизвестно

Далее следуют строки байтов, начинающиеся с 0FFh или 0FEh. Байт 0FFh -
маркёр
начала прерывания. Если вслед за ним идёт байт от 0 до 15, то это номер
регистра АY, в который произошёл вывод значения, следующего за этим байтом.
Далее идёт следующая двойка байт, первый байт которой - номер регистра, а
второй - значение. И так пока не встретится маркер следующего
прерывания, конец
файла или байт 0FEh. Байт, следующий за 0FEh, помноженный на 4 даст
количество
прерываний, в течении которых не было вывода на сопроцессор. Если в
PSG-файле
встретится номер регистра от 16 до 252 - не расстраивайтесь. Этот и
следующий
за ним байт можно просто проигнорировать (это вывод на другие устройства
MSX).

Согласно документации RDOSPLAY, байт 253 является маркером конца музыки.
Немного дополнительной информации. Как удалось узнать, некоторые эмуляторы
сохраняют более простой заголовок - только первые четыре байта, то есть
вывод
на AY начинает сохраняться уже со смещения +4.

EPSG

Данные файлы создаются эмулятором Speccy "Z80 Stealth" Кирилла Колпакова
(Mr.Kirill). В отличие от обычных PSG, EPSG хранит информацию не только о
выводе в конкретные регистры, но и о времени вывода, в связи с чем,
EPSG, также
как OUT и ZXAY, может хранить вывод на AY с точностью до такта Z80.
Далее слегка отредактированный текст из z80s.faq:

Q: What is it - this EPSG format?
A: It's PSG format improved just a bit to handle output of digitized samples


Here's the description:


============================
Header
============================

Offset Length Value
0 4 'EPSG'
4 1 0x1A marker
5 1 Machine type: 0x00 - ZX Spectrum 128 0x01 - Pentagon
0xFF - Other machines
6 4 Zero for machine type 0x00 and 0x01 or number of Z80 tacts
between interrupt markers for other machines
10 6 zeroes

============================
AY(YM) log during 1 frame
============================

Offset Length Value
16 1 AY(YM) register number
17 1 value written to this register
18 3 T-state
.....
?? 5 0xFFFFFFFFFF - interrupt marker

Информация взята из файла помощи программы AYEmulator (S.Bulba)
