ROCKMOVE.S 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. * 0042 221283
  2. *
  3. *
  4. ** ROCKMOVE.S **
  5. ** ASTEROIDS FOR THE ATARI 3600 **
  6. ** THIS FILE CONTAINS THE ROCK MOVEMENT ROUTINE. **
  7. ROCKMOVE:
  8. LDX #32
  9. MOVELOOP:
  10. LDA STATUS,X
  11. ; CMP #$FF ;UNCOMMENT FOR MOVING EXPLOSIONS
  12. ; BNE THISMOVE ;UNCOMMENT FOR MOVING EXPLOSIONS
  13. BPL THISMOVE ;COMMENT FOR MOVING EXPLOSIONS
  14. NEXTMOVE:
  15. DEX
  16. BPL MOVELOOP
  17. RTS
  18. THISMOVE:
  19. AND #$0F
  20. TAY
  21. CLC ;GET NEW XPOS
  22. LDA XVELL,X
  23. ADC XPOSL,X
  24. STA XPOSL,X
  25. LDA XVELH,X
  26. ADC XPOSH,X
  27. CMP #XPOSMAX ;CHECK FOR WRAPAROUND
  28. BCC SETXPOS
  29. ; CMP #XPOSMIN
  30. ; BCS SETXPOS
  31. CPX #25 ;DON'T WRAP THE UFO
  32. BEQ SETXPOS
  33. LDA XVELH,X
  34. BMI NEGOVELX
  35. LDA #XPOSMIN
  36. JMP SETXPOS
  37. NEGOVELX:
  38. LDA #XPOSMAX
  39. SETXPOS:
  40. STA XPOSH,X
  41. CLC
  42. ADC DELTAX,Y
  43. STA COLXPOSH,X
  44. CLC ;GET NEW YPOS
  45. LDA YVELL,X
  46. ADC YPOSL,X
  47. STA YPOSL,X
  48. LDA YVELH,X
  49. ADC YPOSH,X
  50. CMP #YPOSMAX ;CHECK FOR WRAPAROUND
  51. BCC SETYPOS
  52. ; CMP #YPOSMIN
  53. ; BCS SETYPOS
  54. LDA YVELH,X
  55. BMI NEGOVELY
  56. LDA #YPOSMIN
  57. JMP SETYPOS
  58. NEGOVELY:
  59. LDA #YPOSMAX
  60. SETYPOS:
  61. STA YPOSH,X
  62. CLC
  63. ADC DELTAY,Y
  64. STA COLYPOSH,X
  65. CPY #3
  66. BCS NEXTMOVE
  67. LDA STATUS,X
  68. BMI NEXTMOVE
  69. TXA ;GET NEW ANIMATION INDEX
  70. ASL
  71. ADC FRMCNT
  72. LSR
  73. AND AVEL,X ;AVEL ANDED WITH FRMCNT TO DECIDE
  74. BNE NEXTMOVE ;WHEN NEXT ANIMATION
  75. LDA ASPIN,X
  76. BMI NEGOSPIN
  77. POSOSPIN:
  78. CPY #1
  79. BCC PSANIM
  80. BEQ PMANIM
  81. PLANIM:
  82. TAY
  83. LDA ACYC,X
  84. ADC #2 ;CARRY IS SET
  85. CMP LBOUND+1,Y
  86. BMI SETACYC
  87. LDA LBOUND,Y
  88. JMP SETACYC
  89. PMANIM:
  90. TAY
  91. LDA ACYC,X
  92. ADC #1 ;CARRY IS SET
  93. CMP MBOUND+1,Y
  94. BMI SETACYC
  95. LDA MBOUND,Y
  96. JMP SETACYC
  97. PSANIM:
  98. TAY
  99. LDA ACYC,X
  100. ADC #1 ;CARRY IS CLEAR
  101. CMP SBOUND+1,Y
  102. BMI SETACYC
  103. LDA SBOUND,Y
  104. JMP SETACYC
  105. NEGOSPIN:
  106. AND #$7F
  107. CPY #1
  108. BCC NSANIM
  109. BEQ NMANIM
  110. NLANIM:
  111. TAY
  112. LDA ACYC,X
  113. SBC #3 ;CARRY IS SET
  114. CMP LBOUND,Y
  115. BPL SETACYC
  116. LDA LBOUND+1,Y
  117. SEC
  118. SBC #3
  119. JMP SETACYC
  120. NMANIM:
  121. TAY
  122. LDA ACYC,X
  123. SBC #2 ;CARRY IS SET
  124. CMP MBOUND,Y
  125. BPL SETACYC
  126. LDA MBOUND+1,Y
  127. SEC
  128. SBC #2
  129. JMP SETACYC
  130. NSANIM:
  131. TAY
  132. LDA ACYC,X
  133. SBC #0 ;CARRY IS CLEAR
  134. CMP SBOUND,Y
  135. BPL SETACYC
  136. LDA SBOUND+1,Y
  137. SEC
  138. SBC #1
  139. SETACYC:
  140. STA ACYC,X
  141. JMP NEXTMOVE
  142. SHOTMOVE:
  143. LDX #5
  144. LOOPSHOT:
  145. LDA STATUS+26,X
  146. BMI SHOTNEXT
  147. INC SHOTCNT,X
  148. BNE SHOTNEXT
  149. LDA #$FF
  150. STA STATUS+26,X
  151. SHOTNEXT:
  152. DEX
  153. BPL LOOPSHOT
  154. RTS
  155. ASPIN:
  156. .DC.B $00,$80,$01,$81,$02,$82,$00,$80,$01,$81,$02,$82
  157. .DC.B $00,$80,$01,$81,$02,$82,$00,$80,$01,$81,$02,$82
  158. AVEL:
  159. .DC.B 1,3,0,1,3,0,1,3,0,1,3,0
  160. .DC.B 3,0,1,3,0,1,3,0,1,3,0,1
  161. LBOUND:
  162. .DC.B ROCK1L1 & 255,ROCK2L1 & 255,ROCK3L1 & 255,ROCKEL1 & 255
  163. MBOUND:
  164. .DC.B ROCK1M1 & 255,ROCK2M1 & 255,ROCK3M1 & 255,ROCKEM1 & 255
  165. SBOUND:
  166. .DC.B ROCK1S1 & 255,ROCK2S1 & 255,ROCK3S1 & 255,ROCKES1 & 255
  167. ELBOUND:
  168. .DC.B ROCKES1 & 255,ROCKEM1 & 255,ROCKEL1 & 255,SHIPE1 & 255
  169. .DC.B ROCKES1 & 255,ROCKEM1 & 255,SHOT1 & 255,SHIPE1 & 255
  170. EHBOUND:
  171. .DC.B ROCKES5 & 255,ROCKEM5 & 255,ROCKEL5 & 255,SHIPE6 & 255
  172. .DC.B ROCKES5 & 255,ROCKEM5 & 255,SHOT1 & 255,SHIPE6 & 255
  173. ROCKCYC:
  174. .DC.B ROCK1S1 & 255,ROCK1M1 & 255,ROCK1L1 & 255
  175. DELTAX:
  176. .DC.B 2,3,5,3,2,3,0 ;XCENTER
  177. DELTAY:
  178. .DC.B 13,10,8,9,13,12,0 ;YCENTER