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

Скромный световой пистолет

Чтобы мы понимали друг друга, давайте сразу установим пару правил: 

  • Когда я говорю «световой пистолет», я имею в виду пистолеты, которые поставлялись для Famicom и Nintendo Entertainment System. Разные устройства работали по‑разному.

  • Когда я говорю «ЖК‑экран», я имею в виду практически все современные телевизоры. Фактически, одна и та же проблема (это я забегаю вперёд) присуща даже недолговечному поколению широкоэкранных ЭЛТ‑телевизоров высокой чёткости.

НЕВЕРОЯТНО ТОЧНЫЙ СВЕТОВОЙ ВИДЕОПИСТОК.

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

Пистолет Famicom выглядит гораздо более реалистично.
Вот такой красавец, и чем он народу не угодил?

Выбор дизайна пистолетов связан с историей самой Nintendo. Начиная с 1973 года они делали игры со световым оружием (такие как Laser Clay Shooting System), а до этого — детские игрушки.

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

Следует подчеркнуть, что фотодиод — это буквально один бит информации. Всё, что игра может выяснить, — это то, попадает ли в него свет в любой конкретный момент времени.

Давайте для примера рассмотрим игру Hogan's Alley.

Титульный экран «Аллеи Хогана»
Кстати, Аллея Хогана - это тактический учебный комплекс учебной академии ФБР

Игровой режим «А» представляет собой простой тир. Вам даётся три фигуры, и вы должны за доли секунды решить, в какую из трёх стрелять.

Геймплей Hogan's Alley с тремя фигурами
Успели выбрать?

Помните, я говорил о проблеме ЖК-экранов? Так вот! Фотодиод даёт один бит информации; этого недостаточно, чтобы различить трёх персонажей. В конце концов, все они используют пиксели одинакового цвета, а фотодиод вообще ничего не знает о цвете.

Что ж, возможно, вы уже догадались. Фотодиод выдаёт только один бит… за раз. Установив разумное количество кадров, вы можете получить больше информации.

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

Первым идёт «чёрный кадр». Это помогает предотвратить читерство. Фотодиод знает, что ваш пистолет направлен на выключенный телевизор. Затем следует череда кадров, в основном черных, с белыми прямоугольниками‑мишенями. Каждый соответствует одной из фигур на экране. Поскольку всё это происходит очень быстро, ваш пистолет остаётся направленным в то же место, где вы нажали на спусковой крючок.

Почему проверки только две? Фотодиод думает, что понял, в кого я стрелял. И вот в чем проблема; на самом деле я направлял пистолет на ЖК-телевизор; небольшой широкоэкранный монитор, установленный рядом с моим рабочим столом вместе с ЭЛТ, который я использую в качестве тестового устройства.

Проблема в том, что ЭЛТ-телевизор рисует кадры в реальном времени. Nintendo знает, что когда она отрисовывает кадр, он соответствует движущемуся электронному лучу телевизора в реальном времени. Фактически, NESdev утверждает, что сигнал фотодиодов угасает всего за 10 строк сканирования, поэтому игра должна выполнять проверку чаще, чем 60 Гц, на которых обычно работают игры для NES.

Чего Famicom не ожидает, так это того, что экран может запаздывать.

Разрешения и частоты

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

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

Это прекрасно работает для ЭЛТ-телевизора, настроенного на частоту строк 15 кГц и частоту 60 Гц, как у большинства телевизоров стандартной чёткости. Однако это предположение очень быстро разрушается. Мониторы с частотой 60 Гц почти наверняка не смогут работать даже с PAL-видео с той же частотой строк. Например, приведённый ниже монитор с частотой 60 Гц не справляется с сигналом 50 Гц, поступающим с SC-3000.

Монитор III с растром NTSC с треском не отображает видео PAL.

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

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

Вот почему световой пистолет не будет работать на ЖК‑телевизоре. К тому моменту, как на экране появляются белые рамки, игра уже считает, что вы проиграли и пошли попить чайку. Это верно даже для масштабатора Framemeister, который я здесь использую; как следует из его названия, это кадровый буфер, поэтому еще до того, как телевизор увидит сигнал, он оказывается на кадр позади.

Обратите внимание, что даже «Режимы игры» не могут снизить задержку до нуля. Сигнал просто не подходит для вашего телевизора. Его необходимо обработать.

Всё пропало, это конец?

Очевидно нет, иначе, зачем бы я стал писать эту статью? Вы все ещё можете играть в Wild Gunman! Во всяком случае, в режим Game А. Оказывается, в этом режиме не происходит описанного выше танца с бубном. На экране только одна деталь. Программа просто проверяет ваше время. Но имейте в виду: вы всё равно можете проиграть!

Экран потери Дикого Стрелка
Упс

Но что, если вы хотите сыграть в более интересную другую игру со световым пистолетом? Даже другие игровые режимы Wild Gunman не будут работать таким образом.

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

Вы скажете, что для этого придётся проделать огромную работу. Вы правы. Но, к счастью, мне не нужно этого делать — ребята из LCDMOD уже всё сделали. К сожалению, патчи в основном есть только для более ранних игр.

Геймплей Hogan's Alley с тремя фигурами
Ладно, мне нравится Аллея Хогана

Что ещё?

Nintendo, которая уже какое‑то время создавала простые игрушки, знала, как люди читерят. Одним из способов было использование фотодиода, наиболее чувствительного к 15 кГц излучения электронного луча ЭЛТ‑телевизора. Таким образом, в дополнение к вышеупомянутой проверке «чёрного кадра», не срабатывало простое наведение пистолета на лампочку или другой источник света.

Легкий пистолет Томе.  Он не имеет видимого логотипа и изготовлен из оранжево-черного пластика.
Честно говоря, черный пластик выглядит довольно красиво

Конечно, ЖК‑телевизор не излучает 15 кГц. К счастью, решение этой проблемы довольно простое. Воспользуйтесь световым пистолетом стороннего производителя — игра Duck Hunt настолько легендарна, что они до сих пор выпускают такие штуки. Необязательно покупать модель Hyperkin, я использовал фирменную «Tomee», и она также имеет совместимый фотодиод. В нашем случае лучше то, что дешевле.

У комплекта Duck Hunt от Hyperkin есть одна приятная особенность: его специальный адаптер исправляет ПЗУ, позволяя использовать оригинальные картриджи; но никаких особых плюшек именно для нашей задачи у него нет.

Не уверен, что эти современные пистолеты были сделаны для Famicom, где, как я уже отмечал, лёгкий пистолет, похоже, был гораздо менее популярен. (Gumshoe, игра для лёгкого оружия от первого лица от Nintendo, была выпущена только на западе — редкий случай, когда Nintendo игнорирует свой собственный рынок). Лично я использую адаптер от MiSTer Addons; убедитесь, что используется разъём для второго джойстика.

С этим всё. Но ещё нужен способ воспроизводить модифицированные ПЗУ на консоли и выгружать оригинальные ПЗУ, чтобы их можно было исправить.

Это работает само по себе

Именно так! По крайней мере, у меня так и получилось..

Титульный экран «Аллея Хогана» со временем задержки в верхней части экрана.

Обратите внимание, что обычно заставки поддерживаемых игр модифицированы. Добавляется система, определяющую момент нажатия спускового крючка пистолета и время задержки для конкретного телевизора; ведь оно может значительно отличаться от телевизора к телевизору. (Значение 0.0 было получено при запуске на ЭЛТ)

Все эти скриншоты были сделаны с моего композитно-модифицированного (и стерео-модифицированного) Famicom, подключенного через RGB Blaster через Framemeister. Но на самом деле я хотел использовать RetroUSB AVS, который является частью моей системы в гостиной. К счастью, его немного отличающаяся частота кадров не имела никакого значения.

Может ли Sega делать то же, что и Nintendo?

А применимо ли это к Sega Light Phaser? В конце концов, в Master System было очень много игр, где использовался этот световой пистолет, который считался более продвинутым и точным, чем аналог от Nintendo.

Задняя часть коробки Sega Light Phaser, на которой она названа «Чувствительной» и «Сверхточной».
Чувствительный. Заботливый. Даже любящий. Наши исследователи говорят, что Sega Light Phaser — самое нежное периферийное устройство, которое мы когда-либо создавали.

У меня нет пистолета Light Phaser. Но я почти уверен, что с ним не сработает. Итак, Light Phaser состоит из фотодиода и спускового крючка, как и NES Zapper, Famicom Gun или их клоны. Существенное различие заключается в чувствительности фотодиода — по сути, если Zapper'у требуется 10–25 строк сканирования для перехода от «включения» к «выключению» после того, как он перестает видеть свет, то Light Phaser работает достаточно быстро, чтобы сделать это почти мгновенно. Если фотодиод включен, то Phaser видит свет. Если нет, то не видит.

Титульный экран города гангстеров

Вот игра Gangster Town (Город гангстеров). Как я уже сказал, у меня нет Light Phaser. Но вот что интересно: он не использует дополнительных контактов. Его спусковым крючком является также кнопка 1 на джойстике. Таким образом, даже несмотря на то, что я не могу успешно кого-то подстрелить, я вижу, что делает игра, когда пытается определить, выстрелил ли я во что-то.

Эти скриншоты были сделаны на моей французской Sega Master System 2 с использованием Adapteur RVB, на этот раз я не забыл установить частоту 60 Гц.

Игра начинается с функции, которую, как я полагаю, Sega добавила в основном для того, чтобы продемонстрировать, насколько точен Phaser. Вы пишете своё имя, стреляя по буквам. Если бы он работал, как Zapper, для проверки каждой буквы потребовалось бы много кадров.

Сетка букв для ввода вашего имени, чередующаяся с простой белой рамкой.

Light Phaser обходится без прямоугольников; он просто делает экран полностью белым на несколько кадров. Это стало возможным благодаря двум вещам. Во‑первых, более быстрый фотодиод. Но, помимо этого, у Sega Master System есть некоторые функции, которых нет у NES: горизонтальные и вертикальные счетчики.

Игра на Master System может считывать два регистра IO, чтобы точно определить, какой горизонтальный пиксель (HCounter) и какая строка развертки (VCounter) рисуются. Более того, поскольку синхронизация горизонтального луча очень сложна (спросите любого программиста Atari 2600), она фиксирует HCounter. Пока фотодиод активен, HCounter не будет меняться, поэтому он будет выглядеть «застрявшим» в значении первой горизонтальной позиции, в которой пистолет увидел экран. Вертикальная синхронизация более щадящая, поэтому фиксация не нужна.

Конечно, пистолет будет наводить (фотодиод будет «видеть») область на экране, превышающую один пиксель, поэтому необходима некоторая обработка этих сигналов; в официальной документации Sega рекомендуется усреднять их по кадрам, чтобы получить хороший сигнал. Но теоретически это гораздо точнее, чем у Zapper, и не требует белых прямоугольников.

Master System буквально считывает данные в линию с электронным лучом. Это означает, что для работы системы действительно необходим электронный луч, движущийся синхронно с VDP. ЖК-экран просто не даст такой движущейся точки, сколько бы задержек вы ни добавили.

Хотя при написании домашней версии Master System Light Phaser для HD-телевизоров можно было бы вернуться к подходу белых прямоугольников с задержками. Реализовать это будет сложнее, чем на NES, поскольку требуется гораздо более строгая синхронизация. Дело в том, что фотодиод погаснет гораздо раньше, а более медленный фотодиод на Zapper даёт некоторую свободу действий. Вряд ли кто-то будет таким заморачиваться. Придётся городу терпеть своих гангстеров и дальше.

Режим привлечения гангстерского города, в котором гангстеры в костюмах в тонкую полоску маршируют по яркому городу.
Да, Скотт, ты получил ноль очков!

Существуют и более сложные способы воспроизведения игр на современных телевизорах, в том числе LightGunVerter, который обещает поддержку Master System и использует Wiimote в качестве пистолета, а также внутренне подделывает синхронизацию сигналов, чтобы соответствовать ожиданиям консоли. Устройство больше не производится, но это был проект с открытым исходным кодом, так что можно будет на него взглянуть.

Признайтесь, вам тоже захотелось пострелять уточек?:)

Комментарии (10)


  1. Laurens
    17.10.2023 14:21
    +4

    Ух, автор, спасибо. Сразу вспомнил детство: телек с лучевой трубкой и Дэнди с пистолетом и стрельбой по уткам и тарелкам!


  1. agalakhov
    17.10.2023 14:21
    +4

    Собственно, есть еще один вариант, сложный: заменить фотодиод на камеру и микроконтроллер, распознающий изображение и эмулирующий соответствующий сигнал оригинального фотодиода, как если бы он был направлен на ЭЛТ.


    1. Aquahawk
      17.10.2023 14:21
      +3

      что AlexGyver провернул буквально две недели назад https://www.youtube.com/watch?v=OhyvKTrgzp4 правда без эмулятора


      1. iliasam
        17.10.2023 14:21
        +2

        Только там датчик цвета, а не полноценная камера.


    1. Javian
      17.10.2023 14:21

      В 2018м такое было https://habr.com/ru/articles/415717/

      PS немного подробнее почему на ЖК не работает https://habr.com/ru/articles/418201/


    1. Tarson
      17.10.2023 14:21

      Можно сделать на мишени просто мигающий кружочек, допустим на 10 Гц. Глаз его не заметит особо, а фотодиод легко.


    1. HardWrMan
      17.10.2023 14:21

      Был ещё вариант в вимоутом для определения "координаты" нацеливания и схемы синхронизации виртуального фотодиода к видеосигналу. Координата, выдаваемая вимоутом преобразовывалась в номер строки кадра (Y) и позицию в строке кадра (X) и в этом месте компаратор проверял уровень чёрный/белый. Всё отлично работало, но оставался небольшой лаг для человека, ведь он видел картинку из прошлого.


    1. usrsse2
      17.10.2023 14:21
      +2

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


  1. welcme-to-semicndctr-hell
    17.10.2023 14:21

    Можно еще сделать из пистолета аэромышь, можно использовать контроллер от VR.


  1. 413x
    17.10.2023 14:21

    Можно подключить к ПК через плату digispark, вместе с эмулятором FCEUX будет работать https://github.com/r57zone/Zapper-Light-Gun-PC