Initial commit

This commit is contained in:
peterdell 2018-12-30 16:52:33 +01:00
parent fbbb115b98
commit 492892ebbc
1305 changed files with 218036 additions and 0 deletions

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.wudsn.ide.ref</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

View File

@ -0,0 +1,129 @@
; WUDSN IDE example ACME source file for Apple II binary file format (".b")
; @com.wudsn.ide.asm.hardware=APPLE2
!cpu 6502
!convtab "hiBitAscii.ct"
*=$1300
ldy #$00 ;// init y to zero
lda #$C1 ;// $C1 = A in the world of apple
;// FILL does exactly as it sounds, it FILLS the screen with the letter "A" ($C1)
FILL: sta $400,y
sta $500,y
sta $600,y
sta $700,y
iny
bne FILL
ldx #$00
ldy #$16
LOOP: lda #$A0 ;//Loop is our loop through in the index pointer y. we start y at $16 or 22
;// clearing the screen
sta $0400,y ;//row 1
sta $0480,y ;// 2
sta $0500,y ;// 3
sta $0580,y ;//4
sta $0600,y ;//5
sta $0680,y ;//6
sta $0700,y ;//7
sta $0780,y ;//8
sta $0428,y ;//9
sta $04a8,y ;//10
sta $0528,y ;//11
sta $05a8,y ;//12
sta $0628,y ;//13
sta $06a8,y ;//14
sta $0728,y ;//15
sta $07a8,y ;//16
sta $0450,y ;//17
sta $04D0,y ;//18
sta $0550,y ;//19
sta $05D0,y ;//20
sta $0650,y ;//21
sta $06D0,y ;//22
dey ;// decrement pointer
bne LOOP ;// check for zero
ldx #$00
ldy #$00
MYLOOP:
jsr DRAW
cpx #22
bne MYLOOP
jmp myend
DRAW:
lda .r1_1,x
beq myend
sta $0481,y
lda .r1_2,x
sta $0501,y
lda r1_3,x
sta $0581,y
lda r1_4,x
sta $0601,y
lda r1_5,x
sta $0681,y
lda r1_6,x
sta $0701,y ;//7
lda r1_7,x
sta $0781,y ;//8
lda r1_8,x
sta $0429,y ;//9
lda r1_9,x
sta $04a9,y ;//10
lda r1_10,x
sta $0529,y ;//11
lda r1_11,x
sta $05a9,y ;;//12
lda r1_12,x
sta $0629,y ;//13
lda r1_13,x
sta $06a9,y ;//14
lda r1_14,x
sta $0729,y ;//15
lda r1_15,x
sta $07a9,y ;//16
lda r1_16,x
sta $0451,y ;//17
lda r1_17,x
sta $04D1,y ;//18
lda r1_18,x
sta $0551,y ;//19
lda r1_19,x
sta $05D1,y ;//20
lda r1_20,x
sta $0651,y ;//21
lda r1_21,x
sta $06D1,y ;//22
iny
inx
rts
myend: jmp $03d0
.r1_1:!text " REGION 1 ",$00
.r1_2:!text "......^^^~^^^~........",$00
r1_3:!text "...###.....###........",$00
r1_4:!text "......###.###.........",$00
r1_5:!text ".......###.......+++..",$00
r1_6:!text "..@..............+++..",$00
r1_7:!text ".................+++..",$00
r1_8:!text "......................",$00
r1_9 !text "......................",$00
r1_10 !text "......................",$00
r1_11 !text "......................",$00
r1_12 !text "......................",$00
r1_13 !text "......................",$00
r1_14 !text "......................",$00
r1_15 !text "......................",$00
r1_16 !text "......................",$00
r1_17 !text "......................",$00
r1_18 !text "......................",$00
r1_19 !text "......................",$00
r1_20 !text "......................",$00
r1_21 !text "......................",$00
r1_22 !text "......................",$00

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@ -0,0 +1,475 @@
********************************
********************************
***** *****
***** ROUTINES *****
***** BALLES *****
***** *****
********************************
********************************
;
;
********************************
* FEU *
* PREPARE UNE NOUVELLE ENTREE *
* DANS LA TABLE DES BALLES *
********************************
;
FEU LDA NBALLES ;NOMBRE DE BALLES ACTIVES
CMP NBAMAX ;COMPARAISON AU MAX
BNE FEU1 ;<>0, RESTE DE LA PLACE
RTS ;PLUS DE PLACE, ON NE FAIT RIEN
;
FEU1 LDA DBALLE ;COMPTEUR DELAI ENTRE BALLES
BEQ FEU2 ;=0, TIR AUTORISE.
RTS
;
* RECHERCHE ENTREE LIBRE *
;
FEU2 LDX NBAMAX
FEU3 LDA YBALLE,X ;ORDONNEE DE LA BALLE X
BEQ FEU4 ;=0, L'ENTREE EST LIBRE
DEX ;BALLE SUIVANTE
BPL FEU3
BRK ;IMPOSSIBLE D'ARRIVER ICI!
;
* DEPART D'UNE NOUVELLE BALLE *
;
FEU4 INC NBALLES
LDA YBMIN ;ORDONNEE DE DEPART
STA YBALLE,X
;
LDA XBASE ;ABSCISSE BASE
CLC
ADC #$06 ;ABSCISSE CANON
STA XBALLE,X
TAY
LDA NUMOCT,Y ;# OCTET DE LA BALLE
STA OCTBALLE,X
;
LDA DEPL,Y ;# DEPLACEMENT AD-HOC
STA DPBALLE,X
;
;
STX NBA ;# BALLE COURANTE
* AFFICHAGE BALLE *
;
JSR PRBALLE ;AFFICHAGE DE LA BALLE
JSR XCIMAGE
;
* VERIFICATION COLLISION *
;
LDA COLLIS
BMI FEU5 ;<0, PAS DE COLLISION
JSR SPLASH ;TRAITEMENT DES COLLISIONS
;
FEU5 LDA FRBAL ;REMISE A NEUF DU COMPTEUR D'ESPACEMENT
STA DBALLE
RTS
********************************
* CLF *
* ARRET DE LA BALLE #NBA *
********************************
;
CLF LDX NBA ;# DE LA BALLE
LDA #$00
STA YBALLE,X
DEC NBALLES
RTS
;
;
********************************
* MVTBALLE *
* MOUVEMENT DES BALLES ACTIVES*
********************************
;
;
* VERIFICATION COMPTEUR *
;
MVTBALLE DEC CPTRBA ;DECOMPTE FREQUENCE
BNE MVTB4 ;<>0, PAS D'EXECUTION A CE CYCLE
LDA FRBA ;REMISE A NEUF COMPTEUR
STA CPTRBA
;
* MISE A JOUR BALLES ACTIVES *
;
LDA NBAMAX
STA NBA ;# DE BALLE COURANTE
MVTB1 LDX NBA ;INDICE DS LA TABLE DES BALLES
LDA YBALLE,X ;ORDONNEE DE LA BALLE X
BEQ MVTB3 ;=0, BALLE INACTIVE
;
*EFFACEMENT *
;
JSR PRBALLE
JSR XIMAGE ;XDRAW
;
* CALCUL NOUVELLE POSITION *
;
;
LDX NBA ;RESTAURATION DE X
LDA YBALLE,X
SEC
SBC IBV ;VITESSE VERTICALE
STA YBALLE,X
;
* VERIFICATION FIN DE PARCOURS *
;
CMP YBMAX
BNE MVTB2 ;<>0, ENCORE DU CHEMIN A FAIRE
JSR CLF ;ARRET BALLE
BPL MVTB3 ;=JMP
;
*REAFFICHAGE *
;
MVTB2 JSR PRBALLE
JSR XCIMAGE
;
* VERIFICATION COLLISION *
;
LDA COLLIS
BMI MVTB3 ;PAS DE COLL.
JSR SPLASH
;
;
* BOUCLAGE *
;
MVTB3 DEC NBA ;BALLE SUIVANTE
BPL MVTB1
;
MVTB4 RTS
;
;
********************************
* SPLASH: COLLISION D'UNE BALLE*
********************************
;
;
;
;
SPLASH JSR PRBALLE
JSR NIMAGE ;EFFACEMENT BALLE (PARFOIS NECESSAIRE...)
;
;
* COLLISION AVEC BOMBE? *
;
;
LDA NBOMBES ;NOMBRE DE BOMBES
BEQ SPLASH3 ;PAS DE BOMBES EN ROUTE
;
LDA NBOMAX
STA NBO
SPLASH1 JSR CMPBB ;COMPARER BALLE ET BOMBE
LDA SEMBB ;SEMAPHORE DE COLLISION
BMI SPLASH2 ;COORDONNEES PAS EGALES
;
;
JSR PRBOMBE
JSR NIMAGE ;EFFACEMENT BOMBE
JSR CLF ;ARRET BALLE
JSR ALB ;ARRET BOMBE
RTS ; TERMINE
;
SPLASH2 DEC NBO ;BOMBE SUIVANTE
BPL SPLASH1 ;ON CONTINUE
;
;
* COLLISION AVEC ENVAHISSEUR? *
;
;
SPLASH3 JSR LCMORT ;CALCUL L ET C DE L'ENVAHISSEUR TOUCHE
;
;
LDA L2 ;EST-CE BIEN UN ENVAHISSEUR???
CMP LMORT ;LMORT<=L2
BMI SPLASH5 ;PAS UN ENV!
;
LDA C2
CMP CMORT ;CMORT<=C2
BMI SPLASH5 ;PAS UN ENVAHISSEUR
;
LDX LMORT ;VERIFICATION PRESENCE
LDA ATLL,X ;ADRESSE TABLE TL(LMORT)
STA BDRL
LDA ATLH,X
STA BDRH
;
LDY CMORT ;COLONNE
LDA (BDRL),Y ;INDICATEUR DE PRESENCE
BEQ SPLASH5 ;PERSONNE!
;
;
* COLLISION AVEC UN ENVAHISSEUR*
;
;
LDA #$00 ;MISE A JOUR SEMAPHORE DE PRESENCE
STA (BDRL),Y
;
JSR CLF ;ARRET BALLE
;
JSR PREXPL ;AFFICHAGE EXPLOSION
JSR IMAGE
LDA #$15
JSR DELAI ;LAISSER VOIR
;
DEC NENV ;DECREMENTER NOMBRE TOTAL D'ENV.
BNE SPLASH4 ;<>0, IL EN RESTE
JMP GAGNE ;LE JOUEUR A GAGNE
;
;
;
SPLASH4 JSR CALCSPL ;MISE A JOUR C1,C2 ETC...
;
LDA #$07 ;MISE A JOUR SCORE
SEC
SBC LMORT
LSR ;INCREMENT SCORE /10
JSR INCPTS ;INCREMENTER SCORE
JSR AFFPTS ;AFFICHER
;
JSR PREXPL ;EFFACER DEBRIS EXPLOSION
JSR XIMAGE
;
;
RTS ;TERMINE
;
;
;
* COLLISION AVEC ABRI *
;
;
SPLASH5 JSR PRECLAT ;PREPARATION PARAMETRES ECLAT
JSR NIMAGE ;AFFICHAGE EN NOIR
JSR CLF ;ARRET BALLE
RTS
;
********************************
* LCMORT *
* CALCUL DE LA LIGNE ET DE LA *
* COLONNE DE L'ENVAHISSEUR *
* POSSIBLEMENT TOUCHE. *
********************************
;
;
LCMORT LDX NBA
LDA YBALLE,X
SEC
SBC YVERT
LSR
LSR
LSR
LSR ;/16
STA LMORT ;LIGNE DU MALHEUREUX
ASL
ASL
ASL
ASL
CLC
ADC YVERT
STA YENV ;Y AFFICHAGE
;
LDA OCTBALLE,X ;OCTET ENVAHISSEUR
SEC
SBC XHORIZ
CLC
ADC COLLIS
TAY
LDA DIV3,Y ;/3
CLC
STA TEMP ;SA COLONNE PAR RAPPORT A C1
ADC C1
STA CMORT ;SA COLONNE PAR RAPPORT A 0
LDA TEMP
ASL
CLC
ADC TEMP ;*3
CLC
ADC XHORIZ
STA XENV ;SON NUMERO D'OCTET
RTS
;
********************************
* CALCSPL *
* RECLACUL DES SOMMES LIGNE *
* ET COLONNE, DE L2,C1,C2,NDPLH*
* ET XHORIZ *
********************************
;
* MISE A JOUR DES SOMMES L & C *
;
CALCSPL LDY LMORT ;LIGNE DU MORT
LDA SLIGNE,Y
SEC
SBC #$01
STA SLIGNE,Y
;
LDY CMORT ;COLONNE
LDA SCOL,Y
SEC
SBC #$01
STA SCOL,Y
;
* MISE A JOUR DE L2,C1,C2 *
;
LDA #$FF ;NOUVELLE VALEUR PROVISOIRE
STA NL2
STA NC1
STA NC2
;
LDY L1 ;RECHERCHE DERNIERE LIGNE NON VIDE
DEY ;POUR COMPENSER LE INY QUI SUIT
CALCSPL1 INY
LDA SLIGNE,Y ;NBRE D'ENV. SUR LA LIGNE Y
BEQ CALCSPL2
STY NL2 ;DERNIERE LIGNE NON VIDE
;
CALCSPL2 CPY L2
BNE CALCSPL1
;
LDY C1 ;CALCUL DE NC1 ET NC2
DEY ;POUR COMPENSER LE INY QUI SUIT
CALCSPL3 INY ;COLONNE SUIVANTE
LDA SCOL,Y ;NBRE D'ENV. SUR CETTE COLONNE
BEQ CALCSPL4 ;=0, COLONNE EST VIDE
;
STY NC2 ;DERNIERE COLONNE NON VIDE
;
LDA NC1
BPL CALCSPL4 ;>=0, ON A DEJA TROUVE LA 1ERE COLONNE NON VIDE
STY NC1
CALCSPL4 CPY C2
BNE CALCSPL3
;
* RECALCUL DE XHORIZ *
;
LDA NC1 ;CALCUL DE XHORIZ
SEC
SBC C1 ;NC1-C1
STA TEMP
ASL ;*2
CLC
ADC TEMP ;*3
STA TEMP
CLC
ADC XHORIZ
STA XHORIZ ;XHORIZ:=XHORIZ+3*(NC1-C1)
;
* RECALCUL DE NDPLH *
LDY PASH ;V-A-T'ON A GAUCHE OU A DROITE?
BPL CALCSPL5 ;>=0, A DROITE
LDA TEMP ;NDPLH:=NDPLH+3*(NC1-C1)
CLC
ADC NDPLH
STA NDPLH
BPL CALCSPL6
;
CALCSPL5 LDA C2 ;NDPLH:=NDPLH +3*(C2-NC2)
SEC
SBC NC2
STA TEMP
ASL
CLC
ADC TEMP ;*3
CLC
ADC NDPLH
STA NDPLH
;
* MISE A JOUR DE C1, C2 ET L1 *
;
CALCSPL6 LDA NC1
STA C1
LDA NC2
STA C2
LDA NL2
STA L2 ;NOUVELLE VALEUR DE L2
;
RTS
;;
;
********************************
* PRBALLE: PREPARATION DES PARA*
* METRES BALLE. *
********************************
;
;
PRBALLE LDA #$02
STA NOCTETS
LDA #$04
STA NLIGNES
;
LDX NBA ;# BALLE COURANTE
LDY DPBALLE,X ;# DU DEPLACEMENT
LDA BALLEBP,Y ;ADRESSE FORME B.P.
STA FORMEL
LDA #>BALLE0
STA FORMEH
;
LDA YBALLE,X
TAY
LDA OCTBALLE,X
TAX
;
RTS
;
;
********************************
* PREXPL *
* PREPARATION DES PARAMETRES *
* POUR L'EXPLOSION D'UN ENV. .*
********************************
;
;
PREXPL LDA #$02
STA NOCTETS
LDA #$10
STA NLIGNES
;
LDA #<EXPL ;ADRESSE FORME
STA FORMEL
LDA #>EXPL
STA FORMEH
;
LDY YENV ;ORDONNEE DE L'ENVAHISSEUR
DEY
DEY
DEY
DEY ;ORDONNEE DE L'EXPLOSION
LDX XENV
;
RTS
;
;
;
********************************
* PRECLAT *
* PREPARATION DES PARAMETRES *
* D'ECLAT DANS UN ABRI. *
********************************
;
;
PRECLAT LDA #$02
STA NOCTETS
LDA #$08
STA NLIGNES
;
LDX NBA ;# BALLE
LDY DPBALLE,X ;# DU DEPLACEMENT
LDA ECLATBP,Y ;ADRESSE B.P. DE LA FORME
STA FORMEL
LDA #>ECLAT0
STA FORMEH
;
LDY YBALLE,X
DEY
DEY
DEY
DEY
LDA OCTBALLE,X
TAX
;
RTS
;
;

View File

@ -0,0 +1,319 @@
********************************
********************************
***** *****
***** ROUTINES *****
***** BASE *****
***** *****
********************************
********************************
;
;
********************************
* MVTBASE *
* MOUVEMENT DE LA BASE *
********************************
;
;
* VERIFICATION SI CYCLE OK *
;
MVTBASE DEC CPTRBASE
BNE MVTBASE3 ;<>0, PAS D'EXECUTION A CE CYCLE
LDA FRBASE ;REMISE A NEUF COMPTEUR
STA CPTRBASE
;
;
* VERIFICATION VITESSE=0 *
;
LDA VBASE ;VITESSE BASE
BEQ MVTBASE3 ;NUL, ON NE FAIT RIEN
;
* VERIFICATION DES LIMITES *
;
BMI MVTBASE1 ;VBASE<0, VERIFIER LIMITE INFERIEURE
;
*VERIFICATION LIMITE SUPERIEURE*
;
LDA XBASE
CMP XBMAX
BNE MVTBASE2 ;PAS ATTEINTE
;
LDA #$00
STA VBASE ;ARRET FORCE
RTS ;PAS DE MISE A JOUR POSITION
;
;
*VERIFICATION LIMITE INFERIEURE*
;
MVTBASE1 LDA XBASE
CMP XBMIN
BNE MVTBASE2 ;PAS ATTEINTE
LDA #$00
STA VBASE ;ARRET
RTS
;
;
*MISE A JOUR DE LA BASE *
;
MVTBASE2 JSR PRBASE
JSR XIMAGE ;EFFACEMENT
LDA XBASE
CLC
ADC VBASE ;NOUVELLE POSITION
STA XBASE
JSR PRBASE
JSR XIMAGE ;AFFICHAGE
;
MVTBASE3 RTS
;
;
;
********************************
* PRBASE *
* PREPARATION DES PARAMETRES *
* D'AFFICHAGE *
********************************
;
PRBASE LDA #$03
STA NOCTETS
LDA #$08
STA NLIGNES
;
* CALCUL ADRESSE FORME *
;
LDY XBASE ;ABSCISSE EN PIXELS
LDX DEPL,Y ;# DU DEPLACEMENT
LDA BASEBP,X ;ADRESSE FORME B.P.
STA FORMEL
LDA #>BASE0
STA FORMEH
;
LDX NUMOCT,Y ;# OCTET D'AFFICHAGE
LDY YBASE ;# LIGNE
;
RTS
;
;
********************************
* EXPLB *
* EXPLOSION DE LA BASE *
********************************
EXPLB JSR PRBASE
JSR XIMAGE ;EFFACEMENT
;
LDY NDMAX ;NOMBRE DE DEBRIS MAX
INY ;CAR ON COMPTE A PARTIR DE 0
STY NDEBRIS ;NMBRE DE DEBRIS ACTIFS
;
* INITIALISATION TABLE EXPLOS. *
;
EXPLB1 LDA XD0,Y
CLC
ADC XBASE
STA XD,Y
LDA YD0,Y
STA YD,Y
LDA VX0,Y
STA VX,Y
LDA VY0,Y
STA VY,Y
DEY
BPL EXPLB1
;
;
* AFFICHAGE SEQUENCES *
;
EXPL2 JSR MVTD
LDA #$20
JSR DELAI
LDA NDEBRIS
BNE EXPL2
;
RTS
;
;
********************************
* MVTD *
* MOUVEMENT DES DEBRIS D'UNE *
* EXPLOSION. *
********************************
;
MVTD LDA NDMAX
STA ND ;COMPTEUR DE DEBRIS
MVTD1 LDY ND
LDA YD,Y ;ORDONNEE DEBRI Y
BEQ MVTD6 ;DEBRI INACTIF
* EFFACEMENT DEBRI COURANT *
;
JSR PRDEBRI
JSR NIMAGE ;EFFACEMENT
* MISE A JOUR VITESSE VERT. *
;
LDY ND
LDA VY,Y
CLC
ADC G ;GRAVITATION
STA VY,Y
;
* MISE A JOUR ABSCISSE *
;
LDA XD,Y
CLC
ADC VX,Y
STA XD,Y
;
* VERIFICATION LIMITE *
;
LDA VX,Y
BMI MVTD3
LDA XD,Y ;VX>0, VERIFIER LIMITE SUP.
CMP XMAX
BCC MVTD4 ;PAS DE DEPASSEMENT
MVTD2 DEC NDEBRIS
BEQ MVTD7 ;IL N'Y A PLUS RIEN
LDA #$00
STA YD,Y ;DESACTIVATION
BEQ MVTD6
;
MVTD3 LDA XD,Y ;VX<0, COMPARAISON LIMITE INF.
BMI MVTD2
;
* MISE A JOUR ORDONNEE *
;
MVTD4 LDA YD,Y
CLC
ADC VY,Y
STA YD,Y
;
;
* VERIFICATION LIMITE *
CMP YMAX
BCC MVTD5
;
DEC NDEBRIS
LDA #$00
STA YD,Y
BEQ MVTD6
;
* REAFFICHAGE *
;
MVTD5 JSR PRDEBRI
JSR XIMAGE
;
;
* BOUCLAGE *
;
MVTD6 DEC ND
BPL MVTD1
;
MVTD7 RTS
;
;
;
********************************
* PRDEBRI *
********************************
;
;
PRDEBRI LDA #$02
STA NOCTETS
LDA #$02
STA NLIGNES
;
LDX XD,Y ;ABSCISSE
LDA DEPL,X ;DEPLACEMENT
TAX
LDA DEBRIBP,X
STA FORMEL
LDA #>DEBRI0
STA FORMEH
;
LDX XD,Y
LDA NUMOCT,X
TAX
LDA YD,Y
TAY
;
RTS
;
;
;
;
;
********************************
* NVBASE *
* REDEMARRAGE D'UNE NOUVELLE *
* BASE. *
********************************
;
;
NVBASE DEC NBASES
BNE NVBASE1 ;<>0, ON CONTINUE
JMP PERDU ;PARTIE TERMINEE
;
NVBASE1 LDA #$00 ;REDEMARRAGE
STA VBASE ;A L'ARRET
LDA XBMIN ; A GAUCHE
STA XBASE
* ARRET DES BOMBES *
;
LDA NBOMBES
BEQ NVBASE4 ;AUCUNE
LDX NBOMAX ;INDICE DS TABLE DES BOMBES
STX NBO
NVBASE2 LDX NBO
LDA YBOMBE,X ;POSITION VERTICALE
BEQ NVBASE3 ;PAS ACTIVE
JSR PRBOMBE
JSR NIMAGE ;EFFACEMENT
JSR ALB ;DESACTIVATION
NVBASE3 DEC NBO ;BOMBE SUIVANTE
BPL NVBASE2
;
* ARRET DES BALLES *
;
NVBASE4 LDA NBALLES
BEQ NVBASE7 ;AUCUNE
LDX NBAMAX
STX NBA
NVBASE6 LDX NBA
LDA YBALLE,X
BEQ NVBASE5 ;PAS ACTIVE
JSR PRBALLE
JSR NIMAGE ;EFFACEMENT
JSR CLF
NVBASE5 DEC NBA
BPL NVBASE6
;
LDA #$FF
NVBASE7 JSR DELAI ;ON ATTEND UN CHOUYA
JSR DELAI
;
;
* EFFACEMENT D'UNE BASE *
* DANS LA RESERVE *
;
;
JSR PRBASE ;PREPARATION DES PARAMETRES
;
LDA NBASES
ASL
ASL
ASL
ASL ;*10
CLC
ADC Y3 ;ORDONNEE DE LA BASE A EFFACER
TAY
LDX X3 ;SON ABSCISSE
JSR XIMAGE
;
* ET REAFFICHAGE BASE *
;
JSR PRBASE
JSR IMAGE
LDA #$FF
JSR DELAI ;ATTENDRE UN PEU
JMP BOUCLE
RTS
;

