;Mario Bros Sound Code

	ORG	$2200									;TO $27FF

;	TUNE VARIABLES - $34 BYTES
TUNEAREA		EQU	$2200
TUNESOFF		EQU	TUNEAREA+$0000				;1 BYTE  - FLAG FOR ALL TUNES OFF
TUNNUM			EQU	TUNEAREA+$0001				;1 BYTE  - CURRENT TUNE NUMBER BEING PROCESSED
TUNCHANNEL		EQU	TUNEAREA+$0002				;1 BYTE  - CONVERTED FOR INDEX INTO POKEY CHANNEL REGISTERS
TUNFILLER		EQU	TUNEAREA+$0003				;1 BYTE  - NOT USED YET
TUNON			EQU	TUNEAREA+$0004				;4 BYTES - FLAG FOR TUNE PLAYING BY CHANNEL
NOTELO			EQU	TUNEAREA+$0008				;4 BYTES - INDEX INTO NOTE TABLE LOW
NOTEHI			EQU	TUNEAREA+$000C				;4 BYTES - INDEX INTO NOTE TABLE HI
CTLVOL			EQU	TUNEAREA+$0010				;4 BYTES - CONTROL / VOLUME VALUE BY CHANNEL
TUNINDEX		EQU	TUNEAREA+$0014				;4 BYTES - TUNE NUMBER BY CHANNEL
TUNFRM			EQU	TUNEAREA+$0018				;4 BYTES - NUMBER OF FRAMES (DURATION COUNT)
TUNPRIOR		EQU	TUNEAREA+$001C				;4 BYTES - TUNE PRIORITY BY CHANNEL
DURNLO			EQU	TUNEAREA+$0020				;4 BYTES - INDEX INTO DURATION TABLE LOW
DURNHI			EQU	TUNEAREA+$0024				;4 BYTES - INDEX INTO DURATION TABLE HI
DCYSTOR			EQU	TUNEAREA+$0028				;4 BYTES - FOR NOTE DECAY BY CHANNEL
FREQCNT			EQU	TUNEAREA+$002C				;4 BYTES - FOR NOTE DECAY BY CHANNEL
CTLSAV			EQU	TUNEAREA+$0030				;4 BYTES - TO SAVE THE CONTROL VALUE
MUTEMASK		EQU TUNEAREA+$0034
	org $2240

;	SOUND -------------------------------------------------------------------------------------------------------------------->

;	TUNES - THESE ROUTINES HANDLE ALL OF THE SOUNDS

;	RESET POKEY CHIP
RSTPOKEY:
	LDX #$0F 
	LDA #$00
RSTLP:
	STA AUDF0,X									;CLEAR POKEY REGISTERS
	DEX 
	BPL RSTLP 
	LDA #$03
	STA SKCTL	;S									;TURN IT ON
	RTS

;	TURN OFF ALL SOUNDS
STOPTUN
	LDA #$00
	STA AUDC0
	STA AUDC1
	STA AUDC2
	STA AUDC3
	LDA #$01
	STA TUNESOFF
	RTS

;	TURN ON ALL SOUNDS
STARTTUN
	LDA #$00
	STA TUNESOFF
	RTS

;	THIS ROUTINE ERASES ALL TUNES
;	X AND Y ARE PRESERVED
CLEARTUN
	TXA											;STACK REGISTERS
	PHA
	TYA
	PHA
	LDX #$03
CTLOOP
	JSR ENDTUNE									;ERASE CURRENT TUNE
	DEX
	BPL CTLOOP
	PLA											;UNSTACK REGISTERS
	TAY
	PLA
	TAX
	RTS

;	ROUTINE TO KILL A PARTICULAR TUNE - IF IT IS RUNNING
;	INPUT: TUNE NUMBER IN A
;	X AND Y ARE PRESERVED
KILLTUNE
	STA TUNNUM									;SAVE IT
	TXA											;STACK REGISTERS
	PHA
	TYA
	PHA
	LDX #$03									;CHECK ALL CHANNELS
KTLOOP
	LDA TUNON,X									;SEE IF CHANNEL ON
	BEQ KTNEXT
	LDA TUNINDEX,X								;SEE IF HAS TUNE TO BE KILLED
	CMP TUNNUM
	BNE KTNEXT
	JSR ENDTUNE									;ERASE IT
KTNEXT
	DEX
	BPL KTLOOP
	PLA											;UNSTACK REGISTERS
	TAY
	PLA
	TAX
	RTS

;	THIS ROUTINE CLEARS OUT A TUNE CHANNEL
;	INPUT: X IS CHANNEL
ENDTUNE
	LDA #$00
	STA TUNON,X									;INDICATE CHANNEL CLEAR
	STA TUNINDEX,X								;CLEAR TUNE INDEX
	STA DCYSTOR,X
	STA FREQCNT,X
	RTS

;	THIS ROUTINE ENTERS A TUNE INTO ONE OF THE SOUND CHANNELS IF IT CAN
;	INPUT:  TUNE NUMBER IN A
;	X AND Y ARE PRESERVED
DOTUNE
	STA TUNNUM									;SAVE IT
	;LDA AUTOPLAY								;IF IN AUTOPLAY - NO SOUND
	;BEQ DTCONT
	;RTS
DTCONT
	TXA											;STACK REGISTERS
	PHA
	TYA
	PHA
	LDY TUNNUM									;SEE IF WE CAN PUT IT IN
	LDX CHANNLTBL,Y								;GET WHAT CHANNEL TO TRY TO PUT IT IN
	LDA TUNON,X									;SEE IF CHANNEL OPEN
	BEQ DTDOIT
	LDA PRIRTYTBL,Y								;SEE IF WE CAN BUMP CHANNEL
	CMP TUNPRIOR,X
	BMI DTOUT
DTDOIT
	LDA TUNNUM
	TAY											;PUT TUNE IN Y
	STA TUNINDEX,X								;SET THE TUNE INDEX
	LDA #$00									;TURN TUNE OFF WHILE CHANGING IT
	STA TUNON,X
	LDA CNTVOLTBL,Y								;GET TUNE CONTROL / VOLUME
	STA CTLVOL,X
	STA CTLSAV,X								;USED TO RESTORE AFTER DECAY
	LDA NOTETBLLO,Y								;GET TUNE FREQUENCY LOW ADDRESS
	STA NOTELO,X
	LDA NOTETBLHI,Y								;GET TUNE FREQUENCY HIGH ADDRESS
	STA NOTEHI,X
	LDA DURNTBLLO,Y								;GET TUNE DURATION LOW ADDRESS
	STA DURNLO,X
	LDA DURNTBLHI,Y								;GET TUNE DURATION HIGH ADDRESS
	STA DURNHI,X
	LDA PRIRTYTBL,Y								;SET PRIORITY
	STA TUNPRIOR,X
	LDA #$01									;SET FREQ, CTL, AND VOL TO BE SET
	STA TUNFRM,X
	STA TUNON,X									;AND TURN THE TUNE ON!
DTOUT
	PLA											;UNSTACK REGISTERS
	TAY
	PLA
	TAX
	RTS

;  THIS ROUTINE IS CALLED EVERY VBLANK TO TAKE CARE OF TUNES
;  REGISTERS ARE NOT SAVED
TUNER
	LDX #$03									;FOUR TUNES CHANNELS, START WITH LAST
	LDA TUNESOFF
	BEQ TUNLOOP
	RTS
TUNLOOP
	TXA
	ASL
	STA TUNCHANNEL								;CHANNELS ARE OFFSET 0, 2, 4, 6 IN THE POKEY
	TAY
	LDA TUNON,X
	BNE TUNBODY
	;AND MUTEMASK,Y
	STA AUDC0,Y									;CHANNEL OFF - MAKE SURE VOLUME OFF
	JMP TUNNEXT
TUNBODY
	DEC TUNFRM,X								;SEE IF WE'RE DONE WITH THIS SOUND
	BEQ TUNFRMFRQ								;YES - GET NEXT NOTE / DURATION
	DEC FREQCNT,X                               ;REDUCE THE NUMBER OF FRAMES UNTIL NEXT DECAY
	BEQ DEC_VOLUME
	JMP TUNNEXT                                 ;IF WE AREN'T AT ZERO YET, DON'T DECAY

