CTIA и GTIA

редактировать
Чип NTSC GTIA производства Okidata

Адаптер интерфейса цветного телевидения (CTIA ) и его преемник адаптер графического телевизионного интерфейса (GTIA ) - это специализированные микросхемы, используемые в 8-битном семействе Atari компьютеры и в Atari 5200 домашняя игровая консоль. В этих системах чип CTIA или GTIA работает вместе с ANTIC для создания видеодисплея. ANTIC генерирует графику игрового (текст и растровое изображение), в то время как CTIA / GTIA предоставляет цвет для игрового поля и параметры поля наложения, известные как графика игрока / ракеты (спрайты ). Под руководством Джея Майя микросхемы CTIA / GTIA были разработаны Джорджем МакЛеодом при технической поддержке Стива Смита.

Адаптер интерфейса цветного телевидения и адаптер интерфейса графического телевидения - это название микросхем. как указано в игре по обслуживанию Atari. Различные публикации называли чипы по-разному, используя альтернативное написание адаптеров, или утверждая, что «C» в «CTIA» означает Коллин / Candy, а «G» в «GTIA» означает Джордж.

Содержание
  • 1 История
    • 1.1 2600 и TIA
    • 1.2 CTIA
    • 1.3 CTIA и GTIA
  • 2 Характеристики
  • 3 версии
  • 4 Распиновка
  • 5 регистров
    • 5.1 Горизонтальные координаты игрока / ракеты
      • 5.1.1 HPOSP0 $ D000 Запись
      • 5.1.2 HPOSP1 $ D001 Запись
      • 5.1.3 HPOSP2 $ D002 Запись
      • 5.1.4 HPOSP3 $ D003 Запись
      • 5.1.5 HPOSM0 $ D004 Запись
      • 5.1.6 HPOSM1 $ D005 Запись
      • 5.1.7 HPOSM2 $ D006 Запись
      • 5.1.8 HPOSM3 $ D007 Запись
    • 5.2 Контроль размера проигрывателя / ракеты
      • 5.2.1 SIZEP0 $ D008 Запись
      • 5.2.2 SIZEP1 $ D009 Запись
      • 5.2.3 SIZEP2 $ D00A Запись
      • 5.2.4 SIZEP3 $ D00B Запись
      • 5.2.5 SIZEM $ D00C Запись
    • 5.3 Графические шаблоны игрока / ракеты
      • 5.3.1 Запись GRAFP0 $ D00D
      • 5.3.2 Запись GRAFP1 $ D00E
      • 5.3.3 Запись GRAFP2 $ D00F
      • 5.3.4 Запись GRAFP3 $ D010
      • 5.3. 5 GRAFM $ D011 Запись
    • 5.4 Столкновения игрока / ракеты
      • 5.4.1 Столкновения игрока / ракеты с игровым полем
        • 5.4.1.1 M0PF $ D000 Ч тение
        • 5.4.1.2 M1PF $ D001 Чтение
        • 5.4.1.3 M2PF $ D002 Чтение
        • 5.4.1.4 M3PF $ D003 Чтение
        • 5.4.1.5 P0PF $ D004 Чтение
        • 5.4.1.6 P1PF $ D005 Чтение
        • 5.4.1.7 P2PF $ D006 Чтение
        • 5.4.1.8 P3PF $ D007 Чтение
      • 5.4.2 Столкновения ракет с игроком
        • 5.4.2.1 M0PL $ D008 Чтение
        • 5.4.2.2 M1PL $ D009 Чтение
        • 5.4.2.3 M2PL $ D00A Чтение
        • 5.4.2.4 M3PL $ D00B Чтение
      • 5.4.3 Коллизии между игроками
        • 5.4.3.1 Чтение P0PL $ D00C
        • 5.4.3.2 Чтение P1PL $ D00D
        • 5.4.3.3 Чтение P2PL $ D00E
        • 5.4.3.4 Чтение P3PL $ D00F
    • 5.5 Player / Missile и Playfield Color and Luminance
      • 5.5.1 COLPM0 $ D012 Write
      • 5.5.2 COLPM1 $ D013 Запись
      • 5.5.3 COLPM2 $ D014 Запись
      • 5.5.4 COLPM3 $ D015 Запись
      • 5.5.5 COLPF0 $ D016 Запись
      • 5.5.6 COLPF1 $ D017 Запись
      • 5.5.7 COLPF2 $ D018 Запись
      • 5.5.8 COLPF3 $ D019 Запись
      • 5.5.9 COLBK $ D01A Напишите
    • 5.6 Разные элементы управления игроком / ракетой и GTIA
      • 5.6.1 ДО $ D01B Запись
      • 5.6.2 VDELAY $ D01C Запись
      • 5.6.3 GRACTL $ D01D Запись
      • 5.6.4 HITCLR $ D01E Запись
    • 5.7 Другие функции CTIA / GTIA
      • 5.7.1 Триггеры джойстика
        • 5.7.1.1 TRIG0 $ D010 Чтение
        • 5.7.1.2 TRIG1 $ D011 Чтение
        • 5.7.1.3 TRIG2 $ D012 Чтение
        • 5.7.1.4 TRIG3 $ D013 Чтение
      • 5.7.2 PAL $ D014 Чтение
      • 5.7.3 CONSPK $ D01F Запись
      • 5.7.4 CONSOL $ D01F Чтение
  • 6 Операция с графикой игрока / ракеты (спрайты)
  • 7 Усовершенствования GTIA
  • 8 Ошибки
  • 9 См. Также
  • 10 Ссылки
  • 11 Внешние ссылки
