
* ---	DETECT 2
; kolizje między prostokątami na płaszczyźnie o jednakowych rozmiarach

; ten wariant detekcji jest najszybszy pod warunkiem że kolizja sprawdzana
; jest pomiędzy duchem #0 a duchami #1..#MAX_SPRITES


COLLISION_DETECTION_INIT

	mva	#0	DETECT_UPD.HIT+1
	rts


.proc	DETECT_UPD

	ldx	oldX
	bne	test

* ---	INICJALIZUJEMY TEST ZAPISUJĄC PARAMETRY BOHATERA
* ---
spr0	lda posx
	sub #COLLISION_PRECISION_X
	scs
	lda #0
	sta left+1

	lda posx
	adc #COLLISION_PRECISION_X-1
	sta right+1

	lda posy	; górna krawędź bohatera
	sub #COLLISION_PRECISION_Y
	scs
	lda #0
	sta top+1

	lda posy
	adc #COLLISION_PRECISION_Y-1
	sta bottom+1

	rts

* ---	DETEKCJA KOLIZJI Z BOHATEREM
* ---
test
	lda posx

left	cmp #0
	bcc NOTHIT
right	cmp #0
	bcs NOTHIT

	lda posy

top	cmp #0
	bcc NOTHIT
bottom	cmp #0
	bcs NOTHIT

HIT	ldy	#0

	lda	oldX
	sta	status,y

	inc	HIT+1

NOTHIT	rts

status	:MAX_SPRITES	brk

	.endp
