I'm told that the original Duck Hunt (NES) works fine on all CRT screens, but fails to register successful hits on a plasma or LCD screen. Why is this? Is there a fix for it?
I disagree with both of the contributed answers to this question. They are right but for the wrong reasons. I believe LCDs don't work because of a technical limitation, but this talk about electron beams and "retrace lines" doesn't make sense to someone who understands the technology: a properly contrasted white box is all the light gun looks for. The photo-diode inside the gun can't tell if it's seeing white light from lit phosphors or a properly backlit LCD.
Please understand that my response is founded on my studies in computer engineering (specializing in embedded systems design) at a credible institution, where, out of many projects, I had a particularly pertinent project writing the VHDL code to drive images in frame buffers directly to the raw data pins with horizontal/vertical/blanking timing signals of an LCD display. My response is also based on knowledge of how Duck Hunt and the light gun interact. However the following is mostly based on my observation in getting Duck Hunt working on a recent-model Samsung LCD TV.
This problem is almost certainly to do with timing and image processing. Brightness may play a factor in some people's situation (early LCDs had relatively poor contrast ratios), however the pixel transition time and contrast ratio of the Samsung LCD I used were good enough to occasionally register a hit. The fact that it registered at all may be a miracle but I can assure you it has nothing to do with CRT electron beams or retracing.
Why I believe this to be a latency issue is because of a strange anomaly where, when I could finally get the title screen to register a hit, I'd either end up in the single, double-duck or double-clay pigeon mode. When I'd fire at a target there'd be a roughly 50/50 chance that the white boxes would display at all, and I could never hit a duck in the single-duck game. However in the double-duck/pigeon game, when I would see the white squares and a hit would be registered, the wrong target would get hit.
From what I understand about Duck Hunt, to allow for hits on multiple targets to be distinguished, the game would first blank the screen and show the square for "target 1" for a few milliseconds (not sure on timing), then clear that square and show the square for "target 2" for a few milliseconds. CRT TVs would have no latency in showing the image to the screen and therefore work great for Duck Hunt where the times that white squares were on the screen were timed precisely by the game. What I believe I experienced was that the light gun would see the square for "target 2" when I aimed at "target 1" because of the latency in the image processing algorithm the TV was using to up-convert the image. When I'd fire, the game thought it saw the light from "target 1", because that's the square being shown on the TV at the time, when the target I shot at on the TV was "target 2".
I have a number of tests I want to try and run to confirm if this theory is correct, but if this is the case, TV manufacturers could fix this problem by speeding up the processing of the image. So all my classic-gaming friends, all hope is not lost and as technology gets better we may once again be able to use our NES zapper with future TVs.
I did quite some tests with the Sega Light Phaser (Master System's light gun), which is pretty much the same technology.
There are two issues involved:
One is indeed the timing. You would need to have a very fast TV with a game-mode so the delay wouldn't affect the results
The second and more important is that, in order to be cheap, the light gun was made using tradicional home appliance electronic components. It uses the same kind of photoreceptor used on TVs and VCRs to receive the IR light from the remote. This means, obviously, that it the light guns can only "see" IR light. Since the CRTs emitted IR light alongside with the visible light, it worked pretty fine. But LCDs emit zero IR light, and this is why the light gun just wouldn't capable to detect the targets on duck hunt even on a hypothetically zero-delay LCD TV. Any hit detected when testing on a LCD TV was much probably caused by IR light reflecting from from some other source, like a fluorescent lamp.
If anyone want to replicate the rest, just connect light gun to an arduino and check the results. The light gun will be able to read white areas on a CRT TV, light emitted from infrared remotes, light from fluorescent lamps. But it will not detect any light coming from a white area in a LCD monitor.
So, one requirement to fix the problem would be to replace the photoreceptor with another that's able to receive visible light. But that would also require adjustments to the circuit, since the logic levels are very different between different types of receptors. Only a skilled electronic engineer would be able to do that.
The third important factor is the detection method used by the video-game. Software-based detection methods like the NES and MSX had can be fixed because it's frame-based. OTOH, hardware based solutions like the SMS, Megadrive and SNES were more precise and indeed rely on the position of the beam to detect the coordinates. This would only work on raster based TVs/monitors, but LCDs and Plasmas are frame-based. In this case, it's just not possible to fix the issue, because the delay requirements are much smaller, close to zero.
Myself ( author of the Bliss-box usb adapter) and a friend are working on a solutions. We are starting with the nes gun and Nestopia along with a few more emulators. The biggest hurtle right now are the Emulators, my friend has made Nintendulator work and we are starting to test now. He is going to get a CRT to make some observations. I have the tools for timing the events and have tested with a light bulb. The gun does trigger the light sensor ( hit ) ms's after the trigger pull. I have a logic analyzer so I can get the exact timing down. If you want to be part of the testing drop by here.