; particle effect? -- Apple II Lores

; by Vince `deater` Weaver

PARTICLES = 32
SCALE = 2

;HGR_BITS	= $1C
;COLOR		= $30
;SEEDLO		= $43
;SEEDHI		= $44
;HGR_COLOR	= $E4

;QUOTIENT	= $FA
;DIVISOR		= $FB
;DIVIDEND	= $FC
;XX		= $FD
;YY		= $FE
;FRAME		= $FF

;FULLGR		= $C052
;LORES		= $C056		; Enable LORES graphics

;HGR2		= $F3D8
;HGR		= $F3E2
;HPLOT0		= $F457		; plot at (Y,X), (A)
;PLOT		= $F800		; PLOT AT Y,A (A colors output, Y preserved)
;SETGR		= $FB40
;WAIT		= $FCA8		; delay 1/2(26+27A+5A^2) us

particle_x	= $800
particle_y	= $880
particle_life	= $900
particle_vx	= $980
particle_vy	= $a00


init_particles:

	; init

	ldx	#PARTICLES
init_particles_loop:
	jsr	init_particle
	dex
	bpl	init_particles_loop

	rts


hgr_draw_particles:
	lda	#0
	sta	HGR_COLOR

	ldx	#PARTICLES
clear_loop:

	txa
	pha
	tay

	ldx	particle_x,Y
	lda	particle_y,Y
	ldy	#0
	jsr	HPLOT0			; plot at (Y,X), (A)

	pla
	tax

	dex
	bpl	clear_loop



	; move particles
	; draw particles
	ldx	#PARTICLES
draw_particles_loop:

	; adjust x

	lda	particle_x,X
	clc
	adc	particle_vx,X
	sta	particle_x,X
;	bmi	redo_particle
;	cmp	#40*SCALE
;	bcs	redo_particle

	; adjust y

	; first adjust for gravity
	inc	particle_vy,X
;	inc	particle_vy,X

	lda	particle_y,X
	clc
	adc	particle_vy,X
	sta	particle_y,X
;	bmi	redo_particle
	cmp	#191
	bcc	y_good

redo_particle:
	jsr	init_particle

y_good:
	dec	particle_life,X
	beq	redo_particle

	lda	#$ff
	sta	HGR_COLOR

;	lda	particle_life,X
;	sta	HGR_COLOR
;	sec
;	sbc	#$11
;	sta	particle_life,X
;	cmp	#$ef
;	beq	redo_particle

	txa
	pha
	tay

	ldx	particle_x,Y
	lda	particle_y,Y
	ldy	#0
	jsr	HPLOT0			; plot at (Y,X), (A)

	pla
	tax

	dex
	bpl	draw_particles_loop

	rts


HPLOT0:
;	line from (x,a) to (x+y,a)

	ldy	#4
	jsr	hgr_hlin

	rts



	; init particle
	; particle in X
init_particle:

	; source

;	lda	#128			; init x

	ldy	CURRENT_LEMMING

	lda	lemming_x,Y
	asl
	adc	lemming_x,Y
	asl
	adc	lemming_x,Y		; mul by 7

	sta	particle_x,X

	lda	lemming_y,Y
;	lda	#100			; init y
	sta	particle_y,X

	; color
	lda	#$ff
	sta	particle_life,X

	; velocities
	; -8 to 8?

	jsr	random
	cmp	#$80
	ror

	sta	particle_vx,X

	jsr	random
	ora	#$f0
	sta	particle_vy,X

	rts


	; -8 to 8
	; batari RNG

random:
	lda	SEEDHI
	lsr
	rol	SEEDLO
	bcc	noeor
	eor	#$B4
noeor:
	sta	SEEDHI
	eor	SEEDLO

	and	#$f
	sec
	sbc	#$8

	rts




