+/* values for "CONF" chunk */
+#define CONF_MASK_1_BYTE 0x00
+#define CONF_MASK_2_BYTE 0x40
+#define CONF_MASK_4_BYTE 0x80
+#define CONF_MASK_MULTI_BYTES 0xc0
+
+#define CONF_MASK_BYTES 0xc0
+#define CONF_MASK_TOKEN 0x3f
+
+#define CONF_LAST_ENTRY (CONF_MASK_1_BYTE | 0)
+
+#define CONF_VALUE_SCORE_1 (CONF_MASK_1_BYTE | 1)
+#define CONF_VALUE_SCORE_2 (CONF_MASK_1_BYTE | 2)
+#define CONF_VALUE_SCORE_3 (CONF_MASK_1_BYTE | 3)
+#define CONF_VALUE_SCORE_4 (CONF_MASK_1_BYTE | 4)
+#define CONF_VALUE_TIME_1 (CONF_MASK_1_BYTE | 5)
+#define CONF_VALUE_TIME_2 (CONF_MASK_1_BYTE | 6)
+#define CONF_VALUE_TIME_3 (CONF_MASK_1_BYTE | 7)
+#define CONF_VALUE_TIME_4 (CONF_MASK_1_BYTE | 8)
+#define CONF_VALUE_SWITCH_1 (CONF_MASK_1_BYTE | 9)
+#define CONF_VALUE_SWITCH_2 (CONF_MASK_1_BYTE | 10)
+#define CONF_VALUE_SWITCH_3 (CONF_MASK_1_BYTE | 11)
+#define CONF_VALUE_SWITCH_4 (CONF_MASK_1_BYTE | 12)
+#define CONF_VALUE_USE_BUG_1 (CONF_MASK_1_BYTE | 13)
+#define CONF_VALUE_USE_BUG_2 (CONF_MASK_1_BYTE | 14)
+#define CONF_VALUE_USE_BUG_3 (CONF_MASK_1_BYTE | 15)
+#define CONF_VALUE_USE_BUG_4 (CONF_MASK_1_BYTE | 16)
+
+#define CONF_VALUE_ELEMENT_1 (CONF_MASK_2_BYTE | 1)
+#define CONF_VALUE_ELEMENT_2 (CONF_MASK_2_BYTE | 2)
+
+#define CONF_VALUE_CONTENT_1 (CONF_MASK_MULTI_BYTES | 1)
+#define CONF_VALUE_CONTENT_8 (CONF_MASK_MULTI_BYTES | 2)
+
+#define CONF_VALUE_BOOLEAN(x) ((x) >= CONF_VALUE_SWITCH_1 && \
+ (x) <= CONF_VALUE_USE_BUG_4)
+
+#define CONF_VALUE_NUM_BYTES(x) ((x) == CONF_MASK_1_BYTE ? 1 : \
+ (x) == CONF_MASK_2_BYTE ? 2 : \
+ (x) == CONF_MASK_4_BYTE ? 4 : 0)
+
+#define CONF_CONTENT_NUM_ELEMENTS (3 * 3)
+#define CONF_CONTENT_NUM_BYTES (CONF_CONTENT_NUM_ELEMENTS * 2)
+
+#define CONF_CONTENT_ELEMENT_POS(c,x,y) ((c) * CONF_CONTENT_NUM_ELEMENTS + \
+ (y) * 3 + (x))
+#define CONF_CONTENT_BYTE_POS(c,x,y) (CONF_CONTENT_ELEMENT_POS(c,x,y) * 2)
+#define CONF_CONTENT_ELEMENT(b,c,x,y) ((b[CONF_CONTENT_BYTE_POS(c,x,y)] << 8)|\
+ (b[CONF_CONTENT_BYTE_POS(c,x,y) + 1]))
+
+static struct LevelInfo li;
+
+static struct
+{
+ int element;
+ int type;
+ void *value;
+} element_conf[] =
+{
+ /* 1-byte values */
+ { EL_EMC_ANDROID, CONF_VALUE_TIME_1, &li.android_move_time },
+ { EL_EMC_ANDROID, CONF_VALUE_TIME_2, &li.android_clone_time },
+ { EL_EMC_MAGIC_BALL, CONF_VALUE_TIME_1, &li.ball_time },
+ { EL_EMC_LENSES, CONF_VALUE_SCORE_1, &li.lenses_score },
+ { EL_EMC_LENSES, CONF_VALUE_TIME_1, &li.lenses_time },
+ { EL_EMC_MAGNIFIER, CONF_VALUE_SCORE_1, &li.magnify_score },
+ { EL_EMC_MAGNIFIER, CONF_VALUE_TIME_1, &li.magnify_time },
+ { EL_ROBOT, CONF_VALUE_SCORE_2, &li.slurp_score },
+
+ /* multi-byte values */
+ { EL_EMC_MAGIC_BALL, CONF_VALUE_CONTENT_8, &li.ball_content },
+
+ { -1, -1, NULL },
+};
+