
***
*** AUTHOR:	Razmo of Kefrens/Genozide
*** RESOURCING:	[·M·n·O·] (Lasse Jari Hansen)
*** E-MAIL:	ljh@sigma.ou.dk
***

raz_mod		dc.l	0
raz_samples	dc.l	0
raz_song	dc.l	0
raz_info	dc.l	0
raz_info2	dc.l	0

raz_init	move.l	raz_mod(pc),a0

		move.l	a0,d0
		move.l	d0,raz_samples
		add.l	#$9000,d0
		move.l	d0,raz_song
		add.l	#$1000,d0
		move.l	d0,raz_info
		add.l	#80,d0
		move.l	d0,raz_info2

		clr.l	raz_8ef2
		clr.l	raz_8f32
		clr.l	raz_8f72
		clr.l	raz_8fb2
		clr.l	raz_8ef6
		clr.l	raz_8f36
		clr.l	raz_8f76
		clr.l	raz_8fb6
		clr.l	raz_8efa
		clr.l	raz_8f3a
		clr.l	raz_8f7a
		clr.l	raz_8fba
		move.l	#1,raz_8f06
		move.l	#1,raz_8f46
		move.l	#1,raz_8f86
		move.l	#1,raz_8fc6
		move.l	#5,raz_8efe
		move.l	#5,raz_8f3e
		move.l	#5,raz_8f7e
		move.l	#5,raz_8fbe
		move	#1,$dff0a4
		move	#1,$dff0b4
		move	#1,$dff0c4
		move	#1,$dff0d4
		move	#0,$dff0a8
		move	#0,$dff0b8
		move	#0,$dff0c8
		move	#0,$dff0d8
		move	#$f,$dff096
raz_8e9e	rts

raz_music	lea	raz_8ef2,a6
		move.l	raz_info(pc),a5
		lea	$dff0a0,a4
		bsr	raz_9056

		lea	raz_8f32,a6
		move.l	raz_info(pc),a5
		addq	#2,a5
		lea	$dff0b0,a4
		bsr	raz_9056

		lea	raz_8f72,a6
		move.l	raz_info(pc),a5
		addq	#4,a5
		lea	$dff0c0,a4
		bsr	raz_9056

		lea	raz_8fb2,a6
		move.l	raz_info(pc),a5
		addq	#6,a5
		lea	$dff0d0,a4
		bsr	raz_9056

		bsr	raz_90ce
		clr	raz_8ea0
		rts

raz_9056	subq.l	#1,$0008(a6)
		tst.l	$0008(a6)
		bpl	raz_9098
		move.l	$000c(a6),$0008(a6)
		move.l	(a6),d0
		tst.b	$00(a5,d0.l)
		bmi	raz_8e9e
		bsr	raz_9186
		bsr	raz_91b6
		bsr	raz_9398
		bsr	raz_93b8
		bsr	raz_9382
		bsr	raz_90a2
		bsr	raz_9336
		bsr	raz_9336
		bsr	raz_92c8
		rts

raz_9098	bsr	raz_9336
		bsr	raz_92c8
		rts

raz_90a2	move	raz_8ea0,d0
		move	$0022(a6),d1
		and	d1,d0
		tst	d0
		beq	raz_8e9e
		move.l	$0018(a6),$0000(a4)
		move	$001c(a6),$0004(a4)
		move	#$0071,$0006(a4)
		;;move	$0020(a6),$0008(a4)
		move	$0020(a6),d4	;*******************
		mulu	raz_myvol(pc),d4
		divu	#64,d4
		move	d4,$0008(a4)	;*******************
		rts

raz_90ce	move	raz_8ea0,$dff096

;		move.l	#$00000100,d7	:	raz_90de	dbf	d7,raz_90de
		bsr	raz_waitdma

		move	#$820f,$dff096

;		move.l	#$00000010,d7	:	raz_90f0	dbf	d7,raz_90f0
		bsr	raz_waitdma

		btst	#$00,raz_8ea1
		beq.b	raz_9118
		move	raz_8f10,$dff0a6
		tst	raz_8f16
		bne.b	raz_9118
		move	#$0001,$dff0a4
raz_9118	btst	#$01,raz_8ea1
		beq.b	raz_913c
		move	raz_8f50,$dff0b6
		tst	raz_8f56
		bne.b	raz_913c
		move	#$0001,$dff0b4
raz_913c	btst	#$02,raz_8ea1
		beq.b	raz_9160
		move	raz_8f90,$dff0c6
		tst	raz_8f96
		bne.b	raz_9160
		move	#$0001,$dff0c4
raz_9160	btst	#$03,raz_8ea1
		beq.b	raz_9184
		move	raz_8fd0,$dff0d6
		tst	raz_8fd6
		bne.b	raz_9184
		move	#$0001,$dff0d4
raz_9184	rts

raz_9186	tst.l	$0004(a6)
		bne	raz_8e9e
		clr.l	d1
		move.l	(a6),d0
		move.b	$00(a5,d0.l),d1
		lsl	#8,d1
		addi.l	raz_song(pc),d1
		move.l	d1,$0010(a6)
		addi.l	#$00000008,(a6)
		move.l	(a6),d0
		tst.b	$00(a5,d0.l)
		bpl	raz_8e9e
		clr.l	(a6)
		rts

raz_91b6	move.l	$0010(a6),a0
		move.l	$0004(a6),d0
		tst.b	$00(a0,d0.l)
		beq	raz_8e9e
		clr.l	d1
		move.b	$00(a0,d0.l),d1
		lsl	#1,d1
		addi.l	#raz_8ea2,d1
		move.l	d1,a1
		move.l	d1,$0030(a6)
		move	(a1),$001e(a6)
		move	(a1),d1
		sub	$0002(a1),d1
		clr.l	d1
		move.b	$01(a0,d0.l),d1
		mulu	#$0030,d1
		addi.l	raz_info2(pc),d1
		move.l	d1,a0
		move.b	$001c(a0),$0037(a6)
		move.b	$001d(a0),$0039(a6)
		move.b	$001e(a0),$003b(a6)
		clr.l	d0
		move.b	$001a(a0),d0
		mulu	d0,d1
		lsr	#6,d1
		move	d1,$003e(a6)
		clr	$003c(a6)
		tst.b	$0024(a0)
		bne.b	raz_9256
		move.l	$0010(a0),$0018(a6)
		move.l	raz_samples(pc),d6
		addi.l	d6,$0018(a6)
		;;addi.l	raz_samples(pc),$0018(a6)
		move.l	$0014(a0),d1
		lsr.l	#1,d1
		move	d1,$001c(a6)
		move	$0018(a0),$0020(a6)
		move	$0022(a6),d2
		or	d2,raz_8ea0
		move	#$0080,$0026(a6)
		move	#$0000,$0024(a6)
		rts

raz_9256	move	#$0001,$0024(a6)
		clr	$0026(a6)
		move.l	$0010(a0),$0018(a6)
		move.l	raz_samples(pc),d6
		addi.l	d6,$0018(a6)
		;;addi.l	raz_samples(pc),$0018(a6)
		move	#$0040,$001c(a6)
		move	$0018(a0),$0020(a6)
		move	$0022(a6),d2
		or	d2,raz_8ea0
		move.l	$0010(a6),a1
		move.l	$0004(a6),d0
		clr.l	d1
		move.b	$00(a1,d0.l),d1
		lsl	#1,d1
		addi.l	#raz_8ea2,d1
		move.l	d1,a1
		clr.l	d0
		clr.l	d1
		move	(a1),d0
		sub	$0002(a1),d0
		move.b	$001f(a0),d1
		move.b	$0020(a0),$0028(a6)
		move.b	$0021(a0),$0029(a6)
		mulu	d1,d0
		lsr	#6,d0
		move	d0,$002a(a6)
		move.l	#raz_9418,$002c(a6)
		rts

raz_92c8	move.l	a6,a1
		adda.l	#$00000034,a1
		clr.l	d0
		move	$003c(a6),d0
		adda.l	d0,a1
		clr.l	d0
		move	(a1),d0
		mulu	#$000c,d0
		lsr	#6,d0
		lsl	#1,d0
		move.l	$0030(a6),a1
		move	$00(a1,d0.l),d3
		clr.l	d0
		clr.l	d1
		clr.l	d2
		move.b	$0028(a6),d0
		move	$002a(a6),d1
		move.l	$002c(a6),a1
		move.b	(a1),d2
		mulu	d1,d2
		lsr	#8,d2
		add	d3,d2
		sub	$003e(a6),d2
		move	d2,$0006(a4)
		adda.l	d0,a1
		cmpa.l	#raz_9458,d1
		blt.b	raz_931e
		suba.l	#$00000080,a1
raz_931e	move.l	a1,$002c(a6)
		addq	#2,$003c(a6)
		cmpi	#$0008,$003c(a6)
		bne	raz_8e9e
		clr	$003c(a6)
		rts

