Palette test ROM request:

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Palette test ROM request:
by on (#148733)
Greetings!

My apologies if this has already been made, but I'm looking for a test ROM that would work on real NES (NTSC USA) hardware. The ROM would be really simple:

The entire screen is filled with the first palette entry. Pressing the A button would advance the screen to be filled with the next palette entry, and pressing the B button would go back one entry.

Would someone be willing to code this ROM for me? Much appreciated!
Re: Palette test ROM request:
by on (#148734)
I made this awhile ago. Hopefully no bugs :) Note, rendering is off (during the test mode) and only one palette entry is changed.
Re: Palette test ROM request:
by on (#148737)
Awesome! That's pretty much what I needed!

What I'm working on is an old project I am revisiting with new hardware, and that's to make an accurate reproduction of the original composite output palette the NES front-loader generates. My results thus far have been almost identical to the Nestopia YUV palette, except for a few colors here and there in the darker ranges where Nestopia seems to be hit-and-miss.

For example in Mega Man 5 using Nestopia YUV on the left and my generated result on the right:

ImageImage

The NES front-loader reveals a distinctly different shade of green with far more blue value for the backgound jungle compared to the Nestopia YUV palette entry.
Re: Palette test ROM request:
by on (#149310)
Firebrandx wrote:
What I'm working on is an old project I am revisiting with new hardware, and that's to make an accurate reproduction of the original composite output palette the NES front-loader generates.

This could be a bit difficult. And here is why:

I have two TVs of exactly the same brand. Same model number and everything.
I have access to the system menu, i.e. not only the user menu, but the one for technicians to adjust the TV.

Now the thing is: Even when I set both TVs to exactly the same values, the image is still not identical.
For example, one TV has much brighter colors with the same color value. And the NES color for yellow looks more greenish on one of the TVs while it looks more yellowish on the other.

So, please be aware that, if you do such a palette, it will only show the way a specific TV outputs the signal. Not even a specific brand or a specific model, but a specific individual TV.

It's pretty much impossible to recreate an objective representation of the NES palette because different TVs show the colors differently.
Re: Palette test ROM request:
by on (#149316)
JimDaBim wrote:
Even when I set both TVs to exactly the same values, the image is still not identical.

American TVs are NTSC (Never The Same Colors). Many will perform color processing to make sky and flesh colors hyperreal to grab shoppers' attention in a Best Buy or Walmart store. (Compare the blue and orange emphasis of recent movies.)

But then the TVs also distort output of systems with RGB-based palettes (Master System, Genesis, Super NES) in the same way. So perhaps the best you can hope for is to find, for each NES color, the RGB value that will cause a Super NES S-PPU's color encoder to emit a composite waveform of the same amplitude and phase.
Re: Palette test ROM request:
by on (#149326)
So wait, we're constantly arguing about which palette is the best when we could have settled it by comparing against a signal generated from RGB?
Re: Palette test ROM request:
by on (#149328)
It would split the question into two steps, each of which should be easier to handle:
  1. What is the best mapping from NES composite waveforms to Super NES RGB values?
  2. What is the best mapping from Super NES RGB values to PC RGB values when playing emulated Super NES games to simulate a typical TV's color distortion?

We could start settling step 1 by looking at NES palette tests and Super NES palette tests with the same oscilloscope.
Re: Palette test ROM request:
by on (#150239)
I'll actually being using two different methods to come up with two different palettes:

1. The first method (which I have finished: http://www.firebrandx.com/downloads/fbxnespalette.zip) will be an average hue and brightness setting for each palette entry based on how it 'typically looks' on a CRT. In this case, I used three different Sony Trinitron displays. The end result is a palette that I believe is far more accurate to the original experience than any other custom palette I've seen out there. Of particular note are the previously mentioned green hues in the Mega Man 5 stage pic posted in this thread, and also level 1 in Legend of Zelda. The Nestopia YUV palette uses a default teal scheme, but every test I've done with the real console suggests that these particular palette entries have far more blue value than green. In the below image, you can see the YUV palette on the left versus my custom palette that mimics the real hardware experience:

Image

2. The second method will make use of a professionally calibrated video vectorscope. The scope's value it reports for each palette entry will then be translated into the proper RGB value. I've outsourced this method to an electrical engineer, but it may be a while before he gets to it as he's really busy right now. Nevertheless, he will get it done and it will be the ultimate answer to the question.

For now though, I'm quite happy with my custom job. Every game I load up with it just looks exactly like it should compared to my NES consoles.