Кодерам - Сага о бордюре продолжается. Табличные движения.

ZX Time #03

КОДЕРАМ

САГА О БОРДЮРЕ ПРОДОЛЖАЕТСЯ... ТАБЛИЧНЫЕ ДВИЖЕНИЯ

(С) Николай Витенко

Если у вас Пентагон, то вы, скорее всего, были обрадованы небольшой интрушкой к этому номеру газеты. Кроме "ZX", прыгающего индикатора и бегущей строки на бордюре, там присутствовала "змейка", которая двигалась то вниз, то вверх. Именно этот эффект создается табличным способом. Вообще-то его идея и технология раскладки была заимствована мною (VNN) у RST7, но этот плагиат в современном виде ассемблерного листинга уже слабо замечается, но справедливость — есть справедливость!


Итак, для начала изложим общую концепцию любого табличного эффекта...

Допустим, существует какой-то определенный закон (правило), по которому должно производиться какое-либо действие. Этот закон довольно громоздкий, требует кучи вычислений и из-за этого занимает приличное количество процессорного времени для расчетов. А это самое действие должно быть оптимальное по скорости выполнения. Но одновременный расчет закона и выполнение по нему действия жрет очень и очень приличный отрезок времени, а для нас это недопустимо.

И тогда поступаем так: берем этот закон и вычисляем его полностью перед производством действия, а потом, уже по полученным данным, выполняем, собственно, действие (интересно, сколько раз здесь повторилось слово "действие"? :)) . Именно полученные данные и являются нашей таблицей! Это может быть движение, видоизменение чего-либо и т.д.

О табличных движениях на экране было написано во множестве изданий (начиная от Faultless, заканчивая ZX-Format и Deja Vu). На бордюре же все еще проще! Если для экрана необходимо было рассчитывать адрес следующей строки (обычно для этих целей тоже создается табличка адресов линий экрана для более удобного обращения), то для бордюра этого делать не надо. Ведь там все зависит лишь от задержек между рисованием той или иной линии: хочешь попасть на следующую строчку — засылай в порт фоновый цвет и выдерживай оставшиеся такты (224 minus "занятые такты" (для Пентагона)). Для бордюра необходимо только вычислить заранее движение и создать по нему "кадр эффекта", а потом выводить его.

Таблицу, если она не очень велика по размеру, обычно вычисляют какими-либо математическими функциями (чаще всего синусами и косинусами) в Бейсике. А полученные там значения (обычно смещения относительно нуля) используют в своих эффектах. Именно так мы и поступили, создавая таблицу для нашего эффекта...

В приложении к газете находится ALASM'овский исходник (TAB-EFF). Он снабжен комментариями — так что разобраться не составит особого труда. А загружать вас теорией мы больше не будем, все по той же причине — как рассчитывать таблицы, уже написано очень много. И что делать с таблицами дальше — также.

Поделитесь вашим мнением о статье