А YM2612 нечитать нельзя. У нее есть строгий слот времени обращения. Она флажком BUSY орудует. Это видно в коде плеера.
- - - Добавлено - - -
Точнее, нечитать можно, но обращаться надо будет очень медленно (по меркам Z80).
Карта на логике без прямой поддержки TSFM с возможностью проигрывания TSFM сторонним плеером, 5-7$
Карта на логике с поддержкой TSFM ,цена 7-10$
Карта на CPLD , цена не знаю примерно 20$ может и больше
А YM2612 нечитать нельзя. У нее есть строгий слот времени обращения. Она флажком BUSY орудует. Это видно в коде плеера.
- - - Добавлено - - -
Точнее, нечитать можно, но обращаться надо будет очень медленно (по меркам Z80).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Если он использовал драйвер из BT/BT&DD то там тайминг достигается за счет "длинной" команды Z80 (2 префикса).
Это выведено на форуме, ссылку на тему в котором я уже давал. Быстрее нельзя - YM2612 будет пропускать данные и мелодия испортится.Код:; Вольный перевод с буржуйского, здесь цикл = такт. ;53203424 / 7 = 7600489 = Такты YM/68K ;53203424 / 15 = 3546895 = Такты Z80 ;53203424 / 3420 = 15556.55 : Строк в секунду ;53203424 / (3420 * 313) = 49.70Hz : Кадров в секунду @50Гц ;53203424 / (3420 * 262) = 59.38Hz : Кадров в секунду @60Гц ;313 - 240 = 73 * 3420 = 249660 / 15 = 16644 : Циклов Z80 на каждый VBL @50Гц ;262 - 224 = 38 * 3420 = 129960 / 15 = 8664 : Циклов Z80 на каждый VBL @60Гц ;(313 * 3420) / 15 = 71364 : Циклов Z80 на каждый кадр @50Гц ;(262 * 3420) / 15 = 59736 : Циклов Z80 на каждый кадр @60Гц ;17 * 7 = 119 / 15 = 7.93 : Ожидать циклов Z80 после записи индекса регистра ;83 * 7 = 581 / 15 = 38.73 : Ожидать циклов Z80 после записи данных в регистры $21...$9E ;47 * 7 = 329 / 15 = 21.93 : Ожидать циклов Z80 после записи данных в регистры $A0...$B6 ;53203424 / (7 * 144) = 52781.1746 : Дискретизация YM ;144 * 7 = 1008 / 15 = 67.2 : Циклов Z80 на один сэмпл YM 52.781 КГц ;288 * 7 = 2016 / 15 = 134.4 26.391 ;432 * 7 = 3024 / 15 = 201.6 17.594 ;576 * 7 = 4032 / 15 = 268.8 13.195 ;720 * 7 = 5040 / 15 = 336.0 10.556 ;864 * 7 = 6048 / 15 = 403.2 8.797 WriteYM0: ;C=Индекс, A=Данные LD (IY+0), C ;19 LD (IY+1), A ;19 ~19 циклов между записью Индекса и Данных NOP ;4 NOP ;4 RET ;10 18+ циклов между записью Данных и следующей записью WriteYM1: ;C=Индекс, A=Данные LD (IY+2), C ;19 LD (IY+3), A ;19 ~19 циклов между записью Индекса и Данных NOP ;4 NOP ;4 RET ;10 18+ циклов между записью Данных и следующей записью
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)