		SECTION	Uno-Pixel,code_c

		opt	c-

pheight		= 200
pwidth		= 40
psize		= pwidth*pheight
execbase	= 4
openlib		= -408
closelib	= -414

**************************************
fontheight	= 16
**************************************

run:				* no doubt or nodout
	move.l	$80,otrap0
	move.l	#prog,$80
	trap	#0
	move.l	otrap0,$80
	rts

prog
	movem.l	d0-d7/a0-a6,-(sp)
	bsr	init_music
	lea	$dff000,a5
	bsr	init_stuff
	bsr	clearsprites
	bsr	buildmulus
	bsr	setup
	move.l	execbase,a6
	clr.l	38(a6)
	lea	graphname(pc),a1
	moveq	#0,d0
	jsr	openlib(a6)
	tst.l	d0
	beq	quit
	move.l	d0,a1
	move.l	38(a1),oldcop
	jsr	closelib(a6)
	move	#$4000,intena(a5)
	move.l	$6c,oldl3
	move	intenar(a5),d0
	or	#$c000,d0

	move	d0,saveirq
	move	#%001111111111111,intena(a5)
	move.l	#newl3,$6c
	move	#$80,dmacon(a5)
	clr	copjmp1(a5)
	move.l	#newcop,cop1lch(a5)
	move	#$8080,dmacon(a5)
	clr.w	bltcon1(a5)
	move.l	#$ffffffff,bltafwm(a5)
	move	#$c010,intena(a5)
wait	
	btst	#6,$bfe001
	bne.s	wait
quit
	move	#$80,dmacon(a5)
	move.l	oldcop,cop1lch(a5)
	clr	copjmp1(a5)
	move	#$4000,intena(a5)
	move.l	oldl3,$6c
blitfinito
	btst	#14,dmaconr(a5)
	bne.s	blitfinito
	bsr	end_music
	move	#$80a0,dmacon(a5)
	move	saveirq,intena(a5)
	move	#$f,dmacon(a5)
	movem.l	(sp)+,d0-d7/a0-a6
	rte

newl3
	and	#$10,intreqr(a5)		
	beq.s	out
	movem.l d0-d7/a0-a6,-(sp)
	btst	#10,$dff016
	bne.s	.skip
	add	#1,scrolldelay
.skip
	move	#$400,dmacon(a5)
	bsr	mighty_fine
	bsr	logoshaker
	bsr	play
	move	#$8400,dmacon(a5)
	movem.l (sp)+,d0-d7/a0-a6
out	move	#$0070,intreq(a5)
	rte

buildmulus
	lea	sinetable,a0
buildloop
	move	(a0),d0
	mulu	#40,d0
	move	d0,(a0)+
	cmp.l	#stopsine,a0
	blt.s	buildloop
	rts

****************************************		

mighty_fine
	move.l	#buff1,d0
	move.l	#buff2,d1
	tst.w	display_count
	beq.s	usea
	exg.l	d0,d1
	move	#0,display_count
	bra.s	skipmove
usea
	move	#1,display_count	
skipmove
	move.l	d0,curscreen
	move.l	d1,newscreen
	move	d0,p6lo
	swap	d0
	move	d0,p6hi
	cmp.w	#0,scrolldelay
	beq.s	.skip
	sub	#1,scrolldelay
	move.b	#1,delay_flag
	bra.s	nohorizscroll
.skip
	move.b	#0,delay_flag
njw	btst	#14,dmaconr(a5)
	bne.s	njw
	move.l	#$ffffffff,bltafwm(a5)
	move	#0,bltamod(a5)
	move	#0,bltdmod(a5)			;ok
	move.l	#scrollzone+2,bltapth(a5)
	move.l	#scrollzone,bltdpth(a5)
	move	#$e9f0,bltcon0(a5)
	move	#(fontheight*64)+21,bltsize(a5)
	move	#$8400,dmacon(a5)
nohorizscroll
	btst	#14,dmaconr(a5)
	bne.s	nohorizscroll
	move	#$400,dmacon(a5)
	move	#$0dfc,bltcon0(a5)
	move	#$ffff,bltafwm(a5)
	move	#40,bltamod(a5)
	move	#38,bltbmod(a5)
	move	#38,bltdmod(a5)
	lea	scrollzone+2,a0
	move.l	curscreen,a3
	move.l	sineptr,a2
	move	#$8000,d6			;Mask in D6.
	moveq	#19,d7
dovert	
	move.l	a3,a1
	add	(a2)+,a1
	move	#$8400,dmacon(a5)
	
.wt
	btst	#14,dmaconr(a5)
	bne.s	.wt
	move	#$400,dmacon(a5)
	move.l	a0,bltapth(a5)
	move.l	a1,bltbpth(a5)
	move.l	a1,bltdpth(a5)
	move	d6,bltafwm(a5)
	move	#(fontheight*64)+1,bltsize(a5)
oksin1	
	ror	#1,d6
	bpl.s	dovert
	lea	2(a0),a0
	lea	2(a3),a3
	dbra	d7,dovert
	cmp.b	#0,delay_flag
	bne.s	nochar
	add	#2,pixelcount
	and	#$f,pixelcount
	bne.s	nochar	
	move.l	textptr,a0
	cmp.b	#$fe-32,(a0)
	bne.s	skipo
	move	#400,scrolldelay
	add.l	#1,a0
	move.l	a0,textptr
skipo
	cmp.b	#$ff,(a0)
	bne.s	notwrap
	move.l	#text,a0
notwrap	
	move.b	(a0)+,d0
	and	#$ff,d0
	lsl	#1,d0
	lea	font,a1	
	lea	(a1,d0),a1
	move.l	#scrollzone,a2
	moveq	#fontheight-1,d7
cloop	move	(a1),(a2)
	lea	120(a1),a1		;font layed out as straight line
	lea	42(a2),a2
	dbra	d7,cloop
	move.l	a0,textptr
