; VMW Chiptune Player .include "zp.inc" ;============================= ; Setup ;============================= ;============================ ; Init the Mockingboard ;============================ jsr mockingboard_init jsr reset_ay_both jsr clear_ay_both ;========================= ; Setup Interrupt Handler ;========================= ; Vector address goes to 0x3fe/0x3ff lda #interrupt_handler sta $03ff ;============================ ; Enable 50Hz clock on 6522 ;============================ sei ; disable interrupts just in case lda #$40 ; Continuous interrupts, don't touch PB7 sta $C40B ; ACR register lda #$7F ; clear all interrupt flags sta $C40E ; IER register (interrupt enable) lda #$C0 sta $C40D ; IFR: 1100, enable interrupt on timer one oflow sta $C40E ; IER: 1100, enable timer one interrupt lda #$E7 sta $C404 ; write into low-order latch lda #$4f sta $C405 ; write into high-order latch, ; load both values into counter ; clear interrupt and start counting ; 4fe7 / 1e6 = .020s, 50Hz ;================== ; load first song ;================== ;========================= ; Init Variables ;========================= lda #$0 sta MB_CHUNK_OFFSET ;============================ ; Enable 6502 interrupts ;============================ cli ; clear interrupt mask ;============================ ; Loop forever ;============================ main_loop: jmp main_loop ;========= ;routines ;========= ; left speaker MOCK_6522_ORB1 EQU $C400 ; 6522 #1 port b data MOCK_6522_ORA1 EQU $C401 ; 6522 #1 port a data MOCK_6522_DDRB1 EQU $C402 ; 6522 #1 data direction port B MOCK_6522_DDRA1 EQU $C403 ; 6522 #1 data direction port A ; right speaker MOCK_6522_ORB2 EQU $C480 ; 6522 #2 port b data MOCK_6522_ORA2 EQU $C481 ; 6522 #2 port a data MOCK_6522_DDRB2 EQU $C482 ; 6522 #2 data direction port B MOCK_6522_DDRA2 EQU $C483 ; 6522 #2 data direction port A ; AY-3-8910 commands on port B ; RESET BDIR BC1 MOCK_AY_RESET EQU $0 ; 0 0 0 MOCK_AY_INACTIVE EQU $4 ; 1 0 0 MOCK_AY_READ EQU $5 ; 1 0 1 MOCK_AY_WRITE EQU $6 ; 1 1 0 MOCK_AY_LATCH_ADDR EQU $7 ; 1 1 1 ;======================== ; Mockingboard Init ;======================== ; Initialize the 6522s ; set the data direction for all pins of PortA/PortB to be output mockingboard_init: lda #$ff ; all output (1) sta MOCK_6522_DDRB1 sta MOCK_6522_DDRA1 sta MOCK_6522_DDRB2 sta MOCK_6522_DDRA2 rts ;====================== ; Reset Left AY-3-8910 ;====================== reset_ay_both: lda #MOCK_AY_RESET sta MOCK_6522_ORB1 lda #MOCK_AY_INACTIVE sta MOCK_6522_ORB1 ;====================== ; Reset Right AY-3-8910 ;====================== ;reset_ay_right: lda #MOCK_AY_RESET sta MOCK_6522_ORB2 lda #MOCK_AY_INACTIVE sta MOCK_6522_ORB2 rts ; Write sequence ; Inactive -> Latch Address -> Inactive -> Write Data -> Inactive ;========================================= ; Write Right/Left to save value AY-3-8910 ;========================================= ; register in X ; value in MB_VALUE write_ay_both: ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 3 stx MOCK_6522_ORA2 ; put address on PA2 ; 3 lda #MOCK_AY_LATCH_ADDR ; latch_address on PB1 ; 2 sta MOCK_6522_ORB1 ; latch_address on PB1 ; 3 sta MOCK_6522_ORB2 ; latch_address on PB2 ; 3 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 3 sta MOCK_6522_ORB2 ; 3 ; value lda MB_VALUE ; 3 sta MOCK_6522_ORA1 ; put value on PA1 ; 3 sta MOCK_6522_ORA2 ; put value on PA2 ; 3 lda #MOCK_AY_WRITE ; ; 2 sta MOCK_6522_ORB1 ; write on PB1 ; 3 sta MOCK_6522_ORB2 ; write on PB2 ; 3 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 3 sta MOCK_6522_ORB2 ; 3 rts ; 6 ;=========== ; 53 ;======================================= ; clear ay -- clear all 14 AY registers ; should silence the card ;======================================= clear_ay_both: ldx #14 lda #0 sta MB_VALUE clear_ay_left_loop: jsr write_ay_both dex bpl clear_ay_left_loop rts ;================================ ;================================ ; mockingboard interrupt handler ;================================ ;================================ interrupt_handler: pha ; save A ; 3 ; Should we save X and Y too? bit $C404 ; clear 6522 interrupt by reading T1C-L ; 4 mb_play_music: ;====================================== ; Write frames to Mockingboard ;====================================== ; actually plays frame loaded at end of ; last interrupt, so 20ms behind? mb_write_frame: ;======================= ; Only output ; C coarse ; C fine ; C amp ; ENABLE ldy MB_CHUNK_OFFSET ; C CHANNEL FINE mb_write_loop_4: ldx #4 ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 4 stx MOCK_6522_ORA2 ; put address on PA2 ; 4 lda #MOCK_AY_LATCH_ADDR ; latch_address for PB1 ; 2 sta MOCK_6522_ORB1 ; latch_address on PB1 ; 4 sta MOCK_6522_ORB2 ; latch_address on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ; value lda c_fine,Y ; load register value ; 4 sta MOCK_6522_ORA1 ; put value on PA1 ; 4 sta MOCK_6522_ORA2 ; put value on PA2 ; 4 lda #MOCK_AY_WRITE ; ; 2 sta MOCK_6522_ORB1 ; write on PB1 ; 4 sta MOCK_6522_ORB2 ; write on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ;=========== ; 62 ldx #5 ; C CHANNEL COARSE mb_write_loop_5: ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 4 stx MOCK_6522_ORA2 ; put address on PA2 ; 4 lda #MOCK_AY_LATCH_ADDR ; latch_address for PB1 ; 2 sta MOCK_6522_ORB1 ; latch_address on PB1 ; 4 sta MOCK_6522_ORB2 ; latch_address on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ; value lda c_coarse,Y ; load register value ; 4 sta MOCK_6522_ORA1 ; put value on PA1 ; 4 sta MOCK_6522_ORA2 ; put value on PA2 ; 4 lda #MOCK_AY_WRITE ; ; 2 sta MOCK_6522_ORB1 ; write on PB1 ; 4 sta MOCK_6522_ORB2 ; write on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ;=========== ; 62 ldx #7 ; ENABLE mb_write_loop_7: ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 4 stx MOCK_6522_ORA2 ; put address on PA2 ; 4 lda #MOCK_AY_LATCH_ADDR ; latch_address for PB1 ; 2 sta MOCK_6522_ORB1 ; latch_address on PB1 ; 4 sta MOCK_6522_ORB2 ; latch_address on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ; value lda enable,Y ; load register value ; 4 sta MOCK_6522_ORA1 ; put value on PA1 ; 4 sta MOCK_6522_ORA2 ; put value on PA2 ; 4 lda #MOCK_AY_WRITE ; ; 2 sta MOCK_6522_ORB1 ; write on PB1 ; 4 sta MOCK_6522_ORB2 ; write on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ;=========== ; 62 mb_no_write_10: ldx #10 ; C Amplitude ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 4 stx MOCK_6522_ORA2 ; put address on PA2 ; 4 lda #MOCK_AY_LATCH_ADDR ; latch_address for PB1 ; 2 sta MOCK_6522_ORB1 ; latch_address on PB1 ; 4 sta MOCK_6522_ORB2 ; latch_address on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ; value lda c_amp,Y ; load register value ; 4 sta MOCK_6522_ORA1 ; put value on PA1 ; 4 sta MOCK_6522_ORA2 ; put value on PA2 ; 4 lda #MOCK_AY_WRITE ; ; 2 sta MOCK_6522_ORB1 ; write on PB1 ; 4 sta MOCK_6522_ORB2 ; write on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 sta MOCK_6522_ORB1 ; 4 sta MOCK_6522_ORB2 ; 4 ;=========== ; 62 increment_offset: inc MB_CHUNK_OFFSET ; increment offset ; 5 ;================================= ; Finally done with this interrupt ;================================= done_interrupt: pla ; restore a ; 4 rti ; return from interrupt ; 6 .align 256 UNPACK_BUFFER: ; 0: A Fine ;00000000 19 19 19 19 19 19 19 19 19 19 19 19 28 1e 19 28 |............(..(| ;00000010 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e |..(..(..(..(..(.| ;00000020 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 |.(..(..(..(..(..| ;00000030 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 |(..(..(..(..(..(| ;00000040 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e |..(..(..(..(..(.| ;00000050 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 28 1e 19 |.(..(..(..(..(..| ;00000060 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 |&..&..&..&..&..&| ;00000070 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e |..&..&..&..&..&.| ;00000080 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 |.&..&..&..&..&..| ;00000090 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 |&..&..&..&..&..&| ;000000a0 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e |..&..&..&..&..&.| ;000000b0 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 26 1e 19 |.&..&..&..&..&..| ;000000c0 28 22 19 28 22 19 28 22 19 28 22 19 28 22 19 28 |(".(".(".(".(".(| ;000000d0 22 19 28 22 19 28 22 19 28 22 19 28 22 19 28 22 |".(".(".(".(".("| ;000000e0 19 28 22 19 28 22 19 28 22 19 28 22 19 28 22 19 |.(".(".(".(".(".| ;000000f0 28 22 19 28 22 19 28 22 19 28 22 19 28 22 19 28 |(".(".(".(".(".(| ; 1 A coarse ;00000300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 2: B fine ;00000600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000006f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 3: B coarse ;00000900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00000990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000009f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 4: C fine c_fine: .byte $51,$3c,$32,$50,$3d,$32,$50,$3c, $33,$50,$3c,$32,$51,$3c,$32,$50 .byte $3d,$32,$50,$3c,$33,$50,$3c,$32, $51,$3c,$32,$50,$3d,$32,$50,$3c .byte $33,$50,$3c,$32,$51,$3c,$32,$50, $3d,$33,$50,$3c,$32,$51,$3c,$32 .byte $50,$3d,$33,$50,$3c,$32,$51,$3c, $32,$50,$3d,$33,$50,$3c,$32,$51 .byte $3c,$32,$50,$3d,$33,$50,$3c,$32, $51,$3c,$32,$50,$3d,$33,$50,$3c .byte $32,$51,$3c,$32,$50,$3d,$33,$50, $3c,$32,$51,$3c,$32,$50,$3d,$33 .byte $4c,$3c,$32,$4b,$3d,$32,$4b,$3c, $33,$4b,$3c,$32,$4c,$3c,$32,$4b .byte $3d,$32,$4b,$3c,$33,$4b,$3c,$32, $4c,$3c,$32,$4b,$3d,$32,$4b,$3c .byte $33,$4b,$3c,$32,$4c,$3c,$32,$4b, $3d,$33,$4b,$3c,$32,$4c,$3c,$32 .byte $4b,$3d,$33,$4b,$3c,$32,$4c,$3c, $32,$4b,$3d,$33,$4b,$3c,$32,$4c .byte $3c,$32,$4b,$3d,$33,$4b,$3c,$32, $4c,$3c,$32,$4b,$3d,$33,$4b,$3c .byte $32,$4c,$3c,$32,$4b,$3d,$33,$4b, $3c,$32,$4c,$3c,$32,$4b,$3d,$33 .byte $51,$43,$32,$50,$44,$32,$50,$43, $33,$50,$43,$32,$51,$43,$32,$50 .byte $44,$32,$50,$43,$33,$50,$43,$32, $51,$43,$32,$50,$44,$32,$50,$43 .byte $33,$50,$43,$32,$51,$43,$32,$50, $44,$33,$50,$43,$32,$51,$43,$32 .byte $50,$44,$33,$50,$43,$32,$51,$43, $32,$50,$44,$33,$50,$43,$32,$51 ; 5: C coarse c_coarse: .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 ; 6: Noise ;00001200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000012f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 7: Enable enable: .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 .byte $38,$38,$38,$38,$38,$38,$38,$38, $38,$38,$38,$38,$38,$38,$38,$38 ; 8: A amp ;00001800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001840 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 |................| ;00001850 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 |................| ;00001860 00 01 00 00 00 00 00 00 00 00 00 00 01 03 02 01 |................| ;00001870 01 01 01 01 01 01 01 01 01 03 02 01 01 01 01 01 |................| ;00001880 01 01 01 01 02 04 03 02 02 02 02 04 03 02 02 02 |................| ;00001890 02 02 02 02 02 02 02 04 03 02 02 02 02 02 02 02 |................| ;000018a0 02 02 03 05 04 03 03 03 03 05 04 03 03 03 03 03 |................| ;000018b0 03 03 03 03 04 06 05 04 04 04 04 04 04 04 04 04 |................| ;000018c0 04 06 05 04 04 04 04 04 04 04 04 04 05 07 06 05 |................| ;000018d0 05 05 05 05 05 05 05 05 05 07 06 05 05 05 05 05 |................| ;000018e0 05 05 05 05 06 08 07 06 06 06 06 08 07 06 06 06 |................| ;000018f0 06 06 06 06 06 06 07 09 08 07 07 07 07 07 07 07 |................| ; 9: B amp ;00001b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001b90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001bb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001bd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00001bf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 10: C amp c_amp: .byte $0d,$0e,$0e,$0d,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0d,$0e,$0e,$0d,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0d,$0e,$0e,$0d,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c, $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c ; 11: Envelope period ;00002100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000021f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 12: Envelope period ;00002400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;00002490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ;000024f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ; 13: Envelope ;00002700 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002710 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002720 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002730 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002740 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002750 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002760 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002770 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002780 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;00002790 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| ;000027f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|