История

2600 и TIA

Atari построила свой первый чип драйвера дисплея, Адаптер телевизионного интерфейса, но универсально упоминаемый как TIA, как часть консоли Atari 2600. Дисплей TIA логически состоял из двух основных наборов объектов: «игроков» и «ракет», которые представляют собой движущиеся объекты, и «игровое поле», представляющее статическое фоновое изображение, на котором происходит действие. Чип использовал данные в регистрах памяти для создания цифровых сигналов, которые были преобразованы в реальном времени с помощью цифро-аналогового преобразователя и RF-модулятора для создания телевизионного дисплея..

Обычный способ рисования игрового поля заключается в использовании битовой карты, хранящейся в буфере кадра, в каждой ячейке памяти которого буфере кадра представляет одну или несколько ячеек. на экране. В случае 2600, обычно используется разрешение 160x192 пикселей, буфер кадра должен иметь как минимум 160x192 / 8 = 3840 байтов памяти. Созданный в эпоху, когда RAM был очень дорогим, TIA не могла позволить себе это решение.

Вместо этой в системе реализована система отображения, в которой использовался один 20-битный регистр памяти, который можно было скопировать или отразить в правой половине экрана, чтобы получить то, что было фактически 40- битным. битовый дисплей. Каждое местоположение может быть отображено одним из четырех цветов из палитры из 128 исполнителей цветов. TIA также включал несколько других демонстрационных объектов, «игроков» и «ракеты». Они состояли из двух 8-битных объектов, известных как «игроки», 1-битного объекта, известного как «мяч», и двух 1-битных «ракет». Все эти объекты можно перемещать в произвольные горизонтальные положения с помощью настроек в других регистрах.

Ключом к системе TIA и низкой ценой 2600 было то, что в системе было достаточно памяти, чтобы нарисовать одну систему дисплея, и все содержалось в регистрах. Чтобы нарисовать весь экран, заполненный данные, пользовательский код будет ждать, пока телевизионный дисплей не достигнет правой стороны экрана, и обновит регистры для игрового поля и игрока / ракету, чтобы правильно указать следующую строку на дисплее. Эта схема построила экран построчно из программного обеспечения картридже ПЗУ, метод, известный как «гонка по лучу».

CTIA

Atari использует службы оценила, что 2600 будет иметь рыночный срок в три года, когда он был разработан в 1976 году, а это означало, что компании потребуется новый дизайн к 1979 году. Первоначально этот новый дизайн была просто обновленной игровой консолью, похожей на 2600, и была построена на основе аналогичной конструкции, просто обновленной. Работа над тем, что направлено, станет CTIA, началась в 1977 году и была создана система с удвоенным разрешением и вдвое большим количеством цветов. Более того, можно было поддерживать более высокое разрешение до 320 пикселей по горизонтали. Также были обновлены игроки и ракеты, включая четыре 8-битных игроков и четыре 2-битных ракеты, но также четыре возможности объединить ракеты в пятого игрока.

Вскоре после начала проектирования, во второй половине 1977 года началась серьезная революция в области домашних компьютеров. В ответ Atari новой решила выпустить две версии машины, модель бюджетного класса. как игровая приставка, и высококлассная версия как домашний компьютер. В любом случае потребуется более сложное игровое поле, особенно поддержка символьной графики в роли компьютера. На тот момент дизайн CTIA был хорошо продвинут, поэтому вместо редизайна было предложено умное решение путем добавления второго чипа, который эффективно автоматизирует процесс ускорения луча. Вместо пользовательского программирования, обновляющего регистры CTIA на основе времени прерывания, новый ANTIC будет обрабатывать эту рутинную работу, считывая данные из фреймбуфера и передавая их в CTIA на лету.

В результате этих изменений новые микросхемы улучшают количество и выбор графических режимов по сравнению с TIA. Вместо одного режима игрового поля с разрешением 20 или 40 бит CTIA / ANTIC может отображать шесть текстовых режимов и восьми графических режимов с различными разрешениями и глубиной цвета, что позволяет программисту выбирать баланс между разрешением, цветами и использованием памяти. для их отображения.

CTIA и GTIA

256-цветная палитра, используемая в чипе GTIA (только NTSC) с 16 оттенками и 16 значениями яркости. Это то, что Atari TIA и CTIA использовали в качестве палитры (только NTSC) с 16 оттенками и всего 8 значений яркости, что составляет 128 уникальных цветов

