changed some EM engine game element names
[rocksndiamonds.git] / src / game_em / convert.c
index 5553772e62f6ece5654cf91c702e8cf14adfbed9..116cde4bfb2bd51708dbde2142cff266e0f9311d 100644 (file)
@@ -536,7 +536,7 @@ static unsigned short remap_emerald[256] =
 
   Xblank,              Xsand,          Xsand,          Xsand,
   Xsand_stone,         Xsand_stone,    Xsand_stone,    Xsand,
-  Xstone,              Xslidewall_ew,  Xslidewall_ns,  Xdynamite_1,
+  Xstone,              Xslide_ew,      Xslide_ns,      Xdynamite_1,
   Xdynamite_2,         Xdynamite_3,    Xdynamite_4,    Xacid_s,
 
   Xexit_1,             Xexit_2,        Xexit_3,        Xballoon,
@@ -869,7 +869,7 @@ void convert_em_level(unsigned char *src, int file_version)
   if (temp & 2048)
   {
     lev.android_array[Xfake_amoeba]    = Xdrip;
-    lev.android_array[Xfake_amoebaB]   = Xdrip;
+    lev.android_array[Yfake_amoeba]    = Xdrip;
     lev.android_array[Xamoeba_1]       = Xdrip;
     lev.android_array[Xamoeba_2]       = Xdrip;
     lev.android_array[Xamoeba_3]       = Xdrip;
@@ -938,22 +938,34 @@ void prepare_em_level(void)
 
   /* reset all runtime variables to their initial values */
 
+  game_init_cave_buffers();
+
   lev.left = CAVE_BUFFER_XOFFSET;
   lev.top  = CAVE_BUFFER_YOFFSET;
   lev.right = lev.left + lev.width;
   lev.bottom = lev.top + lev.height;
 
-  for (y = 0; y < CAVE_HEIGHT; y++)
-    for (x = 0; x < CAVE_WIDTH; x++)
-      lev.cave[lev.left + x][lev.top + y] = native_em_level.cave[x][y];
+  /* add linked cave buffer columns for wrap-around movement */
+  for (x = 0; x < lev.left; x++)
+  {
+    lev.cavecol[x] = lev.cavecol[lev.width + x];
+    lev.nextcol[x] = lev.nextcol[lev.width + x];
+    lev.drawcol[x] = lev.drawcol[lev.width + x];
+    lev.boomcol[x] = lev.boomcol[lev.width + x];
+
+    lev.cavecol[lev.right + x] = lev.cavecol[lev.left + x];
+    lev.nextcol[lev.right + x] = lev.nextcol[lev.left + x];
+    lev.drawcol[lev.right + x] = lev.drawcol[lev.left + x];
+    lev.boomcol[lev.right + x] = lev.boomcol[lev.left + x];
+  }
 
-  for (y = 0; y < CAVE_BUFFER_HEIGHT; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
-      lev.next[x][y] = lev.cave[x][y];
+  for (x = 0; x < lev.width; x++)
+    for (y = 0; y < lev.height; y++)
+      lev.cave[lev.left + x][lev.top + y] = native_em_level.cave[x][y];
 
-  for (y = 0; y < CAVE_BUFFER_HEIGHT; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
-      lev.draw[x][y] = lev.cave[x][y];
+  for (x = lev.left; x < lev.right; x++)
+    for (y = lev.top; y < lev.bottom; y++)
+      lev.next[x][y] = lev.draw[x][y] = lev.cave[x][y];
 
   lev.time_initial = lev.time_seconds;
   lev.time = lev.time_initial;