Renamed extension from xcbbas to bas

This commit is contained in:
JJFlash 2022-09-02 11:02:21 +02:00
parent 4e3214ed8f
commit bda5ccd3fe
1 changed files with 476 additions and 476 deletions

View File

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