DEFINT A-Z\r
DIM SHARED graphicsMode\r
DIM SHARED asciiLevelData(1 TO 20) AS STRING * 31\r
-DIM SHARED FirstCompanionY%, FirstCompanionX%, SecondCompanionY%, SecondCompanionX%\r
+DIM SHARED Companion1PositionY%, Companion1PositionX%, Companion2PositionY%, Companion2PositionX%\r
DIM SHARED LivesRemaining%, CoinsCollected%\r
DIM SHARED DoorEntryX%, DoorEntryY%, DoorExitX%, DoorExitY%\r
DIM SHARED CurrentLevelNumber%\r
IF b > 0 THEN IF sipp = 3 THEN PUT (a, b), sipp3, OR\r
\r
' Draw first companion hedgehog\r
-GET (FirstCompanionX%, FirstCompanionY%)-(FirstCompanionX% + 10, FirstCompanionY% + 10), siil1\r
-PUT (FirstCompanionX%, FirstCompanionY%), siil, OR\r
+GET (Companion1PositionX%, Companion1PositionY%)-(Companion1PositionX% + 10, Companion1PositionY% + 10), siil1\r
+PUT (Companion1PositionX%, Companion1PositionY%), siil, OR\r
\r
' Draw second companion hedgehog\r
-GET (SecondCompanionX%, SecondCompanionY%)-(SecondCompanionX% + 10, SecondCompanionY% + 10), siil2\r
-PUT (SecondCompanionX%, SecondCompanionY%), siil, OR\r
+GET (Companion2PositionX%, Companion2PositionY%)-(Companion2PositionX% + 10, Companion2PositionY% + 10), siil2\r
+PUT (Companion2PositionX%, Companion2PositionY%), siil, OR\r
\r
' Create short delay using sound command (workaround for no built-in delay)\r
SOUND 0, .8\r
IF ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "a" THEN TerrainGrid((a + 30) \ 20, (b + 38) \ 20) = "": ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "": kustuta2 = 1\r
\r
' First companion hedgehog terrain collision checks\r
-IF TerrainGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 25) \ 20) = "z" THEN siiall = -1\r
-IF TerrainGrid((FirstCompanionX% + 30) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = -1\r
-IF TerrainGrid((FirstCompanionX% + 20) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = 1\r
+IF TerrainGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 25) \ 20) = "z" THEN siiall = -1\r
+IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = -1\r
+IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = 1\r
\r
' Second companion hedgehog terrain collision checks\r
-IF TerrainGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
-IF TerrainGrid((SecondCompanionX% + 30) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = -1\r
-IF TerrainGrid((SecondCompanionX% + 20) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = 1\r
+IF TerrainGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
+IF TerrainGrid((Companion2PositionX% + 30) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN siie1 = -1\r
+IF TerrainGrid((Companion2PositionX% + 20) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN siie1 = 1\r
\r
' Screen boundary checks for companions\r
-IF FirstCompanionX% > 300 THEN siie = -1\r
-IF FirstCompanionX% < 3 THEN siie = 1\r
-IF SecondCompanionX% > 300 THEN siie1 = -1\r
-IF SecondCompanionX% < 3 THEN siie1 = 1\r
+IF Companion1PositionX% > 300 THEN siie = -1\r
+IF Companion1PositionX% < 3 THEN siie = 1\r
+IF Companion2PositionX% > 300 THEN siie1 = -1\r
+IF Companion2PositionX% < 3 THEN siie1 = 1\r
\r
' Restore previous companion positions\r
-PUT (SecondCompanionX%, SecondCompanionY%), siil2, PSET\r
-PUT (FirstCompanionX%, FirstCompanionY%), siil1, PSET\r
+PUT (Companion2PositionX%, Companion2PositionY%), siil2, PSET\r
+PUT (Companion1PositionX%, Companion1PositionY%), siil1, PSET\r
\r
' Restore previous player position\r
IF b > 0 THEN PUT (a, b), mar1, PSET\r
\r
IF makk = 1 THEN makk = 0: a = a - 20\r
\r
-ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = ""\r
+ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = ""\r
\r
' Update companion positions\r
-FirstCompanionX% = FirstCompanionX% + siie\r
-FirstCompanionY% = FirstCompanionY% + siiall\r
-SecondCompanionX% = SecondCompanionX% + siie1\r
-SecondCompanionY% = SecondCompanionY% + siiall1\r
+Companion1PositionX% = Companion1PositionX% + siie\r
+Companion1PositionY% = Companion1PositionY% + siiall\r
+Companion2PositionX% = Companion2PositionX% + siie1\r
+Companion2PositionY% = Companion2PositionY% + siiall1\r
\r
' Mark new companion positions in object grid\r
-ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "q": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = "q"\r
+ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "q": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = "q"\r
\r
' Apply gravity to companions (max downward velocity = 2)\r
siiall = siiall + 1: IF siiall > 2 THEN siiall = 2\r
IF b > 0 THEN IF sipp = 3 THEN PUT (a \ 2, b \ 2), sippm3, OR\r
\r
' Draw companions in scaled down mode\r
-GET (FirstCompanionX% \ 2, FirstCompanionY% \ 2)-((FirstCompanionX% + 10) \ 2, (FirstCompanionY% + 10) \ 2), siilm1\r
-PUT (FirstCompanionX% \ 2, FirstCompanionY% \ 2), siilm, OR\r
-GET (SecondCompanionX% \ 2, SecondCompanionY% \ 2)-((siia1 + 10) \ 2, (SecondCompanionY% + 10) \ 2), siilm2\r
-PUT (SecondCompanionX% \ 2, SecondCompanionY% \ 2), siilm, OR\r
+GET (Companion1PositionX% \ 2, Companion1PositionY% \ 2)-((Companion1PositionX% + 10) \ 2, (Companion1PositionY% + 10) \ 2), siilm1\r
+PUT (Companion1PositionX% \ 2, Companion1PositionY% \ 2), siilm, OR\r
+GET (Companion2PositionX% \ 2, Companion2PositionY% \ 2)-((siia1 + 10) \ 2, (Companion2PositionY% + 10) \ 2), siilm2\r
+PUT (Companion2PositionX% \ 2, Companion2PositionY% \ 2), siilm, OR\r
\r
' Small delay to limit framerate\r
SOUND 0, .8\r
IF ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "a" THEN TerrainGrid((a + 30) \ 20, (b + 38) \ 20) = "": ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "": kustuta2 = 1\r
\r
' First companion hedgehog terrain collision checks\r
-IF TerrainGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 25) \ 20) = "z" THEN siiall = -1\r
-IF TerrainGrid((FirstCompanionX% + 30) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = -1\r
-IF TerrainGrid((FirstCompanionX% + 20) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = 1\r
+IF TerrainGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 25) \ 20) = "z" THEN siiall = -1\r
+IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = -1\r
+IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = 1\r
\r
' Second companion hedgehog terrain collision checks\r
-IF TerrainGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
-IF TerrainGrid((SecondCompanionX% + 30) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = -1\r
-IF TerrainGrid((SecondCompanionX% + 20) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = 1\r
+IF TerrainGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
+IF TerrainGrid((Companion2PositionX% + 30) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN siie1 = -1\r
+IF TerrainGrid((Companion2PositionX% + 20) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN siie1 = 1\r
\r
' Screen boundary checks for companions\r
-IF FirstCompanionX% > 600 THEN siie = -1\r
-IF FirstCompanionX% < 3 THEN siie = 1\r
-IF SecondCompanionX% > 600 THEN siie1 = -1\r
-IF SecondCompanionX% < 3 THEN siie1 = 1\r
+IF Companion1PositionX% > 600 THEN siie = -1\r
+IF Companion1PositionX% < 3 THEN siie = 1\r
+IF Companion2PositionX% > 600 THEN siie1 = -1\r
+IF Companion2PositionX% < 3 THEN siie1 = 1\r
\r
' Restore previous companion positions\r
-PUT (SecondCompanionX% \ 2, SecondCompanionY% \ 2), siilm2, PSET\r
-PUT (FirstCompanionX% \ 2, FirstCompanionY% \ 2), siilm1, PSET\r
+PUT (Companion2PositionX% \ 2, Companion2PositionY% \ 2), siilm2, PSET\r
+PUT (Companion1PositionX% \ 2, Companion1PositionY% \ 2), siilm1, PSET\r
\r
' Restore previous player position\r
IF b > 0 THEN PUT (a \ 2, b \ 2), marm1, PSET\r
\r
IF makk = 1 THEN makk = 0: a = a - 20\r
\r
-ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = ""\r
+ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = ""\r
\r
' Update companion positions\r
-FirstCompanionX% = FirstCompanionX% + siie\r
-FirstCompanionY% = FirstCompanionY% + siiall\r
-SecondCompanionX% = SecondCompanionX% + siie1\r
-SecondCompanionY% = SecondCompanionY% + siiall1\r
+Companion1PositionX% = Companion1PositionX% + siie\r
+Companion1PositionY% = Companion1PositionY% + siiall\r
+Companion2PositionX% = Companion2PositionX% + siie1\r
+Companion2PositionY% = Companion2PositionY% + siiall1\r
\r
' Mark new companion positions in object grid\r
-ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "q": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = "q"\r
+ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "q": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = "q"\r
siiall = siiall + 1: IF siiall > 2 THEN siiall = 2\r
siiall1 = siiall1 + 1: IF siiall1 > 2 THEN siiall1 = 2\r
\r
\r
SUB LoadCurrentLevel (y)\r
125\r
-FirstCompanionX% = 0\r
-FirstCompanionY% = 0\r
+Companion1PositionX% = 0\r
+Companion1PositionY% = 0\r
aiia1 = 0\r
-SecondCompanionY% = 0\r
+Companion2PositionY% = 0\r
FOR a1 = 1 TO 32\r
FOR b1 = 1 TO 20\r
TerrainGrid(a1, b1) = ""\r
IF q$ = "o" THEN PUT (D * 20, e * 20), kast, PSET: TerrainGrid(D + 1, e + 1) = "z": ObjectGrid(D + 1, e + 1) = "o"\r
IF q$ = "." THEN PUT (D * 20, e * 20), taht, PSET\r
IF q$ = "-" THEN PUT (D * 20, e * 20), pilv, PSET\r
-IF q$ = "x" THEN FirstCompanionX% = D * 20: FirstCompanionY% = (e + 1) * 20\r
-IF q$ = "y" THEN SecondCompanionX% = D * 20: SecondCompanionY% = (e + 1) * 20\r
+IF q$ = "x" THEN Companion1PositionX% = D * 20: Companion1PositionY% = (e + 1) * 20\r
+IF q$ = "y" THEN Companion2PositionX% = D * 20: Companion2PositionY% = (e + 1) * 20\r
IF q$ = "1" THEN PUT (D * 20, e * 20), CoinSprite, PSET: TerrainGrid(D + 1, e + 1) = "1"\r
IF q$ = "p" THEN PUT (D * 20, (e * 20) + 10), poosas, PSET\r
IF q$ = "h" THEN PUT (D * 20, e * 20), WindowSprite, PSET\r
IF q$ = "o" THEN PUT (D * 10, e * 10), kastm, PSET: TerrainGrid(D + 1, e + 1) = "z": ObjectGrid(D + 1, e + 1) = "o"\r
IF q$ = "." THEN PUT (D * 10, e * 10), tahtm, PSET\r
IF q$ = "-" THEN PUT (D * 10, e * 10), pilvm, PSET\r
-IF q$ = "x" THEN FirstCompanionX% = D * 20: FirstCompanionY% = (e + 1) * 20\r
-IF q$ = "y" THEN SecondCompanionX% = D * 20: SecondCompanionY% = (e + 1) * 20\r
+IF q$ = "x" THEN Companion1PositionX% = D * 20: Companion1PositionY% = (e + 1) * 20\r
+IF q$ = "y" THEN Companion2PositionX% = D * 20: Companion2PositionY% = (e + 1) * 20\r
IF q$ = "1" THEN PUT (D * 10, e * 10), CoinSpriteSmall, PSET: TerrainGrid(D + 1, e + 1) = "1"\r
IF q$ = "p" THEN PUT (D * 10, (e * 10) + 5), poosasm, PSET\r
IF q$ = "h" THEN PUT (D * 10, e * 10), WindowSpriteSmall, PSET\r