ZX-Ревю 1996 №7-8 1995 г.

Форум - дополнения к описанию SOUND TRACKER'a.


Kot Ltd,  Кировск, 1996.

   1) Дополнения к описанию  SOUND TRACKER'a.
   Пару слов о SAMPLE EDITOR'е. "Маска", а точнее говоря, "флаг",
имеет два значенния :  0 - да, 1 - нет.  Т. е. для верхней шкалы,
соответственно, выводим/не выводим  тон, для нижней, соответственно,выводим/ 
не выводим шум на текущем кварке. Теперь перейдем к могучей четверке:
   Первая цифра - номер инструмента из SAMPLE EDITOR'а. Если в
этом разряде ноль, то используется предыдущий инструмент. Если
при смене инструмента следующие три разряда обнулены, то при проигрывании они 
будут иметь предыдущее значение.
   Вторая цифра - если F, то используем "украшение" (ORNAMENT),
иначе значениями 1 - Е выбирается одна из форм внутреннего генератора огибающих 
(подробнее см. ZX РЕВЮ 95/5, стр. 26). Ничего путного использование значений 
1 - 6, 9, 7, B, D  не дает - можете убедиться в этом сами. На практике же, чаще 
всего используются значения  8, C - "жужжание",  A, E - "гудение". Ниже 
приводится таблица значений частоты огибающих 8, A, C, E  для нот. При этом
огибающая будет, по возможности, наиболее плавной. Существует один
нюанс. Попробуйте в  SAMPLE EDITOR'e  установить в единицу (запретить вывод) 
"флаг" - "маску" на обоих шкалах, а в нотной секции использовать этот 
инструмент вместе с огибающей. Заметьте, что на высоту звучания влияет только 
частота, а нота (или октава) значения не имеет.
   Третья цифра - используется как старший разряд частоты огибающей, т. е. при 
использовании огибающей (значение - номер во втором разряде) третья и 
четвертая цифры образуют восьмиразрядное значение частоты данной огибающей. В 
других случаях не используется.
   Четвертая цифра - если вторая цифра F, то должна содержать номер орнамента. 
Здесь следует сказать, что в ST  имеется орнамент с номером ноль. Не нажимайте 
никаких "тайных" клавиш в ORNAMENT EDITOR'е. Вы не увидите его никогда, хотя он 
используется. Значение смещения для каждого кварка равно нулю, т. е. он служит 
для выключения текущего орнамента при проигрывании. Если вторая цифра указывает 
на номер огибающей, то четвертая цифра будет младшим разрядом частоты огибающей.

    ТАБЛИЦА частот для огибающих 8, A, C, E.

 НОТА    1     2     3     4     5
Ъ------В-----В-----В-----В-----В----ї
і  C   і OF  і 1E  і 3C  і 78  і F0 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  C#  і OE  і 1C  і 38  і 70  і E0 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  D   і 0D  і 1B  і 36  і 6C  і DA і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  D#  і     і 19  і 32  і 65  і CA і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  E   і 0C  і 18  і 30  і 60  і C0 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  F   і 0B  і 16  і 2C  і 5A  і B8 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  F#  і     і 15  і 2A  і 54  і A8 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  G   і 0A  і 14  і 28  і 50  і A0 і
А------Б-----Б-----Б-----Б-----Б----Щ


 НОТА    1     2     3     4     5
Ъ------В-----В-----В-----В-----В----ї
і  G   і     і 13  і 26  і 4C  і 98 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  A   і O9  і 12  і 24  і 48  і 90 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  A#  і     і 11  і 21  і 42  і 84 і
Г------Е-----Е-----Е-----Е-----Е----ґ
і  B   і 08  і 10  і 20  і 40  і 80 і
А------Б-----Б-----Б-----Б-----Б----Щ

   Теперь заглянем внутрь ST. У программы есть небольшой "глюк". При сохранении 
орнамента или инструмента Вы вводите номер того, что желаете сохранить на 
внешнем носителе. Однако, Вас ждет небольшой обман, если Вы попытаетесь 
загрузить орнамент или инструмент под другой номер в списке. Он будет загружен 
в тот же номер!
   Это вызвано тем, что длина, а главное, стартовый адрес берутся из заголовка 
файла, а не из данных, выставляемых процедурами LOAD / SAVE.  Поехали дальше. В  
ST имеется процедура, которая преобразует музыку в некий формат перед 
выгрузкой, а при загрузке все восстанавливает. Это нужно для того, чтобы музыка 
не занимала много места на диске. Что же делает эта процедура?  Она оставляет
только те PATTERN, которые указаны в плане композиции (обратите на это особое 
внимание!), а остальные уходят в небытие.
   Например, Вы написали 30 PATTERN за день (ну, допустим), а составлением 
плана композиции решили заняться на следующий день, отгрузив музыку на диск или 
ленту... На следующий день ST покажет Вам фигу в виде недостающих PATTERN'ов. 
Так что решайте сами, что делать в этом случае. Но, несмотря на все это, у ST 
есть крутые преимущества. Минимальный объем памяти, занимаемый музыкой и 
редактором, позволяет работать в  48  режиме. Простота в управлении, куча 
сервисных функций и, если можно так выразиться, визуальная наглядность - вот 
чем крут ST. И в этом, конечно, заслуга авторов (которые, впрочем, неизвестны ). 
Теперь перейдем к компилятору.

      АЛГОРИТМ   КОМПИЛЯЦИИ:

   1) Выбор  накопителя.
   2) Загрузка  музыки.
   3) Компиляция  музыки.
   4) Присоединение  "проигрывателя".
   5) Прослушивание  музыки.
   6) Отгрузка  полученного  блока.

   Пункт 5 необязателен. Остановимся на пункте 4. Здесь нужно отметить 
универсальность проигрывателя, но обо всем по порядку. Скомпилированный блок 
состоит из двух частей: вышеназванного проигрывателя и блока данных. Так вот, 
вводя стартовый адрес в пункте 4, Вы привязываете проигрыватель к конкретному 
адресу, но дата-блок может находиться в любом другом месте ОЗУ. Это позволяет 
проигрывать всю музыку в программе одним проигрывателем (так, кстати, и сделано 
в самом компиляторе). Проведем небольшой расчет. Известно, что проигрыватель 
имеет длину 1084 байта, а компилятор располагает дата-блок сразу же за 
проигрывателем. Первая ячейка DATA-блока указывает на параметр DELAY. 
     Рассмотрим конкретный пример. Вы ввели стартовый адрес 40000 (назовем его 
условно ADR ). Тогда компилятор покажет следующее:
                   INIT  SON6 : 40000
                   PLAY  SON6 : 40006
                   DELAY  SET : 40000 + 1084 = 41084
      LENGHT: длина DATA - блока + проигрыватель
     Местоположение (адрес в компиляторе) DATA - блока изменится следующим 
образом:  
    из Бейсика:  LET DATA = 49152 : RANDOMIZE DATA: POKE (ADR + 1), 
PEEK 23670: POKE (ADR + 2), PEEK 23671. Здесь переменная DATA указывает на 
расположение в памяти DATA-блока, точнее, его первую ячейку - DELAY 
(естественно, что адрес 49152 взят просто для примера).
   Из ассемблера:
   I вариант:              LD HL DATA
                           LD (ADR+1), HL
   II вариант:             LD HL DATA   (!!! только  HL !!!)
                           JP   ADR + 9

     Во всех трех случаях, естественно, нужно провести инициализацию после 
вышеприведенных манипуляций, причем во II варианте ассемблера это делается 
сразу, хотя прямая передача управления на ADR приведет к непредсказуемым 
результатам.
     Используя вышеприведенную схему, можно "привязать" проигрыватель к нужным 
