; rotozoom with cycling plasma texture
;

; TODO:
;	make angle 64 degrees?
;	remove scaling step?
;	cycle between all four color schemes?



.include "zp.inc"
.include "hardware.inc"

	;================================
	; Clear screen and setup graphics
	;================================

	jsr	HOME
	bit	PAGE0			; set page 0
	bit	LORES			; Lo-res graphics
	bit	FULLGR			; mixed gr/text mode
	bit	SET_GR			; set graphics

	lda	#0
	sta	DISP_PAGE
	lda	#4
	sta	DRAW_PAGE

	;===================================
	; Clear top/bottom of page 0 and 1
	;===================================

;	jsr	clear_screens

	;===================================
	; init the multiply tables
	;===================================

	jsr	init_multiply_tables

	;======================
	; init plasma texture
	;======================

	jsr	init_plasma_texture

	;=================================
	; main loop

	lda	#0
	sta	ANGLE
	sta	SCALE_F
	sta	FRAMEL

	lda	#1
	sta	SCALE_I

main_loop:
	jsr	update_plasma

	jsr	rotozoom

	jsr	page_flip

wait_for_keypress:
;	lda	KEYPRESS
;	bpl	wait_for_keypress
;	bit	KEYRESET


	clc
	lda	FRAMEL
	adc	direction
	sta	FRAMEL

	cmp	#$f8
	beq	back_at_zero
	cmp	#33
;	beq	at_far_end
	beq	back_at_zero
	bne	done_reverse

back_at_zero:
	; change plasma color

	inc	which_color
	lda	which_color
	cmp	#4
	bne	refresh_color
	lda	#0
	sta	which_color
refresh_color:
	asl
	tay

	lda	colorlookup,Y
	sta	color_lookup_smc+1
;	sta	colorlookup2_smc+1
	lda	colorlookup+1,Y
	sta	color_lookup_smc+2
;	sta	colorlookup2_smc+2

at_far_end:

	; change bg color

	; reverse direction
	lda	direction
	eor	#$ff
	clc
	adc	#1
	sta	direction

	lda	scaleaddl
	eor	#$ff
	clc
	adc	#1
	sta	scaleaddl

	lda	scaleaddh
	eor	#$ff
	adc	#0
	sta	scaleaddh

done_reverse:


	clc
	lda	ANGLE
	adc	direction
	and	#$3f
	sta	ANGLE

	; increment zoom

;	clc
;	lda	SCALE_F
;	adc	scaleaddl
;	sta	SCALE_F
;	lda	SCALE_I
;	adc	scaleaddh
;	sta	SCALE_I

	jmp	main_loop


direction:	.byte	$01
scaleaddl:	.byte	$10
scaleaddh:	.byte	$00

;===============================================
; External modules
;===============================================

.include "rotozoom_texture.s"
.include "plasma.s"

.include "gr_pageflip.s"
.include "gr_fast_clear.s"
.include "gr_copy.s"
;.include "decompress_fast_v2.s"

.include "gr_offsets.s"
.include "c00_scrn_offsets.s"

.include "multiply_fast.s"

;===============================================
; Data
;===============================================
