
***********  CHARGE LES 5 IMAGES DU NIVEAU SI BESOIN  *********

LOADLVL LDA NUMEROLEVEL ; VERIFIE SI DEJA EN MEMOIRE
 INC
 CMP CURRENTPICT
 BEQ LOADLVL2
 STA CURRENTPICT
 TAX
 LDA LOADLVLTAB,X ; CORRESPONDANCE NUMERO NIVEAU / IMAGES
 AND #$00FF
 PHA
 DEC
 ASL
 TAX
 LDA LOADLVLTAB2,X
 XBA
 AND #$00FF
 TAY
 LDA LOADLVLTAB2,X
 AND #$00FF
 TAX
 PLA
LOADLVL1 JSL $0A0A0A ; CHARGE LES 5 IMAGES
 PHK
 PLB
LOADLVL2 RTS

CURRENTPICT HEX 0000 ; IMAGES DU NIVEAU EN MEMOIRE

LOADLVLTAB HEX 00
 HEX 01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14 ; 01 - 20
 HEX 15,16,17,18,19,1A,1B,1C,1D,1E,1F,0D,21,22,23,24,25,26,27,28 ; 21 - 40
 HEX 29,2A,2B,2C,01,05,06,02,07,32,33,08,0C,36,37,09,39,3A,3B,0E ; 41 - 60
 HEX 0F,3E,10,40,41,11,22,23,0A,24,25,48,49,4A,4B,4C,17,0B,12,50  ; 61 - 80
 HEX 51,1B,26,54,13,56,57,58,21,0D,5B,5C

LOADLVLTAB2 HEX 0204,0203,0203,0204,0204,0204,0105,0105,0203,0105 ; IMAGES UTILISEES
 HEX 0203,0203,0105,0104,0105,0204,0204,0204,0105,0105
 HEX 0105,0104,0105,0204,0204,0204,0105,0205,0204,0203
 HEX 0204,0000,0104,0105,0104,0105,0105,0204,0104,0204
 HEX 0204,0204,0105,0104,0000,0000,0000,0000,0000,0204
 HEX 0204,0000,0000,0204,0105,0000,0105,0105,0105,0000
 HEX 0000,0104,0000,0204,0203,0000,0000,0000,0000,0000
 HEX 0000,0104,0204,0105,0204,0204,0000,0000,0000,0105
 HEX 0203,0000,0000,0104,0000,0203,0105,0105,0000,0000
 HEX 0303,0105

**************  CHARGE L'IMAGE LITTLE QUI CORRESPOND  **************

LOADLITTLE LDA NUMEROLEVEL ; VERIFIE SI DEJA EN MEMOIRE
 TAX
 LDA LITTLETAB,X ; 1,2,3...
 AND #$00FF
 CMP CURRENTLITTLE
 BEQ LOADLITTLE2
 STA CURRENTLITTLE
LOADLITTLE1 JSL $0A0A0A ; CHARGE L'IMAGE
 PHK
 PLB
LOADLITTLE2 RTS

CURRENTLITTLE HEX 0100 ; IMAGE LITTLE EN MEMOIRE
LITTLETAB HEX 01,01,01,01,01,01,01,01,01,01
 HEX 01,01,02,02,02,02,02,02,02,02
 HEX 02,02,03,03,03,03,03,03,03,03
 HEX 03,02,03,04,04,04,04,01,04,04 ; 31
 HEX 03,04,05,04,01,01,01,01,01,04
 HEX 05,01,01,01,05,01,05,05,05,02
 HEX 02,04,02,05,02,02,04,04,01,04 ; 61
 HEX 04,05,06,06,05,05,03,01,02,06
 HEX 06,03,01,06,02,06,06,06,03,02
 HEX 06,06 ; 91

**************  CHARGE L'IMAGE LAVE QUI CORRESPOND  **************

LOADLAVE LDA NUMEROLEVEL ; VERIFIE SI DEJA EN MEMOIRE
 TAX
 LDA CURRENTLAVETAB,X
 AND #$00FF
 CMP CURRENTLAVE
 BEQ LOADLAVE2
LOADLAVE0 STA CURRENTLAVE ; POINT D'ENTREE POUR EASTER EGGS
LOADLAVE1 JSL $0A0A0A ; CHARGE L'IMAGE
 PHK
 PLB
LOADLAVE2 RTS

CURRENTLAVE HEX 0100 ; IMAGE LAVE EN MEMOIRE
CURRENTLAVETAB HEX 01,01,01,01,01,06,01,01,01,01
 HEX 01,01,06,01,01,06,01,06,01,01
 HEX 01,01,06,01,01,01,01,06,01,06
 HEX 01,06,01,01,01,06,01,06,01,06 ; 31
 HEX 01,01,01,01,01,01,06,01,01,06
 HEX 06,01,01,01,01,01,01,01,01,01
 HEX 01,01,06,01,06,01,01,01,01,06 ; 61
 HEX 01,06,01,01,01,06,06,01,06,01
 HEX 06,01,06,06,01,06,01,01,01,06
 HEX 01,01 ; 91

*******************  CHARGE L'IMAGE PIEGES  ******************

LOADPIEGES LDA NUMEROLEVEL ; PIEGE POUR LES NIVEAUX 15,17,21
 INC
 CMP #$000F ; 15
 BEQ LOADPIEGES0
 CMP #$0011 ; 17
 BEQ LOADPIEGES0
 CMP #$0015 ; 21
 BEQ LOADPIEGES0
 CMP #$0018 ; 24
 BEQ LOADPIEGES0
 CMP #$001A ; 26
 BEQ LOADPIEGES0
 CMP #$0037 ; 55
 BEQ LOADPIEGES0
 CMP #$003D ; 61 = 15
 BEQ LOADPIEGES0
 CMP #$003E ; 62
 BEQ LOADPIEGES0
 CMP #$0040 ; 64
 BEQ LOADPIEGES0
 CMP #$0042 ; 66 = 17
 BEQ LOADPIEGES0
 CMP #$0049 ; 73
 BEQ LOADPIEGES0
LOADPIEGES00 RTS
LOADPIEGES0 CMP CURRENTPIEGES
 BEQ LOADPIEGES00 ; DEJA EN MEMOIRE
LOADPIEGES2 STA CURRENTPIEGES
LOADPIEGES1 JSL $0A0A0A ; CHARGE L'IMAGE
 PHK
 PLB
 LDA CURRENTPIEGES
 CMP #$0011 ; 17
 BEQ LOADPIEGES4
 CMP #$0018 ; 24
 BEQ LOADPIEGES4
 CMP #$000F ; 15
 BEQ LOADPIEGES3
 CMP #$001A ; 26
 BEQ LOADPIEGES3
 CMP #$0037 ; 55
 BEQ LOADPIEGES3
 CMP #$003D ; 61 = 15
 BEQ LOADPIEGES3
 CMP #$0040 ; 64
 BEQ LOADPIEGES3
 CMP #$0042 ; 66 = 17
 BEQ LOADPIEGES4
LOADPIEGES5 LDX #$2080 ; LEVEL 21/62/73 : GUILLOTINE
LOADPIEGES50 LDAL $0ECBA0,X
LOADPIEGES51 STAL $088000,X
 DEX
 DEX
 BPL LOADPIEGES50
 BRA LOADPIEGES44
LOADPIEGES3 LDX #$351E ; LEVEL 15/26/55/64 : POTENCE
LOADPIEGES30 LDAL $0E8000,X
LOADPIEGES31 STAL $088000,X
 DEX
 DEX
 BPL LOADPIEGES30
 LDX #$351E ; CREATION DU MASQUE
 LDA #$0000
LOADPIEGES32 STAL $098000,X
 DEX
 DEX
 BPL LOADPIEGES32
 RTS
LOADPIEGES4 LDX #$2C5E ; LEVEL 17/24 : ECRASE
LOADPIEGES40 LDAL $0EB520,X
LOADPIEGES41 STAL $088000,X
 DEX
 DEX
 BPL LOADPIEGES40
LOADPIEGES44 LDY #$0000 ; CREATION DU MASQUE
 LDA #$0000
 CLC
 XCE
 SEP #$30
 CLC  ; A:8 BIT, X/Y:16 BIT
 XCE
 REP #$10
 LDX #$2C5F ; 1 LIGNE
LOADPIEGES42 LDAL $088000,X ; SPRITE
 TAY
 LDA MASKTABLE,Y
LOADPIEGES43 STAL $098000,X ; MASQUE
 DEX
 BPL LOADPIEGES42
 CLC
 XCE
 REP #$30 ; 16 BIT
 RTS

CURRENTPIEGES HEX 0000 ; 0:RIEN, 15:PIEGE 15, 17:PIEGE 17

************************  ROUTINES DE MUSIQUES  **************************

LOADMUSIC CMP MUSICNUMBER ; CHARGE LA MUSIQUE
 BEQ LOADMUSIC2 ; DEJA EN MEMOIRE
 LDY MUSICFLAG
 CPY #$0001
 BEQ LOADMUSIC2
 STA MUSICNUMBER
LOADMUSIC1 JSL $19A0A0
 phk
 plb
LOADMUSIC2 RTS

PLAYMUSIC LDA MUSICONOFF ; JOUE LA MUSIC
 BNE PLAYMUSIC2
 LDA MUSICFLAG
 BNE PLAYMUSIC2
PLAYMUSIC1 JSL $19A0A0
 phk
 plb
PLAYMUSIC2 RTS

STOPMUSIC LDA MUSICFLAG ; STOP LA MUSIC
 BNE STOPMUSIC2
STOPMUSIC1 JSL $19A0A0
 phk
 plb
STOPMUSIC2 RTS

MUSICNUMBER HEX FFFF ; NUMERO DE LA ZIC EN MEMOIRE
MUSICFLAG HEX 0000 ; 1:PAS DE ZIC / 0:ZIC OK

************  ROUTINE DE SONS  **************

PLAYSOUND LDY SOUNDONOFF ; JOUE LE SON (1-F)
 CPY #$0000
 BNE PLAYSOUND2
 LDY FLGSON
 CPY #$0001
 BEQ PLAYSOUND2 ; PAS DE SON
 AND #$000F
PLAYSOUND1 JSL $0A0A0A
 phk
 plb
PLAYSOUND2 RTS

************  INITIALISE TOUTES LES TABLES POUR 1 NIVEAU  **************

INITABLE LDA NUMEROLEVEL ; REMPLIT TOUS
 ASL
 TAY

 LDA CODELISTDIX,Y ; INFOS INTRO LEVEL
 CLC
INITABLE10 ADC #$A0A0 ; ADRESSE TABLE
 STA INITABLE11+1
 LDX #$0008
INITABLE11 LDAL $19A0A0,X ; CODE GS/OS
 STA LEVELINFOS,X
 DEX
 DEX
 BPL INITABLE11

 TYX
INITABLE20 LDAL $19A0A0,X ; INTRO TEXT LEVEL
 STA INITABLE21+1
 LDX #$003A
INITABLE21 LDAL $19A0A0,X ; CODE GS/OS
 STA LEVELTEXTS,X
 DEX
 DEX
 BPL INITABLE21

 TYX
INITABLE30 LDAL $19A0A0,X ; JEU SLIDE
 STA JEUSLIDE

INITABLE41 LDAL $19A0A0 ; INUTILISE (PETIT LEVEL BAS)

 LDA CODELISTDIX,Y ; VALEUR BARRE ICONES
 ASL
 CLC
INITABLE50 ADC #$A0A0 ; ADRESSE TABLE
 STA INITABLE51+1
 LDX #$0012
INITABLE51 LDAL $19A0A0,X
 STA JEUVALEUR,X
 DEX
 DEX
 BPL INITABLE51

 TYX
INITABLE60 LDAL $19A0A0,X ; FIXETAB
 STA INITABLE61+1
 LDX #$0054 ;
INITABLE61 LDAL $19A0A0,X
 STA FIXETAB,X
 DEX
 DEX
 BPL INITABLE61

 TYX
INITABLE70 LDAL $19A0A0,X ; ANIMTAB
 STA INITABLE71+1
 LDX #$0528 ; 30 OBJ MAX
INITABLE71 LDAL $19A0A0,X
 STA ANIMTAB,X
 DEX
 DEX
 BPL INITABLE71

 TYX
