home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / falcon / falclib6.lzh / ROUTS / TRUESPR.S < prev    next >
Encoding:
Text File  |  1995-02-24  |  1.6 KB  |  109 lines

  1. *
  2. * This routine draws a true colour sprite. It draws both
  3. * packed and unpacked sprites. Clipping isn't supported yet.
  4. * The sprite must be created using the Spooky Sprites sprite creator.
  5. *
  6. * Made by Johan Karlsson (d92jk@efd.lth.se)
  7. *
  8. *
  9. * In    a0.l=address to sprite file
  10. *    a1.l=screenadr
  11. *    d0.l=sprite nbr.
  12. *    d1.l=xpos
  13. *    d2.l=ypos
  14. *    xres equ screenwidth in pixels
  15. *    yres equ height of display
  16. *    (destroys d0-d7/a0-a3)
  17. *
  18.  
  19.  
  20. @truespr    move.l    a0,a3
  21.         add.l    #10,a0
  22.         move    d0,d3
  23.         asl    #3,d0
  24.         add    d3,d0
  25.         add    d3,d0
  26.         add.l    d0,a0
  27.     
  28.         tst    d2
  29.         blt    .minusy
  30.         tst    d1
  31.         blt    .minusx
  32.         moveq    #0,d3
  33.         move.b    (a0),d3
  34.         add    d1,d3
  35.         cmp    #xres,d3
  36.         bgt    .plusx
  37.         moveq    #0,d3
  38.         move.b    1(a0),d3
  39.         add    d2,d3
  40.         cmp    #yres,d3
  41.         bgt    .plusy
  42.         
  43. .noclip    
  44.         ifeq    xres-768
  45.         lsl.l    #8,d2
  46.         add.l    d2,a1
  47.         add.l    d2,a1
  48.         lsl.l    #2,d2
  49.         add.l    d2,a1
  50.         endc
  51.         ifne    xres-768
  52.         mulu    #xres*2,d2
  53.         add.l    d2,a1
  54.         endc
  55.  
  56.         add.l    d1,a1
  57.         add.l    d1,a1
  58.     
  59.         move.l    6(a0),a2
  60.         tst.l    a2
  61.         beq    .unpacked
  62.  
  63.  
  64. .packed        add.l    a3,a2
  65.         move    (a2)+,d3
  66.         moveq    #0,d4
  67. .loop1        move    (a2)+,d4
  68.         add.l    d4,a1
  69.         move    (a2)+,d5
  70. .loop2        move    (a2)+,(a1)+
  71.         dbra    d5,.loop2
  72.         dbra    d3,.loop1
  73.         rts
  74.     
  75.     
  76. .unpacked
  77.         moveq    #0,d3
  78.         move.b    1(a0),d3
  79.         subq    #1,d3
  80.         moveq    #0,d4
  81.         move.b    (a0),d4
  82.         move.l    #xres*2,d7
  83.         sub    d4,d7
  84.         sub    d4,d7
  85.         sub    #1,d4
  86.         move.l    2(a0),a2    
  87.         add.l    a3,a2
  88. .loopen
  89.         move    d4,d5
  90. .loop        move    (a2)+,d6
  91.         beq    .tran
  92.         move    d6,(a1)+
  93.         dbra    d5,.loop
  94.         add.l    d7,a1
  95.         dbra    d3,.loopen
  96.         rts    
  97. .tran        addq.l    #2,a1
  98.         dbra    d5,.loop
  99.         add.l    d7,a1
  100.         dbra    d3,.loopen
  101.         rts
  102.  
  103.  
  104. .minusy        rts
  105. .plusy        rts
  106. .minusx        rts
  107. .plusx        rts
  108.  
  109.