GAMEPAD 1 REM WAS8BIT RANDOMIZE TIMER DIM GLOBAL XDIR(7),YDIR(7) GLOBAL XCLOUD,YCLOUD FOR I=0 TO 7 READ XDIR(I),YDIR(I) NEXT I DATA 0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0,-1,-1 SPRITE 0,10*8,8*8,1 SPRITE.A 0,(1) DIM GLOBAL EX(9),EY(9),EDX(9),EDY(9),ESTAT(9) FOR I=1 TO 9 EX(I)=RND(8*31) EY(I)=RND(8*31) SPRITE I,EX(I),EY(I),1 SPRITE.A I,(2) NEXT I BG 0 FOR I=1 TO 250 X=RND(15)*2 Y=RND(15)*2 C=32+(RND(4)*2) CELL X,Y,C CELL X+1,Y,C+1 CELL X,Y+1,C+16 CELL X+1,Y+1,C+17 NEXT I BG 1 FOR I=1 TO 500 ATTR(0,RND(1),RND(1),0,0) CELL RND(31),RND(31),16 NEXT I FOR I=1 TO 200 ATTR(0,RND(1),RND(1),0,0) CELL RND(31),RND(31),17+RND(7) NEXT I XSCROLL=0 YSCROLL=0 XCLOUD=0 YCLOUD=0 ICLOUD=0 R=0 DO 'PLAYER MOVES IF UP(0) THEN DY=-1 ELSE IF DOWN(0) THEN DY=1 ELSE DY=0 IF LEFT(0) THEN DX=-1 ELSE IF RIGHT(0) THEN DX=1 ELSE DX=0 CALL CHECKCOLL(10*8+XSCROLL,8*8+YSCROLL,R,DX,DY) IF R=-1 THEN CALL DOSCROLL(XSCROLL,YSCROLL,DX,DY) CALL DOTANK(DX,DY) ADD ICLOUD,1,0 TO 10 IF ICLOUD=0 THEN XCLOUD=XCLOUD-1 IF RND(10)=0 THEN YCLOUD=YCLOUD+1 SCROLL 0,XCLOUD+XSCROLL,YCLOUD+YSCROLL END IF WAIT VBL LOOP SUB DOSCROLL(X,Y,DX,DY) ADD X,DX,0 TO (32*8)-1 ADD Y,DY,0 TO (32*8)-1 SCROLL 1,X,Y SCROLL 0,X+XCLOUD,Y+YCLOUD FOR I=1 TO 9 SPRITE I,EX(I)-X,EY(I)-Y,1 SPRITE.A I,(2) NEXT I END SUB SUB DOTANK(DX,DY) A=0 FOR I=0 TO 7 IF DX=XDIR(I) AND DY=YDIR(I) THEN A=I NEXT I SPRITE 0,,,1+A END SUB 'X,Y: PLAYER POSITION IN PIXELS 'R IS SET TO TRUE IF NO COLLISION WITH MAP SUB CHECKCOLL(XX,YY,R,DX,DY) 'CHECK ALL CORNERS X=XX+DX Y=YY+DY R=-1 VUL=-1 VUR=-1 VDL=-1 VDR=-1 CALL CHECKCELL(X/8,Y/8,VUL) CALL CHECKCELL((X+7)/8,Y/8,VUR) CALL CHECKCELL(X/8,(Y+7)/8,VDL) CALL CHECKCELL((X+7)/8,(Y+7)/8,VDR) IF DY=-1 AND DX=0 AND VUL*VUR=0 THEN R=0 IF DY=1 AND DX=0 AND VDL*VDR=0 THEN R=0 IF DX=-1 AND DY=0 AND VUL*VDL=0 THEN R=0 IF DX=1 AND DY=0 AND VUR*VDR=0 THEN R=0 IF DX=1 AND DY=1 AND VDR=0 THEN R=0 IF DX=1 AND DY=-1 AND VUR=0 THEN R=0 IF DX=-1 AND DY=-1 AND VUL=0 THEN R=0 IF DX=-1 AND DY=1 AND VDL=0 THEN R=0 IF R=0 THEN XX=XX-DX YY=YY-DY END IF END SUB SUB CHECKCELL(X,Y,R) BG 1 C=CELL.C(X,Y) REM CELL X,Y,9 BG 0 IF C=0 OR C=16 THEN R=-1 ELSE IF C<>0 THEN R=0 END IF END SUB #1:MAIN PALETTES 002A2915153F2E19003A3020003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 103854444438000000286C7C7C380000 022C4C00442800000038747C7C380000 0038444E4438000000387C707C380000 002844004C2C020000387C7C74380000 003844445438100000387C7C6C280000 002844006468800000387C7C5C380000 003844E44438000000387C1C7C380000 806864004428000000385C7C7C380000 81422400002442810000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10220044210084011022004421008401 422D1A36CC5C295200000C1C18200000 1209192068403A4400000018383C0C00 00B058451AE041060000307870000000 4290130600C26110003A0E0000000000 4D9624002C4819520018181838707000 499A34E643AE1A110000003C3C380000 24662820041C304A003818000004040C 00814C44445281000000062222300000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 C4E1600F9F13531EC4E1600F9F13531E 460E0CE0F19092F0460E0CE0F19092F0 00004766773B1F1F00004766773B1F1F 000084EC9C38F0F0000084EC9C38F0F0 0000060E1F77DDDF0000060E1F77DDDF 0000E0388CFDDF7F0000E0388CFDDF7F 000E1B7F0E004009000E1B7F0E004009 410800C230106288410800C230106288 084240603F0FAB4B084240603F0FAB4B 1044040CF8E0AAA41044040CF8E0AAA4 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 9C0F0807307061049C0F080730706104 71E020C00C0E064071E020C00C0E0640 0F070303030509320F07030303050932 E0C0808080402098E0C0808080402098 EFF3FF4F33391800EFF3FF4F33391800 E6DCBEB8F0800000E6DCBEB8F0800000 20030EB31D06410820030EB31D064108 6090E210E039C03E6090E210E039C03E AF47070E16466300AF47070E16466300 EAC4C0E0D0C48C00EAC4C0E0D0C48C00