From 3dd6b4aa78d191bdbfafccb80df3023ede91ed09 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 14 Nov 2019 21:58:01 -0500 Subject: [PATCH] ds: add the static bars to missing was it worth it? --- demosplash/create_update_type1.s | 171 +++++++++++++++++++++---------- demosplash/missing.s | 113 ++++++++++++++++---- 2 files changed, 211 insertions(+), 73 deletions(-) diff --git a/demosplash/create_update_type1.s b/demosplash/create_update_type1.s index d2ce1906..6b27d5b0 100644 --- a/demosplash/create_update_type1.s +++ b/demosplash/create_update_type1.s @@ -3,10 +3,10 @@ ; but leaving room for 14 pixels/line of per-scanline color ; originally 183,589 - ; takes roughly 12 + 192*((49*16)+2+38) + 15 = 158,235!!!! - ; want to play sound every 15787 cycles (10.0) + ; takes roughly 17 + 192*((49*16)+2+46) + 15 = 159,776!!!! + ; want to play sound every 15787 cycles (10.1) - ; so every 19.2 times through loop? is 16 close enough? + ; so every 19 times through loop ; 11 times should update??? @@ -20,10 +20,10 @@ create_update_type1: sta OUTL ; 3 lda #>UPDATE_START ; 2 sta OUTH ; 3 - lda #19 - sta FORCE_MUSIC + lda #19 ; 2 + sta FORCE_MUSIC ; 3 ;=========== - ; 12 + ; 17 create_update_outer_loop: ldy #48 ; 2 @@ -52,8 +52,8 @@ create_update_inner_loop: adc #0 ; 2 sta OUTH ; 3 - dec FORCE_MUSIC - bne no_force_music + dec FORCE_MUSIC ; 5 + bne no_force_music ; 3 lda #19 sta FORCE_MUSIC @@ -70,7 +70,7 @@ no_force_music: dex ; 2 bne create_update_outer_loop ; 3 ;=========== - ; 38 + ; 46 ; -1 ldy #0 ; 2 @@ -81,69 +81,130 @@ no_force_music: ;============= ; 15 + + + + BARS_START = 46 + ;============================ + ; setup rasterbars ;=========================== ; from 40 to 168? + + ; + ; 22+ NUM*(7+14*(66)+32+11) +5 + ; NUM=128 -> 123,286 /15787 = 8 ... every 16 times + ; NUM=32 -> 30,838 / 15787 = 2 + ; + + ; original: + ; setup_rasterbars_page_smc=4 + ; setup_rasterbars_offset_smc=13 + ; setup_rasterbars_bars_start_smc=46 + ; setup_rasterbars_bars_end_smc=184 + ; setup_rasterbars_start_addr1_smc:=#<(UPDATE_START+(BARS_START*49)) + ; setup_rasterbars_start_addr2_smc:=#<(UPDATE_START+(BARS_START*49)) + + ; missing: + ; setup_rasterbars_page_smc=4 + ; setup_rasterbars_offset_smc=2 + ; setup_rasterbars_bars_start_smc=16 + ; setup_rasterbars_bars_end_smc=48 + ; setup_rasterbars_start_addr1_smc:=#<(UPDATE_START+(16*49)) + ; setup_rasterbars_start_addr2_smc:=#<(UPDATE_START+(16*49)) + + setup_rasterbars: - lda #4 ; which page - sta RASTER_PAGE +setup_rasterbars_page_smc: + lda #4 ; which page ; 2 + sta RASTER_PAGE ; 3 - ldx #BARS_START - lda #<(UPDATE_START+(BARS_START*49)) - sta OUTL - lda #>(UPDATE_START+(BARS_START*49)) - sta OUTH +setup_rasterbars_bars_start_smc: + ldx #BARS_START ; 2 +setup_rasterbars_start_addr1_smc: + lda #<(UPDATE_START+(BARS_START*49)) ; 2 + sta OUTL ; 3 +setup_rasterbars_start_addr2_smc: + lda #>(UPDATE_START+(BARS_START*49)) ; 2 + sta OUTH ; 3 + lda #0 ; 2 + sta FORCE_MUSIC ; 3 + ;=========== + ; 22 setup_rasterbars_outer_loop: - ldy #6 - lda #13 - sta RASTER_X + ldy #6 ; 2 +setup_rasterbars_offset_smc: + lda #13 ; 2 + sta RASTER_X ; 3 + ;=========== + ; 7 setup_rasterbars_inner_loop: + txa ; 2 + pha ; 3 + inx ; 2 + txa ; start one earlier ; 2 + lsr ; 2 + lsr ; 2 + and #$fe ; 2 + tax ; 2 + clc ; 2 + lda gr_offsets,X ; 4+ + adc RASTER_X ; 3 + inc RASTER_X ; 3 + sta (OUTL),Y ; 6 + iny ; 2 + clc ; 2 + lda gr_offsets+1,X ; 4 + adc RASTER_PAGE ; 2 + sta (OUTL),Y ; 6 + iny ; 2 + iny ; 2 + pla ; 4 + tax ; 2 + + cpy #48 ; 2 + bne setup_rasterbars_inner_loop ; 3 + ;============ + ; 66 + + ;-1 + + inc FORCE_MUSIC ; 6 + and #$f ; 2 + bne no_music_this_time ; 3 + ;=========== + ; 11 + txa pha - inx - txa ; start one earlier - lsr - lsr - and #$fe - tax - clc - lda gr_offsets,X - adc RASTER_X - inc RASTER_X - sta (OUTL),Y - iny - clc - lda gr_offsets+1,X - adc RASTER_PAGE - sta (OUTL),Y - iny - iny + jsr play_frame_compressed pla tax - cpy #48 - bne setup_rasterbars_inner_loop +no_music_this_time: - clc - lda #49 - adc OUTL - sta OUTL - lda OUTH - adc #0 - sta OUTH + clc ; 2 + lda #49 ; 2 + adc OUTL ; 3 + sta OUTL ; 3 + lda OUTH ; 3 + adc #0 ; 2 + sta OUTH ; 3 + lda RASTER_PAGE ; 3 + eor #$04 ; 2 + sta RASTER_PAGE ; 3 - lda RASTER_PAGE - eor #$04 - sta RASTER_PAGE - - inx - cpx #184 - bne setup_rasterbars_outer_loop - - rts + inx ; 2 +setup_rasterbars_bars_end_smc: + cpx #184 ; 2 + bne setup_rasterbars_outer_loop ; 3 + ;============ + ; 32 + rts ; -1 + ; 6 one_scanline: .byte $2C,$54,$C0 ; bit PAGE0 ; 4 diff --git a/demosplash/missing.s b/demosplash/missing.s index d1106b8c..0bf2918b 100644 --- a/demosplash/missing.s +++ b/demosplash/missing.s @@ -21,6 +21,49 @@ missing_intro: jsr create_update_type1 ; now calls play_frame_compressed + ; setup_rasterbars_page_smc=4 +; lda #0 +; sta setup_rasterbars_page_smc+1 + ; setup_rasterbars_offset_smc=2 + lda #2 + sta setup_rasterbars_offset_smc+1 + ; setup_rasterbars_bars_start_smc=16 + lda #13 + sta setup_rasterbars_bars_start_smc+1 + ; setup_rasterbars_bars_end_smc=48 + lda #48 + sta setup_rasterbars_bars_end_smc+1 + ; setup_rasterbars_start_addr1_smc:=#<(UPDATE_START+(13*49)) + lda #<(UPDATE_START+(12*49)) + sta setup_rasterbars_start_addr1_smc+1 + ; setup_rasterbars_start_addr2_smc:=#<(UPDATE_START+(13*49)) + lda #>(UPDATE_START+(12*49)) + sta setup_rasterbars_start_addr2_smc+1 + + jsr setup_rasterbars + + ; setup_rasterbars_page_smc=4 +; lda #0 +; sta setup_rasterbars_page_smc+1 + ; setup_rasterbars_offset_smc=2 + lda #2 + sta setup_rasterbars_offset_smc+1 + ; setup_rasterbars_bars_start_smc=16 + lda #149 + sta setup_rasterbars_bars_start_smc+1 + ; setup_rasterbars_bars_end_smc=48 + lda #187 + sta setup_rasterbars_bars_end_smc+1 + ; setup_rasterbars_start_addr1_smc:=#<(UPDATE_START+(149*49)) + lda #<(UPDATE_START+(148*49)) + sta setup_rasterbars_start_addr1_smc+1 + ; setup_rasterbars_start_addr2_smc:=#<(UPDATE_START+(149*49)) + lda #>(UPDATE_START+(148*49)) + sta setup_rasterbars_start_addr2_smc+1 + + jsr setup_rasterbars + + jsr make_bars ;============================= @@ -182,43 +225,77 @@ gloop2: dex ; 2 rts -BAR_START = 2*8 +;BAR_START = 2*8 +BAR_START = (2*8)-3 ; 13 +BAR_START2 = 152-3 -; $9800 + (49*18) + 4 = $9800+886 = $9800+$376=$9b76 +; $9800 + (49*18) + 4 = $9800+886 = $9800+$376=$9b76 (9b72) +; $9800 + (49*152) = $9800+7448 = $9800+$1d18=$b518 make_bars: + + lda #bar_colors_top + sta INH + lda #<(UPDATE_START+49*(BAR_START+2)+4) sta OUTL lda #>(UPDATE_START+49*(BAR_START+2)+4) sta OUTH - lda #bar_colors_top - sta INL - ldx #4 + + jsr make_bars_entry + + lda #bar_colors_bottom + sta INH + + lda #<(UPDATE_START+49*(BAR_START2+2)+4) + sta OUTL + lda #>(UPDATE_START+49*(BAR_START2+2)+4) + sta OUTH + + jsr make_bars_entry + + rts + +make_bars_entry: + ldy #0 -make_bars_loop: +make_bars_loop: lda (INL),Y sta (OUTL),Y - dex - bpl make_bars_loop + iny + lda OUTL + clc + adc #48 ; because y++ + sta OUTL + lda OUTH + adc #0 + sta OUTH + +; cpy #32 + tya + and #$1f + bne make_bars_loop rts bar_colors_top: - .byte $03,$0b,$0f,$0b,$30 - .byte $02,$06,$0f,$06,$20 - .byte $04,$0c,$0f,$0c,$40 - .byte $05,$07,$0f,$07,$50 + .byte $03,$0b,$0f,$0b,$30,$00,$00 + .byte $00,$02,$06,$0f,$06,$20,$00,$00 + .byte $00,$04,$0c,$0f,$0c,$40,$00,$00 + .byte $00,$05,$07,$0f,$07,$50,$00,$00,$00,$00,$00 bar_colors_bottom: - .byte $01,$03,$0f,$03,$10 - .byte $08,$0d,$0f,$0d,$80 - .byte $0c,$0e,$0f,$0e,$c0 - .byte $09,$0d,$0f,$0d,$90 + .byte $01,$03,$0f,$03,$10,$00,$00 + .byte $00,$08,$0d,$0f,$0d,$80,$00,$00 + .byte $00,$0c,$0e,$0f,$0e,$c0,$00,$00 + .byte $00,$09,$0d,$0f,$0d,$90,$00,$00,$00,$00,$00