Guest User

Untitled

a guest
Jul 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.81 KB | None | 0 0
  1. rem batari Basic Program
  2. rem Created 11/19/2009 4:20:27 PM by Visual bB Version 1.0.0.544
  3.  
  4. playfield:
  5. XX......................XXXXXXXX
  6. XX......................XXXX....
  7. XXXXXXXXXXXX....XXXX....XXXX....
  8. XXXXXXXXXXXX....XXXX....XXXX....
  9. ..................XXXXXXXXXX....
  10. ................................
  11. ....XXXXXXXXXX..................
  12. ....XXXX....XXXX....XXXXXXXXXXXX
  13. ....XXXX....XXXX....XXXXXXXXXXXX
  14. ....XXXX......................XX
  15. XXXXXXXX......................XX
  16. end
  17.  
  18. player0
  19. player0:
  20. %01100110
  21. %01100110
  22. %01111110
  23. %01000010
  24. %11111111
  25. %10000001
  26. %10100101
  27. %11111111
  28. end
  29.  
  30. player1
  31. player1:
  32. %01100110
  33. %01100110
  34. %01111110
  35. %01000010
  36. %11111111
  37. %10000001
  38. %10100101
  39. %11111111
  40. end
  41.  
  42. COLUBK = 106
  43. COLUPF = 96
  44.  
  45.  
  46. scorecolor = 30
  47.  
  48. dim missileFlag = a
  49.  
  50. dim bomb1Timer = b
  51. dim bomb2Timer = c
  52.  
  53. dim bomb1xDrop = d
  54. dim bomb2xDrop = e
  55.  
  56. dim bombLeft = f
  57.  
  58. dim swapCounter1 = g
  59. dim swapCounter2 = h
  60.  
  61. dim collisionFrameCount = i
  62. dim p0oldX1 = j
  63. dim p0oldY1 = k
  64. dim p0oldX2 = l
  65. dim p0oldY2 = m
  66. dim p0oldX3 = n
  67. dim p0oldY3 = o
  68. dim p0oldX4 = p
  69. dim p0oldY4 = q
  70. dim p1oldX1 = r
  71. dim p1oldY1 = s
  72. dim p1oldX2 = t
  73. dim p1oldY2 = u
  74. dim p1oldX3 = v
  75. dim p1oldY3 = w
  76. dim p1oldX4 = x
  77. dim p1oldY4 = y
  78.  
  79. dim directionTracking = z
  80.  
  81. player0x = 17
  82. player0y = 80
  83.  
  84. player1x = 137
  85. player1y = 16
  86.  
  87. bomb1Timer = 0
  88. bomb2Timer = 0
  89.  
  90. swapCounter1 = 1
  91. swapCounter2 = 1
  92.  
  93. gameloop
  94.  
  95. COLUP0 = 64
  96. COLUP1 = 144
  97.  
  98. PF0 = $FF
  99.  
  100.  
  101. if switchreset then reboot
  102.  
  103. gosub handleControls
  104.  
  105. gosub positionTracking
  106.  
  107. gosub handlePlayfieldCollision
  108.  
  109. gosub handleMissileBlocking
  110.  
  111. gosub placeMissile
  112.  
  113. rem Bomb waiting to explode
  114. if missileFlag{0} then bomb1Timer = bomb1Timer + 1
  115. if missileFlag{1} then bomb2Timer = bomb2Timer + 1
  116.  
  117. rem Make bomb explode
  118. if bomb1Timer = 60 && missileFlag{0} then bomb1Timer = 0 : missileFlag{0} = 0 : missileFlag{2} = 1
  119. if bomb2Timer = 60 && missileFlag{1} then bomb2Timer = 0 : missileFlag{1} = 0 : missileFlag{3} = 1
  120.  
  121. rem Bomb explosion
  122. if missileFlag{2} && bombLeft{0} then missile0x = missile0x - 1 : bomb1Timer = bomb1Timer + 1
  123. if missileFlag{2} && !bombLeft{0} then missile0x = missile0x + 1 : bomb1Timer = bomb1Timer + 1
  124. if missileFlag{3} && bombLeft{1} then missile1x = missile1x - 1 : bomb2Timer = bomb2Timer + 1
  125. if missileFlag{3} && !bombLeft{1} then missile1x = missile1x + 1 : bomb2Timer = bomb2Timer + 1
  126.  
  127. rem Missile direction switching
  128. if missileFlag{2} then gosub missile1Oscillate
  129. if missileFlag{3} then gosub missile2Oscillate
  130.  
  131. rem Destroy exploding bombs after 1 second
  132. if missileFlag{2} && bomb1Timer >= 60 then gosub killBomb1
  133. if missileFlag{3} && bomb2Timer >= 60 then gosub killBomb2
  134.  
  135. rem Score incrementing
  136. if collision(player0, missile0) && missileFlag{2} then score = score + 10 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
  137. if collision(player0, missile1) && missileFlag{3} then score = score + 10 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
  138. if collision(player1, missile0) && missileFlag{2} then score = score + 10000 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
  139. if collision(player1, missile1) && missileFlag{3} then score = score + 10000 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
  140.  
  141. drawscreen
  142.  
  143. goto gameloop
  144.  
  145.  
  146. rem SUBROUTINES
  147.  
  148. handleControls
  149. if joy0up then player0y = player0y - 1
  150. if joy0down then player0y = player0y + 1
  151. if joy0left then player0x = player0x - 1
  152. if joy0right then player0x = player0x + 1
  153. if joy1up then player1y = player1y - 1
  154. if joy1down then player1y = player1y + 1
  155. if joy1left then player1x = player1x - 1
  156. if joy1right then player1x = player1x + 1
  157. return
  158.  
  159. positionTracking
  160. p0oldX4 = p0oldX3
  161. p0oldX3 = p0oldX2
  162. p0oldX2 = p0oldX1
  163. p0oldX1 = player0x
  164. p0oldY4 = p0oldY3
  165. p0oldY3 = p0oldY2
  166. p0oldY2 = p0oldY1
  167. p0oldY1 = player0y
  168. p1oldX4 = p1oldX3
  169. p1oldX3 = p1oldX2
  170. p1oldX2 = p1oldX1
  171. p1oldX1 = player1x
  172. p1oldY4 = p1oldY3
  173. p1oldY3 = p1oldY2
  174. p1oldY2 = p1oldY1
  175. p1oldY1 = player1y
  176. return
  177.  
  178. handlePlayfieldCollision
  179. if collision(player0, playfield) then player0x = p0oldX3 : player0y = p0oldY3
  180. if collision(player0, playfield) then player1x = p1oldX3 : player1y = p1oldY3
  181. return
  182.  
  183. handleMissileBlocking
  184.  
  185. if collision(missile0, player0) && missileFlag{0} then player0x = p0oldX4 : player0y = p0oldY4
  186. if collision(missile0, player1) && missileFlag{0} then player1x = p1oldX4 : player1y = p1oldY4
  187. if collision(missile1, player0) && missileFlag{1} then player0x = p0oldX4 : player0y = p0oldY4
  188. if collision(missile1, player1) && missileFlag{1} then player1x = p1oldX4 : player1y = p1oldY4
  189. return
  190.  
  191. placeMissile
  192. if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{0} then missile0height = 1 : missile0x = player0x + 4 : missile0y = player0y - 16 : missileFlag{0} = 1 : bomb1xDrop = missile0x
  193. if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{1} then missile0height = 1 : missile0x = player0x + 4 : missile0y = player0y + 10 : missileFlag{0} = 1 : bomb1xDrop = missile0x
  194. if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{2} then missile0height = 1 : missile0x = player0x - 10 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
  195. if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{3} then missile0height = 1 : missile0x = player0x + 16 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
  196. rem temp2 = directionTracking & $FF
  197. rem if joy0fire && !missileFlag{0} && !missileFlag{2} && temp2 > $0F then missile0height = 1 : missile0x = player0x + 10 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
  198.  
  199. if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{4} then missile1height = 1 : missile1x = player1x + 4 : missile1y = player1y - 16 : missileFlag{1} = 1 : bomb2xDrop = missile1x
  200. if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{5} then missile1height = 1 : missile1x = player1x + 4 : missile1y = player1y + 10 : missileFlag{1} = 1 : bomb2xDrop = missile1x
  201. if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{6} then missile1height = 1 : missile1x = player1x - 10 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
  202. if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{7} then missile1height = 1 : missile1x = player1x + 16 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
  203. rem temp2 = directionTracking & $0F
  204. rem if joy1fire && !missileFlag{1} && !missileFlag{3} && temp2 > 0 then missile1height = 1 : missile1x = player1x + 10 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
  205. return
  206.  
  207. killBombs
  208. gosub killBomb1
  209. gosub killBomb2
  210. return
  211.  
  212. killBomb1
  213. missileFlag{2} = 0 : bomb1Timer = 0 : missile0y = 0 : missile0height = 0 : swapCounter1 = 0
  214. return
  215.  
  216. killBomb2
  217. missileFlag{3} = 0 : bomb2Timer = 0 : missile1y = 0 : missile1height = 0 : swapCounter2 = 0
  218. return
  219.  
  220. missile1Oscillate
  221. temp2 = missile0x - bomb1xDrop
  222. if temp2 < 0 then temp2 = bomb1xDrop - missile0x
  223. temp3 = swapCounter1 * 2
  224.  
  225. if temp3 <= temp2 then bombLeft{0} = !bombLeft{0} : missile0height = missile0height + 1 : swapCounter1 = swapCounter1 + 1 : missileFlag{4} = !missileFlag{4}
  226. if missileFlag{4} && temp3 <= temp2 then missile0y = missile0y + 1
  227. return
  228.  
  229. missile2Oscillate
  230. temp4 = missile1x - bomb2xDrop
  231. if temp4 < 0 then temp4 = bomb2xDrop - missile1x
  232. temp5 = swapCounter2 * 2
  233.  
  234. if temp5 <= temp4 then bombLeft{1} = !bombLeft{1} : missile1height = missile1height + 1 : swapCounter2 = swapCounter2 + 1 : missileFlag{5} = !missileFlag{5}
  235. if temp5 <= temp4 && missileFlag{5} then missile1y = missile1y + 1
  236. return
Add Comment
Please, Sign In to add comment