collision:

	ldx	colV0
	cpx	#0
	beq tstColV0
	jsr exploseV0	   // Boum !
	jmp pasCollisionV0 // En fait, si, il y a eu une collision, mais on explose...
tstColV0:
	lda	varclignote
	cmp	#0
	bne notstcldecor
	lda	phaseJump
	cmp	#5
	bmi notstcldecor
	lda	53252
	jmp tstcldecor
notstcldecor:
	cmp  	#0	   // Si la voiture fait un bond, pas de collision possible
	bne pasCollisionV0
	lda	53260
	ora	53261
	and	#%11111100 // Une collision entre PM1 et PM2 sont a oublier ! 
	ora	53252
tstcldecor:
	ora	53253
	cmp	#0
	beq pasCollisionV0

	lda	#1	// On memorise que nous sommes dans la premiere phase d'une explosion de notre voiture
	sta	colV0
	ldy	#0	// Compteur entre chaque phase de l'explosion
	sty	tempoexpV0
	
pasCollisionV0:
	ldx	colV2	// Collision PM2 ?
	cpx	#0
	beq tstColV2
	/* Incrementation du score +10 points */
	lda	incscore5V2	
	cmp	#0
	bne pasincscore5V2
	lda	#5
	sta     incscore5V2
	sta	increment
	jsr	incscore
pasincscore5V2:
	jsr exploseV2	// Boum !
	jmp pasCollisionV2 // En fait, si, il y a eu une collision, mais V2 explose...

tstColV2:
	lda	phaseJump
	cmp  	#2	// Notre voiture trop haute pour exploser
	bne CollisionNormalV2
	
	lda	53262	// Collision PM2 ?
	and     #%11111100
	jmp SuiteColV2
CollisionNormalV2:
	lda	53262	// Collision PM2 ?
SuiteColV2:
	ora	53254
	cmp	#0
	beq pasCollisionV2
	lda	#1	// On memorise que nous sommes dans la premiere phase d'une explosion de notre voiture
	sta	colV2
	ldy	#0	// Compteur entre chaque phase de l'explosion
	sty	tempoexpV2

pasCollisionV2:
	ldx	colV3	// Collision PM3 ?
	cpx	#0
	beq tstColV3
	/* Incrementation du score +10 points */	
	lda	incscore5V3
	cmp	#0
	bne pasincscore5V3
	lda	#5
	sta     incscore5V3
	sta	increment
	jsr	incscore
pasincscore5V3:
	jsr exploseV3	// Boum !
	jmp pasCollisionV3 // En fait, si, il y a eu une collision, mais V2 explose...

tstColV3:
	lda	phaseJump
	cmp  	#2	// Notre voiture trop haute pour exploser
	bne CollisionNormalV3
	
	lda	53263	// Collision PM3 ?
	and     #%11111100
	jmp SuiteColV3
CollisionNormalV3:
	lda	53263	// Collision PM3 ?
SuiteColV3:
	ora	53255
	cmp	#0
	beq pasCollisionV3
	lda	#1	// On memorise que nous sommes dans la premiere phase d'une explosion de notre voiture
	sta	colV3
	ldy	#0	// Compteur entre chaque phase de l'explosion
	sty	tempoexpV3

pasCollisionV3:

	lda	#1	// Effacement des collisions
	sta	53278

	rts

exploseV0:
	ldy	tempoexpV0
	cpy	#0
	bne exploseV0b
	jsr dessineExplo
	ldy	tempoexpV0
exploseV0b:
	iny
	cpy	#20
	beq FinEtapeExplo
	sty 	tempoexpV0
	rts

FinEtapeExplo:
	ldy	#0
	sty	tempoexpV0
	inx
	stx	colV0
	rts

dessineExplo:
	cpx	#1
	beq	explV01
	
	cpx	#2
	beq	explV02

	cpx	#3
	bne finexplo
	jmp explV03

	// Il faut arreter le jeu
finexplo:
	lda	players
	sta	$e7
	lda	#0
	sta	$e6
	jsr clearPM
	ldy	#255
	sty     varclignote
	ldy 	nbvie
	cpy	#0
	beq findecnbvie
	dey
	sty     nbvie
	jmp contdecnbvie
findecnbvie:
	lda	#1
	sta fingame
contdecnbvie
	jsr reinitvoiture
	rts

explV01:
	// Changer les couleurs pour celles d'une explosion
	lda	#30
	sta	704
	lda	#51
	sta	705

        lda        players       // Pointe sur PM

        sta        $e7

        lda        #0
        sta        $e6

        ldy        #POSITIONY    // Position en Y
        lda        #explo1&255
        sta        $e8
        lda        #explo1/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

        ldx        players       // Pointe sur PM
	inx
        stx        $e7

        ldy        #POSITIONY    // Position en Y
        lda        #explo1b&255
        sta        $e8
        lda        #explo1b/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV02:
        lda        players       // Pointe sur PM
        sta        $e7


        lda        #0
        sta        $e6

        ldy        #POSITIONY    // Position en Y
        lda        #explo2&255
        sta        $e8
        lda        #explo2/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	lda	   #1		// On double la taille du PM2
	sta	   53257

	sec
        lda        positionXCar
	sbc	   #4
        sta        53249				// On reste centre par rapport a PM1

        ldx        players       // Pointe sur PM
	inx
        stx        $e7

        ldy        #POSITIONY    // Position en Y
        lda        #explo2b&255
        sta        $e8
        lda        #explo2b/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV03:
        lda        players       // Pointe sur PM
        sta        $e7

        lda        #0
        sta        $e6

        ldy        #POSITIONY    // Position en Y
        lda        #explo3&255
        sta        $e8
        lda        #explo3/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	lda	   #0
	sta	   53257

        lda        positionXCar
        sta        53249				// On reste centre par rapport a PM1

        ldx        players       // Pointe sur PM
	inx
        stx        $e7

        ldy        #POSITIONY    // Position en Y
        lda        #explo3b&255
        sta        $e8
        lda        #explo3b/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

