Colors

 References

Book Mapping The Atari - Revised Edition (article Memory Map)

 Description

Locations 704 to 712 ($2C0 to $2C8) are the color registers for players, missiles, and playfields. These are the RAM shadow registers for locations 53266 to 53274 ($D012 to $D01A). For the latter, you can use the SETCOLOR command from BASIC. For all registers you can POKE the desired color into the location by using this formula:

COLOR = HUE * 16 + LUMINANCE

It is possible to get more colors in GR.8 than the one (and a half) that Atari says is possible by using a technique called artifacting. There is a small example of artifacting shown at location 710 ($2C6). See De Re Atari, Your Atari 400/800, Creative Computing, June 1981, and COMPUTE!, May 1982.

Here are the 16 colors the Atari produces, along with their POKE values for the color registers. The POKE values assume a luminance of zero. Add the luminance value to the numbers to brighten the color. The color registers ignore BIT 0; that's why there are no "odd" values for luminance, just even values.

Color             Value         Color             Value
Black           0,      0	Medium blue     8,    128
Rust            1,     16       Dark blue       9,    144
Red-orange      2,     32       Blue-grey      10,    160
Dark orange     3,     48       Olive green    11,    176
Red             4,     64       Medium green   12,    192
Dk lavender     5,     80       Dark green     13,    208
Cobalt blue     6,     96       Orange-green   14,    224
Ultramarine     7,    112       Orange         15,    240
The bit use of the PCOLR and COLOR registers is as follows:
Bit     7  6  5  4  3  2  1  0
        --color--   luminance unused
Grey    0  0  0  0  0  0  0  Darkest
Rust    0  0  0  1  0  0  1
         etc. to:      etc. to:
Orange  1  1  1  1  1  1  1  Lightest
When you enable the color overlap at location 623 ($26F), ANTIC performs a logical OR on the overlap areas. For example:
         01000010 Red, luminance two
    OR   10011010 Darkblue,luminance ten
         --------
Result = 10011010  Dark green, luminance ten

 Color palette memory address map

SHADOW REG.
DECIMAL (HEX)
HARDWARE REG.
DECIMAL (HEX)
LABEL DESCRIPTION
704 ($2C0) 53266 ($D012) PCOLR0 Color of player 0 and missile 0. Locations 704 to 707 are also called COLPM# in some sources. In GTIA mode ten, 704 holds the background color (BAK; normally held by 712). You cannot use the SETCOLOR commands to change the PCOLR registers; color values must be POKEd into them.
705 ($2C1) 53267 ($D013) PCOLR1 Color of player and missile 1
706 ($2C2) 53268 ($D014) PCOLR2 Color of player and missile 2
707 ($2C3) 53269 ($D015) PCOLR3 Color of player and missile 3. When the four missiles are combined to make a fifth player, it takes on the color in location 711 (COLOR3).
708 ($2C4) 53270 ($D016) COLOR0 Color register zero, color of playfield zero, controlled by the BASIC SETCOLOR command. In GRAPHICS 1 and GRAPHICS 2, this color is used for the uppercase letters. You can change the values in all of the COLOR registers from BASIC by using either the SETCOLOR command or a POKE.
709 ($2C5) 53271 ($D017) COLOR1 The next four locations are the same as location 708 for the different playfields and SETCOLOR commands. In GR.1 and GR.2, this register stores the color for lowercase letters. COLOR1 is also used to store the luminance value of the color used in GR.0 and GR.8.
710 ($2C6) 53272 ($D018) COLOR2 The same as above for playfield two; in GR.1 and GR.2, this register stores the color of the inverse uppercase letters. Used for the background color in GR.0 and GR.8. Both use COLOR1 for the luminance value.
711 ($2C7) 53273 ($D019) COLOR3 The same as the above but for playfield three. Also, the color for GR.1 and GR.2 inverse lowercase letters.
712 ($2C8) 53274 ($D01A) COLOR4 The same as the above but for the background (BAK) and border color. In GTIA mode ten, 704 stores the background color (BAK), while 712 becomes a normal color register.
/ 763 ($2FB) ATACHR Returns the last ATASCII character read or written or the value of a graphics point. ATACHR is used in converting the ATASCII code to the internal character code passed to or from CIO. It also returns the value of the graphics point. The FILL and DRAW commands use this location for the color of the line drawn, ATACHR being temporarily loaded with the value in FILDAT, location 765; $2FD. To force a color change in the line, POKE the desired color number here (color * sixteen + luminance).
/ 765 ($2FD) FILDAT Color data for the fill region in the XIO FILL command
/ 53266 ($D012) COLPM0 Color and luminance of player and missile 0 (704). Missiles share the same colors as their associated players except when joined together to make a fifth player. Then they take on the same value as in location 53733 ($D019; color register 3).
/ 53267 ($D013) COLPM1 Color and luminance of player and missile 1 (705)
/ 53268 ($D014) COLPM2 Color and luminance of player and missile 2 (706)
/ 53269 ($D015) COLPM3 Color and luminance of player and missile 3 (707)
/ 53270 ($D016) COLPF0 Color and luminance of playfield zero (708)
/ 53271 ($D017) COLPF1 Color and luminance of playfield one (709)
/ 53272 ($D018) COLPF2 Color and luminance of playfield two (710)
/ 53273 ($D019) COLPF3 Color and luminance of playfield three (711)
/ 53274 ($D01A) COLBK Color and luminance of the background (BAK) (712)