megamusic: pattern selection

This commit is contained in:
Vince Weaver 2018-10-27 00:46:49 -04:00
parent 97df405a11
commit 8486b21ee6
4 changed files with 108 additions and 9 deletions

View File

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

View File

@ -8,6 +8,10 @@
megamusic_start: ; this should end up at $4000
lda #0
sta MB_FRAME
sta MB_PATTERN
;===================
; Init mockingboard
;===================

View File

@ -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 <mal00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mah_pattern:
.byte <mah00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mbl_pattern:
.byte <mbl00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mbh_pattern:
.byte <mbh00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mcl_pattern:
.byte <mcl00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mch_pattern:
.byte <mch00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mnl_pattern:
.byte <mnl00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
mnh_pattern:
.byte <mnh00,<mal00,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.byte <mal02,<mal02,<mal02,<mal02,<mal02,<mal02,<mal02
.align $100
mal00:
.incbin "music/mock.al.00"
mal02:

View File

@ -112,7 +112,7 @@ MB_ADDRL = $91
MB_ADDRH = $92
DONE_PLAYING = $93
MB_FRAME = $94
CHUNKSIZE = $95
MB_PATTERN = $95
LZ4_DONE = $96
DECODE_ERROR = $97
COPY_TIME = $98