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

=============================================================================
=									    =
=			SPECIAL EFFETS SPECIAUX	III			    =
=									    =
=============================================================================







BEAUCOUP D'ENTRE VOUS M'ONT DEMANDE COMMENT ON POUVAIT FAIRE BOUGER UN LOGO
PLUS GRAND QUE L'ECRAN VISIBLE..... CECI M'A PARTICULIEREMENT ETONNE CAR
APRES LE COURS SUR LE SCROLLING D'IMAGE DU COURS 4, JE PENSAIS QUE VOUS EN
AURIEZ DEDUIT LE PRINCIPE... DONC POUR CEUX QUI N'ONT PAS TROUVE COMMENT
FAIRE VOICI UN PETIT PROGRAMME QUI FAIT BOUGER UNE IMAGE DE 640 PIXELS SUR
512, DANS TOUS LES SENS.

CELA EST REALISE SIMPLEMENT EN CHANGEANT LE REGISTRE $102 AINSI QUE LES POIN
TEURS DES PLANS.
UNE PETITE ROUTINE CALCULE D'APRES UNE POSTION X ET Y, LA VALEUR DU REGISTRE
$102 A PLACER DANS LA LISTE COPPER, AINSI QUE LES VALEURS DES POINTEURS DE
PLANS POUR UNE IMAGE DE 640 PIXELS DE LARGE SUR 512 PIXELS DE HAUT EN 4 PLANS
FORMAT RAW BLITTER.

VOUS POURREZ POUR VOUS AMUSER, INTEGRER DANS CE PROGRAMME, LA ROUTINE DE TEST
DU JOYSTICK, ET FAIRE AINSI VARIER MANUELLEMENT LES POSITIONS X ET Y.

VOUS POURREZ AUSSI VOUS LIMITER AU DEPLACEMENT HORIZONTAL, ET REALISER AINSI
AVEC UNE IMAGE DE PLUS FAIBLE HAUTEUR, CE FAMEUX DEPLACEMENT DE LOGO.....

=============================================================================
				BIGSCROLL
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;PIC_RAW	RETURN
;IMAGE		RETURN RETURN
;
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "PIC_RAW",IMAGE

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
;==================================

IMAGE=$40000			;ADRESSE IMAGE
				;640 PIXELS SUR 512 PIXELS
FINDATA=IMAGE+[80*512*4]	;EN 4 PLANS
			
;==================================
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.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 #$F0,$DFF006		;ATTENDANT 200 IEME LIGNE RASTER
BNE.S WAIT			;SINON RETOURNE A WAIT

BSR.L BIGSCROLL			;VA A ROUTINE DE DEPLACEMENT IMAGE

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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)

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
;====================
BIGSCROLL:

MOVE.W ADDX,D0			;MET VALEUR ADDX DANS D0
MOVE.W ADDY,D1			;MET VALEUR ADDY DANS D1

ADD.W D0,X			;AJOUTE ADDX A POSITION X
ADD.W D1,Y			;AJOUTE ADDY A POSITION Y

CMP.W #320,X			;SI POSITION X EST INFERIEURE A 320
BHI OKX1			;VA A OKX1
NEG ADDX			;SINON INVERSE VALEUR ADDX		
OKX1:

CMP.W #0,X			;SI POSITION X EST SUPERIEURE A 0
BLE OKX2			;VA A OKX2
NEG ADDX			;SINON INVERSE VALEUR ADDX		
OKX2:

CMP.W #200,Y			;SI POSITION X EST INFERIEURE A 200
BHI OKY1			;VA A OKY1
NEG ADDY			;SINON INVERSE VALEUR ADDY		
OKY1:

CMP.W #0,Y			;SI POSITION X EST SUPERIEURE A 0
BLE OKY2			;VA A OKY2
NEG ADDY			;SINON INVERSE VALEUR ADDY		
OKY2:



MOVE.W X,D1			;MET POSITION X DANS D1
MOVE.W Y,D3			;MET POSITION Y DANS D3
MULU #80*4,D3			;MULTIPLIE PAR 80 MOTS *  PLANS
MOVE.W	D1,D2			;MET X DANS D2
AND.W	#$FFF0,D1		;MASQUE 4 BITS INFERIEUR
LSR.W	#3,D1			;DIVISE PAR 8
ADD.W D3,D1			;AJOUTE D3 A D1 POUR AVOIR LE NOMBRE DE
				;MOTS A AJOUTER AU DEBUT DE L'IMAGE
	
AND.W	#$000F,D2		;MASQUE 12 BITS SUPERIEURS
MULU	#$0011,D2		;MULTIPLIE PAR $11
MOVE.W	#$00FF,D4
SUB.W	D2,D4			;POUR OBTENIR DECALAGE A DROITE

MOVE.W D4,DECAL			;MET VALEUR DECALAGE DANS DECAL

MOVE.W #IMAGE+[80*0] & 65535,LO1	;MET EN PLACE ADRESSE DEBUT
ADD.W D1,LO1				;IMAGE DANS LISTE COPPER

MOVE.W #IMAGE+[80*1] & 65535,LO2
ADD.W D1,LO2

MOVE.W #IMAGE+[80*2] & 65535,LO3
ADD.W D1,LO3

MOVE.W #IMAGE+[80*3] & 65535,LO4
ADD.W D1,LO4

RTS

ADDX:	DC.W 2			;VITESSE EN X
ADDY:	DC.W 2			;VITESSE EN Y

X:	DC.W 0			;POSITION X
Y:	DC.W 0			;POSITION Y

;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2C81	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$2Cc1	;256 LIGNES

	DC.W	$0092,$0030,$0094,$00D8

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0,IMAGE+[80*0]/65536

	DC.W $00E2
LO1:	DC.W IMAGE+[80*0] & 65535   

	DC.W $00E4,IMAGE+[80*1]/65536

	DC.W $00E6
LO2:	DC.W IMAGE+[80*1] & 65535

	DC.W $00E8,IMAGE+[80*2]/65536

	DC.W $00EA
LO3:	DC.W IMAGE+[80*2] & 65535

	DC.W $00EC,IMAGE+[80*3]/65536

	DC.W $00EE
LO4:	DC.W IMAGE+[80*3] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$4200		;4 PLANS+MODE COULEURS

	;DECALAGE ECRAN

	DC.W	$0102
DECAL:	DC.W	$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS   -4 POUR EVITER BORDURES MOUVANTES

	DC.W	$0108,40+240-4	;MODULOS PLANS PAIRS
	DC.W 	$010A,40+240-4	;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,$06F1	;COULEUR 01
	DC.W	$0184,$0114	;COULEUR 02
	DC.W	$0186,$0115	;COULEUR 03
	DC.W	$0188,$0226	;COULEUR 04
	DC.W	$018A,$0337	;COULEUR 05
	DC.W	$018C,$0448	;COULEUR 06
	DC.W	$018E,$088B	;COULEUR 07
	DC.W	$0190,$099C	;COULEUR 08
	DC.W	$0192,$0BBD	;COULEUR 09
	DC.W	$0194,$0DDE	;COULEUR 10
	DC.W	$0196,$0FFF	;COULEUR 11
	DC.W	$0198,$0DDE	;COULEUR 12
	DC.W	$019A,$0AAC	;COULEUR 13
	DC.W	$019C,$077A	;COULEUR 14
	DC.W	$019E,$0669	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

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

=============================================================================



VOICI UNE PETITE ROUTINE TRES BETE, QUI PERMET DE CREER UN EFFET INTERRESSANT
DES RASTERBARS VERTICAUX AVEC UN EFFET PERSPECTIVE.

LES RASTERS SONT EN FAIT DES BOBS DE 320 PIXELS DE LARGE SUR 1 LIGNE DE HAUT
LE MOTIF ETANT REPETE SUR TOUT L'ECRAN EN UTILISANT DES MODULOS NEGATIFS (
C'EST A DIRE -40). 4 BOBS SONT UTILISES ICI, ON UTILISE LA ROUTINE DE BOBS DU
NUMERO 3. LES DEPLACEMENTS DES BOBS SONT DE 4, 3, 2, ET 1 PIXEL.
COMME VOUS POUVEZ LE VOIR DANS LE SOURCE, J'AI UTILISE DES BOBS DE 20 PIXELS
DE HAUT, CAR JE N'AI PAS PU DECOUPER DES BOBS DE 1 LIGNES AVEC MA #$@$%%#!$
DE SOURIS !!!! 
LES BOBS SONT EN 8 COULEURS SOIT 3 PLANS EN MODE ENTRELACE (RAW BLITTER)
JE TIENS A SIGNALER QUE LES ECRANS UTILISES POUR L'AFFICHAGE (2 ECRANS POUR
DOUBLE BUFFERING) PRENNENT TRES DE PLACE MEMOIRE CAR CONSTITUES SEULEMENT
DE 1 LIGNE. 

	    VOUS POURREZ BIEN SUR AMELIORER LE RENDU DE CET EFFET EN CREEANT 
DES BOBS PLUS GRANDS AFIN DE NE PAS VOIR LEURS APPARITIONS SUR LE COTE DROIT
DE L'ECRAN (DESOLE JE N'AI PAS EU LE TEMPS DE LE FAIRE)


=============================================================================
			RASTERBARS PERSPECTIVE
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;BOB1_RAW	RETURN
;SPR1		RETURN RETURN
;
;RI		RETURN
;BOB1_OUT	RETURN
;MSPR1		RETURN RETURN
;
;RI		RETURN
;BOB2_RAW	RETURN
;SPR2		RETURN RETURN
;
;RI		RETURN
;BOB2_OUT	RETURN
;MSPR2		RETURN RETURN
;
;RI		RETURN
;BOB3_RAW	RETURN
;SPR3		RETURN RETURN
;
;RI		RETURN
;BOB3_OUT	RETURN
;MSPR3		RETURN RETURN
;
;RI		RETURN
;BOB4_RAW	RETURN
;SPR4		RETURN RETURN
;
;RI		RETURN
;BOB4_OUT	RETURN
;MSPR4		RETURN RETURN
;
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "BOB1_RAW",SPR1
>EXTERN "BOB1_OUT",MSPR1
>EXTERN "BOB2_RAW",SPR2
>EXTERN "BOB2_OUT",MSPR2
>EXTERN "BOB3_RAW",SPR3
>EXTERN "BOB3_OUT",MSPR3
>EXTERN "BOB4_RAW",SPR4
>EXTERN "BOB4_OUT",MSPR4

org $25000	;EMPLACEMENT EN MEMOIRE
load $25000	;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
;==================================
ECRAN1=$30000			;ECRAN 1 D'AFFICHAGE DES BOBS 
				;400 PIXELS SUR 1 EN 3 PLANS
ECRAN2=ECRAN1+[50*20*3]		;ECRAN 2 D'AFFICHAGE DES BOBS 
				;400 PIXELS SUR 1 EN 3 PLANS
SPR1=ECRAN2+[50*20*3]		;IMAGE DES BOBS DE 320 SUR 20 	
				;EN 3 PLANS
MSPR1=SPR1+[40*3*20]		;IMAGE DES MASQUES DES BOBS
				;320 PIXELS SUR 20
SPR2=MSPR1+[40*20*3]		
				
MSPR2=SPR2+[40*3*20]		
				
SPR3=MSPR2+[40*20*3]		
				
MSPR3=SPR3+[40*3*20]		
				
SPR4=MSPR3+[40*20*3]		
				
MSPR4=SPR4+[40*3*20]		
				
;==================================
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.L SETCOPPER			;SAUTE SOUS PROGRAMME: MET EN PLACE LISTE COPPER
BSR.s NEWIRQ3			;SAUTE SOUS PROGRAMME: MET EN PLACE ROUTINE D'INTERRRUPTION

WAIT:
BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT

 				;SI OUI  FIN
END: 				;FIN:	
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 CALCUL			;VA A ROUTINE CALCUL POSITIONS DES BOBS
BSR.L PLACEBOBS			;VA A LA ROUTINE D'AFFICHAGE DES BOBS
BSR.L CLEAR_ALL			;VA A LA ROUTINE DE SWAPPING ECRAN

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
;====================
WAIT_BLITTER:			;ROUTINE POUR ATTENDRE QUE LE BLITTER
BTST #14,DMACONR		;EST FINI SON PRECEDENT TRAVAIL
BNE.S WAIT_BLITTER
RTS
;===================
EVEN
FLAGSCREEN: DC.W 0		;POINTEUR DE L'ECRAN VISIBLE
EVEN

CLEAR_ALL:
CMP.W #0,FLAGSCREEN		;SI POINTEUR EST DIFFERENT DE 0
BNE.S CE1			;VA A CE1
BSR.L CLEAR_ALL2		;SINON VA A CLEAR_ALL2
RTS				;RETOUR
CE1:

CMP.W #1,FLAGSCREEN		;SI POINTEUR EST DIFFERENT DE 1
BNE.S CE2			;VA A CE2
BSR.s CLEAR_ALL1		;SINON VA A CLEAR_ALL2
RTS				;RETOUR
CE2:	

RTS


CLEAR_ALL1:
MOVE.W #0,FLAGSCREEN			;MET 0 DANS POINTEUR ECRAN

MOVE.W #ECRAN2+[50*0]+10/65536,HI1	;CHARGE ADRESSE ECRAN2 DANS
MOVE.W #ECRAN2+[50*0]+10 & 65535,LO1	;LA LISTE COPPER            
MOVE.W #ECRAN2+[50*1]+10/65536,HI2
MOVE.W #ECRAN2+[50*1]+10 & 65535,LO2
MOVE.W #ECRAN2+[50*2]+10/65536,HI3
MOVE.W #ECRAN2+[50*2]+10 & 65535,LO3


BSR.L WAIT_BLITTER		;ATTENDS BLITTER
LEA ECRAN1,A1			;MET ADRESSE ECRAN1 DANS A1
MOVE.L A1,BLTDPTH		;MET A1 DANS ADRESSE DESTINATION D
MOVE.W #0,BLTDMOD   	  	;MET 40-6 DANS MODULO D
MOVE.L #$FFFFFFFF,$DFF044 	;PAS DE MASQUE 1ER ET DERNIER MOT
MOVE.L #$01000000,BLTCON0	;PAS DE SOURCE     1 DESTINATION
				;MINTERM A 0 POUR EFFACEMENT	
MOVE.W #[1*3*64]+[40/2],BLTSIZE	;MET TAILLE TRANSFERT POUR DEMARRER BLITTER
RTS
;==============================
CLEAR_ALL2:
MOVE.W #1,FLAGSCREEN			;MET 0 DANS POINTEUR ECRAN

MOVE.W #ECRAN1+[50*0]+10/65536,HI1	;CHARGE ADRESSE ECRAN2 DANS
MOVE.W #ECRAN1+[50*0]+10 & 65535,LO1	;LA LISTE COPPER           
MOVE.W #ECRAN1+[50*1]+10/65536,HI2
MOVE.W #ECRAN1+[50*1]+10 & 65535,LO2
MOVE.W #ECRAN1+[50*2]+10/65536,HI3
MOVE.W #ECRAN1+[50*2]+10 & 65535,LO3

BSR.L WAIT_BLITTER		;ATTENDS BLITTER
LEA ECRAN2,A1			;MET ADRESSE ECRAN1 DANS A1
MOVE.L A1,BLTDPTH		;MET A1 DANS ADRESSE DESTINATION D
MOVE.W #0,BLTDMOD   	  	;MET 40-6 DANS MODULO D
MOVE.L #$FFFFFFFF,$DFF044 	;PAS DE MASQUE 1ER ET DERNIER MOT
MOVE.L #$01000000,BLTCON0	;PAS DE SOURCE     1 DESTINATION
				;MINTERM A 0 POUR EFFACEMENT	
MOVE.W #[1*3*64]+[40/2],BLTSIZE	;MET TAILLE TRANSFERT POUR DEMARRER BLITTER
RTS                 
;======================
CALCUL:
SUB.W #1,BOB1		;SOUSTRAIT 1 A POSITION X DU BOB
CMP.W #80-[2*4],BOB1	;SI SUPERIEUR A 72
Bhi OK			;VA A OK
MOVE.W #80,BOB1		;SINON POSITION X = 80
OK:

SUB.W #2,BOB2
CMP.W #80-[2*8],BOB2
Bhi OK2
MOVE.W #80,BOB2
OK2:

SUB.W #3,BOB3
CMP.W #80-[2*16],BOB3
Bhi OK3
MOVE.W #80,BOB3
OK3:

SUB.W #4,BOB4
CMP.W #80-[2*32],BOB4
Bhi OK4
MOVE.W #80,BOB4
OK4:

RTS


PLACEBOBS:
LEA BOB1,A1			;POINTE A1 SUR DEBUT STRUCTURE DU BOB
LEA SPR1,A3			;POINTE A3 SUR IMAGE DES BOBS
LEA MSPR1,A5			;POINTE A5 SUR MASK DES BOBS
BSR.L BBOBS

LEA BOB2,A1			;POINTE A1 SUR DEBUT STRUCTURE DU BOB
LEA SPR2,A3			;POINTE A3 SUR IMAGE DES BOBS
LEA MSPR2,A5			;POINTE A5 SUR MASK DES BOBS
BSR.L BBOBS

LEA BOB3,A1			;POINTE A1 SUR DEBUT STRUCTURE DU BOB
LEA SPR3,A3			;POINTE A3 SUR IMAGE DES BOBS
LEA MSPR3,A5			;POINTE A5 SUR MASK DES BOBS
BSR.L BBOBS

LEA BOB4,A1			;POINTE A1 SUR DEBUT STRUCTURE DU BOB
LEA SPR4,A3			;POINTE A3 SUR IMAGE DES BOBS
LEA MSPR4,A5			;POINTE A5 SUR MASK DES BOBS
BSR.L BBOBS

RTS

BBOBS:
MOVE.W 4(A1),8(A1)		;MET NOMBRE DE MOTS DANS BOB+8
				;POUR EFFACEMENT ULTERIEUR
MOVE.W (A1),D1			;MET POSITION X DANS D1
MOVE.W 2(A1),D3			;MET POSITION Y DANS D3
MULU #150,D3			;MULTIPLIE PAR 40 MOTS * A PLANS
MOVE.W	D1,D2			;MET X DANS D2
AND.W	#$FFF0,D1		;MASQUE 4 BITS INFERIEUR
LSR.W	#3,D1			;DIVISE PAR 8
ADD.W D3,D1			;AJOUTE D3 A D1 POUR AVOIR LE NOMBRE DE
				;MOTS A AJOUTER AU DEBUT DE L'IMAGE
	
AND.W	#$000F,D2		;MASQUE 12 BITS SUPERIEURS
MULU	#$1000,D2		;MULTIPLIE PAR $1000
				;POUR OBTENIR DECALAGE A DROITE
MOVE.W D1,4(A1)			;MET NOMBRE DE MOTS DANS BOB+4
MOVE.W D2,6(A1)			;MET DECALAGE DANS BOB+6

CMP.W #0,FLAGSCREEN		;SI POINTEUR ECRAN N'EST PAS EGAL A 0
BNE.S DADA			;VA A DADA 
LEA ECRAN1,A4			;MET ADRESSE ECRAN 1 DANS A4         
DADA:
CMP.W #1,FLAGSCREEN		;SI POINTEUR ECRAN N'EST PAS EGAL A 0
BNE.S DADA2			;VA A DADA2 
LEA ECRAN2,A4			;MET ADRESSE ECRAN 2 DANS A4         
DADA2:

ADD.W 4(A1),A4			;AJOUTE NOMBRE DE MOTS A A4


BSR.L WAIT_BLITTER		;ATTENDS BLITTER
MOVE.L A5,BLTAPTH		;MET ADRESSE MASK DU BOB DANS POINTEUR SOURCE A
MOVE.L A3,BLTBPTH		;MET ADRESSE IMAGE DU BOB DANS POINTEUR SOURCE B
MOVE.L A4,BLTCPTH		;MET ADRESSE POSITION DU BOB DANS SOURCE C
MOVE.L A4,BLTDPTH		;MET ADRESSE POSITION DU BOB DANS DEST D

