Inferno #10
30 апреля 2007
  Железо  

Будущее Спектрума - Видеоконтроллеры V9990. Расширение графических возможностей ZX Spectrum.


Аппаратное обеспечениеПериферийное оборудованиеВвод-выводУстройства видеовывода

  Одной  из  идей  расширения графических
возможностей ZX Spectrum, выдвинутых в по─ 
следнее время, является использование чипа 
видеоконтроллера  V9990  (использовался  в 
графической карте GFX9000 для MSX ).Данная 
статья написана для освещения возможностей 
чипов  этого класса, перспектив применения 
V9990 на ZX и сравнения его возможностей с 
графическими возможностями популярных 8- и 
16-битных игровых приставок. 

     Устройство графических подсистем
              на приставках

   Приставочные  видеосистемы конца 70-х -
середины 90-х представляют собой самостоя─
тельную  подсистему, имеющую  в своём сос─
таве  видеоконтроллер  (VDP, Video Display
Processor), видеопамять (VRAM и, возможно,
VROM),а также ряд дополнительных элементов
(ColorRAM, VideoDAC, и т.п), которые могут
являться или частью VDP,или отдельными чи─
пами. При этом внутренние ресурсы видеоси─
стемы (в частности,память) недоступны цен─
тральному процессору напрямую.Вместо этого
видеоконтроллер связан с процессором через
порты  ввода-вывода - через них передаются
данные для помещения в видеопамять и упра─
вления видеоконтроллером. Для процессоров,
не  имеющих  портов ввода-вывода - таковых
большинство, и  среди них, например, часто
применявшийся  в  приставках  6502 - порты
видеоконтроллера  отображаются  в адресное
пространство памяти. Также VDP могут гене─
рировать прерывания для процессора,как ми─
нимум  по  началу VBLANK, и иногда по ряду
других важных событий - начало отображения
сканлайна,столкновение спрайтов,превышение
лимита на количество спрайтов.
   Главной особенностью подобных видеосис─
тем является отсутствие растровых видеоре─
жимов,типичных для компьютеров - в которых
каждая точка имеет свой адрес в видеопамя─
ти  и  может быть произвольно включена или
выключена (APA-режимы, All Points Address─
able). Вместо  этого  используется подход,
когда хранением и отображением графических
данных  полностью занимается видеоконтрол─
лер, а центральный процессор только выдаёт
ему команды - что и где отобразить. Подоб─
ный  подход  позволяет эффективно работать
со сложной двухмерной графикой (стабильные
50/60fps, так любимые на Speccy) при невы─
сокой производительности центрального про─
цессора. Впоследствии, с  ростом  мощности
процессоров (середина 90-х и далее), в VDP
стали  появляться  и растровые видеорежимы
(например, в Gameboy Advance).
   Пара слов об используемых в тексте тер─
минах. Как можно будет увидеть ниже,единой
терминологии  нет, но  обычно  организацию
видеорежимов,  типичную  для  приставочных
VDP,  называют 'тайловой'. Также  встреча─
ются  названия 'блочная графика', 'pattern
modes'.В этом тексте буду использовать пе─
рвый  вариант. Значения  и варианты других
терминов будут объясняться по ходу текста.

               Возможности
      приставочных видеоконтроллеров

   VDP  может иметь один или несколько ви─
деорежимов,отличающихся,помимо разрешения,
набором  доступных в них возможностей. Ви─
деорежимы во всех приставочных VDP строят─
ся по одинаковой схеме.Изображение собира─
ется из набора слоёв (layers).
   Самый  нижний  слой  -  всегда   задник
(backdrop),что-то вроде бордюра на Speccy,
но занимает всю площадь экрана. Единствен─
ное, что  можно  с ним делать - менять его
цвет. Задник  может быть виден при наличии
'прозрачных' (не выводящихся) мест в оста─
льных  слоях. Таким  образом, при  наличии
желания возможна реализация эффектов, ана─
логичных бордюрным эффектам на ZX, на всей
площади экрана, при помощи передачи значе─
ния  только  в  один регистр, определяющий
цвет  задника. При  этом возможно задавать
область эффекта с помощью маски произволь─
ной формы (сделанной из слоя фона с 'проз─
рачными' и 'непрозрачными' точками).
   Далее  следуют  слои одного из двух ти─
пов, их  набор различается для разных VDP.
Последовательность вывода управляется сис─
темой приоритета,которая также бывает раз─
ной (присутствует всегда).
   Первый  тип - слои  фоновой графики. По
терминологии  конца  70-х  они  назывались
playfield (сокращённо PF, PFI, PFD),в 80-х
их стали называть background (BG,BGD).Каж─
дый такой слой собирается из одноразмерных
элементов, практически всегда имеющих раз─
мер  8х8  пикселей. Эти  элементы называют
очень  по-разному:  тайлами  (tiles, плит─
ка), символами  (characters, CHR), блоками
(blocks), ячейками  (cell), либо  patterns
(можно перевести как 'узор'). Графику, оп─
ределяющую внешний вид этих элементов,обы─
чно называют pattern,либо character. Тайлы
образуют  двухмерную матрицу, каждая ячей─
ка  которой содержит номер блока графики и
некоторые флаги (обычно 1-2 байта на ячей─
ку). Размер матрицы измеряется в количест─
ве элементов и может быть равным или боль─
шим  (в  2-4  раза), чем площадь экрана. В
последнем  случае  на  экране видна только
часть  матрицы. VDP позволяет выбирать на─
чало  отображения слоя фона с точностью до
пикселя,  что  даёт  возможность  быстрого
'скроллинга' - нужно  только изменять зна─
чения  смещения слоя в регистрах и записы─
вать в невидимой в данный момент части бу─
фера новые строки-столбцы, если уровень не
помещается в буфере фона. На многих 8-бит─
ных приставках, например,NES и Sega Master
System, размер  буфера  фона равен размеру
экрана, поэтому  нередко можно видеть, как
крайние  столбцы  фона 'достраиваются' при
движении.Обычно при выводе слой зациклива─
ется, т.е. если задавать  большое значение
смещения, с другой  стороны  экрана  будет
видна  противоположная часть слоя. Смещать
блоки друг относительно друга обычно нель─
зя. Тем не менее, иногда такая возможность
присутствует, но  редко (есть в Sega Mega─
drive/Genesis).Использовавшиеся в 8-битных
и  первых  16-битных  приставках VDP имели
всего один слой фона.Более поздние VDP ре─
ализуют  большее  количество слоёв - 2, 4.
Такие  слои независимы друг от друга и мо─
гут 'скроллиться' отдельно  друг от друга.
Матрица, описывающая  слой, хранится в ви─
деопамяти, вместе с графикой самих тайлов.
   Второй  тип - слои  со спрайтами. Любой
приставочный VDP предоставляет возможность
отображения  аппаратных  спрайтов.  Каждый
спрайт является отдельным слоем. Приоритет
вывода спрайтов определяется номером слоя,
а приоритет между спрайтами и фоном - сис─
темой  приоритета. Размер спрайтов зависит
от  возможностей конкретного VDP. Он может
быть  фиксированным  (часто  8x8 или 8x16)
или  выбираемым  из  нескольких  доступных
(обычно  не  больше 64x64) - как  правило,
для  всех спрайтов сразу. Также существует
небольшое  количество  VDP  с возможностью
назначения  размера (из нескольких доступ─
ных) для каждого спрайта отдельно. Графика
спрайтов  часто строится из тех же блоков,
что и графика фона,в этом случае они пред─
ставляют собой единый блок графики.Количе─
ство  спрайтов всегда ограничивается аппа─
ратными возможностями VDP по двум парамет─
рам - по  количеству отображаемых спрайтов
на экране и по количеству спрайтов,находя─
щихся на одном сканлайне.При этом значение
второго  параметра  обычно  гораздо меньше
первого. При превышении лимита спрайтов на
сканлайн 'лишние' спрайты в этом сканлайне
просто не выводятся.
   Графика  тайлов и спрайтов может содер─
жать 'прозрачные' пиксели, которые пропус─
каются при выводе - вместо них отображает─
ся содержимое нижнего слоя (другого спрай─
та, фона, задника).
   Большинство VDP имеет ограниченные воз─
можности для отображения цвета. Обычно это
палитра  или набор палитр, цвета в которых
выбираются  из  числа  доступных.  Палитра
может быть одна для всех слоёв, может быть
две  палитры (для  фона и спрайтов), может
быть больше. Часто встречается возможность
назначать  каждому спрайту и элементу фона
одну из нескольких доступных палитр. Коли─
чество 'ячеек' в палитре и количество дос─
тупных для выбора цветов определяется воз─
можностями VDP.Первое число обычно невели─
ко,и чем больше раздельных палитр доступно
- тем меньше в них ячеек. Второе число за─
висит от схемы формирования конечного цве─
та - от  16 цветов  до 16 миллионов цветов
(типичные  значения - 16, 64, 512, 4096, и
т.д.).Важно,что палитра никак не привязана
к конкретной  графике тайлов или спрайтов,
что  позволяет создавать различные эффекты
через изменение цветов в палитре. В англо─
язычной  терминологии используются следую─
щие названия:палитра - собственно palette,
либо  CLUT (сокращение  от  Colour Look-Up
Table); цвета в палитре - palette entries,
logical colours; доступные для выбора цве─
та - просто colours.
   Помимо перечисленных основных возможно─
стей,имеющихся у каждого VDP, могут быть и
дополнительные возможности.В частности,это
'отзеркаливание' спрайтов  или  тайлов, то
есть переворачивание их по вертикали и/или
горизонтали.Иногда встречается способность
частично  (в некоторой области)  запрещать
скроллинг слоя  с фоном, что бывает удобно
для организации панели игровой статистики.
Особенно продвинутые VDP, например, видео─
система SNES, имеют возможности смешивания
цвета фона и спрайтов (аппаратная полупро─
зрачность,alpha blending), масштабирования
и вращения слоёв фона или спрайтов. Другой
полезной, но не всегда имеющейся возможно─
стью (в частности, это больное место прис─
тавок Nintendo) является  определение фак─
та  столкновения  спрайтов - наложения  их
друг на друга в процессе вывода.Если такая
возможность присутствует, она почти всегда
работает 'попиксельно', т.е. факт столкно─
вения  определяется при реальном наложении
друг на друга  'непрозрачных' точек спрай─
тов, а не по координатам.

          Аппаратные ограничения
             и их преодоление

   По  сравнению с растровыми видеорежима─
ми, особенно с линейной организацией, воз─
можности  блочной графики выглядят ограни─
ченными. И это действительно так.Приставо─
чные  видеоконтроллеры ориентированы в ос─
новном на быстрый вывод простой двухмерной
графики. Поэтому  реализация  таких вещей,
как,например,проволочная или полигональная
графика, на  них сильно затруднена по сра─
внению  с растровыми  видеорежимами (одна─
ко  всё же  возможна). Помимо ограничений,
налагаемых самим подходом блочной графики,
VDP  имеют  ряд аппаратных ограничений. На
простых  VDP  эти ограничения порой весьма
существенны,однако часть из них можно обо─
йти при помощи различных  программных трю─
ков  и использования аппаратных особеннос─
тей конкретных VDP.
   Размер спрайтов у большинства VDP огра─
ничен 1-2 типовыми размерами, обычно поря─
дка 8x8 ... 16x16 точек. Так как во многих
играх  требуются объекты большего размера,
они составляются из нескольких спрайтов.
   Ограничение  на количество одновременно
отображаемых  спрайтов  на  экране   можно
обойти, изменяя положение и вид спрайтов в
начале каждой строки растра.Для этого тре─
буется  либо наличие прерываний по HBLANK,
либо  точная  синхронизация  программы. На
практике  этот  трюк активно использовался
только на ранних приставках,где количество
спрайтов было предельно ограниченным (нап─
ример, 2 - на Atari 2600), впоследствии он
стал  встречаться реже. В терминологии MSX
подобная техника называется sprite-split.
   Ограничение на количество цветов, кото─
рые  можно использовать  в пределах одного
спрайта, в принципе, можно  обойти, выводя
несколько спрайтов друг поверх друга.Но на
практике  подобная техника применялась до─
вольно редко - на тех системах,где её при─
менение может быть необходимым,ограничения
на общее  количество  спрайтов на экране и
на  количество  спрайтов  на  одной строке
также очень жёсткие.
   Ограничение на количество цветов, одно─
временно отображаемых на экране,можно обо─
йти  аналогичным способом, изменяя палитру
при прохождении луча по нужной строке рас─
тра.
   Главным из ограничений,конечно,является
лимит  количества  отображаемых  на  одном
сканлайне спрайтов, особенно при небольшом
размере спрайтов.Например,для NES возможно
отображение всего лишь 8 спрайтов (с шири─
ной  8 пикселей каждый) на сканлайн. Много
это или мало?Для игр с вертикальным скрол─
лингом  (типа  Flying Shark, Road Fighter)
это  не очень критичное ограничение, в них
ситуация с большим количеством объектов на
одной горизонтальной линии возникает неча─
сто. Для более типичных приставочных игр -
'бегалок'  -  это  ограничение  становится
проблемой. Предположим,что каждый персонаж
(герой, враги) имеет ширину 16 пикселей (2
спрайта). Достаточно  всего трёх врагов на
одной высоте с героем, чтобы исчерпать ли─
мит, и любой  эффект, использующий спрайты
(взрыв, пуля) превысит его. При превышении
лимита  спрайтов  на сканлайн все 'лишние'
спрайты  просто  не отображаются. Избежать
подобных ситуаций в играх обычно затрудни─
тельно. Эту проблему нельзя решить полнос─
тью, и  никакие  трюки  тут не помогут. Но
можно  уменьшить  её  влияние на геймплей.
Суть решения в изменении последовательнос─
ти спрайтов на каждом кадре.При превышении
лимита  в одном  кадре пропадёт одна часть
спрайтов, в другом другая. Визуально будет
наблюдаться артефакт в виде мерцания спра─
йтов (его можно  видеть практически в каж─
дой игре на NES),но ни один объект не про─
падёт  полностью. Такая техника называется
sprite multiplexing. Также многие VDP, у и
NES  в том  числе, имеют средства указания
'важности' спрайтов  -  какие  отбрасывать
при превышении лимита в первую очередь.Это
позволяет  избегать мерцания наиболее важ─
ных объектов, например, главного героя.
   Большинство  VDP  на  8- и 16-разрядных
системах не имеют возможности вывода полу─
прозрачных  объектов  (альфа-блендинга). И
в отличие от  систем с растровыми видеоре─
жимами, на них практически невозможно реа─
лизовать этот эффект программно.Для дости─
жения эффекта 50% полупрозрачности исполь─
зуют  очень  простой  трюк. Он возможен на
любых  системах, выводящих  изображение на
ТВ. Объект  выполняется в виде сетки точек
в шахматном порядке - точка графики,пустая
точка.Из-за невысокой чёткости изображения
на обычных телевизорах соседние точки нем─
ного сливаются,и создаётся эффект полупро─
зрачности. Чем  выше горизонтальное разре─
шение  у системы - тем лучше смотрится эф─
фект.Таким образом сделаны кусты на первом
уровне  в Sonic 2 и линейки энергии бойцов
в Mortal Kombat 3 на Sega Megadrive. Подо─
бный  же  подход используется и на ZX, для
создания   промежуточных  оттенков  цветов
(штриховка). Чуть  реже встречается другой
способ имитации полупрозрачности,обычно он
применялся на игровых автоматах, у которых
частота кадровой развёртки обычно равна 60
герц.Основная идея остаётся той же - штри─
ховка  в шахматном порядке, но каждый кадр
непрозрачные и прозрачные  точки  меняются
местами. Конечно,возникает мерцание с час─
тотой  30 герц, но эта частота  достаточно
высока,чтобы оно не было сильно заметно, а
в  целом  эффект  смотрится лучше, так как
отдельные точки штриховки становятся менее
заметными.Такой эффект активно использова─
лся,например,в Street Fighter Alpha (Zero)
3 на игровом автомате CPS-2.
   Самым  сложным для обхождения ограниче─
нием  является сама идея блочной графики -
если требуется,например,реализовать векто─
рную графику. Однако,это ограничение можно
обойти рядом способов,в зависимости от во─
зможностей  конкретного  VDP. Если система
имеет  достаточно видеопамяти и может дос─
таточно  быстро передавать в неё данные от
процессора,можно имитировать растровый ре─
жим, назначив  каждому  'знакоместу'  фона
тайл с уникальным номером, и рисовать нуж─
ную графику прямо в изображениях тайлов.На
системах, где видеопамяти недостаточно для
хранения изображения полного экрана, можно
усложить алгоритм отрисовки, чтобы фрагме─
нты получаемого изображения, где присутст─
вуют разные цвета, поместились в имеющуюся
память, а для зон с одинаковым цветом наз─
начался один и тот же тайл. Подобным обра─
зом, например, реализована  игра  Elite на
NES. Конечно, такие  решения  никак нельзя
назвать простыми, однако использование ве─
щей не по их прямому назначению всегда со─
пряжено с некоторыми трудностями.

       Типичные графические эффекты

   По всему вышесказанному может создаться
мнение, что  VDP  представляют  собой одно
сплошное ограничение. Конечно, это не так,
есть и приятные моменты. Помимо своих пря─
мых  обязанностей  по  быстрому выводу 2D-
графики,VDP предоставляют возможность про─
стой реализации ряда эффектов.
   Наиболее  интересной  возможностью  яв─
ляется  техника, имеющая  название  raster
effect. Также  встречается  название line─
scroll, однако обычно его используют,чтобы
указать  на дополнительную аппаратную под─
держку,упрощающую реализацию эффектов.Суть
этой техники  состоит в изменении смещения
слоя  (или  слоёв) фона на каждой из строк
растра. Аппаратная поддержка заключается в
наличии  указателей смещения для каждой из
строк, которые  можно  задать  один раз за
кадр. При  отсутствии такой поддержки сме─
щение  фона  придётся  изменять вручную по
HBLANK  или с помощью точной синхронизации
программы.Поэтому эффекты этого типа редко
встречаются на системах,не имеющих генера─
ции прерывания по HBLANK.
   Чаще   всего   linescroll  используется
для  реализации  так  называемого parallax
scrolling'а. Это  метод создания кажущейся
глубины  сцены  за счёт скроллинга (обычно
только горизонтального) её частей с разной
скоростью. Например, поверхность  земли  в
игре  жанра  'платформер' (например, Sonic
или Mario) движется быстро,а облака на не─
бе - медленно. В зависимости от количества
слоёв фона,поддерживаемых VDP,эффект имеет
ограничения. Так,при наличии только одного
слоя  фона сцена делится на ряд горизонта─
льных  полос, каждая из которых имеет свою
скорость  перемещения, и  объекты  с одной
полосы не могут заходить на другую полосу.
Однако это можно обойти, выводя части объ─
ектов  спрайтами. Такое решение этой проб─
лемы  часто  применялось  на  приставке PC
Engine, так как её VDP поддерживал спрайты
довольно большого размера.При наличии двух
и более слоёв фона  ограничения становятся
менее серьёзными - они сохраняются для ка─
ждого из слоёв в отдельности, но сами слои
имеют раздельные смещения. На ближнем слое
выводится  основной фон игры, движущийся с
одной  скоростью, а на дальних выполняются
нужные  эффекты. Этот принцип используется
в большинстве  игр на Sega Megadrive/Gene─
sis. Заметить  наличие  ограничений в этом
случае нелегко - так, в первых уровнях игр
Sonic the Hedgehog 1 и 2 или Rocket Knight
Adventures на упомянутой приставке при пе─
рвом взгляде создаётся впечатление наличия
огромного  количества слоёв фона, и только
присмотревшись  можно  понять, что  это не
так.
   Возможно  создание  и других эффектов с
помощью linescroll. Например,эффект дрожа─
ния  горячего  воздуха. Для этого к общему
смещению слоя фона добавляется, скажем, по
синусоиде, небольшое дополнительное смеще─
ние. В  случае с двумя и более слоями фона
эффект может быть применён как ко всем,так
и к одному  из них (переднему или заднему,
в  зависимости  от  задумки). Более  редко
встречаются  эффекты с изменением вертика─
льных  смещений, так  как не все VDP имеют
возможность изменения вертикального смеще─
ния  фона в момент прохода луча по растру.
За  счёт  изменения  вертикальных смещений
можно  реализовать эффект растягивания или
искажения слоя фона по вертикали. Совмещая
изменение  горизонтальных  и  вертикальных
смещений, можно  получить  и более сложные
эффекты.
   Эта  же техника может быть использована
и для решения такой  задачи, как отрисовка
трассы в полутрёхмерных гонках (типа Chase
H.Q. ). Собственно, сам  принцип  придания
плоской  трассе  перспективы в таких играх
называют scanline-based, а в целом технику
называют  sprite-based (потому что объекты
в  подобных  играх представлены спрайтами)
или  scale-based  (потому  что спрайты при
выводе мастшабируются).Linescroll в реали─
зации вывода трассы в блочных режимах при─
меняется для получения вертикальной попик─
сельной  точности  вывода тайлов, позволяя
сделать размер тайлов 1x8 вместо 8x8. Каж─
дая горизонтальная строка 'текстуры' доро─
ги хранится во всех возможных горизонталь─
ных масштабах, и при выводе нужный масштаб
выбирается  изменением смещения слоя фона.
Примечательно,что эффект движения по доро─
ге в первых гоночных играх с использовани─
ем  этой техники реализовывался через ани─
мацию палитры (см. дальше).
   Эффекты  с изменением палитры. Эта тех─
ника  иногда  называется  Palette-Shifting
или Palette Animation  и может использова─
ться  на любых системах в любых видеорежи─
мах  (не только блочных), где отображаемые
цвета  изображения определяются программи─
руемой  палитрой, а  не  непосредственными
значениями цвета для точек растра.Основная
идея  заключается в том, что при изменении
значений  в палитре  сразу  же  изменяются
цвета в отображаемом изображении. При этом
не  требуется  изменения собственно данных
графики - для растровых режимов без палит─
ры  для  достижения  аналогичного  эффекта
пришлось бы перебирать все точки растра.
   Условно палитровые эффекты можно разде─
лить  на  две группы. Особенность первой -
изменение  всех цветов палитры сразу. Наи─
более типичный эффект  этой группы - 'фей─
динг' (fading,от слова fade - 'исчезание',
'затухание')  изображения. То есть плавное
гашение  и появление экрана из чёрного или
белого цвета до нормального изображения, и
наоборот. Также  возможно плавное обесцве─
чивание  изображения  или  смена  цветовой
гаммы.Смена гаммы может использоваться,на─
пример, для  подводных  сцен - когда герой
попадает в воду, можно плавно изменить па─
литру, добавив больше синего оттенка,а ко─
гда он выбирается на поверхность - вернуть
нормальную палитру.Таким же способом можно
реализовать  смену времени суток (подобный
эффект  реализован в Fantastic Dizzy). При
этом  сама  графика не изменяется, в любой
модификации  сцены используется один и тот
же набор графики.
   Вторая группа палитровых эффектов отли─
чается  изменением  только  части цветов в
палитре, это собственно анимация при помо─
щи палитры. Она  применяется для изменения
цвета  отдельных  объектов.  Например, для
'вспышек молнии' на заднем плане; отсветов
от выстрелов  в ночной  сцене; для мигания
врагов при попадании в них пуль; для зажи─
гания  стоп-сигналов у машин; для анимации
поверхности воды или лавы. В эту же группу
можно  включить изменение цвета персонажей
при  использовании одного набора графики -
это может быть изменение цвета босса в за─
висимости от оставшейся у него энергии;или
внешне  одинаковые, но  разноцветные враги
(типично  для  игр  в  жанре beat'em'all и
shmup'ов). Этим же способом можно реализо─
вать изменение яркости персонажа в зависи─
мости от того, находится он под источником
света или в темноте.
   Эффекты  с изменением  графики  тайлов.
Анимацию объектов на VDP можно реализовать
двумя способами. Обычно используется заме─
на  номеров  отображаемых  блоков фона или
спрайтов. Это  быстрый  и логичный способ.
Однако также возможно заменять и саму гра─
фику  блоков. Этот способ может быть более
медленным (в зависимости от объёма изменя─
емых данных), однако он позволяет реализо─
вать некоторые эффекты. Например, на VDP с
одним  слоем фона возможно реализовать эф─
фект второго слоя с параллакс-скроллингом.
Второй слой в этом случае представляет со─
бой  простой повторяющийся узор небольшого
размера,например,32x32 пикселя. Для созда─
ния эффекта нужно просто делать скролл ис─
ходной  графики узора в нужном направлении
и с нужной скоростью.Также с помощью этого
метода  можно экономить видеопамять в слу─
чае, если  её  недостаточно - например, не
обязательно  хранить  все  кадры  анимации
главного героя игры-платформера в видеопа─
мяти, можно  пересылать  требуемый  кадр в
одни  и те же блоки, выделенные для одного
кадра  изображения героя. Другое возможное
применение этой техники - постепенное поя─
вление или исчезание фонового изображения.
Для  этого  при  загруженной  карте тайлов
нужно пересылать графику тайлов в видеопа─
мять не сразу всю, а, например, построчно.
 

 

             Характеристики
        некоторых приставочных VDP

   Nintendo Entertainment System (1983)

   Возможности видеосистемы этой приставки
интересны  прежде  всего из-за того, что в
середине  90-х годов она была подключена к
Spectrum'у. В то время такой тандем по ря─
ду причин  не получил особой популярности.
Нынешняя идея подключения V9990 к ZX часто
сравнивается с этой разработкой. После оз─
накомления с характеристиками этих VDP мо─
жно будет хорошо прочувствовать разницу.

   Разрешение:  256x240.  Реально  столько
видно  в PAL overscan, в NTSC видно только
256x224. Есть возможность выключить обнов─
ление экрана ниже этой области для повыше─
ния производительности видеопамяти.
   Видеопамять: Около 2 КБ (буфер фона,па─
литра,описатели спрайтов - в физически ра─
зных  устройствах; в буфер фона может под─
ключаться  ROM), 8 КБ VROM для графики (на
картридже,переключение банков теоретически
даёт неограниченный объём).Чтение из виде─
опамяти  нужно  производить дважды, первое
чтение  возвращает неверные данные. Работа
с видеопамятью  возможна  только в течение
VBLANK. Работа с описателями спрайтов воз─
можна через DMA.
   Спрайты: 64  на экране, размеры 8x8 или
8x16 (все спрайты одного размера),3 цвета.
Отзеркаливание по вертикали и горизонтали.
Максимум 8 спрайтов на сканлайн.
   Бэкграунд: Один слой. Тайлы 8x8,3 цвета
на тайл (есть ограничение  на выбор цветов
для групп 4x4 тайла). Буфер 32x20.
   Палитра: 53 цвета, из них  одновременно
25 (задник + 4 палитры по 3 цвета для тай─
лов + 4 палитры по 3 цвета для спрайтов).
   Скроллинг: Есть.
   Столкновения: Нет.

   Чип  разработан специально для пристав─
ки,фирмой Ricoh. Имеет официальные кодовые
обозначения RP2C02-RP2C07 (разные версии),
реально встречались  маркировки 6538, TA03
(видимо, придуманы из головы злостными ки─
тайцами). Некоторые отдельные личности ут─
верждают,что он вырос из TMS9918.Возможно,
это  действительно  так, но  на самом деле
почти  ничего общего между ними нет. Имеет
довольно хитрое устройство, из-за чего его
параметры  было  затруднительно  описать в
краткой сводке выше.Есть большое количест─
во тонкостей,в том числе возникающих из-за
возможности  иметь в составе картриджа до─
полнительные  устройства, включая навороты
для  графической подсистемы (и они реально
использовались).Только один тайловый виде─
орежим.Чип не имеет прерывания по сканлай─
ну, только  NMI  по  VBLANK. Тем не менее,
line-scroll в играх встречался, видимо, за
счёт  выдерживания  программных пауз. Есть
возможность  определить позицию луча через
'sprite #0 hit detection' - флажок,устана─
вливающийся при проходе луча через видимую
(непрозрачную, в фоне  под ней обязательно
должен  быть  установлен  ненулевой  цвет)
часть первого спрайта в списке.Эта возмож─
ность использовалась для запрета скроллин─
га части фона с игровой статистикой,напри─
мер, в  Super Mario Bros. (спрайт #0 - это
мигающая монетка в панельке сверху).

        Sega Master System (1986)

   Первый выход Sega на рынок домашних ви─
деоигр, практически  незамеченный  у нас -
из-за не очень успешной конкуренции с NES.
Многие игры с Sega Megadrive/Genesis выхо─
дили и для этой системы, среди них - 8-би─
тная версия игры Sonic the Hedgehog.

   Разрешение: 256x192 (256x224, 256x240 в
зависимости от видеорежима и PAL/NTSC).
   Видеопамять: 16 КБ.
   Спрайты: 64 на экране,размеры 8х8,8х16,
16x16 (все  спрайты  одного размера), в 16
цветах.  Нет  отзеркаливания.  Максимум  8
спрайтов на сканлайн.
   Бэкграунд: Один слой. Тайлы 8х8, до 448
штук (ограничено объёмом VRAM), 16 цветов.
Буфер  32x28  тайлов, отзеркаливание тайла
вертикально/горизонтально.
   Палитра: 64 цвета,на экране одновремен─
но 32 цвета (16 спрайты + 16 фон).
   Скроллинг:  Есть,  возможен   частичный
скроллинг.
   Столкновения: Есть, только факт пересе─
чения любых двух.

   Специальный  видеочип с кодовым обозна─
чением 315-5124 (позднее 315-5246), разра─
ботанный  Sega для своих 8-битных аркадных
автоматов.С некоторыми изменениями исполь─
зовался в Game Gear (карманная версия при─
ставки, чип 315-5378). Аналогично NES, ча─
сто  упоминается, что  в его  основе лежит
TMS9918/9928. TMS9918/9928  использовались
в MSX1, Coleco Vision и более ранних маши─
нах от Sega - в приставке SG1000 и компью─
тере SC3000. Фактически же общего немного.
Совпадает ряд мелочей,но различий больше -
9918 не имел скроллинга и определения сто─
лкновений,поддерживал всего 32 одноцветных
спрайта, фиксированную палитру в 16 цветов
и один слой фона с аналогичными Spectrum'у
характеристиками.
   Только  тайловые и текстовые видеорежи─
мы, растровых видеорежимов нет. Горизонта─
льный  скроллинг  всегда  с 'артефактом' в
левом  столбце  экрана  (7 пикселей). Этот
столбец либо имеет цвет фона, либо случай─
ные  данные из графики спрайтов в видеопа─
мяти. Фишка 'частичный скроллинг' выражае─
тся в возможности запретить горизонтальный
скроллинг для верхних 16 линий, где обычно
выводится игровая статистика. Произвольную
область скроллить нельзя.Изменять значение
вертикального  скроллинга в процессе отоб─
ражения кадра нельзя, горизонтальный изме─
нять  можно. Есть  прерывание  по VBLANK и
сканлайну.Таким образом line-scroll возмо─
жен, но в играх он почти не использовался.
Несмотря на все ограничения,графика выгля─
дит неплохо.В последних играх (особенно на
Game Gear, который  продержался  на  рынке
чуть дольше) - заметно  лучше NES, за счёт
большего количества цветов.

      PC-Engine/TurboGrafx 16 (1987)

   Первая приставка,принёсшая в дома игро─
ков  'настоящую 16-битную графику'. Именно
так она рекламировалась в своё время. Гра─
фика на ней действительно была лучшей сре─
ди существующих на тот момент игровых сис─
тем. Много цветов,крупные спрайты в играх,
активное использование параллакс-скроллин─
га - всё то, что впоследствии стало непре─
менными  атрибутами  16-битных  игр. Также
(спустя  год) - первая игровая приставка с
CD-ROM.Специальное отступление для поклон─
ников Amiga:приставка и компьютер - разные
вещи  и  разные  категории  пользователей;
Amiga и другие популярные в Европе компью─
теры  не были распространены в Японии, там
существовало  большое количество своих до─
машних компьютеров,не выходивших за преде─
лы страны.

   Разрешение: Программируемое  с шагами в
8 пикселей, до 512x240. В основном исполь─
зовалось 256x224.
   Видеопамять:  64 КБ.  Есть  DMA  внутри
VRAM.
   Спрайты: 64  на  экране, размеры 16x16,
16x32, 32x16, 32x32,32x64 (произвольно для
каждого спрайта). 16 цветов на спрайт. От─
зеркаливание  по  вертикали и горизонтали.
Максимум 16 спрайтов на сканлайн.
   Бэкграунд: Один слой. Тайлы 8x8,16 цве─
тов  на тайл. Размер буфера изменяемый, от
32x32 до 64x128 (несколько вариантов).
   Палитра: 512  цветов  (часть дублирует─
ся), на экране одновременно до 482. 16 па─
литр  для  спрайтов, 16  для  тайлов фона;
каждая палитра по 16 цветов (каждому спра─
йту  и тайлу может быть назначена любая из
16 палитр).
   Скроллинг: Есть.
   Столкновения: Есть, спрайт #0 с осталь─
ными спрайтами.

   Специальный 16-битный чип,разработанный
Hudson  для  этой  приставки. В отличие от
других консолей,имевших VDP в едином чипе,
делится  на  два чипа: HuC6260, VDC (Video
Display Controller)  и HuC6270, VCE (Video
Colour Encoder - всё, что связано с палит─
рой  и видеовыходом). Имеется  продвинутая
система  прерываний  от VDP: по VBLANK, по
окончанию DMA-пересылки,по достижению ука─
занного  сканлайна, по  превышению  лимита
спрайтов на сканлайн,по столкновению спра─
йта #0 с любым другим.Также в системе есть
таймер (6992 Гц, 7-битный  счётчик) и пре─
рывания по нему. Значения скроллинга можно
менять в любой момент,что приводит к неме─
дленному  изменению отображения; совместно
с системой прерываний  позволяло создавать
все  типы эффектов line-scroll. В ряде игр
встречались сложные эффекты типа масштаби─
рования  и вывода  залитых прямоугольников
(например,  крутящийся  и  увеличивающийся
треугольник, превращающийся в многогранный
круг, уменьшающийся  в точку на буквой I в
эмблеме фирмы Taito,игры от которой встре─
чались на PCE).
   Впоследствии  была  выпущена более про─
двинутая  версия  приставки  -  SuperGrafx
(1989). Она  имела  сразу  два видеочипа -
вдвое больше спрайтов, слоёв фона,видеопа─
мяти, при том же центральном процессоре на
той же частоте. В результате  вышло только
6 игр с поддержкой расширенных графических
возможностей,продажу приставки быстро све─
рнули. Последующая TurboDuo (PCE+CD+192 КБ
памяти, 1992) снова имела один видеочип.

      Sega Megadrive/Genesis (1988)

   Эту приставку иногда называют 'неполно─
ценно 16-битной',так как она имеет относи─
тельно  слабый по возможностям, но быстрый
VDP. Тем  не менее, в целом эта её 'непол─
ноценность' меньше аналогичной у PCE (име─
вшей  обратный перекос баланса VDP/CPU) за
счёт 68000 в качестве основного CPU.

   Разрешение: 256x224, 320x224 (также во─
зможны интерлейсные режимы).
   Видеопамять:  64 КБ.  Есть  DMA  внутри
