Цитата Сообщение от JV-Soft Посмотреть сообщение
Пересмотрел весь код плеера на который Goodboy выше давал ссыль , чтения YM2612 в нем нет.
Если он использовал драйвер из BT/BT&DD то там тайминг достигается за счет "длинной" команды Z80 (2 префикса).
Код:
; Вольный перевод с буржуйского, здесь цикл = такт.
;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+ циклов между записью Данных и следующей записью
Это выведено на форуме, ссылку на тему в котором я уже давал. Быстрее нельзя - YM2612 будет пропускать данные и мелодия испортится.