DEC_VOLUME
	LDA DCYSTOR,X                               ;RESET THE DECAY FOR THE NEXT COUNT
	STA FREQCNT,X

	LDA CTLVOL,X                                ;IF VOLUME ALREADY 0 DO NOT DECREMENT
	AND #$0F
	BEQ TUNNEXT
	
	DEC CTLVOL,X                                ;DECREMENT THE VOLUME
	LDA CTLVOL,X
	LDY TUNCHANNEL
	AND MUTEMASK,Y
	STA AUDC0,Y
	JMP TUNNEXT                                 ;GO TO NEXT CHANNEL
TUNFRMFRQ
	LDA DURNLO,X								;GET THE CURRENT DURATION
	STA SOUNDZP
	LDA DURNHI,X
	STA SOUNDZP+1
	LDY #$00
	LDA (SOUNDZP),Y
	BEQ TUNEND									;$00 IN DURATION MEANS TUNE IS OVER
	STA TUNFRM,X
	TAY
	LDA DECAYTBL,Y								;GET THE CURRENT DECAY VALUE INDEXED BY NOTE
	STA DCYSTOR,X								;STORE IT HERE TO REFRESH THE COUNTER FOR THE NEXT DECAY
	STA FREQCNT,X								;ALSO STORE IT HERE FOR TUNER
	LDY TUNCHANNEL
	LDA CTLSAV,X
	STA CTLVOL,X								;RESTORE THE ORIGINAL CONTROL AND VOLUME FOR NEXT NOTE
	AND #$0F
	BEQ SKIPWRITEZERO
	LDA CTLSAV,X
	STA AUDC0,Y
SKIPWRITEZERO
	LDA NOTELO,X								;GET THE CURRENT FREQUENCY
	
	
	STA SOUNDZP

	LDA NOTEHI,X
	STA SOUNDZP+1
	
	LDY TUNCHANNEL
	LDA #$FF
	STA MUTEMASK, Y
	
	LDY #$00
	LDA (SOUNDZP),Y
	LDY TUNCHANNEL
	CMP #00
	BNE SKIPFLAGREST
	LDA #$F0
	STA MUTEMASK,Y
	LDA #$00
SKIPFLAGREST

	STA AUDF0,Y



	INC NOTELO,X
	BNE TUNNEXTNOTE
	INC NOTEHI,X
TUNNEXTNOTE
	INC DURNLO,X
	BNE TUNNEXT
	INC DURNHI,X
TUNNEXT
	DEX
	CPX #$00
	BMI TUNEXIT
	JMP TUNLOOP
TUNEXIT
	RTS

TUNEND
	LDA NOTELO,X								;SEE IF WE SHOULD REPEAT
	STA SOUNDZP
	LDA NOTEHI,X
	STA SOUNDZP+1
	LDY #$00
	LDA (SOUNDZP),Y
	BMI TUNRESTART
	JSR ENDTUNE
	JMP TUNNEXT
TUNRESTART
	LDA TUNINDEX,X								;GET TUNE NUMBER
	TAY
	LDA CNTVOLTBL,Y								;GET TUNE CONTROL / VOLUME
	STA CTLVOL,X
	STA CTLSAV,X								;USED TO RESTORE AFTER DECAY
	LDA NOTETBLLO,Y								;GET TUNE FREQUENCY LOW ADDRESS
	STA NOTELO,X
	LDA NOTETBLHI,Y								;GET TUNE FREQUENCY HIGH ADDRESS
	STA NOTEHI,X
	LDA DURNTBLLO,Y								;GET TUNE DURATION LOW ADDRESS
	STA DURNLO,X
	LDA DURNTBLHI,Y								;GET TUNE DURATION HIGH ADDRESS
	STA DURNHI,X
	LDY TUNCHANNEL
	LDA CTLVOL,X
	AND $0F
	BEQ SKIPFREQ
	;AND MUTEMASK,Y
	STA AUDC0,Y									;STORE THE CONTROL / VOLUME IN THE CHANNEL
SKIPFREQ	
	LDA #$01									;SET FREQ, CTL, AND VOL TO BE SET
	STA TUNFRM,X
	JMP TUNNEXT

;	DATA FOR TUNES

;	CNTVOLTBL - HIGH NYBBLE FOR VOICE CONTROL (7654XXXX), AND LOW NYBBLE FOR VOLUME (XXXX3210)
CNTVOLTBL:
	.byte $a4,$a0,$23,$a6		 	
	.byte $a0,$a7,$c7,$a7
	.byte $00,$A7,$A7,$A0
	.byte $00,$A7,$A7,$A0
	.byte $A7,$A0,$A0
	.byte $00,$A7,$A7,$A0
	.byte $A7,$A0,$A0

;	PRIORITY TABLE
PRIRTYTBL:
	.byte $02,$02,$02,$02
	.byte $02,$02,$02,$00	
	.byte $02,$02,$02,$00
	.byte $02,$02,$02,$00
	.byte $02,$02,$02
	.byte $02,$02,$02,$00
	.byte $02,$00,$00,$00
	
;	CHANNEL TABLE ($00 - $03 ARE VALID)
CHANNLTBL:
	.byte $00,$01,$02,$03		; must set $00 and $01 to use 16-bit combined channel
	.byte $00,$01,$02,$03
	.byte $00,$01,$02,$03
	.byte $00,$01,$02,$03
	.byte $01,$02,$03
	.byte $00,$01,$02,$03
	.byte $00,$01,$02,$03

;	DECAY TABLE - DEFINES DECAY COUNT INDEXED BY NOTE DURATION
DECAYTBL:
	.byte $01,$01,$01,$01,$02,$02,$02,$02
	.byte $02,$03,$03,$03,$03,$03,$03,$03
	.byte $04,$04,$04,$04,$04,$04,$04,$04
	.byte $05,$05,$05,$05,$05,$05,$05,$05
	.byte $05,$05,$06,$06,$06,$06,$06,$06
	.byte $06,$06,$06,$06,$07,$07,$07,$07
	.byte $07,$07,$07,$07,$07,$07,$07,$07
	.byte $07,$08,$08,$08,$08,$08,$08,$08

;	FREQUENCY TABLE
NOTETBLHI:
	.byte >(TUNE00),>(TUNE01),>(TUNE02),>(TUNE03)
	.byte >(TUNE04),>(TUNE05),>(TUNE06),>(TUNE07)
	.byte >(TUNE08),>(TUNE09),>(TUNE0A),>(TUNE0B)
	.byte >(TUNE0C),>(TUNE0D),>(TUNE0E),>(TUNE0F)
	.byte >(TUNE10),>(TUNE11),>(TUNE12)
	.byte >(TUNE13),>(TUNE14),>(TUNE15),>(TUNE16)
	.byte >(TUNE17),>(TUNE18),>(TUNE19),>(TUNE1a)

NOTETBLLO:
	.byte <(TUNE00),<(TUNE01),<(TUNE02),<(TUNE03)
	.byte <(TUNE04),<(TUNE05),<(TUNE06),<(TUNE07)
	.byte <(TUNE08),<(TUNE09),<(TUNE0A),<(TUNE0B)
	.byte <(TUNE0C),<(TUNE0D),<(TUNE0E),<(TUNE0F)
	.byte <(TUNE10),<(TUNE11),<(TUNE12)
	.byte <(TUNE13),<(TUNE14),<(TUNE15),<(TUNE16)
	.byte <(TUNE17),<(TUNE18),<(TUNE19),<(TUNE1a)

;	DURATION TABLE
DURNTBLHI:
	.byte >(DURN00),>(DURN01),>(DURN02),>(DURN03)
	.byte >(DURN04),>(DURN05),>(DURN06),>(DURN07)
	.byte >(DURN08),>(DURN09),>(DURN0A),>(DURN0B)
	.byte >(DURN0C),>(DURN0D),>(DURN0E),>(DURN0F)
	.byte >(DURN10),>(DURN11),>(DURN12)
	.byte >(DURN13),>(DURN14),>(DURN15),>(DURN16)
	.byte >(DURN17),>(DURN18),>(DURN19),>(DURN1a)

DURNTBLLO:
	.byte <(DURN00),<(DURN01),<(DURN02),<(DURN03)
	.byte <(DURN04),<(DURN05),<(DURN06),<(DURN07)
	.byte <(DURN08),<(DURN09),<(DURN0A),<(DURN0B)
	.byte <(DURN0C),<(DURN0D),<(DURN0E),<(DURN0F)
	.byte <(DURN10),<(DURN11),<(DURN12)
	.byte <(DURN13),<(DURN14),<(DURN15),<(DURN16)
	.byte <(DURN17),<(DURN18),<(DURN19),<(DURN1a)

;TEMPOS
T1	=	$03
T2      =       (T1*2)
T3      =       (T1*3)
T4      =       (T1*4)
T5      =       (T1*5)
T6      =       (T1*6)
T7      =       (T1*7)
T8      =       (T1*8)
T9      =       (T1*9)
TA      =       (T1*10)
TB      =       (T1*11)
TC      =       (T1*12)
TD      =       (T1*13)
TE      =       (T1*14)
TF      =       (T1*15)
T0      =       (T1*16)

;A	16264	3F88			
;A#	15351	3BF7			
;B	14489	3899			
;C	13675	356B				OCTAVE 2
;C#	12907	326B			
;D	12182	2F96			
;D#	11498	2CEA			
;E	10852	2A64	
;
;F	10243	2803			
;F#	9668	25C4			
;G	9125	23A5			
;G#	8612	21A4			
;A	8128	1FC0			
;A#	7672	1DF8			
;B	7241	1C49			
;C	6834	1AB2	243	F3		OCTAVE 3
;C#	6450	1932	230	E6	
;D	6088	17C8	217	D9	
;D#	5746	1672	204	CC	
;E	5423	152F	193	C1	
;F	5118	13FE	182	B6	
;F#	4830	12DE	172	AC	
;G	4559	11CF	162	A2	
;G#	4303	10CF	153	99	
;A	4061	0FDD	144	90	

;coin grab sound effect
TUNE00:

   .byte 60,0,57,57
	.byte 60,0,0,0,0,0,0
	.byte 72,0,64
	.byte 72,0,0,0,0,0,0
	
	.byte 60,0,57,57
	.byte 60,0,0,0,0,0,0
	.byte 72,0,64
	.byte 72,0,0,0,0,0,0
	
	.byte 91,45,60,50,90,45,59,49,90,44,59,56
	.byte 89,44,58,49,89,44,58,49,89,44,0,0
	
	.byte 91,45,60,50,90,45,59,49,90,44,59,56
	.byte 89,44,58,49,89,44,58,49,89,44,0,0
	
	.byte 72,91,108,68,72,91,108
	.byte 72,91,108,68,72,91,108
	
	.byte 14,0,16,18
	.byte 19,0,0,0,0,0,0
	
	.byte 30,0,33,37
	.byte 40,0,0,0,0,0,0
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	.byte -1

    
	
	
	
DURN00:

	 
	 
	  .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 206,10,72
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 206,10,72
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 
	 .byte 72,72,72,72,120,24,144
	 .byte 72,72,72,72,120,24,144
	 
	  .byte 240,24,12,12
	 .byte 144,24,24,24,24,24,24
	 
	  .byte 240,24,12,12
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 0
	
TUNE01:
	.byte 162,0,153,153
	.byte 162,0,0,0,0,0,0
	.byte 204,0,182
	.byte 204,0,0,0,0,0,0
	
	.byte 162,0,153,153
	.byte 162,0,0,0,0,0,0
	.byte 204,0,182
	.byte 204,0,0,0,0,0,0
	
	.byte 243,121,162,136,243,121,162,136,243,121,162,153
	.byte 243,121,162,136,243,121,162,136,243,121,0,0
	
	.byte 243,121,162,136,243,121,162,136,243,121,162,153
	.byte 243,121,162,136,243,121,162,136,243,121,0,0
	
	.byte 162,101,242,153,162,101,242
	.byte 162,101,242,153,162,101,242
	
		
	.byte 40,0,45,50
	.byte 53,0,0,0,0,0,0
	
	.byte 81,0,91,102
	.byte 108,0,0,0,0,0,0
	
	
	
	
	
	.byte -1
	
	

    
    
	
	
	
	
	

   
	
	
DURN01:
	 .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 206,10,72
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 206,10,72
	 .byte 144,24,24,24,24,24,24
	 
	 
	 
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 .byte 24,24,24,24,24,24,24,24,24,24,24,24
	 
	 .byte 72,72,72,72,120,24,144
	 .byte 72,72,72,72,120,24,144
	 
	  .byte 240,24,12,12
	 .byte 144,24,24,24,24,24,24
	 
	  .byte 240,24,12,12
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 0
	
	
	
	
	

TUNE02:
	 .byte 51,49,48,46,45,43,0,45,51
	 .byte 51,49,48,46,45,43,0,0,0,0,0,0
	 
	 .byte 79,77,73,71,67,65,57
	 .byte 79,77,73,71,67,65,0,0,0,0,0,0
	 
	   .byte 51,49,48,46,45,43,0,45,51
	 .byte 51,49,48,46,45,43,0,0,0,0,0,0
	 
	 .byte 79,77,73,71,67,65,57
	 .byte 79,77,73,71,67,65,0,0,0,0,0,0
	 
	 .byte 70,0,65,65
	.byte 70,0,0,0,0,0,0
	
	.byte 88,79
	.byte 88,0,0,0,0,0,0
	
	.byte 70,88,106,65,70,88,106
	.byte 70,88,106,65,70,88,106
	
	.byte 70,0,65,65
	.byte 70,0,0,0,0,0,0
	
	.byte 70,0,65,65
	.byte 70,0,0,0,0,0,0
	
	;.byte 60,58,56,54,52,50,0,53,60
	; .byte 60,58,56,54,52,50,0
	 
	; .byte 91,87,83,79,77,76,68
	; .byte 91,87,83,79,77,76,0
	 
	;  .byte 60,58,56,54,52,50,0,53,60
	; .byte 60,58,56,54,52,50,0
	 
	; .byte 91,87,83,79,77,76,68
	; .byte 91,87,83,79,77,76,0
	 
	; .byte 81,0,76,76
	;.byte 81,0
	
	;.byte 102,91
	;.byte 102,0
	
	;.byte 81,102,121,76,81,102,121
	;.byte 81,102,121,76,81,102,121
	
	;.byte 40,0,47,50
	;.byte 53,0
	
	;.byte 81,0,96,102
	;.byte 108,0
	
	
	
	
	
	
	
	
	
	.byte -1
	
DURN02:
   	 .byte 2,2,2,2,2,234,20,12,12
	 .byte 2,2,2,2,2,134,24,24,24,24,24,24
	 .byte 2,2,2,2,2,206,72
	 .byte 2,2,2,2,2,134,24,24,24,24,24,24
	 
	 .byte 2,2,2,2,2,234,20,12,12
	 .byte 2,2,2,2,2,134,24,24,24,24,24,24
	 .byte 2,2,2,2,2,206,72
	 .byte 2,2,2,2,2,134,24,24,24,24,24,24
	 
	 .byte 240,24,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 216,72
	 .byte 144,24,24,24,24,24,24
	 
	 .byte 72,72,72,72,120,24,144
	 .byte 72,72,72,72,120,24,144
	 
	 .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	 .byte 244,20,12,12
	 .byte 144,24,24,24,24,24,24
	  
	  
	  
	  
	  
	  
	  
	
	.byte 0
	
	
	
	

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)

TUNE03:
   .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
  .byte 121,243,91,182,102,204,81,161,91,182,68,136,60,121,121,243,91,182,102,204,81,161,91,182
   
 
   
   
   
   
   
   
   
	
	.byte -1

;A#	15351	3BF7			
;B	14489	3899			
;C	13675	356B				OCTAVE 2
;C#	12907	326B			
;D	12182	2F96			
;D#	11498	2CEA			
;E	10852	2A64	
;F	10243	2803			
;F#	9668	25C4			
;G	9125	23A5			
;G#	8612	21A4			
;A	8128	1FC0			
;A#	7672	1DF8			
;B	7241	1C49			
;C	6834	1AB2	243	F3		OCTAVE 3
;C#	6450	1932	230	E6	
;D	6088	17C8	217	D9	
;D#	5746	1672	204	CC	
;E	5423	152F	193	C1	
;F	5118	13FE	182	B6	
;F#	4830	12DE	172	AC	
;G	4559	11CF	162	A2	
;G#	4303	10CF	153	99	
;A	4061	0FDD	144	90	
DURN03: ;this table MUST be identical to DURN00:
	
	

  
   
  
   
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   
    .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   
    .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   
    .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   .byte 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23
   
   
   
   
   
	
	
	.byte 0

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)

