A more accurate NES palette?

A place for your artistic side. Discuss techniques and tools for pixel art on the NES, GBC, or similar platforms.

Moderator: Moderators

User avatar
rainwarrior
Posts: 8763
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: A more accurate NES palette?

Post by rainwarrior »

I used my capture devices to create a couple of full palette dumps, which I posted in my palette test ROM thread:
https://forums.nesdev.com/viewtopic.php ... 39#p233739
User avatar
Firebrandx
Posts: 50
Joined: Fri Aug 26, 2011 3:20 am

Re: A more accurate NES palette?

Post by Firebrandx »

Kizul Emeraldfire wrote: I just wish that I could get $0D to be negative black instead of just "pure black": it just doesn't look dark enough on my TV in emulators. On actual hardware, it's like my TV's just completely skips over dots colored with $0D (they're literally pure black, with not a hint of light), but in RetroArch on my Wii there's still just a bit of light being shone on those dots.
Unfortunately I fell into the trap of trying to "reinvent the wheel" thanks to poor Googling search terms, only to find after I did some PVM tests that all the correct black level information is on the NTSC Video page for NES DEV Wiki.

At any rate, not sure if you've noticed, but even 0D is affected by emphasis bits. I had to crank the brightness way up on my PVM to show that 0D was indeed being hue-shifted with emphasis, and indeed it gets even darker with all three bits active. So not only do you have 0D being "blacker than black", but with emphasis bits active, it becomes "Vantablack". With all that being the case, properly centered brightness and contrast calibration on a PVM doesn't reveal any of these entries to have anything but a flat black color. For Bee 52, you have to turn the brightness up beyond centered in order to see the tree trunks and grass highlights on nighttime stages. So to conclude, there's actually nothing wrong with NTSC palettes making all those black entries simply 0-0-0 because that's how they appear on a properly calibrated and center-dialed CRT monitor.
User avatar
Kizul Emeraldfire
Posts: 47
Joined: Wed Feb 23, 2005 3:46 pm

Re: A more accurate NES palette?

Post by Kizul Emeraldfire »

…Alright, I know no one likes necro-bumps, but: I feel like this warrants one.

A week or two ago, after nearly six years, I've finally improved my palette to be even better: I averaged the Lightness of each row of color; now, the brightnesses of each color are — according to Photoshop CS6's Lab color mode — (nearly) exactly the same, with only the hues differing in the $x1 to $xC range! :mrgreen:
palette.png
palette.png (1022 Bytes) Viewed 9706 times
Compare with the one I've dubbed "Version 2.0" of my palette, below! :D (The one above is what I've dubbed "Version 3.0" of my palette. "Version 1.0" is the old and ugly one that I used an ATi Rage Theater Value capture card to get. xD (If you really want to see it, it's back on page two, I think. It's not great. ;_;))
palette.png
palette.png (1.42 KiB) Viewed 9706 times


Compare just each version's luminance, and… there's a significant difference (going with 3.0 first again, followed by 2.0):
palette.png
palette.png (719 Bytes) Viewed 9706 times
palette_2-0_luma.png
palette_2-0_luma.png (2.09 KiB) Viewed 9706 times


One other subtle difference that some (dougeff, FirebrandX — among others, I assume :)) may notice: I've finally decided that I do, in fact, have to agree with everyone that even the #080808 blacks were "too bright", especially when trying to play NES games in RetroArch on e.g. a Wii, particularly when that Wii is hooked up to a CRT TV. :(

So now I've set them to #020202: it's almost indistinguishable from pure black, but still allows the pure black to look different. |: It's good enough! \D:/

Anyway: in addition to all of that, I've also updated my screenshots gallery to have about five more palettes, as well as to include images from three more games: Solstice: Quest for the Staff of Demnos, Monster in My Pocket, and a game that I've mentioned earlier in this thread in regard to its River level's boss: Adventures of Tom Sawyer! :)

I also added a few more screenshots to The Legend of Zelda (now every dungeon is represented, not just the first three!) and to Dragon Warrior IV (the full Day-to-Night range — which, as it turns out, just goes in reverse to go from Night to Day —, just 'cause Dragon Warrior III'd had its full Day/Night cycle represented…), and I even implemented some rudimentary CSS nonsense for doing a proper on/off 'flicker' animation for the platform under "Justin Bailey" in that one Metroid screenshot and for the rainbow in that one Adventures of Lolo 3 screenshot.

EDIT (2025/02/27): also added a couple dozen more screenshots to Legendary Wings: I felt its art was criminally underrepresented in my gallery beforehand. :)

EDIT 2: …I just noticed that I didn't properly upload all of the HTML files that had all of the new Legendary Wings screenshots added: only my palette's gallery showed them; additionally, the NES Classic Edition (version 1) gallery was missing the flicker-animated PNGs for Lolo 3 and Metroid; and, it was also missing ALL of the screenshots for Solstice. x_X This has since been rectified (I think). Please let me know if there are any more problems…

If the CSS animations freeze up, just wait a few seconds and they should resume. :) Elsewise, if your browser somehow doesn't support that CSS feature, they'll use a static PNG as a fallback. (Viewing my screenshot gallery on my 3DS loads the PNG fallback every time.)

ALSO: you can now ZOOM IN on the images without them becoming GAUSSIAN SMUDGES!! :mrgreen:

I'm also happy to announce I'm finally publicly launching a new NES-palette-related page: a side-by-side (well, somewhat) comparison of all thirty-ish NES palettes I've collected over the last nine-and-a-quarter years. :)

As a bonus: it includes my purely Monochrome palette, which is downloadable via the Zip file linked on my page (and mirrored here in the attachments). :mrgreen:

Anyway: I just thought I'd share this significant update in the same thread that my journey into madness began. If I'm able to get some sort of color-generating software thing (ideally a homebrew utility that runs on the Wii, just because I feel it's fitting to use exclusively Nintendo hardware to try and 'transcribe' the Nintendo Entertainment System Control Deck's palette) — as well as a PowerPak or EverDrive N8 or some other NES flash cart —, I'll try to accurately transcribe my palette anew and release it in December for my palette's official tenth anniversary… ideally with the Color Emphasized variants as well! :mrgreen:

…Jeez, can I ever make a short post in this thread? xD (That's rhetorical.) Sorry for the rambling.

❤ ENJOY!! ❤
Attachments
Kizuls_Definitive_NTSC_NES_Master_Palette.zip
(4.26 KiB) Downloaded 42 times
Last edited by Kizul Emeraldfire on Fri Feb 28, 2025 7:35 pm, edited 2 times in total.
User avatar
Dwedit
Posts: 5126
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: A more accurate NES palette?

Post by Dwedit »

One really weird outlier of the NES Palette is The Immortal. It uses all three emphasis bits, and uses "Blacker than Black" 0D as black, and 0F as a dark gray color. And this provides additional shading for the fighting character sprites.

I think emulators should identify that game by checksum, and use an alternative palette for that game alone.

Or alternatively, whenever color 0D as background color, then make the black color lighter. Or even lighter if all emphasis bits are set. But this is just a hack.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
Kizul Emeraldfire
Posts: 47
Joined: Wed Feb 23, 2005 3:46 pm

Re: A more accurate NES palette?

Post by Kizul Emeraldfire »

Dwedit wrote: Thu Feb 27, 2025 12:26 pm One really weird outlier of the NES Palette is The Immortal. It uses all three emphasis bits, and uses "Blacker than Black" 0D as black, and 0F as a dark gray color. And this provides additional shading for the fighting character sprites.

I think emulators should identify that game by checksum, and use an alternative palette for that game alone.

Or alternatively, whenever color 0D as background color, then make the black color lighter. Or even lighter if all emphasis bits are set. But this is just a hack.
Yep. The lack of "correct" emulation for The Immortal was part of the reason I decided to start making a new palette in the first place. XD

Even the Nintendo Switch Online emulator doesn't have the extra grays like it would on actual hardware, which makes me sad. :/ But, I've gotten used to my disillusionment regarding Nintendo and emulation: I'm a stickler for the "authenticity" of "the experience": in other words, I want to feel as if I'm playing the physical game on the actual hardware (even if I'm not using the original controller) — but so often, it just feels like I'm… playing an emulation of a game I knew and loved. x: The game runs, it plays without any noticeable new bugs — it's completely functional — but the colors are very, VERY important for my enjoyment. x_x If those don't look right… the whole thing just feels "off" to me. (Kinda like A.I.-generated art: the longer you look, the more you find wrong with it…)

(In the case of the NES Classic Edition/Nintendo Switch Online (which seem to use the same palette): if I already have to have my Switch in Docked mode to correct the issues I have with the baked-in Tint settings that can't be changed, why would I not emulate it with arguably better accuracy and with unarguably better colors… elsewhere? ¯\(º_O)/¯)

…But I digress: having a "brightness hack" for The Immortal is something that I've been wanting in literally any decent NES emulator for… a lot of years now, actually. XD If I knew any useful programming languages that run on better hardware than a NES/Game Boy, I'd happily try my hand at hacking that hack into NEStopia: Undead Edition or something. :)
NewRisingSun
Posts: 1550
Joined: Thu May 19, 2005 11:30 am

Re: A more accurate NES palette?

Post by NewRisingSun »

from NintendulatorNRS:

Code: Select all

for (unsigned char emphasisLevel =0; emphasisLevel <8; emphasisLevel++) {
 for (unsigned char lumaValue =0; lumaValue <4; lumaValue++) {
  for (unsigned char chromaValue =0; chromaValue <16; chromaValue++) {
   // ...
   if ((RI.PRGROMCRC32 ==0x9BA777E1 || RI.PRGROMCRC32 ==0x68080DAC || RI.PRGROMCRC32 ==0xA982C530) && emphasisLevel ==7) {
    // "The Immortal" uses emphasis and color $0D as black to use color $0E as a darker gray than $2D.
    getNESColor(lumaValue, chromaValue, 0, &Y, &angle, &C);
    if (chromaValue >=0xE || chromaValue ==0xD && lumaValue ==0x1) Y +=0.155f;
   } else
    getNESColor(lumaValue, chromaValue, emphasisLevel, &Y, &angle, &C);
Basically, when one of the three known PRG-ROM CRC32s of "The Immortal" are detected, disable the function of the emphasis bits but lift the luma value of all non-blacker-than-black black colors.
NewRisingSun
Posts: 1550
Joined: Thu May 19, 2005 11:30 am

Re: A more accurate NES palette?

Post by NewRisingSun »

The combat screens are the simplest ways to test if you are emulating The Immortal "correctly", meaning "as intended":
1.png
1.png (5.76 KiB) Viewed 9516 times
2.png
2.png (7.51 KiB) Viewed 9516 times
Pertinent YouTube video
User avatar
Kizul Emeraldfire
Posts: 47
Joined: Wed Feb 23, 2005 3:46 pm

Re: A more accurate NES palette?

Post by Kizul Emeraldfire »

NewRisingSun wrote: Fri Feb 28, 2025 3:38 am The combat screens are the simplest ways to test if you are emulating The Immortal "correctly", meaning "as intended":
Yup: just turn the game on and wait for about twenty-five seconds or so, and the demo will show it. :)
NewRisingSun wrote: Fri Feb 28, 2025 3:38 am Pertinent YouTube video
…Huh! o: The second video I know of on YouTube showing The Immortal "correctly"! (The first being my own; technical details are in the Description.)

Oddly, though, the colors in the video that you linked are rather washed-out, and the extra gray in the robe of the wizard guy on the title screen doesn't show up in it, unlike on my TV/in my video.

Granted, it's dimmed $1D — instead of $0E, as I presume it was perhaps intended to be, since $0E seems to be used for the "extra gray" everywhere else —, so it's quite faint anyway.

I'm happy that I'm no longer the only person on YouTube with a decent capture of that game! :mrgreen: (When I'd uploaded my video, it stood alone in a sea of emulator captures. And videos of the SEGA Mega Drive/Genesis version. ^^')
User avatar
Dwedit
Posts: 5126
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: A more accurate NES palette?

Post by Dwedit »

NewRisingSun wrote: Fri Feb 28, 2025 3:12 am from NintendulatorNRS:
Basically, when one of the three known PRG-ROM CRC32s of "The Immortal" are detected, disable the function of the emphasis bits but lift the luma value of all non-blacker-than-black black colors.
Detection by checksum is nice, but I think that detection by behavior (0D as background color and all emphasis bits set) would also be a good idea.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
NewRisingSun
Posts: 1550
Joined: Thu May 19, 2005 11:30 am

Re: A more accurate NES palette?

Post by NewRisingSun »

That might break the "unrolling scroll" screen of The Fantastic Adventures of Dizzy.
User avatar
Dwedit
Posts: 5126
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: A more accurate NES palette?

Post by Dwedit »

Good point.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
Post Reply