From: u920659@daimi.aau.dk (Carsten S|rensen)
Newsgroups: alt.sys.amiga.demos
Subject: AGA HW manual
Keywords: AGA
Date: 4 Jan 93 13:31:44 GMT
Organization: DAIMI: Computer Science Department, Aarhus University, Denmark

Just a little something of public interest :)

Here we go:
------------

N.S.I. (No Secret Information) issue 1
24-dec-92
France



The followings informations were gathered by Junkie/PMC Fr and Yragael.

Junkie  bought  a  1200  some  days  ago  and  started  quickly to dasm the
copperlist of the workbench.  Thanx to his work of prime importance and his
impressive  speed  which  leads  me to dasm the copperlist too, I (Yragael)
brings you the followings informations.

More  should  follow  as  long  as  we  will not get the hardware reference
manual.

We are waiting for your works on 1200 and your cooperation to the trip into
the hardware of the A1200.

(next  issue:   Sprite  corrections,  HAM8+,  other  graphic modes, 3 words
copperlists ...)

***************************************************************************

USING THE SUPERHIRES MODE

To  use  the  SuperHires  mode  (1280  pixels  wide), just use the bit 6 of
register $0100

bit 6 | Mode SuperHires
-----------------------
  0   | Non selectionne
-----------------------
  1   | Selectionne
-----------------------

***************************************************************************

USING 8 BITPLANES

The  number  of bitplanes available used to be no more than 7 and was coded
using  the  bits  14 to 12 of register $0100.  To use 8 bitplanes, just use
bit  4  of  register  $0100.   The  value of bits 14 to 12 will then not be
considered anymore.

bit 4 | 8 bitplanes mode 
------------------------
  0   | Not selected
------------------------
  1   | Selected
------------------------

***************************************************************************

ACCEDING 24 BITS COLORS

The 24 bits color is coded using 2 words:

- the first receives the 4 low bits of each R, G and B componants
- the second receives the 4 high bits of each R, G and B componants

To modify a color using 24 bits coding, you must use 2 coppers-moves on the
same  color  register.   The  first move must ABSOLUTELY be the move of the
word  of  the 3*4 high bits, the second move is the move of the word of the
3*4 low bits.

The  copper  knowns  when the move regards the 3*4 low bits or the 3*4 high
bits by checking the bit 9 of register $0106

bit 9 | Componants access
-----------------------------------------------------------------
  0   | Access to the 4 low bits of componants R, G and B
-----------------------------------------------------------------
  1   | Access to the 4 high bits of componants R, G and B
-----------------------------------------------------------------

ex: change $0180 to $00123456 in the copperlist

$01060000
$01800135
$01060200
$01800246

When  you  want  to  work using the 12 bits color coding mode, the 3*4 bits
value you move to the color register is considered by the copper as the 3*4
high bits.  You don't have to care about $0106.  It seems bit 9 of register
$0106 is initialized to 0 at each copjmp.

***************************************************************************

ACCEDING THE 256 COLORS PALETTE

The  amiga  don't  work  with  256  separate color registers.  A same color
register is used several times to code several colors.

The  amiga  just  works with 8 differents palettes of 32 colors each, using
color registers from $0180 to $01BE.

You  can  choose  the  palette  you want to access via the bits 11 to 14 of
register $0106


bit 14 | bit 13 | bit 12 | Selected palette
--------------------------------------------------------
   0   |    0   |    0   | Palette 0 (color 0 to 31)
--------------------------------------------------------
   0   |    0   |    1   | Palette 1 (color 32 to 63)
--------------------------------------------------------
   0   |    1   |    0   | Palette 2 (color 64 to 95)
--------------------------------------------------------
   0   |    1   |    1   | Palette 3 (color 96 to 125)
--------------------------------------------------------
   1   |    0   |    0   | Palette 4 (color 128 to 159)
--------------------------------------------------------
   1   |    0   |    1   | Palette 5 (color 160 to 191)
--------------------------------------------------------
   1   |    1   |    0   | Palette 6 (color 192 to 223)
--------------------------------------------------------
   1   |    1   |    1   | Palette 7 (color 224 to 255)
--------------------------------------------------------

ex: You want to change color 177 to $00123456

Color 177 is color $01A2 of palette 5

$01065000
$01800246
$01065200
$01800135

***************************************************************************

SWITCHING THE PALETTE

You can switch colors. The definition of switching color A and color B is:

- Color registers of colors A and B are NOT modified by the switching
- Color  A  is  displayed  using  the  content  of register of  color B and
  vice-versa

The  switching  of  palette  can't be used on just n colors of the palette.
Once  you  choose  a  switching  value,  ALL  the  palette's colors will be
switched.   The  switching  value  is  the  value separing the colors to be
switched and is coded with bits 15 to 8 of register $010C.