// Explosion du vehicule adverse 2
exploseV2:
	ldy	#255
	sty	idx1 // Force l'arret du dessin normal de la voiture
	ldy	tempoexpV2
	cpy	#0
	bne exploseV2b
	jsr dessineExplo2
	ldy	tempoexpV2
exploseV2b:
	iny
	cpy	#20
	beq FinEtapeExploV2
	sty 	tempoexpV2
	rts

FinEtapeExploV2:
	ldy	#0
	sty	tempoexpV2
	inx
	stx	colV2
	rts

dessineExplo2:
	cpx	#1
	beq	explV21
	
	cpx	#2
	beq	explV22

	cpx	#3
	bne finexploV2
	jmp explV23

finexploV2:
	cpx     #4
	bne finexploV2b
	lda	#0
	sta     StartV1
	sta	colV2
finexploV2b:
	ldx	players
	inx
	inx
	stx	$e7
	lda	#0
	sta	$e6
	jsr clearPM

	rts

explV21:
	// Changer les couleurs pour celles d'une explosion
	lda	#15
	sta	706

        ldx        players       // Pointe sur PM
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY1    // Position en Y
        lda        #explo1&255
        sta        $e8
        lda        #explo1/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV22:
        ldx        players       // Pointe sur PM
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY1    // Position en Y
        lda        #explo2&255
        sta        $e8
        lda        #explo2/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV23:
        ldx        players       // Pointe sur PM
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY1    // Position en Y
        lda        #explo3&255
        sta        $e8
        lda        #explo3/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

// Explosion du vehicule adverse 3
exploseV3:
	ldy	#255
	sty	idx2 // Force l'arret du dessin normal de la voiture
	ldy	tempoexpV3
	cpy	#0
	bne exploseV3b
	jsr dessineExplo3
	ldy	tempoexpV3
exploseV3b:
	iny
	cpy	#20
	beq FinEtapeExploV3
	sty 	tempoexpV3
	rts

FinEtapeExploV3:
	ldy	#0
	sty	tempoexpV3
	inx
	stx	colV3
	rts

dessineExplo3:
	cpx	#1
	beq	explV31
	
	cpx	#2
	beq	explV32

	cpx	#3
	bne finexploV3
	jmp explV33

finexploV3:
	cpx	#4
	bne finexploV3b
	lda	#0
	sta     StartV2
	sta	colV3
finexploV3b:
	ldx	players
	inx
	inx
	inx
	stx	$e7
	lda	#0
	sta	$e6
	jsr clearPM

	rts

explV31:
	// Changer les couleurs pour celles d'une explosion
	lda	#30
	sta	707

        ldx        players       // Pointe sur PM
	inx
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY2    // Position en Y
        lda        #explo1&255
        sta        $e8
        lda        #explo1/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV32:
        ldx        players       // Pointe sur PM
	inx
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY2    // Position en Y
        lda        #explo2&255
        sta        $e8
        lda        #explo2/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

explV33:
        ldx        players       // Pointe sur PM
	inx
	inx
	inx
        stx        $e7

        lda        #51
        sta        $e6

        ldy        PosY2   // Position en Y
        lda        #explo3&255
        sta        $e8
        lda        #explo3/256
        sta        $e9
        ldx        #13
        stx        memy0

        jsr bclloadcar

	rts

initCollision:
	lda	#0
	sta	colV0
	sta	colV2
	sta	colV3
	sta	tempoexpV0
	sta	tempoexpV2
	sta	tempoexpV3
	rts

reinitvoiture:
	jsr initplayer
	jsr initCollision
        // Affichage des players...
        lda        #58
        sta        559
        
        lda        106
        sta        54279

        lda        #3
        sta        53277

	ldy	   positionXCar
        sty        53248
        sty        53249

	ldy	#0
	sty clicar
	ldy	#30
	sty cptclicar

bclwaitrestart
	jsr clignotevoitcar
	lda	644 // Strig
	cmp	#0
	bne bclwaitrestart

bclwaitrestart1
	jsr clignotevoitcar
	lda	644 // Strig
	cmp	#0
	beq bclwaitrestart1
 
	rts

clignotevoitcar
	lda	fingame
	cmp	#0
	bne finclignotevoitcar
	jsr SynchroWaitVBI
	lda 	physique
	clc
	adc	#59
	sec
	sbc	nbvie
	sta	$e8

	lda	physique+1
	sta	$e9

	ldy	#0
	lda	clicar
	sta	($e8),y
	
	ldx	cptclicar
	dex
	stx	cptclicar
	cpx 	#0
	bne finclignotevoitcar
	ldx	#30
	stx cptclicar
	ldx	clicar
	cpx	#0
	beq dessclicar
	ldx	#0
	stx 	clicar
	rts
dessclicar
	ldx	#200
	stx	clicar
finclignotevoitcar:
	rts
	
	
clicar	db 0
cptclicar db 30

colV0	db 0
colV2   db 0
colV3   db 0

tempoexpV0 db 0
tempoexpV2 db 0
tempoexpV3 db 0