123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- * 0042 221283
- *
- *
- ** ROCKMOVE.S **
- ** ASTEROIDS FOR THE ATARI 3600 **
- ** THIS FILE CONTAINS THE ROCK MOVEMENT ROUTINE. **
- ROCKMOVE:
- LDX #32
- MOVELOOP:
- LDA STATUS,X
- ; CMP #$FF ;UNCOMMENT FOR MOVING EXPLOSIONS
- ; BNE THISMOVE ;UNCOMMENT FOR MOVING EXPLOSIONS
- BPL THISMOVE ;COMMENT FOR MOVING EXPLOSIONS
- NEXTMOVE:
- DEX
- BPL MOVELOOP
- RTS
- THISMOVE:
- AND #$0F
- TAY
- CLC ;GET NEW XPOS
- LDA XVELL,X
- ADC XPOSL,X
- STA XPOSL,X
- LDA XVELH,X
- ADC XPOSH,X
- CMP #XPOSMAX ;CHECK FOR WRAPAROUND
- BCC SETXPOS
- ; CMP #XPOSMIN
- ; BCS SETXPOS
- CPX #25 ;DON'T WRAP THE UFO
- BEQ SETXPOS
- LDA XVELH,X
- BMI NEGOVELX
- LDA #XPOSMIN
- JMP SETXPOS
- NEGOVELX:
- LDA #XPOSMAX
- SETXPOS:
- STA XPOSH,X
- CLC
- ADC DELTAX,Y
- STA COLXPOSH,X
- CLC ;GET NEW YPOS
- LDA YVELL,X
- ADC YPOSL,X
- STA YPOSL,X
- LDA YVELH,X
- ADC YPOSH,X
- CMP #YPOSMAX ;CHECK FOR WRAPAROUND
- BCC SETYPOS
- ; CMP #YPOSMIN
- ; BCS SETYPOS
- LDA YVELH,X
- BMI NEGOVELY
- LDA #YPOSMIN
- JMP SETYPOS
- NEGOVELY:
- LDA #YPOSMAX
- SETYPOS:
- STA YPOSH,X
- CLC
- ADC DELTAY,Y
- STA COLYPOSH,X
- CPY #3
- BCS NEXTMOVE
- LDA STATUS,X
- BMI NEXTMOVE
- TXA ;GET NEW ANIMATION INDEX
- ASL
- ADC FRMCNT
- LSR
- AND AVEL,X ;AVEL ANDED WITH FRMCNT TO DECIDE
- BNE NEXTMOVE ;WHEN NEXT ANIMATION
- LDA ASPIN,X
- BMI NEGOSPIN
- POSOSPIN:
- CPY #1
- BCC PSANIM
- BEQ PMANIM
- PLANIM:
- TAY
- LDA ACYC,X
- ADC #2 ;CARRY IS SET
- CMP LBOUND+1,Y
- BMI SETACYC
- LDA LBOUND,Y
- JMP SETACYC
- PMANIM:
- TAY
- LDA ACYC,X
- ADC #1 ;CARRY IS SET
- CMP MBOUND+1,Y
- BMI SETACYC
- LDA MBOUND,Y
- JMP SETACYC
- PSANIM:
- TAY
- LDA ACYC,X
- ADC #1 ;CARRY IS CLEAR
- CMP SBOUND+1,Y
- BMI SETACYC
- LDA SBOUND,Y
- JMP SETACYC
- NEGOSPIN:
- AND #$7F
- CPY #1
- BCC NSANIM
- BEQ NMANIM
- NLANIM:
- TAY
- LDA ACYC,X
- SBC #3 ;CARRY IS SET
- CMP LBOUND,Y
- BPL SETACYC
- LDA LBOUND+1,Y
- SEC
- SBC #3
- JMP SETACYC
- NMANIM:
- TAY
- LDA ACYC,X
- SBC #2 ;CARRY IS SET
- CMP MBOUND,Y
- BPL SETACYC
- LDA MBOUND+1,Y
- SEC
- SBC #2
- JMP SETACYC
- NSANIM:
- TAY
- LDA ACYC,X
- SBC #0 ;CARRY IS CLEAR
- CMP SBOUND,Y
- BPL SETACYC
- LDA SBOUND+1,Y
- SEC
- SBC #1
- SETACYC:
- STA ACYC,X
- JMP NEXTMOVE
- SHOTMOVE:
- LDX #5
- LOOPSHOT:
- LDA STATUS+26,X
- BMI SHOTNEXT
- INC SHOTCNT,X
- BNE SHOTNEXT
- LDA #$FF
- STA STATUS+26,X
- SHOTNEXT:
- DEX
- BPL LOOPSHOT
- RTS
- ASPIN:
- .DC.B $00,$80,$01,$81,$02,$82,$00,$80,$01,$81,$02,$82
- .DC.B $00,$80,$01,$81,$02,$82,$00,$80,$01,$81,$02,$82
- AVEL:
- .DC.B 1,3,0,1,3,0,1,3,0,1,3,0
- .DC.B 3,0,1,3,0,1,3,0,1,3,0,1
- LBOUND:
- .DC.B ROCK1L1 & 255,ROCK2L1 & 255,ROCK3L1 & 255,ROCKEL1 & 255
- MBOUND:
- .DC.B ROCK1M1 & 255,ROCK2M1 & 255,ROCK3M1 & 255,ROCKEM1 & 255
- SBOUND:
- .DC.B ROCK1S1 & 255,ROCK2S1 & 255,ROCK3S1 & 255,ROCKES1 & 255
- ELBOUND:
- .DC.B ROCKES1 & 255,ROCKEM1 & 255,ROCKEL1 & 255,SHIPE1 & 255
- .DC.B ROCKES1 & 255,ROCKEM1 & 255,SHOT1 & 255,SHIPE1 & 255
- EHBOUND:
- .DC.B ROCKES5 & 255,ROCKEM5 & 255,ROCKEL5 & 255,SHIPE6 & 255
- .DC.B ROCKES5 & 255,ROCKEM5 & 255,SHOT1 & 255,SHIPE6 & 255
- ROCKCYC:
- .DC.B ROCK1S1 & 255,ROCK1M1 & 255,ROCK1L1 & 255
- DELTAX:
- .DC.B 2,3,5,3,2,3,0 ;XCENTER
- DELTAY:
- .DC.B 13,10,8,9,13,12,0 ;YCENTER
|