TUNE04:
   .byte 255,193,162,128,121,128,162,193
	.byte 255,193,162,128,121,128,162,193
	.byte 255,193,162,128,121,128,162,193
	.byte 255,193,162,128,121,128,162,193
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 128,96,81,64,60,64,81,96
	.byte 0

;A#	15351	3BF7			
;B	14489	3899			
;C	13675	356B				OCTAVE 2
;C#	12907	326B			
;D	12182	2F96			
;D#	11498	2CEA			
;E	10852	2A64	
;F	10243	2803			
;F#	9668	25C4			
;G	9125	23A5			
;G#	8612	21A4			
;A	8128	1FC0			
;A#	7672	1DF8			
;B	7241	1C49			
;C	6834	1AB2	243	F3		OCTAVE 3
;C#	6450	1932	230	E6	
;D	6088	17C8	217	D9	
;D#	5746	1672	204	CC	
;E	5423	152F	193	C1	
;F	5118	13FE	182	B6	
;F#	4830	12DE	172	AC	
;G	4559	11CF	162	A2	
;G#	4303	10CF	153	99	
;A	4061	0FDD	144	90	
DURN04: ;this table MUST be identical to DURN00:
	
	

    
    .byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 10,10,10,10,10,10,10,10
	.byte 0
	
;Game Over
;	TUNE 0 - COMBINED 16-BIT CHANNEL (low order bytes stored in AUDF0)


TUNE05:
	.byte 72,72
	.byte 60,0,64,72,81,64,72,0,0
	
	
	
	
	
	
	
	

;D#	1431	0597	50	32	
;E	1350	0546	47	2F	
;F	1274	04FA	45	2D	
;F#	1202	04B2	42	2A	
;G	1134	046E	40	28	
;G#	1070	042E	37	25	
;A	1010	03F2	35	23	
;A#	953		03B9	33	21	
;B	899		0383	31	1F	
;C	848		0350	30	1E		OCTAVE 6
;C#	800		0320	28	1C	
;D	755		02F3	26	1A	


DURN05:
	.byte 18,6
	.byte 24,24,12,12,12,12,24,48,0
	
	
	
	

;
;	TUNE 3 - NORMAL 8-BIT CHANNEL

	
TUNE06:
	.byte 14
	.byte 167,$0e,146,98,131,98,131,98,0
	
	
	
	
DURN06:
    .byte 24
	.byte 36,12,48,12,12,12,12,12,0
	
	
	

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)

TUNE07:
   .byte 82,82
	.byte 67,0,73,82,92,73,60,40,30,40,60,40,30,40,60,0
	
		
	
	
	
	
;A	16264	3F88			
;A#	15351	3BF7			
;B	14489	3899			
;C	13675	356B				OCTAVE 2
;C#	12907	326B			
;D	12182	2F96			
;D#	11498	2CEA			
;E	10852	2A64	
;F	10243	2803			
;F#	9668	25C4			
;G	9125	23A5			
;G#	8612	21A4			
;A	8128	1FC0			
;A#	7672	1DF8			
;B	7241	1C49			
;C	6834	1AB2	243	F3		OCTAVE 3
;C#	6450	1932	230	E6	
;D	6088	17C8	217	D9	
;D#	5746	1672	204	CC	
;E	5423	152F	193	C1	
;F	5118	13FE	182	B6	
;F#	4830	12DE	172	AC	
;G	4559	11CF	162	A2	
;G#	4303	10CF	153	99	
;A	4061	0FDD	144	90	
DURN07: ;this table MUST be identical to DURN00:
	
	

    
    .byte 18,6
	.byte 24,24,12,12,12,12,6,6,6,6,6,6,6,6,6,0

;
;Coin Bonus
;	TUNE 0 - COMBINED 16-BIT CHANNEL (low order bytes stored in AUDF0)
TUNE08:
	.byte $fe,$b2,$03,$00
	
	
	
	
	
DURN08:
	.byte 28,28,28,0
	

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)
TUNE09:
	
	.byte $13,$1a,$28,$00
	
	
	
DURN09: ;this table MUST be identical to DURN00:
	
	
	.byte 28,28,28,0
	
	
;
;	TUNE 2 - NORMAL 8-BIT CHANNEL
TUNE0a:
	.byte 91,72,60,50,45,50,60,72,91,0
	


DURN0a:
	
	.byte 7,7,7,7,7,7,7,7,28,0
	
	
