4517 lines
126 KiB
ArmAsm
4517 lines
126 KiB
ArmAsm
REL
|
|
* Fun Columns
|
|
* par O.Goguel et FTA
|
|
|
|
* ToolBox Mag No 4
|
|
* Copyright 1990/1991 FTA
|
|
* Copyright 1990/1991 Toolbox
|
|
* 6 Rue H. Barbusse - 95100 Argenteuil - France
|
|
|
|
* Création : 22 Décembre 1990
|
|
* Dernière MAJ : 03 Février 1991
|
|
|
|
* Assemblage sous Merlin 16+ uniquement
|
|
|
|
* !vP8 !vP16!
|
|
* ! 1 ! x ! ...... Version SYS Prodos8 (OA-A)
|
|
* ! 0 ! 1 ! ...... Version S16 Gs/Os (OA-6)
|
|
* ! 0 ! 0 ! ...... Version CDA Gs/Os (OA-6)
|
|
|
|
* Language : 0=Francais, 1=English
|
|
|
|
vP8 = 0
|
|
vP16 = 1
|
|
Language = 0
|
|
|
|
LST OFF
|
|
|
|
* Le source est peu commenté car la gestion d'un jeu de
|
|
* ce genre est relativement simple et ne pose aucun probleme
|
|
* de programmation...
|
|
|
|
* Seul quelques _bidouilles_ en GS/OS et PRODOS sont expliqués...
|
|
* sinon, juste les noms des grandes parties sont données...
|
|
|
|
|
|
*------------------------------------------------- Macros
|
|
|
|
TXT MAC
|
|
DO Language
|
|
ASC ]1
|
|
ELSE
|
|
ASC ]2
|
|
FIN
|
|
EOM
|
|
|
|
INK MAC
|
|
INC ]1
|
|
BNE Here
|
|
INC ]1+1
|
|
Here EOM
|
|
|
|
|
|
_Err MAC
|
|
BCC NoErr
|
|
BRL PgmDeath
|
|
NoErr EOM
|
|
|
|
STL MAC
|
|
DO vP8
|
|
STA ]1
|
|
ELSE
|
|
STAL ]1
|
|
FIN
|
|
EOM
|
|
|
|
LDL MAC
|
|
DO vP8
|
|
LDA ]1
|
|
ELSE
|
|
LDAL ]1
|
|
FIN
|
|
EOM
|
|
|
|
BEQL MAC
|
|
BNE Here
|
|
BRL ]1
|
|
Here EOM
|
|
|
|
BNEL MAC
|
|
BEQ Here
|
|
BRL ]1
|
|
Here EOM
|
|
|
|
*------------------------------------------------- Constantes & Adresses
|
|
|
|
Screen = $E12000
|
|
ZPage = $1F00
|
|
|
|
NbLgn = 18 ; Nb de block par Ligne
|
|
NbCol = 8 ; Nb de Block par Colonne
|
|
HautCase = 11 ; Taille Blocks
|
|
LargCase = 12 ; " "
|
|
Center = $38+$A0
|
|
|
|
|
|
|
|
*------------------------------------------------- Entetes
|
|
|
|
|
|
* Entete Prodos8
|
|
*----------------
|
|
DO vP8
|
|
ORG $2000
|
|
BeginningOfFile = *
|
|
TYP $FF ; Fichier SYS
|
|
XC
|
|
XC
|
|
ELSE
|
|
BeginningOfFile = *
|
|
|
|
* Entete P16
|
|
*-----------
|
|
* REL
|
|
DO vP16
|
|
DSK Beyond.SYS16.L
|
|
ELSE
|
|
|
|
* Entete CDA
|
|
*-----------
|
|
TYP CDA
|
|
DSK Beyond.CDA.L
|
|
DO Language
|
|
STR 'Fun Columns by FTA'
|
|
ELSE
|
|
STR 'Fun Columns par FTA'
|
|
FIN
|
|
ADRL START
|
|
ADRL ENDCDA
|
|
FIN
|
|
FIN
|
|
|
|
*------------------------------------------------- Page Zero
|
|
|
|
DUM $00
|
|
CaseList DS NbCol*2
|
|
Table DS NbLgn*NbCol
|
|
Pnt DS 4
|
|
Lgn DS 2
|
|
Col DS 2
|
|
ZNbLgn DS 2
|
|
ZNbCol DS 2
|
|
Barre DS 3
|
|
BarreCol DS 2
|
|
BarreLgn DS 2
|
|
BarrePos DS 2
|
|
AleaGen DS 2
|
|
LevelSpeed DS 2
|
|
Compteur DS 2
|
|
Col0 DS 2
|
|
Lgn0 DS 2
|
|
Flag DS 2
|
|
CaseTest DS 2
|
|
Buf DS 2
|
|
Msk DS 2
|
|
Msk0 DS 2
|
|
Score DS 4
|
|
Total DS 2
|
|
Level DS 2
|
|
Level0 DS 2
|
|
Inv DS 2
|
|
CycleCount DS 2
|
|
SaveScreen DS 4
|
|
FlagHi DS 2
|
|
Counter DS 2
|
|
PntPath DS 4
|
|
PtrMsk DS 2
|
|
Step DS 2
|
|
PtrPattern DS 2
|
|
PtrPatPos DS 2
|
|
PtrPtrMsk DS 2
|
|
BarreCol0 DS 2
|
|
PtrShp DS 2
|
|
BarreNext DS 3
|
|
BlackMode DS 2
|
|
AlreadyNext DS 2
|
|
ColorDeg DS 2
|
|
XColor DS 2
|
|
PatchActif DS 2
|
|
NextMode DS 2
|
|
DEND
|
|
|
|
*------------------------------------------------- Debut
|
|
|
|
START DO vP8
|
|
ELSE
|
|
DO vP16
|
|
ELSE
|
|
PHP ; Initialisation
|
|
PHD ; version CDA uniquement
|
|
PHB
|
|
SEI
|
|
FIN
|
|
FIN
|
|
|
|
PHK
|
|
PLB
|
|
|
|
* Effacement écran text
|
|
|
|
SEP $30
|
|
]lp LDL $E1C02E
|
|
CMP #$F0
|
|
BNE ]lp
|
|
|
|
LDX #0
|
|
LDA #" "
|
|
]lp STL $000400,X
|
|
STL $000480,X
|
|
STL $000500,X
|
|
STL $000580,X
|
|
STL $000600,X
|
|
STL $000680,X
|
|
STL $000700,X
|
|
STL $000780,X
|
|
STAL $010400,X
|
|
STAL $010480,X
|
|
STAL $010500,X
|
|
STAL $010580,X
|
|
STAL $010600,X
|
|
STAL $010680,X
|
|
STAL $010700,X
|
|
STAL $010780,X
|
|
|
|
INX
|
|
CPX #$78
|
|
BNE ]lp
|
|
|
|
* Sauvegarde et mise @ jour du contexte video
|
|
|
|
LDL $E1C036
|
|
ORA #$80
|
|
STL $E1C036
|
|
LDL $E1C029
|
|
STA Save29+1
|
|
ORA #$40
|
|
STL $E1C029
|
|
LDL $E1C035
|
|
STA Save35+1
|
|
LDL $E1C034
|
|
STA Save34+1
|
|
LDA #$1E
|
|
STL $E1C035
|
|
|
|
DO vP8
|
|
|
|
*------------------------------------------------- Initialisation P8
|
|
|
|
* Recherche du pathname complet sous lequel
|
|
* a été lancé BEYOND depuis P8...
|
|
|
|
* Il n'existe en théorie aucun moyen de savoir le nom de
|
|
* l'application en cours sous P8 (contrairement a GS/OS)
|
|
* mais on peut facilement _en bidouillant un peu_ le
|
|
* recuperer...
|
|
|
|
* Cette routine utilise des points d'entrées Prodos non
|
|
* garanti par Apple, mais marche avec toutes les versions
|
|
* de P8 existantes...
|
|
|
|
|
|
* Tout d'abord on prend le prefix courant...
|
|
|
|
JSR $BF00
|
|
DFB $C7 ; GetPrefix
|
|
DA PrefixParm
|
|
|
|
* Puis, on va trouver en $D700 banc 0 de la carte langage
|
|
* une suite de nom de fichiers au format Prodos qui constitue le pathname
|
|
* que l'on cherche... Il suffit donc de les ajouter les uns a la suite des
|
|
* autres au prefix initial (s'il existe)
|
|
|
|
LDA $C068
|
|
PHA
|
|
LDA $C08B
|
|
LDA $C08B
|
|
|
|
LDA PathName
|
|
BNE AlreadyPath
|
|
|
|
LDA #'/'
|
|
STA PathName+1
|
|
LDA #1
|
|
AlreadyPath INC
|
|
STA $02
|
|
TAX
|
|
STZ $00
|
|
LDA #$D7
|
|
STA $01
|
|
]lp2 LDA ($00)
|
|
BEQ EndPath
|
|
TAY
|
|
]lp INK $00
|
|
LDA ($00)
|
|
STA PathName,X
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
INK $00
|
|
LDA ($00)
|
|
BEQ EndPath
|
|
LDA #'/'
|
|
STA PathName,X
|
|
INX
|
|
BRA ]lp2
|
|
|
|
EndPath DEX
|
|
STX PathName
|
|
|
|
* Seule petite difficulté : les noms que l'on vient de trouver contenaient
|
|
* peut-etre une partie du prefix courant... Si c'est le cas, il faut
|
|
* épurer le pathname que l'on vient de creer...
|
|
|
|
LDX $02
|
|
CPX #2
|
|
BEQ NoDoublePath
|
|
|
|
LDY #2
|
|
]lp LDA PathName,Y
|
|
CMP PathName,X
|
|
BNE NoDoublePath
|
|
INX
|
|
INY
|
|
CPY $02
|
|
BNE ]lp
|
|
|
|
LDY #2
|
|
LDX $02
|
|
]lp LDA PathName,X
|
|
STA PathName,Y
|
|
CPX PathName
|
|
BEQ NewLgth
|
|
INX
|
|
INY
|
|
BRA ]lp
|
|
NewLgth LDA PathName
|
|
SEC
|
|
SBC $02
|
|
INC
|
|
INC
|
|
STA PathName
|
|
|
|
NoDoublePath PLA ; On deconnecte
|
|
STA $C068
|
|
; la carte langage
|
|
|
|
* On a donc finalement @ l'adresse Pathname le nom complet de l'application
|
|
* P8 en cours...
|
|
|
|
CLC
|
|
XCE
|
|
REP $30
|
|
LDA #ZPage ; Page zero fixe
|
|
TCD ; pour P8
|
|
LDX #$100-2
|
|
]lp STZ $00,X
|
|
DEX
|
|
DEX
|
|
BPL ]lp
|
|
|
|
ELSE
|
|
|
|
*------------------------------------------------- Initialisation GS/OS et CDA
|
|
|
|
CLC
|
|
XCE
|
|
REP $30
|
|
PEA $0000
|
|
LDX #$0202 ; MMStartup
|
|
JSL $E10000
|
|
_Err
|
|
PLA
|
|
STA MasterId
|
|
ORA #$0100
|
|
STA UserId ; Recuperation de l'Id
|
|
; de l'application
|
|
|
|
PEA $0000
|
|
PEA $0000
|
|
PEA $0000
|
|
PEA $0100
|
|
LDA UserId
|
|
PHA
|
|
PEA $C001
|
|
PEA $0000
|
|
PEA $0000
|
|
LDX #$0902 ; New Handle
|
|
JSL $E10000
|
|
_Err
|
|
PLA
|
|
PLA
|
|
TSC
|
|
SEC
|
|
SBC #4
|
|
TCS
|
|
INC
|
|
TCD
|
|
LDA [$00]
|
|
TAX
|
|
TSC
|
|
CLC
|
|
ADC #4
|
|
TCS
|
|
TXA
|
|
TCD ; Recuperation d'une
|
|
; page zero grace a NewHandle
|
|
|
|
LDX #$100-2
|
|
]lp STZ $00,X
|
|
DEX
|
|
DEX
|
|
BPL ]lp
|
|
|
|
|
|
* Attention !!!
|
|
* -------------
|
|
|
|
* Dans toute la suite du programme, on va _comme d'habitude_ tout
|
|
* gérer par nous meme...(affichage, erreurs fichiers...)
|
|
|
|
* Malheureusement, on va etre légerement géné par GS/OS qui a la
|
|
* possibilité d'afficher des fenetres de dialogues (textes ou graphiques)
|
|
* pour nous avertir l'apparition d'erreurs eventuelles...
|
|
|
|
* Theoriquement, l'appel SetSysPref permet de dire a GS/OS de ne pas
|
|
* s'occuper de la gestion des erreurs...
|
|
|
|
JSL $E100A8
|
|
DA $200F ; GetSysPref
|
|
ADRL SysDefaultParms
|
|
|
|
JSL $E100A8
|
|
DA $200C ; SetSysPref
|
|
ADRL SysParms
|
|
|
|
* Malheureusement, dans certains cas, GS/OS va -malgré les préférences
|
|
* demandées- afficher certaines fenetres d'erreurs ce qui va etre fatal
|
|
* @ notre application et au systeme qui ne sont pas prévus pour cohabiter
|
|
* hors des limites qui ont été définies par votre serviteur...
|
|
|
|
* On va donc patcher GS/OS, puisque l'on ne recule devant rien, et
|
|
* qu'aucun appel homologué ne permet de le faire...
|
|
* On ne va tout de meme pas se laisser dominer par un systeme d'exploitation
|
|
* quelconque...
|
|
|
|
* Pour cela, j'ai "examiné" une partie de GS/OS pour remonter jusqu'@
|
|
* la routine qui m'interesse et qui se trouve point{ par un vecteur _dont
|
|
* son adresse, bien que non déclarée me parait inamovible..._ en $01FC98
|
|
|
|
* Si on suit ce qui est pointé par ce vecteur, on trouve un bout de routine
|
|
* qui commence par :
|
|
*
|
|
* LSR
|
|
* BCS AfficherFenetre
|
|
* LDAL $00B9F6 ; Test des préférences
|
|
* BMI AfficherFenetre ; (Bit15=Affichage)
|
|
* ...
|
|
* RTL
|
|
* Aff_Fenetre ...
|
|
|
|
* Et on voit donc bien le BCS qui peut forcer l'affichage d'une fenetre
|
|
* malgré l'état du flag Préference...
|
|
|
|
* On va donc détourner le vecteur en $01FC98 vers une routine qui remet
|
|
* l'accumulateur @ 00 pour que le BCS ne soit jamais pris, et ainsi
|
|
* on n'aura jamais de fenetres indésirable @ l'écran...
|
|
|
|
* A noter que l'on envelera notre patch au moment de quitter, bien entendu...
|
|
* et que notre application gere quand meme les erreurs meme si GS/OS n'affiche
|
|
* pas de message... (en particulier, le message Inserez le disk XXX)
|
|
|
|
|
|
SEP $20
|
|
LDAL $E1C068
|
|
PHA
|
|
LDAL $E1C08B
|
|
LDAL $E1C08B
|
|
|
|
REP $30
|
|
|
|
LDAL $01FC98 ; On verifie que c'est
|
|
AND #$00FF ; bien un vecteur...
|
|
CMP #$5C
|
|
BNE NoPatch
|
|
|
|
LDAL $01FC99 ; Sauvegarde de
|
|
STA SaveVect+1 ; la valeur du vecteur
|
|
LDAL $01FC9A
|
|
STA SaveVect+2
|
|
|
|
LDA NewVect+1 ; et detournement
|
|
STAL $01FC99 ; vers notre routine
|
|
LDA NewVect+2
|
|
STAL $01FC9A
|
|
|
|
NoPatch SEP $20
|
|
PLA
|
|
STAL $E1C068
|
|
REP $30
|
|
|
|
BRA Continue_Init
|
|
|
|
*-------------------------------------------------
|
|
|
|
SysDefaultParms DA 1 ; Sauvegardes des
|
|
DA 0 ; preferences
|
|
|
|
SysParms DA 1
|
|
DA 0 ; don't draw dialog box
|
|
|
|
|
|
NewVect JML NewFC98 ; nouvelle valeur FC98
|
|
|
|
NewFC98 LDA #0
|
|
SaveVect JML $000000 ; Ancienne valeur FC98
|
|
|
|
|
|
*------------------------------------------------- Initialisation CDA
|
|
|
|
Continue_Init DO vP16
|
|
ELSE
|
|
|
|
* Demande de 32ko pour sauvegarder la page graphique en cours...
|
|
|
|
PHA
|
|
PHA
|
|
PEA $0
|
|
PEA $8000 ; 32Ko
|
|
LDA UserId
|
|
PHA
|
|
PEA $C000
|
|
PEA $0
|
|
PEA $0
|
|
LDX #$0902 ; NewHandle
|
|
JSL $E10000
|
|
_Err
|
|
PLA
|
|
STA SaveScreen
|
|
PLA
|
|
STA SaveScreen+2
|
|
|
|
LDY #2
|
|
LDA [SaveScreen],Y
|
|
TAX
|
|
LDA [SaveScreen]
|
|
STA SaveScreen
|
|
STX SaveScreen+2
|
|
|
|
* Copie de la page graphique actuelle dans le buffer récupéré...
|
|
|
|
LDX #0
|
|
]lp TXY
|
|
LDAL $E12000,X
|
|
STA [SaveScreen],Y
|
|
INX
|
|
INX
|
|
BPL ]lp
|
|
|
|
FIN
|
|
FIN
|
|
|
|
*------------------------------------------------- Creation de l'image de jeu
|
|
|
|
LDX #0
|
|
TXA
|
|
]lp STAL Screen,X
|
|
INX
|
|
INX
|
|
BPL ]lp
|
|
|
|
LDX #$20-2
|
|
]lp LDA Palette,X
|
|
]A = 0
|
|
LUP 16
|
|
STAL ]A+Screen+$7E00,X
|
|
]A = ]A+$20
|
|
--^
|
|
DEX
|
|
DEX
|
|
BPL ]lp
|
|
|
|
JSR Degrade
|
|
BRA ContDeg
|
|
|
|
ListDegrade DA $00C,0-$001
|
|
DA $0C0,0-$010
|
|
DA $C00,0-$100
|
|
DA $CC0,0-$110
|
|
DA $C0C,0-$101
|
|
DA $0CC,0-$011
|
|
DA $CCC,0-$111
|
|
DA $001,$001
|
|
DA $010,$010
|
|
DA $100,$100
|
|
DA $110,$110
|
|
DA $101,$101
|
|
DA $011,$011
|
|
DA $111,$111
|
|
|
|
Degrade LDA ColorDeg ; Dégradé pour le décor
|
|
CLC
|
|
ADC XColor
|
|
ASL
|
|
ASL
|
|
TAX
|
|
LDA ListDegrade+2,X
|
|
STA Step
|
|
LDA ListDegrade,X
|
|
LDX #0
|
|
]lp STAL Screen+$7E02,X
|
|
PHA
|
|
TXA
|
|
CLC
|
|
ADC #$20
|
|
TAX
|
|
PLA
|
|
CLC
|
|
ADC Step
|
|
CPX #$20*10
|
|
BNE ]lp
|
|
RTS
|
|
|
|
ContDeg SEP $30
|
|
|
|
LDX #0
|
|
LDA #0
|
|
]lp2 LDY #20
|
|
]lp STAL Screen+$7D00,X
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
INC
|
|
CMP #10
|
|
BNE ]lp2
|
|
|
|
REP $30
|
|
|
|
* Decor
|
|
LDA #$00A0
|
|
STA Buf
|
|
|
|
LDX #0
|
|
]mainloop PHX
|
|
LDY #0
|
|
]lp LDA ZTop,Y
|
|
STAL Screen,X
|
|
LDA ZTop0,Y
|
|
STAL Screen+$A0,X
|
|
LDA ZBottom0,Y
|
|
STAL $A0*18+Screen,X
|
|
LDA ZBottom,Y
|
|
STAL $A0*19+Screen,X
|
|
INX
|
|
INX
|
|
INY
|
|
INY
|
|
CPY #$0A
|
|
BNE ]lp
|
|
|
|
LDY #0
|
|
]lp2 PHY
|
|
TXA
|
|
CLC
|
|
ADC #$A0-$0A
|
|
TAX
|
|
LDY #0
|
|
]lp LDA ZMiddle,Y
|
|
STAL Screen+$A0,X
|
|
INX
|
|
INX
|
|
INY
|
|
INY
|
|
CPY #$0A
|
|
BNE ]lp
|
|
PLY
|
|
INY
|
|
CPY #16
|
|
BNE ]lp2
|
|
PLA
|
|
CLC
|
|
ADC #$0A
|
|
TAX
|
|
CMP Buf
|
|
BNE ]mainloop
|
|
LDA Buf
|
|
CLC
|
|
ADC #20*$A0
|
|
STA Buf
|
|
CMP #$7D00
|
|
BCS Endraw
|
|
TXA
|
|
CLC
|
|
ADC #20*$A0-$A0
|
|
TAX
|
|
BRA ]mainloop
|
|
|
|
Endraw SEP $20
|
|
|
|
LDX #1
|
|
LDA #$FF
|
|
]lp STAL Screen+Center-1-$A0,X
|
|
STAL NbLgn*$A0*HautCase+Center-1+Screen,X
|
|
INX
|
|
CPX #NbCol*LargCase/2+1
|
|
BNE ]lp
|
|
|
|
LDX #0
|
|
]lp LDA #$0F
|
|
STAL Screen+Center-1-$A0,X
|
|
LDA #$F0
|
|
STAL NbCol*LargCase/2+Screen+Center-$A0,X
|
|
REP $20
|
|
TXA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
SEP $20
|
|
CPX #NbLgn*HautCase+2*$A0
|
|
BNE ]lp
|
|
|
|
REP $30
|
|
|
|
LDA #BeyondLogo+4
|
|
STA Pnt
|
|
|
|
LDX #$88*$A0+$73
|
|
|
|
]lp2 PHX
|
|
|
|
LDY #$28/2
|
|
]lp LDA (Pnt)
|
|
INC Pnt
|
|
INC Pnt
|
|
STAL $E12000,X
|
|
INX
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
PLA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
CPX #$88+$38*$A0+$73
|
|
BNE ]lp2
|
|
|
|
STZ BlackMode
|
|
STA Inv
|
|
|
|
LDA #6
|
|
STA Lgn
|
|
LDA #115
|
|
STA Col
|
|
LDA #67
|
|
STA ZNbLgn
|
|
LDA #38
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
LDX #11*$A0+120
|
|
JSR Print
|
|
HEX 0CFF ; Couleur noir
|
|
ASC "SCORE:",00
|
|
LDX #11+20*$A0+120
|
|
JSR Print
|
|
TXT "LEVEL:",00;"TABLEAU:",00
|
|
LDX #11+40*$A0+120
|
|
JSR Print
|
|
ASC "TOTAL:",00
|
|
|
|
LDA #6
|
|
STA Lgn
|
|
LDA #6
|
|
STA Col
|
|
LDA #187
|
|
STA ZNbLgn
|
|
LDA #38
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
LDX #11*$A0+11
|
|
JSR Print
|
|
TXT "HIGH";"LES"
|
|
HEX 8D
|
|
TXT "SCORES:";"BALAISES"
|
|
HEX 00
|
|
|
|
STZ Score
|
|
STZ Score+2
|
|
LDA #$0001
|
|
STA Level
|
|
STZ Total
|
|
|
|
LDA PatternList
|
|
STA PtrPattern
|
|
LDA MskList
|
|
STA PtrPtrMsk
|
|
|
|
LDA #2
|
|
STA PtrPatPos
|
|
|
|
JSR PrintHiScore
|
|
JSR PrintScore
|
|
JSR PrintTotal
|
|
JSR PrintLevel
|
|
|
|
*------------------------------------------------- Fin de l'initialisation
|
|
|
|
]RestartGame JSR ClearAera
|
|
|
|
SEP $30
|
|
LDL $E1C02F
|
|
STA AleaGen
|
|
|
|
]lp LDL $E1C02E
|
|
CMP #$F0
|
|
BNE ]lp
|
|
|
|
LDA #0
|
|
STL $E1C034
|
|
LDA #$C1
|
|
STL $E1C029
|
|
|
|
REP $30
|
|
|
|
* Affichage du menu...
|
|
|
|
STZ Inv
|
|
LDX #52*$A0+$37+4
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT "CHOOSE :";"CHOISIR:"
|
|
HEX 8D8D
|
|
ASC "1",0CFF,"-"
|
|
TXT "VERY EASY";"ENFANTIN"
|
|
HEX 8D0C99
|
|
ASC "2",0CFF,"-"
|
|
TXT "EASY";"FACILE"
|
|
HEX 8D0C99
|
|
ASC "3",0CFF,"-"
|
|
TXT "MEDIUM";"MOYEN"
|
|
HEX 8D0C99
|
|
ASC "4",0CFF,"-"
|
|
TXT "HARD";"DIFFICILE"
|
|
HEX 8D0C99
|
|
ASC "5",0CFF,"-"
|
|
TXT "VERY HARD";"AIE !"
|
|
HEX 8D0C99
|
|
ASC "6",0CFF,"-"
|
|
TXT "JEDI";"MODE JYB"
|
|
HEX 8D8D0C99
|
|
ASC "A",0CFF,"-"
|
|
TXT "ABOUT";"A PROPOS"
|
|
HEX 8D0C99
|
|
ASC "I",0CFF,"-INFO",8D0C99
|
|
ASC "Q",0CFF,"-"
|
|
TXT "QUIT";"QUITTER"
|
|
HEX 0CFF00
|
|
|
|
LDA #$FFFF
|
|
STA Inv
|
|
|
|
* Saisie du choix au clavier...
|
|
|
|
WaitKeyPress SEP $30
|
|
STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
REP $30
|
|
AND #$00FF
|
|
CMP #"Z"+1
|
|
BCC NoMin
|
|
SEC
|
|
SBC #$20
|
|
NoMin CMP #"Q"
|
|
BNEL NoQuit
|
|
|
|
* Si on appuie sur Q, on va sauver les high-scores s'ils ont étés
|
|
* améliorés (FlagHi)
|
|
|
|
LDA FlagHi
|
|
BEQ NoSaveHi
|
|
|
|
JSR PrintSaving
|
|
|
|
* Les meilleurs scores sont sauvés directement dans le programme !
|
|
|
|
*------------------------------------------------- Routine sauvegarde P8
|
|
|
|
NoSaveHi DO vP8 ; *D0
|
|
|
|
PEA $0
|
|
PLD
|
|
SEC
|
|
XCE
|
|
SEP $30
|
|
|
|
LDA FlagHi+ZPage
|
|
BEQ NoSaveHiP8
|
|
|
|
STZ FlagClean
|
|
|
|
]lp JSR $BF00
|
|
DFB $C8 ; Open
|
|
DA OpenParm
|
|
BCC NoErrOpening
|
|
CMP #$45 ; Volume Not Found
|
|
BNE ErrFatal
|
|
JSR InsertDisk
|
|
BCC ]lp
|
|
BRA NoSaveHiP8
|
|
|
|
NoErrOpening LDA FlagClean
|
|
BEQ NoRedraw0
|
|
|
|
JSR PrintSaving
|
|
|
|
NoRedraw0 LDA Ref
|
|
STA RefRead
|
|
STA RefWrite
|
|
STA RefMark
|
|
JSR $BF00
|
|
DFB $CE ; SetMark
|
|
DA MarkParm
|
|
BCC NoErrMark
|
|
BRA ErrFatal
|
|
ErrFatal0 LDA #$FF ; Bad Signature
|
|
ErrFatal JSR FatalError
|
|
BRA NoSaveHiP8
|
|
NoErrMark JSR $BF00
|
|
DFB $CA ; Read
|
|
DA ReadParm
|
|
BCS ErrFatal
|
|
LDX #7
|
|
]lp LDA Signature,X
|
|
CMP SignatureTest,X
|
|
BNE ErrFatal0
|
|
DEX
|
|
BPL ]lp
|
|
GoodTest JSR $BF00
|
|
DFB $CB
|
|
DA WriteParm
|
|
BCC NoSaveHiP8
|
|
CMP #$2F
|
|
BEQ DiskSwap
|
|
CMP #$2B
|
|
BNE ErrFatal
|
|
JSR WriteProtect
|
|
BCC GoodTest
|
|
BRA NoSaveHiP8
|
|
DiskSwap JSR InsertDisk
|
|
BCC GoodTest
|
|
NoSaveHiP8 JSR $BF00
|
|
DFB $CC
|
|
DA CloseParm
|
|
|
|
Save35 LDA #0
|
|
STL $E1C035
|
|
Save29 LDA #$41
|
|
STL $E1C029
|
|
Save34 LDA #0
|
|
STL $E1C034
|
|
|
|
JSR $BF00
|
|
DFB $65
|
|
DA QuitParm
|
|
|
|
PrintSaving CLC
|
|
XCE
|
|
PHP
|
|
PHD
|
|
REP $30
|
|
LDA #ZPage
|
|
TCD
|
|
JSR ClearAera
|
|
STZ Inv
|
|
LDX #91*$A0+$37+4
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT " SAVING";"SAUVEGARDE"
|
|
HEX 8D
|
|
TXT "HIGH SCORES";"DES SCORES."
|
|
HEX 00
|
|
PLD
|
|
PLP
|
|
XCE
|
|
RTS
|
|
|
|
MX %11
|
|
WriteProtect CLC
|
|
XCE
|
|
REP $30
|
|
LDA #ZPage
|
|
TCD
|
|
JSR ClearAera
|
|
LDX #67*$A0+$36+4
|
|
JSR Print
|
|
HEX 0CFF
|
|
TXT "DISK WRITE";"DISQUETTE"
|
|
HEX 8D
|
|
TXT "PROTECTED.";"PROTEGEE."
|
|
HEX 0CAA00
|
|
|
|
BRA ContErr
|
|
|
|
MX %11
|
|
InsertDisk LDX #0
|
|
]lp LDA PathName+2,X
|
|
ORA #$80
|
|
CMP #"/"
|
|
BEQ EndPath0
|
|
STA Name+1,X
|
|
INX
|
|
CPX #11
|
|
BNE ]lp
|
|
EndPath0 CPX #11
|
|
BEQ NoBlank
|
|
LDA #" "
|
|
STA Name+1,X
|
|
INX
|
|
BRA EndPath0
|
|
|
|
NoBlank CLC
|
|
XCE
|
|
REP $30
|
|
LDA #ZPage
|
|
TCD
|
|
JSR ClearAera
|
|
LDX #67*$A0+$36+2
|
|
JSR Print
|
|
HEX 0CFF
|
|
TXT "INSERT DISK:";"INSEREZ:"
|
|
HEX 8D
|
|
Name ASC "/ ",0CAA00
|
|
|
|
ContErr DO Language
|
|
LDX #8*3+67*$A0+$36+2
|
|
JSR Print
|
|
ASC "PRESS RETURN",8D
|
|
ASC " TO RETRY ",8E
|
|
ASC " OR",8E
|
|
ASC "PRESS ESC",8D
|
|
ASC " TO ABORT",00
|
|
ELSE
|
|
LDX #8*3+67*$A0+$36+5
|
|
JSR Print
|
|
ASC "TAPEZ ENVOI",8D
|
|
ASC " POUR ",8D
|
|
ASC "RE-ESSAYER.",8E
|
|
ASC " OU",8E
|
|
ASC " TAPEZ ESC",8D
|
|
ASC " POUR",8D
|
|
ASC "ABANDONNER."
|
|
HEX 00
|
|
FIN
|
|
|
|
SEP $30
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
]lp2 STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
CMP #"M"&$9F
|
|
BEQ GoRetry
|
|
CMP #$9B
|
|
BNE ]lp2
|
|
SEC
|
|
XCE
|
|
PEA $0
|
|
PLD
|
|
SEC
|
|
RTS
|
|
GoRetry INC FlagClean
|
|
SEC
|
|
XCE
|
|
PEA $0
|
|
PLD
|
|
CLC
|
|
RTS
|
|
|
|
FlagClean DS 2
|
|
|
|
FatalError PHA
|
|
AND #$F0
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
JSR Translate
|
|
STA ErrCode
|
|
PLA
|
|
AND #$0F
|
|
JSR Translate
|
|
STA ErrCode+1
|
|
CLC
|
|
XCE
|
|
REP $30
|
|
LDA #ZPage
|
|
TCD
|
|
JSR ClearAera
|
|
LDX #91*$A0+$37+4
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT "CAN'T SAVE";"SAUVEGARDE"
|
|
HEX 8D
|
|
TXT "HI-SCORES :";"IMPOSSIBLE"
|
|
HEX 8D8D
|
|
TXT " ERROR $";"ERREUR $"
|
|
ErrCode ASC "??",00
|
|
|
|
SEC
|
|
XCE
|
|
SEP $30
|
|
PEA $0
|
|
PLD
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
CLC
|
|
RTS
|
|
|
|
|
|
QuitParm HEX 04
|
|
HEX 00
|
|
HEX 0000
|
|
HEX 00
|
|
HEX 0000
|
|
|
|
CloseParm HEX 01
|
|
HEX 00
|
|
|
|
WriteParm HEX 04
|
|
RefWrite HEX 00
|
|
DA HiScoreList
|
|
DA 12*8
|
|
DA 0
|
|
|
|
ReadParm HEX 04
|
|
RefRead HEX 00
|
|
DA SignatureTest
|
|
DA 8
|
|
DA 0
|
|
|
|
MarkParm HEX 02
|
|
RefMark HEX 00
|
|
ADRL Signature-BeginningOfFile
|
|
|
|
PrefixParm HEX 01
|
|
DA PathName
|
|
|
|
OpenParm HEX 03
|
|
DA PathName
|
|
DA BufIO
|
|
Ref HEX 00
|
|
|
|
MX %00
|
|
|
|
|
|
*------------------------------------------------- Routine sauvegarde GS/OS et CDA
|
|
|
|
ELSE ;*E0
|
|
|
|
LDA FlagHi
|
|
BEQL NoSaveHiSYS16
|
|
|
|
PEA $0
|
|
PEA $0
|
|
LDA MasterId
|
|
PHA
|
|
PEA $0000
|
|
LDX #$1111 ; LGetPathName
|
|
JSL $E10000
|
|
_Err
|
|
PLA
|
|
PLX
|
|
DEC
|
|
STA PntPath
|
|
STX PntPath+2
|
|
|
|
LDA PntPath
|
|
LDX PntPath+2
|
|
|
|
STA PathNameAdr
|
|
STX PathNameAdr+2
|
|
|
|
STZ FlagClean
|
|
|
|
]lp LDA [PntPath] ; Conversion chaine
|
|
PHA ; de type pascal en
|
|
XBA ; GS/OS...
|
|
AND #$00FF
|
|
STA [PntPath]
|
|
JSL $E100A8
|
|
DA $2010
|
|
ADRL Open_Parms
|
|
TAX ; et vice-versa...
|
|
PLA ; (Il faut un outil
|
|
STA [PntPath] ; pour faire ca???)
|
|
TXA
|
|
CMP #1
|
|
BCC NoErrOp
|
|
|
|
CMP #$45
|
|
BNE ErrFatalBis
|
|
JSR InsertDisk
|
|
BCC ]lp
|
|
BRA There0
|
|
ErrFatalBis JSR FatalError
|
|
There0 BRL NoSaveHiSYS16
|
|
|
|
ErrFatal0 LDA #$FF
|
|
ErrFatal JSR FatalError
|
|
BRL EndSave
|
|
|
|
NoErrOp LDA Ref
|
|
STA MarkRef
|
|
STA ReadRef
|
|
STA WriteRef
|
|
STA CloseRef
|
|
STA FlushRef
|
|
|
|
LDA FlagClean
|
|
BEQ NoR2
|
|
|
|
JSR PrintSaving
|
|
|
|
NoR2 = *
|
|
|
|
JSL $E100A8
|
|
DA $2016 ; SetMark
|
|
ADRL Ref_Parms
|
|
BCS ErrFatal
|
|
|
|
JSL $E100A8
|
|
DA $2012 ; Read
|
|
ADRL Read_Parms
|
|
BCS ErrFatal
|
|
|
|
LDX #8-2
|
|
]lp LDA Signature,X
|
|
CMP SignatureTest,X
|
|
BNE ErrFatal0
|
|
DEX
|
|
DEX
|
|
BPL ]lp
|
|
|
|
]lp JSL $E100A8
|
|
DA $2013
|
|
ADRL Write_Parms
|
|
BCC EndSave0
|
|
|
|
CMP #$45
|
|
BNE NoBadVolume0
|
|
JSR InsertDisk0
|
|
BRA ]lp
|
|
NoBadVolume0 CMP #$2B
|
|
BNE ErrFatal1
|
|
JSR WriteProtect
|
|
BRA ]lp
|
|
|
|
ErrFatal1 BRL ErrFatal
|
|
|
|
EndSave0 JSL $E100A8
|
|
DA $2015
|
|
ADRL Flush_Parms
|
|
BCC EndSave
|
|
|
|
CMP #$45
|
|
BNE NoBadVolume
|
|
JSR InsertDisk0
|
|
BRA EndSave0
|
|
NoBadVolume CMP #$2B
|
|
BNE ErrFatal1
|
|
JSR WriteProtect
|
|
BRA EndSave0
|
|
|
|
EndSave JSL $E100A8
|
|
DA $2014 ; Close
|
|
ADRL Close_Parms
|
|
|
|
NoSaveHiSYS16 SEP $20
|
|
LDAL $E1C068
|
|
PHA
|
|
LDAL $E1C08B
|
|
LDAL $E1C08B
|
|
|
|
REP $30
|
|
|
|
LDAL $01FC98
|
|
AND #$00FF
|
|
CMP #$5C
|
|
BNE NoPatch0
|
|
|
|
LDA SaveVect+1 ; avant de quitter, on
|
|
STAL $01FC99 ; enleve notre patch
|
|
LDA SaveVect+2
|
|
STAL $01FC9A
|
|
|
|
NoPatch0 SEP $20
|
|
PLA
|
|
STAL $E1C068
|
|
REP $20
|
|
|
|
JSL $E100A8
|
|
DA $200C ; SetSysPref
|
|
ADRL SysDefaultParms
|
|
|
|
BRL NormalQuit
|
|
|
|
Open_Parms DA 15
|
|
Ref DA 0
|
|
PathNameAdr ADRL 0
|
|
DA %0000_0000_0000_0011 ; R/W
|
|
DS 50
|
|
|
|
Ref_Parms DA 3
|
|
MarkRef DA 0
|
|
DA 0
|
|
ADRL Signature-BeginningOfFile+$45
|
|
|
|
Read_Parms DA 5
|
|
ReadRef DA 0
|
|
ADRL SignatureTest
|
|
ADRL 8
|
|
ADRL 0
|
|
DA 0 ; NoCache
|
|
|
|
Write_Parms DA 4
|
|
WriteRef DA 0
|
|
ADRL HiScoreList
|
|
ADRL 12*8
|
|
ADRL 0
|
|
DA 0
|
|
|
|
Close_Parms DA 1
|
|
CloseRef DA 0
|
|
|
|
Flush_Parms DA 1
|
|
FlushRef DA 0
|
|
|
|
PrintSaving = *
|
|
JSR ClearAera
|
|
STZ Inv
|
|
LDX #91*$A0+$37+4
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT " SAVING";"SAUVEGARDE"
|
|
HEX 8D
|
|
TXT "HIGH SCORES";"DES SCORES."
|
|
HEX 00
|
|
RTS
|
|
|
|
FlagClean DS 2
|
|
|
|
WriteProtect JSR ClearAera
|
|
LDX #67*$A0+$36+4
|
|
JSR Print
|
|
HEX 0CFF
|
|
TXT "DISK WRITE";"DISQUETTE"
|
|
HEX 8D
|
|
TXT "PROTECTED.";"PROTEGEE."
|
|
HEX 0CAA00
|
|
|
|
WriteReturn0 DO Language
|
|
LDX #8*3+67*$A0+$36+2
|
|
JSR Print
|
|
ASC "PRESS RETURN",8D
|
|
ASC " TO RETRY ",00
|
|
ELSE
|
|
LDX #8*3+67*$A0+$36+5
|
|
JSR Print
|
|
ASC "TAPEZ ENVOI",8D
|
|
ASC " POUR ",8D
|
|
ASC "RE-ESSAYER.",00
|
|
FIN
|
|
|
|
BRL ContErr0
|
|
|
|
FlagCont DS 2
|
|
|
|
InsertDisk0 LDA #$FFFF
|
|
BRA C0
|
|
InsertDisk LDA #0
|
|
C0 STA FlagCont
|
|
SEP $30
|
|
LDX #0
|
|
LDY #2+1
|
|
]lp LDA [PntPath],Y
|
|
ORA #$80
|
|
CMP #"/"
|
|
BEQ EndPath0
|
|
STA Name+1,X
|
|
INY
|
|
INX
|
|
CPX #11
|
|
BNE ]lp
|
|
|
|
EndPath0 CPX #11
|
|
BEQ NoBlank
|
|
LDA #" "
|
|
STA Name+1,X
|
|
INX
|
|
BRA EndPath0
|
|
|
|
NoBlank REP $30
|
|
LDX #67*$A0+$36+2
|
|
JSR Print
|
|
HEX 0CFF
|
|
TXT "INSERT DISK:";"INSEREZ:"
|
|
HEX 8D
|
|
Name ASC "/ ",0CAA00
|
|
|
|
LDA FlagCont
|
|
BEQ NormalCont
|
|
BRL WriteReturn0
|
|
|
|
NormalCont DO Language
|
|
LDX #8*3+67*$A0+$36+2
|
|
JSR Print
|
|
ASC "PRESS RETURN",8D
|
|
ASC " TO RETRY ",8E
|
|
ASC " OR",8E
|
|
ASC "PRESS ESC",8D
|
|
ASC " TO ABORT",00
|
|
ELSE
|
|
LDX #8*3+67*$A0+$36+5
|
|
JSR Print
|
|
ASC "TAPEZ ENVOI",8D
|
|
ASC " POUR ",8D
|
|
ASC "RE-ESSAYER.",8E
|
|
ASC " OU",8E
|
|
ASC " TAPEZ ESC",8D
|
|
ASC " POUR",8D
|
|
ASC "ABANDONNER."
|
|
HEX 00
|
|
FIN
|
|
|
|
ContErr0 SEP $30
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
]lp2 STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
CMP #"M"&$9F
|
|
BEQ GoRetry
|
|
CMP #$9B
|
|
BNE ]lp2
|
|
REP $30
|
|
SEC
|
|
RTS
|
|
GoRetry INC FlagClean
|
|
REP $30
|
|
CLC
|
|
RTS
|
|
|
|
FatalError SEP $30
|
|
PHA
|
|
AND #$F0
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
JSR Translate
|
|
STA ErrCode
|
|
PLA
|
|
AND #$0F
|
|
JSR Translate
|
|
STA ErrCode+1
|
|
REP $30
|
|
JSR ClearAera
|
|
LDX #91*$A0+$37+4
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT "CAN'T SAVE";"SAUVEGARDE"
|
|
HEX 8D
|
|
TXT "HI-SCORES :";"IMPOSSIBLE"
|
|
HEX 8D8D
|
|
TXT " ERROR $";"ERREUR $"
|
|
ErrCode ASC "??",00
|
|
SEP $30
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
REP $30
|
|
RTS
|
|
|
|
NormalQuit DO vP16 ; Routine pour quitter
|
|
ELSE ;
|
|
SEP $20
|
|
Save35 LDA #0
|
|
STL $E1C035
|
|
Save29 LDA #$41
|
|
STL $E1C029
|
|
Save34 LDA #0
|
|
STL $E1C034
|
|
REP $20
|
|
|
|
LDX #0 ; Remets l'écran tel
|
|
]lp TXY ; qu'il etait pour
|
|
LDA [SaveScreen],Y ; la version CDA
|
|
STAL $E12000,X
|
|
INX
|
|
INX
|
|
BPL ]lp
|
|
FIN ;*F
|
|
|
|
LDA UserId
|
|
PHA
|
|
LDX #$1102 ; Dispose All
|
|
JSL $E10000
|
|
_Err
|
|
|
|
LDA MasterId
|
|
PHA
|
|
LDX #$0302
|
|
JSL $E10000
|
|
_Err
|
|
|
|
DO vP16 ;*D
|
|
|
|
SEP $20
|
|
Save35 LDA #0
|
|
STL $E1C035
|
|
Save29 LDA #$41
|
|
STL $E1C029
|
|
Save34 LDA #0
|
|
STL $E1C034
|
|
REP $20
|
|
|
|
JSL $E100A8
|
|
DA $29
|
|
ADRL QuitRecGS
|
|
QuitRecGS DA 0
|
|
ADRL 0
|
|
DA 0
|
|
ELSE ;*E
|
|
PLB
|
|
PLD
|
|
PLP
|
|
ENDCDA RTL
|
|
FIN ;*F
|
|
|
|
FIN ;*F0
|
|
|
|
|
|
MX %11
|
|
Translate CLC
|
|
ADC #"0"
|
|
CMP #"9"+1
|
|
BCC Chiffre0
|
|
ADC #"A"-"9"-2
|
|
Chiffre0 RTS
|
|
|
|
LevelList DA 01,30 ; Numero du level / Vitesse
|
|
DA 05,25
|
|
DA 10,20
|
|
DA 15,15
|
|
DA 20,10
|
|
DA 25,05
|
|
|
|
Progression LUP 5
|
|
DA 50 ; Nombre de piece pour passer au level
|
|
--^
|
|
LUP 5
|
|
DA 60
|
|
--^
|
|
LUP 5
|
|
DA 70
|
|
--^
|
|
LUP 5
|
|
DA 80
|
|
--^
|
|
DA 080
|
|
DA 090
|
|
DA 100
|
|
DA 110
|
|
DA 120
|
|
|
|
MX %00
|
|
|
|
*-------------------------------------------------
|
|
|
|
* Apres avoir test{ la touche Q, on va tester les autres options
|
|
* qui s'offrent @ nous...
|
|
|
|
NoQuit = *
|
|
|
|
* Touche I = Info
|
|
|
|
CMP #"I"
|
|
BNEL NoInfo
|
|
|
|
JSR ClearAera
|
|
STZ Inv
|
|
LDX #50*$A0+$37-1+2+2
|
|
JSR Print
|
|
HEX 0C99
|
|
TXT "COLUMNS",8D;"REGLES",8D
|
|
TXT "RULES.",8D8D0CFF;"DU JEU.",8D8D8D0CFF
|
|
TXT " <:LEFT",8D;" <:GAUCHE",8D
|
|
TXT " >:RIGHT",8D;" >:DROITE",8D
|
|
TXT " R:ROTATE",8D;" R:PERMUTE",8D
|
|
TXT "SPC:FALL",8D;"ESP:DEPOSE",8D
|
|
TXT " ^R:RESTART",8D;" ^R:REJOUER",8D
|
|
TXT " ^S:NEW PAT",8D;" ^S:FORMES",8D
|
|
TXT " N:NEXT",8D;" N:SUIVANT",8D
|
|
ASC " P:PAUSE",8D8D
|
|
DO Language
|
|
ASC " HAVE FUN !",00
|
|
ELSE
|
|
HEX 8D
|
|
ASC "JOIE",8D
|
|
ASC "DANS LES",8D
|
|
ASC "CHAUMIERES!",00
|
|
FIN
|
|
|
|
EndAbout SEP $20
|
|
STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
REP $20
|
|
BRL ]RestartGame
|
|
|
|
* Touche A = About
|
|
|
|
NoInfo CMP #"A"
|
|
BNEL NoAbout
|
|
|
|
JSR ClearAera
|
|
STZ Inv
|
|
LDX #35*$A0+$37+4
|
|
JSR Print
|
|
DFB $0C,$EE,"F"
|
|
DFB $0C,$CC,"U"
|
|
DFB $0C,$AA,"N"
|
|
DFB $0C,$22
|
|
ASC " COLUMNS",8D8D
|
|
DFB $0C,$FF
|
|
TXT " BY ";"PAR "
|
|
DFB $0C,$DD
|
|
ASC "FTA",8D8D
|
|
DFB $0C,$FF
|
|
ASC "CODING:",8E
|
|
ASC "O. GOGUEL",8D8E
|
|
ASC "DESIGN:",8E
|
|
ASC "O. BAILLY",8D
|
|
ASC " MAITRE",8D8D8D8D
|
|
ASC "VERSION 1.1",8E
|
|
ASC "TOOLBOX-MAG",8E
|
|
TXT " ISSUE: 04";" NUMERO 04"
|
|
DFB $8E
|
|
TXT " 03-FEB-91";" 03-FEV-91"
|
|
DFB $8E,$8D
|
|
ASC " COPYRIGHT",8E
|
|
ASC "FTA/TOOLBOX"
|
|
HEX 0CFF00
|
|
BRL EndAbout
|
|
|
|
* Sinon, il reste les levels...
|
|
|
|
NoAbout CMP #"1"
|
|
BCC NoLevel
|
|
CMP #"6"+1
|
|
BCS NoLevel
|
|
SEC
|
|
SBC #"1"
|
|
ASL
|
|
ASL
|
|
TAX
|
|
LDA LevelList,X
|
|
STA Level0
|
|
TAY
|
|
SED
|
|
LDA #0
|
|
CLC
|
|
]lp ADC #1
|
|
DEY
|
|
BNE ]lp
|
|
CLD
|
|
STA Level
|
|
LDA LevelList+2,X
|
|
STA LevelSpeed
|
|
|
|
BRL StartGame
|
|
|
|
NoLevel BRL WaitKeyPress
|
|
|
|
|
|
*------------------------------------------------- Debut d'une nouvelle partie
|
|
|
|
StartGame STZ Score
|
|
STZ Score+2
|
|
STZ Total
|
|
|
|
STZ ColorDeg
|
|
JSR Degrade
|
|
|
|
JSR GetBarre ; initialise GetBarre
|
|
; pour pouvoir afficher
|
|
; eventuellement le
|
|
; suivant...
|
|
|
|
LDA Level0
|
|
DEC
|
|
ASL
|
|
TAX
|
|
LDA Progression,X
|
|
STA Counter
|
|
|
|
LDX #0
|
|
]lp STZ Table,X
|
|
INX
|
|
INX
|
|
CPX #NbLgn*NbCol
|
|
BCC ]lp
|
|
|
|
REP $30
|
|
|
|
JSR WaitSync
|
|
JSR DrawScreen
|
|
JSR PrintScore
|
|
JSR PrintLevel
|
|
JSR PrintTotal
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
|
|
]newbar = *
|
|
|
|
JSR GetBarre
|
|
JSR PrintNext
|
|
BRL ContGame
|
|
|
|
GetBarre = *
|
|
SEP $30
|
|
LDX #0
|
|
]loop LDA BarreNext,X
|
|
STA Barre,X
|
|
JSR GetAlea
|
|
]lp AND #$7F
|
|
CMP #6
|
|
BCC OkCouleur
|
|
SEC
|
|
SBC #6
|
|
BRA ]lp
|
|
OkCouleur INC
|
|
STA BarreNext,X
|
|
INX
|
|
CPX #3
|
|
BNE ]loop
|
|
REP $30
|
|
RTS
|
|
*
|
|
|
|
NoNext LDX #0
|
|
]lp2 PHX
|
|
LDY #6
|
|
]lp LDAL 85*$A0+Screen-20+128,X
|
|
STAL 85*$A0+Screen+128,X
|
|
INX
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
PLA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
CPX #41*$A0
|
|
BNE ]lp2
|
|
STZ AlreadyNext
|
|
RTS
|
|
|
|
* Affichage de l'element suivant ou non selon le flag NextMode
|
|
|
|
|
|
PrintNext BIT NextMode
|
|
BPL NoNext
|
|
BIT AlreadyNext
|
|
BMI Already_La
|
|
LDA #$FFFF
|
|
STA BlackMode
|
|
LDA #85
|
|
STA Lgn
|
|
LDA #128
|
|
STA Col
|
|
LDA #38
|
|
STA ZNbLgn
|
|
LDA #9
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
Already_La STZ BlackMode
|
|
LDA #$FFFF
|
|
STA AlreadyNext
|
|
|
|
LDA #88*$A0+130-Center
|
|
STA Buf
|
|
|
|
LDX #0
|
|
]lp PHX
|
|
LDA BarreNext,X
|
|
AND #$00FF
|
|
ASL
|
|
TAY
|
|
STZ Msk0
|
|
LDX Buf
|
|
JSR PrintOnePat
|
|
LDA Buf
|
|
CLC
|
|
ADC #HautCase*$A0
|
|
STA Buf
|
|
PLX
|
|
INX
|
|
CPX #3
|
|
BNE ]lp
|
|
|
|
RTS
|
|
|
|
* C'est dur de suivre quand il y a des sous-routines au milieu de la
|
|
* boucle principale, n'est-il pas ?
|
|
|
|
|
|
ContGame JSR GetAlea
|
|
|
|
* On choisit aleatoirement une colonne de départ pour le nouvel élément...
|
|
|
|
AND #$1F
|
|
]lp CMP #NbCol
|
|
BCC OkCol
|
|
SEC
|
|
SBC #NbCol
|
|
BRA ]lp
|
|
OkCol STA BarreCol
|
|
STA BarreCol0
|
|
|
|
STZ BarreLgn
|
|
|
|
* On vérifie que l'on peut l'afficher entierement, cad qu'il n'y ait rien
|
|
* juste en dessous...
|
|
|
|
]loop JSR GetBarreAdr
|
|
TAX
|
|
STX BarrePos
|
|
SEP $20
|
|
LDA Table,X
|
|
AND #$0F
|
|
BNE Over0
|
|
LDA Table+NbCol,X
|
|
AND #$0F
|
|
BNE Over0
|
|
LDA Table+NbCol+NbCol,X
|
|
AND #$0F
|
|
BEQ GoodCol
|
|
|
|
* Si on ne peut l'afficher, on va essayer avec la colonne voisine...
|
|
|
|
Over0 INC BarreCol
|
|
LDA BarreCol
|
|
CMP #NbCol
|
|
BNE NoFin
|
|
STZ BarreCol
|
|
LDA #0
|
|
NoFin CMP BarreCol0
|
|
BNE ]loop
|
|
|
|
|
|
* Si on n'a trouvé aucune colonne de libre, alors ...
|
|
|
|
BRL GameOver
|
|
|
|
GoodCol = *
|
|
|
|
*------------------------------------------------- Boucle principale
|
|
|
|
]mainloop REP $30
|
|
STZ Msk
|
|
JSR StoreBarre
|
|
JSR DrawScreen
|
|
LDA LevelSpeed
|
|
STA CycleCount
|
|
]lp JSR TestKey
|
|
BCC Nothing
|
|
JSR ClearBarre
|
|
JSR StoreBarre
|
|
JSR DrawScreen
|
|
Nothing JSR WaitSync
|
|
DEC CycleCount
|
|
BNE ]lp
|
|
JSR TestDown
|
|
BNEL Down
|
|
JSR ClearBarre
|
|
INC BarreLgn
|
|
JSR StoreBarre
|
|
BRL ]mainloop
|
|
|
|
*------------------------------------------------- Fin du jeu...
|
|
|
|
GameOver REP $30
|
|
|
|
LDA #$FFFF
|
|
STA Inv
|
|
|
|
LDA #92
|
|
STA Lgn
|
|
LDA #$3B
|
|
STA Col
|
|
LDA #14
|
|
STA ZNbLgn
|
|
LDA #$29
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
LDX #96+1*$A0+$3E
|
|
JSR Print
|
|
HEX 0C11
|
|
ASC "GAME OVER",00
|
|
|
|
JSR CheckHighScore
|
|
BCS NoHigh
|
|
|
|
BRL ]RestartGame
|
|
|
|
NoHigh SEP $20
|
|
STL $E1C010
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
REP $20
|
|
|
|
BRL ]RestartGame
|
|
|
|
*-------------------------------------------------
|
|
|
|
NextPos INC Col0
|
|
LDA Col0
|
|
CMP #NbCol
|
|
BNE MoreTest
|
|
STZ Col0
|
|
INC Lgn0
|
|
LDA Lgn0
|
|
CMP #NbLgn
|
|
BNE MoreTest
|
|
|
|
LDA Flag
|
|
BEQ PoorPlayer
|
|
|
|
JSR SecondAction
|
|
|
|
BRA Down
|
|
|
|
PoorPlayer BRL ]newbar
|
|
|
|
*------------------------------------------------- Routine de recherche
|
|
* pour l'elimination des
|
|
* briques...
|
|
|
|
Down STZ Lgn0
|
|
STZ Col0
|
|
STZ Flag
|
|
|
|
SED
|
|
LDA Score
|
|
CLC
|
|
ADC #5
|
|
STA Score
|
|
LDA Score+2
|
|
ADC #0
|
|
STA Score+2
|
|
CLD
|
|
|
|
JSR PrintScore
|
|
|
|
MoreTest LDA Lgn0
|
|
ASL
|
|
TAX
|
|
LDA MulLgn,X
|
|
CLC
|
|
ADC Col0
|
|
TAX
|
|
LDA Table,X
|
|
AND #$1F
|
|
BEQ NextPos
|
|
BIT #$10
|
|
BNE NextPos
|
|
STA CaseTest
|
|
|
|
STZ Buf ; 4 grandes direction
|
|
|
|
]looping STZ Compteur
|
|
|
|
]loop LDA Lgn0
|
|
STA Lgn
|
|
LDA Col0
|
|
STA Col
|
|
|
|
]lp LDX Buf
|
|
JSR (GetList,X)
|
|
CMP #$FFFF
|
|
BEQ NextDirection
|
|
LDA Lgn
|
|
ASL
|
|
TAX
|
|
LDA MulLgn,X
|
|
CLC
|
|
ADC Col
|
|
TAX
|
|
LDA Table,X
|
|
AND #$0F
|
|
CMP CaseTest
|
|
BNE NextDirection
|
|
|
|
TXA
|
|
LDX Compteur
|
|
STA CaseList,X
|
|
INX
|
|
INX
|
|
STX Compteur
|
|
BRA ]lp
|
|
|
|
NextDirection LDA Buf
|
|
INC
|
|
INC
|
|
STA Buf
|
|
AND #%0000_0010
|
|
BNE ]loop
|
|
|
|
LDA Compteur
|
|
CMP #2*2
|
|
BCC No3Barre
|
|
|
|
LDX Compteur
|
|
]lp DEX
|
|
DEX
|
|
BMI EndKill
|
|
PHX
|
|
LDA CaseList,X
|
|
TAX
|
|
LDA Table,X
|
|
ORA #$0010
|
|
AND #$FF7F
|
|
STA Table,X
|
|
INC Flag
|
|
PLX
|
|
BRA ]lp
|
|
|
|
EndKill LDA Lgn0
|
|
ASL
|
|
TAX
|
|
LDA MulLgn,X
|
|
CLC
|
|
ADC Col0
|
|
TAX
|
|
LDA Table,X
|
|
ORA #$0010
|
|
AND #$FF7F
|
|
STA Table,X
|
|
|
|
No3Barre LDA Buf
|
|
CMP #16
|
|
BNE ]looping
|
|
|
|
BRL NextPos
|
|
|
|
SecondAction = *
|
|
STZ Msk
|
|
]lp JSR DrawScreen
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
LDA Msk
|
|
INC
|
|
INC
|
|
STA Msk
|
|
CMP #7*2
|
|
BNE ]lp
|
|
|
|
REP $30
|
|
|
|
LDA PtrPatPos
|
|
CMP #4*2
|
|
BEQ NoBlanc0
|
|
|
|
JSR StoreBlanc
|
|
|
|
NoBlanc0 LDA #2
|
|
STA Msk
|
|
|
|
LDA #6*2
|
|
STA Msk
|
|
|
|
]lp LDA Msk
|
|
DEC
|
|
DEC
|
|
STA Msk
|
|
BMI Out
|
|
|
|
JSR DrawScreen
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
BRA ]lp
|
|
|
|
StoreBlanc SEP $30
|
|
LDX #0
|
|
]lp LDA Table,X
|
|
BIT #%0001_0000
|
|
BEQ NoOff0
|
|
ORA #%0001_0111
|
|
NoOff0 STA Table,X
|
|
INX
|
|
CPX #NbLgn*NbCol
|
|
BNE ]lp
|
|
REP $30
|
|
RTS
|
|
|
|
Out = *
|
|
|
|
LDA PtrPatPos
|
|
CMP #4*2
|
|
BNE NoBlanc
|
|
|
|
JSR StoreBlanc
|
|
|
|
NoBlanc LDA #2
|
|
STA Msk
|
|
|
|
]lp JSR DrawScreen
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
LDA Msk
|
|
INC
|
|
INC
|
|
STA Msk
|
|
CMP #7*2
|
|
BNE ]lp
|
|
|
|
STZ Buf
|
|
|
|
SEP $30
|
|
|
|
LDX #0
|
|
]lp LDA Table,X
|
|
BIT #%0001_0000
|
|
BEQ NoCl
|
|
STZ Table,X
|
|
INC Buf
|
|
LDA Buf
|
|
PHA
|
|
PHX
|
|
REP $30
|
|
DEC Counter
|
|
BNE NoNewLevel
|
|
INC ColorDeg
|
|
LDA ColorDeg
|
|
CMP #7
|
|
BNE NoNewColor
|
|
STZ ColorDeg
|
|
NoNewColor JSR Degrade
|
|
INC Level0
|
|
LDA Level0
|
|
DEC
|
|
ASL
|
|
TAX
|
|
LDA Progression,X
|
|
STA Counter
|
|
LDA LevelSpeed
|
|
CMP #1
|
|
BEQ NoNewLevel
|
|
DEC LevelSpeed
|
|
SED
|
|
LDA Level
|
|
CLC
|
|
ADC #1
|
|
STA Level
|
|
CLD
|
|
JSR PrintLevel
|
|
NoNewLevel = *
|
|
SED
|
|
LDA Total
|
|
CLC
|
|
ADC #1
|
|
STA Total
|
|
SEP $30
|
|
CLD
|
|
PLX
|
|
PLA
|
|
STA Buf
|
|
NoCl INX
|
|
CPX #NbCol*NbLgn
|
|
BNE ]lp
|
|
REP $30
|
|
|
|
LDA Buf
|
|
CMP #3
|
|
BCC NoBonus
|
|
CMP #12
|
|
BCC NoMaxBonus
|
|
LDA #11
|
|
NoMaxBonus SEC
|
|
SBC #3
|
|
ASL
|
|
TAX
|
|
SED
|
|
LDA Score
|
|
CLC
|
|
ADC ScorePerBrick,X
|
|
STA Score
|
|
LDA Score+2
|
|
ADC #0
|
|
STA Score+2
|
|
CLD
|
|
|
|
NoBonus JSR DrawScreen
|
|
JSR PrintTotal
|
|
JSR PrintScore
|
|
JSR WaitSync
|
|
|
|
SEP $30
|
|
|
|
STZ Pnt
|
|
|
|
]newcol LDX Pnt
|
|
]lp LDA Table,X
|
|
AND #$0F
|
|
BNE FoundTop
|
|
TXA
|
|
CLC
|
|
ADC #NbCol
|
|
TAX
|
|
CMP #NbLgn-1*NbCol
|
|
BCC ]lp
|
|
|
|
BRA NextCol
|
|
|
|
FoundTop STX Buf
|
|
|
|
LDA #NbLgn-1*NbCol
|
|
CLC
|
|
ADC Pnt
|
|
TAX
|
|
|
|
]lp CPX Buf
|
|
BEQ NextCol
|
|
|
|
LDA Table,X
|
|
AND #$0F
|
|
BNE SomethingUnder
|
|
|
|
PHX
|
|
]notop LDA Table-NbCol,X
|
|
AND #%0000_1111
|
|
STA Table,X
|
|
TXA
|
|
SEC
|
|
SBC #NbCol
|
|
TAX
|
|
CPX Buf
|
|
BNE ]notop
|
|
|
|
STZ Table,X
|
|
|
|
LDA Buf ; Descend le plafond de 1 ligne
|
|
CLC
|
|
ADC #NbCol
|
|
STA Buf
|
|
PLX
|
|
BRA ]lp
|
|
|
|
SomethingUnder TXA
|
|
SEC
|
|
SBC #NbCol
|
|
TAX
|
|
BRA ]lp
|
|
|
|
NextCol INC Pnt
|
|
LDA Pnt
|
|
CMP #NbCol
|
|
BNE ]newcol
|
|
|
|
EndDisap REP $30
|
|
|
|
JSR DrawScreen
|
|
|
|
JSR WaitSync
|
|
JSR WaitSync
|
|
RTS
|
|
|
|
|
|
* Test dans chacune des directions...
|
|
|
|
GetList DA Get1
|
|
DA Get9
|
|
DA Get2
|
|
DA Get8
|
|
DA Get3
|
|
DA Get7
|
|
DA Get4
|
|
DA Get6
|
|
|
|
Get1 LDA Lgn
|
|
BEQ OutCadre
|
|
LDA Col
|
|
BEQ OutCadre
|
|
DEC Lgn
|
|
DEC Col
|
|
RTS
|
|
Get2 LDA Lgn
|
|
BEQ OutCadre
|
|
DEC Lgn
|
|
RTS
|
|
Get3 LDA Lgn
|
|
BEQ OutCadre
|
|
LDA Col
|
|
CMP #NbCol-1
|
|
BEQ OutCadre
|
|
DEC Lgn
|
|
INC Col
|
|
RTS
|
|
Get4 LDA Col
|
|
BEQ OutCadre
|
|
DEC Col
|
|
RTS
|
|
OutCadre LDA #$FFFF
|
|
RTS
|
|
Get6 LDA Col
|
|
CMP #NbCol-1
|
|
BEQ OutCadre
|
|
INC Col
|
|
RTS
|
|
Get7 LDA Col
|
|
BEQ OutCadre
|
|
LDA Lgn
|
|
CMP #NbLgn-1
|
|
BEQ OutCadre
|
|
INC Lgn
|
|
DEC Col
|
|
RTS
|
|
Get8 LDA Lgn
|
|
CMP #NbLgn-1
|
|
BEQ OutCadre
|
|
INC Lgn
|
|
RTS
|
|
Get9 LDA Lgn
|
|
CMP #NbLgn-1
|
|
BEQ OutCadre
|
|
LDA Col
|
|
CMP #NbCol-1
|
|
BEQ OutCadre
|
|
INC Lgn
|
|
INC Col
|
|
RTS
|
|
|
|
|
|
TestKey SEP $20
|
|
LDL $E1C000
|
|
STL $E1C010
|
|
REP $20
|
|
AND #$00FF
|
|
CMP #$0080
|
|
BCS SomeKey0
|
|
BRL NoKey
|
|
|
|
SomeKey0 CMP #"R"&$9F
|
|
BNE NoAbandon
|
|
PLA
|
|
STZ Score
|
|
STZ Score+2
|
|
BRL GameOver
|
|
|
|
NoAbandon = *
|
|
CMP #"S"&$9F
|
|
BNE NoSwitchPat
|
|
|
|
]lp LDX PtrPatPos
|
|
LDA PatternList,X
|
|
BNE SameList
|
|
STZ PtrPatPos
|
|
BRA ]lp
|
|
SameList STA PtrPattern
|
|
LDA MskList,X
|
|
STA PtrPtrMsk
|
|
INC PtrPatPos
|
|
INC PtrPatPos
|
|
|
|
DrawGame SEP $30
|
|
LDX #0
|
|
]lp LDA Table,X
|
|
AND #%0111_1111
|
|
STA Table,X
|
|
INX
|
|
CPX #NbCol*NbLgn
|
|
BNE ]lp
|
|
REP $30
|
|
|
|
JSR PrintNext
|
|
|
|
SEC
|
|
RTS
|
|
|
|
NoSwitchPat CMP #"4"
|
|
BEQ GLeft
|
|
CMP #"J"
|
|
BEQ GLeft
|
|
CMP #"H"&$9F
|
|
BNE NoLeft
|
|
|
|
GLeft LDA BarreCol
|
|
BEQ NoKey0
|
|
|
|
JSR GetBarreAdr
|
|
DEC
|
|
JSR TestLR
|
|
BNE NoKey0
|
|
|
|
DEC BarreCol
|
|
SEC
|
|
RTS
|
|
|
|
NoKey0 CLC
|
|
RTS
|
|
|
|
NoLeft CMP #"L"
|
|
BEQ GRight
|
|
CMP #"6"
|
|
BEQ GRight
|
|
CMP #"U"&$9F
|
|
BNE NoRight
|
|
|
|
GRight LDA BarreCol
|
|
CMP #NbCol-1
|
|
BEQ NoKey0
|
|
|
|
JSR GetBarreAdr
|
|
INC
|
|
JSR TestLR
|
|
BNE NoKey0
|
|
|
|
INC BarreCol
|
|
SEC
|
|
RTS
|
|
|
|
NoRight CMP #"R"
|
|
BNE NoRotate
|
|
GRotate SEP $20
|
|
LDA Barre
|
|
PHA
|
|
LDA Barre+1
|
|
STA Barre
|
|
LDA Barre+2
|
|
STA Barre+1
|
|
PLA
|
|
STA Barre+2
|
|
REP $20
|
|
SEC
|
|
RTS
|
|
|
|
NoRotate CMP #"K"
|
|
BEQ GFall
|
|
CMP #"5"
|
|
BEQ GFall
|
|
CMP #" "
|
|
BNE NoSpace
|
|
|
|
GFall = *
|
|
]lp JSR TestDown
|
|
BNE FoundDown
|
|
INC BarreLgn
|
|
BRA ]lp
|
|
FoundDown LDA #1
|
|
STA CycleCount
|
|
SEC
|
|
RTS
|
|
|
|
NoSpace = *
|
|
CMP #"N"
|
|
BNE NoN
|
|
LDA NextMode
|
|
EOR #$FFFF
|
|
STA NextMode
|
|
JSR PrintNext
|
|
CLC
|
|
RTS
|
|
|
|
NoN CMP #"P"
|
|
BNE NoPause
|
|
|
|
LDX #0
|
|
]lp2 PHX
|
|
LDY #NbCol*LargCase/4
|
|
LDA #0
|
|
]lp STAL Screen+Center,X
|
|
INX
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
PLA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
CPX #NbLgn*HautCase*$A0
|
|
BNE ]lp2
|
|
|
|
LDA #$FFFF
|
|
STA Inv
|
|
|
|
LDA #92
|
|
STA Lgn
|
|
LDA #$3B
|
|
STA Col
|
|
LDA #14
|
|
STA ZNbLgn
|
|
LDA #$29
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
LDX #96+1*$A0+$3E
|
|
JSR Print
|
|
HEX 0C11
|
|
ASC "> PAUSE <",0CFF00
|
|
|
|
SEP $20
|
|
]lp LDL $E1C025
|
|
BIT #%0000_1000
|
|
BNE ]lp
|
|
]lp2 STL $E1C010
|
|
]lp LDL $E1C000
|
|
BPL ]lp
|
|
STL $E1C010
|
|
REP $20
|
|
|
|
BRL DrawGame
|
|
|
|
NoPause CMP #"X"&$9F
|
|
BNE No_XCol
|
|
LDA XColor
|
|
EOR #7
|
|
STA XColor
|
|
JSR Degrade
|
|
CLC
|
|
RTS
|
|
|
|
No_XCol CMP #"C"&$9F
|
|
BNE NoDegCol
|
|
INC ColorDeg
|
|
LDA ColorDeg
|
|
CMP #7
|
|
BNE NoNewDeg0
|
|
STZ ColorDeg
|
|
NoNewDeg0 JSR Degrade
|
|
CLC
|
|
RTS
|
|
NoDegCol
|
|
NoKey = *
|
|
CLC
|
|
RTS
|
|
|
|
TestDown LDA BarreLgn
|
|
CMP #NbLgn-3
|
|
BEQ Down0
|
|
JSR GetBarreAdr
|
|
TAX
|
|
LDA Table+NbCol+NbCol+NbCol,X
|
|
AND #$000F
|
|
RTS
|
|
Down0 LDA #$FFFF
|
|
RTS
|
|
|
|
WaitSync PHP
|
|
SEP $20
|
|
]lp LDL $E1C02E
|
|
CMP #$F0
|
|
BCC ]lp
|
|
]lp LDL $E1C02E
|
|
CMP #$F0
|
|
BCS ]lp
|
|
PLP
|
|
RTS
|
|
|
|
TestLR TAX
|
|
SEP $20
|
|
LDA Table,X
|
|
ORA NbCol+Table,X
|
|
ORA NbCol+NbCol+Table,X
|
|
REP $20
|
|
AND #$000F
|
|
RTS
|
|
|
|
GetAlea PHP
|
|
SEP $20
|
|
LDL $E1C02E
|
|
EOR AleaGen
|
|
ADC AleaGen
|
|
INC AleaGen
|
|
DO vP8
|
|
SBC $C02F
|
|
ELSE
|
|
SBCL $E1C02F
|
|
FIN
|
|
ROR
|
|
ROR
|
|
ROR AleaGen
|
|
ROR
|
|
DO vP8
|
|
EOR $C02E
|
|
ADC $C02F
|
|
ELSE
|
|
EORL $E1C02E
|
|
ADCL $E1C02F
|
|
FIN
|
|
PLP
|
|
RTS
|
|
|
|
MX %00
|
|
|
|
GetBarreAdr LDA BarreLgn
|
|
ASL
|
|
TAX
|
|
LDA MulLgn,X
|
|
CLC
|
|
ADC BarreCol
|
|
RTS
|
|
|
|
StoreBarre JSR GetBarreAdr
|
|
TAX
|
|
STX BarrePos
|
|
SEP $20
|
|
LDA Table,X
|
|
AND #$0F
|
|
BNE Over
|
|
LDA Barre
|
|
STA Table,X
|
|
LDA Table+NbCol,X
|
|
AND #$0F
|
|
BNE Over
|
|
LDA Barre+1
|
|
STA Table+NbCol,X
|
|
LDA Table+NbCol+NbCol,X
|
|
AND #$0F
|
|
BNE Over
|
|
LDA Barre+2
|
|
STA Table+NbCol+NbCol,X
|
|
REP $20
|
|
CLC
|
|
RTS
|
|
Over REP $20
|
|
SEC
|
|
RTS
|
|
|
|
ClearBarre LDX BarrePos
|
|
SEP $20
|
|
STZ Table,X
|
|
STZ Table+NbCol,X
|
|
STZ Table+NbCol+NbCol,X
|
|
REP $20
|
|
RTS
|
|
|
|
|
|
CaseAdr = *
|
|
]A = 0
|
|
LUP NbLgn
|
|
DA 0*LargCase/2+]A
|
|
DA 1*LargCase/2+]A
|
|
DA 2*LargCase/2+]A
|
|
DA 3*LargCase/2+]A
|
|
DA 4*LargCase/2+]A
|
|
DA 5*LargCase/2+]A
|
|
DA 6*LargCase/2+]A
|
|
DA 7*LargCase/2+]A
|
|
]A = HautCase*$A0+]A
|
|
--^
|
|
|
|
MulLgn = *
|
|
]A = 0
|
|
LUP NbLgn
|
|
DA ]A
|
|
]A = ]A+NbCol
|
|
--^
|
|
|
|
|
|
ClearAera LDX #0
|
|
]lp STZ Table,X
|
|
INX
|
|
INX
|
|
CPX #NbLgn*NbCol
|
|
BCC ]lp
|
|
JSR DrawScreen
|
|
RTS
|
|
|
|
|
|
*------------------------------------------------- Routine d'affichage
|
|
* "intelligente"
|
|
|
|
DrawScreen STZ Pnt
|
|
BRA ContDraw
|
|
|
|
PlotNothing INC Pnt
|
|
LDA Pnt
|
|
CMP #NbLgn*NbCol
|
|
BNE ContDraw
|
|
RTS
|
|
|
|
ContDraw LDX Pnt
|
|
LDA Table,X
|
|
BIT #%0000_0000_0001_0000
|
|
BNE SpecialPlot
|
|
BIT #%0000_0000_1000_0000
|
|
BNE PlotNothing
|
|
ORA #%0000_0000_1000_0000
|
|
STA Table,X
|
|
LDX #0
|
|
AND #%0000_0000_0001_1111
|
|
BRA NoSpecial
|
|
SpecialPlot LDX Msk
|
|
AND #%0000_0000_0000_1111
|
|
NoSpecial STX Msk0
|
|
ASL
|
|
TAY
|
|
LDA Pnt
|
|
ASL
|
|
TAX
|
|
LDA CaseAdr,X
|
|
TAX
|
|
JSR PrintOnePat
|
|
BRA PlotNothing
|
|
|
|
PrintOnePat LDA (PtrPattern),Y
|
|
STA PtrShp
|
|
LDY Msk0
|
|
LDA (PtrPtrMsk),Y
|
|
STA PtrMsk
|
|
LDA #0
|
|
TAY
|
|
]lp PHA
|
|
LDA (PtrShp),Y
|
|
AND (PtrMsk),Y
|
|
STAL Screen+Center,X
|
|
INY
|
|
INY
|
|
LDA (PtrShp),Y
|
|
AND (PtrMsk),Y
|
|
STAL Screen+Center+2,X
|
|
INY
|
|
INY
|
|
LDA (PtrShp),Y
|
|
AND (PtrMsk),Y
|
|
STAL Screen+Center+4,X
|
|
INY
|
|
INY
|
|
TXA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
PLA
|
|
INC
|
|
CMP #HautCase
|
|
BNE ]lp
|
|
RTS
|
|
|
|
*------------------------------------------------- Routine de window...
|
|
|
|
ColorIn = $FF
|
|
ColorOut = $00
|
|
|
|
Window PHP
|
|
LDA Lgn
|
|
ASL
|
|
ASL
|
|
ASL
|
|
ASL
|
|
ASL
|
|
PHA
|
|
ASL
|
|
ASL
|
|
CLC
|
|
ADC $01,S
|
|
PLY
|
|
CLC
|
|
ADC #$2000
|
|
STA Pnt
|
|
LDA #$E1
|
|
STA Pnt+2
|
|
|
|
SEP $30
|
|
|
|
LDX ZNbCol
|
|
LDY Col
|
|
LDA #ColorOut
|
|
EOR BlackMode
|
|
]lp STA [Pnt],Y
|
|
INY
|
|
DEX
|
|
BPL ]lp
|
|
|
|
JSR AUG_LGN
|
|
|
|
DEC ZNbLgn
|
|
|
|
STZ Buf
|
|
|
|
]loop LDX ZNbCol
|
|
LDY Col
|
|
LDA #ColorOut&$F0+ColorIn&$0F
|
|
EOR BlackMode
|
|
STA [Pnt],Y
|
|
]lp INY
|
|
DEX
|
|
BEQ END_W2
|
|
LDA #ColorIn
|
|
EOR BlackMode
|
|
STA [Pnt],Y
|
|
BRA ]lp
|
|
|
|
END_W2 LDA #ColorOut&$0F+ColorIn&$F0
|
|
EOR BlackMode
|
|
STA [Pnt],Y
|
|
|
|
LDA Buf
|
|
CMP #$03
|
|
BCC NADA2
|
|
|
|
INY
|
|
LDA #ColorOut
|
|
STA [Pnt],Y
|
|
|
|
NADA2 JSR AUG_LGN
|
|
|
|
INC Buf
|
|
DEC ZNbLgn
|
|
BNE ]loop
|
|
|
|
LDY Col
|
|
LDX ZNbCol
|
|
LDA #ColorOut
|
|
EOR BlackMode
|
|
]loop STA [Pnt],Y
|
|
INY
|
|
DEX
|
|
BPL ]loop
|
|
LDA #ColorOut
|
|
STA [Pnt],Y
|
|
|
|
LDX #$02
|
|
]loop2 PHX
|
|
|
|
JSR AUG_LGN
|
|
|
|
LDX ZNbCol
|
|
LDY Col
|
|
INY
|
|
INY
|
|
DEX
|
|
LDA #ColorOut
|
|
]loop STA [Pnt],Y
|
|
INY
|
|
DEX
|
|
CPX #$FF
|
|
BNE ]loop
|
|
|
|
PLX
|
|
DEX
|
|
BNE ]loop2
|
|
PLP
|
|
RTS
|
|
|
|
AUG_LGN REP $30
|
|
LDA Pnt
|
|
CLC
|
|
ADC #$00A0
|
|
STA Pnt
|
|
SEP $30
|
|
RTS
|
|
|
|
MX %00
|
|
|
|
*------------------------------------------------- Routine d'affichage texte
|
|
|
|
Print PLA
|
|
STA Msg
|
|
JSR Print0
|
|
LDA Msg
|
|
PHA
|
|
RTS
|
|
|
|
Print_Rout = *
|
|
DEC
|
|
STA Msg
|
|
Print0 = *
|
|
]lp2 STX XValue
|
|
]lp INC Msg
|
|
LDA !$0000
|
|
Msg = *-2
|
|
TAY
|
|
AND #$00FF
|
|
BEQ EndPrint
|
|
CMP #$0C
|
|
BEQ Change_Color
|
|
CMP #$8D
|
|
BEQ NewLine
|
|
CMP #$8E
|
|
BEQ HalfLine
|
|
JSR Print_Char
|
|
BRA ]lp
|
|
Change_Color TYA
|
|
XBA
|
|
SEP $20
|
|
STA ColorF+1
|
|
REP $20
|
|
INC Msg
|
|
BRA ]lp
|
|
HalfLine LDA XValue
|
|
CLC
|
|
ADC #9*$A0
|
|
TAX
|
|
BRA ]lp2
|
|
NewLine LDA #0
|
|
XValue = *-2
|
|
CLC
|
|
ADC #7*$A0
|
|
TAX
|
|
BRA ]lp2
|
|
EndPrint LDA XValue
|
|
CLC
|
|
ADC #8*$A0
|
|
TAX
|
|
RTS
|
|
|
|
Special DFB " ",".",":","-","$","#","<",">","!","^","/","'"
|
|
|
|
Print_Char SEP $20
|
|
LDY #11
|
|
]lp CMP Special,Y
|
|
BEQ GoSpecial
|
|
DEY
|
|
BPL ]lp
|
|
BRA GoNormal
|
|
GoSpecial TYA
|
|
PHA
|
|
PHA
|
|
ASL
|
|
ASL
|
|
CLC
|
|
ADC $01,S
|
|
PLY
|
|
TAY
|
|
REP $20
|
|
AND #$00FF
|
|
CLC
|
|
ADC #Font
|
|
BRA EndGetC
|
|
|
|
GoNormal REP $20
|
|
CMP #"A"
|
|
BCC GetChiffre
|
|
SEC
|
|
SBC #"A"
|
|
LDY #Lettre
|
|
BRA ContGetC
|
|
GetChiffre SEC
|
|
SBC #"0"
|
|
LDY #Chiffre
|
|
ContGetC STY PatchDeb+1
|
|
PHA
|
|
ASL
|
|
ASL
|
|
CLC
|
|
ADC $01,S
|
|
PatchDeb ADC #0
|
|
PLY
|
|
|
|
EndGetC STA Font_Adr
|
|
LDA #5
|
|
]lp2 PHA
|
|
PHX
|
|
LDA !$0000
|
|
Font_Adr = *-2
|
|
INC Font_Adr
|
|
LDY #4
|
|
]lp PHY
|
|
PHA
|
|
LDY #0
|
|
BIT #%0100_0000
|
|
BEQ No_Left
|
|
LDY #$0F
|
|
No_Left BIT #%1000_0000
|
|
BEQ No_Right
|
|
TYA
|
|
ORA #$F0
|
|
TAY
|
|
No_Right TYA
|
|
SEP $20
|
|
ColorF AND #$FF
|
|
NoI0 LDY Inv
|
|
BEQ noinv
|
|
LDY ColorF
|
|
CPY #$FF29
|
|
BNE noinv0
|
|
EOR #$FF
|
|
BRA noinv
|
|
noinv0 TAY
|
|
AND #$0F
|
|
BNE ok0
|
|
TYA
|
|
ORA #$0F
|
|
TAY
|
|
ok0 TYA
|
|
AND #$F0
|
|
BNE ok1
|
|
TYA
|
|
ORA #$F0
|
|
TAY
|
|
ok1 TYA
|
|
noinv STAL $E12000,x
|
|
REP $20
|
|
INX
|
|
PLA
|
|
ASL
|
|
ASL
|
|
PLY
|
|
DEY
|
|
BNE ]lp
|
|
PLA
|
|
CLC
|
|
ADC #$A0
|
|
TAX
|
|
PLA
|
|
DEC
|
|
BNE ]lp2
|
|
TXA
|
|
SEC
|
|
SBC #5*$A0-4
|
|
TAX
|
|
RTS
|
|
|
|
*------------------------------------------------- Police
|
|
|
|
Font DFB %00000000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %00011000
|
|
DFB %00011000
|
|
|
|
DFB %00000000
|
|
DFB %00011000
|
|
DFB %00000000
|
|
DFB %00011000
|
|
DFB %00000000
|
|
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %01111100
|
|
DFB %00000000
|
|
DFB %00000000
|
|
|
|
DFB %01111110
|
|
DFB %11010000
|
|
DFB %01111100
|
|
DFB %00010110
|
|
DFB %11111100
|
|
|
|
DFB %11111110
|
|
DFB %11111110
|
|
DFB %11111110
|
|
DFB %11111110
|
|
DFB %11111110
|
|
|
|
DFB %00011000
|
|
DFB %00110000
|
|
DFB %01111110
|
|
DFB %00110000
|
|
DFB %00011000
|
|
|
|
DFB %00011000
|
|
DFB %00001100
|
|
DFB %01111110
|
|
DFB %00001100
|
|
DFB %00011000
|
|
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %00000000
|
|
DFB %00011000
|
|
|
|
DFB %00011000
|
|
DFB %00111100
|
|
DFB %01100110
|
|
DFB %00000000
|
|
DFB %00000000
|
|
|
|
DFB %00000110
|
|
DFB %00001100
|
|
DFB %00011000
|
|
DFB %00110000
|
|
DFB %01100000
|
|
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
DFB %00000000
|
|
|
|
|
|
Chiffre DFB %01111110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11111100
|
|
|
|
DFB %01111000
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %01111100
|
|
|
|
DFB %11111100
|
|
DFB %00000110
|
|
DFB %01111100
|
|
DFB %11000000
|
|
DFB %01111110
|
|
|
|
DFB %11111100
|
|
DFB %00000110
|
|
DFB %00011100
|
|
DFB %00000110
|
|
DFB %11111100
|
|
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11111110
|
|
DFB %00000110
|
|
DFB %00000110
|
|
|
|
DFB %11111110
|
|
DFB %11000000
|
|
DFB %11111100
|
|
DFB %00000110
|
|
DFB %11111100
|
|
|
|
DFB %01111110
|
|
DFB %11000000
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %01111100
|
|
|
|
DFB %11111110
|
|
DFB %00001100
|
|
DFB %00011000
|
|
DFB %00011000
|
|
DFB %00011000
|
|
|
|
DFB %01111100
|
|
DFB %11000110
|
|
DFB %01111100
|
|
DFB %11000110
|
|
DFB %01111100
|
|
|
|
DFB %01111100
|
|
DFB %11000110
|
|
DFB %01111110
|
|
DFB %00000110
|
|
DFB %00000110
|
|
|
|
Lettre DFB %01111100
|
|
DFB %11000110
|
|
DFB %11111110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11111100
|
|
|
|
DFB %01111110
|
|
DFB %11000000
|
|
DFB %11000000
|
|
DFB %11000000
|
|
DFB %01111110
|
|
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11111100
|
|
|
|
DFB %11111110
|
|
DFB %11000000
|
|
DFB %11110000
|
|
DFB %11000000
|
|
DFB %11111110
|
|
|
|
DFB %11111110
|
|
DFB %11000000
|
|
DFB %11110000
|
|
DFB %11000000
|
|
DFB %11000000
|
|
|
|
DFB %01111110
|
|
DFB %11000000
|
|
DFB %11001110
|
|
DFB %11000110
|
|
DFB %01111110
|
|
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11111110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
|
|
DFB %11111100
|
|
DFB %00110000
|
|
DFB %00110000
|
|
DFB %00110000
|
|
DFB %11111100
|
|
|
|
DFB %00000110
|
|
DFB %00000110
|
|
DFB %00000110
|
|
DFB %11000110
|
|
DFB %01111100
|
|
|
|
DFB %11000110
|
|
DFB %11001100
|
|
DFB %11111000
|
|
DFB %11001100
|
|
DFB %11000110
|
|
|
|
DFB %11000000
|
|
DFB %11000000
|
|
DFB %11000000
|
|
DFB %11000000
|
|
DFB %11111110
|
|
|
|
DFB %11000110
|
|
DFB %11111110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
|
|
DFB %11000110
|
|
DFB %11110110
|
|
DFB %11011110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
|
|
DFB %01111100
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %01111100
|
|
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11111100
|
|
DFB %11000000
|
|
DFB %11000000
|
|
|
|
DFB %01111100
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11011110
|
|
DFB %01111110
|
|
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11111100
|
|
DFB %11000110
|
|
DFB %11000110
|
|
|
|
DFB %01111110
|
|
DFB %11000000
|
|
DFB %01111100
|
|
DFB %00000110
|
|
DFB %11111100
|
|
|
|
DFB %11111110
|
|
DFB %00110000
|
|
DFB %00110000
|
|
DFB %00110000
|
|
DFB %00110000
|
|
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %01111100
|
|
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %01111100
|
|
DFB %00111000
|
|
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11000110
|
|
DFB %11111110
|
|
DFB %11000110
|
|
|
|
DFB %11000110
|
|
DFB %01101100
|
|
DFB %00111000
|
|
DFB %01101100
|
|
DFB %11000110
|
|
|
|
DFB %11000110
|
|
DFB %01101100
|
|
DFB %00111000
|
|
DFB %00110000
|
|
DFB %01100000
|
|
|
|
DFB %11111110
|
|
DFB %00001100
|
|
DFB %00011000
|
|
DFB %01100000
|
|
DFB %11111110
|
|
|
|
*------------------------------------------------- Affichage divers...
|
|
|
|
PrintScore STZ Buf
|
|
LDY #11+9*$A0+124
|
|
LDX #2
|
|
]lp PHX
|
|
LDA Score,X
|
|
AND #$00FF
|
|
TYX
|
|
JSR Print_2Digits
|
|
TXY
|
|
PLX
|
|
DEX
|
|
BNE NoF
|
|
INC Buf
|
|
NoF BPL ]lp
|
|
RTS
|
|
|
|
PrintTotal STZ Buf
|
|
LDY #11+49*$A0+132
|
|
LDX #1
|
|
]lp PHX
|
|
LDA Total,X
|
|
AND #$00FF
|
|
TYX
|
|
JSR Print_2Digits
|
|
TXY
|
|
PLX
|
|
DEX
|
|
BNE NoF0
|
|
INC Buf
|
|
NoF0 BPL ]lp
|
|
RTS
|
|
|
|
PrintLevel LDA #1
|
|
STA Buf
|
|
LDX #11+29*$A0+140
|
|
LDA Level
|
|
JSR Print_2Digits
|
|
SEP $30
|
|
LDA LevelSpeed
|
|
PHA
|
|
AND #$F0
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
JSR Translate
|
|
STA SP
|
|
PLA
|
|
AND #$0F
|
|
JSR Translate
|
|
STA SP+1
|
|
REP $30
|
|
LDX #11+29*$A0+120
|
|
JSR Print
|
|
SP ASC "??",00
|
|
RTS
|
|
|
|
Print_2Digits PHA
|
|
AND #$F0
|
|
BEQ MaybeZero
|
|
INC Buf
|
|
INC Buf
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
CLC
|
|
ADC #"0"
|
|
BRA DrawR
|
|
MaybeZero LDA #"0"
|
|
LDY Buf
|
|
CPY #2
|
|
BCS DrawR
|
|
PatchS0 LDA #" "
|
|
DrawR JSR Print_Char
|
|
PLA
|
|
AND #$0F
|
|
BEQ MaybeZero0
|
|
INC Buf
|
|
INC Buf
|
|
CLC
|
|
ADC #"0"
|
|
BRA DrawL
|
|
MaybeZero0 LDA #"0"
|
|
LDY Buf
|
|
CPY #1
|
|
BCS DrawL
|
|
PatchS1 LDA #" "
|
|
DrawL JMP Print_Char
|
|
|
|
ScorePerBrick DA $50 ; Bonus
|
|
DA $100
|
|
DA $150
|
|
DA $200
|
|
DA $250
|
|
DA $300
|
|
DA $350
|
|
DA $500
|
|
DA $500
|
|
|
|
Palette HEX 0000F00099099900DD00630C960FA10B
|
|
HEX E50F5E088F0BA401F9062A0D7C0FFF0F
|
|
|
|
ZTop HEX F2222222222222222220
|
|
ZTop0
|
|
ZMiddle
|
|
ZBottom0 HEX 21111111111111111110
|
|
ZBottom HEX 00000000000000000000
|
|
|
|
PrintHiScore LDX #11+23*$A0+11
|
|
STZ Pnt
|
|
]loop PHX
|
|
LDA Pnt
|
|
CLC
|
|
ADC #HiScoreList
|
|
JSR Print_Rout
|
|
LDA #"."
|
|
STA PatchS0+1
|
|
STA PatchS1+1
|
|
JSR Print_Char
|
|
STZ Buf
|
|
LDA Pnt
|
|
CLC
|
|
ADC #HiScoreList+8
|
|
STA Pnt+2
|
|
LDY #2
|
|
]lp PHY
|
|
LDA (Pnt+2),Y
|
|
AND #$00FF
|
|
JSR Print_2Digits
|
|
PLY
|
|
DEY
|
|
BNE NoF2
|
|
INC Buf
|
|
NoF2 BPL ]lp
|
|
|
|
PLA
|
|
CLC
|
|
ADC #20*$A0
|
|
TAX
|
|
LDA Pnt
|
|
CLC
|
|
ADC #12
|
|
STA Pnt
|
|
CMP #8*12
|
|
BCC ]loop
|
|
LDA #" "
|
|
STA PatchS0+1
|
|
STA PatchS1+1
|
|
RTS
|
|
|
|
*------------------------------------------------- Routine de gestion
|
|
* des high-scores...
|
|
|
|
CheckHighScore LDX #12*7
|
|
]lp LDA Score+2
|
|
CMP HiScoreList+10,X
|
|
BEQ MoreCompare
|
|
BCS FindNext
|
|
BRA FoundLow
|
|
MoreCompare LDA Score
|
|
CMP HiScoreList+8,X
|
|
BEQ FoundLow
|
|
BCS FindNext
|
|
FoundLow CPX #12*7
|
|
BNE SomeHigh
|
|
SEC
|
|
RTS ; NoHigh
|
|
FindNext TXA
|
|
SEC
|
|
SBC #12
|
|
TAX
|
|
BCS ]lp
|
|
SomeHigh TXA
|
|
CLC
|
|
ADC #12
|
|
STA Buf
|
|
|
|
LDX #12*7
|
|
]lp2 CPX Buf
|
|
BEQ EndMove
|
|
PHX
|
|
LDY #6
|
|
]lp LDA HiScoreList-12,X
|
|
STA HiScoreList,X
|
|
INX
|
|
INX
|
|
DEY
|
|
BNE ]lp
|
|
PLA
|
|
SEC
|
|
SBC #12
|
|
TAX
|
|
BCS ]lp2
|
|
|
|
EndMove LDX Buf
|
|
LDA Score
|
|
STA HiScoreList+8,X
|
|
LDA Score+2
|
|
STA HiScoreList+10,X
|
|
|
|
LDA Buf
|
|
PHA
|
|
|
|
LDA #130
|
|
STA Lgn
|
|
LDA #$36+3
|
|
STA Col
|
|
LDA #30
|
|
STA ZNbLgn
|
|
LDA #$2B+2
|
|
STA ZNbCol
|
|
JSR Window
|
|
|
|
LDX #138*$A0+$38+4
|
|
JSR Print
|
|
HEX 0CFF
|
|
TXT "ENTER NAME",00;"VOTRE NOM:",00
|
|
|
|
SEP $30
|
|
STL $E1C010
|
|
|
|
LDX #0
|
|
LDA #" "
|
|
]lp STA NameAdr,X
|
|
INX
|
|
CPX #7
|
|
BNE ]lp
|
|
JSR PrintName
|
|
|
|
STZ Pnt
|
|
|
|
]reloop STL $E1C010
|
|
|
|
]loop LDX Pnt
|
|
LDA #"#"
|
|
STA NameAdr,X
|
|
JSR PrintName
|
|
|
|
LDX #12
|
|
]lp LDL $E1C000
|
|
BMI KeyPress
|
|
JSR WaitSync
|
|
DEX
|
|
BNE ]lp
|
|
|
|
LDX Pnt
|
|
LDA #" "
|
|
STA NameAdr,X
|
|
JSR PrintName
|
|
|
|
LDX #12
|
|
]lp LDL $E1C000
|
|
BMI KeyPress
|
|
JSR WaitSync
|
|
DEX
|
|
BNE ]lp
|
|
|
|
BRA ]loop
|
|
|
|
KeyPress LDY Pnt
|
|
CMP #"M"&$9F
|
|
BEQ NoName
|
|
CMP #$9B
|
|
BEQ NoName
|
|
CMP #$FF
|
|
BEQ Delete
|
|
CMP #"H"&$9F
|
|
BEQ Delete
|
|
NoDel CPY #7
|
|
BEQ ]reloop
|
|
CMP #" "
|
|
BCC ]reloop
|
|
CMP #"Z"+1
|
|
BCC OkCar
|
|
SEC
|
|
SBC #$20
|
|
OkCar STA NameAdr,Y
|
|
INC Pnt
|
|
BRA ]reloop
|
|
|
|
Delete CPY #0
|
|
BEQ ]reloop
|
|
LDA #" "
|
|
STA NameAdr,Y
|
|
DEC Pnt
|
|
BRA ]reloop
|
|
|
|
NoName LDY Pnt
|
|
LDA #" "
|
|
STA NameAdr,Y
|
|
|
|
PLX
|
|
PLA ; Empile sur 16bits
|
|
|
|
LDY #0
|
|
]lp LDA NameAdr,Y
|
|
STA HiScoreList,X
|
|
INY
|
|
INX
|
|
CPY #7
|
|
BNE ]lp
|
|
|
|
REP $30
|
|
LDA #$FFFF
|
|
STA FlagHi
|
|
JSR PrintHiScore
|
|
CLC
|
|
RTS
|
|
|
|
PrintName PHP
|
|
REP $30
|
|
LDX #138+8*$A0+$38+4
|
|
JSR Print
|
|
ASC "<"
|
|
NameAdr ASC "# "
|
|
ASC ">",00
|
|
PLP
|
|
RTS
|
|
|
|
DO vP8
|
|
ELSE
|
|
UserId DS 2
|
|
MasterId DS 2
|
|
FIN
|
|
|
|
*------------------------------------------------- Patterns et masques...
|
|
|
|
PatternList DA PatternList1
|
|
DA PatternList2
|
|
DA PatternList3
|
|
DA PatternList4
|
|
DA PatternList5
|
|
DA 0
|
|
|
|
MskList DA MskCarre
|
|
DA MskRond
|
|
DA MskCarre
|
|
DA MskRondB
|
|
DA MskCarre
|
|
|
|
MskCarre DA MskList0
|
|
DA MskList1
|
|
DA MskList2
|
|
DA MskList3
|
|
DA MskList4
|
|
DA MskList5
|
|
DA PatBlank
|
|
|
|
MskRond DA MskList0
|
|
DA MskRond1
|
|
DA MskRond2
|
|
DA MskRond3
|
|
DA MskRond4
|
|
DA MskRond5
|
|
DA PatBlank
|
|
|
|
MskRondB DA MskList0
|
|
DA MskRondB1
|
|
DA MskRondB2
|
|
DA MskRondB3
|
|
DA MskRondB4
|
|
DA MskRondB5
|
|
DA PatBlank
|
|
|
|
|
|
PatternList1 DA PatBlank
|
|
DA Pat0
|
|
DA Pat1
|
|
DA Pat2
|
|
DA Pat3
|
|
DA Pat4
|
|
DA Pat5
|
|
DA Blanc0
|
|
|
|
PatternList2 DA PatBlank
|
|
DA Ball0
|
|
DA Ball1
|
|
DA Ball2
|
|
DA Ball3
|
|
DA Ball4
|
|
DA Ball5
|
|
DA Blanc1
|
|
|
|
PatternList3 DA PatBlank
|
|
DA En0
|
|
DA En1
|
|
DA En2
|
|
DA En3
|
|
DA En4
|
|
DA En5
|
|
DA Blanc0
|
|
|
|
PatternList4 DA PatBlank
|
|
DA Tr0
|
|
DA Tr1
|
|
DA Tr2
|
|
DA Tr3
|
|
DA Tr4
|
|
DA Tr5
|
|
DA Blanc1
|
|
|
|
|
|
PatternList5 DA PatBlank
|
|
DA Le0
|
|
DA Le1
|
|
DA Le2
|
|
DA Le3
|
|
DA Le4
|
|
DA Le5
|
|
DA Blanc0
|
|
|
|
En0 HEX DEEEEEEEEEED
|
|
HEX 0DDEEEEEEDD0
|
|
HEX E0DDEEEEDD0E
|
|
HEX EE0DDEEDD0ED
|
|
HEX EEE0DDDD0EDD
|
|
HEX EEDD0ED0DEDD
|
|
HEX EDD0EEEE0DDD
|
|
HEX ED0EEEEEE0DD
|
|
HEX D0EEEEEEEE0D
|
|
HEX 0EEDDDDDDDE0
|
|
HEX EDDDDDDDDDDD
|
|
|
|
En1 HEX BCCCCCCCCCCB
|
|
HEX 0BBCCCCCCBB0
|
|
HEX C0BBCCCCBB0C
|
|
HEX CC0BBCCBB0CB
|
|
HEX CCC0BBBB0CBB
|
|
HEX CCBB0CB0BCBB
|
|
HEX CBB0CCCC0BBB
|
|
HEX CB0CCCCCC0BB
|
|
HEX B0CCCCCCCC0B
|
|
HEX 0CCBBBBBBBC0
|
|
HEX CBBBBBBBBBBB
|
|
|
|
En2 HEX 9AAAAAAAAAA9
|
|
HEX 099AAAAAA990
|
|
HEX A099AAAA990A
|
|
HEX AA099AA990A9
|
|
HEX AAA099990A99
|
|
HEX AA990A909A99
|
|
HEX A990AAAA0999
|
|
HEX A90AAAAAA099
|
|
HEX 90AAAAAAAA09
|
|
HEX 0AA9999999A0
|
|
HEX A99999999999
|
|
|
|
En3 HEX 788888888887
|
|
HEX 077888888770
|
|
HEX 807788887708
|
|
HEX 880778877087
|
|
HEX 888077770877
|
|
HEX 887708707877
|
|
HEX 877088880777
|
|
HEX 870888888077
|
|
HEX 708888888807
|
|
HEX 088777777780
|
|
HEX 877777777777
|
|
|
|
En4 HEX 566666666665
|
|
HEX 055666666550
|
|
HEX 605566665506
|
|
HEX 660556655065
|
|
HEX 666055550655
|
|
HEX 665506505655
|
|
HEX 655066660555
|
|
HEX 650666666055
|
|
HEX 506666666605
|
|
HEX 066555555560
|
|
HEX 655555555555
|
|
|
|
En5 HEX 344444444443
|
|
HEX 033444444330
|
|
HEX 403344443304
|
|
HEX 440334433043
|
|
HEX 444033330433
|
|
HEX 443304303433
|
|
HEX 433044440333
|
|
HEX 430444444033
|
|
HEX 304444444403
|
|
HEX 044333333340
|
|
HEX 433333333333
|
|
|
|
Ball0 HEX 000DEEEED000
|
|
HEX 00EEFEEEEE00
|
|
HEX 0EEFFFEEDEE0
|
|
HEX DEEEFEEEEDED
|
|
HEX EEEEEEEEEDDE
|
|
HEX EEEEEEEEEDDE
|
|
HEX EDEEEEEEDDDE
|
|
HEX DEDEEEEDDDED
|
|
HEX 0EDDDDDDDDE0
|
|
HEX 00EEDDDDEE00
|
|
HEX 000DEEEED000
|
|
|
|
Ball1 HEX 000BCCCCB000
|
|
HEX 00CCFCCCCC00
|
|
HEX 0CCFFFCCBCC0
|
|
HEX BCCCFCCCCBCB
|
|
HEX CCCCCCCCCBBC
|
|
HEX CCCCCCCCCBBC
|
|
HEX CBCCCCCCBBBC
|
|
HEX BCBCCCCBBBCB
|
|
HEX 0CBBBBBBBBC0
|
|
HEX 00CCBBBBCC00
|
|
HEX 000BCCCCB000
|
|
|
|
Ball2 HEX 0009AAAA9000
|
|
HEX 00AAFAAAAA00
|
|
HEX 0AAFFFAA9AA0
|
|
HEX 9AAAFAAAA9A9
|
|
HEX AAAAAAAAA99A
|
|
HEX AAAAAAAAA99A
|
|
HEX A9AAAAAA999A
|
|
HEX 9A9AAAA999A9
|
|
HEX 0A99999999A0
|
|
HEX 00AA9999AA00
|
|
HEX 0009AAAA9000
|
|
|
|
Ball3 HEX 000788887000
|
|
HEX 0088F8888800
|
|
HEX 088FFF887880
|
|
HEX 7888F8888787
|
|
HEX 888888888778
|
|
HEX 888888888778
|
|
HEX 878888887778
|
|
HEX 787888877787
|
|
HEX 087777777780
|
|
HEX 008877778800
|
|
HEX 000788887000
|
|
|
|
Blanc1 HEX 000FFFFFF000
|
|
HEX 00FFFFFFFF00
|
|
HEX 0FFFFFFFFFF0
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 00FFFFFFFF00
|
|
HEX 000FFFFFF000
|
|
|
|
Ball4 HEX 000566665000
|
|
HEX 0066F6666600
|
|
HEX 066FFF665660
|
|
HEX 5666F6666565
|
|
HEX 666666666556
|
|
HEX 666666666556
|
|
HEX 656666665556
|
|
HEX 565666655565
|
|
HEX 065555555560
|
|
HEX 006655556600
|
|
HEX 000566665000
|
|
|
|
Ball5 HEX 000344443000
|
|
HEX 0044F4444400
|
|
HEX 044FFF443440
|
|
HEX 3444F4444343
|
|
HEX 444444444334
|
|
HEX 444444444334
|
|
HEX 434444443334
|
|
HEX 343444433343
|
|
HEX 043333333340
|
|
HEX 004433334400
|
|
HEX 000344443000
|
|
|
|
PatBlank HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
Pat0 HEX EEEEEEEEEEEE
|
|
HEX EEEEEEEEEEED
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEEEEEEEEEDD
|
|
HEX EEDDDDDDDDED
|
|
HEX EDDDDDDDDDDD
|
|
|
|
Pat1 HEX CCCCCCCCCCCC
|
|
HEX CCCCCCCCCCCB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCCCCCCCCCBB
|
|
HEX CCBBBBBBBBCB
|
|
HEX CBBBBBBBBBBB
|
|
|
|
Pat2 HEX AAAAAAAAAAAA
|
|
HEX AAAAAAAAAAA9
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AAAAAAAAAA99
|
|
HEX AA99999999A9
|
|
HEX A99999999999
|
|
|
|
Pat3 HEX 888888888888
|
|
HEX 888888888887
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 888888888877
|
|
HEX 887777777787
|
|
HEX 877777777777
|
|
|
|
Pat4 HEX 666666666666
|
|
HEX 666666666665
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 666666666655
|
|
HEX 665555555565
|
|
HEX 655555555555
|
|
|
|
Pat5 HEX 444444444444
|
|
HEX 444444444443
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 444444444433
|
|
HEX 443333333343
|
|
HEX 433333333333
|
|
|
|
Blanc0
|
|
MskList0 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
|
|
MskList1 HEX 000000000000
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 000000000000
|
|
|
|
MskList2 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskList3 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskList4 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 0000FFFF0000
|
|
HEX 0000FFFF0000
|
|
HEX 0000FFFF0000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskList5 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 00000FF00000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskRond1 HEX 000000000000
|
|
HEX 0000FFFF0000
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 0FFFFFFFFFF0
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 0000FFFF0000
|
|
HEX 000000000000
|
|
|
|
MskRond2 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 0000FFFF0000
|
|
HEX 000FFFFFF000
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 00FFFFFFFF00
|
|
HEX 000FFFFFF000
|
|
HEX 0000FFFF0000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskRond3 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 0000FFFF0000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 000FFFFFF000
|
|
HEX 0000FFFF0000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskRond4 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 00000FF00000
|
|
HEX 0000FFFF0000
|
|
HEX 00000FF00000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
MskRond5 HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 00000FF00000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
|
|
|
|
MskRondB1 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFFF0000FFFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
|
|
MskRondB2 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFF000000FFF
|
|
HEX FFF000000FFF
|
|
HEX FFF000000FFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
|
|
MskRondB3 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFF000000FFF
|
|
HEX FF00000000FF
|
|
HEX FF00000000FF
|
|
HEX FF00000000FF
|
|
HEX FFF000000FFF
|
|
HEX FFFF0000FFFF
|
|
HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFF
|
|
|
|
MskRondB4 HEX FFFFFFFFFFFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFF000000FFF
|
|
HEX FF00000000FF
|
|
HEX FF00000000FF
|
|
HEX F0000000000F
|
|
HEX FF00000000FF
|
|
HEX FF00000000FF
|
|
HEX FFF000000FFF
|
|
HEX FFFFF00FFFFF
|
|
HEX FFFFFFFFFFFF
|
|
|
|
MskRondB5 HEX FFFF0000FFFF
|
|
HEX FF00000000FF
|
|
HEX F0000000000F
|
|
HEX F0000000000F
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX 000000000000
|
|
HEX F0000000000F
|
|
HEX F0000000000F
|
|
HEX FF00000000FF
|
|
HEX FFFF0000FFFF
|
|
|
|
Tr0 HEX 000DEEEED000
|
|
HEX 00EEEDDDEE00
|
|
HEX 0EFFEDDDDEE0
|
|
HEX DEFEDDDDDEED
|
|
HEX EEEDDDDDDEFE
|
|
HEX EDDDDDDDDEFE
|
|
HEX EDDDDDDDEFFE
|
|
HEX DEDDDDDEFFED
|
|
HEX 0EDDEEFFFFE0
|
|
HEX 00EEFFFFEE00
|
|
HEX 000DEEEED000
|
|
|
|
Tr1 HEX 000BCCCCB000
|
|
HEX 00CCCBBBCC00
|
|
HEX 0CFFCBBBBCC0
|
|
HEX BCFCBBBBBCCB
|
|
HEX CCCBBBBBBCFC
|
|
HEX CBBBBBBBBCFC
|
|
HEX CBBBBBBBCFFC
|
|
HEX BCBBBBBCFFCB
|
|
HEX 0CBBCCFFFFC0
|
|
HEX 00CCFFFFCC00
|
|
HEX 000BCCCCB000
|
|
|
|
Tr2 HEX 0009AAAA9000
|
|
HEX 00AAA999AA00
|
|
HEX 0AFFA9999AA0
|
|
HEX 9AFA99999AA9
|
|
HEX AAA999999AFA
|
|
HEX A99999999AFA
|
|
HEX A9999999AFFA
|
|
HEX 9A99999AFFA9
|
|
HEX 0A99AAFFFFA0
|
|
HEX 00AAFFFFAA00
|
|
HEX 0009AAAA9000
|
|
|
|
Tr3 HEX 000788887000
|
|
HEX 008887778800
|
|
HEX 08FF87777880
|
|
HEX 78F877777887
|
|
HEX 8887777778F8
|
|
HEX 8777777778F8
|
|
HEX 877777778FF8
|
|
HEX 78777778FF87
|
|
HEX 087788FFFF80
|
|
HEX 0088FFFF8800
|
|
HEX 000788887000
|
|
|
|
Tr4 HEX 000566665000
|
|
HEX 006665556600
|
|
HEX 06FF65555660
|
|
HEX 56F655555665
|
|
HEX 6665555556F6
|
|
HEX 6555555556F6
|
|
HEX 655555556FF6
|
|
HEX 56555556FF65
|
|
HEX 065566FFFF60
|
|
HEX 0066FFFF6600
|
|
HEX 000566665000
|
|
|
|
Tr5 HEX 000344443000
|
|
HEX 004443334400
|
|
HEX 04FF43333440
|
|
HEX 34F433333443
|
|
HEX 4443333334F4
|
|
HEX 4333333334F4
|
|
HEX 433333334FF4
|
|
HEX 34333334FF43
|
|
HEX 043344FFFF40
|
|
HEX 0044FFFF4400
|
|
HEX 000344443000
|
|
|
|
Le0 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFFF2002FF22
|
|
HEX FFF200002F22
|
|
HEX FFF00FF00F22
|
|
HEX FFF000000F22
|
|
HEX FFF00FF00F22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
Le1 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFF00000FF22
|
|
HEX FFF002F20F22
|
|
HEX FFF000002F22
|
|
HEX FFF002F20F22
|
|
HEX FFF00000FF22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
Le2 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFF200002F22
|
|
HEX FFF002FF0F22
|
|
HEX FFF002FFFF22
|
|
HEX FFF002FF0F22
|
|
HEX FFF200002F22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
Le3 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFF000002F22
|
|
HEX FFF002F20F22
|
|
HEX FFF002FF0F22
|
|
HEX FFF002F20F22
|
|
HEX FFF000002F22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
Le4 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFF000000F22
|
|
HEX FFF002FFFF22
|
|
HEX FFF0000FFF22
|
|
HEX FFF002FFFF22
|
|
HEX FFF000000F22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
Le5 HEX FFFFFFFFFFFF
|
|
HEX FFFFFFFFFFF2
|
|
HEX FFFFFFFFFF22
|
|
HEX FFF000000F22
|
|
HEX FFF002FFFF22
|
|
HEX FFF0000FFF22
|
|
HEX FFF002FFFF22
|
|
HEX FFF002FFFF22
|
|
HEX FFFFFFFFFF22
|
|
HEX FF22222222F2
|
|
HEX F22222222222
|
|
|
|
|
|
*------------------------------------------------- Logo Beyond
|
|
|
|
BeyondLogo HEX 87733828000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 0000000000000000000000110FFFFFFF
|
|
HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
HEX FFFFF0110F0000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000F0110F000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 0000F0110F000EEEEEEEEEEEEEEEEEE0
|
|
HEX CCCCCCCCCCCCC0E00C00EEEEEEEEEEEE
|
|
HEX EEEEEEEE00A00EEEE000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCCC000
|
|
HEX CCC00EEEEEEEEEEEEEEEEEE00AAA00EE
|
|
HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
|
|
HEX CCCCCCCCCCCCC00CCCCC00EEEEEEEEEE
|
|
HEX EEEEEE00AAAAA00EE000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEE0CCCCCCCCCCCC00CC
|
|
HEX CCCCC00EEEEEEEEEEEEEE00AAAAAAA00
|
|
HEX E000F0000F000EEEEEEEEEEEEEEEEEE0
|
|
HEX CCCCCCCCCCC00CCCCCCCCC00EEEEEEEE
|
|
HEX EEEE00AAAAAAAAA00000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEE0CCCCCCCCCC00CCCC
|
|
HEX CCCCCCC00EEEEEEEEEE00AAAAAAAAAAA
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
|
|
HEX CCCCCCCCC00CCCCCCCCCCCCC00EEEEEE
|
|
HEX EE00AAAAAAAAAAAAA000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEE0CCCCCCCC000000CC
|
|
HEX CCCCC000000EEEEEE000000AAAAAAA00
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEE0
|
|
HEX CCCCCCCCCCCCC0CCCCCCC0EEEE00EEEE
|
|
HEX EEEEEE0AAAAAAA0EE000F0000F000EEE
|
|
HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
|
|
HEX CCCCC000000000000000000AAAAAAA00
|
|
HEX 0000F0000F000EEEEEEEEEE000000000
|
|
HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00AA
|
|
HEX AAAAAA0AAAAAAA000000F0000F000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000EE00AAAAAAA0AAAAAAA00
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
|
|
HEX AAAAAA0AAAAAAA000000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEE00AAAAA0AAAAAAA00
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
|
HEX 00AAAA0AAAAAAA000000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEEEE00AAA0AAAAAAA00
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
|
HEX 0000AA0AAAAAAA000000F0000F000EEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEE000000A0AAAAAAA0A
|
|
HEX 0000F0000F000EEEEEEEEEEEEEEEEEEE
|
|
HEX EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00
|
|
HEX 0000000AAAAAAA0AA000F0000F000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000EE0000000000AAAAAAA0A
|
|
HEX A000F0000F000EEEEEEEEEE000000000
|
|
HEX CCCCCCCCCCCCC0CCCCCCC0AAAA0E00A0
|
|
HEX 0000000AAAAAAA0AA000F0000F000EEE
|
|
HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
|
|
HEX CCCCC0AAAA000AA00000000AAAAAAA0A
|
|
HEX A000F0000F000EEEEEEEEEE000000000
|
|
HEX CCCCCCCCCCCCC0CCCCCCC0AAAA00AAA0
|
|
HEX 0000000AAAAAAA0AA000F0000F000EEE
|
|
HEX EEEEEEE000000000CCCCCCCCCCCCC0CC
|
|
HEX CCCCC0AAAA0AAAA00000000AAAAAAAAA
|
|
HEX A000F0000F000EEEEEEEEEE000000000
|
|
HEX CCCCCCCCCCCC000CCCCCC0AAAAAAAAA0
|
|
HEX 0000000AAAAAAAAAA000F0000F000EEE
|
|
HEX EEEEEEE000000000CCCCCCCCCCCCCCCC
|
|
HEX CCCCC0AAAAAAAAA00000000AAAAAAAAA
|
|
HEX A000F0000F000EEEEEEEEEE000000000
|
|
HEX CCCCCCCCCCCCCCCCCCCCC0AAAAAAAAA0
|
|
HEX 0000000AAAAAAAAAA000F0000F000EEE
|
|
HEX EEEEEEE000000000BCCCCCCCCCCCCCCC
|
|
HEX CCCCB0AAAAAAAAA00000000AAAAAAAAA
|
|
HEX A000F0000F000EEEEEEEEEE000000000
|
|
HEX 0CCCCCCCCCCCCCCCCCCC09AAAAAAAAA0
|
|
HEX 0000000AAAAAAAAA9000F0000F000EEE
|
|
HEX EEEEEEE00000000000CCCCCCCCCCCCCC
|
|
HEX CCC09AAAAAAAAAA00000000AAAAAAAAA
|
|
HEX 0000F0000F000EEEEEEEEEE000000000
|
|
HEX 000BCCCCCCCCCCCCCB09AAAAAAAAAAA0
|
|
HEX 0000000AAAAAAAA00000F0000F000EEE
|
|
HEX EEEEEEE00000000000000BCCCCCCCCCB
|
|
HEX 09AAAAAAAAAAAAA00000000AAAAAA900
|
|
HEX 0000F0000F0000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000F0000F000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 0000F0000F000F2222222220F2222222
|
|
HEX 0F22200000F2220F220F222000F220F2
|
|
HEX 220F220F222222222000F0000F000200
|
|
HEX 00000020200000020200200000200202
|
|
HEX 02020002020020200022020200000000
|
|
HEX 2000F0000F0002222222222022222202
|
|
HEX 02002000002222020202222020202022
|
|
HEX 22020202222222222000F0000F000000
|
|
HEX 00000000000002020200200000000002
|
|
HEX 02000002022020000020020000000000
|
|
HEX 0000F0000F000F2222200000F2220202
|
|
HEX 0200200000F22202020F2220202020F2
|
|
HEX 2202020F222222222000F0000F000200
|
|
HEX 00200000200202020200200000200202
|
|
HEX 02020020002020200202020200000000
|
|
HEX 2000F0000F0002000020000020020202
|
|
HEX 02002000002002020202002000202020
|
|
HEX 02020202222220002000F0000F000200
|
|
HEX 00200000200202020200200000200202
|
|
HEX 02020020002020200202020000002000
|
|
HEX 2000F0000F0002000022222020022F02
|
|
HEX 020022222020022F0202002000202020
|
|
HEX 0202020F2222F0002000F0000F000200
|
|
HEX 00000020200000020200000020200000
|
|
HEX 02020020002020200202020200000000
|
|
HEX 2000F0000F0002000000002020000002
|
|
HEX 02000000202000000202002000202020
|
|
HEX 02020202000000002000F0000F000222
|
|
HEX 22222220222222220222222220222222
|
|
HEX 22022220002220222202220222222222
|
|
HEX 2000F0000F0000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000F0000F000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 0000F0000FFFFFFFFFFFFFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
HEX FFFFFFFFFFFFFFFFFFFFF00000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000111100000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000011110000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000000000000000000000000000
|
|
HEX 00000000
|
|
|
|
*------------------------------------------------- Scores...
|
|
|
|
SignatureTest DS 8
|
|
Signature ASC "BeyondGS"
|
|
|
|
HiScoreList TXT "HULK ",00;"OLIVIER",00
|
|
ADRL $00010000
|
|
TXT "EARTH ",00;"J-YVES ",00
|
|
ADRL $00009000
|
|
TXT "BUSH ",00;"BERNARD",00
|
|
ADRL $00008000
|
|
TXT "AXE ",00;"ERIC ",00
|
|
ADRL $00007000
|
|
TXT "PERFECT",00;"HUBERT ",00
|
|
ADRL $00006000
|
|
TXT "POWERS ",00;"J-LUC ",00
|
|
ADRL $00005000
|
|
TXT "TUGBOAT",00;"YVAN ",00
|
|
ADRL $00004000
|
|
TXT "DINO ",00;"EMILE ",00
|
|
ADRL $00000001
|
|
|
|
|
|
DO vP8
|
|
ELSE
|
|
MX %00
|
|
PgmDeath PHA
|
|
PEA ^DeathMsg
|
|
PEA DeathMsg
|
|
LDX #$1503
|
|
JSL $E10000
|
|
|
|
DeathMsg STR 'Beyond Colums Fatal Error :$'
|
|
FIN
|
|
|
|
DS \
|
|
|
|
DO vP8
|
|
BufIO = *
|
|
PathName = *+$400
|
|
FIN
|
|
|