My work bought a few arcade cabinets for our break room sometime around November of 2012, one of these cabinets was an Nintendo VS DualSystem featuring VS Ice Climber and VS Super Mario Bros. There were a few reasons why the Nintendo VS was choosen for our break room. Reason #1: IT IS A NINTENDO VS! Reason #2: IT IS A NINTENDO VS! Reason #3: IT IS A NINTENDO VS! uhh, Reason #4: Not only does it get enjoyed by everyone who works here, the kids of everyone who work here love it. When we purchased the cabinet, we asked if they had the VS Duck Hunt ROM set available and if they would be willing to swap out Ice Climber (a fun game, but a little hard for the kids). Sadly, They had the ROM set available but lacked the proper PPU and VS Optical gun. Why is the PPU important here? As a form of copy protection (the NES had the CIC lock and key chips to prevent piracy), Nintendo had a few RGB PPU revisions with minor changes (different palettes and register location swaps). The RGB PPUs with palettes similar to the NES are a little hard to find at times and can often be a bit spendy as people like to slap them in to an NES to get RGB output.
We decided to go ahead and put the VS Duck Hunt ROM set in to the VS and figured we would either purchase a VS Optical gun or modify an NES Zapper to work with the system. After checking the prices of the VS Optical guns (around $85 and "worked when used ___ years ago") I decided that I would just modify the NES Zapper to work on the system and worry about getting the game itself working later. Lucky for me, I had a few Zappers hanging out at home so I brought one of them in to work and set about the modifications needed. Reading a little bit about the VS Optical gun on the NesDev Wiki, I learned that unlike on the NES, the hit detection is inverted. This ended up being an easy fix as there was an NPN transistor on the Zapper, I removed the transistor and added a jumper between where the Collector and Base pins were. Next, I had to figure out how to hook the Zapper up the the VS DualSystem. this turned out to be fairly easy as well, all the the VS Optical Gun connections except for 1 are connected to the same lines that the right side joystick uses. I cut off the connector and added male quick connects to the wires. The NES Zapper uses four wires, the purple wire is trigger, the blue wire is hit detection, brown is ground, and white is +5VDC.
As far as connecting the NES Zapper to the VS's control harness, I disconnected all four microswitched for the right joystick and then removed the joystick assembly completely by removing the four nuts holding it in place and a small snap ring holding the joystick shaft in place. A knot large knot was tied in the Zapper cord before feeding it thru the hole where the joystick previously was located. three of the four zapper wires were connected to the female quick connects that used to be connected to the joystick microswitches. A short jumper was also made out of two male quick connects and connected to one of the green connections on the control harness to the orange wire that used to be connected to the microswitch for up. The blue wire from the Zapper was then connected to the red wire on the control harness that used to be connected to the microswitch for left, the purple Zapper wire was connected to the brown wire on the control harness that used to be connected to the microswitch for right, and the brown Zapper wire was connected to one of the now un-used green wires on the control harness. Since the yellow wire on the control harness is not going to be connected to anything, I taped it off with some electrical tape. This leaves one wire left to connect, the 5VDC power wire. Sadly, a 5 volt line is not connected to the control harness and must be connected elsewhere, like the VS Optical gun harness would do, I choose to connect this to the coin harness (Orange wire coming out of a 4 pin connector conected to the coin switches). For this, I used a quick splice connector and connected the white Zapper wire to it by using a female quick connect.
After all connections have been made, I fired up the machine to test the Zapper. I knew it wouldnt work well with the wrong palette but I should atleast get some sign of life. As expected, the Zapper showed signs of life but acted strangely since the "white" palette entry is darker than the "black" without the palette patched, shooting at the first object registers as a hit for the second object.
To make the game work correctly, I had to convert the palette entries for the P2C03B.PAL PPU over to the RP2C04-4. I was lucky enough to find the following nesdev forum post Re: Various questions about the color palette and emulators and used the information there to make a few routines to convert the palette information and scripted up a quick web based converter (located here. I used the debugger in FCEUX to sniff out the palette locations and created a patch that I applied to the ROM normally located in either board location 1B or 6B (depending on what side of the VS DualSystem the game will run on). As you can see below, this was a success.
Located below are four IPS patches to make VS Duck Hunt run on the RP2C04-X RGB PPUs. Simply apply the patch to the ROM location in either 1B or 6B and slap it in your VS. The locations that contain the palette entries that I modified can be found here