mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 17:11:38 +03:00
69 lines
3.0 KiB
Plaintext
69 lines
3.0 KiB
Plaintext
|
||
Формат модуля Chip Tracker 1.x
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
Расширение .CHI
|
||
|
||
Модуль состоит из четырёх частей - заголовок, ордер (список по-
|
||
зиций), паттерны, сэмплы. Каждая часть выравнена по границе сек-
|
||
торов.
|
||
|
||
Заголовок имеет размер 1 сектор:
|
||
+0 (8) "CHIPv1.0"
|
||
+8 (32) имя трека (русских букв в шрифте нет)
|
||
+40 (1) tempo
|
||
Внимание! ДОЛЖНО СЧИТАТЬСЯ, что tempo измеряется в 50-х долях
|
||
секунды, хотя версии редактора до 1.3 включительно и плейер
|
||
0.01 версии играют сонг из-за допущенной ошибки несколько мед-
|
||
леннее!
|
||
+41 (1) длина сонга-1 (последняя используемая позиция) 0..255
|
||
+42 (1) позиция зацикливания (0..255)
|
||
+43 (16*4) параметры сэмплов (в порядке 0..F):
|
||
++0 (2) позиция зацикливания (равна длине для незацикленных)
|
||
++1 (2) длина. Сначала младшие байты, потом старшие.
|
||
Для неиспользованных сэмплов здесь нули.
|
||
+107 (31) зарезервировано (нулевые байты).
|
||
+138 (16*8) имена сэмплов (в том же порядке). По 8 байт на имя.
|
||
Для неиспользованных сэмплов здесь пробелы.
|
||
|
||
Список позиций имеет размер 1 сектор и содержит номера паттернов
|
||
в порядке проигрывания. Номера паттернов хранятся как 0..30,
|
||
т.е. на единицу меньше, чем показывается в редакторе. Неисполь-
|
||
зованные позиции содержат 0.
|
||
|
||
Паттерны хранятся до последнего использованного в списке пози-
|
||
ций. Каждый паттерн занимает 512 байт, которые рассматриваются
|
||
как два запареллеленных блока по 256 байт. В паттерне 64 строч-
|
||
ки, каждая из которых занимает 4 последовательных байта в первом
|
||
256-байтовом куске паттерна и ещё 4 последовательных байта во
|
||
втором. Каналы A,B,C,D хранятся именно в таком порядке. Причём
|
||
каналы A,D должны играться как правые, а B,C - как левые.
|
||
|
||
Для каждой ноты каждого канала:
|
||
в первом куске: во втором куске:
|
||
%nnnnnnCC %ssssPPPP
|
||
|
||
nnnnnn - нота (0=пусто, 1=C-1, ... 60=B-5, 63=пауза);
|
||
ssss - её сэмпл (обязательно указан!);
|
||
CC - код команды, а PPPP - её параметр:
|
||
00=sample offset. Сэмпл играется с PPPP*512-го байта, но в
|
||
поле ноты должна стоять нота;
|
||
01=slide down(-) на PPPP микросапогов каждую 1/50 секунды;
|
||
10=slide up(+) на PPPP микросапогов каждую 1/50 секунды;
|
||
Микросапог - условная единица частоты (не периода!);
|
||
Слайды действуют только в пределах текущей строчки.
|
||
11=в канале A - темп PPPP (1..15);
|
||
в канале D - конец паттерна (текущая строчка - последняя);
|
||
в каналах B,C - запрещено.
|
||
|
||
Сэмплы хранятся в 8-битном беззнаковом виде, причём каждый сэмпл
|
||
выравнивается по границе сектора (256 байт). В неиспользованной
|
||
таким образом части последнего сектора находится то же, что и в
|
||
начале цикла этого сэмпла. Если он не зациклен, то там значения
|
||
128. Сохраняются все сэмплы, кроме пустых. Максимум #BB=187 сек-
|
||
торов сэмплов.
|
||
|
||
Ещё раз внимание! поскольку из-за второй ошибки в программе Chip
|
||
Tracker Compiler v0.01 не грузит до конца модули, имеющие пустые
|
||
сэмплы, прилагаю исходник этого плейера, в котором имеются нуж-
|
||
ные исправления (скорость в том числе).
|