raz_9336	cmpi	#$0080,$0026(a6)
		beq	raz_8e9e
		clr.l	d0
		move	$0026(a6),d0
		move.l	$0018(a6),a0
		clr.l	d1
		move.b	$00(a0,d0.l),d1
		eori.b	#$80,d1
		not.b	d1
		lsr.b	#2,d1
		;;move	d1,$0008(a4)
		move	d1,d4		;*******************
		mulu	raz_myvol(pc),d4
		divu	#64,d4
		move	d4,$0008(a4)	;*******************
		adda.l	#$00000100,a0
		clr.l	d1
		move.b	$00(a0,d0.l),d1
		eori.b	#$80,d1
		lsr	#2,d1
		lsl	#7,d1
		add.l	$0018(a6),d1
		addi.l	#$00000180,d1
		move.l	d1,(a4)
		addq	#1,$0026(a6)
		rts

raz_9382	addq.l	#4,$0004(a6)
		cmpi.l	#$00000100,$0004(a6)
		bne	raz_8e9e
		clr.l	$0004(a6)
		rts

raz_9398	move.l	$0010(a6),a0
		move.l	$0004(a6),d0
		cmpi.b	#$0f,$02(a0,d0.l)
		bne	raz_8e9e
		move.b	$03(a0,d0.l),$000b(a6)
		move.b	$03(a0,d0.l),$000f(a6)
		rts

raz_93b8	move.l	$0010(a6),a0
		move.l	$0004(a6),d0
		cmpi.b	#$0c,$02(a0,d0.l)
		bne	raz_8e9e
		move.b	$03(a0,d0.l),$0021(a6)
		;;move	$0020(a6),$0008(a4)
		move	$0020(a6),d4	;*******************
		mulu	raz_myvol(pc),d4
		divu	#64,d4
		move	d4,$0008(a4)	;*******************
		rts

raz_8ea0	dc.b	0
raz_8ea1	dc.b	0
raz_8ea2	dc	$0000,$358,$0328,$2fa,$02d0,$2a6,$0280,$25c
		dc	$023a,$21a,$01fc,$1e0,$01c5,$1ac,$0194,$17d
		dc	$0168,$153,$0140,$12e,$011d,$10d,$00fe,$0f0
		dc	$00e2,$0d6,$00ca,$0be,$00b4,$0aa,$00a0,$097
		dc	$008f,$087,$007f,$078,$0071,$071,$0071,$071,0

raz_8ef2	dc.l	0
raz_8ef6	dc.l	0
raz_8efa	dc.l	0
raz_8efe	dc.l	0,0
raz_8f06	dc.l	0,0
		dc	0
raz_8f10	dc	0,0,1
raz_8f16	dc	0,$80,0,0
		dc.l	0,0,0,0,0

raz_8f32	dc.l	0
raz_8f36	dc.l	0
raz_8f3a	dc.l	0
raz_8f3e	dc.l	0,0
raz_8f46	dc.l	0,0
		dc	0
raz_8f50	dc	0,0,2
raz_8f56	dc	0,$80,0,0
		dc.l	0,0,0,0,0

raz_8f72	dc.l	0
raz_8f76	dc.l	0
raz_8f7a	dc.l	0
raz_8f7e	dc.l	0,0
raz_8f86	dc.l	0,0
		dc	0
raz_8f90	dc	0,0,4
raz_8f96	dc	0,$80,0,0
		dc.l	0,0,0,0,0

raz_8fb2	dc.l	0
raz_8fb6	dc.l	0
raz_8fba	dc.l	0
raz_8fbe	dc.l	0,0
raz_8fc6	dc.l	0,0
		dc	0
raz_8fd0	dc	0,0,8
raz_8fd6	dc	0,$80,0,0
		dc.l	0,0,0,0,0

raz_93d8	dcb.l	4*4,0
		;dc.l	$fffffefe,$fdfbfaf8,$f5f3f0ed,$eae6e2de
		;dc.l	$dad5d0cb,$c6c1bcb6,$b0aaa59e,$98928c86
		;dc.l	$7f79736d,$67615a55,$4f49433e,$39342f2a
		;dc.l	$25211d19,$15120f0c,$0a070504,$02010100
raz_9418	dcb.l	4*4,0
		;dc.l	$00000101,$02040507,$0a0c0f12,$15191d21
		;dc.l	$252a2f34,$393e4349,$4f555a61,$676d7379
		;dc.l	$7f868c92,$989ea5aa,$b0b6bcc1,$c6cbd0d5
		;dc.l	$dadee2e6,$eaedf0f3,$f5f8fafb,$fdfefeff
raz_9458	blk.l	16,0

raz_myvol	dc	0