VRAM; DMA  из  основной памяти  в VRAM (во
время VBLANK, 7380 байт).
   Спрайты: До 80 на экране, в зависимости
от видеорежима. Размер от 8x8 до 32x32, 16
цветов. Нет отзеркаливания. До 20 спрайтов
на сканлайн.
   Бэкграунд: Два слоя. Тайлы 8x8, 16 цве─
тов  на тайл. Размер буферов фона изменяе─
мый, от  32x32  до  128x32. Отзеркаливание
тайла по вертикали/горизонтали.
   Палитра: 512  цветов, 64  на  экране. 4
палитры по 16 цветов.
   Скроллинг: Есть, раздельный  для слоёв,
возможен частичный скроллинг.
   Столкновения: Есть, только факт пересе─
чения любых двух.

   Специальный видеочип, являющийся сильно
развитым  вариантом  VDP от Master System.
Имеет обозначение 315-5313.В него добавле─
ны новые видеорежимы, с частичным сохране─
нием старых - приставка создавалась с при─
целом на обратную совместимость,всё старое
железо в ней присутствует,и с помощью спе─
циального  переходника  можно использовать
игры от SMS. Растровые видеорежимы по-пре─
жнему отсутствуют, в старых есть ряд отли─
чий, из-за  чего  около десятка игр от SMS
работают некорректно.
   Система прерываний осталась прежней, по
