home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Coverdisks / CDU / V3D07.D64 / spdriver.bas (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  8.5 KB  |  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.