home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 82 / asm / source / crash / sprtest.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  2.4 KB  |  122 lines

  1. ;────────────────────────────────────────────────────────────────────────────
  2. ;                    SpriteClip v1.2 by CrASH_Man                   02/14/98
  3. ;────────────────────────────────────────────────────────────────────────────
  4. ;
  5. ;   This is some example source for CrASH v1.3 to test the sprite clipping
  6. ; routines inside SPRCLIP.ASM.
  7. ;
  8. ;   Will not run if an interrupt is loaded.
  9. ;
  10. ;   The arrow keys will move the sprite.
  11. ;   2nd slows down the sprite.
  12. ;   Mode quits.
  13. ;
  14. ;                                                               by CrASH_Man
  15.  
  16. DefaultSpriteHeight = 8
  17.  
  18. .INCLUDE CrASH82.INC
  19. .DB "Sprite Test v1.2", 0
  20.  
  21.   LD  A, (INT_STATE)
  22.   OR  A \ RET NZ
  23.  
  24. ; Clear the screen
  25.   LD  HL, APD_BUF               ; Fill APD_BUF
  26.   LD  DE, APD_BUF+1
  27.   LD  BC, 768
  28.   LD  (HL), 0
  29.   LDIR
  30.  
  31. ; Make the screen
  32.   LD  A, %11111111
  33.   LD  HL, APD_BUF
  34.   LD  (HL), A
  35.   INC HL
  36.   LD  (HL), A
  37.   INC HL
  38.   LD  (HL), A
  39.   LD  HL, APD_BUF+11
  40.   LD  (HL), A
  41.   DEC HL
  42.   LD  (HL), A
  43.   DEC HL
  44.   LD  (HL), A
  45.   LD  HL, APD_BUF
  46.   LD  DE, APD_BUF+12
  47.   LD  BC, 12*19                 ; 19 rows
  48.   LDIR
  49.   LD  HL, APD_BUF
  50.   LD  DE, APD_BUF+528
  51.   LD  BC, 12*20                 ; 20 rows
  52.   LDIR
  53.  
  54.   LD  BC, $2C1C                 ; Center Sprite (44, 28)
  55. KeyLoop:
  56.   PUSH BC                       ; Save coordinates for sprite
  57.   LD  HL, APD_BUF \ LD  DE, GRAPH_MEM \ LD  BC, 768 \ LDIR
  58.   POP BC
  59.  
  60.   LD  HL, Spr                   ; Point to sprite
  61.   CALL PutSprClp
  62.   CALL CR_GRBCopy
  63.  
  64.   LD  A, $FF \ OUT ($01), A     ; Reset Port
  65.   LD  A, $BF \ OUT ($01), A     ; Mask out MODE and 2nd
  66.   IN  A, ($01)
  67.   BIT 6, A \ RET Z              ; If MODE pressed, done
  68.   BIT 5, A \ CALL Z, Delay      ; If 2nd pressed, delay
  69.  
  70.   LD  A, $FF \ OUT ($01), A     ; Reset Port
  71.   LD  A, $FE \ OUT ($01), A     ; Mask out Arrows
  72.   IN  A, ($01)
  73.   BIT 0, A \ CALL Z, Down
  74.   BIT 3, A \ CALL Z, Up
  75. Horiz:
  76.   BIT 1, A \ CALL Z, Left
  77.   BIT 2, A \ CALL Z, Right
  78.  
  79.   JR  KeyLoop
  80.  
  81. Delay:
  82.   LD  DE, $3000
  83. _DelLoop:
  84.   DEC DE
  85.   LD  A, D
  86.   OR  E
  87.   JR  NZ, _DelLoop
  88.   RET
  89. Up:
  90.   DEC C
  91.   RET
  92. Down:
  93.   INC C
  94.   RET
  95. Left:
  96.   DEC B
  97.   RET
  98. Right:
  99.   INC B
  100.   RET
  101.  
  102. .INCLUDE SPRCLIP.ASM
  103.  
  104. Spr:
  105. .DB  %11100111 ; AND mask
  106. .DB  %11000011
  107. .DB  %10000001
  108. .DB  %00011000
  109. .DB  %00011000
  110. .DB  %10000001
  111. .DB  %11000011
  112. .DB  %11100111
  113.  
  114. .DB  %00011000 ; XOR mask
  115. .DB  %00100100
  116. .DB  %01000010
  117. .DB  %10011001
  118. .DB  %10011001
  119. .DB  %01000010
  120. .DB  %00100100
  121. .DB  %00011000
  122.