From 8486b21ee6a0ee8a19cf894569deb4cb796b7f82 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 27 Oct 2018 00:46:49 -0400 Subject: [PATCH] megamusic: pattern selection --- megamusic/falling_apple.s | 15 +++--- megamusic/megamusic.s | 4 ++ megamusic/play_music.s | 96 ++++++++++++++++++++++++++++++++++++++- megamusic/zp.inc | 2 +- 4 files changed, 108 insertions(+), 9 deletions(-) diff --git a/megamusic/falling_apple.s b/megamusic/falling_apple.s index e7b463f2..75baddd4 100644 --- a/megamusic/falling_apple.s +++ b/megamusic/falling_apple.s @@ -150,21 +150,22 @@ page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra) ; -1 (+1-2) from above ; -25 inc framecount ; -7 see if timeout - ; -930 play_music + ;-1009 play_music ; -10 keypress ;================ - ; 3577 + ; 3498 - jsr play_music ; 6+924 + jsr play_music ; 6+1003 - ; Try X=118 Y=6 cycles=3577 + ; Try X=57 Y=12 cycles=3493 R5 + nop + lda $0 - - ldy #6 ; 2 -faloop1:ldx #118 ; 2 + ldy #12 ; 2 +faloop1:ldx #57 ; 2 faloop2:dex ; 2 bne faloop2 ; 2nt/3 dey ; 2 diff --git a/megamusic/megamusic.s b/megamusic/megamusic.s index bd7e697e..bce11927 100644 --- a/megamusic/megamusic.s +++ b/megamusic/megamusic.s @@ -8,6 +8,10 @@ megamusic_start: ; this should end up at $4000 + lda #0 + sta MB_FRAME + sta MB_PATTERN + ;=================== ; Init mockingboard ;=================== diff --git a/megamusic/play_music.s b/megamusic/play_music.s index 3023862a..fa8756d0 100644 --- a/megamusic/play_music.s +++ b/megamusic/play_music.s @@ -1,11 +1,51 @@ ; takes - ; 3 + 80 + 82 + 88 + 80 + 82 + 88 + 80 + 82 + 88 + 80 + 80 + 11 = 924 + ; 3 + 79 + + ; 80 + 82 + 88 + + ; 80 + 82 + 88 + + ; 80 + 82 + 88 + + ; 80 + 80 + + ; 11 = 1003 play_music: + + ; self-modify the code + ldy MB_PATTERN ; 3 + + lda mal_pattern,Y ; 4 + sta mb_smc1+1 ; 4 + lda mah_pattern,Y ; 4 + sta mb_smc2+1 ; 4 + sta mb_smc3+1 ; 4 + + lda mbl_pattern,Y ; 4 + sta mb_smc4+1 ; 4 + lda mbh_pattern,Y ; 4 + sta mb_smc5+1 ; 4 + sta mb_smc6+1 ; 4 + + lda mcl_pattern,Y ; 4 + sta mb_smc7+1 ; 4 + lda mch_pattern,Y ; 4 + sta mb_smc8+1 ; 4 + sta mb_smc9+1 ; 4 + + lda mnl_pattern,Y ; 4 + sta mb_smc10+1 ; 4 + lda mnh_pattern,Y ; 4 + sta mb_smc11+1 ; 4 + ;======= + ; 79 + + + + + ; play the code + ldy MB_FRAME ; 3 ;======= ; mal +mb_smc1: lda mal00,Y ; 4 sta MB_VALUE ; 3 ldx #0 ; 2 @@ -14,6 +54,7 @@ play_music: ; 80 ; mah +mb_smc2: lda mah00,Y ; 4 and #$f ; 2 sta MB_VALUE ; 3 @@ -22,6 +63,7 @@ play_music: ;======== ; 82 +mb_smc3: lda mah00,Y ; 4 lsr ; 2 lsr ; 2 @@ -34,6 +76,7 @@ play_music: ; 88 ; mbl +mb_smc4: lda mbl00,Y ; 4 sta MB_VALUE ; 3 ldx #2 ; 2 @@ -41,6 +84,7 @@ play_music: ;======= ; 80 ; mbh +mb_smc5: lda mbh00,Y ; 4 and #$f ; 2 sta MB_VALUE ; 3 @@ -49,6 +93,7 @@ play_music: ;======= ; 82 +mb_smc6: lda mbh00,Y ; 4 lsr ; 2 lsr ; 2 @@ -60,6 +105,7 @@ play_music: ;====== ; 88 ; mcl +mb_smc7: lda mcl00,Y ; 4 sta MB_VALUE ; 3 ldx #4 ; 2 @@ -68,6 +114,7 @@ play_music: ; 80 ; mch +mb_smc8: lda mch00,Y ; 4 and #$f ; 2 sta MB_VALUE ; 3 @@ -76,6 +123,7 @@ play_music: ;======= ; 82 +mb_smc9: lda mch00,Y ; 4 lsr ; 2 lsr ; 2 @@ -87,6 +135,7 @@ play_music: ;======== ; 88 ; mnl +mb_smc10: lda mnl00,Y ; 4 sta MB_VALUE ; 3 ldx #6 ; 2 @@ -94,6 +143,7 @@ play_music: ;======= ; 80 ; mnh +mb_smc11: lda mnh00,Y ; 4 sta MB_VALUE ; 3 ldx #7 ; 2 @@ -107,6 +157,50 @@ play_music: .align $100 +; patterns 31 long +mal_pattern: +.byte