move.w	#20,model+6

>EXTERN "vsin",vsin
>EXTERN "stencil",stenc
>EXTERN "vectra",vectra
>EXTERN "fucking jotain",mt_data

	waitb:	MACRO
	btst	#14,$2(a5)
	dc.w	$66f8
	ENDM
	vgetpl:	MACRO
	move.w	(a0)+,d0
	move.w	(a1,d0.w),(a2)+
	move.w	2(a1,d0.w),(a2)+
	add.w	4(a1,d0.w),d1
	ENDM
	vstcs:	MACRO
	cmp.w	stccrd(pc),d0
	dc.w	$6c06
	move.w	d0,stccrd
	cmp.w	stccrd+2(pc),d1
	dc.w	$6c06
	move.w	d1,stccrd+2
	cmp.w	stccrd+4(pc),d2
	dc.w	$6f06
	move.w	d2,stccrd+4
	cmp.w	stccrd+6(pc),d3
	dc.w	$6f06
	move.w	d3,stccrd+6
	ENDM
	voutpx:	MACRO
	move.w	?1(a2),d0
	cmp.w	#672,d0
	ENDM
	voutpy:	MACRO
	move.w	?1(a2),d0
	cmp.w	#480,d0
	ENDM

****					set systems

	lea	vebit+2(pc),a0
	move.l	#vectra+32,d0
	swap	d0
	move.w	d0,(a0)
	swap	d0
	move.w	d0,4(a0)
	add.l	#2408,d0
	swap	d0
	move.w	d0,8(a0)
	swap	d0
	move.w	d0,12(a0)
	add.l	#2408,d0
	swap	d0
	move.w	d0,16(a0)
	swap	d0
	move.w	d0,20(a0)
	add.l	#2408,d0
	swap	d0
	move.w	d0,24(a0)
	swap	d0
	move.w	d0,28(a0)
	lea	stars(pc),a0
	moveq	#47,d0
	starl1:
	add.w	$dff006,d1
	eor	#$5473,d1
	ror.w	#5,d1
	move.w	d1,(a0)+
	add.w	$dff006,d1
	eor	#$5473,d1
	ror.w	#5,d1
	move.w	d1,(a0)+
	add.w	$dff006,d1
	eor	#$5473,d1
	ror.w	#5,d1
	move.w	d1,(a0)+
	clr.w	(a0)+
	dbf	d0,starl1
bsr mt_init
	move.l	4.w,a6
	jsr	-132(a6)
	moveq	#5,d0
	lea	intd(pc),a1
	jsr	-168(a6)

****					looping

beamer:
	lea	$dff000,a5
	tst.w	frame
	beq.s	beamer
	clr.w	frame

****					vaantohannun vectori

	tst.w	clrp
	bne.s	veccie
	move.w	#1,clrp
	move.l	#copl,copp
	bsr.L	clrmem
	veccie:
	cmp.w	#0,model
	bne	vecso
	tst.w	blanko
	bpl	vecso
	clr.w	blanko
	move.w	#$400,$96(a5)
	move.l	buff(pc),d0
	move.l	buff+4(pc),buff
	move.l	buff+8(pc),buff+4
	move.l	d0,buff+8
	lea	crbit+2(pc),a0
	move.l	buff+8(pc),d0
	add.w	#20,d0
	move.w	d0,4(a0)
	add.w	#10240,d0
	move.w	d0,20(a0)
	add.w	#10240,d0
	move.w	d0,36(a0)
	swap	d0
	move.w	d0,(a0)
	move.w	d0,16(a0)
	move.w	d0,32(a0)
	bsr.L	vector
	waitb
	move.l	#-1,$44(a5)
	move.w	#20,$66(a5)
	move.l	#$01000000,$40(a5)
	move.l	buff+4(pc),d0
	add.w	#20,d0
	move.l	d0,$54(a5)
	move.w	#[160*64*3]+[22],$58(a5)
	vecso:

****					hannun ja kertun keftaali

	cmp.w	#1,model
	bne.L	nofracs
	tst.w	model+2
	bne.s	fracs1
	bsr.L	clrmem
	move.l	#frcop,copp
	addq.w	#1,model+2
	fracs1:
	cmp.w	#1,model+2
	bne.L	nofracs
	lea	$70000,a0
 	lea	$72800,a1
	lea	$75000,a2
	lea	$77800,a3
	lea	$7a000,a4
	moveq	#0,d7
	clr.w	y
floop1:	move.w	#319,d6
	clr.w	x
floop2:	move.w	x(pc),d1
	add.w	x_(pc),d1	; zr = x
	move.w	y(pc),d0
	add.w	y_(pc),d0	; zi = y
	movem.w	d6/d7,-(a7)
	moveq	#31,d7
	move.w	d0,d2
	move.w	d1,d3
add.w xx(pc),d2
add.w yy(pc),d3
floop3:	move.w	d1,d4
	muls	d4,d4
	move.w	d0,d5
	muls	d5,d5
	sub.l	d4,d5
	asl.l	#3,d5
	swap	d5
	add.w	d2,d5		; zx = zr^2 - zi^2 + x
	move.w	d0,d4
	muls	d1,d4
	asl.l	#4,d4
	swap	d4
	add.w	d3,d4		; zi = 2 * zr * zi + y
	move.w	d5,d0
	muls	d5,d5
	move.w	d4,d1
	muls	d4,d4
	add.l	d4,d5
;	cmp.l	#$1fffffff,d5
;	bhi.s	fover
;	dbf	d7,floop3
;	movem.w	(a7)+,d6/d7
;	bra.s	fover5
lsr.l #8,d5
lsr.l #8,d5
lsr.l #1,d5
divu #31,d5
swap d5
addq.w #1,d5
fover:	move.w	d5,d0
	movem.w	(a7)+,d6/d7
	move.w	d6,d1
	move.w	d6,d2
	lsr.w	#3,d1
	not.b	d2
	add.w	d7,d1
	btst	#0,d0
	beq.s	fover1
	bset	d2,(a0,d1.w)
fover1:	btst	#1,d0
	beq.s	fover2
	bset	d2,(a1,d1.w)
fover2:	btst	#2,d0
	beq.s	fover3
	bset	d2,(a2,d1.w)
fover3:	btst	#3,d0
	beq.s	fover4
	bset	d2,(a3,d1.w)
fover4:	btst	#4,d0
	beq.s	fover5
	bset	d2,(a4,d1.w)
fover5:	btst	#6,$bfe001
	bne.s	fracs2
	move.w	#2,model+2
	move.w	#1,model+4
	bra.s	nofracs
	fracs2:
	move.w	c(pc),d0
	add.w	d0,x
	dbf	d6,floop2
	add.w	d0,y
	add.w	#40,d7
	cmp.w	#256*40,d7
	bne.L	floop1
	move.w	#128,model+4
	move.w	#2,model+2
	nofracs:

	cmp.w	#3,model
	bne.s	nolet
	bsr	mirror
	move.w	#4,model
	addq.w	#1,model+6
	nolet:

	cmp.w	#2,model
	bne.s	nopla
	bsr	initplasm
	move.w	#4,model
	addq.w	#1,model+6
	nopla:

	cmp.w	#-1,model
	beq.s	cu
	btst	#6,$bfe001
	bne.L	beamer
	btst	#10,$dff016
	bne.L	beamer

cu:
****					systems return

	move.l	4.w,a6
	jsr	-138(a6)
	moveq	#5,d0
	lea	intd(pc),a1
	jsr	-174(a6)
bsr mt_end
	moveq	#0,d0
	rts

****					filledvector

	clrmem:
	waitb
	move.l	#$70000,$54(a5)
	clr.w	$66(a5)
	move.l	#$01000000,$40(a5)
	move.w	#[64*1023]+[31],$58(a5)
	waitb
	move.l	#$60000,$54(a5)
	move.w	#[64*1023]+[31],$58(a5)
	rts

