Product specifications

With an OFFSET value of 4 the routines below are designed to detect impact between
8 and 9 bit sprites within a central area of 4 pixels
;
; IMPACT-TEST FOR IMPACT BETWEEN SPRITE 0
; AND ANY OTHER ON SCREEN SPRITES
;
; THE VRAM START ADDRESS OF THE SPRITE
; ATTRIBUTE TABLE IS HELD IN THE TWO BYTE LOCATION
; SATSAD (SPRITE ATTRIBUTE TABLE START ADDRESS)
; - - - - - -
;
; NO REGISTER SET UP REQUIRED ON ENTRY
; NO REGISTERS AFFECTED ON EXIT
;
; IF IMPACT TRUE THEN VARIABLE TRUFAL = 1
; ELSE TRUFAL = 0
;
; IF TRUFAL = 1 THEN 7 BYTE TABLE IMPSPR CONTAINS
;
; 1) OFFENDING SPRITE NUMBER - BYTE 1
; 2) OFFENDING SPRITE VRAM ADDRESS - BYTE 2,3
; 3) OFFENDING SPRITE X COORD - BYTE 4
; 4) OFFENDING SPRITE Y COORD - BYTE 5
; 5) OFFENDING SPRITE PATTERN NUMBER - BYTE 6
; 6) OFFENDING SPRITE COLOUR - BYTE 7
;
SATSAD: DW £1000 ;See description above
TRUFAL: DB 0 ;See description above
;
IMSPR: DB 0 ;See description above
DB 0,0 :See description above
DB 0 ;See description above
DB 0 ;See description above
DB 0 ;See description above
DB 0 ;See description above
;
IMPACT: PUSH AF ;Save old Acc and flags
PUSH BC ;Save old BC register pair
PUSH DE ;Save old DE register pair
PUSH HL ;Save old HL register pair
PUSH IX ;Save old IX register pair
;
LD DE,(SATSAD) ;Set read from VRAM pointer
CALL VSETRD ;to start of sprite attribute table
LD A,0 ;Set impact true/false byte
LD (TRUFAL),A ;to false
CALL VDINPT ;Read sprite 0 X/Y coords
LD E,C ;from VRAM sprite attribute
CALL VDINPT ;table into DE register pair
LD D,C ;Register D = X coord
;Register E = Y coord