Русский
Русский
English
Статистика
Реклама

Векторный дисплей

Перевод Векторная рисовальная машина 3

05.12.2020 16:17:54 | Автор: admin


Как инженеру мне всегда импонировала русская прагматичная манера именования новых продуктов. Если какой-нибудь западный маркетолог может назвать небольшое игровое устройство на базе ЭЛТ The Vectormatic Score-Master 3000 (Векторматический рекордсмен 3000), то русские склонны использовать более содержательные названия. И поскольку рассматривается третья попытка создания векторной системы отрисовки, то и назвали бы они ее Векторная рисовальная машина 3. Счет инженеры маркетологи (15: 0).

Еще много лет назад меня увлекла идея использования небольшой осциллографической электронно-лучевой трубки для отображения аналоговых часов. Это начинание, конечно, сулило эстетическое удовольствие, но в то же время казалось нелепым. Идея заменить цепочку механических связей на микроконтроллер, управляющий двумя высоковольтными дифференциальными усилителями, и независимый высоковольтный источник питания только, чтобы, грубо говоря, показывать время казалась немного глупой.
Если при этом учесть всю работу по реализации каждого этапа процесса, в результате которого должно получиться достойного вида устройство, и прибавить детальную проработку дизайна, то весь проект уже намекал на свою монументальность.

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

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

Общие сведения


Корпус собран из двух основных частей, изготовленных из плиты МДФ при помощи лазерной резки. В верхней части размещается ЭЛТ-дисплей, БП высокого напряжения, каналы отклонения и соответствующие калибраторы. В нижней части размещен джойстик, кнопки, микроконтроллер и БП низкого напряжения. Сзади расположен разъем питания и гнездо USB mini B. Верхний сегмент корпуса одевается на нижний, и вся эта конструкция фиксируется плоской панелью управления, на которой находится джойстик и кнопки.

ЭЛТ


Используемая ЭЛТ это D7-16G, которая имеет чуть больше 76мм в диаметре, 160мм в длину и работает от аккумулятора. Три таких ЭЛТ я купил много лет назад как раз для подобных проектов.


ЭЛТ D7-16G

В ней используется 11-контактный коннектор типа 30-232, найти который весьма проблематично. После недолгих раздумий у меня возникла идея собрать собственный, вырезав заготовку лазером из листа акрила и подобрав подходящие контактные штырьки от цоколя ламповой панели.


Сборный коннектор 30-232

Для этого я разработал в Autocketch две составные заготовки таким образом, чтобы контакты электронно-лучевой трубки располагались вдоль контура D левой детали. Затем каждая эта деталь была вырезана из 3мм акрилового листа и склеена. Контакты я извлек из новой ламповой панели B9A, вставил в склеенную заготовку и слегка загнул для фиксации, после чего припаял к их выводам провода, заизолировав соединения термоусадкой.

Высоковольтный блок питания


Этот блок основан на импульсном стабилизаторе SG3525, запускающем двухтактный каскад N-FET, сопровождаемый небольшим ферритовым трансформатором со вторичными катушками высокого и низкого напряжения. Высоковольтная сторона проходит через положительный полуволновой выпрямитель, генерируя около 240В постоянного тока, после чего понижается параллельным стабилизатором до 210В. Выпрямленное напряжение подается на усилители отклонения и потребляет около 7мА. Напряжение вторичной обмотки ВН также удваивается, генерируя примерно -600В, 1мА, для смещения луча электронной пушки. Балансировка любого постоянного тока вторичной обмотки, способного насыщать сердечник или вызывать его магнитное смещение, реализуется положительными и отрицательными выпрямителями.

Структура трансформатора начинается с первичной обмотки в середине, после которой идет заземленное начало вторичной обмотки ВН, заканчивающейся выводом под анодным напряжением. В завершении идет обмотка низкого напряжения, которая используется для накала спирали электронно-лучевой трубки. Такой порядок выбран, чтобы избежать пробоя между обмотками высокого и низкого напряжения. Проговорив все это, я задумался о данной топологии и, пожалуй, найду время для ее доработки.


Блок ВН и устройство отклонения

Я так давно не использовал ферритовый броневой сердечник, что совершенно забыл о его электропроводности. Это привело к возникновению электронных дуг между верхней частью вторичной обмотки и заземленным ферритом, в результате чего из строя вышло несколько пар транзисторных драйверов первичной стороны STN3NF06L. В ходе выяснения причины я заменил их на пару более устойчивых TO252 (100A/8m), способных выдержать даже подачу 12В, 1А и запустить трансформатор с короткозамкнутыми витками.

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

Усилитель отклонения


Проектирование этой подсистемы оказалось непростой задачей, в связи с чем много времени ушло на работу с симулятором SPICE, который помог понять все нюансы.

Вот краткая спецификация:
несимметричный вход 0..5В
дифференциальный выход с размахом >80В на каждое плечо
при 210В ток потребления менее 2мА
возможность питания от 12В
отсутствие отрицательных шин
полоса пропускания >500кГц со сдвигом фазы менее 5 по отношению к расчетной

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

Здесь в качестве улучшения можно применить термостабилизацию путем термоскрепления выходных устройств (если учесть, что сейчас это SOT-233, то задача не из легких). В качестве альтернативы, конечно же, можно перейти на их монтирующиеся в отверстия аналоги, что существенно упростит задачу.

Было бы неплохо использовать схему, в которой фазовый сдвиг и усиление оказались бы менее зависимыми. Но текущий простой вариант, итак, преодолел многие сложные технические преграды, поэтому дополнительное требование стало бы уже чересчур обременительным.

Плата контроллера и ЦАП


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

Очевидными кандидатами были ATmega328P и ST micro STM32F103C8T6. В итоге был выбран первый исключительно за более широкие возможности и (некогда) популярность. В процессе сборки платы на удивление выяснилось, что мной по случайности был куплен контроллер версии B, но об этом чуть позже.

В целом его плата проста и включает в себя USB-преобразователь FT232RL, двухканальный 8-битный ЦАП, интерфейс для джойстика и кнопок, дополнительный интерфейс I2C и стабилизатор 5В. Можно было использовать Arduino Nano с материнской платой, но текущее решение отличалось простотой и удобством подключения.


Плата контроллера и ЦАП

Системные требования подразумевают работу с одной шиной, что ограничивает выбор ЦАП. Изначально я взял TLC7528, который, вроде как, имеет токовый выход, но при более подробном изучении оказалось, что он может быть настроен на работу в режиме выхода напряжения. В сочетании с операционными усилителями TSH82 это оказалось плохим вариантом, так как искажение даже на минимальных уровнях сигнала составляло несколько процентов. Решил я эту проблему, заменой ЦАПа на AD7302, в котором реализовано два выхода напряжения и время установления 2мкс.


Искажение в несколько процентов может все испортить

Оглядываясь назад, можно предположить, что искажение при использовании TLC7528 могло быть связано с ограниченным входным синфазным диапазоном связанных с ним TSH82. Это легко проверить, удалив эти операционные усилители, и нарисовав круг Лиссажу на осциллографе непосредственно с помощью щупов.

В итоге ряд конструктивных ошибок подтолкнули меня к пересборке этой, казалось бы, простой платы: выбор ЦАП, изначальное использование FT232RL и отсутствие привязки соответствующего вывода TST к земле. Так же я совершил ошибку в схеме подключения USB-разъёма на плате (перепутал сигнальные провода), которую временно исправил с помощью самодельного кабеля.

Новый микроконтроллер, набор инструментов и загрузчик


Как я уже говорил, на удивление обнаружилось, что заказанные мной ранее ATmega328P непостижимым образом оказались менее популярной разновидностью B. Они полностью бинарно-совместимы со своими младшими собратьями за исключением лишь сигнатуры чипа. При этом в более новом варианте есть ряд полезных дополнительных функций, включая поддержку второго USART.

Arduino предоставляет новейший набор инструментов, который, как ни странно, не был доступен на сайте Atmel. Эти инструменты пришлось извлечь и собрать в портативный пакет, в связи с чем они больше не опирались на фреймворк Arduino. После я обновил соответствующий makefile проекта, чтобы он ссылался на новый контроллер и инструменты.

С учетом совместимости чипов, стандартный загрузчик Arduino был запрограммирован на более новом при помощи относительно небольшой AVR Studio 4 IDE, которую я выбрал за простоту интерфейса. XML-файл описания нового контроллера нужно было создать на основе старой версии. В итоге основными отличиями стали его номер и соответствующая сигнатура.

