ZX Forum #04
19 ноября 1997

Экранные эффекты - "выбегающая строка" из игры Rockstar.

<b>Экранные эффекты</b> -
   Следующий момент, позаимство-
ванный в  программе  ROCKSTAR  -
"выбегающая строка". Это не сов-
сем  "бегущая строка", поскольку
она никуда не убегает, а  только
выбегает справа и останавливает-
ся, достигнув  середины  экрана.
Именно так выводятся две строки,
которые Вы видели на  предыдущем
рисунке. При этом горизонтальный
скроллинг - плавный, выполняется
не по знакоместам, а  по  пиксе-
лам.
   Листинг "выбегающей" строки:
1420.
622B  D9       EXX
622C  E5       PUSH HL
622D  D9       EXX
------------------------------
622E  21B262   LD   HL,#62B2
6231  CD3E62   CALL #623E
------------------------------
6234  21D562   LD   HL,#62D5
6237  CD3E62   CALL #623E
------------------------------
623A  D9       EXX
623B  E1       POP  HL
623C  D9       EXX
623D  C9       RET
------------------------------
623E  7D       LD   A,L
623F  32B062   LD   (#62B0),A
6242  7C       LD   A,H
6243  32B162   LD   (#62B1),A
6246  3E02     LD   A,#02
6248  CD0116   CALL #1601
624B  2AB062   LD   HL,(#62B0)
624E  7E       LD   A,(HL)
624F  32AC62   LD   (#62AC),A
6252  23       INC  HL
6253  7E       LD   A,(HL)
6254  32AD62   LD   (#62AD),A
6257  23       INC  HL
6258  7E       LD   A,(HL)
6259  32AE62   LD   (#62AE),A
625C  23       INC  HL
625D  3E1F     LD   A,#1F
625F  32AF62   LD   (#62AF),A
6262  3E16     LD   A,#16
6264  D7       RST  #10
6265  3AAC62   LD   A,(#62AC)
6268  D7       RST  #10
6269  3E1F     LD   A,#1F
626B  D7       RST  #10
626C  7E       LD   A,(HL)
626D  D7       RST  #10
626E  CD7F62   CALL #627F
6271  23       INC  HL
6272  3AAF62   LD   A,(#62AF)
6275  3D       DEC  A
6276  32AF62   LD   (#62AF),A
6279  FE00     CP   #00
627B  00       NOP
627C  20E4     JR   NZ,#6262
627E  C9       RET
------------------------------
627F  0608     LD   B,#08
6281  D9       EXX
6282  2AAD62   LD   HL,(#62AD)
6285  0608     LD   B,#08
6287  0E20     LD   C,#20
6289  7E       LD   A,(HL)

1420.628A  CB27     SLA  A
628C  77       LD   (HL),A
628D  23       INC  HL
628E  0D       DEC  C
628F  7E       LD   A,(HL)
6290  CB27     SLA  A
6292  77       LD   (HL),A
6293  DCA562   CALL C,#62A5
6296  23       INC  HL
6297  0D       DEC  C
6298  00       NOP
6299  20F4     JR   NZ,#628F
629B  11E000   LD   DE,#00E0
629E  19       ADD  HL,DE
629F  10E6     DJNZ #6287
62A1  D9       EXX
62A2  10DD     DJNZ #6281
62A4  C9       RET
------------------------------
62A5  2B       DEC  HL
62A6  7E       LD   A,(HL)
62A7  CBC7     SET  0,A
62A9  77       LD   (HL),A
62AA  23       INC  HL
62AB  C9       RET
2
   Старт процедуры  -  с  адреса
загрузки: RANDOMIZE USR 25131.
   Собственно  процедура  "выбе-
гающая  строка",  непосредствен-
но заимствованная  из  программы
ROCKSTAR,  начинается  с  адреса
623EH. Однако при  своей  работе
она коррумпирует  альтернативный
регистр HL, из-за этого  не про-
исходит  корректного  завершения
процедуры при вызове ее из  Бей-
сика. Для устранения этого  неп-
риятного явления было предусмот-
рено сохранение значения альтер-
нативного регистра HL на стеке и
восстановление его при  заверше-
нии процедуры.
   Вызывающая программа располо-
жена  с  адреса  622BH  (25131).
Здесь процедура вызывается дваж-
ды для печати двух строк текста.
Перед каждым вызовом процедуры в
регистре HL задается адрес в па-
мяти, где располагается информа-
ция  для  "выбегающей"   строки.
Формат этой  информации  следую-
щий. Сначала идет число, опреде-
ляющее строку на экране для  пе-
чати "выбегающей" строки.  Затем
следует  двухбайтный  адрес,  он
определяет  в  дисплейном  файле
верхнюю  пиксельную линию, начи-
ная с которой надо выполнять го-
ризонтальный  скроллинг  строки.
Это верхняя пиксельная линия са-
мого левого знакоместа  заданной
строки. Далее в памяти  располо-
жено само  текстовое  сообщение,
длина которого  должна  быть  32
байта вместе с пробелами слева и
справа.
   Печать  очередного    символа
текста выполняется в 31-й  пози-
ции  экрана,  затем  выполняется
скроллинг влево на  8  пикселов,
после  чего  происходит   печать
следующего символа.  При  работе
процедура использует 6 служебных
ячеек в адресах 62ACH...62B1H.

   Для  получения  блока   кодов
"выбегающая строка"  можно  вос-
пользоваться Бейсик-программой:

   1 READ ram: CLEAR ram: READ f
$: READ st: READ len: FOR a=st T
O st+len-1: READ b: POKE a,b: NE
XT a: SAVE f$CODE st,len
  10 DATA 25130,"ro2",25131,205
 100 DATA
217,229,217,033,178,098,205,062,
098,033,213,098,205,062,098,217,
225,217,201,125,050,176,098,124,
050,177,098,062,002,205,001,022
 110 DATA
042,176,098,126,050,172,098,035,
126,050,173,098,035,126,050,174,
098,035,062,031,050,175,098,062,
022,215,058,172,098,215,062,031
 120 DATA
215,126,215,205,127,098,035,058,
175,098,061,050,175,098,254,000,
000,032,228,201,006,008,217,042,
173,098,006,008,014,032,126,203
 130 DATA
039,119,035,013,126,203,039,119,
220,165,098,035,013,000,032,244,
017,224,000,025,016,230,217,016,
221,201,043,126,203,199,119,035
 140 DATA
201,001,032,064,000,213,098,012,
128,072,032,032,032,032,082,079,
067,075,032,083,084,065,082,032,
065,084,069,032,077,089,032,072
 150 DATA
065,077,083,084,069,082,032,032,
032,032,001,032,064,032,068,073,
083,075,069,068,032,066,089,032,
086,065,076,069,078,084,073,078
 160 DATA
032,079,090,069,082,079,086,032,
049,057,057,050,032

   Ниже  приведена  Бейсик-прог-
рамма, демонстрирующая "выбегаю-
щую строку".

  10 BORDER 0: PAPER 0: INK 7: C
LEAR 25011
  20 LOAD "ro1"CODE
  30 LOAD "ro2"CODE
  40 BRIGHT 1: CLS : RANDOMIZE U
SR 25012: RANDOMIZE USR 25131: B
RIGHT 0



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

Help - Описание оболочки электронного издания "ZX-FORUM 4".

Секреты успешного дизайна - глава для книги "Дизайн Ваших программ"

Экранные эффекты - Бегущая строка из R-Type.

Экранные эффекты - гашения экрана из Zynaps.

Экранные эффекты - "сворачивание" экрана из Comando Tracer.

Экранные эффекты - плавное "затухание" экрана из Сommando Tracer.

Экранные эффекты - модификация символьного набора для получения оригинального стилизованного шрифта из игры Rockstar.

Экранные эффекты - "выбегающая строка" из игры Rockstar.

Экранные эффекты - "наливающийся" экран из игры Rockstar.

Экранные эффекты - сложный многоступенчатый эффект из игры Bubbler.

Новые 40 лучших процедур - скроллинг экрана, слияние двух картинок, инвертирование экрана, поворот символов, замена атрибутов, заливка замкнутого контура, вычисление адресов в экране, копирование части экрана и т.д.

Технология спрайтов - часть 1: введение.

Технология спрайтов - часть 2: охота на спрайты (поиск и выдирание).

Технология спрайтов - часть 3: форматы спрайтов.

Технология спрайтов - часть 4: форматы спрайтов с маской.

Технология спрайтов - часть 5: структура спрайтовых блоков (как уживаются в памяти спрайт и маска, какие данные помогают нам оперативно находить адрес спрайта в памяти и многое другое.)

Технология спрайтов - часть 6: подготовка данных к печати.

Технология спрайтов - часть 8: печать спрайтов (координаты заданы в знакоместах).

Технология спрайтов - часть 9: печать спрайтов (координаты заданы в пикселях).

Технология спрайтов - часть 10: обзор программ для работы со спрайтами и графикой.

Мир звуков Спектрума - глава 1: Физика звука.

Мир звуков Спектрума - глава 2: Оператор BEEP, Создание эффектов на BEEPе, Создание музыки на BEEPе.

Мир звуков Спектрума - глава 3: Как получается звук (устройство BEEP'ра и способы звукоизвлечения).

Мир звуков Спектрума - глава 4: Программирование звука на ассемблере.

Мир звуков Спектрума - глава 4.1: Программирование звуковых эффектов - Тон, Шум, Комплексы эффектов.

Мир звуков Спектрума - глава 4.2: Программирование звуковых эффектов - Управление громкостью.

Мир звуков Спектрума - глава 4.3: Программирование звуковых эффектов - Управление тембром.

Мир звуков Спектрума - глава 4.4: Программирование звуковых эффектов - Программирование музыки.

Мир звуков Спектрума - глава 4.5: Программирование звуковых эффектов - Многоголосые мелодии (полифония).

Мир звуков Спектрума - глава 4.6: Обработка внешних сигналов - оцифровка.

Мир звуков Спектрума - глава 4.7: Обработка внешних сигналов - Реверберация.

Мир звуков Спектрума - глава 4.8: Синтезирование речи.

Мир звуков Спектрума - глава 4.9: воспроизведение звука на прерываниях.

Мир звуков Спектрума - глава 5: Оператор PLAY для музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 5.1: Создание эффектов оператором PLAY.

Мир звуков Спектрума - глава 5.2: Создание музыки на PLAYе.

Мир звуков Спектрума - глава 6.1: описание регистров музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 6.2: Программирование эффектов и музыки под музыкальный сопроцессор AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 7: Обзор программного обеспечения ZX-Spectrum для создания звуков и музыки.

Мир звуков Спектрума - глава 7.1: Редактор звуковых эффектов SUPER SOUND.

Мир звуков Спектрума - глава 7.2: Музыкальный редактор Wham the Music Box.

Мир звуков Спектрума - приложения 1, 2: листинги звуковых эффектов SUPER SOUND'а, советы по использованию ассемблера.


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

Похожие статьи:
Enlight'96 - небольшое интевью с редактором журнала ZX-Format, Андpеем Рачкиным.
IZHnews #0C - POKEmonZЫ.
От авторов - У газеты новая читалка...

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