Pull to refresh

Comments 67

Здесь тоже можно делиться?
Zapper постоянно отсылает в приставку состояние фотодиода или только когда приставка его спросит?

Недавно читал статью про этот пистолет. Там говорилось, что приставка по желанию может опросить датчик и без нажатия на курок. Подозреваю, что сам пистолет является совсем примитивным устройством, в котором стоит кнопка и фотодиод. Всё это напрямую подключается к приставке. А уж опрашивать или нет фотодиод и кнопку, и когда именно это делать решает программа в приставке.
Понятное дело, что постоянно смотреть информацию с фотодиода программе из статьи (игра Утиная охота) не нужно. Да это и не имеет смысла, т.к. для анализа направления пришлось бы постоянно мигать экраном, что было бы неприятным для игрока.
А мне вот запрещали играть в игры пистолетом :) Потому что кинескоп садят.
Не… Кинескоп, согласно тогдашнему мифу, садил сам факт игры, а не пистолет.
Прототипом мифа был реальный факт неравномерного износа люминофора от статичных изображений.
Имхо название кнопок select и start переводить не стоило.
Сильно подозреваю, что универсального решения тут быть не может, т.к. все мониторы будут обладать разным временем задержки. Это потребует индивидуальной калибровки под монитор самостоятельно игроком. Да и всегда ли это время задержки строго одинаково у одного и того же монитора?
UFO just landed and posted this here
В других приставках использовались и более сложные методы, к примеру учитывающие то, что луч (в ЭЛТ-телевизорах) освещает только одну точку в каждый момент времени. Приставка заливала экран белым в момент нажатия и отсчитывала время до засветки фотодиода. Таким образом, направление можно было вычислить более точно, а количество мишеней определялось «радиусом поражения» пистолета. Эта схема, к примеру использовалась в SNES.

habr.com/post/24274
UFO just landed and posted this here
Еще отличия в контроллерах: «игровыми контроллерами Famicom, NES и Dendy, и чем же они отличаются в этом плане.», «Денди — это очень странная смесь NES и Famicom, PAL и NTSC»
Там же в комментариях обсуждают ЖК и световой пистолет.
habr.com/post/260749
image

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

Световой пистолет к Ардуино
habr.com/post/141643
UFO just landed and posted this here
Самый простой вариант — добавить перед началом игры калибровочный код, который будет смотреть задержку (в кадрах) между выдачей видео с консоли и детектом на экране. Однако, могут возникнуть проблемы с «умным» деинтерлейсом в телевизорах. Возможно, придется выводить квадрат не один кадр, а два (телевизор может запросто не отрисовать одиночный черный кадр, а просто «смешает» два соседних кадра; при выдаче двух последовательных кадров он будет обязан их отрисовать).

Для начала стоит проверить видны ли эти два кадра на современном мониторе или нет. Для этого надо взять быструю камеру( или тот же айфон в режиме замедленной сьемки). Если кадры мелькают, можно продолжить исследование и попробовать обмануть цепь детектора эмулятором — черный/белый. Если и это заработает — определяться, где вводить задержки.

Не факт. Картинка с композитного видеовхода всегда прогоняется через деинтерлейсер. Посмотрите, как демы с ZX Spectrum'а, где используется эффект gigascreen (переключение двух экранных областей с частотой 50гц), смотрятся на современных ТВ. Некоторые телики показывают честное мерцание, некоторые просто смешивают два кадра. Третьи принимают такой сигнал как черезстрочный и показывают один кадр на четных, другой — на нечетных строках растра. Поэтому я и написал, что (возможно) придётся квадрат выводить не один кадр («поле» в терминологии черезстрочного сигнала), а два, чтобы телик/монитор это дело отрисовал 100%.
Эээ, был уверен, что речь пойдет о другой утиной охоте (отечественного производства Электроника).
Это где вместо уток квадраты, что ли?
Никаких квадратов, обычные утки. Конкретно эта версия называлась «Электроника ИМ-18».
А, такую тоже помню, там уток надо не стрелять, а ловить (ружьё в роли пылесоса?), как в «Ну, погоди».
А есть ли разница на чб или цветном играешь? А то в моей молодости у нас был черно-белый горизонт, и не стрелял, хотя когда покупали то на цветном работал. Далее (не помню как) выяснилось что работает через футболку о_0 футболку просвечивало и по силуэту(темному пятну) можно было понять где утка. И игра приобрела командный характер один держит футболку перед телевизором, другой стреляет пистолетом, далее выяснилось что также работает через красную плёнку от обложки папки, и наконец наклеяли кусок этой красной обложки на пистолет и он начал стрелять. Но потом подвели порты которые расыпались, а починить не хватало навыков.
Тоже мне нашли проблему.
Играешь на старом ЭЛТ телевизоре и не паришься, и соотношение сторон экрана правильное и красивое размытие пикселей и вообще ламповая картинка.
Ну и аутентичность полная.
Это сейчас легко говорить. Все такие телевизоры когда-нибудь выдохнутся, и снятые с производства детали к ним купить будет всё труднее и труднее. Не скоро, но обязательно наступит момент, когда даже Музей советских игровых автоматов будет вынужден искать запчасти к трубочным мониторам своих экспонатов с миру по нитке, а в некоторые ставить ЖК-панели.
Тогда и будем решать проблемы, по мере их поступления.
Думаю, лет 10 — 20 ещё можно будет найти ЭЛТ телевизоры в рабочем состоянии.
А ещё круче найти кинескопный 60''+ проекционник 4:3 и играть на огромном экране :)
По заголовку сначала было подумалось про какой-то ремейк самой игры.
Типа такого:

Впрочем, это видео шуточное, но я погуглил — таки есть подобная VR-игра, «Duck Season» называется.
А было бы круто!
По самой статье — что-то мне сомнительным показался пассаж про 70 мс задержку на масштабирование. Ведь это, получается, во всех играх вносит лаг, а 70 мс в динамических играх (шутерах, гонках) — довольно чувствительно уже.

И еще про «60 кадров в секунду» — полукадров, вообще-то. Хотя сути это не меняет.
у НЕСа прогрессивная развертка :) Поэтому там это именно кадры, чередования полей нет.
но у телевизора-то чересстрочная.
Просто оба поля выглядят одинаково.
Тогда это было бы 25fps/30fps, а NES (как и остальные консоли) даёт 50/60.
Скорее один прогрессивный кадр отображается в одном поле, а следующий в другом.
Телевизор умеет выводить как чересстрочную 480i/576i (60Hz и 50Hz частотой полей соотв.), так и 240p/288p, когда у вас нет разбиения на четные и нечетные поля, и все поля выводятся на одном и том же месте (т.е. без мерцания, с промежутками между сканлайнами). Попробуйте найти хороший CRT-монитор а-ля Commodore 1084, и попробуйте туда вывести обычный телевизионный сигнал, скажем, с AV-выхода видеокамеры, и с любой игровой консоли. Сразу увидите разницу между прогрессивом (с уменьшенным в 2 раза вертикальным разрешением) и интерлейсом.
С мониторами-то понятно. Но обычный бытовой CRT-телевизор — откуда узнает, надо ли смещать линии для чередования полукадров или нет? В видеосигнале такой информации нет.

Вообще, так и обычное аналоговое ТВ можно назвать «288p» — ведь в передающей трубке развертка тоже чередовалась, так что к моменту смены полукадра изображение могло уже поменяться (в отличие от полупроводниковых матриц, когда сначала изображение засвечивает матрицу, а потом уже матрица опрашивается и полученный кадр передается либо прогрессивно, либо разбивается на поля).

Не вопрос, NES вполне может формировать полукадры полностью независимо, как отдельные кадры — но для телевизора это всё равно полукадры, так что привет, «гребёнка». Но на суть описываемого в статье механизма это не влияет, как я и говорил. Гасится полукадр и маркер тоже вмещается в полукадр, по 17 мс — как и указано.
Эта информация в композитном видеосигнале есть. Поищите информацию про синхросмесь в композитном видеосигнале. Поля, если не ошибаюсь, по итогу оказываются сдвинуты друг относительно друга на полстроки. У NES этого сдвига нет. Поэтому телевизор, можно сказать, сканирует только одно поле. И да, мерцания нет, гребенки нет. «Полукадры» в терминологии чересстрочной развертки становятся полноценными «кадрами» для NES.

Вот серьёзно, возьмите в реале и попробуйте, проведите эксперимент) Если есть Amiga, то там вообще очень наглядно можно это увитеть — там есть выбор, Laced-режимы использовать или «обычные».
Ну где ж я такой реал для экспериментов возьму — у меня и телевизора-то нет, а уж амиги и NES тем более.
Во, в этой статье рис. 2: nice.artip.ru/moskatov-e-osnovy-televideniya. Там наглядно видно отличие полей при чересстрочной развертке. Для «прогрессива» с вдвое меньшим вертикальным разрешением нам достаточно давать синхру как для одного поля. Получите картинку как у NES, Sega, ZX Spectrum и т.д.
А, вот оно как — строчные импульсы сдвигаются на полпериода. Я-то думал, это схема самой развертки сдвиг обеспечивает.
Ещё момент, CRT-композитный монитор (тот же Commodore 1084) ничем от телевизора не отличается — только трубкой (она у коммодоровского моника сильно лучше, чем у любого телевизора) и набором входов (у монитора есть честный TTL и аналоговый RGB + композит).
Есть слухи о том, что в самых ранних версиях игры эту ошибку не исправляли, но пока что никто такого бага продемонстрировать не смог.
Это не зависело от картридджа?
У меня был клон NES под названием сюбор
(похожий, только в белом корпусе)
image
и насколько я помню, тех же уток можно было подстрелить через люстру, но не на всех картриджах. На картридже из коробки эта фича не работала, а на каком-то из типа-9999-игр-на-одном-чипе — срабатывало.
У меня в какой-то из стрелялок (кажется про ковбоев) работало днем от окна.
А на проекторах как? У меня современный китайский клон NES с пистолетом подключен к проектору. Пистолет не работает(
Проектор в качестве отображающего элемента имеет аналогичный цифровому дисплей и лампочку, которая, собственно, и проецирует его на экран. То есть или так же, или никак.
Можно найти кинескопный проектор :)
Проблема давно известна. Как причины так и следствия. Так же известно что простого решения нет, что собственно в статье и написано. Зачем здесь эта статья?
Я видел одну игру с пистолетом на Денди, которая куда хитрее опрашивала пистолет — вначале рисовала черный экран, потом везде белый, потом рисовала белый прямоугольник шириной где-то в 1/6 (по памяти) экрана, высотой в десятка два строк, на том уровне, куда был наведен пистолет, пробегавший по строке в последующих кадрах, и в нем как-то хитро рисовала спрайт выстрела, причем он иногда был и смещен в правильную, как мне казалось, сторону от середины прямоугольника по обеим осям. Вот эту, пожалуй, точно не реанимировать корректно.
К слову, на Atari XE/XL/GS пистолет работает с точностью до пикселя — там действительно идёт синхронизация с развёрткой.
Тоже пытался возродить эту затею иным образом. На c# получая метку с экрана(Через веб камеру, она же есть у всех! Можно было положить начало целому циклу игр). Но скорости обработки при использовании стандартных библиотек не хватило Вопрос на стаке с полным описанием, как оно было
«Все три кадра проходят примерно за полсекунды» Хм… 6fps?
мне кажется это не правда… скорее всего кто то перепутал 50мс и 500 мс
Лучше доработать эмулятор. После каждого нажатия на спусковой крючок эмулятору требуется ставить эмуляцию игры на микропаузу и ожидать чёрного кадра от Zapper в течении максимально допустимой задержки, допустим те же 70 мс.
Если эмулятор дожидается черного кадра, то возобновляет ход игры и она успешно регистрирует черный кадр и следующий за ним.
Если по достижении 70 мс черный кадр не обнаружен, то эмуляция возобновляется по таймауту, но игра уже засчитает срелку промах из-за отсутствия черного кадра.

В RetroArch (libretro) уже добавили разных «игр со временем», как то перемотку и более интересную «Run-Ahead to Reduce Latency», которая по сути выполняет несколько параллельных эмуляций игры с разными комбинациями ввода наперёд и выводит на экран тот вариант, который соответствует нажатиям игрока, таким образом убирая задержку ввода до минимально возможного значения в 1 кадр. Но для борьбы с задержкой Zapper данные функции не подходят.
у меня вот есть вот такая штука: image

и я думаю посмотреть как оно там всё устроенно…
потому что меня сильно смущает высказывание про «зажержку 70мс»… и динамический вывод кадров…
на жк-телевизоре (50lb670v) пистолет работает через раз… у него вроде развертка 200герц…
надо собрать всё в кучу взять осциллограф и посмотреть что происходит…
прошу прошения, не «развертка» а частота обновления 200 Гц
и это както с 16мс не согласуется…
я готов поверить что там просто сбивается синхронизация опроса денди с кадрами и не всегда попадает… но 70мс на масштабирование…
Скорее там задержки на «дорисовку» недостающих кадров. На Филипсе есть игровой режим, помогал в играх вроде guitar hero (игра показывала нулевой лаг в режике калибровки), но я не пробовал этот режим с нинтендой и пистолетом проверять… Надо будет проверить на досуге.
ну так-то это лыжа…
и опять же там вроде как 3д есть, я конечно не уверен как оно работает, но там два канала на глаза для очков, т.е. точно больше 60Гц*2канала… >120Гц оно обязано давать… что опять же никак с 16мс не согласовывается…
У лыжовых матриц частенько поляризационное 3D…
а это в принципе не важно она в любом случае должна отрисовывать кадры. я к чему говорил то, что 16мс там не рядом. и даже ссылку привел конкретно этой матрицы 8мс. что в два раза меньше 16мс.
и, как я уже сказал, пистолет срабатывает но через раз, что и подталкивает меня к мысле что там сбивается синхронизация…
Поляризационное вообще-то работает без увеличения частоты смены кадров — за счет увеличения разрешения матрицы (то есть, с уменьшенным разрешением изображения относительно матрицы) — разная поляризация задается для соседних строк, выводимых одновременно (хотя в подаваемом на вход сигнале, конечно, это два разных кадра).
image
— это обеспечивает технология FPR (Film-type Patterned Retarder)
Что если аналоговый сигнал с выхода усилительного тракта фотодиода (до компаратора) пропустить через микросхему PT2399 (АЦП-буфер-ЦАП)? Длительность задержки буквально регулируется одним резистором. Можно даже переменный поставить, чтобы настраивать под конкретный монитор.
Вообще утиная охота это прям культовая игра. Помню когда-то делал пасхалку, когда по сайту начинали летать утки и в них нужно было стрелять. Без собаки правда, но выходило забавно.
Для тех кому интересно как это выглядело
Ни в коем случае не хочу что-бы сочли за рекламу сайта. Нужно перемотать в самый низ сайта, найти логотип с бобром и быстро по нему кликнуть несколько раз. Далее по сайту нужно искать на странице сайта летающих уток и стрелять.
сайт гуглится по запросу bestmem
думаю стоит отказаться от идеи возродить старое барахло :)
Гемпплей игры и графика довольно примитивны и могут быть созданы на компе без особых сложностей даже рукастыми школьниками, на счет пистолета контроллера можно воспользоваться современными технологиям, например Leap Motion Controller или нечто подобное стоит в китае уже не так и дорого и для подобной задачи сгодится.
ну и потом можно будет говорить что утки «уже не те...» старые были какие то ламповые… приятные )

Долго сказка сказывается, да недолго дело делается. На neslcdmod.com есть патчи для игры на lcd.
В статье, кстати, есть неточности. Zapper действительно реагирует только на ИК диапазон, в отличие от китайских клонов. Поэтому ему нужно менять фотодиод, если есть желание играть на lcd.

Sign up to leave a comment.

Articles