Блок обработки изображений - Picture Processing Unit

NES PPU (Ricoh RP2C07) в PAL NES

ППА ( фото Processing Unit ), более конкретно , известная как Ricoh RP2C02 ( NTSC версия) / RP2C07 ( PAL версия), является интегральной схемой в Nintendo Entertainment System отвечает за генерацию видеосигналов от графических данных , хранящихся в памяти.

Чип известен своим эффективным использованием памяти , используя очень мало памяти для хранения графических данных. Он был довольно продвинутым для своего времени, когда была выпущена Famicom (японская версия Nintendo Entertainment System) с полной поддержкой спрайтов , подвижным фоном и множеством цветов на экране одновременно. Для того, чтобы конкурировать с другими системами видеоигры, как графически превосходящей Sega Master System , Nintendo также расширили технические возможности в ППУ путем использования картографами , которые были размещены на игровом картридже. Картографы добавили больше памяти или могли сохранить данные переключателя в адресном пространстве PPU , что позволило создавать более продвинутую графику, используя больше цветов и большие наборы тайлов .

Ключевая особенность

  • 2 КБ внешней ОЗУ для хранения макета плитки и дополнительной информации о цвете для фоновой графики (обычно называемой таблицами имен )
  • 288 (256 + 32) байтов внутренней памяти DRAM для хранения атрибутов спрайтов . Это измеряется объемом потребляемого адресного пространства ; не каждый бит каждого байта существует в PPU.
  • 32 байта внутренней SRAM для хранения палитры. Как и в случае с хранением атрибутов спрайтов, не все биты существуют в PPU.
  • Спрайты размером 8 × 8 или 8 × 16 (на выбор)
  • Два внешних набора плиток по 4 КБ с пространством для 256 плиток каждый, обычно хранящиеся в ОЗУ или ПЗУ на игровом картридже.
  • До 64 спрайтов (подвижных объектов) на экране одновременно (только 8 видимых на строку сканирования )
  • 25 цветов одновременно (хотя с помощью приемов программирования можно использовать больше цветов) из аппаратной цветовой палитры из 54 цветов
  • Разрешение изображения 256 × 240 пикселей (полностью видимое в PAL, но обрезанное до 256 × 224 на большинстве старых телевизоров NTSC ), хотя HDTV и устройства захвата, как правило, отображают полное изображение независимо.

Техническая информация

PPU управляется через восемь регистров, видимых в адресном пространстве CPU по адресам от $ 2000 до $ 2007. Все данные и информация передаются в PPU через них, за исключением необработанных данных тайлов (есть исключения, поскольку в некоторых играх для хранения данных тайлов использовалась ОЗУ вместо ПЗУ, и тайлы приходилось записывать каждый раз), что является жестким в адресное пространство PPU. PPU использует данные тайловой графики вместе с информацией, хранящейся программой в RAM PPU, такой как цвет и положение, для визуализации окончательного графического вывода на экране.

Самые нижние графические компоненты, с которыми работает PPU, - это тайлы , которые представляют собой блоки размером 8 × 8 или 8 × 16 пикселей. Плитки хранятся в микросхеме ПЗУ игрового картриджа. Они являются основными строительными блоками, используемыми для создания больших движущихся объектов или больших статических фонов.

Из-за небольшого размера спрайтов NES большинство движущихся объектов состоит из нескольких спрайтов. На одну строку развертки можно нарисовать только 8 спрайтов, поэтому PPU содержит флаг «переполнения», который устанавливается, если в строке развертки появляется более 8 спрайтов. Однако этот флаг содержит ошибки и генерирует как ложные срабатывания, так и ложные отрицательные результаты, поэтому он редко использовался.

Как отмечалось выше, некоторые игры (в основном ранние игры MMC1, такие как Legend of Zelda и Castlevania ) хранят свои графические данные в основном ПЗУ PRG. Они имеют чип CHR RAM вместо ROM и передают данные из PRG ROM в CHR RAM, основной целью этого является создание анимированных фоновых плиток. Появление в 1988 году MMC3 mapper устранило необходимость в этом, так как анимированные плитки теперь можно было сохранять из CHR ROM на лету. PPU может одновременно получить доступ к 8 КБ CHR ROM или RAM.

По сути, PPU поддерживает два разных типа доступных для рисования объектов: подвижные (спрайты) и неподвижные (фон). Оба типа объектов состоят из плиток, и, кроме того, спрайт и фоновый объект могут использовать одну и ту же плитку. Разница в том, что плитка, используемая в качестве спрайта, может перемещаться, а плитка, используемая в качестве фона, не может. Для спрайтов нет регистров обнаружения столкновений, как это было в большинстве игровых систем того времени.

Данные спрайтов хранятся в специальной памяти, называемой «памятью атрибутов объекта», или сокращенно «OAM», которая представляет собой 256-байтовую память, встроенную в ядро ​​PPU. Здесь хранятся 4 байта: позиция, цвет и тайл для каждого из 64 спрайтов. Эти данные используются PPU для размещения спрайта при рендеринге кадра. Однако фоновые объекты хранятся гораздо менее эксклюзивным способом, который больше похож на способ хранения символов в текстовом режиме на ПК . Фон определяется простой структурой данных, называемой таблицей имен, которая по сути представляет собой двумерный массив. Целочисленное значение в каждом слоте массива соответствует номеру фрагмента, а значения индекса этого слота соответствуют предполагаемому положению элемента x / y на экране. PPU имеет две таблицы имен без использования карт памяти, поэтому возможна плавная прокрутка между фоном.

После того, как данные плитки настроены в таблице имен, можно просто настроить регистры прокрутки X / Y PPU для перемещения экрана.

Цветовая палитра должна быть определена для отображения графики на экране. Он хранится в отдельной 32-байтовой ячейке ОЗУ, известной как «ОЗУ палитры». Каждая запись здесь выбирает цвет из аппаратной цветовой палитры, которая является предопределенными цветами на выбор. Есть четыре палитры фона и четыре палитры спрайтов с тремя цветами в каждой плюс прозрачность. Также есть цвет фона, который обычно виден за прозрачными участками фоновых плиток. Таким образом, PPU обычно может отображать на экране 25 уникальных цветов.

Смотрите также

внешняя ссылка