[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

Each of the eight sprite  DMA channels  can produce more than one
independently controllable image. There may be times when you want more
than eight objects, or you may be left with fewer than eight objects
because you have  attached  some of the sprites to produce more colors or
larger objects or  overlapped  some to produce more complex images. You
can reuse each sprite  DMA channel  several times within the same display
field, as shown in Figure 4-9.


          Part of a screen display
          ________________________
         |                        |
         |              _         |
         |            _|_|_       |
         |            \___/_ _ _ _|_ _     Each image of this sprite may
         |     _ _ _ _ _ _ _ _ _ _|_ _ <-- be placed at any desired spot,
         |   _/_\_                |        horizontally or vertically.
         |  |_____|               |        however, at least one video
         |    \_/_ _ _ _ _ _ _ _ _|_ _     line must seperate the bottom
         |             _ _ _ _ _ _|_ _ <-- of one usage of a sprite from
         |           /\           |        the starting point of the next
         |           \/           |        usage.
         |                        |
         |                        |
         |                        |
         |                        |
         |                        |
         |________________________|


               Figure 4-9: Typical Example of Sprite Reuse


In single-sprite usage, two all-zero words are placed at the end of the
 data structure  to stop the DMA channel from retrieving any more data for
that particular sprite during that display field. To reuse a DMA channel,
you replace this pair of zero words with another complete sprite
 data structure , which describes the reuse of the DMA channel at a
position lower on the screen than the first use. You place the two
all-zero words at the end of the  data structure  that contains the
information for all usages of the DMA channel. For example, Figure 4-10
shows the  data structure  that describes the picture above.


              SPRITE DISPLAY LIST
          ___________________________ - -
      |  |                           |   |
         |___________________________|
      |  |                           |   |
         |___________________________|
      |                                  |
          ___________________________
      |  |                           |   |
         |___________________________|
      |  |                           |   |
         |___________________________|          Data describing the
      |                                  |- - - first vertical usage of
               ------                           this sprite
      |        ------                    |
               ------
      |   ___________________________    |
         |                           |
      |  |___________________________|   |
         |                           |
      |  |___________________________|   |
                                      - -
  Increasing
  RAM memory
  addresses
          ___________________________ - -
      |  |                           |   |      Data describing the
         |___________________________|          second vertical usage of
      |  |                           |   |- - - this sprite. Contents of
         |___________________________|          vertical start word must
      |                                  |      be at least one video
          ___________________________           line below actual end of
      |  |                           |   |      preceding usage.
         |___________________________|
      |  |                           |   |
         |___________________________|
      |                                  |
               ------
      |        ------                    |
               ------
      |   ___________________________    |
         |                           |
      |  |___________________________|   |- - - End-of-data words ending
         |                           |          the usage of this sprite
     \|/ |___________________________|   |
                                      - -

          Figure 4-10: Typical Data Structure for Sprite Re-use


The only restrictions on the reuse of sprites during a single display
field is that the bottom line of one usage of a sprite must be separated
from the top line of the next usage by at least one horizontal scan line.
This restriction is necessary because only two DMA cycles per horizontal
scan line are allotted to each of the eight channels. The sprite channel
needs the time during the blank line to fetch the  control word 
describing the next usage of the sprite.


The following example displays the spaceship sprite and then redisplays it
as a different object. Only the sprite data list is affected, so only the
data list is shown here. However, the sprite looks best with the
 color registers  set as shown in the example.

        LEA     CUSTOM,a0
        MOVE.W  #$0F00,COLOR17(a0)      ;Color 17 = red
        MOVE.W  #$0FF0,COLOR18(a0)      ;Color 18 = yellow
        MOVE.W  #$0FFF,COLOR19(a0)      ;Color 19 = white
SPRITE:
        DC.W    $6D60,$7200
        DC.W    $0990,$07E0
        DC.W    $13C8,$0FF0
        DC.W    $23C4,$1FF8
        DC.W    $13C8,$0FF0
        DC.W    $0990,$07E0
        DC.W    $8080,$8D00     ;VSTART, HSTART, VSTOP for new sprite
        DC.W    $1818,$0000
        DC.W    $7E7E,$0000
        DC.W    $7FFE,$0000
        DC.W    $FFFF,$2000
        DC.W    $FFFF,$2000
        DC.W    $FFFF,$3000
        DC.W    $FFFF,$3000
        DC.W    $7FFE,$1800
        DC.W    $7FFE,$0C00
        DC.W    $3FFC,$0000
        DC.W    $0FF0,$0000
        DC.W    $03C0,$0000
        DC.W    $0180,$0000
        DC.W    $0000,$0000     ;End of sprite data