;-------------------------------------------------------------------
;    JUP CLUB Intro. v1.4  Por  007  de  Fifth Generation.
;
;    Código Source para  DEVPAC II   (Sábado 9 de Enero de 1993)
;-------------------------------------------------------------------
;    Esta intro puede ser usada por cualquiera siempre que haga
; mención de los créditos. (Programación por 007/FIFTH GENERATION)
;    Saludos a:
; WARLORD/IMPULSE, SPANISH ARCHER/DARKNESS, TROGLOBYTE/DARKNESS,
; SARA/DRUMS, a todo el resto de la ESCENA Española y especialmente a
; DARDO/LLORET FREE BYTE  y  SKYNET/NECROPOLIS.
; Mi antiguo grupo  JUP CLUB CORNELLA.
; y a todos los miembros de FIFTH GENERATION:
;        EXCELSIOR, GURUMASTER, RESET, EVELRED, GEDEON,
;        FLASH, YOYO, LOZENGE.
; 
;    Esta intro ha sido realizada totalmente para su publicación en
; la revista FANZINE.
;    Compatible 100% Kickstart 1.2 / 1.3 / 2.0
;--------------------------------------------------------------------
;    Si alguien tiene problemas con el source o quiere consultarme
; algo, podeis poneros en contacto conmigo escribiendome a:

;                   Juan Antonio Gómez
;                   Avinguda del Parc. 55  Ent-2
;                   08940  Cornellá de Llobregat
;                   BARCELONA
;--------------------------------------------------------------------

;---------------------
; Datos para pantalla:   (Nota: No me hago responsable de los fallos,
;---------------------          a causa de poner mal los datos)

VRAST=4		; Velocidad del raster (de 1 a 9) (0=¡ NUNCA !)

MUSICA=1	; ¿Quieres música?  (0=Si música,  1=No música)

PAUSA=220	; Tiempo de pausa entre cada pantalla de texto.(0 a 65535)

VTEXT=1		; Velocidad del scroll vertical (de 1 a 6) (0=¡ NUNCA !)

COL1=$06BF	; Color 1 del Font.
COL2=$027B	; Color 2 del Font.
COL3=$0036	; Color 3 del Font.

; -------------
; **  Logo:  **
; -------------
MEDRES=0	; 0=LOW-RES (320*64) en el Logo.
		; 1=MED-RES (640*64) en el Logo.
BP0=2		; Número de Planos para el Logo. (de 1 a 6),(0=¡ NUNCA !)
		; Este source no soporta HAM.
CO0=4		; Número de colores según el número de Planos del Logo.
		; el DEVPAC no hace potencias. (Cálculo: 2 elevado a BP0)
BP1=2		; Número de Planos para la pantalla de texto. (SIEMPRE 2)
CO1=4		; Número de colores para pantalla de texto.   (SIEMPRE 4)

; ----------------
; Ficheros a leer:     (Nota: Modificar solo el nombre que hay entre las
; ----------------            comillas, que es el fichero a leer de disco)

; -----------------
; **  Gráficos   **    (Nota: Los gráficos tienen que estar en formato
; -----------------           RAW-NORMAL, con las medidas que se piden
;                             y con los colores detras del gráfico,
;                             esto se hace con los  IFF-CONVERTER)
LOGO:	MACRO
	INCBIN	"JUPCLUB.LOGO00.raw"	; EN LOW-RES (320*64).|mirar datos
	ENDM				; EN MED-RES (640*64).|de pantalla.


; --------------
; **  Música  **              (Nota: La música tiene que ser
; --------------                     un modulo de Pro-Tracker)
MODULO:	MACRO
	INCBIN	"MODULES/mod.fireballs"
	ENDM

; -----------------------------------------
; **  Colores de las barras del raster.  **
; -----------------------------------------
BARRAS:	MACRO
COLRASTER0:
	DC.W	6		; 6 Colores a ser movidos. (Arriba)
	DC.W	0		; Contador. (Siempre 0)
	DC.W	$0E0E		; Lista de colores  RGB  para Raster.
	DC.W	$0F0F
	DC.W	$0E0E
	DC.W	$0EE0
	DC.W	$0FF0
	DC.W	$0EE0

COLRASTER1:
	DC.W	6		; 6 Colores a ser movidos. (Abajo)
	DC.W	0		; Contador. (Siempre 0)
	DC.W	$005E		; Lista de colores  RGB  para Raster.
	DC.W	$005F
	DC.W	$005E
	DC.W	$0E00
	DC.W	$0F00
	DC.W	$0E00

	ENDM
; -----------------------
; ** Pantalla de texto **	; Para saltar a la siguiente linea usar
; -----------------------	; el nÚmero 0.  (Escribir @ para la Ñ,
				; ^ para ¡ (admiracion) y _ para ¿)
				; (La pantalla es de 40*12 carácteres
				; pero tiene un scrool vertical)
TEXTO:	MACRO
	DC.B	"              JUP CLUB INTRO",0
	DC.B	"           --------------------",0
	DC.B	0
	DC.B	"DISE@O, CODIGO Y FONT POR:",0
	DC.B	"                      007/5TH GENERATION",0
	DC.B	0
	DC.B	" ESTA INTRO HA SIDO REALIZADA TOTALMENTE",0
	DC.B	"PARA LA REVISTA  FANZINE.",0
	DC.B	0
	DC.B	0
	DC.B	"(PULSA EL BOTON 2 DEL RATON PARA PAUSAR)",0
	DC.B	0

	DC.B	0
	DC.B	"----------------------------------------",0
	DC.B	" LISTA DE MIEMBROS DE FIFTH GENERATION:",0
	DC.B	"----------------------------------------",0
	DC.B	0
	DC.B	0
	DC.B	"   EXCELSIOR   (GFX,ORGANIZER)",0
	DC.B	0
	DC.B	"   RESET       (GFX,SWAPPER,MUSICIAN)",0
	DC.B	0
	DC.B	"   GEDEON      (SWAPPER)",0
	DC.B	0

	DC.B	"   GURUMASTER  (CODER)",0
	DC.B	0
	DC.B	"   EVELRED     (MUSICIAN)",0
	DC.B	0
	DC.B	"   007         (CODER)",0
	DC.B	0
	DC.B	"   FLASH       (SWAPPER)",0
	DC.B	0
	DC.B	"   YOYO        (SWAPPER)",0
	DC.B	0
	DC.B	"   LOZENGE     (SWAPPER)",0
	DC.B	0

	DC.B	" ESTA INTRO TIENE:",0
	DC.B	0
	DC.B	" - OPCION DE MUSICA.",0
	DC.B	0
	DC.B	" - LOGO DE 320*64  O  640*64 PUNTOS.",0
	DC.B	0
	DC.B	" - CONTROL DE PAUSA ENTRE CADA PANTALLA.",0
	DC.B	0
	DC.B	" - CONTROL DE VELOCIDAD DE ESTE SCROLL.",0
	DC.B	0
	DC.B	" - VELOCIDAD Y COLORES DEL RASTER.",0
	DC.B	0

	DC.B	0
	DC.B	0
	DC.B	"       DISFRUTA ESTA PRODUCCION DE",0
	DC.B	0
	DC.B	"    F I F T H     G E N E R A T I O N",0
	DC.B	0
	DC.B	0
	DC.B	"  SI USAS ESTA INTRO PON LOS CREDITOS:",0
	DC.B	0
	DC.B	"    CODIGO  POR  007/5TH GENERATION",0
	DC.B	0
	DC.B	0

	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	"        JAMES BOND  WILL  RETURN",0
	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	0
	DC.B	0

	DC.B	1,1			; << No quitar esta linea.
	ENDM
;-----------------------------------
; ** Comienzo de la programacion: **
;-----------------------------------

	SECTION	007,CODE_C
VAMOS:
	MOVE.L	$4,A6			; Base de Exec.library
	MOVE.L	$9C(A6),A5
	MOVE.L	$26(A5),WBCOPPER

	MOVE.L	$6C.W,VBLANK		; Salvar registros a modificar.
	MOVE.W	$DFF01C,INTENA
	MOVE.W	#$7FFF,$DFF09A
	MOVE.W	$DFF01E,INTREQ
	MOVE.W	#$7FFF,$DFF09C
	MOVE.W	$DFF002,DMACON
	MOVE.W	#$7FFF,$DFF096
	OR.W	#$8000,DMACON
	OR.W	#$8000,INTREQ
	OR.W	#$8000,INTENA
	MOVE.L	#INTER,$6C.W

	CLR.W	RUTCOLCONTA0		; Iniciación de
	MOVE.B	#$FF,VISIBLE+3		; Datos.
	MOVE.B	#$43,VISIBLE+7		; Mas datos...
	CLR.W	ABLDAT00		; La tira de datos......
	MOVE.B	#$81,VISIBLE2+3
	MOVE.B	#$C1,VISIBLE2+7
	MOVE.B	#$2B,VISIBLE3
	CLR.W	CITDAT00
	CLR.W	BCRDAT00
	MOVE.W	VELOCRAST1,VELOCRAST
	CLR.W	VELOCBAR0
	CLR.W	VELOCBAR1
	MOVE.L	#$06,VELOC007
	MOVE.B	#$58,RAST0
	MOVE.B	#$F8,RAST1
	CLR.W	MURDAT00
	CLR.W	MOVER0+$02
	MOVE.W	#$0028,MOVER0+$06
	MOVE.W	#$0030,MOVER0+$0A
	CLR.W	MOVBPLDAT
	MOVE.W	#$2001,SCRCOORY
	CLR.W	SCRPOS
	CLR.W	SCROFF
	CLR.W	SCRDAT
	CLR.W	SCRDAT00
	CLR.W	SCRDAT01
	CLR.W	SCRCONTA
	MOVE.W	#PAUSA,STOP
	MOVE.W	#$0060,STOP2
	MOVE.W	#$AC01,ENCIENDE
	MOVE.W	#$AC01,APAGA
	CLR.W	VERTXTDAT
	IFEQ	MUSICA
	CLR.W	MENOS_VOL
	CLR.W	BAJVOL00
	ENDC
	CLR.W	COLORS+$02
	CLR.W	COLORS+$06
	CLR.W	COLORS+$0A		; Final de datos.
	LEA	PANT,A0
	MOVE.W	#(((40*13*8)*2)/4)-1,D0
CLRBUC:	CLR.L	(A0)+
	DBF	D0,CLRBUC

	IFEQ	MUSICA
	BSR	mt_init			; Inicializo modulo de música.
	ENDC

	LEA	DIRPLANOS,A0		; Preparo punteros de Planos
	BSR	CREAPLANOS		; para el Copper-List.

	LEA	DIRCOLORES,A0		; Preparo colores
	BSR	CREACOLORES		; para el Copper-List.

	LEA	DIRSPRITES,A0		; Preparo sprites
	BSR	CREASPRITES		; para el Copper-List.

	MOVE.W	#$0020,$DFF09C
ESPERA:
	BTST	#$05,$DFF01F
	BEQ.S	ESPERA

	MOVE.L	#COPPER0,INTCOPPER	; Copper-List inicial.
	MOVE.L	#COPPER0,$DFF084

	MOVE.L	#MASTERCOPPER,$DFF080	; Copper Maestro ON
	CLR.W	$DFF088

; -----------------------------
; **  Bajar y subir Rasters  **
; -----------------------------

	MOVE.L	#RAST0,ACTRAST0		; Punteros actuales de los rasters.
	MOVE.L	#RAST1,ACTRAST1

	MOVE.L	#COPPER0,INTCOPPER	; Copper-list efecto de raster.

	MOVE.W	#$01,VELOCRAST		; Velocidad raster.
	ST	DIRRAST			; Disminución de velocidad.
	MOVE.L	#$18,D0			; 24 Puntos a mover rasters.
	MOVE.L	#VRAST,D1
	DIVU	D1,D0
	MOVE.W	D0,VELOCBAR0
	MOVE.W	D0,VELOCBAR1

	CLR.W	BCRDAT01		; Opción subir colores.
	MOVE.W	#$0F,BCRDAT00		; Subir colores rasters.
	MOVE.W	#$18,MURDAT00		; Mover 24 puntos los Rasters.

	MOVE.W	#$83C0,$DFF096		; Visualización de pantalla.
	MOVE.W	#$C020,$DFF09A		; VBlank ON (interrupcion nivel 3)

BUCMUR:
	TST.W	MURDAT00		; ¿Raster en su sitio?
	BNE.S	BUCMUR
BUCIRA:
	CMP.W	#$01,IRADAT00		; ¿Mover colores Raster?
	BNE.S	BUCIRA

; ------------------
; **  Abrir Logo  **
; ------------------

	MOVE.L	#RASTER0,ACTRAST0	; Punteros actuales de los rasters.
	MOVE.L	#RASTER1,ACTRAST1

	MOVE.L	#COPPER,INTCOPPER	; Copper-list Principal.

	LEA	DIRLOGO+((40*64)+(40*64*MEDRES))*BP0,A0	; Colores del Logo.
	LEA	COLOR0,A1
	MOVE.L	#CO0-1,D0
	CLR.L	D1
	MOVEQ.L	#$02,D2
	BSR	RUTCOLINIT		; Subir colores del Logo.

	LEA	ASCII,A3
	LEA	PANT,A1
	MOVE.W	#$0C-1,D0
ASCBUC:
	CMP.B	#$01,(A3)
	BNE.S	ASCCON
	LEA	ESPACIOS,A3
	ST	SCROFF
ASCCON:
	MOVE.W	D0,-(SP)
	BSR	PRINT			; Escribe pantalla de texto.
	ADD.L	#$01,A3
	MOVE.L	A5,A1
	MOVE.L	A3,DIRTEXTO
	LEA	RETURN,A3
	BSR	PRINT			; Siguiente linea.
	MOVE.L	DIRTEXTO,A3
	MOVE.W	(SP)+,D0
	DBF	D0,ASCBUC

	MOVE.W	#$7E,ABLDAT00		; Abrir visualización Logo.
	MOVE.W	#$30,VERTXTDAT		; Abrir visualización pantalla.
	MOVE.W	#$30,MOVBPLDAT		; Mover Logo de 007

BUCVET:
	TST.W	VERTXTDAT		; ¿Pantalla totalmente abierta?
	BNE.S	BUCVET

	MOVE.W	#$8020,$DFF096		; Visualización de sprites.

	LEA	COLORSPRITS,A0		; Colores de las estrellas.
	LEA	COLORS,A1
	MOVE.L	#3-1,D0
	CLR.L	D1
	MOVEQ.L	#$02,D2
	BSR	RUTCOLINIT		; Subir colores de estrellas.
BUCCOL0:
	TST.W	RUTCOLCONTA0
	BNE.S	BUCCOL0

	LEA	SCRCOLORES,A0
	BSR	CREACOLORES		; Actualiza colores.

	ST	SCRDAT			; Scroll vertical ON.

	CLR.B	$BFEC01
BUC:
	TST.B	$BFEC01			; ¿Pulsada alguna tecla?
	BNE	TECLAS

	BTST	#$07,$BFE001		; ¿Botón 1 del Joystick?
	BEQ	SALIR

	BTST	#$06,$BFE001		; ¿Botón 1 del Ratón?
	BNE.S	BUC
SALIR:
; -------------------
; **  Cerrar Logo  **
; -------------------

	MOVE.L	#$02,VELOC007
	MOVE.W	#$20,MOVBPLDAT		; Adios Logo de 007.
	MOVE.W	#$20,BAJDAT00		; Adios Logo.
	MOVE.W	#$18,CITDAT00		; Cierra pant. TXT
BUCCIT2:
	TST.W	CITDAT00		; ¿Ha desaparecido TXT?
	BNE.S	BUCCIT2

	LEA	CEROS,A0		; Colores negros.
	LEA	COLOR1B,A1
	MOVE.L	#CO1-1,D0
	CLR.L	D1
	CLR.L	D2
	BSR	RUTCOLINIT		; Bajar colores de pantalla.

	LEA	CEROS,A0		; Colores negros.
	LEA	COLOR1,A1
	MOVE.L	#CO1-1,D0
	CLR.L	D1
	CLR.L	D2
	BSR	RUTCOLINIT		; Bajar colores de pantalla.

	LEA	CEROS,A0		; Colores negros.
	LEA	COLORS,A1
	MOVE.L	#3-1,D0
	CLR.L	D1
	CLR.L	D2
	BSR	RUTCOLINIT		; Bajar colores de estrellas.

	MOVE.W	#$10,CITDAT00		; Cierra pant. TXT
BUCCIT:
	TST.W	CITDAT00		; ¿Ha desaparecido TXT?
	BNE.S	BUCCIT
BUCBPL:
	TST.W	MOVBPLDAT		; ¿Ha desaparecido 007?
	BNE.S	BUCBPL
BUCBAJ:
	TST.W	BAJDAT00
	BNE.S	BUCBAJ
BUCIRA2:
	CMP.W	#$01,IRADAT00		; ¿Mover colores Raster?
	BNE.S	BUCIRA2

; -----------------------------
; **  Bajar y subir Rasters  **
; -----------------------------

	MOVE.L	#RAST0,ACTRAST0		; Punteros actuales de los rasters.
	MOVE.L	#RAST1,ACTRAST1

	MOVE.L	#COPPER0,INTCOPPER	; Copper-list efecto de raster.

	CLR.W	DIRRAST			; Aceleración del raster.
	CLR.L	D1
	MOVE.L	#$20,D0			; 47 Puntos a mover rasters.
	MOVE.W	VELOCRAST,D1
	DIVU	D1,D0
	MOVE.W	D0,VELOCBAR0
	MOVE.W	D0,VELOCBAR1

	MOVE.W	#$10,MURDAT00		; Mover 16 puntos los Rasters.
BUCMUR4:
	TST.W	MURDAT00		; ¿Raster en su sitio?
	BNE.S	BUCMUR4

	IFEQ	MUSICA
	MOVE.W	#$20,BAJVOL00		; Baja volumen.
	ENDC

	MOVE.W	#$10,MURDAT00		; Mover 16 puntos los Rasters.
BUCMUR2:
	TST.W	MURDAT00		; ¿Raster en su sitio?
	BNE.S	BUCMUR2

	ST	BCRDAT01		; Opción bajar colores.
	MOVE.W	#$0F,BCRDAT00		; Bajar colores rasters.

	MOVE.W	#$0F,MURDAT00		; Mover 15 puntos los Rasters.
BUCMUR3:
	TST.W	MURDAT00		; ¿Raster en su sitio?
	BNE.S	BUCMUR3

; -----------------------
; **  Apaga y vamonos  **
; -----------------------

	MOVE.W	#$7FFF,$DFF096		; DMA OFF.
	MOVE.W	#$7FFF,$DFF09A		; Interrupciones OFF.
	MOVE.W	#$7FFF,$DFF09C		; Interrupciones OFF.

	IFEQ	MUSICA
	BSR	mt_end			; Apago canales de música.
	ENDC

	MOVE.W	#$0020,$DFF09C
ESPERA2:
	BTST	#$05,$DFF01F
	BEQ.S	ESPERA2

	MOVE.L	WBCOPPER,$DFF080	; Copper del Workbenck.
	CLR.W	$DFF088

	MOVE.L	VBLANK,$6C.W		; Workbench VBlank.
	MOVE.W	DMACON,$DFF096		; Workbench DMA.
	MOVE.W	INTREQ,$DFF09C		; Workbench Interrupciones.
	MOVE.W	INTENA,$DFF09A		; Workbench Interrupciones.
	CLR.L	D0			; ¡No errores!
RET:
	RTS				; ¡¡¡ Adios intro !!!

; -------------------------------
; **  Interrupcion del VBlank  **
; -------------------------------

INTER:
	MOVEM.L	D0-D7/A0-A6,-(SP)

	IFEQ	MUSICA
	BSR	BAJARVOL		; Bajar volumen música.
	BSR	mt_music		; Interrupción para música.
	ENDC

	BSR	MUEVERASTER		; Efecto Subir y Bajar Raster.
	BSR	INTRASTER		; Mover colores Raster.
	BSR	BAJACOLRAST		; Baja RGB del Raster lados.
	BSR	BAJACOLRAST2		; Baja RGB del Raster TODO.

	LEA	ESTRELLAS,A0
	BSR	MOVERSPRITES		; Mueve las estrellas.

	BSR	RUTCOLINTER		; Subir/Bajar paleta. (colores)

	BSR	SCROLL			; Scroll vertical.

	BSR	ABRELOGO		; Efecto de abrir Logo.
	BSR	BAJARLOGO		; Efecto de bajar Logo.
	BSR	ABRETXT			; Efecto de abrir pantalla.
	BSR	CIERRATXT		; Efecto de cerrar pantalla.

	LEA	MOVER0,A0
	MOVEQ.L	#$00,D0
	MOVE.L	VELOC007,D1
	BSR	INTMOVBPL		; Mueve Logo de 007

	MOVEM.L	(SP)+,D0-D7/A0-A6
	MOVE.L	INTCOPPER,$DFF084	; Puntero Copper para VBlank.
	MOVE.W	#$0020,$DFF09C		; VBlank esta libre.
	RTE

; ---------------
; **  Rutinas  **
; ---------------

SCROLL:
	BTST	#$02,$DFF016
	BEQ	RET
	TST.W	SCROFF
	BNE	RET
	TST.W	SCRDAT
	BEQ	RET
	TST.W	STOP
	BEQ.S	SCROLL3
	SUB.W	#$01,STOP
	RTS
SCROLL3:
	TST.W	STOP2
	BNE.S	SCROLL4
	MOVE.W	#$0060,STOP2
	MOVE.W	#PAUSA,STOP
	BRA.S	SCROLL3
SCROLL4:
	TST.W	SCRCONTA
	BEQ	SCROLL2
	SUB.W	#$01,SCRCONTA
	TST.W	SCRDAT01
	BEQ	RET
	CMP.W	#$01,SCRPOS
	BEQ	SCRCON03
	MOVE.L	SCRPLANOS+4,A0
	SUB.L	#(40*8),A0
SCRCON04:
	MOVE.W	#((40*8)/4)-1,D0
SCRBUC00:
	CLR.L	(A0)+
	DBF	D0,SCRBUC00
	ADD.L	#(40*12*8),A0
	MOVE.W	#((40*8)/4)-1,D0
SCRBUC01:
	CLR.L	(A0)+
	DBF	D0,SCRBUC01
	MOVE.L	SCRPLANOS+4,A0
	SUB.L	#(40*8),A0
	CMP.W	#$01,SCRPOS
	BEQ	SCRCON05
SCRCON06:
	MOVE.L	A0,A1
	MOVE.L	DIRTEXTO,A3
	CMP.B	#$01,(A3)
	BNE.S	ASCCON2
	LEA	ASCII,A3
ASCCON2:
	BSR	PRINT
	ADD.L	#$01,A3
	MOVE.L	A3,DIRTEXTO
	CLR.W	SCRDAT01
	RTS
SCROLL2:
	SUB.W	#$01,STOP2
	MOVE.W	#VTEXT,SCRCONTA
	TST.W	SCRDAT00
	BEQ.S	SCRCON00
	SUB.W	#$01,SCRDAT00
	CMP.W	#$01,SCRPOS
	BEQ.S	SCRCON02
	SUB.W	#$0100,SCRCOORY
SCRCON02:
	ADD.L	#$0028,SCRPLANOS+4
	BRA	SCRFIN
SCRCON00:
	MOVE.W	#$07,SCRDAT00
	CMP.W	#$0D,SCRPOS
	BEQ	SCRCON01
	CLR.L	D0
	MOVE.W	SCRPOS,D0
	MOVE.W	#$7C01,D1
	LEA	PANT,A0
	MOVE.L	D0,D3
	MOVE.L	#$0D,D2
	SUB.L	D3,D2
	MULU	#$08,D2
	LSL.W	#$08,D2
	ADD.W	D2,D1
	MOVE.W	D1,SCRCOORY
	MULU	#$0140,D0
	ADD.L	D0,A0
	MOVE.L	A0,SCRPLANOS+4
	ST	SCRDAT01
	ADD.W	#$01,SCRPOS
	CMP.W	#$01,SCRPOS
	BNE.S	SCRFIN
	MOVE.W	#$DC01,SCRCOORY
SCRFIN:
	LEA	SCRPLANOS,A0
	BSR	CREAPLANOS
	RTS
SCRCON01:
	CLR.W	SCRPOS
	BRA	SCRCON00
SCRCON03:
	LEA	PANT+(40*12*8),A0
	BRA	SCRCON04
SCRCON05:
	LEA	PANT+(40*12*8),A0
	BRA	SCRCON06

BAJARLOGO:
	TST.W	BAJDAT00
	BEQ	RET
	ADD.B	#$02,VISIBLE3
	SUB.W	#$01,BAJDAT00
	RTS
	
	IFEQ	MUSICA
BAJARVOL:
	TST.W	BAJVOL00
	BEQ	RET
	ADD.W	#$02,MENOS_VOL
	SUB.W	#$01,BAJVOL00
	RTS
	ENDC

MOVERSPRITES:
	TST.W	(A0)
	BEQ	RET
	MOVEQ.L	#$01,D0
	TST.W	$04(A0)
	BEQ.S	MOSCON00
	MOVEQ.L	#$02,D0
	TST.W	$06(A0)
	BEQ.S	MOSCON00
	CLR.W	D0
MOSCON00:
	ADD.W	#$0001,(A0)
	CMP.B	#$E0,$01(A0)
	BCS.S	MOSCON01
	MOVE.B	#$40,$01(A0)
MOSCON01:
	DBF	D0,MOSCON00
	ADD.L	#$08,A0
	BRA.S	MOVERSPRITES

TECLAS:
	MOVE.B	$BFEC01,D0		; Número de tecla pulsada.
	OR.B	#$40,$BFEE01		; CIAA libre.
	AND.B	#$BF,$BFEE01		; CIAA libre.
	CMP.B	#$75,D0			; ¿Pulsada tecla ESC?
	BEQ	SALIR
	CLR.B	$BFEC01
	BRA	BUC

PRINT:
	LEA	FONT,A0
	LEA	40,A4
	MOVE.L	#$1,D0
	MOVE.L	#8,D1
	MOVE.L	#40,D2
	MOVE.L	#$20,D3
	MOVE.L	#$280,D4
	MOVE.L	#$1040,D5
	MOVE.L	#$2-1,D6
	BRA.S	TEXTIMP2

;	A0=DIR. GRAFICO ASCII.		D2=No. DE LETRAS EN BARRA. (DEF.)
;	A1=DIR. A DEJAR CARACT.		D3=No. CARACTER ASCII MENOR.
;	A3=DIR. TEXTO ASCII.		D4=SIZE DE 1 BIT-PLANO INICIO.
;	A4=No. DE BYTES HORIZO. DEST.	D5=SIZE DE 1 BIT-PLANO DESTINO.
;	D0=BYTES HORIZONTALES.		D6=BIT-PLANOS-1.
;	D1=PUNTOS VERTICALES. 	; ESCRIBE UN SOLO CARACTER.

TEXTIMP:
	MOVEQ.L	#$0,D7
	MOVE.B	(A3)+,D7
	CMP.B	D3,D7
	BCC.S	TEXCON00
	MOVE.B	D3,D7 
TEXCON00:
	SUB.B	D3,D7
	DIVU	D2,D7
	MOVE.L	D0,D3
	MULU	D1,D3
	MULU	D2,D3
	MOVE.L	D7,-(SP)
	SWAP	D7
	AND.L	#$FFFF,D7
	MULU	D0,D7
	MOVEA.L	D7,A2
	MOVE.L	(SP)+,D7
	AND.L	#$FFFF,D7
	MULU	D3,D7
	ADDA.L	D7,A0
	ADDA.L	A2,A0
	MULU	D0,D2
	SUB.L	D0,D2
	MOVE.L	A4,D3
	SUB.L	D0,D3
	SUB.L	#$01,D0
	SUB.L	#$01,D1
	BRA.S	VPOKE3.B

;	DATOS IGUAL QUE TEXTIMP,  PERO ESCRIBE CON ($00,$0A)

TEXTIMP2:
	MOVE.L	A1,A5
TEXBUC00:
	CMP.B	#$0A,(A3)
	BEQ.S	RETU
	TST.B	(A3)
	BEQ	RET

	MOVEM.L	D0-D6/A0-A5,-(SP)
	BSR	TEXTIMP
	MOVEM.L	(SP)+,D0-D6/A0-A5
	ADD.L	D0,A1
TEXBUC01:
	ADD.L	#$01,A3
	BRA.S	TEXBUC00
RETU:
	MOVE.L	A4,D7
	MULU	D1,D7
	ADD.L	D7,A5
	MOVE.L	A5,A1  
	BRA.S	TEXBUC01

VPOKE3.B:
	MOVEM.L	D0-D1/A0-A1,-(SP)
VPOKE3.BB1:
	MOVE.L	D0,-(SP)
VPOKEBUC:
	MOVE.B	(A0)+,(A1)+
	DBF	D0,VPOKEBUC
	MOVE.L	(SP)+,D0
	ADDA.L	D2,A0
	ADDA.L	D3,A1
	DBF	D1,VPOKE3.BB1
	MOVEM.L	(SP)+,D0-D1/A0-A1
	ADDA.L	D4,A0
	ADDA.L	D5,A1
	DBF	D6,VPOKE3.B
	RTS

INTMOVBPL:
	TST.W	MOVBPLDAT
	BEQ	RET
	SUB.W	#$01,MOVBPLDAT
MOVERBPL:
	TST.B	D0
	BEQ.S	MOVERDER
MOVERIZQ:
	TST.B	$03(A0)
	BNE.S	MOICON00
	SUB.W	#$08,$06(A0)
	SUB.W	#$08,$0A(A0)
	MOVE.B	#$10,$03(A0)
MOICON00:
	SUB.B	#$11,$03(A0)
	SUB.W	#$01,D1
	BNE.S	MOVERIZQ
	RTS
MOVERDER:
	CMP.B	#$FF,$03(A0)
	BNE.S	MODCON00
	ADD.W	#$08,$06(A0)
	ADD.W	#$08,$0A(A0)
	MOVE.B	#$EF,$03(A0)
MODCON00:
	ADD.B	#$11,$03(A0)
	SUB.W	#$01,D1
	BNE.S	MOVERDER
	RTS
	
MUEVERASTER:
	TST.W	MURDAT00
	BEQ	RET
	CMP.W	#$01,IRADAT00
	BNE	RET
	TST.W	VELOCBAR1
	BEQ.S	MURCON01
	TST.W	VELOCBAR0
	BNE.S	MURCON00
	MOVE.W	VELOCBAR1,VELOCBAR0
	TST.W	DIRRAST
	BNE.S	MURCON02
	CMP.W	#$01,VELOCRAST
	BEQ.S	MURCON01
	SUB.W	#$01,VELOCRAST
	BRA.S	MURCON01
MURCON02:
	ADD.W	#$01,VELOCRAST
	BRA.S	MURCON01
MURCON00:
	SUB.W	#$01,VELOCBAR0
MURCON01:
	LEA	RAST0,A0
	MOVE.W	(A0),D0
	ADD.W	#$0100,D0
	BSR	MURRUT00
	LEA	RAST1,A0
	MOVE.W	(A0),D0
	SUB.W	#$0100,D0
	BSR	MURRUT00
	SUB.W	#$01,MURDAT00
	RTS
MURRUT00:
	REPT	8
	MOVE.W	D0,(A0)+
	ADD.L	#$06,A0
	ADD.W	#$0100,D0
	ENDR
	RTS

ABRETXT:
	TST.W	VERTXTDAT
	BEQ	RET
	SUB.W	#$0100,ENCIENDE
	ADD.W	#$0100,APAGA
	SUB.W	#$01,VERTXTDAT
	RTS

BAJACOLRAST:
	MOVE.W	VELOCRAST,D0
	CMP.W	IRADAT00,D0
	BNE	RET
	MOVE.L	ACTRAST0,A0
	BSR	BACRCON
	MOVE.L	ACTRAST1,A0
BACRCON:
	MOVE.W	$06(A0),D4
	MOVE.L	#$0666,D5
	BSR	BAJARGB
	MOVE.W	D0,$06(A0)
	MOVE.W	$0E(A0),D4
	MOVE.L	#$0333,D5
	BSR	BAJARGB
	MOVE.W	D0,$0E(A0)
	MOVE.W	$2E(A0),D4
	MOVE.L	#$0333,D5
	BSR	BAJARGB
	MOVE.W	D0,$2E(A0)
	MOVE.W	$36(A0),D4
	MOVE.L	#$0666,D5
	BSR	BAJARGB
	MOVE.W	D0,$36(A0)
	RTS

BAJARGB:
	MOVE.W	D5,D0
	BSR	RUTCOLDESCOM
	MOVE.W	D1,D5
	MOVE.W	D2,D6
	MOVE.W	D3,D7
	MOVE.W	D4,D0
	BSR	RUTCOLDESCOM
	MOVE.W	D1,D0
	MOVE.W	D5,D4
	BSR	RUTCOLBAJA
	MOVE.W	D0,D1
	MOVE.W	D2,D0
	MOVE.W	D6,D4
	BSR	RUTCOLBAJA
	MOVE.W	D0,D2
	MOVE.W	D3,D0
	MOVE.W	D7,D4
	BSR	RUTCOLBAJA
	MOVE.W	D0,D3
	BSR	RUTCOLCOMPON
	RTS
RUTCOLBAJA:
	SUB.W	D4,D0
	BPL	RET
	CLR.W	D0
	RTS

BAJACOLRAST2:
	TST.W	BCRDAT00
	BEQ	RET
	MOVE.W	VELOCRAST,D0
	CMP.W	IRADAT00,D0
	BNE	RET
	MOVE.L	ACTRAST0,A0
	BSR	BACRCON2
	MOVE.L	ACTRAST1,A0
	BSR	BACRCON2
	SUB.W	#$01,BCRDAT00
	RTS
BACRCON2:
	ADD.L	#$06,A0
	MOVEQ.L	#$07-1,D0
BACRBUC00:
	MOVE.L	D0,-(SP)
	MOVE.W	(A0),D4
	CLR.L	D5
	MOVE.W	BCRDAT00,D5
	MULU	#$0111,D5
	TST.W	BCRDAT01
	BEQ.S	BACRBUC01
	NOT.W	D5
	AND.W	#$0FFF,D5
	ADD.W	#$0111,D5
BACRBUC01:
	BSR	BAJARGB
	MOVE.W	D0,(A0)
	ADD.L	#$08,A0
	MOVE.L	(SP)+,D0
	DBF	D0,BACRBUC00
	RTS

INTRASTER:
	SUB.W	#$01,IRADAT00
	BNE	RET
	MOVE.W	VELOCRAST,IRADAT00
	MOVE.L	ACTRAST1,A2
	LEA	COLRASTER1,A0
	BSR	ARRRASTER
	MOVE.L	ACTRAST0,A2
	LEA	COLRASTER0,A0
	BSR	ABARASTER
	RTS
	
ARRRASTER:
	LEA	$04(A0),A1
	MOVEQ.L	#$07-1,D1
	CLR.L	D2
	MOVE.W	$02(A0),D2
	LSL.L	#$1,D2
	ADD.L	D2,A1
	MOVE.W	(A0),D0
	MOVE.W	$02(A0),D2
	CMP.W	D2,D0
	BNE.S	ABRCON00
	CLR.W	$02(A0)
	LEA	$04(A0),A1
ABRCON00:
	CMP.W	D2,D0
	BNE.S	ABRCON01
	CLR.W	D2
	LEA	$04(A0),A1
ABRCON01:
	ADD.L	#$06,A2
	MOVE.W	(A1)+,(A2)+
	ADD.W	#$01,D2
	DBF	D1,ABRCON00
	ADD.W	#$01,$02(A0)
	RTS

ABARASTER:
	ADD.L	#(8*7),A2
	LEA	$04(A0),A1
	MOVEQ.L	#$07-1,D1
	CLR.L	D2
	MOVE.W	$02(A0),D2
	LSL.L	#$1,D2
	ADD.L	D2,A1
	MOVE.W	(A0),D0
	MOVE.W	$02(A0),D2
	TST.W	D2
	BNE.S	ARRCON00
	MOVE.W	(A0),$02(A0)
	LEA	$04(A0),A1
	CLR.L	D3
	MOVE.W	$02(A0),D3
	LSL.L	#$1,D3
	ADD.L	D3,A1
	MOVE.W	$02(A0),D2
ARRCON00:
	TST.W	D2
	BNE.S	ARRCON01
	MOVE.W	(A0),D2
	LEA	$04(A0),A1
	CLR.L	D3
	MOVE.W	D2,D3
	LSL.L	#$1,D3
	ADD.L	D3,A1
ARRCON01:
	MOVE.W	-(A1),-(A2)
	SUB.L	#$06,A2
	SUB.W	#$01,D2
	DBF	D1,ARRCON00
	SUB.W	#$01,$02(A0)
	RTS


ABRELOGO:
	TST.W	ABLDAT00
	BEQ	RET
	SUB.B	#$01,VISIBLE+3
	ADD.B	#$01,VISIBLE+7
	SUB.W	#$01,ABLDAT00
	RTS

CIERRATXT:
	TST.W	CITDAT00
	BEQ	RET
	ADD.B	#$03,VISIBLE2+3
	SUB.B	#$03,VISIBLE2+7
	SUB.W	#$01,CITDAT00
	RTS



;	RUTINA  SUBIR/BAJAR TONALIDADES DE COLORES
;	Por:  007    (14/2/1992)

;	A0=DIR. DE NUEVOS COLORES
;	A1=DIR. DEL COPPER-LIST ($180,X,182,X,...)
;	D0=NUMERO DE COLORES -1
;	D1=BITS A 1; COLORES PROTEGIDOS. COLOR 0=BIT 0
;	D2=VELOCIAD (NUMERO DE INTRRUPCIONES PARA EJECUTAR RUTINA)

RUTCOLINIT:
	MOVE.W	RUTCOLCONTA0,D3
	CMP.W	#$11,D3
	BEQ.S	RUTCOLFIN3
	BCC.S	RUTCOLFIN3
	ADD.W	#$01,RUTCOLCONTA0
	MULU	#$0E,D3
	LEA	RUTCOLCONTA1,A2
	ADDA.L	D3,A2
	MOVE.L	A0,(A2)+
	MOVE.L	A1,(A2)+
	MOVE.W	D0,(A2)+
	MOVE.W	D1,(A2)+
	MOVE.W	#$10,(A2)+
	MOVE.W	D2,RUTCOLCONTA2
	MOVE.W	D2,RUTCOLCONTA3
RUTCOLFIN3:
	RTS

RUTCOLINTER:
	TST.W	RUTCOLCONTA3
	BEQ.S	RUTCOLPROG
	SUB.W	#$01,RUTCOLCONTA3
	RTS
RUTCOLPROG:
	MOVE.W	RUTCOLCONTA2,RUTCOLCONTA3
	TST.W	RUTCOLCONTA0
	BNE.S	RUTCOLPRG0
	RTS
RUTCOLPRG0:
	MOVE.W	RUTCOLCONTA0,D0
	LEA	RUTCOLCONTA1(PC),A2
	SUB.W	#$01,D0
RUTCOLBUC0:
	MOVE.L	(A2)+,A0
	MOVE.L	(A2)+,A1
	MOVE.W	(A2)+,D7
	MOVE.W	(A2)+,D6
	MOVEM.L	A2/D0,-(A7)
	BSR	RUTCOLPRG1
	MOVEM.L	(A7)+,A2/D0
	SUB.W	#$01,(A2)+
	DBF	D0,RUTCOLBUC0

	MOVE.W	RUTCOLCONTA0,D0
	LEA	RUTCOLCONTA1(PC),A2
	SUB.W	#$01,D0
RUTCOLBUC1:
	ADD.W	#$0C,A2
	TST.W	(A2)+
	BEQ.S	RUTCOLBORR0
	DBF	D0,RUTCOLBUC1
	RTS
RUTCOLBORR0:
	MOVE.L	A2,A1
	MOVE.L	A2,A0
	SUBA.L	#$0E,A0
	MOVE.W	D0,D1
	ADD.W	#$01,D1
	MULU	#$07,D1
	SUB.W	#$01,D1
	BCS.S	RUTCOLFIN2
RUTCOLBUC2:
	MOVE.W	(A1)+,(A0)+
	DBF	D1,RUTCOLBUC2
RUTCOLFIN2:
	SUB.W	#$01,RUTCOLCONTA0
	BNE.S	RUTCOLBUC1
	RTS

RUTCOLPRG1:
	BTST	#$00,D6
	BNE.S	RUTCOLCON2
	MOVE.W	(A0),D0
	BSR	RUTCOLDESCOM
	MOVEM.W	D1-D3,-(A7)
	MOVE.W	$2(A1),D0
	BSR	RUTCOLDESCOM

	MOVE.B	D1,D5
	MOVE.W	(A7)+,D4
	BSR	RUTCOLANALIZ
	MOVE.B	D5,D1
	MOVE.B	D2,D5
	MOVE.W	(A7)+,D4
	BSR	RUTCOLANALIZ
	MOVE.B	D5,D2
	MOVE.B	D3,D5
	MOVE.W	(A7)+,D4
	BSR	RUTCOLANALIZ
	MOVE.B	D5,D3

	BSR	RUTCOLCOMPON
	MOVE.W	D0,$2(A1)
RUTCOLCON2:
	ADD.L	#$02,A0
	ADD.L	#$04,A1
	LSR.W	#$01,D6
	DBF	D7,RUTCOLPRG1
	RTS

RUTCOLDESCOM:
	MOVE.B	D0,D1
	AND.L	#$0F,D1
	LSR.W	#$4,D0
	MOVE.B	D0,D2
	AND.L	#$0F,D2
	LSR.W	#$4,D0
	MOVE.B	D0,D3
	AND.L	#$0F,D3
	RTS

RUTCOLCOMPON:
	MOVEQ.L	#$00,D0
	MOVE.B	D3,D0
	LSL.W	#$04,D0
	OR.B	D2,D0
	LSL.W	#$04,D0
	OR.B	D1,D0
	RTS

RUTCOLANALIZ:
	CMP.B	D4,D5
	BEQ.S	RUTCOLFIN1
	BCS.S	RUTCOLSUB0
	SUB.B	#$1,D5
RUTCOLFIN1:
	RTS
RUTCOLSUB0:
	MOVE.W	(A2),D0		;  PONER ESTAS
	CMP.B	D0,D4		;  TRES LINEAS
	BCS.S	RUTCOLFIN1	;  A ; PARA OTRO EFECTO.
	ADD.B	#$01,D5
	RTS

RUTCOLCONTA0:	DC.W	0
RUTCOLCONTA1:	DS.W	$F0
RUTCOLCONTA2:	DC.W	0
RUTCOLCONTA3:	DC.W	0



CREAPLANOS:
	MOVE.W	#$00E0,D4
CRPBUC00:
	TST.L	(A0)
	BEQ	RET
	MOVE.L	(A0)+,A1
	MOVEM.L	(A0)+,D0-D2
	TST.L	D2
	BMI.S	CRPBUC00
CRPBUC01:
	SWAP	D0
	MOVE.W	D4,(A1)+
	MOVE.W	D0,(A1)+
	ADD.W	#$02,D4
	SWAP	D0
	MOVE.W	D4,(A1)+
	MOVE.W	D0,(A1)+
	ADD.W	#$02,D4
	ADD.L	D1,D0
	DBF	D2,CRPBUC01		
	BRA.S	CREAPLANOS	

CREACOLORES:
	MOVE.W	#$0180,D1
CRCBUC00:
	TST.L	(A0)
	BEQ	RET
	MOVEM.L	(A0)+,A1-A2
	MOVE.L	(A0)+,D0
	TST.L	D0
	BMI.S	CRCBUC00
CRCBUC01:
	MOVE.W	D1,(A1)+
	MOVE.W	(A2)+,(A1)+
	ADD.W	#$02,D1
	DBF	D0,CRCBUC01
	BRA.S	CREACOLORES	

CREASPRITES:
	TST.L	(A0)
	BEQ	RET
	MOVE.W	#$0120,D2
	MOVE.L	(A0)+,A1
	MOVEM.L	(A0)+,D0-D1
	LSL.W	#$02,D1
	ADD.L	D1,D2	
	MOVE.W	D2,(A1)+
	SWAP	D0
	MOVE.W	D0,(A1)+
	ADD.L	#$02,D2
	MOVE.W	D2,(A1)+
	SWAP	D0
	MOVE.W	D0,(A1)+
	BRA.S	CREASPRITES

;**************************************************
;*    ----- Protracker V2.1A Playroutine -----    *
;* Peter "CRAYON" Hanning / Mushroom Studios 1992 *
;*     Vinterstigen 12, 14440 Ronninge, Sweden    *
;**************************************************
	IFEQ	MUSICA
mt_init:
	LEA	mt_data,A0
	MOVE.L	A0,mt_SongDataPtr
	MOVE.L	A0,A1
	LEA	952(A1),A1
	MOVEQ	#127,D0
	MOVEQ	#0,D1
mtloop	MOVE.L	D1,D2
	SUBQ.W	#1,D0
mtloop2	MOVE.B	(A1)+,D1
	CMP.B	D2,D1
	BGT.S	mtloop
	DBRA	D0,mtloop2
	ADDQ.B	#1,D2
	LEA	mt_SampleStarts(PC),A1
	ASL.L	#8,D2
	ASL.L	#2,D2
	ADD.L	#1084,D2
	ADD.L	A0,D2
	MOVE.L	D2,A2
	MOVEQ	#30,D0
mtloop3	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	#30,A0
	DBRA	D0,mtloop3
	OR.B	#2,$BFE001
	MOVE.B	#6,mt_speed
	CLR.B	mt_counter
	CLR.B	mt_SongPos
	CLR.W	mt_PatternPos
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-A6,-(SP)
	ADDQ.B	#1,mt_counter
	MOVE.B	mt_counter(PC),D0
	CMP.B	mt_speed(PC),D0
	BLO.S	mt_NoNewNote
	CLR.B	mt_counter
	TST.B	mt_PattDelTime2
	BEQ.S	mt_GetNewNote
	BSR.S	mt_NoNewAllChannels
	BRA	mt_dskip

mt_NoNewNote
	BSR.S	mt_NoNewAllChannels
	BRA	mt_NoNewPosYet

mt_NoNewAllChannels
	LEA	$DFF0A0,A5
	LEA	mt_chan1temp(PC),A6
	BSR	mt_CheckEfx
	LEA	$DFF0B0,A5
	LEA	mt_chan2temp(PC),A6
	BSR	mt_CheckEfx
	LEA	$DFF0C0,A5
	LEA	mt_chan3temp(PC),A6
	BSR	mt_CheckEfx
	LEA	$DFF0D0,A5
	LEA	mt_chan4temp(PC),A6
	BRA	mt_CheckEfx

mt_GetNewNote
	MOVE.L	mt_SongDataPtr(PC),A0
	LEA	12(A0),A3
	LEA	952(A0),A2	;pattpo
	LEA	1084(A0),A0	;patterndata
	MOVEQ	#0,D0
	MOVEQ	#0,D1
	MOVE.B	mt_SongPos(PC),D0
	MOVE.B	(A2,D0.W),D1
	ASL.L	#8,D1
	ASL.L	#2,D1
	ADD.W	mt_PatternPos(PC),D1
	CLR.W	mt_DMACONtemp

	LEA	$DFF0A0,A5
	LEA	mt_chan1temp(PC),A6
	BSR.S	mt_PlayVoice
	LEA	$DFF0B0,A5
	LEA	mt_chan2temp(PC),A6
	BSR.S	mt_PlayVoice
	LEA	$DFF0C0,A5
	LEA	mt_chan3temp(PC),A6
	BSR.S	mt_PlayVoice
	LEA	$DFF0D0,A5
	LEA	mt_chan4temp(PC),A6
	BSR.S	mt_PlayVoice
	BRA	mt_SetDMA

mt_PlayVoice
	TST.L	(A6)
	BNE.S	mt_plvskip
	BSR	mt_PerNop
mt_plvskip
	MOVE.L	(A0,D1.L),(A6)
	ADDQ.L	#4,D1
	MOVEQ	#0,D2
	MOVE.B	n_cmd(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	mt_SetRegs
	MOVEQ	#0,D3
	LEA	mt_SampleStarts(PC),A1
	MOVE	D2,D4
	SUBQ.L	#1,D2
	ASL.L	#2,D2
	MULU	#30,D4
	MOVE.L	(A1,D2.L),n_start(A6)
	MOVE.W	(A3,D4.L),n_length(A6)
	MOVE.W	(A3,D4.L),n_reallength(A6)
	MOVE.B	2(A3,D4.L),n_finetune(A6)
	MOVE.B	3(A3,D4.L),n_volume(A6)
	MOVE.W	4(A3,D4.L),D3 ; Get repeat
	TST.W	D3
	BEQ.S	mt_NoLoop
	MOVE.L	n_start(A6),D2	; Get start
	ASL.W	#1,D3
	ADD.L	D3,D2		; Add repeat
	MOVE.L	D2,n_loopstart(A6)
	MOVE.L	D2,n_wavestart(A6)
	MOVE.W	4(A3,D4.L),D0	; Get repeat
	ADD.W	6(A3,D4.L),D0	; Add replen
	MOVE.W	D0,n_length(A6)
	MOVE.W	6(A3,D4.L),n_replen(A6)	; Save replen
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0

	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont0
	CLR.B	D0
mt_cont0:
	MOVE.W	D0,8(A5)	; Set volume
	BRA.S	mt_SetRegs

mt_NoLoop
	MOVE.L	n_start(A6),D2
	ADD.L	D3,D2
	MOVE.L	D2,n_loopstart(A6)
	MOVE.L	D2,n_wavestart(A6)
	MOVE.W	6(A3,D4.L),n_replen(A6)	; Save replen
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont1
	CLR.B	D0
mt_cont1:
	MOVE.W	D0,8(A5)	; Set volume
mt_SetRegs
	MOVE.W	(A6),D0
	AND.W	#$0FFF,D0
	BEQ	mt_CheckMoreEfx	; If no note
	MOVE.W	2(A6),D0
	AND.W	#$0FF0,D0
	CMP.W	#$0E50,D0
	BEQ.S	mt_DoSetFineTune
	MOVE.B	2(A6),D0
	AND.B	#$0F,D0
	CMP.B	#3,D0	; TonePortamento
	BEQ.S	mt_ChkTonePorta
	CMP.B	#5,D0
	BEQ.S	mt_ChkTonePorta
	CMP.B	#9,D0	; Sample Offset
	BNE.S	mt_SetPeriod
	BSR	mt_CheckMoreEfx
	BRA.S	mt_SetPeriod

mt_DoSetFineTune
	BSR	mt_SetFineTune
	BRA.S	mt_SetPeriod

mt_ChkTonePorta
	BSR	mt_SetTonePorta
	BRA	mt_CheckMoreEfx

mt_SetPeriod
	MOVEM.L	D0-D1/A0-A1,-(SP)
	MOVE.W	(A6),D1
	AND.W	#$0FFF,D1
	LEA	mt_PeriodTable(PC),A1
	MOVEQ	#0,D0
	MOVEQ	#36,D7
mt_ftuloop
	CMP.W	(A1,D0.W),D1
	BHS.S	mt_ftufound
	ADDQ.L	#2,D0
	DBRA	D7,mt_ftuloop
mt_ftufound
	MOVEQ	#0,D1
	MOVE.B	n_finetune(A6),D1
	MULU	#36*2,D1
	ADD.L	D1,A1
	MOVE.W	(A1,D0.W),n_period(A6)
	MOVEM.L	(SP)+,D0-D1/A0-A1
	MOVE.W	2(A6),D0
	AND.W	#$0FF0,D0
	CMP.W	#$0ED0,D0 ; Notedelay
	BEQ	mt_CheckMoreEfx
	MOVE.W	n_dmabit(A6),$DFF096
	BTST	#2,n_wavecontrol(A6)
	BNE.S	mt_vibnoc
	CLR.B	n_vibratopos(A6)
mt_vibnoc
	BTST	#6,n_wavecontrol(A6)
	BNE.S	mt_trenoc
	CLR.B	n_tremolopos(A6)
mt_trenoc
	MOVE.L	n_start(A6),(A5)	; Set start
	MOVE.W	n_length(A6),4(A5)	; Set length
	MOVE.W	n_period(A6),D0
	MOVE.W	D0,6(A5)		; Set period
	MOVE.W	n_dmabit(A6),D0
	OR.W	D0,mt_DMACONtemp
	BRA	mt_CheckMoreEfx
 
mt_SetDMA
	MOVE.W	#300,D0
mt_WaitDMA
	DBRA	D0,mt_WaitDMA
	MOVE.W	mt_DMACONtemp(PC),D0
	OR.W	#$8000,D0
	MOVE.W	D0,$DFF096
	MOVE.W	#300,D0
mt_WaitDMA2
	DBRA	D0,mt_WaitDMA2
	LEA	$DFF000,A5
	LEA	mt_chan4temp(PC),A6
	MOVE.L	n_loopstart(A6),$D0(A5)
	MOVE.W	n_replen(A6),$D4(A5)
	LEA	mt_chan3temp(PC),A6
	MOVE.L	n_loopstart(A6),$C0(A5)
	MOVE.W	n_replen(A6),$C4(A5)
	LEA	mt_chan2temp(PC),A6
	MOVE.L	n_loopstart(A6),$B0(A5)
	MOVE.W	n_replen(A6),$B4(A5)
	LEA	mt_chan1temp(PC),A6
	MOVE.L	n_loopstart(A6),$A0(A5)
	MOVE.W	n_replen(A6),$A4(A5)
mt_dskip
	ADD.W	#16,mt_PatternPos
	MOVE.B	mt_PattDelTime,D0
	BEQ.S	mt_dskc
	MOVE.B	D0,mt_PattDelTime2
	CLR.B	mt_PattDelTime
mt_dskc	TST.B	mt_PattDelTime2
	BEQ.S	mt_dska
	SUBQ.B	#1,mt_PattDelTime2
	BEQ.S	mt_dska
	SUB.W	#16,mt_PatternPos
mt_dska	TST.B	mt_PBreakFlag
	BEQ.S	mt_nnpysk
	SF	mt_PBreakFlag
	MOVEQ	#0,D0
	MOVE.B	mt_PBreakPos(PC),D0
	CLR.B	mt_PBreakPos
	LSL.W	#4,D0
	MOVE.W	D0,mt_PatternPos
mt_nnpysk
	CMP.W	#1024,mt_PatternPos
	BLO.S	mt_NoNewPosYet
mt_NextPosition	
	MOVEQ	#0,D0
	MOVE.B	mt_PBreakPos(PC),D0
	LSL.W	#4,D0
	MOVE.W	D0,mt_PatternPos
	CLR.B	mt_PBreakPos
	CLR.B	mt_PosJumpFlag
	ADDQ.B	#1,mt_SongPos
	AND.B	#$7F,mt_SongPos
	MOVE.B	mt_SongPos(PC),D1
	MOVE.L	mt_SongDataPtr(PC),A0
	CMP.B	950(A0),D1
	BLO.S	mt_NoNewPosYet
	CLR.B	mt_SongPos
mt_NoNewPosYet	
	TST.B	mt_PosJumpFlag
	BNE.S	mt_NextPosition
	MOVEM.L	(SP)+,D0-D4/A0-A6
	RTS

mt_CheckEfx
	BSR	mt_UpdateFunk
	MOVE.W	n_cmd(A6),D0
	AND.W	#$0FFF,D0
	BEQ.S	mt_PerNop
	MOVE.B	n_cmd(A6),D0
	AND.B	#$0F,D0
	BEQ.S	mt_Arpeggio
	CMP.B	#1,D0
	BEQ	mt_PortaUp
	CMP.B	#2,D0
	BEQ	mt_PortaDown
	CMP.B	#3,D0
	BEQ	mt_TonePortamento
	CMP.B	#4,D0
	BEQ	mt_Vibrato
	CMP.B	#5,D0
	BEQ	mt_TonePlusVolSlide
	CMP.B	#6,D0
	BEQ	mt_VibratoPlusVolSlide
	CMP.B	#$E,D0
	BEQ	mt_E_Commands
SetBack	MOVE.W	n_period(A6),6(A5)
	CMP.B	#7,D0
	BEQ	mt_Tremolo
	CMP.B	#$A,D0
	BEQ	mt_VolumeSlide
mt_Return2
	RTS

mt_PerNop
	MOVE.W	n_period(A6),6(A5)
	RTS

mt_Arpeggio
	MOVEQ	#0,D0
	MOVE.B	mt_counter(PC),D0
	DIVS	#3,D0
	SWAP	D0
	CMP.W	#0,D0
	BEQ.S	mt_Arpeggio2
	CMP.W	#2,D0
	BEQ.S	mt_Arpeggio1
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	LSR.B	#4,D0
	BRA.S	mt_Arpeggio3

mt_Arpeggio1
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#15,D0
	BRA.S	mt_Arpeggio3

mt_Arpeggio2
	MOVE.W	n_period(A6),D2
	BRA.S	mt_Arpeggio4

mt_Arpeggio3
	ASL.W	#1,D0
	MOVEQ	#0,D1
	MOVE.B	n_finetune(A6),D1
	MULU	#36*2,D1
	LEA	mt_PeriodTable(PC),A0
	ADD.L	D1,A0
	MOVEQ	#0,D1
	MOVE.W	n_period(A6),D1
	MOVEQ	#36,D7
mt_arploop
	MOVE.W	(A0,D0.W),D2
	CMP.W	(A0),D1
	BHS.S	mt_Arpeggio4
	ADDQ.L	#2,A0
	DBRA	D7,mt_arploop
	RTS

mt_Arpeggio4
	MOVE.W	D2,6(A5)
	RTS

mt_FinePortaUp
	TST.B	mt_counter
	BNE.S	mt_Return2
	MOVE.B	#$0F,mt_LowMask
mt_PortaUp
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	mt_LowMask(PC),D0
	MOVE.B	#$FF,mt_LowMask
	SUB.W	D0,n_period(A6)
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	CMP.W	#113,D0
	BPL.S	mt_PortaUskip
	AND.W	#$F000,n_period(A6)
	OR.W	#113,n_period(A6)
mt_PortaUskip
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	MOVE.W	D0,6(A5)
	RTS	
 
mt_FinePortaDown
	TST.B	mt_counter
	BNE	mt_Return2
	MOVE.B	#$0F,mt_LowMask
mt_PortaDown
	CLR.W	D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	mt_LowMask(PC),D0
	MOVE.B	#$FF,mt_LowMask
	ADD.W	D0,n_period(A6)
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	CMP.W	#856,D0
	BMI.S	mt_PortaDskip
	AND.W	#$F000,n_period(A6)
	OR.W	#856,n_period(A6)
mt_PortaDskip
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	MOVE.W	D0,6(A5)
	RTS

mt_SetTonePorta
	MOVE.L	A0,-(SP)
	MOVE.W	(A6),D2
	AND.W	#$0FFF,D2
	MOVEQ	#0,D0
	MOVE.B	n_finetune(A6),D0
	MULU	#37*2,D0
	LEA	mt_PeriodTable(PC),A0
	ADD.L	D0,A0
	MOVEQ	#0,D0
mt_StpLoop
	CMP.W	(A0,D0.W),D2
	BHS.S	mt_StpFound
	ADDQ.W	#2,D0
	CMP.W	#37*2,D0
	BLO.S	mt_StpLoop
	MOVEQ	#35*2,D0
mt_StpFound
	MOVE.B	n_finetune(A6),D2
	AND.B	#8,D2
	BEQ.S	mt_StpGoss
	TST.W	D0
	BEQ.S	mt_StpGoss
	SUBQ.W	#2,D0
mt_StpGoss
	MOVE.W	(A0,D0.W),D2
	MOVE.L	(SP)+,A0
	MOVE.W	D2,n_wantedperiod(A6)
	MOVE.W	n_period(A6),D0
	CLR.B	n_toneportdirec(A6)
	CMP.W	D0,D2
	BEQ.S	mt_ClearTonePorta
	BGE	mt_Return2
	MOVE.B	#1,n_toneportdirec(A6)
	RTS

mt_ClearTonePorta
	CLR.W	n_wantedperiod(A6)
	RTS

mt_TonePortamento
	MOVE.B	n_cmdlo(A6),D0
	BEQ.S	mt_TonePortNoChange
	MOVE.B	D0,n_toneportspeed(A6)
	CLR.B	n_cmdlo(A6)
mt_TonePortNoChange
	TST.W	n_wantedperiod(A6)
	BEQ	mt_Return2
	MOVEQ	#0,D0
	MOVE.B	n_toneportspeed(A6),D0
	TST.B	n_toneportdirec(A6)
	BNE.S	mt_TonePortaUp
mt_TonePortaDown
	ADD.W	D0,n_period(A6)
	MOVE.W	n_wantedperiod(A6),D0
	CMP.W	n_period(A6),D0
	BGT.S	mt_TonePortaSetPer
	MOVE.W	n_wantedperiod(A6),n_period(A6)
	CLR.W	n_wantedperiod(A6)
	BRA.S	mt_TonePortaSetPer

mt_TonePortaUp
	SUB.W	D0,n_period(A6)
	MOVE.W	n_wantedperiod(A6),D0
	CMP.W	n_period(A6),D0
	BLT.S	mt_TonePortaSetPer
	MOVE.W	n_wantedperiod(A6),n_period(A6)
	CLR.W	n_wantedperiod(A6)

mt_TonePortaSetPer
	MOVE.W	n_period(A6),D2
	MOVE.B	n_glissfunk(A6),D0
	AND.B	#$0F,D0
	BEQ.S	mt_GlissSkip
	MOVEQ	#0,D0
	MOVE.B	n_finetune(A6),D0
	MULU	#36*2,D0
	LEA	mt_PeriodTable(PC),A0
	ADD.L	D0,A0
	MOVEQ	#0,D0
mt_GlissLoop
	CMP.W	(A0,D0.W),D2
	BHS.S	mt_GlissFound
	ADDQ.W	#2,D0
	CMP.W	#36*2,D0
	BLO.S	mt_GlissLoop
	MOVEQ	#35*2,D0
mt_GlissFound
	MOVE.W	(A0,D0.W),D2
mt_GlissSkip
	MOVE.W	D2,6(A5) ; Set period
	RTS

mt_Vibrato
	MOVE.B	n_cmdlo(A6),D0
	BEQ.S	mt_Vibrato2
	MOVE.B	n_vibratocmd(A6),D2
	AND.B	#$0F,D0
	BEQ.S	mt_vibskip
	AND.B	#$F0,D2
	OR.B	D0,D2
mt_vibskip
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	BEQ.S	mt_vibskip2
	AND.B	#$0F,D2
	OR.B	D0,D2
mt_vibskip2
	MOVE.B	D2,n_vibratocmd(A6)
mt_Vibrato2
	MOVE.B	n_vibratopos(A6),D0
	LEA	mt_VibratoTable(PC),A4
	LSR.W	#2,D0
	AND.W	#$001F,D0
	MOVEQ	#0,D2
	MOVE.B	n_wavecontrol(A6),D2
	AND.B	#$03,D2
	BEQ.S	mt_vib_sine
	LSL.B	#3,D0
	CMP.B	#1,D2
	BEQ.S	mt_vib_rampdown
	MOVE.B	#255,D2
	BRA.S	mt_vib_set
mt_vib_rampdown
	TST.B	n_vibratopos(A6)
	BPL.S	mt_vib_rampdown2
	MOVE.B	#255,D2
	SUB.B	D0,D2
	BRA.S	mt_vib_set
mt_vib_rampdown2
	MOVE.B	D0,D2
	BRA.S	mt_vib_set
mt_vib_sine
	MOVE.B	0(A4,D0.W),D2
mt_vib_set
	MOVE.B	n_vibratocmd(A6),D0
	AND.W	#15,D0
	MULU	D0,D2
	LSR.W	#7,D2
	MOVE.W	n_period(A6),D0
	TST.B	n_vibratopos(A6)
	BMI.S	mt_VibratoNeg
	ADD.W	D2,D0
	BRA.S	mt_Vibrato3
mt_VibratoNeg
	SUB.W	D2,D0
mt_Vibrato3
	MOVE.W	D0,6(A5)
	MOVE.B	n_vibratocmd(A6),D0
	LSR.W	#2,D0
	AND.W	#$003C,D0
	ADD.B	D0,n_vibratopos(A6)
	RTS

mt_TonePlusVolSlide
	BSR	mt_TonePortNoChange
	BRA	mt_VolumeSlide

mt_VibratoPlusVolSlide
	BSR.S	mt_Vibrato2
	BRA	mt_VolumeSlide

mt_Tremolo
	MOVE.B	n_cmdlo(A6),D0
	BEQ.S	mt_Tremolo2
	MOVE.B	n_tremolocmd(A6),D2
	AND.B	#$0F,D0
	BEQ.S	mt_treskip
	AND.B	#$F0,D2
	OR.B	D0,D2
mt_treskip
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	BEQ.S	mt_treskip2
	AND.B	#$0F,D2
	OR.B	D0,D2
mt_treskip2
	MOVE.B	D2,n_tremolocmd(A6)
mt_Tremolo2
	MOVE.B	n_tremolopos(A6),D0
	LEA	mt_VibratoTable(PC),A4
	LSR.W	#2,D0
	AND.W	#$001F,D0
	MOVEQ	#0,D2
	MOVE.B	n_wavecontrol(A6),D2
	LSR.B	#4,D2
	AND.B	#$03,D2
	BEQ.S	mt_tre_sine
	LSL.B	#3,D0
	CMP.B	#1,D2
	BEQ.S	mt_tre_rampdown
	MOVE.B	#255,D2
	BRA.S	mt_tre_set
mt_tre_rampdown
	TST.B	n_vibratopos(A6)
	BPL.S	mt_tre_rampdown2
	MOVE.B	#255,D2
	SUB.B	D0,D2
	BRA.S	mt_tre_set
mt_tre_rampdown2
	MOVE.B	D0,D2
	BRA.S	mt_tre_set
mt_tre_sine
	MOVE.B	0(A4,D0.W),D2
mt_tre_set
	MOVE.B	n_tremolocmd(A6),D0
	AND.W	#15,D0
	MULU	D0,D2
	LSR.W	#6,D2
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	TST.B	n_tremolopos(A6)
	BMI.S	mt_TremoloNeg
	ADD.W	D2,D0
	BRA.S	mt_Tremolo3
mt_TremoloNeg
	SUB.W	D2,D0
mt_Tremolo3
	BPL.S	mt_TremoloSkip
	CLR.W	D0
mt_TremoloSkip
	CMP.W	#$40,D0
	BLS.S	mt_TremoloOk
	MOVE.W	#$40,D0
mt_TremoloOk
	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont2
	CLR.B	D0
mt_cont2:
	MOVE.W	D0,8(A5)
	MOVE.B	n_tremolocmd(A6),D0
	LSR.W	#2,D0
	AND.W	#$003C,D0
	ADD.B	D0,n_tremolopos(A6)
	RTS

mt_SampleOffset
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	BEQ.S	mt_sononew
	MOVE.B	D0,n_sampleoffset(A6)
mt_sononew
	MOVE.B	n_sampleoffset(A6),D0
	LSL.W	#7,D0
	CMP.W	n_length(A6),D0
	BGE.S	mt_sofskip
	SUB.W	D0,n_length(A6)
	LSL.W	#1,D0
	ADD.L	D0,n_start(A6)
	RTS
mt_sofskip
	MOVE.W	#$0001,n_length(A6)
	RTS

mt_VolumeSlide
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	LSR.B	#4,D0
	TST.B	D0
	BEQ.S	mt_VolSlideDown
mt_VolSlideUp
	ADD.B	D0,n_volume(A6)
	CMP.B	#$40,n_volume(A6)
	BMI.S	mt_vsuskip
	MOVE.B	#$40,n_volume(A6)
mt_vsuskip
	MOVE.B	n_volume(A6),D0
	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont3
	CLR.B	D0
mt_cont3:
	MOVE.W	D0,8(A5)
	RTS

mt_VolSlideDown
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
mt_VolSlideDown2
	SUB.B	D0,n_volume(A6)
	BPL.S	mt_vsdskip
	CLR.B	n_volume(A6)
mt_vsdskip
	MOVE.B	n_volume(A6),D0
	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont4
	CLR.B	D0
mt_cont4:
	MOVE.W	D0,8(A5)
	RTS

mt_PositionJump
	MOVE.B	n_cmdlo(A6),D0
	SUBQ.B	#1,D0
	MOVE.B	D0,mt_SongPos
mt_pj2	CLR.B	mt_PBreakPos
	ST 	mt_PosJumpFlag
	RTS

mt_VolumeChange
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	CMP.B	#$40,D0
	BLS.S	mt_VolumeOk
	MOVEQ	#$40,D0
mt_VolumeOk
	MOVE.B	D0,n_volume(A6)
	SUB.W	MENOS_VOL,D0
	BPL.S	mt_cont5
	CLR.B	D0
mt_cont5:
	MOVE.W	D0,8(A5)
	RTS

mt_PatternBreak
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	MOVE.L	D0,D2
	LSR.B	#4,D0
	MULU	#10,D0
	AND.B	#$0F,D2
	ADD.B	D2,D0
	CMP.B	#63,D0
	BHI.S	mt_pj2
	MOVE.B	D0,mt_PBreakPos
	ST	mt_PosJumpFlag
	RTS

mt_SetSpeed
	MOVE.B	3(A6),D0
	BEQ	mt_Return2
	CLR.B	mt_counter
	MOVE.B	D0,mt_speed
	RTS

mt_CheckMoreEfx
	BSR	mt_UpdateFunk
	MOVE.B	2(A6),D0
	AND.B	#$0F,D0
	CMP.B	#$9,D0
	BEQ	mt_SampleOffset
	CMP.B	#$B,D0
	BEQ	mt_PositionJump
	CMP.B	#$D,D0
	BEQ.S	mt_PatternBreak
	CMP.B	#$E,D0
	BEQ.S	mt_E_Commands
	CMP.B	#$F,D0
	BEQ.S	mt_SetSpeed
	CMP.B	#$C,D0
	BEQ	mt_VolumeChange
	BRA	mt_PerNop

mt_E_Commands
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	LSR.B	#4,D0
	BEQ.S	mt_FilterOnOff
	CMP.B	#1,D0
	BEQ	mt_FinePortaUp
	CMP.B	#2,D0
	BEQ	mt_FinePortaDown
	CMP.B	#3,D0
	BEQ.S	mt_SetGlissControl
	CMP.B	#4,D0
	BEQ	mt_SetVibratoControl
	CMP.B	#5,D0
	BEQ	mt_SetFineTune
	CMP.B	#6,D0
	BEQ	mt_JumpLoop
	CMP.B	#7,D0
	BEQ	mt_SetTremoloControl
	CMP.B	#9,D0
	BEQ	mt_RetrigNote
	CMP.B	#$A,D0
	BEQ	mt_VolumeFineUp
	CMP.B	#$B,D0
	BEQ	mt_VolumeFineDown
	CMP.B	#$C,D0
	BEQ	mt_NoteCut
	CMP.B	#$D,D0
	BEQ	mt_NoteDelay
	CMP.B	#$E,D0
	BEQ	mt_PatternDelay
	CMP.B	#$F,D0
	BEQ	mt_FunkIt
	RTS

mt_FilterOnOff
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#1,D0
	ASL.B	#1,D0
	AND.B	#$FD,$BFE001
	OR.B	D0,$BFE001
	RTS	

mt_SetGlissControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	AND.B	#$F0,n_glissfunk(A6)
	OR.B	D0,n_glissfunk(A6)
	RTS

mt_SetVibratoControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	AND.B	#$F0,n_wavecontrol(A6)
	OR.B	D0,n_wavecontrol(A6)
	RTS

mt_SetFineTune
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	MOVE.B	D0,n_finetune(A6)
	RTS

mt_JumpLoop
	TST.B	mt_counter
	BNE	mt_Return2
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BEQ.S	mt_SetLoop
	TST.B	n_loopcount(A6)
	BEQ.S	mt_jumpcnt
	SUBQ.B	#1,n_loopcount(A6)
	BEQ	mt_Return2
mt_jmploop	MOVE.B	n_pattpos(A6),mt_PBreakPos
	ST	mt_PBreakFlag
	RTS

mt_jumpcnt
	MOVE.B	D0,n_loopcount(A6)
	BRA.S	mt_jmploop

mt_SetLoop
	MOVE.W	mt_PatternPos(PC),D0
	LSR.W	#4,D0
	MOVE.B	D0,n_pattpos(A6)
	RTS

mt_SetTremoloControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	LSL.B	#4,D0
	AND.B	#$0F,n_wavecontrol(A6)
	OR.B	D0,n_wavecontrol(A6)
	RTS

mt_RetrigNote
	MOVE.L	D1,-(SP)
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BEQ.S	mt_rtnend
	MOVEQ	#0,D1
	MOVE.B	mt_counter(PC),D1
	BNE.S	mt_rtnskp
	MOVE.W	(A6),D1
	AND.W	#$0FFF,D1
	BNE.S	mt_rtnend
	MOVEQ	#0,D1
	MOVE.B	mt_counter(PC),D1
mt_rtnskp
	DIVU	D0,D1
	SWAP	D1
	TST.W	D1
	BNE.S	mt_rtnend
mt_DoRetrig
	MOVE.W	n_dmabit(A6),$DFF096	; Channel DMA off
	MOVE.L	n_start(A6),(A5)	; Set sampledata pointer
	MOVE.W	n_length(A6),4(A5)	; Set length
	MOVE.W	#300,D0
mt_rtnloop1
	DBRA	D0,mt_rtnloop1
	MOVE.W	n_dmabit(A6),D0
	BSET	#15,D0
	MOVE.W	D0,$DFF096
	MOVE.W	#300,D0
mt_rtnloop2
	DBRA	D0,mt_rtnloop2
	MOVE.L	n_loopstart(A6),(A5)
	MOVE.L	n_replen(A6),4(A5)
mt_rtnend
	MOVE.L	(SP)+,D1
	RTS

mt_VolumeFineUp
	TST.B	mt_counter
	BNE	mt_Return2
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F,D0
	BRA	mt_VolSlideUp

mt_VolumeFineDown
	TST.B	mt_counter
	BNE	mt_Return2
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BRA	mt_VolSlideDown2

mt_NoteCut
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	CMP.B	mt_counter(PC),D0
	BNE	mt_Return2
	CLR.B	n_volume(A6)
	MOVE.W	#0,8(A5)
	RTS

mt_NoteDelay
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	CMP.B	mt_Counter,D0
	BNE	mt_Return2
	MOVE.W	(A6),D0
	BEQ	mt_Return2
	MOVE.L	D1,-(SP)
	BRA	mt_DoRetrig

mt_PatternDelay
	TST.B	mt_counter
	BNE	mt_Return2
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	TST.B	mt_PattDelTime2
	BNE	mt_Return2
	ADDQ.B	#1,D0
	MOVE.B	D0,mt_PattDelTime
	RTS

mt_FunkIt
	TST.B	mt_counter
	BNE	mt_Return2
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	LSL.B	#4,D0
	AND.B	#$0F,n_glissfunk(A6)
	OR.B	D0,n_glissfunk(A6)
	TST.B	D0
	BEQ	mt_Return2
mt_UpdateFunk
	MOVEM.L	A0/D1,-(SP)
	MOVEQ	#0,D0
	MOVE.B	n_glissfunk(A6),D0
	LSR.B	#4,D0
	BEQ.S	mt_funkend
	LEA	mt_FunkTable(PC),A0
	MOVE.B	(A0,D0.W),D0
	ADD.B	D0,n_funkoffset(A6)
	BTST	#7,n_funkoffset(A6)
	BEQ.S	mt_funkend
	CLR.B	n_funkoffset(A6)
	MOVE.L	n_loopstart(A6),D0
	MOVEQ	#0,D1
	MOVE.W	n_replen(A6),D1
	ADD.L	D1,D0
	ADD.L	D1,D0
	MOVE.L	n_wavestart(A6),A0
	ADDQ.L	#1,A0
	CMP.L	D0,A0
	BLO.S	mt_funkok
	MOVE.L	n_loopstart(A6),A0
mt_funkok
	MOVE.L	A0,n_wavestart(A6)
	MOVEQ	#-1,D0
	SUB.B	(A0),D0
	MOVE.B	D0,(A0)
mt_funkend
	MOVEM.L	(SP)+,A0/D1
	RTS

mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128

mt_VibratoTable	
	dc.b   0, 24, 49, 74, 97,120,141,161
	dc.b 180,197,212,224,235,244,250,253
	dc.b 255,253,250,244,235,224,212,197
	dc.b 180,161,141,120, 97, 74, 49, 24

mt_PeriodTable
; Tuning 0, Normal
	dc.w	856,808,762,720,678,640,604,570,538,508,480,453
	dc.w	428,404,381,360,339,320,302,285,269,254,240,226
	dc.w	214,202,190,180,170,160,151,143,135,127,120,113
; Tuning 1
	dc.w	850,802,757,715,674,637,601,567,535,505,477,450
	dc.w	425,401,379,357,337,318,300,284,268,253,239,225
	dc.w	213,201,189,179,169,159,150,142,134,126,119,113
; Tuning 2
	dc.w	844,796,752,709,670,632,597,563,532,502,474,447
	dc.w	422,398,376,355,335,316,298,282,266,251,237,224
	dc.w	211,199,188,177,167,158,149,141,133,125,118,112
; Tuning 3
	dc.w	838,791,746,704,665,628,592,559,528,498,470,444
	dc.w	419,395,373,352,332,314,296,280,264,249,235,222
	dc.w	209,198,187,176,166,157,148,140,132,125,118,111
; Tuning 4
	dc.w	832,785,741,699,660,623,588,555,524,495,467,441
	dc.w	416,392,370,350,330,312,294,278,262,247,233,220
	dc.w	208,196,185,175,165,156,147,139,131,124,117,110
; Tuning 5
	dc.w	826,779,736,694,655,619,584,551,520,491,463,437
	dc.w	413,390,368,347,328,309,292,276,260,245,232,219
	dc.w	206,195,184,174,164,155,146,138,130,123,116,109
; Tuning 6
	dc.w	820,774,730,689,651,614,580,547,516,487,460,434
	dc.w	410,387,365,345,325,307,290,274,258,244,230,217
	dc.w	205,193,183,172,163,154,145,137,129,122,115,109
; Tuning 7
	dc.w	814,768,725,684,646,610,575,543,513,484,457,431
	dc.w	407,384,363,342,323,305,288,272,256,242,228,216
	dc.w	204,192,181,171,161,152,144,136,128,121,114,108
; Tuning -8
	dc.w	907,856,808,762,720,678,640,604,570,538,508,480
	dc.w	453,428,404,381,360,339,320,302,285,269,254,240
	dc.w	226,214,202,190,180,170,160,151,143,135,127,120
; Tuning -7
	dc.w	900,850,802,757,715,675,636,601,567,535,505,477
	dc.w	450,425,401,379,357,337,318,300,284,268,253,238
	dc.w	225,212,200,189,179,169,159,150,142,134,126,119
; Tuning -6
	dc.w	894,844,796,752,709,670,632,597,563,532,502,474
	dc.w	447,422,398,376,355,335,316,298,282,266,251,237
	dc.w	223,211,199,188,177,167,158,149,141,133,125,118
; Tuning -5
	dc.w	887,838,791,746,704,665,628,592,559,528,498,470
	dc.w	444,419,395,373,352,332,314,296,280,264,249,235
	dc.w	222,209,198,187,176,166,157,148,140,132,125,118
; Tuning -4
	dc.w	881,832,785,741,699,660,623,588,555,524,494,467
	dc.w	441,416,392,370,350,330,312,294,278,262,247,233
	dc.w	220,208,196,185,175,165,156,147,139,131,123,117
; Tuning -3
	dc.w	875,826,779,736,694,655,619,584,551,520,491,463
	dc.w	437,413,390,368,347,328,309,292,276,260,245,232
	dc.w	219,206,195,184,174,164,155,146,138,130,123,116
; Tuning -2
	dc.w	868,820,774,730,689,651,614,580,547,516,487,460
	dc.w	434,410,387,365,345,325,307,290,274,258,244,230
	dc.w	217,205,193,183,172,163,154,145,137,129,122,115
; Tuning -1
	dc.w	862,814,768,725,684,646,610,575,543,513,484,457
	dc.w	431,407,384,363,342,323,305,288,272,256,242,228
	dc.w	216,203,192,181,171,161,152,144,136,128,121,114

mt_chan1temp	dc.l	0,0,0,0,0,$00010000,0,0,0,0,0
mt_chan2temp	dc.l	0,0,0,0,0,$00020000,0,0,0,0,0
mt_chan3temp	dc.l	0,0,0,0,0,$00040000,0,0,0,0,0
mt_chan4temp	dc.l	0,0,0,0,0,$00080000,0,0,0,0,0

mt_SampleStarts	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
mt_SongDataPtr	dc.l 0
mt_speed	dc.b 6
mt_counter	dc.b 0
mt_SongPos	dc.b 0
mt_PBreakPos	dc.b 0
mt_PosJumpFlag	dc.b 0
mt_PBreakFlag	dc.b 0
mt_LowMask	dc.b 0
mt_PattDelTime	dc.b 0
mt_PattDelTime2	dc.b 0,0
mt_PatternPos	dc.w 0
mt_DMACONtemp	dc.w 0
MENOS_VOL:	DC.W	0

n_note		EQU	0  ; W
n_cmd		EQU	2  ; W
n_cmdlo		EQU	3  ; B
n_start		EQU	4  ; L
n_length	EQU	8  ; W
n_loopstart	EQU	10 ; L
n_replen	EQU	14 ; W
n_period	EQU	16 ; W
n_finetune	EQU	18 ; B
n_volume	EQU	19 ; B
n_dmabit	EQU	20 ; W
n_toneportdirec	EQU	22 ; B
n_toneportspeed	EQU	23 ; B
n_wantedperiod	EQU	24 ; W
n_vibratocmd	EQU	26 ; B
n_vibratopos	EQU	27 ; B
n_tremolocmd	EQU	28 ; B
n_tremolopos	EQU	29 ; B
n_wavecontrol	EQU	30 ; B
n_glissfunk	EQU	31 ; B
n_sampleoffset	EQU	32 ; B
n_pattpos	EQU	33 ; B
n_loopcount	EQU	34 ; B
n_funkoffset	EQU	35 ; B
n_wavestart	EQU	36 ; L
n_reallength	EQU	40 ; W

********************************************
	ENDC

DIRPLANOS:
	DC.L	PLANO0,DIRLOGO,(40*64)+(40*64*MEDRES),BP0-1
	DC.L	PLANO1,PANT,(40*13*8),BP1-1
	DC.L	PLANO1B,PANT,(40*13*8),BP1-1
	DC.L	PLANO2,L007,4*5,2-1
	DC.L	0	

SCRPLANOS:
	DC.L	PLANO1,PANT,(40*13*8),BP1-1
	DC.L	0

SCRCOLORES:
	DC.L	COLOR1,FONT+$500,CO1-1
	DC.L	0

DIRCOLORES:
	DC.L	COLOR0,CEROS,CO0-1
	DC.L	COLOR1,CEROS,CO1-1
	DC.L	COLOR1B,FONT+$500,CO1-1
	DC.L	COLOR2,L007+$28,4-1
	DC.L	0	

DIRSPRITES:
	DC.L	DIRSPRIT0,ESTRELLAS,0
	DC.L	DIRSPRIT1,NOSPRIT,1
	DC.L	DIRSPRIT2,NOSPRIT,2
	DC.L	DIRSPRIT3,NOSPRIT,3
	DC.L	DIRSPRIT4,NOSPRIT,4
	DC.L	DIRSPRIT5,NOSPRIT,5
	DC.L	DIRSPRIT6,NOSPRIT,6
	DC.L	DIRSPRIT7,NOSPRIT,7
	DC.L	0



VBLANK:	DC.L	0
DMACON:	DC.W	0
INTENA:	DC.W	0
INTREQ:	DC.W	0
IRADAT00:DC.W	1
ABLDAT00:DC.W	0
CITDAT00:DC.W	0
BAJDAT00:DC.W	0
	IFEQ	MUSICA
BAJVOL00:DC.W	0
	ENDC
MURDAT00:DC.W	0
ACTRAST0:DC.L	0
ACTRAST1:DC.L	0
INTCOPPER:DC.L	0
MOVBPLDAT:DC.W	0
VERTXTDAT:DC.W	0
VELOC007:DC.L	6
VELOCRAST:DC.W	VRAST
VELOCRAST1:DC.W	VRAST
BCRDAT00:DC.W	0
BCRDAT01:DC.W	0
VELOCBAR0:DC.W	0
VELOCBAR1:DC.W	0
DIRRAST:DC.W	0
SCRDAT:	DC.W	0
SCRDAT00:DC.W	0
SCRDAT01:DC.W	0
SCRPOS:	DC.W	0
SCROFF:	DC.W	0
SCRCONTA:DC.W	0
DIRTEXTO:DC.L	0
STOP:	DC.W	0
STOP2:	DC.W	0
WBCOPPER:DC.L	0

; -------------------
; **  Copper-list  **
; -------------------
	CNOP	0,2
MASTERCOPPER:
	DC.W	$0180,$0000,$0100,$0000
DIRSPRIT0:
	DS.W	4
DIRSPRIT1:
	DS.W	4
DIRSPRIT2:
	DS.W	4
DIRSPRIT3:
	DS.W	4
DIRSPRIT4:
	DS.W	4
DIRSPRIT5:
	DS.W	4
DIRSPRIT6:
	DS.W	4
DIRSPRIT7:
	DS.W	4
COLORS:
	DC.W	$01A2,$0000,$01A4,$0000,$01A6,$0000
	DC.W	$0E01,$FFFE,$008A,$0000
	DC.W	$FFFF,$FFFE
	CNOP	0,2
COPPER0:
	DC.W	$0180,$0000,$0100,$0000
	DC.W	$0102,$0000,$0104,$0000
	DC.W	$008E,$2B81,$0090,$2BC1
RAST0:
	REPT	8
	DC.W	$5821,$FFFE,$0180,$0000
	ENDR
RAST1:
	REPT	8
	DC.W	$F821,$FFFE,$0180,$0000
	ENDR
	DC.W	$FFFF,$FFFE


COPPER:
	DC.W	$0180,$0000,$0100,$0000
	DC.W	$0092,$0038+(MEDRES*4),$0094,$00D0+(MEDRES*4)
	DC.W	$0102,$0000,$0104,$0000
	DC.W	$0108,$0000,$010A,$0000
VISIBLE:
	DC.W	$008E,$2BFF,$0090,$2B43

PLANO0:	DS.W	BP0*4
COLOR0:	DS.W	CO0*2

VISIBLE3:
	DC.W	$2B01,$FFFE,$0100,$0200+(BP0*$1000)+(MEDRES*$8000)
	DC.W	$6B01,$FFFE,$0100,$0200,$0180,$0000

RASTER0:
	DC.W	$7021,$FFFE,$0180,$0000
	DC.W	$7121,$FFFE,$0180,$0000
	DC.W	$7221,$FFFE,$0180,$0000
	DC.W	$7321,$FFFE,$0180,$0000
	DC.W	$7421,$FFFE,$0180,$0000
	DC.W	$7521,$FFFE,$0180,$0000
	DC.W	$7621,$FFFE,$0180,$0000

	DC.W	$7721,$FFFE,$0180,$0000
VISIBLE2:
	DC.W	$008E,$2B81,$0090,$2BC1
	DC.W	$0092,$0038,$0094,$00D0

COLOR1:	DS.W	CO1*2
PLANO1:	DS.W	BP1*4
	DC.W	$7C01,$FFFE,$0100,$0200+BP1*$1000
SCRCOORY:DC.W	$2001,$FFFE
PLANO1B:DS.W	BP1*4
ENCIENDE:
	DC.W	$AC01,$FFFE
COLOR1B:
	DS.W	CO1*2
APAGA:
	DC.W	$AC01,$FFFE,$0100,$0200,$0180,$0000
	DC.W	$DD01,$FFFE,$0100,$0200,$0180,$0000

RASTER1:
	DC.W	$E021,$FFFE,$0180,$0000
	DC.W	$E121,$FFFE,$0180,$0000
	DC.W	$E221,$FFFE,$0180,$0000
	DC.W	$E321,$FFFE,$0180,$0000
	DC.W	$E421,$FFFE,$0180,$0000
	DC.W	$E521,$FFFE,$0180,$0000
	DC.W	$E621,$FFFE,$0180,$0000

	DC.W	$E721,$FFFE,$0180,$0000

	DC.W	$008E,$2B81,$0090,$2BC1

PLANO2:	DS.W	2*4
COLOR2:	DS.W	4*2
MOVER0:
	DC.W	$0102,$0000,$0092,$0028,$0094,$0030
	DC.W	$E901,$FFFE,$0100,$2200
	DC.W	$EE01,$FFFE,$0100,$0200,$0180,$0000

	DC.W	$FFFF,$FFFE

	CNOP	0,2
DIRLOGO:	LOGO
	CNOP	0,2
PANT:	DS.B	(40*13*8)*BP1
	CNOP	0,2
L007:
	dc.w	$831,$9820,$E442,$4E,$FC42,$47E,$E408,$404E,$810
	dc.w	$8020,$1800,$430,$FC08,$447E,$8208,$4C82,$FC4A
	dc.w	$487E,$1831,$8830,0,$EEF,$ABF,$78C
	CNOP	0,2
FONT:
	dcb.l	8,0
	dc.l	$3C000000,0,$C3624,$1C22000E,$2200000,0,$C043C3C
	dc.l	$243C3C3E,$3C3C0000,$78,$3C3E3C,$383C3C3C,$8245A
	dc.l	$2056000C,$4101200,2,$120C4446,$6660600E,$66661818
	dc.l	$400108C,$24666466,$64606060,$80024,$182C0004
	dc.l	$C180C08,4,$3F1C080C,$663C7C1E,$3C3E1010,$83C0808
	dc.l	$76667A60,$66707060,$80024,$C1A0008,$C180C1C
	dc.l	$1C0008,$3F0C1006,$3E06663C,$66060000,$10000430
	dc.l	$6E7E6460,$66606064,$5A,$2350000,$4101208,$C001810
	dc.l	$120C2046,$6066678,$66661818,$83C0800,$66666666
	dc.l	$64606066,$80024,$1C220000,$2200000,$8001000
	dc.l	$C0C7E3C,$43C3C30,$3C3C1000,$4001020,$22243C3C
	dc.l	$383C203C,0,0,0,$8000000,0,0,0,0,0,0,0,0,0,0,0,0,0
	dcb.l	3,0
	dc.l	$243C3C22,$2041443C,$3C3C3C3C,$3C242422,$22243E08
	dc.l	$101010,0,0,0,0,$66180664,$60636666,$66666660
	dc.l	$1866666B,$14660410,$20080000,0,0,0,0,$66180678
	dc.l	$607F7666,$6666643C,$1866666B,$1C240810,$10081818,0
	dcb.l	3,0
	dc.l	$7E180678,$606B6E66,$7C627A06,$1866247F,$1C181010
	dc.l	$8081020,0,0,0,0,$66182464,$60636666,$606C6406
	dc.l	$18661863,$14182010,$4081062,0,0,0,0,$243C1822
	dc.l	$3C22223C,$202C263C,$103C0041,$22107C08,$10103C,0,0
	dcb.l	13,0
	dc.l	$8000000,0,0,0,0,0,0,$42000000,0,0,$22510000
	dc.l	$4100000,3,$12080042,$42424240,$42420000,$84
	dc.l	$424042,$44424242,$41224,$8000002,$8081E08,5
	dc.l	$21102220,8,0,$8002040,$52000200,$2000000,$40000
	dc.l	$20500002,$1200,10,$8200402,$420212,$42400808
	dc.l	$10421014,$8000600,$80800,$40000,$2050004,$1222
	dc.l	$220014,$4000800,$40000024,0,$20000808,$10000200,2
	dc.l	$24,$8000000,$8081E00,$28,$21001020,$48,0,$10421000
	dc.l	$8000000,$2000000,$40000,$22450000,$4100008
	dc.l	$4000830,$12120042,$2424250,$42420808,$8002010
	dc.l	$44424242,$44424042,0,$8000000,0,$C000000,0,0,$10,0
	dcb.l	8,0
	dc.l	$7E0000,$30000000,$3C3C,$7E037E3C,$42424244
	dc.l	$40222242,$42424242,$42424241,$55424014,$60280808
	dc.l	$600000,$30000000,$6666,$6066066,8,$141000,0,0
	dc.l	$2A000A00,$50000000,$603C7C,$7C007C3C,$7C006E6E
	dc.l	$60C6060,0,$800,$242,$14,$5A1400,$28000020,$786666
	dc.l	$30006666,$66007E7E,$C18786E,0,$141000,$2040600
	dc.l	$5A00,$242800,$14000850,$606666,$30006666,$60007676
	dc.l	$18306066,$4208,$80800,$60200,$2414,$2A005000
	dc.l	$A000804,$606666,$30007C66,$60006666,$18606066
	dc.l	$42422444,$42414442,$40584042,$8421822,$55080214
	dc.l	$6280842,$603C66,$1C00603C,$60003C3C,$18C0603E,0,0
	dcb.l	5,0
	dc.l	$6000,0,0
	dc.w	0,COL1,COL2,COL3
	CNOP	0,2
RETURN:
	DC.B	$0A,$00
	CNOP	0,2
	IFEQ	MUSICA
mt_data:	MODULO
	DS.L	60
	ENDC
	CNOP	0,2
CEROS:
	DS.L	8
	CNOP	0,2
COLORSPRITS:
	DC.W	$0FFF,$0BBB,$0777
STAR1:	MACRO
	DC.W	\2*$100+\1,(\2+1)*$100
	DC.W	$8000,$0000
	ENDM
STAR2:	MACRO
	DC.W	\2*$100+\1,(\2+1)*$100
	DC.W	$0000,$8000
	ENDM
STAR3:	MACRO
	DC.W	\2*$100+\1,(\2+1)*$100
	DC.W	$8000,$8000
	ENDM
	CNOP	0,2
ESTRELLAS:
	STAR3	$40,$7C				; ESTRELLA (X,Y)
	STAR1	$80,$7E
	STAR2	$A0,$80
	STAR3	$DF,$82
	STAR2	$50,$86
	STAR1	$90,$8A
	STAR3	$B0,$8D
	STAR2	$C0,$90
	STAR1	$D0,$92
	STAR3	$80,$95
	STAR1	$60,$98
	STAR2	$66,$9A
	STAR3	$71,$9C
	STAR1	$45,$9E
	STAR2	$D2,$A0
	STAR3	$57,$A2
	STAR2	$94,$A6
	STAR1	$CC,$AA
	STAR3	$BA,$AD
	STAR2	$80,$B0
	STAR1	$AB,$B2
	STAR3	$48,$B5
	STAR1	$84,$B8
	STAR2	$46,$BA
	STAR3	$41,$BC
	STAR1	$D5,$BE
	STAR2	$62,$C0
	STAR3	$97,$C2
	STAR2	$44,$C6
	STAR1	$6C,$CA
	STAR3	$8A,$CD
	STAR2	$50,$D0
	STAR1	$8B,$D2
	STAR3	$78,$D5
	STAR1	$C4,$D8
	STAR2	$A6,$DB

	DC.L	0,0
NOSPRIT:
	DC.L	$FE00FF00
	DC.L	0
	DC.L	0
	CNOP	0,2
	BARRAS
	CNOP	0,2
ASCII:	TEXTO
	CNOP	0,2
ESPACIOS:DCB.B	40," "
	DC.B	0,1,1,1
	CNOP	0,2

	DC.B	"Intro by: 007 of 5TH Generation",0
	CNOP	0,2

; -------------------------------
; **  Bueno, Final del Source  **
; -------------------------------

;	JAMES BOND WILL RETURN


