1 REM**CHOMPER** **BBC VERSION** GRAPHI CS AND INSTRUCTIONS SECTION** MAIN PROGRAM TO BE LOADED AUTOMATICALLY FROM THIS SECTION** 10 REM CONVERTED TO 32K BBC MICRO BY C.R.T ANNER 30 MODE7:VDU 23;8202;0;0;0;:HIMEM=&2500:AD DRESS=&2500:DIM A$(2) 40 VDU 23,224,0,-1,0,0,0,0,-1,0 50 VDU 23,225,66,66,66,66,66,66,66,66 60 VDU 23,226,0,24,36,66,66,66,66,66 70 VDU 23,227,66,66,66,66,66,36,24,0 80 VDU 23,228,0,248,4,2,2,4,248,0 90 VDU 23,229,0,31,32,32,64,32,31,0 100 VDU 23,230,66,65,64,32,32,24,7,0 110 VDU 23,231,0,7,24,32,32,64,65,66 120 VDU 23,232,66,130,2,4,4,24,224,0 130 VDU 23,233,0,224,24,4,4,2,130,66 140 VDU 23,234,66,129,0,0,0,0,-1,0 150 VDU 23,235,0,-1,0,0,0,0,129,66 160 VDU 23,236,60,126,-1,-1,-1,-1,126,60 170 VDU 23,237,60,126,240,224,224,240,126,6 0 180 VDU 23,238,60,126,15,7,7,15,126,60 190 VDU 23,239,60,126,-1,231,195,195,66,0 200 VDU 23,240,0,66,195,195,231,-1,126,60 210 VDU 23,241,60,126,219,201,-1,-1,-1,170 220 VDU 23,242,0,242,133,229,21,149,98,0 230 VDU 23,243,0,0,0,24,24,0,0,0 240 FOR A=0 TO 2:A$(A)="":FOR B=1 TO 30:REA D C:A$(A)=A$(A)+CHR$(C):NEXT:NEXT 250 PRINT'':FOR A=0 TO 2:PRINT TAB(4);A$(A) 'TAB(4);A$(A):NEXT 260 PRINT " @ P a u l S t a n l e y" 270 PRINT''"A standard";CHR$(129);"pacman-t ype";CHR$(135);"game, complete with";CHR$(1 29);"power-pills";CHR$(135);"which when eaten give you the chance to eat the ghost." 280 PRINT'CHR$(133);" Your controls are:-" 290 PRINT'CHR$(134);"Z";CHR$(132)"....Left" ;TAB(20);CHR$(134);"X";CHR$(132)"....Right"'C HR$(134);"*";CHR$(132)"....Up";TAB(20);CHR$(1 34);"?";CHR$(132)"....Down" 300 PRINT'"Please wait 30 seconds..." 310 GOSUB 380 320 FOR a=1 TO 150 STEP 5:SOUND 1,-15,a*50, 1:NEXT 330 MODE 1:VDU 23;8202;0;0;0;28,4,27,35,4:H IMEM=&2500:ADDRESS=&2500 340 *FX 9,2 350 *FX 10,2 360 PRINT "NOW LOADING MAIN GAME" 370 CHAIN "" 380 A$(0)="haaaaaaaaaaaaaaaaaaaaaaaj b b b falae c fal ae c falae b b b b d b b b b c b c b c c b c b c b b b b b b b c b b b b b b b b d d b d b d b d d b b b " 390 A$(1)="b b b b b b b gaaaaai fakae gaaaaai b faai gaae faaaaaaaaaaaaaaaaaaae faaj haae b faaalaa ae c faaalaaae b b b b b b b fa" 400 A$(2)="e b c c d c c b fae b b b b b b b b b b c fai d gaaai d gae c b b b b b b gaaaaaaaaaaaaaaaaaaai b b b gaaaaaaaaaaaaaaaaaaaaaaa i" 410 PROCconvert 420 A$(0)="haaaaaaaaaaaaaaaaaaaaaaaj b b b haaaj c c c c c haaaj b b b b b b d b b b b b b d c b b b b b b c d b b b b b b c b b b b b b fai d b d b d b d gae b " 430 A$(1)="b b b b b b faaaaai fakae gaaaaae b faai gaae fae faaae c faaae fae faaj b haae b faaaa aj c d c haaaaae b b b b b b b " 440 A$(2)="b fe fj b gaaai b he fe b b b b b b b b fae b d haa aj d b fae b b b b b b b b faaai fai c gae gaaae b b b b gaaaaaaaaaaakaaaaaaa aaaai" 450 PROCconvert 460 A$(0)="aaaaaaaaaaaaaaaaaaaaaaaaj b b b haae faaae faaae faaj b b b b b b b he faaae faaae fj b b b d b b d b b d fe fe fe fe d b " 470 A$(1)="b c c b b gaae faaae faaae faai b faai gaae faae faaae faaae faae faaj haae b haae faaae faaae faaj b b d d b " 480 A$(2)=" b c fe fe fe fe c b b c b b c b b b ge faa ae faaae fi b b b b b b b gaae faaae faaae faai b b b gaaaaaaaaaaaaaaaa aaaaaaai" 490 PROCconvert 500 A$(0)="haaaaaaaaaaaaaaaaaaaaaaaj b b b c fj haa aj haae b b b b b b b b b b b d d b b b b fi b b b b haaaj b b " 510 A$(1)="b b b b b b b d d d gaae b faai gaae faae fe faaae fe faae faaj haae b c c c c haaaj he c b b b b b b b b b b b " 520 A$(2)="b b d d b d d b c b b b b b b d c b b b b b haa aj b d b b b b b b b b b b b d d d d d fi b b b gaaaaaaaaaaaaaaaaaaa aaaai" 530 PROCconvert 540 RETURN 550 DEFPROCconvert 560 FOR B%=0 TO 2:D%=LEN(A$(B%)):FOR A%=1 T O D%:E%=ASC(MID$(A$(B%),A%,1)):IF E%>32 THEN ?ADDRESS=E%+127 ELSE ?ADDRESS=32 570 ADDRESS=ADDRESS+1:NEXT:NEXT:ENDPROC 580 DATA 141,145,154,54,163,164,32,53,32,53 ,32,54,163,52,32,61,184,53,32,55,163,180,32,5 5,163,33,32,55,163,52,141,147,154,53,32,48,32 ,55,163,53,32,53,32,53,32,53,32,53,32,55,163, 32,32,55,163,32,32,55,231,32,141,147,154,162, 163,32,32,33,32 590 DATA 33,32,34,163,32,32,33,32,33,32,33, 32,32,32,163,163,33,32,33,32,33 1 REM**CHOMPER BBC VERSION** **MAIN PROG RAM** 10 hs=0:CLS 20 m=1:sc=0:li=3 30 COLOUR 1:PRINT TAB(4,1);:FOR x=&2500+(6 65*m) TO &2798+(665*m):PRINTCHR$(?x);:NEXT 40 COLOUR 2:PRINT TAB(5,2);"*";TAB(27,2);" *";TAB(5,20);"*";TAB(27,20);"*" 50 c1=0:c=5:FOR Y%=2 TO 20:FOR X%=5 TO 27 60 IF FNscreen(X%,Y%)=32 THEN PRINT TA B(X%,Y%);CHR$243:c=c+1 70 NEXT:NEXT 80 PRINT TAB(1,11);" ";CHR$(243);CHR$(243) ;CHR$(243);TAB(28,11);CHR$(243);CHR$(243);CHR $(243);" " 90 x=16:y=5:y1=y:x1=x:r=0:p$=CHR$(239):f=1 6:g=x:g1=g:f1=f:dg=-1:df=0 100 PROCover(g,f,241) 110 PRINT TAB(0,0);"Score:";TAB(17,0);"High -score:";hs 120 IF li>1 THEN A$=CHR$(237) ELSE A$=" " 130 IF li>2 THEN A$=A$+" "+CHR$(237) 140 PRINT TAB(11,0);" ";TAB(11,0);A$ 150 IF INKEY(-67) THEN A=FNscreen(x+1,y):IF A<65 OR A=241 OR A=145 OR A=243 OR A=147 THE N x=x+1:p$=CHR$237:GOTO 190 160 IF INKEY(-98) THEN A=FNscreen(x-1,y):IF A<65 OR A=241 OR A=145 OR A=243 OR A=147 THE N x=x-1:p$=CHR$238:GOTO 190 170 IF INKEY(-105) THEN A=FNscreen(x,y+1):I F A<65 OR A=241 OR A=145 OR A=243 OR A=147 TH EN y=y+1:p$=CHR$239:GOTO 190 180 IF INKEY(-73) THEN A=FNscreen(x,y-1):IF A<65 OR A=241 OR A=145 OR A=243 OR A=147 THE N y=y-1:p$=CHR$240:GOTO 190 190 IF FNscreen(x,y)=42 THEN SOUND 1,-15,80 ,1:r=1:df=-df:dg=-dg 200 A=FNscreen(x,y):IF A=243 OR A=147 THEN PRINT TAB(x1,y1);CHR$236:FOR A=1 TO 20:NEXT:s c=sc+1:c1=c1+1:PRINT TAB(6,0);sc:SOUND 1,-8,1 40,1:IF c1=c THEN GOTO 630 210 IF y<>11 THEN 230 220 IF x=0 THEN x=x+30 ELSE IF x=31 THEN x= x-30 230 p=x:q=y:IF r<>0 THEN p=31-x:q=21-y:r=r+ 1:IF r=50 THEN SOUND 1,-15,80,1:r=0 240 PRINT TAB(x1,y1);" ";TAB(x,y);p$ 250 y1=y:x1=x 260 IF y<>f OR x<>g THEN 280 270 IF r<>0 THEN GOTO 580 ELSE GOTO 460 280 f1=f:g1=g:g=g+dg:f=f+df 290 A=FNscreen(g,f):IF (A<=235 AND A>=224) O (A<=139 AND A>=128) THEN GOTO 390 300 IF f1<>q AND df=0 THEN ELSE 320 310 A=FNscreen(g1,f1-(f1<=q)+(f>q)):IF (A<= 235 AND A>=224) OR (A<=139 AND A>=128) THEN E LSE 400 320 IF g1<>p AND dg=0 THEN ELSE 340 330 A=FNscreen(g1-(g1<=p)+(g1>p),f1):IF (A< =235 AND A>=224) OR (A<=139 AND A>=128) THEN ELSE 430 340 IF f<>11 THEN GOTO 360 350 IF g=1 THEN g=g+30 ELSE IF g=31 THEN g= g-30 360 PROCover(g1,f1,241):PROCover(g,f,241) 370 IF y<>f OR x<>g THEN 150 380 IF r<>0 THEN GOTO 580 ELSE GOTO 460 390 IF dg=0 THEN GOTO 430 400 IF df=0 THEN df=-(f1<=q)+(f1>q):dg=0:g= g1:f=f1+df 410 A=FNscreen(g,f):IF (A<=235 AND A>=224) O (A<=139 AND A>=128) THEN df=-df:f=f1+df 420 GOTO 340 430 dg=-(g1<=p)+(g1>p):df=0:f=f1:g=g1+dg 440 A=FNscreen(g,f):IF (A<=235 AND A>=224) OR (A<=139 AND A>=128) THEN dg=-dg:g=g1+dg 450 GOTO 340 460 FOR f=1 TO 15 470 PRINT TAB(x,y);CHR$237:SOUND 1,-15,50 +f,1:FOR A%=1 TO 300:NEXT 480 PRINT TAB(x,y);CHR$239:SOUND 1,-15,52 +f,1:FOR A%=1 TO 300:NEXT 490 PRINT TAB(x,y);CHR$238:SOUND 1,-15,54 +f,1:FOR A%=1 TO 300:NEXT 500 PRINT TAB(x,y);CHR$240:SOUND 1,-15,56 +f,1:FOR A%=1 TO 300:NEXT 510 NEXT f 520 PRINT TAB(x,y);" ":li=li-1:IF li>0 GOTO 90 530 CLS:PRINT TAB(0,7);"You scored ";sc;" p oints." 540 IF sc>hs THEN hs=sc:PRINT TAB(0,10);"We ll done that's the new best score!!!":GOTO 560 550 PRINT TAB(0,10);"The high-score is ";hs ;"." 560 PRINT TAB(0,23);"Press any key to play again.";:*FX 15,1 570 IF INKEY$(1000)="" THEN 570 ELSE CLS:G OTO 20 580 FOR f=1 TO 5:FOR g=2 TO 7:PRINT TAB(x,y );CHR$242:SOUND 1,-15,50+g+(f*5),1:NEXT g:NEX T f 590 r=0 600 sc=sc+50:PRINT TAB(6,0);sc 610 f=16:g=16:g1=g:f1=f:dg=-1:df=0:PROCover (g,f,241) 620 GOTO 150 630 VDU 19,1,9,0,0,0:PRINT TAB(x1,y1);" " 640 FOR f=0 TO 255 STEP 4:SOUND 1,-15,f,1:N EXT f 650 FOR f=1 TO 3000:NEXT f 660 VDU 19,1,1,0,0,0 670 CLS:m=m+1:IF m=4 THEN m=0 680 GOTO 30 690 DEFFNscreen(X%,Y%) 700 VDU 31,X%,Y%:A%=135:C%=USR(&FFF4) 710 C%=(C% AND &FFFF) DIV &100 720 =C% 730 DEFPROCover(X%,Y%,C%) 740 VDU 5:GCOL3,1 750 MOVE 128+(X%*32),1023-(128+(Y%*32)) 760 PRINT CHR$(C%); 770 VDU4:ENDPROC