nochar	btst	#14,dmaconr(a5)
	bne.s	nochar
	move	#$100,bltcon0(a5)
	move.l	newscreen,bltdpth(a5)
	move	#0,bltamod(a5)
	move	#0,bltdmod(a5)
	move	#(187*64)+20,bltsize(a5)
	add.l	#2,sineptr
	cmp.l	#endsine,sineptr
	blt.s	exit
	sub.l	#endsine-sinetable,sineptr
exit	rts

***************************************
graphname
	dc.b	'graphics.library',0
	even
gbase	dc.l	0
oldcop	dc.l	0
oldl3	dc.l	0
saveirq	dc.w	0
display_count	dc.w	0
otrap0	dc.l	0
sineptr	dc.l	sinetable
scrolldelay
	dc.w	0
delay_flag	dc.b	0
		even
pixelcount
	dc.w	0

setup
	move.l	#text,a0
loopu
	move.b	(a0),d0
	sub.b	#32,d0
	move.b	d0,(a0)+
	cmp.b	#$ff,(a0)
	bne.s	loopu
	rts

sinetable
	dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
	dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
	dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
	dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
	dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
	dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
	dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
	dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
	dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
	dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
	dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
	dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
	dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
	dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
	dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
	dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
	dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
	dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
	dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
	dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
	dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
	dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
	dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
	dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
	dc.w  0,0,0,0 
endsine 
	dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
	dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
	dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
	dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
	dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
	dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
	dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
	dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
	dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
	dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
	dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
	dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
	dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
	dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
	dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
	dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
	dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
	dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
	dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
	dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
	dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
	dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
	dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
	dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
	dc.w  0,0,0,0 
stopsine
***********************************************
init_stuff
	move.l	#piccy,d0
	move	d0,p1lo
	swap	d0
	move	d0,p1hi
	swap	d0
	add.l	#psize,d0
	move	d0,p2lo
	swap	d0
	move	d0,p2hi
	swap	d0
	add.l	#psize,d0
	move	d0,p3lo
	swap	d0
	move	d0,p3hi
	swap	d0
	add.l	#psize,d0
	move	d0,p4lo
	swap	d0
	move	d0,p4hi
	swap	d0
	add.l	#psize,d0
	move	d0,p5lo
	swap	d0
	move	d0,p5hi
	move.l	#buff1,d0
	move	d0,p6lo
	swap	d0
	move	d0,p6hi
	move.l	#logo,d0
	move	d0,l1lo
	swap	d0
	move	d0,l1hi
	swap	d0
	add.l	#(51*78),d0
	move	d0,l2lo
	swap	d0
	move	d0,l2hi
	swap	d0
	add.l	#(51*78),d0
	move	d0,l3lo
	swap	d0
	move	d0,l3hi
	rts

clearsprites
	lea	$dff144,a0
	moveq	#7,d7
loopydo
	clr.l	(a0)
	lea	4(a0),a0
	dbra	d7,loopydo
	rts

text	DC.B	"    INNER  CITY     ",$FE
	DC.B	"      PRESENTS      ",$FE
	DC.B	"    A NEW CRACK     ",$FE
	DC.B	" CODED IN 1990 BY "
	DC.B	" HOTWIRE/INNER CITY ",$FE
	DC.B	"MEGA-GREETS GOTO MOSES AND DR.DUBBS OF MODESTY "
	DC.B	"FOR BEING SUCH COOL DUDES .... NOW THE CREDITS OF "
	DC.B	"THE INTRO .... "
	DC.B	" CODING :"
	DC.B	" HOTWIRE/INNER CITY ",$FE
	DC.B	"  -  GRAPHICS : "
	DC.B	"  POD OF INNER CITY ",$FE 
	DC.B	"-  MUSIC : "
	DC.B	"UNCLE TOM & ZIPHOID ",$FE
	DC.B	"  AND IS TAKEN FROM "
	DC.B	"RAZOR 1911+S MUSIC DISK CALLED #DELICATE SOUNDS# "
	DC.B	"RIPPED BY HOTWIRE ..... "
	DC.B	"          "
	DC.B	"GREETINGS GOTO ALL "
	dc.b	" INNER CITY MEMBERS ",$FE
	dc.b	"- ALSO A SPECIAL "
	DC.B	"GREET GOES TO  "
	dc.b	"  JROK+90 OF MAYHEM ",$FE
	dc.b	"-  "
	dc.b	"A.D.S. OF INNER CITY",$FE
	DC.B	" -  "
	DC.B	"Q.E.D. OF INNER CITY",$FE
	dc.b	"  - "
	DC.B	" MYSTIK OF EXTREME  -  COUNT ZERO AND RASTER OF "
	DC.B	"ANTHROX  -  DR.C OF RED SECTOR  -  VANDAL AND STATIC "
	DC.B	"OF PARADOX  -  ICEMAN OF MODESTY  -  FIREFLY,ZARCHY,LAMESLUG"
	DC.B	" AND BANDASNATCH OF T.H.R.  -  POWERCUT OF MAYHEM  -  ZEUS OF "
	DC.B	"PUBLIC ENEMIES  -  DR.ZERONINE OF QUADLITE  -  "
	DC.B	"I AM SORRY IF I MISSED ANYBODY OUT , SEE MY SINE IS MELLOW "
	DC.B	"DEMO FOR THE FULL GREETINGS LIST ..... PRESS THE LEFT MOUSE "
	DC.B	"BUTTON PLEASE ..... IF YOU WANT TO CONTACT ME (HOTWIRE) FOR "
	DC.B	"CODING OR DEMO-SWAPPING (ONLY) AND WISH TO DO IT BEFORE "
	DC.B	"10:00 PM THEN PLEASE PHONE ENGLAND ON "
	DC.B	"    0670 - 717513   ",$FE
	DC.B	" SCROLLTEXT WILL WRAP IN THE COUNT DOWN  10  9  8  7  6  5  4  "
	DC.B	"3  2  1  0                                                    "
	DC.B	$FF	
	even
 
