Адаптер интерфейса цветного телевидения (CTIA ) и его преемник адаптер графического телевизионного интерфейса (GTIA ) - это специализированные микросхемы, используемые в 8-битном семействе Atari компьютеры и в Atari 5200 домашняя игровая консоль. В этих системах чип CTIA или GTIA работает вместе с ANTIC для создания видеодисплея. ANTIC генерирует графику игрового (текст и растровое изображение), в то время как CTIA / GTIA предоставляет цвет для игрового поля и параметры поля наложения, известные как графика игрока / ракеты (спрайты ). Под руководством Джея Майя микросхемы CTIA / GTIA были разработаны Джорджем МакЛеодом при технической поддержке Стива Смита.
Адаптер интерфейса цветного телевидения и адаптер интерфейса графического телевидения - это название микросхем. как указано в игре по обслуживанию Atari. Различные публикации называли чипы по-разному, используя альтернативное написание адаптеров, или утверждая, что «C» в «CTIA» означает Коллин / Candy, а «G» в «GTIA» означает Джордж.
Atari построила свой первый чип драйвера дисплея, Адаптер телевизионного интерфейса, но универсально упоминаемый как TIA, как часть консоли Atari 2600. Дисплей TIA логически состоял из двух основных наборов объектов: «игроков» и «ракет», которые представляют собой движущиеся объекты, и «игровое поле», представляющее статическое фоновое изображение, на котором происходит действие. Чип использовал данные в регистрах памяти для создания цифровых сигналов, которые были преобразованы в реальном времени с помощью цифро-аналогового преобразователя и RF-модулятора для создания телевизионного дисплея..
Обычный способ рисования игрового поля заключается в использовании битовой карты, хранящейся в буфере кадра, в каждой ячейке памяти которого буфере кадра представляет одну или несколько ячеек. на экране. В случае 2600, обычно используется разрешение 160x192 пикселей, буфер кадра должен иметь как минимум 160x192 / 8 = 3840 байтов памяти. Созданный в эпоху, когда RAM был очень дорогим, TIA не могла позволить себе это решение.
Вместо этой в системе реализована система отображения, в которой использовался один 20-битный регистр памяти, который можно было скопировать или отразить в правой половине экрана, чтобы получить то, что было фактически 40- битным. битовый дисплей. Каждое местоположение может быть отображено одним из четырех цветов из палитры из 128 исполнителей цветов. TIA также включал несколько других демонстрационных объектов, «игроков» и «ракеты». Они состояли из двух 8-битных объектов, известных как «игроки», 1-битного объекта, известного как «мяч», и двух 1-битных «ракет». Все эти объекты можно перемещать в произвольные горизонтальные положения с помощью настроек в других регистрах.
Ключом к системе TIA и низкой ценой 2600 было то, что в системе было достаточно памяти, чтобы нарисовать одну систему дисплея, и все содержалось в регистрах. Чтобы нарисовать весь экран, заполненный данные, пользовательский код будет ждать, пока телевизионный дисплей не достигнет правой стороны экрана, и обновит регистры для игрового поля и игрока / ракету, чтобы правильно указать следующую строку на дисплее. Эта схема построила экран построчно из программного обеспечения картридже ПЗУ, метод, известный как «гонка по лучу».
Atari использует службы оценила, что 2600 будет иметь рыночный срок в три года, когда он был разработан в 1976 году, а это означало, что компании потребуется новый дизайн к 1979 году. Первоначально этот новый дизайн была просто обновленной игровой консолью, похожей на 2600, и была построена на основе аналогичной конструкции, просто обновленной. Работа над тем, что направлено, станет CTIA, началась в 1977 году и была создана система с удвоенным разрешением и вдвое большим количеством цветов. Более того, можно было поддерживать более высокое разрешение до 320 пикселей по горизонтали. Также были обновлены игроки и ракеты, включая четыре 8-битных игроков и четыре 2-битных ракеты, но также четыре возможности объединить ракеты в пятого игрока.
Вскоре после начала проектирования, во второй половине 1977 года началась серьезная революция в области домашних компьютеров. В ответ Atari новой решила выпустить две версии машины, модель бюджетного класса. как игровая приставка, и высококлассная версия как домашний компьютер. В любом случае потребуется более сложное игровое поле, особенно поддержка символьной графики в роли компьютера. На тот момент дизайн CTIA был хорошо продвинут, поэтому вместо редизайна было предложено умное решение путем добавления второго чипа, который эффективно автоматизирует процесс ускорения луча. Вместо пользовательского программирования, обновляющего регистры CTIA на основе времени прерывания, новый ANTIC будет обрабатывать эту рутинную работу, считывая данные из фреймбуфера и передавая их в CTIA на лету.
В результате этих изменений новые микросхемы улучшают количество и выбор графических режимов по сравнению с TIA. Вместо одного режима игрового поля с разрешением 20 или 40 бит CTIA / ANTIC может отображать шесть текстовых режимов и восьми графических режимов с различными разрешениями и глубиной цвета, что позволяет программисту выбирать баланс между разрешением, цветами и использованием памяти. для их отображения.
Исходный дизайн чипа CTIA также включал три дополнительных цветовых интерпретации обычных графических режимов. Эта функция обеспечивает альтернативные выражения графических режимов ANTIC с высоким разрешением, представляет 1 бит на пиксель, 2 цвета с пикселями шириной половинной цветовой синхронизации как 4 пикселя, до 16 цветов, пиксели шириной двухцветной синхронизации. Эта функция была готова к тому, как компьютеры дебютировали в ноябре 1979 года, но так сильно задержались в цикле разработки, что Atari уже заказала партию из примерно 100 000 чипов CTIA с отсутствующими графическими режимами. Не желая выбрасывать уже произведенные чипы, компания решила использовать их при исходном выпуске моделей Atari 400 и 800 на рынке США. Компьютеры, оснащенные CTIA, отсутствовали 3 дополнительных цветовых режима, поставлялись до октября - ноября 1981 года. С этого момента все новые устройства Atari оснащены новым чипом, который теперь называется GTIA, который поддерживает новые режимы интерпретации цвета.
Исходная операционная система Atari 800/400 с самого начала поддерживала альтернативные режимы интерпретации цветов GTIA, что позволяет легко заменить CTIA на GTIA, как только он был готов. Авторизованные сервисные центры Atari бесплатно установили бы чип GTIA в компьютеры с CTIA, если бы компьютер находился на гарантии; в противном случае замена обошлась бы в 62,52 доллара.
GTIA также была установлена на всех компьютерах Atari XL и XE и консолях Atari 5200.
В приведенном ниже списке возможностей аппаратных возможностей CTIA / GTIA, означающие предполагающие функциональные возможности самого аппаратного обеспечения, не включая результаты, достигаемые с помощью прерываний, обслуживаемых ЦП, вызывающих частые изменения дисплея.
CTIA / GTIA - это устройство с телевизионным интерфейсом со функциями:
по номеру детали
Atari, Inc. намеревалась объединить чипов ANTIC и GTIA в одну интегральную схему, чтобы снизить производственные затраты на компьютеры Atari и консоли 5200. Два таких прототипа схемы разработаны, однако ни один из них не был запущен в производство.
Имя контакта | Номер (а) контакта | Описание |
---|---|---|
A0 - A4 | 2, 1, 40, 39, 38 | Адресный ввод |
AN0 - AN2 | 18, 19, 20 | Вход интерфейса ANTIC |
COL | 21 | Частотный выход |
CS | 32 | Вход выбора микросхемы |
CSYNC | 25 | Выход композитной синхронизации |
D0 - D7 | 7, 6, 5, 4, 37, 36, 35, 34 | Ввод / вывод шины данных |
DEL | 17 | Линейный вход с задержкой цвета |
F00 | 29 | Выход тактового сигнала быстрой фазы |
HALT | 26 | Остановить ввод |
L0 - L3 | 31, 22, 23, 24 | Выход яркости |
N / C | 16 | Не подключен (PAL в более поздних версиях) |
OSC | 28 | Вход генератора |
Чтение / Запись | 33 | Вход чтения / записи |
S0 - S3 | 12, 13, 14, 15 | Переключение ввода / вывода данных |
T0 - T3 | 8, 9, 10, 11 | Триггерные входы с внутренним подтягиванием |
Vcc | 27 | Питание +5 В |
Vss | 3 | Земля |
Ø2 | 30 | Компьютер Фаза 2 Вход |
8-битные компьютеры Atari отображают CTIA / GTIA в $ D0xx шестнадцатеричный страницу и консоль Atari 5200 отображает его на шестнадцатеричную страницу $ C0xx.
CTIA / GTIA предоставляет 54 регистратора чтения / записи, управляющих графикой игрока / ракеты, цветами игрового поля, триггерами джойстика и клавишами консоли. Многие адреса регистров CTIA / GTIA двойное назначение, выполняя разные функции: регистр чтения и записи. Следовательно, никакой код не должен читать аппаратные регистры, ожидая получить ранее записанное значение.
Эта проблема решена для многих записей с помощью теневых регистров операционной системы, реализованных в обычной оперативной памяти как места для последнего значения, записанного в регистры. Теневые регистры операционной системы копируются из ОЗУ в аппаратные регистры во время вертикального пробела. Следовательно, любая запись в аппаратных регистрах, которые имеют соответствующие теневые регистры, будет перезаписана регистром теневых регистров во время следующего вертикального пробела.
Некоторые регистры записи не имеют соответствующих теневых регистров. Они могут быть безопасно записаны без перезаписи значения во время вертикального пробела. Если приложению необходимо последнее состояние реестра, оно обязано запомнить, что оно написало.
Теневые регистры операционной системы также существуют для некоторых регистров чтения, где чтение значений непосредственно с оборудованием на неизвестной стадии в цикле представления может вернуть несогласованные результаты.
Имя | Описание | Чтение / запись | шестнадцатеричный адрес | Dec Addr | Shadow Name | Shadow Hex Addr | Shadow Dec Addr |
---|---|---|---|---|---|---|---|
HPOSP0 | Горизонтальное положение проигрывателя 0 | Запись | $ D000 | 53248 | |||
M0PF | Столкновения ракеты 0 с игровым полем | Чтение | $ D000 | 53248 | |||
HPOSP1 | Горизонтальное положение игрока 1 | Запись | $ D001 | 53249 | |||
M1PF | Конфликты между ракетой 1 и игровым полем | Чтение | $ D001 | 53249 | |||
HPOSP2 | Горизонтальное положение игрока 2 | Запись | $ D002 | 53250 | |||
M2PF | Ракета 2 в коллизиях игрового поля | Чтение | $ D002 | 53250 | |||
HPOSP3 | Горизонтальное положение игрока 3 | Запись | $ D003 | 53251 | |||
M3PF | Столкновения ракеты 3 с игровым полем | Чтение | $ D003 | 53251 | |||
HPOSM0 | Горизон тальное положение ракеты 0 | Записать | $ D004 | 53252 | |||
P0PF | Игрок 0 в коллизии игрового поля | Чтение | $ D004 | 53252 | |||
HPOSM1 | Горизонтальное положение ракеты 1 | Запись | $ D005 | 53253 | |||
P1PF | Коллизии между игроком 1 и игровым полем | Чтение | $ D005 | 53253 | |||
HPOSM2 | Горизонтальное положение ракеты 2 | Запись | $ D006 | 53254 | |||
P2PF | Игрок 2 в коллизии игрового поля | Чтение | $ D006 | 53254 | |||
HPOSM3 | Горизонтальное положение ракеты 3 | Запись | $ D007 | 53255 | |||
P3PF | Игрок 3 в коллизии игрового поля | Чтение | $ D007 | 53255 | |||
SIZEP0 | Размер проигрывателя 0 | Запись | $ D008 | 53256 | |||
M0PL | Ракета 0 для столкновений игрока | Чтение | $ D008 | 53256 | |||
SIZEP1 | Размер игрока 1 | Запись | $ D009 | 53257 | |||
M1PL | Ракета 1 в коллизии игрока | Чтение | $ D009 | 53257 | |||
SIZEP2 | Размер проигрывателя 2 | Запись | $ D00A | 53258 | |||
M2PL | Ракета 2 в Player col lisions | Чтение | $ D00A | 53258 | |||
SIZEP3 | Размер проигрывателя 3 | Запись | $ D00B | 53259 | |||
M3PL | Столкновения ракеты 3 с игроком | Чтение | $ D00B | 53259 | |||
SIZEM | Размер всего Ракеты | Запись | $ D00C | 53260 | |||
P0PL | Игрок 0 в коллизии игрока | Чтение | $ D00C | 53260 | |||
GRAFP0 | Графический шаблон для проигрывателя 0 | Запись | $ D00D | 53261 | |||
P1PL | Player 1 коллизии с проигрывателем | Чтение | $ D00D | 53261 | |||
GRAFP1 | Графический шаблон для игрока 1 | Запись | $ D00E | 53262 | |||
P2PL | Коллизии между игроком 2 и игроком | Чтен ие | $ D00E | 53262 | |||
GRAFP2 | Графический шаблон для игрока 2 | Запись | $ D00F | 53263 | |||
P3PL | Игрок 3 в конфликты игроков | Чтение | $D00F | 53263 | |||
GRAFP3 | Графический шаблон для проигрывателя 3 | Запись | $ D010 | 53264 | |||
TRIG0 | Джойстик 0 триггер r. | Чтение | $ D010 | 53264 | STRIG0 | $ 0284 | 644 |
GRAFM | Графический шаблон для всех ракет | Запись | $ D011 | 53265 | |||
TRIG1 | Триггер джойстика 1. | Чтение | $ D011 | 53265 | STRIG1 | $ 0285 | 645 |
COLPM0 | Цвет / яркость игрока и ракеты 0. | Запись | $ D012 | 53266 | PCOLOR0 | $ 02C0 | 704 |
TRIG2 | Триггер джойстика 2. | Чтение | $ D012 | 53266 | STRIG2 | $ 0286 | 646 |
COLPM1 | Цвет / яркость игрока и ракеты 1. | Запись | $ D013 | 53267 | PCOLOR1 | $ 02C1 | 705 |
TRIG3 | Триггер джойстика 3. | Чтение | $ D013 | 53267 | STRIG3 | $ 0287 | 647 |
COLPM2 | Цвет / яркость игрока и ракеты 2. | Запись | $ D014 | 53268 | PCOLOR2 | $ 02C2 | 7 06 |
PAL | Флаги PAL. | Чтение | $ D014 | 53268 | |||
COLPM3 | Цвет / яркость игрока и ракеты 3. | Запись | $ D015 | 53269 | PCOLOR3 | $ 02C3 | 707 |
COLPF0 | Цвет / яркость поля воспроизведения 0. | Запись | $ D016 | 53270 | COLOR0 | $ 02C4 | 708 |
COLPF1 | Цвет / яркость поля воспроизведение 1. | Запись | $ D017 | 53271 | COLOR1 | $ 02C5 | 709 |
COLPF2 | Цвет / яркость игрового поля 2. | Напишите | $ D018 | 53272 | COLOR2 | $ 02C6 | 710 |
COLPF3 | Цвет / яркость воспроизведения 3. | Запись | $ D019 | 53273 | COLOR3 | $ 02C7 | 711 |
COLBK | Цвет / яркость фона игрового поля. | Запись | $ D01A | 53274 | COLOR4 | $ 02C8 | 712 |
PRIOR | Выбор приоритета, пятый игрок и режимы GTIA | Запись | $ D01B | 53275 | GPRIOR | $ 026F | 623 |
VDELAY | Вертикальная задержка P / MG raphics | Запись | $ D01C | 53276 | |||
GRACTL | Графический элемент управления. | Запись | $ D01D | 53277 | |||
HITCLR | Удалить коллизии | Запись | $ D01E | 53278 | |||
CONSPK | Консольный динамик | Запись | $ D01F | 53279 | |||
CONSOL | Ключи консоли | Чтение | $ D01F | 53279 |
В списках отдельных регистров ниже используется следующая легенда:
Значение бита | Описание |
---|---|
0 | Бит должен быть 0 |
1 | Бит должен быть 1 |
? | Бит может быть 0 или 1. |
- | Бит не используется, или не следует ожидать, что он будет иметь значение. |
метка | См. Более позднее объяснение назначения бита. |
Эти регистры определяют положение по горизонтали в цветовых часах левого края (старший бит байтовых шаблонов GRAF * ) объектов Player / Missile. Координаты всегда основаны на механизме синхронизации цвета аппаратного обеспечения дисплея, а НЕ просто в текущем режиме отображения Playfield. Игрок / Ракета перемещаются в области за пределами текущего режима.
Обратите внимание, что хотя битовые шаблоны объектов используют один и тот же байт для отображаемых пикселей (GRAFM ), каждая ракета может быть создана независимо. Когда опция «пятый игрок» включена (см. Регистр PRIOR / GPRIOR ), превращаются четыре ракеты в одного «игрока», ракеты переключаются с отображением цвета связанного объекта Player на отображаемых значениях COLPF3. Новое положение «Игрока» на экране должно быть установлено путем определения положения каждой Ракеты индивидуально.
Пиксели Player / Missile содержит только в видимых частях пиксельного движка GTIA. Объекты Player / Missile не ограничены во время горизонтального или вертикального пустого поля. Однако объект может частично находиться внутри горизонтальной заготовки. Пиксели объектов, которые выходят за пределы горизонтальной пустоты, оказываются видимыми частями дисплея и могут регистрировать столкновения. Диапазон горизонтального положения видимых цветных часов составляет от $ 22 шестнадцатеричный / 34 десятичный до $ DD шестнадцатеричный / 221 десятичный.
Чтобы удалить игрока / Ракетный объект из горизонтальных положений видимой области изображения (слева) 0 и (справа) $ DE шестнадцатеричный / 222 dec (или больше) гарантирует, что пиксели не будут независимо от размера объект Player / Ракета, поэтому случайные столкновения не могут быть отмечены.
Горизонтальное положение проигрывателя 0
Горизонтальное положение проигрывателя 1
Положение проигрывателя 2 по горизонтали
Положение проигрывателя 3 по горизонтали
Горизонтальное положение ракеты 0
Горизонтальное положение ракеты 1
Горизонтальное положение ракеты 2
Горизонтальное положение ракеты 3
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Ниже приведены координаты цветовых часов левого и правого краев размера игрового поля, полезно при выравнивании объектов Игрок / Ракета с компонентами Playfield :
Playfield | Ширина в отображаемых цветовых часах | Left E dge First Color Clock | Right Edge Last Color Clock |
---|---|---|---|
Узкий | 80 $ шестнадцатеричное / 128 десятичное | 40 $ шестнадцатеричное / 64 десятичное | $ BF шестнадцатеричное / 191 десятичное |
нормальное | $ A0 шестнадцатеричное / 160 десятичное | $ 30 шестнадцатеричное / 48 десятичное | $ CF шестнадцатеричный / 207 десятичный |
широкий | $ B0 шестнадцатеричный / 176 десятичный | $ 28 шестнадцатеричный / 40 десятичный | $ D7 шестнадцатеричный / 215 десятичный |
Можно выбрать три размера: нормальный, двойной и четырехкратный. Левый край (см. Горизонтальные координаты ) фиксирован, а регулировка размера расширяет игрока или ракету вправо во всех случаях.
Обратите внимание, что в формате Quad один пиксель Player / Missile имеет ту же ширину, что и текстовый символ Antic Mode 2. Выбор приоритета Player / Missile, с графикой Player Missile с четырьмя шириной, можно использовать для создания нескольких цветов текста в строке режима.
Каждый проигрыватель имеет свой регистр управления размером:
Размер проигрывателя 0
Размер проигрывателя 1
Размер проигрывателя 2
Размер проигрывателя 3
Элементы управления размером проигрывателя :
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | Размер 1 | Размер 0 |
Значения:
Размер | Ширина проигрывателя | Значение в битах | Размер 1 | Размер 0 |
---|---|---|---|---|
Нормальный | 8 цветных тактов | $ 00 | 0 | 0 |
Двойной | 16 цветных часов | $ 01 | 0 | 1 |
нормальных | 8 цветных часов | $ 02 | 1 | 0 |
четырехцветных | 32 цветных часов | $ 03 | 1 | 1 |
Все размеры контролируются одним регистром, но размер каждой ракеты может быть изм енен независимо от других. Когда опция «пятый игрок» включена (см. Регистр PRIOR / GPRIOR ), превращается четыре ракеты в одного «игрока», ширина все еще устанавливается путем указания размера для каждой ракеты индивидуально.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Размер M3 1 | Размер M3 0 | Размер M2 1 | Размер M2 0 | Размер M1 1 | Размер M1 0 | Размер M0 1 | Размер M0 0 |
Значения:
Ракета | Размер | Ширина ракеты | Значение битов | Размер 1 | Размер 0 |
---|---|---|---|---|---|
Ракета 0 | Нормальный | Двухцветные часы | $ 00 | 0 | 0 |
Двойные | четырехцветные часы | $ 01 | 0 | 1 | |
Обычные | двухцветные часы | $ 02 | 1 | 0 | |
четырехцветные | 8 цветных часов | $ 03 | 1 | 1 | |
Missile 1 | Normal | Двухцветные часы | $ 00 | 0 | 0 |
Double | 4-цветные часы | $ 04 | 0 | 1 | |
Обычные | 2-цветные часы | $ 08 | 1 | 0 | |
Quad | 8 -цветные часы | $ 0C | 1 | 1 | |
Missile 2 | Обычные | двухцветные часы | $ 00 | 0 | 0 |
Двойные | четырехцветные часы | 10 долларов | 0 | 1 | |
Обычные | двухцветные часы | 20 долларов | 1 | 0 | |
четырехцветные | восьмицветные часы | 30 долларов | 1 | 1 | |
ракетные 3 | Норма l | 2-х цветные часы | $ 00 | 0 | 0 |
двойные | 4-х цветные часы | 40 $ | 0 | 1 | |
нормальные | двухцветные часы | $80 | 1 | 0 | |
Quad | 8 цветных часов | $ C0 | 1 | 1 |
Каждый объект Player имеет свои собственные 8- регистр битовой комбинации. Ракетные объекты используют один регистр с 2 битами на каждую Ракету. После установки значения оно будет использовать в каждой строке развертки. Без какого-либо другого вмешательства со стороны ЦП или ANTIC DMA для обновлений образуются вертикальные полосы по высоте экрана, включая области за пределами диапазона. Этот режим работы не вызывает потери ЦП или прямого доступа к памяти компьютера. Это полезно для отображения чередующихся цветных границ и вертикальных линий, разделяющих области экрана.
Графический шаблон для проигрывателя 0
Графический образец для Player 1
Графический образец для проигрывателя 2
Графический образец для проигрывателя 3
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Пиксель HPOS +0 | Pixel HPOS + 1 | Pixel HPOS + 2 | Pixel HPOS + 3 | Pixel HPOS + 4 | Pixel HPOS +5 | Pixel HPOS + 6 | Pixel HPOS + 7 |
Ширина каждого проигрывателя составляет 8 бит (пикселей). Если установлен бит, отображается в цвете, назначенном регистру цвета, связанному с проигрывателем. Если бит не установлен, объект Player будет прозрачным, обработанным игроком, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей в горизонтальной позиции, значения значения HPOS проигрывателя, причем сначала выводится самый высокий бит.
Графический образец для всех ракет
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
M3 Pixel HPOS + 0 | M3 Pixel HPOS + 1 | M2 Pixel HPOS + 0 | M2 Pixel HPOS + 1 | M1 Pixel HPOS + 0 | M1 Pixel HPOS + 1 | M0 Pixel HPOS + 0 | M0 Pixel HPOS + 1 |
Ширина каждой ракеты составляет 2 бита (пикселя). Если установлен бит, отображается в цвете, назначенном регистру цветов для игрока, связанного с ракетой. Когда Пятый игрок включен (см. PRIOR / GPRIOR ), на всех пикселях отображается COLPF3. Если бит не установлен, объект будет прозрачным, игроком, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей в горизонтальном положении, заданном начале HPOS ракеты, причем сначала выводится самый высокий бит.
Значения ракеты:
Ракета | Значение битов | Пиксель 1 | Пиксель 0 |
---|---|---|---|
Ракета 0 | $ 00 | 0 | 0 |
$ 01 | 0 | 1 | |
$ 02 | 1 | 0 | |
$ 03 | 1 | 1 | |
Ракета 1 | $ 00 | 0 | 0 |
$ 04 | 0 | 1 | |
$ 08 | 1 | 0 | |
$ 0C | 1 | 1 | |
Ракета 2 | $ 00 | 0 | 0 |
$ 10 | 0 | 1 | |
$ 20 | 1 | 0 | |
$ 30 | 1 | 1 | |
Ракета 3 | $ 00 | 0 | 0 |
40 $ | 0 | 1 | |
$ 80 | 1 | 0 | |
$ C0 | 1 | 1 |
CTIA / GTIA имеет 60 бит, автоматическое обнаружение столкновений при пересечении пикселей Player, Missile и Playfield. Один бит указывает, что ненулевой пиксель объекта Игрок / Ракета пересек пиксель определенного регистра цвета. Коллизия значения цвета не регистрируется для пикселей, визуализированных с использованием регистра / цвета фона. Эта система обеспечивает мгновенное сравнение перекрытий с точностью до пикселя без дорогостоящей оценки ЦП ограничительной рамки или маскирования растровых изображений.
Фактическое значение цвета объекта не учитывается. Если регистры цвета Player, Missile, Playfield и Background имеют одно и то же значение, что делает объекты фактически «невидимыми», пересечения объектов по-прежнему будут регистрировать столкновения. Это полезно для создания скрытых или секретных объектов и стен.
Скрытые перекрестки также регистрируют столкновения. Если приоритет объекта Player находится за регистром цвета Playfield, а приоритет другого объекта Player выше (передний план), чем Playfield, а пиксели Player переднего плана закрывают как Playfield, так и объект Player позади Playfield, то возникает конфликт между Playfield и обоими объекты фона и переднего плана Player будут регистрироваться вместе с столкновением между объектами Player переднего и заднего планов.
Обратите внимание на отсутствие столкновения ракеты с ракетой.
Столкновения «Игрок / Ракета» могут происходить только тогда, когда пиксели объекта «Игрок / Ракета» встречаются в видимых частях экрана. Объекты Player / Missile не отображаются во время горизонтального или вертикального бланка. Диапазон видимых цветовых тактов составляет от 34 до 221, а видимые строки находятся в диапазоне от линии 8 до строки 247. Данные игрока / ракеты за пределами этих координат не могут и не будут оценивать столкновения. Объект может частично находиться внутри горизонтальной заготовки. Пиксели объектов, выходят за пределы горизонтальной пустоты, находятся в видимой части дисплея.
Чтобы удалить объект Игрок / Ракета из видимой области отображения, горизонтальные позиции (слева) 0 и (справа) 222 (или больше) гарантируют, что пиксели не будут гарантированы независимо от размера объекта Игрок / Ракета и поэтому случайные столкновения не могут быть отмечены.
Наконец, обнаружение столкновений объектов Player, Missile и Playfield происходит в реальном времени, регистрируя столкновение, когда пиксели изображения объединяются и выводятся для отображения. Проверка битов столкновения объекта до того, как объект был визуализирован CTIA / GTIA, не покажет столкновение.
После установки коллизии остаются в силе до тех пор, пока не будут устранены записью в регистр HITCLR. Эффективные процедуры реагирования на столкновения должны быть показаны после отображения целевых объектов, или во время вертикального бланка, чтобы реагировать на столкновения и устранять столкновения до начала следующего кадра.
Первое столкновение - это только один бит, очевидно, что столкновение не аддитивны. Независимо от того, сколько раз и в разных местах происходит столкновение между пикселями в одном кадре, есть только 1 бит, чтобы указать, что произошло столкновение. Программа сообщает, что она может исследовать столкновения связанных объектов, чтобы определить места столкновения, а затем решить как реагировать для каждого местоположения.
HITCLR и обнаружение столкновений отдельных частей могут быть разделены в реальном времени, прерывания отображения таблицы могут разделить отображение на разделе с использованием HITCLR в начале каждого раздела и отдельных столкновений в конце каждого раздела.
Когда включена опция «пятый игрок» (см. Регистр PRIOR / GPRIOR ), единственным изменением является переключение Ракет 0 на 3 с отображением цвета связанного объекта Player на значении отображения COLPF3. Новые столкновения "Игрока" по-прежнему сообщаются для отдельных ракет.
Каждый бит указывает, что пиксель объекта «игрок / снаряд» пересек пиксель цветового объекта поля воспроизведения. Для цвета фона не зарегистрировано коллизий.
Скрытые перекрестки также регистрируют столкновения. Если приоритет объекта Игрок / Ракета находится за регистром цвета игрового поля, приоритетом другого объекта Игрок / Ракета выше (передний план), чем Playfield, и пиксели переднего плана Игрок / Ракета закрывают как игровое поле, так и объект Игрок / Ракета за игровым полем, тогда будет зарегистрировано столкновение между игровым полем и объектами Игрок / Ракета как на заднем, так и на переднем плане.
Пиксельные режимы с высоким разрешением, 1/2 цветовой синхронизации (ANTIC режимы 2, 3 и F) обрабатываются иначе. Цвет «фона», отображаемый как COLPF2, где значения пикселей равны 0, не регистрирует столкновение. Пиксели с высокими значениями яркости из COLPF1. Пиксели сгруппированы вместе в пары цветных часов (пиксели 0 и 1, пиксели 2 и 3, продолжающиеся до пикселей 318 и 319). Если любой из пикселей пары равен 1, обнаруживается коллизия между пикселями или ракетой и цветом поля воспроизведения COLPF2.
Режимы GTIA 9 и 11 не обрабатывают столкновения игрового поля. В режиме GTIA 10 коллизии игрового поля будут регистрироваться там, где пиксели игрового поля используют COLPF0 - COLPF3
Столкновения ракет 0 и игрового поля
Столкновения ракеты 1 с игровым полем
Столкновения ракеты 2 с игровым полем
Столкновения ракет 3 с игровым полем
Коллизии от игрока 0 до игрового поля
от игрока 1 до столкновения с игровым полем
Коллизии между игроком 2 и игровым полем
Коллизии между игроком 3 и игровым полем
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPF3 | COLPF2 | COLPF1 | COLPF0 |
Ракеты сталкиваются с игроками и игровыми полями м и. Столкновения ракеты с ракетой нет.
Ракета 0 с конфликтами игрока
Ракета 1 с конфликтами игрока
Коллизии от ракеты 2 к игроку
Коллизии от ракеты 3 к игроку
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | COLPM1 | COLPM0 |
Столкновение между двумя игроками устанавливает бит столкновения в регистрах столкновений обоих игроков. Когда Игрок 0 и Игрок 1 сталкиваются, бит коллизии Игрока 0 для Игрока 1 устанавливается, а бит коллизии Игрока 1 для Игрока 0 устанавливается.
Игрок не может столкнуться с самим собой, поэтому его бит всегда равен 0.
Коллизии между игроком 0 и игроком
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | COLPM1 | 0 |
Коллизии между игроком 1 и игроком
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | 0 | COLPM0 |
коллизии игрока 2 с игроком
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | 0 | COLPM1 | COLPM0 |
Игрок 3 и коллизии игрока
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | 0 | COLPM2 | COLPM1 | COLPM0 |
Пи всех игроков / ракетных объектов xels и все пиксели игровое поле в режиме интерпретации цвета CTIA / GTIA по умолчанию используют косвенное указание для указания цвета. Косвенность означает, что значения данных не определяют цвет напрямую, а указывают на другой источник информации о цвете. CTIA / GTIA содержат аппаратные регистры, которые устанавливают значения, используемые для цветов, и информация о пикселях относится к этим регистрам. Палитра Atari имеет 8 уровней яркости по 16 цветов, всего 128 цветов. Гибкость косвенного изменения цвета позволяет программе настроить цвет экрана в соответствии с целями программы.
Все регистры цвета оборудования имеют соответствующие теневые регистры.
ТЕНЬ: PCOLOR0 $ 02C0
Цвет / яркость игрока и ракеты 0.
Когда включен 9-цветной режим GTIA (PRIOR / GPRIOR значение $ 80) этот регистр используется для границы и фона (значение пикселя игрового поля 0), а не COLBK.
SHADOW: PCOLOR1 $ 02C1
Цвет / яркость игрока и ракеты 1.
ТЕНЬ: PCOLOR2 $ 02C2
Цвет / яркость игрока и ракета 2.
ТЕНЬ: PCOLOR3 $ 02C3
Цвет / яркость игрока и ракеты 3.
ТЕНЬ: ЦВЕТ0 $ 02C4
Цвет / яркость поля воспроизведения 0.
ТЕНЬ: ЦВЕТ1 $ 02C5
Цвет / яркость игрового поля 1.
Этот регистр используется для изображений (1) в текстовых режимах ANTIC 2 и 3, а также в режиме карты F. Используется только часть яркости и оператором ИЛИ со значением цвета COLPF2. В других режимах «Символ» и «Карта» этот ожидаемый цвет и яркость пикселя.
ТЕНЬ: COLOR2 $ 02C6
Цвет / яркость игрового поля 2.
Этот регистр используется для цвета фона игрового поля ANTIC текстовые режимы 2 и 3 и режим карты F. То есть используется значение пикселя 0. В других режимах «Символ» и «Карта» этот регистр обеспечивает ожидаемый цвет и яркость пикселя.
ТЕНЬ: COLOR3 $ 02C7
Цвет / яркость Playfield 3
COLPF3 доступен в нескольких случаях:
SHADOW: COLOR4 $ 02C8
Цвет / яркость фона игрового поля.
Цвет фона отображается там, где нет других пикселей во всей области отображения следующих исключений:
Биты цветовых регистров :
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Цвет 3 | Цвет 2 | Цвет 1 | Цвет 0 | Яркость 3 | Яркость 2 | Яркость 1 | (Яркость 0) |
Высокий уровень яркости регистр цветов определяет один из 16 цветов (00 долларов, 10 долларов, 20 долларов... до F0).
Младший младший бит регистра определяет одно из 16 значений яркости (00 $, 01 $, 02 $... до $ 0F).
В обычном режиме интерпретации цвета самый младший бит не имеет значения, и доступны только 8 значений яркости ($ 00, $ 02, $ 04, $ 06, $ 08, $ 0A, $ 0C, $ 0E), поэтому весь цвет палитра 128 значений цвета.
В режиме интерпретации цвета GTIA $ 4 (режим только яркости) для пикселей поля доступны полные 16 бит игровых яркости, обеспечивающих палитру из 256 цветов. Любые объекты Player / Missile, отображаемые в этом режиме, окрашиваются косвенно, при этом используется палитра 128 цветов.
В обычном режиме интерпретации цвета значения изменяются от $ 0 до $ 3, обычно на регистры цвета COLBK, COLPF0, COLPF1, COLPF2 соответственно. Режимы цветного текста также включают параметры использования COLPF3 для диапазонов значений символов. См. Дополнительные сведения в графических режимах ANTIC.
Когда графические шаблоны Player / Missile отображаются для отображения, где установлены биты графических шаблонов, отображаемый цвет берется из регистров, назначенных объектам.
Существуют исключения для генерации и отображения цвета:
Использование регистров цвета для разных символов ANTIC :
Регистр | ANTIC 2 | ANTIC 3 | ANTIC 4 | ANTIC 5 | ANTIC 6 | ANTIC 7 |
---|---|---|---|---|---|---|
COLPM0 / PCOLOR0 | ||||||
COLPM1 / PCOLOR1 | ||||||
COLPM2 / PCOLOR2 | ||||||
COLPM3 / PCOLOR3 | ||||||
COLPF0 / COLOR0 | пиксель 235> | глиф-пиксель | глиф | глиф | ||
COLPF1/COLOR1 | пиксель глифа (яркость) | пиксель глифа (яркость) | пиксель глифа | пиксель глифа | глиф | глиф |
COLPF2/COLOR2 | фон | фон | пиксель глифа | пиксель глифа | глиф | глиф |
COLPF3 / COLOR3 | пиксель глифа | пиксель глифа | глиф | глиф | ||
COLBAK/COLOR4 | граница | граница | фон | фон | фон | фон |
Использование регистров цвета в режимах карты ANTIC :
Регистр | ANTIC 0 (пустые строки) | ANTIC 8 | АНТИК 9 | АНТИК А | ANTIC B | ANTIC C | ANTIC D | ANTIC E | ANTIC F |
---|---|---|---|---|---|---|---|---|---|
COLPM0 / PCOLOR0 | |||||||||
COLPM1 / PCOLOR1 | |||||||||
COLPM2 / PCOLOR2 | |||||||||
COLPM3 / PCOLOR3 | |||||||||
COLPF0 / COLOR0 | пиксель | пиксель | пиксель | пиксель | пиксель | пиксель | пиксель | ||
COLPF1 / COLOR1 | пиксель | пиксель | пиксель | пиксель | пиксель (яркость) | ||||
COLPF2 / COLOR2 | пиксель | пиксель | пиксель | пиксель | фон | ||||
COLPF3 / COLOR3 | |||||||||
COLBAK / COLOR4 | фон | фон | фон | фон | фон | фон | фон | фон | граница |
Использование регистров цвета в режимах GTIA (ANTIC F) :
Регистр | GTIA $ 4 (BASIC 9) | GTIA $ 8 (BASIC 10) | GTIA $ C (BASIC 11) |
---|---|---|---|
COLPM0 / PCOLOR0 | фон | ||
COLPM1 / PCOLOR1 | пикселей | ||
COLPM2 / PCOLOR2 | пикселей | ||
COLPM3 / PCOLOR3 | пикселей | ||
COLPF0 / COLOR0 | пикселей | ||
COLPF1 / CO LOR1 | пиксель | ||
COLPF2 / COLOR2 | пиксель | ||
COLPF3 / COLOR3 | пиксель | ||
COLBAK / COLOR4 | базовый цвет фона | пиксель | базовая яркость фона |
Цвета игрока / ракеты всегда доступны для объектов Player / Missile во всех режимах, хотя цвета должны быть, когда используются специальные режимы GTIA (16 оттенков / 16 цветов).
SHADOW: GPRIOR $ 026F
Этот регистр управляет функциями управления цветом CTIA / GTIA: Режим интерпретации цвета игрового поля GTIA, объекты многоцветного проигрывателя, пятый и приоритет игрока / снаряда / игрового поля.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
GTIA Mode 1 | GTIA Mode 0 | Многоцветный проигрыватель | Пятый игрок | Приоритет 3 | Приоритет 2 | Приоритет 1 | Приоритет 0 |
Цветовые интерпретации игрового поля GTIA . CTIA включает только один режим интерпретации цвета по умолчанию для ANTIC Поток данных игрового поля. Это основная функциональность, предполагаемая в большинстве обсуждений ANTIC и CTIA / GTIA, если не указано выше. GTIA включает три альтернативных режима интерпретации цвета для данных Playfield. Эти режимы работают путем сопряжения соседних цветовых часов из ANTIC, таким образом, пиксели, выводимые GTIA, всегда имеют ширину в два цветовых такта. Хотя эти режимы могут быть задействованы при отображении любого режима игрового поля ANTIC, полная цветовая палитра, возможная с этими опциями обработки цвета GTIA, реализована только в режимах ANTIC на основе пикселей 1/2 цветных часов (режимы ANTIC 2, 3, F.) GTIA чаще всего используются с дисплеем в режиме F. Специальные режимы обработки цвета GTIA также по-разному изменяют отображение или поведение графики игрока / ракеты.
Управление интерпретацией цвета - это глобальная функция GTIA, влияющая на весь экран. GTIA по своей сути не может смешивать на одном дисплее различные режимы интерпретации цвета GTIA и режим CTIA по умолчанию, необходимые для многих игровых полей ANTIC. Смешивание вариантов интерпретации цветов требует программной записи в ПРИОР при генерации отображения (регистр с помощью прерывания списка отображения).
Биты 7 и 6 PRIOR предоставляют четыре значения, определяющие режимы интерпретации цвета:
Биты режима GTIA [7: 6] | Характеристика | Описание |
---|---|---|
0 0 = $ 00 | По умолчанию | То же, что и CTIA. Обычное использование регистра цвета. |
0 1 = 40 долларов США | GTIA / 16 оттенков | 16 оттенков цвета фона (COLBK ) |
1 0 = 80 долларов США | GTIA / 9 цветов | Все девять цветовых регистров игрового поля и игрока / ракеты доступны на игровом поле.: COLPM0 |
1 1 = $ C0 | GTIA / 16 Color | 15 цветов на одном уровне яркости, установленном регистром фона (COLBK ), плюс фон. |
16 оттенков . В режиме для указания цвета фона используется регистр COLBK. Этот режим позволяет использовать все четыре цвета яркости в цветовой палитре Atari и таким образом, позволяет отображать 256 цветов.
Графика игрока / ракеты (без пятого игрока) опция) правильно в в этом режиме, однако обнаружение столкновений с игровым полем отключено. Приоритет игрового поля всегда находится внизу. Когда Ракеты включаются на действия пятого игрока, тогда, когда объекты Ракет перекрывают игровое поле, M Яркость пикселей объединяется со степенью яркости пикселей Playfield.
9 Color . В отличие от двух других специальных режимов GTIA, этот режим полностью основан на косвенном изменении цвета. Все девять регистров цвета работают на дисплее для значений пикселей от 0 до 8. Оставшиеся 7 значений пикселей повторяют предыдущие регистры цвета.
При выводе пиксели задерживаются на одну цветовую синхронизацию (половину пикселя в режиме GTIA). Это смещение позволяет получить интересные эффекты. Например, быстрое переключение страниц между этим режимом и другим режимом GTIA дает дисплей с явно более высоким разрешением и большим количеством цветов.
Этот режим уникален тем, что он использует регистр цвета COLPM0 для границы и фона (пиксели значения Playfield 0), а не COLBK.
Графика игрока / ракеты отображается правильно с за исключением того, что Player / Missile 0 не отличимы от пикселей фона, так как они используют один и тот же регистр цвета, COLPM0. Пиксели игрового поля, использующие цвета игрока / ракеты, изменяются настройками приоритета, как если бы они были объектами игрока / ракеты, и поэтому могут влиять на отображение игроков / ракет. (См. Обсуждение приоритетов игрока / ракет / игрового поля ниже).
Пиксели игрового поля, использующие цвета игрока / снаряда, не вызывают столкновений, когда объекты игрока / снаряда перекрывают их. Однако графика игрока / ракеты, перекрывающая цвета игрового поля от COLPF0 до COLPF3, вызовет ожидаемое столкновение.
16 цветов . В этом режиме используется регистр COLBK для указания яркости всех пикселей поля воспроизведения (значения от $ 1 шестнадцатеричный / 1 десятичный до $ F hex / 15 dec.) Наименьший значащий бит значения яркости не наблюдается, поэтому доступны только стандартные значения яркости / CTIA 8 ($ 0, $ 2, $ 4, $ 6, $ 8, $ A, $ C, $ E). Кроме того, сам фон использует только компонент цвета, установленный в регистре COLBK. Значение яркости фона принудительно равно 0. Как и в режиме яркости косвенное указание отключено, и значения пикселей непосредственно представляют цвет.
Обратите внимание, что цветовой компонент фона также сливается с пикселями игрового поля. Цвета фона, отличные от черного, уменьшают общее количество цветов, отображаемых в режиме.
Графика игрока / ракеты (без опции пятого игрока) отображается правильно в этом режиме, однако обнаружение столкновений с игровым полем отключено. Приоритет игрового поля всегда внизу. Когда Ракеты переключаются на действия пятого игрока, тогда, когда объекты Ракеты перекрывают игровое поле, пиксели Ракеты наследуют значение цвета пикселей игрового поля.
Многоцветный проигрыватель . PRIOR бит 5, значение $ 20 шестнадцатеричный / 32 dec включает объекты многоцветного проигрывателя. Там, где пиксели двух объектов Player / Missile перекрываются, появляется третий цвет. Это реализовано за счет исключения приоритетной обработки между парами объектов Player / Missile, в результате чего CTIA / GTIA выполняет побитовое ИЛИ двух цветных пикселей для вывода нового цвета.
Пример: пиксель игрока со значением цвета $ 98 шестнадцатеричный / 152 dec (синий) перекрывает пиксель игрока со значением цвета $ 46 шестнадцатеричный / 70 dec (красный), что дает цвет пикселя $ DE шестнадцатеричный / 228 dec (светло-зеленый / желтый).
Пары «Игроки / Ракеты», способные к многоцветному выводу:
Пятый игрок . PRIOR бит 4, значение $ 10 шестнадцатеричный / 16 dec позволяет Missiles стать пятым игроком. Никаких функциональных изменений Ракеты не происходит, кроме обработки цвета Ракет. Обычно Ракеты отображаются цветом соответствующего игрока. Когда Пятый игрок включен, все Ракеты отображают цвет игрового поля 3 (COLPF3 ). Положение по горизонтали, размер, задержка по вертикали и столкновения игрока и ракеты продолжают действовать одинаково. Приоритетом пересечения пикселей объектов Пятого игрока для игрока является COLPF3, но пиксели Пятого игрока имеют приоритет над всеми цветами игрового поля.
Изменение обработки цвета также вызывает некоторые исключения для отображения ракет в альтернативных цветовых режимах GTIA:
Пятый игрок вводит исключение для значения приоритета $ 8 (бит 1000) (см. Обсуждение приоритета ниже).
Priority. Биты PRIOR с 3 по 0 предоставляют четыре значения приоритета Player / Missile и Playfield, которые определяют, какое значение пикселя отображается, когда пиксели объектов Player / Missile и пиксели Playfield пересекаются. Четыре значения предоставляютопределенные параметры, перечисленные в таблице приоритетов ниже. «PM» означает обычную реализацию игрока / ракеты без пятого игрока. Пятый игрок, «P5», отображается там, где он имеет приоритет, когда он включен.
Диаграмма точна для режимов ANTIC Playfield Character и Map с использованием режима интерпретации цвета по умолчанию (CTIA). Режимы интерпретации цвета GTIA и режимы ANTIC, основанные на пикселях с половинной цветовой синхронизацией с высоким разрешением, ведут себя по-разному (будет отмечено позже).
Биты приоритета [3: 0] | 0 0 0 1 = 1 доллар | 0 0 1 0 = 2 доллара | 0 1 0 0 = 4 доллара | 1 0 0 0 = $ 8 | 0 0 0 0 = $ 0 |
---|---|---|---|---|---|
Top | PM0 | PM0 | P5/PF0 | P5 / PF0 | PM0 |
PM1 | PM1 | PF1 | PF1 | PM1 | |
PM2 | P5 / PF0 | PF2 | PM0 | P5 / PF0 | |
PM3 | PF1 | PF3 | PM1 | PF1 | |
P5/PF0 | PF2 | PM0 | PM2 | PM2 | |
PF1 | PF3 | PM1 | PM3 | PM3 | |
PF2 | PM2 | PM2 | PF2 | PF2 | |
PF3 | PM3 | PM3 | PF3 | PF3 | |
Нижний | COLBK | COLBK | COLBK | COLBK | COLBK |
Если установлено несколько битов, то в случае конфликта CTIA / GTIA выводит черный пиксель. Примечание. этот черный означает настоящий черный, а не просто цвет фона, COLBK.
Хотя пятый игрок отображается со значением COLPF3, его приоритет выше всех цветов игрового поля. Это создает исключение для значения приоритета $ 8 (биты 1000). В этом режиме Playfield 0 и 1 имеют более высокий приоритет, чем Players, а Players - более высокий приоритет, чем Playfield 2 и 3. Если пиксели Playfield 0 или 1 пересекают любой пиксель Player, отображается результат - пиксель Playfield. Однако, если Пятый игрок также пересекает одно и то же место, его значение отображается над игровым полем, что создает впечатление, что игровое поле 3 имеет наивысший приоритет. Если пиксель игрового поля 0 или 1 удален из этого пересечения, то пиксель пятого игрока не имеет пикселя игрового поля, который нужно переопределить, и поэтому также отстает от пикселей игрока.
Когда все биты приоритета равны 0, возникает другой эффект - пиксели проигрывателя и поля воспроизведения логически объединяются по ИЛИ аналогично функции Multi-Color Player. В этой ситуации пиксели игроков 0 и 1 могут смешиваться с пикселями игрового поля 0 и 1, а пиксели проигрывателей 2 и 3 могут смешиваться с пикселями игрового поля 2 и 3. Кроме того, когда используется опция Multi-Color Player, результирующий цвет объединенных Player также может смешиваться с Playfield, создавая больше цветов. Если учесть все возможности слияния цветов, оборудование CTIA / GTIA может выводить 23 цвета на строку развертки. Начиная с цвета фона в качестве первого цвета, возможны остальные 22 цвета и слияние цветов:
Color | COLPM0 | COLPM1 | COLPF0 | COLPF1 | Цвет | COLPM2 | COLPM3 | COLPF2 | COLPF3 | |
---|---|---|---|---|---|---|---|---|---|---|
1 | X | 12 | X | |||||||
2 | X | 13 | X | |||||||
3 | X | X | 14 | X | X | |||||
4 | X | 15 | X | |||||||
5 | X | X | 16 | X | X | |||||
6 | X | X | 17 | X | X | |||||
7 | X | X | X | 18 | X | X | X | |||
8 | X | 19 | X | |||||||
9 | X | X | 20 | X | X | |||||
10 | X | X | 21 | X | X | |||||
11 | X | X | X | 22 | X | X | X |
Когда все биты приоритета равны 0, цвета ракет работают одинаково как соответствующие игроки, как описано выше. Когда включен Пятый игрок, пиксели ракет вызывают слияние того же цвета, что и для COLPF3 в таблице выше (цвета с 19 по 22).
Режимы приоритета и высокого разрешения . Результаты приоритета различаются для режимов «Символ» и «Карта» с использованием пикселей высокого разрешения с половиной цветовой синхронизации - режимы ANTIC 2, 3 и F. Эти различия в обработке приоритетов могут использоваться для создания цветного текста или графики в этих режимах, которые традиционно считаются «монохромными».
В этих режимах ANTIC COLPF2 выводится как «фон» поля воспроизведения, а COLBK выводится как граница вокруг поля воспроизведения. Графика или пиксели глифа выводятся с использованием только компонента яркости COLPF1, смешанного с компонентом цвета фона (обычно COLPF2).
Отношения приоритета между игроками / ракетами и COLPF2 работают в соответствии с таблицей приоритетов ниже. Пиксели игрока / ракеты с более высоким приоритетом заменят COLPF2 в качестве цвета «фона». COLPF1 всегда имеет наивысший приоритет и не может быть скрыт игроками или ракетами. Пиксели глифа / графики используют цветовой компонент с наивысшим приоритетом (Playfield, Player или Missile) и компонент яркости COLPF1. Обратите внимание, что это поведение также согласуется, когда конфликты приоритетов игрока / ракеты приводят к истинному черному цвету для «фона». Фактически, значение цвета, которое CTIA / GTIA, наконец, использует для «цвета фона», «оттеняет» глиф / графические пиксели переднего плана COLPF1.
Биты приоритета [3: 0] | COLPF2 против COLPM0 и COLPM1 | COLPF2 против COLPM2 и COLPM3 |
---|---|---|
0 0 0 0 = $ 00 | Player / Missile | Игрок / Стрелка ИЛИ с COLPF2 |
0 0 0 1 = $ 01 | Игрок / Стрелка | Игрок / Стрелка |
0 0 1 0 = 02 $ | Игрок / Ракета | COLPF2 |
0 0 1 1 = $ 03 | Игрок / Ракета | True Black |
0 1 0 0 = $ 04 | COLPF2 | COLPF2 |
0 1 0 1 = $ 05 | COLPF2 | True Black |
0 1 1 0 = $ 06 | COLPF2 | COLPF2 |
0 1 1 1 = 07 $ | COLPF2 | True Black |
1 0 0 0 = 08 $ | Игрок / Стрелка | Игрок / Стрелка |
1 0 0 1 = $ 09 | Игрок / Стрелка | Игрок / Стрелка |
1 0 1 0 = $ 0A | Игрок / Ракета | True Black |
1 0 1 1 = $ 0B | Игрок / Стрелка | True Black |
1 1 0 0 = $ 0C | COLPF2 | True Black |
1 1 0 1 = $ 0D | COLPF2 | True Black |
1 1 1 0 = $ 0E | COLPF2 | True Black |
1 1 1 1 = $ 0F | COLPF2 | True Black |
Вертикальная задержка P / M Графика
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Игрок 3 | Игрок 2 | Игрок 1 | Игрок 0 | Ракета 3 | Ракета 2 | Ракета 1 | Missile 0 |
Этот регистр используется для обеспечения движения одиночной строки развертки, когда разрешение Double Line Player / Missile включено в регистре ANTIC DMACTL. Это работает путем маскирования обновлений ANTIC DMA в регистры GRAF * на четных строках развертки, в результате чего графический шаблон смещается на одну строку развертки вниз.
Поскольку для разрешения Single Line требуется обновление ANTIC DMA на каждой строке развертки, а VDELAY маскирует обновления на четных строках развертки, то этот бит снижает разрешение Single Line Player / Missile до Double line.
Управление графикой
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | Триггер-защелка | Разрешить проигрыватели | Разрешить ракеты |
GRACTL контролирует получение CTIA / GTIA данных DMA игрока / ракеты от ANTIC и переключает режим ввода триггера джойстика.
Для получения данных DMA Player / Missile требуется, чтобы CTIA / GTIA был настроен для приема данных. Это делается с помощью пары битов в GRACTL, которые соответствуют паре битов в регистре ANTIC DMACTL, которые предписывают ANTIC отправлять данные игрока и данные ракеты. Бит 0 в GRACTL соответствует биту 2 DMACTL, что позволяет передавать данные о ракетах. Бит 1 GRACTL соответствует биту 3 DMACTL, что позволяет передавать данные игрока. Эти биты должны быть установлены для GTIA, чтобы получать данные игрока / ракеты от ANTIC через DMA. Когда графикой игрока / ракеты управляет непосредственно ЦП, эти биты должны быть отключены.
Регистры триггера джойстика сообщают о нажатом / не нажатом состоянии в реальном времени. Если опрос ввода программы может быть недостаточно частым, чтобы улавливать кратковременные нажатия кнопок джойстика, то триггеры можно настроить так, чтобы они блокировались в закрытом / нажатом состоянии и оставались в этом состоянии даже после отпускания кнопки. Установка бита 2 GRACTL позволяет заблокировать все триггеры. Сброс бита возвращает триггеры к нефиксированному поведению в реальном времени.
Очистить коллизии
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Любая запись в этот регистр очищает все биты обнаружения столкновения Игрок / Ракета.
SHADOW: STRIG0 $ 0284
Триггер джойстика 0
SHADOW: STRIG1 $ 0285
Триггер джойстика 1.
SHADOW: STRIG2 $ 0286
Триггер джойстика 2.
ТЕНЬ: STRIG3 $ 0287
Триггер джойстика 3
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Триггер |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | ? |
Биты с 7 по 1 всегда равны 0. Бит 0 сообщает о состоянии триггера джойстика. Значение 1 указывает на то, что триггер не нажат. Значение 0 указывает на то, что триггер нажат.
Триггер регистрирует нажатие кнопки отчета в реальном времени. Состояние нажатой кнопки сразу же исчезнет, когда кнопка будет отпущена.
Триггеры могут быть сконфигурированы для фиксации, то есть блокировки, в нажатом состоянии и остаются в этом состоянии до тех пор, пока не будут специально сброшены. GRACTL бит 2 включает фиксацию для всех триггеров. Сброс бита 2 GRACTL возвращает все триггеры в режим реального времени.
флагов PAL.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | Видео 3 | Видео 2 | Видео 1 | Видео 0 |
Этот регистр сообщает стандартное отображение для системы. Когда биты с 3 по 0 установлены в 1 (значение $ f шестнадцатеричное / 15 десятичное), система работает в NTSC. Когда биты равны нулю, система работает в режиме PAL.
Консольный динамик
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | Динамик | - | - | - |
Бит3 управляет внутренним динамиком Atari 800/400. В более поздних моделях динамик консоли удаляется, и звук смешивается с обычными аудиосигналами POKEY для вывода на порт монитора и радиочастотный адаптер. Atari OS использует динамик консоли для вывода щелчка клавиатуры и звука звонка / зуммера.
Операционная система устанавливает бит динамика во время процедуры вертикального пустого экрана. Повторная запись 0 в бит вызовет жужжащий звук с частотой 60 Гц, поскольку вертикальный пробел сбрасывает значение. Полезные тона могут быть сгенерированы с использованием кода 6502, эффективно добавляющего пятый аудиоканал, хотя каналу требуется процессорное время для поддержания звуковых тонов.
Ключи консоли
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | Опция | Выберите | Старт |
Бит назначается для сообщения о состоянии каждой из специальных клавиш консоли, Пуск, Выбор и Параметр. Значение бита 0 указывает, что клавиша нажата, а 1 указывает, что клавиша не нажата. Ключ / битовые значения:
Аппаратная система «спрайт » обрабатывается CTIA / GTIA. Официальное название ATARI для системы спрайтов - «Графика игрока / ракеты», поскольку она была разработана для уменьшения необходимости манипулирования памятью дисплея для быстро движущихся объектов, таких как «игрок» и его оружие, «ракеты», в стреляй в них игра.
Проигрыватель, по сути, представляет собой глиф шириной 8 пикселей и высотой 256 ТВ-строк и имеет два цвета: фон (прозрачный) (0
в глифе) и передний план (1
). Объект Missile похож, но имеет ширину всего 2 пикселя. CTIA / GTIA объединяет пиксели объектов Player / Missile с пикселями Playfield в соответствии с их приоритетом. Прозрачные (0
) пиксели проигрывателя не влияют на поле воспроизведения и отображают либо поле воспроизведения, либо пиксель фона без изменений. Обычная ширина пикселей всех объектов Player / Missile - это часы одного цвета. Значение регистра может установить ширину пикселей Player или Missile равной 1, 2 или 4 цветным часам.
Реализация Player / Missile в CTIA / GTIA аналогична реализации TIA. Player - это 8-битное значение или шаблон в указанной горизонтальной позиции, который автоматически повторяется для каждой строки развертки или до тех пор, пока шаблон не будет изменен в регистре. Ракеты имеют ширину 2 бита и используют один регистр шаблона, так что четыре значения шириной 2 бита занимают регистр шаблона шириной 8 бит, но каждая ракета имеет независимое положение по горизонтали и размер. Объекты Player / Missile увеличивают высоту дисплея, включая границу экрана. То есть по умолчанию CTIA / GTIA реализует графику Player / Missile в виде полосы вниз по экрану. Несмотря на то, что этот метод кажется ограниченным, этот метод облегчает использование графики игрока / ракеты в качестве альтернативных цветных вертикальных границ или разделителей на дисплее, и когда значения приоритета установлены так, чтобы пиксели игрока / ракеты располагались за пикселями игрового поля, их можно использовать для добавления дополнительных цветов на дисплей. Все игроки и ракеты, установленные на максимальную ширину и размещенные рядом, могут покрывать все игровое поле нормальной ширины.
CTIA / GTIA поддерживает несколько опций, управляющих цветом игрока / ракеты. Значение регистра PRIOR / GPRIOR может переключать четыре Ракеты между двумя вариантами цветного отображения - каждая Ракета (от 0 до 3) выражает цвет соответствующего объекта Player (от 0 до 3), или все Ракеты показывают цвет регистр COLPF3 / COLOR3. Когда Ракеты одинакового цвета, их можно рассматривать как пятого игрока, но для правильного размещения на экране по-прежнему требуется сохранение значений во всех четырех регистрах положения Ракеты по горизонтали. PRIOR / GPRIOR также управляет функцией, которая заставляет перекрывающиеся пиксели двух Player генерировать третий цвет, позволяя разноцветные объекты Player за счет уменьшения количества доступных объектов. Наконец, PRIOR / GPRIOR может использоваться для изменения наслоения переднего плана / фона (называемого «приоритетом») пикселей игрока / ракеты по сравнению с пикселями игрового поля и может создавать конфликты приоритетов, которые предсказо вызывают на отображаемые цвета.
Традиционная идея спрайта с изображением / узором, меняющимся по вертикали, также встроена в графическую систему Player / Missile. Чип ANTIC включает в себя функцию выполнения DMA для автоматической подачи новых пиксельных шаблонов в CTIA / GTIA по мере создания дисплея. Это можно сделать для каждой строки строки, в результате чего пиксели игрока / ракеты будут высотой в одной или двух строках. Таким образом, объект Player / Missile можно рассматривать как самый высокий символ шрифта шириной 8 бит / пикселей по высоте дисплея.
Перемещение объектов Player / Missile по горизонтали так же просто, как изменение регистра в CTIA / GTIA (в Atari BASIC один оператор POKE перемещает игрока или ракету по горизонтали). Перемещение объекта по вертикали достигается либо блокировкой места перемещения глифа в новом в битовой карте Игрок или ракету, либо поворотом всего битового массива Игрок / ракета (128 или 256 байтов). В наихудшем случае вращение всего растрового изображения на машинном языке 6502 все еще довольно быстро, даже несмотря на то, что в 6502 отсутствует инструкция по перемещению блока, которая есть в 8080. Мах спрайт имеет длину ровно 128 или 256 байт. байтовый регистр на 6502. В Atari BASIC отсутствует команда высокоскоростного перемещения памяти, перемещение памяти с использованием BASIC PEEK () и POKE (s) происходит очень медленно. Программы Atari BASIC, использующие графику Player / Missile, имеют возможности для выполнения высокоскоростных перемещений памяти. Один из методов - это вызов короткой подпрограммы на машинном языке через функцию USR () для перемещения памяти. Другой вариант - использовать большую строку в качестве игрока / Ракета и карты выполнения команды строки, приводящие к перемещению памяти со скоростью машинного языка.
Тщательное использование графики Player / Missile с другими графическими функциями оборудования Atari может значительно упростить программирование графики, особенно игр.
Микросхема GTIA обратно совместима с CTIA и определ 3 цветовые интерпретации для 14 «обычных» графических режимов ANTIC Playfield. Обычная цветовая интерпретация чипа CTIA ограничена для каждой строки максимум 4 цвета в режимах карты или 5 цветов в режимах текста (плюс 4 цвета для графики игрока / ракеты), если не используются специальные методы программирования. Три новых интерпретации цвета в GTIA используются в общей сложности 56 графических режимов (14 режимов ANTIC, умноженных на четыре интерпретации цвета). Только графические режимы, основанные на высоком разрешении, 1/2 цветовых тактовых пикселей (то есть, текстовые режимы Antic 2, 3 и графический режим F) могут полностью отображать цветовые палитры этих трех новых интерпретаций цвета. Три дополнительных интерпретации цвета используют информацию в двух цветовых часах (четыре бита) для создания пикселя в одном из 16 значений цвета. Это изменяет режим отображения F с 2 цветов на пиксель, 320 пикселей по горизонтали, одной строки на строку режима, на 16 цветов и 80 пикселей по горизонтали. Дополнительные цветовые интерпретации позволяют следующее:
Из этих режимов особенно примечателен Atari BASIC Graphics 9. Это позволяет Atari отображать оцифрованные фотографии в оттенках серого, которые, несмотря на их низкое разрешение, были очень очень впечатляющими в то время. Кроме того, разрешая 16 оттенков одного оттенка вместо 8 доступных в других графических режимах, вы можете увеличить количество различных цветов, которые Atari может отображать со 128 до 256. Эта функция ограничена для использования только в других графических режимах. низкого разрешения не получил широкого распространения.
Текстовые режимы Antic 2 и 3 могутотображать те же цветовые диапазоны, что и графика в режиме F, при использовании альтернативных интерпретаций цвета GTIA. Эти режимы не подходят для реального текста, и поэтому эти режимы не подходят для реального текста, и поэтому эти графические режимы не популярны за пределами демонстраций. Для эффективного использования функций интерпретации цвета GTIA в текстовых режимах требуется составленный набор символов, рассматривающий символы как пиксели. Этот метод позволяет отображать очевидный графический режим GTIA с «высоким разрешением», который обычно занимает 8 КБ ОЗУ, вместо этого используется только около 2 КБ (1 КБ для набора символов и 1 КБ для ОЗУ экрана и списка отображения).
GTIA также исправила ошибку в CTIA, которая приводила к смещению графики «на половину цветовых часов». Побочными эффектами были созданы программы, которые полагались на цветные артефакты в монохромных режимах с высоким разрешением, отображали другие пару цветов.
Владельцы Atari могут определить, изолировать их компьютер CTIA или GTIA, выполнив команду BASIC POKE 623,64
. Если после выполнения экрана почернел, машина оснащена новым чипом GTIA. Если он остается синим, вместо него установлен чип CTIA.
Последние компьютеры Atari XE, предназначенные для рынка Восточной Европы, производились в Китае. Многие, если не все, имеют глючный чип PAL GTIA. Значения яркости в графике 9 и выше неверны, выше в виде полос. Замена чипа решает проблему. Также были попытки исправить неисправные микросхемы GTIA с помощью некоторых внешних.