home *** CD-ROM | disk | FTP | other *** search
- 1 REM CATACOMBS
- 10 REM ********************************
- 20 REM * CATACOMBS V1.0 *
- 30 REM * BY CLEVE BLAKEMORE *
- 40 REM ********************************
- 50 POKE53281,.:POKE53280,.:PRINT"[147]"TAB(14)CHR$(8)CHR$(142)" CATACOMBS "
- 60 PRINTTAB(6)"[151] PLEASE WAIT...LOADING DATA! ":GOSUB840
- 70 POKE53272,30:POKE53265,PEEK(53265)OR64
- 80 PRINT""TAB(15)"SKULL #":PRINTTAB(15)"WIZARD $"
- 90 PRINTTAB(15)"BAT %":PRINTTAB(15)"SPIRIT &":PRINTTAB(15)"SNAKE '"
- 100 B=49152:E=53151:V=53248:S=1024:X=10:Y=5:MX=.:MY=.:R=80:SR=40:M=32
- 110 L=.:EX=239:JY=56321:SO=54272:DEF FNA(B)=Y*SR+X+S:DEF FNB(B)=PEEK(TY*SR+TX+S)
- 120 DEF FNX(B)=(X-3)*8+28+((X>31)*255):DEFFNE(B)=(X>31)*-1:DEFFNY(X)=Y*8+35
- 130 DEF FNJ(X)=15-(PEEK(JY)AND15):DEF FNC(X)=B+MX+TX+((MY+TY)*R)
- 140 DEF FNCX(B)=CX(D)+(CX(D)<MX+X)*-1+(CX(D)>MX+X)*1
- 150 DEF FNCY(B)=CY(D)+(CY(D)<MY+Y)*-1+(CY(D)>MY+Y)*1
- 160 DEF FNK(Q)=PEEK(FNC(.))=M(L)
- 170 DEFFNCH(B)=(FNB(.)=M+8)*-1+(FNB(.)=M+9)*-2+(FNB(.)=M+13)*-3
- 180 DEFFNET(B)=TX<1ORTX>38ORTY<2ORTY>23
- 190 DEF FNM(X)=(B+CX(D)+(CY(D)*R)):DEF FNW(X)=PEEK(FNM(.))<>M:GOSUB640
- 200 POKEV+27,1:POKEV+39,7:POKEV+23,1:POKEV+29,1:POKEV,FNX(.):POKEV+1,FNY(.)
- 210 POKE2040,15:POKEV+21,1:POKEV+34,1:POKEV+36,11
- 220 FORD=SOTOSO+24:POKED,.:NEXT:POKESO,255:POKESO+1,27:POKESO+5,64
- 230 POKESO+6,128:POKESO+24,10
- 240 D=.:GOTO280
- 250 REM JOYSTICK ROUTINE
- 260 TX=MX+X(J):TY=MY+Y(J):IFTX<0ORTX>41ORTY<0ORTY>25THEN280
- 270 POKESO+4,33:MX=TX:MY=TY
- 280 SYS828,MX,MY:POKEFNA(.),.
- 290 POKESO+4,.:J=FNJ(.):TX=X+X(J):TY=Y+Y(J):IFFNK(.)THEN440
- 300 IFFNB(.)=MTHEN340
- 310 ONFNCH(.)GOSUB510,520,530
- 320 IFFNB(.)=EXANDKTHEN540
- 330 GOTO390
- 340 IFFNET(.)THEN260
- 350 POKESO+4,129:IFX<>TXORY<>TYTHENPOKEFNA(.),M
- 360 X=TX:Y=TY:POKEFNA(.),.:POKEV+16,FNE(.):POKEV,FNX(.):POKEV+1,FNY(.)
- 370 POKESO+4,.
- 380 REM MONSTER MOVEMENT
- 390 D=D+1+(D=2)*3
- 400 POKEFNM(.),M:TX=CX(D):TY=CY(D):CX(D)=FNCX(.):IFFNW(.)THENCX(D)=TX
- 410 CY(D)=FNCY(.):IFFNW(.)THENCY(D)=TY
- 420 POKEFNM(.),M(L)
- 430 GOTO280
- 440 GOSUB610:PRINT"[157]CHOMP";:GOSUB620
- 450 POKEV+21,.:POKEV+33,.
- 460 PRINT"[147]"TAB(13)" GOLD = ";G:PRINT" ANOTHER GAME ?[Y OR N]"
- 470 POKE198,.
- 480 GETA$:IFA$=""THEN480
- 490 IFA$="N"THENPOKE679,.:SYS679
- 500 POKEV+24,21:POKEV+17,PEEK(V+17)AND191:RUN
- 510 GOSUB610:PRINT"G 50":G=G+50:GOSUB620:RETURN
- 520 GOSUB610:PRINT" KEY ":K=1:G=G+100:GOSUB620:RETURN
- 530 GOSUB610:POKEV+33,2:GOSUB620:POKEV+33,.:G=G-(G>49)*-50:RETURN
- 540 POKEV+21,.:L=L+1:IFL=10THEN450
- 550 K=.:PRINT"[147]"TAB(4)" PREPARE FOR THE NEXT LEVEL !! "
- 560 PRINT""TAB(4)" DESCENDING DOWN TO LEVEL";L+1;"[157] "
- 570 POKESO+4,17:FORD=100TO.STEP-1::FORX=.TO50:NEXT:POKESO+1,D:NEXT:POKESO+1,27
- 580 POKESO+4,.:G=G+25:PRINTTAB(14)" GOLD = ";G;
- 590 GOSUB640:MX=.:MY=.:X=10:Y=5:D=.:POKEV,FNX(.):POKEV+1,FNY(.)
- 600 POKEV+16,FNE(.):POKEV+21,1:GOTO280
- 610 POKEFNC(.),M:POKEV+21,.:POKE781,Y:POKE782,X-1:POKE783,.:SYS65520:RETURN
- 620 POKESO+4,17:FORQ=.TO500:NEXT:POKEV+21,1:POKESO+4,.:RETURN
- 630 REM DUNJON GENERATOR
- 640 SYS916:POKEV+33,(L<5)*-15:FORQ=192TO204STEP4:POKE648,Q:PRINT"[144][147]":FORD=1TO3
- 650 FORX=.TO7:IF(2^XANDL(L))THENPRINT"+++++++++++[146] ";SPC(40);
- 660 PRINT" +++[146] +++[146]";
- 670 NEXT:NEXT:NEXT:POKE648,4:POKE53283,L+2:FORA=BTOB+R:POKEA,42+64*3:NEXT
- 680 FORA=E-RTOE+1:POKEA,42+64*3:NEXT:FORA=BTOESTEPR:POKEA,42+64*3:NEXT
- 690 POKEB+3+R*3,47+64
- 700 A=RND(1)*60+8:Q=RND(1)*40+5:IFPEEK(B+A+Q*R)<>MTHEN700
- 710 POKEB+Q*R+A,EX
- 720 FORD=1TOL*2
- 730 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN730
- 740 POKEB+Q*R+A,M+8:NEXT
- 750 FORD=1TOL*2
- 760 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN760
- 770 POKEB+Q*R+A,M+13:NEXT
- 780 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN780
- 790 POKEB+Q*R+A,M+9
- 800 FORD=.TO2
- 810 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN810
- 820 CX(D)=INT(A):CY(D)=INT(Q):NEXT:RETURN
- 830 REM REDEFINED CHARACTERS
- 840 FORX=1TO33:READA:POKE680+X,A:NEXT:POKE56334,PEEK(56334)AND254
- 850 POKE1,PEEK(1)AND251:SYS681:POKE1,PEEK(1)OR4:POKE56334,PEEK(56334)OR1
- 860 READA:IFA=-1THEN890
- 870 FORX=.TO7:READD:POKE14336+A*8+X,D:NEXT:GOTO860
- 880 REM ML SCROLL ROUTINE
- 890 DIMX(10),Y(10),CX(2),CY(2),M(9),L(9):FORA=.TO10:READX(A),Y(A):NEXT
- 900 FORA=828TO914:READB:POKEA,B:NEXT:FORA=.TO63:POKE15*64+A,255:NEXT
- 910 FORA=.TO9:READL(A):NEXT:FORA=.TO9:READM(A):NEXT:FORX=916TO951:READA:POKEX,A
- 920 NEXT:RETURN
- 930 DATA 169,,133,251,133,253,169,208,133,252,169,56,133,254,162,8
- 940 DATA 160,,177,251,145,253,136,208,249,230,252,230,254,202,208,240,96
- 950 DATA000,152,152,190,217,024,060,036,195
- 960 DATA035,126,153,153,153,126,066,090,126
- 970 DATA036,024,126,024,126,153,060,126,126
- 980 DATA037,000,036,126,219,129,066,000,000
- 990 DATA038,031,021,021,014,028,156,248,112
- 1000 DATA039,060,066,002,028,032,024,004,008
- 1010 DATA040,000,000,255,129,255,153,129,255
- 1020 DATA041,062,034,062,008,008,056,008,056
- 1030 DATA042,255,129,189,165,165,189,129,255
- 1040 DATA043,249,249,000,159,159,000,249,249
- 1050 DATA045,000,000,000,000,016,000,000,000
- 1060 DATA047,129,066,036,024,024,036,066,129,-1
- 1070 DATA0,0,0,-1,0,1,0,0,-1,0,-1,-1,-1,1,0,0,1,0,1,-1,1,1
- 1080 DATA 32,155,183,138,24,105,0,133,4,169,192,105,0,133,5,32,155,183,224
- 1090 DATA 0,240,16,165,4,24,105,80,133,4,165,5,105,0,133,5,202,208,240
- 1100 DATA 169,0,133,2,169,4,133,3,162,24,160,39,177,4,145,2,136,16,249
- 1110 DATA 165,2,24,105,40,133,2,165,3,105,0,133,3,165,4,24,105,80,133
- 1120 DATA 4,165,5,105,0,133,5,202,16,218,96
- 1130 DATA 201,223,178,245,251,199,143,124,211,255
- 1140 DATA 35,36,37,38,39,35,36,37,38,39
- 1150 DATA 169,0,133,251,169,192,133,252,162,20,160,0,169,32,145,251,200
- 1160 DATA 192,201,208,247,24,169,200,101,251,133,251,144,2,230,252,202
- 1170 DATA 208,231,96
- 6682
-