ASC
Данные файлы производятся музыкальным редактором ASM для Speccy. Насколько известно автору эмулятора, при компиляции, в отличие от Sound Tracker, к блоку данных всегда приписываются коды проигрывателя, которые для проигрывания в эмуляторе не нужны. Кроме того, есть ещё один неприятный момент – информация о названии и авторе песни в блоке ASM располагается как раз в кодах проигрывателя, поэтому при отрезании проигрывателя от данных данная информация теряется. Автор эмулятора рассматривал несколько вариантов сохранения названия ASM модуля. Но вариант, предложенный автором спектрумовского риппера и проигрывателя музыки Pusher Ильёй Кудрявцевым из Ижевска (Himik's ZXZ), оказался наиболее оптимальным.
Упрощённая структура ASC-файла без названия и имени автора следующая.
Смещение Число байт Наименование Описание +0 1 Delay Начальное минимальное число прерываний между соседними нотами +1 1 Loop Position Позиция, с которой зацикливается проигрывание +2 2 PatternPointers Pointer Указатель на таблицу PatternPointers +4 2 SamplePointers Pointer Указатель на таблицу SamplePointers +6 2 OrnamentPointers Pointer Указатель на таблицу OrnamentPointers +8 1 Position's Number Количество позиций +9 ??? Data Прочие данные
Встречаются файлы, в которых отсутствует поле Loop Position (подразумевается равенство нулю). Эти файлы производятся редакторами ASM версий младше 1.00. Чтобы проиграть их в Эмуляторе, достаточно добавить это поле, записав туда ноль, и увеличить на единицу значения следующих трёх указателей, либо присвоить файлу любое из неиспользуемых расширений, тогда он будет автоматически распознан и проигран.
Упрощённая структура ASC-файла, модернизированного Ильёй Кудрявцевым для хранения названия и имени автора, следующая.
Смещение Число байт Наименование Описание +0 1 Delay Начальное минимальное число прерываний между соседними нотами +1 1 Loop Position Позиция, с которой зацикливается проигрывание +2 2 PatternPointers Pointer Указатель на таблицу PatternPointers +4 2 SamplePointers Pointer Указатель на таблицу SamplePointers +6 2 OrnamentPointers Pointer Указатель на таблицу OrnamentPointers +8 1 Position's Number Количество позиций +9 Position's Number Positions List Список позиций +9+Position's Number 19 ID Строка ‘ASM COMPILATION OF ‘ +28+Position's Number 20 Title Название мелодии +48+Position's Number 4 ID2 Строка ‘ BY ‘ +52+Position's Number 20 Author Имя автора модуля +72+Position's Number ??? Data Прочие данные
Для того чтобы вставить авторскую строку из плеера в тело модуля, нужно вручную вытащить текст 'ASM COMPILATION OF <NAME> BY <AUTHOR>' и воспользоваться утилитой ASCCONV с официального сайта эмулятора.
Версия 2.8 Ay_Emul дает также возможность немного автоматизировать этот процесс: если ASM-файл в виде блока «плеер+модуль» хранится в TRD, SCL или Hobeta форматах, то достаточно загрузить его в Ay_Emul, а затем сохранить из плейлиста. При этом для ASC и STP модулей тело модуля автоматически будет модифицировано строкой из плеера и отделено от него.