# -------------------------------------------------------------------
# COLOR                                 (c) Copyright 1995 KKP & Nat!
# -------------------------------------------------------------------
# These are some of the results/guesses that Klaus and I Nat! found
# out about the Jaguar with a few helpful hints by other people, 
# who'd prefer to remain anonymous.
# Thanks go to NEUROMANCER for the RGB-Cry table.
#
# Since we are not under NDA or anything from Atari we feel free to 
# give this to you for educational purposes only.
#
# Please note, that this is not official documentation from Atari
# or derived work thereof (both of us have never seen the Atari docs)
# and Atari isn't connected with this in any way.
#
# Please use this informationphile as a starting point for your own
# exploration and not as a reference. If you find anything inaccurate,
# missing, needing more explanation etc. by all means please write
# to us:
#    nat@zumdick.rhein-main.de
# or
#    kkp@gamma.dou.dk
#
# If you could do us a small favor, don't use this information for
# those lame flamewars on r.g.v.a or the mailing list.
#
# HTML soon ?
# -------------------------------------------------------------------
# $Id: jag_col.html,v 1.17 1997/03/30 02:27:13 nat Exp $              
# -------------------------------------------------------------------
# Note: This is definetely the weakest doc so far. High bull content!
# --------------------------------------------------------------------

1 Quest For Color
=================

These are the different color representations used in the Jaguar.
The documentation is a bit hardware independent in presentation, as
you will notice. This should be a reference page, when perusing the
OP or Video dox.

There can be 3 major color modes identified called 
CrY (chroma-intensity), RGB (Red-Green-Blue) and Palette. 


1.1 CrY Color Image (16 bit/pixel)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

A CrY color is always represented with 16 bits. There are two different
schemes in use 8-8 CrY and 8-7 CrY.

8-8 is like this:
         16                              0
         +-------^-------+-------^-------+
         |    Chroma     |       Y       |
         +---------------+---------------+
           15.........8    7...........0

8-7 looks like this:
         16                              0
         +-------^-------+-------^----+--+
         |    Chroma     |       Y    | 1|
         +---------------+------------+--+
           15.........8    7........1   0
      
Y has nothing to do with Yellow, but is the intensity or luminance of 
the color chosen by Chroma! The color on the screen is calculated by 
the formula:

                color-Trans[ Cr ]
     color   =  ----------------- * Y,  Color = {Red, Green, Blue}
                       255

The cry colors aren't contigous as on the Atari 8-bit. Instead they
are sorta two dimensionally organized:
 
         major nybble
         
        blue \0    lightblue    magenta
            0 +---------------+          m
              |               |          i
              |               |          n
              |               |          o n
      purple  |     white     | green    r y  
              |               |            b 
              |               |            b
              |               |            l
              +---------------+            e
         red        orange      yellow


Imagine a blue lamp shining from the corner marked 'blue' ($0,$0) a
red lamp shining from the 'red' corner ($0,$F) and a green lamp shining
from the middle of the right edge ($F,$7). The resulting mix of colors
will be very similiar to the cry colors. So another way to visualize
a Cry Pixel would be:

 16       12        8        4        0
  +--------^--------^--------^--------+
  | ColMSB | ColLSN |    luminance    |
  +--------+--------+-----------------+
   15...12   11...8   7.............0 


Here are the RGB-CrY tables:


RED
~~~~
  0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
----------------------------------------------------------------
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0		0?
 34  34  34  34  34  34  34  34  34  34  34  34  34  34  19   0		1?
 68  68  68  68  68  68  68  68  68  68  68  68  64  43  21   0		2?
102 102 102 102 102 102 102 102 102 102 102  95  71  47  23   0		3?
135 135 135 135 135 135 135 135 135 135 135 104  78  52  26   0		4?
169 169 169 169 169 169 169 169 169 170 141 113  85  56  28   0		5?
203 203 203 203 203 203 203 203 203 203 153 122  91  61  30   0		6?
237 237 237 237 237 237 237 237 230 197 164 131  98  65  32   0		7?
255 255 255 255 255 255 255 255 247 214 181 148 115  82  49  17		8?
255 255 255 255 255 255 255 255 255 235 204 173 143 112  81  51		9?
255 255 255 255 255 255 255 255 255 255 227 198 170 141 113  85		a?
255 255 255 255 255 255 255 255 255 255 249 223 197 171 145 119		b?
255 255 255 255 255 255 255 255 255 255 255 248 224 200 177 153		c?
255 255 255 255 255 255 255 255 255 255 255 255 252 230 208 187		d?
255 255 255 255 255 255 255 255 255 255 255 255 255 255 240 221		e?
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255		f?


GREEN
~~~~~
  0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
----------------------------------------------------------------
  0  17  34  51  68  85 102 119 136 153 170 187 204 221 238 255
  0  19  38  57  77  96 115 134 154 173 192 211 231 250 255 255
  0  21  43  64  86 107 129 150 172 193 215 236 255 255 255 255
  0  23  47  71  95 119 142 166 190 214 238 255 255 255 255 255
  0  26  52  78 104 130 156 182 208 234 255 255 255 255 255 255
  0  28  56  85 113 141 170 198 226 255 255 255 255 255 255 255
  0  30  61  91 133 153 183 214 244 255 255 255 255 255 255 255
  0  32  65  98 131 164 197 230 255 255 255 255 255 255 255 255
  0  32  65  98 131 164 197 230 255 255 255 255 255 255 255 255
  0  30  61  91 133 153 183 214 244 255 255 255 255 255 255 255
  0  28  56  85 113 141 170 198 226 255 255 255 255 255 255 255
  0  26  52  78 104 130 156 182 208 234 255 255 255 255 255 255
  0  23  47  71  95 119 142 166 190 214 238 255 255 255 255 255
  0  21  43  64  86 107 129 150 172 193 215 236 255 255 255 255
  0  19  38  57  77  96 115 134 154 173 192 211 231 250 255 255
  0  17  34  51  68  85 102 119 136 153 170 187 204 221 238 255


BLUE
~~~~
  0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
----------------------------------------------------------------
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 240 221
255 255 255 255 255 255 255 255 255 255 255 255 252 230 208 187
255 255 255 255 255 255 255 255 255 255 255 248 224 200 177 153
255 255 255 255 255 255 255 255 255 255 249 223 197 171 145 119
255 255 255 255 255 255 255 255 255 255 227 198 170 141 113  85
255 255 255 255 255 255 255 255 255 235 204 173 143 112  81  51
255 255 255 255 255 255 255 255 247 214 181 148 115  82  49  17
237 237 237 237 237 237 237 237 230 197 164 131  98  65  32   0
203 203 203 203 203 203 203 203 203 203 153 122  91  61  30   0
169 169 169 169 169 169 169 169 169 170 141 113  85  56  28   0
135 135 135 135 135 135 135 135 135 135 135 104  78  52  26   0
102 102 102 102 102 102 102 102 102 102 102  95  71  47  23   0
 68  68  68  68  68  68  68  68  68  68  68  68  64  43  21   0
 34  34  34  34  34  34  34  34  34  34  34  34  34  34  19   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0


1.2  RGB (15/16/24 bits/pixel)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Another color representation is Red Green Blue (RGB). Here the red, blue
and green intensities of a color are represented. There are three schemes
of RGB employed in the Jaguar, the most popular being 

the 5-5-6 scheme: (16 bit)

         +---------+---------+-----------+
         |   Red   |  Blue   |   Green   |
         +---------+---------+-----------+
         15......11 10......6 5..........0

the 5-5-5 scheme: (15/16 bit)

         +---------+---------+--------+--+
         |   Red   |  Blue   |  Green | 0|
         +---------+---------+--------+--+
          15.....11 10.....6   5.....1  0
 
and the 8-8-8 scheme: (24/32 bit)

              3       2      1      0
         +-------+-------+-------+-------+
         | Green |  Red  |  nc   | Blue  |      68K
         +-------+-------+-------+-------+
          31..24   23..16  15..8   7...0
or
         +-------+-------+-------+-------+
         |   nc  |  Blue | Green | Red   |      GPU/DSP
         +-------+-------+-------+-------+
          31..24   23..16  15..8   7...0



To convert to 5-5-6 RGB use something along the lines of:

; Input:
;  d5.5     : red
;  d6.6     : green
;  d7.5     : blue
; Output
;  d0.16    : packed TrueColor pixel
shiftcolor:
   move.w   d5,d0 ; d0 = red, now have [0]-[0]-[0]-[red]
   asl      #5,d0 ; shift red up, now have [0]-[0]-[red]-[0]
   or.w     d7,d0 ; add in blue, now have [0]-[0]-[red]-[blue]
   asl      #6,d0 ; shift red & blue up, now have [0]-[red]-[blue]-[0]
   or.w     d6,d0 ; add in green, now have [0]-[red]-[blue]-[green]
   rts


1.3  Palette Color Image (1,2,4,8 bits/pixel)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

This is basically just an indirection used for the previous two color
modes. Palette color can only be used with 16 bit color modes. Basically
the color information is used indirectly with a lookup table called
CLUT to produce a 16 bit value, which is then either interpreted as
a RGB or CrY color value:

Palette colors can have 1, 2, 4 or 8 bits per pixel.

In 8 bits/Pixel the pixel value is used directly as a index into the Clut.

For less than 8-bit pixels, the index depends also on the O_INDEX value of 
the current bitmap object (OP), lets just call this the offset for now:

In 1, 2 and 4 bits/pixel modes the Clut-Index for the displayed color is
calculated as   Clut-Index = 2 * offset + Pixel-Value.