Re: [stella] Miniaturization (NES programming)

Subject: Re: [stella] Miniaturization (NES programming)
From: "Andrew Davie" <adavie@xxxxxxxxxxxxx>
Date: Mon, 17 Apr 2000 10:09:18 +1000
>   I believe that what this actually did was shrink the
> region in which there could be N (16?) distinct colors
> from 32*32 pixels to something smaller.  No, I don't
> know how that's possible either.

The NES colour palette consisted of 16 bytes, organised into groups of 4
palettes.  Of those 4 palettes, the first colour was the background colour,
and the remaining 3 were the pixel colours.  Only the very first background
colour was actually used, so in reality you had 13 available colours for
screen display.

However, you were limited to choosing only one palette for each 2x2
character area on the screen.

So, if somebody managed to reduce that to a palette for each character -
then you can legitimately claim to 'pump out more screen colours'.   I
achieved this in a different way, by simply rewriting the palette
on-the-fly.

On the NES, screen memory (from memory) was 30 lines of 32 characters,
giving you 960 characters.  There was 2K total of display memory, for two
screens, mapped (connected) either horizontally or vertically according to
how the cart was hardwired.  Memory management chips (MMC) later allowed
program control over this.  But, back to basics... each of the two screens
therefore had just 1K of video memory.  960 bytes of this was used for the
character data (each character being one of 256 'names').  So, to
incorporate colours, the remaining 64 bytes (1024 - 960) of the 1K display
area were used.

A B
C D

The above shows a 2x2 grid of characters  The colours for these characters
were defined in a single byte of the palette.  Each had 2 bits.  I recall
the format was DDCCBBAA, but that is very ifffy memory, being some 10+ years
old.

So, the way colours were achieved on the screen (by the hardware)....

First, we have a single byte giving the character 'name'.  There are 960 of
these, defining the whole screen.

Each character name is used to look up the character's definition, which
consists of 16 bytes of data (two sets of 8 bytes, giving a 4-colour
character).   That is, the name references the character definitions.  The
palette data for the current 2x2 block is combined with the pixel colour
from the character definition, to give a colour number from 0-15.  The
colour number is looked-up in the current palette, and that colour is used
to display.

NES programming was fun.  It was quite roundabout :)

Now, as to how to increase colours - one of the things that I found amusing
about the Nintendo machines was the general trend to include more and more
power onto the cartridge.  Towards the end of the SNES, the cartridges were
much, much more powerful than the actual machine - having onboard 3D
processors, etc.!   It is possible that a similar hardware improvement was
done on NES carts to achieve the improved colour resolution (an analogy is
the memory management chips (MMC) which provided much-improved scrolling and
bank-switching capability).

Cheers
A
--
Andrew Davie adavie@xxxxxxxxxxxxx or adavie@xxxxxxxxxxxxxxxxx
see my award-winning Museum of Soviet Calculators
http://www.taswegian.com/MOSCOW/soviet.html


----- Original Message -----
From: "Dan Knapp" <dankna@xxxxxxxxxxxxxx>
To: <stella@xxxxxxxxxxx>
Sent: Monday, April 17, 2000 9:20 AM
Subject: Re: [stella] Miniaturization


> > That reminds me (I could be wrong, red pencil where
> > necessary):  I seem to recall, back when the NES was
> > the big kid on the block, a company called "Color
> > Dreams" that claimed to have a special chip that made
> > the NES pump out more on-screen colors at once than
> > the hardware could alone.  How, exactly, is this
> > possible (if you don't know, you don't have to
> > answer), and if possible, did anyone try it with the
> > 2600?
>
>   I believe that what this actually did was shrink the
> region in which there could be N (16?) distinct colors
> from 32*32 pixels to something smaller.  No, I don't
> know how that's possible either.
>
>
> ___Dan Knapp, Knight of the Random Seed______________Beep Blip Bonk_______
> dankna@xxxxxxxxxxxxxx --- http://brain.mics.net/~dankna/ --- pbmserv: dank
>
>
> --
> Archives (includes files) at http://www.biglist.com/lists/stella/archives/
> Unsub & more at http://www.biglist.com/lists/stella/
>


--
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/

Current Thread