REM GURU-LOGIC CCLX33 V1.2 REM 124 ROOMS BY CCLX33 REM GRID 'POKE $8000,1 REM CONST MARK=1 BALL=2 BALLONMARK=3 WALL=4 XMARK=5 XBLOCK=6 REDBLOCK=7 BLUBLOCK=8 GAMEPAD 1 DIM LEVEL$(300),TMP(225) GOSUB READMAP SPRITE.A 1,2 ATTR (1,,,,) text 9,0,"Guru Logic" text 9,1,"LEVEL=" RESTART: PAUSE OFF LOCATE 15,1 INPUT A$ IF A$="N" OR A$="" THEN LVL=LVL+1 ELSE IF A$="A" THEN GOTO TRYAGAIN ELSE LVL=VAL(A$) GOTO TRYAGAIN LEVELUP: LVL=LVL+1 TRYAGAIN: CLS KEYBOARD OFF IF LVL<1 THEN LVL=1 IF LVL>MAXLVL THEN LVL=MAXLVL GOSUB DRAWMAP GOSUB BORDER text 0,10,"button: rotate" text 0,11,"up: put ball" text 0,12,"down: get ball" text 0,13,"pause: select level" DO IF LEFT TAP(0) AND MX>1THEN MX=MX-1 ELSE IF RIGHT TAP(0) AND MX0 THEN GOSUB SHOOTBALL ELSE IF DOWN TAP(0) THEN GOSUB GETBALL END IF IF PAUSE THEN GOTO RESTART IF BUTTON TAP(0,0) THEN GOSUB ROTLEFT IF BUTTON TAP(0,1) THEN GOSUB ROTRIGHT IF FINISH THEN TEXT 8,8,"GOOD" WAIT 120 CLS GOTO LEVELUP END IF SPRITE 1,MX*8,(WIDTH+1)*8,7 WAIT VBL LOOP ROTLEFT: GOSUB MAP2TMP FOR X=1 TO WIDTH FOR Y=WIDTH TO 1 STEP -1 CELL X,Y,TMP(I) I=I+1 NEXT Y NEXT X RETURN ROTRIGHT: GOSUB MAP2TMP FOR X=WIDTH TO 1 STEP -1 FOR Y=1 TO WIDTH CELL X,Y,TMP(I) I=I+1 NEXT Y NEXT X RETURN MAP2TMP: I=0 FOR Y=1 TO WIDTH FOR X=1 TO WIDTH TMP(I)=CELL.C(X,Y) I=I+1 NEXT X NEXT Y I=0 RETURN SHOOTBALL: YPOS=WIDTH+1 FOR Y=WIDTH TO 1 STEP -1 V=CELL.C(MX,Y) IF V=XBLOCK THEN Y=0 IF V=BALL OR V=BALLONMARK OR V=WALL THEN YPOS=Y+1 Y=0 END IF NEXT Y IF YPOS>WIDTH THEN RETURN IF CELL.C(MX,YPOS)=XMARK THEN RETURN IF CELL.C(MX,YPOS-1)=XBLOCK THEN RETURN BALLS=BALLS-1 TEXT 15,4,STR$(BALLS)+" " V=CELL.C(MX,YPOS)+2 CELL MX,YPOS,V IF V=BALLONMARK THEN MATCH=MATCH+1 'TEXT 15,6,STR$(MATCH) 'TEXT 15,7,STR$(GOAL) IF MATCH=GOAL THEN FINISH=-1 RETURN GETBALL: YPOS=WIDTH+1 FOR Y=WIDTH TO 1 STEP -1 V=CELL.C(MX,Y) IF V=WALL OR V=XBLOCK THEN Y=0 IF V=BALL OR V=BALLONMARK THEN YPOS=Y Y=0 END IF NEXT Y IF YPOS>WIDTH THEN RETURN BALLS=BALLS+1 TEXT 15,4,STR$(BALLS) V=CELL.C(MX,YPOS)-2 CELL MX,YPOS,V IF V=1 THEN MATCH=MATCH-1 RETURN BORDER: ATTR(4,) FOR I=0 TO WIDTH+1 CELL I,0,8 CELL I,WIDTH+1,8 CELL 0,I,8 CELL WIDTH+1,I,8 NEXT I ATTR(1,) RETURN DRAWMAP: FINISH=0 TEXT 15,0,"LEVEL" TEXT 15,1,STR$(LVL) L$=LEVEL$(LVL) BALLS=0 GOAL=0 MATCH=0 WIDTH=VAL(LEFT$(L$,2))+1 I=4 FOR Y=1 TO WIDTH FOR X=1 TO WIDTH B$=MID$(L$,I,1) V=VAL(B$) IF B$<>"\" AND B$<>"#" THEN I=I+1 IF V=MARK OR V=BALLONMARK THEN GOAL=GOAL+1 IF V=BALL THEN BALLS=BALLS-1 IF V=MARK THEN BALLS=BALLS+1 IF V=BALLONMARK THEN MATCH=MATCH+1 CELL X,Y,V NEXT X IF B$<>"#" THEN I=I+1 NEXT Y TEXT 15,3,"BALL" TEXT 15,4,STR$(BALLS) MX=WIDTH\2+1 SPRITE 1,MX*8,(WIDTH+1)*8,5 RETURN READMAP: REM FIRST 2 BYTES IS WIDTH (MAX 14) FOR I=1 TO 300 READ LEVEL$(I) IF LEVEL$(I)="" THEN MAXLVL=I-1 I=300 END IF NEXT I RETURN REM 1=MARK 2=BALL 3=BALL-ON-MARK 4=WALL REM 5=X-MARK 6=X-BLOCK 7=REDBLOCK 8=BLUEBLOCK DATA "03 04\01\01#" DATA "03 \044\012#" DATA "04 11\\1201\011#" DATA "04 004\4003\0003\001#" DATA "04 102\301\\2003#" REM -----LEVEL 6------- DATA "04 3\1203\0344\0201#" DATA "04 041\011\111\33#" DATA "04 03\4201\101\1404#" DATA "04 0404\3032\01\0104#" DATA "04 0101\21\023\#" REM -----LEVEL 11------- DATA "04 003\01\003\1123#" DATA "04 0022\0001\001\43#" DATA "04 013\4143\0042\0433#" DATA "04 0424\1302\1122\144#" DATA "04 004\301\004\043#" REM -----LEVEL 16------- DATA "04 4304\1001\004\0104#" DATA "04 434\4003\0154\1#" DATA "04 3141\002\152\2415#" DATA "04 0334\002\\2511#" DATA "04 0211\0534\11\0044#" REM -----LEVEL 21------- DATA "04 4140\401\3001\4402#" DATA "04 011\\\04#" DATA "04 0042\201\6135#" DATA "04 1464\101\045\041#" DATA "04 15\001\6201\0064#" REM -----LEVEL 26------- DATA "04 0043\0303\0124\151#" DATA "04 61\401\0013\132#" DATA "04 0144\164\004\1101#" DATA "04 3244\0004\4013\5056#" DATA "04 6614\0001\503\35#" REM -----LEVEL 31------- DATA "04 03\5203\4103\351#" DATA "04 4503\4624\11\6406#" DATA "05 041\11011\1033\04\04004#" DATA "05 40004\03004\2011\1014\431#" DATA "05 \00414\34403\30101\21004#" REM -----LEVEL 36------- DATA "05 00004\0004\40011\1104\03#" DATA "05 \00041\001\0401\00444#" DATA "05 52403\1514\04404\5035\44041#" DATA "05 0205\0535\00121\54201\404#" DATA "05 44041\05035\4504\40104\04045#" REM -----LEVEL 41------- DATA "05 10434\00534\41053\55044\0042#" DATA "05 4301\005\04134\0003\002#" DATA "05 10054\10405\0404\00504\001#" DATA "05 023\42345\00001\41003\40045" DATA "05 20043\03\0005\145\05105#" REM -----LEVEL 46------- DATA "05 0004\33514\11005\0053\545#" DATA "05 001\0024\40032\20113\3504#" DATA "05 20101\10553\24\0051\2034#" DATA "05 4013\00524\0001\00434\6532#" DATA "05 003\36316\55506\1\65#" REM -----LEVEL 51------- DATA "05 30501\0026\0444\1054\4321#" DATA "05 6045\05101\03406\04005\1335#" DATA "05 10001\0455\22305\01034\00442#" DATA "06 4043\03001\000004\404\20001\20301#" DATA "06 330403\440004\030042\01101\140431\002301#" REM -----LEVEL 56------- DATA "06 1\3443\00021\103332\000144\4124#" DATA "06 303201\000104\021004\2401\301\02#" DATA "06 330403\340101\00401\0013\32223\001012#" DATA "06 10403\040342\\041434\403301\0121#" DATA "06 01\301123\000202\04\233\00144#" REM -----LEVEL 61------- DATA "06 444002\000414\04441\300021\001104\000004#" DATA "06 430001\444\010004\300442\404020\310014#" DATA "06 20141\004413\0414\000022\02142\021012#" DATA "06 304\404304\31041\300223\001\002411#" DATA "06 0044\100334\002142\312330\2044\114243#" REM -----LEVEL 66------- DATA "06 400004\041044\340103\040004\0001\004#" DATA "06 400404\340442\430431\233\144\033001#" DATA "06 214004\404011\410120\400420\312400\424040#" DATA "06 300104\010041\000201\30004\000304\03233#" DATA "06 000001\34114\03022\00204\04\001004#" REM -----LEVEL 71------- DATA "06 04004\03034\0002\0004\01014\002#" DATA "06 002414\000541\301005\3352\05001\054104#" DATA "06 443405\010054\50404\100003\031011\322205#" DATA "06 0023\42345\000141\0034\45103\01301#" DATA "06 510534\435001\004144\000003\054#" REM -----LEVEL 76------- DATA "06 002342\43345\531\04\40014\021004#" DATA "06 005150\045343\0042\004353\440211\003403#" DATA "06 5154\344433\40104\3211\542003\303053#" DATA "06 400044\005115\015501\010004\10002\444014#" DATA "06 450003\1\001004\23003\3044\145#" REM -----LEVEL 81------- DATA "06 204104\201003\04125\32331\013051\220054#" DATA "06 400011\43\425503\04301\020303\45405#" DATA "06 514554\004405\100435\023504\420314\55024#" DATA "06 033022\04041\10403\002315\301002\015405#" DATA "06 013001\01024\001024\414301\030302\05544#" REM -----LEVEL 86------- DATA "06 005614\006005\242\63404\340021\634001#" DATA "06 614021\041010\100052\04604\463545\000053#" DATA "06 050002\140023\43006\4003\015553\50414#" DATA "06 000601\060345\011601\4013\03001\600453#" DATA "06 022164\001305\001016\2602\000305\61501#" REM -----LEVEL 91------- DATA "06 000542\513401\0001\004122\054601\102#" DATA "06 340004\531503\101625\403203\000320\625413#" DATA "06 5332\004004\403123\00104\046154\14025#" DATA "06 40401\0021\404\015024\306001\100006#" DATA "06 0043\025\5501\020002\16102\011431#" REM -----LEVEL 96------- DATA "06 242325\051531\210055\3002\460065\101003#" DATA "07 2002002\1044244\4111\0001201\0110004\04043\03001#" DATA "07 1122144\0041001\1011103\3004\0400404\0201003\0003003#" DATA "07 430423\30004\000401\4043032\010001\4021004\2401003#" DATA "07 0401001\4002410\441001\010342\24403\0041444\0020004#" REM -----LEVEL 101------- DATA "07 2021004\344034\1010003\0300402\4340403\010404\3400024#" DATA "07 0030044\403\42341\04\4410004\03\4040014#" DATA "07 004\4000344\01001\031403\004102\00412\30401#" DATA "07 04044\0000301\0230001\040003\1010103\4014\442#" DATA "07 0143404\0543504\020004\0540003\0400103\230005\1044504#" REM -----LEVEL 106------- DATA "07 4010424\4040002\5005\442352\01404\0000541\01404#" DATA "07 0204014\4105\0300053\1440325\3000445\4444001\002003#" DATA "07 502024\0143004\000104\31541\054435\4101225\0530052#" DATA "07 0010004\04202\0551412\010203\4204103\050003\5125003#" DATA "07 401125\0105025\4030015\0400005\001\004031\300325#" REM -----LEVEL 111------- DATA "07 0440305\4404431\04202\0540203\04512\5301314\1000042#" DATA "07 04021\1005\524\50041\350004\310405\2401104#" DATA "07 03011\304055\3030341\003105\3040403\1203\4141015#" DATA "07 31\5400301\4515245\53024\0505342\5330544\1024#" DATA "07 2100004\004002\1300003\0035144\00025\004001\4003025#" REM -----LEVEL 116------- DATA "07 302\5655044\1046246\164524\40401\021004\4000015#" DATA "07 6600504\0000513\2205466\4001432\005401\04605\0504031#" DATA "07 4406315\0102005\0065\4036\601404\435511\2003502#" DATA "07 0101004\00036\0001106\0004001\1106446\4052411\6500014#" DATA "07 4150006\5401634\3110512\500435\6024342\0142544\500553#" REM -----LEVEL 121------- DATA "07 1003161\032413\344113\03204\1040454\013\0306004#" DATA "07 0105441\3020006\41003\1001103\2040603\601\4324163#" DATA "07 0350005\14003\5032341\010121\40302\0010503\0501#" DATA "07 4104144\4000606\044401\10426\324004\00146\4443011#" DATA "" RETURN #1:MAIN PALETTES 053F2F0000383400003C0C04003F3C00 003F1B3B003F2608003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00001824241800000000183C3C180000 3C7EFFFFFFFF7E3C0000000000000000 3C7EFFE7E7FF7E3C0000183C3C180000 FF818181818181FF007F7F7F7F7F7F7F 00000000000000000044281028440000 00000000000000007CBAD6EED6BA7C00 00022222220202FF007E5E5E5E7E7E00 0000000000000000FFFFFFFFFFFFFFFF