обьясню формат загаловка:
$00-01 = поинтер(ссылка) на smps голоса синтезатора Yamaha2612 от начала мелодии (чаще всего находятся в конце мелодии)
$02-03 = настройка каналов или какие каналы будут задействованы
$04-05 = скорость проигрывания. там что-то вроде умножения - второй уможается на первый и получаем скорость
$06-07 = поинтер на биты/сэмплы/wav-ки, кароче ударные
$08-09 = не использовано. обычно пусто
$0A-0B = поинтер на нотный стол для канала FM1
$0C-0D = настройка вывода звука. 1 байт - высота звука, 2й - громкость(работает наоборот, чем меньше - тем больше)
дальше идут поинтеры как на первый канал, только для других.
т.е.
FM2 поинтер
FM2 настройка вывода
FM3 поинтер
FM3 настройка вывода
FM4 поинтер
FM4 настройка вывода
FM5 поинтер
FM5 настройка вывода
(если первый байт настройки каналов указать как 7, то
FM6 поинтер
FM6 настройка вывода)
дальше идут поинтеры на каналы PSG(Programmable Sound Generator.
PSG1 инструмент (2 байта)
PSG1 поинтер (2 байта)
PSG1 настройка вывода (2 байта)
PSG2 инструмент (2 байта)
PSG2 поинтер (2 байта)
PSG2 настройка вывода (2 байта)
PSG3 инструмент (2 байта)
PSG3 поинтер (2 байта)
PSG3 настройка вывода (2 байта)
колличество и расположение поинтеров зависит от расположения каналов
самая часто встречающаяся настройка = 0603 (5 каналов 1 DAC(ударные) и 3 PSG)
и 0703 (6 каналов и 3 PSG)
далее идут уже все данные, на которые ссылаются поитеры
формат нотного стола:
$00-$7А = время паузы между нотами (во время паузы играет последняя указанная нота,
если ноты идут в ряд, то будут использовать одну и туже паузу.
пример:
80(тишина) 10 A0 20 A1 18 A2 80 02 A0 A1 A2 A0 A4 A2
)
$80 = тишина
$81-$DF = ноты
$E0-$FF = флаги(смен голоса, прыжок назад и т.д.)
ударные работают не так как ноты.
ударные используют свой порядковый номер
например в сонике 1:
$81 Kick
$82 Snare
$83 Hi-Timpani
$84 no use
$85 no use
$86 no use
$87 Sega PCM
$88 Hi-Timpani
$89 Mid-Timpani
$8A Low-Timpani
$8B Low-Timpani
голоса состоят из 25-и байт
состав их мне к сожалению не известен
http://info.sonicretro.org/SCHG:Music_Hacking#Coordination_flags_2 - сдесь флаги, используемые для манипуляции проигрыванием
флаги могут меняться от игры к игре