AY-3-8910/12 ZX Spectrum Sound Chip Emulator

YM

Данный формат файлов разработал Arnaud Carre (Leonard/OXYGENE) для своего эмулятора ST-Sound. Первоначально он задумывал его как эмулятор ATARI ST (YM2149 чип), но впоследствии он модернизировал свой формат, благодаря чему он стал Multi-Computer Sound Emulator.

В данный момент этот проект состоит из большого числа программ, начиная от plug-in к WinАmp, отдельной программы с неплохим интерфейсом, множества конвертеров и заканчивая собственно огромным архивом музыки с Atari и Amstrad. Архивы музыки со Speccy находятся в плачевном состоянии, видимо благодаря ужасным конвертерам со Speccy в YM.

Прослушивая музыку с Atari и Amstrad, не забывайте установить частоту сопроцессора в 2 000 000 и 1 000 000 Гц соответственно, т.к. в YM2, YM3 и YM3b файлах нет информации об этом параметре.

Итак, любой YM файл представляет собой архив LHA типа 5, созданный программой LHA.EXE v2.00 и выше с ключом –h0 (заголовок типа "ноль") by Haruyasu Yoshizaki.

Внутри этого архива находится один файл с любым именем, поддерживаемые форматы которого описаны ниже.

YM2

Первые четыре байта являются ASCII строкой "YM2!". В целом формат не отличается от YM3, за исключением того, что в неиспользуемых битах некоторых регистров зашифрована информация о цифровых сэмплах. Количество сэмплов и их содержимое жестко прошиты в плеер (эти сэмплы использовал Mad Max на Atari ST).

YM3

Первые четыре байта являются ASCII строкой "YM3!". Далее следует блок данных, который состоит из значений, отправляемых в YM-регистры. Регистры обновляются один раз за прерывание компьютера. Предположим, песня состоит из N квантов (прерываний). Тогда блок будет содержать N байтов – значений, отправляемых в регистр 0, за которыми следуют ещё N байтов – значений, отправляемых в регистр 1 и т.д., всего N*14 байтов. Если в текущем кванте не было записи в регистр 13, то байт в блоке данных, относящийся к этому кванту и к этому регистру равен 255.

YM3b

Первые четыре байта являются ASCII строкой "YM3b". Затем идёт такой же блок, как и в YM3. После блока находится значение DWORD, указывающее номер кванта для зацикливания мелодии.

YM5

Данный формат содержит расширенную информацию о музыке, как то: частота прерываний, частота чипа, название, автор, комментарий, а также специфическую информацию, позволяющую воспроизводить эффекты, названные автором ST-Sound Digi-Drum и SID-Sound (некоторые программы на Atari используют эти эффекты).

Выдержка из YMFORMAT.TXT

---------------------------cut here-------------------

Offset  Size    Type            Comment
0       4       DWORD           ID of YM5 format. ('YM5!')
4       8       string[8]       Check String ('LeOnArD!')
12      4       DWORD           Nb of valid VBL of the file.
16      4       DWORD           Song attributes (see bellow)
20      2       WORD            Nb of digi-drum sample (can be 0)
22      4       DWORD           YM2149 External frequency in Hz
                                (ex:2000000 for ATARI-ST version,
                                1000000 for AMSTRAD CPC)
26      2       WORD            Player frequency in Hz
                                (Ex: 50Hz for almost player)
28      4       DWORD           Vbl number to loop the song.
                                (0 is default)
32      2       WORD            Size (in bytes) of future
                                additional data.
                                (must be 0 for the moment)

For each digidrum sample:
{
..      4       DWORD           sample size
..      ?       BYTES           sample data (8bits per sample)
}

..      ?       NT-String       Name of the song.
..      ?       NT-String       Name of the author.
..      ?       NT-String       Comments (YM file converter ?!)
..      ?                       All YM2149 registers.
..      4       DWORD           End-File check. ('End!')

---------------------------cut here-------------------

Замечания.

1) VBL – Vertical Blank time (квант).

2) Все числовые данные (WORD и DWORD) представлены в порядке, принятом на процессорах MOTOROLA (от старшего байта к младшему).

3) Введены так называемые виртуальные регистры – 14-й и 15-й.

4) All YM2149 registers – такой же блок данных, как и в YM3 (но 16 регистров!), если установлен бит 0 в поле Song Attributes, если он сброшен, то блок данных представляет собой последовательность N блоков по 16 байт (для каждого из регистров YM, включая виртуальные).

YM6

Данный формат отличается от YM5 только наличием возможности записи ещё двух специальных эффектов – Sinus-SID и Sync Buzzer, а так же тем, что любые два эффекта могут исполняться одновременно.

Эмулятор поддерживает все специальные эффекты описанных выше форматов.

Более подробную информацию можно получить из официального архива ST-Sound или на страничке проекта ST-Sound http://leonard.oxg.free.fr. Также недавно опубликованы авторские исходники библиотеки на основе ST-Sound.