[net.micro.atari] ATARI 800 GRAPHICS

aaa@hou5h.UUCP (Aaron Akman) (01/22/85)

******

Here's my 2 cents concerning the Atari 800's graphics capabilities (the
800 and the 800XL use the same graphics hardware, I believe):

1.  Any of the Atari's 16, or so, graphics modes can be mixed on the screen
simultaneously--the only restriction is that a single graphics mode must
extend from the left edge of the screen to the right.  Some modes use a single
scan line, while others use multiple scan lines.  In other words, it is
simple to mix text and high res graphics on the Atari's screen in different
orders.  It is useful to think of these graphics modes as layers--some are
thicker than others, and they can be stacked on top of one another in any
order.

2.  For each "layer" you can supply an address where the data for that layer
resides.  So it is simple to have different parts of the screen's data in
different parts of memory.  It is also possible, simply by changing the
address (WITHOUT MOVING A SINGLE BYTE OF DATA) to map different data to a
specific layer.  If, for example, you add 1 to the address, that layer will
appear to scroll to the left by 8 pixels.  Because screen data need not
reside in contiguous RAM, it is simple to define more data than will
actually fit on the screen in a layer--and then by manipulating this single
address you can scroll over the previously unseen data.  If you do this for
multiple layers that together describe some scenery, you can scroll past
colorful scenery with almost no processor overhead!!

3.  Since manipulating this address (its called the Load Memory Scan
Address, or LMS) causes the scenery to "coarse" scroll by 8 pixels, there is
another bit that can be use to cause the data to "fine" scroll by a single
pixel.  By combining 7 fine scrolls with a single "coarse" scroll, you can
scroll smoothly over your "scenery".

4.  Of course, the same mechanism can be used to scroll vertically--again
with almost no processor overhead. 

5.  Although the Atari has only 5 color registers, it can be made to
display many more colors.  For each layer, you can instruct the computer
to vector to the Display List Interrupt handler (DLI) of your choice.
If you want the top half of the display to be blues and greens, but the
bottom half to be yellows and reds, all you need is a DLI routine at the
layer before you want the change to occur.  The actual code will be approx.
5 lines.  Of course, if you have lots of DLIs you could have lots of colors.

6.  In addition to all of this "background" graphics stuff, you have
"Player-Missile Graphics".  These are like the C64's sprites, but probably
not as powerful.  They support all the usual collisions between players,
other players, missiles, different background colors, etc.  They can be 8
pixels wide (or bigger if you "stretch" them) and as tall as you like.
They are only a single color, so if you need more than one color you must
put 2 players on top of one another and move them in unison.  Although
there are only 4 players and 4 missiles, it is possible using DLIs and
other stuff to make it look like there are lots more.  This is not as easy
as some of the othere techniques, but is successfully used in lots of
atari games--like the one where the screen looks like a shooting
gallery.

7.  Two of the 16 graphics modes are of special interest.  In addition
to the regular character set (which by the way is easily bypassed and
replaced with the character set of your choice, say, if you would prefer
to see hebrew or greek characters appear on your screen), there are two
"mosaic", multi-color character sets.  You can define your own characters
and each character can have 4 colors in it.  These are really useful if
you would like to define alot of "scenery" but you don't want to use up
the large amount of RAM that high res requires.  These characters give
the same effect as high res, but whenever you want to repeat a pattern
you reuse a previously defined character.  Suppose there is some blue
sky and some green grass in your scenery--using these modes you would
only need 2 characters to display those parts of the scene.  A few dozen
more to describe the details of, say, the car, the person, and the house,
and you are all set.

To sum up, using these techniques, it is pretty straightforward to
create a busy screen that scrolls over a picturesque graphical scene that
is many times taller and wider than the viewport, with a stock market
ticker tape horizontally scrolling quickly past near the top.
You could have a few special purpose cursor running around the screen
controlled by joysticks.  The whole thing might comfortably involve 20
or so colors on the screen simultaneously.  Additionally, you could
instantly switch from this screen layout to a drastically different one
and back again.

A good example of all these techniques is the game "Eastern Front" which
is a war game that repeats the battle between the Germans and the Russians
along Germany's eastern front.  The map of Europe is 4 times as wide as the
screen and 3 times as high.  There are trees and rivers, Russian and German
troop markers, special purpose cursors, status lines with ascii text, and
changes of season that include color changes.  Its pretty spectacular, and
the whole thing fits into 16K.

All this from an OLD box that sells for approx. $200.00 isn't bad.

aaron akman
allegra!hou5h!aaa