REM MCPEPIC GLOBAL CLOUD1, CLOUD2, CSTAM,MSTAM, MONEY 'RESOURCE_TABLE: 'INDEX: CHAR,PP,SOLID,MIN,MAX,%,STAMINA '0 AIR 0 , 0 , 0 , 0 , 1 , 1 , 0 '1 STONE 2 , 0 , 2 , 2 , 7 , 1 , 1 '2 BG R1 4 , 0 , 0 , 0 , 0 , 0 , 0 '3 LADDER 6 , 2 , 0 , 0 , 0 , 0 , 0 '4 COAL 32, 0 , 2 , 2 , 7 ,.25, 2 '5 COPPER 34, 3 , 2 , 5 , 7 ,0.1, 3 '6 CLLCTR 8 , 0 , 0 , 0 , 0 , 0 , 0 DIM GLOBAL SCREEN(9,7), RESOURCE(6,6) 'X,Y, DX,DY DIM GLOBAL PLAYER(1,1),WALK(3) GLOBAL ASPEED, TRUE,FALSE, PAFRAME CALL INIT RANDOMIZE TIMER CELL SIZE 0,1 CALL GENERATE FOR X=0 TO 19 IF RND<0.7 THEN CELL X,0,70+RND(1)*2 IF RND<0.4 THEN CELL X,1,70+RND(1)*2 NEXT X ON RASTER CALL CLOUDS GAMEPAD 1 DO PLAYER(1,0)=LEFT(0)-RIGHT(0) PX=PLAYER(0,0) PY=PLAYER(0,1) PFRAME=64 IF PLAYER(1,0) THEN ADD PX,PLAYER(1,0) PCX1=(PX+ 4)\16 PCX2=(PX+12)\16 PCY1=(PY+ 4)\16 PCY2=(PY+15)\16 IF PCX1<0 OR PCX2>=10 OR PCY1<0 OR PCY2>=8 THEN COLLIDE=TRUE ELSE IF PLAYER(1,0)<0 THEN COLLIDE=RESOURCE(SCREEN(PCX1,PCY1),2)<>0 OR RESOURCE(SCREEN(PCX1,PCY2),2)<>0 ELSE COLLIDE=RESOURCE(SCREEN(PCX2,PCY1),2)<>0 OR RESOURCE(SCREEN(PCX2,PCY2),2)<>0 END IF END IF IF COLLIDE=TRUE THEN ADD PX,-PLAYER(1,0) ELSE SPRITE 63 FLIP PLAYER(1,0)<0,0 SPRITE 62 FLIP PLAYER(1,0)<0,0 ADD PFRAME,2*WALK(TIMER*ASPEED MOD 4) PLAYER(0,0)=PX END IF END IF IF SCREEN((PX+7)\16,(PY+15)\16)=3 THEN IF UP(0) AND PY>0 THEN PCX1=(PX+ 4)\16 PCX2=(PX+12)\16 PCY =(PY- 1)\16 IG=RESOURCE(SCREEN(PCX1,PCY),2)<>0 OR RESOURCE(SCREEN(PCX2,PCY),2)<>0 IF IG=FALSE THEN PLAYER(1,1)=-1 ELSE PLAYER(1,1)=0 IF PLAYER(1,1) THEN ADD PY,PLAYER(1,1) PLAYER(0,1)=PY END IF END IF IF DOWN(0) AND PY<128-16 THEN PCX1=(PX+ 4)\16 PCX2=(PX+12)\16 PCY =(PY+16)\16 IG=RESOURCE(SCREEN(PCX1,PCY),2)<>0 OR RESOURCE(SCREEN(PCX2,PCY),2)<>0 IF IG=FALSE THEN PLAYER(1,1)=1 ELSE PLAYER(1,1)=0 IF PLAYER(1,1) THEN ADD PY,PLAYER(1,1) PLAYER(0,1)=PY END IF END IF ELSE 'CHECK FOR GROUND IF PY<128-16 THEN PCX1=(PX+ 4)\16 PCX2=(PX+12)\16 PCY =(PY+16)\16 IG=RESOURCE(SCREEN(PCX1,PCY),2)<>0 OR RESOURCE(SCREEN(PCX2,PCY),2)<>0 IF IG=FALSE AND NOT DOWN(0) THEN IG=SCREEN((PX+7)\16,(PY+16)\16)=3 IF IG=FALSE THEN PLAYER(1,1)=1 ELSE PLAYER(1,1)=0 IF PLAYER(1,1) THEN ADD PY,PLAYER(1,1) PLAYER(0,1)=PY END IF END IF END IF PX=MAX(0,MIN(PX,160-16)) PY=MAX(0,MIN(PY,128-16)) SPRITE 63,PX,PY,PFRAME SPRITE 63 SIZE 1 PAL 1 PAX=PX+3+2*(SPRITE.A(63)\2^3 AND 1) PAY=PY+7+SIN(PFRAME) PAFRAME=96 IF BUTTON(0,1) THEN IF LEFT(0) THEN CALL MINE((PX+3)\16,PY\16) IF RIGHT(0) THEN CALL MINE((PX+13)\16,PY\16) IF UP(0) THEN CALL MINE((PX+7)\16,(PY-1)\16) IF DOWN(0) THEN CALL MINE((PX+7)\16,(PY+16)\16) END IF SPRITE 62,PAX,PAY,PAFRAME IF BUTTON(0,0) THEN IF SCREEN((PX+7)\16,(PY+7)\16) AND PY\16>1 THEN CALL SET((PX+7)\16,(PY+7)\16,3) END IF ADD CLOUD1,-0.1 ADD CLOUD2, 0.25 CALL DRAWUI WAIT VBL LOOP SUB CLOUDS IF RASTER=0 THEN SCROLL 0,CLOUD1,-3 ELSE IF RASTER=8 THEN SCROLL 0,CLOUD2,8 ELSE IF RASTER=24 THEN SCROLL 0,0,0 END IF END SUB SUB GENERATE FOR I=0 TO UBOUND(RESOURCE) FOR Y=RESOURCE(I,3) TO RESOURCE(I,4) FOR X=0 TO 9 IF RND=160-25 AND PLAYER(0,1)=16 THEN SPRITE 0,160-16,0,97 SPRITE 1,160- 8,0,98 SPRITE 2,160-12,8,113 ELSE SPRITE OFF 0 TO 2 END IF 'DISPLAY STAMINA STAM=CSTAM X=MAX(12,MIN(PLAYER(0,0),160-28)) Y=PLAYER(0,1)-5 SPRITE 3,X-12,Y,99 CHUNK=MAX(0,MIN(STAM,6)) SPRITE 8,X-10,Y,100+CHUNK SPRITE 8 PAL 1 ADD STAM,-6 IF CHUNK=0 THEN SPRITE OFF 8 SPRITE 4,X- 4,Y,100 CHUNK=MAX(0,MIN(STAM,8)) SPRITE 9,X- 4,Y,100+CHUNK SPRITE 9 PAL 1 ADD STAM,-8 IF CHUNK=0 THEN SPRITE OFF 9 SPRITE 5,X+ 4,Y,100 CHUNK=MAX(0,MIN(STAM,8)) SPRITE 10,X+ 4,Y,100+CHUNK SPRITE 10 PAL 1 ADD STAM,-8 IF CHUNK=0 THEN SPRITE OFF 10 SPRITE 6,X+12,Y,100 CHUNK=MAX(0,MIN(STAM,8)) SPRITE 11,X+12,Y,100+CHUNK SPRITE 11 PAL 1 ADD STAM,-8 IF CHUNK=0 THEN SPRITE OFF 11 SPRITE 7,X+20,Y,99 CHUNK=MAX(0,MIN(STAM,6)) SPRITE 12,X+20,Y,100+CHUNK SPRITE 12 PAL 1 IF CHUNK=0 THEN SPRITE OFF 12 SPRITE 7 FLIP 1,0 'DISPLAY MONEY SPRITE 13,0,0,114 SPRITE 13 PAL 4 M$=STR$(MONEY) FOR D=1 TO LEN(M$) SPRITE 13+D,8+(D-1)*4,0,ASC(MID$(M$,D,1))+67 NEXT D IF TIMER MOD 100=0 THEN INC MONEY END SUB SUB SET(X,Y,V) IF X>=0 AND X<10 AND Y>=0 AND Y<8 THEN SCREEN(X,Y)=V PAL RESOURCE(V,1) CELL X,Y,RESOURCE(V,0) END IF END SUB SUB MINE(X,Y) IF CSTAM>0 THEN IF X>=0 AND X<10 AND Y>=0 AND Y<8 THEN IF RESOURCE(SCREEN(X,Y),2) THEN CSTAM=MAX(0,CSTAM-RESOURCE(SCREEN(X,Y),6)) CALL SET(X,Y,RESOURCE(SCREEN(X,Y),2)) END IF IF TIMER*ASPEED MOD 2=0 THEN ADD PAFRAME,16 END IF END IF END SUB SUB INIT TRUE=-1 MSTAM=36 CSTAM=MSTAM RESTORE RESOURCES FOR I=0 TO UBOUND(RESOURCE) FOR J=0 TO UBOUND(RESOURCE,2) READ RESOURCE(I,J) NEXT J NEXT I RESOURCES: DATA 0,0,0,0,1,1 ,0 DATA 2,0,2,2,7,1 ,1 DATA 4,0,0,5,7,0 ,0 DATA 6,2,0,0,0,0 ,0 DATA 32,0,2,3,7,0.25,2 DATA 34,3,2,5,7,0.1 ,3 DATA 8,0,0,0,0,0 ,0 WALK(1)=1 WALK(3)=2 ASPEED=0.1 END SUB #1:MAIN PALETTES 062A150000383E0100392400002A1539 0034383D003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 9DBF3F7F7F7373FB63C0C0818EFC8C04 9F1F1F1FCEEEEEEDE0E0E0F13F11131E 63C0C0818EFC8C04FFFFFFFFFFFFFFFF E0E0E0F13F11131EFFFFFFFFFFFFFFFF EFEFA0EFEFEFA0EFDF90DFDFDF90DFDF FBF90BFBFBF90BFBF707F7F7F707F7F7 0000000000001F1000000000003F202F 000000000000F8080000000000FC04F4 FF55AA000055AAFF00AA55FFFFFFFFFF FF55AA000055AAFF00AA55FFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FBF8FBF767F7F7B307070CF89808CC7E E1D9BDBEBEBCD8C33EE6434143673F7C 07070CF89808CC7EFFFFFFFFFFFFFFFF 3EE6434143673F7CFFFFFFFFFFFFFFFF EFEFA0EFEFEFA0EFDF90DFDFDF90DFDF FBF90BFBFBF90BFBF707F7F7F707F7F7 1F1F202F2F2021202F203F353A3F3F3F F8FB04F4F7045704F404FF5CACFFAFFC FF55AA0000AA55FFFFFFFFFFFF55AA00 FF55AA0000AA55FFFFFFFFFFFF55AA00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 9C3F7F7E7F137FFF63C0C1818EFF9F1E 1F5F1F16DEEEECEDE0E0ECFF3F1D133E 9C3F376E710373FB63D8DAB18EFD8F37 1F1F1708C0EEEC21E0ECEEF73FD1D7DE 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 F8F8F31F6FFF3B8107078DF8B83CDC7F C11DA6A6BE9CC083FEFF7F7F7F7F7F7C F868930767F5328177F76CFB9B0BCD7E C119BC9EA49840833EE67B79DBE7BF7C 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0307070F000000000000000007070703 C08080F0A080000000E0E000E0F8F8E0 0307070F010100000001010007070703 C02020F02000000000C0C000E0F0F0E0 0307070F000000000000000007070703 C0C0C0F04040000000606000E0F0F0E0 152A55AA000000000000000000000000 00A054AA000000000000000000000000 050A15AA000000000000000000000000 00A050AA000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 030701010107040000000E0F0E070707 E0F0F0E0E0606000C0C0C0F01060F8B8 0703030307000000001C1C1F00070700 E0F0F0F0E0606000C0C0C8E818607878 03040404070704000003030700070707 E0606060E0600000C0C0C0E00078B880 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000006FF02FF0600000002FDFDFD02 0022313800332B3A0022333A00332B3A 003028B800A8B89000B0A8B800A8B890 007F407F00000000007F407F00000000 00FF00FF0000000000FF00FF00000000 00008000000000000000000000000000 0000C000000000000000000000000000 0000E000000000000000000000000000 0000F000000000000000000000000000 0000F800000000000000000000000000 0000FC00000000000000000000000000 0000FE00000000000000000000000000 0000FF00000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 381C2C54A04080000C143870E0C08000 007CFEFEFEFEFE7C007CC6BA82BABA7C 00182C5656562C180008142A2A2A1408 00007050505070000000705050507000 00002020202020000000202020202000 00007010704070000000701070407000 00007010701070000000701070107000 00005050701010000000505070101000 00007040701070000000704070107000 00007040705070000000704070507000 00007010101010000000701010101000 00007050705070000000705070507000 00007050701070000000705070107000