Spectrum.EXE/Docs/FORMATS/info_guide/chip
Anatoliy Belyanskiy bd2abb6229 Initial commit
2023-06-15 02:20:40 +10:00

69 lines
3.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Формат модуля 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 не грузит до конца модули, имеющие пустые
сэмплы, прилагаю исходник этого плейера, в котором имеются нуж-
ные исправления (скорость в том числе).