Дао конфы


Тайлово-спрайтовая конфигурация (TSconf). Вступление
По моему мнению, TSconf является очень современной надстройкой над любимым ZX Spectrum, которая вносит давно ожидаемые и необходимые элементы в виде цвет на точку, аппаратные спрайты и прочее. Об этом и пойдёт речь в этой статье.

Тайлово-спрайтовую конфигурацию (TSconf) можно разделить на следующие логические группы:
1. Графический акселератор
— Использование тайлов
— Вывод и управление спрайтами
2. Менеджер памяти
3. Блок прямого доступа к памяти (DMA)
4. Система прерываний
5. Кеш
6. Порты управления

Давайте постепенно рассмотрим все эти пункты по порядку.

Графическая подсистема
Дао говорит: Видимый нами экран представляет собою окно вывода заданного в системе разрешения, которое отображает блок страниц видеопамяти размером 512х512 точек в указанном режиме по заданным координатам вывода. TSU является устройством, собирающим данные из видео-, тайловой- и спрайтовой памяти, которое обрабатывает и представляет их в текущей позиции отрисовки строки в заданном разрешении / нужном режиме.

Данный блок является расширением (надстройкой) над стандартным спектрумовским экраном 6912. Точнее сказать, режим 6912 входит в состав целой семьи разрешений системы:
  • 256x192
  • 320x200
  • 320x240
  • 360x288
Эти разрешения можно использовать в разных видеорежимах:
  • ZX
  • 16c
  • 256c
  • Text
Для отображения цвета для заданного режима используется первый блок внутренней памяти системы — палитровая память. Этот блок представляет собой 512 байт и хранит полную палитру цветов системы — двубайтные данные цветовых составляющих для 256 цветов.
Полную палитру стоит разделить на группы последовательно расположенных 16 цветов (32 байта) для режима 16с, что даёт нам 16 палитр по 16 цветов.
Первая палитра — под номером 0.
При включении системы в общую палитру загружается набор из 16 цветов для режима ZX, который расположен в последней, 15-й палитре.

Каждый режим задаёт свои особенности отображения цветовой информации на экране:
ZX ограничивает вывод 16 цветами стандартной палитры ZX Spectrum;
16с — в таком режиме используется только 16 цветов — одна из 16 доступных палитр;
256с — предоставляет возможность выводить все загруженные в палитру цвета
Text — текстовый режим, позволяет выводить текст в цвете.

В данном случае шла речь о горизонтальной мобильности. Давайте поговорим о вертикальной:
Кроме перечисленных режимов, система позволяет использовать послойное отображение графической информации. Стандартный спектрумовский экран является базовым экраном, но не является самым нижним.

Итак, расположение слоёв, которые формируют экран:
1. Бордюр. Представляет собой однотонный полноэкранный слой. Задаётся цветом бордюра.
2. Базовый (основной) экран. Может быть включен в любое разрешение / режим из вышеперечисленных выше.
3. Слои графического акселератора отображаются в заданном для базового экрана разрешении, в режиме 16 цветов:
— спрайтовый слой 0
— тайловый слой 0
— спрайтовый слой 1
— тайловый слой 1
— спрайтовый слой 2
Таким образом, мы получаем 7 слоёв, составлюящих единый, видимый для пользователя, экран.
Все перечисленные слои используют цвета, заданные в общей палитре из 256 цветов.

Тайловые и спрайтовые слои акселератора работают только в режиме 16с, используя 0й цвет заданной для них палитры как прозрачный. Благодаря TSU нет необходимости сохранять данные видеопамяти под тайлами и спрайтами, так как вывод на экран в буквальном смысле собирается при выводе каждой строки, не изменяя содержимого видеопамяти.
Каждый графический элемент этих двух типов слоёв представляет собою блок минимум 8х8 пикселей, и для каждого из них необходимо указывать палитру, одну их всех доступных 16-ти.

Тайловый слой преставляет собой карту, описывающую расположение графических элементов, заданных как изображение. Таким образом, положение тайла на экране прямо зависит от его положения в карте.
Тайловая карта имеет размер 64х64 тайла (4096 тайлов вообще), для одного слоя можно использовать до 4 палитр из 4 групп всех 16 палитр. Для каждого тайла возможно задать свою (из этих 4х) палитру.
Всего мы имеем два таких слоя, организованных одинаковым образом.

Спрайты представляют собой графику, организованную по типу тайловой, но имеющую бОльшие (кратные 8) размеры — от 8х8 до 64х64 точек. Спрайты так-же имеют прозрачность, заданную нулевым цветом.
Особенностью спрайтов является то, что для каждого спрайта можно задать как свою палитру, так и положение на экране вплоть до точки.
Для обработки спрайтов системой используется второй блок внутренней памяти, представляющий следующие 512 байт памяти, который хранит "дескрипторы спрайтов" — данные из 6 байт, описывающие каждый спрайт. Максимальное количество дескрипторов в этой памяти — 85 штук.

В следующих статьях я расскажу более детально о работе с перечисленными в начале статьи устройствами.

зы: для тех, кто не хочет ждать а хочет деталей

9 комментариев

avatar
Слишком много режимов…
хотя… кому чего то не хватит и пойдут крики
avatar
Ждем конкретных примеров по работе с каждой возможностью конфигурации. )
avatar
kotsoft , в общем, следующие статейки будут уже технические.
Все 6 позиций + ещё две по первому номеру, все будут постепенно написаны.
По спрайтам уже набросок есть, но пока без готового примера.

ХРИСТОС ВОСКРЕС ЙОУ! ;)
avatar
Классная статья и очень понятно написана. Давно хотелось видеть добротный мануал по устройству TS-конфы и кодингу под неё. Буду с нетерпением ждать продолжения. Уверен, после завершения цикла статей, желающих покодить под TS-Conf будет больше.
avatar
А вот ещё пожелание (ну, или просьба) к tsl. Было бы здорово почитать статью о всех этапах реализации TS-Conf. Как возникла идея создания, что планировалось реализовать, что сделать не получилось, что получилось даже лучше, чем предполагалось. Почему были выбраны именно такие решения, а не другие. Понимаю, что многое есть на форуме, но в виде цельного текста оно было бы лучше.
avatar
Да, и если такую статью я напишу, то пора бы поспешить, а то половина всего уже забылась.
Однако в ней надо упомянуть тех двоих, одно упоминание которых вызывает срачи, драмы, крушение форумов и уход юзеров. И как это сделать политкоррэктно, я не хз. =)
avatar
дядка, не надо менять историю :)

просто отписывай общий вид со стороны, а не мнение участника…
… общего срача :)
avatar
С одной стороны, да, можно изложить максимально абстрагировано — этакий сухой остаток. С другой — потеряется твой саркастично-весёлый стиль, чего бы не хотелось. Можно поискать золотую середину. Имхую, что срача скорее всего так и так не избежать, равно как и минусов. =)А и не пох ли на это? Конфа уже вроде как устаканилась, самое время фиксировать события и вехи.:)
avatar
Отличная статейка, жду следующих частей (ибо Мультиматограф на носу, расслабляться нельзя :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.