#define TAPE_CHUNK_VERS_SIZE 8 // size of file version chunk
#define TAPE_CHUNK_HEAD_SIZE 20 // size of tape file header
-#define TAPE_CHUNK_HEAD_UNUSED 2 // unused tape header bytes
+#define TAPE_CHUNK_HEAD_UNUSED 1 // unused tape header bytes
#define LEVEL_CHUNK_CNT3_SIZE(x) (LEVEL_CHUNK_CNT3_HEADER + (x))
#define LEVEL_CHUNK_CUS3_SIZE(x) (2 + (x) * LEVEL_CPART_CUS3_SIZE)
// at least one (default: the first) player participates in every tape
tape.num_participating_players = 1;
+ tape.property_bits = TAPE_PROPERTY_NONE;
+
tape.level_nr = level_nr;
tape.counter = 0;
tape.changed = FALSE;
setTapeActionFlags(tape, getFile8Bit(file));
+ tape->property_bits = getFile8Bit(file);
+
ReadUnusedBytesFromFile(file, TAPE_CHUNK_HEAD_UNUSED);
engine_version = getFileVersion(file);
putFile8Bit(file, getTapeActionValue(tape));
+ putFile8Bit(file, tape->property_bits);
+
// unused bytes not at the end here for 4-byte alignment of engine_version
WriteUnusedBytesToFile(file, TAPE_CHUNK_HEAD_UNUSED);
#define TAPE_ACTIONS_DEFAULT TAPE_USE_KEY_ACTIONS_ONLY
+// values for tape properties stored in tape file
+#define TAPE_PROPERTY_NONE 0
+
// some positions in the video tape control window
#define VIDEO_DISPLAY1_XPOS 5
#define VIDEO_DISPLAY1_YPOS 5
boolean use_key_actions;
boolean use_mouse_actions;
+ // bits to indicate which tape properties are stored in this tape
+ byte property_bits;
+
struct
{
byte action[MAX_TAPE_ACTIONS];