For instance the color palette was designed with aesthetics in mind: it had 56 colors that you'd want to use, compared to the 216 colors of the web safe palette that must have been chosen by a physicist because 60% of them make me want to puke.
The Atari 400 and 800 had an elaborate system for game-friendly video that couldn't touch what the NES did with tiles. They did amazing things with the TI-99/4A (like simulate framebuffer graphics with tiles so long as you didn't need to cover the whole screen... a trick you couldn't do with the character ROM talked about in this article) but it didn't have the brilliant end-to-end engineering of the NES...
... And of course the ability to extend the hardware with the cartridge took advantage of the falling cost of electronics AND fit with the business model that the cheap console is subsidized by expensive games.
> compared to the 216 colors of the web safe palette that must have been chosen by a physicist because 60% of them make me want to puke.
Most likely a computer programmer. It's just all the combinations of six shades of Red, Green and Blue that are equally spaced out. 00, 33, 66, 99, cc and ff.
The NES colors are actually equally simplistic internally:
12 equally spaced color hues with 4 levels of luma (plus 4 grays, 2 whites and 10 blacks wasting space in the pallet). But it works so much better because it's done in the YUV color space, rather than the RGB color space. Then the analog hardware doesn't manage to replicate it's target YUV colors accurately (or consistently across models, regions and even individual machines/tvs), which adds character.
The NES colors are nice but not sure how "designed" it was - to get colors from an NTSC or PAL signal is phase shifting, so if the colors are in rainbow order (which they are) then each color is simply a phase shift of some amount and the "design" is which amount of phase shift. I was always curious why they left 8 colors black and why black and white was duplicated in the palette, though.
Something like the C64 which used a "resistor bank" to pick the colors actually had thought into the individual choices of each color.
What NES got very right IMHO was:
- More than 16 colors
- Adequate horizontal resolution but not caring about the maximum since the point wasn't to display text (256 pixels, not 160 or 320)
- 2 bits per pixel with just enough palettes to be useful - no 1bpp graphics.
- 64 sprites - so many sprites even if they were 8x8
- Hardware scrolling and multiple nametable support
A lot of the magic in the NES was all the sprites - 64 is a lot for the hardware at the time, the fact they had the same resolution as the nametable, and easy support for scrolling. Also the CPU was kinda fast - 1.79MHz is speedy for a 6502 CPU.
If you're aligned to the axes of the NTSC system you're going to form a grid on intensity, hue and saturation. There's almost no way to make somebody a better colorist than to take away their RGB sliders and give them something more like HSV. You get ideas like complementary and analogous colors "for free". As atrocious as NTSC was it's representation of color was parsimonious of bandwidth as well as compatible with black and white.
I think it's got something to do with the eye being much more sensitive to green but RGB cubes wind up terribly unbalanced and "meaningless" in my way of thinking whereas the Nintendo colors are "meaningful" in that they are aligned with human perception. (Never seen anybody else do it but I run my Hue, Sengled and LIFX lights green on hot summer days to add less heat to the house... I figure the strange color rendition is not so bad because I'm either supplementing outside light from the windows or if is really hot the windows are covered with space blankets and I don't care how strange of a scene it is.)
Subject: "Re: VIC-II colors"
From: Robert 'Bob' Yannes
To: Philip 'Pepto' Timmermann
Date: 27.09.1999
I was involved with the development of the VIC-II, however the actual implementation of the design, including the Color Palette, was done by someone else. I have forwarded your message to him, but it is up to him if he wants to respond.
I can tell you that the design was based on the principle that adding a sine wave of a particular frequency and amplitude to an inverted version of the same sine wave at a different amplitude produces a phase-shifted sine wave of the same frequency. The amount of phase shift is directly proportional to the amplitudes of the two sine waves.
The VIC-II used the 14.31818 MHz master clock input (4 times the NTSC color burst frequency of 3.579545 MHz) to produce quadrature square-wave clocks. These clock signals were then integrated into triangle waves using analog integrators. The triangle waves were then integrated again into sine waves (actually rounded triangle waves, but good enough for this application). This produced a 3.579545 MHz sine wave, inverse sine wave, cosine wave and inverse cosine wave.
An analog summer was used to create the phase-shifts in the Chroma signal by adding together the appropiate two waveforms at the appropiate amplitudes. The Color Palette data went to a look-up table that specified the amplitude of the waves by selecting different resistors in the gain path of the summer. The end result was that we could create any hue we wanted by looking at the NTSC color wheel to determine the phase-shift and then picking the appropiate resistor values to produce that phase-shift.
Color Saturation was controlled by scaling the gain of the summer. When we picked the resistor values to determine the output phase-shift, we also scaled them to produce the desired output amplitude. Luminance was controlled using a simple voltage divider which switched different pull-down resistors into the open-drain output. We could create any Luminance we wanted by choosing the desired resistor value.
I'm afraid that not nearly as much effort went into the color selection as you think. Since we had total control over hue, saturation and luminance, we picked colors that we liked. In order to save space on the chip, though, many of the colors were simply the opposite side of the color wheel from ones that we picked. This allowed us to reuse the existing resistor values, rather than having a completely unique set for each color.
I believe that Commodore actually got a patent on this technique. It was certainly superior to the Apple or Atari approach at the time, as they ended up with whatever colors that came out — ours allowed the designer to freely select Hue, Saturation and Luminance.
Since all of this was based on selecting different resistor values and resistance varied from chip lot to chip lot, there was variation from one Commodore 64 to another. It wasn't as bad as it could have been though, since all of the Chrominance selection was based on resistor ratios, which could be kept constant even if the actual resistor values varied. Luminance was more of a problem. A trimmer resistor should really have been used to pull up the output. This would have allowed the Luminance to be adjusted for consistency from unit to unit, however Commodore didn't care enough about consistency to bother with adjusting each unit.
—
Robert 'Bob' Yannes
I wrote an NES game for my senior project in university. Later, when I researched writing a game for the Atari 2600, I was surprised to learn that you basically had to write your own display subroutine, whereas the NES did that work for you.
The system used in the Atari 400 and Atari 800 is definitely based on the thinking of the Atari 2600 in that you are really thinking about drawing one line at a time but you are getting help to do it
is controlled by a "display list" that sets the strategy used to draw lines on a line-by-line basis. If you have 20 blank lines you can just skip past them and not waste any RAM representing them. If you want to put a line of text at the bottom of a video game it is completely easy.
It's interesting, though, to see the co-evolution of the Atari design strategy in the 7800, Amiga, and Lynx (the former explicitly being a souped-up 2600 and the latter two sharing design team in part). By the time of the Lynx there's a clear bias in the featureset towards "lots of powerful sprites in a fixed memory layout", so the alien nature of the earlier systems is mostly gone and it's become roughly as straightforward as a Neo Geo, plus a few little surprises like the retention of the old Atari "LFSR distortion" sound effects in the form of programmable timers as something you could opt to plug into the audio(which like the Amiga, is 4 channel digital, but the sound driver used in most games biases towards chiptune sounds).
For instance the color palette was designed with aesthetics in mind: it had 56 colors that you'd want to use, compared to the 216 colors of the web safe palette that must have been chosen by a physicist because 60% of them make me want to puke.
The Atari 400 and 800 had an elaborate system for game-friendly video that couldn't touch what the NES did with tiles. They did amazing things with the TI-99/4A (like simulate framebuffer graphics with tiles so long as you didn't need to cover the whole screen... a trick you couldn't do with the character ROM talked about in this article) but it didn't have the brilliant end-to-end engineering of the NES...
... And of course the ability to extend the hardware with the cartridge took advantage of the falling cost of electronics AND fit with the business model that the cheap console is subsidized by expensive games.