ZX News #02
30 ноября 1996

Как сделать INTRO - пишем интро с плазмой и спрайтами.

<b>Как сделать INTRO</b> - пишем интро с плазмой и спрайтами.
(C)1996 Serge Segal

 ЧТО ТАКОЕ "ИНТРО" И КАК С НИМ БОРОТЬСЯ


             "По доброй старой традиции,
     я сейчас  буду  делать вид,
     что во всем разбираюсь,а вы
     будете делать  вид, что мне
     верите..."

              (из неопубликованных заяв-
              лений нашего преподавателя
              теоретической механики)

                Внимание!
 Эта статья не является пропагандистским
продуктом за или против интро. Цель, ко-
торую она преследует,читатель может быть
выявит сам.
( Прим.авт. : Очень сомневаюсь! )

 Итак, начнем-с. Предположим Вы начинаю-
щий  крутой, навороченный,  какой-нибудь
там "CROCODILE GENA + CHEBURASHKA SOFT".
  Насмотревшись на различные продукты от
монстров  современного программирования,
вы  решили  сделать  собственное интро к
какой-нибудь старой и никому на  ...  не
нужной игре.Такое желание должно всячес-
ки пресекаться! "Лучше игру напишите!" -
советует  по этому поводу известный жур-
нал  "Spectrofon" . Совет полезный, хочу
дать еще один  в том же духе : "Если Вам
захочется есть, то лучше  сходите в туа-
лет или  подышите глубже - тоже ведь по-
лезно."
 Надеюсь у Вас хватит достаточно наглос-
ти, чтобы, презрев советы  всех разумных
людей, взяться за это неблагодарное  де-
ло.

 Ладно,  приступим  пожалуй.  Возьмем, к
примеру, плазму. Старый  эффект, еще  из
"INSULT md". А поэтому, в  данной статье
будет рассмотрена моя версия плазмы.

Прим.авт.: Спустя два месяца, после того
как я написал этот эффект, к нам в Луга-
нск попала игра "LASER SQUAD FOR COVOX",
в которой  я с удивлением  увидел эффект
как  две капли воды  похожий на мой. Его
автор - Мусиенко  из Запорожья. Чтобы не
было обид, я свой эффект спрятал подаль-
ше,но теперь, ввиду его наглядности,про-
стоты и понятности, я извлек его на свет
Божий. Я готов  признать, что идея - Му-
сиенко, и не настаиваю на  своих  автор-
ских правах.

 К журналу прилагаются все исходники да-
нного интро.Главный принцип таков: плаз-
ма создается за счет  сложения двух оди-
наковых  синусоид   с  одновременным  их
сдвигом на различную длину .
 Для начала необходимо заготовить табли-
цу синуса, т.к. вычислять его  с помощью
встроенного калькулятора слишком громоз-
дко.
 Вот программа которая делает таблицу:

 10 FOR F=0 TO 255: LET S=16+INT (16*SIN
  (F/256*PI*8)):PLOT F,S:POKE (30000+F),
   S:NEXT F
 20 RANDOMIZE USR 15619:REM:SAVE "INTR1"
   CODE 30000,256


 Как видите, принцип прост до идиотизма,
но для  неврубившихся поясню - с помощью
BASIC'a  мы  создаем таблицу, в  которой
байты принимают значения от 0 до 31, из-
меняясь при этом по синусoидальной зави-
симости. Эту таблицу выгружаем на диск.
Число стоящее после PI - частотный коэф-
фициент, поэкспериментируйте с ним.
 Теперь,раздобудьте где-нибудь музончик,
скомпилируйте  его ( под адрес 25003 ) и
нарисуйте font'ик 8*8 (это можно сделать
в Art Studio ) . На диске с журналом, вы
найдете шрифт seg9.fnt и мелодию  ZEFIR.

 Далее  необходимо  разобраться  с самой
программой.

 Для  начала разработаем принцип  вывода
этой плазмы  на экран. По  моему личному
мнению здесь  LDIR не обойтись. Логичнее
всего  держать в памяти набор спрайтов и
выводить  их  последовательно,  один  за
другим, так, чтобы это выглядело естест-
венно. Таким образом все упирается в па-
мять. Давайте прикинем: 2/3 экрана - это
4096  байт, а свободного  места  у нас в
48К режиме -  16384  байт. Следовательно
поместится  только  четыре  спрайта, что
несколько маловато. Попробуем схитрить :
будем  выводить на обе трети экрана одни
и теже спрайты, но с разной начально фа-
зой, это даст нам уже 8 спрайтов. Даль-
ше - хуже : сделаем эту треть  зеркально
отображенной и получим уже  16 спрайтов!
Для  закрепления  своей победы над памя-
тью, вспомним что синус - функция перио-
дическая, следовательно, разрезав  экран
еще и вертикально, мы получим 32 спрайта
по  512  байт каждый. И  все это в одной
странице 48К памяти !

 Теперь напишем маленькую процедурку,ко-
торая будет подготавливать спрайты.

 Принцип очень прост : один указатель на