адресам в памяти и воспроизводить им до нескольких композиций (насколько 
хватит места). Воспроизведение ничем не отличается от стандартного.
     Теперь пару слов о том, в каком виде у нас распространен ST и его 
компилятор. При адаптации (адаптации ли?) на диск применена кнопка MAGIC и 
обработка неизвестным MAGIC - компрессором. При этом Вы не будете "одернуты" 
сообщением: SORRY, YOU  HAVEN'T  DISK  DRIVE, т. к. при декомпрессии все 
системные переменные настраиваются на TR DOS, а другого способа определить 
наличие DOS, как по этим переменным, мне кажется, не существует. В заключение
еще раз отмечу, что ST использует возможности сопроцессора на 99.99%. Если у 
читателей возникнут какие-либо еще вопросы по редактору, то я с удовольствием 
отвечу на них на страницах ZX РЕВЮ.  Да, забыл сказать, что скоростью "перелива" 
бегущей строки в компиляторе можно управлять, нажимая клавишу SYMBOL  SHIFT...

   Несколько слов по поводу защиты /взлома программм: не согласен я с мнением 
Баянова Д. о том, что второй режим прерываний (IM2)  процессора хаккеры 
используют для "запудривания" мозгов (ZX РЕВЮ 95/6, стр. 51).
   Попробуйте, например, пройти до конца защиту в следующих программах: 
THE FLINSTONES 128 ( by Vasilyev Anton ), DISSYG 128 (by Koprov Eugeny),  
THE LYRA II  MEGAPEMO (by Vasillyev Anton). В скобках, конечно, имена хаккеров, 
которые ставили защиту, а не делали саму программу.  
   А теперь срочное и важное сообщение :
   Уважаемые программисты!  Использование команды  OUT (#FD),A для переключения 
конфигурации компьютера в режим 128 K ведет к нарушению работоспособности 
программы на некоторых хорошо распространенных и отлично себя зарекомендовавших 
машинах, а чаще к ее полному бездействию. Использование данной команды в 
программах будет караться полным неуважением к автору пользователями и 
применением нелестных эпитетов в его адрес.
   Почему бы не сделать так?:

   I.  LD  A, config               III.  LD  REG, config 
       EXX                               PUSH  BC
       LD  BC, #JFFD                     LD  BC, #JFFD 
       OUT (C),A                         OUT (C),REG
       EXX                               POP BC
       .....                             .....

   II. LD  A, config                Здесь  REG  означает:
       PUSH  BC                     A,D,E,H,L,XL,XH,YL,YH
       LD  BC, #JFFD  
       OUT (C),A 
       POP BC                       Команды PUSH BC и POP BC
       .....                        употребляются по надобности.

   Теперь приведу две подпрограммы:

     Эта процедура приращения регистровой пары HL на величину, заданную в 
регистре A, которая находится в пределах #00 - #FF.

        LD A, приращение           Это быстрее и короче,  
        ADD A,L                    чем:
        LD  L,A                          PUSH  BC
        ADC A,H                          LD  BC, #            
        SUB  L                           ADD HL, BC
        LD H,A                           POP BC 

   Процедура расчета координаты Y в пикселях от верхнего левого края экрана. 
Используются регистры: C,A,D,E.
На входе: A = координата Y, регистр C используется при расчете.
На выходе: адрес в дисплейном файле в регистре DE, в регистре C
сохранен аккумулятор.

LD  C,A 
AND #38 
RLCA
RLCA
LD  E,A
LD  A,C
AND #07 
OR #40
LD  D,A
LD  A,C
AND #C0
RRCA
RRCA
RRCA
OR D
LD D,A
RET



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Послесловие - Как делался этот номер.
Реклама - реклама и объявления.
Новинки - новинки Омского програмного рынка на январь 1999 года.
Circulation Of Warez On Today's Scene
Scene - scene today: "храните спектрум-сцену, любите, поднимайте, когда ей трудно!"

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