C-Net Week #08
17 января 1998
  Софт  

Infa #2 - Структура модулей редактора Pro Sound Creator.



  ┼─────────────┼                                          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)





Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Система - новый aссeмблeр из городa Волгодонскa: EDAS 3.3.
News - взгляд Moran/CPU на текущее состояние дел в группе СPU.
BBS - График BBS г. Минска.

В этот день...   16 ноября