textptr	dc.l	text

logoshaker
	move.l	logosineptr,a0
	cmp.l	#endlogosine,a0
	blt.s	.skip
	move.l	#logosine,logosineptr
	move.l	logosineptr,a0
.skip
	move	(a0),d0
	add	#151,d0
	move	d0,d1
	asr	#3,d0
	move	d0,d2
	and	#$f,d1
	eor	#$f,d1
	move	d1,d3
	lsl	#4,d3
	or	d3,d1
	move	d1,fineshift	
	add.l	#logo-2,d2	;d2 contains byte pos; yippee
	move	d2,l1lo
	swap	d2
	move	d2,l1hi
	swap	d2
	add	#(51*78),d2	
	move	d2,l2lo
	swap	d2
	move	d2,l2hi
	swap	d2
	add	#(51*78),d2
	move	d2,l3lo
	swap	d2
	move	d2,l3hi
	add.l	#10,logosineptr
	rts

********************************************

logosine
	dc.w         0,  3,  5,  8, 11, 13, 16, 18, 21, 24, 26, 29
	dc.w        31, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59
	dc.w        61, 64, 66, 69, 71, 73, 75, 78, 80, 82, 84, 87
	dc.w        89, 91, 93, 95, 97, 99,101,103,105,107,109,110
	dc.w       112,114,116,117,119,121,122,124,125,127,128,129
	dc.w       131,132,133,135,136,137,138,139,140,141,142,143
	dc.w       144,144,145,146,147,147,148,148,149,149,150,150
	dc.w       150,150,151,151,151,151,151,151,151,151,151,150
	dc.w       150,150,150,149,149,148,148,147,147,146,145,144
	dc.w       144,143,142,141,140,139,138,137,136,135,133,132
	dc.w       131,129,128,127,125,124,122,121,119,117,116,114
	dc.w       112,110,109,107,105,103,101, 99, 97, 95, 93, 91
	dc.w        89, 87, 84, 82, 80, 78, 76, 73, 71, 69, 66, 64
	dc.w        61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34
	dc.w        31, 29, 26, 24, 21, 18, 16, 13, 11,  8,  5,  3
	dc.w         0, -2, -5, -7,-10,-13,-15,-18,-21,-23,-26,-28
	dc.w       -31,-33,-36,-39,-41,-44,-46,-49,-51,-54,-56,-59
	dc.w       -61,-63,-66,-68,-70,-73,-75,-77,-80,-82,-84,-86
	dc.w       -88,-90,-92,-95,-97,-99,-101,-102,-104,-106,-108,-110
	dc.w       -112,-113,-115,-117,-118,-120,-122,-123,-125,-126,-128,-129
	dc.w       -130,-132,-133,-134,-135,-136,-137,-138,-140,-140,-141,-142
	dc.w       -143,-144,-145,-145,-146,-147,-147,-148,-148,-149,-149,-149
	dc.w       -150,-150,-150,-150,-150,-150,-151,-150,-150,-150,-150,-150
	dc.w       -150,-149,-149,-149,-148,-148,-147,-147,-146,-145,-145,-144
	dc.w       -143,-142,-141,-140,-140,-138,-137,-136,-135,-134,-133,-132
	dc.w       -130,-129,-128,-126,-125,-123,-122,-120,-118,-117,-115,-113
	dc.w       -112,-110,-108,-106,-104,-102,-101,-99,-97,-95,-92,-90
	dc.w       -88,-86,-84,-82,-80,-77,-75,-73,-70,-68,-66,-63
	dc.w       -61,-59,-56,-54,-51,-49,-46,-44,-41,-39,-36,-33
	dc.w       -31,-28,-26,-23,-21,-18,-15,-13,-10, -7, -5, -2
endlogosine
logosineptr
	dc.l	logosine	
curscreen
	dc.l	0
newscreen
	dc.l	0
buff1
	dcb.b	40*200,0
buff2
	dcb.b	40*200,0
scrollzone
	dcb.b	(16+1)*42,0
mulutable
	dcb.w	171,0
font
	incbin	df2:bitmaps/1911Font.bmap
*************COPPERlist***********************

newcop	dc.w	dmacon,$0020
	dc.w	diwstrt,$2c81
	dc.w	diwstop,$2cc1
	dc.w	ddfstrt,$0038
	dc.w	ddfstop,$00d0
	dc.w	bplcon0,$6200
	dc.w	bplcon1,$0000
	dc.w	bpl1mod,$0000
	dc.w	bpl2mod,$0000
	dc.w	$0180,$0000,$0182,$07ff,$0184,$0444,$0186,$0fff
	dc.w	$0188,$0f00,$018a,$0aaa,$018c,$00f0,$018e,$0e72
	dc.w	$0190,$006a,$0192,$0405,$0194,$0888,$0196,$0666
	dc.w	$0198,$0555,$019a,$0333,$019c,$0222,$019e,$0000	
	dc.w	$01a0,$0fff,$01a2,$0eee,$01a4,$0ddd,$01a6,$0ddd
	dc.w	$01a8,$0ccc,$01aa,$0bbb,$01ac,$0aaa,$01ae,$0999
	dc.w	$01b0,$0999,$01b2,$0888,$01b4,$0777,$01b6,$0666
	dc.w	$01b8,$0666,$01ba,$0555,$01bc,$0444,$01be,$0620
	dc.w	$e0
p1hi	dc.w	0
	dc.w	$e2
p1lo	dc.w	0
	dc.w	$e4
p2hi	dc.w	0
	dc.w	$e6
p2lo	dc.w	0
	dc.w	$e8
p3hi	dc.w	0
	dc.w	$ea
p3lo	dc.w	0
	dc.w	$ec