ex: You want all the colors separated by  one  color in the colorlist to be
    switched

$0180 <--
$0182 <--|--
$0184 <--   |
$0186 <-----
$0188 <--------
.              |
.
.

Value 2 will be stocked in bits 15 to 8.

The  switching  works  with the palette as if it was a circular palette.  I
mean  if  if the copper consider color 255 and must switch by 1 the colors,
color $0180 will be assiocated to color 255.

***************************************************************************

USING SPRITES IN LOWRES, HIRES AND SUPERHIRES

To  change  the  reolution  of the sprite, just use bit 7 and 6 of register
$0106

bit 7 | bit 6 | Resolution
--------------------------
  0   |   0   | Lowres
--------------------------
  1   |   0   | Hires
--------------------------
  0   |   1   | Lowres
--------------------------
  1   |   1   | SuperHires
--------------------------

***************************************************************************

USING 16, 32 AND 64 PIXELS WIDE SPRITES

Well,  I  still  have bug there with sprites in 32 or 64 pixels.  Sorry but
the followings informations may have to be corrected.

Use bit 3 and 2 of register $01FC

bit 3 | bit 2 | Wide
-------------------------
  0   |   0   | 16 pixels
-------------------------
  1   |   0   | 32 pixels
-------------------------
  0   |   1   | 32 pixels
-------------------------
  1   |   1   | 64 pixels
-------------------------

The  copper  doesn't read the spritelist in the same way regarding the wide
you choose for your sprite

16 pixels wide reading:

word C1, word C2
word A1, word B1
.
.
.
word An, word Bn
$0000 0000

C1=first control word
C2=second control word

Ai and Bi are combined via OR to form the sprite

32 pixels wide reading:

long C1, long C2
long A1, long B1
.
.
.
long An, long Bn
$0000 0000 0000 00000

C1=first control long
   the  first control word is the high word of C1.  The low word of C1 must
   contain the second control word.
C2=second control long
   the second control word is the high word of C2. Low word of C2 is $0000

Ai and Bi are combined via OR to form the sprite

64 pixels wide reading:

double C1, double C2
double A1, double B1
.
.
.
double An, double Bn
$0000 0000 0000 00000 0000 0000 0000 00000

C1=first control double
   C1=W3:W2:W1:W0 (Wi=words)
   W3 is first control word
   W2 and W1 are second control word
C2=second control double
   C2=W3:W2:W1:W0 (Wi=words)
   W3 is second control word

Ai and Bi are combined via OR to form the sprite

***************************************************************************

CHANGING THE SPRITE PALETTE

It  is possible to choose the color palette of the sprite.  This is done by
the bits 7 and 4 of register $010C.

bit 7 | bit 6 | bit 5 | bit 4 | Starting color of the sprite's palette
-------------------------------------------------------------------------
  0   |   0   |   0   |   0   | $0180/palette 0 (coulor 0)
-------------------------------------------------------------------------
  0   |   0   |   0   |   1   | $01A0/palette 0 (color 15)
-------------------------------------------------------------------------
  0   |   0   |   1   |   0   | $0180/palette 1 (color 31)
-------------------------------------------------------------------------
  0   |   0   |   1   |   1   | $01A0/palette 1 (color 47)
-------------------------------------------------------------------------
  0   |   1   |   0   |   0   | $0180/palette 2 (color 63)
-------------------------------------------------------------------------
  0   |   1   |   0   |   1   | $01A0/palette 2 (color 79)
-------------------------------------------------------------------------
  0   |   1   |   1   |   0   | $0180/palette 3 (color 95)
-------------------------------------------------------------------------
  0   |   1   |   1   |   1   | $01A0/palette 3 (color 111)
-------------------------------------------------------------------------
  1   |   0   |   0   |   0   | $0180/palette 4 (color 127)
-------------------------------------------------------------------------
  1   |   0   |   0   |   1   | $01A0/palette 4 (color 143)
-------------------------------------------------------------------------
  1   |   0   |   1   |   0   | $0180/palette 5 (color 159)
-------------------------------------------------------------------------
  1   |   0   |   1   |   1   | $01A0/palette 5 (color 175)
-------------------------------------------------------------------------
  1   |   1   |   0   |   0   | $0180/palette 6 (color 191)
-------------------------------------------------------------------------
  1   |   1   |   0   |   1   | $01A0/palette 6 (color 207)
-------------------------------------------------------------------------
  1   |   1   |   1   |   0   | $0180/palette 7 (color 223)
-------------------------------------------------------------------------
  1   |   1   |   1   |   1   | $01A0/palette 7 (color 239)
-------------------------------------------------------------------------

***************************************************************************


That's all. Thanx you VERY MUCH to Junkie/PMC Fr for his work.

                                           Written by Yragael