Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Адаптер Television Interface [1] ( ТИА ) является пользовательским компьютерным чипом , который является сердцем Atari 2600 игровой консоли, создавая изображение на экране, звуковые эффекты, и чтение входных контроллеров. На его дизайн сильно повлияла попытка уменьшить объем оперативной памяти, необходимой для работы дисплея. Полученный в результате дизайн, как известно, сложно программировать, что является постоянной проблемой для разработчиков.

Разработкой CO10444 / CO11903 [2] TIA руководил Джей Майнер, который в Atari продолжил разработку TIA для компьютеров Atari 400/800 с помощью чипов ANTIC и CTIA / GTIA . Джей Майнер будет руководить разработкой пользовательских чипов для Amiga Lorraine, которая впоследствии станет компьютером Commodore Amiga.

Дизайн [ править ]

Фон [ править ]

Ранние видеоигры обычно использовали два различных типа графики: «игроки», которыми управлял игрок или компьютер (сегодня известные как спрайты ), и «игровое поле», или фоновая графика, обычно отрисовываемая под игроками. [3] Игроки постоянно перемещаются, в то время как игровые поля обычно были статичными, меняясь только в четко определенные моменты времени при «смене уровня».

Обычный способ рисования игрового поля - использовать растровое изображение, хранящееся в буфере кадра . Каждая ячейка памяти в буфере кадра содержит значение, которое описывает пиксели на экране. Схема дисплея считывает эти значения из буфера и использует его , чтобы генерировать аналоговый сигнал для отображения на ЭЛТ видеомонитор . Сопоставление памяти с местоположениями экрана или пикселями часто ограничивалось аппаратным обеспечением дисплея. На обычном цветном телевизоре NTSC максимальное разрешение обычно составляет от 256 до 320 пикселей на строку и от 192 до 240 строк на экран. [4]

Дизайн без RAM [ править ]

Во время разработки 2600 оперативная память была чрезвычайно дорогой и стоила десятки тысяч долларов за мегабайт. [5] Типичный дисплей с разрешением 320 на 200 пикселей и даже с одним битом на пиксель потребует 8000 байт памяти для хранения буфера кадра. [3] Это не подходит для платформы, которая должна стоить всего несколько сотен долларов. Даже резкое снижение разрешения не снизит стоимость памяти до разумного уровня. Вместо этого команда разработчиков решила полностью удалить фреймбуфер на основе памяти.

TIA отличается от традиционного подхода с буфером кадра тем, что изображение на экране составляется путем манипулирования пятью подвижными графическими объектами (2 игрока, 2 ракеты и 1 мяч) и статическим объектом игрового поля. Все они генерируются в каждой строке сканирования из соответствующих регистров, в отличие от метода, используемого в модели с отображением в буфер кадра, требующей, чтобы программа обновляла их в каждой строке сканирования. [6] Разрешение по горизонтали неоднородно, так как его размер зависит от конкретного графического объекта. Наименьшая единица пикселя соответствует 1 тактовому циклу цвета чипа, из которых 160 видимых на линии. [6]

Объект Playfield состоит из двух с половиной байтового регистра (шириной 20 бит), который может быть симметрично отражен или скопирован как есть в правую половину экрана, всего 40 бит (каждый бит составляет 4 цветовых цикла. широкий). Цвет, который был нарисован, если бит был 1 или 0, был выбран из предопределенной палитры до 128 цветов (см. Ниже) и сохранен в других регистрах.

TIA также поддерживает пять отдельных графических объектов, состоящих из:

  • Две 8-пиксельные горизонтальные линии, которые составляют « спрайты » Player 1 и Player 2. Они одноцветные, могут быть растянуты в 2 или 4 раза и могут быть дублированы или дублированы втрое.
  • «Мяч» - горизонтальная линия того же цвета, что и игровое поле. Это может быть один, два, четыре или восемь пикселей в ширину.
  • Две «ракеты» - еще одна горизонтальная линия того же цвета, что и соответствующий игрок. Это может быть один, два, четыре или восемь пикселей в ширину.

TIA имеет аппаратное обнаружение коллизий для всех этих объектов и хранит битовую карту коллизий, которые обычно считываются во время периода VBLANK. Регистры в TIA позволяют программисту контролировать расположение графических объектов и их цвет.