VBLANK и сканлайну. Зато раздельный скрол─
линг сильно эволюционировал - возможен го─
ризонтальный  скроллинг каждого сканлайна,
горизонтальный скроллинг каждой строки та─
йлов;вертикальный скроллинг столбцов в два
тайла  шириной. Один  из слоёв может иметь
окно без скроллинга. Соответственно, line-
scroll аппаратный, причём в двух слоях фо─
на,что сильно облегчает создание связанных
с его использованием эффектов.

              Super Nintendo
       Entertainment System (1990)

   Полноценная 16-битная приставка, с мощ─
ными звуковой и видеосистемами,но довольно
слабым  процессором - 65C816  (расширенный
до 16 бит 6502).

   Разрешение: От  256x224  до  512x448. В
основном   использовалось   256x224  (реже
320x224).
   Видеопамять: 64 КБ. Есть DMA, позволяет
перемещать  небольшие  блоки данных в VRAM
во время HBLANK.
   Спрайты: До 128 на экране.Размер от 8x8
до  64x64  (только  два разных на экране),
строятся  из  блоков 8x8, до 128 цветов на
спрайт. До 256 пикселей на сканлайн, отзе─
ркаливание по горизонтали/вертикали.
   Бэкграунд: До  4 слоёв. Тайлы 8x8, от 4
