home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src5.dms / in.adf / sprites < prev    next >
Encoding:
Text File  |  1990-05-07  |  3.6 KB  |  200 lines

  1. OPENLIB:   EQU -408
  2. ALLOCMEM:  EQU -198
  3. FREEMEM:   EQU -210
  4. MEMF_CHIP: EQU $150002
  5.  
  6. SPRGFX:       MACRO
  7.     DC.L    $908CA000
  8.     DC.W    $0000,$07E0
  9.     DC.W    $0000,$1FF8
  10.     DC.W    $0000,$3FFC
  11.     DC.W    $0C00,$7FFE
  12.     DC.W    $1C00,$7FFE
  13.     DC.W    $1801,$FFFE
  14.     DC.W    $0001,$FFFE
  15.     DC.W    $0001,$FFFE
  16.     DC.W    $0003,$FFFC
  17.     DC.W    $0003,$FFFC
  18.     DC.W    $0007,$FFF8
  19.     DC.W    $0006,$7FF8
  20.     DC.W    $000E,$7FF0
  21.     DC.W    $003C,$3FC0
  22.     DC.W    $00F8,$1F00
  23.     DC.W    $07E0,$0000
  24.     DC.L    $00000000
  25.     ENDM
  26.  
  27. BEGIN:        MOVEM.L D0-D7/A0-A6,-(SP)
  28.     MOVE.L    $4.W,A6
  29.     MOVE.L    #COPSIZE+SPRSIZE,D0
  30.     MOVE.L    #MEMF_CHIP,D1
  31.     JSR ALLOCMEM(A6)
  32.     MOVE.L    D0,NEWCOPPER
  33.     BEQ.W    ALLOCERROR
  34.     ADD.L    #COPSIZE,D0
  35.     MOVE.L    D0,SPRPTR
  36.  
  37.     LEA.L    SPR0PTR+2(PC),A0
  38.     MOVE.L    D0,D7
  39.     MOVEQ    #7,D6
  40. INITSPR:    SWAP    D7
  41.     MOVE.W  D7,(A0)
  42.     SWAP    D7
  43.     MOVE.W    D7,4(A0)
  44.     ADDQ.L    #8,A0
  45.     ADD.L    #4+64+4,D7
  46.     DBF D6,INITSPR
  47.  
  48.     MOVE.L    NEWCOPPER(PC),A0
  49.     LEA.L    COPPERLIST(PC),A1
  50.     MOVE.W    #COPSIZE+SPRSIZE-1,D7
  51. MOVETOCHIP:  MOVE.B  (A1)+,(A0)+
  52.     DBF D7,MOVETOCHIP
  53.  
  54.     LEA.L    GFXNAME(PC),A1
  55.     JSR OPENLIB(A6)
  56.     TST.L    D0
  57.     BEQ.W    GFXERROR
  58.     MOVE.L    D0,A0
  59.     MOVE.L    $26(A0),OLDCOPPER
  60.     MOVE.W    #$4000,$DFF09A
  61. DISABLE:    TST.B   $DFF006
  62.     BNE.S    DISABLE
  63.     MOVE.W    $DFF002,DMABITS
  64.     BSET    #7,DMABITS
  65.     MOVE.W    #$7FFF,$DFF096
  66.     MOVE.W    #$83A0,$DFF096
  67.  
  68.     MOVE.L    NEWCOPPER(PC),$DFF080
  69.     MOVE.W    $DFF00A,OLDMOUSE
  70.  
  71. MAIN:        BTST    #6,$BFE001
  72.     BEQ.W   EXIT
  73. SYNC:        CMP.B   #$FF,$DFF006
  74.     BNE.S    SYNC
  75.  
  76.     MOVE.W    $DFF00A,NEWMOUSE
  77.     MOVE.B    NEWMOUSE(PC),D0
  78.     SUB.B    OLDMOUSE(PC),D0
  79.     ADD.B    D0,NEWPOS
  80.     MOVE.B    NEWMOUSE+1(PC),D0
  81.     SUB.B    OLDMOUSE+1(PC),D0
  82.     ADD.B    D0,NEWPOS+1
  83.     MOVE.W    NEWMOUSE(PC),OLDMOUSE
  84.  
  85.     CMP.B    #$30,NEWPOS
  86.     BCC.S    TOPOK
  87.     MOVE.B    #$30,NEWPOS
  88. TOPOK:        CMP.B   #$F0,NEWPOS
  89.     BCS.S   BOTTOMOK
  90.     MOVE.B    #$F0,NEWPOS
  91. BOTTOMOK:   CMP.B   #$50,NEWPOS+1
  92.     BCC.S    LEFTOK
  93.     MOVE.B    #$50,NEWPOS+1
  94. LEFTOK:        CMP.B   #$C8,NEWPOS+1
  95.     BCS.S    RIGHTOK
  96.     MOVE.B    #$C8,NEWPOS+1
  97. RIGHTOK:
  98.     LEA.L    POSTBL(PC),A0
  99.     MOVEQ    #31,D7
  100. SCROLLTBL:  MOVE.W  2(A0),(A0)+
  101.     DBF D7,SCROLLTBL
  102.  
  103.     LEA.L    NEWPOS(PC),A0
  104.     MOVE.L    SPRPTR(PC),A1
  105.     MOVEQ    #7,D7
  106. REFRESHPOS: MOVE.W  (A0),(A1)
  107.     MOVE.B    (A1),2(A1)
  108.     ADD.B    #16,2(A1)
  109.     SUBQ.L    #8,A0
  110.     ADD.L    #4+64+4,A1
  111.     DBF D7,REFRESHPOS
  112.  
  113.     BRA.W    MAIN
  114.  
  115.  
  116. EXIT:    MOVE.L    OLDCOPPER(PC),$DFF080
  117.     MOVE.W    #$7FFF,$DFF096
  118.     MOVE.W    DMABITS(PC),$DFF096
  119.     MOVE.W    #$C000,$DFF09A
  120. GFXERROR:   MOVE.L  NEWCOPPER(PC),A1
  121.     MOVE.L    #COPSIZE+SPRSIZE,D0
  122.     JSR FREEMEM(A6)
  123. ALLOCERROR: MOVEM.L  (SP)+,D0-D7/A0-A6
  124.     RTS
  125. OLDCOPPER:  DC.L    0
  126. NEWCOPPER:  DC.L    0
  127. SPRPTR:        DC.L    0
  128. DMABITS:    DC.W    0
  129. OLDMOUSE:   DC.W    0
  130. NEWMOUSE:   DC.W    0
  131. POSTBL:        DC.W    $908C,$908C,$908C,$908C
  132.     DC.W    $908C,$908C,$908C,$908C
  133.     DC.W    $908C,$908C,$908C,$908C
  134.     DC.W    $908C,$908C,$908C,$908C
  135.     DC.W    $908C,$908C,$908C,$908C
  136.     DC.W    $908C,$908C,$908C,$908C
  137.     DC.W    $908C,$908C,$908C,$908C
  138.     DC.W    $908C,$908C,$908C,$908C
  139. NEWPOS:        DC.W    $908C
  140. GFXNAME:    DC.B    'graphics.library',0
  141. EVEN
  142.  
  143. COPPERLIST: DC.W    $008E,$30A1
  144.     DC.W    $0090,$00A1
  145.     DC.W    $0092,$0048
  146.     DC.W    $0094,$00C0
  147.     DC.W    $0100,$1000
  148.     DC.W    $0102,$0000
  149.     DC.W    $0104,$003F
  150.     DC.W    $0108,$0000
  151.     DC.W    $010A,$0000
  152.  
  153. SPR0PTR:    DC.W    $0120,$0000
  154.     DC.W    $0122,$0000
  155. SPR1PTR:    DC.W    $0124,$0000
  156.     DC.W    $0126,$0000
  157. SPR2PTR:    DC.W    $0128,$0000
  158.     DC.W    $012A,$0000
  159. SPR3PTR:    DC.W    $012C,$0000
  160.     DC.W    $012E,$0000
  161. SPR4PTR:    DC.W    $0130,$0000
  162.     DC.W    $0132,$0000
  163. SPR5PTR:    DC.W    $0134,$0000
  164.     DC.W    $0136,$0000
  165. SPR6PTR:    DC.W    $0138,$0000
  166.     DC.W    $013A,$0000
  167. SPR7PTR:    DC.W    $013C,$0000
  168.     DC.W    $013E,$0000
  169.  
  170.     DC.W    $0180,$000
  171.     DC.W    $0182,$000
  172.     DC.W    $01A2,$900
  173.     DC.W    $01A4,$C00
  174.     DC.W    $01A6,$F00
  175.     DC.W    $01AA,$770
  176.     DC.W    $01AC,$AA0
  177.     DC.W    $01AE,$DD0
  178.     DC.W    $01B2,$050
  179.     DC.W    $01B4,$080
  180.     DC.W    $01B6,$0B0
  181.     DC.W    $01BA,$003
  182.     DC.W    $01BC,$006
  183.     DC.W    $01BE,$009
  184.  
  185.     DC.W    $FFFF,$FFFE
  186. COPEND:
  187. COPSIZE:   EQU COPEND-COPPERLIST
  188. SPRSIZE:   EQU 8*(4+64+4)
  189.  
  190. SPRITES:   SPRGFX
  191.     SPRGFX
  192.     SPRGFX
  193.     SPRGFX
  194.     SPRGFX
  195.     SPRGFX
  196.  
  197.     SPRGFX
  198.     SPRGFX
  199.  
  200.