Jump to content
Sign in to follow this  
PacManPlus

Display List List Help... Quick Explanation?

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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 ;)

Share this post


Link to post
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

Share this post


Link to post
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. :)

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
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.

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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...