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.