p4hi	dc.w	0
	dc.w	$ee
p4lo	dc.w	0
	dc.w	$f0
p5hi	dc.w	0
	dc.w	$f2
p5lo	dc.w	0
	dc.w	$f4
p6hi	dc.w	0
	dc.w	$f6
p6lo	dc.w	0
	dc.w	$1001,$fffe
	dc.w	intreq,$8010
	dc.w	$f001,$fffe
	dc.w	bplcon0,$0200
	dc.w	$f501,$fffe		;Logo Start
	dc.w	bplcon0,$3200
	dc.w	$e0
l1hi	dc.w	0
	dc.w	$e2
l1lo	dc.w	0
	dc.w	$e4
l2hi	dc.w	0
	dc.w	$e6
l2lo	dc.w	0
	dc.w	$e8
l3hi	dc.w	0
	dc.w	$ea
l3lo	dc.w	0
	dc.w	bpl1mod,32
	dc.w	bpl2mod,32
	dc.w	diwstrt,$2c81
	dc.w	diwstop,$2cc1
	dc.w	ddfstrt,$0028
	dc.w	ddfstop,$00d8
	dc.w	bplcon1,$0000
	dc.w	$0180,$0000,$0182,$0fea,$0184,$0db7,$0186,$0a84
	dc.w	$0188,$0952,$018a,$0631,$018c,$0731,$018e,$0003
	dc.w	bplcon1
fineshift
	dc.w	0
	dc.w	$f601,$fffe,$18e,$0003
	dc.w	$f701,$fffe,$18e,$0003
	dc.w	$f801,$fffe,$18e,$0003
	dc.w	$f901,$fffe,$18e,$0003
	dc.w	$fa01,$fffe,$18e,$0003
	dc.w	$fc01,$fffe,$18e,$0003
	dc.w	$fd01,$fffe,$18e,$0003
	dc.w	$fe01,$fffe,$18e,$0003
	dc.w	$ff01,$fffe,$18e,$0003
	dc.w	$ffe1,$fffe
	dc.w	$0001,$fffe,$18e,$0003
	dc.w	$0101,$fffe,$18e,$0003
	dc.w	$0201,$fffe,$18e,$0003
	dc.w	$0301,$fffe,$18e,$0003
	dc.w	$0401,$fffe,$18e,$0003
	dc.w	$0501,$fffe,$18e,$0003
	dc.w	$0601,$fffe,$18e,$0003
	dc.w	$0701,$fffe,$18e,$0003
	dc.w	$0801,$fffe,$18e,$0004
	dc.w	$0901,$fffe,$18e,$0005
	dc.w	$0a01,$fffe,$18e,$0006
	dc.w	$0b01,$fffe,$18e,$0007
	dc.w	$0c01,$fffe,$18e,$0008
	dc.w	$0d01,$fffe,$18e,$0009
	dc.w	$0e01,$fffe,$18e,$000a
	dc.w	$0f01,$fffe,$18e,$000b
	dc.w	$1001,$fffe,$18e,$000c
	dc.w	$1101,$fffe,$18e,$000d
	dc.w	$1201,$fffe,$18e,$000e
	dc.w	$1301,$fffe,$18e,$000f
	dc.w	$1401,$fffe,$18e,$001f
	dc.w	$1501,$fffe,$18e,$002f
	dc.w	$1601,$fffe,$18e,$003f
	dc.w	$1701,$fffe,$18e,$004f
	dc.w	$1801,$fffe,$18e,$005f
	dc.w	$1a01,$fffe,$18e,$006f
	dc.w	$1b01,$fffe,$18e,$007f
	dc.w	$1c01,$fffe,$18e,$008f
	dc.w	$1d01,$fffe,$18e,$009f
	dc.w	$1e01,$fffe,$18e,$00af
	dc.w	$1f01,$fffe,$18e,$00bf
	dc.w	$2001,$fffe,$18e,$00cf
	dc.w	$2101,$fffe,$18e,$00df
	dc.w	$2201,$fffe,$18e,$00ef
	dc.w	$2301,$fffe,$18e,$00ff
	dc.w	$2401,$fffe,$18e,$01ff
	dc.w	$2501,$fffe,$18e,$02ff
	dc.w	$2601,$fffe,$18e,$03ff
	dc.w	$2701,$fffe,$18e,$04ff
	dc.w	$2801,$fffe
	dc.w	bplcon0,$0200	
	dc.l	$ffff,$fffe

PLAY_MUSIC:
	bra.W	PLAY

END_MUSIC:
	clr.w	onoff
	clr.l	$dff0a6
	clr.l	$dff0b6
	clr.l	$dff0c6
	clr.l	$dff0d6
	move.w	#$000f,$dff096
	bclr	#1,$bfe001
	rts
	
INIT_MUSIC:
	move.w	#1,onoff
	bset	#1,$bfe001
	lea	MODULE,a0
	lea	100(a0),a1
	move.l	a1,SEQpoint
	move.l	a0,a1
	add.l	8(a0),a1
	move.l	a1,PATpoint
	move.l	a0,a1
	add.l	16(a0),a1
	move.l	a1,FRQpoint
	move.l	a0,a1
	add.l	24(a0),a1
	move.l	a1,VOLpoint
	move.l	4(a0),d0
	divu	#13,d0
	
	lea	40(a0),a1
	lea	SOUNDINFO+4(pc),a2
	moveq	#10-1,d1
initloop:
	move.w	(a1)+,(a2)+
	move.l	(a1)+,(a2)+
	addq.w	#4,a2
	dbf	d1,initloop
	moveq	#0,d2
	move.l	a0,d1
	add.l	32(a0),d1
	sub.l	#WAVEFORMS,d1
	lea	SOUNDINFO(pc),a0
	move.l	d1,(a0)+
	moveq	#9-1,d3
initloop1:
	move.w	(a0),d2
	add.l	d2,d1
	add.l	d2,d1
	addq.w	#6,a0
	move.l	d1,(a0)+
	dbf	d3,initloop1
	
	move.l	SEQpoint(pc),a0
	moveq	#0,d2
	move.b	12(a0),d2		;Get replay speed
	bne.s	speedok
	move.b	#3,d2			;Set default speed
speedok:
	move.w	d2,respcnt		;Init repspeed counter
	move.w	d2,repspd
INIT2:
	clr.w	audtemp
	move.w	#$000f,$dff096		;Disable audio DMA
	move.w	#$0780,$dff09a		;Disable Audio IRQ
	moveq	#0,d7
	mulu	#13,d0
	moveq	#4-1,d6			;Number of soundchannels-1
	lea	V1data(pc),a0		;Point to 1st voice data area
	lea	SILENT(pc),a1
	lea	o4a0c8(pc),a2
initloop2:
	move.l	a1,10(a0)
	move.l	a1,18(a0)
	clr.l	14(a0)
	clr.b	45(a0)
	clr.b	47(a0)
	clr.w	8(a0)
	clr.l	48(a0)
	move.b	#$01,23(a0)
	move.b	#$01,24(a0)
	clr.b	25(a0)
	clr.l	26(a0)
	clr.w	30(a0)
	moveq	#$00,d3
	move.w	(a2)+,d1
	move.w	(a2)+,d3
	divu	#$0003,d3
	move.b	d3,32(a0)
	mulu	#$0003,d3
	andi.l	#$00ff,d3
	andi.l	#$00ff,d1
	addi.l	#$dff0a0,d1
	move.l	d1,a6
	move.l	#$0000,(a6)
	move.w	#$0100,4(a6)
	move.w	#$0000,6(a6)
	move.w	#$0000,8(a6)
	move.l	d1,60(a0)
	clr.w	64(a0)
	move.l	SEQpoint(pc),(a0)
	move.l	SEQpoint(pc),52(a0)
	add.l	d0,52(a0)
	add.l	d3,52(a0)
	add.l	d7,(a0)
	add.l	d3,(a0)
	move.w	#$000d,6(a0)
	move.l	(a0),a3
	move.b	(a3),d1
	andi.l	#$00ff,d1
	lsl.w	#6,d1
	move.l	PATpoint(pc),a4
	adda.w	d1,a4
	move.l	a4,34(a0)
	clr.l	38(a0)
	move.b	#$01,33(a0)
	move.b	#$02,42(a0)
	move.b	1(a3),44(a0)
	move.b	2(a3),22(a0)
	clr.b	43(a0)
	clr.b	45(a0)
	clr.w	56(a0)
	adda.w	#$004a,a0	;Point to next voice's data area
	dbf	d6,initloop2
	rts

		
PLAY:
	lea	pervol(pc),a6
	tst.w	onoff
	bne.s	music_on
	rts
music_on:
	subq.w	#1,respcnt		;Decrease replayspeed counter
	bne.s	nonewnote
	move.w	repspd(pc),respcnt	;Restore replayspeed counter
	lea	V1data(pc),a0		;Point to voice1 data area
	bsr.W	NEW_NOTE
	lea	V2data(pc),a0		;Point to voice2 data area
	bsr.W	NEW_NOTE
	lea	V3data(pc),a0		;Point to voice3 data area
	bsr.W	NEW_NOTE
	lea	V4data(pc),a0		;Point to voice4 data area
	bsr.W	NEW_NOTE
nonewnote:
	clr.w	audtemp
	lea	V1data(pc),a0
	bsr.W	EFFECTS
	move.w	d0,(a6)+
	move.w	d1,(a6)+
	lea	V2data(pc),a0
	bsr.W	EFFECTS
	move.w	d0,(a6)+
	move.w	d1,(a6)+
	lea	V3data(pc),a0
	bsr.W	EFFECTS
	move.w	d0,(a6)+
	move.w	d1,(a6)+
	lea	V4data(pc),a0
	bsr.W	EFFECTS
	move.w	d0,(a6)+
	move.w	d1,(a6)+
	lea	pervol(pc),a6
	move.w	audtemp(pc),d0
	ori.w	#$8000,d0			;Set/clr bit = 1
	move.w	d0,-(sp)
	moveq	#0,d1
	move.l	start1(pc),d2			;Get samplepointers
	move.w	offset1(pc),d1			;Get offset
	add.l	d1,d2				;Add offset
	move.l	start2(pc),d3
	move.w	offset2(pc),d1
	add.l	d1,d3
	move.l	start3(pc),d4
	move.w	offset3(pc),d1
	add.l	d1,d4
	move.l	start4(pc),d5
	move.w	offset4(pc),d1
	add.l	d1,d5
	move.w	ssize1(pc),d0			;Get sound lengths
	move.w	ssize2(pc),d1
	move.w	ssize3(pc),d6
	move.w	ssize4(pc),d7
	move.w	(sp)+,$dff096			;Enable	audio DMA
chan1:
	lea	V1data(pc),a0
	tst.w	72(a0)
	beq.W	chan2
	subq.w	#1,72(a0)
	cmpi.w	#1,72(a0)
	bne.s	chan2
	clr.w	72(a0)
	move.l	d2,$dff0a0			;Set soundstart
	move.w	d0,$dff0a4			;Set soundlength
chan2:
	lea	V2data(pc),a0
	tst.w	72(a0)
	beq.s	chan3
	subq.w	#1,72(a0)
	cmpi.w	#1,72(a0)
	bne.s	chan3
	clr.w	72(a0)
	move.l	d3,$dff0b0
	move.w	d1,$dff0b4
chan3:
	lea	V3data(pc),a0
	tst.w	72(a0)
	beq.s	chan4
	subq.w	#1,72(a0)
	cmpi.w	#1,72(a0)
	bne.s	chan4
	clr.w	72(a0)
	move.l	d4,$dff0c0
	move.w	d6,$dff0c4