vector:	move.l	vpoint(pc),a0
	move.l	(a0)+,a1
	move.l	(a0)+,a0
	lea	vsin(pc),a2
	move.w	(a1)+,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vrzs1+2
	move.w	(a2,d0.w),vrzs2+2
	add.w	#512,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vrzc1+2
	move.w	(a2,d0.w),vrzc2+2
	move.w	(a1)+,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vrxs1+2
	move.w	(a2,d0.w),vrxs2+2
	add.w	#512,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vrxc1+2
	move.w	(a2,d0.w),vrxc2+2
	move.w	(a1)+,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vrys1+2
	move.w	(a2,d0.w),vrys2+2
	add.w	#512,d0
	and.w	#$7fe,d0
	move.w	(a2,d0.w),vryc1+2
	move.w	(a2,d0.w),vryc2+2
	move.w	(a0)+,d7
	lea	coords(pc),a2
	vcalc:
	movem.w	(a0)+,d0/d1/d2
	add.w	(a1),d2
	add.w	2(a1),d0
	add.w	4(a1),d1
	move.w	6(a1),d5
	bsr.L	rotate
	sub.w	d2,d5
	muls	#256,d0
	divs	d5,d0
	adda.w	#336,d0
	muls	#256,d1
	divs	d5,d1
	adda.w	#240,d1
	move.w	d0,(a2)+
	move.w	d1,(a2)+
	move.w	d5,(a2)+
	dbf	d7,vcalc

	lea	coords(pc),a1
	lea	planes(pc),a2
	lea	(a2),a3
	move.w	(a0)+,d7
	move.w	#-1,vpls
	vplan:
	clr.w	d1
	vgetpl
	vgetpl
	vgetpl
	vgetpl
	move.w	(a0)+,(a2)+
	lsr.w	#2,d1
	move.w	d1,(a2)+
	lea	(a3),a2
	movem.w	(a2),d0-d5
	suba.w	d0,d2
	suba.w	d1,d3
	suba.w	d0,d4
	suba.w	d1,d5
	muls	d2,d5
	muls	d3,d4
	sub.w	d4,d5
	bmi.s	vplan2
	voutpx	0
	bcc.s	vplan2
	voutpy	2
	bcc.s	vplan2
	voutpx	4
	bcc.s	vplan2
	voutpy	6
	bcc.s	vplan2
	voutpx	8
	bcc.s	vplan2
	voutpy	10
	bcc.s	vplan2
	voutpx	12
	bcc.s	vplan2
	voutpy	14
	bcc.s	vplan2
	lea	20(a3),a3
	addq.w	#1,vpls
	vplan2:
	lea	(a3),a2
	dbf	d7,vplan

	move.w	vpls(pc),d7
	cmp.w	#-1,vpls
	beq.L	plov
	plo0:
	lea	planes(pc),a0
	lea	planes(pc),a1
	move.w	vpls(pc),d6
	clr.w	d5
	plo1:
	cmp.w	18(a0),d5
	bge.s	plo2
	tst.w	18(a0)
	beq.s	plo2
	move.w	18(a0),d5
	lea	(a0),a1
	plo2:
	lea	20(a0),a0
	dbf	d6,plo1
	clr.w	18(a1)
	move.w	#671,stccrd
	move.w	#479,stccrd+2
	move.w	#0,stccrd+4
	move.w	#0,stccrd+6
	move.w	d7,-(a7)
	waitb
	move.l	#$78000,$48(a5)
	move.l	#$78000,$50(a5)
	move.l	#$78000,$54(a5)
	move.w	#64,$60(a5)
	move.w	#64,$66(a5)
	move.l	#$ffff8000,$72(a5)
	movem.w	(a1),d0/d1/d2/d3
	vstcs
	bsr.L	lined
	movem.w	4(a1),d0/d1/d2/d3
	vstcs
	bsr.L	lined
	movem.w	8(a1),d0/d1/d2/d3
	vstcs
	bsr.L	lined
	movem.w	12(a1),d0/d1
	movem.w	(a1),d2/d3
	vstcs
	bsr.L	lined
	cmp.w	#160,stccrd+2
	bge.s	plo3
	move.w	#160,stccrd+2
	plo3:
	cmp.w	#319,stccrd+6
	ble.s	plo4
	move.w	#319,stccrd+6
	plo4:
	cmp.w	#160,stccrd+6
	bge.s	plo5
	move.w	#160,stccrd+6
	plo5:
	cmp.w	#319,stccrd+2
	ble.s	plo6
	move.w	#319,stccrd+2
	plo6:
	move.w	stccrd(pc),d4
	move.w	stccrd+4(pc),d5
	move.w	stccrd+2(pc),d6
	move.w	stccrd+6(pc),d7
	lsr.w	#3,d4
	lsr.w	#3,d5
	and.w	#$fe,d4
	and.w	#$fe,d5
	sub.w	#2,d4
	lsl.w	#6,d6
	lsl.w	#6,d7
	cmp.w	d6,d7
	beq.L	f_file
	move.w	d5,d0
	suba.w	d4,d0
	moveq	#64,d1
	suba.w	d0,d1
	lsr.w	#1,d0
	move.w	d7,d3
	suba.w	d6,d3
	add.w	d0,d3
	add.w	d5,d7
	move.w	d7,d2
	add.w	#$8000,d2
	add.w	buff+2,d7
	suba.w	#10240,d7
	move.w	16(a1),d4
	waitb
	move.l	#$78000,$50(a5)
	move.l	#$78000,$54(a5)
	move.w	d1,$60(a5)
	move.w	d1,$62(a5)
	move.w	d1,$64(a5)
	move.w	d1,$66(a5)
	move.w	d2,$52(a5)
	move.w	d2,$56(a5)
	move.l	#$09f0001a,$40(a5)
	move.w	d3,$58(a5)
	move.w	stccrd+6(pc),d0
	sub.w	stccrd+2(pc),d0
	lsr.w	#1,d0
	add.w	#64,d0
	lsl.w	#6,d0
	move.w	stccrd+4(pc),d5
	and.w	#$f,d5
	not.w	d5
	move.w	#14,d1
	lsl.w	#8,d5
	lsl.w	#4,d5
	or.w	#$0fe2,d5
	add.w	d0,d1
	add.w	d4,d1
	ext.l	d1
	add.l	#stenc,d1
	waitb
	move.l	buff(pc),$48(a5)
	move.l	#$78000,$4c(a5)
	move.l	buff(pc),$54(a5)
	move.w	#$0002,$42(a5)
	move.w	d5,$40(a5)
	move.w	d7,$4a(a5)
	move.w	d2,$4e(a5)
	move.l	d1,$50(a5)
	move.w	d7,$56(a5)
	move.w	d3,$58(a5)
	waitb
	adda.w	#10240,d7
	adda.l	#8192,d1
	move.w	d5,$40(a5)
	move.w	d7,$4a(a5)
	move.w	d2,$4e(a5)
	move.l	d1,$50(a5)
	move.w	d7,$56(a5)
	move.w	d3,$58(a5)
	waitb
	adda.w	#10240,d7
	adda.l	#8192,d1
	move.w	d5,$40(a5)
	move.w	d7,$4a(a5)
	move.w	d2,$4e(a5)
	move.l	d1,$50(a5)
	move.w	d7,$56(a5)
	move.w	d3,$58(a5)
	waitb
	move.l	#$78000,$54(a5)
	move.w	d2,$56(a5)
	move.l	#$01000002,$40(a5)
	move.w	d3,$58(a5)
	f_file:
	move.w	(a7)+,d7
	dbf	d7,plo0
	plov:
	rts


mt_init:	lea	mt_data,a0
		move.l	a0,a1
		add.l	#$3b8,a1
		moveq	#$7f,d0
		moveq	#0,d1
mt_loop:	move.l	d1,d2
		subq.w	#1,d0
mt_lop2:	move.b	(a1)+,d1
		cmp.b	d2,d1
		bgt.s	mt_loop
		dbf	d0,mt_lop2
		addq.b	#1,d2

		lea	mt_samplestarts,a1
		asl.l	#8,d2
		asl.l	#2,d2
		add.l	#$43c,d2
		add.l	a0,d2
		move.l	d2,a2
		moveq	#$1e,d0
mt_lop3:	clr.l	(a2)
		move.l	a2,(a1)+
		moveq	#0,d1
		move.w	42(a0),d1
		asl.l	#1,d1
		add.l	d1,a2
		add.l	#$1e,a0
		dbf	d0,mt_lop3
	
		or.b	#$2,$bfe001
		move.b	#$6,mt_speed
		clr.w	$dff0a8
		clr.w	$dff0b8
		clr.w	$dff0c8
		clr.w	$dff0d8
		clr.b	mt_songpos
		clr.b	mt_counter
		clr.w	mt_pattpos
		rts

mt_end:		clr.w	$dff0a8
		clr.w	$dff0b8
		clr.w	$dff0c8
		clr.w	$dff0d8
		move.w	#$f,$dff096
		rts

mt_music:	movem.l	d0-d4/a0-a3/a5-a6,-(a7)
		lea	mt_data,a0
		addq.b	#$1,mt_counter
		move.b	mt_counter,D0
		cmp.b	mt_speed,D0
		blt.s	mt_nonew
		clr.b	mt_counter
		bra	mt_getnew

mt_nonew:	lea	mt_voice1,a6
		lea	$dff0a0,a5
		bsr	mt_checkcom
		lea	mt_voice2,a6
		lea	$dff0b0,a5
		bsr	mt_checkcom
		lea	mt_voice3,a6
		lea	$dff0c0,a5
		bsr	mt_checkcom
		lea	mt_voice4,a6
		lea	$dff0d0,a5
		bsr	mt_checkcom
		bra	mt_endr

mt_arpeggio:	moveq	#0,d0
		move.b	mt_counter,d0
		divs	#$3,d0
		swap	d0
		cmp.w	#$0,d0
		beq.s	mt_arp2
		cmp.w	#$2,d0
		beq.s	mt_arp1
		moveq	#0,d0
		move.b	$3(a6),d0
		lsr.b	#4,d0
		bra.s	mt_arp3
mt_arp1:	moveq	#0,d0
		move.b	$3(a6),d0
		and.b	#$f,d0
		bra.s	mt_arp3
mt_arp2:	move.w	$10(a6),d2
		bra.s	mt_arp4
mt_arp3:	asl.w	#1,d0
		moveq	#0,d1
		move.w	$10(a6),d1
		lea	mt_periods,a0
		moveq	#$24,d7
mt_arploop:	move.w	(a0,d0.w),d2
		cmp.w	(a0),d1
		bge.s	mt_arp4
		addq.l	#2,a0
		dbf	d7,mt_arploop
		rts
mt_arp4:	move.w	d2,$6(a5)
		rts

mt_getnew:	lea	mt_data,a0
		move.l	a0,a3
		move.l	a0,a2
		add.l	#$c,a3
		add.l	#$3b8,a2
		add.l	#$43c,a0

		moveq	#0,d0
		move.l	d0,d1
		move.b	mt_songpos,d0
		move.b	(a2,d0.w),d1
		asl.l	#8,d1
		asl.l	#2,d1
		add.w	mt_pattpos,d1
		clr.w	mt_dmacon

		lea	$dff0a0,a5
		lea	mt_voice1,a6
		bsr.s	mt_playvoice
		lea	$dff0b0,a5
		lea	mt_voice2,a6
		bsr.s	mt_playvoice
		lea	$dff0c0,a5
		lea	mt_voice3,a6
		bsr.s	mt_playvoice
		lea	$dff0d0,a5
		lea	mt_voice4,a6
		bsr.s	mt_playvoice
		bra	mt_setdma