MOVE.W #0,BLTAMOD		;MET 40 - 6 DANS MODULO SOURCE A
MOVE.W #0,BLTBMOD		;MET 40 - 6 DANS MODULO SOURCE B
MOVE.W #10,BLTCMOD		;MET 40 - 6 DANS MODULO SOURCE C
MOVE.W #10,BLTDMOD		;MET 40 - 6 DANS MODULO DESTINATION D

MOVE.L #$FFFF0000,d2		;MET MASQUE DERNIER MOT DANS D2 
MOVE.W 6(A1),D3			;MET DECALAGE DANS D3
ROR.L D3,D2			;DECALE D3 FOIS LE MASQUE
MOVE.L D2,$DFF044 		;ET LE PLACE DANS REGISTRE MASQUE

MOVE.W 6(A1),BLTCON1		;MET DECALAGE DANS BLTCON1
MOVE.W #$0FCA,D4		;$F = 3 SOURCE + DESTINATION  ACTIVES
				;$CA = MINTERM POUR COPIE AVEC DECOUPAGE
ADD.W 6(A1),D4			;AJOUTE LE DECALAGE
MOVE.W D4,BLTCON0		;MET LE RESULTAT DANS BLTCON0

MOVE.W #[1*3*64]+[40/2],BLTSIZE	;CHARGE TAILLE POUR DEMARRER BLITTER

RTS

;====================
EVEN
;BOB:
;DC.W 0	; X			;0  POSITION X
;DC.W 0	; Y			;2  POSITION Y
;DC.W 0	;MOTS EN +		;4  NOMBRE DE MOTS DEPUIS DEBUT IMAGE
;DC.W 0	; SHIFT			;6  DECALAGE A DROITE
;DC.W 0 ;			;8  INUTILISE

BOB1: DC.W  80-64,0,0,0,0
BOB2: DC.W  80-64,0,0,0,0
BOB3: DC.W  80-64,0,0,0,0
BOB4: DC.W  80-64,0,0,0,0
EVEN
;==========================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
DC.W $008E,$2871,$0090,$28D1

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

DC.W $102,0
DC.W $104,0

DC.W	$120,0,$122,0

;COULEURS DES BOBS
dc.w	$0180,$0000 ,$0182,$0f00 ,$0184,$0f33 ,$0186,$0f55
dc.w	$0188,$0f88 ,$018a,$0faa ,$018c,$0fdd ,$018e,$0fff

DC.W $2911,$FFFE,$100,0		;RESOLUTION A 0
DC.W $108,-40			;
DC.W $10A,-40			;

	DC.W $00E0		;POINTEURS ADRESSES ECRAN D'AFFICHAGE
HI1:    DC.W ECRAN1/65536	
	DC.W $00E2
LO1:    DC.W ECRAN1 & 65535 
	DC.W $00E4
HI2:    DC.W ECRAN1/65536	
	DC.W $00E6
LO2:    DC.W ECRAN1 & 65535 
	DC.W $00E8
HI3:    DC.W ECRAN1/65536	
	DC.W $00EA
LO3:    DC.W ECRAN1 & 65535


DC.W $2a11,$FFFE,$100,$3200	;MET RESOLUTION


dc.w $ffDF,$fffe		;PASSAGE EN PAL



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




COMME VOUS AVEZ ETE NOMBREUX A LE DEMANDER, VOICI UNE ROUTINE D'APPARITION
D'IMAGE A LA SZORD OF SODAN, OU UNE ONDULATION HORIZONTALE DE PLUS DE 16
PIXELS.

LE PRINCIPE EST TRES SIMPLE : ON CALCULE POUR CHAQUE LIGNE DE L'IMAGE, LA
VALEUR DU DECALAGE (REGISTRE $102) AINSI QUE LES VALEURS DES POINTEURS DE
PLANS. EN EFFET COMME DANS L'EXEMPLE BIGSCROLL ON FAIT VARIER LE REGISTRE
$102 DE 0 A 16, ET ON AJOUTE, OU SOUSTRAIT 2 (16 PIXELS) AUX POINTEURS DE
PLANS : POUR CELA ON CONSTRUIT UNE LISTE COPPER DE LA FORME:

DC.W $XX01,$FFFE,$0102,$00XX,$E2,$XXXX,$E6,$XXXX,$EA,$XXXX,$EE,$XXXX
ETC.....

SEULS LES POINTEURS DE PLANS DE MOTS FAIBLES SONT UTILISES, CAR LE FORMAT
RAW BLITTER DE L'IMAGE UTILISEE LAISSE INVARIABLES LES POINTEURS DE PLANS
DE MOTS FORTS.

L'IMAGE QUE VOUS VOYEZ ONDULER EST EN FAIT UNE IMAGE DE 704 PIXELS DE LARGE
SUR 256 PIXELS DE LARGE EN 5 PLANS (FORMAT RAW NORMAL). LA MOITIE GAUCHE DE
CETTE GRANDE IMAGE CONTIENT LE DESSIN. 

CETTE ROUTINE N'UTILISE DONC PAS LE BLITTER POUR LES ONDULATIONS, MAIS L'I
MAGE PREND BEAUCOUP DE PLACE MEMOIRE.......

=============================================================================
				VAGUE
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;RI		RETURN
;PIC_RAW	RETURN
;IMAGE		RETURN RETURN
;
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "PIC_RAW",IMAGE

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
;==================================
IMAGE=$60000			;L'IMAGE SE TROUVE A $40000
				;5 PLANS 704 PIXELS DE LARGE
				;SUR 256 PIXELS DE HAUT

FINDATA=IMAGE+[88*256*5]

N=200
;==================================
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.L INIT_ALL			;CONSTRUIT LA LISTE COPPER

BSR.L SETCOPPER			;SAUTE SOUS PROGRAMME: MET EN PLACE LISTE COPPER
BSR.L 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 VAGUE			;VA A ROUTINE DE VAGUE

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.L	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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)

	
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
;====================
WAIT_BLITTER:			;ROUTINE POUR ATTENDRE QUE LE BLITTER
BTST #14,DMACONR		;EST FINI SON PRECEDENT TRAVAIL
BNE.S WAIT_BLITTER
RTS
;===================
TABLEADD:
BLK.L N+25,0

ACTUALPOS: DC.W 200

TABLEDECAL: BLK.B N+20+5,0

OLD: DC.B 0
even
;===================
VAGUE:

	BTST#10,$dff016			;TEST BOUTON DROIT SOURIS
	BNE.S PRE

	MOVE.B $DFF00B,D0		;GESTION DE LA SOURIS
	AND.L #$FF,D0
	MOVE.B OLD,D1
	MOVE.B D0,OLD
	SUB.B D1,D0
	BTST#7,D0
	BEQ OK
	NEG.B D0
	NEG.W D0
OK:
	ADD.W D0,ACTUALPOS
	BRA.S KAM

PRE:
	MOVE.L PWA,A0
	ADDQ.L #2,PWA
	MOVE.W (A0)+,ACTUALPOS
	CMP.L #FWA,A0
	BLO.S KAM
	MOVE.L #WA,PWA
KAM:

	MOVE#N-1,D0		;CALCULE DES NOUVELLES POS ECRAN

	LEA LISTECOPPER+24,A0
	LEA TABLEADD,A1
	LEA TABLEDECAL,A2
	MOVE.L #$58000000+$00860086,D4
	MOVE.L #$0800b000+$00860086,D5
	MOVE.L #$6000+$0086,D6
CONSTRUCT:

	MOVE.L D4,D1
	MOVE.L D5,D2
	MOVE.L D6,D3
	SUB.L (A1),D1
	SUB.L (A1),D2
	SUB.L (A1)+,D3
	MOVE.W D1,6(A0)
	SWAP D1
	MOVE.W D1,10(A0)
	SWAP D1
	MOVE.W D2,14(A0)
	SWAP D2
	MOVE.W D2,18(A0)
	SWAP D2
	MOVE.W D3,22(A0)
	MOVE.B (A2)+,27(A0)
	ADDA.L #28,A0
	ADD.L #$00580058,D4
	ADD.L #$00580058,D5
	ADD.W #$0058,D6
	DBRA D0,CONSTRUCT

	LEA TABLEADD,A0		;MONTE L'ONDE POUR LES ADDRESSES
	LEA TABLEADD+4,A1
	MOVE#N+20-1,D0
UP1:
	MOVE.L (A1)+,(A0)+
	DBRA D0,UP1

	MOVE.W ACTUALPOS,D2	;SOUS FORME DECIMAL (EX:178)

	CMP.W #140,D2
	BHI.L OKAY
	MOVE.W #140,ACTUALPOS
	MOVE.W #140,D2
OKAY:
	CMP.W #600,D2
	BLO.S OK2
	MOVE.W #600,ACTUALPOS
	MOVE.W #600,D2
OK2:

	MOVE.W D2,D1
	LSR.W #3,D1		;/8 (POUR AVOIR DES OCTETS)
	AND.W #$FFFE,D1		;ADDRESSE PAIR
	MOVE.W D1,(A0)+
	MOVE.W D1,(A0)

	LEA TABLEDECAL,A0		;DEPLACE ONDE DE DECALAGE
	LEA TABLEDECAL+1,A1
	MOVE#N+20-1,D0
UP2:
	MOVE.B (A1)+,(A0)+
	DBRA D0,UP2

	AND.W #$F,D2	;CALCUL DU DECALAGE
	MOVE.B D2,D1
	LSL.B #4,D2
	ORI.B D1,D2
	MOVE.B D2,(A0)
	
rts
;===================
INIT_ALL:

LEA listecopper,A0		;INSTALLES COPPER LISTE
MOVE.L #$2b0ffffe,(A0)+		;PROVOQUES IRQ COPPER

MOVE.L #$00E00006,(A0)+
MOVE.L #$00E40006,(A0)+
MOVE.L #$00E80006,(A0)+
MOVE.L #$00EC0007,(A0)+
MOVE.L #$00F00007,(A0)+

MOVE #N-1,D0
MOVE.L #$00E20000+44,D1	;PBPL1
MOVE.L #$00E65800+44,D2	;PBPL2
MOVE.L #$00EAb000+44,D3	;PBPL3
MOVE.L #$00EE0800+44,D4	;PBPL4
MOVE.L #$00F26000+44,D5	;PBPL5

MOVE.L #$01020000,D6
MOVE.L #$280FFFFE,D7

INSTALLES:
MOVE.L D7,(A0)+
MOVE.L D1,(A0)+
MOVE.L D2,(A0)+
MOVE.L D3,(A0)+
MOVE.L D4,(A0)+
MOVE.L D5,(A0)+
MOVE.L D6,(A0)+

ADD.L #$1000000,D7
ADD.W #44*2,D1
ADD.W #44*2,D2
ADD.W #44*2,D3
ADD.W #44*2,D4
ADD.W #44*2,D5

DBRA D0,INSTALLES

MOVE.L #$01000000,(A0)+

MOVE.L #$FFFFFFfE,(A0)+	


RTS
;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2c71	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$f4D1	;200 LIGNES 

	DC.W	$0092,$0030,$0094,$00D8

	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,4+44-4	;MODULOS PLANS PAIRS
	DC.W 	$010A,4+44-4	;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,$0FFF	;COULEUR 01
	DC.W	$0184,$0BDD	;COULEUR 02
	DC.W	$0186,$0899	;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

	LISTECOPPER:

	BLK.B 6200,0
	
EVEN


PWA:
DC.L WA

WA:
DC.W 140,141,141,141,141,141,141,141
DC.W 141,141,142,142,142,142,143,143
DC.W 143,144,144,145,145,146,146,147
DC.W 147,148,148,149,149,150,151,151
DC.W 152,153,154,154,155,156,157,158
DC.W 159,160,160,161,162,163,164,165
DC.W 166,168,169,170,171,172,173,174
DC.W 176,177,178,179,181,182,183,185
DC.W 186,187,189,190,192,193,195,196
DC.W 198,199,201,202,204,205,207,209
DC.W 210,212,214,215,217,219,220,222
DC.W 224,226,228,229,231,233,235,237
DC.W 239,240,242,244,246,248,250,252
DC.W 254,256,258,260,262,264,266,268
DC.W 270,272,274,277,279,281,283,285
DC.W 287,289,291,294,296,298,300,302
DC.W 305,307,309,311,313,316,318,320
DC.W 322,325,327,329,331,334,336,338
DC.W 341,343,345,347,350,352,354,357
DC.W 359,361,363,366,368,370,373,375
DC.W 377,380,382,384,386,389,391,393
DC.W 396,398,400,402,405,407,409,411
DC.W 414,416,418,421,423,425,427,429
DC.W 432,434,436,438,440,443,445,447
DC.W 449,451,454,456,458,460,462,464
DC.W 466,468,470,472,475,477,479,481
DC.W 483,485,487,489,491,493,494,496
DC.W 498,500,502,504,506,508,510,511
DC.W 513,515,517,519,520,522,524,525
DC.W 527,529,530,532,534,535,537,539
DC.W 540,542,543,545,546,548,549,551
DC.W 552,553,555,556,557,559,560,561
DC.W 563,564,565,566,568,569,570,571
DC.W 572,573,574,575,576,577,578,579
DC.W 580,581,582,583,584,585,586,586
DC.W 587,588,589,589,590,591,591,592
DC.W 593,593,594,594,595,595,596,596
DC.W 597,597,598,598,598,599,599,599
DC.W 599,600,600,600,600,600,600,600
DC.W 600,600,600,600,600,600,600,600
DC.W 600,600,600,600,599,599,599,599
DC.W 598,598,598,597,597,596,596,596
DC.W 595,595,594,593,593,592,592,591
DC.W 590,590,589,588,587,587,586,585
DC.W 584,583,582,582,581,580,579,578
DC.W 577,576,575,574,573,571,570,569
DC.W 568,567,566,564,563,562,561,559
DC.W 558,557,555,554,552,551,550,548
DC.W 547,545,544,542,541,539,537,536
DC.W 534,533,531,529,528,526,524,523
DC.W 521,519,517,516,514,512,510,508
DC.W 506,505,503,501,499,497,495,493
DC.W 491,489,487,485,483,481,479,477
DC.W 475,473,471,469,467,465,463,461
DC.W 458,456,454,452,450,448,446,443
DC.W 441,439,437,435,432,430,428,426
DC.W 423,421,419,417,414,412,410,408
DC.W 405,403,401,399,396,394,392,389
DC.W 387,385,383,380,378,376,373,371
DC.W 369,366,364,362,360,357,355,353
DC.W 350,348,346,344,341,339,337,334
DC.W 332,330,328,325,323,321,319,316
DC.W 314,312,310,307,305,303,301,299
DC.W 296,294,292,290,288,286,284,281
DC.W 279,277,275,273,271,269,267,265
DC.W 263,261,259,257,255,253,251,249
DC.W 247,245,243,241,239,237,235,234
DC.W 232,230,228,226,225,223,221,219
DC.W 218,216,214,212,211,209,208,206
DC.W 204,203,201,200,198,197,195,194
DC.W 192,191,189,188,186,185,184,182
DC.W 181,180,179,177,176,175,174,172
DC.W 171,170,169,168,167,166,165,164
DC.W 163,162,161,160,159,158,157,156
DC.W 156,155,154,153,152,152,151,150
DC.W 150,149,148,148,147,147,146,146
DC.W 145,145,144,144,144,143,143,143
DC.W 142,142,142,141,141,141,141,141
DC.W 141,141,141,141,141
FWA:

FINDEMO:
=============================================================================



VOICI UN PROGRAMME RELATIVEMENT OPTIMISE DE 3D FACES PLEINES, IL COMPORTE EN
OUTRE UNE ROUTINE PERMETTANT LE CALCUL DE L'ECLAIRAGE DES FACES.

POUR DES RAISONS DE TEMPS, JE N'AI PU VOUS PROPOSER UNE ROUTINE DE CLIPPING
J'ESPERE QUE JE POURRAIS VOUS LA PROPOSER DANS UN PROCHAIN NUMERO D'ASM

EN ATTENTANT REGALER VOUS DE CE PETIT PROGRAMME TRES PERFORMANT.....

=============================================================================
				VECTORLIGHT
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;VECSIN		RETURN
;VSIN		RETURN RETURN
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "vecsin",vsin

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
;==================================

;==================================
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.L SETCOPPER			;SAUTE SOUS PROGRAMME: MET EN PLACE LISTE COPPER
BSR.L 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

LEA.L	BUFFER(PC),A0		;SWAPPING ECRANS
BCHG	#1,SWAP
BNE.S	SWAP1
MOVE.L	#$70000,(A0)
BRA.S	SWAP2
SWAP1:
MOVE.L	#$77800,(A0)
SWAP2:

LEA.L	$65510,A1		;COPIE OBJET DANS ECRAN
MOVE.L	A1,$DFF050
MOVE.L	(A0),D0
ADD.W	#16+[242*2*40],D0
MOVE.L	D0,$DFF054
MOVE.L	#$80008,$DFF064
MOVE.L	#$9F00012,$DFF040
MOVE.W	#[242*2*64]+16,$DFF058

BSR.L WAIT_BLITTER

LEA.L	$60000,A0		;EFFACE OBJET
MOVE.L	A0,$DFF054
MOVE.L	#$1000000,$DFF040
MOVE.W	#0,$DFF066
MOVE.W	#[272*2*64]+20,$DFF058

BSR.L	VECTOR			;VA A ROUTINE GESTION OBJET

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.L	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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	Anim_Vec		;VA A ROUTINE D'ANIMATION
Bsr.L	Affiche_Vec		;VA A ROUTINE D'AFFICHAGE

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
;====================
WAIT_BLITTER:	
	BTST	#14,DMACONR
LOOP_WAIT_BLT:
	BTST	#14,DMACONR
	BNE.S	LOOP_WAIT_BLT
	RTS

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; VECTOR Routine ญญญญญญญญญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

;CALCULS DES COORDONNEES ET DES FACES

VECTOR:			LEA.L	CONTROL(PC),A1
			LEA.L	OBJET(PC),A0
			LEA.L	VSIN(PC),A2
			LEA.L	SIN_COS(PC),A3
			MOVEQ	#3-1,D7
			MOVE.W	#$7FE,D1
			MOVE.W	#512,D2
COPY_SIN_COS:		MOVE.W	(A1)+,D0
			AND.W	D1,D0
			MOVE.W	(A2,D0.W),(A3)+	;SIN
			ADD.W	D2,D0
			AND.W	D1,D0
			MOVE.W	(A2,D0.W),(A3)+	;COS
			DBF	D7,COPY_SIN_COS
			MOVE.W	(A0)+,D7
			SUBQ.W	#1,D7
			LEA.L	COORDS(PC),A2
VEC_CALC:		MOVEM.W	(A0)+,D0-D2
			MOVE.W	(A1),D5		;OBSERVATEUR
			LEA.L	SIN_COS(PC),A3
			MOVE.W	D0,D3
			MOVE.W	D1,D4
			MULS	(A3),D0
			MULS	(A3)+,D4
			MULS	(A3),D1
			MULS	(A3)+,D3
			ADD.L	D0,D1
			SUB.L	D3,D4
			SWAP	D1
			SWAP	D4
			MOVE.W	D4,D0
			ASR.W	#1,D2
			MOVE.W	D2,D3
			MULS	(A3),D4
			MULS	(A3)+,D3
			MULS	(A3),D2
			MULS	(A3)+,D0
			ADD.L	D4,D2
			SUB.L	D3,D0
			ADD.L	D0,D0
			SWAP	D0
			MOVE.W	D1,D3
			MOVE.W	D0,D4
			MULS	(A3),D1
			MULS	(A3)+,D4
			MULS	(A3),D0
			MULS	(A3)+,D3
			ADD.L	D0,D1
			SUB.L	D4,D3
			SWAP	D3
			ASR.L	#8,D1
			ASR.L	#8,D2
			ADD.W	D3,D5		;OBJ DIST
			DIVS	D5,D1		;OBS DIST
			DIVS	D5,D2
			ADD.W	#336,D1
			ADD.W	#62,D2
			MOVE.W	D1,(A2)+	;RANGE X,Y,Z
			MOVE.W	D2,(A2)+
			MOVE.W	D5,(A2)+
			DBF	D7,VEC_CALC
			LEA.L	COORDS(PC),A1
			LEA.L	Z_BUFFER(PC),A2
			LEA.L	(A2),A3
			MOVE.W	(A0)+,D7
			SUBQ.W	#1,D7
			MOVE.W	#-1,COMPTEUR_FACES
PLACE_FACES:		CLR.W	D1
			MOVE.W	(A0)+,D0
			MOVE.L	(A1,D0.W),(A2)+
			ADD.W	4(A1,D0.W),D1
			MOVE.W	(A0)+,D0
			MOVE.L	(A1,D0.W),(A2)+
			ADD.W	4(A1,D0.W),D1
			MOVE.W	(A0)+,D0
			MOVE.L	(A1,D0.W),(A2)+
			ADD.W	4(A1,D0.W),D1
			MOVE.W	(A0)+,D0
			MOVE.L	(A1,D0.W),(A2)+
			ADD.W	4(A1,D0.W),D1
			MOVE.W	(A0)+,(A2)+
			MOVE.W	D1,(A2)+
			LEA.L	(A3),A2
			MOVEM.W	(A2),D0-D5
			SUB.W	D0,D2
			SUB.W	D1,D3
			SUB.W	D0,D4
			SUB.W	D1,D5
			MULS	D2,D5
			MULS	D3,D4
			SUB.L	D4,D5
			BMI.S	PAS_FACE
			LEA.L	20(A3),A3
			ADDQ.W	#1,COMPTEUR_FACES
PAS_FACE:		LEA.L	(A3),A2
			DBF	D7,PLACE_FACES
			BSR.L WAIT_BLITTER
			MOVEQ	#6,D0
			MOVE.W	D0,$DFF048
			MOVE.W	D0,$DFF050
			MOVE.W	D0,$DFF054
			MOVEQ	#40,D0
			MOVE.W	D0,$DFF060
			MOVE.W	D0,$DFF066
			MOVEQ	#-1,D0
			MOVE.L	D0,$DFF044	;$FFFFFFFF
			MOVE.W	#$8000,D0
			MOVE.L	D0,$DFF072	;$FFFF8000
			MOVE.W	COMPTEUR_FACES(PC),D6
			CMP.W	#-1,D6
			BEQ.S	PAS_FACES
COPY_FACES:		LEA.L	Z_BUFFER(PC),A0
			LEA.L	Z_BUFFER(PC),A1
			MOVE.W	COMPTEUR_FACES(PC),D0
			MOVEQ	#0,D5
CHECK_Z			CMP.W	18(A0),D5
			BGE.S	PAS_CHECK_Z
			TST.W	18(A0)
			BEQ.S	PAS_CHECK_Z
			MOVE.W	18(A0),D5
			LEA.L	(A0),A1
PAS_CHECK_Z:		LEA.L	20(A0),A0
			DBF	D0,CHECK_Z
			CLR.W	18(A1)
			MOVEM.W	(A1),D0-D3	;X1,Y1,X2,Y2
			BSR.W	TRACE_LIGNES
			MOVEM.W	4(A1),D0-D3	;X2,Y2,X3,Y3
			BSR.W	TRACE_LIGNES
			MOVEM.W	8(A1),D0-D3	;X3,Y3,X4,Y4
			BSR.W	TRACE_LIGNES
			MOVEM.W	12(A1),D0/D1	;X4,Y4,X1,Y1
			MOVEM.W	(A1),D2/D3
			BSR.W	TRACE_LIGNES
			DBF	D6,COPY_FACES

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; SOURCE LIGHT V0.1 ญญญญญญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

;CALCUL DE LA COULEUR DES FACES

PAS_FACES:		LEA.L	COULEURS(PC),A0	;SUPPORT DES COULEURS
			LEA.L	COORDS(PC),A1	;CONTIENT X,Y,Z
			LEA.L	TABLE(PC),A2
			MOVE.W	4(A1),D0	;Z1
			MOVE.W	10(A1),D1	;Z2
			SUB.W	D1,D0		;Z2-Z1
			LSR.W	#5,D0		;Z1/32
			CMP.W	D0,D1		;Z1=Z2?
			BEQ.S	CENTRE1		;OUI:NE CHANGE RIEN
			CMP.W	D0,D1		;Z1>Z2?
			BHI.S	CT1		;OUI:LA FACE EST A DROITE
			NEG	D0		;NON:LA FACE EST A GAUCHE
						;DONC Z1=-Z1
CT1:			ROR.W	#8,D0		;Z1/256
			ADD.W	#$100,D0	;AU CAS OU D0=0
			AND.W	#$F00,D0	;$F00 EN VALEUR MAX
			ROR.W	#8,D0		;SINON TOUT SERAIT ROUGE
			NEG.W	D0
			ADD.W	D0,D0
			MOVE.W	28(A2,D0.W),2(A0)
CENTRE1:			LEA.L	TABLE(PC),A2
			MOVE.W	10(A1),D0	;Z3
			MOVE.W	16(A1),D1	;Z4
			SUB.W	D1,D0
			LSR.W	#5,D0
			CMP.W	D0,D1
			BEQ.S	CENTRE2
			CMP.W	D0,D1
			BHI.S	CT2
			NEG	D0
CT2:			ROR.W	#8,D0
			ADD.W	#$100,D0
			AND.W	#$F00,D0
			ROR.W	#8,D0
			ADD.W	D0,D0
			MOVE.W	(A2,D0.W),6(A0)
CENTRE2:		MOVE.W	28(A1),D0	;Z5
			MOVE.W	34(A1),D1	;Z6
			SUB.W	D1,D0
			LSR.W	#5,D0
			CMP.W	D0,D1
			BEQ.S	CENTRE3
			CMP.W	D0,D1
			BHI.S	CT3
			NEG	D0
CT3:			ROR.W	#8,D0
			ADD.W	#$100,D0
			AND.W	#$F00,D0
			ROR.W	#8,D0
			ADD.W	D0,D0
			MOVE.W	(A2,D0.W),10(A0)
CENTRE3:			RTS

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; TRACE LES LIGNES ญญญญญญญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

TRACE_LIGNES:		LEA.L	VALEURS(PC),A2
			CMP.W	D1,D3
			BMI.S	TRACE1
			EXG	D3,D1
			EXG	D2,D0
TRACE1:			SUB.W	D3,D1
			MOVE.W 	D3,D7
			LSL.W 	#5,D3
			LSL.W 	#3,D7
			ADD.W 	D7,D3
			MOVEQ	#$F,D4
			AND.W	D2,D4
			SUB.W	D2,D0
			BLT.S	TRACE3
			CMP.W	D0,D1
			BGE.S	TRACE2
			MOVEQ	#19,D7
			BRA.S	TRACE5
TRACE2:			MOVEQ	#3,D7
			EXG	D0,D1
			BRA.S	TRACE5
TRACE3:			NEG.W	D0
			CMP.W	D0,D1
			BGE.S	TRACE4
			MOVEQ	#23,D7
			BRA.S	TRACE5
TRACE4:			MOVEQ	#11,D7
			EXG	D0,D1
TRACE5:			ADD.W	D1,D1
			LSR.W	#3,D2
			ADD.W	D2,D3
			CMP.W	#1,16(A1)
			BNE.S	PLAN2
			ADD.W	#[272*40],D3
PLAN2:			ADD.W	(A2)+,D3
			MOVE.W	D1,D2
			SUB.W	D0,D2
			MOVE.W	D2,D5
			SUB.W	D0,D2
			ROR.W	#4,D4
			OR.W	(A2)+,D4
			LSL.W	#6,D0
			ADD.W	(A2)+,D0
			OR.W	(A2)+,D7
			BSR.L WAIT_BLITTER
			MOVE.W	D1,$DFF062
			MOVE.W	D2,$DFF064
			MOVE.W	D4,$DFF040
			MOVE.W	D7,$DFF042
			MOVE.W	D5,$DFF052
			MOVE.W	D3,$DFF04A
			NOT.W	D3
			MOVE.W	D3,$DFF056
			MOVE.W	D0,$DFF058
			RTS

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; ANIMATION DU VECTORIEL ญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

ANIM_VEC:		LEA.L	CONTROL(PC),A0
			MOVE.W	#$7FE,D0
			AND.W	D0,(A0)		;ROTATION X
			AND.W	D0,2(A0)	;ROTATION Y
			AND.W	D0,4(A0)	;ROTATION Y
			MOVE.W	#14,D0
			ADD.W	D0,2(A0)	;ROTATION X
			ADD.W	D0,4(A0)	;ROTATION Y
			CMP.W	#$330,6(A0)	;DISTANCE
			BLS.S	FIN_ZOOM
			SUBQ.W	#4,6(A0)	;DISTANCE
FIN_ZOOM:		RTS

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; AFFICHAGE DU VECTORIEL ญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

;MET ADRESSE IMAGE DANS LISTE COPPER

AFFICHE_VEC:		MOVE.L	BUFFER(PC),D0
			LEA.L	VEC_BPS(PC),A1
			ADD.W	#22,D0
			MOVE.W	D0,6(A1)
			SWAP	D0
			MOVE.W	D0,2(A1)
			SWAP	D0
			ADD.W	#[272*40],D0
			MOVE.W	D0,14(A1)
			SWAP	D0
			MOVE.W	D0,10(A1)
			RTS
	
;TABLE DES COULEURS
TABLE:			DC.W	$100,$200,$300,$400,$500
			DC.W	$600,$700,$800,$900,$A00
			DC.W	$B00,$C00,$D00,$E00,$F00


VALEURS:			DC.W	$FA0,$A4A,66,64

SWAP:			DC.W	0

BUFFER:			DC.L	$70000

COMPTEUR_FACES:		DC.W	0

CONTROL:		DC.W	0	;X
			DC.W	0	;Y
			DC.W	0	;Z
			DC.W	$6A0	;DISTANCE

OBJET:

DC.W	8	;NOMBRE DE POINTS

DC.W	 800,-800, 800,
DC.W	-800,-800, 800	;COORDONEES X Y ET Z
DC.W	-800, 800, 800
DC.W	 800, 800, 800	;DE CHAQUE POINT
DC.W	 800,-800,-800
DC.W	-800,-800,-800
DC.W	-800, 800,-800
DC,W	 800, 800,-800

DC.W	8		;NOMBRE DE FACES

DC.W	0,6,12,18,0	;NUMEROS DES POINTS * 6

DC.W	42,36,30,24,0	; 0 = FACE DESSINEE DANS PLAN 1

DC.W	24,30,6,0,1	; 1 = FACE DESSINEE DANS PLAN 2

DC.W	18,12,36,42,1

DC.W	0,18,42,24,0	;CETTE FACE EST DESSINEE DANS LES 2 PLANS
DC.W	0,18,42,24,1	;

DC.W	30,36,12,6,0
DC.W	30,36,12,6,1

SIN_COS:			BLK.W	12

COORDS:			BLK.W	8*3

Z_BUFFER:		BLK.W	8*10

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
; DATAS ญญญญญญญญญญญญญญญญญญญญญญญญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

VSIN:			BLK.B 3000


;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2c81	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$f4D1	;200 LIGNES

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

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


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$2200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;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
	COULEURS:
	DC.W	$0182,$0FFF	;COULEUR 01
	DC.W	$0184,$0BDD	;COULEUR 02
	DC.W	$0186,$0899	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

;	DC.W $FFDF,$FFFE

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



VOICI UN PROGRAMME TRES INTERRESSANT D'ETOILES 3D COMME VOUS POUVEZ LES VOIR
DANS DE TRES NOMBREUSES DEMOS. CELUI CI EST DU AU FAMEUX GROUPE PHENOMENA
QUE JE REMERCIE AU PASSAGE.... 

=============================================================================
				ETOILES 3D
=============================================================================
org $20000	;EMPLACEMENT EN MEMOIRE
load $20000	;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
;==================================
SCREENH=280			;HAUTEUR ECRAN
SCREENW=44			;LARGEUR ECRAN
BMAPSIZE=280*44			;TAILLE PLAN

IMAGE = $30000			;ADRESSE IMAGE
SCREEN:		DC.L	IMAGE		;POINTEUR ECRAN 1
		DC.L	IMAGE+[44*280*2];POINTEUR ECRAN 2  DOUBLE BUFFER

STARADR=IMAGE+[44*280*4]	;ADRESSE ZONE COORDONNEES ETOILES
OLDADR=STARADR+5000		;ADRESSE ZONE ANCIENNES COORDONNEES
MULSADR=OLDADR+5000		;ADRESSE ZONE LIGNES

ANTSTARS=256-1			;NOMBRE D'ETOILES
				
;==================================
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.L	INITALL			;VA A ROUTINE D'INITIALISATION
BSR.L	MAKEMULSLIST		;VA A ROUTINE CALCUL ADRESSE LIGNES
BSR.L	RANDOMIZE		;VA A ROUTINE ALEATOIRE
BSR.L	BLITWAIT		;VA A ROUTINE ATTENTE BLITTER

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 STARS			;VA A ROUTINE ETOILES

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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)

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
;====================
BLITWAIT:	BTST	#14,$DFF002	;ATTENTE BLITTER
		BNE.S	BLITWAIT
		RTS

CLEARSCREEN:	BSR	BLITWAIT	;EFFACE ECRAN
		MOVE.L	#-1,$DFF044
		MOVE.W	D2,$DFF066
		MOVE.L	#$01000000,$DFF040
		MOVE.L	D0,$DFF054
		MOVE.W	D1,$DFF058
		RTS

RANDOMIZE:	LEA.L	STARADR,A0	;ROUTINE DE CALCUL ALEATOIRE
		MOVE.W	#13,D1		;DES COORDONNEES DES ETOILES	
		MOVE.W	#12456,D2
		MOVE.W	#4,D3
		MOVE.W	#500-1,D7
RNDLOOP:	MOVEQ	#3-1,D6
RNDLOOP2:	MOVE.W	$DFF006,D0
		EXT.W	D0
		MULS	D2,D0
		MULS	D1,D0
		AND.W	#$1FF,D0
		MOVE.W	D0,(A0)+
		ADD.W	D1,D2
		ADD.W	D3,D1
		DBRA	D6,RNDLOOP2
		DBRA	D7,RNDLOOP
		RTS

;------------------------------------------------------------------------
INITALL:	MOVE.L	SCREEN(PC),D0	;EFFACE ECRAN 1 ET 2
		MOVE.W	#280*64*2+22,D1
		MOVEQ	#0,D2
		BSR	CLEARSCREEN
		MOVE.L	SCREEN+4(PC),D0
		MOVE.W	#280*64*2+22,D1
		MOVEQ	#0,D2
		BSR	CLEARSCREEN

		LEA.L	BMAP(PC),A0	;PLACE ADRESSE ECRAN DANS
		MOVEQ	#2-1,D7		;COPPER LIST
BMAPLOOP:	SWAP	D0
		MOVE.W	D0,2(A0)
		SWAP	D0
		MOVE.W	D0,6(A0)
		ADDQ.L	#8,A0
		ADD.L	#BMAPSIZE,D0
		DBRA	D7,BMAPLOOP

		MOVE.L	#ZV,XSAVE
		MOVE.L	#YV,YSAVE
		MOVE.L	#ZV,ZSAVE
		RTS

MAKEMULSLIST:	MOVE.L	#MULSADR,A0	;CALCUL ADRESSE LIGNES
		MOVEQ	#0,D0
		MOVE.W	#380-1,D7
MULSLOOP:	MOVE.W	D0,D1
		MULS	#SCREENW,D1
		MOVE.W	D1,(A0)+
		CMP.W	#280,D0
		BEQ.S	NOADD33
		ADDQ.W	#1,D0
NOADD33:	DBRA	D7,MULSLOOP
		RTS

;------------------------------------------------------------------------

STARS:		BSR.L	BUFFRA		;DOUBLE BUFFER
		BSR.L	CLEAROLD	;EFFACE ANCIEN ECRAN
		BSR.L	FIXSPEED	;FIXE VITESSE
		BSR.L	FIXVALUES	;FIXE VALEURS
		BSR.L	BLITWAIT	;ATTENDS BLITTER
		BSR.L	PLOTSTARS	;AFFICHE ETOILES
		RTS

BUFFRA:		MOVE.L	SCREEN(PC),D0		;PLACE ADRESSE ECRAN
		MOVE.L	SCREEN+4(PC),SCREEN	;DANS LISTE COPPER
		MOVE.L	D0,SCREEN+4
		LEA.L	BMAP(PC),A0
		MOVEQ	#2-1,D7
BMAPLOOP2:	SWAP	D0
		MOVE.W	D0,2(A0)
		SWAP	D0
		MOVE.W	D0,6(A0)
		ADDQ.L	#8,A0
		ADD.L	#BMAPSIZE,D0
		DBRA	D7,BMAPLOOP2
		RTS

CLEAROLD:	MOVE.L	SCREEN(PC),D0	;EFFACE ECRAN
		MOVE.W	#280*64*2+22,D1
		MOVEQ	#0,D2
		BSR	CLEARSCREEN
		RTS

FIXVALUES:	LEA.L	STARADR,A0	;FIXE LES COORDONNEES X Y ET Z
		MOVE.W	ZADD(PC),D2	;DES ETOILES
		MOVE.W	XADD(PC),D0
		MOVE.W	YADD(PC),D1
		MOVE.W	#ANTSTARS,D7
FIXLOOP:	MOVE.W	(A0),D3
		ADD.W	D0,D3
		CMP.W	#-250,D3
		BGE.S	NOLO
		ADD.W	#500,D3
NOLO:		CMP.W	#250,D3
		BLT.S	NOHI
		SUB.W	#500,D3
NOHI:		MOVE.W	D3,(A0)+
		MOVE.W	(A0),D3
		ADD.W	D1,D3
		ADD.W	#256,D3
		AND.W	#$1FF,D3
		SUB.W	#256,D3
		MOVE.W	D3,(A0)+
		MOVE.W	(A0),D3
		ADD.W	D2,D3
		AND.W	#$1FF,D3
		MOVE.W	D3,(A0)+
		DBRA	D7,FIXLOOP
		RTS

PLOTSTARS:	LEA.L	OLDADR,A1	;AFFICHE ETOILES
		LEA.L	STARADR,A0
		MOVE.L	SCREEN(PC),A2
		LEA.L	DJUP(PC),A3
		LEA.L	MULSADR,A4
		MOVE.W	#352,A5
		MOVE.W	#280,A6
		MOVE.W	#172,D2
		MOVE.W	#140,D4
		MOVE.W	#BMAPSIZE,D1
		MOVE.W	#ANTSTARS,D7

PLOTLOOP:	MOVE.W	4(A0),D5
		ADD.W	D5,D5
		MOVE.W	(A3,D5.W),D6
		MOVE.W	(A0)+,D0
		MULS	D6,D0
		LSL.L	#4,D0
		SWAP	D0
		ADD.W	D2,D0
		MULS	(A0)+,D6
		LSL.L	#4,D6
		SWAP	D6
		ADD.W	D4,D6
		CMP.W	A6,D6
		BHI.S	NOPLOT2
		CMP.W	A5,D0
		BHI.S	NOPLOT2
		MOVE.W	D0,D3
		LSR.W	#3,D0
		ADD.W	D6,D6
		MOVE.W	(A4,D6.W),D6
		ADD.W	D0,D6
		MOVEQ	#7,D0
		SUB.W	D3,D0
		BTST	#8,D5
		BEQ.S	NOPLOT1
		BSET	D0,(A2,D6.W)
NOPLOT1:	ADD.W	D1,D6
		BTST	#9,D5
		BEQ.S	NOPLOT2
		BSET	D0,(A2,D6.W)
NOPLOT2:	ADDQ.W	#2,A0
		DBRA	D7,PLOTLOOP

		RTS

FIXSPEED:	MOVE.L	XSAVE(PC),A0	;FIXE VITESSE DES ETOILES
		ADDQ.L	#4,A0
		CMP.W	#60,(A0)
		BNE.S	OO1
		MOVE.L	#ZV,XSAVE
		MOVE.L	XSAVE(PC),A0
OO1:		MOVE.W	(A0),XADD
		MOVE.L	A0,XSAVE
		MOVE.L	YSAVE(PC),A0
		ADDQ.L	#2,A0
		CMP.W	#60,(A0)
		BNE.S	OO2
		MOVE.L	#YV,YSAVE
		MOVE.L	YSAVE(PC),A0
OO2:		MOVE.W	(A0),YADD
		MOVE.L	A0,YSAVE
		MOVE.L	ZSAVE(PC),A0
		ADDQ.L	#2,A0
		CMP.W	#60,(A0)
		BNE.S	OO3
		MOVE.L	#ZV,ZSAVE
		MOVE.L	ZSAVE(PC),A0
OO3:		MOVE.W	(A0),ZADD
		MOVE.L	A0,ZSAVE
		RTS

ZADD:		DC.W	-8	;VALEUR ROTATION Z
XADD:		DC.W	0	;VALEUR ROTATION X
YADD:		DC.W	0	;VALEUR ROTATION Y

XSAVE:		DC.L	0	
YSAVE:		DC.L	0
ZSAVE:		DC.L	0

XV:		DC.W	-4,60

YV:	DC.W	10,10,10,10,10,10,10,10
	DC.W	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,8,8,8
	dc.w	8,8,8,8,8,8,8,8
	dc.w	8,8,8,8,8,8,7,7
	dc.w	7,7,7,7,7,7,7,7
	dc.w	7,7,7,6,6,6,6,6
	dc.w	6,6,6,6,6,6,6,5
	dc.w	5,5,5,5,5,5,5,5
	dc.w	5,5,4,4,4,4,4,4
	dc.w	4,4,4,4,3,3,3,3
	dc.w	3,3,3,3,3,3,2,2
	dc.w	2,2,2,2,2,2,2,2
	dc.w	1,1,1,1,1,1,1,1
	dc.w	1,1,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,-1,-1,-1
	dc.w	-1,-1,-1,-1,-1,-1,-1,-2
	dc.w	-2,-2,-2,-2,-2,-2,-2,-2
	dc.w	-2,-3,-3,-3,-3,-3,-3,-3
	dc.w	-3,-3,-3,-4,-4,-4,-4,-4
	dc.w	-4,-4,-4,-4,-4,-4,-5,-5
	dc.w	-5,-5,-5,-5,-5,-5,-5,-5
	dc.w	-5,-5,-6,-6,-6,-6,-6,-6
	dc.w	-6,-6,-6,-6,-6,-6,-6,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-6,-6,-6,-6,-6,-6
	dc.w	-6,-6,-6,-6,-6,-6,-6,-5
	dc.w	-5,-5,-5,-5,-5,-5,-5,-5
	dc.w	-5,-5,-5,-4,-4,-4,-4,-4
	dc.w	-4,-4,-4,-4,-4,-4,-3,-3
	dc.w	-3,-3,-3,-3,-3,-3,-3,-3
	dc.w	-2,-2,-2,-2,-2,-2,-2,-2
	dc.w	-2,-2,-1,-1,-1,-1,-1,-1
	dc.w	-1,-1,-1,-1,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,1
	dc.w	1,1,1,1,1,1,1,1
	dc.w	1,2,2,2,2,2,2,2
	dc.w	2,2,2,3,3,3,3,3
	dc.w	3,3,3,3,3,4,4,4
	dc.w	4,4,4,4,4,4,4,5
	dc.w	5,5,5,5,5,5,5,5
	dc.w	5,5,6,6,6,6,6,6
	dc.w	6,6,6,6,6,6,7,7
	dc.w	7,7,7,7,7,7,7,7
	dc.w	7,7,7,8,8,8,8,8
	dc.w	8,8,8,8,8,8,8,8
	dc.w	8,8,8,8,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10,60

ZV:	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,-1,-1,-1
	dc.w	-1,-1,-1,-1,-1,-1,-1,-2
	dc.w	-2,-2,-2,-2,-2,-2,-2,-2
	dc.w	-2,-3,-3,-3,-3,-3,-3,-3
	dc.w	-3,-3,-3,-4,-4,-4,-4,-4
	dc.w	-4,-4,-4,-4,-4,-4,-5,-5
	dc.w	-5,-5,-5,-5,-5,-5,-5,-5
	dc.w	-5,-5,-6,-6,-6,-6,-6,-6
	dc.w	-6,-6,-6,-6,-6,-6,-6,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-9,-9,-9,-9,-9
	dc.w	-9,-9,-9,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-8,-8,-8,-8,-8,-8,-8
	dc.w	-8,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-7,-7,-7,-7,-7,-7
	dc.w	-7,-7,-6,-6,-6,-6,-6,-6
	dc.w	-6,-6,-6,-6,-6,-6,-6,-5
	dc.w	-5,-5,-5,-5,-5,-5,-5,-5
	dc.w	-5,-5,-5,-4,-4,-4,-4,-4
	dc.w	-4,-4,-4,-4,-4,-4,-3,-3
	dc.w	-3,-3,-3,-3,-3,-3,-3,-3
	dc.w	-2,-2,-2,-2,-2,-2,-2,-2
	dc.w	-2,-2,-1,-1,-1,-1,-1,-1
	dc.w	-1,-1,-1,-1,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,1
	dc.w	1,1,1,1,1,1,1,1
	dc.w	1,2,2,2,2,2,2,2
	dc.w	2,2,2,3,3,3,3,3
	dc.w	3,3,3,3,3,4,4,4
	dc.w	4,4,4,4,4,4,4,5
	dc.w	5,5,5,5,5,5,5,5
	dc.w	5,5,6,6,6,6,6,6
	dc.w	6,6,6,6,6,6,7,7
	dc.w	7,7,7,7,7,7,7,7
	dc.w	7,7,7,8,8,8,8,8
	dc.w	8,8,8,8,8,8,8,8
	dc.w	8,8,8,8,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,10
	dc.w	10,10,10,10,10,10,10,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,9,9,9
	dc.w	9,9,9,9,9,8,8,8
	dc.w	8,8,8,8,8,8,8,8
	dc.w	8,8,8,8,8,8,7,7
	dc.w	7,7,7,7,7,7,7,7
	dc.w	7,7,7,6,6,6,6,6
	dc.w	6,6,6,6,6,6,6,5
	dc.w	5,5,5,5,5,5,5,5
	dc.w	5,5,4,4,4,4,4,4
	dc.w	4,4,4,4,3,3,3,3
	dc.w	3,3,3,3,3,3,2,2
	dc.w	2,2,2,2,2,2,2,2
	dc.w	1,1,1,1,1,1,1,1
	dc.w	1,1,0,0,0,0,0,0,60