chan4:
	lea	V4data(pc),a0
	tst.w	72(a0)
	beq.s	setpervol
	subq.w	#1,72(a0)
	cmpi.w	#1,72(a0)
	bne.s	setpervol
	clr.w	72(a0)
	move.l	d5,$dff0d0
	move.w	d7,$dff0d4
setpervol:
	lea	$dff0a6,a5
	move.w	(a6)+,(a5)			;Set period
	move.w	(a6)+,2(a5)			;Set volume
	move.w	(a6)+,16(a5)
	move.w	(a6)+,18(a5)
	move.w	(a6)+,32(a5)
	move.w	(a6)+,34(a5)
	move.w	(a6)+,48(a5)
	move.w	(a6)+,50(a5)
	rts

NEW_NOTE:
	moveq	#0,d5
	move.l	34(a0),a1
	adda.w	40(a0),a1
	cmp.w	#64,40(a0)
	bne.W	samepat
	move.l	(a0),a2
	adda.w	6(a0),a2			;Point to next sequence row
	cmpa.l	52(a0),a2 			;Is it the end?
	bne.s	notend
	move.w	d5,6(a0)			;yes!
	move.l	(a0),a2				;Point to first sequence
notend:
	moveq	#0,d1
	addq.b	#1,spdtemp
	cmpi.b	#4,spdtemp
	bne.s	nonewspd
	move.b	d5,spdtemp
;	move.b	-1(a1),d1			;Get new replay speed
;	beq.s	nonewspd
;	move.w	d1,respcnt			;store in counter
;	move.w	d1,repspd
nonewspd:
	move.b	(a2),d1				;Pattern to play
	move.b	1(a2),44(a0)			;Transpose value
	move.b	2(a2),22(a0)			;Soundtranspose value

	move.w	d5,40(a0)
	lsl.w	#6,d1
	add.l	PATpoint(pc),d1			;Get pattern pointer
	move.l	d1,34(a0)
	addi.w	#$000d,6(a0)
	move.l	d1,a1
samepat:
	move.b	1(a1),d1			;Get info byte
	move.b	(a1)+,d0			;Get note
	bne.s	ww1
	andi.w	#%11000000,d1
	beq.s	noport
	bra.s	ww11
ww1:
	move.w	d5,56(a0)
ww11:
	move.b	d5,47(a0)
	move.b	(a1),31(a0)

				;31(a0)	= PORTAMENTO/INSTR. info
				;Bit 7 = portamento on
				;Bit 6 = portamento off
				;Bit 5-0 = instrument number
				;47(a0) = portamento value
				;Bit 7-5 = always zero
				;Bit 4 = up/down
				;Bit 3-0 = value
t_porton:
	btst	#7,d1
	beq.s	noport
	move.b	2(a1),47(a0)	
noport:
	andi.w	#$007f,d0
	beq.W	nextnote
	move.b	d0,8(a0)
	move.b	(a1),9(a0)
	move.b	32(a0),d2
	moveq	#0,d3
	bset	d2,d3
	or.w	d3,audtemp
	move.w	d3,$dff096
	move.b	(a1),d1
	andi.w	#$003f,d1			;Max 64 instruments
	add.b	22(a0),d1
	move.l	VOLpoint(pc),a2
	lsl.w	#6,d1
	adda.w	d1,a2
	move.w	d5,16(a0)
	move.b	(a2),23(a0)
	move.b	(a2)+,24(a0)
	move.b	(a2)+,d1
	andi.w	#$00ff,d1
	move.b	(a2)+,27(a0)
	move.b	#$40,46(a0)
	move.b	(a2)+,d0
	move.b	d0,28(a0)
	move.b	d0,29(a0)
	move.b	(a2)+,30(a0)
	move.l	a2,10(a0)
	move.l	FRQpoint(pc),a2
	lsl.w	#6,d1
	adda.w	d1,a2
	move.l	a2,18(a0)
	move.w	d5,50(a0)
	move.b	d5,26(a0)
	move.b	d5,25(a0)
nextnote:
	addq.w	#2,40(a0)
	rts
	
EFFECTS:
	moveq	#0,d7
testsustain:
	tst.b	26(a0)			;Is sustain counter = 0
	beq.s	sustzero
	subq.b	#1,26(a0)		;if no, decrease counter
	bra.W	VOLUfx
sustzero:				;Next part of effect sequence
	move.l	18(a0),a1		;can be executed now.
	adda.w	50(a0),a1
testeffects:
	cmpi.b	#$e1,(a1)		;E1 = end of FREQseq sequence
	beq.W	VOLUfx
	cmpi.b	#$e0,(a1)		;E0 = loop to other part of sequence
	bne.s	testnewsound
	move.b	1(a1),d0		;loop to start of sequence + 1(a1)
	andi.w	#$003f,d0
	move.w	d0,50(a0)
	move.l	18(a0),a1
	adda.w	d0,a1
testnewsound:
	cmpi.b	#$e2,(a1)		;E2 = set waveform
	bne.s	o49c64
	moveq	#0,d0
	moveq	#0,d1
	move.b	32(a0),d1
	bset	d1,d0
	or.w	d0,audtemp
	move.w	d0,$dff096
	move.b	1(a1),d0
	andi.w	#$00ff,d0
	lea	SOUNDINFO(pc),a4
	add.w	d0,d0
	move.w	d0,d1
	add.w	d1,d1
	add.w	d1,d1
	add.w	d1,d0
	adda.w	d0,a4
	move.l	60(a0),a3
	move.l	(a4),d1
	add.l	#WAVEFORMS,d1
	move.l	d1,(a3)
	move.l	d1,68(a0)
	move.w	4(a4),4(a3)
	move.l	6(a4),64(a0)
	swap	d1
	move.w	#$0003,72(a0)
	tst.w	d1
	bne.s	o49c52
	move.w	#$0002,72(a0)