View File

@ -0,0 +1,313 @@
********************************
********************************
***** *****
***** ROUTINES *****
***** BOMBES *****
***** *****
********************************
********************************
;
;
********************************
* DROP: PREPARE UNE NOUVELLE *
* ENTREE DANS LA TABLE DES *
* BOMBES. *
********************************
;
DROP LDA NBOMBES ;NOMBRE DE BOMBES ACTIVES
CMP NBOMAX ;COMPARAISON AU MAX
BNE DROP1 ;<>0, PAS ATTEINT
RTS ;ON NE FAIT RIEN
;
;
* ON TIRE OU ON TIRE PAS? *
;
DROP1 JSR HASARD
LDA RND1
BEQ DROP2 ;NUL ON TIRE
RTS
;
;
* RECHERCHE D'UNE ENTREE LIBRE *
;
DROP2 LDX NBOMAX ;INDICE DS LA TABLE
DROP3 LDA YBOMBE,X ;LIGNE DE LA BOMBE X
BEQ DROP4 ;ESPACE LIBRE
DEX ;ENTREE SUIVANTE
BPL DROP3
BRK ;IMPOSSIBLE D'ARRIVER ICI!
;
DROP4 INC NBOMBES
LDA YENV ;LIGNE DU LANCEUR
CLC
ADC #$0C ;BAS DE L'ENVAHISSEUR
STA YBOMBE,X
;
JSR HASARD
LDY RND2 ;NOMBRE COMPRIS ENTRE 0 ET 6
LDA DPAL,Y ;DEPLACEMENT DE LA BOMBE
STA DPBOMBE,X
;
;
LDA XENV ;OCTET DE L'ENVAHISSEUR
CLC
ADC OSAL,Y ;-1 OU 0 SELON Y
STA OCTBOMBE,X ;OCTET DE LA BOMBE
ASL
ASL
ASL ;*8
SEC
SBC OCTBOMBE,X ;OCTET*7
CLC
ADC DPBOMBE,X ;+ DEPLACEMENT
STA XBOMBE,X ;ABSCISSE EN PIXELS
;
;
STX NBO ;# BOMBE COURANTE
JSR PRBOMBE
JSR XCIMAGE ;TRACE AVEC VERIF. COLL.
LDA COLLIS
BMI DROP5 ;<0, PAS DE COLLISION
JSR BOUM
;
DROP5 RTS
********************************
* ALB *
* ARRET DE LA BOMBE #NBO *
********************************
;
ALB LDX NBO ;# DE LA BOMBE
LDA #$00
STA YBOMBE,X
DEC NBOMBES
RTS
;
;
********************************
* MVTBOMBE *
* MOVEMENT DES BOMBES *
********************************
;
;
* VERIFICATION FREQUENCE *
;
MVTBOMBE DEC CPTRBO
BNE MVTBO4 ;<>0, ON NE FAIT RIEN
;
LDA FRBO ;REMISE A NEUF DU COMPTEUR
STA CPTRBO
;
* MISE A JOUR DE CHAQUE BOMBE *
* ACTIVE *
;
LDA NBOMAX ; 1ER INDICE DS LES TABLEAUX
STA NBO ;# BOMBE COURANTE
MVTBO1 LDX NBO
LDA YBOMBE,X ;Y DE LA BOMBE
BEQ MVTBO3 ;=0, INACTIVE
*EFFACEMENT *
;
JSR PRBOMBE
JSR XIMAGE ;XDRAW
;
* CALCUL NOUVELLE POSITION *
;
;
LDX NBO
LDA YBOMBE,X
CLC
ADC IBV ;VITESSE VERTICALE
STA YBOMBE,X
;
* VERIFICATION FIN DE PARCOURS *
;
CMP YBOMAX
BCC MVTBO2 ;PAS ATTEINTE
JSR ALB ;ARRET BOMBE
BPL MVTBO3
;
*REAFFICHAGE *
;
MVTBO2 JSR PRBOMBE
JSR XCIMAGE
;
* VERIFICATION COLLISION *
;
LDA COLLIS
BMI MVTBO3 ;PAS DE COLL.
JSR BOUM
;
;
* BOUCLAGE *
;
MVTBO3 DEC NBO ;BOMBE SUIVANTE
BPL MVTBO1
MVTBO4 RTS
;
;
********************************
* BOUM *
* TRAITEMENT DES COLLISIONS DE *
* BOMBES. *
********************************
;
;
BOUM LDX NBO ;# DE LA BOMBE
;
* A-T-ELLE HEURTE UNE BALLE? *
;
LDA NBALLES ;NOMBRE DE BALLES ACTIVES
BEQ BOUM2 ;AUCUNE
;
LDA NBAMAX
STA NBA ;N0 DE BALLE COURANTE
BOUM1 JSR CMPBB ;COMPARER COORDONEES
LDA SEMBB ;SEMAPHORE COLLISION BALLE-BOMBE
BPL BOUM4 ;COORDONNEES EGALES
DEC NBA
BPL BOUM1 ;VOIR BALLE SUIVANTE
;
;
;
* COLLISION DERRIERE ABRIS? *
;
BOUM2 LDX NBO ;# BOMBE
LDA YBOMBE,X ;# DE SA LIGNE
CMP #$A1 ;EST ELLE > ABRIS?
BPL BOUM3 ;OUI, BASE EST FOUTUE!!!
;
;
* COLLISION AVEC ABRI *
;
;
JSR PRTROU
JSR NIMAGE
JSR PRBOMBE
JSR NIMAGE ;EFFACEMENT BOMBE
JSR ALB ;ARRET BOMBE
RTS
;
;
* COLLISION AVEC BASE *
;
;
BOUM3 JSR PRBOMBE
JSR XIMAGE ;EFFACER LA BOMBE
JSR ALB ;ARRET BOMBE
;
JSR EXPLB ;EXPLOSION DE LA BASE
LDA #$FF
JSR DELAI ;ON ATTEND UN CHOUYA
;
JSR NVBASE ;ENGAGER NOUVELLE BASE
RTS
;
;
;
* COLLISION AVEC BALLE *
;
;
BOUM4 JSR PRBALLE
JSR NIMAGE ;EFFACER LA BALLE
JSR PRBOMBE
JSR NIMAGE ;EFFACEMENT BOMBE NBO
JSR CLF ;ARRETER LA BALLE
JSR ALB ;ARRETER LA BOMBE
RTS ;TERMINE
;
;
********************************
* PRBOMBE *
* PARAMETRES FORME BOMBE *
********************************
;
;
PRBOMBE LDA #$02
STA NOCTETS
LDA #$04
STA NLIGNES
;
;
LDX NBO ;# DE LA BOMBE
LDY DPBOMBE,X ;# DU DEPLACEMENT
LDA BOMBEBP,Y ;ADRESSE FORME B.P.
STA FORMEL
LDA #>BOMBE0
STA FORMEH
;
LDA YBOMBE,X ;ORDONNEE
TAY
LDA OCTBOMBE,X ;# D'OCTET
TAX
;
RTS
;
;
********************************
* PRTROU *
* PREPARATION PARAMETRES DE *
* TROU *
********************************
;
;
PRTROU LDA #$02
STA NOCTETS
LDA #$07
STA NLIGNES
;
LDX NBO ;# DE LA BOMBE
LDY DPBOMBE,X ;# DU DEPLACEMENT
LDA TROUBP,Y
STA FORMEL
LDA #>TROU0
STA FORMEH
;
LDY YBOMBE,X ;LIGNE DE LA BOMBE
;
LDA OCTBOMBE,X
TAX
RTS
;
;
********************************
* CMPBB *
* COMPARAISON COORDONNEES *
* BOMBE NBO ET BALLE NBA. *
* *
********************************
;
;
CMPBB LDA #$FF
STA SEMBB ;SEMAPHORE DESARME
;
LDY NBO ;# DE LA BOMBE
LDX NBA ;# DE LA BALLE
LDA YBALLE,X ;COMPARAISON DES ORDONNEES
CMP YBOMBE,Y
BNE CMPBB2 ;ORDONNEES DIFFERENTES
;
* COMPARAISON DES ABSCISSES *
;
LDA XBALLE,X ;ABSCISSE BALLE
CLC
ADC #$01 ;+1
STA TEMP
LDX #$04 ;COMPTEUR
CMPBB1 LDA TEMP
CMP XBOMBE,Y
BEQ CMPBB3 ;EGALITE-COLLISION
DEC TEMP
DEX ;DECOMPTE
BNE CMPBB1
;
CMPBB2 RTS ;PAS DE COLLISION
;
CMPBB3 STX SEMBB
;
RTS
;
;
********************************