Для прошивки проекта использовалась утилита make и, соответственно, файл makefile. При таком подходе набор инструментов занял всего около 30Мб, а не сотни, как в случае с использованием современных интегрированных IDE.


Реальные программисты не используют IDE

Прошивка


Система спроектирована рисовать около 10К векторных пар в секунду. При скорости обновления в 50Гц это означает возможность отрисовки 200 векторов. После каждых 200 векторов (20мс) передний план получает сигнал для обновления их списка, чтобы игра могла выполняться в достаточно плавном режиме.

Несколько процессов системы требуют возможности вращения векторов. При этом, несмотря на очевидную резонность использования десятичного значения в диапазоне 0..359 градусов, такое решение потребует задействовать U16 и окажется излишне громоздким. После недолгих размышлений я решил, что будет уместным обработать максимально возможный объем данных с помощью S8 (от +127 до 128). Это также подойдет для представления координат X/Y (с учетом применения 8-битного ЦАП) для выражения угла (примерно 180 градусов).

Обновление экрана осуществляется посредством прерывания таймера и является единственным способом управления ЦАПами. Векторы считываются из буфера ping или pong и повторяются до момента переключения буфера задачей переднего плана. Каждый буфер начинается со счетчика U8 и продолжается до следующей доступной точки записи, сопровождаемой точкой чтения. После этого он содержит список значений X и Y, сохраненных в формате U8.

Направление космического корабля изменяется движением джойстика влево/вправо. Сам корабль отображается в виде четырех точек а-ля с шеврона из сериала Стар Трек, вращающихся вокруг своего центра. Для каждого вектора требуется поиск sin и cos, 4 операции умножения и две сложения. Всего получается 37 вычислений за одно вращение, что в целом составляет примерно 200 инструкций. Космический корабль всегда будет отрисовываться первым, и первой векторной парой всегда будет его носовая часть, поэтому в выходном буфере эта векторная пара будет стартовой точкой для пуска ракет.

Запуск ракет осуществляется нажатием соответствующей кнопки. Они вылетают из носовой части корабля и продолжают движение по его текущему курсу. Уничтожение ракеты, которых одновременно может быть запущено не более 16, происходит при столкновении с астероидом или при достижении ей видимого радиуса космоса. Данная модель полета основана на рисовании линий между носом корабля и границей видимого радиуса, где дельта X и дельта Y вычисляются при запуске. Дельта X/Y это фиксированная точка 8.8, так же, как и скорость.


Корабль в центре, астероид внизу

Объекты астероидов появляются в случайном месте радиуса и летят по нему прямо под углом между 80 и 140 градусами. При их появлении генерируется случайная стартовая и конечная позиции, которые затем преобразуются в декартовы координаты, и вопрос о прямой линии решается во многом аналогично ситуации с ракетами.

При столкновении ракеты с астероидом, обе сущности уничтожаются, и текущий счетчик очков увеличивается. Численные объекты дисплея берутся из 7-сегментной таблицы поиска.

Весь тяжелый процесс игры выполняется при помощи функции вращения, которая используется для добавления входного объекта (астероид, космический корабль, 7-сегментное значение и т.д.) в выходной буфер. Помимо этого, она позволяет входному объекту вращаться, а также применять смещение по осям X и Y. При этом ничто не мешает добавить во входной буфер взвод инопланетных кораблей в составе 2х2, после чего взять их как группу и развернуть перед отрисовкой.

Механическая часть


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


Первичный дизайн

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


Комплект: модуль ЭЛТ, нижний сегмент корпуса и крышка передней панели

ЭЛТ зафиксирована при помощи круглых кронштейнов из МДФ, приклеенных к верхней части отсека. Изнутри эти кронштейны обшиты эластичным поролоном на клейкой основе.


Пустой ЭЛТ-фронт с фиксатором корпуса и разметкой под печатную плату

По фотографиям сложно заметить, что панель управления с джойстиком и кнопками надежно фиксирует ЭЛТ-модуль, препятствуя его обратному выдвижению.

Пакеты, использованные для проектирования корпуса


Для начального проектирования верхнего и нижнего сегментов корпуса использовался редактор Inkscape с расширением The Laser Cut Box. В качестве связки этих сегментов выступили только зубчатые вырезы. Итоговую заготовку из Inkscape я просто скопировал и вставил в Autosketch, в котором произвел все необходимые доработки.

Для нарезки заготовок из МДФ я использовал лазерный резак 70Вт. Рабочий цикл оказался достаточно быстрым, что позволило параллельно успеть опробовать альтернативные конструкторские идеи.

Заключение


Как я и рассчитывал, на этом проекте мне удалось многому научиться, поскольку все, кроме разве что встроенного микроконтроллера, оказалось за гранью моего обывательского опыта.

Очевидно, что на базе этого устройства отрисовки векторов можно разработать много разных игр и приложений. Пока что я однозначно хочу добавить на плату модуль синхронизации (через I2C), реализовав свой давний замысел по отображению аналоговых часов. Остальные возможные доработки будут вноситься постепенно.

Неприличный, конечно, получился промах со схемой USB mini B и первой безуспешной попыткой использовать ЦАП с токовым выходом в режиме выхода напряжения. Но в остальном я даже не знаю, что бы еще исправил в случае повторной сборки такого агрегата.

В текущем проекте были достигнуты все намеченные цели, включая расширение кругозора, в процессе чего, как это часто бывает, не обошлось без сюрпризов.

Связаться с автором Mark Atherton можно по почте markaren1@xtra.co.nz



Подробнее..

Перевод Векторные игры на 32с3

17.04.2021 12:09:16 | Автор: admin

Статья раскрывает тему нашего выступления на 32-м Всемирном конгрессе хакеров (32с3), посвященного ретро-геймингу и работе с эмулятором игровых автоматов (MAME) на XY-дисплеях. В нем освещается результат моего сотрудничества с еще одним членом NYC Resistor, цифровым дизайнером Адель Лин, которая увлекается разработкой игр и игровых пространств. При желании можно посмотреть получасовое видео выступления онлайн.

История векторной графики


Аналоговые компьютеры




В самых ранних аналоговых компьютерах для вывода результатов вычислений использовались осциллографы или плоттеры. На фото выше EAI680 отображает на своем XY-мониторе Tektronix результат дифференциального уравнения, моделирующего демпфированный маятник.


Первая видеоигра, Tennis for Two 1958 года, была разработана на похожем аналоговом компьютере и выводилась на осциллограф. Отскакивание мяча было реализовано с помощью другого дифференциального уравнения, очень похожего на приведенное в предыдущем примере.



В Tennis for two нет исходного кода, так как создавалась игра исключительно аппаратно. Здесь использовались реле для управления направлением мяча, блоки сравнения, которые обнаруживали касание мячом земли или сетки, операционные усилители, которые реализовывали дифференциальное уравнение, резисторы, имитировавшие притяжение и т.д.



Адель в сотрудничестве с продюсером Жаном Анджелом, студией игрового дизайна Sozen Eyes и физиком Питером Такачем работала над современной реконструкцией этого устройства для Silicon City. Ввиду необходимости поддержания работоспособности инсталляции без обслуживания на все время пятимесячной выставки в музее NYHC они использовали монитор 4К и эмулировали игру. Дело в том, что во время демонстрации Tennis for Two в Брукхэвене работал штат техников, которые заменяли выходившие из строя детали, чего в NYHC хотели избежать.

Цифровые компьютеры




Spacewar! 1962 года стала одной из первых цифровых видеоигр, в которой на XY-дисплее компьютера PDP-1 отображались корабли игроков, их орудия, а также звездное поле. Управление осуществлялось с помощью рычагов и кнопок на передней панели системы, хотя зачастую во избежание их износа для этого собирались отдельные блоки управления.



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

Почему векторные игры?


В 1978 году, когда для игры Lunar Lander был разработан цифровой генератор векторов, память для фреймбуферов в видеоиграх обходилась очень дорого. Двум буферам размером 512х512х4 требовалось 128 запоминающих устройств общей стоимостью $614. Джед Марголин, инженер Atari.

Именно поэтому во времена доминирования растровых дисплеев был смысл затратить все эти усилия, чтобы добиться отрисовки векторов. Стоимость создания растровой версии Asteroids с фреймбуфером, способным поддерживать разрешение экрана 1024х1024 составила бы тысячи долларов. Для этого также необходим дисплей, который справился бы с отрисовкой столь огромного количества вертикальных линий: большинство ЭЛТ же разрабатывались для телевидения, и обеспечивали разрешение всего в пару сотен тысяч линий.


Star Wars на Acorn Electron


Star Wars на векторном дисплее

Сравните угловатое пиксельное растровое изображение Starwars с его векторной версией. Поистине завораживает, насколько больше деталей векторные линии могут демонстрировать, и как четко они представляют круг звезды смерти.


Star Wars на Atari 2600


Star Wars на векторном дисплее

Помимо этого, векторы упрощают 3D-анимацию. Выше представлено сравнение растровой версии игры, пытающейся сымитировать трехмерный мир, с масштабированной и повернутой 3D моделью Tie-Fighter. В какой вариант вы бы предпочли сыграть?

Устройства генерации векторов


Как происходит отрисовка




В векторном дисплее луч не рисует горизонтальные линии сканирования, как в условной ЭЛТ. Вместо этого он может быть направлен в произвольную область экрана для создания яркой точки в конкретном месте. В векторных дисплеях без запоминания яркость точки определяется продолжительностью направления на нее луча. Варьируя входы X и Y, можно рисовать линии или другие фигуры. С помощью быстрого перемещения или изменения яркости (Z) входного сигнала можно отображать прерывистые линии. В данном случае я отключил вход Z, чтобы можно было увидеть последовательность отрисовки объектов на экране. В показанной здесь игре Lunar Lander используется цифровой генератор векторов, непосредственно управляющий лучом.



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

Аналоговая и цифровая генерация


При написании этого раздела я опирался на руководство Джеда Марголина по векторным дисплеям.


Схема цифровой генерации векторов


Схема аналоговой генерации векторов

Один из способов генерации векторов это использование цифро-аналогового преобразователя (ЦАП), напрямую управляющего входами X и Y дисплея. Это и есть цифровой генератор векторов, который использовался в ранних играх вроде Asteroids и Lunar Lander. В нем задействовались 10-битные ЦАП и операционный усилитель, настроенный в качестве буфера, но при этом требовалось, чтобы ЦПУ большую часть времени выполнял обновление входных сигналов ЦАП, а разрешение ограничивалось до приблизительно 1024х768 точек.

Другая техника была разработана для более поздних игр вроде Starwars. В аналоговом генераторе векторов используется операционный усилитель, настроенный в качестве интегратора путем добавления конденсатора в контур обратной связи. Это означает, что на вход в ЦАП подается наклон линии, которую нужно сгенерировать, а аналоговая природа операционного усилителя обеспечивает отрисовку ее в бесконечно гладком виде.



На современном оборудовании можно легко генерировать 12-битные линии, которые намного превышают разрешение небольших векторных дисплеев. При этом можно также задействовать механизмы прямого доступа к памяти (ПДП) на микроконтроллерах, чтобы разгрузить процесс отправки данных в ЦАП. На картинке выше показанпрототип моей открытой для использования платы v.st. Ее можно без проблем собрать также на макетной плате для собственных экспериментов.



И раз уж теперь нам доступны гораздо большие вычислительные мощности ЦПУ, чем во времена создания всех этих игр, я также пропатчил код генерации векторов для их упорядочивания с целью снизить общее время перемещения. Это дает большую разницу на векторных дисплеях с низкой пропускной способностью.

Аппаратная часть векторного дисплея


Осциллограф




Современные цифровые осциллографы не очень хорошо подходят для отображения данных. Их ЖК-дисплеи могут эмулировать послесвечение, но обычно обладают всего лишь 8-битным АЦП и очень низким разрешением. Они по-прежнему сверхполезны для общего измерения сигнала, но не в интересующем нас случае.



Вместо этого можно отправиться на eBay или craiglist и найти аналоговый ЭЛТ-осциллограф с режимом X-Y, который обойдется в районе $50 Подойдет любой вариант с шириной полосы в 5МГц и более все равно ЦАПы на платах v.st могут выдавать частоту максимум 2МГц.

Запоминающие дисплеи




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

Вектороскоп




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

Консоли Vectrex



Консоль Vectrex


Электроника Vectrex

Домашняя игровая консоль Vectrex оборудована приятным черно-белым экраном с высокой резкостью. Можно без проблем отсоединить материнскую плату от аналогового драйвера ЭЛТ и вывести провода из корпуса для подключения платы v.st.



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

Лазерные проекторы




Также можно использовать лазерный проектор, вот только результат получится не лучшего качества. Физические зеркала обладают определенной долей инерции, и на включение/выключение луча требуется время. В результате частота обновления падает, и изображение получается мерцающим. Некоторые специализированные игры могут работать с очень быстрыми (45-60 Kpps) гальваническими сканерами, но почти все аркады требуют отображения слишком большого количества векторов.



Проект LazyMame добился неплохих успехов, но я не могу найти никаких подробностей или исходного кода уже с 2008 года. Позже в 2013 возник проект OpenLase-Mame, который с тех пор молчит. Помимо этого, другие разработчики пробовали создавать новые лазерные игры с помощью кастомного плагина Unity. Некоторые преуспели.

MAME



MAME это акроним от Multiple Arcade Machine Emulator, означающего эмулятор множества аркадных автоматов, и его имя себя вполне оправдывает он способен эмулировать тысячи игр и автоматов, включая практически все когда-либо созданные векторные аркады.

Эмуляция векторных дисплеев



Фактическое свечение на векторном дисплее


Эмулированное векторное свечение

Эффект свечения, создаваемый яркими векторными линиями, относится к одной из излюбленных игроками особенностей. В MAME есть поддержка шейдеров HLSL, которые размывают яркие линии и создают подобие этого эффекта. Сверху изображен реальный дисплей
Vectrex, а снизу эмуляция на MAME.

Патчи для подключения к дисплею




К сожалению, мой патч для MAME, который добавлял поддержку экспорта векторов, был закрыт как неприемлемо грязный способ достижения желаемого результата. Так что вам потребуется клонировать мое дерево и следовать инструкциям по созданию векторного MAME. Основная часть изменений находится в src/emu/video/vector.cpp и опирается на усекаемые окна, которые MAME использует для ограничения векторов областью экрана.

Патчи для Raspberry Pi




Я также портировал изменения в голую сборку MAME4AllPi для Raspberry Pi. Инструкции для векторного MAME на Pi аналогичны. Нужно будет клонировать дерево и вшить его в Pi. К сожалению, здесь имеется ряд проблем с джойстиком, которые еще предстоит исправить.

Играем



Вы можете поиграть в одну из оригинальных игр, Space Wars, вышедшую в 1977 году


Asteroids (1979) тоже всегда славилась популярностью и была одной из самых кассовых игр своего времени!


Lunar Lander на вектороскопе


Tempest на вектороскопе

Или, быть может, вам больше по душе придутся Lunar Lander (1979) и Tempest (1980).


Сэмулировать можно огромное число векторных игр, включая весь список Atari


Так много малоизвестных игр, что все и не перечислишь, но я собрал список проектов Vectrex, включив в него также векторные аркады, упомянутые в Википедии

Кастомизация


Пользовательские устройства ввода



Консоль Robotron собственной сборки


Robotron

Как только вы подключите векторный дисплей к MAME, вам наверняка захочется внести свои доработки. Можно без проблем собрать собственные USB HID-устройства на основе предлагаемых Adafruit аркадных джойстиков, кнопок и даже монетоприемников.

Примечание ред.: доступ к ресурсу Adafruit возможен только через VPN.

Креативное программирование с векторами




Если же вы устали от игр, то всегда можно превратить дисплей в вектороскопические часы. В Teensy 3 есть сквозные отверстия для кварцевого резонатора 32.768КГц и резервная батарея, позволяющая поддерживать точность отображаемого времени.


Можно писать игры, которые будут выполняться непосредственно на Teensy, как мой клон Asteroids, Space Rocks, или создавать какие-нибудь арт-проекты.


Некоторые энтузиасты реализуют поистине грандиозные проекты vec9 стал первой векторной аркадой за тридцать лет, реализованной в кастомном автомате с рычагом управления, как в реальном танке.






Мы создали простую библиотеку на Processing, чтобы показать, как пишутся программы, взаимодействующие с такими дисплеями. Образец кода лежит в репозитории, а также портирован на ProcessingJS в виде демо-заставок Swarm и Random Walk.


Дополнительную информацию по платам можно найти на MAME, Vectrex и Tek 1720.



Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru