Порт джойстика Atari — это компьютерный порт, использовавшийся для подключения различных игровых контроллеров к игровым приставкам и домашним компьютерным системам в 1970–1990-х годах. Первоначально он был представлен на Atari 2600 в 1977 году, а затем использовался на Atari 400 и 800 в 1979 году. Он стал кроссплатформенным с VIC-20 в 1981 году и затем использовался на многих последующих машинах обеих компаний, а также на растущем списке машин сторонних производителей, таких как платформа MSX и различные консоли Sega .
Порт, основанный на недорогом 9-контактном D-разъеме , стал фактическим стандартом в 1980-х и 1990-х годах, поддерживаемым широким спектром джойстиков и других устройств, чаще всего контроллерами paddle , световыми перьями и компьютерными мышами . Стандарт был настолько укоренившимся, что привел к появлению таких устройств, как Kempston Interface , который позволял использовать джойстики Atari на ZX Spectrum . Порт также использовался для всех видов неигровых ролей, включая интерфейс AtariLab , модемы , цифровые клавиатуры и даже видеокарту расширения.
К середине 1990-х годов были сняты с производства последние модели домашних компьютеров и игровых приставок, использующие порты Atari — часто как для джойстика, так и для мыши. IBM PC-совместимые компьютеры, не имевшие портов для джойстика Atari, стали доминировать на рынке домашних компьютеров, и производители консолей, такие как Sega, перешли на другие типы портов.
Atari Video Computer System (позже 2600) была разработана в попытке решить проблемы, с которыми столкнулась Atari при выпуске своей первой домашней игровой консоли Pong . Несмотря на успех, Pong была дорогой в разработке системой и была предназначена исключительно для одной игры. Было бы гораздо практичнее иметь машину, которая могла бы запускать несколько игр. Список игр, которые она должна была поддерживать, включал вариации Pong и Tank . [1] Именно желание запускать эти две игры привело к необходимости в какой-то гибкой системе ввода; Pong использовала аналоговые контроллеры-лепестки, в то время как Tank использовала двойные цифровые (вкл./выкл.) джойстики. Аркадные игры той эпохи обычно использовали лепестки, джойстики или уникальный вид контроллера рулевого колеса, который вращался, совершенно не похожий на настоящий автомобиль. [1]
Разработка 2600 была строго бумажным проектом до сентября 1975 года, когда был выпущен процессор MOS Technology 6502. 6502 предлагал правильные комбинации функций, производительности и цены, которые впервые сделали консоль, использующую картриджи ROM для хранения программ, практичной. Теперь, когда такая машина казалась реальной возможностью, команда разработчиков Cyan Engineering начала серьезную разработку. [2]
В рамках этих усилий Джо Декуир начал разработку системы ввода-вывода, основанной в первую очередь на технологии MOS 6532 , которая включала 8-битные порты ввода-вывода, а также оборудование, необходимое для управления обновлением памяти и выполнения аналогичных задач по обслуживанию. В конечном итоге, конструкция использовала пять портов ввода-вывода (контактов) для управления различными переключателями на передней панели и по четыре для двух контроллеров. Кроме того, TIA , чьей основной задачей был звук и видео, использовался для управления контроллерами на основе синхронизации, такими как манипуляторы и световые перья. Физическим интерфейсом был 9-контактный разъем D-sub, который уже был относительно распространен для последовательных портов с уменьшенным количеством контактов на компьютерах с шиной Apple II и S-100 . Каждый из контактов в разъеме напрямую подключался к соответствующему контакту на соответствующем чипе. [3]
2600 был выпущен в 1977 году, поставляясь как с контроллерами paddle, так и с одним джойстиком. Порт позволил 2600 легче поддерживать более широкий спектр игр, не только определенные игры, но и целые жанры. Большинство игровых консолей до Atari имели контроллеры paddle, даже съемные, как в случае Fairchild Channel F и Magnavox Odyssey . Но джойстик был новым и быстро получил похвалу, поскольку позволял напрямую вводить данные в ряд игр, которые в противном случае было бы трудно контролировать с помощью paddle. [4] Джойстик был назван «вершиной контроллеров домашних развлечений своего времени». [5]
После выпуска 2600 команда Cyan немедленно обратилась к разработке его замены, [примечание 1] нацелившись на временные рамки 1979 года. [6] Поскольку «стандарт» уже был установлен на 2600, новые машины, естественно, использовали тот же интерфейс контроллера, хотя детали систем, используемых для его считывания, изменились. По мере приближения 1979 года рынок домашних компьютеров появился, и Atari перепозиционировала новую систему как домашние компьютеры Atari 400 и 800. Это означало, что стандарт теперь пересек границу между консолями и компьютерами. [7]
Конструкция порта была чрезвычайно гибкой, и со временем увидела не только широкий спектр устройств ввода, но и вывода. В число устройств, не являющихся контроллерами, входила система AtariLab , которая позволяла пользователям подключать различные лабораторные устройства, такие как цифровые термометры, [8] модем MPP-1000C на 300 бод [9] и даже собственный адаптер Atari на 80 колонок для 8-битной серии, XEP80. [10] Он широко использовался на рынке домашнего пивоварения в качестве легкого устройства ввода, и статьи о том, как построить различные адаптеры, были обычным явлением. [11]
Commodore включила порт джойстика Atari в компьютер VIC-20 . [12] Atari имела патенты на джойстик и выиграла судебный запрет против Commodore, которая выпустила почти идентичный «имитационный» джойстик для VIC-20, [13] но не имела патентов на сам порт. К тому времени, когда Commodore начала разработку VIC-20, на рынке были миллионы контроллеров, совместимых с портом.
Порт джойстика Atari быстро распространился по всей отрасли. Со временем появились сотни новых устройств, использующих эту систему, включая трекболы и другие продвинутые устройства ввода. [14] [15] [16] Стандарт стал настолько широко использоваться, что почти каждая 8-битная машина, выпущенная после 1982 года, использовала его, а для тех, кто этого не делал, были доступны адаптеры, например, Apple II и ZX Spectrum . [17] [18] [19] Один из реселлеров TI-99/4A сообщил, что его самым продаваемым продуктом был адаптер джойстика Atari. [20] Порт также перешел на 16/32-битные машины, такие как Atari ST и Amiga . [21]
Введение Nintendo Entertainment System было первым широко распространенным примером игровой системы в ту эпоху, которая не использовала дизайн Atari, ее D-pad был специально разработан, чтобы быть менее громоздким. [22] По мере того, как новые консоли выходили на недавно оживившийся рынок, для каждой новой модели были введены новые конструкции портов. Тем временем IBM PC представил 15-контактный игровой порт , который был разработан в первую очередь для аналоговых входов, но его использование оставалось редким до появления популярных авиасимуляторов . [23]
К середине 1990-х годов стандарт Atari стал устаревать, когда домашние компьютеры, такие как Atari ST и Amiga, ушли с рынка вместе с игровой консолью Sega Genesis. С Atari STE Atari представила улучшенный порт джойстика (15-контактный dsub) вместе с 2 портами джойстика от Atari ST, а когда был выпущен Jaguar , они использовали только улучшенный порт джойстика. [24] Тем не менее, он был настолько популярен во время своего существования, что остается обычным элементом в иконографии видеоигр и по сей день, [25] и обычно упоминается как символ игровой системы и дизайна видеоигр 1980-х годов. [26] Также было много систем, позволяющих адаптировать порты к универсальной последовательной шине , и даже совершенно новые конструкции джойстиков, подобные Atari, с использованием USB. [27]
Порт джойстика Atari использовал 9-контактный штекерный разъем в хост-системе и гнездовые разъемы на устройствах. Классические периферийные устройства Atari использовали округлый штекер каплевидной формы, который было легко захватить, чтобы облегчить подключение. Почти все совместимые устройства использовали схожие физические макеты, часто вплоть до полного копирования дизайна штекера.
В консолях Atari и 8-битных компьютерах чтение входов с джойстика обрабатывалось процессом опроса, который устанавливал значения в различных 8-битных регистрах. Например, в 8-битных машинах контакты в порту были подключены к пользовательскому оборудованию ввода-вывода. Мгновенные значения опрашивались 30 раз в секунду во время вертикального пустого прерывания (VBI), когда операционная система (ОС) обрабатывала ряд служебных задач. В зависимости от настроек в других регистрах входы на контактах интерпретировались несколькими способами, а затем выходные данные помещались в ряд регистров ОЗУ . Atari называла это копирование с оборудования в ОЗУ «теневым копированием». [28]
Джойстики Atari включали четыре внутренних переключателя для кодирования направления и пятый для кнопки триггера. Каждый из них напрямую вел к штифту в порту, а оттуда к входу на одной из микросхем ввода-вывода. Операционная система считывала эти входы на каждом VBI, а затем копировала их статус в теневые регистры, с портами с меньшим номером в наименее значимых битах. Например, если стик 0 был перемещен вверх и вправо, PORTA
регистр имел бы установленные биты 0 и 3, или десятичное значение 9. Статус каждой из кнопок триггера джойстика вместо этого помещался в четыре отдельных регистра, нулевой бит которых устанавливался бы в 1, если бы был нажат триггер. [29]
Гоночные игры 1980-х годов, как правило, были сверху вниз и использовали уникальный контроллер, который заставлял машину поворачивать с фиксированной скоростью в одну или другую сторону или ехать по прямой ( Night Driver от Atari является заметным исключением). Эти игры управлялись не рулем, который указывал влево или вправо, как в настоящей машине, а рулем, который посылал команды влево или вправо, только если он активно вращался в этом направлении. Игроки быстро вращали руль, чтобы заставить машину поворачивать как можно быстрее в желаемом направлении, а затем тормозили руль руками, чтобы снова ехать прямо. [30]
Контроллеры управления были реализованы на консолях Atari с помощью устройства, которое работало так же, как джойстики, нажимая каждый переключатель направления по очереди, пока он вращался. Программам приходилось следить за последовательностью битов в теневых регистрах, чтобы определить, вращается ли контроллер вправо или влево. Сама ОС не пыталась интерпретировать это, чтобы предоставить программисту инструкции «вправо» и «влево». [31]
Paddles — это аналоговые устройства, обычно используемые для управления горизонтальным положением игрока на экране. В системах Atari paddles были соединены парами, что позволяло играть одновременно четырем людям на двухпортовой системе.
Лопатки работали, подключая линию +5 В через потенциометр (потенциометр), а затем обратно к контактам 5 и 9, по одному для каждой лопатки в паре. Эти контакты были подключены к конденсатору , медленно заряжая его со скоростью, установленной положением потенциометра. Когда напряжение в конденсаторе достигало порогового значения, это вызывало прерывание в ОС, которая копировала значение цветового тактового сигнала с видеооборудования. Обычно это давало значение от 0 до 228, которое сохранялось как 8-битное значение в соответствующем POT
теневом регистре. [32]
Одним из преимуществ этой системы было то, что значения цветовых часов, предоставляемые контроллерами лопастей, были теми же числами, которые управляли горизонтальным положением спрайтов , что означало, что программист мог просто скопировать значение регистра тени горшка в регистр горизонтального положения спрайта, и он появлялся в соответствующем месте на экране. [32]
Контроллеры клавиатуры использовались в системах Atari в качестве вспомогательных входов, для цифровых клавиатур на 8-битных машинах и контроллеров специального назначения на 2600, таких как порт Star Raiders . Они были основаны на матрице 4x3 для 12 возможных клавиш. Для любого нажатия клавиши строка кодировалась установкой одного из четырех бит в теневом регистре джойстика, PORTA
или PORTB
, в то время как столбец устанавливал бит в одном из регистров триггера. Затем программист должен был прочитать оба, чтобы определить, какая клавиша была нажата; не было прошивки, чтобы сопоставить это с кодами клавиш (которых в 2600 в любом случае не было). [33]
Световые перья также поддерживались напрямую. В этом случае фототранзистор в световом пере был подключен к линии триггера порта. Если перевести его в режим светового пера, всякий раз, когда триггер становился низким, ОС копировала значение цветовых часов в PENH
регистр для записи горизонтального положения, а VCOUNT
регистр видеооборудования — в PENV
регистр. Результатом был набор из двух восьмибитных значений, напрямую кодирующих положение пера по осям X и Y, используя те же координаты, что и видеооборудование. Затем можно установить спрайт на эти координаты, и он появится под световым пером. Поскольку таймеры были не очень точными, положения приходилось усреднять по нескольким экранам, чтобы получить пригодное для использования значение. [34]
Графические планшеты обрабатывались с использованием того же оборудования, что и контроллеры лопастей, кодируя ось X как выход одной лопасти, а ось Y как другой. Было три кнопки, одна на стилусе и по одной в каждом верхнем углу пад. Кнопка стилуса была подключена к направлению вверх порта джойстика, в то время как левая и правая кнопки на самом планшете были подключены к двум входам триггера. [35]
Поскольку контакты джойстика были подключены напрямую к контроллерам ввода/вывода на материнской плате , их можно было запрограммировать на вывод в порт, а не на ввод. Эта возможность использовалась в 80-колоночной карте Atari XEP80 , которая использовала контакт 1 как выходной контакт, а контакт 2 как входной. Драйвер устройства использовал эти контакты для реализации двунаправленного последовательного порта , который работал в порту джойстика 1 или 2. [36] Аналогичные драйверы использовались другими устройствами, такими как модемы, что позволяло избежать необходимости использовать более дорогую систему Atari SIO . [37]
VIC -20 имеет один порт управления , а Commodore 64 — два порта, каждый из которых представляет собой полную реализацию стандарта Atari. Они отличались от систем Atari в первую очередь аппаратным обеспечением, используемым для декодирования входов.
Цифровые контакты на портах управления Commodore 64 считывались чипом MOS Technology CIA , а аналоговые входы paddle, аналогично Atari, звуковым чипом MOS Technology SID в сочетании с таймером. [38] Для этой цели в SID был только один набор из двух входов, поэтому другой регистр контролировал, какой из двух портов был подключен к SID в любой момент времени. Световые перья могли использоваться только в порту управления 1 и работали аналогично Atari, но были основаны на более быстрых часах, поэтому горизонтальная ось считывалась от 0 до 511. Однако точность была такой же, как у Atari, поскольку значения округлялись только до четных значений. [39]
Те же самые контакты порта на CIA #1 использовались также для управления клавиатурой и другими задачами по обслуживанию, что приводило к некоторым проблемам. Например, левый переключатель направления порта управления 1 был подключен к тому же входу, что и клавиша CTRLна клавиатуре, и при его использовании прокрутка в программах BASIC замедлялась. Из-за способа обработки сканирования клавиатуры удержание триггера приводило к генерации случайных символов. В результате многие игры C64 требовали подключения джойстика к порту управления 2. [40] [41]
На Atari ST два порта обычно были настроены с портом 0, установленным на режим мыши, и портом 1 на джойстик. В режиме джойстика они работали в основном идентично более ранним машинам, но в режиме мыши система следила за портами на предмет дискретных входов на различных направленных контактах, или «событий». Датчик мыши генерировал 200 событий на каждый дюйм движения, и система могла отслеживать их достаточно быстро, чтобы обрабатывать движения со скоростью до 10 дюймов в секунду. [42] Управление портами, клавиатурой и часами реального времени осуществлялось специальным контроллером Intelligent Keyboard (ikbd). [43] Реализация порта джойстика ST не имела аналогового входа, следующая модель STE представила улучшенный порт джойстика, который использовал 15-контактный dsub с аналоговой поддержкой.
Commodore Amiga имела полную двухпортовую реализацию, известную как gameport s. В отличие от более ранних систем, которые должны были интерпретироваться путем проверки битов в регистрах, ОС Amiga имела ряд драйверов и библиотек, которые делали взаимодействие простым. Это включало обработчики для пяти типов устройств ввода, включая мыши, джойстики, световые перья и «пропорциональные контроллеры» как всеобъемлющее для аналоговых входов, таких как манипуляторы и аналоговые джойстики. Они также имели настройки для того, как и когда ОС будет сообщать об изменениях. Например, программист мог настроить драйверы так, чтобы они сообщали только тогда, когда мышь переместилась не менее чем на 10 событий, тем самым снижая частоту, с которой им приходилось иметь дело с движением мыши. [44]
В серии домашних компьютеров TI-99/4A использовался 9-контактный разъем, который был физически идентичен версии Atari, а также был похож с точки зрения устройств и способа их работы. Однако контакты порта были перераспределены, и он использовал отдельные заземления для выбора джойстика для чтения, поэтому он не был напрямую совместим. Преобразователи, позволяющие подключать устройства стандарта Atari, были и простыми, и очень распространенными. [45] Производитель и большинство производителей адаптеров включали диоды на всех линиях каждого джойстика, кроме заземления, чтобы предотвратить ложные нажатия клавиш. [46] [47]
Игровая консоль ColecoVision расширила контроллер 2600 двумя (или четырьмя) триггерами и 12-клавишной панелью. ColecoVision также поддерживала контроллеры управления и трекболы . Во многие игры ColecoVision можно играть с помощью контроллера, совместимого с Atari, если контроллер Coleco подключен ко второму порту и используется для выбора игры.
Игровая консоль Atari 7800 дополнила контроллер 2600 вторым триггером. В игры 7800, не требующие двух триггеров, можно играть с помощью классических контроллеров.
Домашние компьютеры MSX использовали слегка модифицированную версию порта, заменив один из аналоговых входов вторым триггером, а другой — штырем стробоскопа . При нормальной работе можно было использовать любой джойстик в стиле Atari, хотя у него отсутствовала вторая кнопка триггера. Штырь стробоскопа использовался для поддержки ввода мыши. С точки зрения электричества мышь генерирует то, что по сути является случайным потоком импульсов при движении. В таких системах, как ST и Amiga, для тщательного отслеживания этих импульсов использовалось специальное оборудование, чтобы плавно отслеживать движение, поскольку ЦП мог быть слишком занят другими задачами, чтобы отслеживать быстрые прерывания. Менее мощные 8-битные конструкции не обладали производительностью для плавного отслеживания мыши без дополнительного оборудования, а конструкции MSX, основанные на готовом оборудовании, не обладали этой способностью. Вместо этого отслеживающее оборудование было перемещено в мышь. Мыши содержали два 8-битных значения, отслеживающих движение по осям X и Y с момента последнего опроса. Чтобы считать значения, штырь стробоскопа поднимался на высокий уровень четыре раза. С каждым импульсом полубайт из двух байтов выводился на четыре направленных штыря последовательно. Стробирующий импульс также сбрасывал значение на ноль, снова запуская процесс опроса. Мыши MSX были дорогими, и это привело к появлению адаптеров для мышей типа PS/2, которые работали по схожим принципам. [48]
Контроллеры игровых консолей Sega Master System и Genesis обратно совместимы и могут использоваться с Atari 2600.
Не все системы Magnavox Odyssey 2 имели съемные контроллеры. Для моделей, которые имеют, достаточно простого адаптера для перестановки штифтов. [49]
Некоторые ПК Amstrad , которые в остальном были совместимы с IBM PC , имели цифровые игровые порты, совместимые с Atari, а не аналоговый стандарт ПК . Программное обеспечение, такое как Elite и GEM, поддерживало цифровой игровой порт Amstrad. В противном случае направления джойстика были сопоставлены с клавишами на клавиатуре. [50]
Apple II также имел порт джойстика, использующий 9-контактный D-sub, но это была совсем другая система, которая подключала два аналоговых джойстика к одному порту. Они не очень подходили для игр с управлением направлением, и адаптеры для устройств порта Atari были распространены, как коммерческие, такие как Sirius Joyport , так и многие самодельные системы. В отличие от портов, используемых в системах Commodore, большинство самодельных систем адаптировали только джойстик и, как правило, не включали другие входы. Эти адаптеры не позволяли использовать аналоговые входы лепестков, несмотря на то, что порт уже обрабатывал эти входы напрямую, то есть все, что было нужно, это механический адаптер. [51] [52]
ZX Spectrum до Spectrum +2 не имел встроенного порта контроллера, что привело к изобилию различных входов. Адаптеры портов Atari были распространены, и появилось несколько устройств, включая Kempston Interface и ZX Interface 2 , которые были несовместимы друг с другом. Interface 2 превращал нажатия джойстика в нажатия клавиатуры, [53] и, таким образом, не мог генерировать аналоговые сигналы лепестков. Более поздние модели Spectrum, построенные Amstrad - +2, +2A и +3 - включали два встроенных порта джойстика, однако распиновка разъемов была нестандартной. Однокнопочные джойстики Atari можно использовать с простым адаптером для проводки, чтобы преобразовать порты в стандартную распиновку.
BBC Micro имела относительно сложную систему портов, которая была основана на 15-контактном D-разъеме, который поддерживал два аналоговых джойстика, как на Apple II. Они работали на выделенной аналого-цифровой схеме, что делало их превосходными для задач сопряжения, которые можно увидеть, например, в AtariLab . Однако популярность порта Atari была такова, что адаптеры также были доступны для этой системы, сильно различаясь по количеству и типам поддерживаемых ими устройств управления. [54]
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )