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