Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------
- macro OVERLAY_LINES
- ; not work if (l1 + l2 >= 255)
- ; l2--
- ; (c2 + l2) - c1 < l1 + l2
- dec d
- ld a,h ; l1
- add d ; l2
- ld c,a ; l1+l2
- ld a,e ; c2
- add d ; l2
- sub l ; c1
- cp c ; l1+l2
- jr c,overlay
- ; no overlay = A == 0
- xor a
- ret
- overlay:
- ; overlay = A > 0
- ld a,1
- ret
- endm
- //-----------------------------------------
- macro OVERLAP_RECTANGLES_ANY_SIZE
- ; 58-98tt
- ; 26b
- ; OVERLAY_LINES x 2
- ; upload data
- ; L-x1; H-w1; E-x2; D-w2
- ; exx
- ; L-y1; H-h1; E-y2; D-h2
- ;
- ; ld l,86 ; x1
- ; ld h,11 ; w1
- ; ld e,94 ; x2
- ; ld d,9 ; w2
- ; exx
- ; ld l,172 ; y1
- ; ld h,11 ; h1
- ; ld e,178 ; y2
- ; ld d,12 ; h2
- ; = overlaps (1)
- dec d
- ld a,h
- add d
- ld c,a
- ld a,e
- add d
- sub l
- cp c
- jr nc,noOverlayL
- exx
- dec d
- ld a,h
- add d
- ld c,a
- ld a,e
- add d
- sub l
- cp c
- jr c,overlayL
- noOverlayL:
- xor a
- ret
- overlayL:
- ld a,1
- ret
- endm
- //--------------------------------------------------------------
- macro OVERLAP_RECTANGLES_SAME_SIZE
- ; 82-176tt
- ; 21b
- ; fixed size
- ; HL - address of X1,Y1
- ; DE - address of X2,Y2
- ; C - SIZE
- ld b,2
- pass:
- ld a,(de)
- cp (hl)
- jr nc,aGreater
- ld a,(hl)
- ex de,hl
- aGreater:
- sub (hl)
- cp c
- jr nc,noIntersection
- inc hl
- inc de
- djnz pass
- // a != 0 если было пересечение
- intersect:
- ld a,1
- ret
- noIntersection:
- xor a
- ret
- endm
- //----------------------------------------------------------------------------------------------
- ; uncomment the required utility
- //----------------------------------------------------------------------------------------------
- overlaps:
- ; OVERLAP_RECTANGLES_SAME_SIZE
- ; OVERLAP_RECTANGLES_ANY_SIZE
- //-----------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement