#define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START && \
(e) <= EL_INTERNAL_END)
-#define IS_MM_ELEMENT(e) ((e) >= EL_MM_START && \
- (e) <= EL_MM_END)
-
-#define IS_DF_ELEMENT(e) ((e) >= EL_DF_START && \
- (e) <= EL_DF_END)
+#define IS_MM_ELEMENT_1(e) ((e) >= EL_MM_START_1 && \
+ (e) <= EL_MM_END_1)
+#define IS_MM_ELEMENT_2(e) ((e) >= EL_MM_START_2 && \
+ (e) <= EL_MM_END_2)
+#define IS_MM_ELEMENT_3(e) ((e) >= EL_MM_START_3 && \
+ (e) <= EL_MM_END_3)
+#define IS_MM_ELEMENT(e) (IS_MM_ELEMENT_1(e) || \
+ IS_MM_ELEMENT_2(e) || \
+ IS_MM_ELEMENT_3(e))
+
+#define IS_DF_ELEMENT_1(e) ((e) >= EL_DF_START_1 && \
+ (e) <= EL_DF_END_1)
+#define IS_DF_ELEMENT_2(e) ((e) >= EL_DF_START_2 && \
+ (e) <= EL_DF_END_2)
+#define IS_DF_ELEMENT(e) (IS_DF_ELEMENT_1(e) || \
+ IS_DF_ELEMENT_2(e))
#define IS_MM_MCDUFFIN(e) ((e) >= EL_MM_MCDUFFIN_START && \
(e) <= EL_MM_MCDUFFIN_END)
#define EL_MM_START_2 (EL_MM_START + 160)
#define EL_DF_START EL_MM_START_2
+#define EL_DF_START_1 EL_MM_START_2
#define EL_DF_START2 (EL_DF_START - 240)
#define EL_DF_MIRROR_START EL_DF_START
#define EL_DF_STEEL_GRID_ROTATING_8 (EL_DF_STEEL_GRID_ROTATING_START + 7)
#define EL_DF_STEEL_GRID_ROTATING_END EL_DF_STEEL_GRID_ROTATING_07
-#define EL_DF_END (EL_DF_START2 + 355)
+#define EL_DF_END_1 (EL_DF_START2 + 355)
#define EL_MM_TELEPORTER_RED_START (EL_DF_START2 + 356)
#define EL_MM_TELEPORTER_RED_1 (EL_MM_TELEPORTER_RED_START + 0)
#define EL_DF_WOODEN_WALL 1214
#define EL_MM_END_2 (EL_DF_START2 + 430)
-#define EL_MM_END EL_MM_END_2
#define EL_SPRING_LEFT 1215
#define EL_SPRING_RIGHT 1216
#define EL_EMPTY_SPACE_END 1232
// ---------- end of empty space elements section -----------------------------
-#define NUM_FILE_ELEMENTS 1233
+#define EL_MM_START_3 EL_DF_MIRROR_FIXED_START
+#define EL_DF_START_2 EL_DF_MIRROR_FIXED_START
+
+#define EL_DF_MIRROR_FIXED_START 1233
+#define EL_DF_MIRROR_FIXED_1 (EL_DF_MIRROR_FIXED_START + 0)
+#define EL_DF_MIRROR_FIXED_2 (EL_DF_MIRROR_FIXED_START + 1)
+#define EL_DF_MIRROR_FIXED_3 (EL_DF_MIRROR_FIXED_START + 2)
+#define EL_DF_MIRROR_FIXED_4 (EL_DF_MIRROR_FIXED_START + 3)
+#define EL_DF_MIRROR_FIXED_5 (EL_DF_MIRROR_FIXED_START + 4)
+#define EL_DF_MIRROR_FIXED_6 (EL_DF_MIRROR_FIXED_START + 5)
+#define EL_DF_MIRROR_FIXED_7 (EL_DF_MIRROR_FIXED_START + 6)
+#define EL_DF_MIRROR_FIXED_8 (EL_DF_MIRROR_FIXED_START + 7)
+#define EL_DF_MIRROR_FIXED_9 (EL_DF_MIRROR_FIXED_START + 8)
+#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 9)
+#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 10)
+#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 11)
+#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 12)
+#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 13)
+#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 14)
+#define EL_DF_MIRROR_FIXED_16 (EL_DF_MIRROR_FIXED_START + 15)
+#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_16
+
+#define EL_DF_SLOPE_START 1249
+#define EL_DF_SLOPE_1 (EL_DF_SLOPE_START + 0)
+#define EL_DF_SLOPE_2 (EL_DF_SLOPE_START + 1)
+#define EL_DF_SLOPE_3 (EL_DF_SLOPE_START + 2)
+#define EL_DF_SLOPE_4 (EL_DF_SLOPE_START + 3)
+#define EL_DF_SLOPE_END EL_DF_SLOPE_4
+
+#define EL_MM_END_3 EL_DF_SLOPE_END
+#define EL_DF_END_2 EL_DF_SLOPE_END
+
+#define NUM_FILE_ELEMENTS 1253
// "real" (and therefore drawable) runtime elements
// program information and versioning definitions
#define PROGRAM_VERSION_SUPER 4
#define PROGRAM_VERSION_MAJOR 3
-#define PROGRAM_VERSION_MINOR 5
-#define PROGRAM_VERSION_PATCH 5
+#define PROGRAM_VERSION_MINOR 7
+#define PROGRAM_VERSION_PATCH 0
#define PROGRAM_VERSION_EXTRA ""
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
struct ElementGroupInfo *group; // pointer to element group info
+ boolean has_anim_event; // element can trigger global animation
+
// ---------- internal values used at runtime when playing ----------
boolean has_change_event[NUM_CHANGE_EVENTS];
char *artist_header;
char *album_header;
char *year_header;
+ char *played_header;
char *title;
char *artist;
char *album;
char *year;
+ char *played;
int music;