duck hunt is kind of a bad example to use in this case. it doesn't figure out positioning this way. in fact, it doesn't figure positioning at all. the pixel counting is a more modern technology.
in the duckhunt and atari days, light gun hits where done differently in a few frames in a go/no go type hit detection... When the trigger on the Zapper is pressed, the game causes the entire screen to become black for one frame. Then, on the next frame, all valid targets that are on screen are drawn all white as the rest of the screen remains black. The Zapper detects this change from low light to bright light, and determines if any of the targets are in the zapper's hit zone. If a target is hit, the game determines which one was hit based on the duration of the flash, as each target flashes for a different duration.
so...
- pull trigger
- draw screen black and check gun and see if it's dark (sanity check) if so, then the hit will be legit (not shining at a light bulb)
- draw a blcak frame with a white box for the hit box and check gun and see if it's seeing light. if so, the hit is good if not...miss.
I did the math one time to see if you could do the CRT type "scan" timing to work with an LCD or plasma display.
the problem is, you would need to send a new frame with an additional pixel drawn on in white... every frame and wait for the signal back. this would take 2,073,600 frames to completely draw the screen white one pixel per frame at a time on a 1080p FHD display.
60 frames a second.... 2,073,600 frames....do the math.... you want to wait that long to see if you hit a target?
a big buck hunter pro CRT game checks the gun position ~10 times when you pull the trigger. (It actually uses about 3 to 4 of them to narrow down the area. and discards the rest) at 60 frames per second... using 20 frames to check. (black to white frames) takes ~1/3rd or 0.3333 of a second. (give or take.)