mt_playvoice:	move.l	(a0,d1.l),(a6)
		addq.l	#4,d1
		moveq	#0,d2
		move.b	$2(a6),d2
		and.b	#$f0,d2
		lsr.b	#4,d2
		move.b	(a6),d0
		and.b	#$f0,d0
		or.b	d0,d2
		tst.b	d2
		beq.s	mt_setregs
		moveq	#0,d3
		lea	mt_samplestarts,a1
		move.l	d2,d4
		subq.l	#$1,d2
		asl.l	#2,d2
		mulu	#$1e,d4
		move.l	(a1,d2.l),$4(a6)
		move.w	(a3,d4.l),$8(a6)
		move.w	$2(a3,d4.l),$12(a6)
		move.w	$4(a3,d4.l),d3
		tst.w	d3
		beq.s	mt_noloop
		move.l	$4(a6),d2
		asl.w	#1,d3
		add.l	d3,d2
		move.l	d2,$a(a6)
		move.w	$4(a3,d4.l),d0
		add.w	$6(a3,d4.l),d0
		move.w	d0,8(a6)
		move.w	$6(a3,d4.l),$e(a6)
		move.w	$12(a6),$8(a5)
		bra.s	mt_setregs
mt_noloop:	move.l	$4(a6),d2
		add.l	d3,d2
		move.l	d2,$a(a6)
		move.w	$6(a3,d4.l),$e(a6)
		move.w	$12(a6),$8(a5)
mt_setregs:	move.w	(a6),d0
		and.w	#$fff,d0
		beq	mt_checkcom2
		move.b	$2(a6),d0
		and.b	#$F,d0
		cmp.b	#$3,d0
		bne.s	mt_setperiod
		bsr	mt_setmyport
		bra	mt_checkcom2
mt_setperiod:	move.w	(a6),$10(a6)
		and.w	#$fff,$10(a6)
		move.w	$14(a6),d0
		move.w	d0,$dff096
		clr.b	$1b(a6)

		move.l	$4(a6),(a5)
		move.w	$8(a6),$4(a5)
		move.w	$10(a6),d0
		and.w	#$fff,d0
		move.w	d0,$6(a5)
		move.w	$14(a6),d0
		or.w	d0,mt_dmacon
		bra	mt_checkcom2

mt_setdma:	move.w	#$12c,d0
mt_wait:	dbf	d0,mt_wait
		move.w	mt_dmacon,d0
		or.w	#$8000,d0
		move.w	d0,$dff096
		move.w	#$12c,d0
mt_wai2:	dbf	d0,mt_wai2
		lea	$dff000,a5
		lea	mt_voice4,a6
		move.l	$a(a6),$d0(a5)
		move.w	$e(a6),$d4(a5)
		lea	mt_voice3,a6
		move.l	$a(a6),$c0(a5)
		move.w	$e(a6),$c4(a5)
		lea	mt_voice2,a6
		move.l	$a(a6),$b0(a5)
		move.w	$e(a6),$b4(a5)
		lea	mt_voice1,a6
		move.l	$a(a6),$a0(a5)
		move.w	$e(a6),$a4(a5)

		add.w	#$10,mt_pattpos
		cmp.w	#$400,mt_pattpos
		bne.s	mt_endr
mt_nex:		clr.w	mt_pattpos
		clr.b	mt_break
		addq.b	#1,mt_songpos
		and.b	#$7f,mt_songpos
		move.b	mt_songpos,d1
		cmp.b	mt_data+$3b6,d1
		bne.s	mt_endr
		clr.b	mt_songpos
mt_endr:	tst.b	mt_break
		bne.s	mt_nex
		movem.l	(a7)+,d0-d4/a0-a3/a5-a6
		rts

mt_setmyport:	move.w	(a6),d2
		and.w	#$fff,d2
		move.w	d2,$18(a6)
		move.w	$10(a6),d0
		clr.b	$16(a6)
		cmp.w	d0,d2
		beq.s	mt_clrport
		bge.s	mt_rt
		move.b	#$1,$16(a6)
		rts
mt_clrport:	clr.w	$18(a6)
mt_rt:		rts

mt_myport:	move.b	$3(a6),d0
		beq.s	mt_myslide
		move.b	d0,$17(a6)
		clr.b	$3(a6)
mt_myslide:	tst.w	$18(a6)
		beq.s	mt_rt
		moveq	#0,d0
		move.b	$17(a6),d0
		tst.b	$16(a6)
		bne.s	mt_mysub
		add.w	d0,$10(a6)
		move.w	$18(a6),d0
		cmp.w	$10(a6),d0
		bgt.s	mt_myok
		move.w	$18(a6),$10(a6)
		clr.w	$18(a6)
mt_myok:	move.w	$10(a6),$6(a5)
		rts
mt_mysub:	sub.w	d0,$10(a6)
		move.w	$18(a6),d0
		cmp.w	$10(a6),d0
		blt.s	mt_myok
		move.w	$18(a6),$10(a6)
		clr.w	$18(a6)
		move.w	$10(a6),$6(a5)
		rts

mt_vib:		move.b	$3(a6),d0
		beq.s	mt_vi
		move.b	d0,$1a(a6)

mt_vi:		move.b	$1b(a6),d0
		lea	mt_sin,a4
		lsr.w	#$2,d0
		and.w	#$1f,d0
		moveq	#0,d2
		move.b	(a4,d0.w),d2
		move.b	$1a(a6),d0
		and.w	#$f,d0
		mulu	d0,d2
		lsr.w	#$6,d2
		move.w	$10(a6),d0
		tst.b	$1b(a6)
		bmi.s	mt_vibmin
		add.w	d2,d0
		bra.s	mt_vib2
mt_vibmin:	sub.w	d2,d0
mt_vib2:	move.w	d0,$6(a5)
		move.b	$1a(a6),d0
		lsr.w	#$2,d0
		and.w	#$3c,d0
		add.b	d0,$1b(a6)
		rts

mt_nop:		move.w	$10(a6),$6(a5)
		rts

mt_checkcom:	move.w	$2(a6),d0
		and.w	#$fff,d0
		beq.s	mt_nop
		move.b	$2(a6),d0
		and.b	#$f,d0
		tst.b	d0
		beq	mt_arpeggio
		cmp.b	#$1,d0
		beq.s	mt_portup
		cmp.b	#$2,d0
		beq	mt_portdown
		cmp.b	#$3,d0
		beq	mt_myport
		cmp.b	#$4,d0
		beq	mt_vib
		move.w	$10(a6),$6(a5)
		cmp.b	#$a,d0
		beq.s	mt_volslide
		rts

mt_volslide:	moveq	#0,d0
		move.b	$3(a6),d0
		lsr.b	#4,d0
		tst.b	d0
		beq.s	mt_voldown
		add.w	d0,$12(a6)
		cmp.w	#$40,$12(a6)
		bmi.s	mt_vol2
		move.w	#$40,$12(a6)
mt_vol2:	move.w	$12(a6),$8(a5)
		rts

mt_voldown:	moveq	#0,d0
		move.b	$3(a6),d0
		and.b	#$f,d0
		sub.w	d0,$12(a6)
		bpl.s	mt_vol3
		clr.w	$12(a6)
mt_vol3:	move.w	$12(a6),$8(a5)
		rts

mt_portup:	moveq	#0,d0
		move.b	$3(a6),d0
		sub.w	d0,$10(a6)
		move.w	$10(a6),d0
		and.w	#$fff,d0
		cmp.w	#$71,d0
		bpl.s	mt_por2
		and.w	#$f000,$10(a6)
		or.w	#$71,$10(a6)
mt_por2:	move.w	$10(a6),d0
		and.w	#$fff,d0
		move.w	d0,$6(a5)
		rts

mt_portdown:	clr.w	d0
		move.b	$3(a6),d0
		add.w	d0,$10(a6)
		move.w	$10(a6),d0
		and.w	#$fff,d0
		cmp.w	#$358,d0
		bmi.s	mt_por3
		and.w	#$f000,$10(a6)
		or.w	#$358,$10(a6)
mt_por3:	move.w	$10(a6),d0
		and.w	#$fff,d0
		move.w	d0,$6(a5)
		rts

mt_checkcom2:	move.b	$2(a6),d0
		and.b	#$f,d0
		cmp.b	#$e,d0
		beq.s	mt_setfilt
		cmp.b	#$d,d0
		beq.s	mt_pattbreak
		cmp.b	#$b,d0
		beq.s	mt_posjmp
		cmp.b	#$c,d0
		beq.s	mt_setvol
		cmp.b	#$f,d0
		beq.s	mt_setspeed
		rts

mt_setfilt:	move.b	$3(a6),d0
		and.b	#$1,d0
		asl.b	#$1,d0
		and.b	#$fd,$bfe001
		or.b	d0,$bfe001
		rts
mt_pattbreak:	not.b	mt_break
		rts
mt_posjmp:	move.b	$3(a6),d0
		subq.b	#$1,d0
		move.b	d0,mt_songpos
		not.b	mt_break
		rts
mt_setvol:	cmp.b	#$40,$3(a6)
		ble.s	mt_vol4
		move.b	#$40,$3(a6)
mt_vol4:	move.b	$3(a6),$8(a5)
		rts
mt_setspeed:	move.b	$3(a6),d0
		and.w	#$1f,d0
		beq.s	mt_rts2
		clr.b	mt_counter
		move.b	d0,mt_speed
mt_rts2:	rts

****					interrupt system

intc:	movem.l	d1-d7/a0-a6,-(a7)
	lea	$dff000,a5
	move.l	copp(pc),a0
	move.l	a0,$84(a5)

