mirror of
https://github.com/peterdell/wudsn-ide.git
synced 2024-12-21 18:29:40 +00:00
314 lines
9.2 KiB
ArmAsm
314 lines
9.2 KiB
ArmAsm
********************************
|
|
********************************
|
|
***** *****
|
|
***** 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
|
|
;
|
|
;
|
|
********************************
|