Как «посадить кинескоп» на ЖК-телевизоре

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

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

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

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

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

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

Что ещё?

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

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

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

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

Как «посадить кинескоп» на ЖК-телевизоре Гаджеты, Dendy, Nintendo, Видео, Вертикальное видео, Длиннопост

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

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

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

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