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
-