одно место в графике,другой - на другое.
Берем два байта,складываем,делим на два,
и  получаем  высоту пиксела, который нам
надо изобразить. Для его изображения во-
спользуемся процедурой ПЗУ 8880, которая
рассчитает его  адрес, а затем  выведем
его самостоятельно.
 После изображения 128 пикселов перейдем
к заливке. Метод  прост : с самого верха
экрана берем байт, накладываем его по OR
с нижним  байтом и заносим в этот ( ниж-
ний ) байт, снова по OR со следующим
(дальше, вниз) байтом.

 Когда  столбец  закончится, перейдем  к
следующему. Затем возьмем прямо с экрана
спрайт и занесем  его  в память. Изменим
оба указателя таблицы синусов и повторим
32 раза (по числу спрайтов).

 Далее, нам необходимо написать кусочек,
который все это выносит на экран.

 Используем так называемый метод DECRUN-
CHING'а. Это значит, что мы где-то в па-
мяти  создадим программу, которая  будет
выносить спрайт на экран.
 Назовем эту процедуру DECRUNCH.Вот при-
мерно, что получится в результате ее ра-
боты:

     LD SP, HL
     POP HL
     LD (#4000),HL
     LD (#4010),HL
     LD (#48E0),HL
     LD (#48F0),HL
     POP HL
     LD (#4002),HL
     LD (#4012),HL
     LD (#48E2),HL
     ....
     И так далее...

 Теперь осталось совсем немного: позабо-
титься о владельцах  128k машин и о
увековечении собственного имени.
 Для  этого  необходимо  при обнаружении
128k выполнить процедуру создания спрай-
тов несколько  раз с  разными начальными
значениями указателей, записывая резуль-
тат в разные страницы памяти. Затем сде-
лать  опрос  клавиатуры  и  переключение
страниц.

Прим.авт. Честно  говоря,  единственное,
что я взял из интро Мусиенко, - это при-
нцип раздельного  переключения текста  и
эффекта, до него мне это как-то не приш-
ло в голову. ( естественно это изменение
было  сделано  недавно, перед  созданием
статьи )

 Далее, мы напишем вывод текста, но нес-
ложный без особых наворотов. И,для боль-
шего эффекта, добавим две движущиеся по-
лосочки.
 Теперь осталось написать текст и  найти
какую-нибудь игрушку.
 В приложении к журналу  Вы найдете игру
"RUFF & REDDY demo", она полностью отве-
чает всем требованиям псевдоновья: ста-
рая, без музыки и,к тому же, демо-версия
вместо полной.
 Перечислю файлы:

  INTRN4.Z - исходник  интро  в  формате
             ZX-ASM 3.0
  INTR1, INTR2, INTR3 - результаты  экс-
             периментов с синусами.
  ZEFIR - мелодия C.Michaell'а скомпили-
             рованная под 25003.
  seg9.fnt - шрифтец от Serge Segal'а.
  RUFF&RED - игра "RUFF & REDDY demo"

 Ну все, теперь можно сказать : "До сви-
дания, AMIGA RULEZ 4EVER, ...",и т.д. и
т.п.

 P.S. К сему творению  Serge Segal  руку
приложил. Писано в славном городе Луган-
ске, 17 сентября 1996 года  от рождества
господа  нашего сэра Клайва Син... тьфу!
Иисуса Христа - антивируса ...???  ААА!!
вспомнил! Спасителя нашего...



Другие статьи номера:

От редактора - прошло два года со дня выпуска первого номера.

Анкетирование - нами будет выпущена энциклопедия "speccy особей".

Как сделать INTRO - пишем интро с плазмой и спрайтами.

Лабиринт - вторая часть фантастического рассказа.

Смагли-3: Воин света - новая игра от "Crystal Dream": предыстория ужасной бойни...

FIDO слухи - UNIQUE GROUP из Екатеринбурга пишет МЕГАдемо; IBM vs Speccy.

Как взломать программу - Как взламывать программы и игры на SPECCY: Пояснительная записка от Richard P Swann.

Как избавиться от юзера - Десять методов отделаться от юзера, у которого сдох дисковод.

Лечение современными методами - 5 способов лечения.

Screen Editor - пакет программ Screen Editor для создания экранов к играм.

Рабочий день - приколы (продолжение).

Законы Мерфи - если какая-нибудь неприятность может случиться, она случается.

Как устроены игрушки - статья о том как делаются игры лабиринтного типа с большим игровым пространством.

Хоббит - прохождение Адвентюрной игры "Хоббит, или Путешествие туда и обратно".

Сага о конгрессе - Большой Толкиновский Семинар 1995 года в Санкт-Петербурге.

Российско-Эльфийская дружба - Доклад на II Семинаре Толкиновского Общества.

Авторы журнала - Своих ГЕРОЕВ надо знать...


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

Похожие статьи:
Программирование - Вывод трехсимвольных расширений файлов в операционной системе TR-DOS.
Извращенцам - Куликовская битва (Рассказ очевидца).
Мощность, потребляемая бытовыми приборами и компьютерами - ZX Spectrum, PC, ноутбуки
Советы бывалого - Стратегия и тактика половой борьбы.
Глас народа - Рецензия от NEMO.

В этот день...   20 апреля