From ea401cf26acd18cbe7facf117a8dbc8dc268d769 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 12 Jun 2018 17:13:12 -0400 Subject: [PATCH] chiptune_debug: add another test doesn't work yet --- chiptune_debug/Makefile | 9 +- chiptune_debug/chiptune_min.s | 628 ++++++++++++++++++++++++++++++++++ 2 files changed, 636 insertions(+), 1 deletion(-) create mode 100644 chiptune_debug/chiptune_min.s diff --git a/chiptune_debug/Makefile b/chiptune_debug/Makefile index d4ef169d..1fe519f1 100644 --- a/chiptune_debug/Makefile +++ b/chiptune_debug/Makefile @@ -5,12 +5,13 @@ PNG2GR = ../gr-utils/png2gr all: chiptune_debug.dsk -chiptune_debug.dsk: CHIPTUNE_IRQ CHIPTUNE_NOIRQ CHIPTUNE_25HZ CHIPTUNE_BARE ./sdemo.raw +chiptune_debug.dsk: CHIPTUNE_IRQ CHIPTUNE_NOIRQ CHIPTUNE_25HZ CHIPTUNE_BARE CHIPTUNE_MIN cp chiptune_empty.dsk chiptune_debug.dsk $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_IRQ $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_NOIRQ $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_25HZ $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_BARE + $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_MIN CHIPTUNE_IRQ: chiptune_irq.o @@ -47,6 +48,12 @@ CHIPTUNE_BARE: chiptune_bare.o chiptune_bare.o: chiptune_bare.s ca65 -o chiptune_bare.o chiptune_bare.s -l chiptune_bare.lst +CHIPTUNE_MIN: chiptune_min.o + ld65 -o CHIPTUNE_MIN chiptune_min.o -C ../linker_scripts/apple2_c00.inc + +chiptune_min.o: chiptune_min.s + ca65 -o chiptune_min.o chiptune_min.s -l chiptune_min.lst + clean: rm -f *~ TITLE.GR *.o *.lst \ diff --git a/chiptune_debug/chiptune_min.s b/chiptune_debug/chiptune_min.s new file mode 100644 index 00000000..709ede27 --- /dev/null +++ b/chiptune_debug/chiptune_min.s @@ -0,0 +1,628 @@ +; 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 + +mb_write_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_9: + + ldx #9 + + ; 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 |................| + +; 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 |................| + + +; 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 + +; 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 |................| + + +; 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 |................| + +; 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 |................|