From 2345e180777e7a4602ba75f86d688d3dc173854a Mon Sep 17 00:00:00 2001 From: JJFlash Date: Fri, 2 Sep 2022 11:04:30 +0200 Subject: [PATCH] Forgot the non-debug version... --- ...se-ported.xcbbas => superchase-ported.bas} | 618 +++++++++--------- 1 file changed, 309 insertions(+), 309 deletions(-) rename initial_ported_version/{superchase-ported.xcbbas => superchase-ported.bas} (95%) diff --git a/initial_ported_version/superchase-ported.xcbbas b/initial_ported_version/superchase-ported.bas similarity index 95% rename from initial_ported_version/superchase-ported.xcbbas rename to initial_ported_version/superchase-ported.bas index 5d74b72..e791720 100644 --- a/initial_ported_version/superchase-ported.xcbbas +++ b/initial_ported_version/superchase-ported.bas @@ -1,309 +1,309 @@ -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 - -poke 53280, 13 : poke 53281, 13 -sys $E544 FAST ' clear screen -poke 646, 0 'black chars -locate 0, 24 - -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: -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 -Dim tryAgain$ as STRING * 1 - -line320: -sys $E544 FAST ' clear screen -poke 53280, 5 ' green -poke 53281, 7 'yellow - -memset $0400, 1000, 104 'reverse space -memset $D800, 1000, 6 'blue - -Randomize TI() - -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 - -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 - -TEXTAT 4, 4, "{176}{176}{176}{176}{176}" -CHARAT 4, 5, 112 -CHARAT 4, 6, 112 -CHARAT 4, 7, 112 -CHARAT 4, 8, 112 - -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 - -TEXTAT 3, 23, "score:", 0 'black - -'**************************************************************************** - -T = 0 ' treasures collected - -IF LV = 8 Then LV = 7 - -A = 4 -B = 4 -C = 4 -D = 4 -PG = 112 - -'**************************************************************************** - -line670: -CHARAT B, A, 120, 2 ' 2 = Red - -IF T < 8-LV THEN goto line1410 - -IF FL = 0 THEN goto line740 - -IF (FL AND 1) = 0 THEN Goto line1140 - -CCX = CX -CCY = CY -FL = 0 - -line740: '"PRIVILEGED" CHECK ------------------------------------------------- -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: -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: -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: -GC = peek(scrAddrCache(C) + D - 1) -IF GC = 120 THEN goto line1760 -IF GC = 128 THEN goto line1320 -IF GC = 112 THEN goto line1320 - -FL = FL + 1 -IF (FL AND 1) = 0 then goto line1040 - -CX = CCX -CY = CCY -GOTO line1160 - -line1040: '-----------CHECK USING SGN - ***NEVER EXECUTES!!*** -CX = SGN(A - C) -CY = 0 -IF CX <> 0 THEN goto line1080 -CY = SGN(D - B) - -line1080: -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: -FL = FL + 1 -IF FL > 1 THEN goto line1300 - -line1160: '---------------"RELAXED" CHECK -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: -GC = peek(scrAddrCache(C + CX) + D + CY) -IF GC = 104 THEN goto line1390 ELSE goto line1340 - -line1320: -CX = 0 -CY = -1 - -line1340: -IF PG = 96 THEN goto line1360 -PG = 112 + FL - -line1360: -CHARAT D, C, PG, 4 '4 = magenta -C = C + CX -D = D + CY - -line1390: -CHARAT D, C, 42, 0 ' 0 = black -PG = GC -'**************************************************************************** - -line1410: -K1 = peek( $DC00) : K1 = 127 - K1 -if K1 = 0 OR K1 > 8 then goto line1410 - -'Wait for the stick to be released, otherwise the game runs too fast -do -loop until peek ( $DC00) = 127 - -CHARAT B, A, 128, 1 ' 1 = White -'1: up - 2: down - 4: left - 8: right -on K1 goto line1410, line1690, line1540, line1410, line1590, line1410, line1410, line1410, line1640 - -line1450: -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 ' treasures collected -IF T < 45 then goto line670 else LV = LV + 1 : Goto line320 - -line1540: -G = peek(scrAddrCache(A + 1) + B) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -A = A + 1 -Goto line1450 - -line1590: -G = peek(scrAddrCache(A) + B - 1) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -B = B - 1 -Goto line1450 - -line1640: -G = peek(scrAddrCache(A) + B + 1) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -B = B + 1 -Goto line1450 - -line1690: -G = peek(scrAddrCache(A - 1) + B) -IF G = 104 then goto line1740 -IF G = 42 then goto line1760 -A = A - 1 -Goto line1450 - -line1740: -poke 53280, 2 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' red, green -goto line670 -'**************************************************************************** - -line1760: -FOR I = 1 to 3 - poke 53280, 2 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - poke 53280, 4 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 -next I -FOR I = 1 to 3 - poke 53280, 1 : poke 53281, 1 'white - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - - poke 53280, 10 : poke 53281, 10 'light red - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - - poke 53280, 3 : poke 53281, 3 'cyan - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 - wait $d011, 128 : wait $d011, 128, 128 -next I - -locate 0, 24 -PRINT "got caught!!!" -PRINT "try again? (y/n)"; - -line1840: -poke 198, 0 : wait 198,1 -get tryAgain$ -if tryAgain$ = "y" then goto line300 -if tryAgain$ <> "n" then goto line1840 - -poke 53280, 14 : poke 53281, 6 -memset $d800, 1000, 14 -poke 646, 14 -poke $D018, 21 'original character location -memcpy $E3A2, $73, $17 'CHRGET bug workaround - -END - -LOC_charset_addr: -incbin "charset.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 + +poke 53280, 13 : poke 53281, 13 +sys $E544 FAST ' clear screen +poke 646, 0 'black chars +locate 0, 24 + +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: +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 +Dim tryAgain$ as STRING * 1 + +line320: +sys $E544 FAST ' clear screen +poke 53280, 5 ' green +poke 53281, 7 'yellow + +memset $0400, 1000, 104 'reverse space +memset $D800, 1000, 6 'blue + +Randomize TI() + +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 + +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 + +TEXTAT 4, 4, "{176}{176}{176}{176}{176}" +CHARAT 4, 5, 112 +CHARAT 4, 6, 112 +CHARAT 4, 7, 112 +CHARAT 4, 8, 112 + +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 + +TEXTAT 3, 23, "score:", 0 'black + +'**************************************************************************** + +T = 0 ' treasures collected + +IF LV = 8 Then LV = 7 + +A = 4 +B = 4 +C = 4 +D = 4 +PG = 112 + +'**************************************************************************** + +line670: +CHARAT B, A, 120, 2 ' 2 = Red + +IF T < 8-LV THEN goto line1410 + +IF FL = 0 THEN goto line740 + +IF (FL AND 1) = 0 THEN Goto line1140 + +CCX = CX +CCY = CY +FL = 0 + +line740: '"PRIVILEGED" CHECK ------------------------------------------------- +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: +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: +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: +GC = peek(scrAddrCache(C) + D - 1) +IF GC = 120 THEN goto line1760 +IF GC = 128 THEN goto line1320 +IF GC = 112 THEN goto line1320 + +FL = FL + 1 +IF (FL AND 1) = 0 then goto line1040 + +CX = CCX +CY = CCY +GOTO line1160 + +line1040: '-----------CHECK USING SGN - ***NEVER EXECUTES!!*** +CX = SGN(A - C) +CY = 0 +IF CX <> 0 THEN goto line1080 +CY = SGN(D - B) + +line1080: +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: +FL = FL + 1 +IF FL > 1 THEN goto line1300 + +line1160: '---------------"RELAXED" CHECK +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: +GC = peek(scrAddrCache(C + CX) + D + CY) +IF GC = 104 THEN goto line1390 ELSE goto line1340 + +line1320: +CX = 0 +CY = -1 + +line1340: +IF PG = 96 THEN goto line1360 +PG = 112 + FL + +line1360: +CHARAT D, C, PG, 4 '4 = magenta +C = C + CX +D = D + CY + +line1390: +CHARAT D, C, 42, 0 ' 0 = black +PG = GC +'**************************************************************************** + +line1410: +K1 = peek( $DC00) : K1 = 127 - K1 +if K1 = 0 OR K1 > 8 then goto line1410 + +'Wait for the stick to be released, otherwise the game runs too fast +do +loop until peek ( $DC00) = 127 + +CHARAT B, A, 128, 1 ' 1 = White +'1: up - 2: down - 4: left - 8: right +on K1 goto line1410, line1690, line1540, line1410, line1590, line1410, line1410, line1410, line1640 + +line1450: +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 ' treasures collected +IF T < 45 then goto line670 else LV = LV + 1 : Goto line320 + +line1540: +G = peek(scrAddrCache(A + 1) + B) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +A = A + 1 +Goto line1450 + +line1590: +G = peek(scrAddrCache(A) + B - 1) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +B = B - 1 +Goto line1450 + +line1640: +G = peek(scrAddrCache(A) + B + 1) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +B = B + 1 +Goto line1450 + +line1690: +G = peek(scrAddrCache(A - 1) + B) +IF G = 104 then goto line1740 +IF G = 42 then goto line1760 +A = A - 1 +Goto line1450 + +line1740: +poke 53280, 2 : wait $d011, 128 : wait $d011, 128, 128 : poke 53280, 5 ' red, green +goto line670 +'**************************************************************************** + +line1760: +FOR I = 1 to 3 + poke 53280, 2 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + poke 53280, 4 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 +next I +FOR I = 1 to 3 + poke 53280, 1 : poke 53281, 1 'white + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + + poke 53280, 10 : poke 53281, 10 'light red + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + + poke 53280, 3 : poke 53281, 3 'cyan + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 + wait $d011, 128 : wait $d011, 128, 128 +next I + +locate 0, 24 +PRINT "got caught!!!" +PRINT "try again? (y/n)"; + +line1840: +poke 198, 0 : wait 198,1 +get tryAgain$ +if tryAgain$ = "y" then goto line300 +if tryAgain$ <> "n" then goto line1840 + +poke 53280, 14 : poke 53281, 6 +memset $d800, 1000, 14 +poke 646, 14 +poke $D018, 21 'original character location +memcpy $E3A2, $73, $17 'CHRGET bug workaround + +END + +LOC_charset_addr: +incbin "charset.chr"