;POUR CHARGER LES DATAS TAPEZ:
;
;
;RI		RETURN
;FONT_RAW	RETURN
;FONT		RETURN RETURN
;
;RI		RETURN
;MODULE		RETURN
;MT_DATA	RETURN RETURN
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "FONT_RAW",FONT
>EXTERN "MODULE",MT_DATA

org $30000	;EMPLACEMENT EN MEMOIRE
load $30000	;DE NOTRE PROGRAMME

BEGIN:
JMP START
;=====================================================================
EXECBASE=4
OPENLIBRARY=-408
CLOSELIBRARY=-414
SUPERSTATE=-150
USERSTATE=-156	
FORBID=-132
PERMIT=-138
ADDINTSERVER=-168
REMINTSERVER=-174
Open=-30
Close=-36
Read=-42

;=====================================================================
BLTCON0=$DFF040		
BLTCON1=$DFF042
BLTAFWM=$DFF044
BLTALWM=$DFF046
BLTCPTH=$DFF048
BLTCPTL=$DFF04A
BLTBPTH=$DFF04C
BLTBPTL=$DFF04E
BLTAPTH=$DFF050
BLTAPTL=$DFF052
BLTDPTH=$DFF054
BLTDPTL=$DFF056
BLTSIZE=$DFF058
BLTCMOD=$DFF060
BLTBMOD=$DFF062
BLTAMOD=$DFF064
BLTDMOD=$DFF066
BLTCDAT=$DFF070
BLTBDAT=$DFF072
BLTADAT=$DFF074
DMACONR=$DFF002
;==================================
FONT=$40000			;IMAGE DES CARACTERS
	
SCREEN=FONT+32004		;ECRAN
	
MT_DATA=SCREEN+[40*128*2]	;MODULE

FINDATA=MT_DATA+110240		;FIN DES DATAS

;==================================
START:    
MOVEM.L D0-D7/A0-A6,-(A7)	;SAUVE REGISTRES
MOVE.L EXECBASE,A6		;CHARGE ADRESSE EXECBASE DANS A6
JSR FORBID(A6)    		;SAUTE SOUS PROGRAMME: INTERDIT MULTITACHE
JSR OPENLIB  			;SAUTE SOUS PROGRAMME: OUVERTURE LIBRAIRIES

BSR SETUP			;MISE EN PLACE ECRANS ET TEXTE

BSR.L INIT_MUSIQUE		;INITIALISATION DE LA MUSIQUE

BSR.L SETCOPPER			;SAUTE SOUS PROGRAMME: MET EN PLACE LISTE COPPER
BSR.s NEWIRQ3			;SAUTE SOUS PROGRAMME: MET EN PLACE ROUTINE D'INTERRRUPTION

WAIT:
CMP.B #$E0,$DFF006		;ATTENDANT 200 IEME LIGNE RASTER
BNE.S WAIT			;SINON RETOURNE A WAIT

BSR.L	DOUBLEB			;SWAPPING ECRANS = BOUBLE BUFFERING
BSR.L	DOTEXT			;MISE EN PLACE TEXTE
BSR.L	GROW			;ROUTINE ZOOM

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
FIN: 				;FIN:	
BSR.L STOP_MUSIQUE		;ARRET DE LA MUSIQUE
BSR.s STOPIRQ3        		;SAUTE SOUS PROGRAMME: STOPPE INTERRUPTION
BSR.L CLRCOPPER       		;SAUTE SOUS PROGRAMME: RESTAURE ANCIENNE LISTE COPPER
BSR.L CLOSELIB        		;SAUTE SOUS PROGRAMME: FERME LIBRAIRIES 
MOVE.L EXECBASE,A6		;CHARGE ADRESSE EXECBASE DANS A6
JSR PERMIT(A6)      		;AUTORISE MULTITACHE
                      
MOVEM.L (A7)+,D0-D7/A0-A6	;RESTAURE REGISTRES
RTS
;========================
NEWIRQ3:			;MET EN PLACE NOTRE ROUTINE 
MOVE.L	EXECBASE,A6		;D'INTERRUPTION
lea	irqstr,a1
move.l	#5,d0
jsr	addintserver(a6)
move.l	d0,irq
beq.s	irqerror
rts
irqerror:
rts
;==========================
STOPIRQ3:			;RESTAURE ANCIENNE ROUTINE
movem.l	a0-a6/d0-d7,-(sp)	;D'INTERRUPTION
	tst.l	irq
	beq.s	irqoff1
	move.l	execbase,a6
	lea	irqstr,a1
	move.l	#32,d0
	jsr	remintserver(a6)
irqoff1:movem.l	(sp)+,a0-a6/d0-d7
	rts
irqstr:
	dc.l	0,0
	dc.b	2,-127
	dc.l	0,irqdat,interrupt
irqdat:	dc.l	0,0,0,0
irq:	dc.l	0
;============================
interrupt:			;NOTRE ROUTINE D'INTERRUPTION	
movem.l	a0-a6/d0-d7,-(sp)

BSR.L PLAY_MUSIQUE		;VA A LA ROUTINE POUR JOUER LA MUSIQUE
	
movem.l	(sp)+,a0-a6/d0-d7
rts
;============================
OPENLIB:  			;OUVERTURE DE LA LIBRAIRIE GRAPHIQUE
move.l execbase,a6      	;MET ADRESSE EXECBASE DANS A6
lea gfxname,a1			;MET NOM DE LA LIBRAIRIE DANS A1
move.l #$0,d0           	;MET 0 DANS D0
jsr openlibrary(a6)		;OUVRE LIBRAIRIE
tst d0				;TESTE D0
beq.s error			;SI = A 0   VA A ERROR = SORTIE
move.l d0,gfxbase       	;SI NON, MET ADRESSE D0 DANS GFXBASE
add.l #$32,d0			;AJOUTE $32 A CETTE ADRESSE
move.l d0,coppertr      	;MET D0=ADRESSE ACTUELLE LISTE COPPER
rts				;DANS COPPERTR
even
gfxname: dc.b 'graphics.library',0 	;NOM DE LA LIBRAIRIE
even
gfxbase: dc.l 0				;POINTEUR POUR LA GRAPHICS LIBRARY
coppertr: dc.l 0			;POINTEUR POUR ADRESSE LISTE COPPER
;====================
CLOSELIB: 			;FERMETURE LIBRAIRIE
move.l execbase,a6      	;MET ADRESSE EXECBASE DANS A6
move.l gfxbase,a1		;MET NOM DE LA LIBRAIRIE DANS A1
jsr closelibrary(a6)		;FERME LIBRAIRIE
rts
;====================
ERROR:				;SI ERREUR
illegal				;SORTIE
rts
;====================
SETCOPPER:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper		;MET CONTENU DANS OLDCOPPER
move.l #newcopper,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		
oldcopper: dc.l 0
;====================
CLRCOPPER:			;RESTAURE ANCIENNE LISTE COPPER
move.l coppertr,a0		;MET ANCIENNE ADRESSE DANS A0
move.l oldcopper,(a0)		;MET CONTENU DANS A0
move.w #$80a0,$dff096		;REACTIVE ANCIENNE COPPER
rts
;====================
************************************************************************
*             Set Up - Clear BitPlanes Used For Display                *
************************************************************************

SetUp:	MOVE.L	#Screen,A0
	MOVE.W	#[40*128],D0
	MOVE.W	#0,D1
ClrScr:	MOVE.W	D1,(A0)+
	DBRA	D0,ClrScr
	MOVE.L	#Screen,A0

	LEA	ScreenPtrs,A1
	MOVE.L	A0,D0
	MOVE.L	D0,D1
	ADD.W	#40,D1
SetBpls:MOVE.W	D0,6(A1)
	MOVE.W	D1,14(A1)
	SWAP	D0
	SWAP	D1
	MOVE.W	D0,2(A1)
	MOVE.W	D1,10(A1)

	MOVE.L	#Text,MessagePos
	LEA	ConvertText,A0
Again2:	MOVE.L	MessagePos,A1
	MOVE.L	#Checker,A2
	CLR.L	D0
	MOVE.B	(A1),D0
	MOVE.W	#0,D1
Char:	CMP.B	(A2)+,D0
	BEQ	Match2
	ADDQ.B	#1,D1
	CMP.B	#50,D1			
	BNE.S	Char
	CMP.B	#$FF,D0
	BEQ.S	WrapTxt
Reset2:	BRA	End2
WrapTxt:MOVE.W	#$0000FFFF,A4
	BRA	End2		
Match2:	CMP.B	#48,D1
	BEQ.S	Space
	MOVE.L	D1,D0
	MULU	#640,D1
	MOVE.L	#Font,A4
	ADD.W	D1,A4
	BRA.S	SkSpace
Space:	MOVE.L	#$00000000,A4
SkSpace:MOVE.L	A4,(A0)+
Next2:	ADD.L	#1,MessagePos
	BRA.S	Again2
End2:	MOVE.L	A4,(A0)+	
	LEA	Positions,A0
	MOVE.W	#127,D0
	MOVE.W	#0,D1
PosLoop:MOVE.W	D1,(A0)+
	DBRA	D0,PosLoop
	rts
;====================
*************************************************************************
*			Grow/Shrink Text Display			*
*************************************************************************

Grow:	MOVE.W	TextPointer,D0
	CMP.W	#15,D0
	BLE.S	Bigger
	CMP.W	#180,D0
	BGE.S	Smaller
	ADD.W	#1,D0
	MOVE.W	D0,TextPointer
	RTS
	
Bigger:	LEA	Positions,A0
	MOVE.W	#127,D1
BigLoop:MOVE.W	D0,(A0)+
	DBRA	D1,BigLoop
	ADD.W	#1,TextPointer
	RTS
	
Smaller:CMP.W	#196,D0
	BGE.S	Set
	LEA	Positions,A0
	MOVE.W	D0,D1
	MOVE.W	#195,D2
	SUB.W	D1,D2
	MOVE.W	#127,D3
SmallLp:MOVE.W	D2,(A0)+
	DBRA	D3,SmallLp
	ADD.W	#1,TextPointer
	RTS

Set:	MOVE.W	#0,TextPointer
	ADD.W	#512,TextPos
	CMP.W	#2560,TextPos
	BNE.S	SkSet
	MOVE.W	#0,TextPos
SkSet:	RTS
	
*************************************************************************
*		         Do Font Perspective Effects			*
*************************************************************************
	
DoText:	LEA	Table1,A2
	LEA	Positions,A3
	LEA	ConvertText,A5
	MOVE.W	TextPos,D0
	ADD.W	D0,A5
	MOVE.W	#0,D7			;How Many Y Positions
YLoop:	MOVE.W	#0,D6			;How Many X Positions
XLoop:	MOVE.L	Current(pc),A4
	MOVE.L	(A5)+,A0
	CMP.L	#0,A0
	BEQ	End
	MOVE.W	(A3)+,D0
	CMP.W	#0,D0
	BEQ	End
	SUB.W	#1,D0
	MOVE.W	D0,D1
	ASL	#1,D0
	ADD.W	D0,A0			;A0 Points to Source (Char)
	ASL	#8,D1
	ASL	#1,D1			;Which Table To Use
	MOVE.W	D6,D3
	ASL	#2,D3
	MOVE.W	D7,D4
	ASL	#6,D4
	ADD.W	D4,D1
	ADD.W	D3,D1
	MOVE.L	A2,A6
	ADD.W	D1,A6
	MOVE.W	(A6)+,D0		;X Position
	MOVE.W	(A6)+,D1		;Y Position
	MULU	#40,D1
	MOVE.W	D0,D2
	ASR	#3,D2
	ADD.W	D2,D1
	MOVE.W	D0,D2
	ASR	#4,D2
	ASL	#4,D2
	SUB.W	D2,D0
	MULU	#4096,D0
	ADD.W	#$0DFC,D0
	ADD.W	D1,A4
WaitR:	BTST	#14,DMACONR
	BNE.S	WaitR
DoChar:	MOVE.W	#$FFFF,BLTAFWM
	MOVE.W	#$0000,BLTALWM
BltWait:BTST	#14,DMACONR
	BNE.S	BltWait
	MOVE.W	D0,BLTCON0
	MOVE.W	#$0000,BLTCON1
	MOVE.L	A0,BLTAPTH
	MOVE.L	A4,BLTBPTH
	MOVE.L	A4,BLTDPTH
	MOVE.W	#$24,BLTAMOD
	MOVE.W	#$24,BLTBMOD
	MOVE.W	#$24,BLTDMOD
	MOVE.W	#[16*64]+2,BLTSIZE
End:	ADD.L	#1,MessagePos
	ADD.W	#2,A4
	ADD.W	#1,D6
	CMP.W	#16,D6
	BNE	XLoop
	ADD.W	#648,A4
	ADD.W	#1,D7
	CMP.W	#8,D7
	BNE	YLoop
MessSkp:RTS

*************************************************************************
*			  Double Buffer Display				*
*************************************************************************

DoubleB:MOVE.L	Current(pc),D0
	LEA	ScreenPtrs,A0
	MOVE.L	D0,D1
	ADD.W	#40,D1
	MOVE.W	D0,6(A0)
	MOVE.W	D1,14(A0)
	SWAP	D0
	SWAP	D1
	MOVE.W	D0,2(A0)
	MOVE.W	D1,10(A0)
	MOVE.W	DBuffer,D1
	EOR.W	#1,D1
	CMP.W	#1,D1
	BNE.S	Screen1
Screen2:MOVE.L	#SCREEN,D0
	BRA.S	SkipScr
Screen1:MOVE.L	#SCREEN+[40*128],D0
SkipScr:MOVE.L	D0,Current
	MOVE.W	D1,DBuffer
	MOVE.L	Current(pc),A0
Wait2:	BTST	#14,DMACONR
	BNE.S	Wait2
	MOVE.L	#$1f00000,BLTCON0
	MOVE.L	A0,BLTDPTH
	CLR	BLTADAT
	CLR	BLTDMOD
	MOVE.W	#[128*64]+20,BLTSIZE
	RTS

Current:		DC.L	SCREEN
DBuffer:		DC.W	1


Checker: DC.B	"ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/()*'!?-:+0123456789 "

;			 ----------------
Text:
		DC.B	"****************"
		DC.B	"*  PHOENIX-DP  *"
		DC.B	"****************"
		DC.B	"                "
		DC.B	"    PRESENTE    "
		DC.B	"                "
		DC.B	"  ZOOM ROUTINE  "
		DC.B	"                "

		DC.B	"****************"
		DC.B	"*              *"
		DC.B	"*  PHOENIX DP  *"  
		DC.B	"*90  RUE DRAGON*" 
		DC.B	"*     13006    *"
		DC.B	"*   MARSEILLE  *"
		DC.B	"*  91 53 19 72 *"
		DC.B	"****************"

		DC.B	"****************"
		DC.B	"*  PHOENIX-DP  *"
		DC.B	"****************"
		DC.B	"                "
		DC.B	"    PRESENTE    "
		DC.B	"                "
		DC.B	"  ZOOM ROUTINE  "
		DC.B	"                "

		DC.B	"****************"
		DC.B	"*              *"
		DC.B	"*  PHOENIX DP  *"  
		DC.B	"*90  RUE DRAGON*" 
		DC.B	"*     13006    *"
		DC.B	"*   MARSEILLE  *"
		DC.B	"*  91 53 19 72 *"
		DC.B	"****************"

		DC.B	"****************"
		DC.B	"*  PHOENIX-DP  *"
		DC.B	"****************"
		DC.B	"                "
		DC.B	"    PRESENTE    "
		DC.B	"                "
		DC.B	"  ZOOM ROUTINE  "
		DC.B	"                "

		DC.B	"****************"
		DC.B	"*              *"
		DC.B	"*  PHOENIX DP  *"  
		DC.B	"*90  RUE DRAGON*" 
		DC.B	"*     13006    *"
		DC.B	"*   MARSEILLE  *"
		DC.B	"*  91 53 19 72 *"
		DC.B	"****************"

		DC.B	$FF		;MARQUE FIN TEXTE

ConvertText:	Blk.L	2500
MessagePos:	DC.L	0
TextPos:	DC.W	0
TextPointer:	DC.W	0

Positions:	DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
		DC.W	$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
	

*************************************************************************
*		 	      Data Tables				*
*************************************************************************

Table1:	DC.W	144,056,146,056,148,056,150,056,152,056,154,056,156,056,158,056
	DC.W	160,056,162,056,164,056,166,056,168,056,170,056,172,056,174,056
	DC.W	144,058,146,058,148,058,150,058,152,058,154,058,156,058,158,058
	DC.W	160,058,162,058,164,058,166,058,168,058,170,058,172,058,174,058
	DC.W	144,060,146,060,148,060,150,060,152,060,154,060,156,060,158,060
	DC.W	160,060,162,060,164,060,166,060,168,060,170,060,172,060,174,060
	DC.W	144,062,146,062,148,062,150,062,152,062,154,062,156,062,158,062
	DC.W	160,062,162,062,164,062,166,062,168,062,170,062,172,062,174,062
	DC.W	144,064,146,064,148,064,150,064,152,064,154,064,156,064,158,064
	DC.W	160,064,162,064,164,064,166,064,168,064,170,064,172,064,174,064
	DC.W	144,066,146,066,148,066,150,066,152,066,154,066,156,066,158,066
	DC.W	160,066,162,066,164,066,166,066,168,066,170,066,172,066,174,066
	DC.W	144,068,146,068,148,068,150,068,152,068,154,068,156,068,158,068
	DC.W	160,068,162,068,164,068,166,068,168,068,170,068,172,068,174,068
	DC.W	144,070,146,070,148,070,150,070,152,070,154,070,156,070,158,070
	DC.W	160,070,162,070,164,070,166,070,168,070,170,070,172,070,174,070

Table2:	DC.W	136,052,139,052,142,052,145,052,148,052,151,052,154,052,157,052
	DC.W	160,052,163,052,166,052,169,052,172,052,175,052,178,052,181,052
	DC.W	136,055,139,055,142,055,145,055,148,055,151,055,154,055,157,055
	DC.W	160,055,163,055,166,055,169,055,172,055,175,055,178,055,181,055
	DC.W	136,058,139,058,142,058,145,058,148,058,151,058,154,058,157,058
	DC.W	160,058,163,058,166,058,169,058,172,058,175,058,178,058,181,058
	DC.W	136,061,139,061,142,061,145,061,148,061,151,061,154,061,157,061
	DC.W	160,061,163,061,166,061,169,061,172,061,175,061,178,061,181,061
	DC.W	136,064,139,064,142,064,145,064,148,064,151,064,154,064,157,064
	DC.W	160,064,163,064,166,064,169,064,172,064,175,064,178,064,181,064
	DC.W	136,067,139,067,142,067,145,067,148,067,151,067,154,067,157,067
	DC.W	160,067,163,067,166,067,169,067,172,067,175,067,178,067,181,067
	DC.W	136,070,139,070,142,070,145,070,148,070,151,070,154,070,157,070
	DC.W	160,070,163,070,166,070,169,070,172,070,175,070,178,070,181,070
	DC.W	136,073,139,073,142,073,145,073,148,073,151,073,154,073,157,073
	DC.W	160,073,163,073,166,073,169,073,172,073,175,073,178,073,181,073

Table3:	DC.W	128,048,132,048,136,048,140,048,144,048,148,048,152,048,156,048
	DC.W	160,048,164,048,168,048,172,048,176,048,180,048,184,048,188,048
	DC.W	128,052,132,052,136,052,140,052,144,052,148,052,152,052,156,052
	DC.W	160,052,164,052,168,052,172,052,176,052,180,052,184,052,188,052
	DC.W	128,056,132,056,136,056,140,056,144,056,148,056,152,056,156,056
	DC.W	160,056,164,056,168,056,172,056,176,056,180,056,184,056,188,056
	DC.W	128,060,132,060,136,060,140,060,144,060,148,060,152,060,156,060
	DC.W	160,060,164,060,168,060,172,060,176,060,180,060,184,060,188,060
	DC.W	128,064,132,064,136,064,140,064,144,064,148,064,152,064,156,064
	DC.W	160,064,164,064,168,064,172,064,176,064,180,064,184,064,188,064
	DC.W	128,068,132,068,136,068,140,068,144,068,148,068,152,068,156,068
	DC.W	160,068,164,068,168,068,172,068,176,068,180,068,184,068,188,068
	DC.W	128,072,132,072,136,072,140,072,144,072,148,072,152,072,156,072
	DC.W	160,072,164,072,168,072,172,072,176,072,180,072,184,072,188,072
	DC.W	128,076,132,076,136,076,140,076,144,076,148,076,152,076,156,076
	DC.W	160,076,164,076,168,076,172,076,176,076,180,076,184,076,188,076
	

Table4:	DC.W	120,044,125,044,130,044,135,044,140,044,145,044,150,044,155,044
	DC.W	160,044,165,044,170,044,175,044,180,044,185,044,190,044,195,044
	DC.W	120,049,125,049,130,049,135,049,140,049,145,049,150,049,155,049
	DC.W	160,049,165,049,170,049,175,049,180,049,185,049,190,049,195,049
	DC.W	120,054,125,054,130,054,135,054,140,054,145,054,150,054,155,054
	DC.W	160,054,165,054,170,054,175,054,180,054,185,054,190,054,195,054
	DC.W	120,059,125,059,130,059,135,059,140,059,145,059,150,059,155,059
	DC.W	160,059,165,059,170,059,175,059,180,059,185,059,190,059,195,059
	DC.W	120,064,125,064,130,064,135,064,140,064,145,064,150,064,155,064
	DC.W	160,064,165,064,170,064,175,064,180,064,185,064,190,064,195,064
	DC.W	120,069,125,069,130,069,135,069,140,069,145,069,150,069,155,069
	DC.W	160,069,165,069,170,069,175,069,180,069,185,069,190,069,195,069
	DC.W	120,074,125,074,130,074,135,074,140,074,145,074,150,074,155,074
	DC.W	160,074,165,074,170,074,175,074,180,074,185,074,190,074,195,074
	DC.W	120,079,125,079,130,079,135,079,140,079,145,079,150,079,155,079
	DC.W	160,079,165,079,170,079,175,079,180,079,185,079,190,079,195,079

Table5:	DC.W	112,040,118,040,124,040,130,040,136,040,142,040,148,040,154,040
	DC.W	160,040,166,040,172,040,178,040,184,040,190,040,196,040,202,040
	DC.W	112,046,118,046,124,046,130,046,136,046,142,046,148,046,154,046
	DC.W	160,046,166,046,172,046,178,046,184,046,190,046,196,046,202,046
	DC.W	112,052,118,052,124,052,130,052,136,052,142,052,148,052,154,052
	DC.W	160,052,166,052,172,052,178,052,184,052,190,052,196,052,202,052
	DC.W	112,058,118,058,124,058,130,058,136,058,142,058,148,058,154,058
	DC.W	160,058,166,058,172,058,178,058,184,058,190,058,196,058,202,058
	DC.W	112,064,118,064,124,064,130,064,136,064,142,064,148,064,154,064
	DC.W	160,064,166,064,172,064,178,064,184,064,190,064,196,064,202,064
	DC.W	112,070,118,070,124,070,130,070,136,070,142,070,148,070,154,070
	DC.W	160,070,166,070,172,070,178,070,184,070,190,070,196,070,202,070
	DC.W	112,076,118,076,124,076,130,076,136,076,142,076,148,076,154,076
	DC.W	160,076,166,076,172,076,178,076,184,076,190,076,196,076,202,076
	DC.W	112,082,118,082,124,082,130,082,136,082,142,082,148,082,154,082
	DC.W	160,082,166,082,172,082,178,082,184,082,190,082,196,082,202,082
	
Table6:	DC.W	104,036,111,036,118,036,125,036,132,036,139,036,146,036,153,036
	DC.W	160,036,167,036,174,036,181,036,188,036,195,036,202,036,209,036
	DC.W	104,043,111,043,118,043,125,043,132,043,139,043,146,043,153,043
	DC.W	160,043,167,043,174,043,181,043,188,043,195,043,202,043,209,043
	DC.W	104,050,111,050,118,050,125,050,132,050,139,050,146,050,153,050
	DC.W	160,050,167,050,174,050,181,050,188,050,195,050,202,050,209,050
	DC.W	104,057,111,057,118,057,125,057,132,057,139,057,146,057,153,057
	DC.W	160,057,167,057,174,057,181,057,188,057,195,057,202,057,209,057
	DC.W	104,064,111,064,118,064,125,064,132,064,139,064,146,064,153,064
	DC.W	160,064,167,064,174,064,181,064,188,064,195,064,202,064,209,064
	DC.W	104,071,111,071,118,071,125,071,132,071,139,071,146,071,153,071
	DC.W	160,071,167,071,174,071,181,071,188,071,195,071,202,071,209,071
	DC.W	104,078,111,078,118,078,125,078,132,078,139,078,146,078,153,078
	DC.W	160,078,167,078,174,078,181,078,188,078,195,078,202,078,209,078
	DC.W	104,085,111,085,118,085,125,085,132,085,139,085,146,085,153,085
	DC.W	160,085,167,085,174,085,181,085,188,085,195,085,202,085,209,085

Table7:	DC.W	096,032,104,032,112,032,120,032,128,032,136,032,144,032,152,032
	DC.W	160,032,168,032,176,032,184,032,192,032,200,032,208,032,216,032
	DC.W	096,040,104,040,112,040,120,040,128,040,136,040,144,040,152,040
	DC.W	160,040,168,040,176,040,184,040,192,040,200,040,208,040,216,040
	DC.W	096,048,104,048,112,048,120,048,128,048,136,048,144,048,152,048
	DC.W	160,048,168,048,176,048,184,048,192,048,200,048,208,048,216,048
	DC.W	096,056,104,056,112,056,120,056,128,056,136,056,144,056,152,056
	DC.W	160,056,168,056,176,056,184,056,192,056,200,056,208,056,216,056
	DC.W	096,064,104,064,112,064,120,064,128,064,136,064,144,064,152,064
	DC.W	160,064,168,064,176,064,184,064,192,064,200,064,208,064,216,064
	DC.W	096,072,104,072,112,072,120,072,128,072,136,072,144,072,152,072
	DC.W	160,072,168,072,176,072,184,072,192,072,200,072,208,072,216,072
	DC.W	096,080,104,080,112,080,120,080,128,080,136,080,144,080,152,080
	DC.W	160,080,168,080,176,080,184,080,192,080,200,080,208,080,216,080
	DC.W	096,088,104,088,112,088,120,088,128,088,136,088,144,088,152,088
	DC.W	160,088,168,088,176,088,184,088,192,088,200,088,208,088,216,088
	
Table8:	DC.W	088,028,097,028,106,028,115,028,124,028,133,028,142,028,151,028
	DC.W	160,028,169,028,178,028,187,028,196,028,205,028,214,028,223,028
	DC.W	088,037,097,037,106,037,115,037,124,037,133,037,142,037,151,037
	DC.W	160,037,169,037,178,037,187,037,196,037,205,037,214,037,223,037
	DC.W	088,046,097,046,106,046,115,046,124,046,133,046,142,046,151,046
	DC.W	160,046,169,046,178,046,187,046,196,046,205,046,214,046,223,046
	DC.W	088,055,097,055,106,055,115,055,124,055,133,055,142,055,151,055
	DC.W	160,055,169,055,178,055,187,055,196,055,205,055,214,055,223,055
	DC.W	088,064,097,064,106,064,115,064,124,064,133,064,142,064,151,064
	DC.W	160,064,169,064,178,064,187,064,196,064,205,064,214,064,223,064
	DC.W	088,073,097,073,106,073,115,073,124,073,133,073,142,073,151,073
	DC.W	160,073,169,073,178,073,187,073,196,073,205,073,214,073,223,073
	DC.W	088,082,097,082,106,082,115,082,124,082,133,082,142,082,151,082
	DC.W	160,082,169,082,178,082,187,082,196,082,205,082,214,082,223,082
	DC.W	088,091,097,091,106,091,115,091,124,091,133,091,142,091,151,091
	DC.W	160,091,169,091,178,091,187,091,196,091,205,091,214,091,223,091
	
Table9:	DC.W	080,024,090,024,100,024,110,024,120,024,130,024,140,024,150,024
	DC.W	160,024,170,024,180,024,190,024,200,024,210,024,220,024,230,024
	DC.W	080,034,090,034,100,034,110,034,120,034,130,034,140,034,150,034
	DC.W	160,034,170,034,180,034,190,034,200,034,210,034,220,034,230,034
	DC.W	080,044,090,044,100,044,110,044,120,044,130,044,140,044,150,044
	DC.W	160,044,170,044,180,044,190,044,200,044,210,044,220,044,230,044
	DC.W	080,054,090,054,100,054,110,054,120,054,130,054,140,054,150,054
	DC.W	160,054,170,054,180,054,190,054,200,054,210,054,220,054,230,054
	DC.W	080,064,090,064,100,064,110,064,120,064,130,064,140,064,150,064
	DC.W	160,064,170,064,180,064,190,064,200,064,210,064,220,064,230,064
	DC.W	080,074,090,074,100,074,110,074,120,074,130,074,140,074,150,074
	DC.W	160,074,170,074,180,074,190,074,200,074,210,074,220,074,230,074
	DC.W	080,084,090,084,100,084,110,084,120,084,130,084,140,084,150,084
	DC.W	160,084,170,084,180,084,190,084,200,084,210,084,220,084,230,084
	DC.W	080,094,090,094,100,094,110,094,120,094,130,094,140,094,150,094
	DC.W	160,094,170,094,180,094,190,094,200,094,210,094,220,094,230,094
	
Table10:DC.W	072,020,083,020,094,020,105,020,116,020,127,020,138,020,149,020
	DC.W	160,020,171,020,182,020,193,020,204,020,215,020,226,020,237,020
	DC.W	072,031,083,031,094,031,105,031,116,031,127,031,138,031,149,031
	DC.W	160,031,171,031,182,031,193,031,204,031,215,031,226,031,237,031
	DC.W	072,042,083,042,094,042,105,042,116,042,127,042,138,042,149,042
	DC.W	160,042,171,042,182,042,193,042,204,042,215,042,226,042,237,042
	DC.W	072,053,083,053,094,053,105,053,116,053,127,053,138,053,149,053
	DC.W	160,053,171,053,182,053,193,053,204,053,215,053,226,053,237,053
	DC.W	072,064,083,064,094,064,105,064,116,064,127,064,138,064,149,064
	DC.W	160,064,171,064,182,064,193,064,204,064,215,064,226,064,237,064
	DC.W	072,075,083,075,094,075,105,075,116,075,127,075,138,075,149,075
	DC.W	160,075,171,075,182,075,193,075,204,075,215,075,226,075,237,075
	DC.W	072,086,083,086,094,086,105,086,116,086,127,086,138,086,149,086
	DC.W	160,086,171,086,182,086,193,086,204,086,215,086,226,086,237,086
	DC.W	072,097,083,097,094,097,105,097,116,097,127,097,138,097,149,097
	DC.W	160,097,171,097,182,097,193,097,204,097,215,097,226,097,237,097
	
Table11:DC.W	064,016,076,016,088,016,100,016,112,016,124,016,136,016,148,016
	DC.W	160,016,172,016,184,016,196,016,208,016,220,016,232,016,244,016
	DC.W	064,028,076,028,088,028,100,028,112,028,124,028,136,028,148,028
	DC.W	160,028,172,028,184,028,196,028,208,028,220,028,232,028,244,028
	DC.W	064,040,076,040,088,040,100,040,112,040,124,040,136,040,148,040
	DC.W	160,040,172,040,184,040,196,040,208,040,220,040,232,040,244,040
	DC.W	064,052,076,052,088,052,100,052,112,052,124,052,136,052,148,052
	DC.W	160,052,172,052,184,052,196,052,208,052,220,052,232,052,244,052
	DC.W	064,064,076,064,088,064,100,064,112,064,124,064,136,064,148,064
	DC.W	160,064,172,064,184,064,196,064,208,064,220,064,232,064,244,064
	DC.W	064,076,076,076,088,076,100,076,112,076,124,076,136,076,148,076
	DC.W	160,076,172,076,184,076,196,076,208,076,220,076,232,076,244,076
	DC.W	064,088,076,088,088,088,100,088,112,088,124,088,136,088,148,088
	DC.W	160,088,172,088,184,088,196,088,208,088,220,088,232,088,244,088
	DC.W	064,100,076,100,088,100,100,100,112,100,124,100,136,100,148,100
	DC.W	160,100,172,100,184,100,196,100,208,100,220,100,232,100,244,100
	
Table12:DC.W	056,012,069,012,082,012,095,012,108,012,121,012,134,012,147,012
	DC.W	160,012,173,012,186,012,199,012,212,012,225,012,238,012,251,012
	DC.W	056,025,069,025,082,025,095,025,108,025,121,025,134,025,147,025
	DC.W	160,025,173,025,186,025,199,025,212,025,225,025,238,025,251,025
	DC.W	056,038,069,038,082,038,095,038,108,038,121,038,134,038,147,038
	DC.W	160,038,173,038,186,038,199,038,212,038,225,038,238,038,251,038
	DC.W	056,051,069,051,082,051,095,051,108,051,121,051,134,051,147,051
	DC.W	160,051,173,051,186,051,199,051,212,051,225,051,238,051,251,051
	DC.W	056,064,069,064,082,064,095,064,108,064,121,064,134,064,147,064
	DC.W	160,064,173,064,186,064,199,064,212,064,225,064,238,064,251,064
	DC.W	056,077,069,077,082,077,095,077,108,077,121,077,134,077,147,077
	DC.W	160,077,173,077,186,077,199,077,212,077,225,077,238,077,251,077
	DC.W	056,090,069,090,082,090,095,090,108,090,121,090,134,090,147,090
	DC.W	160,090,173,090,186,090,199,090,212,090,225,090,238,090,251,090
	DC.W	056,103,069,103,082,103,095,103,108,103,121,103,134,103,147,103
	DC.W	160,103,173,103,186,103,199,103,212,103,225,103,238,103,251,103
	
Table13:DC.W	048,008,062,008,076,008,090,008,104,008,118,008,132,008,146,008
	DC.W	160,008,174,008,188,008,202,008,216,008,230,008,244,008,258,008	
	DC.W	048,022,062,022,076,022,090,022,104,022,118,022,132,022,146,022
	DC.W	160,022,174,022,188,022,202,022,216,022,230,022,244,022,258,022	
	DC.W	048,036,062,036,076,036,090,036,104,036,118,036,132,036,146,036
	DC.W	160,036,174,036,188,036,202,036,216,036,230,036,244,036,258,036	
	DC.W	048,050,062,050,076,050,090,050,104,050,118,050,132,050,146,050
	DC.W	160,050,174,050,188,050,202,050,216,050,230,050,244,050,258,050	
	DC.W	048,064,062,064,076,064,090,064,104,064,118,064,132,064,146,064
	DC.W	160,064,174,064,188,064,202,064,216,064,230,064,244,064,258,064	
	DC.W	048,078,062,078,076,078,090,078,104,078,118,078,132,078,146,078
	DC.W	160,078,174,078,188,078,202,078,216,078,230,078,244,078,258,078	
	DC.W	048,092,062,092,076,092,090,092,104,092,118,092,132,092,146,092
	DC.W	160,092,174,092,188,092,202,092,216,092,230,092,244,092,258,092	
	DC.W	048,106,062,106,076,106,090,106,104,106,118,106,132,106,146,106
	DC.W	160,106,174,106,188,106,202,106,216,106,230,106,244,106,258,106	
	
Table14:DC.W	040,004,055,004,070,004,085,004,100,004,115,004,130,004,145,004
	DC.W	160,004,175,004,190,004,205,004,220,004,235,004,250,004,265,004
	DC.W	040,019,055,019,070,019,085,019,100,019,115,019,130,019,145,019
	DC.W	160,019,175,019,190,019,205,019,220,019,235,019,250,019,265,019
	DC.W	040,034,055,034,070,034,085,034,100,034,115,034,130,034,145,034
	DC.W	160,034,175,034,190,034,205,034,220,034,235,034,250,034,265,034
	DC.W	040,049,055,049,070,049,085,049,100,049,115,049,130,049,145,049
	DC.W	160,049,175,049,190,049,205,049,220,049,235,049,250,049,265,049
	DC.W	040,064,055,064,070,064,085,064,100,064,115,064,130,064,145,064
	DC.W	160,064,175,064,190,064,205,064,220,064,235,064,250,064,265,064
	DC.W	040,079,055,079,070,079,085,079,100,079,115,079,130,079,145,079
	DC.W	160,079,175,079,190,079,205,079,220,079,235,079,250,079,265,079
	DC.W	040,094,055,094,070,094,085,094,100,094,115,094,130,094,145,094
	DC.W	160,094,175,094,190,094,205,094,220,094,235,094,250,094,265,094
	DC.W	040,109,055,109,070,109,085,109,100,109,115,109,130,109,145,109
	DC.W	160,109,175,109,190,109,205,109,220,109,235,109,250,109,265,109
	
Table15:DC.W	032,000,048,000,064,000,080,000,096,000,112,000,128,000,144,000
	DC.W	160,000,176,000,192,000,208,000,224,000,240,000,256,000,272,000
	DC.W	032,016,048,016,064,016,080,016,096,016,112,016,128,016,144,016
	DC.W	160,016,176,016,192,016,208,016,224,016,240,016,256,016,272,016
	DC.W	032,032,048,032,064,032,080,032,096,032,112,032,128,032,144,032
	DC.W	160,032,176,032,192,032,208,032,224,032,240,032,256,032,272,032
	DC.W	032,048,048,048,064,048,080,048,096,048,112,048,128,048,144,048
	DC.W	160,048,176,048,192,048,208,048,224,048,240,048,256,048,272,048
	DC.W	032,064,048,064,064,064,080,064,096,064,112,064,128,064,144,064
	DC.W	160,064,176,064,192,064,208,064,224,064,240,064,256,064,272,064
	DC.W	032,080,048,080,064,080,080,080,096,080,112,080,128,080,144,080
	DC.W	160,080,176,080,192,080,208,080,224,080,240,080,256,080,272,080
	DC.W	032,096,048,096,064,096,080,096,096,096,112,096,128,096,144,096
	DC.W	160,096,176,096,192,096,208,096,224,096,240,096,256,096,272,096
	DC.W	032,112,048,112,064,112,080,112,096,112,112,112,128,112,144,112
	DC.W	160,112,176,112,192,112,208,112,224,112,240,112,256,112,272,112
	
Table16:DC.W	032,000,048,000,064,000,080,000,096,000,112,000,128,000,144,000
	DC.W	160,000,176,000,192,000,208,000,224,000,240,000,256,000,272,000
	DC.W	032,016,048,016,064,016,080,016,096,016,112,016,128,016,144,016
	DC.W	160,016,176,016,192,016,208,016,224,016,240,016,256,016,272,016
	DC.W	032,032,048,032,064,032,080,032,096,032,112,032,128,032,144,032
	DC.W	160,032,176,032,192,032,208,032,224,032,240,032,256,032,272,032
	DC.W	032,048,048,048,064,048,080,048,096,048,112,048,128,048,144,048
	DC.W	160,048,176,048,192,048,208,048,224,048,240,048,256,048,272,048
	DC.W	032,064,048,064,064,064,080,064,096,064,112,064,128,064,144,064
	DC.W	160,064,176,064,192,064,208,064,224,064,240,064,256,064,272,064
	DC.W	032,080,048,080,064,080,080,080,096,080,112,080,128,080,144,080
	DC.W	160,080,176,080,192,080,208,080,224,080,240,080,256,080,272,080
	DC.W	032,096,048,096,064,096,080,096,096,096,112,096,128,096,144,096
	DC.W	160,096,176,096,192,096,208,096,224,096,240,096,256,096,272,096
	DC.W	032,112,048,112,064,112,080,112,096,112,112,112,128,112,144,112
	DC.W	160,112,176,112,192,112,208,112,224,112,240,112,256,112,272,112
	
;====================
EVEN
;CETTE ROUTINE PERMET DE JOUER TOUS LES MODULES DE SOUNDTRACKERS
;DE LA VERSION 1.0 A LA VERSION 2.6  AINSI QUE CERTAINS MODULES
;NOISETRACKER.

INIT_MUSIQUE:			;INITIALISATION DE LA MUSIQUE
mt_init:move.l	mt_rdata(pc),a0
	cmp.l	#"M.K.",$438(a0)
	bne	mt_st20
	lea	mt_forst23(pc),a2
	move.l	a2,mt_forst
	bra	ok1st23
mt_st20:
	lea	mt_forst20(pc),a2
	move.l	a2,mt_forst
ok1st23:	
	add.l	(a2),a0
	moveq	#$7f,d0
	moveq	#0,d1
mt_init1:
	move.l	d1,d2
	subq.w	#1,d0
mt_init2:
	move.b	(a0)+,d1
	cmp.b	d2,d1
	bgt.s	mt_init1
	dbf	d0,mt_init2
	addq.b	#1,d2

mt_init3:
	move.l	mt_rdata(pc),a0
	lea	mt_sample1(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	add.l	4(a2),d2
	add.l	a0,d2
	move.l	8(a2),d0
mt_init4:
	move.l	d2,(a1)+
	moveq	#0,d1
	move.w	42(a0),d1
	asl.l	#1,d1
	add.l	d1,d2
	add.l	#$1e,a0
	dbf	d0,mt_init4

	lea	mt_sample1(PC),a0
	moveq	#0,d0
mt_clear:
	move.l	(a0,d0.w),a1
	clr.l	(a1)
	addq.w	#4,d0
	cmp.w	#$7c,d0
	bne.s	mt_clear

	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	clr.l	mt_partnrplay
	clr.l	mt_partnote
	clr.l	mt_partpoint
	move.l	mt_rdata(pc),a1
	add.l	12(a2),a1
	move.b	(a1),mt_maxpart+1
	rts

STOP_MUSIQUE:			;ARRET DE LA MUSIQUE
mt_end:	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	move.w	#$f,$dff096
	rts

PLAY_MUSIQUE:			;JOUE LA MUSIQUE
mt_music:
	addq.w	#1,mt_counter
mt_cool:cmp.w	#6,mt_counter
	bne.s	mt_notsix
	clr.w	mt_counter
	bra	mt_rout2

mt_notsix:
	lea	mt_aud1temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp1
	lea	$dff0a0,a5		
	bsr.s	mt_arprout
mt_arp1:lea	mt_aud2temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp2
	lea	$dff0b0,a5
	bsr.s	mt_arprout
mt_arp2:lea	mt_aud3temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp3
	lea	$dff0c0,a5
	bsr.s	mt_arprout
mt_arp3:lea	mt_aud4temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp4
	lea	$dff0d0,a5
	bra.s	mt_arprout
mt_arp4:rts

mt_arprout:
	move.b	2(a6),d0
	and.b	#$0f,d0
	tst.b	d0
	beq	mt_arpegrt
	cmp.b	#$01,d0
	beq.s	mt_portup
	cmp.b	#$02,d0
	beq.s	mt_portdwn
	cmp.b	#$0a,d0
	beq.s	mt_volslide
	rts

mt_portup:
	moveq	#0,d0
	move.b	3(a6),d0
	sub.w	d0,22(a6)
	cmp.w	#$71,22(a6)
	bpl.s	mt_ok1
	move.w	#$71,22(a6)
mt_ok1:	move.w	22(a6),6(a5)
	rts

mt_portdwn:
	moveq	#0,d0
	move.b	3(a6),d0
	add.w	d0,22(a6)
	cmp.w	#$538,22(a6)
	bmi.s	mt_ok2
	move.w	#$538,22(a6)
mt_ok2:	move.w	22(a6),6(a5)
	rts

mt_volslide:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	mt_voldwn
	add.w	d0,18(a6)
	cmp.w	#64,18(a6)
	bmi.s	mt_ok3
	move.w	#64,18(a6)
mt_ok3:	move.w	18(a6),8(a5)
	rts
mt_voldwn:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#$0f,d0
	sub.w	d0,18(a6)
	bpl.s	mt_ok4
	clr.w	18(a6)
mt_ok4:	move.w	18(a6),8(a5)
	rts

mt_arpegrt:
	move.w	mt_counter(PC),d0
	cmp.w	#1,d0
	beq.s	mt_loop2
	cmp.w	#2,d0
	beq.s	mt_loop3
	cmp.w	#3,d0
	beq.s	mt_loop4
	cmp.w	#4,d0
	beq.s	mt_loop2
	cmp.w	#5,d0
	beq.s	mt_loop3
	rts

mt_loop2:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	bra.s	mt_cont
mt_loop3:
	moveq	#$00,d0
	move.b	3(a6),d0
	and.b	#$0f,d0
	bra.s	mt_cont
mt_loop4:
	move.w	16(a6),d2
	bra.s	mt_endpart
mt_cont:
	add.w	d0,d0
	moveq	#0,d1
	move.w	16(a6),d1
	lea	mt_arpeggio(PC),a0
mt_loop5:
	move.w	(a0,d0),d2
	cmp.w	(a0),d1
	beq.s	mt_endpart
	addq.l	#2,a0
	bra.s	mt_loop5
mt_endpart:
	move.w	d2,6(a5)
	rts

mt_rout2:
	move.l	mt_rdata(pc),a0
	move.l	a0,a3
	add.l	#$0c,a3
	move.l	a0,a2
	move.l	mt_forst,a4
	add.l	(a4),a2
	add.l	16(a4),a0
	move.l	mt_partnrplay(PC),d0
	moveq	#0,d1
	move.b	(a2,d0),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.l	mt_partnote(PC),d1
	move.l	d1,mt_partpoint
	clr.w	mt_dmacon

	lea	$dff0a0,a5
	lea	mt_aud1temp(PC),a6
	bsr	mt_playit
	lea	$dff0b0,a5
	lea	mt_aud2temp(PC),a6
	bsr	mt_playit
	lea	$dff0c0,a5
	lea	mt_aud3temp(PC),a6
	bsr	mt_playit
	lea	$dff0d0,a5
	lea	mt_aud4temp(PC),a6
	bsr	mt_playit
	move.w	#$01f4,d0
mt_rls:	dbf	d0,mt_rls

	move.w	#$8000,d0
	or.w	mt_dmacon,d0
	move.w	d0,$dff096

	lea	mt_aud4temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice3
	move.l	10(a6),$dff0d0
	move.w	#1,$dff0d4
mt_voice3:
	lea	mt_aud3temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice2
	move.l	10(a6),$dff0c0
	move.w	#1,$dff0c4
mt_voice2:
	lea	mt_aud2temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice1
	move.l	10(a6),$dff0b0
	move.w	#1,$dff0b4
mt_voice1:
	lea	mt_aud1temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice0
	move.l	10(a6),$dff0a0
	move.w	#1,$dff0a4
mt_voice0:
	move.l	mt_partnote(PC),d0
	add.l	#$10,d0
	move.l	d0,mt_partnote
	cmp.l	#$400,d0
	bne.s	mt_stop
mt_higher:
	clr.l	mt_partnote
	addq.l	#1,mt_partnrplay
	moveq	#0,d0
	move.w	mt_maxpart(PC),d0
	move.l	mt_partnrplay(PC),d1
	cmp.l	d0,d1
	bne.s	mt_stop
	clr.l	mt_partnrplay
mt_stop:tst.w	mt_status
	beq.s	mt_stop2
	clr.w	mt_status
	bra.s	mt_higher
mt_stop2:
	rts

mt_playit:
	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_nosamplechange

	moveq	#0,d3
	lea	mt_samples(PC),a1
	move.l	d2,d4
	lsl.l	#2,d2
	mulu	#$1e,d4
	move.l	(a1,d2),4(a6)
	move.w	(a3,d4.l),8(a6)
	move.w	2(a3,d4.l),18(a6)
	move.w	4(a3,d4.l),d3
	tst.w	d3
	beq.s	mt_displace
	move.l	4(a6),d2
	add.l	d3,d2
	move.l	d2,4(a6)
	move.l	d2,10(a6)
	move.w	6(a3,d4.l),8(a6)
	move.w	6(a3,d4.l),14(a6)
	move.w	18(a6),8(a5)
	bra.s	mt_nosamplechange

mt_displace:
	move.l	4(a6),d2
	add.l	d3,d2
	move.l	d2,10(a6)
	move.w	6(a3,d4.l),14(a6)
	move.w	18(a6),8(a5)
mt_nosamplechange:
	move.w (a6),d0
	andi.w #$fff,d0			;it's the bug
	tst.w	d0			;of the real
	beq.s	mt_retrout		;source replay
	move.w	(a6),16(a6)
	move.w	20(a6),$dff096
	move.l	4(a6),(a5)
	move.w	8(a6),4(a5)
	move.w	(a6),d0
	andi.w #$fff,d0			;second bug
	move.w d0,6(a5)			;of the source
	move.w	20(a6),d0
	or.w	d0,mt_dmacon

mt_retrout:
	tst.w	(a6)
	beq.s	mt_nonewper
	move.w	(a6),22(a6)

mt_nonewper:
	move.b	2(a6),d0
	and.b	#$0f,d0
	cmp.b	#$0b,d0
	beq.s	mt_posjmp
	cmp.b	#$0c,d0
	beq.s	mt_setvol
	cmp.b	#$0d,d0
	beq.s	mt_break
	cmp.b	#$0e,d0
	beq.s	mt_setfil
	cmp.b	#$0f,d0
	beq.s	mt_setspeed
	rts

mt_posjmp:
	not.w	mt_status
	moveq	#0,d0
	move.b	3(a6),d0
	subq.b	#1,d0
	move.l	d0,mt_partnrplay
	rts

mt_setvol:
	move.b	3(a6),8(a5)
	rts

mt_break:
	not.w	mt_status
	rts

mt_setfil:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#1,d0
	rol.b	#1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts

mt_setspeed:
	move.b	3(a6),d0
	and.b	#$0f,d0
	beq.s	mt_back
	clr.w	mt_counter
	move.b	d0,mt_cool+3
mt_back:rts

mt_aud1temp:
	blk.w	10,0
	dc.w	1
	blk.w	2,0
mt_aud2temp:
	blk.w	10,0
	dc.w	2
	blk.w	2,0
mt_aud3temp:
	blk.w	10,0
	dc.w	4
	blk.w	2,0
mt_aud4temp:
	blk.w	10,0
	dc.w	8
	blk.w	2,0
mt_partnote:	dc.l	0
mt_partnrplay:	dc.l	0
mt_counter:	dc.w	0
mt_partpoint:	dc.l	0
mt_samples:	dc.l	0
mt_sample1:	blk.l	31,0
mt_maxpart:	dc.w	0
mt_dmacon:	dc.w	0
mt_status:	dc.w	0
mt_forst:	dc.l	0

mt_forst20:	dc.l 472,600,14,470,600
mt_forst23:	dc.l $3b8,$438,$1e,$3b6,$43c
mt_arpeggio:
	dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
	dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
	dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
	dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
	dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
mt_rdata:	dc.l mt_data
;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   

	DC.W	$008E,$2C81	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$2CD1	;

	DC.W	$0092,$0038,$0094,$00D0

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	SCREENPTRS:

	DC.W $00E0,0
	DC.W $00E2,0
	DC.W $00E4,0
	DC.W $00E6,0   


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$0200		;0 PLANS+MODE COULEURS

	;DECALAGE ECRAN 

	DC.W	$0102,$0010

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,$000	;MODULOS PLANS PAIRS
	DC.W 	$010A,$000	;MODULOS PLANS IMPAIRS

	;POINTEURS DES SPRITES - MIS A 0 SI PAS DE SPRITES

	DC.W	$0120,$0000,$0122,$0000
	DC.W	$0124,$0000,$0126,$0000
	DC.W	$0128,$0000,$012A,$0000	;PAS DE SPRITES
	DC.W	$012C,$0000,$012E,$0000
	DC.W	$0130,$0000,$0132,$0000
	DC.W	$0134,$0000,$0136,$0000
	DC.W	$0138,$0000,$013A,$0000
	DC.W	$013C,$0000,$013E,$0000

	;REGISTRES DES COULEURS

	DC.W	$0180,$0000	;COULEUR 00
	DC.W	$0182,$0444	;COULEUR 01
	DC.W	$0184,$0FFF	;COULEUR 02
	DC.W	$0186,$0777	;COULEUR 03

	DC.W	$0188,$0455	;COULEUR 04
	DC.W	$018A,$0333	;COULEUR 05
	DC.W	$018C,$0222	;COULEUR 06
	DC.W	$018E,$0111	;COULEUR 07
	DC.W	$0190,$0EEF	;COULEUR 08
	DC.W	$0192,$0CCF	;COULEUR 09
	DC.W	$0194,$099F	;COULEUR 10
	DC.W	$0196,$055F	;COULEUR 11
	DC.W	$0198,$000F	;COULEUR 12
	DC.W	$019A,$000A	;COULEUR 13
	DC.W	$019C,$0006	;COULEUR 14
	DC.W	$019E,$0003	;COULEUR 15
	DC.W	$01A0,$0DEF	;COULEUR 16	;LES COULEURS DE 16 A 31 SONT
	DC.W	$01A2,$0BEF	;COULEUR 17	;AUSSI CELLES DES SPRITES
	DC.W	$01A4,$0ADF	;COULEUR 18
	DC.W	$01A6,$07BD	;COULEUR 19	;LES COULEURS 16 A 31 NE SONT
	DC.W	$01A8,$058A	;COULEUR 20	;PAS UTILISEES DANS LE MODE
	DC.W	$01AA,$0357	;COULEUR 21	;HOLD AND MODIFY (HAM)
	DC.W	$01AC,$0234	;COULEUR 22
	DC.W	$01AE,$0011	;COULEUR 23
	DC.W	$01B0,$0FD0	;COULEUR 24
	DC.W	$01B2,$0FA0	;COULEUR 25
	DC.W	$01B4,$0E80	;COULEUR 26
	DC.W	$01B6,$0C60	;COULEUR 27
	DC.W	$01B8,$0A30	;COULEUR 28
	DC.W	$01BA,$0720	;COULEUR 29
	DC.W	$01BC,$0510	;COULEUR 30
	DC.W	$01BE,$0300	;COULEUR 31


	;RESOLUTION 2 PLANS + COULEURS

	DC.W $7001,$FFFE,$100,$2200,$180,$0111


	;RESOLUTION 0 PLAN

	DC.W $EF01,$FFFE,$100,$0000,$180,$0000


DC.L $FFFFFFFE ;FIN LISTE COPPER
EVEN
FINDEMO:
