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


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

Похожие статьи:
Реклама - Реклама и объявления.
Ассемблер - поговорим о такой необходимой процедуре как вывод спрайта.
Обзор - обзор игрушек: Space Gun, World Championchip Soccer, Night Breed, Satan 2, Obliterator, Stun Runner, Side Arms, Salamnder, Dark Fusion, Moontorc, Blood Valley, Magicians Land, Magic Fields, Mountain Bike Simulator, Starfox, Heavy Metall Mover.
CPU для Вас - Работа с TR-DOS на уровне машинных кодов.
Horrors Legends 2 - рецензии на фильмы ужосов от ~Platinum Video~.

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