home *** CD-ROM | disk | FTP | other *** search
- 10 rem ** sprite controller **
- 11 rem ** for **
- 12 rem ** commodore disk user **
- 13 rem ** (c) william christie, 1989 **
- 15 :
- 16 poke53280,0:poke53281,11
- 20 print"[147][158]"tab(14)"sprite driver"
- 21 print" by william a christie, april 1989"
- 22 input" load programs/data (y/n)";a$
- 23 ifa$="n"then 100
- 24 ifa$<>"y"then22
- 25 input" load spdriver.mc (y/n)";a$
- 26 ifa$="n"then29
- 27 ifa$<>"y"then25
- 28 n$="spdriver.mc":gosub60
- 29 input" load decrunch.mc (y/n)";a$
- 30 ifa$="n"then33
- 31 ifa$<>"y"then29
- 32 n$="decrunch.mc":gosub60
- 33 input" load sprites (y/n)";a$
- 34 ifa$="n"then37
- 35 ifa$<>"y"then33
- 36 n$="sprites":gosub60
- 37 input" load screen 5 (y/n)";a$
- 38 ifa$="n"then41
- 39 ifa$<>"y"then37
- 40 n$="screen 5":gosub60
- 41 input" load chars (y/n)";a$
- 42 ifa$="n"then46
- 43 ifa$<>"y"then41
- 44 sys52858:n$="chars":gosub60
- 46 iff=0then 100
- 47 input" re-load or exit program (r/e) ";a$
- 48 ifa$="e"then end
- 49 ifa$<>"r"then 47
- 51 f=0:goto25
- 60 poke147,0:sys57812n$,8,1:sys62631:gosub960:ife=62thenf=1
- 61 return
- 100 clr:print"[147]"
- 120 input" enter pattern data into memory";a$
- 130 ifa$="y"then print" poking data - please wait. ":goto160
- 140 ifa$<>"n"then print"please enter 'y' or 'n'":goto120
- 150 goto820
- 159 :
- 160 ba=4096*6:bs=ba:be=4096*7:sn=1:rem ba and be=pattern memory start and end
- 170 l=1:sc=1
- 180 i1=ba:ba=ba+2
- 190 i2=ba:ba=ba+2
- 200 reada:ifa<0then230
- 210 ifba<bethenpokeba,a:ba=ba+1:goto200
- 220 print"out of sprite data memory at line"l:print"screen"sc:end
- 230 ifa<>-1then260
- 240 gosub330:pokei2,lb:pokei2+1,hb:l=l+1:ifl<9goto190
- 250 print"incorrect '-2' at line"l-1"screen"sc:end
- 260 ifa<>-2then290
- 270 ifl<>8then print"missing data at line"l"screen"sc:end
- 280 gosub330:pokei1,lb:pokei2,lb:pokei1+1,hb:pokei2+1,hb:l=1:sc=sc+1:goto180
- 290 ifa<>-9thenprint"invalid end-of-data flag at line"l:print"screen"sc:end
- 295 ifl<>1thenprint"missing '-2' ai line"l"screen"sc:end
- 300 ba=ba-4:print"data now read in"
- 310 print"bytes used ="ba-bs
- 320 print"bytes free ="be-ba:goto700
- 330 hb=int(ba/256):lb=ba-(hb*256):return
- 350 rem ****************************
- 360 rem ** sprite pattern set-up ***
- 370 rem ****************************
- 375 input"[147] use with decrunch (y/n)";z$
- 376 ifz$="y"thendc=52480:goto390
- 377 ifz$="n"thendc=138:print"[147]":goto390
- 378 goto375
- 380 :
- 390 poke2040,128:poke820,1:poke821,0:poke1022,1:poke53272,31
- 400 v=53248:pokev+21,255:pokev+39,1:pokev,100:pokev+1,10
- 410 sysdc:if f3=1thensys49152
- 420 p=peek(197)
- 430 ifp<>44then460
- 440 ifpeek(v)<255thenpokev,peek(v)+1:goto420
- 450 pokev,0:pokev+16,peek(v+16)or1:goto420
- 460 ifp<>47then490
- 470 ifpeek(v)>0thenpokev,peek(v)-1:goto420
- 480 pokev,255:pokev+16,peek(v+16)and254:goto420
- 490 ifp=10thenpokev+1,peek(v+1)-1and255:goto420
- 500 ifp=12thenpokev+1,peek(v+1)+1and255:goto420
- 510 ifp=59thenpokev+1,peek(v+1)-1:goto440:rem +1
- 520 ifp=9thenpokev+1,peek(v+1)+1:goto440
- 530 ifp=62thenpokev+1,peek(v+1)+1:goto470:rem -1
- 540 ifp=56thenpokev+1,peek(v+1)-1:goto470
- 550 ifp<>60then590
- 560 print" "
- 570 print" x"peek(v)"y"peek(v+1);"p"peek(2040);"spcol"peek(v+39)and15;
- 580 print"c1"peek(v+37)and15;"c2"peek(v+38)and15:goto420
- 590 ifp=40thenpoke2040,peek(2040)+1and255:goto420
- 600 ifp=4andpeek(820)<255thenpoke820,peek(820)+1:sysdc:goto690
- 610 ifp=5andpeek(820)>1thenpoke820,peek(820)-1:sysdc:goto690
- 620 ifp=6thenpoke53285,peek(53285)+1and 15:goto420
- 630 ifp=3thenpoke53286,peek(53286)+1and 15:goto420
- 640 ifp=43thenpoke2040,peek(2040)-1and255:goto420
- 650 ifp=20thenpokev+39,(peek(v+39)+1)and15:goto420
- 660 ifp=36and(peek(v+28)and1)=0 thenpokev+28,(peek(v+28)or1):goto420
- 670 ifp=36thenpokev+28,(peek(v+28)and254):goto420
- 675 ifp=17andpeek(53272)=31thenpoke53272,21:goto680
- 676 ifp=17thenpoke53272,31
- 678 ifp=33thenpoke646,(peek(646)+1)and7
- 680 goto420
- 690 poke824,peek(820):goto420
- 700 input" save pattern data (y/n)";a$
- 710 ifa$="n"thenprint:goto820
- 720 ifa$<>"y"thenprint"please enter either 'y' or 'n'":goto700
- 730 input" enter filename";n$
- 780 sys57812n$+".pd",8,1
- 790 ba=ba+1:gosub330:poke174,lb:poke175,hb
- 800 ba=bs:gosub330:poke193,lb:poke194,hb:sys62957
- 819 :
- 820 input" run pattern constructor (y/n)";a$
- 821 ifa$="y"thenrun375
- 822 ifa$="n"then825
- 823 goto820
- 825 ifff=1thenend
- 828 input" run sprite controller (y/n)";a$
- 830 ifa$="y"thenf3=1:goto860
- 840 ifa$="n"thenend
- 850 goto820
- 860 input" with decrunch (y/n)";a$
- 862 ifa$="y"thendc=52480:goto390
- 864 ifa$="n"thenprint"poke824,screen number (1-5 for demo)":sys49152:end
- 866 goto860
- 869 :
- 960 open15,8,15:input#15,e,e$:close15:print" drive status :";e$:return
- 970 rem ******************************
- 980 rem **** sprite movement data ****
- 990 rem ******************************
- 1000 rem **** screen 1 ****
- 1100 data 8,254,14,3,13,33,208,0,15,254,13,16,192,1,255:rem char anim = on
- 1199 data-1
- 1200 data 7,8,16,6,5,0,24,62,23,152,156,2,0,4,0,15,5,5,129
- 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
- 1299 data-1
- 1300 data 16,6,7,6,5,1,64,62,23,152,156,2,0,4,0,15,5,5,129
- 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
- 1399 data-1
- 1400 data 16,9,7,4,5,0,24,103
- 1410 data 12,1,170,174,20,0,1,22,1,233,2,24,0
- 1499 data-1
- 1500 data 16,2,7,8,22,5,0,255,153,12,0,9,145,6,0,2
- 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
- 1599 data-1
- 1600 data 16,4,5,0,90,197,12,1,158,169,15,0,1,255
- 1699 data-1
- 1700 data 16,4,5,0,220,197,12,1,158,169,16,0,1,255
- 1799 data -1
- 1800 data 16,6,22,7,4,5,0,0,235,23,191,195,3,0,144,0,15,20,20,129,12,0
- 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
- 1820 data 12,1,192,195,14,0,1,6,50,1,24,16,2,111,24,12,20,64,24,16
- 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
- 1840 data 12,0,1,150,17,3,0,14,2,15,2,2,129,10,200,13,32,208,0,6,1,0
- 1860 data 13,32,208,6,11,0
- 1899 data-2
- 2000 rem ***** screen 2 ****
- 2100 data 13,33,208,2,15,238,255
- 2199 data-1
- 2200 data 8,254,7,8,16,0,7,5,5,0,192,81
- 2210 data 22,12,1,178,181,20,0,0,1,39,12,1,181,184,20,0,0,3,69
- 2229 data 12,1,178,181,20,0,0,2,192,12,1,181,184,20,0,0,4,81,0
- 2299 data-1
- 2300 data 16,3,7,8,5,0,35,134
- 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
- 2399 data-1
- 2400 data 16,6,7,6,5,1,55,72,12,1,170,174,20,0,1
- 2410 data 22,4,217,3,72,0
- 2499 data -1
- 2500 data 255
- 2599 data -1
- 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
- 2699 data-1
- 2700 data 16,0,7,4,5,0,192,166
- 2710 data 22,12,1,192,195,20,0,1,2,27,12,1,188,191,20,0,1,1,192,0
- 2799 data-1
- 2800 data 16,0,7,4,5,0,27,184,23,191,195,3,0,144,0,15,20,20,129
- 2810 data 22,12,1,188,191,20,0,1,1,192,12,1,192,195,20,0,1,2,27,0
- 2899 data-2
- 3000 rem ***** screen 3 *******
- 3100 data 13,33,208,0,15,126,8,254,1,5,255
- 3199 data -1
- 3200 data 16,9,7,3,5,0,60,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
- 3210 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
- 3299 data -1
- 3300 data 16,9,7,3,5,0,95,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
- 3310 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
- 3399 data -1
- 3400 data 16,9,7,3,5,0,176,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65
- 3410 data 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0
- 3499 data -1
- 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
- 3599 data -1
- 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
- 3699 data -1
- 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
- 3710 data 2,1,2,24,0
- 3799 data -1
- 3800 data 12,0,255
- 3899 data -2
- 4000 rem ****** screen 4 *******
- 4100 data 13,33,208,0,15,14,8,8,1,11,13,0,159,0,255
- 4199 data -1
- 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
- 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
- 4220 data 2,166,12,1,136,139,15,0,0,7,10,3,140,12,1,129,132,15,0,0
- 4230 data 7,6,1,253,6,20,0,0,0
- 4299 data -1
- 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
- 4310 data 12,1,133,136,15,0,0,2,215,6,20,0,11,28,3,0,159,0
- 4399 data -1
- 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
- 4410 data 6,20,0,2,1,2,24,6,20,0,3,86,6,20,0,11,13,0,159,1,0
- 4499 data -1
- 4500 rem **** border colour bands ****
- 4501 data 10,250:rem loop counter=250
- 4502 data 13,32,208,0,13,32,208,0,13,32,208,11,13,32,208,11:rem poke border col
- 4510 data 13,32,208,12,13,32,208,12,13,32,208,15,13,32,208,15:rem more colours
- 4520 data 13,32,208,1,13,32,208,1,13,32,208,15,13,32,208,15:rem more colours
- 4530 data 13,32,208,12,13,32,208,12,13,32,208,11,13,32,208,11:rem final colours
- 4531 data 11:rem loop end-goto start
- 4540 data 22:rem set new start
- 4541 data 13,32,208,6:rem screen=blue
- 4542 data 13,32,208,0:rem screen=black
- 4543 data 0:rem go back to start (line 4540 -and repeat always!)
- 4599 data -1
- 4600 data 255
- 4699 data -1
- 4700 data 255
- 4799 data -1
- 4800 data 255
- 4899 data -2
- 5000 rem ****** screen 5 *******
- 5100 data 14,54,4,1,12,1,19,20,32,19,3,18,5,5,14,33,0
- 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
- 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
- 5130 data 6,0,3,1,53,6,0,2,22,20,1,20,1,0
- 5199 data -1
- 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
- 5210 data 2,114,7,7,28,3,0,159,7,1,28,0,1,159,255
- 5299 data -1
- 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
- 5310 data 2,114,7,6,28,3,0,159,7,2,28,0,1,159,255
- 5399 data -1
- 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
- 5410 data 10,2,2,114,1,53,4,177,3,127,11,7,3,28,0,1,159,255
- 5499 data -1
- 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
- 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
- 5599 data -1
- 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
- 5610 data7,6,28,4,0,159,7,5,28,0,1,159,255
- 5699 data -1
- 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
- 5710 data7,7,28,4,0,159,7,6,28,0,1,159,255
- 5799 data -1
- 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
- 5810 data7,8,28,4,0,159,7,7,28,0,1,159,255
- 5899 data -2
- 9999 data -9
-