до  256  цветов  на слой в разных режимах.
Буфер  под фон 64x64, распределяется в за─
висимости от видеорежима.
   Палитра: 32768 цветов,до 4096 на экране
(не учитывая эффекты полупрозрачности), до
256 на сканлайн. До 8 палитр на слой фона.
   Скроллинг: Есть, раздельный  для слоёв,
с некоторыми ограничениями.
   Столкновения: Нет.

   Чип разработан специально для SNES,про─
изводитель и название неизвестны. Довольно
неконкретные характеристики, указанные вы─
ше, объясняются наличием большого количес─
тва видеорежимов (8 штук). Помимо разреше─
ния, они  отличаются количеством доступных
слоёв  фона  и количеством цветов на тайл.
Например, в режиме  MODE0  доступно четыре
слоя, по  4 цвета на тайл, с  8  палитрами
(32 цвета). В  MODE3  доступно  только два
слоя, один  из них имеет 16 цветов на тайл
с  8  палитрами, второй - 256  без палитр.
Наиболее  сложным  режимом является MODE7,
предоставляющий  собой  256-цветный слой с
возможностью  его вращения и масштабирова─
ния.
   Есть  прерывания по VBLANK и сканлайну.
При превышении лимита спрайтов на сканлайн
(в отличие от прочих VDP, у SNES ограничи─
вается  количество  пикселей, а  не  самих
спрайтов) первыми пропадают ближние спрай─
ты,если есть перекрывающиеся. Есть своеоб─
разный  аппаратный эффект 'pixelation', не
особо красиво смотрящийся, но часто встре─
чающийся в играх (при смене экрана) - изо─
бражение  плавно превращается в набор гро─
мадных пикселей. Продолжая практику, нача─
тую NES, возможности приставки могли изме─
няться в зависимости от дополнительной ап─
паратуры  на картридже - включая продвину─
тые  видеорежимы  (от  небольших улучшений
имеющихся  режимов  до спецпроцессоров для
вывода текстурированных и освещённых треу─
гольников в 3D-играх). Подобные расширения
достаточно активно использовались в играх.

       Краткие характеристики V9990

   Теперь  рассмотрим  поближе возможности
