logo
ZX-Review-1992-01-12

ПРОФЕССИОНАЛЬНЫЙ ПОДХОД

Сегодня продолжение разговора о некоторых приемах, позволяющих придать "профессионализм" вашим программам. Мы поговорим о небольших кодовых блоках, позволяющих воспроизводить различные звуковые эффекты в ваших программах, такие, какие невозножно создать, непосредственно используя оператор "ВЕЕР". Это, например, стрельба из лазерного пистолета, пуск ракеты, торпеды, получение приза и т.д. Также разговор будет о программе "SOUND", позволяющей создавать и редактировать такие звуки. Попутно, в качестве лирического отступления, остановимся еще на одной теме: о том, как усовершенствовать введение числовых параметров при помощи оператора "INPUT". Кроме того, рассматривая готовую программу, мы еще раз проследим все моменты, изложенные в предыдущие статьях: применение блока "ON ERROR GO ТО", структура программы, управление программой при помощи меню и т.д.

За основу разработки взята программа "SPECSOUND" фирмы OZ SOFTWARE. Возможно, читателям известен еще один, более ранний прообраз этой программы "DZWIEKI". Взяв за основу принцип формирования кодовых блоков, воспроизводящих звуки, вся программа была изменена настолько, что стала возможна эффективная работа по созданию и редактированию звуков. Кроме того, устранены многие программные ошибки, и сделан перевод на русский язык. В общем, это стала практически другая программа, однако идея осталась той же. Структура самих кодовых блоков, получаемых в результате работы программы, изменена незначительно, лишь настолько, насколько это не повредило совместимости с прототипом программы.

Воснове кодового блока одного звука лежит использование подпрограммы из ПЗУ "BEEPER", расположенной по адресу #03В5. При входе в эту подпрограмму, в регистре DE должно быть задано произведение частоты на время звучания звука, (то есть число периодов колебаний), а в регистре HL величина, эквивалентная значению периода колебаний. Подробнее о работе подпрограммы "BEEPER" было рассказано на страницах ZX РЕВЮ в разделе "СЕКРЕТЫ ПЗУ" см. N2 за 1991г. СТР. 28.

Вобщих словах, принцип формирования звука таков. Организуется цикл из последовательного обращения к подпрограмме "BEEPER", но при каждом следующем обращении период колебаний изменяется на определенную величину по сравнению с начальным тоном (может увеличиваться или уменьшаться). При этом, если величина смещения или ступеньки тона, незначительная, а число обращения к подпрограмме "BEEPER" (число ступенек тона) в цикле большое, то на слух получится плавно изменяющийся звук "скольжение" тона. Кроме того, получившееся "скольжение" входит в еще один цикл повторений, то есть большое число таких "скольжений" формируют результирующий звук. Изменяя исходные параметры в широких пределах и комбинируя их в различных взаимных сочетаниях, можно получать интересные звуковые эффекты. Имеется также возможность объединения двух или нескольких результирующих звуков в один (последовательное выполнение двух или более звуков), что открывает дополнительные возможности по созданию звуковых эффектов.

Для тех, кто интересуется машинными кодами, рассмотрим подробно блок кодов, воспроизводящий один звук. Если коды Вас не интересуют, то пропустите этот раздел и переходите непосредственно к Бейсик программе "SOUND".