Tronix, там не просто дамп регистров, там специальный формат со сжатием. Каждый паттерн разделяется на три канала и каждый отдельно сжимается по RLE. В итоге примерно 60% от первоначального объёма остаётя.
Вот пример:
Код:
LUT1_1: ;Начинаются данные первого паттерна второго канала (первый канал идёт без меткс сразу после объявления паттерна)
.word 4052;~0 Заносим это число в ВИ53. Заносятся только числа, делящиеся на 4 без остатка. То есть, два младших бита которого равны нулям
.word 3820;~0
.byte 17; пауза 8 ; Если младший бит равен 1, то это пауза, в ((n-1)/2 позиций. В ВИ53 за это время ничего не пишется. Это только для этого канала, другие в это время играют)
.word 4052;~8
.word 4292;~0
.byte 9; пауза 4
.word 3820;~4
.byte 21; пауза 10
.word 4052;~10
.word 4292;~0
.word 30642;~1 ; если два младших бита равны 10, то пауза в один такт.
Ещё есть хитрость с тишиной. Она обозначена как запись числа 4 в ви53. Однако, её надо записывать в начале следующего такта, то есть, цикл воспроизведения такой:
1.
Заглушить каналы.
Проиграть следующую позицию, и отметить заглушаемые каналы.
Пауза
Перейки к п.1
Незнаю, почему так, но оно так.
Заглушка происходит записью числа 2 в ВИ53.
Сам ви53 программируется очень просто.
Есть 4 порта. порты 0,1,2 - один для канала. Порт 3 - Регистр управления. Его трогать не надо, только вначале инициализировать каналы, записав подряд три значения ($3E, $7E, $BE)
Заставить канал играть так: записать в него сначала младший бит делителя, потом старший.
Делитель определяется так (частота ви53/частота звука). В ЮТ-88 частота ви53 2 мгц, в РК - 1,77.
То есть, чтоб на РК нам заставить играть нулевой канал в 1000 гц, нам нужно:
1777778/1000 = 1777
1777 = мл(241) ст(6)
OUT port0, 241
OUT port0, 6
Всё, канал 0 заиграет частотой 1000 гц.
Вроде всё. Если непонятно, спрашивайте, разъясню. Кстати, в This Is Apogey формат намного проще, там просто дамп регистров, и 0, если не надо играть. Данные идут так: канал0, канал1, канал2, (далее ждём), канал0, канал1,канал2, (опять ждём)... ...Когда встретили 255 - конец паттерна.