TIA также предоставляет два канала однобитового звука. Каждый канал обеспечивает 32 значения высоты тона и 16 возможных битовых последовательностей. Есть 4-х битный регулятор громкости.

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

Рисование дисплея [ править ]

Поскольку регистры содержат данные только для одной строки дисплея, создание полноэкранного режима требует, чтобы игровая программа обновляла регистры «на лету», процесс, известный как « ускорение луча ». [7]

Для того, чтобы начать процесс, игровая программа работает на MOS Technology 6502 основанного CPU нагрузки регистров Тиа с данными необходимо провести первую строку дисплея. Затем TIA ожидает, пока телевизор не будет готов нарисовать линию (под командой соответствующего аналогового оборудования TIA) и считывает регистры, чтобы произвести сигнал для этой линии. Во время периода горизонтального гашения между строками 6502 быстро меняет регистры TIA для следующей строки. Этот процесс продолжается вниз по экрану.

Это усложняется тем, что технология MOS 6507 в 2600 является версией 6502 с уменьшенными выводами и не поддерживает аппаратные прерывания.. Обычно аналоговая сторона системы отображения генерирует прерывание, когда заканчивает рисовать растровую линию и готовится к следующей. Прерывание запускает код, необходимый для обновления экрана, а затем возвращается к «основной» программе. 6507 оставил эти контакты вне ЦП, чтобы сэкономить деньги, однако у него есть контакт «RDY» для вставки состояний ожидания в циклы шины ЦП. TIA был специально разработан для использования вывода RDY для синхронизации ЦП с синхронизацией растровой строки видео, сгенерированного TIA: когда ЦП записывает в определенный адрес регистра TIA, TIA понижает свой выходной сигнал RDY до начала следующей строки. Это приостанавливает работу ЦП до начала (цикл цветовой синхронизации 0) следующей строки, обеспечивая некоторую автоматическую синхронизацию.

Кроме того, TIA только полуавтоматически генерирует синхронизирующие сигналы вертикальной синхронизации (чтобы отметить конец каждого видеокадра и начало следующего). TIA может вставлять сигнал вертикальной синхронизации в аналоговый выходной видеосигнал, но он не имеет счетчика строк кадров и поэтому не может определить, когда должен закончиться кадр. Вместо этого программе ЦП предоставляется запуск сигналов вертикальной синхронизации и подсчет строк в каждом кадре, чтобы определить, когда должен быть сформирован сигнал вертикальной синхронизации. Как и в случае с оборудованием RDY-wait, сигнал вертикальной синхронизации запускается при записи ЦП на определенный адрес регистра TIA. Если запись на этот адрес никогда не производилась, а TIA разрешалось запускаться в свободном режиме, он генерировал один бесконечный кадр активных растровых строк, который обычно появлялся на экране телевизора в виде катящегося изображения.

Эти и другие детали программирования TIA означают, что программисты должны тщательно рассчитывать время своих программ, чтобы работать в точном количестве циклов, необходимых для различных событий, связанных с экраном. Неправильно это означает, что экран не отрисовывается должным образом. Часть программы, которая делает это, известна как «ядро» этой программы. [8]


Учитывая эту сложность, ранние игры, в которых использовалась система, были простыми по компоновке, с использованием TIA для создания симметричных игровых полей с игроками наверху. Это было первоначальным намерением системы: запускать несколько аркадных игр, которые Atari уже выпустила, таких как Tank и Pong . В этих случаях данные игрового поля обычно размещались в ПЗУ объемом 2 КБ на игровом картридже . Поскольку каждая строка использовала 20 бит данных, а на дисплее NTSC было 192 строки, [9]дисплею с разной компоновкой в ​​каждой строке требовалось всего 480 байт (192 x 20/8) из 4 Кбайт картриджа для размещения одного жестко запрограммированного дисплея. В этом случае ядро ​​просто продвигало 20 бит через ПЗУ для каждой строки, когда TIA продвигался вниз по экрану, задача, которая занимала всего несколько циклов процессорного времени. Это можно было бы еще больше уменьшить, используя одни и те же данные для нескольких строк, либо удваивая их по вертикали, либо читая один путь по списку для верха, а затем обратно в обратном направлении для нижнего, создавая вертикальное зеркальное отображение всего 240 байт.

Ключевым достижением стало лицензирование Space Invaders для платформы, что потребовало гораздо большего количества графики игрока, чтобы рисовать вражеских пришельцев. Решение состояло в том, чтобы изменять данные игрока для каждой линии по мере рисования изображения, создавая очевидное большое количество игроков. Space Invaders - приложение-убийца платформы , увеличившее продажи системы в четыре раза. Еще один прогресс был достигнут путем (частичного) кодирования дисплея в виде инструкций ЦП вместо сохранения его в виде фиксированных данных в ПЗУ. Adventure использовала эту концепцию для создания большого количества карт, комбинируя различные части данных в ПЗУ, перепрыгивая через них во время рисования на экране. [10] Это позволило игре иметь 30 комнат, для которых в противном случае потребовалось бы 14 КБ ПЗУ.

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

Возможности цвета TIA [ править ]

TIA использует разные цветовые палитры в зависимости от используемого формата телевизионного сигнала. Для формата NTSC (номер детали CO10444) [2] предоставляется 128-цветная палитра, в то время как для PAL доступно только 104 цвета (номер детали CO11903). [2] Кроме того, палитра SECAM состоит всего из 8 цветов.

Палитра NTSC [ править ]

Палитра PAL [ править ]

Палитра SECAM [ править ]

Генератор шума / тона (AUD0 / 1) [ редактировать ]

TIA может генерировать различные типы импульсов и шума на своих двух генераторах (или каналах) AUD0 и AUD1. Каждый генератор имеет 5-битный делитель частоты и 4-битный регистр управления звуком, который управляет формой волны. Также имеется 4-битный регистр регулировки громкости на каждый канал.

Делитель частоты (AUDF0 / 1) [ править ]

Частоты генерируются путем деления 30 кГц на предоставленное 5-битное значение. В результате получается дешевый делитель частоты, способный воспроизводить расстроенные ноты и нечетно настроенную частоту. TIA не является музыкальным чипом, если композитор не работает в рамках частотных ограничений или не модулирует между двумя расстроенными частотами для создания настроенной ноты вибрато.

Управление звуком (AUDC0 / 1) [ редактировать ]

Регистр управления звуком генерирует импульсную волну и управляет ею для создания сложных импульсов или шума. Следующая таблица (с продуманными дубликатами) объясняет, как генерируются его тона:

Ссылки [ править ]

  1. ^ "I. Теория работы". Полевая служба Atari Video Computer System Manual - Модель 2600 / 2600А Domestic (PDF) . Ред. 02. Atari, Inc., 21 января 1983 г., стр. 1–4. Архивировано из оригинального (PDF) 15 февраля 2017 года . Проверено 10 сентября 2010 года .
  2. ^ a b c Стилфен, Скотт (5 февраля 2020 г.). "ATARI VCS / 2600 TIA ЧИПСОВ" . Проверено 24 февраля 2020 года .
  3. ^ a b Крис Кроуфорд, «ANTIC и список отображения» , De Re Atari
  4. ^ Монфор & Богост, стр. 27
  5. Перейти ↑ McCallum, John C. (13 февраля 2012 г.). «Цены на память (1957-2012)» . jcmit.net . Архивировано из оригинального 26 октября 2012 года . Проверено 27 октября 2012 года .
  6. ^ а б Райт, Стив. «Stella Programmer's Guide» , (на испанском языке) 3 декабря 1979 г. Архивировано 5 марта 2016 г.
  7. Колер, Крис (13 марта 2009 г.). «Гонка за лучом: как безумное оборудование Atari 2600 изменило дизайн игры» . Проводной . Архивировано 12 июля 2014 года.
  8. ^ Монфор & Богост, стр. 34
  9. Подробнее о PAL см. «Спецификации Atari 2600». Архивировано 24 мая 2011 г. на Wayback Machine.
  10. ^ Робинетт, Уоррен, «Приключение» , Университет Северной Каролины . Архивировано 27 января 2018 года.

Источники [ править ]

  • Монфор, Ник; Богост, Ян (2009). Racing the Beam: компьютерная система видео Atari . MIT Press. ISBN 0-262-01257-X.

Внешние ссылки [ править ]

  • Программирование ATARI 2600 для новичков
  • Техническая информация TIA
  • Техническое руководство TIA
  • Схема TIA
  • Шоты высокого разрешения TIA
  • Программирование Atari 2600 и меня - Часть 1 , часть 1 серии из 8 частей
  • Atari 2600, разработка Джо Декуира