Jump to content
IGNORED

Display List List Help... Quick Explanation?


PacManPlus

Recommended Posts

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.

Link to comment
Share on other sites

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.atarimuseum.com/ahs_archives/archives/pdf/videogames/7800/7800_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 ;)

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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. :)

Link to comment
Share on other sites

  • 2 weeks later...

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)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...