[atari7800] Re: Lost.... (A7800 basics 1/2)

  • From: "Eric Ball" <ek-ball@xxxxxxxxxx>
  • To: <atari7800@xxxxxxxxxxxxx>
  • Date: Sun, 31 Oct 2004 20:47:00 -0500

Also see //www.freelists.org/archives/atari7800/01-2004/msg00002.html

Cut & paste of some of my recent posts on AtariAge:

You can't compare the graphics capabilities of the 2600 with the 7800. A
2600 game is like a one-armed paper-hanger, trying to update the TIA
registers ahead of the scanline. On the 2600 the CPU does all the work,
while on the 7800 the CPU sets up the display lists and stands back. Sure,
you can use a DLI to update a register or two during the frame, but for the
most part the CPU isn't involved with the graphics.

It's a different paradigm. It's like older FPS which had software 3-D
renderers and modern ones which use OpenGL or D3D and pass off the rendering
(in the form of lists) to the GPU.

Each frame the MARIA GPU loads it's internal display list list (DLL) pointer
from the DPP register. The DLL is made up of a sequence of 3 byte headers
which contain the number of lines in the zone (1-16), some flags, and a
pointer to the display list for the zone.

Each scanline, the GPU reads the display list, which is a sequence of 4 or 5
byte headers with a 2 byte terminator. Each header contains a pointer to
either a sprite or a tile list along with an X position, a width (number of
bytes/tiles), a palette (0-7) and some flags. Each byte in the tile list is
used as the LSB of a sprite pointer with the MSB being a GPU register.

The sprites are bitmapped graphics stored (in ROM) upside down with each
line on a separate 256 byte page. The bit to pixel color relationship
depends on the graphics mode and can be quite bizarre.

The display lists and display list list are stored in RAM for access speed
reasons. (RAM takes 2 cycles/byte to access, while ROM requires 3
cycles/byte.) The DLL is typically static, but the display lists are often
completely recreated each frame (a CPU intensive process). The display lists
also chew up a bunch of RAM.



Other related posts:

  • » [atari7800] Re: Lost.... (A7800 basics 1/2)