ds: sound on first scene at least

This commit is contained in:
Vince Weaver 2019-11-07 22:04:25 -05:00
parent c0cae15565
commit 3a57302641
4 changed files with 89 additions and 32 deletions

View File

@ -9,7 +9,7 @@ appleII_intro:
; init screen
; jsr TEXT
; jsr HOME
bit KEYRESET
; bit KEYRESET
;===================
; init vars
@ -159,9 +159,9 @@ page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra)
; -1174
; -7 (keypress)
; -3 (jump)
; -1186 (play_music)
; -1239 (play_music)
; =====
; 2179
; 2126 2179
jsr do_nothing ; 6
@ -408,13 +408,18 @@ loop29: dex ; 2
;==========================
;==========================
intro_wipe_done:
lda KEYPRESS ; 4
bpl no_keypress2 ; 3
jmp appleii_done
lda FRAME_PLAY_PAGE ; 3
cmp #2 ; 2
beq appleii_done ; 3
; -1
; lda KEYPRESS ; 4
; bpl no_keypress2 ; 3
; jmp appleii_done
no_keypress2:
jsr play_frame_compressed ; 6+1180
jsr play_frame_compressed ; 6+1233
jmp display_loop ; 3
@ -426,13 +431,15 @@ appleii_done:
;=================================
; do nothing
;=================================
; and take 2179-12 = 2167 cycles to do it
; and take 2126-12 = 2114 cycles to do it
do_nothing:
; Try X=21 Y=19 cycles=2110R4
; Try X=71 Y=6 cycles=2167
nop
nop
ldy #6 ; 2
loop1: ldx #71 ; 2
ldy #19 ; 2
loop1: ldx #21 ; 2
loop2: dex ; 2
bne loop2 ; 2nt/3
dey ; 2

View File

@ -11,6 +11,9 @@ demosplash2019:
;=========================
lda #0
sta DONE_PLAYING
sta FRAME_PLAY_OFFSET
sta FRAME_PLAY_PAGE
jsr update_pt3_play
jsr mockingboard_init
jsr pt3_setup_interrupt

View File

@ -14,11 +14,11 @@
;DA00 ;a $AE00,$AF00,$B000 = ENV high (r12)
; 3+ 72 + 72 + 83 + 74 + 72 + 77 + 19 + 70 + 74 + 72 +
; 77 + 18 + 82 + 85 + 72 + 72 + 8 + 72 + 6 = 1180
; 77 + 18 + 82 + 85 + 72 + 72 + 10 + 123 + 6 = 1233 /////1180
play_frame_compressed:
ldy FRAME_OFFSET ; 3
ldy FRAME_PLAY_OFFSET ; 3
; Register 0: A fine
ldx #0 ; 2
@ -186,33 +186,27 @@ r12_smc:
; wrap to next
iny ; 2
sty FRAME_OFFSET ; 3
sty FRAME_PLAY_OFFSET ; 3
cpy #59*3 ; FIXME: song specific ; 2
beq frame_wrap ; 3
;==========
; 8
; 10
no_frame_wrap:
; -1
; delay 72+1-3=70
lda #43 ; 70-2-25=43
jsr delay_a
; delay 123+1-3=121
lda #94 ; 2
jsr delay_a ; 121-2-25=94
jmp done_frame_wrap ; 3
frame_wrap:
inc r0_smc+2 ; 6
inc r1_smc+2 ; 6
inc r2_smc+2 ; 6
inc r4_smc+2 ; 6
inc r5_smc+2 ; 6
inc r13_smc+2 ; 6
inc r6_smc+2 ; 6
inc r7_smc+2 ; 6
inc r8_smc+2 ; 6
inc r9_smc+2 ; 6
inc r11_smc+2 ; 6
inc r12_smc+2 ; 6
;=====
; 72
lda #0 ; 2
sta FRAME_PLAY_OFFSET ; 3
inc FRAME_PLAY_PAGE ; 5
jsr update_pt3_play ; 6+107
;=====
; 123
done_frame_wrap:
@ -253,3 +247,54 @@ play_mb_write:
;===========================
; update the SMC counters
; 13+88+6=107
update_pt3_play:
lda FRAME_PLAY_PAGE ; 3
asl ; 2
asl ; 2
asl ; 2
asl ; 2
tay ; 2
;===
; 13
lda music_addr_table+0,Y ; 4
sta r0_smc+2 ; 4
lda music_addr_table+1,Y ; 4
sta r1_smc+2 ; 4
lda music_addr_table+2,Y ; 4
sta r2_smc+2 ; 4
lda music_addr_table+3,Y ; 4
sta r4_smc+2 ; 4
lda music_addr_table+4,Y ; 4
sta r13_smc+2 ; 4
lda music_addr_table+5,Y ; 4
sta r6_smc+2 ; 4
lda music_addr_table+6,Y ; 4
sta r7_smc+2 ; 4
lda music_addr_table+7,Y ; 4
sta r8_smc+2 ; 4
lda music_addr_table+8,Y ; 4
sta r9_smc+2 ; 4
lda music_addr_table+9,Y ; 4
sta r11_smc+2 ; 4
lda music_addr_table+10,Y ; 4
sta r12_smc+2 ; 4
;==========
; 11*8 = 88
rts ; 6

View File

@ -38,6 +38,8 @@ ASTEROID_SPEED = $52
ASTEROID_X = $53
ASTEROID_Y = $54
RANDOM_PTR = $55
FRAME_PLAY_OFFSET=$56
FRAME_PLAY_PAGE = $57
FIRE_Y = $5B
SPRITE_XPOS = $5C