added tape property bit for tapes using the old BD game engine
authorHolger Schemel <holger.schemel@virtion.de>
Sun, 15 Sep 2024 13:51:38 +0000 (15:51 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Sun, 15 Sep 2024 14:15:41 +0000 (16:15 +0200)
This tape property bit is either set when loading old BD replays that
are explicitly tagged to use the old BD game engine, or can manually
be set for existing tape files by using the "patch tapes" command (by
using the patch command from the following commit).

src/files.c
src/tape.h
src/tools.c

index 9089e9a0813f6e92f802292464c61ddd2fae08ff..2edc3157bcc9bff4ea7ed1ed20d359f727d8af99 100644 (file)
@@ -4692,6 +4692,10 @@ static void CopyNativeTape_BD_to_RND(struct LevelInfo *level)
 
   tape.bd_replay = TRUE;
 
+  // use old BD game engine if playing specifically tagged BD replays
+  if (leveldir_current->replay_with_old_engine)
+    tape.property_bits |= TAPE_PROPERTY_BD_OLD_ENGINE;
+
   // all time calculations only used to display approximate tape time
   int cave_speed = cave->speed;
   int milliseconds_game = 0;
@@ -9911,6 +9915,8 @@ void DumpTape(struct TapeInfo *tape)
   Print("Special tape properties: ");
   if (tape->property_bits == TAPE_PROPERTY_NONE)
     Print("[none]");
+  if (tape->property_bits & TAPE_PROPERTY_BD_OLD_ENGINE)
+    Print("[bd_old_engine]");
   if (tape->property_bits & TAPE_PROPERTY_EM_RANDOM_BUG)
     Print("[em_random_bug]");
   if (tape->property_bits & TAPE_PROPERTY_GAME_SPEED)
index 1b67f8dca570c4927c8aef2f19dd17e1ad559a5a..dc10d986117104e0e88c7b8d2b90063e24176f0a 100644 (file)
@@ -38,7 +38,7 @@
 // values for tape properties stored in tape file
 #define TAPE_PROPERTY_NONE             0
 #define TAPE_PROPERTY_LEVEL_SOLVED     (1 << 0)
-#define TAPE_PROPERTY_UNUSED_BIT_1     (1 << 1)
+#define TAPE_PROPERTY_BD_OLD_ENGINE    (1 << 1)
 #define TAPE_PROPERTY_UNUSED_BIT_2     (1 << 2)
 #define TAPE_PROPERTY_UNUSED_BIT_3     (1 << 3)
 #define TAPE_PROPERTY_UNUSED_BIT_4     (1 << 4)
index b473d9f8db0613937ac674bf352e36d57e476dac..e91257c61520f3c6c6316d5056706c0a57b16910 100644 (file)
@@ -10666,9 +10666,8 @@ int getBeltSwitchElementFromBeltNrAndBeltDir(int belt_nr, int belt_dir)
 
 boolean useOldEngine_BD(void)
 {
-  return (tape.playing &&
-          tape.bd_replay &&
-          leveldir_current->replay_with_old_engine);
+  // only use old BD game engine if playing specifically tagged tapes
+  return (tape.playing && (tape.property_bits & TAPE_PROPERTY_BD_OLD_ENGINE));
 }
 
 boolean swapTiles_EM(boolean is_pre_emc_cave)