RASTDEF.S 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. * 1544 030784
  2. ** * ** * ** * ** * ** * ** * ** * ** * **
  3. ** **
  4. ** Asteroids for the Atari 3600 **
  5. ** **
  6. ** * ** * ** * ** * ** * ** * ** * ** * **
  7. *
  8. *
  9. ** RASTDEF.S **
  10. ** ASTEROIDS FOR THE ATARI 3600 **
  11. ** THIS FILE CONTAINS MEMORY STORAGE **
  12. ** AND GENERAL EQUATES. **
  13. **
  14. ** MODIFIED FOR MARIA 2 **
  15. *
  16. .include "maria.s"
  17. *
  18. *
  19. ** HSC INTERFACE
  20. HSCRAM EQU $1E00
  21. HSCSETRS EQU $3FEB
  22. HSCSTAT EQU $3FF7
  23. HSCATRCT EQU $3FFA
  24. HSCENTER EQU $3FFD
  25. ** IMMEDIATES
  26. ICON EQU $07
  27. SMALL EQU $10
  28. MEDIUM EQU $21
  29. LARGE EQU $32
  30. SHIP EQU $23
  31. SMALLUFO EQU $14
  32. LARGEUFO EQU $25
  33. SHOT EQU $06
  34. OPENSHIP EQU $FF
  35. XPOSMIN EQU 0
  36. XPOSMAX EQU 159
  37. YPOSMIN EQU 0
  38. YPOSMAX EQU 191
  39. NOVICED EQU 60
  40. TOUGHD EQU 90
  41. EXPERTD EQU 110
  42. MAXVEL EQU $20
  43. MINDIFF EQU $00
  44. MAXDIFF EQU $03
  45. MINMODE EQU $FF
  46. MAXMODE EQU $02
  47. SELDLY EQU $10
  48. RACKDLYC EQU $25
  49. * EQUATES FOR DRIVER STATE MACHINE.
  50. TITLEST EQU 1
  51. MENUST EQU 2
  52. AUTOST EQU 3
  53. HSCST EQU 4
  54. PLAYST EQU 5
  55. PAUZST EQU 6
  56. TITLEONT EQU 0
  57. TITLEOFT EQU TITLEONT+$02 ;2 * 8.3 = 17 SECONDS
  58. AUTOOFFT EQU $04
  59. MENUOFFT EQU $07
  60. * EQUATES FOR FINITE STATE MACHINE - FSM
  61. DEAD EQU $FF
  62. OK EQU 0
  63. BIRTH EQU 1
  64. HYPER EQU 2
  65. DEATH EQU 3
  66. COMPOVER EQU 4
  67. ENTERT EQU 1
  68. RESINT EQU ENTERT+$28
  69. PMSGOFFT EQU RESINT+$28
  70. PMSGT EQU PMSGOFFT+$28
  71. HYPENDT EQU 1
  72. HYPERT EQU HYPENDT+$28
  73. NEWGAMET EQU 1
  74. GOVERT EQU NEWGAMET+$60
  75. POMSGOFT EQU GOVERT+$10
  76. POMSGT EQU POMSGOFT+$30
  77. SWITCHT EQU POMSGT+$5
  78. DIET EQU SWITCHT+$10
  79. * 6116 RAM WHICH IS >ON< ZERO PAGE:
  80. .ORG $40
  81. RANDPTR0:
  82. .DS.B 1
  83. RANDPTR1:
  84. .DS.B 1
  85. HISCORE:
  86. .DS.B 4 ;HIGH SCORE
  87. SCORE:
  88. .DS.B 4 ;PLAYER ONE SCORE DEC. MODE
  89. SCORE2:
  90. .DS.B 4 ;PLAYER TWO SCORE DEC. MODE
  91. COMBSCOR:
  92. .DS.B 4 ;COMBINED SCORE DEC. MODE
  93. MENLEFT:
  94. .DS.B 1 ;PLAYER1 NUMBER OF MEN LEFT
  95. MENLEFT2:
  96. .DS.B 1 ;PLAYER2 NUMBER OF MEN LEFT
  97. MENLEFTC:
  98. .DS.B 1 ;POOL OF LIVES FOR TEAM PLAY
  99. TEMP:
  100. .DS.B 16 ;GAMEPLAY TEMP
  101. TEMPI:
  102. .DS.B 5 ;LOADER TEMP
  103. FREE:
  104. .DS.B 12 ;FREE POINTERS, NOT FREE SPACE
  105. FRMCNT:
  106. .DS.B 1
  107. LASTFRMC:
  108. .DS.B 1
  109. NMICTRL:
  110. .DS.B 1 ;VALUE OF CTRL FOR HSC SPECIAL NMIHNDL
  111. PLAYER:
  112. .DS.B 1 ;WHICH PLAYER
  113. SCORER:
  114. .DS.B 1 ;WHICH PLAYER IS CURRENTLY SCORING
  115. GAMSTATE:
  116. .DS.B 1 ;STATE FOR DRIVER.
  117. DTIMER:
  118. .DS.B 2 ;TIMER FOR DRIVER - TWO BYTES ACCURACY
  119. STATE:
  120. .DS.B 2 ;STATE FOR FSM, ONE FOR EACH PLAYER
  121. TIMER:
  122. .DS.B 2 ;TIMER FOR FSM, ONE FOR EACH PLAYER
  123. MODE:
  124. .DS.B 1 ;GAME MODE: FF = 1PL, 0=2PL, 1=TP, 2=CP
  125. DIFF:
  126. .DS.B 1 ;GAME DIFFICULTY LEVEL
  127. MAXLVL:
  128. .DS.B 1 ;MAXIMIUM LEVEL AT THIS DIFF SETTING
  129. LVLINC:
  130. .DS.B 4 ;INCREMENTS TO LEVEL
  131. LEVEL:
  132. .DS.B 2
  133. OFFPLAY2:
  134. .DS.B 1 ;OFFSET FOR PLAYER2 DATA SET
  135. STATUS:
  136. .DS.B 32 ;OBJECT STATUS FOR PLAYER1 GAME
  137. SH2STAT:
  138. .DS.B 1 ;SHIP STATUS FOR 2 PLAYER GAME
  139. MSGICONS:
  140. .DS.B 3 ;STATUS FOR MESSAGE ICONS
  141. PARTSTAT:
  142. .DS.B 8 ;STATUS FOR SHIP'S PARTS FOR COLLISIONS
  143. FIREBUT1:
  144. .DS.B 1 ;SOFT REGISTERS
  145. FIREBUT2:
  146. .DS.B 1
  147. HYPBUT1:
  148. .DS.B 1
  149. HYPBUT2:
  150. .DS.B 1
  151. STARTBUT:
  152. .DS.B 1 ;FIREBUT1 EXCEPT DURING AUTOST
  153. SWCHAVAL:
  154. .DS.B 1
  155. SWCHBVAL:
  156. .DS.B 1
  157. SWCHBITS:
  158. .DS.B 1
  159. ONEBUT:
  160. .DS.B 1 ;PLAYER HAS 1 BUTTON JOYSTICK:
  161. ; BIT 4 = P0, BIT 3 = P1
  162. SHIPDIR:
  163. .DS.B 1 ;PLAYER1 SHIP DIRECTION
  164. SHIPDIR2:
  165. .DS.B 1 ;PLAYER2 SHIP DIRECTION
  166. RACKNUM:
  167. .DS.B 1 ;PLAYER1 RACK NUMBER
  168. RACKNUM2:
  169. .DS.B 1 ;PLAYER2 RACK NUMBER
  170. ROCKTOT:
  171. .DS.B 1 ;PLAYER1 ROCK TOTAL
  172. ROCKTOT2:
  173. .DS.B 1 ;PLAYER2 ROCK TOTAL
  174. STARTNUM:
  175. .DS.B 2 ;STARTING NUMBER OF ROCKS FOR EACH
  176. BCOUNTER:
  177. .DS.B 1 ;BEAT COUNTER FOR BACKGROUND TUNE
  178. BEATVAL:
  179. .DS.B 1 ;BEAT VALUE FOR COUNTER, DECREASES
  180. BEATRATE:
  181. .DS.B 1 ;BEAT RATE, FOR CHANGE OF BEATVAL
  182. WHICHBT:
  183. .DS.B 1 ;BEAT NUMBER, TOGGLES BETWEEN 0 AND 1
  184. TUNNUM:
  185. .DS.B 2 ;NUMBER OF TUNE IN EACH CHANNEL
  186. TINDEX:
  187. .DS.B 6 ;INDEX INTO TUNE TABLE
  188. TDURCNT:
  189. .DS.B 6 ;TUNE DURATION COUNTERS
  190. TTEMP EQU TEMPI ;THIS IS PROBABLY SAFE, SINCE TUNER
  191. ; AND LOADER NEVER INTERRUPT EACH OTHER
  192. FIRESTAT:
  193. .DS.B 2
  194. SHOTCNT:
  195. .DS.B 6 ;TIMER FOR ALL SHOTS
  196. USHOTCNT:
  197. .DS.B 1 ;COUNTDOWN TIMER FOR UFO SHOTS
  198. RTIMER:
  199. .DS.B 1 ;TIMER FOR UFO ENTRY
  200. SDELAY:
  201. .DS.B 1 ;PERCENTAGE OF LARGE
  202. EDELAY:
  203. .DS.B 1 ;COUNTDOWN TIL NEXT
  204. UFOACC:
  205. .DS.B 1 ;THRESHOLD OF UFO ACCURACY
  206. SOFTCOLR:
  207. .DS.B 16 ;SOFT COPY OF FIRST 4 PALETTES.
  208. CLAMP:
  209. .DS.B 1 ;CLAMP, USED BY DAMPING SYSTEM TO
  210. ; STOP DRIFT
  211. LOADFLAG:
  212. .DS.B 1 ;FLAG CLEARED AT END OF LOADER.
  213. SELCNT:
  214. .DS.B 1 ;DEBOUNCER/COUNTER FOR MENU SELECT
  215. RACKDLY:
  216. .DS.B 1 ;TIMER FOR NEW RACK START
  217. COMPFLAG:
  218. .DS.B 1 ;FLAG FOR COMP PLAY TERMINATION
  219. RUBFLAG:
  220. .DS.B 1 ;RUBBER SHIP BOUNCE FLAG.
  221. TURKEY:
  222. .DS.B 1
  223. CHICKEN:
  224. .DS.B 1
  225. * 6116 RAM WHICH IS >NOT< ON ZERO PAGE:
  226. .ORG $1800
  227. STATUS2:
  228. .DS.B 32 ;OBJECT STATUS FOR TWOPLAYER GAME
  229. ** ;$20 LONG ARRAYS FOR STATE VARIABLES
  230. ** ;OF EACH OBJECT
  231. XVELL:
  232. .DS.B $20 ;LOW BYTE X VELOCITY
  233. XVELLP2:
  234. .DS.B 1 ;SECOND PLAYER FOR TEAM PLAY
  235. XVELH:
  236. .DS.B $20 ;HIGH BYTE X VELOCITY
  237. XVELHP2:
  238. .DS.B 1
  239. YVELL:
  240. .DS.B $20 ;LOW BYTE Y VELOCITY
  241. YVELLP2:
  242. .DS.B 1
  243. YVELH:
  244. .DS.B $20 ;HIGH BYTE Y VELOCITY
  245. YVELHP2:
  246. .DS.B 1
  247. XPOSH:
  248. .DS.B $20 ;HIGH BYTE X POSITION
  249. XPOSHP2:
  250. .DS.B 1
  251. .DS.B 3
  252. YPOSH:
  253. .DS.B $20 ;HIGH BYTE Y POSITION
  254. YPOSHP2:
  255. .DS.B 1
  256. .DS.B 3
  257. XPOSL:
  258. .DS.B $20 ;LOW BYTE X POSITION
  259. XPOSLP2:
  260. .DS.B 1
  261. YPOSL:
  262. .DS.B $20 ;LOW BYTE Y POSITION
  263. YPOSLP2:
  264. .DS.B 1
  265. ACYC:
  266. .DS.B $20 ;LOW BYTE STAMP ADDR
  267. ACYCP2:
  268. .DS.B 1
  269. .DS.B 3
  270. ANIMAT EQU ACYC+24
  271. ACYC2:
  272. .DS.B $20
  273. COLXPOSH:
  274. .DS.B $20
  275. COLXP2:
  276. .DS.B 1
  277. .DS.B 3
  278. PARTPOSX:
  279. .DS.B 8
  280. COLYPOSH:
  281. .DS.B $20
  282. COLYP2:
  283. .DS.B 1
  284. .DS.B 3
  285. PARTPOSY:
  286. .DS.B 8
  287. XVELH2:
  288. .DS.B $20
  289. YVELH2:
  290. .DS.B $20
  291. XPOSH2:
  292. .DS.B $20
  293. YPOSH2:
  294. .DS.B $20
  295. XVELL2:
  296. .DS.B $20
  297. YVELL2:
  298. .DS.B $20
  299. TDURTAB:
  300. .DS.B 6 ;TUNE DURATIONS
  301. MINXVEL:
  302. .DS.B 1 ;MINIMUM ROCK VELOCITIES
  303. MINYVEL:
  304. .DS.B 1 ; INCREASE AS DIFFICULTY
  305. XVELLL:
  306. .DS.B 1 ;LOW,LOW BYTE OF VELOCITY
  307. XVELLL2:
  308. .DS.B 1 ; USED BY DAMPING SYSTEM TO
  309. YVELLL:
  310. .DS.B 1 ; MAINTAIN SMOOTH, EXPONENTIAL
  311. YVELLL2:
  312. .DS.B 1 ; DECELLERATION AT LOW VELOCITIES.
  313. BLANKDL:
  314. .DS.B 2 ;DUMMY DISPLAY LIST: GETS ZEROED
  315. DLL:
  316. .DS.B $33 ;DISPLAY LIST LIST: COPY OF DLLTAB
  317. PALS:
  318. .DS.B 33 ;SOFTWARE COPY OF PALETTE/WIDTH INFO
  319. .DS.B 3
  320. PALS2:
  321. .DS.B 23 ;TEMP COPY
  322. FLASH:
  323. .DS.B 1 ;KLUDGE FLAG FOR OUT REZZING
  324. GOATMILK:
  325. .DS.B 1 ;WHAT ELSE A FLAG
  326. CHARMAPS:
  327. .DS.B 0
  328. SCORMAP1:
  329. .DS.B 16 ;CHARACTER MAP FOR PLAYER1 SCORE
  330. SCORMAP2:
  331. .DS.B 16 ;CHARACTER MAP FOR PLAYER2 SCORE
  332. SCORECMC:
  333. .DS.B 16 ;CHARACTER MAP FOR COMBO SCORE
  334. SCORCMHS:
  335. .DS.B 8 ;CHARACTER MAP FOR HIGH SCORE
  336. * RANDOM NUMBER ARRAY (NOT CLEARED EVER)
  337. .ORG $2100
  338. RAND:
  339. .DS.B 55
  340. * DISPLAY LISTS:
  341. .ORG $2200
  342. DISPLIST:
  343. .DS.B 0
  344. GAMEDL12:
  345. .DS.B $80 ;START OF DISPLAY LISTS, 12 TOTAL
  346. GAMEDL11:
  347. .DS.B $80
  348. GAMEDL10:
  349. .DS.B $80
  350. GAMEDL09:
  351. .DS.B $80
  352. GAMEDL08:
  353. .DS.B $80
  354. GAMEDL07:
  355. .DS.B $80
  356. GAMEDL06:
  357. .DS.B $80
  358. GAMEDL05:
  359. .DS.B $80
  360. GAMEDL04:
  361. .DS.B $80
  362. GAMEDL03:
  363. .DS.B $80
  364. GAMEDL02:
  365. .DS.B $80
  366. GAMEDL01:
  367. .DS.B $80
  368. ENDLIST:
  369. .DS.B $0
  370. YVELH24 EQU YVELH+24
  371. YVELL24 EQU YVELL+24
  372. XVELH24 EQU XVELH+24
  373. XVELL24 EQU XVELL+24
  374. YPOSH24 EQU YPOSH+24
  375. YPOSL24 EQU YPOSL+24
  376. XPOSH24 EQU XPOSH+24
  377. XPOSL24 EQU XPOSL+24