'TITLE: L-TRON 'AUTHOR: TIMO KLOSS RANDOMIZE TIMER DIM GLOBAL MAP(39,31) DIM PL(1,2) GLOBAL BGD NUMPL=1 PALETTE 4,,0,0,0 PALETTE 5,,,,0 BG 1 FOR Y=0 TO 31 FOR X=0 TO 31 ATTR (3,RND*2,RND*2) CELL X,Y,32 NEXT X NEXT Y ATTR 0 BG 0 ON VBL CALL BGFX TITLE: GAMEPAD 1 PAUSE OFF CLS 0 SPRITE OFF ON RASTER CALL TITLERASTERFX BG COPY 0,2,16,6 TO 4,3 BG COPY 16,2,4,6 TO 0,3 ATTR 6 TEXT 2,0,"INUTILIS SOFTWARE" TEXT 4,15,"BY TIMO KLOSS" TEXT 3,10,"CPU VS CPU" TEXT 3,11,"PLAYER VS CPU" TEXT 3,12,"PLAYER VS PLAYER" DO CELL 2,10,0 CELL 2,11,0 CELL 2,12,0 IF TIMER MOD 30<15 THEN CELL 2,10+NUMPL,48 IF UP TAP(0) AND NUMPL>0 THEN NUMPL=NUMPL-1 IF DOWN TAP(0) AND NUMPL<2 THEN NUMPL=NUMPL+1 IF BUTTON TAP(0,0) OR BUTTON TAP(1,0) THEN GOTO BATTLE WAIT VBL LOOP BATTLE: PAUSE ON GAMEPAD MAX(1,NUMPL) ON RASTER CALL GAMERASTERFX DISPLAY (,1,) SCROLL 0,0,0 CLS 0 FOR Y=0 TO 31 FOR X=0 TO 39 MAP(X,Y)=0 NEXT X NEXT Y ATTR 2 FOR X=0 TO 39 CALL SETMAP(X,0) CALL SETMAP(X,31) NEXT X FOR Y=0 TO 31 CALL SETMAP(0,Y) CALL SETMAP(39,Y) NEXT Y PL(0,0)=8 PL(0,1)=12 PL(0,2)=1 PL(1,0)=39-8 PL(1,1)=31-12 PL(1,2)=3 SPRITE 0,,,1 SPRITE 1,,,1 SPRITE.A 0,(0) SPRITE.A 1,(1) S=1/4 T=0 DO FOR P=0 TO 1 X=PL(P,0) Y=PL(P,1) D=PL(P,2) IF T MOD 4=0 THEN IF P0 THEN GOTO GAMEOVER END IF 'ATTR (P) CALL SETMAP(X,Y) END IF IF D=0 THEN Y=Y-S IF D=1 THEN X=X+S IF D=2 THEN Y=Y+S IF D=3 THEN X=X-S SPRITE P,X*4,Y*4, PL(P,0)=X PL(P,1)=Y PL(P,2)=D NEXT P T=T+1 WAIT 2 LOOP GAMEOVER: X=SPRITE.X(P) Y=SPRITE.Y(P) FOR I=0 TO 9 SPRITE OFF P WAIT 5 SPRITE P,X,Y, WAIT 5 NEXT I GOTO TITLE SUB HANDLEPLAYER(P,D) IF UP(P) AND D<>2 THEN D=0 ELSE IF RIGHT(P) AND D<>3 THEN D=1 ELSE IF DOWN(P) AND D<>0 THEN D=2 ELSE IF LEFT(P) AND D<>1 THEN D=3 END IF END SUB SUB HANDLECPU(D,X,Y,OPPX,OPPY) R=RND DISTF=0 DISTL=0 DISTR=0 DL=(D+3) MOD 4 DR=(D+1) MOD 4 CALL DIRDIST(X,Y,D,DISTF) CALL DIRDIST(X,Y,DL,DISTL) CALL DIRDIST(X,Y,DR,DISTR) IF DISTF<5 AND (DISTL>1 OR DISTR>1) AND (DISTFDISTR THEN D=DL ELSE IF DISTR>DISTL THEN D=DR ELSE IF R<0.5 THEN D=DL ELSE D=DR END IF ELSE IF R<0.05 THEN IF D=0 THEN IF X1 THEN D=1 IF X>OPPX AND DISTL>1 THEN D=3 ELSE IF D=1 THEN IF Y1 THEN D=2 IF Y>OPPY AND DISTL>1 THEN D=0 ELSE IF D=2 THEN IF X>OPPX AND DISTR>1 THEN D=3 IF Y1 THEN D=1 ELSE IF Y>OPPY AND DISTR>1 THEN D=0 IF Y1 THEN D=2 END IF END IF END SUB SUB DIRDIST(X,Y,D,RES) DX=0 DY=0 IF D=0 THEN DY=-1 IF D=1 THEN DX=1 IF D=2 THEN DY=1 IF D=3 THEN DX=-1 RES=100 FOR I=1 TO 10 MX=X+DX*I MY=Y+DY*I IF MX<0 OR MX>39 OR MY<0 OR MY>31 THEN RES=I EXIT SUB END IF IF MAP(MX,MY)>0 THEN RES=I EXIT SUB END IF NEXT I END SUB SUB SETMAP(X,Y) MAP(X,Y)=1 CX=X\2 CY=Y\2 MX=CX*2 MY=CY*2 C=MAP(MX,MY)*1 C=C+MAP(MX+1,MY)*2 C=C+MAP(MX,MY+1)*4 C=C+MAP(MX+1,MY+1)*8 CELL CX,CY,C END SUB SUB BGFX IF TIMER MOD 32=0 THEN R=RND IF R<0.2 THEN BGD=(BGD+1) MOD 4 ELSE IF R<0.4 THEN BGD=(BGD+3) MOD 4 END IF END IF X=SCROLL.X(1) Y=SCROLL.Y(1) IF BGD=0 THEN X=X+1 ELSE IF BGD=1 THEN Y=Y+1 ELSE IF BGD=2 THEN X=X-1 ELSE Y=Y-1 END IF SCROLL 1,X,Y END SUB SUB TITLERASTERFX IF RASTER<8 OR RASTER>120 THEN SCROLL 0,4,0 ELSE SCROLL 0,0,0 END IF D=(TIMER+RASTER) MOD 128 IF RASTER>16 AND RASTER<72 AND ABS(D)<8 THEN DISPLAY (,RND*2,) SCROLL 0,RND*4-2,0 ELSE DISPLAY (,1,) END IF END SUB SUB GAMERASTERFX D=(TIMER+RASTER) MOD 512 IF ABS(D)<8 THEN DISPLAY (,RND*2,) SCROLL 0,RND*4-2,0 ELSE DISPLAY (,1,) SCROLL 0,0,0 END IF END SUB #1:MAIN PALETTES 002C181800383434000B070700030201 0001010100383401001B1B00003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 9060609000000000F09090F000000000 09060609000000000F09090F00000000 9966669900000000FF9999FF00000000 000000009060609000000000F09090F0 9060609090606090F09090F0F09090F0 09060609906060900F09090FF09090F0 9966669990606090FF9999FFF09090F0 0000000009060609000000000F09090F 9060609009060609F09090F00F09090F 09060609090606090F09090F0F09090F 9966669909060609FF9999FF0F09090F 000000009966669900000000FF9999FF 9060609099666699F09090F0FF9999FF 09060609996666990F09090FFF9999FF 9966669999666699FF9999FFFF9999FF 007F7F6060676766FF80809F9F989899 00FFFF0000FFFF00FF0000FFFF0000FF 66666666666666669999999999999999 00FFFF0000E7E766FF0000FFFF181899 66676760606767669998989F9F989899 0080C06030188CC680402090C8E47239 7FBFDF6F371B8DC6FF7F3F9FCFE77339 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000100000001818181F1F000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000003060C0810181C1E1F1E1C08 #3:MAIN BG 00001410000000000000001B001B0000 00000000000000000000000000000000 00010001000000000000000000000000 0000001B001B00000000000000000001 00010001000000000001000100000000 00000000110113011101001B10011101 15010001150911011501000110011101 150100010001120100000000001B1201 10041004120110041201150412011004 12011504120110041201150400011201 11040000001412011004001B14011101 16151004120110041201100412011004 12011004000112011104110110141201 1004001B1201161D1605151412011004 12011004120110041201100400011201 11040001000012011004000012011004 12051504151911011615100412011004 12011004000110111101110100000000 1004000000001004000010040000151C 10041514000010040000100400010001 10141014000000000000000000000000 00000000000000000000000000000000 00000001000100000014001400000000 00000000000000000000000000000000 00000000000000000000000000000000 00140014000000000000000000050005 00050005000500000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000