DJUP:
	dc.w    $6a00,$6000,$5a00,$5200,$4d00,$4800,$4400,$4000
	DC.W	$3D12,$3BF4,$3AE0,$39D6,$38D6,$37DE,$36EE,$3606
	DC.W	$3526,$344C,$337A,$32AE,$31E9,$3129,$306F,$2FBA
	DC.W	$2F0B,$2E60,$2DBB,$2D1A,$2C7D,$2BE4,$2B50,$2ABF
	DC.W	$2A32,$29A9,$2923,$28A0,$2821,$27A5,$272B,$26B5
	DC.W	$2641,$25D0,$2562,$24F6,$248C,$2425,$23C0,$235D
	DC.W	$22FD,$229E,$2241,$21E7,$218E,$2137,$20E1,$208E
	DC.W	$203C,$1FEB,$1F9C,$1F4F,$1F03,$1EB9,$1E70,$1E28
	DC.W	$1DE2,$1D9C,$1D59,$1D16,$1CD4,$1C94,$1C55,$1C17
	DC.W	$1BD9,$1B9D,$1B62,$1B28,$1AEF,$1AB7,$1A7F,$1A49
	DC.W	$1A13,$19DF,$19AB,$1978,$1946,$1914,$18E3,$18B3
	DC.W	$1884,$1855,$1827,$17FA,$17CE,$17A2,$1776,$174C
	DC.W	$1721,$16F8,$16CF,$16A7,$167F,$1658,$1631,$160B
	DC.W	$15E5,$15C0,$159B,$1577,$1553,$1530,$150D,$14EA
	DC.W	$14C8,$14A7,$1486,$1465,$1445,$1425,$1405,$13E6
	DC.W	$13C7,$13A9,$138B,$136D,$1350,$1333,$1316,$12FA
	DC.W	$12DE,$12C3,$12A7,$128C,$1271,$1257,$123D,$1223
	DC.W	$1209,$11F0,$11D7,$11BE,$11A6,$118E,$1176,$115E
	DC.W	$1147,$112F,$1118,$1102,$10EB,$10D5,$10BF,$10A9
	DC.W	$1094,$107E,$1069,$1054,$103F,$102B,$1017,$1002
	DC.W	$0FEF,$0FDB,$0FC7,$0FB4,$0FA1,$0F8E,$0F7B,$0F68
	DC.W	$0F56,$0F43,$0F31,$0F1F,$0F0E,$0EFC,$0EEB,$0ED9
	DC.W	$0EC8,$0EB7,$0EA6,$0E96,$0E85,$0E75,$0E64,$0E54
	DC.W	$0E44,$0E34,$0E25,$0E15,$0E06,$0DF6,$0DE7,$0DD8
	DC.W	$0DC9,$0DBA,$0DAC,$0D9D,$0D8F,$0D81,$0D72,$0D64
	DC.W	$0D56,$0D48,$0D3B,$0D2D,$0D20,$0D12,$0D05,$0CF8
	DC.W	$0CEB,$0CDE,$0CD1,$0CC4,$0CB7,$0CAB,$0C9E,$0C92
	DC.W	$0C86,$0C79,$0C6D,$0C61,$0C55,$0C49,$0C3E,$0C32
	DC.W	$0C26,$0C1B,$0C0F,$0C04,$0BF9,$0BEE,$0BE3,$0BD8
	DC.W	$0BCD,$0BC2,$0BB7,$0BAC,$0BA2,$0B97,$0B8D,$0B82
	DC.W	$0B78,$0B6E,$0B64,$0B5A,$0B50,$0B46,$0B3C,$0B32
	DC.W	$0B28,$0B1E,$0B15,$0B0B,$0B02,$0AF8,$0AEF,$0AE6
	DC.W	$0ADC,$0AD3,$0ACA,$0AC1,$0AB8,$0AAF,$0AA6,$0A9D
	DC.W	$0A95,$0A8C,$0A83,$0A7B,$0A72,$0A69,$0A61,$0A59
	DC.W	$0A50,$0A48,$0A40,$0A38,$0A2F,$0A27,$0A1F,$0A17
	DC.W	$0A0F,$0A08,$0A00,$09F8,$09F0,$09E8,$09E1,$09D9
	DC.W	$09D2,$09CA,$09C3,$09BB,$09B4,$09AD,$09A5,$099E
	DC.W	$0997,$0990,$0989,$0981,$097A,$0973,$096C,$0966
	DC.W	$095F,$0958,$0951,$094A,$0943,$093D,$0936,$0930
	DC.W	$0929,$0922,$091C,$0915,$090F,$0909,$0902,$08FC
	DC.W	$08F6,$08EF,$08E9,$08E3,$08DD,$08D7,$08D1,$08CB
	DC.W	$08C5,$08BF,$08B9,$08B3,$08AD,$08A7,$08A1,$089B
	DC.W	$0895,$0890,$088A,$0884,$087F,$0879,$0873,$086E
	DC.W	$0868,$0863,$085D,$0858,$0852,$084D,$0848,$0842
	DC.W	$083D,$0838,$0832,$082D,$0828,$0823,$081E,$0819
	DC.W	$0813,$080E,$0809,$0804,$07FF,$07FA,$07F5,$07F0
	DC.W	$07EB,$07E7,$07E2,$07DD,$07D8,$07D3,$07CE,$07CA
	DC.W	$07C5,$07C0,$07BC,$07B7,$07B2,$07AE,$07A9,$07A4
	DC.W	$07A0,$079B,$0797,$0792,$078E,$0789,$0785,$0781
	DC.W	$077C,$0778,$0774,$076F,$076B,$0767,$0762,$075E
	DC.W	$075A,$0756,$0751,$074D,$0749,$0745,$0741,$073D
	DC.W	$0739,$0735,$0731,$072C,$0728,$0724,$0720,$071D
	DC.W	$0719,$0715,$0711,$070D,$0709,$0705,$0701,$06FD
	DC.W	$06FA,$06F6,$06F2,$06EE,$06EB,$06E7,$06E3,$06DF
	DC.W	$06DC,$06D8,$06D4,$06D1,$06CD,$06CA,$06C6,$06C2
	DC.W	$06BF,$06BB,$06B8,$06B4,$06B1,$06AD,$06AA,$06A6
	DC.W	$06A3,$069F,$069C,$0699,$0695,$0692,$068E,$068B
	DC.W	$0688,$0684,$0681,$067E,$067A,$0677,$0674,$0671
	DC.W	$066D,$066A,$0667,$0664,$0661,$065D,$065A,$0657
	DC.W	$0654,$0651,$064E,$064B,$0648,$0645,$0641,$063E
	DC.W	$063B,$0638,$0635,$0632,$062F,$062C,$0629,$0626
	DC.W	$0623,$0620,$061E,$061B,$0618,$0615,$0612,$060F
	DC.W	$060C,$0609,$0607,$0604,$0601,$05FE,$05FB,$05F8
	DC.W	$05F6,$05F3,$05F0,$05ED,$05EB,$05E8,$05E5,$05E2
	DC.W	$05E0,$05DD,$05DA,$05D8,$05D5,$05D2,$05D0,$05CD
	DC.W	$05CA,$05C8,$05C5,$05C3,$05C0,$05BE,$05BB,$05B8
	DC.W	$05B6,$05B3,$05B1,$05AE,$05AC,$05A9,$05A7,$05A4
	DC.W	$05A2,$059F,$059D,$059A,$0598,$0595,$0593,$0591
	DC.W	$058E,$058C,$0589,$0587,$0585,$0582,$0580,$057D
	DC.W	$057B,$0579,$0576,$0574,$0572,$056F,$056D,$056B
	DC.W	$0569,$0566,$0564,$0562,$055F,$055D,$055B,$0559
	DC.W	$0556,$0554,$0552,$0550,$054E,$054B,$0549,$0547
	DC.W	$0545,$0543,$0541,$053E,$053C,$053A,$0538,$0536
	DC.W	$0534,$0532,$0530,$052D,$052B,$0529,$0527,$0525
	DC.W	$0523,$0521,$051F,$051D,$051B,$0519,$0517,$0515
	DC.W	$0513,$0511,$050F,$050D,$050B,$0509,$0507,$0505
	DC.W	$0503,$0501,$04FF,$04FD,$04FB,$04F9,$04F7,$04F5
	DC.W	$04F3,$04F1,$04F0,$04EE,$04EC,$04EA,$04E8,$04E6
	DC.W	$04E4,$04E2,$04E0,$04DF,$04DD,$04DB,$04D9,$04D7
	DC.W	$04D5,$04D4,$04D2,$04D0,$04CE,$04CC,$04CB,$04C9
	DC.W	$04C7,$04C5,$04C3,$04C2,$04C0,$04BE,$04BC,$04BB
	DC.W	$04B9,$04B7,$04B5,$04B4,$04B2,$04B0,$04AE,$04AD
	DC.W	$04AB,$04A9,$04A8,$04A6,$04A4,$04A3,$04A1,$049F
	DC.W	$049E,$049C,$049A,$0499,$0497,$0495,$0494,$0492
	DC.W	$0490,$048F,$048D,$048C,$048A,$0488,$0487,$0485
	DC.W	$0484,$0482,$0480,$047F,$047D,$047C,$047A,$0478
	DC.W	$0477,$0475,$0474,$0472,$0471,$046F,$046E,$046C
	DC.W	$046B,$0469,$0468,$0466,$0465,$0463,$0461,$0460
	DC.W	$045E,$045D,$045C,$045A,$0459,$0457,$0456,$0454
	DC.W	$0453,$0451,$0450,$044E,$044D,$044B,$044A,$0449
	DC.W	$0447,$0446,$0444,$0443,$0441,$0440,$043F,$043D
	DC.W	$043C,$043A,$0439,$0438,$0436,$0435,$0433,$0432
	DC.W	$0431,$042F,$042E,$042D,$042B,$042A,$0429,$0427
	DC.W	$0426,$0424,$0423,$0422,$0420,$041F,$041E,$041C
	DC.W	$041B,$041A,$0419,$0417,$0416,$0415,$0413,$0412
	DC.W	$0411,$040F,$040E,$040D,$040C,$040A,$0409,$0408
	DC.W	$0406,$0405,$0404,$0403,$0401,$0400,$03FF,$03FE
	DC.W	$03FC,$03FB,$03FA,$03F9,$03F7,$03F6,$03F5,$03F4
	DC.W	$03F3,$03F1,$03F0,$03EF,$03EE,$03ED,$03EB,$03EA
	DC.W	$03E9,$03E8,$03E7,$03E5,$03E4,$03E3,$03E2,$03E1
	DC.W	$03DF,$03DE,$03DD,$03DC,$03DB,$03DA,$03D8,$03D7
	DC.W	$03D6,$03D5,$03D4,$03D3,$03D2,$03D0,$03CF,$03CE
	DC.W	$03CD,$03CC,$03CB,$03CA,$03C9,$03C7,$03C6,$03C5
	DC.W	$03C4,$03C3,$03C2,$03C1,$03C0,$03BF,$03BD,$03BC
	DC.W	$03BB,$03BA,$03B9,$03B8,$03B7,$03B6,$03B5,$03B4
	DC.W	$03B3,$03B2,$03B1,$03AF,$03AE,$03AD,$03AC,$03AB
	DC.W	$03AA,$03A9,$03A8,$03A7,$03A6,$03A5,$03A4,$03A3
	DC.W	$03A2,$03A1,$03A0,$039F,$039E,$039D,$039C,$039B
	DC.W	$039A,$0399,$0398,$0397,$0396,$0395,$0394,$0393
	DC.W	$0392,$0391,$0390,$038F,$038E,$038D,$038C,$038B
	DC.W	$038A,$0389,$0388,$0387,$0386,$0385,$0384,$0383
	DC.W	$0382,$0381,$0380,$037F,$037E,$037D,$037C,$037B
	DC.W	$037A,$0379,$0378,$0378,$0377,$0376,$0375,$0374
	DC.W	$0373,$0372,$0371,$0370,$036F,$036E,$036D,$036C
	DC.W	$036B,$036B,$036A,$0369,$0368,$0367,$0366,$0365
	DC.W	$0364,$0363,$0362,$0362,$0361,$0360,$035F,$035E
	DC.W	$035D,$035C,$035B,$035A,$035A,$0359,$0358,$0357
	DC.W	$0356,$0355,$0354,$0353,$0353,$0352,$0351,$0350
	DC.W	$034F,$034E,$034D,$034D,$034C,$034B,$034A,$0349
	DC.W	$0348,$0347,$0347,$0346,$0345,$0344,$0343,$0342
	DC.W	$0342,$0341,$0340,$033F,$033E,$033E,$033D,$033C
	DC.W	$033B,$033A,$0339,$0339,$0338,$0337,$0336,$0335
	DC.W	$0335,$0334,$0333,$0332,$0331,$0331,$0330,$032F
	DC.W	$032E,$032D,$032D,$032C,$032B,$032A,$0329,$0329
	DC.W	$0328,$0327,$0326,$0326,$0325,$0324,$0323,$0323
	DC.W	$0322,$0321,$0320,$031F,$031F,$031E,$031D,$031C
	DC.W	$031C,$031B,$031A,$0319,$0319,$0318,$0317,$0316
	DC.W	$0316,$0315,$0314,$0313,$0313,$0312,$0311,$0310
	DC.W	$0310,$030F,$030E,$030E,$030D,$030C,$030B,$030B
	DC.W	$030A,$0309,$0308,$0308,$0307,$0306,$0306,$0305
	DC.W	$0304,$0303,$0303,$0302,$0301,$0301,$0300,$02FF
	DC.W	$02FF,$02FE,$02FD,$02FC,$02FC,$02FB,$02FA,$02FA
	DC.W	$02F9,$02F8,$02F8,$02F7,$02F6,$02F6,$02F5,$02F4
	DC.W	$02F3,$02F3,$02F2,$02F1,$02F1,$02F0,$02EF,$02EF
	DC.W	$02EE,$02ED,$02ED,$02EC,$02EB,$02EB,$02EA,$02E9
	DC.W	$02E9,$02E8,$02E7,$02E7,$02E6,$02E5,$02E5,$02E4
	DC.W	$02E3,$02E3,$02E2,$02E2,$02E1,$02E0,$02E0,$02DF
	DC.W	$02DE,$02DE,$02DD,$02DC,$02DC,$02DB,$02DA,$02DA
	DC.W	$02D9,$02D9,$02D8,$02D7,$02D7,$02D6,$02D5,$02D5
	DC.W	$02D4,$02D3,$02D3,$02D2,$02D2,$02D1,$02D0,$02D0
	DC.W	$02CF,$02CF,$02CE,$02CD,$02CD,$02CC,$02CB,$02CB
	DC.W	$02CA,$02CA,$02C9,$02C8,$02C8,$02C7,$02C7,$02C6
	DC.W	$02C5,$02C5,$02C4,$02C4,$02C3,$02C2,$02C2,$02C1
	DC.W	$02C1,$02C0,$02BF,$02BF,$02BE,$02BE,$02BD,$02BD
	DC.W	$02BC,$02BB,$02BB,$02BA,$02BA,$02B9,$02B8,$02B8
	DC.W	$02B7,$02B7,$02B6,$02B6,$02B5,$02B4,$02B4,$02B3
	DC.W	$02B3,$02B2,$02B2,$02B1,$02B0,$02B0,$02AF,$02AF
	DC.W	$02AE,$02AE,$02AD,$02AC,$02AC,$02AB,$02AB,$02AA
	DC.W	$02AA,$02A9,$02A9,$02A8,$02A7,$02A7,$02A6,$02A6
	DC.W	$02A5,$02A5,$02A4,$02A4,$02A3,$02A3,$02A2,$02A1
	DC.W	$02A1,$02A0,$02A0,$029F,$029F,$029E,$029E,$029D
	DC.W	$029D,$029C,$029C,$029B,$029B,$029A,$0299,$0299
	DC.W	$0298,$0298,$0297,$0297,$0296,$0296,$0295,$0295
	DC.W	$0294,$0294,$0293,$0293,$0292,$0292,$0291,$0291
	DC.W	$0290,$0290,$028F,$028F,$028E,$028E,$028D,$028C
	DC.W	$028C,$028B,$028B,$028A,$028A,$0289,$0289,$0288
	DC.W	$0288,$0287,$0287,$0286,$0286,$0285,$0285,$0284
	DC.W	$0284,$0283,$0283,$0282,$0282,$0281,$0281,$0281
	DC.W	$0280,$0280,$027F,$027F,$027E,$027E,$027D,$027D
	DC.W	$027C,$027C,$027B,$027B,$027A,$027A,$0279,$0279
	DC.W	$0278,$0278,$0277,$0277,$0276,$0276,$0275,$0275
	DC.W	$0274,$0274,$0274,$0273,$0273,$0272,$0272,$0271
	DC.W	$0271,$0270,$0270,$026F,$026F,$026E,$026E,$026D
	DC.W	$026D,$026D,$026C,$026C,$026B,$026B,$026A,$026A
	DC.W	$0269,$0269,$0268,$0268,$0268,$0267,$0267,$0266
	DC.W	$0266,$0265,$0265,$0264,$0264,$0264,$0263,$0263
	DC.W	$0262,$0262,$0261,$0261,$0260,$0260,$0260,$025F
	DC.W	$025F,$025E,$025E,$025D,$025D,$025C,$025C,$025C
	DC.W	$025B,$025B,$025A,$025A,$0259,$0259,$0259,$0258
	DC.W	$0258,$0257,$0257,$0256,$0256,$0256,$0255,$0255
	DC.W	$0254,$0254,$0253,$0253,$0253,$0252,$0252,$0251
	DC.W	$0251,$0250,$0250,$0250,$024F,$024F,$024E,$024E
	DC.W	$024E,$024D,$024D,$024C,$024C,$024B,$024B,$024B
	DC.W	$024A,$024A,$0249,$0249,$0249,$0248,$0248,$0247
	DC.W	$0247,$0247,$0246,$0246,$0245,$0245,$0245,$0244
	DC.W	$0244,$0243,$0243,$0243,$0242,$0242,$0241,$0241
	DC.W	$0241,$0240,$0240,$023F,$023F,$023F,$023E,$023E
	DC.W	$023D,$023D,$023D,$023C,$023C,$023B,$023B,$023B
	DC.W	$023A,$023A,$023A,$0239,$0239,$0238,$0238,$0238
	DC.W	$0237,$0237,$0236,$0236,$0236,$0235,$0235,$0235
	DC.W	$0234,$0234,$0233,$0233,$0233,$0232,$0232,$0231
	DC.W	$0231,$0231,$0230,$0230,$0230,$022F,$022F,$022E
	DC.W	$022E,$022E,$022D,$022D,$022D,$022C,$022C,$022C
	DC.W	$022B,$022B,$022A,$022A,$022A,$0229,$0229,$0229
	DC.W	$0228,$0228,$0228,$0227,$0227,$0226,$0226,$0226
	DC.W	$0225,$0225,$0225,$0224,$0224,$0224,$0223,$0223
	DC.W	$0222,$0222,$0222,$0221,$0221,$0221,$0220,$0220
	DC.W	$0220,$021F,$021F,$021F,$021E,$021E,$021E,$021D
	DC.W	$021D,$021C,$021C,$021C,$021B,$021B,$021B,$021A
	DC.W	$021A,$021A,$0219,$0219,$0219,$0218,$0218,$0218
	DC.W	$0217,$0217,$0217,$0216,$0216,$0216,$0215,$0215
	DC.W	$0215,$0214,$0214,$0214,$0213,$0213,$0213,$0212
	DC.W	$0212,$0212,$0211,$0211,$0211,$0210,$0210,$0210
	DC.W	$020F,$020F,$020F,$020E,$020E,$020E,$020D,$020D
	DC.W	$020D,$020C,$020C,$020C,$020B,$020B,$020B,$020A
	DC.W	$020A,$020A,$0209,$0209,$0209,$0208,$0208,$0208
	DC.W	$0207,$0207,$0207,$0206,$0206,$0206,$0205,$0205
	DC.W	$0205,$0204,$0204,$0204,$0204,$0203,$0203,$0203
	DC.W	$0202,$0202,$0202,$0201,$0201,$0201,$0200,$0200
	DC.W	$0200,$01FF,$01FF,$01FF,$01FE,$01FE,$01FE,$01FE
	DC.W	$01FD,$01FD,$01FD,$01FC,$01FC,$01FC,$01FB,$01FB
	DC.W	$01FB,$01FA,$01FA,$01FA,$01FA,$01F9,$01F9,$01F9
	DC.W	$01F8,$01F8,$01F8,$01F7,$01F7,$01F7,$01F7,$01F6
	DC.W	$01F6,$01F6,$01F5,$01F5,$01F5,$01F4,$01F4,$01F4
	DC.W	$01F4,$01F3,$01F3,$01F3,$01F2,$01F2,$01F2,$01F1
	DC.W	$01F1,$01F1,$01F1,$01F0,$01F0,$01F0,$01EF,$01EF
	DC.W	$01EF,$01EF,$01EE,$01EE,$01EE,$01ED,$01ED,$01ED
	DC.W	$01EC,$01EC,$01EC,$01EC,$01EB,$01EB,$01EB,$01EA
	DC.W	$01EA,$01EA,$01EA,$01E9,$01E9,$01E9,$01E8,$01E8
	DC.W	$01E8,$01E8,$01E7,$01E7,$01E7,$01E6,$01E6,$01E6
	DC.W	$01E6,$01E5,$01E5,$01E5,$01E4,$01E4,$01E4,$01E4
	DC.W	$01E3,$01E3,$01E3,$01E3,$01E2,$01E2,$01E2,$01E1
	DC.W	$01E1,$01E1,$01E1,$01E0,$01E0,$01E0,$01DF,$01DF
	DC.W	$01DF,$01DF,$01DE,$01DE,$01DE,$01DE,$01DD,$01DD
	DC.W	$01DD,$01DC,$01DC,$01DC,$01DC,$01DB,$01DB,$01DB
	DC.W	$01DB,$01DA,$01DA,$01DA,$01DA,$01D9,$01D9,$01D9
	DC.W	$01D8,$01D8,$01D8,$01D8,$01D7,$01D7,$01D7,$01D7
	DC.W	$01D6,$01D6,$01D6,$01D6,$01D5,$01D5,$01D5,$01D4
	DC.W	$01D4,$01D4,$01D4,$01D3,$01D3,$01D3,$01D3,$01D2
	DC.W	$01D2,$01D2,$01D2,$01D1,$01D1,$01D1,$01D1,$01D0
	DC.W	$01D0,$01D0,$01D0,$01CF,$01CF,$01CF,$01CF,$01CE
	DC.W	$01CE,$01CE,$01CE,$01CD,$01CD,$01CD,$01CD,$01CC
	DC.W	$01CC,$01CC,$01CB,$01CB,$01CB,$01CB,$01CA,$01CA
	DC.W	$01CA,$01CA,$01C9,$01C9,$01C9,$01C9,$01C8,$01C8
	DC.W	$01C8,$01C8,$01C7,$01C7,$01C7,$01C7,$01C6,$01C6
	DC.W	$01C6,$01C6,$01C6,$01C5,$01C5,$01C5,$01C5,$01C4
	DC.W	$01C4,$01C4,$01C4,$01C3,$01C3,$01C3,$01C3,$01C2
	DC.W	$01C2,$01C2,$01C2,$01C1,$01C1,$01C1,$01C1,$01C0
	DC.W	$01C0,$01C0,$01C0,$01BF,$01BF,$01BF,$01BF,$01BE
	DC.W	$01BE,$01BE,$01BE,$01BE,$01BD,$01BD,$01BD,$01BD
	DC.W	$01BC,$01BC,$01BC,$01BC,$01BB,$01BB,$01BB,$01BB
	DC.W	$01BA,$01BA,$01BA,$01BA,$01BA,$01B9,$01B9,$01B9
	DC.W	$01B9,$01B8,$01B8,$01B8,$01B8,$01B7,$01B7,$01B7
	DC.W	$01B7,$01B7,$01B6,$01B6,$01B6,$01B6,$01B5,$01B5
	DC.W	$01B5,$01B5,$01B4,$01B4,$01B4,$01B4,$01B4,$01B3
	DC.W	$01B3,$01B3,$01B3,$01B2,$01B2,$01B2,$01B2,$01B2
	DC.W	$01B1,$01B1,$01B1,$01B1,$01B0,$01B0,$01B0,$01B0
	DC.W	$01B0,$01AF,$01AF,$01AF,$01AF,$01AE,$01AE,$01AE
	DC.W	$01AE,$01AE,$01AD,$01AD,$01AD,$01AD,$01AC,$01AC
	DC.W	$01AC,$01AC,$01AC,$01AB,$01AB,$01AB,$01AB,$01AA
	DC.W	$01AA,$01AA,$01AA,$01AA,$01A9,$01A9,$01A9,$01A9
	DC.W	$01A9,$01A8,$01A8,$01A8,$01A8,$01A7,$01A7,$01A7
	DC.W	$01A7,$01A7,$01A6,$01A6,$01A6,$01A6,$01A6,$01A5
	DC.W	$01A5,$01A5,$01A5,$01A4,$01A4,$01A4,$01A4,$01A4
	DC.W	$01A3,$01A3,$01A3,$01A3,$01A3,$01A2,$01A2,$01A2
	DC.W	$01A2,$01A2,$01A1,$01A1,$01A1,$01A1,$01A1,$01A0
	DC.W	$01A0,$01A0,$01A0,$019F,$019F,$019F,$019F,$019F
	DC.W	$019E,$019E,$019E,$019E,$019E,$019D,$019D,$019D
	DC.W	$019D,$019D,$019C,$019C,$019C,$019C,$019C,$019B
	DC.W	$019B,$019B,$019B,$019B,$019A,$019A,$019A,$019A
	DC.W	$019A,$0199,$0199,$0199,$0199,$0199,$0198,$0198
	DC.W	$0198,$0198,$0198,$0197,$0197,$0197,$0197,$0197
	DC.W	$0197,$0197,$0197,$0197,$0197,$0197,$0197,$0197
	DC.W	$0197,$0197,$0197,$0197,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196



;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2077	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$38c6	;

	;MODE OVERSCAN

	DC.W	$0092,$0030,$0094,$00D8

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	BMAP:
	DC.W	$00e0,$0000
	DC.W	$00e2,$0000
	DC.W	$00e4,$0000
	DC.W	$00e6,$0000

	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$2200		;2 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;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,$0DDD	;COULEUR 01
	DC.W	$0184,$0888	;COULEUR 02
	DC.W	$0186,$0444	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

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


ENCORE UNE ROUTINE D'ETOILES 3D, MAIS CELLE CI A LA PARTICULARITE DE TRAITER
LES ETOILES COMME DES OBJETS VECTORIELS, C'EST A DIRE POUVANT SUBIR DES ROTA
TIONS SUR LES X Y ET Z. 

=============================================================================
				VECTOR STARS
=============================================================================
org $20000	;EMPLACEMENT EN MEMOIRE
load $20000	;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
;==================================
ANTSTARS:	=	90	;NOMBRE ETOILES

SCREEN:		DC.L	$40000	;POINTEURS ECRANS
		DC.L	$50000	;
	
BMAPSIZE:	=	280*44	;TAILLE PLAN		

MULSLIST:	=	$6D000
;==================================
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.L	INITRUTIN		;VA A ROUTINE INITIALISATION

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 STARS

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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)

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
;====================

BLITWAIT:	BTST	#14,$DFF002	;ATTENTE BLITTER
		BNE.S	BLITWAIT
		RTS

CLEARSCREEN:	BSR.S	BLITWAIT	;EFFCE ECRAN
		MOVE.L	#-1,$DFF044
		MOVE.L	#$01000000,$DFF040
		MOVE.W	D2,$DFF066
		MOVE.L	D0,$DFF054
		MOVE.W	D1,$DFF058
		RTS

;------------------------------------------------------------------------

INITRUTIN:	MOVE.L	SCREEN(PC),D0	;EFFACE ECRAN
		MOVE.W	#116*64+24,D1
		MOVEQ	#0,D2
		BSR	CLEARSCREEN
		MOVE.L	SCREEN+4(PC),D0
		BSR	CLEARSCREEN

		LEA.L	POSITIONER(PC),A0	;ROUTINE CALCULE
		LEA.L	$DFF006,A1		;ALEATOIRE DES 
		MOVE.W	#1245,D1		;COORDONNEES DES ETOILES
		MOVE.W	#13,D2
		MOVE.W	#2,D3
		MOVE.W	#ANTSTARS-1,D7
RNDLOOP:	MOVE.W	(A1),D0
		EXT	D0
		MULS	D1,D0
		AND.W	#$1FF,D0
		SUB.W	#256,D0
NOD1:		MOVE.W	D0,(A0)+
		MULS	D2,D1
		ADD.W	D3,D2
		MOVE.W	(A1),D0
		EXT	D0
		MULS	D1,D0
		AND.W	#$1FF,D0
		SUB.W	#256,D0
NOD2:		MOVE.W	D0,(A0)+
		MULS	D2,D1
		ADD.W	D3,D2
		MOVE.W	(A1),D0
		EXT	D0
		MULS	D1,D0
		AND.W	#$1FF,D0
		SUB.W	#256,D0
		MOVE.W	D0,(A0)+
		MULS	D2,D1
		ADD.W	D3,D2
		DBRA	D7,RNDLOOP

		LEA.L	MULSLIST,A0
		MOVEQ	#0,D0
		MOVE.W	#300-1,D7
MULSLOOP:	MOVE.W	D0,(A0)+
		ADD.W	#44,D0
		DBRA	D7,MULSLOOP


;------------------------------------------------------------------------

STARS:		BSR	BUFFRA		
		BSR	RENSA
		BSR	VINKELADD
		BSR	ADDZ
		BSR	RAKNA
		BSR	PLOTTA
		RTS

BUFFRA:		MOVE.L	SCREEN(PC),D0		;MET ADRESSE ECRAN
		MOVE.L	SCREEN+4(PC),SCREEN	;DANS LISTE COPPER
		MOVE.L	D0,SCREEN+4
		LEA.L	BMAP(PC),A0
		MOVEQ	#2-1,D7
BMAPLOOP:	SWAP	D0
		MOVE.W	D0,2(A0)
		SWAP	D0
		MOVE.W	D0,6(A0)
		ADDQ.L	#8,A0
		ADD.L	#BMAPSIZE,D0
		DBRA	D7,BMAPLOOP
		RTS

RENSA:		MOVE.L	SCREEN(PC),D0		;EFFACE ECRAN
		MOVEQ	#0,D2
		MOVE.W	#280*64*2+22,D1
		BSR	CLEARSCREEN
		RTS

VINKELADD:	LEA.L	VINKLAR(PC),A0
		LEA.L	VADDS(PC),A1
		MOVE.W	#720,D1
		MOVEQ	#3-1,D7
VADDLOOP:	MOVE.W	(A0),D0
		ADD.W	(A1)+,D0
		CMP.W	D1,D0
		BLS.S	NOTHING
		SUB.W	D1,D0
NOTHING:	MOVE.W	D0,(A0)+
		DBRA	D7,VADDLOOP
		RTS

ADDZ:		LEA.L	POSITIONER+4(PC),A0
		MOVE.W	#511,D0
		MOVE.W	#256,D3
		MOVE.W	#-12,D1
		MOVE.W	#ANTSTARS-1,D7
ZLOOP:		MOVE.W	(A0),D2
		ADD.W	D3,D2
		ADD.W	D1,D2
		AND.W	D0,D2
		SUB.W	D3,D2
		MOVE.W	D2,(A0)
		ADDQ.L	#6,A0
		DBRA	D7,ZLOOP
		RTS

RAKNA:		LEA.L	POSITIONER(PC),A0
		LEA.L	SINUS+180(PC),A1
		LEA.L	SINUS(PC),A2
		LEA.L	VINKLAR(PC),A3
		LEA.L	POSSES(PC),A4
		LEA.L	DJUP+200(PC),A5

		LEA.L	CALCUP(PC),A6
		MOVE.W	(A3),D0
		MOVE.W	(A1,D0.W),(A6)+
		MOVE.W	(A2,D0.W),(A6)+
		MOVE.W	4(A3),D0
		MOVE.W	(A1,D0.W),(A6)+
		MOVE.W	(A2,D0.W),(A6)+
		MOVE.W	2(A3),D0
		MOVE.W	(A1,D0.W),(A6)+
		MOVE.W	(A2,D0.W),(A6)+

		LEA.L	CALCUP(PC),A1
		LEA.L	MULSLIST,A6
		MOVE.W	#ANTSTARS-1,D7

RAKNELOOP:	MOVE.W	(A1)+,D1
		MOVE.W	(A1)+,D2

		MOVE.W	2(A0),D3
		MULS	D2,D3
		MOVE.W	4(A0),D4
		MULS	D1,D4
		SUB.L	D4,D3
		ASL.L	#2,D3
		SWAP	D3		;Y
		MOVE.W	2(A0),D4
		MULS	D1,D4
		MOVE.W	4(A0),D5
		MULS	D2,D5
		ADD.L	D5,D4
		ASL.L	#2,D4
		SWAP	D4		;Z

		MOVE.W	(A1)+,D1
		MOVE.W	(A1)+,D2
		MOVE.W	(A0),D5
		MULS	D2,D5
		MOVE.W	D3,D6
		MULS	D1,D6
		SUB.L	D6,D5
		ASL.L	#2,D5
		SWAP	D5		;X
		MOVE.W	(A0),D6
		MULS	D1,D6
		MULS	D2,D3
		ADD.L	D6,D3
		ASL.L	#2,D3
		SWAP	D3		;Y

		MOVE.W	(A1)+,D1
		MOVE.W	(A1)+,D2
		MOVE.W	D5,D0
		MULS	D2,D0
		MOVE.W	D4,D6
		MULS	D1,D6
		SUB.L	D6,D0
		ASL.L	#2,D0
		SWAP	D0		;X
		MULS	D1,D5
		MULS	D2,D4
		ADD.L	D5,D4
		ASL.L	#2,D4
		SWAP	D4		;Z

		ADD.W	#256,D4
		ADD.W	D4,D4
		MOVE.W	(A5,D4.W),D2
		MULS	D2,D0
		MULS	D2,D3
		LSL.L	#4,D0
		LSL.L	#4,D3
		SWAP	D0
		SWAP	D3

		ADDQ.L	#6,A0

		ADD.W	#176,D0
		CMP.W	#352,D0
		BLS.S	NN
		MOVE.W	#351,D0
NN:		ADD.W	#140,D3
		CMP.W	#280,D3
		BLS.S	NN2
		MOVE.W	#281,D3
NN2:
		MOVE.W	D0,D1
		LSR.W	#3,D0
		EOR.W	#$7,D1
		ADD.W	D3,D3
		MOVE.W	(A6,D3.W),D3
		ADD.W	D3,D0

		MOVE.W	D0,(A4)+
		MOVE.W	D1,(A4)+
		MOVE.W	D4,(A4)+
		LEA.L	-12(A1),A1
		DBRA	D7,RAKNELOOP
		RTS

PLOTTA:		LEA.L	POSSES(PC),A0
		MOVE.L	SCREEN(PC),A1
		MOVE.L	#BMAPSIZE,D3
		MOVE.W	#1024,D4
		MOVE.W	#ANTSTARS-1,D7
PLOTLOOP:	MOVE.W	(A0)+,D0
		MOVE.W	(A0)+,D1
		MOVE.W	(A0)+,D2
		CMP.W	D3,D0
		BHI.S	NOPLOT2
		CMP.W	D4,D2
		BHI.S	NOPLOT2
		BTST	#8,D2
		BEQ.S	NOPLOT1
		BSET	D1,(A1,D0.W)
NOPLOT1:	ADD.W	D3,D0
		BTST	#9,D2
		BEQ.S	NOPLOT2
		BSET	D1,(A1,D0.W)
NOPLOT2:	DBRA	D7,PLOTLOOP
		RTS

;--------------------------------------------------
POSSES:		BLK.W	ANTSTARS*3,0
POSITIONER:	BLK.W	ANTSTARS*3,0
CALCUP:		BLK.W	3*2,0

VINKLAR:	DC.W	0
		DC.W	0
		DC.W	0

VADDS:		DC.W	4
		DC.W	4
		DC.W	2

;--------------------------------------------------
DJUP:
	DC.w    $6a00,$6000,$5a00,$5200,$4d00,$4800,$4400,$4000
	DC.W	$3D12,$3BF4,$3AE0,$39D6,$38D6,$37DE,$36EE,$3606
	DC.W	$3526,$344C,$337A,$32AE,$31E9,$3129,$306F,$2FBA
	DC.W	$2F0B,$2E60,$2DBB,$2D1A,$2C7D,$2BE4,$2B50,$2ABF
	DC.W	$2A32,$29A9,$2923,$28A0,$2821,$27A5,$272B,$26B5
	DC.W	$2641,$25D0,$2562,$24F6,$248C,$2425,$23C0,$235D
	DC.W	$22FD,$229E,$2241,$21E7,$218E,$2137,$20E1,$208E
	DC.W	$203C,$1FEB,$1F9C,$1F4F,$1F03,$1EB9,$1E70,$1E28
	DC.W	$1DE2,$1D9C,$1D59,$1D16,$1CD4,$1C94,$1C55,$1C17
	DC.W	$1BD9,$1B9D,$1B62,$1B28,$1AEF,$1AB7,$1A7F,$1A49
	DC.W	$1A13,$19DF,$19AB,$1978,$1946,$1914,$18E3,$18B3
	DC.W	$1884,$1855,$1827,$17FA,$17CE,$17A2,$1776,$174C
	DC.W	$1721,$16F8,$16CF,$16A7,$167F,$1658,$1631,$160B
	DC.W	$15E5,$15C0,$159B,$1577,$1553,$1530,$150D,$14EA
	DC.W	$14C8,$14A7,$1486,$1465,$1445,$1425,$1405,$13E6
	DC.W	$13C7,$13A9,$138B,$136D,$1350,$1333,$1316,$12FA
	DC.W	$12DE,$12C3,$12A7,$128C,$1271,$1257,$123D,$1223
	DC.W	$1209,$11F0,$11D7,$11BE,$11A6,$118E,$1176,$115E
	DC.W	$1147,$112F,$1118,$1102,$10EB,$10D5,$10BF,$10A9
	DC.W	$1094,$107E,$1069,$1054,$103F,$102B,$1017,$1002
	DC.W	$0FEF,$0FDB,$0FC7,$0FB4,$0FA1,$0F8E,$0F7B,$0F68
	DC.W	$0F56,$0F43,$0F31,$0F1F,$0F0E,$0EFC,$0EEB,$0ED9
	DC.W	$0EC8,$0EB7,$0EA6,$0E96,$0E85,$0E75,$0E64,$0E54
	DC.W	$0E44,$0E34,$0E25,$0E15,$0E06,$0DF6,$0DE7,$0DD8
	DC.W	$0DC9,$0DBA,$0DAC,$0D9D,$0D8F,$0D81,$0D72,$0D64
	DC.W	$0D56,$0D48,$0D3B,$0D2D,$0D20,$0D12,$0D05,$0CF8
	DC.W	$0CEB,$0CDE,$0CD1,$0CC4,$0CB7,$0CAB,$0C9E,$0C92
	DC.W	$0C86,$0C79,$0C6D,$0C61,$0C55,$0C49,$0C3E,$0C32
	DC.W	$0C26,$0C1B,$0C0F,$0C04,$0BF9,$0BEE,$0BE3,$0BD8
	DC.W	$0BCD,$0BC2,$0BB7,$0BAC,$0BA2,$0B97,$0B8D,$0B82
	DC.W	$0B78,$0B6E,$0B64,$0B5A,$0B50,$0B46,$0B3C,$0B32
	DC.W	$0B28,$0B1E,$0B15,$0B0B,$0B02,$0AF8,$0AEF,$0AE6
	DC.W	$0ADC,$0AD3,$0ACA,$0AC1,$0AB8,$0AAF,$0AA6,$0A9D
	DC.W	$0A95,$0A8C,$0A83,$0A7B,$0A72,$0A69,$0A61,$0A59
	DC.W	$0A50,$0A48,$0A40,$0A38,$0A2F,$0A27,$0A1F,$0A17
	DC.W	$0A0F,$0A08,$0A00,$09F8,$09F0,$09E8,$09E1,$09D9
	DC.W	$09D2,$09CA,$09C3,$09BB,$09B4,$09AD,$09A5,$099E
	DC.W	$0997,$0990,$0989,$0981,$097A,$0973,$096C,$0966
	DC.W	$095F,$0958,$0951,$094A,$0943,$093D,$0936,$0930
	DC.W	$0929,$0922,$091C,$0915,$090F,$0909,$0902,$08FC
	DC.W	$08F6,$08EF,$08E9,$08E3,$08DD,$08D7,$08D1,$08CB
	DC.W	$08C5,$08BF,$08B9,$08B3,$08AD,$08A7,$08A1,$089B
	DC.W	$0895,$0890,$088A,$0884,$087F,$0879,$0873,$086E
	DC.W	$0868,$0863,$085D,$0858,$0852,$084D,$0848,$0842
	DC.W	$083D,$0838,$0832,$082D,$0828,$0823,$081E,$0819
	DC.W	$0813,$080E,$0809,$0804,$07FF,$07FA,$07F5,$07F0
	DC.W	$07EB,$07E7,$07E2,$07DD,$07D8,$07D3,$07CE,$07CA
	DC.W	$07C5,$07C0,$07BC,$07B7,$07B2,$07AE,$07A9,$07A4
	DC.W	$07A0,$079B,$0797,$0792,$078E,$0789,$0785,$0781
	DC.W	$077C,$0778,$0774,$076F,$076B,$0767,$0762,$075E
	DC.W	$075A,$0756,$0751,$074D,$0749,$0745,$0741,$073D
	DC.W	$0739,$0735,$0731,$072C,$0728,$0724,$0720,$071D
	DC.W	$0719,$0715,$0711,$070D,$0709,$0705,$0701,$06FD
	DC.W	$06FA,$06F6,$06F2,$06EE,$06EB,$06E7,$06E3,$06DF
	DC.W	$06DC,$06D8,$06D4,$06D1,$06CD,$06CA,$06C6,$06C2
	DC.W	$06BF,$06BB,$06B8,$06B4,$06B1,$06AD,$06AA,$06A6
	DC.W	$06A3,$069F,$069C,$0699,$0695,$0692,$068E,$068B
	DC.W	$0688,$0684,$0681,$067E,$067A,$0677,$0674,$0671
	DC.W	$066D,$066A,$0667,$0664,$0661,$065D,$065A,$0657
	DC.W	$0654,$0651,$064E,$064B,$0648,$0645,$0641,$063E
	DC.W	$063B,$0638,$0635,$0632,$062F,$062C,$0629,$0626
	DC.W	$0623,$0620,$061E,$061B,$0618,$0615,$0612,$060F
	DC.W	$060C,$0609,$0607,$0604,$0601,$05FE,$05FB,$05F8
	DC.W	$05F6,$05F3,$05F0,$05ED,$05EB,$05E8,$05E5,$05E2
	DC.W	$05E0,$05DD,$05DA,$05D8,$05D5,$05D2,$05D0,$05CD
	DC.W	$05CA,$05C8,$05C5,$05C3,$05C0,$05BE,$05BB,$05B8
	DC.W	$05B6,$05B3,$05B1,$05AE,$05AC,$05A9,$05A7,$05A4
	DC.W	$05A2,$059F,$059D,$059A,$0598,$0595,$0593,$0591
	DC.W	$058E,$058C,$0589,$0587,$0585,$0582,$0580,$057D
	DC.W	$057B,$0579,$0576,$0574,$0572,$056F,$056D,$056B
	DC.W	$0569,$0566,$0564,$0562,$055F,$055D,$055B,$0559
	DC.W	$0556,$0554,$0552,$0550,$054E,$054B,$0549,$0547
	DC.W	$0545,$0543,$0541,$053E,$053C,$053A,$0538,$0536
	DC.W	$0534,$0532,$0530,$052D,$052B,$0529,$0527,$0525
	DC.W	$0523,$0521,$051F,$051D,$051B,$0519,$0517,$0515
	DC.W	$0513,$0511,$050F,$050D,$050B,$0509,$0507,$0505
	DC.W	$0503,$0501,$04FF,$04FD,$04FB,$04F9,$04F7,$04F5
	DC.W	$04F3,$04F1,$04F0,$04EE,$04EC,$04EA,$04E8,$04E6
	DC.W	$04E4,$04E2,$04E0,$04DF,$04DD,$04DB,$04D9,$04D7
	DC.W	$04D5,$04D4,$04D2,$04D0,$04CE,$04CC,$04CB,$04C9
	DC.W	$04C7,$04C5,$04C3,$04C2,$04C0,$04BE,$04BC,$04BB
	DC.W	$04B9,$04B7,$04B5,$04B4,$04B2,$04B0,$04AE,$04AD
	DC.W	$04AB,$04A9,$04A8,$04A6,$04A4,$04A3,$04A1,$049F
	DC.W	$049E,$049C,$049A,$0499,$0497,$0495,$0494,$0492
	DC.W	$0490,$048F,$048D,$048C,$048A,$0488,$0487,$0485
	DC.W	$0484,$0482,$0480,$047F,$047D,$047C,$047A,$0478
	DC.W	$0477,$0475,$0474,$0472,$0471,$046F,$046E,$046C
	DC.W	$046B,$0469,$0468,$0466,$0465,$0463,$0461,$0460
	DC.W	$045E,$045D,$045C,$045A,$0459,$0457,$0456,$0454
	DC.W	$0453,$0451,$0450,$044E,$044D,$044B,$044A,$0449
	DC.W	$0447,$0446,$0444,$0443,$0441,$0440,$043F,$043D
	DC.W	$043C,$043A,$0439,$0438,$0436,$0435,$0433,$0432
	DC.W	$0431,$042F,$042E,$042D,$042B,$042A,$0429,$0427
	DC.W	$0426,$0424,$0423,$0422,$0420,$041F,$041E,$041C
	DC.W	$041B,$041A,$0419,$0417,$0416,$0415,$0413,$0412
	DC.W	$0411,$040F,$040E,$040D,$040C,$040A,$0409,$0408
	DC.W	$0406,$0405,$0404,$0403,$0401,$0400,$03FF,$03FE
	DC.W	$03FC,$03FB,$03FA,$03F9,$03F7,$03F6,$03F5,$03F4
	DC.W	$03F3,$03F1,$03F0,$03EF,$03EE,$03ED,$03EB,$03EA
	DC.W	$03E9,$03E8,$03E7,$03E5,$03E4,$03E3,$03E2,$03E1
	DC.W	$03DF,$03DE,$03DD,$03DC,$03DB,$03DA,$03D8,$03D7
	DC.W	$03D6,$03D5,$03D4,$03D3,$03D2,$03D0,$03CF,$03CE
	DC.W	$03CD,$03CC,$03CB,$03CA,$03C9,$03C7,$03C6,$03C5
	DC.W	$03C4,$03C3,$03C2,$03C1,$03C0,$03BF,$03BD,$03BC
	DC.W	$03BB,$03BA,$03B9,$03B8,$03B7,$03B6,$03B5,$03B4
	DC.W	$03B3,$03B2,$03B1,$03AF,$03AE,$03AD,$03AC,$03AB
	DC.W	$03AA,$03A9,$03A8,$03A7,$03A6,$03A5,$03A4,$03A3
	DC.W	$03A2,$03A1,$03A0,$039F,$039E,$039D,$039C,$039B
	DC.W	$039A,$0399,$0398,$0397,$0396,$0395,$0394,$0393
	DC.W	$0392,$0391,$0390,$038F,$038E,$038D,$038C,$038B
	DC.W	$038A,$0389,$0388,$0387,$0386,$0385,$0384,$0383
	DC.W	$0382,$0381,$0380,$037F,$037E,$037D,$037C,$037B
	DC.W	$037A,$0379,$0378,$0378,$0377,$0376,$0375,$0374
	DC.W	$0373,$0372,$0371,$0370,$036F,$036E,$036D,$036C
	DC.W	$036B,$036B,$036A,$0369,$0368,$0367,$0366,$0365
	DC.W	$0364,$0363,$0362,$0362,$0361,$0360,$035F,$035E
	DC.W	$035D,$035C,$035B,$035A,$035A,$0359,$0358,$0357
	DC.W	$0356,$0355,$0354,$0353,$0353,$0352,$0351,$0350
	DC.W	$034F,$034E,$034D,$034D,$034C,$034B,$034A,$0349
	DC.W	$0348,$0347,$0347,$0346,$0345,$0344,$0343,$0342
	DC.W	$0342,$0341,$0340,$033F,$033E,$033E,$033D,$033C
	DC.W	$033B,$033A,$0339,$0339,$0338,$0337,$0336,$0335
	DC.W	$0335,$0334,$0333,$0332,$0331,$0331,$0330,$032F
	DC.W	$032E,$032D,$032D,$032C,$032B,$032A,$0329,$0329
	DC.W	$0328,$0327,$0326,$0326,$0325,$0324,$0323,$0323
	DC.W	$0322,$0321,$0320,$031F,$031F,$031E,$031D,$031C
	DC.W	$031C,$031B,$031A,$0319,$0319,$0318,$0317,$0316
	DC.W	$0316,$0315,$0314,$0313,$0313,$0312,$0311,$0310
	DC.W	$0310,$030F,$030E,$030E,$030D,$030C,$030B,$030B
	DC.W	$030A,$0309,$0308,$0308,$0307,$0306,$0306,$0305
	DC.W	$0304,$0303,$0303,$0302,$0301,$0301,$0300,$02FF
	DC.W	$02FF,$02FE,$02FD,$02FC,$02FC,$02FB,$02FA,$02FA
	DC.W	$02F9,$02F8,$02F8,$02F7,$02F6,$02F6,$02F5,$02F4
	DC.W	$02F3,$02F3,$02F2,$02F1,$02F1,$02F0,$02EF,$02EF
	DC.W	$02EE,$02ED,$02ED,$02EC,$02EB,$02EB,$02EA,$02E9
	DC.W	$02E9,$02E8,$02E7,$02E7,$02E6,$02E5,$02E5,$02E4
	DC.W	$02E3,$02E3,$02E2,$02E2,$02E1,$02E0,$02E0,$02DF
	DC.W	$02DE,$02DE,$02DD,$02DC,$02DC,$02DB,$02DA,$02DA
	DC.W	$02D9,$02D9,$02D8,$02D7,$02D7,$02D6,$02D5,$02D5
	DC.W	$02D4,$02D3,$02D3,$02D2,$02D2,$02D1,$02D0,$02D0
	DC.W	$02CF,$02CF,$02CE,$02CD,$02CD,$02CC,$02CB,$02CB
	DC.W	$02CA,$02CA,$02C9,$02C8,$02C8,$02C7,$02C7,$02C6
	DC.W	$02C5,$02C5,$02C4,$02C4,$02C3,$02C2,$02C2,$02C1
	DC.W	$02C1,$02C0,$02BF,$02BF,$02BE,$02BE,$02BD,$02BD
	DC.W	$02BC,$02BB,$02BB,$02BA,$02BA,$02B9,$02B8,$02B8
	DC.W	$02B7,$02B7,$02B6,$02B6,$02B5,$02B4,$02B4,$02B3
	DC.W	$02B3,$02B2,$02B2,$02B1,$02B0,$02B0,$02AF,$02AF
	DC.W	$02AE,$02AE,$02AD,$02AC,$02AC,$02AB,$02AB,$02AA
	DC.W	$02AA,$02A9,$02A9,$02A8,$02A7,$02A7,$02A6,$02A6
	DC.W	$02A5,$02A5,$02A4,$02A4,$02A3,$02A3,$02A2,$02A1
	DC.W	$02A1,$02A0,$02A0,$029F,$029F,$029E,$029E,$029D
	DC.W	$029D,$029C,$029C,$029B,$029B,$029A,$0299,$0299
	DC.W	$0298,$0298,$0297,$0297,$0296,$0296,$0295,$0295
	DC.W	$0294,$0294,$0293,$0293,$0292,$0292,$0291,$0291
	DC.W	$0290,$0290,$028F,$028F,$028E,$028E,$028D,$028C
	DC.W	$028C,$028B,$028B,$028A,$028A,$0289,$0289,$0288
	DC.W	$0288,$0287,$0287,$0286,$0286,$0285,$0285,$0284
	DC.W	$0284,$0283,$0283,$0282,$0282,$0281,$0281,$0281
	DC.W	$0280,$0280,$027F,$027F,$027E,$027E,$027D,$027D
	DC.W	$027C,$027C,$027B,$027B,$027A,$027A,$0279,$0279
	DC.W	$0278,$0278,$0277,$0277,$0276,$0276,$0275,$0275
	DC.W	$0274,$0274,$0274,$0273,$0273,$0272,$0272,$0271
	DC.W	$0271,$0270,$0270,$026F,$026F,$026E,$026E,$026D
	DC.W	$026D,$026D,$026C,$026C,$026B,$026B,$026A,$026A
	DC.W	$0269,$0269,$0268,$0268,$0268,$0267,$0267,$0266
	DC.W	$0266,$0265,$0265,$0264,$0264,$0264,$0263,$0263
	DC.W	$0262,$0262,$0261,$0261,$0260,$0260,$0260,$025F
	DC.W	$025F,$025E,$025E,$025D,$025D,$025C,$025C,$025C
	DC.W	$025B,$025B,$025A,$025A,$0259,$0259,$0259,$0258
	DC.W	$0258,$0257,$0257,$0256,$0256,$0256,$0255,$0255
	DC.W	$0254,$0254,$0253,$0253,$0253,$0252,$0252,$0251
	DC.W	$0251,$0250,$0250,$0250,$024F,$024F,$024E,$024E
	DC.W	$024E,$024D,$024D,$024C,$024C,$024B,$024B,$024B
	DC.W	$024A,$024A,$0249,$0249,$0249,$0248,$0248,$0247
	DC.W	$0247,$0247,$0246,$0246,$0245,$0245,$0245,$0244
	DC.W	$0244,$0243,$0243,$0243,$0242,$0242,$0241,$0241
	DC.W	$0241,$0240,$0240,$023F,$023F,$023F,$023E,$023E
	DC.W	$023D,$023D,$023D,$023C,$023C,$023B,$023B,$023B
	DC.W	$023A,$023A,$023A,$0239,$0239,$0238,$0238,$0238
	DC.W	$0237,$0237,$0236,$0236,$0236,$0235,$0235,$0235
	DC.W	$0234,$0234,$0233,$0233,$0233,$0232,$0232,$0231
	DC.W	$0231,$0231,$0230,$0230,$0230,$022F,$022F,$022E
	DC.W	$022E,$022E,$022D,$022D,$022D,$022C,$022C,$022C
	DC.W	$022B,$022B,$022A,$022A,$022A,$0229,$0229,$0229
	DC.W	$0228,$0228,$0228,$0227,$0227,$0226,$0226,$0226
	DC.W	$0225,$0225,$0225,$0224,$0224,$0224,$0223,$0223
	DC.W	$0222,$0222,$0222,$0221,$0221,$0221,$0220,$0220
	DC.W	$0220,$021F,$021F,$021F,$021E,$021E,$021E,$021D
	DC.W	$021D,$021C,$021C,$021C,$021B,$021B,$021B,$021A
	DC.W	$021A,$021A,$0219,$0219,$0219,$0218,$0218,$0218
	DC.W	$0217,$0217,$0217,$0216,$0216,$0216,$0215,$0215
	DC.W	$0215,$0214,$0214,$0214,$0213,$0213,$0213,$0212
	DC.W	$0212,$0212,$0211,$0211,$0211,$0210,$0210,$0210
	DC.W	$020F,$020F,$020F,$020E,$020E,$020E,$020D,$020D
	DC.W	$020D,$020C,$020C,$020C,$020B,$020B,$020B,$020A
	DC.W	$020A,$020A,$0209,$0209,$0209,$0208,$0208,$0208
	DC.W	$0207,$0207,$0207,$0206,$0206,$0206,$0205,$0205
	DC.W	$0205,$0204,$0204,$0204,$0204,$0203,$0203,$0203
	DC.W	$0202,$0202,$0202,$0201,$0201,$0201,$0200,$0200
	DC.W	$0200,$01FF,$01FF,$01FF,$01FE,$01FE,$01FE,$01FE
	DC.W	$01FD,$01FD,$01FD,$01FC,$01FC,$01FC,$01FB,$01FB
	DC.W	$01FB,$01FA,$01FA,$01FA,$01FA,$01F9,$01F9,$01F9
	DC.W	$01F8,$01F8,$01F8,$01F7,$01F7,$01F7,$01F7,$01F6
	DC.W	$01F6,$01F6,$01F5,$01F5,$01F5,$01F4,$01F4,$01F4
	DC.W	$01F4,$01F3,$01F3,$01F3,$01F2,$01F2,$01F2,$01F1
	DC.W	$01F1,$01F1,$01F1,$01F0,$01F0,$01F0,$01EF,$01EF
	DC.W	$01EF,$01EF,$01EE,$01EE,$01EE,$01ED,$01ED,$01ED
	DC.W	$01EC,$01EC,$01EC,$01EC,$01EB,$01EB,$01EB,$01EA
	DC.W	$01EA,$01EA,$01EA,$01E9,$01E9,$01E9,$01E8,$01E8
	DC.W	$01E8,$01E8,$01E7,$01E7,$01E7,$01E6,$01E6,$01E6
	DC.W	$01E6,$01E5,$01E5,$01E5,$01E4,$01E4,$01E4,$01E4
	DC.W	$01E3,$01E3,$01E3,$01E3,$01E2,$01E2,$01E2,$01E1
	DC.W	$01E1,$01E1,$01E1,$01E0,$01E0,$01E0,$01DF,$01DF
	DC.W	$01DF,$01DF,$01DE,$01DE,$01DE,$01DE,$01DD,$01DD
	DC.W	$01DD,$01DC,$01DC,$01DC,$01DC,$01DB,$01DB,$01DB
	DC.W	$01DB,$01DA,$01DA,$01DA,$01DA,$01D9,$01D9,$01D9
	DC.W	$01D8,$01D8,$01D8,$01D8,$01D7,$01D7,$01D7,$01D7
	DC.W	$01D6,$01D6,$01D6,$01D6,$01D5,$01D5,$01D5,$01D4
	DC.W	$01D4,$01D4,$01D4,$01D3,$01D3,$01D3,$01D3,$01D2
	DC.W	$01D2,$01D2,$01D2,$01D1,$01D1,$01D1,$01D1,$01D0
	DC.W	$01D0,$01D0,$01D0,$01CF,$01CF,$01CF,$01CF,$01CE
	DC.W	$01CE,$01CE,$01CE,$01CD,$01CD,$01CD,$01CD,$01CC
	DC.W	$01CC,$01CC,$01CB,$01CB,$01CB,$01CB,$01CA,$01CA
	DC.W	$01CA,$01CA,$01C9,$01C9,$01C9,$01C9,$01C8,$01C8
	DC.W	$01C8,$01C8,$01C7,$01C7,$01C7,$01C7,$01C6,$01C6
	DC.W	$01C6,$01C6,$01C6,$01C5,$01C5,$01C5,$01C5,$01C4
	DC.W	$01C4,$01C4,$01C4,$01C3,$01C3,$01C3,$01C3,$01C2
	DC.W	$01C2,$01C2,$01C2,$01C1,$01C1,$01C1,$01C1,$01C0
	DC.W	$01C0,$01C0,$01C0,$01BF,$01BF,$01BF,$01BF,$01BE
	DC.W	$01BE,$01BE,$01BE,$01BE,$01BD,$01BD,$01BD,$01BD
	DC.W	$01BC,$01BC,$01BC,$01BC,$01BB,$01BB,$01BB,$01BB
	DC.W	$01BA,$01BA,$01BA,$01BA,$01BA,$01B9,$01B9,$01B9
	DC.W	$01B9,$01B8,$01B8,$01B8,$01B8,$01B7,$01B7,$01B7
	DC.W	$01B7,$01B7,$01B6,$01B6,$01B6,$01B6,$01B5,$01B5
	DC.W	$01B5,$01B5,$01B4,$01B4,$01B4,$01B4,$01B4,$01B3
	DC.W	$01B3,$01B3,$01B3,$01B2,$01B2,$01B2,$01B2,$01B2
	DC.W	$01B1,$01B1,$01B1,$01B1,$01B0,$01B0,$01B0,$01B0
	DC.W	$01B0,$01AF,$01AF,$01AF,$01AF,$01AE,$01AE,$01AE
	DC.W	$01AE,$01AE,$01AD,$01AD,$01AD,$01AD,$01AC,$01AC
	DC.W	$01AC,$01AC,$01AC,$01AB,$01AB,$01AB,$01AB,$01AA
	DC.W	$01AA,$01AA,$01AA,$01AA,$01A9,$01A9,$01A9,$01A9
	DC.W	$01A9,$01A8,$01A8,$01A8,$01A8,$01A7,$01A7,$01A7
	DC.W	$01A7,$01A7,$01A6,$01A6,$01A6,$01A6,$01A6,$01A5
	DC.W	$01A5,$01A5,$01A5,$01A4,$01A4,$01A4,$01A4,$01A4
	DC.W	$01A3,$01A3,$01A3,$01A3,$01A3,$01A2,$01A2,$01A2
	DC.W	$01A2,$01A2,$01A1,$01A1,$01A1,$01A1,$01A1,$01A0
	DC.W	$01A0,$01A0,$01A0,$019F,$019F,$019F,$019F,$019F
	DC.W	$019E,$019E,$019E,$019E,$019E,$019D,$019D,$019D
	DC.W	$019D,$019D,$019C,$019C,$019C,$019C,$019C,$019B
	DC.W	$019B,$019B,$019B,$019B,$019A,$019A,$019A,$019A
	DC.W	$019A,$0199,$0199,$0199,$0199,$0199,$0198,$0198
	DC.W	$0198,$0198,$0198,$0197,$0197,$0197,$0197,$0197
	DC.W	$0197,$0197,$0197,$0197,$0197,$0197,$0197,$0197
	DC.W	$0197,$0197,$0197,$0197,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196
	DC.W	$0196,$0196,$0196,$0196,$0196,$0196,$0196,$0196