;
;	TUNE 3 - NORMAL 8-BIT CHANNEL
TUNE0b:   
	.byte 0,0
		;A	4061	0FDD	144	90	

	
DURN0b:
	.byte 7
	
	.byte 0

;
;Level Start
;	TUNE 0 - COMBINED 16-BIT CHANNEL (low order bytes stored in AUDF0)
TUNE0c:
	.byte $72,$fe,$b2,$c0,$03,$f7,$6b,$96,$03,$f8
	
	
	.byte 0
	
DURN0c:
	.byte 14,14,14,14,14,7,7,7,7,7
	.byte 0

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)
TUNE0d:
	
	.byte $16,$13,$1a,$1f,$28,$3b,$35,$2f,$28,$1d
	
	
	
	.byte 0

DURN0d: ;this table MUST be identical to DURN00:
	
	.byte 14,14,14,14,14,7,7,7,7,7
	.byte 0

;
;	TUNE 2 - NORMAL 8-BIT CHANNEL
TUNE0e:
	.byte 72,81,91,91,91,72,68,0
	
	
	
	.byte 0


DURN0e:
	
	.byte 7,7,14,14,14,14,14,28
	
	.byte 0

;
;	TUNE 3 - NORMAL 8-BIT CHANNEL
TUNE0f:   
	.byte 0,0

	
DURN0f:
	.byte 7
	
	.byte 0

;Life Restart

;
;	TUNE 0 - FIRST VOICE OF FINISHED LEVEL
TUNE10:
	.byte 121,121,96,81,0,96,81,76,71,68,63,60,0
	
DURN10:
	.byte 8,8,8,8,8,8,8,4,4,4,4,4,0

;
;	TUNE 1 - SECOND VOICE OF FINISHED LEVEL
TUNE11:
	.byte $00,$00
DURN11:
	.byte $01,$00

;
;	TUNE 2 - THIRD VOICE OF FINISHED LEVEL
TUNE12:
	.byte $00,$00
DURN12:
	.byte $01,$00

;Second Intermission
;	TUNE 0 - COMBINED 16-BIT CHANNEL (low order bytes stored in AUDF0)
TUNE13:
	.byte $f8,$e0,$cf,$56,$f8
	.byte $f8,$e0,$56,$de,$e0,$56,$ff
	
	
	
	
DURN13:
	.byte 20,10,20,10,20
	.byte 10,10,10,20,10,20
	
	.byte 0

;
;	TUNE 1 - COMBINED 16-BIT CHANNEL (High order bytes stored in AUDF1)
TUNE14:
	
	.byte $0e,$0b,$10,$0d,$0e
	.byte $0e,$0b,$0d,$12,$0b,$0d,$ff
	
	
	
DURN14: ;this table MUST be identical to DURN00:
	
	
	.byte 20,10,20,10,20
	.byte 10,10,10,20,10,20
	
	.byte 0

;
;	TUNE 2 - NORMAL 8-BIT CHANNEL
TUNE15:
	.byte 35,47,35,47,35,47,35,47,35,47,35,47,35,47,35,47,0
	
	

DURN15:
	
	.byte 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0
	
	
	
	

;
;	TUNE 3 - NORMAL 8-BIT CHANNEL
TUNE16:   
	.byte 0,0
	
	
DURN16:
	.byte 7
	
	.byte 0

;Jump
;	TUNE 0 - 8-bit channel with low pass filter from channel 2
TUNE17:
	.byte 128,122,106,100,94,88,82,76,70,64,58,52,45
	
	
	.byte 0
	
DURN17:
	.byte 1,1,1,1,1,1,1,1,1,1,1,1,1
	.byte 0

;
;	TUNE 1
TUNE18:
	
	.byte 0
	
	
	
	.byte 0

DURN18: ;this table MUST be identical to DURN00:
	
	.byte 7
	.byte 0

;
;	TUNE 2 - 8-bit channel which modulates channel 0
TUNE19:
	.byte 27,21
	
	
	
	.byte 0

DURN19:
	
	.byte 7,28
	
	.byte 0

;
;	TUNE 3 - NORMAL 8-BIT CHANNEL
TUNE1a:   
	.byte 0,0

	
DURN1a:
	.byte 7
	
	.byte 0