NES palette > SNES RGB555
Moderator: Moderators
-
- Posts: 3140
- Joined: Wed May 19, 2010 6:12 pm
NES palette > SNES RGB555
I thought of a method to approximating the NES color palette.
Get 2 identical CRT tvs. Same manufacturer. Same size. Same model. Same settings. Hook an NES to one TV, hook an SNES to the other. Try to match the colors on the SNES with the colors on the NES.
Of course this will take a lot of work involved. So I guess noone would know if it would work.
Get 2 identical CRT tvs. Same manufacturer. Same size. Same model. Same settings. Hook an NES to one TV, hook an SNES to the other. Try to match the colors on the SNES with the colors on the NES.
Of course this will take a lot of work involved. So I guess noone would know if it would work.
Other ways to get RGB values:
- Bit-extend the 333 palette used in the PlayChoice PPU. I seem to remember either kevtris or the MAME people having done this. It would give colors comparable to the Famicom Titler.
- Rip the palette out of acNES, the GameCube- and GBA-based NES emulator used by Animal Crossing 1. (The GBA version of this was subsequently used for e-Reader and Classic NES Series.)
- Rip the palette out of Virtual Console, the Wii-based successor to acNES.
- Run the NTSC NES signal through a decoder based on the NTSC definition. The TV would apply the same hue warping to the Super NES's output the same way it is to the NES's.
Eyeballing just looks error prone to me. No two CRT SDTVs are exactly alike. If you have the capability to calibrate two TVs to within plus or minus 3 percent, which you'd have to do to eyeball a 5-bit signal, then you likely have the capability to examine the video signal itself.
Eyeballing might be more accurate in a picture-in-picture scenario. My TV will PIP a component signal and a composite signal, or a component signal and an HDMI signal, or a composite signal and an HDMI signal, but not two composite signals. I could do like I normally do, converting composite to HDMI through my DVD recorder, but then I'm relying on my DVD recorder and my TV having the same decoder, which they likely don't.
So assuming we don't want to rely on Nintendo's emulators, the first step is to understand exactly how the 5-bit-per-channel RGB analog signal in the Super NES becomes the NTSC composite signal. Then we can compute the closest Super NES color to each NES color. Has anyone scoped this out (pun intended)?
Eyeballing might be more accurate in a picture-in-picture scenario. My TV will PIP a component signal and a composite signal, or a component signal and an HDMI signal, or a composite signal and an HDMI signal, but not two composite signals. I could do like I normally do, converting composite to HDMI through my DVD recorder, but then I'm relying on my DVD recorder and my TV having the same decoder, which they likely don't.
So assuming we don't want to rely on Nintendo's emulators, the first step is to understand exactly how the 5-bit-per-channel RGB analog signal in the Super NES becomes the NTSC composite signal. Then we can compute the closest Super NES color to each NES color. Has anyone scoped this out (pun intended)?
You could also try hooking both the NES and the SNES to the same TV using a cheap switch box. Sure, you won't be able to look at the images side by side, but if you make programs that fill the entire screen with a single color it should be possible to tell when they are similar enough by switching from one to the other.
I tried that before. But with a half second of picture rolling after the switch moment as the TV adjusts from one system's vblank phase to another, it's not perfect. It worked better years ago when I tried to discern the Apple II palette by eyeballing it against the 4-bit-per-channel Apple IIGS super-hi-res palette, as I could set the border to one of the Apple II colors and the inside to a solid super-hi-res color.
-
- Posts: 3140
- Joined: Wed May 19, 2010 6:12 pm
We already know how an NTSC decoder decodes the NES video signal. If the Super NES PPU were strictly standard-conforming, we could just grab a palette out of any current emulator and plug those numbers into the Super NES PPU. But the hard part is figuring out how close the primaries on the Super NES PPU come to the NTSC primaries. For example, do the SMPTE color bars look the same through a Super NES as through a dedicated signal generator?
-
- Posts: 3140
- Joined: Wed May 19, 2010 6:12 pm
Re: NES palette > SNES RGB555
It still seems questionable though, there are plenty of analogue parts where errors are tolerated within % of difference. They might have been calibrated or re-calibrated by different people.psycopathicteen wrote: Get 2 identical CRT tvs. Same manufacturer. Same size. Same model. Same settings.
Since the settings aren't digital, that's the hard part.
-
- Posts: 3140
- Joined: Wed May 19, 2010 6:12 pm
It's funny you should bring this up, I've been interested in being able to generate an accurate-looking NES palette, based on what my Panasonic CRT television's colors are. I use one of the palette testing homebrews on my PowerPak to do this.
Using a straight-up YIQ -> RGB matrix will give you values that are out of RGB range. The biggest problem are colors 22 and 23, since they're the most out-of-range.
On my TV, color 22 looks like a brilliant cerulean, and color 28 is a bright marigold. Color 08 is the darkest color in the NES palette (a brown that's nearly black). Colors 3C and 2C are cyan, but 1C and 0C turn bluer and bluer as it gets darker. Color 26 is strange, it's supposed to be a bright light-red color, but it's extremely easy to make it too pink, or too orange.
Of course, just using a palette test program isn't going to give you exact accuracy, you need to play games in order to see what non-adjacent colors look like when placed next to each other. Lately, I've been using Goonies II to test some of these.
The problem I get when trying to use a YIQ -> RGB matrix is that color x8 is too dark. Color 18 on my TV is brighter than you'd expect, but trying to generate it with the matrix makes it too dark. 28 comes out too dark too, it doesn't look like marigold, but a dirty gold color.
Color 22 warps to purple-blue when you clip it, and color xC doesn't get bluer as it gets darker.
I figured I was just missing something, like, I don't know how to emulate the CRT's gamma curves properly, and I don't know how to clip the out-of-gamut colors (like color 22) without warping them, or causing them to lose apparent brilliance.
Heh, the funny thing is, the palette looks almost perfect when you turn the contrast (white level) way down, but then it's too dark.
Edit: Another phenomenon is that the colors in the 0x range don't mix. For example, the first three colors are straight-up blue (but with slightly different brightnesses), then there's a purple color, followed by 3 pure reds (again, with different brightnesses), and then the superdark 08 brown, and then there's a few dark pure greens, and then a nice blue (not quite cyan) from 0C. It's as though the hues break down into the most dominant color channel as the luminance goes lower. Using a YIQ->RGB matrix doesn't reflect this.
Using a straight-up YIQ -> RGB matrix will give you values that are out of RGB range. The biggest problem are colors 22 and 23, since they're the most out-of-range.
On my TV, color 22 looks like a brilliant cerulean, and color 28 is a bright marigold. Color 08 is the darkest color in the NES palette (a brown that's nearly black). Colors 3C and 2C are cyan, but 1C and 0C turn bluer and bluer as it gets darker. Color 26 is strange, it's supposed to be a bright light-red color, but it's extremely easy to make it too pink, or too orange.
Of course, just using a palette test program isn't going to give you exact accuracy, you need to play games in order to see what non-adjacent colors look like when placed next to each other. Lately, I've been using Goonies II to test some of these.
The problem I get when trying to use a YIQ -> RGB matrix is that color x8 is too dark. Color 18 on my TV is brighter than you'd expect, but trying to generate it with the matrix makes it too dark. 28 comes out too dark too, it doesn't look like marigold, but a dirty gold color.
Color 22 warps to purple-blue when you clip it, and color xC doesn't get bluer as it gets darker.
I figured I was just missing something, like, I don't know how to emulate the CRT's gamma curves properly, and I don't know how to clip the out-of-gamut colors (like color 22) without warping them, or causing them to lose apparent brilliance.
Heh, the funny thing is, the palette looks almost perfect when you turn the contrast (white level) way down, but then it's too dark.
Edit: Another phenomenon is that the colors in the 0x range don't mix. For example, the first three colors are straight-up blue (but with slightly different brightnesses), then there's a purple color, followed by 3 pure reds (again, with different brightnesses), and then the superdark 08 brown, and then there's a few dark pure greens, and then a nice blue (not quite cyan) from 0C. It's as though the hues break down into the most dominant color channel as the luminance goes lower. Using a YIQ->RGB matrix doesn't reflect this.
One way to separate NES behavior from TV behavior is to use your Panasonic CRT television as your computer monitor. Some PCs have a TV output; others need a $30 adapter cable.