Sinus:	dc.w	16384,16382,16374,16362,16344,16322,16294,16262
	dc.w	16225,16182,16135,16083,16026,15964,15897,15826
	dc.w	15749,15668,15582,15491,15396,15296,15191,15082
	dc.w	14967,14849,14726,14598,14466,14330,14189,14044
	dc.w	13894,13741,13583,13421,13255,13085,12911,12733
	dc.w	12551,12365,12176,11982,11786,11585,11381,11174
	dc.w	10963,10749,10531,10311,10087,9860,9630,9397
	dc.w	9162,8923,8682,8438,8192,7943,7692,7438
	dc.w	7182,6924,6664,6401,6137,5871,5603,5334
	dc.w	5063,4790,4516,4240,3963,3685,3406,3126
	dc.w	2845,2563,2280,1996,1712,1427,1142,857
	dc.w	571,285,0,-285,-571,-857,-1142,-1428
	dc.w	-1712,-1996,-2280,-2563,-2845,-3126,-3406,-3685
	dc.w	-3963,-4240,-4516,-4790,-5063,-5334,-5603,-5871
	dc.w	-6137,-6401,-6664,-6924,-7182,-7438,-7692,-7943
	dc.w	-8192,-8438,-8682,-8923,-9162,-9397,-9630,-9860
	dc.w	-10087,-10311,-10531,-10749,-10963,-11174,-11381,-11585
	dc.w	-11786,-11982,-12176,-12365,-12551,-12733,-12911,-13085
	dc.w	-13255,-13421,-13583,-13741,-13894,-14044,-14189,-14330
	dc.w	-14466,-14598,-14726,-14849,-14967,-15082,-15191,-15296
	dc.w	-15396,-15491,-15582,-15668,-15749,-15826,-15897,-15964
	dc.w	-16026,-16083,-16135,-16182,-16225,-16262,-16294,-16322
	dc.w	-16344,-16362,-16374,-16382,-16384,-16382,-16374,-16362
	dc.w	-16344,-16322,-16294,-16262,-16225,-16182,-16135,-16083
	dc.w	-16026,-15964,-15897,-15826,-15749,-15668,-15582,-15491
	dc.w	-15396,-15296,-15191,-15082,-14968,-14849,-14726,-14598
	dc.w	-14466,-14330,-14189,-14044,-13894,-13741,-13583,-13421
	dc.w	-13255,-13085,-12911,-12733,-12551,-12365,-12176,-11982
	dc.w	-11786,-11585,-11381,-11174,-10963,-10749,-10531,-10311
	dc.w	-10087,-9860,-9630,-9397,-9162,-8923,-8682,-8438
	dc.w	-8192,-7943,-7692,-7438,-7182,-6924,-6664,-6402
	dc.w	-6137,-5871,-5604,-5334,-5063,-4790,-4516,-4240
	dc.w	-3963,-3685,-3406,-3126,-2845,-2563,-2280,-1996
	dc.w	-1712,-1428,-1143,-857,-572,-286,0,285
	dc.w	571,857,1142,1427,1712,1996,2280,2562
	dc.w	2844,3126,3406,3685,3963,4240,4515,4790
	dc.w	5062,5334,5603,5871,6137,6401,6663,6924
	dc.w	7182,7438,7691,7943,8192,8438,8682,8923
	dc.w	9161,9397,9630,9860,10087,10310,10531,10748
	dc.w	10963,11173,11381,11585,11785,11982,12175,12365
	dc.w	12551,12732,12910,13085,13255,13421,13583,13740
	dc.w	13894,14044,14189,14330,14466,14598,14726,14849
	dc.w	14967,15081,15191,15296,15396,15491,15582,15668
	dc.w	15749,15826,15897,15964,16026,16083,16135,16182
	dc.w	16224,16262,16294,16322,16344,16361,16374,16382

	dc.w	16384,16382,16374,16362,16344,16322,16294,16262
	dc.w	16225,16182,16135,16083,16026,15964,15897,15826
	dc.w	15749,15668,15582,15491,15396,15296,15191,15082
	dc.w	14967,14849,14726,14598,14466,14330,14189,14044
	dc.w	13894,13741,13583,13421,13255,13085,12911,12733
	dc.w	12551,12365,12176,11982,11786,11585,11381,11174
	dc.w	10963,10749,10531,10311,10087,9860,9630,9397
	dc.w	9162,8923,8682,8438,8192,7943,7692,7438
	dc.w	7182,6924,6664,6401,6137,5871,5603,5334
	dc.w	5063,4790,4516,4240,3963,3685,3406,3126
	dc.w	2845,2563,2280,1996,1712,1427,1142,857
	dc.w	571,285,0,-285,-571,-857,-1142,-1428
	dc.w	-1712,-1996,-2280,-2563,-2845,-3126,-3406,-3685
	dc.w	-3963,-4240,-4516,-4790,-5063,-5334,-5603,-5871
	dc.w	-6137,-6401,-6664,-6924,-7182,-7438,-7692,-7943
	dc.w	-8192,-8438,-8682,-8923,-9162,-9397,-9630,-9860
	dc.w	-10087,-10311,-10531,-10749,-10963,-11174,-11381,-11585
	dc.w	-11786,-11982,-12176,-12365,-12551,-12733,-12911,-13085
	dc.w	-13255,-13421,-13583,-13741,-13894,-14044,-14189,-14330
	dc.w	-14466,-14598,-14726,-14849,-14967,-15082,-15191,-15296
	dc.w	-15396,-15491,-15582,-15668,-15749,-15826,-15897,-15964
	dc.w	-16026,-16083,-16135,-16182,-16225,-16262,-16294,-16322
	dc.w	-16344,-16362,-16374,-16382,-16384,-16382,-16374,-16362
	dc.w	-16344,-16322,-16294,-16262,-16225,-16182,-16135,-16083
	dc.w	-16026,-15964,-15897,-15826,-15749,-15668,-15582,-15491
	dc.w	-15396,-15296,-15191,-15082,-14968,-14849,-14726,-14598
	dc.w	-14466,-14330,-14189,-14044,-13894,-13741,-13583,-13421
	dc.w	-13255,-13085,-12911,-12733,-12551,-12365,-12176,-11982
	dc.w	-11786,-11585,-11381,-11174,-10963,-10749,-10531,-10311
	dc.w	-10087,-9860,-9630,-9397,-9162,-8923,-8682,-8438
	dc.w	-8192,-7943,-7692,-7438,-7182,-6924,-6664,-6402
	dc.w	-6137,-5871,-5604,-5334,-5063,-4790,-4516,-4240
	dc.w	-3963,-3685,-3406,-3126,-2845,-2563,-2280,-1996
	dc.w	-1712,-1428,-1143,-857,-572,-286,0,285
	dc.w	571,857,1142,1427,1712,1996,2280,2562
	dc.w	2844,3126,3406,3685,3963,4240,4515,4790
	dc.w	5062,5334,5603,5871,6137,6401,6663,6924
	dc.w	7182,7438,7691,7943,8192,8438,8682,8923
	dc.w	9161,9397,9630,9860,10087,10310,10531,10748
	dc.w	10963,11173,11381,11585,11785,11982,12175,12365
	dc.w	12551,12732,12910,13085,13255,13421,13583,13740
	dc.w	13894,14044,14189,14330,14466,14598,14726,14849
	dc.w	14967,15081,15191,15296,15396,15491,15582,15668
	dc.w	15749,15826,15897,15964,16026,16083,16135,16182
	dc.w	16224,16262,16294,16322,16344,16361,16374,16382

;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2066	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$38c6	;256 LIGNES + 35 LIGNES = 291 LIGNES

	DC.W	$0092,$0030,$0094,$00D8

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	BMAP:
	DC.W	$00E0,$0000
	DC.W	$00E2,$0000
	DC.W	$00E4,$0000
	DC.W	$00E6,$0000

	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$2200		;2 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;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,$0ddd	;COULEUR 01
	DC.W	$0184,$0888	;COULEUR 02
	DC.W	$0186,$0444	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

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


COMME VOUS ME L'AVEZ DEMANDE PAR DIZAINES, VOICI UN EXEMPLE DE DEMO MULTIPART

UNE DEMO MULTIPART EST UNE DEMO DANS LAQUELLE ON PEUT AVOIR PLUSIEURS ECRANS
AVEC DIFFERENTS EFFETS.

CET EXEMPLE EST TRES SIMPLE, IL N'UTILISE QUE 3 ECRANS ET SEUL L'ECRAN 2 A
UN EFFET PRESENT, CECI POUR NE PAS TROP VOUS COMPLIQUER LA TACHE EN ALOURDIS
SANT LE PROGRAMME.

LE PRINCIPE EST SIMPLE : ON PLACE DANS NOTRE PORGRAMME PLUSIEURS LISTEA COP
PER QUE L'ON ACTIVERA AU MOMENT VOULU.

IL FAUT POUR CELA LORS DE LA MISE EN PLACE DE LA PREMIERE LISTE COPPER, SAU
VER 2 FOIS L'ADRESSE L'ANCIENNE LISTE COPPER, CAR NOUS EN AVONS BESOIN POUR
1 - INSTALLER LA DEUXIEME LISTE COPPER
2 - RESTAURER L'ANCIENNE LISTE COPPER 

POUR INSTALLER LES DIFFERENTS LISTES COPPER ON UTILISE LA MEME ROUTINE : SET
COPPER.

D'AUTRE PART LA MUSIQUE EST JOUEE SOUS INTERRUPTION, ET UNE BOUCLE D'ATTENTE
PERMET D'ATTENDRE UN CERTAIN TEMPS ENTRE DEUX CHANGEMENT DE LISTE COPPER.

DANS CET EXEMPLE TOUS LES FICHIERS DATAS SONT EN MEMOIRE, NOUS VERRONS DANS
LE PROCHAIN EXEMPLE LE CAS OU LES DATAS DOIVENT ETRE CHARGER PENDANT L'EXE
CUTION DE LA DEMO.