V9990, чтобы понять,что он представляет из
себя,и насколько его возможности лучше или
хуже по сравнению с приставочными VDP.
   V9990  является старшим в линейке чипов
TMS9918/9928/9929  (MSX1),  V9938  (MSX2),
V9958  (MSX2+, TurboR). В его основе лежат
идеи  V9958, однако обратной совместимости
между этими чипам нет.Полное название чипа
- Yamaha E-VDP-III V9990.Как и все VDP для
MSX, он  не является чисто 'приставочным'.
Yamaha позиционировала его как решение для
применения  в видеоиграх, мультимедиа-сис─
темах и промышленной автоматике. Чип имеет
как  блочные режимы с аппаратными спрайта─
ми,так и растровые,с возможностью аппарат─
ного выполнения операций по отрисовке при─
митивов и переброске блоков графики. В ка─
честве  устройств вывода им поддерживаются
не только обычные ТВ,но также VGA-мониторы
и LCD-панели.
   Для  видеоигровых применений предусмот─
рено  два блочных видеорежима: P1 с разре─
шением 256x212 и P2 с разрешением 512x212.
В режиме P1  поддерживается два слоя фона,
в P2 - один слой. Фон составляется из бло─
ков 8x8 точек. 16 цветов на блок,4 палитры
по 16 цветов,задаваемых в 15-битном цвете.
Количество  изображений блоков - 8160+7680
для P1, 15360 для P2. Размер буфера фона -
64x64  блока  для  режима  P1 (для каждого
слоя) и 128x64 для режима P2. Есть аппара─
тные спрайты. Возможно одновременное отоб─
ражение  125  спрайтов  на экране, и до 16
спрайтов  на  одной  горизонтальной линии.
Спрайты  имеют размер 16x16 точек, 16 цве─
тов на спрайт,также 4 палитры.В видеопамя─
ти можно хранить до 256 изображений спрай─
тов. Имеется система приоритетов отображе─
ния  между  слоями  и спрайтами: приоритет
между слоями фона и спрайтов задаётся каж─
дому персонально,порядок отображения спра─
йтов определяется порядковым номером.Общее
число цветов, одновременно отображаемых на
экране в этих режимах,равно 64 (из палитры
в 32768).
   Растровые  видеорежимы  представлены  в
