fixed bug in single button handling causing broken tapes (EM engine)
[rocksndiamonds.git] / src / game_em / synchro_3.c
index d47741f9a7a53cc1078ba3eceaccb6d2afae930f..307d285ebfa6794efa687a1efe477ddd53ca419a 100644 (file)
@@ -5,27 +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"
 
 
-#if defined(TARGET_X11)
-
 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)
@@ -44,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);
@@ -68,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 */
 
@@ -119,5 +110,3 @@ void synchro_3(void)
     for (x = 0; x < WIDTH; x++)
       Next[y][x] = Cave[y][x];
 }
-
-#endif