home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk User Volume 3 #7 / Commodore_Disk_User_Vol.3_7_1990_-.d64 / spdriver.bas (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  9KB  |  262 lines

  1. 10 rem **     sprite controller      **
  2. 11 rem **            for             **
  3. 12 rem **    commodore disk user     **
  4. 13 rem ** (c) william christie, 1989 **
  5. 15 :
  6. 16 poke53280,0:poke53281,11
  7. 20 print"[147][158]"tab(14)"sprite driver"
  8. 21 print"   by  william a christie, april 1989"
  9. 22 input" load programs/data (y/n)";a$
  10. 23 ifa$="n"then 100
  11. 24 ifa$<>"y"then22
  12. 25 input" load spdriver.mc (y/n)";a$
  13. 26 ifa$="n"then29
  14. 27 ifa$<>"y"then25
  15. 28 n$="spdriver.mc":gosub60
  16. 29 input" load decrunch.mc (y/n)";a$
  17. 30 ifa$="n"then33
  18. 31 ifa$<>"y"then29
  19. 32 n$="decrunch.mc":gosub60
  20. 33 input" load sprites     (y/n)";a$
  21. 34 ifa$="n"then37
  22. 35 ifa$<>"y"then33
  23. 36 n$="sprites":gosub60
  24. 37 input" load screen 5    (y/n)";a$
  25. 38 ifa$="n"then41
  26. 39 ifa$<>"y"then37
  27. 40 n$="screen 5":gosub60
  28. 41 input" load chars       (y/n)";a$
  29. 42 ifa$="n"then46
  30. 43 ifa$<>"y"then41
  31. 44 sys52858:n$="chars":gosub60
  32. 46 iff=0then 100
  33. 47 input" re-load or exit program (r/e) ";a$
  34. 48 ifa$="e"then end
  35. 49 ifa$<>"r"then 47
  36. 51 f=0:goto25
  37. 60 poke147,0:sys57812n$,8,1:sys62631:gosub960:ife=62thenf=1
  38. 61 return
  39. 100 clr:print"[147]"
  40. 120 input" enter pattern data into memory";a$
  41. 130 ifa$="y"then print" poking data - please wait. ":goto160
  42. 140 ifa$<>"n"then print"please enter 'y' or 'n'":goto120
  43. 150 goto820
  44. 159 :
  45. 160 ba=4096*6:bs=ba:be=4096*7:sn=1:rem ba and be=pattern memory start and end
  46. 170 l=1:sc=1
  47. 180 i1=ba:ba=ba+2
  48. 190 i2=ba:ba=ba+2
  49. 200 reada:ifa<0then230
  50. 210 ifba<bethenpokeba,a:ba=ba+1:goto200
  51. 220 print"out of sprite data memory at line"l:print"screen"sc:end
  52. 230 ifa<>-1then260
  53. 240 gosub330:pokei2,lb:pokei2+1,hb:l=l+1:ifl<9goto190
  54. 250 print"incorrect '-2' at line"l-1"screen"sc:end
  55. 260 ifa<>-2then290
  56. 270 ifl<>8then print"missing data at line"l"screen"sc:end
  57. 280 gosub330:pokei1,lb:pokei2,lb:pokei1+1,hb:pokei2+1,hb:l=1:sc=sc+1:goto180
  58. 290 ifa<>-9thenprint"invalid end-of-data flag at line"l:print"screen"sc:end
  59. 295 ifl<>1thenprint"missing '-2' ai line"l"screen"sc:end
  60. 300 ba=ba-4:print"data now read in"
  61. 310 print"bytes used ="ba-bs
  62. 320 print"bytes free ="be-ba:goto700
  63. 330 hb=int(ba/256):lb=ba-(hb*256):return
  64. 350 rem ****************************
  65. 360 rem ** sprite pattern set-up ***
  66. 370 rem ****************************
  67. 375 input"[147] use with decrunch (y/n)";z$
  68. 376 ifz$="y"thendc=52480:goto390
  69. 377 ifz$="n"thendc=138:print"[147]":goto390
  70. 378 goto375
  71. 380 :
  72. 390 poke2040,128:poke820,1:poke821,0:poke1022,1:poke53272,31
  73. 400 v=53248:pokev+21,255:pokev+39,1:pokev,100:pokev+1,10
  74. 410 sysdc:if f3=1thensys49152
  75. 420 p=peek(197)
  76. 430 ifp<>44then460
  77. 440 ifpeek(v)<255thenpokev,peek(v)+1:goto420
  78. 450 pokev,0:pokev+16,peek(v+16)or1:goto420
  79. 460 ifp<>47then490
  80. 470 ifpeek(v)>0thenpokev,peek(v)-1:goto420
  81. 480 pokev,255:pokev+16,peek(v+16)and254:goto420
  82. 490 ifp=10thenpokev+1,peek(v+1)-1and255:goto420
  83. 500 ifp=12thenpokev+1,peek(v+1)+1and255:goto420
  84. 510 ifp=59thenpokev+1,peek(v+1)-1:goto440:rem +1
  85. 520 ifp=9thenpokev+1,peek(v+1)+1:goto440
  86. 530 ifp=62thenpokev+1,peek(v+1)+1:goto470:rem -1
  87. 540 ifp=56thenpokev+1,peek(v+1)-1:goto470
  88. 550 ifp<>60then590
  89. 560 print"                                     "
  90. 570 print" x"peek(v)"y"peek(v+1);"p"peek(2040);"spcol"peek(v+39)and15;
  91. 580 print"c1"peek(v+37)and15;"c2"peek(v+38)and15:goto420
  92. 590 ifp=40thenpoke2040,peek(2040)+1and255:goto420
  93. 600 ifp=4andpeek(820)<255thenpoke820,peek(820)+1:sysdc:goto690
  94. 610 ifp=5andpeek(820)>1thenpoke820,peek(820)-1:sysdc:goto690
  95. 620 ifp=6thenpoke53285,peek(53285)+1and 15:goto420
  96. 630 ifp=3thenpoke53286,peek(53286)+1and 15:goto420
  97. 640 ifp=43thenpoke2040,peek(2040)-1and255:goto420
  98. 650 ifp=20thenpokev+39,(peek(v+39)+1)and15:goto420
  99. 660 ifp=36and(peek(v+28)and1)=0 thenpokev+28,(peek(v+28)or1):goto420
  100. 670 ifp=36thenpokev+28,(peek(v+28)and254):goto420
  101. 675 ifp=17andpeek(53272)=31thenpoke53272,21:goto680
  102. 676 ifp=17thenpoke53272,31
  103. 678 ifp=33thenpoke646,(peek(646)+1)and7
  104. 680 goto420
  105. 690 poke824,peek(820):goto420
  106. 700 input" save pattern data (y/n)";a$
  107. 710 ifa$="n"thenprint:goto820
  108. 720 ifa$<>"y"thenprint"please enter either 'y' or 'n'":goto700
  109. 730 input" enter filename";n$
  110. 780 sys57812n$+".pd",8,1
  111. 790 ba=ba+1:gosub330:poke174,lb:poke175,hb
  112. 800 ba=bs:gosub330:poke193,lb:poke194,hb:sys62957
  113. 819 :
  114. 820 input" run pattern constructor (y/n)";a$
  115. 821 ifa$="y"thenrun375
  116. 822 ifa$="n"then825
  117. 823 goto820
  118. 825 ifff=1thenend
  119. 828 input" run sprite controller (y/n)";a$
  120. 830 ifa$="y"thenf3=1:goto860
  121. 840 ifa$="n"thenend
  122. 850 goto820
  123. 860 input" with decrunch (y/n)";a$
  124. 862 ifa$="y"thendc=52480:goto390
  125. 864 ifa$="n"thenprint"poke824,screen number (1-5 for demo)":sys49152:end
  126. 866 goto860
  127. 869 :
  128. 960 open15,8,15:input#15,e,e$:close15:print" drive status :";e$:return
  129. 970 rem ******************************
  130. 980 rem **** sprite movement data ****
  131. 990 rem ******************************
  132. 1000 rem **** screen 1 ****
  133. 1100 data 8,254,14,3,13,33,208,0,15,254,13,16,192,1,255:rem char anim = on
  134. 1199 data-1
  135. 1200 data 7,8,16,6,5,0,24,62,23,152,156,2,0,4,0,15,5,5,129
  136. 1210 data 22,12,1,150,154,20,0,0,1,123,6,80,0,12,1,154,158,20,0,0,2,24,6,80,0,0
  137. 1299 data-1
  138. 1300 data 16,6,7,6,5,1,64,62,23,152,156,2,0,4,0,15,5,5,129
  139. 1310 data 22,12,1,154,158,20,0,0,2,240,6,80,0,12,1,150,154,20,0,0,1,64,6,80,0,0
  140. 1399 data-1
  141. 1400 data 16,9,7,4,5,0,24,103
  142. 1410 data 12,1,170,174,20,0,1,22,1,233,2,24,0
  143. 1499 data-1
  144. 1500 data 16,2,7,8,22,5,0,255,153,12,0,9,145,6,0,2
  145. 1510 data 12,1,142,149,2,0,0,6,0,2,24,20,4,200,24,2,6,0,2,24,20,3,153,6,95,0,0
  146. 1599 data-1
  147. 1600 data 16,4,5,0,90,197,12,1,158,169,15,0,1,255
  148. 1699 data-1
  149. 1700 data 16,4,5,0,220,197,12,1,158,169,16,0,1,255
  150. 1799 data -1
  151. 1800 data 16,6,22,7,4,5,0,0,235,23,191,195,3,0,144,0,15,20,20,129,12,0
  152. 1810 data 6,0,5,12,1,188,191,16,0,1,6,0,1,1,162,24,12,6,50,1,24,8,3,170,24,12
  153. 1820 data 12,1,192,195,14,0,1,6,50,1,24,16,2,111,24,12,20,64,24,16
  154. 1830 data 12,1,188,191,14,0,1,6,50,1,24,16,1,120,24,10,7,2,1,160,24,16,1,245
  155. 1840 data 12,0,1,150,17,3,0,14,2,15,2,2,129,10,200,13,32,208,0,6,1,0
  156. 1860 data 13,32,208,6,11,0
  157. 1899 data-2
  158. 2000 rem ***** screen 2 ****
  159. 2100 data 13,33,208,2,15,238,255
  160. 2199 data-1
  161. 2200 data 8,254,7,8,16,0,7,5,5,0,192,81
  162. 2210 data 22,12,1,178,181,20,0,0,1,39,12,1,181,184,20,0,0,3,69
  163. 2229 data 12,1,178,181,20,0,0,2,192,12,1,181,184,20,0,0,4,81,0
  164. 2299 data-1
  165. 2300 data 16,3,7,8,5,0,35,134
  166. 2310 data 22,12,1,150,154,20,0,0,1,237,6,20,0,12,1,154,158,20,0,0,2,35,6,20,0,0
  167. 2399 data-1
  168. 2400 data 16,6,7,6,5,1,55,72,12,1,170,174,20,0,1
  169. 2410 data 22,4,217,3,72,0
  170. 2499 data -1
  171. 2500 data 255
  172. 2599 data -1
  173. 2600 data 16,3,5,0,95,90,22,12,1,213,220,20,0,1,6,30,1,12,0,26,0,0,0
  174. 2699 data-1
  175. 2700 data 16,0,7,4,5,0,192,166
  176. 2710 data 22,12,1,192,195,20,0,1,2,27,12,1,188,191,20,0,1,1,192,0
  177. 2799 data-1
  178. 2800 data 16,0,7,4,5,0,27,184,23,191,195,3,0,144,0,15,20,20,129
  179. 2810 data 22,12,1,188,191,20,0,1,1,192,12,1,192,195,20,0,1,2,27,0
  180. 2899 data-2
  181. 3000 rem ***** screen 3 *******
  182. 3100 data 13,33,208,0,15,126,8,254,1,5,255
  183. 3199 data -1
  184. 3200 data 16,9,7,3,5,0,60,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
  185. 3210 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
  186. 3299 data -1
  187. 3300 data 16,9,7,3,5,0,95,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
  188. 3310 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
  189. 3399 data -1
  190. 3400 data 16,9,7,3,5,0,176,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
  191. 3410 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
  192. 3499 data -1
  193. 3500 data 16,2,5,0,135,115,22,12,1,205,212,20,0,1,6,30,1,12,0,6,255,0,0
  194. 3599 data -1
  195. 3600 data 16,2,5,0,106,115,22,12,1,213,220,20,0,1,6,30,1,12,0,6,200,0,0
  196. 3699 data -1
  197. 3700 data 16,6,7,5,5,0,24,185,12,1,184,187,24,0,1,22,6,30,0,1,20,1,63,6,30,0
  198. 3710 data 2,1,2,24,0
  199. 3799 data -1
  200. 3800 data 12,0,255
  201. 3899 data -2
  202. 4000 rem ****** screen 4 *******
  203. 4100 data 13,33,208,0,15,14,8,8,1,11,13,0,159,0,255
  204. 4199 data -1
  205. 4200 data16,14,7,6,5,0,253,140,22,12,1,133,136,15,0,0,2,166,12,1,136,139,15,0,0
  206. 4210 data 7,10,4,212,7,6,12,1,129,132,15,0,0,1,43,6,20,0,12,1,133,136,15,0,0
  207. 4220 data 2,166,12,1,136,139,15,0,0,7,10,3,140,12,1,129,132,15,0,0
  208. 4230 data 7,6,1,253,6,20,0,0,0
  209. 4299 data -1
  210. 4300 data 16,6,7,6,22,5,0,215,180,10,3,12,1,129,132,15,0,0,1,11,6,20,0
  211. 4310 data 12,1,133,136,15,0,0,2,215,6,20,0,11,28,3,0,159,0
  212. 4399 data -1
  213. 4400 data16,12,7,4,5,0,24,86,12,1,196,203,22,0,0,22,10,3,1,20,1,65,6,20,0,4,233
  214. 4410 data 6,20,0,2,1,2,24,6,20,0,3,86,6,20,0,11,13,0,159,1,0
  215. 4499 data -1
  216. 4500 rem **** border colour bands ****
  217. 4501 data 10,250:rem loop counter=250
  218. 4502 data 13,32,208,0,13,32,208,0,13,32,208,11,13,32,208,11:rem poke border col
  219. 4510 data 13,32,208,12,13,32,208,12,13,32,208,15,13,32,208,15:rem more colours
  220. 4520 data 13,32,208,1,13,32,208,1,13,32,208,15,13,32,208,15:rem more colours
  221. 4530 data 13,32,208,12,13,32,208,12,13,32,208,11,13,32,208,11:rem final colours
  222. 4531 data 11:rem loop end-goto start
  223. 4540 data 22:rem set new start
  224. 4541 data 13,32,208,6:rem screen=blue
  225. 4542 data 13,32,208,0:rem screen=black
  226. 4543 data 0:rem go back to start (line 4540 -and repeat always!)
  227. 4599 data -1
  228. 4600 data 255
  229. 4699 data -1
  230. 4700 data 255
  231. 4799 data -1
  232. 4800 data 255
  233. 4899 data -2
  234. 5000 rem ****** screen 5 *******
  235. 5100 data 14,54,4,1,12,1,19,20,32,19,3,18,5,5,14,33,0
  236. 5110 data 13,33,208,0,15,255,8,0,16,1,9,137,13,0,159,0,13,1,159,0,7,3,5,1,53,33
  237. 5120 data 6,0,1,4,61,6,20,0,7,5,4,172,27,1,159,2,114,7,8,28,3,0,159,7,3,2,114
  238. 5130 data 6,0,3,1,53,6,0,2,22,20,1,20,1,0
  239. 5199 data -1
  240. 5200 data 16,5,9,137,7,3,5,1,53,33,6,100,1,4,61,6,50,0,7,5,4,157,27,1,159
  241. 5210 data 2,114,7,7,28,3,0,159,7,1,28,0,1,159,255
  242. 5299 data -1
  243. 5300 data 16,3,9,137,7,3,5,1,53,33,6,200,1,4,61,6,50,0,7,5,4,142,27,1,159
  244. 5310 data 2,114,7,6,28,3,0,159,7,2,28,0,1,159,255
  245. 5399 data -1
  246. 5400 data 16,5,9,137,7,3,5,1,53,33,6,50,2,4,61,6,50,0,7,5,4,127,27,1,159
  247. 5410 data 10,2,2,114,1,53,4,177,3,127,11,7,3,28,0,1,159,255
  248. 5499 data -1
  249. 5500 data16,5,9,137,7,3,5,1,53,33,6,150,2,4,61,6,50,0,7,5,4,112,6,0,2,13,1,159,1
  250. 5510 data 10,2,2,114,1,53,3,62,4,112,11,13,1,159,0,13,0,159,1,7,4,28,0,1,159,255
  251. 5599 data -1
  252. 5600 data 16,3,9,137,7,3,5,1,53,33,6,250,2,4,61,6,50,0,7,5,4,97,27,1,159,2,114
  253. 5610 data7,6,28,4,0,159,7,5,28,0,1,159,255
  254. 5699 data -1
  255. 5700 data 16,5,9,137,7,3,5,1,53,33,6,100,3,4,61,6,50,0,7,5,4,82,27,1,159,2,114
  256. 5710 data7,7,28,4,0,159,7,6,28,0,1,159,255
  257. 5799 data -1
  258. 5800 data 16,1,9,137,7,3,5,1,53,33,6,200,3,4,61,6,50,0,7,5,4,67,27,1,159,2,114
  259. 5810 data7,8,28,4,0,159,7,7,28,0,1,159,255
  260. 5899 data -2
  261. 9999 data -9
  262.