Ответ на это: Blast Processing! , что еще вам нужно знать?
Итак, если вы хотите знать реальный ответ: графические данные обрабатываются 68000 и выводятся на проприетарный чип под названием Video Display Processor (или сокращенно VDP), который затем отправляет полученный кадр (в виде линий развертки) на дисплей.
VDP работает на частоте ~13 МГц и поддерживает несколько режимов разрешения в зависимости от региона: до 320x224 пикселей в NTSC и до320x240 пикселей в PAL.
Несколько разрешений дисплея
Технически говоря, в VDP может поместиться либо 40, либо 32 колонки плиток на строку развертки, а количество рядов плиток зависит от региона (28 в NTSC или 30 в PAL) . Хотя большинство PAL-игр не утруждают себя дополнительными плитками, разрешенными в PAL-системах (поскольку им, вероятно, нужно сохранить согласованность между двумя регионами, а NTSC - это общий знаменатель), поэтому они инструктируют VDP для рендеринга с 28 рядами (как они бы сделали в NTSC-системах). Таким образом, у VDP нет другого выбора, кроме как заполнить неиспользуемую область цветом фона (который также используется при оверсканировании).
Вы можете увидеть, какие игры PAL отображаются в режиме NTSC, проверив Mode Set Register #2 в эмуляторе с возможностью отладки (т.е. Exodus). Если четвертый бит справа равен 0, то VDP работает в режиме NTSC .

Чтобы обеспечить быстрый многопользовательский режим в Sonic 2 (1992), в игре активируется "чересстрочный режим" для визуализации однопользовательского уровня с использованием плиток размером 8x16 пикселей (наряду с другими изменениями).

В отличие от этого, более сложный многопользовательский режим игры Sonic 3 (1994) использует специальные пиксельные плитки 8x8, которые отделены от однопользовательских уровней.
Более того, существует дополнительный параметр, который можно установить на VDP, чтобы сложить две плитки для формирования 8x16 карт и затем рассматривать их как одну плитку. Следовательно, удваивается вертикальное разрешение. Однако это вдвое снижает частоту обновления, поскольку кадры теперь отображаются с чередованием (один кадр отображает четные линии развертки, следующий - нечетные, и так далее), поэтому он более ограничен в функциональности. Многопользовательский режим игры Sonic 2 является хорошим представлением этого режима .
Наконец, стоит отметить, что VDP автоматически заботится о добавлении отступов для области overscan, поэтому играм не нужно беспокоиться о том, в какие области безопасно рисовать графику (как это произошло с NES's 'danger zones').
Организация контента
С точки зрения обработки графических данных, этот чип имеет два режима работы:
- Режим IV: унаследованный режим, который ведет себя как его предшественник.
- Это не означает, что на этой консоли можно сразу играть в игры Master System, поскольку для установки предыдущих картриджей на эту консоль требуется дополнительный аксессуар (Power Base Converter). Преобразователь также даст команду микросхеме ввода-вывода передать управление Z80.
- Режим V: Родной режим работы, мы сосредоточимся на нем.
Что касается режимов от 0 до III? Они относятся к еще более старой модели SG-1000, а Mega Drive их не поддерживает.
Интересно отметить, что бывший разработчик этой системы позже сказал мне, что структура команд режима V (используемого для управления VDP в игре) унаследовала дизайн от TMS9918 (знаменитого видеочипа, используемого в SG-1000) . Это облегчило сторонним разработчикам использование Mode V без зависимости от официальной документации (и последующих затрат на лицензирование).
Доступная память
Графическое содержимое распределяется по трем областям памяти :
- 64 КБ VRAM (Video RAM): Содержит большую часть графических данных.
- 80 B VSRAM (Vertical Scroll RAM): VDP поддерживает вертикальную и горизонтальную прокрутку, и значения V-прокрутки по какой-то причине хранятся в этом отдельном пространстве.
- 128 B CRAM (Colour RAM): Хранит четыре записи палитры с 16 цветами в каждой (включая прозрачный), система предоставляет 512 цветов на выбор. Кроме того, эффекты Highlight и Shadow могут быть применены к каждой палитре для достижения более широкого диапазона цветов на палитру.
Построение кадра
В следующем разделе объясняется, как VDP рисует каждый кадр, для демонстрации в качестве примера используется Sonic The Hedgehog. Перед началом работы я рекомендую ознакомиться с modus operandi его предшественника, поскольку здесь многое будет пересматриваться.
Тайлы

Несколько тайлов, прижатых друг к другу. В демонстрационных целях используется палитра по умолчанию.

Один тайл размером 8x8 пикселей.
Как и PPU Nintendo, VDP - это движок на основе тайлов, и поэтому он использует тайлы (базовые битовые карты 8x8) для компоновки графических плоскостей. В случае VDP каждая плитка кодируется массивом длиной 4 байта, где каждая 4-битная запись соответствует пикселю, а ее значение соответствует записи цвета (указывающей на цветовую палитру).
Игровые картриджи хранят тайлы в ROM (находится в картридже), но они должны быть скопированы в VRAM, чтобы VDP мог их прочитать . Традиционно это было возможно только в определенные временные рамки и выполнялось центральным процессором, к счастью, в данной консоли добавлена специальная схема для разгрузки этой задачи на VDP (подробности мы рассмотрим позже).
Тайлы используются для построения четырех плоскостей, которые, соединяясь вместе, образуют рамку, видимую на экране. Кроме того, тайлыпланов будут перекрывать друг друга, поэтому VDP будет решать, какая плитка будет видна, основываясь на типе плана и значении приоритета тайла.
Задний план (Background)

Выделенная фоновая карта с отмеченной выбранной территорией
Фоновая плоскость, также известная как плоскость B - это прокручиваемая тайлмапа (набор тайлов), содержащая статические тайлы .
Эта плоскость может иметь шесть различных размеров: 256x256, 256x512, 256x1024, 512x256, 512x512, 1024x256. Программисты могут выбрать размер, который лучше соответствует типу прокрутки, которая будет необходима.
Каждая плитка может быть перевернута по горизонтали и/или вертикали и иметь приоритет.
На показанном примере вы заметите, что выделенная область для отображения не является квадратом... Это не обязательно так! VDP позволяет установить значения горизонтальной прокрутки для всего кадра, для каждой отдельной строки сканирования или для каждых восьми пикселей. Это означает, что разработчики могут придать выбранной области форму ромбоида и изменять ее углы по мере движения игрока, чтобы имитировать перспективные эффекты. Трюки, подобные этому, не повреждают плоскость, VDP получает каждую (выбранную) горизонтальную линию и строит из нее обычный кадр.
Передний план (Foreground)

Выделенный передний план с выбранной областью.
Плоскость переднего плана, также известная как плоскость A , имеет те же свойства, что и плоскость фона, за исключением того, что эта плоскость имеет более высокий приоритет, поэтому плитки, отрисованные здесь, будут по своей природе находиться поверх плоскости фона.
Кроме того, эта плоскость позволяет разделять себя, образуя новую подплоскость: Оконная плоскость. Разница лишь в том, что последний не прокручивается.
В целом, вы можете видеть, что новые значения приоритетов и отдельные плоскости позволяют дизайнерам игр привнести новые типы пейзажей. Кроме того, используя разную скорость прокрутки на каждой плоскости, можно добиться параллакс-эффекта.
Спрайты
![]()
Выделенный слой Sprite с выделенной областью.
В этой плоскости плитки рассматриваются как спицы. Они располагаются на карте 512x512 пикселей, и только часть ее (выходное разрешение VDP) выбирается для отображения. Это удобно для скрытия ненужных спрайтов или подготовки других, которые будут показаны в будущем. VDP также предоставляет старую функцию обнаружения столкновений.
Спрайты формируются путем объединения плиток размером до 4x4 (карта 32x32 пикселя) и выбора до 16 цветов (включая прозрачный). Если нужен спрайт большего размера, то несколько спрайтов можно объединить в один.
На одну линию развертки может приходиться не более 20 спрайтов, а на один экран - не более 80 (превышение этого количества приведет к повреждению всего слоя).
Область в VRAM, где определяются спрайты, называется Sprite Attribute Table , и каждая запись содержит индекс плитки, координаты слоя (x и y), значение link (управляет тем, какие спрайты рисуются первыми), приоритет (спрайт с наивысшим приоритетом отображается при наложении), индекс цветовой палитры и вертикальный и горизонтальный флип.
Результат

Кадр, транслируемый на телевизор (формат NTSC), VDP автоматически покрывает кадр областью оверскана, которую большинство ЭЛТ-телевизоров скроет.
Во время рисования кадра система будет последовательно вызывать различные процедуры прерывания в зависимости от того, куда направлен луч ЭЛТ Как вы, вероятно, видели на предыдущих консолях, это позволяет процессору работать над следующим кадром (или изменять текущий).
Как правило, существует два типа прерываний, называемых: H-Blank (каждая горизонтальная линия) и V-Blank (каждый кадр).
H-Blank вызывается много раз, но ограничивается выполнением коротких рутин. Кроме того, доступны только CRAM и VSRAM, поэтому игры могут только обновлять свои цветовые палитры или вертикально прокручивать свои плоскости.
V-Blank позволяет использовать более длинные процедуры, но имеет недостаток - вызывается только 50 или 60 раз в секунду (в зависимости от региона консоли), но при этом имеет доступ ко всем участкам памяти.
Обратите внимание, что область вылета развёртки в примере имеет несколько случайных цветных точек в правом нижнем углу. Это широко известно как CRAM dots, и происходит это потому, что CPU обновляет палитры в CRAM в то же время, когда VDP транслирует оставшиеся линии сканирования (в примере это происходит во время оверскана). Этот конфликт заставляет VDP извлекать любое значение, которое CPU записывает в это время (в отличие от требуемого места в CRAM), поэтому изображение повреждается. Однако, поскольку в данном случае игра обновляет CRAM только при оверскане, эта аномалия остается незамеченной на традиционных ЭЛТ. Другие игры пытаются обновить палитры в середине кадра, чтобы добиться большего количества цветов, при этом приходится балансировать появление точек CRAM.
Отдельное устройство передачи данных
Всё это время мы обсуждали каким образом процессор может обновлять кадры, а что насчет VDP? Предоставляет ли она что-то более специализированное? Да, этот чип имеет функцию прямого доступа к памяти (сокращенно DMA), которая позволяет перемещать данные между ячейками памяти на более высокой скорости и без вмешательства центрального процессора.
DMA может быть активирован во время H-Blank, V-Blank или активного состояния (вне любого прерывания), и может использоваться для записи через VRAM, CRAM и/или VSRAM . Кроме того, во время передачи данных в оперативную память процессора с помощью DMA шина процессора будет заблокирована, поэтому правильное планирование имеет решающее значение для достижения производительности.
Исключительное использование этих возможностей может обеспечить графику высокого разрешения, плавную параллакс-прокрутку и высокую частоту кадров. Более того, ваша игра может появиться в телевизионной рекламе с множеством надписей Blast Processing! .
Видеовыход
Первый дизайн этой консоли (обычно называемый "Модель 1") имел тот же порт видеовыхода, что и Master System. В последующих моделях "Модель 2" и "Модель 3" вместо этого был использован порт mini-DIN.