INITABLE80 LDAL $19A0A0,X ; ANIMDECTAB
 STA INITABLE81+1
 LDX #$03C0 ; 30 ZONES MAX
INITABLE81 LDAL $19A0A0,X
 STA ANIMDECTAB,X
 DEX
 DEX
 BPL INITABLE81

 TYX
INITABLE90 LDAL $19A0A0,X ; SORTIE X0
 STA SORTIEX0
INITABLE91 LDAL $19A0A0,X ; X1
 STA SORTIEX1
INITABLE92 LDAL $19A0A0,X ; Y
 STA SORTIEY

 LDA INITABLEA0+1
 STA INITABLEA1+1
 TYA
 ASL
 TAX
INITABLEA0 LDAL $19A0A0,X ; INTROTAB X
 STA INTROTAB
 INX
 INX
INITABLEA1 LDAL $19A0A0,X ; Y
 STA INTROTAB+2

 TYX
INITABLEB0 LDAL $19A0A0,X ; LAVETAB
 STA INITABLEB1+1
 LDX #$0078
INITABLEB1 LDAL $19A0A0,X
 STA LAVETAB,X
 DEX
 DEX
 BPL INITABLEB1

 TYX
INITABLEC0 LDAL $19A0A0,X ; DECORZONETAB
 STA INITABLEC1+1
 LDX #$01E0 ; 480
INITABLEC1 LDAL $19A0A0,X
 STA DECORZONETAB,X
 DEX
 DEX
 BPL INITABLEC1
 RTS

*****************  MISE EN PLACE DES NUMERO DE BANCS  **************

INITBANC LDX #$0018 ; RECOPIE LA TABLE
INITBANC0 LDA $0100,X
 STA BANC04,X
 DEX
 DEX
 BPL INITBANC0

 LDA #BANC04 ; INIT
 STA INITBANC2+1
 LDX #$0000
INITBANC1 LDY BANCTAB,X
 BEQ INITBANC3 ; FIN
 LDA\ $0000,Y
 AND #$00FF
INITBANC2 ORA BANC04 ; 0400
 STA\ $0000,Y
 INX
 INX
 BRA INITBANC1
INITBANC3 INX  ; BANC SUIVANT
 INX
 INC INITBANC2+1
 INC INITBANC2+1
 LDA BANCTAB,X
 BNE INITBANC1

 LDX #$0000
INITADRESSE LDY ADRESSETAB,X ; ADRESSE DES ROUTINES/TABLES
 LDA $011A,X
 BEQ INITADRESSEFIN
 STA\ $0000,Y
 INX
 INX
 BNE INITADRESSE

INITADRESSEFIN lda BANC05+1
 and #$00ff
 xba
 pha
 lda BANC05+1
 and #$ff
 ora 1,s
 sta 1,s
 pla
 sta creeBANC+1 ; recopie 05->01

 lda BANC0A+1
 and #$ff
 xba
 pha
 lda BANC0A+1
 and #$ff
 ora 1,s
 sta 1,s
 pla
 sta creeBK0A+1 ; recopie 0A->05

 lda BANC0B+1
 and #$ff
 xba
 pha
 lda BANC0B+1
 and #$ff
 ora 1,s
 sta 1,s
 pla
 sta creeBK0B+1 ; recopie 0B->05

 ldx #0
]lp lda BANC05
 sta creeBK0A+13,x
 sta creeBK0B+13,x
 txa
 clc
 adc #7
 tax
 cpx #7*80
 bne ]lp

 LDA\ $0002  ; INIT NEVERZIC
 BNE INITNEVER1
 LDA #$0000
 BRA INITNEVER2
INITNEVER1 LDA #$0001
INITNEVER2 STA MUSICFLAG
 STA NEVERMUSIC
 LDA\ $0004  ; NEVERSONS
 BNE INITNEVER3
 LDA #$0000
 BRA INITNEVER4
INITNEVER3 LDA #$0001
INITNEVER4 STA FLGSON
 STA NEVERSOUND
 RTS

*---

