;license:MIT ;(c) 2020 by 4am ; !cpu 6502 !to "build/FX.INDEXED/FLICK",plain *=$6000 rowcount = $FF ; [byte] hgrlo = $200 ; [$C0 bytes] startrows_by_column = $2C0 ; [$28 bytes] hgrhi = $300 ; [$C0 bytes] rowcounts_by_column = $3C0 ; [$28 bytes] !source "src/fx/macros.a" +BUILD_HGR_LOOKUP_TABLES hgrlo, hgrhi ldy #$27 - lda #$00 sta startrows_by_column, y lda initial_rowcounts, y sta rowcounts_by_column, y dey bpl - frameloop ldy #$27 columnloop lda rowcounts_by_column, y beq nextcolumn bmi nextcolumn sta rowcount ldx startrows_by_column, y cpx #$C0 bcs nextcolumn rowloop lda hgrlo, x sta $3c sta $26 lda hgrhi, x sta $27 eor #$60 sta $3d lda ($3c), y sta ($26), y inx dec rowcount bne rowloop nextcolumn dey bpl columnloop ldy #$27 - lda rowcounts_by_column, y bmi + beq + tax clc adc startrows_by_column, y sta startrows_by_column, y lda next_rowcount, x sta rowcounts_by_column, y bne ++ ; always branches + clc adc #1 sta rowcounts_by_column, y ++ dey bpl - lda #$48 jsr WaitForKeyWithTimeout bmi exit lda rowcounts_by_column+$27 cmp #$80 bne frameloop exit rts !source "src/wait.a" initial_rowcounts !byte $01,$01,$00,$00,$FF,$FF,$FE,$FE,$FD,$FD !byte $FC,$FC,$FB,$FB,$FA,$FA,$F9,$F9,$F8,$F8 !byte $F7,$F7,$F6,$F6,$F5,$F5,$F4,$F4,$F3,$F3 !byte $F2,$F2,$F1,$F1,$F0,$F0,$EF,$EF,$EE,$EE next_rowcount !byte $01,$03,$80,$05,$02,$07,$04,$09,$06,$0B,$08,$0D,$0A,$0F,$0C,$11,$0E,$15,$10,$FD,$FD,$12