Исходный дизайн чипа 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 - это устройство с телевизионным интерфейсом со функциями:

  • Интерпретирует поток графических данных Playfield от ANTIC для применения цвета к дисплею.
  • Объединяет четыре объекта Player и четыре объекта Missile (также известные как спрайты ) с графикой игрового поля ANTIC. Функции Player / Missile включают:
    • Позиционирование пикселей Player / Missile не зависит от игрового поля:
      • Объекты Player / Missile обычно функционируют в вертикальных и горизонтальных областях развертки за пределами отображаемого игрового поля.
      • Объекты Player / Missile обычно функционируют без ANTIC Playfield.
    • Объекты Player шириной восемь бит и объекты Missile, где каждый представляет бит один отображаемый пиксель.
    • Переменная ширина пикселей (1, 2 или 4 цветных такта в ширину)
    • Каждый объект Player / Missile по вертикали равенству высоты всего экрана.
    • Переменная высота пикселей, при использовании данных ANTIC DMA (одиночное или двойное сканирование строк на данные)
    • Возможность независимо сдвигать каждый объект P / M на одну строку развертки по вертикали при работе с двойными строками развертки на данные.
    • Каждый игрок и связанная с ним имеют выделенный регистр цвета отдельно от цветов игрового поля.
    • Несколько схем приоритета для порядка расположения графических слоев (P / M Graphics vs playfie ld)
    • Слияние цветов между игроками и игровым полем, дающее дополнительные цвета.
    • Слияние цветов между парами игроков, создающих многоцветных игроков.
    • Ракеты могут быть сгруппированы вместе в Пятый Проигрыватель, использующий отдельный регистр цвета.
    • Обнаружение столкновения между игроками, ракетами и графикой игрового поля.
  • Для обычного режима интерпретации цвета (CTIA) нет фиксированных цветов. Все цвета генерируются косвенно через девять цветовых регистров. (Четыре для графики игрока / снаряда, четыре для игрового поля и один общий для игрового поля и функции Пятого игрока.)
    • Обычный режим интерпретации цвета обеспечивает выбор цветов из 128 цветовой палитры (16 цветов из 8 значений яркости для каждого.))
    • Режим интерпретации цвета GTIA может генерировать 16 яркостей на цвет, 256 цветовую палитру.
  • Версия чипа GTIA три альтернативных интерпретации цвета для графики игрового поля.
    • 16 оттенков одного оттенка из 16 исполнителей палитры Atari. Это доступно в Atari BASIC как Графика 9.
    • 15 оттенков в одном значении оттенка / яркости плюс фон. Это доступно в Atari BASIC как Графика 11.
    • 9 цветов любого оттенка и яркости из палитры, выполненной с использованием всех цветовых регистров Player / Missile и Playfield для цветов Playfield. Это доступно в Atari BASIC как Графика 10.
  • Считывает состояние триггеров джойстика (нижние кнопки только для контроллеров Atari 5200).
  • Он включает четыре ввода / вывода. которые используются по-разному в зависимости от системы:
    • В 8-битных компьютерах Atari три используются для чтения состояний клавиш консоли (Пуск / Выбор / Опция).
    • Четвертый контакт управляет динамиком, встроенным в Atari 400/800, для генерации щелчков клавиатуры. На более поздних моделях динамик не является генетически устойчивым по-устойчивым GTIA и смешивается с обычным аудиовыходом.
    • В Atari 5200 используются как часть процесса для чтения клавиатуры контроллера..
Версии

по номеру детали

  • C012295 - NTSC CTIA
  • C014805 - NTSC GTIA
  • C014889 - PAL GTIA
  • C020120 - французский SECAM GTIA (FGTIA)

Atari, Inc. намеревалась объединить чипов ANTIC и GTIA в одну интегральную схему, чтобы снизить производственные затраты на компьютеры Atari и консоли 5200. Два таких прототипа схемы разработаны, однако ни один из них не был запущен в производство.

  • C020577 - CGIA
  • C021737 - KERI
Распиновка
Распиновка Atari GTIA (C014805)
Имя контактаНомер (а) контактаОписание
A0 - A42, 1, 40, 39, 38Адресный ввод
AN0 - AN218, 19, 20Вход интерфейса ANTIC
COL21Частотный выход
CS32Вход выбора микросхемы
CSYNC25Выход композитной синхронизации
D0 - D77, 6, 5, 4, 37, 36, 35, 34Ввод / вывод шины данных
DEL17Линейный вход с задержкой цвета
F0029Выход тактового сигнала быстрой фазы
HALT26Остановить ввод
L0 - L331, 22, 23, 24Выход яркости
N / C16Не подключен (PAL в более поздних версиях)
OSC28Вход генератора
Чтение / Запись33Вход чтения / записи
S0 - S312, 13, 14, 15Переключение ввода / вывода данных
T0 - T38, 9, 10, 11Триггерные входы с внутренним подтягиванием
Vcc27Питание +5 В
Vss3Земля
Ø230Компьютер Фаза 2 Вход
Регистры

8-битные компьютеры Atari отображают CTIA / GTIA в $ D0xx шестнадцатеричный страницу и консоль Atari 5200 отображает его на шестнадцатеричную страницу $ C0xx.

CTIA / GTIA предоставляет 54 регистратора чтения / записи, управляющих графикой игрока / ракеты, цветами игрового поля, триггерами джойстика и клавишами консоли. Многие адреса регистров CTIA / GTIA двойное назначение, выполняя разные функции: регистр чтения и записи. Следовательно, никакой код не должен читать аппаратные регистры, ожидая получить ранее записанное значение.

Эта проблема решена для многих записей с помощью теневых регистров операционной системы, реализованных в обычной оперативной памяти как места для последнего значения, записанного в регистры. Теневые регистры операционной системы копируются из ОЗУ в аппаратные регистры во время вертикального пробела. Следовательно, любая запись в аппаратных регистрах, которые имеют соответствующие теневые регистры, будет перезаписана регистром теневых регистров во время следующего вертикального пробела.

