RANDOMIZE TIMER TOUCHSCREEN REM WAS8BIT DIM MAP(17,13) DIM GLOBAL WINMAP(19,15) GLOBAL ILEVEL I=0 PAUSE OFF NEWGAME: CALL GAMECONTROL(-1) NEXTGAME: CALL GAMECONTROL(1) RESET: CLS SPRITE 0,8*8,8*4,76 SPRITE 0 SIZE 3 PAL 0 NUMBER 9,6,ILEVEL,2 PLAY 0,25,1 SOUND 3 PLAY 1,32,1 SOUND 3 PLAY 2,41,1 SOUND 3 PLAY 3,49,1 SOUND 3 WAIT 60*3 CLS SPRITE 0,-32,-32, WAIT VBL I=RND(8) BG 1 PAL 7 BG FILL 19,0 TO 19,15 CHAR 9 BG FILL 0,15 TO 19,15 CHAR 9 BG FILL 31,0 TO 31,15 CHAR 9 BG FILL 0,31 TO 19,31 CHAR 9 FOR Y=0 TO 13 FOR X=0 TO 17 MAP(X,Y)=0 NEXT X NEXT Y FOR Y=1 TO 13 STEP 2 ADD I,2,1 TO 8 FOR X=1 TO 17 STEP 2 ADD I,1,1 TO 8 PAL I-1 CELL X,Y,I NEXT X NEXT Y ILOW=0 IFILL=0 GOGO: IPASS=0 DO BG 0 PAL 0 REM NUMBER 0,0,IPASS,3 BG 1 ISKIP=-1 INC IPASS IF IPASS=50 THEN INC IFILL IF IFILL=1 THEN GOTO FILL1 IF IFILL=2 THEN GOTO FILL2 END IF FOR Y=1 TO 13 STEP 2 FOR X=1 TO 17 STEP 2 IF MAP(X,Y)=ILOW THEN ISKIP=0 CC=CELL.C(X,Y) IF CC-1<0 OR CC-1>7 THEN CALL ERROR(1) PAL CC-1 IF RND(1)=0 THEN DX=RND(2)-1+X DY=Y ELSE DY=RND(2)-1+Y DX=X END IF CH=CELL.C(DX,DY) IF CH=0 THEN CELL DX,DY,CC INC MAP(X,Y) END IF END IF REM IF ILEVEL>2 THEN WAIT VBL NEXT X NEXT Y IF ISKIP THEN INC ILOW IF ISKIP THEN IPASS=0 IF ILOW=5 THEN GOTO MAKE3D WAIT VBL LOOP FILL1: FOR Y=1 TO 13 STEP 2 FOR X=1 TO 17 STEP 2 IF MAP(X,Y)=ILOW THEN CC=CELL.C(X,Y) DX=X DY=Y CHL=CELL.C(X-1,Y) CHR=CELL.C(X+1,Y) CHU=CELL.C(X,Y-1) CHD=CELL.C(X,Y+1) IF CHL=CC THEN DX=X-1 ELSE IF CHR=CC THEN DX=X+1 ELSE IF CHU=CC THEN DY=Y-1 ELSE IF CHD=CC THEN DY=Y+1 ELSE PRINT "ERROR: FILL1" WAIT 15 GOTO RESET END IF IF CC-1<0 OR CC-1>7 THEN CALL ERROR(2) PAL CC-1 IF CELL.C(DX-1,DY)=0 THEN CELL DX-1,DY,CC IF CELL.C(DX+1,DY)=0 THEN CELL DX+1,DY,CC IF CELL.C(DX,DY-1)=0 THEN CELL DX,DY-1,CC IF CELL.C(DX,DY+1)=0 THEN CELL DX,DY+1,CC INC MAP(X,Y) END IF NEXT X NEXT Y INC ILOW GOTO GOGO FILL2: CLS 0 IDONE=-1 FOR Y=0 TO 14 FOR X=0 TO 18 CC=CELL.C(X,Y) IF CC=0 THEN IDONE=0 IF RND(5)=0 THEN DX=X DY=Y IF RND(1)=0 THEN DX=RND(2)-1+X ELSE DY=RND(2)-1+Y CH=CELL.C(DX,DY) IF CH<=8 AND CH>0 THEN PAL CH-1 IF CH<>0 AND CH<>9 THEN CELL X,Y,CH END IF END IF NEXT X NEXT Y WAIT VBL IF NOT IDONE THEN GOTO FILL2 MAKE3D: BG 1 BG FILL 0,0 TO 0,15 CHAR 9 PLAY 0,80,5 SOUND 4 FOR Y=0 TO 14 FOR X=1 TO 18 IF (X\2<>X/2) AND (Y\2<>Y/2) THEN ZZ=16 ELSE ZZ=0 BG 1 CC=CELL.C(X,Y) CHU=CELL.C(X,Y-1) CHD=CELL.C(X,Y+1) CHL=CELL.C(X-1,Y) CHR=CELL.C(X+1,Y) RR=0 IF CHU<>CC THEN RR=RR+1 IF CHD<>CC THEN RR=RR+2 IF CHL<>CC THEN RR=RR+4 IF CHR<>CC THEN RR=RR+8 BG 0 IF CC-1<0 OR CC-1>7 THEN CALL ERROR(CC) PAL CC-1 CELL X,Y,17+RR+ZZ NEXT X NEXT Y CLS 1 BG 1 PAL 0 BG FILL 1,0 TO 18,0 CHAR 51 BG FILL 1,14 TO 18,14 CHAR 54 BG FILL 1,1 TO 1,14 CHAR 49 BG FILL 18,1 TO 18,14 CHAR 56 CELL 1,0,50 CELL 18,0,52 CELL 1,14,53 CELL 18,14,55 SPRITE 1,,,64 SPRITE 1 SIZE 2 ICHAR=0 REM GAME STARTS HERE.. OX=-24 OY=-24 GLOBAL TWAIT TWAIT=0 WHILE NOT TAP WAIT VBL WEND REM SCRAMBLE: FOR I=1 TO ILEVEL WAIT 15 R=RND(3) IF R=0 THEN CALL ROLLUP(RND(5)*3+1) ELSE IF R=1 THEN CALL ROLLDOWN(RND(5)*3+1) ELSE IF R=2 THEN CALL ROLLLEFT(RND(4)*3) ELSE IF R=3 THEN CALL ROLLRIGHT(RND(4)*3) END IF NEXT I DO IF PAUSE THEN GOTO NEWGAME IANI=(IANI+1) MOD 8 IF IANI=0 THEN ADD ICHAR,3,67 TO 73 FOR IX=0 TO 2 FOR IY=0 TO 32 STEP 16 CCHAR=ICHAR+IX+IY TCHAR=64+IX+IY COPY $8000+16*CCHAR,16 TO $8000+TCHAR*16 NEXT IY NEXT IX END IF IF TAP AND TWAIT=0 THEN TX=((TOUCH.X-8)\24)*24+8 TY=(TOUCH.Y\24)*24 IF OX=-24 THEN OX=TX OY=TY SPRITE 1,TX,TY, PLAY 1,90,5 SOUND 1 TWAIT=30 ELSE IF TX=OX AND TY=OY THEN OX=-24 OY=-24 SPRITE 1,OX,OY, PLAY 1,90,5 SOUND 2 TWAIT=30 ELSE IF TYOY AND TX=OX THEN CALL ROLLDOWN(TX\8) GOSUB CHECKWIN ELSE IF TX>OX AND TY=OY THEN CALL ROLLRIGHT(TY\8) GOSUB CHECKWIN ELSE IF TX0 THEN DEC TWAIT WAIT VBL LOOP CHECKWIN: WINCHECK=0 CALL GAMECONTROL(WINCHECK) IF WINCHECK THEN SPRITE 1,-32,-32, PLAY 0,85,5 SOUND 4 WAIT 90 PALETTE 0,63,,, FOR S=1 TO 85 PLAY 0,S,1 SOUND 3 WAIT 1 NEXT S PALETTE 0,0,,, GOTO NEXTGAME ELSE PALETTE 0,0,,, END IF RETURN SUB ROLLUP(X) CALL MOVECONTROL(X,0,0,-1) FOR B=1 TO 0 STEP -1 BG B FOR I=1 TO 3 P1=CELL.A(X,0) C1=CELL.C(X,0) P2=CELL.A(X+1,0) C2=CELL.C(X+1,0) P3=CELL.A(X+2,0) C3=CELL.C(X+2,0) BG SCROLL X,0 TO X+2,14 STEP 0,-1 PAL P1 CELL X,14,C1 PAL P2 CELL X+1,14,C2 PAL P3 CELL X+2,14,C3 NEXT I NEXT B PLAY 0,90,1 SOUND 0 TWAIT=30 END SUB SUB ROLLDOWN(X) CALL MOVECONTROL(X,0,0,1) FOR B=1 TO 0 STEP -1 BG B FOR I=1 TO 3 P1=CELL.A(X,14) C1=CELL.C(X,14) P2=CELL.A(X+1,14) C2=CELL.C(X+1,14) P3=CELL.A(X+2,14) C3=CELL.C(X+2,14) BG SCROLL X,0 TO X+2,14 STEP 0,1 PAL P1 CELL X,0,C1 PAL P2 CELL X+1,0,C2 PAL P3 CELL X+2,0,C3 NEXT I NEXT B PLAY 0,90,1 SOUND 0 TWAIT=30 END SUB SUB ROLLRIGHT(Y) CALL MOVECONTROL(0,Y,1,0) FOR B=1 TO 0 STEP -1 BG B FOR I=1 TO 3 P1=CELL.A(18,Y) C1=CELL.C(18,Y) P2=CELL.A(18,Y+1) C2=CELL.C(18,Y+1) P3=CELL.A(18,Y+2) C3=CELL.C(18,Y+2) BG SCROLL 1,Y TO 18,Y+2 STEP 1,0 PAL P1 CELL 1,Y,C1 PAL P2 CELL 1,Y+1,C2 PAL P3 CELL 1,Y+2,C3 NEXT I NEXT B PLAY 0,90,1 SOUND 0 TWAIT=30 END SUB SUB ROLLLEFT(Y) CALL MOVECONTROL(0,Y,-1,0) FOR B=1 TO 0 STEP -1 BG B FOR I=1 TO 3 P1=CELL.A(1,Y) C1=CELL.C(1,Y) P2=CELL.A(1,Y+1) C2=CELL.C(1,Y+1) P3=CELL.A(1,Y+2) C3=CELL.C(1,Y+2) BG SCROLL 1,Y TO 18,Y+2 STEP -1,0 PAL P1 CELL 18,Y,C1 PAL P2 CELL 18,Y+1,C2 PAL P3 CELL 18,Y+2,C3 NEXT I NEXT B PLAY 0,90,1 SOUND 0 TWAIT=30 END SUB SUB MOVECONTROL(X,Y,DX,DY) IF DX>0 THEN XX=WINMAP(18,Y) FOR IX=18 TO 2 STEP-1 WINMAP(IX,Y)=WINMAP(IX-1,Y) NEXT IX WINMAP(1,Y)=XX ELSE IF DX<0 THEN XX=WINMAP(1,Y) FOR IX=1 TO 17 WINMAP(IX,Y)=WINMAP(IX+1,Y) NEXT IX WINMAP(18,Y)=XX ELSE IF DY>0 THEN YY=WINMAP(X,14) FOR IY=14 TO 1 STEP-1 WINMAP(X,IY)=WINMAP(X,IY-1) NEXT IY WINMAP(X,0)=YY ELSE IF DY<0 THEN YY=WINMAP(X,0) FOR IY=0 TO 13 WINMAP(X,IY)=WINMAP(X,IY+1) NEXT IY WINMAP(X,14)=YY END IF END SUB SUB GAMECONTROL(L) I=L IF I=-1 THEN REM RESET LEVEL ILEVEL=0 ELSE IF I=1 THEN REM NEXT LEVEL INC ILEVEL II=0 FOR Y=0 TO 15 FOR X=0 TO 19 INC II WINMAP(X,Y)=II NEXT X NEXT Y ELSE IF I=0 THEN REM CHECK LEVEL CHECK=-1 II=0 FOR Y=0 TO 15 FOR X=0 TO 19 INC II IF WINMAP(X,Y)<>II THEN CHECK=0 NEXT X NEXT Y L=CHECK END IF END SUB SUB ERROR(I) REM PRINT "ERROR "+STR$(I) REM END IF I<=0 THEN INC I ELSE DEC I END SUB #1:MAIN PALETTES 003F2A15003B3020003C2814003E3824 001E081500372313002B0B06002A1500 #2:MAIN CHARACTERS 00000000000000000000000000000000 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 81002400002400818142000000004281 0000000000000000FFFFFFFFFFFFFFFF 000000000000000000FFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFF00 000000000000000000FFFFFFFFFFFF00 00000000000000007F7F7F7F7F7F7F7F 0000000000000000007F7F7F7F7F7F7F 00000000000000007F7F7F7F7F7F7F00 0000000000000000007F7F7F7F7F7F00 0000000000000000FEFEFEFEFEFEFEFE 000000000000000000FEFEFEFEFEFEFE 0000000000000000FEFEFEFEFEFEFE00 000000000000000000FEFEFEFEFEFE00 00000000000000007E7E7E7E7E7E7E7E 0000000000000000007E7E7E7E7E7E7E 00000000000000007E7E7E7E7E7E7E00 0000000000000000007E7E7E7E7E7E00 0000000000000000FFFFDBFFDBE7FFFF 000000000000000000FFDBFFDBE7FFFF 0000000000000000FFFFDBFFDBE7FF00 000000000000000000FFDBFFDBE7FF00 00000000000000007F7F5B7F5B677F7F 0000000000000000007F5B7F5B677F7F 00000000000000007F7F5B7F5B677F00 0000000000000000007F5B7F5B677F00 0000000000000000FEFEDAFEDAE6FEFE 000000000000000000FEDAFEDAE6FEFE 0000000000000000FEFEDAFEDAE6FE00 000000000000000000FEDAFEDAE6FE00 00000000000000007E7E5A7E5A667E7E 0000000000000000007E5A7E5A667E7E 00000000000000007E7E5A7E5A667E00 0000000000000000007E5A7E5A667E00 80808080808080800000000000000000 FF808080808080800000000000000000 FF000000000000000000000000000000 FF010101010101010000000000000000 80808080808080FF0000000000000000 00000000000000FF0000000000000000 01010101010101FF0000000000000000 01010101010101010000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 B6008080008080006D80800080800080 DB00000000000000BD00000000000000 6D00010100010100B601010001010001 B6008080008080006D80800080800080 DB00000000000000BD00000000000000 6D00010100010100B601010001010001 6D80800080800080DB80008080008080 BD000000000000006600000000000000 B601010001010001DB01000101000101 DB80008080008080B600808000808000 6600000000000000DB00000000000000 DB010001010001016D00010100010100 FF808080808088880000000000000000 FF00000000007A420000000000000000 FF00000000002F280000000000000000 FF010101010141410000000000000000 80800080800080808000808080800080 00000000000000000000000000000000 01010001010001010100010101010001 80800080800080808000808080800080 00000000000000000000000000000000 01010001010001010100010101010001 80008080808000800080800000808000 00000000000000000000000000000000 01000101010100010001010000010100 00808000008080008080008080008080 00000000000000000000000000000000 00010100000101000101000101000101 8888888F808080800000000000000000 62424178000000000000000000000000 2C28488F000000000000000000000000 41414179010101010000000000000000 00808000808000B6800080800080806D 00000000000000DB00000000000000BD 000101000101006D01000101000101B6 00808000808000B6800080800080806D 00000000000000DB00000000000000BD 000101000101006D01000101000101B6 800080800080806D80800080800080DB 00000000000000BD0000000000000066 01000101000101B601010001010001DB 80800080800080DB00808000808000B6 000000000000006600000000000000DB 01010001010001DB000101000101006D 80808080808080800000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 01010101010101010000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 80808080808080FF0000000000000000 00000000000000FF0000000000000000 00000000000000FF0000000000000000 01010101010101FF0000000000000000 #15:MAIN SOUND 0800301110F407001800846C10F00900 1800F76C14F0DF00280000CC19000000 1800229900FF0F003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000