lovebyte: work on rainbowsquares

This commit is contained in:
Vince Weaver 2024-02-04 23:03:04 -05:00
parent 67d993a9ed
commit 23d75504ee

View File

@ -23,8 +23,7 @@ XX_TL = $F9
;YY = $FA ;YY = $FA
YY_TH = $FB YY_TH = $FB
YY_TL = $FC YY_TL = $FC
;T_L = $FD FRAME = $FD
;T_H = $FE
SAVED = $FF SAVED = $FF
; Soft switches ; Soft switches
@ -40,21 +39,24 @@ HPLOT0 = $F457
PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0) PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0)
GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40 SETGR = $FB40
WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us
;================================ ;================================
; Clear screen and setup graphics ; Clear screen and setup graphics
;================================ ;================================
sier: rainbow_squares:
jsr HGR2 ; set FULLGR, sets A=0 jsr HGR ; set FULLGR, sets A=0,Y=0
sta FRAME ; init frame
sier_outer: rainbow_outer:
; Y=0 from both paths
ldy #0 ; YY starts at 0 ; ldy #0 ; YY starts at 0
sty YY_TL sty YY_TL
sty YY_TH sty YY_TH
sier_yloop: rainbow_yloop:
; calc YY_T (8.8 fixed point add) ; calc YY_T (8.8 fixed point add)
; save space by skipping clc as it's only a slight variation w/o ; save space by skipping clc as it's only a slight variation w/o
@ -66,36 +68,13 @@ sier_yloop:
adc T_H adc T_H
sta YY_TH sta YY_TH
; txa ; YY ; plot call needs Y/2
; lsr
; php
; bcc even_mask
; ldy #$f0
; .byte $2C ; bit hack
;even_mask:
; ldy #$0f
; sty MASK
; jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
; lda GBASH
;draw_page_smc:
; adc #0
; sta GBASH ; adjust for PAGE1/PAGE2 ($400/$800)
; plp
; jsr $f806 ; trick to calculate MASK by jumping
; into middle of PLOT routine
; reset XX to 0 ; reset XX to 0
ldx #0 ; XX ldx #0 ; XX
stx XX_TL stx XX_TL
stx XX_TH stx XX_TH
sier_xloop: rainbow_xloop:
; want (YY-(XX*T)) & (XX+(YY*T) ; want (YY-(XX*T)) & (XX+(YY*T)
@ -130,6 +109,7 @@ sier_xloop:
beq white beq white
black: black:
bit $C030
lda #00 ; black lda #00 ; black
.byte $2C ; bit trick .byte $2C ; bit trick
white: white:
@ -153,39 +133,51 @@ white:
inx ; XX inx ; XX
cpx #255 cpx #255
bne sier_xloop bne rainbow_xloop
iny ; YY iny ; YY
cpy #192 cpy #192
bne sier_yloop bne rainbow_yloop
; inc T ; inc T
inc T_L
; clc ; clc
lda T_L ; lda T_L
blah_smc: ;blah_smc:
adc #1 ; adc #1
sta T_L ; sta T_L
bcc no_carry ; bcc no_carry
inc T_H ; inc T_H
no_carry: ;no_carry:
; speed up the zoom as it goes ; done frame
; inc blah_smc+1
; x is 48
;flip_pages:
; lda draw_page_smc+1 ; DRAW_PAGE
; beq done_page
; inx
;done_page:
; X=48 ($30) PAGE1=$C054-$30=$C024
; ldy $C024,X ; set display page to PAGE1 or PAGE2
; eor #$4 ; flip draw page between $400/$800 inc FRAME
; sta draw_page_smc+1 ; DRAW_PAGE lda FRAME
cmp #2
beq really_done
jmp sier_outer ; what can we branch on? jsr HGR2
; A/Y=0
jmp rainbow_outer ; what can we branch on?
really_done:
lda #200
jsr WAIT
bit PAGE1
lda #200
jsr WAIT
bit PAGE2
jmp really_done