Faultless #03
31 декабря 1995 |
![]() |

╔══════════════════════════════════════╗ ║Раздел: Пользователям; ║ ║Статья: Создание звуковых эффектов; ║ ║Текст : Ворожкин Александр. ║ ╚══════════════════════════════════════╝ Различные звуковые и шумовые эффекты, которыми изобилуют компьютерные игры, достигаются через изменение по тому или иному закону частоты выводимого звука. Техника вывода звука вам уже известна, поэтому без лишних слов сразу перейдем к делу и продемонстрируем несколько наибо- лее часто употребляемых в играх эффек- тов.Первый из них больше всего напоми- нает щебет птиц, особенно если его вызы- вать с небольшими и неравными промежут- ками времени: TWEET LD A,(23624) ;Определение цвета AND #38 бордюра RRA RRA RRA DI TWEET1 XOR 16 ;Переключение 4-го OUT (254),A бита PUSH BC DJNZ $ ;цикл задержки POP BC DJNZ TWEET1 EI RET Длительность эффекта перед обращением к процедуре TWEET задается в регистре B, например: LD B,200 CALL TWEET RET Прежде чем привести следующий пример, скажем несколько слов , относящихся не только к этой подпрограмме, но и ко всем остальным.Поскольку в реальных програм- мах цвет бордюра обычно не изменяется и определен заранее ,то он,как правило,не вычисляется в программе , а задается в явном виде загрузкой в аккумулятор кода нужного цвета.Вы также можете вместо первых строк от метки TWEET до команды DI просто написать XOR A для получения черного бордюра или , например,LD A,4 - для зеленого. Другой интересный момент касается уже самой программы,а собственно ассемблера. Вы,наверное,обратили внимание на запись DJNZ $ Как известно,символ доллара при транс- ляции принимает значение текущего адреса размещения машинного кода, а точнее,ад- рес начала строки ассемблерного текста. Поэтому такая запись полностью равноцен- на записи: LOOP DJNZ LOOP но позволяет обойтись без дополнительных меток. После такого небольшого лирического отступления давайте продолжим <изобрете- ние> звуковых эффектов. Особо часто в игровых программах можно услышать множество разновидностей виб- рирующих звуков.Получить такой эффект можно,периодически увеличивая и уменьшая частоту (т.е. количество циклов задерж- ки).Вибрация характеризуется двумя па- раметрами:собственной частотой и глуби- ной (амплитудой),поэтому для такой про- цедуры потребуется , кроме длительности звучания , задавать и некоторые другие входные данные.Сначала приведен текст подпрограммы для получения вибрирующего звука,а затем объясним,какие значения в каких регистрах следует заменить перед обращением к ней. VIBR LD A,(23624) AND #38 RRA RRA RRA LD C,A DI VIBR1 LD D,E ;Продолжительность VIBR2 LD A,C цикла спада (подъ- XOR 16 ема) LD C,A OUT (254),A LD A,H ;Изменение часторы ADD A,L звука LD H,A VIBR3 DEC A ;цикл задержки JR NZ,VIBR3 DEC D JR NZ,VIBR2 LD A,L ;смена направления NEG изменения частоты LD L,A DJNZ VIBR1 EI RET В регистр H нужно занести начальную частоту звука (имеется в виду,конечно, частота не в герцах,а в относительных единицах).Содержимое регистра E влияет на частоту вибрации: чем меньше его зна- чение,тем быстрее спад будет сменяться подъемом и наоборот.В регистре B задает- ся количество циклов вибрации ,т.е. в конечном счете - длительность звука,а в L заносится величина , определяющая глубину вибрации,или иначе,скорость из- менения высоты звука.Мы предлагаем такие значения регистров: LD H,100 LD E,120 LD B,4 LD L,1 CALL VIBR RET однако это только один из многих возмож- ных вариантов.Попробуйте поэксперименти- ровать и подобрать наиболее интересные варианты звучания, которые впоследствии сможете использовать в своих собственных разработках.
Other articles:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 1 April
Info Guide #13,
ACNews #50,
Avro News #01,
ACNews #47,
ACNews #40,
ACNews #29,
Black Metall #01,
ACNews #16,
Adventurer #13,
Polesse #19,
Subliminal Extacy #03,
ZX Pilot #37,
Always #03,
Born Dead #0G,
Odyssey paper #08,
Optron #26,
City #08,
Zodiac #02,
Polesse #05,
Nicron #108,
X-Magazine #10,
Nicron #82,
Energy #01,
Sorrow News #03,
Sorrow News #02,
Proton #27,
Think #08,
Wallpaper #01,
Spectrum Progress #03,
Spectrum Expert #02,
Micro #01,
X-Files #02,
Gorodok #05,
Deja Vu #04,
Anecdotes #01,
X-Files #02,
Maximum #35,
Impulse #01,
Spectrofun #01,
Faultless #07,
Breeze #06,
Nicron #27,
Echo #03,
Oberon #01,
Spectrofon #19,
On-Line #30,
Sinclair Town #01,
Sinclair Classic #04,
Spectrofon #04