The NES was the most popular game console of its time, and rightfully so. From the minds of Nintendo engineers, programmers and audio experts came some of the best video games ever made. Unfortunately, some of these great games cannot be played on your
Raspberry Pifavorite emulator due to the incompatibility of the Zapper gun and modern digital monitors. None of us can forget the fun that Duckhunt brought. The game came as standard issue with all NES systems, so we’ve all played it. But its nostalgia is currently entombed by a technological quirk that has yet to be solved.From one hacker to another – this can no longer be tolerated. First, we’re going to learn how the Zapper works and why it doesn’t work with digital displays. Then we’re going to fix it.
Even back in the day, Duck Hunt got old to me after a few minutes. Plus, you couldn’t shoot that damn dog
Either I was a horrible shot, or the zapper just was WAY too inaccurate.
I am willing to bet that DuckHunt with a touchscreen would be game over for the ducks (and the dog) very soon!
From the article:
I don’t know if we had one of the rumored buggy games or if it was just luck, but when we were kids I distinctly remember my little brother discovering that if he held the gun with the muzzle pointed down, then shot at a bright lamp when the ducks were on the screen, it would score a hit. It wouldn’t work if he pointed the gun at the screen, then over to the lamp to fire.
Still couldn’t shoot that damn dog, though.
There most definitely are versions of the game with this “bug”. I used to play it while reading books, pointing the gun off toward the 60 watt bare bulb over my door, and just half-click the trigger to score a hit. After level 30 or so, where the ducks are onscreen for less than a second, it got even more boring than I thought possible, and I gave up. Tried a few times, but just could not be bothered to play past level 30 or so, even with this “cheat”.
Playing with a black’n white TV also helped with the accuracy. I thought I was hot-shit until I graduated from high school and was given a colour TV as a present. Then I couldn’t get past level 10 without cheating.
Still have the NES, zapper, and Duck Hunt at home. We pull it out every 5 years or so, and play through a few games. We have a Toshiba 24″ CRT for use with the NES, SuperNES, and Wii. Weighs a friggin’ tonne, but works like a champ.
I have no idea which “version” we played at a friend’s house, but if we backed up far enough from the TV, every single shot would register as a hit regardless of where it was pointing on the TV.
Anyways, since they needed to modify the gun to work with LCDs, and the digital delay means the NES game timing is fundamentally off, I’d say it probably makes sense to use a wii controller or one of the more accurate wireless mouse solutions. It seems to be the most straightforward approach to me. The emulator itself would see it as a regular mouse and would emulate the zapper’s input signal on the correct frame. That’s probably cheating for nostalgic purposes, however anyone using an emulator is a bit hypocritical anyways when it comes to authenticity
Apparently this “wii mote” idea was already suggested in the comments at the site.
Another idea mentioned is to have a high speed camera and use software (ie CV) to figure out where the gun is pointing in real time so that by the time the trigger is pulled we already know even before the blocks are displayed. It seems more complicated than a wireless mouse, but why not. It is kind of what the wiimote does internally to calibrate the gyroscopes anyways.
Perhaps there is a more novel solution for using the same detection technique as the original hardware and without fixing the ROM or “pausing” the game every shot to correct the timing.
Using an emulator, when a shot is fired, we can emulate the code paths for all hypothetical shots in parallel in the background (ie “fork” the emulation). The foreground process will display the boxes as usual but will not detect any input in time, however the forks will continue to maintain correct game state as though those shots had been taken. One frame later (or however long the LCD digital render delay is) the physical controller will capture the target boxes on the LCD and the emulator will be able to immediately select correct branch of emulation and discard the others(*).
In theory this technique could be used for arbitrary digital delays on the LCD side without touching the ROM or knowing anything about the game (although obviously the longer the gap, the greater the divergence between branches). This could be better than pausing/slowing down timers (which could impact sounds/music/graphics/etc).
The similarities with quantum uncertainly and collapsing wave functions is just stunning
So basically Duck Hunt and the Zapper would work on our current TVs if they sucked less (faster and better contrast) ?
What about OLED TVs ?
Edited 2015-11-18 09:15 UTC
OLED screens still need to process and digitise the signal to display it, so it’s probably got a similar lag to LCDs, and any display technology other than analogue CRT.
Never had a Nintendo game system, or any system for that matter until the xbox 360, so can’t speak for bugs in those. Duck Hunt was alwasy fun in the late 70’s though in the arcades, along with Donkey Kong, etc.
I am going to guess this will be the same issue however as the Timex Data Link watch. That synched to your computer through the CRT, as the CRT sent a series of scan codes to an “eye” on the watch. That functionality would not work with any flat panel, and only with a CRT. Being an old school electronics kind of guy, I am going to hazard a guess the reason the gun doesn’t work with any flat panel will be due to the frequency of light emitted by the gun.
Of course this could be way off base, however off the top of my head is one of the few things that make sense, and would apply to both of the cases above.
DrillSgt,
I think you meant the light captured by the gun? Anyways, the article commenters say that the sensor does pick up the light from an LCD, the problem is entirely with timing delay caused by digital processing. One commenter said that the gun worked as-is on an LCD monitor that had an option for game mode where it disabled most of the digital processing.
I’m not familiar with LCD digital rendering algorithms but my guess is that it would normally try to capture both interlaced fields of a frame, then proceed to update the pixels on the screen before capturing the next field and doing it again. Displaying interlaced fields on an LCD probably doesn’t have the same effect it does on a CRT, also at a physical level the pixel geometries are quite different:
https://upload.wikimedia.org/wikipedia/commons/4/4d/Pixel_geometry_0…
Compensating for artifacts caused by these differences is no doubt going to delay the “direct to screen” approach used by analog CRTs. It could probably be optimized a bit to work at the scanline level rather than at the frame/field level, but it isn’t immediately clear that the complexity is justified.
Edited 2015-11-18 15:04 UTC
You would be correct, I definitely misstated that. As well my assumption was totally off base.
Its not. The article explains its due to modern Displays having a greater latency than CRTs. And the game relies on precise timing between the trigger and the display.
Yes, I see that now. My mistake on it. My mind just went to jumping…
They need something like a screen overlay that picks up a coded infrared signal to discern where it strikes the screen…
OR
A camera system with a system that detects the 3-dimensional aim of the controller relative to complicated details like camera position, screen position, screen display size, and controller position.
The former is more hardware dependent while the latter software.