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

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

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

   СТРУКТУРА СПРАЙТОВЫХ БЛОКОВ

   Это, пожалуй, одна  из  самых
объемных  и  запутанных   частей
данного повествования. В  ней  я
расскажу о том, как уживаются  в
памяти  спрайт  и  маска,  какие
данные помогают  нам  оперативно
находить адрес спрайта в  памяти
и многое другое.
   Наконец-то я затрону в  своем
рассказе остальные найденные на-
ми спрайты. Посмотрите  на  них,
они  не  случайно  имеют  разный
вид. Такое на первый взгляд  не-
значительное обстоятельство, как
маска, находящаяся с разных сто-
рон от спрайта, вовсе не являет-
ся незначительным. Именно от  ее
расположения относительно спрай-
та   зависит   скорость   печати
спрайта, а также  внешний вид  и
играбельность программы.
   Давайте посмотрим  на  спрайт
из игры 3D BATMAN.  Здесь  маска
и  спрайт  являются   отдельными
спрайтами и печатаются по очере-
ди - это довольно обычный способ
хранения спрайтов, но печать та-
кого спрайта занимает много вре-
мени  (разумеется,  это  понятие
относительно, и все  зависит  от
таланта программиста). Следующий
спрайт  из  программы  ELEFANT-1
интересен уже тем, что тут  нес-
колько  непонятно, что  же, соб-
ственно, на нем изображено.  Ну,
а если попробовать  и  соединить
между  собой,  точнее, поставить
по порядку  без пробелов, знако-
места 1, 3, 5, а рядом с ними 2, 
4, 6. Не правда  ли, теперь  все 
понятно и даже красиво.
   Это еще один способ  хранения
в памяти  маски  и  спрайта, ко-
торый, на  мой  взгляд, наиболее
удачен, и при печати  затрачива-
ет очень мало времени.  Это, так
скажем, шахматный способ  хране-
ния  спрайта,  когда  чередуются
байт маски и байт спрайта.
   Программа  JAK  THE  NIPPER-2
предлагает нам еще  один  способ
хранения спрайтов, когда маска и
спрайт  являются  одним  большим
спрайтом. В данном случае  прог-
рамма печати  работает  довольно
быстро, хотя и уступает предыду-
щему способу.
   О символьном формате  я  рас-
сказывать не буду, поскольку  об
этом много написано.  Вы  можете
прочитать о этом формате в  жур-
налах  "ZX-Ревю" или книге  "Как
написать  игру  на   ассемблере"
фирмы "Питер". Там же вы  найде-
те программы  для  печати  таких
спрайтов.
   Теперь  о  том, какие  данные
призваны помочь нам в работе  со
спрайтами.
   Я могу выделить два  типа не-
символьных блоков спрайтов  (да-
лее я буду говорить только о не-
символьных спрайтах, поэтому бу-
ду использовать слово спрайты) -
это блоки, состоящие из спрайтов
одинакового  размера,  и  второй
тип - блоки  разнородных  спрай-
тов. В первом случае заголовок у
спрайтов минимален - это  2 бай-
та - длина и высота  спрайтов, а
также 2 байта  (часто достаточно
1) - длина одного спрайта в бай-
тах.  Этих  данных   достаточно,
чтобы  быстро  находить   нужный
спрайт в  памяти и так же быстро 
их печатать.
   Со вторым типом блоков  слож-
нее,  тут  четырьмя  байтами  на
весь блок не отделаться. В  этом
случае существует  два  способа:
1) перед блоком спрайтов состав-
ляется таблица, в которой каждо-
му спрайту отводится 4 байта - 2
байта длина и высота  спрайта  и
еще 2 байта -  адрес  спрайта  в
памяти. Вместо конкретного адре-
са иногда указывают смещение  до
спрайта, в этом  случае  спрайты
можно перемещать в  памяти.  Та-
кой тип таблицы давайте  назовем
отдельным; 2) второй тип  табли-
цы можно назвать сквозным. Здесь
нет отдельной таблицы, но  перед
каждым спрайтом ставят все те же
4 байта с небольшой разницей:  2
байта - длина и  высота  спрайта
(этого) и 2 байта - адрес/смеще-
ние до СЛЕДУЮЩЕГО спрайта.
   Поскольку  отдельная  таблица
была описана  первой, о  ней  мы
сначала  и  поговорим.  Подобный
формат  заголовка  самый   опти-
мальный,  так  как  обеспечивает
самый быстрый доступ к  спрайту,
тогда как второй способ  требует
специальной программы для  опре-
деления местоположения спрайта в
памяти. Надо отметить  еще  один
момент -  при  прямой  адресации
(когда указан  конкретный  адрес
спрайта) перемещение спрайтов  в
памяти становится невозможным, а
заголовок блока спрайтов  допол-
няется еще 2 байтами (для  всего
блока), которые  сообщают  адрес
фиксации, то  есть  относительно
какого адреса  были  фиксированы
спрайты.
   В некоторых играх спрайты  не
одноцветные, а  цветные, поэтому
помимо маски  и  спрайта  к  ним
присоединяются еще и данные  ат-
рибутов. Атрибуты хранятся в том
же  формате, что  и  спрайты, но
здесь есть  один  момент  -  для
маски атрибуты НЕ НУЖНЫ, обрати-
те  на  это  внимание, чтобы  не
расходовать лишнюю память.
   Еще одна рекомендация - высо-
ту спрайта лучше всего сразу за-
давать в пикселях, дабы при  пе-
чати не тратить на  ее  вычисле-
ние время.
   После рассмотрения  всех  ос-
новных вопросов, касаемых форма-
тов спрайтов, мы переходим к ча-
сти  практической  и  рассмотрим
различные    процедуры    печати
спрайтов.



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

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'а, советы по использованию ассемблера.


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

Похожие статьи:
События - эскиз официального логотипа "FunTop".
IRC - краткое введение.
Наш смак - рецепт Кофейного ликеpа.
Дискуссия - Письма. Вопросы и ответы: Кемерево,Баянов Даниил, МAXWELL/JURRASIC, ГАЛУЗЕ И. из города Минска, Гена из города Шахты, Виктор из г.Симферополя.
screen - лучшая картинка на спектруме

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