=============================================================================
				MULTIPART DEMO
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;PIC1_RAW	RETURN
;IMAGE1		RETURN RETURN
;
;RI		RETURN
;PIC2_RAW	RETURN
;IMAGE2		RETURN RETURN
;
;RI		RETURN
;PIC3_RAW	RETURN
;IMAGE3		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 "PIC1_RAW",IMAGE1
>EXTERN "PIC2_RAW",IMAGE2
>EXTERN "PIC3_RAW",IMAGE3
>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
;==================================
IMAGE1=$40000		;ADRESSE IMAGE 1
;=================================
AntStars:	=	90	;NOMBRE ETOILES

Screen:		dc.l	$40000	;ADRESSE ECRANS DOUBLE BUFFER
		dc.l	$50000

BMapSize:	=	280*44	;TAILLE PLAN

MulsList:	=	$57000	;ADRESSE ZONE ADRESSE LIGNES

;==================================	

IMAGE2=$60000			;ADRESSE IMAGE 2

IMAGE3=IMAGE2+[40*256*3]	;ADRESSE IMAGE 3

MT_DATA=IMAGE3+[40*50*5]	;ADRESSE MUSIQUE
			
;==================================
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.L INIT_MUSIQUE		;INITIALISATION DE LA MUSIQUE

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

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

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.L	END			;SINON RETOURNE A WAIT

ATTENTE1:			;BOUCLE D'ATTENTE
ADD.W #1,CPT1
CMP.W #$3FF,CPT1
BNE.S WAIT1
MOVE.W #0,CPT1

BSR.L SETCOPPER1		;MET EN PLACE LISTE COPPER 1



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

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.S	END			;SINON RETOURNE A WAIT

ATTENTE2:			;BOUCLE D'ATTENTE
ADD.W #1,CPT2
CMP.W #$3FF,CPT2
BNE.S WAIT2
MOVE.W #0,CPT2


BSR.L INITRUTIN			;VA A ROUTINE INITIALISATION ETOILES
BSR.L SETCOPPER2		;MET EN PLACE LISTE COPPER 2

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

BSR.L STARS			;VA A ROUTINE D'ETOILES

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.S	END			;SINON RETOURNE A WAIT

ATTENTE3:			;BOUCLE D'ATTENTE
ADD.W #1,CPT3
CMP.W #$3FF,CPT3
BNE.S WAIT3
MOVE.W #0,CPT3

BSR.L SETCOPPER3		;MET EN PLACE LISTE COPPER 3


WAIT4:
BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.L	WAIT4			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;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
move.l d0,coppertr2		;DANS COPPERTR2 ET
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
coppertr2:	dc.l 0
;====================
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
oldcopper2:	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
;====================
SETCOPPER1:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

SETCOPPER2:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper2,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

SETCOPPER3:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper3,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

CPT1: DC.W 0			;COMPTEUR 1
CPT2: DC.W 0			;COMPTEUR 2
CPT3: DC.W 0			;COMPTEUR 3
;===================
********************************************

;ROUTINES ANIMATION ETOILES 3D

InitRutin:	

		.................

Stars:

		.................		

**************************************************************************
EVEN

INIT_MUSIQUE:			;INITIALISATION DE LA MUSIQUE

		.................

STOP_MUSIQUE:			;ARRET DE LA MUSIQUE

		.................

PLAY_MUSIQUE:			;JOUE LA MUSIQUE

		.................

;=========================================================================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2981	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$29D1	;256 LIGNES

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0,IMAGE1+[40*0]/65536
	DC.W $00E2,IMAGE1+[40*0] & 65535   
	DC.W $00E4,IMAGE1+[40*1]/65536
	DC.W $00E6,IMAGE1+[40*1] & 65535
	DC.W $00E8,IMAGE1+[40*2]/65536
	DC.W $00EA,IMAGE1+[40*2] & 65535
	DC.W $00EC,IMAGE1+[40*3]/65536
	DC.W $00EE,IMAGE1+[40*3] & 65535
	DC.W $00F0,IMAGE1+[40*4]/65536
	DC.W $00F2,IMAGE1+[40*4] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,4*40	;MODULOS PLANS PAIRS
	DC.W 	$010A,4*40	;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 ,$0182,$0aaa ,$0184,$0f00 ,$0186,$00f0
	dc.w	$0188,$000f ,$018a,$0500 ,$018c,$0620 ,$018e,$0730
	dc.w	$0190,$0840 ,$0192,$0950 ,$0194,$0a60 ,$0196,$0b70
	dc.w	$0198,$0c80 ,$019a,$0d90 ,$019c,$0ea0 ,$019e,$0fb0
	dc.w	$01a0,$0fc0 ,$01a2,$0fd3 ,$01a4,$0fe6 ,$01a6,$0ff9
	dc.w	$01a8,$0ffc ,$01aa,$0fff ,$01ac,$0455 ,$01ae,$0566
	dc.w	$01b0,$0677 ,$01b2,$0788 ,$01b4,$0899 ,$01b6,$09aa
	dc.w	$01b8,$0abb ,$01ba,$0bcc ,$01bc,$0cdd ,$01be,$0dee


	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

DC.L $FFFFFFFE ;FIN LISTE COPPER
EVEN
;========================================================================
NEWCOPPER2:   

	DC.W	$008E,$2866	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$38c6	

	DC.W	$0092,$0030,$0094,$00D8

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	BMAP:	
	DC.W	$00E4,$0000
	DC.W	$00E6,$0000
	DC.W	$00EC,$0000
	DC.W	$00EE,$0000

	DC.W	$00E0,IMAGE2+[40*0*256]/65536
	DC.W	$00E2,IMAGE2+[40*0*256] & 65535
	DC.W	$00E8,IMAGE2+[40*1*256]/65536
	DC.W	$00EA,IMAGE2+[40*1*256] & 65535
	DC.W	$00F0,IMAGE2+[40*2*256]/65536
	DC.W	$00F2,IMAGE2+[40*2*256] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5600		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,$000-4	;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,$0aad	;COULEUR 01
	DC.W	$0184,$0358	;COULEUR 02
	DC.W	$0186,$063c	;COULEUR 03
	DC.W	$0188,$075c	;COULEUR 04
	DC.W	$018A,$077b	;COULEUR 05
	DC.W	$018C,$0237	;COULEUR 06
	DC.W	$018E,$0eee	;COULEUR 07

	DC.W	$0190,$0000	;COULEUR 08
	DC.W	$0192,$0ddd	;COULEUR 09
	DC.W	$0194,$0888	;COULEUR 10
	DC.W	$0196,$0444	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

DC.L $FFFFFFFE ;FIN LISTE COPPER

;========================================================================
NEWCOPPER3:   
	DC.W	$008E,$A081	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$D2D1	;50 LIGNES 

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0,IMAGE3+[40*0]/65536
	DC.W $00E2,IMAGE3+[40*0] & 65535   
	DC.W $00E4,IMAGE3+[40*1]/65536
	DC.W $00E6,IMAGE3+[40*1] & 65535
	DC.W $00E8,IMAGE3+[40*2]/65536
	DC.W $00EA,IMAGE3+[40*2] & 65535
	DC.W $00EC,IMAGE3+[40*3]/65536
	DC.W $00EE,IMAGE3+[40*3] & 65535
	DC.W $00F0,IMAGE3+[40*4]/65536
	DC.W $00F2,IMAGE3+[40*4] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,4*40	;MODULOS PLANS PAIRS
	DC.W 	$010A,4*40	;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 ,$0182,$0400 ,$0184,$0a21 ,$0186,$0b31
	dc.w	$0188,$0d31 ,$018a,$0e41 ,$018c,$0e52 ,$018e,$0e72
	dc.w	$0190,$0f83 ,$0192,$0f93 ,$0194,$0fb4 ,$0196,$0fc7
	dc.w	$0198,$0fda ,$019a,$0811 ,$019c,$0611 ,$019e,$0000
	dc.w	$01a0,$0111 ,$01a2,$0222 ,$01a4,$0333 ,$01a6,$0444
	dc.w	$01a8,$0555 ,$01aa,$0666 ,$01ac,$0777 ,$01ae,$0888
	dc.w	$01b0,$0888 ,$01b2,$0999 ,$01b4,$0aaa ,$01b6,$0bbb
	dc.w	$01b8,$0ccc ,$01ba,$0ddd ,$01bc,$0eee ,$01be,$0fff

DC.L $FFFFFFFE ;FIN LISTE COPPER


FINDEMO:
=============================================================================



VOICI L'EXEMPLE DE DEMO MULTIPART AVEC CHARGEMENT DE DONNEES.
LA ROUTINE DE CHARGEMENT UTILISEE ICI EST CELLE UTILISEE DANS LE COURS 6
SUR LA MEGADEMO DOS. VOUS POUVEZ SI VOUS DESIREZ REALISER UNE DEMO MULTIPART
NON DOS UTILISER LES ROUTINES DE CHARGEMENT NON DOS DU MEME COURS 6.


SI VOUS UTILISEZ CET EXEMPLE, ESSAYEZ DE DIVISER LA MEMOIRE DISPONIBLE EN 2.

CHARGEZ DANS LA ZONE 2 LES DATAS DU 2IEME ECRAN, PENDANT L'EXECUTION DU 
PREMIER.

PUIS CHARGEZ DANS LA ZONE 1 LES DATAS DU 3IEME ECRAN PENDANT L'EXECUTION DU
DEUXIEME. ETC.... ETC..... ET CE, TANT QUE VOUS LE DESIREZ.


CECI VOUS PERMETTRA D'AVOIR DES DEMOS PLUS FOUILLEES DU POINT DE VUE DU GRA
PHISME ET DU SON.

=============================================================================
			MULTIPART DEMO AVEC CHARGEMENT
=============================================================================
;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;PIC1_RAW	RETURN
;IMAGE1		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 "PIC1_RAW",IMAGE1
>EXTERN "MODULE",MT_DATA

org $25000	;EMPLACEMENT EN MEMOIRE
load $25000	;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
;==================================
AntStars:	=	90

Screen:		dc.l	$30000
		dc.l	$40000

BMapSize:	=	280*44	

MulsList:	=	$47000

;==================================	

IMAGE1=$50000			;ADRESSE IMAGE 1

IMAGE2=IMAGE1+[40*256*5]	;ADRESSE IMAGE 2

MT_DATA=IMAGE2+[40*256*3]	;ADRESSE MUSIQUE
		
FINDATA=MT_DATA+47724	
;==================================
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.L INIT_MUSIQUE		;INITIALISATION DE LA MUSIQUE

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

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

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.L	END			;SINON RETOURNE A WAIT

ATTENTE1:			;BOUCLE D'ATTENTE
ADD.W #1,CPT1
CMP.W #$3FF,CPT1
BNE.S WAIT1
MOVE.W #0,CPT1

BSR.L SETCOPPER1		;MET EN PLACE LISTE COPPER 1



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

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.L	END			;SINON RETOURNE A WAIT

ATTENTE2:			;BOUCLE D'ATTENTE
ADD.W #1,CPT2
CMP.W #$3FF,CPT2
BNE.S WAIT2
MOVE.W #0,CPT2

MOVE.L #PIC02,FILE		;MET NOM DU FICHIER DANS FILE
move.l #image2,adresse		;MET ADRESSE IMAGE2 DANS ADRESSE
BSR.L LOADING			;CHARGE FICHIER

BSR.L INITRUTIN			;INITIALISATION ETOILES
BSR.L SETCOPPER2		;MET EN PLACE LISTE COPPER 2

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

BSR.L STARS			;VA A ROUTINE ETOILES 3D

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BEQ.S	END			;SINON RETOURNE A WAIT

ATTENTE3:			;BOUCLE D'ATTENTE
ADD.W #1,CPT3
CMP.W #$3FF,CPT3
BNE.S WAIT3
MOVE.W #0,CPT3

MOVE.L #PIC03,FILE		;MET NOM DU FICHIER DANS FILE
move.l #image1,adresse		;MET ADRESSE IMAGE 1 DANS ADRESSE
BSR.L LOADING			;CHARGE FICHIER

BSR.L SETCOPPER3		;MET EN PLACE LISTE COPPER 3


WAIT4:
BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.L	WAIT4			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;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
move.l d0,coppertr2		;DANS COPPERTR2 ET
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
coppertr2:	dc.l 0
;====================
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
oldcopper2:	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
;====================
SETCOPPER1:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

SETCOPPER2:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper2,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

SETCOPPER3:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr2,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper2		;MET CONTENU DANS OLDCOPPER
move.l #newcopper3,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		

CPT1: DC.W 0			;COMPTEUR 1
CPT2: DC.W 0			;COMPTEUR 1
CPT3: DC.W 0			;COMPTEUR 1
;===================
EVEN
FileHD:		DC.L 0
DosBase:	DC.L 0
DosName:	DC.B 'dos.library',0

PIC02: 	DC.B 'PIC2_RAW',0	;FICHIER IMAGE 1 
PIC03: 	DC.B 'PIC3_RAW',0	;FICHIER IMAGE 2


EVEN
File: DC.L 0
adresse: dc.l 0
EVEN
;====================
LOADING:			;ROUTINE DE CHARGEMENT DE FICHIER
move.l ExecBase,a6		;OUVRE LIBRAIRIE DOS
lea DosName,a1
jsr OpenLibrary(a6)
move.l d0,DosBase
move.l d0,a6

move.l #1005,d2			;OUVRE FICHIER
move.l File,d1
jsr Open(a6)
move.l d0,FileHD

move.l d0,d1			;LECTURE DU FICHIER
move.l Adresse,d2		;ADRESSE DE LOAD
move.l #$fffff,d3		;LONGUEUR   $FFFFF = FICHIER COMPLET
JSR Read(a6)
	
move.l FileHD,d1		;FERMETURE DU FICHIER
jsr Close(a6)

move.l ExecBase,a6		;FERMETURE LIBRAIRIE DOS
move.l DosBase,a1
jsr CloseLibrary(a6)

RTS
********************************************

InitRutin:	

	..........................
Stars:

	..........................

**************************************************************************
EVEN

INIT_MUSIQUE:			;INITIALISATION DE LA MUSIQUE

		................

STOP_MUSIQUE:			;ARRET DE LA MUSIQUE

		................

PLAY_MUSIQUE:			;JOUE LA MUSIQUE

		................

;=========================================================================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2981	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$29D1	;256 LIGNES

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0,IMAGE1+[40*0]/65536
	DC.W $00E2,IMAGE1+[40*0] & 65535   
	DC.W $00E4,IMAGE1+[40*1]/65536
	DC.W $00E6,IMAGE1+[40*1] & 65535
	DC.W $00E8,IMAGE1+[40*2]/65536
	DC.W $00EA,IMAGE1+[40*2] & 65535
	DC.W $00EC,IMAGE1+[40*3]/65536
	DC.W $00EE,IMAGE1+[40*3] & 65535
	DC.W $00F0,IMAGE1+[40*4]/65536
	DC.W $00F2,IMAGE1+[40*4] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,4*40	;MODULOS PLANS PAIRS
	DC.W 	$010A,4*40	;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 ,$0182,$0aaa ,$0184,$0f00 ,$0186,$00f0
	dc.w	$0188,$000f ,$018a,$0500 ,$018c,$0620 ,$018e,$0730
	dc.w	$0190,$0840 ,$0192,$0950 ,$0194,$0a60 ,$0196,$0b70
	dc.w	$0198,$0c80 ,$019a,$0d90 ,$019c,$0ea0 ,$019e,$0fb0
	dc.w	$01a0,$0fc0 ,$01a2,$0fd3 ,$01a4,$0fe6 ,$01a6,$0ff9
	dc.w	$01a8,$0ffc ,$01aa,$0fff ,$01ac,$0455 ,$01ae,$0566
	dc.w	$01b0,$0677 ,$01b2,$0788 ,$01b4,$0899 ,$01b6,$09aa
	dc.w	$01b8,$0abb ,$01ba,$0bcc ,$01bc,$0cdd ,$01be,$0dee


	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

DC.L $FFFFFFFE ;FIN LISTE COPPER
EVEN
;========================================================================
NEWCOPPER2:   

	DC.W	$008E,$2866	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$38c6	

	DC.W	$0092,$0030,$0094,$00D8

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	BMAP:	
	DC.W	$00E4,$0000
	DC.W	$00E6,$0000
	DC.W	$00EC,$0000
	DC.W	$00EE,$0000

	DC.W	$00E0,IMAGE2+[40*0*256]/65536
	DC.W	$00E2,IMAGE2+[40*0*256] & 65535
	DC.W	$00E8,IMAGE2+[40*1*256]/65536
	DC.W	$00EA,IMAGE2+[40*1*256] & 65535
	DC.W	$00F0,IMAGE2+[40*2*256]/65536
	DC.W	$00F2,IMAGE2+[40*2*256] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5600		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,$000-4	;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,$0aad	;COULEUR 01
	DC.W	$0184,$0358	;COULEUR 02
	DC.W	$0186,$063c	;COULEUR 03
	DC.W	$0188,$075c	;COULEUR 04
	DC.W	$018A,$077b	;COULEUR 05
	DC.W	$018C,$0237	;COULEUR 06
	DC.W	$018E,$0eee	;COULEUR 07

	DC.W	$0190,$0000	;COULEUR 08
	DC.W	$0192,$0ddd	;COULEUR 09
	DC.W	$0194,$0888	;COULEUR 10
	DC.W	$0196,$0444	;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

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

DC.L $FFFFFFFE ;FIN LISTE COPPER

;========================================================================
NEWCOPPER3:   
	DC.W	$008E,$A081	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$D2D1	;50 LIGNES 

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0,IMAGE1+[40*0]/65536
	DC.W $00E2,IMAGE1+[40*0] & 65535   
	DC.W $00E4,IMAGE1+[40*1]/65536
	DC.W $00E6,IMAGE1+[40*1] & 65535
	DC.W $00E8,IMAGE1+[40*2]/65536
	DC.W $00EA,IMAGE1+[40*2] & 65535
	DC.W $00EC,IMAGE1+[40*3]/65536
	DC.W $00EE,IMAGE1+[40*3] & 65535
	DC.W $00F0,IMAGE1+[40*4]/65536
	DC.W $00F2,IMAGE1+[40*4] & 65535


	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$5200		;5 PLANS+MODE COULEURS

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,4*40	;MODULOS PLANS PAIRS
	DC.W 	$010A,4*40	;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 ,$0182,$0400 ,$0184,$0a21 ,$0186,$0b31
	dc.w	$0188,$0d31 ,$018a,$0e41 ,$018c,$0e52 ,$018e,$0e72
	dc.w	$0190,$0f83 ,$0192,$0f93 ,$0194,$0fb4 ,$0196,$0fc7
	dc.w	$0198,$0fda ,$019a,$0811 ,$019c,$0611 ,$019e,$0000
	dc.w	$01a0,$0111 ,$01a2,$0222 ,$01a4,$0333 ,$01a6,$0444
	dc.w	$01a8,$0555 ,$01aa,$0666 ,$01ac,$0777 ,$01ae,$0888
	dc.w	$01b0,$0888 ,$01b2,$0999 ,$01b4,$0aaa ,$01b6,$0bbb
	dc.w	$01b8,$0ccc ,$01ba,$0ddd ,$01bc,$0eee ,$01be,$0fff

DC.L $FFFFFFFE ;FIN LISTE COPPER


FINDEMO:
=============================================================================


VOILA.... C'EST TERMINE POUR AUJOURD'HUI... N'OUBLIEZ PAS DE JETER UN OEIL
INDISCRET SUR LA DEMO DE REBELS.... JE VOUS RETROUVE LE MOIS PROCHAIN POUR
UN NUMERO SPECIAL JEU, AVEC LA CONCEPTION D'UN JEU DE KARATE, QUI VOUS PER
METTRA DE VOIR LES TESTS DE COLLISIONS BLITTER, LES ANIMATIONS DE BOBS 
ETC.. ETC.... 
	
SUR CE, JE VOUS SOUHAITE DE REALISER DE SUPERBES DEMOS......		

		AMIGALEMENT

		FUNX / PHOENIX-DP (C) 15/02/1992

