;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; SpriteClip v1.2 by CrASH_Man 02/14/98 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ; This is some example source for CrASH v1.3 to test the sprite clipping ; routines inside SPRCLIP.ASM. ; ; Will not run if an interrupt is loaded. ; ; The arrow keys will move the sprite. ; 2nd slows down the sprite. ; Mode quits. ; ; by CrASH_Man DefaultSpriteHeight = 8 .INCLUDE CrASH82.INC .DB "Sprite Test v1.2", 0 LD A, (INT_STATE) OR A \ RET NZ ; Clear the screen LD HL, APD_BUF ; Fill APD_BUF LD DE, APD_BUF+1 LD BC, 768 LD (HL), 0 LDIR ; Make the screen LD A, %11111111 LD HL, APD_BUF LD (HL), A INC HL LD (HL), A INC HL LD (HL), A LD HL, APD_BUF+11 LD (HL), A DEC HL LD (HL), A DEC HL LD (HL), A LD HL, APD_BUF LD DE, APD_BUF+12 LD BC, 12*19 ; 19 rows LDIR LD HL, APD_BUF LD DE, APD_BUF+528 LD BC, 12*20 ; 20 rows LDIR LD BC, $2C1C ; Center Sprite (44, 28) KeyLoop: PUSH BC ; Save coordinates for sprite LD HL, APD_BUF \ LD DE, GRAPH_MEM \ LD BC, 768 \ LDIR POP BC LD HL, Spr ; Point to sprite CALL PutSprClp CALL CR_GRBCopy LD A, $FF \ OUT ($01), A ; Reset Port LD A, $BF \ OUT ($01), A ; Mask out MODE and 2nd IN A, ($01) BIT 6, A \ RET Z ; If MODE pressed, done BIT 5, A \ CALL Z, Delay ; If 2nd pressed, delay LD A, $FF \ OUT ($01), A ; Reset Port LD A, $FE \ OUT ($01), A ; Mask out Arrows IN A, ($01) BIT 0, A \ CALL Z, Down BIT 3, A \ CALL Z, Up Horiz: BIT 1, A \ CALL Z, Left BIT 2, A \ CALL Z, Right JR KeyLoop Delay: LD DE, $3000 _DelLoop: DEC DE LD A, D OR E JR NZ, _DelLoop RET Up: DEC C RET Down: INC C RET Left: DEC B RET Right: INC B RET .INCLUDE SPRCLIP.ASM Spr: .DB %11100111 ; AND mask .DB %11000011 .DB %10000001 .DB %00011000 .DB %00011000 .DB %10000001 .DB %11000011 .DB %11100111 .DB %00011000 ; XOR mask .DB %00100100 .DB %01000010 .DB %10011001 .DB %10011001 .DB %01000010 .DB %00100100 .DB %00011000