Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отражение экранных страниц




Спрайты. Контроллер DMA.

 

Со спрайтами все очень просто. В качестве спрайтов выступают все теже иконки знакогенератора (определенного, «как знакогенератор спрайтов» - см. регистр $2000 - бит 3). Внутри PPU есть отдельно адресуемая (от основного адресного пространства PPU – 16k) память спрайтов, размером 256 байт. Эта память хранит «записи» о 64 спрайтах, размер каждой записи 4 байта. Располагаются записи последовательно от младших адресов.

Формат записи следующий:

 

Байт записи Биты Назначение
    Абсолютная координата верхнего левого угла спрайта по вертикали.
    Номер иконки из знакогенератора
    Атрибуты спрайта
  Отражение спрайта относительно вертикальной оси. 0 – Обычный; 1 - Зеркальный
  Отражение спрайта относительно горизонтальной оси. 0 – Обычный; 1 - Зеркальный
  Приоритет спрайта. 1 – Спрайт перед фоном; 0 – Спрайт за фоном
4-2 Не используются
1,0 Два старших бита цвета (аналог атрибута цвета для фона)
    Координата верхнего левого угла спрайта по горизонтали.

 

Таблица 4.

 

Спрайты нумеруются начиная с нуля. После вывода нулевого спрайта (а он может быть в любом месте экрана) устанавливается бит 6 регистра $2002 PPU. Запись/чтение в/из память/и спрайтов производится при помощи регистров $2003 (адрес) и $2004 (данные). При каждой операции адрес автоинкрементируется на 1.

Существует более быстрый способ записи в память спрайтов – запись через контроллер DMA. Контроллер DMA занимает в адресном пространстве CPU один адрес - $4014. При записи в этот порт числа $HH, контроллер DMA отправляет в память спрайтов содержимое 256-ти ячеек памяти, начиная с адреса = $HH x $100. (Например: при записи в регистр контроллера DMA $02 – в память спрайтов отправится содержимое ячеек $0200-$02FF). В программах рекомендуется использовать именно этот способ записи – как наиболее быстрый (около 100мкс.)

 

 

Как уже упоминалось выше – в Денди установлено 2k VRAM (сразу еще раз ругнемся на разработчиков – пожалели еще одну микросхему ОЗУ). Да именно пожалели, если посмотреть на карту адресного пространства PPU (см. выше) – то можно видеть, что реально видеопроцессор может работать с четырьмя страницами VRAM. Оно так и бывает, если на картридже установлены недостающие 2k VRAM – уймись программист или раскошелься пользователь, если разработчик решил сэкономить!

Но вернемся к архитектуре – какие возможности добавляют нам лишние 2k VRAM?

Рассмотрим все по порядку …

PPU Денди обеспечивает такой эффект, как «скроллинг» фонового рисунка (независимо от спрайтов) – причем, абсолютно аппаратно. Скроллинг может быть как горизонтальным, так и вертикальным или и тем и тем сразу (по диагонали). Экранные страницы имеют следующую пространственную модель:

 

3 ($2800) 4 ($2C00)
1 ($2000) 2 ($2400)

 

В регистр $2005 последовательно записываются два значения - абсолютное вертикальное и горизонтальное смещение (соответственно) относительно текущей активной страницы. Например, активная страница 1 ($2000) – горизонтальное смещение ноль, а вертикальное $E0 (240) – как результат, на экране видно содержимое страницы 3. Варьируя значение вертикального смещения, можно получить фон, состоящий из части страниц 1 и 3 (их стыковку). Если «закрутить» эту операцию в цикл – то можно получить эффект «скроллинга» фоновой картинки. Аналогично происходит горизонтальный скроллинг (прокрутка).

Но есть один нюанс – в Денди нет памяти подо все четыре страницы. Как и в прочих случаях, тут тоже имеет место «отражение» - и на этот раз экранных страниц (друг на друга). Вид отражения определяет архитектура используемого картриджа. Существует 2 вида отражения – горизонтальное (1=2 и 3=4) и вертикальное (1=3 и 2=4). То есть содержимое указанных страниц идентично.

 

   
   

Горизонтальное отражение

 

 

   
   

Вертикальное отражение

 

 

Если в картридже установлены недостающие 2k VRAM – то содержимое всех четырех страниц может быть различным.

 

   
   

 

Вне зависимости от способа отражения (или при наличии всех четырех страниц) – скроллинг возможен в любом направлении (в том числе и по диагонали).

Программы, не использующие функцию скроллинга, должны записывать в регистр $2005 два нуля, иначе, изображение будет нестабильным.

 




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 531; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.