bsr mt_music

	tst.w	model+6			;1 stenua
	bne.s	vecc0
	addq.w	#1,model+6
	vecc0:
	cmp.w	#1,model+6
	bne.s	vecc1
	cmp.w	#3,model+2
	bne.s	vecc1
	addq.w	#1,model+6
	clr.w	model+4
	clr.w	model+2
	vecc1:

	cmp.w	#2,model+6		;2 text 1
	bne.s	vecc2
	move.w	#3,model
	addq.w	#1,model+6
	vecc2:

	cmp.w	#4,model+6		;3 logo
	bne.s	vecc4
	move.l	#vecop,copp
	move.w	#192,model+4
	addq.w	#1,model+6
	move.w	#4,model
	vecc4:
	cmp.w	#5,model+6
	bne.L	vecc5
	cmp.w	#0,model+2
	bne.s	vecc5_
	tst.w	model+4
	bne.s	vecc5_1
	move.w	#32,model+4
	move.w	#1,model+2
	bra.s	vecc5_
	vecc5_1:
	subq.w	#1,model+4
	move.w	model+4(pc),d0
	btst	#0,d0
	beq.s	vecc5_
	lea	vectra,a0
	lea	vecol+2(pc),a1
	moveq	#15,d2
	vecc5_2:
	move.w	(a0)+,d1
	move.w	(a1),d0
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vecc5_2
	vecc5_:
	cmp.w	#1,model+2
	bne.s	vecc5
	tst.w	model+4
	bne.s	vecc5_4
	clr.w	model+2
	addq.w	#1,model+6
	bra.s	vecc5
	vecc5_4:
	subq.w	#1,model+4
	move.w	model+4(pc),d0
	btst	#0,d0
	beq.s	vecc5
	lea	vecol+2(pc),a1
	moveq	#15,d2
	vecc5_5:
	clr.w	d1
	move.w	(a1),d0
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vecc5_5
	vecc5:

	cmp.w	#6,model+6		;4 stenu 2
	bne.L	vecc6
	lea	vhand(pc),a0
	move.l	#$06e003d0,(a0)+
	move.l	#$00a0fa80,(a0)+
	move.l	#$00000000,(a0)+
	move.w	#$690,(a0)
	clr.w	model+8
	clr.w	model
	addq.w	#1,model+6
	move.l	#stcp2,stccol
	vecc6:
	cmp.w	#7,model+6
	bne.s	vecc7
	cmp.w	#3,model+2
	bne.s	vecc7
	addq.w	#1,model+6
	clr.w	model+4
	clr.w	model+2
	vecc7:

	cmp.w	#8,model+6		;5 keftext 1
	bne.s	vecc8
	move.w	#3,model
	addq.w	#1,model+6
	vecc8:

	cmp.w	#10,model+6		;6 keftaali 1
	bne.s	vecc10
	move.w	#$3000,xx
	move.w	#$0600,yy
	move.w	#1,model
	addq.w	#1,model+6
	vecc10:
	cmp.w	#11,model+6
	bne.s	vecc11
	cmp.w	#2,model+2
	bne.s	vecc11
	subq.w	#1,model+4
	tst.w	model+4
	bne.s	vecc11
	clr.w	model+2
	clr.w	model+4
	addq.w	#1,model+6
	vecc11:

	cmp.w	#12,model+6		;7 keftext 2
	bne.s	vecc12
	move.w	#3,model
	addq.w	#1,model+6
	vecc12:

	cmp.w	#14,model+6		;8 keftaali 2
	bne.s	vecc14
	move.w	#$0000,xx
	move.w	#$2000,yy
	move.w	#1,model
	addq.w	#1,model+6
	vecc14:
	cmp.w	#15,model+6
	bne.s	vecc15
	cmp.w	#2,model+2
	bne.s	vecc15
	subq.w	#1,model+4
	tst.w	model+4
	bne.s	vecc15
	clr.w	model+2
	clr.w	model+4
	addq.w	#1,model+6
	vecc15:

	cmp.w	#16,model+6		;9 keftext 3
	bne.s	vecc16
	move.w	#3,model
	addq.w	#1,model+6
	vecc16:

	cmp.w	#18,model+6		;10 stenu 3
	bne.s	vecc18
	lea	vhand(pc),a0
	move.l	#$040007fd,(a0)+
	move.l	#$0000fd74,(a0)+
	move.l	#$0000027c,(a0)+
	move.w	#$400,(a0)
	clr.w	model+8
	clr.w	model
	addq.w	#1,model+6
	move.l	#stcp2,stccol
	vecc18:
	cmp.w	#19,model+6
	bne.s	vecc19
	cmp.w	#3,model+2
	bne.s	vecc19
	addq.w	#1,model+6
	clr.w	model+4
	clr.w	model+2
	vecc19:

	cmp.w	#20,model+6		;11 horrortext
	bne.s	vecc20
	move.w	#3,model
	addq.w	#1,model+6
	vecc20:

	cmp.w	#22,model+6		;12 plazma 1
	bne.s	vecc22
	move.w	#2,model
	addq.w	#1,model+6
	vecc22:

	cmp.w	#24,model+6		;13 plazma 2
	bne.s	vecc24
	move.w	#2,model
	addq.w	#1,model+6
	vecc24:

	cmp.w	#26,model+6		;14 credtext 1
	bne.L	vecc26
	move.w	#3,model
	addq.w	#1,model+6
	vecc26:

	cmp.w	#28,model+6		;15 plazma 3
	bne.s	vecc28
	move.w	#2,model
	addq.w	#1,model+6
	vecc28:

	cmp.w	#30,model+6		;16 credtext 2
	bne.s	vecc30
	move.w	#3,model
	addq.w	#1,model+6
	vecc30:

	cmp.w	#32,model+6		;17 keftaali 3
	bne.s	vecc32
	move.w	#$2000,xx
	move.w	#$d000,yy
	move.w	#1,model
	addq.w	#1,model+6
	vecc32:
	cmp.w	#33,model+6
	bne.s	vecc33
	cmp.w	#2,model+2
	bne.s	vecc33
	subq.w	#1,model+4
	tst.w	model+4
	bne.L	vecc33
	clr.w	model+2
	clr.w	model+4
	addq.w	#1,model+6
	vecc33:

	cmp.w	#34,model+6		;18 credtext 3
	bne.s	vecc34
	move.w	#3,model
	addq.w	#1,model+6
	vecc34:

	cmp.w	#36,model+6		;19 stenu 4
	bne.s	vecc36
	lea	vhand(pc),a0
	move.l	#$00000480,(a0)+
	move.l	#$0000fd00,(a0)+
	move.l	#$00000000,(a0)+
	move.w	#$400,(a0)+
	clr.w	model+8
	clr.w	model
	addq.w	#1,model+6
	move.l	#stcp2,stccol
	vecc36:
	cmp.w	#37,model+6
	bne.s	vecc37
	cmp.w	#3,model+2
	bne.s	vecc37
	addq.w	#1,model+6
	clr.w	model+4
	clr.w	model+2
	vecc37:

	cmp.w	#38,model+6		;20 credtext 4
	bne.s	vecc38
	move.w	#3,model
	addq.w	#1,model+6
	vecc38:

	cmp.w	#40,model+6		;21 plazma 4
	bne.s	vecc40
	move.w	#2,model
	addq.w	#1,model+6
	vecc40:

	cmp.w	#42,model+6		;4 stenu 2
	bne.L	vecc42
	lea	vhand(pc),a0
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+
	move.w	#$400,(a0)+
	clr.w	model+8
	clr.w	model
	addq.w	#1,model+6
	move.l	#stcp2,stccol
	vecc42:

	cmp.w	#44,model+6		;end of malou
	bne.s	vecc44
	move.w	#-1,model
	addq.w	#1,model+6
	vecc44:

	cmp.w	#1,model
	bne.s	frco
	move.w	frcol+126(pc),d0
	moveq	#29,d1
	lea	frcol+122(pc),a0
	frco1:
	move.w	(a0),4(a0)
	subq.l	#4,a0
	dbf	d1,frco1
	move.w	d0,frcol+6
	frco:
	tst.w	model
	beq.s	vecc
	veccov:
	move.w	#1,frame
	movem.l	(a7)+,d1-d7/a0-a6
	moveq	#1,d0
	rts

	vecc:
	tst.w	model+2
	bne.L	vspup
	addq.w	#1,model+4
	cmp.w	#32,model+4
	bne.s	vspup1
	clr.w	model+4
	addq.w	#1,model+2
	vspup1:
	cmp.w	#1,model+4
	bne.s	vspupi
	clr.w	clrp	
	vspupi:
	move.w	model+4(pc),d0
	btst	#0,d0
	beq.s	vspup
	move.l	stccol(pc),a0
	lea	crcol+2(pc),a1
	moveq	#7,d2
	vspup2:
	move.w	(a1),d0
	move.w	(a0)+,d1
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vspup2
	lea	starc(pc),a0
	lea	crcol+34(pc),a1
	moveq	#3,d2
	vspup3:
	move.w	(a0)+,d1
	move.w	(a1),d0
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vspup3
	move.w	#$cdf,d1
	move.w	vbar1+2(pc),d0
	bsr.L	spread
	move.w	d0,vbar1+2
	move.w	d0,vbar2+2
	move.w	#$235,d1
	move.w	vbar1-6(pc),d0
	bsr.L	spread
	move.w	d0,vbar1-6
	move.w	d0,vbar2+10
	vspup:
	cmp.w	#2,model+2
	bne.s	vspdw
	addq.w	#1,model+4
	cmp.w	#32,model+4
	bne.s	vspdw1
	clr.w	model+4
	addq.w	#1,model+2
	vspdw1:
	move.w	model+4(pc),d0
	btst	#0,d0
	beq.s	vspdw
	lea	crcol+2(pc),a1
	moveq	#7,d2
	vspdw2:
	move.w	(a1),d0
	clr.w	d1
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vspdw2
	lea	crcol+34(pc),a1
	moveq	#3,d2
	vspdw3:
	clr.w	d1
	move.w	(a1),d0
	bsr.L	spread
	move.w	d0,(a1)
	addq.l	#4,a1
	dbf	d2,vspdw3
	clr.w	d1
	move.w	vbar1+2(pc),d0
	bsr.L	spread
	move.w	d0,vbar1+2
	move.w	d0,vbar2+2
	clr.w	d1
	move.w	vbar1-6(pc),d0
	bsr.L	spread
	move.w	d0,vbar1-6
	move.w	d0,vbar2+10
	vspdw:

	and.w	#$7ff,vhand
	and.w	#$7ff,vhand+2
	and.w	#$7ff,vhand+4		;stenu radat

	cmp.w	#1,model+6
	bne.s	vdo1
	add.w	#16,vhand+6
	addq.w	#2,vhand
	cmp.w	#$300,vhand+6
	bne.s	vdo1
	move.w	#2,model+2
	vdo1:

	cmp.w	#7,model+6
	bne.L	vdo2
	cmp.w	#0,model+8
	bne.s	vdo21
	add.w	#12,vhand+6
	add.w	#16,vhand
	cmp.w	#$6e0,vhand
	bne.s	vdo21
	addq.w	#1,model+8
	vdo21:
	cmp.w	#1,model+8
	bne.s	vdo22
	add.w	#14,vhand+4
	add.w	#1,vhand+2
	cmp.w	#$400,vhand+2
	bne.s	vdo22
	addq.w	#1,model+8
	vdo22:
	cmp.w	#2,model+8
	bne.s	vdo23
	add.w	#8,vhand+4
	cmp.w	#$600,vhand+4
	bne.s	vdo23
	addq.w	#1,model+8
	vdo23:
	cmp.w	#3,model+8
	bne.s	vdo24
	add.w	#24,vhand+12
	cmp.w	#$1890,vhand+12
	bne.s	vdo24
	move.w	#2,model+2
	vdo24:
	vdo2:

	cmp.w	#19,model+6
	bne.L	vdo3
	cmp.w	#0,model+8
	bne.s	vdo31
	sub.w	#16,vhand+10
	cmp.w	#$ffec,vhand+10
	bne.s	vdo31
	addq.w	#1,model+8
	vdo31:
	cmp.w	#1,model+8
	bne.s	vdo32
	sub.w	#13,vhand+2
	add.w	#12,vhand+6
	sub.w	#12,vhand+10
	cmp.w	#$650,vhand+2
	bne.s	vdo32
	addq.w	#1,model+8
	vdo32:
	cmp.w	#2,model+8
	bne.s	vdo33
	add.w	#8,vhand+2
	cmp.w	#$550,vhand+2
	bne.s	vdo33
	addq.w	#1,model+8
	vdo33:
	cmp.w	#3,model+8
	bne.s	vdo34
	add.w	#4,vhand+4
	add.w	#9,vhand+2
	sub.w	#6,vhand+6
	add.w	#7,vhand+8
	cmp.w	#$fdb0,vhand+6
	bne.s	vdo34
	addq.w	#1,model+8
	vdo34:
	cmp.w	#4,model+8
	bne.s	vdo35
	add.w	#5,vhand+2
	add.w	#10,vhand+6
	cmp.w	#$150,vhand+2
	bne.s	vdo35
	move.w	#2,model+2
	vdo35:
	vdo3:

	cmp.w	#37,model+6
	bne.L	vdo4
	cmp.w	#0,model+8
	bne.s	vdo41
	add.w	#8,vhand+6
	sub.w	#2,vhand+10
	cmp.w	#$100,vhand+6
	bne.s	vdo41
	addq.w	#1,model+8
	vdo41:
	cmp.w	#1,model+8
	bne.s	vdo41_
	addq.w	#1,model+10
	cmp.w	#25,model+10
	bne.s	vdo41_
	clr.w	model+10
	addq.w	#1,model+8
	vdo41_:
	cmp.w	#2,model+8
	bne.s	vdo42
	sub.w	#8,vhand
	sub.w	#9,vhand+2
	cmp.w	#$400,vhand
	bne.s	vdo42
	addq.w	#1,model+8
	vdo42:
	cmp.w	#3,model+8
	bne.s	vdo43
	sub.w	#4,vhand+4
	sub.w	#3,vhand+6
	cmp.w	#$400,vhand+4
	bne.s	vdo43
	addq.w	#1,model+8
	vdo43:
	cmp.w	#4,model+8
	bne.s	vdo44
	add.w	#2,vhand+2
	add.w	#4,vhand+6
	cmp.w	#$200,vhand+2
	bne.s	vdo44
	move.w	#2,model+2
	vdo44:
	vdo4:

	cmp.w	#43,model+6
	bne.s	vdo51
	add.w	#7,vhand
	add.w	#4,vhand+2
	add.w	#3,vhand+4
	btst	#6,$bfe001
	bne.s	vdo51
	move.w	#2,model+2
	vdo51:

	tst.w	blanko
	bmi.s	nblank
	add.w	#1,blanko
	cmp.w	#3,blanko
	bne.s	nblank
	move.w	#-1,blanko
	nblank:
	move.l	#starp,d0
	lea	crbit+2,a0
	swap	d0
	move.w	d0,8(a0)
	swap	d0
	move.w	d0,12(a0)
	add.l	#160*44,d0
	swap	d0
	move.w	d0,24(a0)
	swap	d0
	move.w	d0,28(a0)
	lea	starp(pc),a3
	lea	starp+7040(pc),a4
	lea	stars(pc),a0
	moveq	#47,d7
	starl2:
	movem.w	(a0)+,d0/d1/d2
	move.w	(a0),d4
	clr.b	(a3,d4.w)
	clr.b	(a4,d4.w)
	add.w	starr(pc),d0
	add.w	starr+2(pc),d1
	add.w	starr+4(pc),d2
	and.w	#$1ff,d2
	tst.w	d2
	beq.s	starlo
	ext.l	d0
	ext.l	d1
	divs	d2,d0
	divs	d2,d1
	add.w	#172,d0
	add.w	#80,d1
	cmp.w	#352,d0
	bcc.s	starlo
	cmp.w	#160,d1
	bcc.s	starlo
	move.w	d0,d3
	lsr.w	#3,d0
	not.b	d3
	mulu	#44,d1
	add.w	d1,d0
	move.w	d0,(a0)
	cmp.w	#420,d2
	bcs.s	starl3
	bset	d3,(a3,d0.w)
	bset	d3,(a4,d0.w)
	bra.s	starlo
	starl3:
	cmp.w	#330,d2
	bcs.s	starl4
	bset	d3,(a4,d0.w)
	bra.s	starlo
	starl4:
	bset	d3,(a3,d0.w)
	starlo:
	addq.l	#2,a0
	dbf	d7,starl2
	clr.w	d0
	clr.w	d1
	move.w	speedy(pc),d2
	bsr.L	rotate
	neg.w	d0
	asl.w	#4,d0
	add.w	d0,starr
	neg.w	d1
	asl.w	#4,d1
	add.w	d1,starr+2
	asr.w	#4,d2
	add.w	d2,starr+4
	bra.L	veccov