Некоторые регистры записи не имеют соответствующих теневых регистров. Они могут быть безопасно записаны без перезаписи значения во время вертикального пробела. Если приложению необходимо последнее состояние реестра, оно обязано запомнить, что оно написало.

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

ИмяОписаниеЧтение / записьшестнадцатеричный адресDec AddrShadow NameShadow Hex AddrShadow Dec Addr
HPOSP0 Горизонтальное положение проигрывателя 0Запись$ D00053248
M0PF Столкновения ракеты 0 с игровым полемЧтение$ D00053248
HPOSP1 Горизонтальное положение игрока 1Запись$ D00153249
M1PF Конфликты между ракетой 1 и игровым полемЧтение$ D00153249
HPOSP2 Горизонтальное положение игрока 2Запись$ D00253250
M2PF Ракета 2 в коллизиях игрового поляЧтение$ D00253250
HPOSP3 Горизонтальное положение игрока 3Запись$ D00353251
M3PF Столкновения ракеты 3 с игровым полемЧтение$ D00353251
HPOSM0 Горизон тальное положение ракеты 0Записать$ D00453252
P0PF Игрок 0 в коллизии игрового поляЧтение$ D00453252
HPOSM1 Горизонтальное положение ракеты 1Запись$ D00553253
P1PF Коллизии между игроком 1 и игровым полемЧтение$ D00553253
HPOSM2 Горизонтальное положение ракеты 2Запись$ D00653254
P2PF Игрок 2 в коллизии игрового поляЧтение$ D00653254
HPOSM3 Горизонтальное положение ракеты 3Запись$ D00753255
P3PF Игрок 3 в коллизии игрового поляЧтение$ D00753255
SIZEP0 Размер проигрывателя 0Запись$ D00853256
M0PL Ракета 0 для столкновений игрокаЧтение$ D00853256
SIZEP1 Размер игрока 1Запись$ D00953257
M1PL Ракета 1 в коллизии игрокаЧтение$ D00953257
SIZEP2 Размер проигрывателя 2Запись$ D00A53258
M2PL Ракета 2 в Player col lisionsЧтение$ D00A53258
SIZEP3 Размер проигрывателя 3Запись$ D00B53259
M3PL Столкновения ракеты 3 с игрокомЧтение$ D00B53259
SIZEM Размер всего РакетыЗапись$ D00C53260
P0PL Игрок 0 в коллизии игрокаЧтение$ D00C53260
GRAFP0 Графический шаблон для проигрывателя 0Запись$ D00D53261
P1PL Player 1 коллизии с проигрывателемЧтение$ D00D53261
GRAFP1 Графический шаблон для игрока 1Запись$ D00E53262
P2PL Коллизии между игроком 2 и игрокомЧтен ие$ D00E53262
GRAFP2 Графический шаблон для игрока 2Запись$ D00F53263
P3PL Игрок 3 в конфликты игроковЧтение$D00F53263
GRAFP3 Графический шаблон для проигрывателя 3Запись$ D01053264
TRIG0 Джойстик 0 триггер r.Чтение$ D01053264STRIG0$ 0284644
GRAFM Графический шаблон для всех ракетЗапись$ D01153265
TRIG1 Триггер джойстика 1.Чтение$ D01153265STRIG1$ 0285645
COLPM0 Цвет / яркость игрока и ракеты 0.Запись$ D01253266PCOLOR0$ 02C0704
TRIG2 Триггер джойстика 2.Чтение$ D01253266STRIG2$ 0286646
COLPM1 Цвет / яркость игрока и ракеты 1.Запись$ D01353267PCOLOR1$ 02C1705
TRIG3 Триггер джойстика 3.Чтение$ D01353267STRIG3$ 0287647
COLPM2 Цвет / яркость игрока и ракеты 2.Запись$ D01453268PCOLOR2$ 02C27 06
PAL Флаги PAL.Чтение$ D01453268
COLPM3 Цвет / яркость игрока и ракеты 3.Запись$ D01553269PCOLOR3$ 02C3707
COLPF0 Цвет / яркость поля воспроизведения 0.Запись$ D01653270COLOR0$ 02C4708
COLPF1 Цвет / яркость поля воспроизведение 1.Запись$ D01753271COLOR1$ 02C5709
COLPF2 Цвет / яркость игрового поля 2.Напишите$ D01853272COLOR2$ 02C6710
COLPF3 Цвет / яркость воспроизведения 3.Запись$ D01953273COLOR3$ 02C7711
COLBK Цвет / яркость фона игрового поля.Запись$ D01A53274COLOR4$ 02C8712
PRIOR Выбор приоритета, пятый игрок и режимы GTIAЗапись$ D01B53275GPRIOR$ 026F623
VDELAY Вертикальная задержка P / MG raphicsЗапись$ D01C53276
GRACTL Графический элемент управления.Запись$ D01D53277
HITCLR Удалить коллизииЗапись$ D01E53278
CONSPK Консольный динамикЗапись$ D01F53279
CONSOL Ключи консолиЧтение$ D01F53279

В списках отдельных регистров ниже используется следующая легенда:

Значение битаОписание
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 / Ракета, поэтому случайные столкновения не могут быть отмечены.

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
????????

