The NES Composite Palette Project


This obsessive project was started several years ago when I found emulation of NES graphics didn't seem to be as authentic as they should compared to the real NES hardware experience. First came eyeballed palette works, then on to direct capture conversions of the composite NTSC feed, and now finally hybrid and reverse-engineered palettes. My finalized palette titled "Smooth (FBX)" is a culmination of all those efforts, and looks superb when using a Framemeister hooked into a digital display.


The Smooth (FBX) palette is offered on a set of toggle choices for the NESRGB along with Nakedurther's "Wavebeam" palette. His palette is much more saturated than mine, and the two of these palettes together should offer something for everyone to enjoy. I've chosen a few useful alternatives for the 3rd palette slot, such as PC-10 or Composite Direct. Below are the choices of Firmware offered for NESRGB with these new palettes:

1. Smooth (FBX) >>> Wavebeam >>> Sony CXA

2. Smooth (FBX) >>> Wavebeam >>> PC-10

3. Smooth (FBX) >>> Wavebeam >>> Composite Direct (FBX)

Please note that Tim's NESRGB palette toggle switch diagrams have palette #3 in the middle position of a single pole double throw switch, which has lead to likely the majority of NESRGB installations having this setup. Here's a visual diagram showing how the palette toggle switch is wired on Tim's instructions:

However, "Link83" on the shmups forums came up with a fix for this using DPDT switches. Pad #3 is left shorted to ground on the NESRGB board, and then Ground, Pad #1, and Pad #2 are wired up to the switch as below:

I've replaced my own NESRGB toggle switch with the 1MD6 model listed in the image above, and wired it up for palette #2 to take the middle position. It works great, though I found the switch was too long to use the same location the original switch used. Instead, I found a more spacious location that also allowed me to set the switch flush against two sides of the plastic housing. This keeps the switch perfectly horizontal and prevents incidental rotation. Here are some photos of my finished switch replacement job:

Here's a site you can order these DPDT switches from:

NESRGB DPDT Toggle Switch: 1MD6 DPDT Toggle Switch

Below are the links to the NESRGB firmware sets, and the .pal file for emulator & NT Mini users:

NESRGB Firmware Package: NESRGB FBX & Nakedarthur Firmwares

Palette File: Smooth (FBX)

Here are a few examples of "Smooth (FBX)" in action:

Below are other quality palettes I have made:

"NTSC Hardware (FBX)"

This is a superb palette for PVM/BVM users, and also looks fantastic on plasma displays. Analog RGB was fed into a calibrated Sony PVM monitor, and then meticulously aligned on each color entry to match as closely as possible to the NTSC feed from an original NES. The only major exception is the blue sky color as used in Super Mario Bros. The blue voltage is out of range of analog RGB, and cannot be reproduced as a result. The color will look more 'dull' on RGB because even a maximum value of 255 in the blue channel is not enough to reproduce the same color as seen from the NTSC NES.

Palette file link: NTSC Hardware (FBX)

"PVM Style D93 (FBX)"

This palette is for digital display users that want a more authentic CRT experience (as close as can be approximated). It approximates the color and intensity of a Sony PVM CRT screen. Over 30 hours was put into composing this palette, with sampling countless games from the entire NES library. Many passes were done of the palette during live feed from a PVM until each and every color transitioned identically to the PVM screen. I then synchronized boot-ups of dozens of NES games to watch the color output from the PVM and the LCD display side-by-side. The results were fantastically similar, and as absolutely as close as humanly possible. The PVM was set to D93 color temp for this final version.

Palette file link: PVM Style D93 (FBX)

"Composite Direct (FBX)"

This is a pure, unmodified direct-capture of the composite output of the front-loader NTSC NES. It's intended for posterity and is a good all-around versital palette. Can be used on digital or analog displays, but is not the most accurate experience. It is however, more faithful to 'intended colors' than what eventually shows up on a CRT screen with original NES hardware.

Palette file link: Composite Direct (FBX)

"NES Classic (FBX-FS)"

A direct capture rip of the NES Classic's palette meant of course for digital display users. Unfortunately, Nintendo decided to add in a number of epilepsy protection features to their NES Classic console. One of which is noise in solid color. There was no choice but to average the noise out of the color when doing the palette rip. I was able to make use of the Russian hack called "Hakchi2" in order to run my custom color test ROM and sample the entire screen for each color entry, making for maximum accuracy short of hackers finding the original RGB hex codes. This palette is purely for the novelty of being able to use the "official" colors Nintendo picked for their new system. However, it is not entirely accurate to original hardware, and of course the colors are a bit muted from their epilepsy protection efforts.

Palette file link: NES Classic (FBX-FS).zip

Installing Palettes onto the NESRGB Board:

Updating the NESRGB board with these palettes requires a rev. C Altera USB Blaster. These are dirt-cheap and can be purchased on ebay for about $6.00. Be sure to get one that includes the 10-pin ribbon cable as well as the USB-to-miniUSB cord. Next, you will need the NESRGB Firmware update file Tim created for these palettes:

Smooth and Wavebeam Firmware Package: NESRGB FBX & Nakedarthur Firmwares

NES Classic and others Firmware Package: NESRGB Firmware Set March 2017

Please refer to the included text file to determine which set of palettes you'd like to install.

Now you will need to install the Quartus II Programmer software from Tim's link here:

Quartus II Programmer Installation Exe

Once you have the Altera Blaster on hand, you will likely need to install the Altera Blaster driver by following the directions below:

In order to update the firmware on the NESRGB board, the board itself must already be installed in the Nintendo. This is because the board needs to be powered by the Nintendo during firmware updating procedures. When I first updated mine, I removed the housing, shroud, and cartridge interface from the Nintendo, and then lifted the main board from the bottom housing so I could flip it over and move the bottom shroud to the side. This gave me direct access to the NESRGB board while still being able to plug the power cord into the Nintendo.


I later received help from Ste Kulov of HDRetrovision in the form of a custom PCB jtag adapter he designed for my needs. I've since modded my NES with a back access port using this adapter, and it allows me to update the NESRGB firmware by simply plugging the Altera ribbon cable directly into it without having to disassemble the NES. Here are some pics of the mod work and adapter board in place:

You can order the boards from OSH Park here: OSH Park NESRGB JTAG Adapter Board

You will need one of these ribbon sockets: 10-pin Ribbon Socket

And a row of male pin headers like these: 6-pin square posts

Now that will at least get you started if you've got experience soldering. I went a step further and used a row of round slender pin headers, and then soldered the jtag wires to a corresponding row of female IC headers to slip onto those pins (as you can see in the internal image of my adapter port mod). This makes it so I can disconnect the wires from the adapter port without having to de-solder anything.

Now if you prefer not modding the plastic housing of your NES, you can simply use the square-pin adapter assembly I linked to and hook it into the jtag holes of the NESRGB board directly whenever you need to flash the firmware. Details on the NESRGB board's jtag interface are shown below in the stripped wire method of updating the Firmware:

Stripped wire method: You'll need to strip the ribbon cable that came with your Altera Blaster down to six individual wires. The red coating on the first wire corresponds to pin #1 on the Altera Blaster, and each wire after that corresponds to the next pin (i.e. the 2nd wire goes to pin #2, the 3rd wire goes to pin #3, and so on). The wires you want are 1, 2, 3, 4, 5, and 9. These will be hooked into the 6 terminal holes on the NESRGB board as indicated below:

Wire #4 goes into the "3V3" terminal.

Wire #2 goes into the "GND" terminal.

Wire #3 goes into the "TDO" terminal.

Wire #1 goes into the "TCK" terminal.

Wire #9 goes into the "TDI" terminal.

Wire #5 goes into the "TMS" terminal.

Make absolutely certain you have the correct wires hooked into the correct terminals. I leave it to you to decide if you want to solder them or make a temporary interface (which is how I handled it). For reference, below is the Blaster pinout diagram:

Once you have everything hooked up, power on the Nintendo and plug the USB cord-side of the Altera Blaster into your PC. Then run the Quartus II 13.1 Programmer and follow the steps below:

If everything was done properly, you should see the progress bar fill with green as the programmer updates the NESRGB board. Wait until it finishes, then close the program (don't bother saving when prompted), turn the Nintendo's power off, and unhook the Altera from your PC and Nintendo.


All images and content found on this page are copyrights of their respective holders.