spread:	movem.w	d2-d7,-(a7)
	move.w	d0,d2
	move.w	d0,d3
	move.w	d0,d4
	move.w	d1,d5
	move.w	d1,d6
	move.w	d1,d7
	and.w	#$00f,d2
	and.w	#$0f0,d3
	and.w	#$f00,d4
	and.w	#$00f,d5
	and.w	#$0f0,d6
	and.w	#$f00,d7
	cmp.w	d2,d5
	bls.s	spr1
	add.w	#$001,d0
	spr1:
	cmp.w	d2,d5
	bcc.s	spr2
	sub.w	#$001,d0
	spr2:
	cmp.w	d3,d6
	bls.s	spr3
	add.w	#$010,d0
	spr3:
	cmp.w	d3,d6
	bcc.s	spr4
	sub.w	#$010,d0
	spr4:
	cmp.w	d4,d7
	bls.s	spr5
	add.w	#$100,d0
	spr5:
	cmp.w	d4,d7
	bcc.s	spr6
	sub.w	#$100,d0
	spr6:
	movem.w	(a7)+,d2-d7
	rts

****					rotate routine z-x-y

rotate:	move.w	d1,d3
	move.w	d0,d4
vrzs1:	muls	#$0000,d3
	asr.l	#8,d3
vrzs2:	muls	#$0000,d4
	asr.l	#8,d4
vrzc1:	muls	#$0000,d0
	asr.l	#8,d0
vrzc2:	muls	#$0000,d1
	asr.l	#8,d1
	suba.w	d3,d0
	adda.w	d4,d1
	move.w	d2,d3
	move.w	d1,d4
vrxs1:	muls	#$0000,d3
	asr.l	#8,d3
vrxs2:	muls	#$0000,d4
	asr.l	#8,d4
vrxc1:	muls	#$0000,d1
	asr.l	#8,d1
vrxc2:	muls	#$0000,d2
	asr.l	#8,d2
	suba.w	d3,d1
	adda.w	d4,d2
	move.w	d2,d3
	move.w	d0,d4
	neg.w	d0
vrys1:	muls	#$0000,d3
	asr.l	#8,d3
vrys2:	muls	#$0000,d4
	asr.l	#8,d4
vryc1:	muls	#$0000,d0
	asr.l	#8,d0
vryc2:	muls	#$0000,d2
	asr.l	#8,d2
	adda.w	d3,d0
	adda.w	d4,d2
	rts

****					linedrawer

lined:	move.l	#$78000,a4
	moveq	#$f,d4
	cmp.w	d1,d3
	ble.s	eijarj1
	exg	d2,d0
	exg	d3,d1
	eijarj1:
	and.w	d2,d4
	sub.w	d3,d1
	lsl.l	#6,d3
	sub.w	d2,d0
	blt.s	turha1
	cmp.w	d0,d1
	bge.s	turha2
	moveq	#$13,d7
	bra.s	octover
	turha2:
	moveq	#$3,d7
	exg	d0,d1
	bra.s	octover
	turha1:
	neg.w	d0
	cmp.w	d0,d1
	bge.s	turha3
	moveq	#$17,d7
	bra.s	octover
	turha3:
	moveq	#$b,d7
	exg	d0,d1
	octover:
	add.w	d1,d1
	asr.w	#3,d2
	add.w	d2,d3
	add.w	d3,a4
	move.w	d1,d2
	move.w	d4,d3
	swap	d4
	asr.l	#4,d4
	or.w	#$b4a,d4
	swap	d7
	move.w	d4,d7
	swap	d7
	move.w	d0,d6
	addq.w	#1,d6
	asl.w	#6,d6
	addq.w	#2,d6
	sub.w	d0,d2
	bge.s	eiylia
	or.w	#$40,d7
	eiylia:
	waitb
	move.w	d1,$62(a5)
	move.w	d2,d1
	sub.w	d0,d1
	move.w	d1,$64(a5)
	move.l	d7,$40(a5)
	move.w	a4,$4a(a5)
	move.w	a4,$56(a5)
	move.w	d2,$52(a5)
	not.b	d3
	bchg	d3,(a4)
	move.w	d6,$58(a5)
	eipiirreta:
	rts

