antoine-source/thetinies/TCK.Play.s
Antoine Vignau 548200a90a Adding The Tines & TCK
Antoine's The Tinies & Oliver's TCK source code
2022-10-29 21:22:33 +02:00

2394 lines
51 KiB
ArmAsm

*--------------------------------------*
* *
* Tinies Contruction Kit: Test level *
* *
* (c) 01/1995 by Brutal Deluxe *
* *
*--------------------------------------*
scrMINU = $9818
scrSECO = $9824
scrLEVEL = $9844
scrLIFE = $9868
scrJOKER = $988c
*--------------------------------------
tiniesPLAY lda #-1
sta fgCURS
sei
stz fgBUG
PushLong #intTIME
_SetHeartBeat
PushLong #intANIM
_SetHeartBeat
cli
stz life
stz joker
stz curX
stz curY
stz fgLOST
stz arrTINYcur
stz doMAIN2+1
stz intANIM4+1
lda ptrBACK+1
sta intANIM17+2
sta hideCURS1+2
sta hideCURS3+2
sta hideCURS4+2
sta esprit8+2
clc
adc #$000e
sta hideCURS2+2
jsr decodeALL
lda anNUMBER
bne tiniesPLAY1
jmp lostLEVEL1
tiniesPLAY1 lda ptrBACK+1
ldy #0
jsr fadeIN
jsr affALL
lda #1
sta fgBUG
*-------------------------------------- Gere le curseur
gereCURS lda fgLOST
bne gereCURS0
ldx curX
ldy curY
jsr showCURS ; Show curseur
jsr gereKEY ; gere les touches
bcs gereCURS ; aucun deplacement
cmp #-1 ; 'esc' hit
bne gereCURS1
gereCURS0 jmp lostLEVEL
gereCURS1 pha ; Efface le curseur
ldx curX
ldy curY
jsr hideCURS
pla
bne gereCURS2
ldx curX
ldy curY
jsr calcWHAT
lda plateau3,x
cmp #4
bcs gereCURS
stz fgCURS
brl doTINIES ; On gere les Tinies
gereCURS2 cmp #1 ; Left
bne gereCURS4
lda curX
beq gereCURS3
dec
sta curX
gereCURS3 brl gereCURS
gereCURS4 cmp #2 ; Right
bne gereCURS6
lda curX
cmp #12
beq gereCURS5
inc
sta curX
gereCURS5 brl gereCURS
gereCURS6 cmp #3 ; Up
bne gereCURS8
lda curY
beq gereCURS7
dec
sta curY
gereCURS7 brl gereCURS
gereCURS8 cmp #4 ; Down
bne gereCURS9
lda curY
cmp #7
beq gereCURS9
inc
sta curY
gereCURS9 brl gereCURS
*-------------------------------------- Gere les Tinies
doTINIES sta espCOL ; couleur du Tiny
ldx curX
ldy curY
jsr calcWHAT
stx curXY
lda curX
sta oldX
lda curY
sta oldY
lda curXY
sta oldXY
ldx anNUMBER ; Met le Tiny inactif
]lp lda anOBJET,x
cmp espCOL
bne doTINIES1
lda anCOORD,x
cmp curXY
beq doTINIES2
doTINIES1 dex
dex
bpl ]lp
ldx anNUMBER
doTINIES2 stx myNUMBER ; Sauve X pour plus tard
stz anANIM,x
stz anACTIF,x
stz compteur2 ; Affiche le Tiny qui attend de bouger
lda #anBougDr
ldx curXY
ldy ptrBOUGE+1
jsr esprit
*--------------------------------------
doMAIN lda fgLOST
beq doMAIN1
jmp lostLEVEL
doMAIN1 lda arrTINYcur ; etait-ce un tiny en cours?
beq doMAIN2
ldx arrNUMBER
lda oldXY
sta anCOORD,x
lda #-1
sta anACTIF,x
lda arrCOL
sta espCOL
lda arrXY
sta curXY
sta oldXY
lda arrX
sta curX
sta oldX
lda arrY
sta curY
sta oldY
stz arrTINYcur
doMAIN2 ldx #0 ; est-ce que l'on a un tiny sur fleche?
lda plateau4,x
inx
inx
stx doMAIN2+1
cpx #208
bne doMAIN3
stz doMAIN2+1
brl doMAIN6
doMAIN3 cmp #-1
beq doMAIN2
ldy espCOL
sty arrCOL
sta espCOL
dex
dex
lda #-1
sta plateau4,x
lda curXY
sta arrXY
lda curX
sta arrX
lda curY
sta arrY
stx curXY
lda tblXY,x
pha
and #$ff00
xba
sta curX
pla
and #$00ff
sta curY
lda #-1
sta arrTINYcur
txy
ldx anNUMBER ; Met le Tiny inactif
]lp lda anOBJET,x
cmp espCOL
bne doMAIN4
lda anCOORD,x
cmp curXY
beq doMAIN5
doMAIN4 dex
dex
bpl ]lp
ldx anNUMBER
doMAIN5 stx arrNUMBER ; Sauve X pour plus tard
stz anACTIF,x
lda plateau2,y
sec
sbc #24
asl
tax
lda spyDIR2,x
bra doMAIN9
*---
doMAIN6 jsr gereKEY
bcc doMAIN7
brl doMAIN
doMAIN7 cmp #-1
bne doMAIN8
jmp lostLEVEL
doMAIN8 cmp #0 ; Deselectionne
bne doMAIN9
lda #-1
sta fgCURS
brl itsEND
doMAIN9 sta tinyDIR
stz tinyMOVE ; a pas bouge
stz tinyROULE ; roule pas
doMAIN10 ldal $e0bfff
bpl doMAIN12
xba
and #$ff
cmp #$9b
bne doMAIN12
jmp lostLEVEL
doMAIN12 lda fgLOST
beq doMAIN13
jmp lostLEVEL
doMAIN13 lda curX
sta oldX
lda curY
sta oldY
lda curXY
sta oldXY
ldx curXY ; Sommes-nous sur une fleche ?
lda plateau2,x ; empeche le joueur de partir
cmp #24 ; de la fleche
bcc doMAIN14
cmp #28
bcs doMAIN14
sec
sbc #24
asl
tax
lda spyDIR2,x
sta tinyDIR
doMAIN14 jsr calcDIR ; regarde la nouvelle position
cmp #-1
bne doMOVE
jsr doBOOM ; boom...
brl doMAIN
*--------------------------------------
doMOVE ldx curX ; Regarde ce qu'il y a sur la nouvelle
ldy curY ; position
jsr calcWHAT
stx curXY
lda plateau1,x ; is there a sol
cmp #5
bcc doMOVE2
doMOVE1 lda oldX
sta curX
lda oldY
sta curY
lda oldXY
sta curXY
jsr doBOOM
brl doMAIN
*---
doMOVE2 lda plateau3,x ; is there a tiny
cmp #-1
beq doMOVE3
ldx oldXY ; Is Tiny on Arrow ?
lda plateau2,x
cmp #24
bcc doMOVE1
cmp #28
bcs doMOVE1
lda espCOL
sta plateau4,x
lda oldX
sta curX
lda oldY
sta curY
lda oldXY
sta curXY
brl doMAIN
doMOVE3 lda plateau2,x ; animation
sta tinyDEC
cmp #-1
bne move1
brl moveSHOW
*---
move1 cmp #4 ; tiny
bcs move2
jsr doBOOM
brl doMAIN
move2 cmp #8 ; sleeper
bcs move3
jsr doSLEEP
brl moveSHOW
move3 cmp #12 ; teleporteur
bcs move5
jsr doTELE
bcc move4
brl moveSHOW2
move4 brl moveSHOW3
move5 cmp #16 ; bombe
bcs move6
jsr doBOMB
brl moveSHOW2
move6 cmp #20 ; porte
bcs move8
jsr doDOOR
bcc move7
brl doMOVE1
move7 brl moveSHOW
move8 cmp #24 ; interrupteur
bcs move9
jsr doINTE
brl moveSHOW
move9 cmp #28 ; fleche
bcs move10
jsr doFLEC
brl moveSHOW2
move10 cmp #28 ; bumper
bne move11
jsr doBUMP
brl moveSHOW
move11 cmp #29 ; bonus temps
bne move12
jsr doTIM
brl moveSHOW
move12 cmp #30 ; life
bne move13
jsr doLIF
brl moveSHOW
move13 cmp #31 ; joker
bne move14
jsr doJOK
brl moveSHOW
move14 cmp #32 ; animation fixe
bne moveSHOW
jsr doBOOM
brl doMAIN
*---
moveSHOW jsr doSHOW
moveSHOW2 ldx oldXY
lda #-1
sta plateau3,x
moveSHOW3 ldx curXY
lda espCOL
sta plateau3,x
lda #1
sta tinyMOVE
brl doMAIN10
*-------------------------------------- Teste la fin de niveau
itsEND ldx anNUMBER ; Regarde si sous le Tiny
]lp lda anCOORD,x ; on n'aurait pas un sleeper
cmp oldXY
bne itsEND1
lda anOBJET,x
sec
sbc espCOL
cmp #4
beq itsEND3
itsEND1 dex
dex
bpl ]lp
itsEND2 ldx myNUMBER ; No sleeper under
lda #-1
sta anACTIF,x
lda oldXY
sta anCOORD,x
brl gereCURS
itsEND3 lda anACTIF2,x ; Sleeper was active ?
beq itsEND2
ldx myNUMBER ; Tiny now sleeps
lda #$2222
sta anACTIF,x
lda oldXY
sta anCOORD,x
ldx anNUMBER
dex ; Regarde, s'ils dorment tous
dex
]lp lda anOBJET,x
cmp #4
bcs itsEND4
lda anACTIF,x
cmp #$2222
bne itsEND5
itsEND4 dex
dex
bpl ]lp
jmp lostLEVEL
itsEND5 brl gereCURS
*---
lostLEVEL lda #2
jsr nowWAIT
lostLEVEL1 sei
stz fgBUG
PushLong #intANIM
_DelHeartBeat
PushLong #intTIME
_DelHeartBeat
cli
jmp LP4
*-------------------------------------- Affiche le Tiny
doSHOW stz compteur2
lda tinyDIR
dec
asl
clc
adc tinyROULE
tax
lda chseBOUG,x
ldy ptrBACK+1
jsr moveIT
ldx anNUMBER ; Regarde si sous le Tiny (pos. precedente)
]lp lda anCOORD,x ; on n'aurait pas un sleeper
cmp oldXY
bne doSHOW1
lda anOBJET,x
cmp #4
bcc doSHOW1
cmp #8
bcc doSHOW2
doSHOW1 dex
dex
bpl ]lp
rts
doSHOW2 lda anACTIF2,x
sta anACTIF,x
stz anANIM,x
rts
*--- Boom
doBOOM lda tinyROULE
bne doBOOM1
lda tinyMOVE
beq doBOOM1
rts
doBOOM1 lda #99
sta compteur2
lda tinyDIR
dec
asl
tax
lda chseBOOM,x
ldx curXY
ldy ptrTINY1+1
jsr esprit
rts
*--- Sleep
doSLEEP ldx anNUMBER ; Regarde si sous le Tiny
]lp lda anCOORD,x ; on n'aurait pas un sleeper
cmp curXY
bne doSLEEP1
lda anOBJET,x
cmp #4
bcc doSLEEP1
cmp #8
bcc doSLEEP2
doSLEEP1 dex
dex
bpl ]lp
rts
doSLEEP2 lda anACTIF,x
sta anACTIF2,x
stz anACTIF,x
stz anANIM,x
rts
*--- Tele
doTELE jsr doSHOW
lda tinyDEC
sec
sbc espCOL
cmp #8
beq doTELE1
sec
rts
doTELE1 ldx oldXY
lda #-1
sta plateau3,x
ldx #206
]lp lda plateau2,x
cmp tinyDEC
bne doTELE2
cpx curXY
bne doTELE3
doTELE2 dex
dex
bpl ]lp
rts
doTELE3 lda plateau3,x
cmp #-1
beq doTELE4
rts
doTELE4 lda curXY
sta oldXY
stx curXY
lda #99
sta compteur2
lda tinyDIR
dec
asl
tax
lda chseTELE,x
ldx oldXY
ldy ptrGADGET2+1
jsr esprit
ldx curXY
stx oldXY
lda tblXY,x
pha
and #$ff00
xba
sta curX
sta oldX
pla
and #$00ff
sta curY
sta oldY
lda tinyDIR
dec
asl
tax
lda chseTELE2,x
ldx curXY
ldy ptrGADGET2+1
jsr esprit
jsr doSHOW
lda #8
sta tinyROULE
clc
rts
*--- Bomb
doBOMB jsr doSHOW
lda tinyDEC
sec
sbc espCOL
cmp #12
beq doBOMB1
rts
doBOMB1 lda #99
sta compteur2
lda #anEXPL1
ldx curXY
ldy ptrTINY1+1
jsr esprit
ldx curXY
lda plateau1,x
jsr sprite
lda #anEXPL2
ldx curXY
ldy ptrTINY1+1
jsr esprit
lda joker
bne doBOMB2
jmp lostLEVEL
doBOMB2 dec joker
jsr affALL
lda #anJOKER
ldx curXY
ldy ptrGADGET3+1
jsr esprit
stz tinyROULE
ldx curXY
lda #-1
sta plateau2,x
rts
*--- Door
doDOOR lda tinyDEC
sec
sbc espCOL
cmp #16
beq doDOOR1
sec
rts
doDOOR1 lda #99
sta compteur2
lda #anDOOR
ldx curXY
ldy ptrGADGET3+1
jsr esprit
lda espCOL
asl
tax
lda anOPEN,x
clc
adc ptrGADGET3
ldx curXY
jsr sprite10
ldx curXY
lda #-1
sta plateau2,x
clc
rts
*--- Inte
doINTE lda tinyDEC
sec
sbc espCOL
cmp #20
beq doINTE1
rts
doINTE1 ldx anNUMBER
]lp lda anOBJET,x
sec
sbc espCOL
cmp #4
bne doINTE2
lda #-1
sta anACTIF,x
sta anACTIF2,x
stz anANIM,x
doINTE2 dex
dex
bpl ]lp
lda espCOL
asl
tax
lda anINTE,x
clc
adc ptrGADGET3
ldx curXY
jsr sprite10
rts
*--- Arrow
doFLEC jsr doSHOW
doFLEC1 ldx curXY
lda plateau2,x
sec
sbc #24
asl
tax
lda spyDIR2,x
sta tinyDIR
rts
*--- Bump
doBUMP lda #99
sta compteur2
stz esprit4+1
lda tinyDIR
dec
asl
tax
lda chseBUMP,x
ldx curXY
ldy ptrTINY1+1
jsr esprit
lda tinyDIR
dec
asl
tax
lda chseBOOM,x
ldx oldXY
ldy ptrTINY1+1
jsr esprit
lda #10
sta esprit4+1
lda #1
sta tinyMOVE
lda #8
sta tinyROULE
lda tinyDIR ; change la direction du Tiny
dec
asl
tax
lda spyDIR,x
sta tinyDIR
lda oldX
sta curX
lda oldY
sta curY
lda oldXY
sta curXY
rts
*--- Time, Life and Joker
doTIM inc minutes
bra doCLR
doLIF inc life
bra doCLR
doJOK inc joker
doCLR ldx curXY
lda plateau1,x
jsr sprite
ldx curXY
lda #-1
sta plateau2,x
jsr affALL
rts
*-------------------------------------- Deplacement
calcDIR lda tinyDIR ; left
cmp #1
bne calcDIR2
lda curX
bne calcDIR1
lda #-1
rts
calcDIR1 dec curX
rts
calcDIR2 cmp #2 ; right
bne calcDIR4
lda curX
cmp #12
bne calcDIR3
lda #-1
rts
calcDIR3 inc curX
rts
calcDIR4 cmp #3 ; up
bne calcDIR6
lda curY
bne calcDIR5
lda #-1
rts
calcDIR5 dec curY
rts
calcDIR6 lda curY ; down
cmp #7
bne calcDIR7
lda #-1
rts
calcDIR7 inc curY
rts
*---
calcWHAT txa ; calcule adresse plateau
asl
asl
asl
asl
pha
tya
asl
clc
adc 1,s
tax
pla
rts
*-------------------------------------- Clavier
gereKEY ldal $e0bfff ; lit le clavier
bpl gereKEY7
stal $e0c010
xba
and #$00ff
cmp #$009b
bne gereKEY1
lda #-1
clc
rts
gereKEY1 cmp keyPREF ; Select ??
bne gereKEY3
lda #0
clc
rts
gereKEY3 cmp keyPREF+2 ; left ??
bne gereKEY4
lda #1
clc
rts
gereKEY4 cmp keyPREF+4 ; right ??
bne gereKEY5
lda #2
clc
rts
gereKEY5 cmp keyPREF+6 ; up ??
bne gereKEY6
lda #3
clc
rts
gereKEY6 cmp keyPREF+8 ; down ??
bne gereKEY7
lda #4
clc
rts
gereKEY7 sec
rts
*-------------------------------------- Decodage
decodeALL jsr clrECRAN
ldx #0
lda #-1
]lp sta plateau2,x
sta plateau3,x
sta plateau4,x
inx
inx
cpx #208
bne ]lp
lda #plateau5
sta Debut
lda #^plateau5
sta Debut+2
ldy #0
tyx
decodeALL1 phx
phy
lda [Debut],y
and #$00ff
sta plateau1,x
cmp #$00ff
beq decodeALL2
jsr sprite
decodeALL2 ply
iny
plx
inx
inx
cpx #208
bne decodeALL1
lda Debut
clc
adc #104
sta Debut
ldy #0
tyx
decodeALL3 phx
phy
lda [Debut],y
and #$00ff
cmp #$00ff
beq decodeALL5
cmp #0004
bcs decodeALL4
sta plateau3,x
lda #-1
sta plateau2,x
bra decodeALL5
decodeALL4 sta plateau2,x
cmp #32
bne decodeALL40
pha
lda #-1
sta plateau1,x
pla
decodeALL40 clc
adc #21
jsr sprite
decodeALL5 ply
iny
plx
inx
inx
cpx #208
bne decodeALL3
*---
ldx #208-2 ; Animation
lda #$5555
]lp sta anOBJET,x
sta anACTIF,x
sta anCOORD,x
sta anANIM,x
sta anACTIF2,x
dex
dex
bpl ]lp
ldy #0
tyx
]lp lda [Debut],y
and #$00ff
cmp #$00ff
beq decodeALL7
cmp #32
beq decodeALL6
cmp #8
bcs decodeALL7
decodeALL6 sta anOBJET,x
stz anANIM,x
lda #-1
sta anACTIF,x
sta anACTIF2,x
tya
asl
sta anCOORD,x
inx
inx
decodeALL7 iny
cpy #104
bne ]lp
stx anNUMBER
ldy #0
decodeALL8 lda [Debut],y
and #$00ff
cmp #0020
bcc decodeALL10
cmp #0024
bcs decodeALL10
sec
sbc #0016
ldx anNUMBER
]lp cmp anOBJET,x
bne decodeALL9
stz anACTIF,x
stz anACTIF2,x
decodeALL9 dex
dex
bpl ]lp
decodeALL10 iny
cpy #104
bne decodeALL8
rts
*-------------------------------------- Routines graphiques
showCURS txa
asl
tax
lda scrX,x
pha
tya
asl
tay
lda scrY,y
clc
adc 1,s
tax ; en X, adresse ecran
pla
lda fgCURS
cmp #-1
beq showCURS1
rts
showCURS1 lda cursL
stal $012002,x
stal $012e62,x
lda cursL+2
stal $012004,x
stal $012e64,x
lda cursL+4
stal $012006,x
stal $012e66,x
lda cursL+6
stal $012008,x
stal $012e68,x
lda cursL+8
stal $01200a,x
stal $012e6a,x
lda cursL+10
stal $01200c,x
stal $012e6c,x
ldy #0
]lp sep #$20
ldal $0120a2,x
and cursMSK1,y
ora cursCOL1,y
stal $0120a2,x
ldal $0120ad,x
and cursMSK2,y
ora cursCOL2,y
stal $0120ad,x
rep #$20
txa
clc
adc #$a0
tax
iny
cpy #22
bne ]lp
rts
*---
hideCURS txa
asl
tax
lda scrX,x
pha
tya
asl
tay
lda scrY,y
clc
adc 1,s
tax ; en X, adresse ecran
pla
phx
ldy #$0a
hideCURS1 ldal $110002,x
stal $012002,x
hideCURS2 ldal $110e62,x
stal $012e62,x
inx
inx
dey
dey
bpl hideCURS1
plx
ldy #0
]lp sep #$20
hideCURS3 ldal $1100a2,x
stal $0120a2,x
hideCURS4 ldal $1100ad,x
stal $0120ad,x
rep #$20
txa
clc
adc #$a0
tax
iny
cpy #22
bne ]lp
rts
*--- Effacement de l'ecran
clrECRAN lda ptrBACK
sta Arrivee
lda ptrBACK+2
sta Arrivee+2
ldy #0
tya
]lp sta [Arrivee],y
iny
iny
cpy #$7e00
bne ]lp
lda ptrNIV ; Met la palette
sta Debut
lda ptrNIV+2
sta Debut+2
ldy #$7e00
]lp lda [Debut],y
sta [Arrivee],y
iny
iny
bpl ]lp
rts
*--- Routine col/col
moveIT sta moveIT2+1
sty moveIT6+2 ; page 2
lda ptrBOUGE+1
sta moveIT5+2
ldx oldXY
cpx curXY
bne moveIT1
rts
moveIT1 lda scrCASE,x
clc
adc #$2
sta espECR
clc
adc #$2000
sta espSCR
moveIT2 lda $ffff ; Lit adresse sprite source
clc
adc ptrBOUGE
sta moveIT5+1
inc moveIT2+1
inc moveIT2+1
lda tinyDIR ; En fonction de la direction
dec
asl ; calcule les bonnes coordonnees
tax
lda tinyHOW,x
sta moveIT12+1
lda tinyCALC,x
pha
clc
adc espECR
sta espECR
clc
adc ptrBACK
sta moveIT6+1
pla
clc
adc espSCR
sta espSCR
sta moveIT8+1
lda espCOL ; couleur du Tinie
asl
tax
lda anDRAW,x
sta moveIT7+1
ldx #2
]lp wai
dex
PATCH bpl ]lp
lda #23
sta compteur3
moveIT3 sep #$20
moveIT4 ldx #0
moveIT5 ldal $110000,x ; data
tay
moveIT6 ldal $e12000,x
and tblMASK,y ; MASK
moveIT7 ora tblGRE,y ; pour couleur
moveIT8 stal $012000,x
inx
moveIT9 cpx #12
bne moveIT5
rep #$20
lda moveIT4+1
clc
adc #160
sta moveIT4+1
clc
adc #12
sta moveIT9+1
dec compteur3
lda compteur3
bpl moveIT3
stz moveIT4+1
lda #12
sta moveIT9+1
lda tinyDIR ; Maintenant efface
dec
pha
asl
tax
lda tinyCALC2,x
clc
adc espECR
tax
pla
cmp #2
bcs moveIT10
jsr clrLR
bra moveIT11
moveIT10 jsr clrUD
moveIT11 inc compteur2
lda compteur2
moveIT12 cmp #8
beq moveIT13
brl moveIT2
moveIT13 rts
*--- Efface les colonnes
clrLR txa
clc
adc ptrBACK
sta Second
lda ptrBACK+2
sta Second+2
txa
clc
adc #$2000
sta Third
lda #$0001
sta Third+2
ldy #0
]lp lda [Second],y
sta [Third],y
iny
lda [Second],y
sta [Third],y
dey
tya
clc
adc #160
tay
cpy #24*160
bne ]lp
rts
*--- Efface les lignes
clrUD txa
clc
adc ptrBACK
sta Second
lda ptrBACK+2
sta Second+2
txa
clc
adc #$2000
sta Third
lda #$0001
sta Third+2
ldx #3
brl sprite2
*--- Best routine pour afficher un sprite
esprit pha
lda scrCASE,x
sta espECR
pla
esprit1 sta esprit2+1 ; Adresse table d'animation
sty espADR+1
sty esprit7+2
esprit2 lda $ffff ; adresse source de la table d'animation
cmp #-1
bne esprit3
rts
esprit3 clc
adc espADR
sta esprit7+1
esprit4 ldx #9
]lp wai
dex
bpl ]lp
stz esprit6+1
lda #12
sta esprit11+1
lda espECR ; prend adresse ecran
clc
adc #2
adc ptrBACK
sta esprit8+1
lda espECR
clc
adc #$2002
sta esprit10+1
lda espCOL ; couleur du Tiny
asl
tax
lda anDRAW,x
sta esprit9+1
lda esprit2+1 ; next one
inc
inc
sta esprit2+1
lda #23
sta compteur3
esprit5 sep #$20
esprit6 ldx #0
esprit7 ldal $110000,x ; data
tay
esprit8 ldal $e12000,x
and tblMASK,y ; MASK
esprit9 ora tblGRE,y ; pour couleur
esprit10 stal $012000,x
inx
esprit11 cpx #12
bne esprit7
rep #$20
lda esprit6+1
clc
adc #160
sta esprit6+1
clc
adc #12
sta esprit11+1
dec compteur3
lda compteur3
bpl esprit5
dec compteur2
lda compteur2
bmi esprit12
brl esprit2
esprit12 rts
*--- Routine pour afficher un sprite
sprite10 sta Second
lda ptrGADGET3+2
sta Second+2
bra sprite1
*--- Routine pour afficher un sprite
sprite asl
tay
lda scrNIV,y
tay
clc
adc ptrNIV
sta Second
lda ptrNIV+2
sta Second+2
sprite1 lda scrCASE,x
clc
adc #$0002
clc
adc ptrBACK
sta Third
lda ptrBACK+2
sta Third+2
ldx #23
sprite2 ldy #0
]lp lda [Second],y
sta [Third],y
iny
iny
lda [Second],y
sta [Third],y
iny
iny
lda [Second],y
sta [Third],y
iny
iny
lda [Second],y
sta [Third],y
iny
iny
lda [Second],y
sta [Third],y
iny
iny
lda [Second],y
sta [Third],y
tya
clc
adc #160-10
tay
dex
bpl ]lp
rts
*-------------------------------------- Affichage d'un texte
printIT sta printIT1+1
stx Arrivee+2
sty Arrivee
printIT1 lda $ffff
and #$00ff
bne printIT2
rts
printIT2 pha
inc printIT1+1
ldy #99
]lp lda tblFNT8,y
and #$00ff
cmp 1,s
beq printIT3
dey
bpl ]lp
iny
printIT3 pla
tya
asl
tay
lda adrFNT8,y
clc
adc ptrFONTE
sta Debut
lda ptrFONTE+2
sta Debut+2
ldx #0007
ldy #0000
]lp lda [Debut],y
sta [Arrivee],y
iny
iny
lda [Debut],y
sta [Arrivee],y
tya
clc
adc #160-2
tay
dex
bpl ]lp
lda Arrivee
clc
adc #4
sta Arrivee
brl printIT1
*-------------------------------------- Affichage des donnees
putTIM ldx minutes
lda scdVAR,x
and #$00ff
pha
and #$00f0
asl
asl
asl
asl
ora #$b000
sta strMINU
pla
and #$000f
ora #$00b0
ora strMINU
xba
sta strMINU
ldx secondes
lda scdVAR,x
and #$00ff
pha
and #$00f0
asl
asl
asl
asl
ora #$b000
sta strSECO
pla
and #$000f
ora #$00b0
ora strSECO
xba
sta strSECO
rts
*---
putLVL ldx level
cpx #100
bne putLVL1
lda #"()"
bne putLVL2
putLVL1 lda scdVAR,x
and #$00ff
pha
and #$00f0
asl
asl
asl
asl
ora #$b000
sta strLEVEL
pla
and #$000f
ora #$00b0
ora strLEVEL
xba
putLVL2 sta strLEVEL
rts
*---
putLIFE ldx life
cpx #99
bcc putLIFE1
ldx #99
putLIFE1 lda scdVAR,x
and #$00ff
pha
and #$00f0
asl
asl
asl
asl
ora #$b000
sta strLIFE
pla
and #$000f
ora #$00b0
ora strLIFE
xba
sta strLIFE
rts
*---
putJOKER ldx joker
cpx #99
bcc putJOKER1
ldx #99
putJOKER1 lda scdVAR,x
and #$00ff
pha
and #$00f0
asl
asl
asl
asl
ora #$b000
sta strJOKER
pla
and #$000f
ora #$00b0
ora strJOKER
xba
sta strJOKER
rts
*-------------------------------------- Affichage de la barre
affALL jsr putTIM
jsr putLVL
jsr putLIFE
jsr putJOKER
lda ptrFONTE
clc
adc #$18
tay
ldx ptrFONTE+2
lda #strMINU
jsr printIT
lda ptrFONTE
clc
adc #$24
tay
ldx ptrFONTE+2
lda #strSECO
jsr printIT
lda ptrFONTE
clc
adc #$44
tay
ldx ptrFONTE+2
lda #strLEVEL
jsr printIT
lda ptrFONTE
clc
adc #$68
tay
ldx ptrFONTE+2
lda #strLIFE
jsr printIT
lda ptrFONTE
clc
adc #$8c
tay
ldx ptrFONTE+2
lda #strJOKER
jsr printIT
stz fgPRINT
lda ptrFONTE ; Affiche depuis fonte
ldy #$0198
jsr putBAR
rts
*---
putBAR ldx ptrFONTE+1
stx putBAR1+2
sta putBAR1+1
sty putBAR2+2
ldx #$04f4
putBAR1 ldal $012000,x
putBAR2 stal $012000,x
dex
dex
bpl putBAR1
rts
*-------------------------------------- Interruption temps
intTIME ds 4
dw 60
dw $a55a
phb
phk
plb
clc
xce
rep #$30
lda #60
sta intTIME+4
lda fgBUG
beq intTIME5
lda fgLOST
bne intTIME5
intTIME1 lda secondes
beq intTIME2
dec
sta secondes
bra intTIME4
intTIME2 lda #59
sta secondes
lda minutes
beq intTIME3
dec
sta minutes
bra intTIME4
intTIME3 lda #1
sta fgLOST
stz secondes
stz minutes
intTIME4 jsr putTIM
lda #strMINU
ldy #scrMINU
ldx #$0001
jsr printIT
lda #strSECO
ldy #scrSECO
ldx #$0001
jsr printIT
intTIME5 sep #$30
plb
clc
rtl
mx %00
*-------------------------------------- Interruption animation
intANIM ds 4
dw 1
dw $a55a
phb
phk
plb
clc
xce
rep #$30
lda #1
sta intANIM+4
lda fgBUG
bne intANIM4
brl intANIM21
intANIM4 lda #0 ; Numero de l'objet a animer
cmp anNUMBER
bne intANIM5
stz intANIM4+1
bra intANIM4
intANIM5 tax
inc
inc
sta intANIM4+1
stz intANIM8+1
lda anACTIF,x ; Regarde s'il est actif
cmp #-1
beq intANIM7
cmp #$2222
beq intANIM6
brl intANIM21
intANIM6 lda #$8000 ; sleep
sta intANIM8+1
intANIM7 stz intANIM16+1
lda anOBJET,x ; Recupere l'adresse source
intANIM8 ldy #$8000
bpl intANIM9
clc
adc #36
intANIM9 asl ; de l'image
tay
lda anCORRES,y
asl
asl
tay
lda ptrTCK1+1,y
sta intANIM16+2
lda anCOORD,x ; On a la coordonnee ecran
tay
lda scrCASE,y ; Adresse ecran source
clc
adc #$0002
pha
clc
adc ptrBACK
sta intANIM17+1
pla
clc
adc #$2000 ; et ecran destination
sta intANIM19+1
intANIM10 lda anOBJET,x ; Numero de l'objet
ldy intANIM8+1
bpl intANIM11
clc
adc #36
intANIM11 asl
tay
lda anDRAW,y ; table de correspondance
sta intANIM18+1
lda anTYPE,y ; Recherche la table des adresses
clc
adc anANIM,x
tay
hex b90000 ; en A, adresse ecran source
cmp #-1
bne intANIM12
stz anANIM,x
brl intANIM10
intANIM12 clc
adc intANIM16+1
sta intANIM16+1
inc anANIM,x
inc anANIM,x
lda anOBJET,x ; Regarde si tiny sur sleeper
cmp #4
bcc intANIM13
cmp #8
bcs intANIM13
lda anCOORD,x
tax
lda plateau3,x
cmp #-1
bne intANIM21
intANIM13 lda #23
sta compteur
*--- Debut routine d'affichage (lente)
intANIM14 sep #$20
intANIM15 ldx #0
intANIM16 ldal $110000,x ; data
tay
intANIM17 ldal $e10000,x ; ECRAN source
and tblMASK,y ; MASK
intANIM18 ora tblGRE,y ; data
intANIM19 stal $012000,x ; $01/2000
inx
intANIM20 cpx #12
bne intANIM16
rep #$20
lda intANIM15+1
clc
adc #160
sta intANIM15+1
clc
adc #12
sta intANIM20+1
dec compteur
lda compteur
bpl intANIM14
stz intANIM15+1
lda #12
sta intANIM20+1
lda intANIM4+1
dec
dec
tax
lda anOBJET,x
cmp #32
bne intANIM21
stz anANIM,x
intANIM21 sep #$30
plb
clc
rtl
mx %00
*-------------------------------------- Datas
compteur ds 2 ; pour affichage tiny (intANIM)
compteur2 ds 2 ; nombre de sprites a animer
compteur3 ds 2 ; pour affichage tiny (esprit)
fgKEY ds 2
fgLOST ds 2
fgPRINT ds 2
fgTEMP ds 2
fgCURS ds 2
fgLEVEL ds 2
fgBUG ds 2
oldBUG ds 2
spyDIR dw 2,1,4,3
spyDIR2 dw 2,1,3,4
keyPREF dw $00b0 ; select
dw $00b4 ; left
dw $00b6 ; right
dw $00b8 ; up
dw $00b2 ; down
minutes ds 2 ; Bar info
secondes ds 2
level ds 2
life ds 2
joker ds 2
strMINU asc " ",00
strSECO asc " ",00
strLEVEL asc " ",00
strLIFE asc " ",00
strJOKER asc " ",00
*--- Adresses caracteres
adrFNT8 dw $5780,$5784,$5788,$578c,$5790,$5794,$5798,$579c
dw $57a0,$57a4,$57a8,$57ac,$57b0,$57b4,$57b8,$57bc
dw $57c0,$57c4,$57c8,$57cc,$57d0,$57d4,$57d8,$57dc
dw $57e0,$57e4,$57e8,$57ec,$57f0,$57f4,$57f8,$57fc
dw $5800,$5804,$5808,$580c,$5810,$5814,$5818,$581c
dw $5c80,$5c84,$5c88,$5c8c,$5c90,$5c94,$5c98,$5c9c
dw $5ca0,$5ca4,$5ca8,$5cac,$5cb0,$5cb4,$5cb8,$5cbc
dw $5cc0,$5cc4,$5cc8,$5ccc,$5cd0,$5cd4,$5cd8,$5cdc
dw $5ce0,$5ce4,$5ce8,$5cec,$5cf0,$5cf4,$5cf8,$5cfc
dw $5d00,$5d04,$5d08,$5d0c,$5d10,$5d14,$5d18,$5d1c
dw $6180,$6184,$6188,$618c,$6190,$6194,$6198,$619c
dw $61a0,$61a4,$61a8,$61ac,$61b0,$61b4,$61b8,$61bc
dw $61c0,$61c4,$61c8,$61cc
tblFNT8 hex a0a1a2a3a4a5a6a7a8a9aaabacadaeaf
hex b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
hex c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
hex d0d1d2d3d4d5d6d7d8d9dadbdcdddedf
hex e0e1e2e3e4e5e6e7e8e9eaebecedeeef
hex f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
hex 88958b8a
*--- Flags pour le jeu
tinyMOVE ds 2 ; a-t-il bouge
tinyROULE ds 2 ; faut-il qu'il roule ??
tinyDIR ds 2 ; direction du Tiny
tinyDEC ds 2 ; le decor
espCOL ds 2 ; la couleur du Tiny + word (sauvegarde)
espADR ds 4
espECR ds 2
espSCR ds 2
myNUMBER ds 2 ; numero du tiny arrete (anim table)
tinyCALC dw $fffe,$0002,$fe20,$01e0
tinyCALC2 dw $000c,$fffd,$0f00,$fe20
tinyHOW dw 6,6,8,8
curXY ds 2 ; Curseur
curX ds 2
curY ds 2
oldXY ds 2
oldX ds 2
oldY ds 2
arrCOL ds 2
arrTINYcur ds 2
arrXY ds 2
arrX ds 2
arrY ds 2
arrNUMBER ds 2
*--- Tables pour les animations (jusqu'a 104 animations)
anNUMBER ds 2
anOBJET ds 208
anACTIF ds 208
anCOORD ds 208
anANIM ds 208
anACTIF2 ds 208
asc 0d
asc 'Hello This Is Antoine On Line'
asc 0d
*--- Donnees pour les plateaux
plateau1 ds 208
plateau2 ds 208
plateau3 ds 208
plateau4 ds 208
plateau5 ds 208
*--- Conversion HEXA/DECI
lvlINTRO hex 01,01,01,01,01,01,01,01,01,01
hex 02,02,02,02,02,02,02,02,02,02
hex 03,03,03,03,03,03,03,03,03,03
hex 04,04,04,04,04,04,04,04,04,04
hex 05,05,05,05,05,05,05,05,05,05
hex 06,06,06,06,06,06,06,06,06,06
hex 07,07,07,07,07,07,07,07,07,07
hex 08,08,08,08,08,08,08,08,08,08
hex 09,09,09,09,09,09,09,09,09,09
hex 10,10,10,10,10,10,10,10,10,10,11
scdVAR hex 00,01,02,03,04,05,06,07,08,09
hex 10,11,12,13,14,15,16,17,18,19
hex 20,21,22,23,24,25,26,27,28,29
hex 30,31,32,33,34,35,36,37,38,39
hex 40,41,42,43,44,45,46,47,48,49
hex 50,51,52,53,54,55,56,57,58,59
hex 60,61,62,63,64,65,66,67,68,69
hex 70,71,72,73,74,75,76,77,78,79
hex 80,81,82,83,84,85,86,87,88,89
hex 90,91,92,93,94,95,96,97,98,99
*--- Donnees du curseur
cursL hex a89999b9bbbbbbbb9b99998a
cursCOL1 hex 8990909090b090b0b0b0b0
hex b0b0b0b090b09090909989
cursCOL2 hex 98090909090b090b0b0b0b
hex 0b0b0b0b090b0909090998
cursMSK1 hex 000f0f0f0f0f0f0f0f0f0f
hex 0f0f0f0f0f0f0f0f0f0000
cursMSK2 hex 00f0f0f0f0f0f0f0f0f0f0
hex f0f0f0f0f0f0f0f0f00000
*--- Adresses pour NIV
scrNIV dw $0000,$0010,$0020,$0030,$0040
dw $0050,$1e00,$0060,$0070,$0080
dw $0090,$0f00,$0f10,$0f20,$0f30
dw $0f40,$0f50
dw $0f60,$0f70,$0f80,$0f90
dw $5a00,$5a10,$5a20,$5a30
dw $1e10,$1e20,$1e30,$1e40,$1e50,$1e60,$1e70,$1e80,$1e90
dw $2d00,$2d10,$2d20,$2d30,$2d40,$2d50,$2d60,$2d70,$2d80,$2d90
dw $3c00,$3c10,$3c20,$3c30,$3c40,$3c50,$3c60,$3c70,$3c80
scrCASE dw $0000,$0f00,$1e00,$2d00,$3c00,$4b00,$5a00,$6900
dw $000c,$0f0c,$1e0c,$2d0c,$3c0c,$4b0c,$5a0c,$690c
dw $0018,$0f18,$1e18,$2d18,$3c18,$4b18,$5a18,$6918
dw $0024,$0f24,$1e24,$2d24,$3c24,$4b24,$5a24,$6924
dw $0030,$0f30,$1e30,$2d30,$3c30,$4b30,$5a30,$6930
dw $003c,$0f3c,$1e3c,$2d3c,$3c3c,$4b3c,$5a3c,$693c
dw $0048,$0f48,$1e48,$2d48,$3c48,$4b48,$5a48,$6948
dw $0054,$0f54,$1e54,$2d54,$3c54,$4b54,$5a54,$6954
dw $0060,$0f60,$1e60,$2d60,$3c60,$4b60,$5a60,$6960
dw $006c,$0f6c,$1e6c,$2d6c,$3c6c,$4b6c,$5a6c,$696c
dw $0078,$0f78,$1e78,$2d78,$3c78,$4b78,$5a78,$6978
dw $0084,$0f84,$1e84,$2d84,$3c84,$4b84,$5a84,$6984
dw $0090,$0f90,$1e90,$2d90,$3c90,$4b90,$5a90,$6990
scrX dw $0000,$000c,$0018,$0024,$0030,$003c,$0048
dw $0054,$0060,$006c,$0078,$0084,$0090
scrY dw $0000,$0f00,$1e00,$2d00
dw $3c00,$4b00,$5a00,$6900
*--- Types d'animation a faire
anCORRES dw $D,$D,$D,$D ; staticTiny
dw $5,$5,$5,$5 ; sleeper
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw $1,$1,$1,$1 ; staticAnim
dw $6,$6,$6,$6 ; sleepTiny
anDRAW da tblGRE,tblBLU,tblRED,tblYEL
da tblGRE,tblBLU,tblRED,tblYEL
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
da tblGRE,tblGRE,tblGRE,tblGRE
da tblGRE,tblBLU,tblRED,tblYEL
anTYPE da anGREE,anBLUE,anREDE,anYELL
da anSLEE,anSLEE,anSLEE,anSLEE
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
dw -1,-1,-1,-1
da anSTAT,anSTAT,anSTAT,anSTAT
da anDORM,anDORM,anDORM,anDORM
anGREE dw $0000,$000c,$0018,$0024,$0030,$003c,$0048,$0054,$0060,$006c,$0078,$0084
dw $0f00,$0f0c,$0f18,$0f24,-1
anBLUE dw $0f30,$0f3c,$0f48,$0f54,$0f60,$0f6c,$0f78,$0f84
dw $1e00,$1e0c,$1e18,$1e24,$1e30,-1
anREDE dw $1e3c,$1e48,$1e54,$1e60,$1e6c,$1e78,$1e84
dw $2d00,$2d0c,$2d18,$2d24,$2d30,-1
anYELL dw $2d3c,$2d48,$2d54,$2d60,$2d6c,$2d78,$2d84
dw $3c00,$3c0c,$3c18,$3c24,$3c30,$3c3c,$3c48,$3c54,-1
anSLEE dw $0000,$000c,$0018,$0024,$0030,$003c,$0048,$0054,-1
anSTAT dw $1e00,-1
anDORM dw $3c30,$3c30,$3c3c,$3c3c,$3c48,$3c48,$3c54,$3c54,-1
*--- Tables de correspondance pour les animations
tblGRE hex 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
hex 202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
hex 404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
hex 606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f
hex 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f
hex a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf
hex c0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf
hex e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
tblBLU hex 000502070405060708090a0b0c0d0e0f505552575455565758595a5b5c5d5e5f
hex 202522272425262728292a2b2c2d2e2f707572777475767778797a7b7c7d7e7f
hex 404542474445464748494a4b4c4d4e4f505552575455565758595a5b5c5d5e5f
hex 606562676465666768696a6b6c6d6e6f707572777475767778797a7b7c7d7e7f
hex 808582878485868788898a8b8c8d8e8f909592979495969798999a9b9c9d9e9f
hex a0a5a2a7a4a5a6a7a8a9aaabacadaeafb0b5b2b7b4b5b6b7b8b9babbbcbdbebf
hex c0c5c2c7c4c5c6c7c8c9cacbcccdcecfd0d5d2d7d4d5d6d7d8d9dadbdcdddedf
hex e0e5e2e7e4e5e6e7e8e9eaebecedeeeff0f5f2f7f4f5f6f7f8f9fafbfcfdfeff
tblRED hex 0009020b0405060708090a0b0c0d0e0f9099929b9495969798999a9b9c9d9e9f
hex 2029222b2425262728292a2b2c2d2e2fb0b9b2bbb4b5b6b7b8b9babbbcbdbebf
hex 4049424b4445464748494a4b4c4d4e4f5059525b5455565758595a5b5c5d5e5f
hex 6069626b6465666768696a6b6c6d6e6f7079727b7475767778797a7b7c7d7e7f
hex 8089828b8485868788898a8b8c8d8e8f9099929b9495969798999a9b9c9d9e9f
hex a0a9a2aba4a5a6a7a8a9aaabacadaeafb0b9b2bbb4b5b6b7b8b9babbbcbdbebf
hex c0c9c2cbc4c5c6c7c8c9cacbcccdcecfd0d9d2dbd4d5d6d7d8d9dadbdcdddedf
hex e0e9e2ebe4e5e6e7e8e9eaebecedeeeff0f9f2fbf4f5f6f7f8f9fafbfcfdfeff
tblYEL hex 000d020f0405060708090a0b0c0d0e0fd0ddd2dfd4d5d6d7d8d9dadbdcdddedf
hex 202d222f2425262728292a2b2c2d2e2ff0fdf2fff4f5f6f7f8f9fafbfcfdfeff
hex 404d424f4445464748494a4b4c4d4e4f505d525f5455565758595a5b5c5d5e5f
hex 606d626f6465666768696a6b6c6d6e6f707d727f7475767778797a7b7c7d7e7f
hex 808d828f8485868788898a8b8c8d8e8f909d929f9495969798999a9b9c9d9e9f
hex a0ada2afa4a5a6a7a8a9aaabacadaeafb0bdb2bfb4b5b6b7b8b9babbbcbdbebf
hex c0cdc2cfc4c5c6c7c8c9cacbcccdcecfd0ddd2dfd4d5d6d7d8d9dadbdcdddedf
hex e0ede2efe4e5e6e7e8e9eaebecedeeeff0fdf2fff4f5f6f7f8f9fafbfcfdfeff
tblMASK hex fff0f0f0f0f0f0f0f0f0f0f0f0f0f0f00f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
hex 0f0000000000000000000000000000000f000000000000000000000000000000
tblXY dw $0000,$0001,$0002,$0003,$0004,$0005,$0006,$0007
dw $0100,$0101,$0102,$0103,$0104,$0105,$0106,$0107
dw $0200,$0201,$0202,$0203,$0204,$0205,$0206,$0207
dw $0300,$0301,$0302,$0303,$0304,$0305,$0306,$0307
dw $0400,$0401,$0402,$0403,$0404,$0405,$0406,$0407
dw $0500,$0501,$0502,$0503,$0504,$0505,$0506,$0507
dw $0600,$0601,$0602,$0603,$0604,$0605,$0606,$0607
dw $0700,$0701,$0702,$0703,$0704,$0705,$0706,$0707
dw $0800,$0801,$0802,$0803,$0804,$0805,$0806,$0807
dw $0900,$0901,$0902,$0903,$0904,$0905,$0906,$0907
dw $0a00,$0a01,$0a02,$0a03,$0a04,$0a05,$0a06,$0a07
dw $0b00,$0b01,$0b02,$0b03,$0b04,$0b05,$0b06,$0b07
dw $0c00,$0c01,$0c02,$0c03,$0c04,$0c05,$0c06,$0c07
*--- Tinies bougent
moveLEFT dw $0000,$000c,$0018,$0024
dw $0030,$003c,$0048,$0054
moveRIGHT dw $0f00,$0f0c,$0f18,$0f24
dw $0f30,$0f3c,$0f48,$0f54
moveUP dw $1e00,$1e0c,$1e18,$1e24
dw $1e30,$1e3c,$1e48,$1e54
moveDOWN dw $2d00,$2d0c,$2d18,$2d24
dw $2d30,$2d3c,$2d48,$2d54
rollLEFT dw $3c00,$3c0c,$3c18,$3c24
dw $3c30,$3c3c,$3c48,$3c54
rollRIGHT dw $4b00,$4b0c,$4b18,$4b24
dw $4b30,$4b3c,$4b48,$4b54
rollUP dw $5a00,$5a0c,$5a18,$5a24
dw $5a30,$5a3c,$5a48,$5a54
rollDOWN dw $6900,$690c,$6918,$6924
dw $6930,$693c,$6948,$6954
*--- Adresses ecran des sprites
chseBOUG da anBougGa,anBougDr,anBougHa,anBougBa
da anRoulGa,anRoulDr,anRoulHa,anRoulBa
anBougGa dw $0f0c,$0f18,$0f24,$0f30,$0f3c,$0f48
anBougDr dw $000c,$0018,$0024,$0030,$003c,$0048
anBougHa dw $1e00,$1e0c,$1e18,$1e24,$1e30,$1e3c,$1e48,$1e54
anBougBa dw $2d00,$2d0c,$2d18,$2d24,$2d30,$2d3c,$2d48,$2d54
anRoulGa dw $4b0c,$4b18,$4b24,$4b30,$4b3c,$4b48
anRoulDr dw $3c0c,$3c18,$3c24,$3c30,$3c3c,$3c48
anRoulHa dw $5a00,$5a0c,$5a18,$5a24,$5a30,$5a3c,$5a48,$5a54
anRoulBa dw $6900,$690c,$6918,$6924,$6930,$693c,$6948,$6954
chseBUMP da anBumpGa,anBumpDr,anBumpBa,anBumpHa
anBumpGa dw $0064,$0070,$007c,$0088,$0094
dw $0f64,$0f70,$0f7c,$0f88,$0064,-1
anBumpDr dw $0064,$0f94,$1e64,$1e70,$1e7c
dw $1e88,$1e94,$2d64,$0f88,$0064,-1
anBumpHa dw $0064,$2d64,$2d70,$2d7c,$2d88
dw $2d94,$3c64,$3c70,$3c7c,$0064,-1
anBumpBa dw $0064,$3c7c,$3c88,$3c94,$4b64
dw $4b70,$4b7c,$4b88,$4b94,$0064,-1
chseTELE da anTeleGa,anTeleDr,anTeleHa,anTeleBa
anTeleGa dw $1e30,$1e48,$1e60,$1e78
dw $2d00,$2d18,$2d30
dw $2d48,$693c,-1
anTeleDr dw $0060,$0078
dw $0f00,$0f18,$0f30
dw $0f48,$0f60,$0f78,$693c,-1
anTeleHa dw $3c00,$3c18,$3c30
dw $3c48,$3c60,$3c78
dw $4b00,$4b18,$693c,-1
anTeleBa dw $4b60,$4b78
dw $5a00,$5a18,$5a30
dw $5a48,$5a60,$5a78,$693c,-1
chseTELE2 da anTeleGa2,anTeleDr2,anTeleHa2,anTeleBa2
anTeleGa2 dw $2d84,$2d78,$2d6c,$2d60,$1e54,$1e48,$1e3c,$1e30,-1
anTeleDr2 dw $1e24,$1e18,$1e0c,$1e00,$0084,$0078,$006c,$0060,-1
anTeleHa2 dw $4b54,$4b48,$4b3c,$4b30,$3c24,$3c18,$3c0c,$3c00,-1
anTeleBa2 dw $6924,$6918,$690c,$6900,$4b84,$4b78,$4b6c,$4b60,-1
anINTE dw $0000,$0f00,$1e00,$2d00
anOPEN dw $006c,$0f6c,$1e6c,$2d6c
anDOOR dw $000c,$0018,$0024,$0030,$003c,$0048,$0054,$0060,$006c,-1
anJOKER dw $3c00,$3c0c,$3c18,$3c24,$3c30,$3c3c
dw $3c48,$3c54,$3c60,$3c6c,$3c78,$3c84,-1
chseBOOM da anBoumGa,anBoumDr,anBoumHa,anBoumBa
anBoumGa dw $0f00,$0f0c,$0f18,$0f24,$0f30,$0f3c,$0f48,$0f54,-1
anBoumDr dw $0000,$000c,$0018,$0024,$0030,$003c,$0048,$0054,-1
anBoumHa dw $1e00,$1e0c,$1e18,$1e24,$1e30,$1e3c,$1e48,$1e54,-1
anBoumBa dw $2d00,$2d0c,$2d18,$2d24,$2d30,$2d3c,$2d48,$2d54,-1
anEXPL1 dw $4b30,$4b3c,$4b48,$4b54,-1
anEXPL2 dw $5a00,$5a0c,$5a18,$5a24,$5a30,$5a3c
dw $5a48,$5a54,$6900,$690c,$6918,$6924,-1