From bda5ccd3fe0c57fdf7d60179e667f7d14e72ea3a Mon Sep 17 00:00:00 2001 From: JJFlash Date: Fri, 2 Sep 2022 11:02:21 +0200 Subject: [PATCH] Renamed extension from xcbbas to bas --- ...hase-debug.xcbbas => superchase-debug.bas} | 952 +++++++++--------- 1 file changed, 476 insertions(+), 476 deletions(-) rename initial_ported_version/{superchase-debug.xcbbas => superchase-debug.bas} (96%) diff --git a/initial_ported_version/superchase-debug.xcbbas b/initial_ported_version/superchase-debug.bas similarity index 96% rename from initial_ported_version/superchase-debug.xcbbas rename to initial_ported_version/superchase-debug.bas index 6c3e82f..4739066 100644 --- a/initial_ported_version/superchase-debug.xcbbas +++ b/initial_ported_version/superchase-debug.bas @@ -1,476 +1,476 @@ -Dim scrAddrCache(25) as WORD @loc_scrAddrCache ' 0 -> 24 -loc_scrAddrCache: -DATA AS WORD 1024, 1064, 1104, 1144, 1184, 1224, 1264, 1304, 1344, 1384 -DATA AS WORD 1424, 1464, 1504, 1544, 1584, 1624, 1664, 1704, 1744, 1784 -DATA AS WORD 1824, 1864, 1904, 1944, 1984 - -Dim bTrailChar as BYTE : bTrailChar = 128 - -poke 53280, 13 : poke 53281, 13 -'~ 100 CALL CLEAR -sys $E544 FAST ' clear screen -poke 646, 0 'black chars -locate 0, 24 -'~ 110 PRINT TAB(6);"**************" -'~ 120 PRINT TAB(6);"* SUPERCHASE *" -'~ 130 PRINT TAB(6);"**************" -'~ 140 CALL CHAR(96,"00183C7E7E3C18") --- TREASURE! (rombo) -'~ 150 CALL COLOR(9,14,12) --- 96-103 -> Magenta/ Light Yellow -'~ 160 PRINT : : : :"USE THE ARROW KEYS TO MOVE." -'~ 170 PRINT : :"TRY TO GATHER AS MANY" -'~ 180 PRINT :"TREASURES (`) IN THE MAZE" -'~ 190 PRINT :"AS POSSIBLE BEFORE THE" -'~ 200 PRINT :"ENEMY CATCHES YOU!" -'~ 210 CALL COLOR(10,5,5) --- 104-111 -> Dark Blue/ Dark Blue -'~ 220 CALL COLOR(11,12,12) --- 112-119 -> Light Yellow/ Light Yellow -'~ 230 CALL CHAR(120,"383810FE10387CFE") --- HERO! -'~ 240 CALL COLOR(12,7,12) --- 120-127 -> Dark Red/ Light Yellow -'~ 250 CALL CHAR(128,"383810FE10387CFE") --- Ghost/shadow -'~ 260 CALL COLOR(13,16,12) --- 128-135 -> White/ Light Yellow -'~ 270 PRINT : : :"PRESS ANY KEY TO BEGIN"; -'~ 280 CALL KEY(0,K,S) -'~ 290 IF S<1 THEN 280 - -dim charset_array(2048) as BYTE @LOC_charset_addr -memcpy @charset_array, $3800, 2048 -poke $D018, 31 'final character location: $3800 - -PRINT " **************" -PRINT " * superchase *" -PRINT " **************" -PRINT "{13}{13}{13}{13} use the arrow keys to move." -PRINT "{13}{13} try to gather as many" -PRINT "{13} treasures ({160}) in the maze" -PRINT "{13} as possible before the" -PRINT "{13} enemy catches you!" - -PRINT "{13}{13}{13} press any key to begin"; - -poke 198, 0 : wait 198, 1 : poke 198, 0 - -line300: -'~ 300 SC=0 -'~ 310 LV=1 -SC = 0 -LV = 1 -Dim FL as BYTE : FL = 0 -Dim CX as INT : CX = 0 -Dim CY as INT : CY = 0 -Dim CCX as INT : CCX = 0 -Dim CCY as INT : CCY = 0 -Dim G as BYTE : G = 0 - -line320: -'~ 320 CALL CLEAR -sys $E544 FAST ' clear screen -'~ 330 CALL SCREEN(4) --- light green -poke 53280, 5 ' green -poke 53281, 7 'yellow - - -'~ 340 FOR X=3 TO 21 -'~ 350 CALL HCHAR(X,3,104,27) -'~ 360 NEXT X -memset $0400, 1000, 104 'reverse space -memset $D800, 1000, 6 'blue - -'~ 370 RANDOMIZE -Randomize TI() - -'~ 380 FOR I=1 TO 65 -'~ 390 X=2*(INT(9*RND))+4 -'~ 400 Y=2*(INT(11*RND))+4 -'~ 410 CALL HCHAR(X,Y,112,5) -'~ 420 NEXT I -For I AS BYTE = 1 to 65 - X = 2 * (CBYTE(9*RND())) + 4 - Y = 2 * (CBYTE(11*RND())) + 4 - TEXTAT Y, X, "{176}{176}{176}{176}{176}" -Next I - -'~ 430 FOR I=1 TO 60 -'~ 440 X=2*(INT(7*RND))+4 -'~ 450 Y=2*(INT(13*RND))+4 -'~ 460 CALL VCHAR(X,Y,112,5) -'~ 470 NEXT I -For I AS BYTE = 1 to 60 - X = 2 * (CBYTE(7*RND())) + 4 - Y = 2 * (CBYTE(13*RND())) + 4 - CHARAT Y, X , 112 - CHARAT Y, X + 1, 112 - CHARAT Y, X + 2, 112 - CHARAT Y, X + 3, 112 - CHARAT Y, X + 4, 112 -Next I - -'~ 480 CALL HCHAR(4,4,112,5) -'~ 490 CALL VCHAR(4,4,112,5) -TEXTAT 4, 4, "{176}{176}{176}{176}{176}" -CHARAT 4, 5, 112 -CHARAT 4, 6, 112 -CHARAT 4, 7, 112 -CHARAT 4, 8, 112 - -'~ 500 FOR I=1 TO 80 -'~ 510 X=2*(INT(9*RND))+4 -'~ 520 Y=2*(INT(13*RND))+4 -'~ 530 CALL HCHAR(X,Y,96) -'~ 540 NEXT I -For I AS BYTE = 1 to 80 - X = 2 * (CBYTE(9*RND())) + 4 - Y = 2 * (CBYTE(13*RND())) + 4 - CHARAT Y, X, 96, 4 ' 4 = magenta -Next I - -'~ 550 FOR I=1 TO 6 -'~ 560 CALL HCHAR(23,2+I,ASC(SEG$("SCORE:",I,1))) -'~ 570 NEXT I -TEXTAT 3, 23, "score:", 0 'black - -'**************************************************************************** - -'~ 580 CALL SOUND(100,1497,2) -'~ 590 T=0 -T = 0 - -'~ 600 IF LV<8 THEN 620 -'~ 610 LV=7 -IF LV = 8 Then LV = 7 - -'~ 620 A=4 -'~ 630 B=4 -'~ 640 C=4 -'~ 650 D=4 -'~ 660 PG=112 -A = 4 -B = 4 -C = 4 -D = 4 -PG = 112 - -'**************************************************************************** - -line670: -'~ 670 CALL HCHAR(A,B,120) -CHARAT B, A, 120, 2 ' 2 = Red - -'~ 680 IF T<8-LV THEN 1410 -IF T < 8-LV THEN goto line1410 - -'~ 690 IF FL=0 THEN 740 -IF FL = 0 THEN goto line740 - -'~ 700 IF FL/2=INT(FL/2)THEN 1140 -IF (FL AND 1) = 0 THEN Goto line1140 - -'~ 710 CCX=CX -'~ 720 CCY=CY -'~ 730 FL=0 -CCX = CX -CCY = CY -FL = 0 -textat 0, 0, "-fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 12 : poke 198,0 : wait 198, 1 : poke 198,0 - -line740: 'PRIMO CHECK ------------------------------------------------- -'~ 740 CALL GCHAR(C+1,D,GC) -'~ 750 IF GC=120 THEN 1760 -'~ 760 IF GC=104 THEN 810 -'~ 770 IF GC<>128 THEN 810 -'~ 780 CX=1 -'~ 790 CY=0 -'~ 800 GOTO 1340 -GC = peek(scrAddrCache(C + 1) + D) -IF GC = 120 THEN goto line1760 -IF GC = 104 THEN goto line810 -IF GC <> 128 THEN goto line810 -CX = 1 -CY = 0 -GOTO line1340 - -line810: -'~ 810 CALL GCHAR(C,D+1,GC) -'~ 820 IF GC=120 THEN 1760 -'~ 830 IF GC=104 THEN 880 -'~ 840 IF GC<>128 THEN 880 -'~ 850 CX=0 -'~ 860 CY=1 -'~ 870 GOTO 1340 -GC = peek(scrAddrCache(C) + D + 1) -IF GC = 120 THEN goto line1760 -IF GC = 104 THEN goto line880 -IF GC <> 128 THEN goto line880 -CX = 0 -CY = 1 -GOTO line1340 - -line880: -'~ 880 CALL GCHAR(C-1,D,GC) -'~ 890 IF GC=120 THEN 1760 -'~ 900 IF GC=104 THEN 950 -'~ 910 IF GC<>128 THEN 950 -'~ 920 CX=-1 -'~ 930 CY=0 -'~ 940 GOTO 1340 -GC = peek(scrAddrCache(C - 1) + D) -IF GC = 120 THEN goto line1760 -IF GC = 104 THEN goto line950 -IF GC <> 128 THEN goto line950 -CX = -1 -CY = 0 -GOTO line1340 - -line950: -'~ 950 CALL GCHAR(C,D-1,GC) -'~ 960 IF GC=120 THEN 1760 -'~ 970 IF GC=128 THEN 1320 -'~ 980 IF GC=112 THEN 1320 -GC = peek(scrAddrCache(C) + D - 1) -IF GC = 120 THEN goto line1760 -IF GC = 128 THEN goto line1320 -IF GC = 112 THEN goto line1320 - -'~ 990 FL=FL+1 -'~ 1000 IF FL/2=INT(FL/2)THEN 1040 -FL = FL + 1 -textat 0, 0, "fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 2 : poke 198,0 : wait 198, 1 : poke 198,0 -IF (FL AND 1) = 0 then goto line1040 - -'~ 1010 CX=CCX -'~ 1020 CY=CCY -'~ 1030 GOTO 1160 -CX = CCX -CY = CCY -GOTO line1160 - -line1040: '-----------CHECK con SGN! -'~ 1040 CX=SGN(A-C) -'~ 1050 CY=0 -'~ 1060 IF CX<>0 THEN 1080 -'~ 1070 CY=SGN(D-B) -textat 0, 0, "SGN! fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 11 : poke 198,0 : wait 198, 1 : poke 198,0 -CX = SGN(A - C) -CY = 0 -IF CX <> 0 THEN goto line1080 -CY = SGN(D - B) - -line1080: -'~ 1080 CALL GCHAR(C+CX,D+CY,GC) -'~ 1090 IF GC=104 THEN 1110 -'~ 1100 IF (GC=96)+(GC=112)THEN 1340 -'~ 1110 CX=-1 -'~ 1120 CY=0 -'~ 1130 GOTO 1160 -GC = peek(scrAddrCache(C + CX) + D + CY) -IF GC = 104 THEN goto line1110 -IF (GC = 96) OR (GC = 112) THEN goto line1340 - -line1110: -CX = -1 -CY = 0 -GOTO line1160 - -line1140: -'~ 1140 FL=FL+1 -'~ 1150 IF FL>1 THEN 1300 -FL = FL + 1 -textat 0, 0, "!fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 4 : poke 198,0 : wait 198, 1 : poke 198,0 -IF FL > 1 THEN goto line1300 - -line1160: '---------------SECONDO CHECK -'~ 1160 CALL GCHAR(C+CX,D+CY,GC) -'~ 1170 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 -'~ 1180 CX=1 -'~ 1190 CY=0 -'~ 1200 CALL GCHAR(C+CX,D,GC) -'~ 1210 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 -'~ 1220 CX=-1 -'~ 1230 CALL GCHAR(C+CX,D,GC) -'~ 1240 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 -'~ 1250 CX=0 -'~ 1260 CY=-1 -'~ 1270 CALL GCHAR(C,D+CY,GC) -'~ 1280 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 -'~ 1290 CY=1 -textat 0, 0, "!fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 10 : poke 198,0 : wait 198, 1 : poke 198,0 -GC = peek(scrAddrCache(C + CX) + D + CY) -IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 - -CX = 1 -CY = 0 -GC = peek(scrAddrCache(C + CX) + D) -IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 - -CX = -1 -GC = peek(scrAddrCache(C + CX) + D) -IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 - -CX = 0 -CY = -1 -GC = peek(scrAddrCache(C) + D + CY) -IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 - -CY = 1 - -line1300: -'~ 1300 CALL GCHAR(C+CX,D+CY,GC) -'~ 1310 IF GC=104 THEN 1390 ELSE 1340 -GC = peek(scrAddrCache(C + CX) + D + CY) -IF GC = 104 THEN goto line1390 ELSE goto line1340 - -line1320: -'~ 1320 CX=0 -'~ 1330 CY=-1 -CX = 0 -CY = -1 - -line1340: -'~ 1340 IF PG=96 THEN 1360 -'~ 1350 PG=112+FL -IF PG = 96 THEN goto line1360 -PG = 112 + FL - -line1360: -'~ 1360 CALL HCHAR(C,D,PG) -'~ 1370 C=C+CX -'~ 1380 D=D+CY -CHARAT D, C, PG, 4 '4 = magenta -C = C + CX -D = D + CY - -line1390: -'~ 1390 CALL HCHAR(C,D,42) -'~ 1400 PG=GC -textat 0, 0, "fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 0 -CHARAT D, C, 42, 0 ' 0 = black -PG = GC -'**************************************************************************** - -line1410: -'~ 1410 CALL KEY(1,K1,S) -'~ 1420 IF (K1<0)+(K1>5)THEN 1410 -'~ 1430 CALL HCHAR(A,B,128) -'~ 1440 ON K1+1 GOTO 1540,1410,1590,1640,1410,1690 - -K1 = peek( $DC00) : K1 = 127 - K1 -if K1 = 0 then goto line1410 - -IF K1 = 16 then 'fire - if bTrailChar = 128 then bTrailChar = 112 else bTrailChar = 128 -end if - -IF K1 > 8 then goto line1410 -do -loop until peek ( $DC00) = 127 - -CHARAT B, A, bTrailChar, 1 ' 1 = White -on K1 goto line1410, line1690, line1540, line1410, line1590, line1410, line1410, line1410, line1640, line1410, line1410, line1410, line1410, line1410, line1410, line1410, line1410 - -'sopra 1 -'sotto 2 -'sinistra 4 -'sinistrasopra 5 -'sinistrasotto 6 -'destra 8 -'destrasopra 9 -'destrasotto 10 -'fuoco 16 - -line1450: -'~ 1450 IF G<>96 THEN 670 -'~ 1460 CALL SOUND(100,-1,4) -'~ 1470 SC=SC+1 -'~ 1480 SC$=STR$(SC) -'~ 1490 FOR I=1 TO LEN(SC$) -'~ 1500 CALL HCHAR(23,10+I,ASC(SEG$(SC$,I,1))) -'~ 1510 NEXT I -'~ 1520 T=T+1 -'~ 1530 IF T<45 THEN 670 ELSE 320 + ALZA LV! -'wait $d011, 128: wait $d011, 128, 128: wait $d011, 128: wait $d011, 128, 128 -IF G <> 96 then goto line670 -poke 53280, 13 : wait $d011, 128 : wait $d011, 128, 128 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' light green, green -SC = SC + 1 -textat 10, 23, str$(SC), 0 -T = T + 1 -IF T < 45 then goto line670 else Goto line320 -'~ IF T < 45 then - '~ goto line670 -'~ Else - '~ LV = LV + 1 - '~ Goto line320 -'~ End If - -line1540: -'~ 1540 CALL GCHAR(A+1,B,G) -'~ 1550 IF G=104 THEN 1740 -'~ 1560 IF G=42 THEN 1760 -'~ 1570 A=A+1 -'~ 1580 GOTO 1450 -G = peek(scrAddrCache(A + 1) + B) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -A = A + 1 -Goto line1450 - -line1590: -'~ 1590 CALL GCHAR(A,B-1,G) -'~ 1600 IF G=104 THEN 1740 -'~ 1610 IF G=42 THEN 1760 -'~ 1620 B=B-1 -'~ 1630 GOTO 1450 -G = peek(scrAddrCache(A) + B - 1) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -B = B - 1 -Goto line1450 - -line1640: -'~ 1640 CALL GCHAR(A,B+1,G) -'~ 1650 IF G=104 THEN 1740 -'~ 1660 IF G=42 THEN 1760 -'~ 1670 B=B+1 -'~ 1680 GOTO 1450 -G = peek(scrAddrCache(A) + B + 1) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -B = B + 1 -Goto line1450 - -line1690: -'~ 1690 CALL GCHAR(A-1,B,G) -'~ 1700 IF G=104 THEN 1740 -'~ 1710 IF G=42 THEN 1760 -'~ 1720 A=A-1 -'~ 1730 GOTO 1450 -G = peek(scrAddrCache(A - 1) + B) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -A = A - 1 -Goto line1450 - -line1740: -'~ 1740 CALL SOUND(-100,-5,4) -'~ 1750 GOTO 670 -poke 53280, 2 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' red, green -goto line670 -'**************************************************************************** - -line1760: -'~ 1760 CALL SOUND(200,-6,4) -'~ 1770 FOR I=1 TO 3 -'~ 1780 CALL SCREEN(16) -'~ 1790 CALL SCREEN(9) -'~ 1800 CALL SCREEN(8) -'~ 1810 NEXT I -'~ 1820 PRINT "GOT CAUGHT!!!" -'~ 1830 PRINT "TRY AGAIN? (Y/N)"; -'~ 1840 CALL KEY(0,K,S) -'~ 1850 IF K=89 THEN 300 -'~ 1860 IF K<>78 THEN 1840 -'~ 1870 CALL CLEAR -'~ 1880 END -Print "beccato!!!" -poke 198, 0 : wait 198,1 : poke 198, 0 -goto line300 - -LOC_charset_addr: -incbin "charset-debug.chr" +Dim scrAddrCache(25) as WORD @loc_scrAddrCache ' 0 -> 24 +loc_scrAddrCache: +DATA AS WORD 1024, 1064, 1104, 1144, 1184, 1224, 1264, 1304, 1344, 1384 +DATA AS WORD 1424, 1464, 1504, 1544, 1584, 1624, 1664, 1704, 1744, 1784 +DATA AS WORD 1824, 1864, 1904, 1944, 1984 + +Dim bTrailChar as BYTE : bTrailChar = 128 + +poke 53280, 13 : poke 53281, 13 +'~ 100 CALL CLEAR +sys $E544 FAST ' clear screen +poke 646, 0 'black chars +locate 0, 24 +'~ 110 PRINT TAB(6);"**************" +'~ 120 PRINT TAB(6);"* SUPERCHASE *" +'~ 130 PRINT TAB(6);"**************" +'~ 140 CALL CHAR(96,"00183C7E7E3C18") --- TREASURE! (rombo) +'~ 150 CALL COLOR(9,14,12) --- 96-103 -> Magenta/ Light Yellow +'~ 160 PRINT : : : :"USE THE ARROW KEYS TO MOVE." +'~ 170 PRINT : :"TRY TO GATHER AS MANY" +'~ 180 PRINT :"TREASURES (`) IN THE MAZE" +'~ 190 PRINT :"AS POSSIBLE BEFORE THE" +'~ 200 PRINT :"ENEMY CATCHES YOU!" +'~ 210 CALL COLOR(10,5,5) --- 104-111 -> Dark Blue/ Dark Blue +'~ 220 CALL COLOR(11,12,12) --- 112-119 -> Light Yellow/ Light Yellow +'~ 230 CALL CHAR(120,"383810FE10387CFE") --- HERO! +'~ 240 CALL COLOR(12,7,12) --- 120-127 -> Dark Red/ Light Yellow +'~ 250 CALL CHAR(128,"383810FE10387CFE") --- Ghost/shadow +'~ 260 CALL COLOR(13,16,12) --- 128-135 -> White/ Light Yellow +'~ 270 PRINT : : :"PRESS ANY KEY TO BEGIN"; +'~ 280 CALL KEY(0,K,S) +'~ 290 IF S<1 THEN 280 + +dim charset_array(2048) as BYTE @LOC_charset_addr +memcpy @charset_array, $3800, 2048 +poke $D018, 31 'final character location: $3800 + +PRINT " **************" +PRINT " * superchase *" +PRINT " **************" +PRINT "{13}{13}{13}{13} use the arrow keys to move." +PRINT "{13}{13} try to gather as many" +PRINT "{13} treasures ({160}) in the maze" +PRINT "{13} as possible before the" +PRINT "{13} enemy catches you!" + +PRINT "{13}{13}{13} press any key to begin"; + +poke 198, 0 : wait 198, 1 : poke 198, 0 + +line300: +'~ 300 SC=0 +'~ 310 LV=1 +SC = 0 +LV = 1 +Dim FL as BYTE : FL = 0 +Dim CX as INT : CX = 0 +Dim CY as INT : CY = 0 +Dim CCX as INT : CCX = 0 +Dim CCY as INT : CCY = 0 +Dim G as BYTE : G = 0 + +line320: +'~ 320 CALL CLEAR +sys $E544 FAST ' clear screen +'~ 330 CALL SCREEN(4) --- light green +poke 53280, 5 ' green +poke 53281, 7 'yellow + + +'~ 340 FOR X=3 TO 21 +'~ 350 CALL HCHAR(X,3,104,27) +'~ 360 NEXT X +memset $0400, 1000, 104 'reverse space +memset $D800, 1000, 6 'blue + +'~ 370 RANDOMIZE +Randomize TI() + +'~ 380 FOR I=1 TO 65 +'~ 390 X=2*(INT(9*RND))+4 +'~ 400 Y=2*(INT(11*RND))+4 +'~ 410 CALL HCHAR(X,Y,112,5) +'~ 420 NEXT I +For I AS BYTE = 1 to 65 + X = 2 * (CBYTE(9*RND())) + 4 + Y = 2 * (CBYTE(11*RND())) + 4 + TEXTAT Y, X, "{176}{176}{176}{176}{176}" +Next I + +'~ 430 FOR I=1 TO 60 +'~ 440 X=2*(INT(7*RND))+4 +'~ 450 Y=2*(INT(13*RND))+4 +'~ 460 CALL VCHAR(X,Y,112,5) +'~ 470 NEXT I +For I AS BYTE = 1 to 60 + X = 2 * (CBYTE(7*RND())) + 4 + Y = 2 * (CBYTE(13*RND())) + 4 + CHARAT Y, X , 112 + CHARAT Y, X + 1, 112 + CHARAT Y, X + 2, 112 + CHARAT Y, X + 3, 112 + CHARAT Y, X + 4, 112 +Next I + +'~ 480 CALL HCHAR(4,4,112,5) +'~ 490 CALL VCHAR(4,4,112,5) +TEXTAT 4, 4, "{176}{176}{176}{176}{176}" +CHARAT 4, 5, 112 +CHARAT 4, 6, 112 +CHARAT 4, 7, 112 +CHARAT 4, 8, 112 + +'~ 500 FOR I=1 TO 80 +'~ 510 X=2*(INT(9*RND))+4 +'~ 520 Y=2*(INT(13*RND))+4 +'~ 530 CALL HCHAR(X,Y,96) +'~ 540 NEXT I +For I AS BYTE = 1 to 80 + X = 2 * (CBYTE(9*RND())) + 4 + Y = 2 * (CBYTE(13*RND())) + 4 + CHARAT Y, X, 96, 4 ' 4 = magenta +Next I + +'~ 550 FOR I=1 TO 6 +'~ 560 CALL HCHAR(23,2+I,ASC(SEG$("SCORE:",I,1))) +'~ 570 NEXT I +TEXTAT 3, 23, "score:", 0 'black + +'**************************************************************************** + +'~ 580 CALL SOUND(100,1497,2) +'~ 590 T=0 +T = 0 + +'~ 600 IF LV<8 THEN 620 +'~ 610 LV=7 +IF LV = 8 Then LV = 7 + +'~ 620 A=4 +'~ 630 B=4 +'~ 640 C=4 +'~ 650 D=4 +'~ 660 PG=112 +A = 4 +B = 4 +C = 4 +D = 4 +PG = 112 + +'**************************************************************************** + +line670: +'~ 670 CALL HCHAR(A,B,120) +CHARAT B, A, 120, 2 ' 2 = Red + +'~ 680 IF T<8-LV THEN 1410 +IF T < 8-LV THEN goto line1410 + +'~ 690 IF FL=0 THEN 740 +IF FL = 0 THEN goto line740 + +'~ 700 IF FL/2=INT(FL/2)THEN 1140 +IF (FL AND 1) = 0 THEN Goto line1140 + +'~ 710 CCX=CX +'~ 720 CCY=CY +'~ 730 FL=0 +CCX = CX +CCY = CY +FL = 0 +textat 0, 0, "-fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 12 : poke 198,0 : wait 198, 1 : poke 198,0 + +line740: 'PRIMO CHECK ------------------------------------------------- +'~ 740 CALL GCHAR(C+1,D,GC) +'~ 750 IF GC=120 THEN 1760 +'~ 760 IF GC=104 THEN 810 +'~ 770 IF GC<>128 THEN 810 +'~ 780 CX=1 +'~ 790 CY=0 +'~ 800 GOTO 1340 +GC = peek(scrAddrCache(C + 1) + D) +IF GC = 120 THEN goto line1760 +IF GC = 104 THEN goto line810 +IF GC <> 128 THEN goto line810 +CX = 1 +CY = 0 +GOTO line1340 + +line810: +'~ 810 CALL GCHAR(C,D+1,GC) +'~ 820 IF GC=120 THEN 1760 +'~ 830 IF GC=104 THEN 880 +'~ 840 IF GC<>128 THEN 880 +'~ 850 CX=0 +'~ 860 CY=1 +'~ 870 GOTO 1340 +GC = peek(scrAddrCache(C) + D + 1) +IF GC = 120 THEN goto line1760 +IF GC = 104 THEN goto line880 +IF GC <> 128 THEN goto line880 +CX = 0 +CY = 1 +GOTO line1340 + +line880: +'~ 880 CALL GCHAR(C-1,D,GC) +'~ 890 IF GC=120 THEN 1760 +'~ 900 IF GC=104 THEN 950 +'~ 910 IF GC<>128 THEN 950 +'~ 920 CX=-1 +'~ 930 CY=0 +'~ 940 GOTO 1340 +GC = peek(scrAddrCache(C - 1) + D) +IF GC = 120 THEN goto line1760 +IF GC = 104 THEN goto line950 +IF GC <> 128 THEN goto line950 +CX = -1 +CY = 0 +GOTO line1340 + +line950: +'~ 950 CALL GCHAR(C,D-1,GC) +'~ 960 IF GC=120 THEN 1760 +'~ 970 IF GC=128 THEN 1320 +'~ 980 IF GC=112 THEN 1320 +GC = peek(scrAddrCache(C) + D - 1) +IF GC = 120 THEN goto line1760 +IF GC = 128 THEN goto line1320 +IF GC = 112 THEN goto line1320 + +'~ 990 FL=FL+1 +'~ 1000 IF FL/2=INT(FL/2)THEN 1040 +FL = FL + 1 +textat 0, 0, "fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 2 : poke 198,0 : wait 198, 1 : poke 198,0 +IF (FL AND 1) = 0 then goto line1040 + +'~ 1010 CX=CCX +'~ 1020 CY=CCY +'~ 1030 GOTO 1160 +CX = CCX +CY = CCY +GOTO line1160 + +line1040: '-----------CHECK con SGN! +'~ 1040 CX=SGN(A-C) +'~ 1050 CY=0 +'~ 1060 IF CX<>0 THEN 1080 +'~ 1070 CY=SGN(D-B) +textat 0, 0, "SGN! fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 11 : poke 198,0 : wait 198, 1 : poke 198,0 +CX = SGN(A - C) +CY = 0 +IF CX <> 0 THEN goto line1080 +CY = SGN(D - B) + +line1080: +'~ 1080 CALL GCHAR(C+CX,D+CY,GC) +'~ 1090 IF GC=104 THEN 1110 +'~ 1100 IF (GC=96)+(GC=112)THEN 1340 +'~ 1110 CX=-1 +'~ 1120 CY=0 +'~ 1130 GOTO 1160 +GC = peek(scrAddrCache(C + CX) + D + CY) +IF GC = 104 THEN goto line1110 +IF (GC = 96) OR (GC = 112) THEN goto line1340 + +line1110: +CX = -1 +CY = 0 +GOTO line1160 + +line1140: +'~ 1140 FL=FL+1 +'~ 1150 IF FL>1 THEN 1300 +FL = FL + 1 +textat 0, 0, "!fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 4 : poke 198,0 : wait 198, 1 : poke 198,0 +IF FL > 1 THEN goto line1300 + +line1160: '---------------SECONDO CHECK +'~ 1160 CALL GCHAR(C+CX,D+CY,GC) +'~ 1170 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 +'~ 1180 CX=1 +'~ 1190 CY=0 +'~ 1200 CALL GCHAR(C+CX,D,GC) +'~ 1210 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 +'~ 1220 CX=-1 +'~ 1230 CALL GCHAR(C+CX,D,GC) +'~ 1240 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 +'~ 1250 CX=0 +'~ 1260 CY=-1 +'~ 1270 CALL GCHAR(C,D+CY,GC) +'~ 1280 IF (GC=112)+(GC=96)+(GC=128)THEN 1340 +'~ 1290 CY=1 +textat 0, 0, "!fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 10 : poke 198,0 : wait 198, 1 : poke 198,0 +GC = peek(scrAddrCache(C + CX) + D + CY) +IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 + +CX = 1 +CY = 0 +GC = peek(scrAddrCache(C + CX) + D) +IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 + +CX = -1 +GC = peek(scrAddrCache(C + CX) + D) +IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 + +CX = 0 +CY = -1 +GC = peek(scrAddrCache(C) + D + CY) +IF (GC = 112) OR (GC = 96) OR (GC = 128) THEN goto line1340 + +CY = 1 + +line1300: +'~ 1300 CALL GCHAR(C+CX,D+CY,GC) +'~ 1310 IF GC=104 THEN 1390 ELSE 1340 +GC = peek(scrAddrCache(C + CX) + D + CY) +IF GC = 104 THEN goto line1390 ELSE goto line1340 + +line1320: +'~ 1320 CX=0 +'~ 1330 CY=-1 +CX = 0 +CY = -1 + +line1340: +'~ 1340 IF PG=96 THEN 1360 +'~ 1350 PG=112+FL +IF PG = 96 THEN goto line1360 +PG = 112 + FL + +line1360: +'~ 1360 CALL HCHAR(C,D,PG) +'~ 1370 C=C+CX +'~ 1380 D=D+CY +CHARAT D, C, PG, 4 '4 = magenta +C = C + CX +D = D + CY + +line1390: +'~ 1390 CALL HCHAR(C,D,42) +'~ 1400 PG=GC +textat 0, 0, "fl " + str$(FL) + " ccx " + str$(CCX) + " ccy " + str$(CCY) + " cx " + str$(cx) + " cy " + str$(cy) + " ", 0 +CHARAT D, C, 42, 0 ' 0 = black +PG = GC +'**************************************************************************** + +line1410: +'~ 1410 CALL KEY(1,K1,S) +'~ 1420 IF (K1<0)+(K1>5)THEN 1410 +'~ 1430 CALL HCHAR(A,B,128) +'~ 1440 ON K1+1 GOTO 1540,1410,1590,1640,1410,1690 + +K1 = peek( $DC00) : K1 = 127 - K1 +if K1 = 0 then goto line1410 + +IF K1 = 16 then 'fire + if bTrailChar = 128 then bTrailChar = 112 else bTrailChar = 128 +end if + +IF K1 > 8 then goto line1410 +do +loop until peek ( $DC00) = 127 + +CHARAT B, A, bTrailChar, 1 ' 1 = White +on K1 goto line1410, line1690, line1540, line1410, line1590, line1410, line1410, line1410, line1640, line1410, line1410, line1410, line1410, line1410, line1410, line1410, line1410 + +'sopra 1 +'sotto 2 +'sinistra 4 +'sinistrasopra 5 +'sinistrasotto 6 +'destra 8 +'destrasopra 9 +'destrasotto 10 +'fuoco 16 + +line1450: +'~ 1450 IF G<>96 THEN 670 +'~ 1460 CALL SOUND(100,-1,4) +'~ 1470 SC=SC+1 +'~ 1480 SC$=STR$(SC) +'~ 1490 FOR I=1 TO LEN(SC$) +'~ 1500 CALL HCHAR(23,10+I,ASC(SEG$(SC$,I,1))) +'~ 1510 NEXT I +'~ 1520 T=T+1 +'~ 1530 IF T<45 THEN 670 ELSE 320 + ALZA LV! +'wait $d011, 128: wait $d011, 128, 128: wait $d011, 128: wait $d011, 128, 128 +IF G <> 96 then goto line670 +poke 53280, 13 : wait $d011, 128 : wait $d011, 128, 128 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' light green, green +SC = SC + 1 +textat 10, 23, str$(SC), 0 +T = T + 1 +IF T < 45 then goto line670 else Goto line320 +'~ IF T < 45 then + '~ goto line670 +'~ Else + '~ LV = LV + 1 + '~ Goto line320 +'~ End If + +line1540: +'~ 1540 CALL GCHAR(A+1,B,G) +'~ 1550 IF G=104 THEN 1740 +'~ 1560 IF G=42 THEN 1760 +'~ 1570 A=A+1 +'~ 1580 GOTO 1450 +G = peek(scrAddrCache(A + 1) + B) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +A = A + 1 +Goto line1450 + +line1590: +'~ 1590 CALL GCHAR(A,B-1,G) +'~ 1600 IF G=104 THEN 1740 +'~ 1610 IF G=42 THEN 1760 +'~ 1620 B=B-1 +'~ 1630 GOTO 1450 +G = peek(scrAddrCache(A) + B - 1) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +B = B - 1 +Goto line1450 + +line1640: +'~ 1640 CALL GCHAR(A,B+1,G) +'~ 1650 IF G=104 THEN 1740 +'~ 1660 IF G=42 THEN 1760 +'~ 1670 B=B+1 +'~ 1680 GOTO 1450 +G = peek(scrAddrCache(A) + B + 1) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +B = B + 1 +Goto line1450 + +line1690: +'~ 1690 CALL GCHAR(A-1,B,G) +'~ 1700 IF G=104 THEN 1740 +'~ 1710 IF G=42 THEN 1760 +'~ 1720 A=A-1 +'~ 1730 GOTO 1450 +G = peek(scrAddrCache(A - 1) + B) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +A = A - 1 +Goto line1450 + +line1740: +'~ 1740 CALL SOUND(-100,-5,4) +'~ 1750 GOTO 670 +poke 53280, 2 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' red, green +goto line670 +'**************************************************************************** + +line1760: +'~ 1760 CALL SOUND(200,-6,4) +'~ 1770 FOR I=1 TO 3 +'~ 1780 CALL SCREEN(16) +'~ 1790 CALL SCREEN(9) +'~ 1800 CALL SCREEN(8) +'~ 1810 NEXT I +'~ 1820 PRINT "GOT CAUGHT!!!" +'~ 1830 PRINT "TRY AGAIN? (Y/N)"; +'~ 1840 CALL KEY(0,K,S) +'~ 1850 IF K=89 THEN 300 +'~ 1860 IF K<>78 THEN 1840 +'~ 1870 CALL CLEAR +'~ 1880 END +Print "beccato!!!" +poke 198, 0 : wait 198,1 : poke 198, 0 +goto line300 + +LOC_charset_addr: +incbin "charset-debug.chr"