for (i = 2112; i < 2148; i++)
src[i] = src[i - 64];
}
+#if 0
+ else if (length >= 2106) /* !!! TEST ONLY: SHOW BROKEN LEVELS !!! */
+#else
else if (length >= 2106 &&
src[1983] == 116)
+#endif
{
/* ---------- this cave has V4 file format ---------- */
file_version = FILE_VERSION_EM_V4;
for (i = 2112; i < 2148; i++)
src[i] = src[i - 64];
}
+#if 1
+ else if (length >= 2106 &&
+ src[0] == 245 &&
+ src[1983] == 27)
+ {
+ unsigned char j = 94;
+
+ /* ---------- this cave has V3 file format ---------- */
+ file_version = FILE_VERSION_EM_V3;
+
+ for (i = 0; i < 2106; i++)
+ src[i] = (src[i] ^ (j += 7)) - 0x11;
+ src[1] = 131;
+ for (i = 0; i < 2048; i++)
+ src[i] = remap_v4[src[i]];
+ for (i = 2048; i < 2084; i++)
+ src[i] = remap_v4eater[src[i] >= 28 ? 0 : src[i]];
+ for (i = 2112; i < 2148; i++)
+ src[i] = src[i - 64];
+ }
+#endif
else
{
/* ---------- this cave has unknown file format ---------- */
+#if 1
+ printf("::: %d, %d\n", src[0], src[1983]);
+#endif
+
return 0;
}
/* fix acid */
for (i = 64; i < 2048; i++)
{
- if (src[i] == 63)
+ if (src[i] == 63) /* 'Xacid_s' (acid pool, bottom middle) */
{
if (file_version == FILE_VERSION_EM_V4 &&
i < 2048 - 64 && src[i + 64] == 63)
- src[i - 64] = 255;
+ src[i - 64] = 255; /* replace element above with 'Xfake_acid_1' */
else
- src[i - 64] = 101;
+ src[i - 64] = 101; /* replace element above with 'Xacid_1' */
}
}
#endif
length = 2172;
#if 1
- printf("::: EM level file version: %d\n", file_version);
+ if (options.debug)
+ printf("::: EM level file version: %d\n", file_version);
#endif
return file_version;
for (x = 0; x < WIDTH; x++)
Draw[y][x] = Cave[y][x];
+#if 1
+ lev.time_initial = lev.time_seconds;
+#else
lev.time_initial = (lev.time_seconds * 50 + 7) / 8;
+#endif
lev.time = lev.time_initial;
lev.required = lev.required_initial;
lev.home = lev.home_initial;
+ lev.killed_out_of_time = FALSE;
+
ply1.num = 0;
ply1.alive = ply1.alive_initial;
ply1.dynamite = 0;