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 >
Wrap
Commodore BASIC
|
2022-10-26
|
9KB
|
262 lines
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