Jump to content



0

Display List List Help... Quick Explanation?


5 replies to this topic

#1 PacManPlus OFFLINE  

PacManPlus

    River Patroller

  • 3,320 posts
  • Location:Naples, Florida

Posted Thu Apr 6, 2006 3:34 PM

Can anyone give me a quick explanation (no wisecracks, please) of how the Display List (and Display List List) works? I think that's one of the things I am missing from being able to attempt writing homebrews for the 7800... and I'd like to make a game or port on my own :)

Thanks guys.

#2 danwinslow OFFLINE  

danwinslow

    Stargunner

  • 1,748 posts

Posted Thu Apr 6, 2006 3:58 PM

Does the 7800 use the same kind of setup as the 5200? I thought it was more like a 2600. But at any rate your best bet is to go browse www.atariarchives.org, TONS of info online there.

Edited by danwinslow, Thu Apr 6, 2006 3:59 PM.


#3 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Thu Apr 6, 2006 4:21 PM

View PostPacManPlus, on Thu Apr 6, 2006 11:34 PM, said:

Can anyone give me a quick explanation (no wisecracks, please) of how the Display List (and Display List List) works? I think that's one of the things I am missing from being able to attempt writing homebrews for the 7800... and I'd like to make a game or port on my own :)

Thanks guys.
Hi,

did you read the 7800 Software Guide? (http://www.atarimuse...00_software.pdf)
I think it explains quite well how the DL+DLL work.
The main concept is that the display is divided into zones.
A Display List List entry defines a zone by the number of lines and points to the beginning of a list of display list entry’s which defines the objects.
Well I guess the guide explains it better ;)

#4 PacManPlus OFFLINE  

PacManPlus

    River Patroller

  • 3,320 posts
  • Location:Naples, Florida

Posted Thu Apr 6, 2006 4:59 PM

DOH!

I actually have the Video 61 / Harry Monitor Cartridge... I believe that PDF is in there now that I think about it.

Sorry guys - didn't mean to bug with something I already had :(

Thanks,
Bob

Edited by PacManPlus, Thu Apr 6, 2006 4:59 PM.


#5 jbanes OFFLINE  

jbanes

    River Patroller

  • 3,074 posts
  • Coming soon to a natural satellite near you...

Posted Thu Apr 6, 2006 6:40 PM

Ok, very simply.

For each scanline, there is a list of instructions on how to draw that line. This is called the Display List. Each item in the list specifies how many pixels per byte (1 or 2), how many iterations of those pixels should be pulled from memory, and where on the scanline to start drawing. It also specifies which palette to use (3 colors for each of the 8 palettes). When executed, the Maria will execute these instructions to fill in the scanline.

Given that there's more than one scanline, a Display List List is used to hold pointers to each Display List. Each DLL entry can specify how many scanlines a given display list should be used on. The Display List instructions will automatically use the line counter (called "offset") to pull the next line of data in each sprite. Thus a 16 line DLL entry would draw a 16 pixel high sprite.

Finally, an absolute address to the DLL is placed in two registers, and DMA is enabled. The 7800 will then execute those display instructions every frame, whether your program does anything useful or not.

If anyone has any additions, corrections, or comments, feel free to speak up. :)

#6 EricBall OFFLINE  

EricBall

    Dragonstomper

  • 711 posts
  • Location:Markham, Ontario, Canada

Posted Sun Apr 16, 2006 4:14 PM

Yup, that's about it. I usually think of it in the other order (DLL pointer -> DLL -> DLL entry -> Display List -> Display List Entry....), but that's just how I think.

DLL entries define four things:
1. the height (number of lines) in the "zone"
2. a pointer to the display list used for that zone
3. whether an NMI is thrown after the completion of the previous DLL
4. whether 2K or 4K holey DMA is enabled (or not)




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users