****					Huttusen mirri

>EXTERN	"MirPic2",MirrorPic
>EXTERN	"MirrorSIN",MirrorSIN
>EXTERN	"FontA",Font
>EXTERN	"Negat",Negat

mirror:		move.l	#$70000,a0
ClrMirrorArea:	clr.l	(a0)+
		cmp.l	#$79780,a0
		blt.s	ClrMirrorArea
		move.l	#colist,copp

Wait:		tst.w	frame
		beq.s	Wait
		clr.w	frame
		bsr.s	Routine
		cmp.w	#-88,WaitEnd
		bne.s	Wait

		move.l	#AddEnd,JumpWay+2
		clr.w	Coladd
		clr.w	Coladd2
		add.l	#50,TextAddr
		rts

Routine:	lea	$dff000,a6
		move.w	#$20,$96(a6)

		move.w	mirlace,d0
		addq.w	#2,d0
		move.w	d0,MirrorPlanes+6
		add.w	#580,d0
		move.w	d0,MirrorPlanes+14
		add.w	#580,d0
		move.w	d0,MirrorPlanes+22

		move.w	mirlace,d0
		move.w	mirlace+2,mirlace
		move.w	d0,mirlace+2

		btst	#0,WaitEnd+1
		bne.s	Lamirror
		cmp.w	#-46,WaitEnd
		bgt.s	LaMirror
		cmp.w	#-72,WaitEnd
		blt.s	LaMirror

		lea 	colist+2(pc),a0
		lea 	mircols(pc),a1
		add.w	coladd(pc),a1
		moveq	#7,d2

		ll:
		move.w	(a1)+,d1
		move.w (a0),d0
		bsr spread
		move.w d0,(a0)
		addq.w	#4,a0
		dbf d2,ll

		lea	PalkitPos(pc),a2
		lea	PalkCols(pc),a1
		add.w	Coladd2(pc),a1
		moveq	#11,d2

ll2:		move.l	(a2)+,a0
		move.w	(a1)+,d1
		move.w	(a0),d0
		bsr	Spread
		move.w	d0,(a0)
		move.l	44(a2),a0
		move.w	d0,(a0)
		dbf	d2,ll2

LaMirror:	lea	MirrorSIN,a1
		lea	MirrorSIN,a2
		move.w	MirrorPos+2,d0
		add.w	d0,a1
		add.w	#100,d0
		cmp.w	#200,d0
		blt.s	AddyPos2
		sub.w	#200,d0
AddyPos2:	add.w	d0,a2

		move.w	(a1),d0
		bsr	SetShift
		move.l	d1,Mask1+2
		move.w	d2,Mint1+2
		move.w	d3,XPos1+2
		move.w	(a2),d0
		bsr	SetShift
		move.l	d1,Mask2+2
		move.w	d2,Mint2+2
		move.w	d3,XPos2+2

		lea	MirrorSIN,a1
		add.w	MirrorPos,a1
		move.w	(a1),d0
		sub.w	#$f,d0
		mulu	#10,d0
		add.w	#4,MirrorPos
		add.w	#2,MirrorPos+2
		cmp.w	#200,MirrorPos
		blt.s	TestMir2
		sub.w	#200,MirrorPos
TestMir2:	cmp.w	#200,MirrorPos+2
		blt.s	SetMirModulo
		sub.w	#200,MirrorPos+2

SetMirModulo:	move.l	#$40026,$64(a6)
		move.w	#[32*64]+[3],Size+2
		
		move.l	#MirrorPic+640,a0
		add.w	d0,a0
XPos1:		add.w	#0,a0
Mint1:		move.w	#0,$40(a6)
Mask1:		move.l	#0,$44(a6)
		move.l	#$70006,a1
		add.w	mirlace,a1
		moveq	#2,d4
		bsr	MirLoop

		move.l	#MirrorPic+0,a0
		add.w	d0,a0
XPos2:		add.w	#0,a0
Mint2:		move.w	#0,$40(a6)
Mask2:		move.l	#0,$44(a6)
		move.l	#$70002,a1
		add.w	mirlace,a1
		moveq	#2,d4
		bsr	MirLoop

CopyBlocks:	move.l	#$70004,a0
		add.w	mirlace,a0
		move.l	#$7000c,a1
		add.w	mirlace,a1
		move.l	#$ffffffff,$44(a6)
		move.w	#$9f0,$40(a6)
		move.l	#$240024,$64(a6)
		move.w	#[96*64]+[4],Size+2
		moveq	#3,d0
CopyLoop:	bsr	StartMirBlit
		addq.l	#8,a1
		dbf	d0,CopyLoop
		move.l	#$7000a,a0
		add.w	mirlace,a0
		move.l	#$70002,a1
		add.w	mirlace,a1
		move.l	#$2a002a,$64(a6)
		move.w	#[96*64]+[1],Size+2
		bsr	StartMirBlit
		move.l	#$70004,a0
		add.w	mirlace,a0
		move.l	#$7002c,a1
		add.w	mirlace,a1
		bsr	StartMirBlit

		cmp.w	#230,waitend
		bne.s	JumpWay
		move.l	#SubEnd,JumpWay+2
		move.w	#16,Coladd
		move.w	#24,Coladd2

JumpWay:	jmp	AddEnd
AddEnd:		addq.w	#1,waitend
		bra.s	StartTexty
SubEnd:		subq.w	#1,waitend

StartTexty:	btst	#14,$2(a6)
		bne.s	starttexty
		move.w	#$3c,$62(a6)
		move.l	#$740028,$64(a6)
		move.l	#$dc00000,$40(a6)

		moveq	#49,d7
		clr.w	d6
		clr.w	sarake
		clr.w	rivi

		lea	texti1(pc),a0
		add.l	textaddr(pc),a0

textyl1:	move.w	d6,d1
		sub.w	waitend(pc),d1
		cmp.w	#16,d1
		bcc.L	notexty

		lea	Font(pc),a1
		lea	$7165c,a2
		add.w	sarake(pc),a2
		add.w	rivi(pc),a2

		move.b	(a0),d0
		cmp.b	#$20,d0
		bne.s	kysp
		add.w	#116,a1
		bra.s	Drare
kysp:		cmp.b	#$3f,d0
		bne.s	kysp2
		add.w	#112,a1
		bra.s	Drare
kysp2:		cmp.b	#$2d,d0
		bne.s	kysp3
		add.w	#104,a1
		bra.s	Drare
kysp3:		cmp.b	#$2e,d0
		bne.s	Asc2
		add.w	#108,a1
		bra.s	Drare
Asc2:		sub.b	#$61,d0
		and.w	#$ff,d0
		lsl.w	#2,d0
		add.w	d0,a1
Drare:
		lsl.w	#2,d1
		ext.l	d1
		lea	negat,a3
		add.l	d1,a3

		moveq	#2,d0

WaitBlitr:	btst	#14,$2(a6)
		bne.s	WaitBlitr
		move.l	a1,$50(a6)
		move.l	a3,$4c(a6)
		move.l	a2,$54(a6)
		move.w	#[32*64]+[2],$58(a6)
		add.w	#3840,a1
		add.w	#$2c00,a2
		dbf	d0,WaitBlitr

notexty:	add.w	#4,sarake
		cmp.w	#40,sarake
		bne.s	textyl2
		clr.w	sarake
		add.w	#1672,rivi

textyl2:	addq.l	#1,a0
		addq.w	#4,d6
		dbf	d7,textyl1

;		move.w	#$f,$180(a6)
		moveq	#1,d0
		rts

MirLoop:	bsr	StartMirBlit
		adda.l	#$500,a0
		adda.l	#$580,a1
		dbf	d4,MirLoop
		clr.w	d4
		rts
StartMirBlit:	move.l	a0,$50(a6)
		move.l	a1,$54(a6)
Size:		move.w	#0,$58(a6)
WaitMirBlit:	btst	#14,$2(a6)
		bne.s	WaitMirBlit
		rts

SetShift:	move.l	#$ffff,d1
		move.w	d0,d3
		lsr.w	#4,d3
		lsl.w	#1,d3
		not.w	d0
		and.w	#$f,d0		;Shift 0-F
		move.w	d0,d2
		ror.w	#4,d2
		or.w	#$9f0,d2
		btst	#3,d0
		beq.s	NoyHighBit
		lsl.l	#8,d1
NoyHighBit:	and.w	#$7,d0
		lsl.l	d0,d1
		rts

Coladd:		dc.w	0
mircols:	dc.w	$000,$349,$238,$237,$126,$125,$014,$013
		blk.w	8,0

mirlace:	dc.w	$0000,$9482

CoList:		dc.l	$1800000,$1820000,$1840000,$1860000
		dc.l	$1880000,$18a0000,$18c0000,$18e0000
		dc.l	$1900000,$192067f,$194056e,$196045d
		dc.l	$198034c,$19a023b,$19c012a,$19e0019
		dc.l	$08e2f70,$09028d0,$2207ff06,$1020000
Palkit1:	dc.l	$2307ff06,$1800000,$2407ff06,$1800000
		dc.l	$2507ff06,$1800000,$2607ff06,$1800000
		dc.l	$2707ff06,$1800000,$2807ff06,$1800000
		dc.l	$2907ff06,$1800000,$2a07ff06,$1800000
TextPlanes:	dc.l	$0e40007,$0e61082,$0ec0007,$0ee3c82
		dc.l	$0f40007,$0f66882,$1040040
		dc.l	$2b07ff06
MirrorPlanes:	dc.l	$0e00007,$0e20002,$0e80007,$0ea0582
Palk2:		dc.l	$0f00007,$0f20b02,$1800000
		dc.l	$2c07ff06,$1006600,$0920030,$09400d8
Palkit2:	dc.l	$1080000,$10a0000,$1800000
		dc.l	$2d07ff06,$1800000
		dc.l	$2e07ff06,$1800000,$2f07ff06,$1800000
		dc.l	$4e07ff06,$108ffa8,$6d07ff06,$1080000
		dc.l	$8c07ff06,$108ffa8,$ab07ff06,$1080000
		dc.l	$ca07ff06,$108ffa8,$e907ff06,$1080000
		dc.l	$ffdfffde
		dc.l	$807ff06,$108ffa8
Palkit3:	dc.l	$2807ff06,$1800000,$1000000
		dc.l	$2907ff06,$1800000,$2a07ff06,$1800000
		dc.l	$2b07ff06,$1800000,$2c07ff06,$1800000
		dc.l	$2d07ff06,$1800000,$2e07ff06,$1800000
		dc.l	$2f07ff06,$1800000,$3007ff06,$1800000
		dc.l	$3107ff06,$1800000,$3207ff06,$1800000
		dc.l	$3307ff06,$1800000,$3407ff06,$1800000
		dc.l	$1040000,$fffffffe

ColAdd2:	dc.w	0
PalkCols:	dc.w	$222,$444,$666,$888,$bbb,$999,$666,$444
		dc.w	$224,$334,$446,$224
		blk.w	12,0

PalkitPos:	dc.l	Palkit1+6,Palkit1+14,Palkit1+22,Palkit1+30
		dc.l	Palkit1+38,Palkit1+46,Palkit1+54,Palkit1+62
		dc.l	Palk2+10,Palkit2+10,Palkit2+18,Palkit2+26

		dc.l	Palkit3+98,Palkit3+90,Palkit3+82,Palkit3+74
		dc.l	Palkit3+66,Palkit3+58,Palkit3+50,Palkit3+42
		dc.l	Palkit3+34,Palkit3+26,Palkit3+18,Palkit3+6

Textaddr:	dc.l	0
Sarake:		dc.w	0
Rivi:		dc.w	0
WaitEnd:	dc.w	-88

Texti1:	
	dc.b	' you are    about    to enter    the     world of '
	dc.b	'           have you    seen   keftales?           '
	dc.b	'  do you   like it?            we do...           '
	dc.b	'   too     normal?               who     cares... '
	dc.b	'the horror returns- the son ofthe living  plasma  '
	dc.b	'vector and  keftal    coding      by      smirre  '
	dc.b	'plasma and  texter    coding      by      oregon  '
	dc.b	'  audial  stimulants composed     by     dr. jive '
	dc.b	'  fonts    created      by               morrison '

****					huttusen plamaatikko

>EXTERN	"PlasmaSINS",PlasmaSIN

initplasm:	move.l	#ffoo,d0
		move.w	d0,Plane+6
		swap	d0
		move.w	d0,Plane+2
		move.l	Copse(pc),copp

		move.l	#$70000,a0
ClrPa:		clr.l	(a0)+
		cmp.l	#$7fff0,a0
		blt.s	ClrPa

		move.l	#$70000,CopperPlace
		move.l	#$78000,CopperPlace+4
		clr.l	PlasmaPoint
		clr.l	PlasmaPoint+4

		lea	PlasExs(pc),a0
		add.l	exspos(pc),a0
		add.l	#32,ExsPos
		move.w	(a0)+,BDis+2
		move.w	(a0)+,BDis2+2
		move.w	(a0)+,BAdd+2
		move.w	(a0)+,BAdd2+2
		move.w	(a0)+,GDis+2
		move.w	(a0)+,GDis2+2
		move.w	(a0)+,GAdd+2
		move.w	(a0)+,GAdd2+2
		move.w	(a0)+,RDis+2
		move.w	(a0)+,RDis2+2
		move.w	(a0)+,RAdd+2
		move.w	(a0)+,RAdd2+2
		move.w	(a0)+,XDis+2
		move.w	(a0)+,XDis2+2
		move.w	(a0)+,XAdd+2
		move.w	(a0)+,XAdd2+2

		lea	XPos(pc),a0
		moveq	#7,d0
ClrFup:		clr.w	(a0)+
		dbf	d0,ClrFup

		move.l	CopperPlace(pc),a0
		lea	Colist2(pc),a1
MoveList:	move.l	(a1),(a0)+
		cmp.l	#$108ffd4,(a1)+
		bne.s	MoveList

		move.l	a0,PlasmaPoint
		move.l	a0,PlasmaPoint+4
		add.l	#$8000,PlasmaPoint+4

		move.l	#$6021ff3e,d0
PlasLoop:	add.l	#$1000000,d0
		move.l	d0,(a0)+
		move.l	#$1020000,(a0)+
		moveq	#22,d1
ColLoop:	move.l	#$1820000,(a0)+
		move.l	#$1800000,(a0)+
		dbf	d1,ColLoop
		move.l	#$1820000,(a0)+
		cmp.l	#$f621ff3e,d0
		bne.s	PlasLoop
		add.l	#$1000000,d0
		move.l	d0,(a0)+
		move.l	#$1000000,(a0)+
		move.l	#$1800000,(a0)+
		move.l	#$1440000,(a0)+
		move.l	#$1460000,(a0)+
		move.l	#$14c0000,(a0)+
		move.l	#$14e0000,(a0)+
		move.l	#$1540000,(a0)+
		move.l	#$1560000,(a0)+
		move.l	#$15c0000,(a0)+
		move.l	#$15e0000,(a0)+
		move.l	#$fffffffe,(a0)

CopyList2:	move.l	CopperPlace(pc),a0
		move.l	CopperPlace+4(pc),a1
lCopyLoop:	move.l	(a0),(a1)+
		cmp.l	#$fffffffe,(a0)+
		bne.s	lCopyLoop

		move.w	#$20,$dff096
lWait:		tst.w	frame
		beq.s	lwait
		clr.w	frame
		bsr.L	lRoutine
		btst	#$6,$bfe001
		bne.s	lWait
;		move.w	#$8020,$dff096
		rts

lRoutine:	lea	$dff000,a6
		move.l	CopperPlace+4(pc),copp

		move.l	CopperPlace(pc),d0
		move.l	CopperPlace+4(pc),CopperPlace
		move.l	d0,CopperPlace+4
		move.l	PlasmaPoint(pc),d0
		move.l	PlasmaPoint+4(pc),PlasmaPoint
		move.l	d0,PlasmaPoint+4

;		bra.s	SetBlitter
		move.l	PlasmaPoint(pc),a0
		lea	PlasmaSIN2(pc),a1
		lea	PlasmaSIN2+256(pc),a2
		lea	PlasmaSIN2+512(pc),a3
		lea	PlasmaSIN2+768(pc),a4
XDis:		move.w	#7,d2		;Adding
XDis2:		move.w	#5,d6		;Adding 2
		move.w	#196,d3		;Modulo
		move.w	#255,d4		;AND
		move.w	XPos(pc),d0
		move.w	XPos+2(pc),d5
		move.w	#149,d1

DoXSIN:		move.b	(a1,d0.w),d7
		add.b	(a3,d5.w),d7
		move.b	d7,1(a0)
		move.b	(a2,d0.w),d7
		add.b	(a4,d5.w),d7
		move.b	d7,7(a0)
		adda.w	d3,a0
		addi.w	d2,d0
		addi.w	d6,d5
		andi.w	d4,d0
		andi.w	d4,d5
Again:		dbf	d1,DoXSIN

SetBlitter:	move.l	#$ffffffff,$44(a6)
		move.l	#$8ffe4000,$40(a6)
		move.l	#$0,$60(a6)
		move.l	#$c2,$64(a6)
		move.w	#$8400,$96(a6)

		move.l	PlasmaPoint(pc),a0

		lea	PlasmaSin(pc),a1
		lea	Red(pc),a2
		move.w	RedPos(pc),d2
		move.w	GreenPos(pc),d1
		move.w	BluePos(pc),d0
		move.w	RedPos+2(pc),d5
		move.w	GreenPos+2(pc),d4
		move.w	BluePos+2(pc),d3
		move.w	#1022,d6
		move.l	PlasmaPoint(pc),a0
		add.l	#10,a0	;10
		moveq	#46,d7

PlasmaRout:	move.l	a2,a3
		move.l	a2,a4
		move.l	a2,a5
		adda.w	(a1,d0.w),a3
		adda.w	(a1,d1.w),a4
		adda.w	(a1,d2.w),a5
		adda.w	(a1,d3.w),a3
		adda.w	(a1,d4.w),a4
		adda.w	(a1,d5.w),a5

WaitBlit:	btst	#14,$2(a6)
		bne.s	WaitBlit
		move.l	a3,$50(a6)
		move.l	a4,$4c(a6)
		move.l	a5,$48(a6)
		move.l	a0,$54(a6)
		move.w	#[150*64]+[1],$58(a6)
		addq.w	#4,a0

BDis:		addi.w	#6,d0
GDis:		addi.w	#12,d1
RDis:		addi.w	#12,d2
BDis2:		addi.w	#18,d3
GDis2:		addi.w	#4,d4
RDis2:		addi.w	#4,d5
		andi.w	d6,d0
		andi.w	d6,d1
		andi.w	d6,d2
		andi.w	d6,d3
		andi.w	d6,d4
		andi.w	d6,d5

		dbf	d7,PlasmaRout
		clr.w	d7

RAdd:		add.w	#4,RedPos
GAdd:		add.w	#2,GreenPos
BAdd:		add.w	#4,BluePos
RAdd2:		add.w	#6,RedPos+2
GAdd2:		add.w	#4,GreenPos+2
BAdd2:		add.w	#10,BluePos+2
		and.w	#1022,RedPos
		and.w	#1022,GreenPos
		and.w	#1022,BluePos
		and.w	#1022,RedPos+2
		and.w	#1022,GreenPos+2
		and.w	#1022,BluePos+2
XAdd:		add.w	#6,XPos
XAdd2:		add.w	#6,XPos+2
		and.w	#255,XPos
		and.w	#255,XPos+2

EndRout:	moveq	#1,d0
		rts

		;Rolling  $21-$3b
		;Begin  Shift=$f Pos=$21
		;End    Shift=$7 Pos=$3b
		;Pos $3f,$3d = $3b

