ds: add the static bars to missing

was it worth it?
This commit is contained in:
Vince Weaver 2019-11-14 21:58:01 -05:00
parent 7eede7cb27
commit 3dd6b4aa78
2 changed files with 211 additions and 73 deletions

View File

@ -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

View File

@ -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 INL
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
lda #>bar_colors_top
sta INL
ldx #4
jsr make_bars_entry
lda #<bar_colors_bottom
sta INL
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