Ниже приведены координаты цветовых часов левого и правого краев размера игрового поля, полезно при выравнивании объектов Игрок / Ракета с компонентами Playfield :

PlayfieldШирина в отображаемых цветовых часахLeft E dge First Color ClockRight Edge Last Color Clock
Узкий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 цветовой частоты wide

Обратите внимание, что в формате Quad один пиксель Player / Missile имеет ту же ширину, что и текстовый символ Antic Mode 2. Выбор приоритета Player / Missile, с графикой Player Missile с четырьмя шириной, можно использовать для создания нескольких цветов текста в строке режима.

Каждый проигрыватель имеет свой регистр управления размером:

SIZEP0 $ D008 Запись

Размер проигрывателя 0

SIZEP1 $ D009 Запись

Размер проигрывателя 1

SIZEP2 $ D00A Запись

Размер проигрывателя 2

SIZEP3 $ D00B Запись

Размер проигрывателя 3

Элементы управления размером проигрывателя :

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
------Размер 1Размер 0

Значения:

РазмерШирина проигрывателяЗначение в битахРазмер 1Размер 0
Нормальный8 цветных тактов$ 0000
Двойной16 цветных часов$ 0101
нормальных8 цветных часов$ 0210
четырехцветных32 цветных часов$ 0311

SIZEM $ D00C Запись

