kfest: have raster2 clearning the fb

This commit is contained in:
Vince Weaver 2018-07-20 14:28:13 -04:00
parent c4db51fcd2
commit d5d3319631

View File

@ -1,6 +1,7 @@
; Kansasfest HackFest Entry ; Kansasfest HackFest Entry
; Zero Page ; Zero Page
FRAMEBUFFER = $00 ; $00 - $10
DRAW_PAGE = $EE DRAW_PAGE = $EE
CURRENT_OFFSET = $EF CURRENT_OFFSET = $EF
OFFSET_GOVERNOR = $F0 OFFSET_GOVERNOR = $F0
@ -56,31 +57,57 @@ WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
jsr hline jsr hline
;================== ;==================
; Draw Temp Rasters ; Draw Temp Rasters
;================== ;==================
lda #$0
sta DRAW_PAGE
lda #$b1
ldy #10
jsr hline
lda #$3f
ldy #12
jsr hline
lda #$4 ldx #19 ; 2
sta DRAW_PAGE raster_loop:
lda #$f3 lda #00 ; 2
ldy #10 sta $600,X ; 5
jsr hline lda #01 ; 2
lda #$1b sta $680,X ; 5
ldy #12 lda #02 ; 2
jsr hline sta $700,X ; 5
lda #03 ; 2
sta $780,X ; 5
lda #04 ; 2
sta $428,X ; 5
lda #05 ; 2
sta $4a8,X ; 5
lda #06 ; 2
sta $528,X ; 5
lda #07 ; 2
sta $5a8,X ; 5
lda #08
sta $A00,X
lda #09
sta $A80,X
lda #10
sta $B00,X
lda #11
sta $B80,X
lda #12
sta $828,X
lda #13
sta $8a8,X
lda #14
sta $928,X
lda #15
sta $9a8,X
dex ; 2
bpl raster_loop ; 2nt/3
;=====================================
; temporarily draw HELLO ; temporarily draw HELLO
;=====================================
ldy CURRENT_OFFSET ldy CURRENT_OFFSET
ldx #0 ldx #0
@ -221,18 +248,21 @@ page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra)
; We have 4550 cycles in the vblank, use them wisely ; We have 4550 cycles in the vblank, use them wisely
;====================================================== ;======================================================
; delay 2717 (4550 +1 from falltrough, -2 for loadup, -1832 for scroll) ; delay 1738 (4550 +1 from falltrough, -2 for loadup, -2661 scroll -3)
; - 147
; Try X=8 Y=59 cycles=2715 ; Try X=9 Y=34 cycles=1735 R3
; waste 2 cycles ; waste 2 cycles
lda DRAW_PAGE ; 3
;lda DRAW_PAGE ; 3 ;lda DRAW_PAGE ; 3
;lda DRAW_PAGE ; 3 ; nop ; 2
nop ; 2
ldy #59 ; 2
ldy #34 ; 2
loop5: loop5:
ldx #8 ; 2 ldx #9 ; 2
loop6: loop6:
dex ; 2 dex ; 2
bne loop6 ; 2nt/3 bne loop6 ; 2nt/3
@ -241,57 +271,73 @@ loop6:
bne loop5 ; 2nt/3 bne loop5 ; 2nt/3
;==================
; Clear Framebuffer
;==================
; 4 + 16*9 - 1 = 147
; jmp display_loop ; 3 lda #0 ; 2
ldx #15 ; 2
clear_fb_loop:
sta FRAMEBUFFER,X ; 4
dex ; 2
bpl clear_fb_loop ; 2nt/3
;================================ ;==================
; SCROLL THE TEXT ; Set Rasterbar
;================================ ;==================
; 5+ 40*(36 + 9)+5+3 -1 + 20
; 12+40*(45) + 19 = 1832
ldy CURRENT_OFFSET ; 3
ldx #0 ; 2
data_loop:
lda words,Y ; 4+
sta $6d0,X ; 5
lda words2,Y ; 4+ ;==================
sta $750,X ; 5 ; Draw Rasterbars
;==================
lda words3,Y ; 4+ ; 2 + YSIZE*[(8*16) + 5] - 1
sta $ad0,X ; 5 ; 2 + (20*133) -1
; 2661 cycles
lda words4,Y ; 4+ ldx #19 ; 2
sta $b50,X ; 5 raster_loop2:
lda FRAMEBUFFER ; 3
sta $600,X ; 5
lda FRAMEBUFFER+1 ; 3
sta $680,X ; 5
lda FRAMEBUFFER+2 ; 3
sta $700,X ; 5
lda FRAMEBUFFER+3 ; 3
sta $780,X ; 5
lda FRAMEBUFFER+4 ; 3
sta $428,X ; 5
lda FRAMEBUFFER+5 ; 3
sta $4a8,X ; 5
lda FRAMEBUFFER+6 ; 3
sta $528,X ; 5
lda FRAMEBUFFER+7 ; 3
sta $5a8,X ; 5
iny ; 2 lda FRAMEBUFFER+8
inx ; 2 sta $A00,X
cpx #40 ; 2 lda FRAMEBUFFER+9
bne data_loop ; 2nt/3 sta $A80,X
lda FRAMEBUFFER+10
sta $B00,X
lda FRAMEBUFFER+11
sta $B80,X
lda FRAMEBUFFER+12
sta $828,X
lda FRAMEBUFFER+13
sta $8a8,X
lda FRAMEBUFFER+14
sta $928,X
lda FRAMEBUFFER+15
sta $9a8,X
inc OFFSET_GOVERNOR ; 5 dex ; 2
bpl raster_loop2 ; 2nt/3
lda OFFSET_GOVERNOR ; 3
cmp #6 ; 2
bne not_yet ; 2
inc CURRENT_OFFSET ; 5
lda #0 ; 2
sta OFFSET_GOVERNOR ; 3
jmp all_done ; 3
not_yet:
; 1
lda OFFSET_GOVERNOR ; 3
lda OFFSET_GOVERNOR ; 3
lda OFFSET_GOVERNOR ; 3
lda OFFSET_GOVERNOR ; 3
all_done: all_done:
jmp display_loop ; 3 jmp display_loop ; 3