ADRESSETAB DA LOADLVL1+1,LOADLITTLE1+1,LOADLAVE1+1,LOADPIEGES1+1,COPYSCREEN1+1
 DA LOADMUSIC1+1,PLAYMUSIC1+1,STOPMUSIC1+1
 DA INITABLE10+1,INITABLE20+1,INITABLE30+1,INITABLE41+1,INITABLE50+1
 DA INITABLE60+1,INITABLE70+1,INITABLE80+1,INITABLE90+1,INITABLE91+1
 DA INITABLE92+1,INITABLEA0+1,INITABLEB0+1,INITABLEC0+1
 DA PLAYSOUND1+1
 HEX 0000

BANCTAB DA ECRMAI2+2,MAPPAGE1+2,AFFZONE2+2,AFFTOURN2+2,AFFTOURN4+2,AFFICHLET2+2
 DA AFFICHEYES11+2,AFFICHEYES12+2,AFFICHEYES13+2,AFFICHEYES14+2
 HEX 0000 ; 04
 DA INIT0501+2,ECRPASSE1+2,INIT0502+2,ECRDEBUT0+2,INIT0503+2
 DA INIT0504+2,INIT0505+2,INIT0506+2,INIT0507+2,ECRJEU0+2,INIT0508+2
 DA INIT0509+2,INIT0510+2,INIT0511+2,ECRJEU4+2,INIT0512+2
 DA NOMETAT3+2,CLEANSLIDE1+2,INIT0514+2
 DA AFFICHSLIDE1+2,INIT0515+2,CLEANICONE2+2,INIT0516+2,CLEANICONE3+2
 DA INIT0517+2,INIT0518+2,INIT0519+2,INIT0520+2,INIT0521+2,AFFLVL3+2
 DA IN00+2,IN000+2,IN0000+2,IN3+2,IN5+2,IN7+2,DOWN00+2,DOWN3+2,DOWN5+2,DOWN7+2
 DA AFFICHLETBRUT3+2,AFFICHLETBRUT5+2,AFFICHLETMASQ3+2,AFFICHLETMASQ4+2
 DA AFFICHLETMASQ7+2,AFFICHLETMASQ8+2,AFFICHSOUSFIX6+2,AFFICHSOUSFIX8+2
 DA AFFICHSOUSFIX9+2,AFFICHSOUSFIXA+2,AFFICHSOUS6+2,AFFICHSOUS8+2
 DA AFFICHTRANS1+2,AFFICHTRANS7+2,CREELAVESOUS6+2,CREELAVESOUS8+2
 DA CREELAVESUR7+2,CLEANSCRCPT23+2,CLEANSMALL3+2,CREUSESMALL5+2,CREUSESMALL7+2,EXPLOSESMALL6+2,EXPLOSESMALL60+2
 DA EXPLOSESMALL9+2,EXPLOSESMALL90+2,METSMALL4+2,METSMALL6+2,INIT0523+2,INIT0524+2,INIT0525+2
 DA INIT0526+2,INIT0527+2,INIT0528+2,INIT0529+2,INIT0530+2,INIT0531+2,INIT0532+2
 DA INIT0533+2,INIT0534+2,INIT0535+2,INIT0536+2,INIT0537+2,INIT0538+2,INIT0539+2
 DA INIT0540+2,CREUSEXPLOSCM3+2,CREUSEXPLOSCM4+2,CREUSEDIAGSC45+2,INIT0541+2,INIT0522+1
 DA CREELVLBAS34+2,ECREASTER1+2,ECREASTER02+2,ECREASTER03+2,ECREASTER04+2,EASTERCOPY4+2
 DA ECREASTER13+2,ECREASTER22+2,ECREASTER23+2,ECREASTER24+2,ECREASTER32+2,ECREASTER33+2
 DA ECREASTER34+2,ECREASTER42+2,ECREASTER43+2,ECREASTER44+2,ECREASTER52+2,ECREASTER53+2
 DA ECREASTER54+2
 HEX 0000 ; 05
 DA AFFLVL2+2,CREELAVE11+2,CREELAVESOUS7+2,CREELAVESOUS9+2,CREELAVESUR6+2,CREELAVESUR8+2
 DA CREELAVESUR9+2
 HEX 0000 ; 06
 DA AFFICHSOUSFIX7+2,AFFICHSOUS7+2,CREELAVE10+2,AFFICHTRANS2+2,AFFICHTRANS6+2
 HEX 0000 ; 07
 DA AFFICHLEM6+2,AFFICHLEM106+2,LOADPIEGES31+2,LOADPIEGES41+2,LOADPIEGES42+2,LOADPIEGES51+2
 HEX 0000 ; 08
 DA AFFICHLEM5+2,AFFICHLEM105+2,LOADPIEGES32+2,LOADPIEGES43+2
 HEX 0000 ; 09
 DA LINEARISE100+2,LINEARISE300+2,LINEARISE500+2
 DA LINEARISE700+2,LINEARISE900+2,LOOKDECORHAU1+2,LOOKDECORHAU3+2
 DA METBRIQUE30+2,METBRIQUE31+2,METBRIQUE32+2,METBRIQUE33+2
 DA METBRIQUE40+2,METBRIQUE41+2,METBRIQUE42+2,METBRIQUE43+2,METBRIQUE50+2
 DA METBRIQUE51+2,METBRIQUE52+2,METBRIQUE53+2,METBRIQUE54+2,METBRIQUE55+2
 DA CREUSEXPLODE3+2,CREUSEXPLODE4+2,CREUSEDIAGDEC3+2,CREUSEDIAGDEC4+2
 DA CREELVLBAS+1
 HEX 0000 ; 0A
 DA LINEARISE200+2,LINEARISE400+2,LINEARISE600+2
 DA LINEARISE800+2,LINEARISEA00+2,LOOKDECORBAS1+2,LOOKDECORBAS3+2
 DA CREELVLBAS1+1
 HEX 0000 ; 0B
 DA LINEARISE10+2,LINEARISE20+2,LINEARISE30+2,LINEARISE40+2
 HEX 0000 ; 0C
 DA LINEARISE50+2,LINEARISE60+2,LINEARISE70+2,LINEARISE80+2
 HEX 0000 ; 0D
 DA LINEARISE90+2,LINEARISEA0+2,LOADPIEGES30+2,LOADPIEGES40+2,LOADPIEGES50+2
 HEX 0000 ; 0E
 DA BANCTEST
 HEX 0000 ; 03
 DA INITABLE11+2,INITABLE20+2,INITABLE21+2,INITABLE30+2,INITABLE41+2
 DA INITABLE51+2,INITABLE60+2,INITABLE61+2,INITABLE70+2,INITABLE71+2
 DA INITABLE80+2,INITABLE81+2,INITABLE90+2,INITABLE91+2,INITABLE92+2
 DA INITABLEA0+2,INITABLEA1+2,INITABLEB0+2,INITABLEB1+2,INITABLEC0+2
 DA INITABLEC1+2,LOADLVL1+2,LOADLITTLE1+2,LOADLAVE1+2,LOADPIEGES1+2
 DA COPYSCREEN1+2,LOADMUSIC1+2,PLAYMUSIC1+2,STOPMUSIC1+2,PLAYSOUND1+2
 HEX 0000 ; BANC GSOS / TABLES
 HEX 0000 ; FIN

BANC04 HEX 0004 ; ECRAN MAIN + SPRITES TOURNEURS
BANC05 HEX 0005 ; ECRAN CONSTRUCTION + LEVELS
BANC06 HEX 0006 ; PETIT LEVEL + LAVE DYNAMIQUE
BANC07 HEX 0007 ; PORTES SPRITES + LAVES SPRITES
BANC08 HEX 0008 ; LEM1 + LEM3
BANC09 HEX 0009 ; LEM2 + LEM4
BANC0A HEX 000A ; LEVEL I
BANC0B HEX 000B ; LEVEL II
BANC0C HEX 000C ; S1 + S2
BANC0D HEX 000D ; S3 + S4
BANC0E HEX 000E ; S5
BANC03 HEX 0003 ; CE BANC
BANCGSOS HEX 0019 ; CODE GSOS + TABLES

BANCTEST HEX 0000 ; NE SERT A RIEN, MAIS INDISPENSABLE :-)
******************************************************************************
