MARIA builds the Atari 7800’s picture one scanline ahead. It fetches instructions and graphics into an internal line buffer while another buffer supplies the line currently being displayed. On the next line, their roles switch. The picture is assembled from lists of pieces, rather than drawn by the CPU into one complete frame buffer. (Atari 7800 Software Guide, general graphics description.)
That gives moving objects a different representation from the Atari 2600’s TIA. It also creates a scheduling problem: MARIA’s memory accesses suspend the main processor, known as SALLY, for the time it needs to fetch the display data.
A list says what goes on the line
A display-list entry identifies graphics data and its horizontal position, with fields controlling how MARIA interprets it. Several pieces can contribute to the same line. Their order matters: later pieces can appear over earlier ones, subject to the data’s transparent pixels and the selected mode.
The guide calls the internal store Line RAM. It is cleared for each line, so pixels not supplied by the list fall back to the background colour. A program cannot assume that yesterday’s line data remains available as a permanent picture to edit. The list and graphics source data have to describe what the next scanline needs.
Lists of lists make zones
A Display List List, or DLL, points to the display lists. Each DLL entry also supplies an offset indicating how many scanlines should use that list. The group of lines is a zone. As the offset changes, the hardware selects successive rows of graphics data, allowing one display list to describe a vertical group rather than requiring a wholly new list for every scanline. (Guide, “Display List List”.)
That reuse saves list memory and reduces the amount of list editing required when objects move. It also imposes a data layout: the guide explains how the row offset participates in the graphics address. Packing artwork without regard to that addressing scheme will not produce the intended object.
Objects spend time, not just slots
A claim of “unlimited sprites” misses the controlling limit. MARIA must read list entries and graphics and finish the line in time. More or more expensive pieces consume more DMA time. That leaves fewer cycles for the CPU, and an overloaded line can run out of time even if enough storage exists for its list.
The 7800 therefore offers a useful comparison with the TMS9918’s fixed four-sprites-per-line rule. MARIA has a more flexible list and a different limiting mechanism. A program still needs to budget the worst crowded line, not just count all the objects spread across the frame.
Sources
- Atari/GCC, Atari 7800 Software Guide: Line RAM, DMA, display lists, DLLs and zones. Preserved guide. This is the principal source for the chip’s programming behaviour.