o49c52:
	clr.w	16(a0)
	move.b	#$01,23(a0)
	addq.w	#2,50(a0)
	bra.W	o49d02
o49c64:
	cmpi.b	#$e4,(a1)
	bne.s	testpatjmp
	move.b	1(a1),d0
	andi.w	#$00ff,d0
	lea	SOUNDINFO(pc),a4
	add.w	d0,d0
	move.w	d0,d1
	add.w	d1,d1
	add.w	d1,d1
	add.w	d1,d0
	adda.w	d0,a4
	move.l	60(a0),a3
	move.l	(a4),d1
	add.l	#WAVEFORMS,d1
	move.l	d1,(a3)
	move.l	d1,68(a0)
	move.w	4(a4),4(a3)
	move.l	6(a4),64(a0)
	
	swap	d1
	move.w	#$0003,72(a0)
	tst.w	d1
	bne.s	o49cae
	move.w	#$0002,72(a0)
o49cae:
	addq.w	#2,50(a0)
	bra.s	o49d02
testpatjmp:
	cmpi.b	#$e7,(a1)
	bne.s	testnewsustain
	move.b	1(a1),d0
	andi.w	#$00ff,d0
	lsl.w	#6,d0
	move.l	FRQpoint(pc),a1
	adda.w	d0,a1
	move.l	a1,18(a0)
	move.w	d7,50(a0)
	bra.W	testeffects
testnewsustain:
	cmpi.b	#$e8,(a1)		;E8 = set sustain time
	bne.s	o49cea
	move.b	1(a1),26(a0)
	addq.w	#2,50(a0)
	bra.W	testsustain
o49cea:
	cmpi.b	#$e3,(a1)
	bne.s	o49d02
	addq.w	#3,50(a0)
	move.b	1(a1),27(a0)
	move.b	2(a1),28(a0)
o49d02:
	move.l	18(a0),a1
	adda.w	50(a0),a1
	move.b	(a1),43(a0)
	addq.w	#1,50(a0)
	VOLUfx:
	tst.b	25(a0)
	beq.s	o49d1e
	subq.b	#1,25(a0)
	bra.s	o49d70
o49d1e:
	subq.b	#1,23(a0)
	bne.s	o49d70
	move.b	24(a0),23(a0)
o49d2a:
	move.l	10(a0),a1
	adda.w	16(a0),a1
	move.b	(a1),d0
	cmpi.b	#$e8,d0
	bne.s	o49d4a
	addq.w	#2,16(a0)
	move.b	1(a1),25(a0)
	bra.s	VOLUfx
o49d4a:
	cmpi.b	#$e1,d0
	beq.s	o49d70
	cmpi.b	#$e0,d0
	bne.s	o49d68
	move.b	1(a1),d0
	andi.l	#$003f,d0
	subq.b	#5,d0
	move.w	d0,16(a0)
	bra.s	o49d2a
o49d68:
	move.b	(a1),45(a0)
	addq.w	#1,16(a0)
o49d70:
	move.b	43(a0),d0
	bmi.s	o49d7e
	add.b	8(a0),d0
	add.b	44(a0),d0
o49d7e:
	andi.w	#$007f,d0
	lea	PERIODS(pc),a1
	add.w	d0,d0
	move.w	d0,d1
	adda.w	d0,a1
	move.w	(a1),d0
	move.b	46(a0),d7
	tst.b	30(a0)
	beq.s	o49d9e
	subq.b	#1,30(a0)
	
	bra.s	o49df4
o49d9e:
	move.b	d1,d5
	move.b	28(a0),d4
	add.b	d4,d4
	move.b	29(a0),d1
	tst.b	d7
	bpl.s	o49db4
	btst	#0,d7
	bne.s	o49dda
o49db4:
	btst	#5,d7
	bne.s	o49dc8
	sub.b	27(a0),d1
	bcc.s	o49dd6
	bset	#5,d7
	moveq	#0,d1
	bra.s	o49dd6
o49dc8:
	add.b	27(a0),d1
	cmp.b	d4,d1
	bcs.s	o49dd6
	bclr	#5,d7
	move.b	d4,d1
o49dd6:
	move.b	d1,29(a0)
o49dda:
	lsr.b	#1,d4
	sub.b	d4,d1
	bcc.s	o49de4
	subi.w	#$0100,d1
o49de4:
	addi.b	#$a0,d5
	bcs.s	o49df2
o49dea:
	add.w	d1,d1
	addi.b	#$18,d5
	bcc.s	o49dea
o49df2:
	add.w	d1,d0
o49df4:
	eori.b	#$01,d7
	move.b	d7,46(a0)
	
					;  DO THE PORTAMENTO THING
	moveq	#0,d1
	move.b	47(a0),d1		;get portavalue
	beq.s	a56d0			;0=no portamento
	cmpi.b	#$1f,d1
	bls.s	portaup
portadown:	
	andi.w	#$1f,d1
	neg.w	d1
portaup:
	sub.w	d1,56(a0)
a56d0:
	add.w	56(a0),d0
o49e3e:
	cmpi.w	#$0070,d0
	bhi.s	nn1
	move.w	#$0071,d0
nn1:
	cmpi.w	#$06b0,d0
	bls.s	nn2
	move.w	#$06b0,d0
nn2:
	moveq	#0,d1
	move.b	45(a0),d1
	rts



pervol:		dcb.b	16,0		;Periods & Volumes temp. store
respcnt:	dc.w	0		;Replay speed counter	
repspd:		dc.w	0		;Replay speed counter temp
onoff:		dc.w	0		;Music on/off flag.
firseq:		dc.w	0		;First sequence
lasseq:		dc.w	0		;Last sequence
audtemp:	dc.w	0
spdtemp:	dc.w	0

