┼─────────────┼ KVA
┼─> I N F A # 2 <──────────────────────────────────────────────┼
┼─────────────┼ MDM 318-721 / 500:0152/1.07
Структура модулей редактора PSC.
( ** - для PSC 1.04, * для PSC 1.03, остальное - общее )
────────────────────────────────────────────────────────────────
1. Структура самого файла.
00..24 - байты "PSC V1.00 COMPILATION OF "
25..44 - 20 байт имени музыки
45..48 - байты " BY "
49..66 - 18 байт автора музыки
67..68 - зарезервировано (всегда #20,#20)
69..70 - логический адрес начала Sample'ов (считается от начала
модуля)
71..72 - логический адрес начала таблицы Positions
73..73 - начальный Delay (скорость музыки)
74..75 - логический адрес таблицы лог.адресов орнаментов
76.. - лог.адреса самих Sample'ов (по 2 байта)
(* - считается от начала модуля,
** - считается от начала данных адресов)
.. - лог.адреса самих Ornament'ов (по 2 байта)
(* - считается от начала модуля,
** - считается от начала данных адресов)
.. - собственно Sample'ы :
номер Sample'а (1 байт) в редакторe, сам Sample
номер Sample'а в редакторе, сам Sample
...
номер Sample'а в редакторе, сам Sample
байт #FF
.. - собственно Ornament'ы :
номер Ornament'а в редакторе, сам Ornament
номер Ornament'a в редакторе, сам Ornament
...
номер Ornament'а в редакторе, сам Ornament
байт #FF
.. - собственно Pattern'ы
длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
...
длина Patterna'а, номер Pattern'а в редакторе,
канал A, #FE, канал B, #FE, канал C, #FE
байт #FF
.. - собственно Positions
номер Position (важен токьто для декомпиляции),
длина Pattern'a, adr of A, adr of B, adr of C
номер Position, длина Pattern'а,
adr of A, adr of B, adr of C
...
номер Position, длина Pattern'a,
adr of A, adr of B, adr of C
на какую посицию зациклено, байт #FF,
лог. адрес в таблице Positions на нужную позицию
────────────────────────────────────────────────────────────────
2. Строение Sample'а.
Каждая "строка" Sample'а состоит из шести байт:
0..1 - tone add (смещение для чистого тона)
2 - noise add (смещение для шумов)
3 - volume (громкость звука в Sample'е - локальная громкость)
4 - свободный байт (для быстроты Player'a)
5 - Флаг:
биты:0 - чистый тон (0-есть, 1-нету)
1 - увеличить на 1 глобальную громкость (1-да, 0-нет)
2 - уменьшить на 1 глобальную громкость (1-да, 0-нет)
3 - шум (0-есть ,1-нет)
4 - огибающая (0-да ,1-нет)
5 - закончить Sample (0-да ,1-нет)
6 - перейти на начало цикла (0-да ,1-нет)
7 - начало цикла (0-да ,1-нет)
────────────────────────────────────────────────────────────────
3. Строение Ornament'а.
Каждая "строка" Ornament'а состоит из двух байт:
0 - Флаг + noise add
биты:0..4 - noise add
5 - закончить Ornament (0-да ,1-нет)
6 - перейти на начало цикла (0-да ,1-нет)
7 - начало цикла (0-да ,1-нет)
1 - note add (смещение для ноты)
────────────────────────────────────────────────────────────────
4. Строение каналов Pattern'ов.
#00..#56 - нота
#57..#66 - volume (#57=envel,#58=1,#59=2,...,#66=F)
#67 + 2 bytes of ADR - адрес тела Sample'а (см.пункт 5)
#68 + 2 bytes of ADR - адрес тела Ornament'a (см.пункт 5)
#6A..#79 + 1 byte of value - встроенные команды:
#6B - glis.dn
#6C - glis.up
#6D - port.
#6E - del.
#6F - hld.orn
#70 - sldv.
#71 - rls orn
#7A + 2 bytes of envelope - огибающая (4 старших бита - номер
огиб. ,остальные - значение задержки
#7B + 1 byte of noise add - смещение шума после каждой ноты
(присутсвует ТОЛЬКО на канале B)
#7C - pause
#7D - rls
#80..#9F - номер Sample'а (номер в таблице адресов)
#A0..#BF - номер Ornament'а (номер в таблице адресов)
#C0..#FF - пауза между следующей командой (нотой) в нотах.
#C0 - 1 нота, #C1- 2 ноты, ..., #FF - 64 ноты.
В каждой "ноте" сначала идут какие-то параметры, а затем идет
пауза до следующей ноты ( после этой команды пропустится нужное
количество нот, а затем уже будет все обрабатываться дальше)
────────────────────────────────────────────────────────────────
5. Некоторые дополнительные возможности декомпилятора.
(Player'ом не поддерживаются)
Если по адресу 74 модуля (адрес на Sample'ы) находится число
#0000, то декомпилятор переходит во второй режим работы :
1. По адресу 74 лежат уже собственно Sample'ы, т.е. адресов
Sample'ов и Ornament'ов уже не существует.
2. Команд с #80 по #BF здесь уже не существует.
Место них команда пауза между нотами (т.е. она смещается,
#81=1 нота, #82=2 ноты, #83=3 ноты,#C0=64 ноты , а команд
с #C1 по #FF не существует)
3. Для задания нужного Sample'а или Ornament'а используются
команды #67 и #68,где нужно задавать адрес на тело блока.
Этот режим был введен для более быстрого написания конвертеров.
────────────────────────────────────────────────────────────────
KVA from E-mage 1998 (c)