хы... я тоже ходил с этого длинного конца
я правда не понял всех тонкостей, но попытаюсь на пальцах объяснить что сам понял. ссылки кстати не открылись. ERR_CONNECTION_TIMED_OUT.
изначально, когда я только заинтересовался этой темой, и видя эти самые текстовые логи расковырки песен, что шеловский комбайн делал - то было просто интересно что там за мелодии и в итоге эти файлы у меня начали играть в миди. то есть стало понятно с паузами и длительностями. после этого пошел чуть дальше и начал шерстить форумы. и натолкнулся на одного буржуйского товарища, который дал мне свою (кривую! чтоб ему икнулось в этот момент!) библиотеку. об этом чуть позже.
так вот изучение вопроса завело в тему с мануалом по этому YM2612:
http://www.smspower.org/maxim/Documents/YM2612но здесь по моему более ясно:
https://wiki.megadrive.org/index.php?title=YM2612_Registersв GEMS есть понятие инструмент. это файлик 39 байт. в нем содержатся значения параметров, которые нужно слать в соответствующие регистры. это всякие detune, attack, relise rate и тд и тп. в одном байте того файла может быть несколько параметров. типа AM и Decoy rate. биты там кароче читать надо.
после выставления инструмента идут как раз твои $A0 и $A4 друг за дружкой. эти два регистра отвечают за частоту - то есть ноту, которая будет выставлена для проигрывания. $A0 и $A4 - это для первого канала. $A1 и $A5 - для второго. $A2 и $A6 для третьего. после повторяется, просто надо прибавлять 256 или $FF. $A0+256 и $A4+256 - четвертый и так далее. (тут наврал. 256 или 255? уточнять надо в своем недокоде)
в итоге инструмент уже выставлен, нота уже выставлена. нужна команда для старта звучания ноты. а она частично зависит от инструмента. в инструменте есть keyon параметр. этот параметр отвечает за то, какие из 4 операторов будут включены так сказать. то есть в инструменте 4 операторов - то есть 4 комплектов параметров detune, attack и так далее. вот этот keyon параметр и говорит системе что этот используется, а этот нет. казалось бы параметры в операторах выставлены одинаковые, но стоит изменить этот keyon и звучание меняется. (когда детям надоедает читать скушную книжку, то надо разбавить иллюстрацией. разбавляю)
так вот этот самый регистр $28, где первые 4 бита это этот параметр keyon, а вторая часть это номер канала. поскольку мы все в теории выставляли в первый канал ($A4 и $A0) то значит в этот же первый канал и надо выводить "включение" значение будет примерно $F0 - где F - 1111 четыре бита, то есть все операторы включены, а 0 это первый канал. 1-2, 2-3, 4-4, 5-5, 6-6. хотя тут я могу ошибаться насчет тройки. надо смотреть в своем недокоде...
когда нота начала петь, и пропела там сколько полагается, то надо её выключить. шлем в тот-же канал - то есть 1, то есть 0 - нули в качестве keyon: регистр $28, значение $00 (типа $01 - выключить ноту во втором канале, $02 - в третьем, $04 - в четвертом и так далее)
а вот насчет регистров D1 или D0 я не знаю. их чот в описании не видно
там от $22 до $B0 по моему. может это уже само значение регистра было? тогда может быть.
с выставлением ноты $A4 и $A0 там тоже свои нюансы. так-же есть особенности при проигрывании сэмплов, так-же при переключении специального режима для 3 канала (Sonic blast - звук выстрела из танка соника в Dune например), но об этом уже в следующей серии
)) конечно если из моей сумбурной писанины было что понятно.