V1data:		dcb.b	64,0		;Voice 1 data area
offset1:	dcb.b	02,0		;Is added to start of sound
ssize1:		dcb.b	02,0		;Length of sound
start1:		dcb.b	06,0		;Start of sound

V2data:		dcb.b	64,0		;Voice 2 data area
offset2:	dcb.b	02,0
ssize2:		dcb.b	02,0
start2:		dcb.b	06,0

V3data:		dcb.b	64,0		;Voice 3 data area
offset3:	dcb.b	02,0
ssize3:		dcb.b	02,0
start3:		dcb.b	06,0

V4data:		dcb.b	64,0		;Voice 4 data area
offset4:	dcb.b	02,0
ssize4:		dcb.b	02,0
start4:		dcb.b	06,0

o4a0c8:		dc.l	$00000000,$00100003,$00200006,$00300009
SEQpoint:	dc.l	0
PATpoint:	dc.l	0
FRQpoint:	dc.l	0
VOLpoint:	dc.l	0


	even
SILENT:		dc.w	$0100,$0000,$0000,$00e1

PERIODS:	dc.w	$06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
		dc.w	$0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
		dc.w	$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
		dc.w	$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
		dc.w	$010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
		dc.w	$00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
		dc.w	$0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
		dc.w	$0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
		dc.w	$0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
		dc.w	$1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
		dc.w	$10d0,$0fe0,$0f00,$0e28

SOUNDINFO:
;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w	

;Reserved for samples
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
		dc.w	$0000,$0000,	$0000,$0000,	$0001	
;Reserved for synth sounds
		dc.w	$0000,$0000,	$0010,	$0000,	$0010	
		dc.w	$0000,$0020,	$0010,	$0000,	$0010	
		dc.w	$0000,$0040,	$0010,	$0000,	$0010	
		dc.w	$0000,$0060,	$0010,	$0000,	$0010	
		dc.w	$0000,$0080,	$0010,	$0000,	$0010	
		dc.w	$0000,$00a0,	$0010,	$0000,	$0010	
		dc.w	$0000,$00c0,	$0010,	$0000,	$0010	
		dc.w	$0000,$00e0,	$0010,	$0000,	$0010	
		dc.w	$0000,$0100,	$0010,	$0000,	$0010	
		dc.w	$0000,$0120,	$0010,	$0000,	$0010	
		dc.w	$0000,$0140,	$0010,	$0000,	$0010	
		dc.w	$0000,$0160,	$0010,	$0000,	$0010	
		dc.w	$0000,$0180,	$0010,	$0000,	$0010	
		dc.w	$0000,$01a0,	$0010,	$0000,	$0010	
		dc.w	$0000,$01c0,	$0010,	$0000,	$0010	
		dc.w	$0000,$01e0,	$0010,	$0000,	$0010	
		dc.w	$0000,$0200,	$0010,	$0000,	$0010	
		dc.w	$0000,$0220,	$0010,	$0000,	$0010	
		dc.w	$0000,$0240,	$0010,	$0000,	$0010	
		dc.w	$0000,$0260,	$0010,	$0000,	$0010	
		dc.w	$0000,$0280,	$0010,	$0000,	$0010	
		dc.w	$0000,$02a0,	$0010,	$0000,	$0010	
		dc.w	$0000,$02c0,	$0010,	$0000,	$0010	
		dc.w	$0000,$02e0,	$0010,	$0000,	$0010	
		dc.w	$0000,$0300,	$0010,	$0000,	$0010	
		dc.w	$0000,$0320,	$0010,	$0000,	$0010	
		dc.w	$0000,$0340,	$0010,	$0000,	$0010	
		dc.w	$0000,$0360,	$0010,	$0000,	$0010	
		dc.w	$0000,$0380,	$0010,	$0000,	$0010	
		dc.w	$0000,$03a0,	$0010,	$0000,	$0010	
		dc.w	$0000,$03c0,	$0010,	$0000,	$0010	
		dc.w	$0000,$03e0,	$0010,	$0000,	$0010	
		dc.w	$0000,$0400,	$0008,	$0000,	$0008	
		dc.w	$0000,$0410,	$0008,	$0000,	$0008	
		dc.w	$0000,$0420,	$0008,	$0000,	$0008	
		dc.w	$0000,$0430,	$0008,	$0000,	$0008	
		dc.w	$0000,$0440,	$0008,	$0000,	$0008
		dc.w	$0000,$0450,	$0008,	$0000,	$0008
		dc.w	$0000,$0460,	$0008,	$0000,	$0008
		dc.w	$0000,$0470,	$0008,	$0000,	$0008
		dc.w	$0000,$0480,	$0010,	$0000,	$0010
		dc.w	$0000,$04a0,	$0008,	$0000,	$0008
		dc.w	$0000,$04b0,	$0010,	$0000,	$0010
		dc.w	$0000,$04d0,	$0010,	$0000,	$0010
		dc.w	$0000,$04f0,	$0008,	$0000,	$0008
		dc.w	$0000,$0500,	$0008,	$0000,	$0008
		dc.w	$0000,$0510,	$0018,	$0000,	$0018
	

WAVEFORMS:
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
		dc.w	$c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
		dc.w	$c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
		dc.w	$8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
		dc.w	$8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
		dc.w	$8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
		dc.w	$8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
		dc.w	$8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
		dc.w	$8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
		dc.w	$8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
		dc.w	$0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
		dc.w	$8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
		dc.w	$4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
		dc.w	$04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
		dc.w	$4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
		dc.w	$04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
		dc.w	$0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
		dc.w	$0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
		dc.w	$8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
		dc.w	$0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
		dc.w	$8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070

***************************************************************
**        End of Future Composer V1.3 replay routine.        **
***************************************************************

***********************************************
logo	incbin	df2:bitmaps/InnerCity.bmap
piccy	incbin	df2:Bitmaps/Hifi.bmap

	include	df2:include/hwequates.inc
module	incbin	"df0:mod.razor1911"

	END
