Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура и программирование Dendy.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.23 Mб
Скачать

Принципы работы ppu.

Видеопроцессор (PPU) Денди может отображать 64 цвета (каждому номеру строго определенный цвет – рисунок 2). Соответствие цветов формату RGB см. приложение 2.

Рисунок 2.

PPU содержит регистры палитр (адресуются через адресное пространство PPU). Существует 2 палитры – палитра фона ($3F00-$3F0F) и палитра спрайтов ($3F10-$3F1F). При помощи палитры происходит выбор любых 16-ти цветов из 64-х возможных для текущего отображения на экране (в ячейку палитры заносится номер цвета ($00-$3F) – см. рисунок 2).

PPU, работающий в системе PAL, формирует картинку с разрешением 256x240. PPU формирует изображение из четырех слоев:

  • Задний план – холст, окрашенный цветом с индексом 0 из палитры фона.

  • Слой спрайтов с битом приоритета = 0 (подробнее см. в главе «Спрайты. Контроллер DMA.»)

  • Фоновый рисунок – картинка, составленная из иконок знакогенератора (как из мазайки 32x30). Фоновый рисунок хранится в экранной странице (VRAM). В области символов - 960 байт (32x30) должны быть записаны номера иконок знакогенератора фона (см. регистр $2000 - бит 4). На экране отображается содержимое активной экранной страницы (см. регистр $2000 - бит 1,0). Экранная страница содержит только информацию о фоновом рисунке. Знакогенератор содержит иконки с двумя младшими битами цвета для каждого пикселя иконки. Два старших бита цвета – общие для всей иконки, берутся из области атрибутов экранной страницы. Полученное четырехбитное число определяет номер цвета в палитре фона. Таким образом, каждая иконка (без смены палитры) может иметь до четырех вариантов раскраски. Т.е. при помощи двух бит из области атрибутов экранной страницы – палитра фактически разбивается на 4 части (по 4 цвета в каждой), номер части определяется битами области атрибутов, номер цвета (внутри части) – битами пикселя в знакогенераторе.

  • Слой спрайтов с битом приоритета = 1 (подробнее см. в главе «Спрайты. Контроллер DMA.»)

Рассмотрим на примере двоичные форматы рассмотренных структур:

  • Знакогенератор.

В знакогенераторе отводится по 16 байт на каждую иконку (16x256=4096). Первые 8 байт определяют построчно младший бит цвета иконки. Следующие 8 бит – старший (см. рисунок). Пиксель иконки, со значением обеих бит равными нулю – считается прозрачным (вне зависимости от старших бит из области атрибутов).

Символ в Результат

знакогенераторе расшифровки

--------------- --------

%00010000 = $10 --¬ ...1.... . – 00 (прозрачный)

%00000000 = $00 ¦ ..2.2... 1 - 01

%01000100 = $44 ¦ .3...3.. 2 - 10

%00000000 = $00 +-- Бит 0 2.....2. 3 - 11

%11111110 = $FE ¦ 1111111.

%00000000 = $00 ¦ 2.....2.

%10000010 = $82 ¦ 3.....3.

%00000000 = $00 --- ........

%00000000 = $00 --¬

%00101000 = $28 ¦

%01000100 = $44 ¦

%10000010 = $82 +-- Бит 1

%00000000 = $00 ¦

%10000010 = $82 ¦

%10000010 = $82 ¦

%00000000 = $00 ---

  • Область символов экранной страницы.

Последовательно хранятся номера иконок из знакогенератора фона (величина смещения иконки от начала знакогенератора деленная на 16). Экран заполняется иконками построчно (32x30=960 иконок на экране).

  • Область атрибутов экранной страницы.

Для каждой иконки в фоновой картинке существует свой атрибут (два старшие бита цвета, выбираемого из палитры).

$2000

$2001

$2002

$2003

$2020

$2021

$2022

$2023

$2040

$2041

$2042

$2043

$2060

$2061

$2062

$2063

Фрагмент VRAM – область символов (страница 1 – левый верхний угол экрана) – изображены ячейки с адресами – начала первых четырех строк экрана. Цветом показаны группы, имеющие одинаковый атрибут (два старших байта номера цвета в палитре).

7

6

5

4

3

2

1

0

Байт области атрибутов по адресу $23C0. Содержит атрибуты четырех смежных групп. Цветом указано соответствие атрибутов группам.

Весь экран построчно разбивается на группы (8 строк и 8 столбцов) – последняя строка неполная. Соответственно за каждую группу отвечает один байт атрибутов.

  • Палитры.

На самом деле не из 16-ти цветов палитры происходит выбор цвета. Происходит это потому, что и здесь имеет место явление «отражение» (mirroring) – на этот раз применительно к цветам палитры. Происходит это так. Как отмечалось выше, пиксель иконки знакогенератора, оба бита которого нулевые, вне зависимости от атрибута, считается прозрачным. Из этого следует, что в палитре фона есть 3 ячейки, содержимое которых нас не интересует (цвет то прозрачный). Это ячейки с адресами $3F04, $3F08 и $3F0C. В ячейке $3F00 (как упоминалось выше) хранится номер цвета холста, и именно он виден сквозь «прозрачные» пиксели. Так вот – архитектура PPU Денди предусматривает отражение «лишних» ячеек палитры ($3F04, $3F08 и $3F0C) в ячейку цвета холста ($3F00).

С палитрой спрайтов таже история – у спрайтов (подробнее о спрайтах в следующей главе) нет своего «холста», и поэтому ячейки палитры спрайтов, на которые приходятся прозрачные цвета ($3F10, $3F14, $3F18 и $3F1C), также отражаются на ячейку $3F00.