Сделал демо на приставку Менестрель. Конечно представляю что такая приставка есть не только лишь у всех (мало у кого).
Тем не менее - однажды на данном форуме увидел демку для ЮТ-88 под 580ВИ53 в которой товарищ Kakos_nonos довольно умело сконвертировал музыку и получилось на мой взгляд великолепно. (она вот тут мини-демка decode)
Поскольку в БК эти ВИ53 стоят в Менестрели - стало возможно перетащить ту музыку и под БК.
Спасибо gid-у что не бросил менестрель в своем эмуляторе и в последней бета версии она даже играет почти как задумано (пришлось немного подрихтовать демо под эмулятор).
В эмуляторе менестрель включить, фильтр сглаживания выключить, dc offset выключить. ПЗУ менестрели не требуется.
Бинарник: https://github.com/blairecas/bk_test...emo1.bin?raw=1
(он правда может допиливаться время от времени)
Небольшие технические детали менестрели. Вкратце - стоит две микросхемы ВИ53 по одной на канал лев/прав (что вообщем-то криво,в менестрелях здорового человекаво всяких схемах с AY делают иначе) то-есть кто захочет центральный канал тому не слишком повезло (придется использовать счетчики обоих чипов). Тактируются 1МГц своим генератором. Вторая ВИ53 тактируется в противофазе от первой (какой-то хитрый план). Затычки gate соединены в кучу хотя в регистре 177714 вроде еще остается пара бит (соответственно чтобы заткнуть какой-либо канал надо либо писать туда "неслышимую" частоту навроде 500кГц либо заново его инициализировать).
Вообще она довольно хорошо описана вот тут (там есть ссылки на схему и тд). https://eax.me/menestrel/
Единственно - приведенный там код очень избыточен.
Регистр менестрели:
Для инициализации скажем всех каналов обоих чипов в режим 3 достаточно:Код:; 177714 (data inverted) ; GA XX XX WR CS CS A1 A0 - XX XX XX XX XX XX XX XX ; D2 D1 C1 C0 L1 L0 M2 M1 M0 BC
То-есть сначала ставим ~WR сигнал в низкий, сразу-же с тем-же значением остальных бит - в высокий.Код:mov #177714, R0 mov #^C^B0000001100110110, (R0) ; both chips, counter 0, mode 3 (~WR low) mov #^C^B0001001100110110, (R0) ; ~WR high mov #^C^B0000001101110110, (R0) mov #^C^B0001001101110110, (R0) mov #^C^B0000001110110110, (R0) mov #^C^B0001001110110110, (R0)
В коде ПЗУ менестрели вообще стоит mov ... @#177714, clr @#177714, но на моей реплике устройства оно могло лажануть изредка, более надежно получилось делать 2 раза mov меняя бит ~WR
![]()




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
