fixed bug in single button handling causing broken tapes (EM engine)
[rocksndiamonds.git] / src / game_em / synchro_3.c
index 230a907c3ba27242140577139753a4e8d705d1f5..307d285ebfa6794efa687a1efe477ddd53ca419a 100644 (file)
@@ -5,25 +5,21 @@
  * this should be spread over the frames for reduced cpu load.
  */
 
-#include "tile.h"
-#include "level.h"
-#include "sample.h"
+#include "main_em.h"
 
 
 void synchro_3(void)
 {
-  register unsigned int x;
-  register unsigned int y;
-  register unsigned int count;
-  register unsigned long random;
+  int x;
+  int y;
+  int count;
+  unsigned long random;
 
   /* update variables */
 
   if (lev.score > 9999)
     lev.score = 9999;
 
-  if (lev.time)
-    lev.time--;
   if (lev.android_move_cnt-- == 0)
     lev.android_move_cnt = lev.android_move_time;
   if (lev.android_clone_cnt-- == 0)
@@ -42,17 +38,14 @@ void synchro_3(void)
   if (lev.wonderwall_time && lev.wonderwall_state)
     lev.wonderwall_time--;
 
-  if (lev.time > 0 && lev.time <= 50 && lev.time % 5 == 0)
-    play[SAMPLE_time] = 1;
-
   if (lev.wheel_cnt)
-    play[SAMPLE_wheel] = 1;
+    play_element_sound(lev.wheel_x, lev.wheel_y, SAMPLE_wheel, Xwheel);
 
-  /* grow ameuba */
+  /* grow amoeba */
 
-  random = Random;
+  random = RandomEM;
 
-  for (count = lev.ameuba_time; count--;)
+  for (count = lev.amoeba_time; count--;)
   {
     x = (random >> 10) % (WIDTH - 2);
     y = (random >> 20) % (HEIGHT - 2);
@@ -66,17 +59,17 @@ void synchro_3(void)
       case Xsand:
       case Xplant:
       case Yplant:
-       if (tab_ameuba[Cave[y-1][x]] ||
-           tab_ameuba[Cave[y][x+1]] ||
-           tab_ameuba[Cave[y+1][x]] ||
-           tab_ameuba[Cave[y][x-1]])
+       if (tab_amoeba[Cave[y-1][x]] ||
+           tab_amoeba[Cave[y][x+1]] ||
+           tab_amoeba[Cave[y+1][x]] ||
+           tab_amoeba[Cave[y][x-1]])
          Cave[y][x] = Xdrip_eat;
     }
 
     random = random * 129 + 1;
   }
 
-  Random = random;
+  RandomEM = random;
 
   /* handle explosions */