- •Архитектура и программирование Dendy.
- •Общие сведения об архитектуре Денди.
- •Процессор Денди (cpu).
- •Видеопроцессор Денди (ppu)
- •Принципы работы ppu.
- •Спрайты. Контроллер dma.
- •Отражение экранных страниц.
- •Картридж Денди.
- •Программирование мапперов.
- •Маппер unrom.
- •Ввод/Вывод в Денди.
- •«Порт a»
- •«Порт b»
- •Джойстики.
- •Сопроцессор pApu.
- •Приложение №1. Система команд 6502.
- •Приложение №2. Палитра в rgb.
- •Приложение №3. Спецификации мапперов.
- •226 Multi-cart(pirate) 76-in-1
- •Приложение №4. Разъём картриджа.
- •Приложение №5. Схемотехника.
Принципы работы 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.
