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-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