rocksndiamonds-3.3.0.0
[rocksndiamonds.git] / src / game_sp / BugsTerminals.c
index ec4be1ea66feebb06629dd91ae7d23c4b8f881c2..94850270bda47c678974308fedc64dca8b88a5fb 100644 (file)
@@ -5,7 +5,12 @@
 #include "BugsTerminals.h"
 
 
+#if 1
+byte TerminalState[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE];
+#else
 byte *TerminalState;
+#endif
+
 int TerminalMaxCycles;
 
 
@@ -26,7 +31,7 @@ void subAnimateBugs(int si)
   if ((TimerVar & 3) == 0)
   {
     bl = bl + 1;
-    if (bl >= 0xE)
+    if (bl >= 14)                      // bugs animation has 14 frames
     {
       bl = subGetRandomNumber();       // generate new random number
       bl = -((bl & 0x3F) + 0x20);
@@ -65,7 +70,7 @@ void subAnimateBugs(int si)
 
 void subAnimateTerminals(int si)
 {
-  short bl;
+  int bl;
 
   int lx = GetX(si);
   int ly = GetY(si);
@@ -79,9 +84,7 @@ void subAnimateTerminals(int si)
     GfxFrame[lx][ly]--;
 
   /* get last random animation delay */
-  bl = HighByte(PlayField16[si]);
-  if ((bl & 0x80) == 0x80)
-    bl = (bl | 0xFF00);
+  bl = SgnHighByte(PlayField16[si]);
 
   bl = bl + 1;
   if (bl <= 0)         /* return if random animation delay not yet reached */