View File

@ -0,0 +1,46 @@
********************************
********************************
**** CLAVIER *****
********************************
********************************
;
;
********************************
* LIRECL: LECTURE DU CLAVIER *
* *
* LIT LE CLAVIER ET MODIFIE *
* EVENTUELLEMENT VBASE, FEU ET *
* DEBUG. *
********************************
;
;
LIRECL LDA CLAVIER ;LECTURE
BPL RIEN
;
;
CMP #$95 ;--->
BNE LIRECL2 ;PAS CA
LDA IBASE
STA VBASE
BPL RIEN ;TERMINE
;
LIRECL2 CMP #$88 ;<---
BNE LIRECL3 ;TOUJOURS PAS BON
LDA MIBASE ;-IBASE
STA VBASE
BNE RIEN ;TERMINE
;
LIRECL3 CMP #$D3 ;"S"
BNE LIRECL4 ;PAS BON
LDA #$00
STA VBASE
BEQ RIEN
;
LIRECL4 CMP #$A0 ;BARRE
BNE RIEN
JSR FEU
;
RIEN BIT CLACT ;REACTIVATION
JSR HASARD
RTS ;RETOUR
********************************

View File

@ -0,0 +1,299 @@
;
;
********************************
********************************
***** ******
***** ROUTINES ******
***** ENVAHISSEURS ******
***** ******
********************************
********************************
;
;
********************************
* DEPLENV: DEPLACEMENT DES *
* ENVAHISSEURS. *
* *
********************************
;
;
*VERIFICATION SI DEPLACEMENT *
;
DEPLENV DEC CPTRENV ;DECOMPTE
BNE DEPLENV2 ;<>0, PAS AU COURS DE CE CYCLE
LDA FRENV ;REMISE A NEUF COMPTEUR
STA CPTRENV
;
* DEPLACEMENT EFFECTIF *
;
JSR AFFENV ;EFFACEMENT DES ENVAHISSEURS
;
DEC NDPLH ;DECOMPTE DES DEPLACEMENTS HORIZONTAUX
BNE DEPLENV1 ;<>0, IL EN RESTE A EFFECTUER
;
JSR DEPLV ;DEPLACEMENT VERTICAL
JSR AFFENV ;REAFFICHAGE
RTS
;
;
DEPLENV1 JSR DEPLH ;DEPLACEMENT HORIZONTAL DES ENVAHISSEURS
JSR AFFENV ;REAFFICHAGE
RTS
;
* LACHE D'UNE BOMBE *
DEPLENV2 JSR LACHER
LDA ATT1
JSR DELAI
RTS
;
;
;
;
********************************
* DEPLH: DEPLACEMENT HORIZONTAL*
* DES ENVAHISSEURS. *
********************************
;
DEPLH LDA XHORIZ ;MISE A JOUR XHORIZ
CLC
ADC PASH
STA XHORIZ
;
* COMMUTATION DU TYPE D'ENV. *
;
LDX L1 ;X COMPTEUR DE LIGNE
DEX ;POUR COMPENSER INX QUI SUIT
LDY #$0A ;INDICE DU TYPE DANS LA TABLE
DEPLH1 INX ;LIGNE SUIVNTE
LDA ATLL,X ;ADRESSE TABLE TL
STA BDRL ;PREPARATION ADRESSAGE INDIRECT
LDA ATLH,X
STA BDRH
;
LDA DIFFT ;DIFFERENCE D'ADRESSE TYPE 2-TYPE 1
SEC
SBC (BDRL),Y ;COMMUTATION
STA (BDRL),Y
;
CPX L2 ;COMPARAISON DERNIERE LIGNE
BNE DEPLH1
RTS
;
;
********************************
* DEPLV: DEPLACEMENT VERTICAL *
* DES ENVAHISSEURS. *
********************************
;
;
DEPLV LDA #$00 ;INVERSION DU SENS HORIZONTAL
SEC
SBC PASH
STA PASH ;PASH:=-PASH
* REMISE A JOUR DE NDPLH *
;
LDA C1
SEC
SBC C2
STA TEMP ;(C1-C2)
ASL ;(C1-C2)*2
CLC
ADC TEMP ;(C1-C2)*3
CLC
ADC NPOS
STA NDPLH ;NPOS-(C2-C1)*3
;
;
*CHANGEMENT DE LIGNE *
;
LDA YVERT
CLC
ADC PASV
STA YVERT
DEC PLUSVITE ;DECOMPTE SEMAPHORE ACCELERATION
;
RTS
;
;
********************************
* AFFENV: AFFICHAGE DES ENVA- *
* HISSEURS. *
********************************
;
AFFENV LDA L1
STA LENV ;COMPTEUR DE LIGNES
LDA YVERT
STA YENV
;
AFFENV1 JSR AFFL ;AFFICHAGE LIGNE
LDA LENV
CMP L2 ;DERNIERE LIGNE?
BEQ AFFENV2 ;=0, OUI
;
INC