CTIA и GTIA
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Адаптер интерфейса цветного телевидения [1] ( CTIA ) и его преемник Адаптер графического телевизионного интерфейса [1] ( GTIA ) — это специальные чипы, используемые в 8-битных компьютерах Atari и Atari 5200 домашней игровой консоли . В этих системах чип CTIA или GTIA работает вместе с ANTIC для создания видеоизображения. ANTIC генерирует графику игрового поля (текст и растровое изображение), а CTIA/GTIA обеспечивает цвет игрового поля и добавляет наложенные объекты, известные как графика игрока/ракеты ( спрайты ). Под руководством Джея Майнера чипы CTIA/GTIA были разработаны Джорджем МакЛеодом при техническом содействии Стива Смита. [2] [3] [4]
Адаптер интерфейса цветного телевидения и адаптер интерфейса графического телевидения — это названия микросхем, указанные в руководстве по эксплуатации Atari. [1] В различных публикациях чипы назывались по-разному, иногда используя альтернативное написание « Адаптер». [5] [6] или Графика , [3] или утверждать, что буква «C» в слове «CTIA» означает Коллин/Кэнди. [5] а «G» в «GTIA» означает Джорджа. [3] [5] [6] [7]
История
[ редактировать ]2600 и ТИА
[ редактировать ]Atari создала свой первый чип драйвера дисплея, адаптер телевизионного интерфейса , обычно называемый TIA, как часть консоли Atari 2600 . [8] Дисплей TIA логически состоял из двух основных наборов объектов: «игроков» и «ракет» , которые представляли собой движущиеся объекты, и «игрового поля», которое представляло собой статическое фоновое изображение, на котором происходило действие. Чип использовал данные в регистрах памяти для создания цифровых сигналов, которые преобразовывались в реальном времени с помощью цифро-аналогового преобразователя и радиочастотного модулятора для создания телевизионного изображения.
Обычный способ отрисовки игрового поля — использовать растровое изображение, хранящееся в буфере кадра , в котором каждая ячейка памяти в буфере кадра представляет одно или несколько мест на экране. В случае с 2600, который обычно использовал разрешение 160x192 пикселей, буфер кадра должен был иметь как минимум 160x192/8 = 3840 байт памяти. созданная в эпоху, когда оперативная память TIA, была очень дорогой, не могла себе позволить такое решение.
Вместо этого в системе была реализована система отображения, которая использовала один 20-битный регистр памяти , который можно было скопировать или отразить в правой половине экрана, чтобы создать фактически 40-битный дисплей. Каждая локация могла отображаться одним из четырех цветов из палитры из 128 возможных цветов. TIA также включало несколько других объектов отображения: «игроков» и «ракет». Они состояли из двух 8-битных объектов, известных как «игроки», одного 1-битного объекта, известного как «шар», и двух 1-битных «ракет». Все эти объекты можно было перемещать в произвольные горизонтальные положения с помощью настроек в других регистрах.
Ключом к системе TIA и низкой цене 2600 было то, что в системе было достаточно памяти, достаточной для рисования одной строки дисплея, и вся эта информация хранилась в регистрах. Чтобы отрисовать весь экран, полный данных, пользовательский код должен был дождаться, пока телевизионный дисплей достигнет правой стороны экрана, и обновить регистры игрового поля и игрока/ракет, чтобы правильно отобразить следующую строку на дисплее. Эта схема рисовала экран построчно из программного кода на картридже ПЗУ , метод, известный как «гоночный луч».
ЧЕСТЬ
[ редактировать ]Первоначально Atari предполагала, что срок службы 2600 на рынке будет коротким — три года, когда он был разработан в 1976 году, а это означало, что к 1979 году компании понадобится новый дизайн. [8] Первоначально этот новый дизайн представлял собой просто обновленную игровую консоль, подобную 2600, и был построен на аналогичном базовом дизайне, просто обновленном. Работа над тем, что впоследствии стало CTIA, началась в 1977 году и была направлена на создание системы с удвоенным разрешением и удвоенным количеством цветов. Более того, изменяя количество цветов на игровом поле, можно поддерживать гораздо более высокие разрешения — до 320 пикселей по горизонтали. Игроки и ракеты также были обновлены, включая четырех 8-битных игроков и четыре 2-битных ракеты, но также появился дополнительный режим для объединения четырех ракет в пятого игрока.
Вскоре после начала проектирования во второй половине 1977 года началась настоящая революция домашних компьютеров . В ответ Atari решила выпустить две версии новой машины: дешевую модель в качестве игровой консоли и высокопроизводительную версию в качестве игровой консоли. домашний компьютер. [8] В любой роли потребуется более сложное игровое поле, особенно поддержка графики персонажей в роли компьютера. На тот момент конструкция CTIA была достаточно продвинутой, поэтому вместо модернизации было предложено умное решение путем добавления второго чипа, который эффективно автоматизировал бы процесс управления лучом. Вместо того, чтобы пользователь программировал обновление регистров CTIA на основе времени прерывания, новый ANTIC будет выполнять эту работу, считывая данные из кадрового буфера и передавая их в CTIA на лету.
В результате этих изменений новые чипы обеспечивают значительно улучшенное количество и выбор графических режимов по сравнению с TIA. Вместо одного режима игрового поля с разрешением 20 или 40 бит пара CTIA/ANTIC может отображать шесть текстовых режимов и восемь графических режимов с различным разрешением и глубиной цвета, что позволяет программисту выбирать баланс между разрешением, цветами и использованием памяти. для их показа.
CTIA против. GTIA
[ редактировать ]Оригинальный дизайн чипа CTIA также включал три дополнительные цветовые интерпретации обычных графических режимов. Эта функция обеспечивает альтернативное выражение графических режимов высокого разрешения ANTIC, представляющих 1 бит на пиксель, 2 цвета с пикселями шириной в половину цветовой синхронизации и 4 бита на пиксель, до 16 цветов, двухцветные пиксели шириной тактовой частоты. Эта функция была готова до дебюта компьютеров в ноябре 1979 года, но в цикле разработки она была настолько задержана, что Atari уже заказала партию из около 100 000 чипов CTIA с отсутствующими графическими режимами. Не желая выбрасывать уже произведенные чипы, компания решила использовать их в первом выпуске моделей Atari 400 и 800 на рынке США. Компьютеры, оснащенные CTIA и не имеющие трех дополнительных цветовых режимов, поставлялись до октября – ноября 1981 года. [5] [6] С этого момента все новые устройства Atari были оснащены новым чипом, теперь называемым GTIA, который поддерживал новые режимы интерпретации цвета. [6] [9]
Исходная операционная система Atari 800/400 с самого начала поддерживала альтернативные режимы интерпретации цветов GTIA. [9] что позволило легко заменить CTIA на GTIA, как только он будет готов. Авторизованные сервисные центры Atari бесплатно устанавливали чип GTIA в компьютеры, оснащенные CTIA, если компьютер находился на гарантии; в противном случае замена будет стоить 62,52 доллара. [6] [7]
GTIA также была установлена на всех более поздних компьютерах Atari XL и XE и консолях Atari 5200.
Функции
[ редактировать ]В приведенном ниже списке описаны присущие аппаратным возможностям CTIA/GTIA, означающие предполагаемую функциональность самого оборудования, не включая результаты, достигнутые с помощью прерываний, обслуживаемых ЦП, или ядер дисплея, вызывающих частые изменения регистров.
CTIA/GTIA — это телевизионное интерфейсное устройство со следующими функциями:
- Интерпретирует поток графических данных Playfield от ANTIC для применения цвета к дисплею.
- Объединяет четыре объекта наложения Player и четыре Missile (также известные как спрайты ) с графикой Playfield ANTIC. Особенности игрока/ракеты включают в себя:
- Позиционирование пикселей игрока/ракеты не зависит от игрового поля:
- Объекты игрока/ракеты нормально функционируют в вертикальных и горизонтальных областях за пределами отображаемого игрового поля.
- Объекты игрока/ракеты нормально функционируют без игрового поля ANTIC.
- Объекты Player шириной восемь бит и объекты Missile шириной два бита, где каждый бит представляет один отображаемый пиксель.
- Переменная ширина пикселей (ширина 1, 2 или 4 цветовых тактовых сигнала)
- Каждый объект «Игрок/Ракета» имеет высоту всего экрана по вертикали.
- Переменная высота пикселей, когда данные предоставляются ANTIC DMA (одиночная или двойная строка сканирования на данные)
- Возможность независимого смещения каждого объекта P/M на одну строку сканирования по вертикали при работе с двойными строками сканирования на данные.
- Каждый игрок и связанная с ним ракета имеют специальный регистр цветов, отдельный от цветов игрового поля.
- Несколько схем приоритета для порядка графических слоев (графика P/M или игровое поле)
- Слияние цветов между игроками и игровым полем дает дополнительные цвета.
- Слияние цветов между парами игроков, создающее многоцветных игроков.
- Ракеты можно сгруппировать в пятого игрока, который использует отдельный регистр цветов.
- Обнаружение столкновений между игроками, ракетами и графикой игрового поля.
- Позиционирование пикселей игрока/ракеты не зависит от игрового поля:
- Для обычного режима интерпретации цветов (CTIA) фиксированных цветов нет. Все цвета генерируются косвенно через девять регистров цвета. (Четыре для графики игрока/ракеты, четыре для игрового поля и один общий для игрового поля и функции пятого игрока.)
- Обычный режим цветовой интерпретации обеспечивает выбор цветов из 128 цветовой палитры (16 цветов по 8 значений яркости для каждого).
- Режим интерпретации цвета GTIA может генерировать 16 яркостей для каждого цвета, обеспечивая 256 цветовую палитру.
- Версия чипа GTIA добавляет три альтернативных режима интерпретации цвета для графики Playfield.
- 16 оттенков одного оттенка из 16 возможных оттенков палитры Atari. Это доступно в Atari BASIC как Graphics 9.
- 15 оттенков в одном значении оттенка/яркости плюс фон. Это доступно в Atari BASIC как Graphics 11.
- 9 цветов любого оттенка и яркости из палитры, выполненные с использованием всех регистров цветов игрока/ракеты и игрового поля для цветов игрового поля. Это доступно в Atari BASIC как Graphics 10.
- Считывает состояние триггеров джойстика (нижние кнопки только для контроллеров Atari 5200).
- Он включает в себя четыре контакта ввода/вывода, которые используются по-разному в зависимости от системы:
- В 8-битных компьютерах Atari три контакта используются для считывания состояния клавиш консоли (Пуск/Выбор/Опция).
- Четвертый контакт управляет динамиком, встроенным в Atari 400/800, который генерирует щелчки клавиатуры. В более поздних моделях динамик отсутствует, но щелчок клавиши по-прежнему генерируется GTIA и смешивается с обычным аудиовыходом.
- В Atari 5200 контакты используются как часть процесса чтения клавиатуры контроллера.
Версии
[ редактировать ]по номеру детали
- C012295 — NTSC CTIA [10] [11]
- C014805 — NTSC GTIA [12]
- C014889 — PAL GTIA [12]
- C020120 — Французский SECAM GTIA (FGTIA) [12]
Atari, Inc. намеревалась объединить функции чипов ANTIC и GTIA в одной интегральной схеме, чтобы снизить затраты на производство компьютеров Atari и консолей 5200. Разрабатывались два таких прототипа схемы, однако ни один из них не поступил в производство.
Распиновка
[ редактировать ]Имя контакта | Номер(а) контакта | Описание |
---|---|---|
А0 - А4 | 2, 1, 40, 39, 38 | Ввод адреса |
АН0 - АН2 | 18, 19, 20 | Входной интерфейс ANTIC |
КОЛЛЕКЦИЯ | 21 | Выход цветовой частоты |
CS | 32 | Вход выбора чипа |
CSYNC | 25 | Композитный выход синхронизации |
D0 - D7 | 7, 6, 5, 4, 37, 36, 35, 34 | Шина данных ввода-вывода |
ПРИНАДЛЕЖАЩИЙ | 17 | Линейный вход задержки цвета |
Ф00 | 29 | Выход быстрой фазы тактовой частоты |
ОСТАНОВКА | 26 | Остановить ввод |
Л0 - Л3 | 31, 22, 23, 24 | Выходная яркость |
Н/З | 16 | Не подключено (PAL в более поздних версиях) |
ОСК | 28 | Вход генератора |
Ч/З | 33 | Чтение/запись ввода |
С0-С3 | 12, 13, 14, 15 | Переключение ввода-вывода данных |
Т0 - Т3 | 8, 9, 10, 11 | Триггерные входы с внутренним подтягиванием |
Вкк | 27 | Питание +5 Вольт |
В сс | 3 | Земля |
Ø2 | 30 | Компьютерный вход фазы 2 |
Регистры
[ редактировать ]8-битные компьютеры Atari сопоставляют CTIA/GTIA с шестнадцатеричной страницей $D0xx, а консоль Atari 5200 сопоставляет их с шестнадцатеричной страницей $C0xx.
CTIA/GTIA предоставляет 54 регистра чтения/записи, управляющие графикой игрока/ракеты, цветами игрового поля, триггерами джойстика и клавишами консоли. Многие адреса регистров CTIA/GTIA имеют двойное назначение, выполняя разные функции: регистр чтения и записи. Следовательно, ни один код не должен читать аппаратные регистры, ожидая получить ранее записанное значение.
Эта проблема решается для многих регистров записи с помощью теневых регистров операционной системы, реализованных в обычной оперативной памяти в качестве мест для хранения последнего значения, записанного в регистры. Теневые регистры операционной системы копируются из ОЗУ в аппаратные регистры во время вертикального пробела. Таким образом, любая запись в аппаратные регистры, имеющие соответствующие теневые регистры, будет перезаписана значением теневых регистров во время следующего вертикального пробела.
Некоторые регистры записи не имеют соответствующих теневых регистров. Они могут быть безопасно записаны приложением без перезаписи значения во время вертикального пробела. Если приложению необходимо знать последнее состояние регистра, то приложение обязано запомнить то, что оно записало.
Теневые регистры операционной системы также существуют для некоторых регистров чтения, где чтение значения непосредственно с оборудования на неизвестном этапе цикла отображения может возвращать противоречивые результаты.
Имя | Описание | Чтение/запись | Шестнадцатеричный адрес | Декабрьский адрес | Теневое имя | Теневой шестнадцатеричный адрес | Тень Dec Адрес |
---|---|---|---|---|---|---|---|
HPOSP0 | Горизонтальное положение игрока 0 | Писать | 000 долларов США | 53248 | |||
М0ПФ | Столкновения ракеты 0 с игровым полем | Читать | 000 долларов США | 53248 | |||
HPOSP1 | Горизонтальное положение игрока 1 | Писать | $D001 | 53249 | |||
М1ПФ | Столкновения ракеты 1 с игровым полем | Читать | $D001 | 53249 | |||
HPOSP2 | Горизонтальное положение игрока 2 | Писать | $D002 | 53250 | |||
М2ПФ | Столкновения ракеты 2 с игровым полем | Читать | $D002 | 53250 | |||
HPOSP3 | Горизонтальное положение игрока 3 | Писать | $D003 | 53251 | |||
М3ПФ | Столкновения ракеты 3 с игровым полем | Читать | $D003 | 53251 | |||
HPOSM0 | Горизонтальное положение ракеты 0 | Писать | $D004 | 53252 | |||
P0PF | Столкновения игрока 0 с игровым полем | Читать | $D004 | 53252 | |||
HPOSM1 | Горизонтальное положение ракеты 1 | Писать | $D005 | 53253 | |||
П1ПФ | Столкновения игрока 1 с игровым полем | Читать | $D005 | 53253 | |||
HPOSM2 | Горизонтальное положение ракеты 2 | Писать | $D006 | 53254 | |||
П2ПФ | Столкновения игрока 2 с игровым полем | Читать | $D006 | 53254 | |||
HPOSM3 | Горизонтальное положение ракеты 3 | Писать | $D007 | 53255 | |||
П3ПФ | Столкновения игрока 3 с игровым полем | Читать | $D007 | 53255 | |||
РАЗМЕР0 | Размер игрока 0 | Писать | $D008 | 53256 | |||
M0PL | Ракета 0 в столкновение игроков | Читать | $D008 | 53256 | |||
РАЗМЕР1 | Размер игрока 1 | Писать | $D009 | 53257 | |||
М1ПЛ | Ракета 1 в столкновения с игроками | Читать | $D009 | 53257 | |||
РАЗМЕР2 | Размер игрока 2 | Писать | $D00A | 53258 | |||
М2ПЛ | Ракета 2 при столкновении игроков | Читать | $D00A | 53258 | |||
РАЗМЕР3 | Размер игрока 3 | Писать | $D00B | 53259 | |||
M3PL | Ракета 3 при столкновении игроков | Читать | $D00B | 53259 | |||
МОЙ | Размер всех ракет | Писать | $D00C | 53260 | |||
P0PL | Столкновения между игроками 0 и игроками | Читать | $D00C | 53260 | |||
ГРАФП0 | Графический шаблон для игрока 0 | Писать | $D00D | 53261 | |||
P1PL | Столкновения между игроками 1 и игроками | Читать | $D00D | 53261 | |||
ГРАФИК 1 | Графический шаблон для игрока 1 | Писать | $D00E | 53262 | |||
P2PL | Столкновения между игроками 2 и игроками | Читать | $D00E | 53262 | |||
ГРАФП2 | Графический рисунок для игрока 2 | Писать | $D00F | 53263 | |||
P3PL | Столкновения между игроками 3 и игроками | Читать | $D00F | 53263 | |||
ГРАФП3 | Графический рисунок для игрока 3 | Писать | $D010 | 53264 | |||
ТРИГ0 | Джойстик 0, триггер. | Читать | $D010 | 53264 | СТРОГО0 | $0284 | 644 |
ГРАФИК | Графический рисунок для всех ракет | Писать | $D011 | 53265 | |||
ТРИГ1 | Джойстик 1 триггер. | Читать | $D011 | 53265 | СТРИГ1 | $0285 | 645 |
COLPM0 | Цвет/яркость игрока и ракеты 0. | Писать | $D012 | 53266 | PCOLOR0 | $02C0 | 704 |
ТРИГ2 | Джойстик 2, триггер. | Читать | $D012 | 53266 | СТРИГ2 | $0286 | 646 |
COLPM1 | Цвет/яркость игрока и ракеты 1. | Писать | $D013 | 53267 | PCOLOR1 | $02C1 | 705 |
ТРИГ3 | Джойстик 3, триггер. | Читать | $D013 | 53267 | СТРИГ3 | $0287 | 647 |
COLPM2 | Цвет/яркость Игрока и Ракеты 2. | Писать | $D014 | 53268 | PCOLOR2 | $02C2 | 706 |
PAL | PAL-флаги. | Читать | $D014 | 53268 | |||
COLPM3 | Цвет/яркость игрока и ракеты 3. | Писать | $D015 | 53269 | PCOLOR3 | $02C3 | 707 |
COLPF0 | Цвет/яркость игрового поля 0. | Писать | $D016 | 53270 | ЦВЕТ0 | $02C4 | 708 |
КОЛПФ1 | Цвет/яркость игрового поля 1. | Писать | $D017 | 53271 | ЦВЕТ1 | $02C5 | 709 |
КОЛПФ2 | Цвет/яркость игрового поля 2. | Писать | $D018 | 53272 | ЦВЕТ2 | $02C6 | 710 |
КОЛПФ3 | Цвет/яркость игрового поля 3. | Писать | $D019 | 53273 | ЦВЕТ3 | $02C7 | 711 |
КОЛБК | Цвет/яркость фона игрового поля. | Писать | $D01A | 53274 | ЦВЕТ4 | $02C8 | 712 |
ПРЕЖНИЙ | Выбор приоритета, режим пятого игрока и GTIA. | Писать | $D01B | 53275 | ГПРИОР | $026F | 623 |
VDELAY | Графика вертикальной задержки P/M | Писать | $D01C | 53276 | |||
ГРАКТЛ | Графический контроль. | Писать | $D01D | 53277 | |||
ХИТКЛР | Устранить столкновения | Писать | $D01E | 53278 | |||
КОНСПК | Консольный динамик | Писать | $D01F | 53279 | |||
КОНСОЛЬ | Клавиши консоли | Читать | $D01F | 53279 |
В приведенных ниже списках отдельных реестров применяются следующие условные обозначения:
Битовое значение | Описание |
---|---|
0 | Бит должен быть 0 |
1 | Бит должен быть 1 |
? | Бит может быть равен 0 или 1 и используется для определенной цели. |
- | Бит не используется или не следует ожидать, что он будет иметь определенное значение. |
этикетка | Обратитесь к более позднему объяснению назначения бита. |
Горизонтальные координаты игрока/ракеты
[ редактировать ]Эти регистры определяют горизонтальное положение в цветных тактовых частотах левого края (старший бит шаблонов байтов GRAF* ) объектов Player/Missile. Координаты всегда основаны на механизме цветовой синхронизации аппаратного обеспечения дисплея, а НЕ просто на текущем режиме отображения игрового поля. Это также означает, что объекты игрока/ракеты можно перемещать в области за пределами текущего режима игрового поля.
Обратите внимание, что хотя битовые шаблоны объектов Missile используют один и тот же байт для отображаемых пикселей ( GRAFM ), каждая Missile может быть расположена независимо. Когда включена опция «пятого игрока» (см. регистр PRIOR/GPRIOR ), превращающая четыре ракеты в одного «игрока», ракеты переключаются с отображения цвета связанного объекта игрока на отображение значения COLPF3. Новую позицию «Игрока» на экране необходимо задать, указав положение каждой Ракеты индивидуально.
Пиксели игрока/ракеты отображаются только в видимых частях пиксельного движка GTIA. Объекты игрока/ракеты не отображаются во время горизонтального или вертикального пробела. Однако объект может частично находиться внутри горизонтальной пустоты. Пиксели объектов, выходящие за пределы горизонтального пробела, оказываются в видимой части дисплея и все равно могут регистрировать столкновения. Диапазон горизонтального положения тактовых импульсов видимого цвета составляет от $22 hex /34 dec до $DD hex /221 dec .
Чтобы удалить объект «Игрок/Ракета» из видимой области отображения, горизонтальные позиции (слева) 0 и (справа) $DE hex /222 dec (или больше) гарантируют, что пиксели не будут отображаться независимо от размера объекта «Игрок/Ракета» и т. д. никакие непреднамеренные столкновения не могут быть отмечены.
HPOSP0 $D000 Запись
[ редактировать ]Горизонтальное положение игрока 0
HPOSP1 $D001 Запись
[ редактировать ]Горизонтальное положение игрока 1
HPOSP2 $D002 Запись
[ редактировать ]Горизонтальное положение игрока 2
HPOSP3 $D003 Запись
[ редактировать ]Горизонтальное положение игрока 3
HPOSM0 $D004 Запись
[ редактировать ]Горизонтальное положение ракеты 0
HPOSM1 $D005 Запись
[ редактировать ]Горизонтальное положение ракеты 1
HPOSM2 $D006 Запись
[ редактировать ]Горизонтальное положение ракеты 2
HPOSM3 $D007 Запись
[ редактировать ]Горизонтальное положение ракеты 3
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Ниже приведены координаты цветных часов левого и правого краев возможных размеров игрового поля, полезные при выравнивании объектов Player/Missile с компонентами игрового поля:
Игровое поле | Ширина отображаемых цветовых часов | Левый край: часы первого цвета | Правый край Часы последнего цвета |
---|---|---|---|
Узкий | 80 долларов шестиугольника / 128 декабря | 40 долларов шестиугольника / 64 декабря | $BF гекс /191 дек. |
Нормальный | $A0 шестнадцатеричный /160 десятичный | 30 долларов шестиугольника / 48 декабря | $CF шестнадцатеричный /207 декабрь |
Широкий | $B0 гекс /176 декабрь | 28 долларов шестиугольника / 40 декабря | $D7 гекс /215 декабрь |
Контроль размера игрока/ракеты
[ редактировать ]Можно выбрать три размера: обычную, двойную и четверную ширину. Левый край (см. Горизонтальные координаты ) фиксирован, а регулировка размера во всех случаях расширяет игрока или ракету вправо.
- Нормальный — 1 бит (пиксель) равен 1 цветовой тактовой частоте.
- Двойной - 1 бит (пиксель) имеет ширину 2 такта цвета.
- Quad - 1 бит (пиксель) имеет ширину 4 такта цвета.
Обратите внимание, что в размере Quad один пиксель игрока/ракеты имеет ту же ширину, что и текстовый символ Antic Mode 2. Выбор приоритета игрока/ракеты в сочетании с графикой Player Missile четырехугольной ширины можно использовать для создания нескольких цветов текста для каждой строки режима.
Каждый игрок имеет свой собственный регистр контроля размера:
SIZEP0 $D008 Запись
[ редактировать ]Размер игрока 0
РАЗМЕР1 $D009 Запись
[ редактировать ]Размер игрока 1
РАЗМЕР2 $D00A Запись
[ редактировать ]Размер игрока 2
РАЗМЕР3 $D00B Запись
[ редактировать ]Размер игрока 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 |
РАЗМЕР $D00C Запись
[ редактировать ]Все размеры ракет контролируются одним регистром, но размер каждой ракеты может быть задан независимо от других. Когда включена опция «пятый игрок» (см. регистр PRIOR/GPRIOR ), превращающая четыре ракеты в одного «игрока», ширина по-прежнему задается путем указания размера для каждой ракеты индивидуально.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
М3 Размер 1 | М3 Размер 0 | М2 Размер 1 | М2 Размер 0 | М1 Размер 1 | М1 Размер 0 | М0 Размер 1 | М0 Размер 0 |
Ценности:
Ракета | Размер | Ширина ракеты | Биты Значение | Размер 1 | Размер 0 |
---|---|---|---|---|---|
Ракета 0 | Нормальный | 2 цветных часа | $00 | 0 | 0 |
Двойной | 4 цветных часа | $01 | 0 | 1 | |
Нормальный | 2 цветных часа | $02 | 1 | 0 | |
Четырехместный | 8 цветных часов | $03 | 1 | 1 | |
Ракета 1 | Нормальный | 2 цветных часа | $00 | 0 | 0 |
Двойной | 4 цветных часа | $04 | 0 | 1 | |
Нормальный | 2 цветных часа | $08 | 1 | 0 | |
Четырехместный | 8 цветных часов | $0C | 1 | 1 | |
Ракета 2 | Нормальный | 2 цветных часа | $00 | 0 | 0 |
Двойной | 4 цветных часа | $10 | 0 | 1 | |
Нормальный | 2 цветных часа | $20 | 1 | 0 | |
Четырехместный | 8 цветных часов | $30 | 1 | 1 | |
Ракета 3 | Нормальный | 2 цветных часа | $00 | 0 | 0 |
Двойной | 4 цветных часа | $40 | 0 | 1 | |
Нормальный | 2 цветных часа | $80 | 1 | 0 | |
Четырехместный | 8 цветных часов | $C0 | 1 | 1 |
Графические шаблоны игрока/ракеты
[ редактировать ]Каждый объект Player имеет свой собственный 8-битный регистр шаблонов. Объекты ракет используют один регистр с двумя битами на каждую ракету. После установки значения оно будет продолжать отображаться в каждой строке сканирования. Без какого-либо другого вмешательства со стороны ЦП или ANTIC DMA для обновления значений в результате образуются вертикальные полосы по высоте экрана, включая области за пределами сканирования. Этот режим работы не требует нагрузки на ЦП или DMA на компьютере. Это полезно для отображения чередующихся цветных границ и вертикальных линий, разделяющих области экрана.
GRAFP0 $D00D Запись
[ редактировать ]Графический шаблон для игрока 0
GRAFP1 $D00E Запись
[ редактировать ]Графический шаблон для игрока 1
GRAFP2 $D00F Запись
[ редактировать ]Графический шаблон для игрока 2
GRAFP3 $D010 Запись
[ редактировать ]Графический рисунок для игрока 3
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Пиксель HPOS+0 | Пиксель HPOS+1 | Пиксель HPOS+2 | Пиксель HPOS+3 | Пиксель HPOS+4 | Пиксель HPOS+5 | Пиксель HPOS+6 | Пиксель HPOS+7 |
Каждый игрок имеет ширину 8 бит (пикселей). Если бит установлен, пиксель отображается цветом, назначенным регистру цвета, связанному с проигрывателем. Если бит не установлен, объект Player является прозрачным, показывая игроков, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей начинается с горизонтальной позиции, указанной значением HPOS проигрывателя, причем первым выводится старший бит.
ГРАФМ $D011 Запись
[ редактировать ]Графический рисунок для всех ракет
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
М3 Пиксель HPOS+0 | М3 Пиксель HPOS+1 | М2 Пиксель HPOS+0 | М2 Пиксель HPOS+1 | М1 Пиксель HPOS+0 | М1 Пиксель HPOS+1 | M0 Пиксель HPOS+0 | M0 Пиксель HPOS+1 |
Каждая ракета имеет ширину 2 бита (пикселя). Если бит установлен, пиксель отображается цветом, назначенным регистру цвета для игрока, связанного с ракетой. Когда пятый игрок включен (см. PRIOR/GPRIOR ), все пиксели ракет отображают COLPF3. Если бит не установлен, объект Missile является прозрачным, показывая игроков, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей начинается с горизонтальной позиции, заданной значением 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 пересек пиксель определенного цветового регистра. Для пикселей, отображаемых с использованием регистра/значения цвета фона, не зарегистрировано коллизий. Эта система обеспечивает мгновенное сравнение перекрытий с точностью до пикселя без дорогостоящей оценки ЦП ограничивающей рамки или маскировки растрового изображения.
Фактическое значение цвета объекта не учитывается. Если регистры цвета игрока, ракеты, игрового поля и фона имеют одинаковое значение, что делает объекты фактически «невидимыми», пересечения объектов все равно будут регистрировать столкновения. Это полезно для создания скрытых или секретных объектов и стен.
Скрытые перекрестки также будут регистрировать столкновения. Если приоритет объекта Player находится за регистром цвета игрового поля, а приоритет другого объекта Player выше (на переднем плане), чем игровое поле, а пиксели игрока на переднем плане закрывают как игровое поле, так и объект игрока за игровым полем, тогда происходит столкновение между игровым полем и обоими объектами. объекты Player на заднем и переднем плане будут регистрироваться вместе с столкновением между объектами Player на переднем и заднем плане.
Обратите внимание, что столкновения ракет с ракетами не происходит.
Столкновения игрока и ракеты могут произойти только в том случае, если пиксели объекта игрока/ракеты находятся в видимых частях дисплея. Объекты игрока/ракеты не отображаются во время горизонтального или вертикального пробела. Диапазон видимых цветовых часов составляет от 34 до 221, а видимые линии сканирования варьируются от строки 8 до строки 247. Данные игрока/ракеты за пределами этих координат не отображаются и не регистрируют столкновения. Объект может частично находиться внутри горизонтальной пустоты. Пиксели объектов, выходящие за пределы горизонтального пробела, находятся в видимой части экрана и все равно могут регистрировать столкновения.
Чтобы удалить объект «Игрок/Ракета» из видимой области отображения, горизонтальные положения (слева) 0 и (справа) 222 (или выше) гарантируют отсутствие рендеринга пикселей независимо от размера объекта «Игрок/Ракета», и поэтому непреднамеренные столкновения невозможны. помечен.
Наконец, обнаружение столкновений объектов Player, Missile и Playfield происходит в режиме реального времени, регистрируя столкновение по мере того, как пиксели изображения объединяются и выводятся на отображение. Проверка битов коллизий объекта до того, как объект был визуализирован с помощью CTIA/GTIA, не покажет коллизий.
После установки коллизии остаются в силе до тех пор, пока не будут устранены путем записи в регистр HITCLR . Эффективные процедуры реагирования на столкновения должны выполняться после отображения целевых объектов, в конце кадра или во время вертикального пробела, чтобы реагировать на столкновения и устранять столкновения до начала следующего кадра.
Поскольку коллизии состоят только из одного бита, совершенно очевидно, что коллизии не аддитивны. Независимо от того, сколько раз и в разных местах происходит столкновение между пикселями в одном кадре, существует только 1 бит, указывающий на то, что столкновение произошло. Установленный бит коллизии сообщает программе, что она может исследовать связанные объекты, чтобы определить места коллизий, а затем решить, как реагировать на каждое место.
Поскольку HITCLR и обнаружение столкновений происходят в реальном времени, прерывания списка отображения могут разделить дисплей на разделы, при этом HITCLR используется в начале каждого раздела и отдельная оценка столкновений в конце каждого раздела.
Когда опция «пятый игрок» включена (см. регистр PRIOR/GPRIOR ), единственным изменением является переключение Missiles 0–3 с отображения цвета связанного объекта Player на отображение значения COLPF3. О новых столкновениях «Игрока» по-прежнему сообщается для отдельных ракет.
Столкновения игрока/ракеты с игровым полем
[ редактировать ]Каждый бит указывает, что пиксель объекта Player/Missile пересек пиксель указанного цветового объекта Playfield. Для цвета фона не зарегистрировано коллизий.
Скрытые перекрестки также будут регистрировать столкновения. Если приоритет объекта «Игрок/Ракета» находится за регистром цвета игрового поля, а приоритет другого объекта «Игрок/Ракета» выше (на переднем плане), чем игровое поле, а пиксели игрока/ракеты на переднем плане закрывают как игровое поле, так и объект «Игрок/ракета» за игровым полем, тогда будет зарегистрировано столкновение между игровым полем и объектами игрока/ракеты на заднем и переднем плане.
Режимы высокого разрешения с 1/2 цветовой синхронизации пикселей ( режимы ANTIC 2, 3 и F) обрабатываются по-разному. «Фоновый» цвет, отображаемый как COLPF2, где значения пикселей равны 0, не регистрирует столкновение. Пиксели высокого разрешения визуализируются как значение яркости из COLPF1 . Пиксели группируются в пары цветовой ширины (пиксели 0 и 1, пиксели 2 и 3, а затем пиксели 318 и 319). Если любой пиксель пары равен 1, обнаруживается столкновение между пикселями Player или Missile и цветом игрового поля COLPF2 .
Режимы GTIA 9 и 11 не обрабатывают столкновения на игровом поле. В режиме GTIA будут зарегистрированы 10 столкновений игрового поля, где пиксели игрового поля используют COLPF0 – COLPF3.
M0PF $D000 Чтение
[ редактировать ]Столкновения ракеты 0 с игровым полем
M1PF $D001 Чтение
[ редактировать ]Столкновения ракеты 1 с игровым полем
M2PF $D002 Чтение
[ редактировать ]Столкновения ракеты 2 с игровым полем
M3PF $D003 Чтение
[ редактировать ]Столкновения ракеты 3 с игровым полем
P0PF $D004 Чтение
[ редактировать ]Столкновения игрока 0 с игровым полем
P1PF $D005 Чтение
[ редактировать ]Столкновения игрока 1 с игровым полем
P2PF $D006 Чтение
[ редактировать ]Столкновения игрока 2 с игровым полем
P3PF $D007 Чтение
[ редактировать ]Столкновения игрока 3 с игровым полем
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | КОЛПФ3 | КОЛПФ2 | КОЛПФ1 | COLPF0 |
Столкновения ракет с игроками
[ редактировать ]Ракеты сталкиваются с игроками и игровыми полями. Столкновений ракет с ракетами не существует.
M0PL $D008 Чтение
[ редактировать ]Ракета 0 в столкновение игроков
M1PL $D009 Чтение
[ редактировать ]Ракета 1 в столкновения с игроками
M2PL $D00A Чтение
[ редактировать ]Ракета 2 при столкновении игроков
M3PL $D00B Чтение
[ редактировать ]Ракета 3 при столкновении игроков
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | COLPM1 | COLPM0 |
Столкновения между игроками
[ редактировать ]Столкновение между двумя игроками устанавливает бит столкновения в регистрах столкновений обоих игроков. Когда Игрок 0 и Игрок 1 сталкиваются, устанавливается бит столкновения Игрока 0 для Игрока 1 и устанавливается бит столкновения Игрока 1 для Игрока 0.
Игрок не может столкнуться сам с собой, поэтому его бит всегда равен 0.
P0PL $D00C Чтение
[ редактировать ]Столкновения между игроками 0 и игроками
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | COLPM1 | 0 |
P1PL $D00D Чтение
[ редактировать ]Столкновения между игроками 1 и игроками
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | COLPM2 | 0 | COLPM0 |
P2PL $D00E Чтение
[ редактировать ]Столкновения между игроками 2 и игроками
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | COLPM3 | 0 | COLPM1 | COLPM0 |
P3PL $D00F Чтение
[ редактировать ]Столкновения между игроками 3 и игроками
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | 0 | COLPM2 | COLPM1 | COLPM0 |
Цвет и яркость игрока/ракеты и игрового поля
[ редактировать ]Все пиксели объектов Player/Missile и все пиксели игрового поля в режиме интерпретации цвета CTIA/GTIA по умолчанию используют косвенность для указания цвета. Косвенность означает, что значения данных пикселей не определяют цвет напрямую, а указывают на другой источник информации о цвете. CTIA/GTIA содержат аппаратные регистры, которые устанавливают значения, используемые для цветов, и информация о пикселях относится к этим регистрам. Палитра Atari имеет 8 уровней яркости по 16 цветов, всего 128 цветов. Гибкость косвенного цвета позволяет программе адаптировать цвета экрана в соответствии с целями отображения программы.
Все аппаратные регистры цвета имеют соответствующие теневые регистры.
COLPM0 $D012 Запись
[ редактировать ]ТЕНЬ: PCOLOR0 $02C0
Цвет/яркость игрока и ракеты 0.
Когда включен 9-цветный режим GTIA ( значение PRIOR/GPRIOR $80), этот регистр используется для границы и фона (значение пикселя игрового поля 0), а не COLBK .
COLPM1 $D013 Запись
[ редактировать ]ТЕНЬ: PCOLOR1 $02C1
Цвет/яркость игрока и ракеты 1.
COLPM2 $D014 Запись
[ редактировать ]ТЕНЬ: PCOLOR2 $02C2
Цвет/яркость Игрока и Ракеты 2.
COLPM3 $D015 Запись
[ редактировать ]ТЕНЬ: PCOLOR3 $02C3
Цвет/яркость игрока и ракеты 3.
COLPF0 $D016 Запись
[ редактировать ]ТЕНЬ: ЦВЕТ0 $02C4
Цвет/яркость игрового поля 0.
COLPF1 $D017 Запись
[ редактировать ]ТЕНЬ: ЦВЕТ1 $02C5
Цвет/яркость игрового поля 1.
Этот регистр используется для набора пикселей (значение 1) в текстовых режимах ANTIC 2 и 3 и режиме карты F. Используется только часть яркости и выполняется операция ИЛИ со значением цвета COLPF2 . В других режимах «Символ» и «Карта» этот регистр обеспечивает ожидаемый цвет и яркость пикселя.
COLPF2 $D018 Запись
[ редактировать ]ТЕНЬ: ЦВЕТ2 $02C6
Цвет/яркость игрового поля 2.
Этот регистр используется для цвета фона игрового поля в текстовых режимах ANTIC 2 и 3, а также в режиме карты F. То есть там, где используется значение пикселя 0. В других режимах «Символ» и «Карта» этот регистр обеспечивает ожидаемый цвет и яркость пикселя.
COLPF3 $D019 Запись
[ редактировать ]ТЕНЬ: ЦВЕТ3 $02C7
Цвет/яркость Playfield 3
COLPF3 доступен при нескольких особых обстоятельствах:
- Когда Ракеты преобразуются в «пятого игрока», они переключаются с отображения цвета связанного объекта «Игрок» на отображение COLPF3 и меняют приоритет. См. регистр ПРИОР/GPRIOR .
- Текстовые режимы игрового поля 4 и 5. Инверсные видеосимволы (установлен старший бит $80) заставляют CTIA/GTIA заменять значение COLPF3 пикселями COLPF2 в матрице символов. (См. Рендеринг глифов ANTIC )
- Текстовые режимы игрового поля 6 и 7. Когда в значении символа установлены биты 6 и 7 (диапазон символов $C0-FF), вся матрица пикселей символов отображается в COLPF3. (См. Рендеринг глифов ANTIC )
- Этот регистр также доступен в специальном 9-цветном цветовом режиме GTIA с перенаправлением пикселей.
COLBK $D01A Запись
[ редактировать ]ТЕНЬ: ЦВЕТ4 $02C8
Цвет/яркость фона игрового поля.
Цвет фона отображается там, где во всей области отображения нерабочей области нет других пикселей. Для фона возникают следующие исключения:
- В текстовых режимах 2 и 3 ANTIC, а также в режиме карты F фон области игрового поля, где могут отображаться пиксели, взят из COLPF2, а цвет COLBK отображается в виде границы вокруг игрового поля.
- В режиме интерпретации цвета GTIA $8 (9-цветная косвенность) цвет фона дисплея обеспечивается регистром цвета COLPM0, а COLBAK используется для значения пикселя игрового поля $8.
- В режиме интерпретации цвета GTIA $C (15 цветов на одном уровне яркости плюс фон) использует COLBK для установки уровня яркости всех остальных пикселей (значения пикселей от $1 до $F). Однако сам фон использует только компонент цвета, установленный в регистре COLBK. Значение яркости фона принудительно устанавливается на 0.
Биты регистров цвета :
Бит 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 цветов. Любые объекты игрока/ракеты, отображаемые в этом режиме, окрашиваются косвенно, при этом по-прежнему используется 128-цветная палитра.
В обычном режиме интерпретации цвета значения пикселей варьируются от $0 до $3, обычно указывая на регистры цвета COLBK, COLPF0, COLPF1, COLPF2 соответственно. Режимы цветного текста также включают возможности использования COLPF3 для определенных диапазонов значений символов. см . в графических режимах ANTIC Дополнительную информацию .
Когда графические шаблоны игрока/ракеты включены для отображения, где установлены биты графических шаблонов, отображаемый цвет берется из регистров, назначенных объектам.
Есть исключения для генерации цвета и отображения:
- Текстовые режимы ANTIC 2 и 3 и режим карты F:
- Значения пикселей в этих режимах составляют всего $0 и $1. Пиксели $0 определяют фон игрового поля, который представляет собой регистр цвета COLPF2. Пиксели стоимостью $1 используют цветовой компонент COLPF2 и яркость, указанную COLPF1. Граница вокруг игрового поля использует цвет COLBK.
- Текстовые режимы ANTIC 2 и 3, а также режим карты F ведут себя с графикой игрока/ракеты иначе, чем в других режимах. COLPF1, используемый для глифа или графических пикселей, всегда имеет наивысший приоритет и не может быть скрыт игроками или ракетами. Цвет COLPF1 всегда зависит от «фона», которым обычно является COLPF2. Следовательно, если Игроки/Ракеты и Пятый Игрок имеют приоритет над COLPF2, пиксели глифа/графики COLPF1 используют цветовой компонент цвета с наивысшим приоритетом (Игрок или Ракета) и компонент яркости COLPF1. Такое поведение соответствует случаям, когда конфликты приоритетов игрока и ракеты приводят к тому, что «фон» становится настоящим черным. Таким образом, цвет, который CTIA/GTIA, наконец, решает использовать «за» пикселем высокого разрешения, затем используется для «тонирования» пикселей глифа/графики переднего плана COLPF1.
- Исключения GTIA
- Режим интерпретации цвета GTIA $8 (9-цветная косвенность) использует регистр цвета COLPM0 для цвета фона дисплея и границы, а COLBAK используется для значения пикселя игрового поля $8.
- Режим интерпретации цвета GTIA $C (15 цветов на одном уровне яркости плюс фон) использует COLBK для установки уровня яркости всех остальных пикселей (значения пикселей от $1 до $F). Однако сам фон использует только компонент цвета, установленный в регистре COLBK. Значение яркости фона принудительно устанавливается равным 0. Обратите внимание, что компонент цвета фона также объединяется по операции ИЛИ с цветами других пикселей. Таким образом, общее количество цветов в режиме уменьшается, если компонент цвета фона не черный (числовой нуль).
- Исключения для игроков/ракет:
- Значение приоритета игрока/ракеты $0 (см. PRIOR/GPRIOR ) приведет к тому, что перекрывающиеся пиксели игрока и игрового поля будут соединены по логике ИЛИ, отображая другой цвет.
- Конфликт конфигурации приоритета игрока/ракеты приведет к отображению настоящего черного цвета (цвет 0, яркость 0) в случае возникновения конфликтов.
- Опция «Многоцветный игрок/ракета» приведет к тому, что перекрывающиеся пиксели игрока будут соединяться по логике ИЛИ, отображая другой цвет.
Использование регистров цвета для каждого символьного режима ANTIC :
Зарегистрироваться | СТАРЫЙ 2 | СТАРЫЙ 3 | СТАРЫЙ 4 | СТАРЫЙ 5 | СТАРЫЙ 6 | СТАРЫЙ 7 |
---|---|---|---|---|---|---|
COLPM0/PCOLOR0 | ||||||
COLPM1/PCOLOR1 | ||||||
COLPM2/PCOLOR2 | ||||||
COLPM3/PCOLOR3 | ||||||
КОЛПФ0/ЦВЕТ0 | глиф пиксель | глиф пиксель | глиф | глиф | ||
КОЛПФ1/ЦВЕТ1 | глиф пиксель (яркость) | глиф пиксель (яркость) | глиф пиксель | глиф пиксель | глиф | глиф |
КОЛПФ2/ЦВЕТ2 | фон | фон | глиф пиксель | глиф пиксель | глиф | глиф |
КОЛПФ3/ЦВЕТ3 | глиф пиксель | глиф пиксель | глиф | глиф | ||
КОЛБАК/ЦВЕТ4 | граница | граница | фон | фон | фон | фон |
Использование регистров цвета в режимах карты ANTIC :
Зарегистрироваться | АНТИК 0 (пустые строки) | СТАРЫЙ 8 | СТАРЫЙ 9 | АНТИК А | АНТИК Б | АНТИК С | СТАРЫЙ Д | АНТИК Э | АНТИК Ф |
---|---|---|---|---|---|---|---|---|---|
COLPM0/PCOLOR0 | |||||||||
COLPM1/PCOLOR1 | |||||||||
COLPM2/PCOLOR2 | |||||||||
COLPM3/PCOLOR3 | |||||||||
КОЛПФ0/ЦВЕТ0 | пиксель | пиксель | пиксель | пиксель | пиксель | пиксель | пиксель | ||
КОЛПФ1/ЦВЕТ1 | пиксель | пиксель | пиксель | пиксель | пиксель (яркость) | ||||
КОЛПФ2/ЦВЕТ2 | пиксель | пиксель | пиксель | пиксель | фон | ||||
КОЛПФ3/ЦВЕТ3 | |||||||||
КОЛБАК/ЦВЕТ4 | фон | фон | фон | фон | фон | фон | фон | фон | граница |
Использование регистров цвета в режимах GTIA (ANTIC F) :
Зарегистрироваться | GTIA 4 доллара США (БАЗОВАЯ 9) | GTIA — 8 долларов США (БАЗОВАЯ 10 версия) | GTIA $C (БАЗОВАЯ 11) |
---|---|---|---|
COLPM0/PCOLOR0 | фон | ||
COLPM1/PCOLOR1 | пиксель | ||
COLPM2/PCOLOR2 | пиксель | ||
COLPM3/PCOLOR3 | пиксель | ||
КОЛПФ0/ЦВЕТ0 | пиксель | ||
КОЛПФ1/ЦВЕТ1 | пиксель | ||
КОЛПФ2/ЦВЕТ2 | пиксель | ||
КОЛПФ3/ЦВЕТ3 | пиксель | ||
КОЛБАК/ЦВЕТ4 | основной цвет фона | пиксель | Базовая яркость фона |
Цвета игрока/ракеты всегда доступны для объектов игрока/ракеты во всех режимах, хотя цвета могут быть изменены, когда действуют специальные режимы GTIA (16 оттенков/16 цветов).
Разное управление игроком/ракетами и GTIA
[ редактировать ]ПРЕДЫДУЩАЯ запись $D01B
[ редактировать ]ТЕНЬ: GPRIOR $026F
Этот регистр управляет несколькими функциями управления цветом CTIA/GTIA: режимом интерпретации цвета GTIA Playfield, объектами Multi-Color Player, пятым игроком и приоритетом игрока/ракеты/игрового поля.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Режим GTIA 1 | Режим GTIA 0 | Многоцветный плеер | Пятый игрок | Приоритет 3 | Приоритет 2 | Приоритет 1 | Приоритет 0 |
Интерпретация цветов игрового поля GTIA
[ редактировать ]CTIA включает только один режим интерпретации цвета по умолчанию для потока данных ANTIC Playfield. Это базовая функциональность, подразумеваемая в большинстве обсуждений ANTIC и CTIA/GTIA, если не указано иное. GTIA включает три альтернативных режима интерпретации цвета для данных Playfield. Эти режимы работают путем объединения соседних тактовых импульсов цвета из ANTIC, поэтому пиксели, выводимые GTIA, всегда имеют ширину в два тактовых сигнала цвета. Хотя эти режимы можно использовать при отображении любого режима игрового поля ANTIC, полная цветовая палитра, возможная с этими параметрами обработки цвета GTIA, реализуется только в режимах ANTIC, основанных на 1 ⁄ пикселя цветовой синхронизации (режимы ANTIC 2, 3, F.) Эти варианты GTIA чаще всего используются с дисплеем режима F. Специальные режимы обработки цвета GTIA также различными способами изменяют отображение или поведение графики игрока/ракеты.
Управление интерпретацией цвета — это глобальная функция GTIA, влияющая на весь экран. GTIA по своей сути не способна смешивать на одном дисплее различные режимы интерпретации цвета GTIA и режим CTIA по умолчанию, необходимый для большинства игровых полей ANTIC. Смешивание режимов интерпретации цвета требует программной записи в регистр PRIOR при формировании изображения (обычно с помощью прерывания списка отображения).
Биты PRIOR 7 и 6 предоставляют четыре значения, определяющие режимы интерпретации цвета:
Биты режима 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 Цвет | 15 цветов с одним уровнем яркости, установленным регистром фона ( COLBK ), плюс фон. |
16 оттенков
[ редактировать ]В этом режиме для указания цвета фона используется регистр COLBK. Вместо использования косвенности значения пикселей напрямую представляют яркость. Этот режим позволяет использовать все четыре бита яркости в цветовой палитре Atari и, таким образом, способен отображать 256 цветов.
Графика игрока/ракеты (без опции пятого игрока) в этом режиме отображается правильно, однако обнаружение столкновений с игровым полем отключено. Приоритет игрового поля всегда внизу. Когда ракеты переключаются на роль пятого игрока, тогда, когда объекты ракет перекрывают игровое поле, яркость пикселей ракеты объединяется со значением яркости пикселей игрового поля.
9 цветов
[ редактировать ]В отличие от двух других специальных режимов GTIA, этот режим полностью основан на косвенном цветопередаче. Все девять регистров цвета работают на дисплее для значений пикселей от 0 до 8. Остальные 7 значений пикселей повторяют предыдущие регистры цвета.
При выводе пиксели задерживаются на одну тактовую частоту цвета (половину пикселя режима GTIA). Это смещение позволяет получить интересные эффекты. Например, быстрое перелистывание страниц между этим режимом и другим режимом GTIA дает дисплей с явно более высоким разрешением и большим количеством цветов.
Этот режим уникален тем, что используется регистр цвета COLPM0 для границы и фона (пиксели со значением игрового поля 0), а не COLBK .
Графика игрока/ракеты отображается правильно, за исключением того, что игрок/ракета 0 неотличимы от пикселей фона, поскольку они используют один и тот же цветовой регистр COLPM0 . Пиксели игрового поля, использующие цвета игрока/ракеты, изменяются настройками приоритета, как если бы они были объектами игрока/ракеты, и поэтому могут влиять на отображение игроков/ракет. (См. обсуждение приоритетов игрока/ракеты/игрового поля позже).
Пиксели игрового поля, использующие цвета игрока/ракеты, не вызывают столкновений, когда объекты игрока/ракеты накладываются на них. Однако графика игрока/ракеты, перекрывающая цвета игрового поля от COLPF0 до COLPF3, вызовет ожидаемое столкновение.
16 цветов
[ редактировать ]В этом режиме используется регистр COLBK для указания яркости всех пикселей игрового поля (значения от 1 шестнадцатеричного /1 десятичного до F шестнадцатеричного /15 десятичного ). Младший бит значения яркости не учитывается, поэтому используются только стандартные значения яркости/CTIA 8. есть в наличии( $0 , $2 , $4 , $6 , $8 , $А , $С , $Е ). Кроме того, сам фон использует только компонент цвета, установленный в регистре COLBK. Значение яркости фона устанавливается равным 0. Как и в режиме яркости, косвенность отключена, и значения пикселей напрямую представляют цвет.
Обратите внимание, что цветовая составляющая фона также сливается с пикселями игрового поля. Цвета фона, отличные от черного, уменьшают общее количество цветов, отображаемых в этом режиме.
Графика игрока/ракеты (без опции пятого игрока) в этом режиме отображается правильно, однако обнаружение столкновений с игровым полем отключено. Приоритет игрового поля всегда внизу. Когда ракеты переключаются на роль пятого игрока, тогда, когда объекты ракет перекрывают игровое поле, пиксели ракет наследуют значение цвета пикселей игрового поля.
Многоцветный плеер
[ редактировать ]Бит 5 PRIOR, значение 20 шестнадцатеричных /32 десятичных включает объекты Multi-Color Player. Там, где пиксели двух объектов «Игрок/Ракета» перекрываются, появляется третий цвет. Это реализовано путем устранения приоритетной обработки между парами объектов Player/Missile, в результате чего CTIA/GTIA выполняет поразрядное ИЛИ двух цветных пикселей для вывода нового цвета.
Пример: пиксель игрока со значением цвета 98 шестнадцатеричных /152 десятичных (синий) перекрывает пиксель игрока со значением цвета 46 шестнадцатеричных /70 десятичных (красный), в результате чего получается цвет пикселя DE шестнадцатеричный /228 десятичных (светло-зеленый/желтый).
Пары Игроки/Ракеты с возможностью многоцветного вывода:
- Игрок 0 + Игрок 1
- Ракета 0 + Ракета 1
- Игрок 2 + Игрок 3
- Ракета 2 + Ракета 3
Пятый игрок
[ редактировать ]Бит 4 PRIOR, значение $10 шестнадцатеричное /16 десятичное позволяет Ракетам стать пятым игроком. Никаких функциональных изменений в Ракете не происходит, кроме обработки цвета Ракет. Обычно ракеты отображаются цветом соответствующего игрока. Когда пятый игрок включен, все ракеты отображают цвет игрового поля 3 ( COLPF3 ). Горизонтальное положение, размер, вертикальная задержка и столкновения игрока с ракетой продолжают работать по-прежнему. Приоритетом пересечений пикселей пятого игрока для объектов игрока является COLPF3, но пиксели пятого игрока имеют приоритет над всеми цветами игрового поля.
Изменение обработки цвета также приводит к некоторым исключениям для отображения Ракет в альтернативных цветовых режимах GTIA:
- Режим GTIA 16 Shades: если пиксели Missile перекрывают игровое поле, пиксели наследуют значение яркости пикселей игрового поля.
- Режим цветов GTIA 16: если пиксели Missile перекрывают игровое поле, пиксели наследуют значение цвета пикселей игрового поля.
Пятый игрок вводит исключение для значения приоритета $8 (биты 1000) (см. обсуждение приоритета ниже).
Приоритет
[ редактировать ]Биты PRIOR с 3 по 0 предоставляют четыре значения приоритета игрока/ракеты и игрового поля, которые определяют, какое значение пикселя отображается, когда пиксели объектов игрока/ракеты и пиксели игрового поля пересекаются. Четыре значения предоставляют конкретные параметры, перечисленные в таблице приоритетов ниже. «PM» означает обычную реализацию игрока/ракеты без пятого игрока. Пятый игрок, «P5», отображается там, где имеет место его приоритет, когда он включен.
Таблица точна для режимов персонажа и карты игрового поля ANTIC с использованием режима интерпретации цвета по умолчанию (CTIA). Режимы интерпретации цвета GTIA и режимы ANTIC, основанные на высоком разрешении. 1/2 синхронизации ведут себя по-другому ( пикселя цветовой отмечено позже).
Биты приоритета [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 |
---|---|---|---|---|---|
Вершина | ПМ0 | ПМ0 | П5/ПФ0 | П5/ПФ0 | ПМ0 |
ПМ1 | ПМ1 | ПФ1 | ПФ1 | ПМ1 | |
ПМ2 | П5/ПФ0 | ПФ2 | ПМ0 | П5/ПФ0 | |
ПМ3 | ПФ1 | ПФ3 | ПМ1 | ПФ1 | |
П5/ПФ0 | ПФ2 | ПМ0 | ПМ2 | ПМ2 | |
ПФ1 | ПФ3 | ПМ1 | ПМ3 | ПМ3 | |
ПФ2 | ПМ2 | ПМ2 | ПФ2 | ПФ2 | |
ПФ3 | ПМ3 | ПМ3 | ПФ3 | ПФ3 | |
Нижний | КОЛБК | КОЛБК | КОЛБК | КОЛБК | КОЛБК |
Если установлено несколько битов, то в случае конфликта CTIA/GTIA выводит черный пиксель. Обратите внимание, что черный означает фактический черный цвет, а не просто цвет фона, COLBK.
Хотя пятый игрок отображается со значением COLPF3, его приоритет выше всех цветов игрового поля. Это создает исключение для значения приоритета $8 (биты 1000). В этом режиме игровое поле 0 и 1 имеют более высокий приоритет, чем игроки, а игроки имеют более высокий приоритет, чем игровое поле 2 и 3. Если пиксели игрового поля 0 или 1 пересекают любой пиксель игрока, отображаемым результатом является пиксель игрового поля. Однако, если Пятый игрок также пересекает одно и то же место, его значение отображается над игровым полем, в результате чего оно выглядит так, как будто игровое поле 3 имеет наивысший приоритет. Если пиксель игрового поля 0 или 1 удален из этого пересечения, то у пикселя пятого игрока нет пикселя игрового поля, который можно было бы переопределить, и поэтому он также отстает от пикселей игрока.
Когда все биты приоритета равны 0, происходит другой эффект: пиксели проигрывателя и игрового поля соединяются логическим ИЛИ аналогично функции многоцветного проигрывателя. В этой ситуации пиксели игроков 0 и 1 могут смешиваться с пикселями игрового поля 0 и 1, а пиксели игроков 2 и 3 могут смешиваться с пикселями игрового поля 2 и 3. Кроме того, когда используется опция «Многоцветный проигрыватель», результирующий цвет объединенных игроков также может смешиваться с игровым полем, создавая больше цветов. Если учитывать все возможности объединения цветов, оборудование CTIA/GTIA может выводить 23 цвета на строку сканирования. Начиная с цвета фона в качестве первого цвета, возможны остальные 22 цвета и слияния цветов:
Цвет | COLPM0 | COLPM1 | COLPF0 | КОЛПФ1 | Цвет | COLPM2 | COLPM3 | КОЛПФ2 | КОЛПФ3 | |
---|---|---|---|---|---|---|---|---|---|---|
1 | Х | 12 | Х | |||||||
2 | Х | 13 | Х | |||||||
3 | Х | Х | 14 | Х | Х | |||||
4 | Х | 15 | Х | |||||||
5 | Х | Х | 16 | Х | Х | |||||
6 | Х | Х | 17 | Х | Х | |||||
7 | Х | Х | Х | 18 | Х | Х | Х | |||
8 | Х | 19 | Х | |||||||
9 | Х | Х | 20 | Х | Х | |||||
10 | Х | Х | 21 | Х | Х | |||||
11 | Х | Х | Х | 22 | Х | Х | Х |
Когда все биты приоритета равны 0, цвета ракет действуют так же, как и соответствующие игроки, как описано выше. Когда включен «Пятый игрок», пиксели ракет вызывают такое же слияние цветов, как показано для COLPF3 в таблице выше (цвета с 19 по 22).
Режимы приоритета и высокого разрешения
[ редактировать ]Результат приоритета различается для режимов «Символ» и «Карта», использующих высокое разрешение. 1 ⁄ пикселя цветовой синхронизации — режимы 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 | Игрок/Ракета | Игрок/Ракета ИЛИ с COLPF2 |
0 0 0 1 = $01 | Игрок/Ракета | Игрок/Ракета |
0 0 1 0 = $02 | Игрок/Ракета | КОЛПФ2 |
0 0 1 1 = $03 | Игрок/Ракета | Настоящий черный |
0 1 0 0 = $04 | КОЛПФ2 | КОЛПФ2 |
0 1 0 1 = $05 | КОЛПФ2 | Настоящий черный |
0 1 1 0 = $06 | КОЛПФ2 | КОЛПФ2 |
0 1 1 1 = $07 | КОЛПФ2 | Настоящий черный |
1 0 0 0 = $08 | Игрок/Ракета | Игрок/Ракета |
1 0 0 1 = $09 | Игрок/Ракета | Игрок/Ракета |
1 0 1 0 = $0А | Игрок/Ракета | Настоящий черный |
1 0 1 1 = 0 миллиардов долларов | Игрок/Ракета | Настоящий черный |
1 1 0 0 = $0C | КОЛПФ2 | Настоящий черный |
1 1 0 1 = $0D | КОЛПФ2 | Настоящий черный |
1 1 1 0 = $0E | КОЛПФ2 | Настоящий черный |
1 1 1 1 = 0 долларов США | КОЛПФ2 | Настоящий черный |
VDELAY $D01C Запись
[ редактировать ]Графика вертикальной задержки P/M
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Игрок 3 | Игрок 2 | Игрок 1 | Игрок 0 | Ракета 3 | Ракета 2 | Ракета 1 | Ракета 0 |
Этот регистр используется для обеспечения движения одиночной строки сканирования, когда в регистре DMACTL ANTIC включено разрешение Double Line Player/Missile . Это работает путем маскировки обновлений ANTIC DMA в регистрах GRAF* на четных строках сканирования, в результате чего графический шаблон смещается на одну строку сканирования вниз.
Поскольку однострочное разрешение требует обновлений ANTIC DMA для каждой строки сканирования, а VDELAY маскирует обновления в четных строках сканирования, тогда этот бит снижает разрешение однострочного игрока/ракеты до двухстрочного.
GRACTL $D01D Запись
[ редактировать ]Графическое управление
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | Защелка триггера | Включить игроков | Включить ракеты |
GRACTL контролирует получение CTIA/GTIA данных DMA игрока/ракеты от ANTIC и переключает режим ввода триггера джойстика.
Для получения данных DMA игрока/ракеты требуется, чтобы CTIA/GTIA была настроена на получение данных. Это делается с помощью пары битов в GRACTL, которые соответствуют паре битов в регистре DMACTL ANTIC , которые предписывают ANTIC отправлять данные игрока и данные ракеты. Бит 0 GRACTL соответствует биту 2 DMACTL, что позволяет передавать данные Missile. Бит 1 GRACTL соответствует биту 3 DMACTL, что позволяет передавать данные игрока. Эти биты должны быть установлены, чтобы GTIA могла получать данные об игроке/ракете от ANTIC через DMA. Когда графика Player/Missile управляется непосредственно процессором, эти биты должны быть отключены.
Регистры триггера джойстика сообщают о нажатом/не нажатом состоянии в режиме реального времени. Если опрос входных данных программы может быть недостаточно частым, чтобы улавливать кратковременные нажатия кнопок джойстика, то триггеры можно настроить на блокировку в закрытом/нажатом состоянии и оставаться в этом состоянии даже после отпускания кнопки. Установка бита 2 GRACTL позволяет фиксировать все триггеры. Очистка бита возвращает триггеры в незафиксированное состояние в режиме реального времени.
HITCLR $D01E Запись
[ редактировать ]Устранить столкновения
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Любая запись в этот регистр очищает все биты обнаружения столкновения игрока и ракеты.
Другие функции CTIA/GTIA
[ редактировать ]Джойстик-триггеры
[ редактировать ]TRIG0 $D010 Чтение
[ редактировать ]ТЕНЬ: STRIG0 $0284
Джойстик 0, триггер
TRIG1 $D011 Чтение
[ редактировать ]ТЕНЬ: СТРИГ1 $0285
Джойстик 1 триггер.
TRIG2 $D012 Чтение
[ редактировать ]ТЕНЬ: СТРИГ2 $0286
Джойстик 2, триггер.
TRIG3 $D013 Чтение
[ редактировать ]ТЕНЬ: СТРИГ3 $0287
Джойстик 3, триггер
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Курок |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | ? |
Биты с 7 по 1 всегда равны 0. Бит 0 сообщает о состоянии триггера джойстика. Значение 1 указывает на то, что триггер не нажат. Значение 0 указывает на то, что триггер нажат.
Триггер регистрирует нажатия кнопки отчета в режиме реального времени. Состояние нажатой кнопки мгновенно исчезнет, как только кнопка будет отпущена.
Триггеры могут быть настроены на фиксацию, то есть блокировку, в нажатом состоянии и оставаться в этом состоянии до тех пор, пока они не будут специально очищены. Бит 2 GRACTL включает режим фиксации для всех триггеров. Очистка бита 2 GRACTL возвращает все триггеры в режим реального времени.
PAL $D014 Чтение
[ редактировать ]PAL-флаги.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | Видео 3 | Видео 2 | Видео 1 | Видео 0 |
Этот регистр сообщает о стандарте отображения системы. Когда биты с 3 по 0 установлены в 1 (значение $f hex /15 dec ), система работает в NTSC. Когда биты равны нулю, система работает в режиме PAL.
CONSPK $D01F Запись
[ редактировать ]Консольный динамик
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | Спикер | - | - | - |
Бит3 управляет внутренним динамиком Atari 800/400. В более поздних моделях динамик консоли удаляется, и звук смешивается с обычными аудиосигналами POKEY для вывода на порт монитора и RF-адаптер. ОС Atari использует динамик консоли для вывода щелчков клавиатуры и звука звонка/зуммера.
Операционная система устанавливает бит динамика во время процедуры вертикального пробела. Повторная запись 0 в бит приведет к появлению жужжащего звука частотой 60 Гц, поскольку вертикальный пробел сбрасывает значение. Полезные тональные сигналы можно генерировать с помощью кода 6502, эффективно добавляя пятый аудиоканал, хотя каналу требуется время процессора для поддержания аудиотонов.
КОНСОЛЬ $D01F Чтение
[ редактировать ]Клавиши консоли
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | Вариант | Выбирать | Начинать |
Бит назначается для сообщения о состоянии каждой из специальных клавиш консоли: «Пуск», «Выбор» и «Параметры». Значение бита 0 указывает на то, что клавиша нажата, а значение 1 указывает на то, что клавиша не нажата. Значения ключей/битов:
- Стартовый ключ = значение бита $1
- Выбор ключа = значение бита $2
- Ключ опции = значение бита $4
Работа с графикой игрока/ракеты (спрайты)
[ редактировать ]Аппаратная система спрайтов обслуживается CTIA/GTIA. Официальное название системы спрайтов в ATARI — «Player/Missile Graphics», поскольку она была разработана для уменьшения необходимости манипулирования памятью дисплея для быстро движущихся объектов, таких как «игрок» и его оружие, «ракеты», в игра «стреляй в них» .
Игрок — это, по сути, глиф шириной 8 пикселей и высотой 256 ТВЛ, имеющий два цвета: фон (прозрачный) ( 0
в глифе) и передний план ( 1
). Объект Missile аналогичен, но имеет ширину всего 2 пикселя. CTIA/GTIA объединяет пиксели объектов Player/Missile с пикселями игрового поля в соответствии с их приоритетом. Прозрачный ( 0
) пиксели игрока не влияют на игровое поле и отображают без изменений либо игровое поле, либо фоновый пиксель. Обычная ширина пикселя всех объектов Player/Missile равна одному цвету. Значение регистра может установить ширину пикселей игрока или ракеты на 1, 2 или 4 такта цвета.
Реализация Player/Missile от CTIA/GTIA аналогична реализации TIA . Игрок — это 8-битное значение или шаблон в указанной горизонтальной позиции, который автоматически повторяется для каждой строки сканирования или до тех пор, пока шаблон не будет изменен в регистре. Ракеты имеют ширину 2 бита и используют один регистр шаблона, так что четыре значения шириной 2 бита занимают регистр шаблона шириной 8 бит, но каждая ракета имеет независимое горизонтальное положение и размер. Объекты игрока/ракеты расширяют высоту дисплея, включая границу экрана. То есть по умолчанию реализация графики Player/Missile от CTIA/GTIA представляет собой полосу вниз по экрану. Несмотря на кажущуюся ограниченность, этот метод облегчает использование графики игрока/ракеты в качестве альтернативных цветных вертикальных границ или разделителей на дисплее, а когда значения приоритета установлены так, чтобы пиксели игрока/ракеты располагались позади пикселей игрового поля, их можно использовать для добавления дополнительных цветов на дисплей. Все игроки и ракеты, установленные на максимальную ширину и расположенные рядом, могут покрывать всю нормальную ширину игрового поля.
CTIA/GTIA поддерживает несколько опций управления цветом игрока/ракеты. Значение регистра PRIOR/GPRIOR может переключать четыре ракеты между двумя вариантами цветового отображения: каждая ракета (от 0 до 3) выражает цвет связанного с ней объекта Player (от 0 до 3), или все ракеты отображают цвет регистра COLPF3/COLOR3 . Когда ракеты имеют одинаковый цвет, их можно рассматривать как пятого игрока, но для правильного размещения на экране по-прежнему требуется сохранение значений во всех четырех регистрах горизонтального положения ракеты . PRIOR/GPRIOR также управляет функцией, которая заставляет перекрывающиеся пиксели двух игроков генерировать третий цвет, что позволяет использовать разноцветные объекты Player за счет уменьшения количества доступных объектов. Наконец, PRIOR/GPRIOR можно использовать для изменения наложения переднего и заднего плана (так называемого «приоритета») пикселей игрока/ракеты по сравнению с пикселями игрового поля и может создавать конфликты приоритетов, которые предсказуемо влияют на отображаемые цвета.
Традиционная идея спрайта с изображением/узором, изменяющимся по вертикали, также встроена в графическую систему Player/Missile. Чип ANTIC включает в себя функцию выполнения DMA для автоматической подачи новых шаблонов пикселей в CTIA/GTIA при создании дисплея. Это можно сделать для каждой строки сканирования или любой другой строки сканирования, в результате чего пиксели игрока/ракеты будут высотой в одну или две строки сканирования. Таким образом, объект Player/Missile можно считать очень высоким символом шрифта шириной 8 бит/пикселей по высоте дисплея.
Перемещение объектов Player/Missile по горизонтали так же просто, как изменение регистра в CTIA/GTIA (в Atari BASIC один оператор POKE перемещает игрока или ракету по горизонтали). Перемещение объекта по вертикали достигается либо блоковым перемещением определения глифа в новое место в растровом изображении Player или Missile, либо поворотом всего растрового изображения Player/Missile (128 или 256 байт). В худшем случае вращение всего растрового изображения в машинном языке 6502 по-прежнему происходит довольно быстро, даже несмотря на то, что в 6502 отсутствует инструкция перемещения блока, присутствующая в 8080. Поскольку длина спрайта составляет ровно 128 или 256 байт, индексацию можно легко разместить в регистр шириной в байт на 6502. В Atari BASIC отсутствует команда высокоскоростного перемещения памяти, а перемещение памяти с использованием BASIC PEEK() и POKE(s) происходит крайне медленно. Программы Atari BASIC, использующие графику Player/Missile, имеют и другие возможности для высокоскоростного перемещения памяти. Один из методов — вызов короткой процедуры машинного языка через функцию USR() для выполнения перемещений в памяти. Другой вариант — использовать большую строку в качестве карты памяти игрока/ракеты и выполнять команды копирования строки, которые приводят к перемещению памяти со скоростью машинного языка.
Осторожное использование графики Player/Missile с другими графическими функциями оборудования Atari может значительно упростить графическое программирование, особенно игр.
Улучшения GTIA
[ редактировать ]Чип 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 пикселей по горизонтали. Дополнительные цветовые интерпретации позволяют:
- Режим интерпретации цветов GTIA $4 — 16 оттенков одного оттенка (задаваемого цветом фона COLBK) из 16 возможных оттенков палитры Atari. Это также доступно в Atari BASIC как Graphics 9.
- Режим интерпретации цветов GTIA 8 долларов — этот режим позволяет использовать 9 цветов ненаправленности на горизонтальную линию любого оттенка и яркости из всей палитры Atari, состоящей из 128 цветов. Это достигается с использованием всех регистров цвета игрока/ракеты и игрового поля для пикселей игрового поля. В этом режиме цвет фона обеспечивается регистром цвета COLPM0, а COLBAK используется для значения пикселя игрового поля $8. Этот режим доступен в Atari BASIC как Graphics 10,
- Режим интерпретации цветов GTIA $C — 15 оттенков в одном значении оттенка/яркости плюс фон. Значение фона COLBK задает уровень яркости всех остальных пикселей (значение пикселя 1 доллар через $Ф ). Младший бит значения яркости не учитывается, поэтому доступны только значения яркости стандарта/CTIA 8 ( $0 , $2 , $4 , $6 , $8 , $А , $С , $Е ). Кроме того, сам фон использует только компонент цвета, установленный в регистре COLBK. Значение яркости фона устанавливается равным 0. Этот режим доступен в Atari BASIC как Graphics 11.
Из этих режимов особенно примечателен Atari BASIC Graphics 9. Это позволяет Atari отображать оцифрованные фотографии в оттенках серого, которые, несмотря на низкое разрешение, в то время были очень впечатляющими. Кроме того, позволяя использовать 16 оттенков одного оттенка вместо 8 оттенков, доступных в других графических режимах, количество различных цветов, которые Atari может отображать, увеличивается со 128 до 256. К сожалению, эта функция ограничена для использования только в этом режиме. который из-за низкого разрешения не получил широкого распространения.
Текстовые режимы Antic 2 и 3 способны отображать те же цветовые диапазоны, что и графика режима F, при использовании альтернативных цветовых интерпретаций GTIA. Однако, поскольку также применяется уменьшение пикселей и превращает 8-пиксельный двухцветный текст в 2-пиксельный ширину и 16-цветные блоки, эти режимы непригодны для реального текста, и поэтому эти графические режимы не популярны за пределами демонстрационных версий. Эффективное использование функции интерпретации цвета GTIA с текстовыми режимами требует тщательно составленного набора символов, воспринимающего символы как пиксели. Этот метод позволяет отображать графический режим GTIA с «высоким разрешением», который обычно занимает 8 КБ ОЗУ, вместо этого используется только около 2 КБ (1 КБ для набора символов и 1 КБ для оперативной памяти экрана и списка отображения).
GTIA также исправила ошибку в CTIA, из-за которой графика смещалась на «половину цветовой частоты». Побочным эффектом исправления было то, что программы, использующие цветовые артефакты в монохромных режимах высокого разрешения, отображали другую пару цветов. [5] [15]
Владельцы Atari могут определить, оснащена ли их машина CTIA или GTIA, выполнив BASIC. команду POKE 623,64
. Если после выполнения экран потемнеет, машина оснащена новым чипом GTIA. Если он остается синим, вместо него в машине установлен чип CTIA.
Ошибки
[ редактировать ]Последние компьютеры Atari XE, выпущенные для рынка Восточной Европы, были построены в Китае. Многие, если не все, имеют глючный чип PAL GTIA. Значения яркости в Graphics 9 и выше ошибочны и отображаются в виде полос. Замена чипа решает проблему. Также были попытки исправить неисправные чипы GTIA с помощью какой-либо внешней схемы .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с Руководство по выездному обслуживанию домашнего компьютера Atari — 400/800 (PDF) . Atari, Inc., стр. 1–10 . Проверено 10 сентября 2010 г.
- ^ Нойбауэр, Дуг (20 июня 2009 г.). «Годы Atari, Дуг Нойбауэр. Star Raiders, Solaris и Pokey» . DougNeubauer.com .
- ^ Перейти обратно: а б с Шерер, Робин Алан (июнь 1988 г.). «GTIA Joystick Painter — мощный инструмент анимации Atari» . АНТИК . 7 (2): 37. ISSN 0113-1141 . Проверено 26 января 2011 г.
- ^ патент США 4296476 , Майер, Стивен Т.; Майнер, Джей Г .; Нойбауэр, Дуглас Г.; Декуир, Джозеф К., «Система обработки данных с программируемым графическим генератором», выпущено 1. 981-10-20, закреплен за Atari, Inc.
- ^ Перейти обратно: а б с д и Патчетт, Крейг; Шерер, Робин (1984). «Специальные чипы и ПЗУ» . Основная карта памяти для Atari . Рестон, Вирджиния: Издательская компания Рестон. ISBN 0-8359-4242-2 . Проверено 26 января 2011 г.
- ^ Перейти обратно: а б с д и Мейс, Скотт (15 марта 1982 г.). «Atari незаметно переходит на 16-цветный графический чип» . Инфомир . 4 (10). Пало-Альто, Калифорния: Популярные вычисления: 3–4. ISSN 0199-6649 . Проверено 1 февраля 2011 г.
- ^ Перейти обратно: а б Чемберлен, Крейг (июль 1982 г.). «Видеографика Atari и новый GTIA» . Вычислите! (26): 124. ISSN 0194-357X . Проверено 24 января 2011 г.
- ^ Перейти обратно: а б с Джо Декуир, «3 поколения архитектуры игровых автоматов» , CGEXPO99.
- ^ Перейти обратно: а б Смолл, Дэвид; Маленький, Сэнди; Бланк, Джордж (май 1983 г.). «Философия дизайна и демонстрации GTIA» . Креативная Атари . Креативная компьютерная пресса. ISBN 978-0-916688-34-9 . Проверено 26 января 2011 г.
- ^ Свитцер, Стив (октябрь 1983 г.). «Клиника Атари» . АНТИК . 2 (7): 103. ISSN 0113-1141 . Проверено 1 февраля 2011 г.
- ^ Майкл Каррент, «Что такое чипы SALLY, ANTIC, CTIA/GTIA, POKEY и FREDDIE?» , 8-битные компьютеры Atari: часто задаваемые вопросы
- ^ Перейти обратно: а б с д и Борис, Дэн. «Чипы Атари» . Дэна Б. Домашняя страница Проверено 1 февраля 2011 г.
- ^ Вендел, Курт. «Атари 800XLCR» . AtariMuseum.com . Архивировано из оригинала 13 сентября 2011 г. Проверено 1 февраля 2011 г.
- ^ Вендел, Курт. «Тестер производительности KERI» . AtariMuseum.com . Архивировано из оригинала 13 сентября 2011 г. Проверено 1 февраля 2011 г.
- ^ Смолл, Дэвид; Маленький, Сэнди; Бланк, Джордж, ред. (1983). «Волшебник, принцесса и Атари». Креативная Атари . Креативная компьютерная пресса. ISBN 0916688348 .
Внешние ссылки
[ редактировать ]- De Re Atari опубликовано Atari Program Exchange
- Картирование Atari, исправленное издание Яна Чедвика
- Технический паспорт чипа GTIA, отсканированный в PDF .
- Сайт Джиндроша (в архиве) Информация GTIA
- Штамповка CTIA
- GTIA штамп