PlasmaPoint:	dc.l	0,0

CoList2:	dc.l	$1800000,$1a60000,$1ae0000,$1a07ff06
		dc.l	$5d07ff06,$1400037,$14800e0,$150002f,$15800e2
		dc.l	$144ffff,$146ffff,$5e07ff06,$14cffff,$14effff
		dc.l	$154ffff,$156ffff,$15cffff,$15effff,$104003f
		dc.l	$5f07ff06
Plane:		dc.l	$0e00000,$0e20000,$6007ff06
		dc.l	$1001200,$08e6190,$09000d0,$0920028
		dc.l	$09400d0,$108ffd4

XPos:		dc.w	0,0
RedPos:		dc.w	0,0
GreenPos:	dc.w	0,0
BluePos:	dc.w	0,0

Red:		blk.w	128,0
		blk.w	8,0
		blk.w	8,$100
		blk.w	8,$200
		blk.w	8,$300
		blk.w	8,$400
		blk.w	8,$500
		blk.w	8,$600
		blk.w	8,$700
		blk.w	8,$800
		blk.w	8,$900
		blk.w	8,$a00
		blk.w	8,$b00
		blk.w	8,$c00
		blk.w	8,$d00
		blk.w	8,$e00
		blk.w	8,$f00
		blk.w	8,$f00
		blk.w	8,$e00
		blk.w	8,$d00
		blk.w	8,$c00
		blk.w	8,$b00
		blk.w	8,$a00
		blk.w	8,$900
		blk.w	8,$800
		blk.w	8,$700
		blk.w	8,$600
		blk.w	8,$500
		blk.w	8,$400
		blk.w	8,$300
		blk.w	8,$200
		blk.w	8,$100
		blk.w	8,0
		blk.w	128,0

ExsPos:		dc.l	0
PlasExs:	dc.w	$40,$3c,$8,$3f8,$40,$3a,$8,$3f8
		dc.w	$40,$34,$8,$3f8,$7b,$80,$fe,$fe

		dc.w	$0,$c,$3f8,$0,$a,$3e,$0,$14
		dc.w	$2be,$20c,$8,$0,$83,$84,$0,$5

		dc.w	$4,$3f4,$3fe,$4,$8,$3fc,$3fc,$0
		dc.w	$3fa,$e,$3fc,$2,$f9,$f3,$4,$0

		dc.w	$3fc,$2,$3fe,$0,$6,$3fe,$0,$3fe
		dc.w	$3fe,$4,$4,$0,$e,$1,$fd,$0

CopperPlace:	dc.l	$70000,$78000
ffoo:		blk.w	22,$ff00
PlasmaSIN:	blk.w	512,0
PlasmaSIN2:	blk.b	1024,0

Copse:		dc.l	$1800000,$1000000,$fffffffe

****					data structures

intd:	dc.l	0,0
	dc.b	2,127
	dc.l	0,0,intc

x:	dc.w	0
y:	dc.w	0
x_:	dc.w	$d000
y_:	dc.w	$c800
xx:	dc.w	$1232
yy:	dc.w	$de62
c:	dc.w	76

copp:	dc.l	0
copl:	dc.l	$1005600,$08e4c71,$090ecd1,$1040000
	dc.l	$0920030,$09400d8,$1080014,$10a0000
	dc.l	$0960420,$09681d0,$1020000
crbit:	dc.l	$0e00006,$0e20000,$0e40006,$0e60000
	dc.l	$0e80006,$0ea0000,$0ec0006,$0ee0000
	dc.l	$0f00006,$0f20000
	dc.l	$1800000,$4a07fffe
vbar1:	dc.l	$1800000,$4b07fffe
crcol:	dc.l	$1800000,$1820000,$1840000,$1860000
	dc.l	$1880000,$18a0000,$18c0000,$18e0000
	dc.l	$1900000,$1920000,$1940000,$1960000
	dc.l	$ed07fffe
vbar2:	dc.l	$1800000,$ee07fffe,$1800000
	dc.l	$ffdfffde,$0968020,$fffffffe

frcop:	dc.l	$1005200,$08e2c71,$0902cd1,$1020000
	dc.l	$0920038,$09400d0,$1080000,$10a0000
	dc.l	$0960420,$09681d0
	dc.l	$0e00007,$0e20000,$0e40007,$0e62800
	dc.l	$0e80007,$0ea5000,$0ec0007,$0ee7800
	dc.l	$0f00007,$0f2a000
frcol:	dc.l	$1800001,$1820c1a,$1840d27,$1860e34
	dc.l	$1880f40,$18a0f60,$18c0f70,$18e0f80
	dc.l	$1900f90,$1920fa0,$1940fb1,$1960fc2
	dc.l	$1980fd3,$19a0fd4,$19c0fe5,$19e0fe6
	dc.l	$1a00ee8,$1a20de8,$1a40ce9,$1a60bea
	dc.l	$1a80adb,$1aa09cc,$1ac08bd,$1ae07ae
	dc.l	$1b0069e,$1b2058e,$1b4047e,$1b6036e
	dc.l	$1b8025e,$1ba044e,$1bc062e,$1be090e
	dc.l	$ffdfffde,$2c01fffe,$0968020,$fffffffe

vecop:	dc.l	$1004200,$08e7c71,$090d2d1,$1020000
	dc.l	$0920050,$09400b8,$1080000,$10a0000
	dc.l	$0960420,$09681d0
vebit:	dc.l	$0e00000,$0e20000,$0e40000,$0e60000
	dc.l	$0e80000,$0ea0000,$0ec0000,$0ee0000
vecol:	dc.l	$1800000,$1820000,$1840000,$1860000
	dc.l	$1880000,$18a0000,$18c0000,$18e0000
	dc.l	$1900000,$1920000,$1940000,$1960000
	dc.l	$1980000,$19a0000,$19c0000,$19e0000
	dc.l	$ffdfffde,$0968020,$fffffffe

starc:	dc.w	$000,$aab,$778,$445
stcp1:	dc.w	$001,$94e,$73d,$62b,$41a,$308,$206,$104
stcp2:	dc.w	$100,$d49,$c37,$a26,$914,$703,$502,$401
stcp3:	dc.w	$010,$4c8,$2b6,$295,$174,$153,$032,$021
stccol:	dc.l	stcp1

frame:	dc.w	0
blanko:	dc.w	0
clrp:	dc.w	0
stccrd:	dc.l	0,0
buff:	dc.l	$60000,$68000,$70000
vpoint:	dc.l	vdata1
vpls:	dc.w	0
starr:	dc.w	0,0,0

model:	dc.w	0,0,0,0,0,0
coords:	blk.w	64*3,0
planes:	blk.w	64*3*10,0
vsin:	blk.w	1024,0

speedy:	dc.w	96
vdata1:	dc.l	vhand,vitem1
vhand:	dc.w	$ae,0,$700,$f040,0,0,$400
vitem1:	dc.w	17
	dc.w	256,0,64
	dc.w	256,0,-128
	dc.w	-256,0,-128
	dc.w	-256,0,64
	dc.w	-96,0,320
	dc.w	96,0,320
	dc.w	128,48,-96
	dc.w	-128,48,-96
	dc.w	-128,48,96
	dc.w	128,48,96
	dc.w	64,96,-64
	dc.w	-64,96,-64
	dc.w	-64,96,64
	dc.w	64,96,64
	dc.w	128,24,-96
	dc.w	-128,24,-96
	dc.w	-128,24,96
	dc.w	128,24,96

	dc.w	19
	dc.w	5*6,4*6,12*6,13*6,0*16
	dc.w	13*6,12*6,11*6,10*6,1*16
	dc.w	10*6,11*6,7*6,6*6,3*16
	dc.w	9*6,13*6,10*6,6*6,2*16
	dc.w	12*6,8*6,7*6,11*6,2*16
	dc.w	5*6,13*6,9*6,9*6,1*16
	dc.w	4*6,8*6,12*6,12*6,1*16
	dc.w	5*6,9*6,0*6,0*6,0*16
	dc.w	4*6,3*6,8*6,8*6,0*16
	dc.w	3*6,2*6,7*6,8*6,1*16
	dc.w	9*6,6*6,1*6,0*6,1*16
	dc.w	4*6,16*6,3*6,3*6,2*16
	dc.w	17*6,5*6,0*6,0*6,2*16
	dc.w	16*6,15*6,2*6,3*6,3*16
	dc.w	0*6,1*6,14*6,17*6,3*16
	dc.w	4*6,5*6,17*6,16*6,1*16
	dc.w	14*6,15*6,16*6,17*6,2*16
	dc.w	7*6,15*6,14*6,6*6,1*16
	dc.w	7*6,2*6,15*6,15*6,2*16
	dc.w	1*6,6*6,14*6,14*6,2*16

;	dc.w	*6,*6,*6,*6,*16

stars:	blk.w	48*4,0
starp:	blk.b	160*44*2,0
MirrorPos:	dc.w	0,50
MirrorPic:	blk.w	1920,0
MirrorSIN:	blk.w	128,0
Font:		blk.w	5760,0
Negat:		blk.w	1024,0
stenc:	blk.b	24576,0
vectra:	blk.b	9664,0

mt_sin:
dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18

mt_periods:
dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
dc.w $007f,$0078,$0071,$0000,$0000

mt_speed:	dc.b	$6
mt_songpos:	dc.b	$0
mt_pattpos:	dc.w	$0
mt_counter:	dc.b	$0

mt_break:	dc.b	$0
mt_dmacon:	dc.w	$0
mt_samplestarts:blk.l	$1f,0
mt_voice1:	blk.w	10,0
		dc.w	$1
		blk.w	3,0
mt_voice2:	blk.w	10,0
		dc.w	$2
		blk.w	3,0
mt_voice3:	blk.w	10,0
		dc.w	$4
		blk.w	3,0
mt_voice4:	blk.w	10,0
		dc.w	$8
		blk.w	3,0

Mt_Data:	;blk.b	156072,0

