From 212cfe4581c3bbb645ecc88ebf858843b1042f17 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 15 Nov 2019 00:52:10 -0500 Subject: [PATCH] ds: work on music still --- demosplash/create_update_type2.s | 337 +++++++++++++++++++------------ demosplash/escape.s | 22 +- 2 files changed, 218 insertions(+), 141 deletions(-) diff --git a/demosplash/create_update_type2.s b/demosplash/create_update_type2.s index b30f270a..7bc33185 100644 --- a/demosplash/create_update_type2.s +++ b/demosplash/create_update_type2.s @@ -4,190 +4,265 @@ ; First 9 (?) lines = text mode ; + ; 22 + 192*(2+(47*18)+38)+15 = 170,149 + ; play every 15787 cycles = 10.7 times + ; every 18 times through loop + UPDATE2_START = $9800 ;DEFAULT_COLOR = $0 create_update_type2: - ldx #192 - lda #UPDATE2_START - sta OUTH - lda #another_scanline - sta INH + ldx #192 ; 2 + lda #UPDATE2_START ; 2 + sta OUTH ; 3 + lda #another_scanline ; 2 + sta INH ; 3 + + lda #18 + sta FORCE_MUSIC + + ;===== + ; 22 create_update2_outer_loop: - ldy #0 + ldy #0 ; 2 create_update2_inner_loop: - lda (INL),Y - sta (OUTL),Y - iny - cpy #47 - bne create_update2_inner_loop + lda (INL),Y ; 5 + sta (OUTL),Y ; 6 + iny ; 2 + cpy #47 ; 2 + bne create_update2_inner_loop ; 3 + ;=========== + ; 18 + ;-1 ; toggle PAGE0/PAGE1 - txa - and #$1 ; ror? - clc - adc #$54 - ldy #1 - sta (OUTL),Y + txa ; 2 + and #$1 ; ror? ; 2 + clc ; 2 + adc #$54 ; 2 + ldy #1 ; 2 + sta (OUTL),Y ; 6 - clc - lda #47 - adc OUTL - sta OUTL - lda OUTH - adc #0 - sta OUTH + clc ; 2 + lda #47 ; 2 + adc OUTL ; 3 + sta OUTL ; 3 + lda OUTH ; 3 + adc #0 ; 2 + sta OUTH ; 3 - dex - bne create_update2_outer_loop - ldy #0 - lda #$60 ; rts - sta (OUTL),Y + dec FORCE_MUSIC ; 5 + bne no_force_music2 ; 3 + lda #18 + sta FORCE_MUSIC + + txa + pha + + jsr play_frame_compressed + + pla + tax +no_force_music2: + + dex ; 2 + bne create_update2_outer_loop ; 3 + ;=========== + ; 38 + + ; -1 + + ldy #0 ; 2 + lda #$60 ; rts ; 2 + sta (OUTL),Y ; 6 + + rts ; 6 + ;============= + ; 15 - rts ESCAPE_START = 30 ;=========================== + ; + ; 42+18+42+17+128*(7+(7*73)+5)+54+5 = 67,122 + ; / 15,787 = 4.25 + ; 128/4.25=30 setup_update_type2: ; add call to TEXT - lda #$2c ; bit C051 ; 4 - sta UPDATE2_START+3 ; $9003 - lda #$51 - sta UPDATE2_START+4 ; $9004 - lda #$c0 - sta UPDATE2_START+5 ; $9005 + lda #$2c ; bit C051 ; 4 ; 2 + sta UPDATE2_START+3 ; $9003 ; 4 + lda #$51 ; 2 + sta UPDATE2_START+4 ; $9004 ; 4 + lda #$c0 ; 2 + sta UPDATE2_START+5 ; $9005 ; 4 - lda #$A5 ; lda ZERO ; 3 - sta UPDATE2_START+6 ; $9006 - lda #$FA - sta UPDATE2_START+7 ; $9007 - - lda #$A2 ; ldx, 1 ; 3 - sta UPDATE2_START+8 ; $9008 - lda #$01 - sta UPDATE2_START+9 ; $9009 + lda #$A5 ; lda ZERO ; 3 ; 2 + sta UPDATE2_START+6 ; $9006 ; 4 + lda #$FA ; 2 + sta UPDATE2_START+7 ; $9007 ; 4 + lda #$A2 ; ldx, 1 ; 3 ; 2 + sta UPDATE2_START+8 ; $9008 ; 4 + lda #$01 ; 2 + sta UPDATE2_START+9 ; $9009 ; 4 + ;=========== + ; 42 ; set first 9 lines to PAGE0 - lda #$54 - sta UPDATE2_START+$30 ; $9030 - sta UPDATE2_START+$8E ; $908E - sta UPDATE2_START+$EC ; $90EC - sta UPDATE2_START+$14A ; $914A + lda #$54 ; 2 + sta UPDATE2_START+$30 ; $9030 ; 4 + sta UPDATE2_START+$8E ; $908E ; 4 + sta UPDATE2_START+$EC ; $90EC ; 4 + sta UPDATE2_START+$14A ; $914A ; 4 + ;=========== + ; 18 ; add call to GRAPHICS ; line 9 (91a7) - lda #$2c ; bit C051 ; 4 - sta UPDATE2_START+$1aa ; $91aa - lda #$50 - sta UPDATE2_START+$1ab ; $91ab - lda #$c0 - sta UPDATE2_START+$1ac ; $91ac + lda #$2c ; bit C051 ; 4 ; 2 + sta UPDATE2_START+$1aa ; $91aa ; 4 + lda #$50 ; 2 + sta UPDATE2_START+$1ab ; $91ab ; 4 + lda #$c0 ; 2 + sta UPDATE2_START+$1ac ; $91ac ; 4 - lda #$A5 ; lda ZERO ; 3 - sta UPDATE2_START+$1ad ; $91ad - lda #$FA - sta UPDATE2_START+$1ae ; $91ae - - lda #$A2 ; ldx, 1 ; 3 - sta UPDATE2_START+$1af ; $91af - lda #$01 - sta UPDATE2_START+$1b0 ; $91b0 + lda #$A5 ; lda ZERO ; 3 ; 2 + sta UPDATE2_START+$1ad ; $91ad ; 4 + lda #$FA ; 2 + sta UPDATE2_START+$1ae ; $91ae ; 4 + lda #$A2 ; ldx, 1 ; 3 ; 2 + sta UPDATE2_START+$1af ; $91af ; 4 + lda #$01 ; 2 + sta UPDATE2_START+$1b0 ; $91b0 ; 4 + ;=========== + ; 42 ;==================== ;==================== - lda #4 ; which page - sta RASTER_PAGE + lda #4 ; which page ; 2 + sta RASTER_PAGE ; 3 - ldx #ESCAPE_START - lda #<(UPDATE_START+(ESCAPE_START*47)) - sta OUTL - lda #>(UPDATE_START+(ESCAPE_START*47)) - sta OUTH + ldx #ESCAPE_START ; 2 + lda #<(UPDATE_START+(ESCAPE_START*47)) ; 2 + sta OUTL ; 3 + lda #>(UPDATE_START+(ESCAPE_START*47)) ; 2 + sta OUTH ; 3 + + lda #30 + sta FORCE_MUSIC + + ;=========== + ; 17 setup_escape_outer_loop: - ldy #8 - lda #0 - sta RASTER_X + ldy #8 ; 2 + lda #0 ; 2 + sta RASTER_X ; 3 + ;=========== + ; 7 setup_escape_inner_loop: - 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 + 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 ; 5 + sta (OUTL),Y ; 6 + iny ; 2 + clc ; 2 + lda gr_offsets+1,X ; 4+ + adc RASTER_PAGE ; 3 + sta (OUTL),Y ; 6 + iny ; 2 - iny - iny - iny + iny ; 2 + iny ; 2 + iny ; 2 - pla - tax + pla ; 4 + tax ; 2 - cpy #43 - bne no_fixup + cpy #43 ; 2 + bne no_fixup ; 3 + ;=========== + ; 73 - iny ; special case last one - iny + ; -1 + + iny ; special case last one ; 2 + iny ; 2 no_fixup: - cpy #50 - bne setup_escape_inner_loop + cpy #50 ; 2 + bne setup_escape_inner_loop ; 3 + ;=========== + ; 5 + ;-1 ; fix the one at the end - dey - dey - dey - dey - dey - lda (OUTL),Y - and #$f8 - sta (OUTL),Y + dey ; 2 + dey ; 2 + dey ; 2 + dey ; 2 + dey ; 2 + lda (OUTL),Y ; 5 + and #$f8 ; 2 + sta (OUTL),Y ; 5 - clc - lda #47 - adc OUTL - sta OUTL - lda OUTH - adc #0 - sta OUTH + clc ; 2 + lda #47 ; 2 + adc OUTL ; 3 + sta OUTL ; 3 + lda OUTH ; 3 + adc #0 ; 2 + sta OUTH ; 3 + + dec FORCE_MUSIC ; 5 + bne no_force_music3 ; 3 + lda #30 + sta FORCE_MUSIC + + txa + pha + + jsr play_frame_compressed + + pla + tax +no_force_music3: - lda RASTER_PAGE - eor #$04 - sta RASTER_PAGE + lda RASTER_PAGE ; 3 + eor #$04 ; 2 + sta RASTER_PAGE ; 3 - inx - cpx #(128+ESCAPE_START) - bne setup_escape_outer_loop + inx ; 2 + cpx #(128+ESCAPE_START) ; 2 + bne setup_escape_outer_loop ; 3 + ;=========== + ; 54 - rts + ; -1 + rts ; 6 another_scanline: diff --git a/demosplash/escape.s b/demosplash/escape.s index e0edac8d..d3c4cbaa 100644 --- a/demosplash/escape.s +++ b/demosplash/escape.s @@ -7,16 +7,19 @@ escape: +; jmp escape + ;================== ; setup music ; we are roughly at the beginning of pattern 0x19 + ; pattern $19 + ; line $10 -; lda #19 -; sta current_pattern_smc+1 -; lda #0 -; sta current_line_smc+1 - + lda #$19 + sta current_pattern_smc+1 + lda #0 + sta current_line_smc+1 lda #0 sta FRAME_PLAY_OFFSET @@ -26,10 +29,10 @@ escape: jsr update_pt3_play ; setup 4 frames - jsr pt3_write_lc_4 + jsr pt3_write_lc_4 ; FIXME - ; FIXME -; jsr clear_ay_both + lda #$30 ; assume on line $10, speed=3 + sta FRAME_PLAY_OFFSET ;=================== ; init vars @@ -80,7 +83,7 @@ escape: jsr create_update_type2 jsr setup_update_type2 - jsr play_frame_compressed ; catch up some music + ;jsr play_frame_compressed ; catch up some music ;========================================== ; replace bottom with call to music player @@ -238,7 +241,6 @@ loopRR: dex ; 2 sprites_display_loop: jsr $9800 -;.include "sprites_screen.s" after_sprites_display: