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

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

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

      ТАКИЕ РАЗНЫЕ СПРАЙТЫ

   Настал момент  разобраться  с
форматами спрайтов  и  способами
их хранения. Мы с Вами  большин-
ство спрайтов нашли  при  помощи
поиска спрайтов  и  лишь  один -
при помощи поиска  символов.  Из
чего  можно  сделать вывод - не-
символьный формат хранения  удо-
бней, нежели  символьный.  Чтобы
понять, в  чем  их различия, да-
вайте взглянем на формат, в  ко-
тором они хранятся в памяти. Для 
примера возьмем спрайт  размером
в 2 знакоместа в длину и 1 в вы-
соту:

       ┌─ 1 байт ─┬─ 2 байт ─┐   ┌─ 1 байт ─┬─ 9 байт ─┐
       ├─ 3 байт ─┼─ 4 байт ─┤   ├─ 2 байт ─┼─10 байт ─┤
       ├─ 5 байт ─┼─ 6 байт ─┤   ├─ 3 байт ─┼─11 байт ─┤
       ├─ 7 байт ─┼─ 8 байт ─┤   ├─ 4 байт ─┼─12 байт ─┤
       ├─ 9 байт ─┼─10 байт ─┤   ├─ 5 байт ─┼─13 байт ─┤
       ├─11 байт ─┼─12 байт ─┤   ├─ 6 байт ─┼─14 байт ─┤
       ├─13 байт ─┼─14 байт ─┤   ├─ 7 байт ─┼─15 байт ─┤
       └─15 байт ─┴─16 байт ─┘   └─ 8 байт ─┴─16 байт ─┘

             несимвольный               символьный

   Если Вы внимательно  взгляне-
те на  рисунок, то  увидите, что
символьный спрайт хранится в па-
мяти  как  шрифт  компьютера, то
есть в виде набора символов, ко-
торые печатаются на экран в  оп-
ределенной   последовательности.
Такие  спрайты  возможно   печа-
тать простым оператором  бейсика
PRINT, если перед этим указать в
переменной, которая  хранит  ад-
рес шрифта, адрес нашего  спрай-
та минус 256  байт.  В  машинных
кодах можно воспользоваться  ко-
мандой RST #10. Основную  работу
по печати спрайтов мы переклады-
ваем на ПЗУ компьютера  и, каза-
лось бы, это и хорошо. Но  такие
спраты крайне медленно печатают-
ся на экран, и если в Вашей про-
грамме много  ДВИЖУЩИХСЯ  объек-
тов, медлительность станет очень  
заметна.  Такой  формат подходит 
для печати статических или мало-

подвижных  спрайтов, как, напри-
мер, в программе KRAKOUT. В жур-
налах мы могли видеть и отличные  
от используемых в ПЗУ  принципов  
печати, которые работают во мно-
го раз быстрее, но все же недос-
таточно быстро.
   Что   касается  несимвольного
формата спрайтов, то  здесь  Вам
ПЗУ не поможет, и программу  для
печати  Вам  придется  создавать
самим, но этот  способ  хранения
спрайтов обеспечивает  оптималь-
ную по скорости печать.
   Существует еще один  символь-
ный  формат  хранения  спрайтов,
который  еще  более  медлителен,
чем  предыдущий.  Я бы  не  стал
на нем  останавливаться, но этот
формат пропагандируют в  "ZX Ре-
вю"  (отдельные корреспонденты),
а также  в  интереснейшей  книге
фирмы "Питер" "Как написать игру 
на ассемблере".
   Давайте рассмотрим этот  фор-
мат.
   Метод основан на том, что пу-
стые знакоместа (где виден  пун-
ктир) пропускаются и  в  спрайте
не  сохраняются.  Это  сохраняет 
несколько байтов, но привносит в
процедуру печати сложность  в ее
организации,  а  также  трудоем-
кость в описание спрайта. Посмо-
трите, каким образом он хранится 
в памяти:

ЗАГОЛОВОК:

DATA 26  (количество знакомест в
         спрайте).
DATA     0,0,7,0,1,7,0,4,7,0,5,7
         (первый ряд знакомест)
DATA     1,0,7,1,1,7,1,2,7,1,3,7
         и так далее.

ДАННЫЕ.

   Далее идут данные знакомест в
виде шрифта.

   На описание каждого знакомес-
та, помимо его данных, отводится
еще 3 байта:  первый - координа-
та Y, которая  отсчитывается  от
левого верхнего угла окна;  вто-
рой - координата X, которая  от-
считывается также от левого вер-
хнего  угла;  и  третий  байт  -
атрибуты  (ink,  paper,  bright, 
flash в одном). В  нашем  случае
пустыми остаются 4 знакоместа, а
спрайт  занимает  в  памяти  287
байтов, тогда  как  если  бы  мы
сохранили его в  форме    несим-
вольного спрайта, он занимал  бы
240 (хотя мы и не экономили пус-
тые знакоместа)  байтов.  Отсюда
вывод:  экономии  можно  достиг-
нуть лишь при  большом  количес-
тве пустых знакомест, что встре-
чается крайне редко, а вот  про-
цедура печати сильно  усложняет-
ся.
   Возможно, есть еще какие-либо
форматы спрайтов, но мне они  не
встречались, и  мы  переходим  к
рассмотрению масок.



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

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


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

Похожие статьи:
События - Международный фестиваль компьютерного искусства "FunTop98". Официальная информация о проведении.
Программирование - процедура индикаторов каналов на "AY" (эквалайзер).
Введение - Новостей с гулькин... нос.
Почта - уголок ламера (Детям до 16 лет читать категорически воспрещается).
ZXNet - Супертусовка СисОпов ZXNet состоится ...

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