А давайте-ка мы займёмся Player-Missile Graphics (PMG) ...
Я, лично, до этого дорос, увы!.. Старый, - я.
Итак, после включения исправной Атари, Вы имеете полностью готовую систему прорисовки PFG (Play Field Graphics)! Для неё в Атари включены логические S: и E: девайсы!!! Далее, всё сабо-самой мазуреется!
Что же включено в систему для прорисовки PMG?
Правильно, Ничего!
Делаем главный вывод: - ЭТО НЕСИСТЕМНАЯ ФУНКЦИЯ графического сопроцессора!
То есть программист PMG должен быть системщиком. А системщик знает массу бяков:
- ограничения
- условия
- невозможности
...
Итак, зная, что так или иначе, картинка рисуется при помощи:
ANTIC (Alpha-Numeric Television Interface Cоntroller) ...
-, а Вы думали, что ANTIC - это просто примочка? НЕТ!
- Это полноценный ЧПУ (и само слово микроконтроллер именно отсюда), управляющий 2D графикой.
Просто у него, исходя из задач, вывод в память заменён выводом в шину GTIA.
...И, системный DMA, поэтому, = только ЧИТАТЕЛЬ!!!
А вот GTIA (Graphics Television Interface Adapter), это = переходник, просто - ЦАП!
- Сильно усовершенствованный, кстати...
Оцвечивает графику самостоятельно (по возможности) и может PMG отрисовать...
Просто, у ANTIC оказалось ещё аж ДВА неиспользуемых канала DMA (для Игроков и Ракет) и это и есть изначальная суть PMG. (В смысле обработки она ведёт себя так же как PFG.)
Не заморачиваясь на конкретности, можно сказать, что ANTIC готовит цифровой поток байтов для GTIA, а GTIA готовит потоковый аналоговый сигнал для TV.
И теперь, что мы имеем с гуся?
1. Регистры управлением Чипами
2. Регистры, дающие нам инфо
и фантазию...
Теперь мы - системщики!
Наша машинка(PMG) работает сама, но данные получает с помошью DMA из памяти.
Памяти игроков или памяти ракет.
Мы, обязательно создадим её... Присущую нам PMG!
Займёмся ОГРАНИЧЕНИЯМИ:
1. ANTIC умеет читать данные из памяти только:
- с границы 2k - для SLR(Single Line Resolution)
- с границы 1k - для DLR(Double Line Resolution)
2. GTIA имеет только 3-bit шину связи с ANTIC...
ЭТО ЗНАЧИТ,
- при приёме потока в виде ДАННЫХ, = просто 1 байт. (Ограничение по размеру Игрока 0-7 битов)
- при приёме потока как АДРЕСА, 1 байт адресует 256 байтов пространства. (0-255 байтов в видеобуфере по X или Y)
Для отрисовки PFG в регистре SDMCTL(System Direct Memory Control) управления DMA изначально включены:
- Бит включения DL DMA
- Биты размера PFG (Узкое, Нормальное, Широкое поле графики)
Также есть:
- Бит включения DMA для Игроков
- Бит включения DMA для Ракет
- Бит вертикального разрешения (Нормально=DLR) Двойная-Одинарная линия сканирования на экране TV.
Заодно, стоит отметить, что также как и в GR.0, в PMG горизонтальное разрешение составляет 2 бита (как ширина вертикальных линий у букв).
Ну, и теперь радостное...
Атари совершенно НИЧЕГО не знает о PMG, так как это просто видеооверлей!!!
Если Вы правильно выведете на экран PMG, Атари сможет убрать его только софт или колд ресетом.
ПРОЕКТИРОВАНИЕ:
1. Так как нам нужен МАЛЫЙ объект графики - стрелка курсора, мы выбираем самые высокие разрешения и по горизонтали и по вертикали.
То есть - NPW(Normal Player Width) и SLR(Single Line Resolution)
2. Для SLR мы должны выделить 2к памяти на границе кратной 2к. Неважно где, но если хотите работать с ДОСом, то лучше сверху, чтобы не повышать LOMEM.
3. Где-то в памяти задать имидж игрока для автоматического его считывания при помощи DMA.
Моя стрелка курсора такая: (системно будет удвоена по ширине и станет КРАСИВШЕ!)
%Ж_______
%_ЖЖ_____
%_ЖЖЖЖ___
%__ЖЖЖЖЖ_
%__ЖЖЖЖ__
%___ЖЖЖ__
%___Ж__Ж_
%_______Ж
4. Инициализировать всё для DMA в SDMCTL
5. Разрешить отрисовку данных из DMA в оверлей (DMA = только ЧИТАТЕЛЬ!) в GRACTL.
2 = отрисовывает только Игроков, 3 = отрисовывает и Игроков и Ракеты.
GRACTL, фактически и запустит то, что ребятишки называют системой PMG.![]()




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

