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

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