Все размеры контролируются одним регистром, но размер каждой ракеты может быть изм енен независимо от других. Когда опция «пятый игрок» включена (см. Регистр 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НормальныйДвухцветные часы$ 0000
Двойныечетырехцветные часы$ 0101
Обычныедвухцветные часы$ 0210
четырехцветные8 цветных часов$ 0311
Missile 1NormalДвухцветные часы$ 0000
Double4-цветные часы$ 0401
Обычные2-цветные часы$ 0810
Quad8 -цветные часы$ 0C11
Missile 2Обычныедвухцветные часы$ 0000
Двойныечетырехцветные часы10 долларов01
Обычныедвухцветные часы20 долларов10
четырехцветныевосьмицветные часы30 долларов11
ракетные 3Норма l2-х цветные часы$ 0000
двойные4-х цветные часы40 $01
нормальныедвухцветные часы$8010
Quad8 цветных часов$ C011

Графические узоры Player / Missile

Каждый объект Player имеет свои собственные 8- регистр битовой комбинации. Ракетные объекты используют один регистр с 2 битами на каждую Ракету. После установки значения оно будет использовать в каждой строке развертки. Без какого-либо другого вмешательства со стороны ЦП или ANTIC DMA для обновлений образуются вертикальные полосы по высоте экрана, включая области за пределами диапазона. Этот режим работы не вызывает потери ЦП или прямого доступа к памяти компьютера. Это полезно для отображения чередующихся цветных границ и вертикальных линий, разделяющих области экрана.

GRAFP0 $ D00D Write

Графический шаблон для проигрывателя 0

GRAFP1 $ D00E Write

Графический образец для Player 1

GRAFP2 $ D00F Запись

Графический образец для проигрывателя 2

GRAFP3 $ D010 Запись

Графический образец для проигрывателя 3

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
Пиксель HPOS +0Pixel HPOS + 1Pixel HPOS + 2Pixel HPOS + 3Pixel HPOS + 4Pixel HPOS +5Pixel HPOS + 6Pixel HPOS + 7

Ширина каждого проигрывателя составляет 8 бит (пикселей). Если установлен бит, отображается в цвете, назначенном регистру цвета, связанному с проигрывателем. Если бит не установлен, объект Player будет прозрачным, обработанным игроком, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей в горизонтальной позиции, значения значения HPOS проигрывателя, причем сначала выводится самый высокий бит.

GRAFM $ D011 Запись

Графический образец для всех ракет

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
M3 Pixel HPOS + 0M3 Pixel HPOS + 1M2 Pixel HPOS + 0M2 Pixel HPOS + 1M1 Pixel HPOS + 0M1 Pixel HPOS + 1M0 Pixel HPOS + 0M0 Pixel HPOS + 1

Ширина каждой ракеты составляет 2 бита (пикселя). Если установлен бит, отображается в цвете, назначенном регистру цветов для игрока, связанного с ракетой. Когда Пятый игрок включен (см. PRIOR / GPRIOR ), на всех пикселях отображается COLPF3. Если бит не установлен, объект будет прозрачным, игроком, ракеты, пиксели игрового поля или цвет фона. Вывод пикселей в горизонтальном положении, заданном начале HPOS ракеты, причем сначала выводится самый высокий бит.

Значения ракеты:

РакетаЗначение битовПиксель 1Пиксель 0
Ракета 0$ 0000
$ 0101
$ 0210
$ 0311
Ракета 1$ 0000
$ 0401
$ 0810
$ 0C11
Ракета 2$ 0000
$ 1001
$ 2010
$ 3011
Ракета 3$ 0000
40 $01
$ 8010
$ C011

Столкновения / ракеты

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

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
----COLPF3 COLPF2 COLPF1 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 0COLPM0
P2PL $ D00E Чтение

коллизии игрока 2 с игроком

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
----COLPM3 0COLPM1 COLPM0
P3PL $ D00F Чтение

Игрок 3 и коллизии игрока

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
----0COLPM2 COLPM1 COLPM0

Цвет и яркость про игрывателя / ракеты и игрового поля

Пи всех игроков / ракетных объектов xels и все пиксели игровое поле в режиме интерпретации цвета CTIA / GTIA по умолчанию используют косвенное указание для указания цвета. Косвенность означает, что значения данных не определяют цвет напрямую, а указывают на другой источник информации о цвете. CTIA / GTIA содержат аппаратные регистры, которые устанавливают значения, используемые для цветов, и информация о пикселях относится к этим регистрам. Палитра Atari имеет 8 уровней яркости по 16 цветов, всего 128 цветов. Гибкость косвенного изменения цвета позволяет программе настроить цвет экрана в соответствии с целями программы.

Все регистры цвета оборудования имеют соответствующие теневые регистры.

COLPM0 $ D012 Запись

ТЕНЬ: PCOLOR0 $ 02C0

Цвет / яркость игрока и ракеты 0.

Когда включен 9-цветной режим GTIA (PRIOR / GPRIOR значение $ 80) этот регистр используется для границы и фона (значение пикселя игрового поля 0), а не COLBK.

COLPM1 $ D013 Write

SHADOW: 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 Запись

ТЕНЬ: COLOR2 $ 02C6

Цвет / яркость игрового поля 2.

Этот регистр используется для цвета фона игрового поля ANTIC текстовые режимы 2 и 3 и режим карты F. То есть используется значение пикселя 0. В других режимах «Символ» и «Карта» этот регистр обеспечивает ожидаемый цвет и яркость пикселя.

COLPF3 $ D019 Запись

ТЕНЬ: COLOR3 $ 02C7

Цвет / яркость Playfield 3

COLPF3 доступен в нескольких случаях:

  • Когда Ракеты Они переключаются в «пятого» цвета, отображаемого в зависимости от цвета объекта. Игрок превращает отображение COLPF3 и меняют приоритет. См. PRIOR/GPRIOR register.
  • Текстовые режимы 4 и 5 игрового поля. Инверсия видеосимволов (установлен старший бит $ 80) заставляет CTIA / GTIA заменять значение COLPF3 на пиксели COLPF2 в матрице символов. (См. Отрисовка глифов ANTIC )
  • Текстовые режимы 6 и 7 поля воспроизведения. Когда для значений символов установлены биты 6 и 7 (диапазон символов $ C0-FF), вся матрица пикселей символа отображается в COLPF3. (См. Рендеринг символов ANTIC )
  • Этот регистр также доступен в специальном 9-цветном режиме GTIA с непрямым пиксельным цветом.

COLBK $ D01A Write

SHADOW: COLOR4 $ 02C8

Цвет / яркость фона игрового поля.

Цвет фона отображается там, где нет других пикселей во всей области отображения следующих исключений:

  • В текстовых режимах ANTIC 2 и 3 и режиме карты F фон области. игрового поля, в котором используются пиксели, взят из COLPF2, а цвет COLBK отображается как граница вокруг игрового поля.
  • В режиме интерпретации цвета GTIA $ 8 (9 косвенных цветов) цвет фона дисплея обеспечивается регистр цвета COLPM0, в то время как COLBAK используется для значения пикселя Playfield $ 8.
  • В интерпретации цвета GTIA в режиме n $ 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 цветов. Любые объекты Player / Missile, отображаемые в этом режиме, окрашиваются косвенно, при этом используется палитра 128 цветов.

В обычном режиме интерпретации цвета значения изменяются от $ 0 до $ 3, обычно на регистры цвета COLBK, COLPF0, COLPF1, COLPF2 соответственно. Режимы цветного текста также включают параметры использования COLPF3 для диапазонов значений символов. См. Дополнительные сведения в графических режимах ANTIC.

Когда графические шаблоны Player / Missile отображаются для отображения, где установлены биты графических шаблонов, отображаемый цвет берется из регистров, назначенных объектам.

Существуют исключения для генерации и отображения цвета:

  • Режимы ANTIC Text 2 и 3 и режим карты F:
    • Значения пикселей в этих режимах составляют только $ 0 и $ 1. Пиксели $ 0 определить фон игрового поля, который является регистром цвета COLPF2. Пиксели $ 1 используют компонент цвета COLPF2 и яркость, заданную COLPF1. Граница вокруг игрового поля использует цвет из COLBK.
    • Режимы ANTIC Text 2 и 3 и режим карты F ведут себя иначе с графикой Player / Missile по сравнению с другими режимами. COLPF1, использованный для пикселей глифа или графики, всегда имеет наивысший приоритет и не может быть скрыт игроками или ракетами. Цвет COLPF1 всегда исходит от «фона», которым обычно является COLPF2. Следовательно, если у игроков / ракет и пятого игрока есть приоритет над COLPF2, пиксели глифа / графики COLPF1 используют компонент цвета наивысшим приоритетом (игрок или снаряд) и компонент яркости COLPF1. Такое характерно для случаев, когда поведение приоритетов игрока / снаряда приводит к истинному черному цвету для «фона». Таким образом, цвет, который CTIA / GTIA окончательно решает использовать "позади" пикселя высокого разрешения, затем используется для "подкрашивания" глифа / графических пикселей COLPF1.
  • Исключения GTIA
    • Режим интерпретации цвета GTIA $ 8 (косвенное направление 9 цветов) использует регистр цвета COLPM0 для фона дисплея и цвета границы, в то время как COLBAK используется для значений пикселя Playfield $ 8.
    • Режим интерпретации цвета GTIA $ C (15 цветов на одном уровне яркости плюс фон) COLBK для установки уровня яркости всех остальных пикселей (значение пикселя от $ 1 до $ F). Однако сам фон использует только цветовую составляющую, регистрацию COLBK. Значение яркости фона фона также равно 0. Обратите внимание, что компонент цвета фона также объединяется с цветами других пикселей с помощью операции ИЛИ. Следовательно, общее количество цветов в режиме уменьшается, если компонент цвета фона не черный (числовой ноль).
  • Исключения для игроков / ракет:
    • Значение приоритета игрока / снаряда $ 0 (см. PRIOR / GPRIOR ) приведет к тому, что перекрывающиеся пиксели игрока и игрового поля будут объединены по ИЛИ, отображая другой цвет.
    • Конфликт конфигурации приоритета игрока / ракеты к приведет, что истинный черный цвет (цвет 0, яркость 0) будет при возникновении конфликтов.
    • Опция "Player / Missile Multi-Color" приведет к тому, что перекрывающиеся пиксели проигрывателя будут объединены ИЛИ вместе и отображать другой цвет.

Использование регистров цвета для разных символов ANTIC :

РегистрANTIC 2ANTIC 3ANTIC 4ANTIC 5ANTIC 6ANTIC 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 BANTIC CANTIC DANTIC EANTIC 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 цветов).

