; "Rainbow with glitter" demo
; for "FastLED6502"
;
; Runs on an Apple ][, ][+, //e, or //gs
;
; Supports APA102, Adafruit DotStar,
; LPD8806, and WS2801 LED strips.
;
; LED strip connects to game port pins,
; see FastLED6502.s65 for details.
;
; Mark Kriegsman, February 2015

#define NUM_LEDS 	100
#define BRIGHTNESS 	64
#define CHIPSET  	APA102
#define DATA_PIN 	14 
#define CLOCK_PIN 	5
 
	* = $6000

#include "FastLED6502.s65"
#include "AppleII.s65"

gHue	  .byt 0
gHueDelta .byt 17
gHueSpeed .byt 7


Setup	
	lda #0
	sta gHue
	
Loop
	lda gHue
	clc
	adc gHueSpeed
	sta gHue
	ldx gHue
	ldy gHueDelta
; Fill RGB array with HSV rainbow
	jsr FastLED_FillRainbow_XY
; Use master brightness control
	lda #BRIGHTNESS
	sta FastLED_Brightness	
CheckOpenApple
	bit OpenApple
	bpl CheckSolidApple
; Add glitter if requested
	jsr AddGlitter		
CheckSolidApple
	bit SolidApple
	bpl DoDisplay
; Pulse brightness if requested
	jsr PulseBrightness
DoDisplay
; This is where the magic happens
	jsr FastLED_Show	
	jmp Loop


AddGlitter
	ldy #3
MaybeAdd1Glitter
	jsr FastLED_Random8
	cmp FastLED_NumPixels
	bcs SkipThis1Glitter
	tax
	lda #$FF
	sta ledsR,x
	sta ledsG,x
	sta ledsB,x
SkipThis1Glitter
	dey
	bne MaybeAdd1Glitter
	rts
	
	
PulseBrightness
	lda #13
	jsr FastLED_Beat8
	clc
	adc #12
	bcc PulseBright1
	lda #$FF
PulseBright1
	sta FastLED_Brightness
	rts
	