Поддержаны как обычные PSG-файлы, так и расширенные EPSG-файлы.
Кроме того, существуют PSG2-файлы (их описание можно найти на сайте RDOSPLAY), аналогичные ZX50-файлам, но поддерживать их в Ay_Emul не планируется.
В интернете встречаются PSG-файлы эмулятора БК, но они не поддержаны в Ay_Emul.
Данные файлы создаются эмулятором Speccy 'x128' by James McKay, а также эмулятором fMSX. Что касается первого, то он при создании PSG-файлов допускает ошибки.
Поэтому лучше пользоваться хорошо зарекомендовавшим себя эмулятором ZX Spectrum "Z80 Stealth" Кирилла Колпакова (Mr.Kirill). Кирилл в своё время охотно внедрил в свой эмулятор некоторые предложенные мной функции, упрощающие процесс создания PSG-файлов. Кроме того, Z80 Stealth позволяет создавать PSG-файлы, используя возможности встроенного отладчика.
Смещение | Число байт | Описание |
---|---|---|
+0 | 3 | Идентификатор 'PSG'. |
+3 | 1 | Маркёр, равный "1Ah". |
+4 | 1 | Номер версии. |
+5 | 1 | Частота прерываний (для версий 10+). |
+6 | 10 | Неизвестно. |
Байт 0FFh – маркёр начала прерывания.
Байт, следующий за 0FEh, помноженный на 4, даст количество прерываний, в течении которых не было вывода на музыкальный сопроцессор. Например, последовательность "FE 01 FF" эквивалентна "FF FF FF FF FF".
Если в паре первый байт от 0 до 15, то это номер регистра АY, а второй байт – выведенное в него значение.
Согласно документации RDOSPLAY, байт 253 является маркёром конца музыки (не поддержан в Ay_Emul).
Пары байт, начинающиеся с байта от 16 до 252 – вывод на другие устройства MSX (игнорируется в Ay_Emul).
Как удалось узнать, некоторые эмуляторы сохраняют более простой заголовок – только первые четыре байта, то есть вывод на AY начинает сохраняться уже со смещения +4.
Ay_Emul не приспособлен для загрузки PSG с таким заголовком, но в большинстве случаев такие PSG играются (конечно, теряются первые несколько выводов).
Но если вы занимаетесь конвертированием модулей PSG, созданных с таким заголовком, в другие форматы (VTX или YM6) с помощью Ay_Emul, вам нужно вручную подкорректировать заголовки этих PSG и привести их к описанному выше виду.
Данные файлы создаются эмулятором 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: Offset Length Value ============================ Header ============================ 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 ============================ 16 1 AY(YM) register number 17 1 value written to this register 18 3 T-state ..... ?? 5 0xFFFFFFFFFF – interrupt marker
-------Конец----------