большом  количестве: это режимы B0-B7. Они
различаются  разрешением - от  192x240  до
1024x424  (некоторые  разрешения  доступны
только для VGA), количеством  отображаемых
цветов (4...32768) и способами их предста─
вления (RGB, YJK, YUV, и другие), размером
буфера  изображения - от  512x512 до 1024x
x2048. В этих режимах  доступно аппаратное
отображение  двух курсоров, размером 32x32
точки, в 3 цветах. В операциях  аппаратной
переброски блоков данных (процессор-видео─
память,  видеопамять-видеопамять, видеопа─
мять-процессор)  и   рисования  примитивов
(точка,линия, монохромный шрифт с заданием
цвета) можно указывать  различные логичес─
кие операции, производимые над данными.
   Из   других  возможностей  присутствует
программная центровка изображения на экра─
не,наложение изображения на внешний видео─
сигнал (с помощью специального бита в зна─
чении  цвета указывается, отображать внеш─
ний сигнал  или нужную точку из видеопамя─
ти). Есть  прерывания  по достижению лучом
нужной точки растра (задаются её координа─
ты; можно  выбирать - повторять прерывание
на каждой строке  или же только на указан─
ной), по  VSYNC, по  завершению выполнения
команды. Возможно  подключение видеопамяти
объёмом от 128 до 512 килобайт.

Shiru 





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

Похожие статьи:
Компьютерный ликбез - Как выбрать качаественный и безвредный для здоровья монитор.
Железо - Немного о GMX и что с ним делать.
Hard group - ZS Scorpion 2000 - о GMX-контроллере.

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