Различные элементы управления Player / Missile и GTIA

PRIOR $ D01B Write

SHADOW: GPRIOR $ 026F

Этот регистр управляет функциями управления цветом CTIA / GTIA: Режим интерпретации цвета игрового поля GTIA, объекты многоцветного проигрывателя, пятый и приоритет игрока / снаряда / игрового поля.

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
GTIA Mode 1GTIA 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 = $ C0GTIA / 16 Color15 цветов на одном уровне яркости, установленном регистром фона (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 (светло-зеленый / желтый).

Пары «Игроки / Ракеты», способные к многоцветному выводу:

  • Игрок 0 + Игрок 1
  • Ракета 0 + Ракета 1
  • Игрок 2 + Игрок 3
  • Missile 2 + Missile 3

Пятый игрок . PRIOR бит 4, значение $ 10 шестнадцатеричный / 16 dec позволяет Missiles стать пятым игроком. Никаких функциональных изменений Ракеты не происходит, кроме обработки цвета Ракет. Обычно Ракеты отображаются цветом соответствующего игрока. Когда Пятый игрок включен, все Ракеты отображают цвет игрового поля 3 (COLPF3 ). Положение по горизонтали, размер, задержка по вертикали и столкновения игрока и ракеты продолжают действовать одинаково. Приоритетом пересечения пикселей объектов Пятого игрока для игрока является COLPF3, но пиксели Пятого игрока имеют приоритет над всеми цветами игрового поля.

Изменение обработки цвета также вызывает некоторые исключения для отображения ракет в альтернативных цветовых режимах GTIA:

  • Режим оттенков GTIA 16: там, где пиксели ракет перекрывают игровое поле, пиксели наследуют значение яркости пикселей игрового поля.
  • Режим цветов GTIA 16: там, где пиксели ракеты перекрывают поле воспроизведения, пиксели наследуют значение цвета пикселей поля воспроизведения.

Пятый игрок вводит исключение для значения приоритета $ 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 = $ 80 0 0 0 = $ 0
TopPM0PM0P5/PF0P5 / PF0PM0
PM1PM1PF1PF1PM1
PM2P5 / PF0PF2PM0P5 / PF0
PM3PF1PF3PM1PF1
P5/PF0PF2PM0PM2PM2
PF1PF3PM1PM3PM3
PF2PM2PM2PF2PF2
PF3PM3PM3PF3PF3
НижнийCOLBKCOLBKCOLBKCOLBKCOLBK

Если установлено несколько битов, то в случае конфликта 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 цвета и слияние цветов:

ColorCOLPM0COLPM1COLPF0COLPF1ЦветCOLPM2COLPM3COLPF2COLPF3
1X12X
2X13X
3XX14XX
4X15X
5XX16XX
6XX17XX
7XXX18XXX
8X19X
9XX20XX
10XX21XX
11XXX22XXX

Когда все биты приоритета равны 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 и COLPM1COLPF2 против COLPM2 и COLPM3
0 0 0 0 = $ 00Player / MissileИгрок / Стрелка ИЛИ с COLPF2
0 0 0 1 = $ 01Игрок / СтрелкаИгрок / Стрелка
0 0 1 0 = 02 $Игрок / РакетаCOLPF2
0 0 1 1 = $ 03Игрок / РакетаTrue Black
0 1 0 0 = $ 04COLPF2COLPF2
0 1 0 1 = $ 05COLPF2True Black
0 1 1 0 = $ 06COLPF2COLPF2
0 1 1 1 = 07 $COLPF2True 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 = $ 0CCOLPF2True Black
1 1 0 1 = $ 0DCOLPF2True Black
1 1 1 0 = $ 0ECOLPF2True Black
1 1 1 1 = $ 0FCOLPF2True Black

VDELAY $ D01C Write

Вертикальная задержка P / M Графика

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
Игрок 3Игрок 2Игрок 1Игрок 0Ракета 3Ракета 2Ракета 1Missile 0

Этот регистр используется для обеспечения движения одиночной строки развертки, когда разрешение Double Line Player / Missile включено в регистре ANTIC DMACTL. Это работает путем маскирования обновлений ANTIC DMA в регистры GRAF * на четных строках развертки, в результате чего графический шаблон смещается на одну строку развертки вниз.

Поскольку для разрешения Single Line требуется обновление ANTIC DMA на каждой строке развертки, а VDELAY маскирует обновления на четных строках развертки, то этот бит снижает разрешение Single Line Player / Missile до Double line.

GRACTL $ D01D Запись

Управление графикой

Бит 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 позволяет заблокировать все триггеры. Сброс бита возвращает триггеры к нефиксированному поведению в реальном времени.

HITCLR $ D01E Запись

Очистить коллизии

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
????????

Любая запись в этот регистр очищает все биты обнаружения столкновения Игрок / Ракета.

Другие функции CTIA / GTIA

Триггеры джойстика

TRIG0 $ D010 Чтение

SHADOW: STRIG0 $ 0284

Триггер джойстика 0

TRIG1 $ D011 Чтение

SHADOW: STRIG1 $ 0285

Триггер джойстика 1.

TRIG2 $ D012 Чтение

SHADOW: STRIG2 $ 0286

Триггер джойстика 2.

TRIG3 $ D013 Чтение

ТЕНЬ: STRIG3 $ 0287

Триггер джойстика 3

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Триггер
0000000?

Биты с 7 по 1 всегда равны 0. Бит 0 сообщает о состоянии триггера джойстика. Значение 1 указывает на то, что триггер не нажат. Значение 0 указывает на то, что триггер нажат.

Триггер регистрирует нажатие кнопки отчета в реальном времени. Состояние нажатой кнопки сразу же исчезнет, ​​когда кнопка будет отпущена.

Триггеры могут быть сконфигурированы для фиксации, то есть блокировки, в нажатом состоянии и остаются в этом состоянии до тех пор, пока не будут специально сброшены. GRACTL бит 2 включает фиксацию для всех триггеров. Сброс бита 2 GRACTL возвращает все триггеры в режим реального времени.

PAL $ D014 Чтение

флагов PAL.

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
----Видео 3Видео 2Видео 1Видео 0

Этот регистр сообщает стандартное отображение для системы. Когда биты с 3 по 0 установлены в 1 (значение $ f шестнадцатеричное / 15 десятичное), система работает в NTSC. Когда биты равны нулю, система работает в режиме PAL.

CONSPK $ D01F Запись

Консольный динамик

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
0000Динамик---

Бит3 управляет внутренним динамиком Atari 800/400. В более поздних моделях динамик консоли удаляется, и звук смешивается с обычными аудиосигналами POKEY для вывода на порт монитора и радиочастотный адаптер. Atari OS использует динамик консоли для вывода щелчка клавиатуры и звука звонка / зуммера.

Операционная система устанавливает бит динамика во время процедуры вертикального пустого экрана. Повторная запись 0 в бит вызовет жужжащий звук с частотой 60 Гц, поскольку вертикальный пробел сбрасывает значение. Полезные тона могут быть сгенерированы с использованием кода 6502, эффективно добавляющего пятый аудиоканал, хотя каналу требуется процессорное время для поддержания звуковых тонов.

CONSOL $ D01F Чтение

Ключи консоли

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
-----ОпцияВыберитеСтарт

Бит назначается для сообщения о состоянии каждой из специальных клавиш консоли, Пуск, Выбор и Параметр. Значение бита 0 указывает, что клавиша нажата, а 1 указывает, что клавиша не нажата. Ключ / битовые значения:

  • Start Key = битовое значение $ 1
  • Select Key = Bit value $ 2
  • Option Key = битовое значение $ 4
Операция Player / Missile Graphics (спрайты) 30>

Аппаратная система «спрайт » обрабатывается 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

Микросхема 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 как Графика 9.
  • Режим интерпретации GTIA $ 8 - Этот режим позволяет использовать 9 цветов косвенного направления на горизонтальную линию любого оттенка и яркости из палитры Atari из 128 цветов. Это достигается с использованием всех регистров цвета Player / Missile и Playfield для пикселей Playfield. В этом режиме цвет фона обеспечивается регистром цвета COLPM0, в то время как COLBAK используется для значений пикселей Playfield $ 8. Этот режим доступен в Atari BASIC как Графика 10,
  • Режим интерпретации цвета GTIA $ C - 15 оттенков в одном значении оттенка / яркости плюс фон. Значение фона, COLBK устанавливает уровень яркости всех других пикселей (значение пикселя от $ 1 до $ F). Младший значащий бит значений яркости не наблюдается, поэтому доступны только стандартные значения яркости / CTIA 8 ($ 0, $ 2, $ 4, $ 6, $ 8, $ A, $ C, $ E). Кроме того, сам фон использует только регистр цвета, установленный в COLBK. Значение яркости фона принудительно равно 0. Этот режим доступен в Atari BASIC как Graphics 11.

Из этих режимов особенно примечателен 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 с помощью некоторых внешних.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-13 12:24:47
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте