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. With these latest works, the overall palette hue composition has become so recognizably consistant that differences are down to splitting hairs. This is good. This is where authenticity should be.

Due to analog RGB mods as well as digital HDMI options, it became clear a universal palette is simply an impossible task. What works on an LCD screen will come off as inaccurate on a CRT screen. A such, these latest works set about to offer enjoyable options for both methods of playing NES games.

Current Status: Firmware Package Ready For Download!

Log entry: 03-26-2017

So it would seem differend models of TV sets use different translation hardware for NTSC signals. I was banking on the translation being more a universal standard, but some TVs are considerably different from others on how they interpret the NTSC signal's colors. For example, there are many models of consumer-grade Sony CRT sets that turn the brown swatch of the NES palette to a much more reddish rust color. This is most evident in games like Super Mario Bros. The intended color of the bricks and title plate in that game is supposed to be brown (as evidenced by direct-capture, Nintendo's own NES Classic palette, and the PVM-based palette I made).

In realizing the futile nature of making a CRT palette that looks 'perfect' for all CRTs, I've decided I'm not going to persue the unending task of supporting every CRT on the market with palettes that cover their output result. Instead, I will stick with PVM and BVM monitors as the standard by which my palettes are based. The reason being because they are by far the most sought after CRT gaming experience by retro-gamers pretty much all over the world. If I'm going to pick a standard, that's certainly the most logical one to go with.

I did my best, and I'm happy with what I finally concluded on. I may at some point down the road decide to do new direct-capture tests with different capture hardware just for posterity, but the work presented here will be the officially supported palettes from my end for the forseeable future.

Thanks to all those that supported my efforts and encouraged me along the way!

"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

Screenshot Gallery (coming soon!)

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:

NESRGB 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 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.

So here comes the tricky part: 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.