rnd-20070215-1-src
[rocksndiamonds.git] / src / main.c
index 747debebe4986be2168ea117e9aa5f8382ab64e8..bfa11abd651c4b346c8f4977443f9a56c7c93fbc 100644 (file)
@@ -59,6 +59,7 @@ short                 ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short                  CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  AmoebaCnt[MAX_NUM_AMOEBA];
 short                  AmoebaCnt2[MAX_NUM_AMOEBA];
@@ -105,6 +106,10 @@ struct SetupInfo   setup;
 struct GameInfo                game;
 struct GlobalInfo      global;
 struct BorderInfo      border;
+struct TitleInfo       title;
+struct TitleMessageInfo        titlemessage_initial[MAX_NUM_TITLE_MESSAGES];
+struct TitleMessageInfo        titlemessage[MAX_NUM_TITLE_MESSAGES];
+struct TitleMessageInfo        readme;
 struct MenuInfo                menu;
 struct DoorInfo                door_1, door_2;
 struct PreviewInfo     preview;
@@ -214,12 +219,12 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   {
     "quicksand_empty",
     "quicksand",
-    "empty quicksand"
+    "quicksand (empty)"
   },
   {
     "quicksand_full",
     "quicksand",
-    "quicksand with rock"
+    "quicksand (with rock)"
   },
   {
     "amoeba_drop",
@@ -1113,17 +1118,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'button'"
   },
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'up'"
   },
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'down'"
   },
   {
     "expandable_wall_horizontal",
@@ -1426,17 +1431,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "wall with crystal"
   },
   {
-    "door_white",
+    "dc_gate_white",
     "gate",
-    "white door"
+    "white gate"
   },
   {
-    "door_white_gray",
+    "dc_gate_white_gray",
     "gate",
     "gray door (opened by white key)"
   },
   {
-    "key_white",
+    "dc_key_white",
     "key",
     "white key"
   },
@@ -1602,8 +1607,8 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   },
   {
     "landmine",
-    "sand",
-    "land mine"
+    "landmine",
+    "land mine (not removable)"
   },
   {
     "envelope_obsolete",
@@ -1622,63 +1627,63 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   },
   {
     "sign_exclamation",
-    "wall",
+    "sign",
     "sign (exclamation)"
   },
   {
     "sign_radioactivity",
-    "wall",
+    "sign",
     "sign (radio activity)"
   },
   {
     "sign_stop",
-    "wall",
+    "sign",
     "sign (stop)"
   },
   {
     "sign_wheelchair",
-    "wall",
+    "sign",
     "sign (wheel chair)"
   },
   {
     "sign_parking",
-    "wall",
+    "sign",
     "sign (parking)"
   },
   {
-    "sign_oneway",
-    "wall",
-    "sign (one way)"
+    "sign_no_entry",
+    "sign",
+    "sign (no entry)"
   },
   {
-    "sign_heart",
-    "wall",
-    "sign (heart)"
+    "sign_unused_1",
+    "sign",
+    "sign (unused)"
   },
   {
-    "sign_triangle",
-    "wall",
-    "sign (triangle)"
+    "sign_give_way",
+    "sign",
+    "sign (give way)"
   },
   {
-    "sign_round",
-    "wall",
-    "sign (round)"
+    "sign_entry_forbidden",
+    "sign",
+    "sign (entry forbidden)"
   },
   {
-    "sign_exit",
-    "wall",
-    "sign (exit)"
+    "sign_emergency_exit",
+    "sign",
+    "sign (emergency exit)"
   },
   {
-    "sign_yinyang",
-    "wall",
+    "sign_yin_yang",
+    "sign",
     "sign (yin yang)"
   },
   {
-    "sign_other",
-    "wall",
-    "sign (other)"
+    "sign_unused_2",
+    "sign",
+    "sign (unused)"
   },
   {
     "mole.left",
@@ -3785,1023 +3790,2427 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "any_element",
     "this element matches any element"
   },
-
-  /* ----------------------------------------------------------------------- */
-  /* "real" (and therefore drawable) runtime elements                        */
-  /* ----------------------------------------------------------------------- */
-
   {
-    "dynabomb_player_1.active",
-    "dynabomb",
-    "-"
+    "steel_char_space",
+    "steel_char",
+    "steel letter ' '"
   },
   {
-    "dynabomb_player_2.active",
-    "dynabomb",
-    "-"
+    "steel_char_exclam",
+    "steel_char",
+    "steel letter '!'"
   },
   {
-    "dynabomb_player_3.active",
-    "dynabomb",
-    "-"
+    "steel_char_quotedbl",
+    "steel_char",
+    "steel letter '\"'"
   },
   {
-    "dynabomb_player_4.active",
-    "dynabomb",
-    "-"
+    "steel_char_numbersign",
+    "steel_char",
+    "steel letter '#'"
   },
   {
-    "sp_disk_red.active",
-    "dynamite",
-    "-"
+    "steel_char_dollar",
+    "steel_char",
+    "steel letter '$'"
   },
   {
-    "switchgate.opening",
-    "switchgate",
-    "-"
+    "steel_char_percent",
+    "steel_char",
+    "steel letter '%'"
   },
   {
-    "switchgate.closing",
-    "switchgate",
-    "-"
+    "steel_char_ampersand",
+    "steel_char",
+    "steel letter '&'"
   },
   {
-    "timegate.opening",
-    "timegate",
-    "-"
+    "steel_char_apostrophe",
+    "steel_char",
+    "steel letter '''"
   },
   {
-    "timegate.closing",
-    "timegate",
-    "-"
+    "steel_char_parenleft",
+    "steel_char",
+    "steel letter '('"
   },
   {
-    "pearl.breaking",
-    "pearl",
-    "-"
+    "steel_char_parenright",
+    "steel_char",
+    "steel letter ')'"
   },
   {
-    "trap.active",
-    "trap",
-    "-"
+    "steel_char_asterisk",
+    "steel_char",
+    "steel letter '*'"
   },
   {
-    "invisible_steelwall.active",
-    "steelwall",
-    "-"
+    "steel_char_plus",
+    "steel_char",
+    "steel letter '+'"
   },
   {
-    "invisible_wall.active",
-    "wall",
-    "-"
+    "steel_char_comma",
+    "steel_char",
+    "steel letter ','"
   },
   {
-    "invisible_sand.active",
-    "sand",
-    "-"
+    "steel_char_minus",
+    "steel_char",
+    "steel letter '-'"
   },
   {
-    "conveyor_belt_1_left.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_period",
+    "steel_char",
+    "steel letter '.'"
   },
   {
-    "conveyor_belt_1_middle.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_slash",
+    "steel_char",
+    "steel letter '/'"
   },
   {
-    "conveyor_belt_1_right.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_0",
+    "steel_char",
+    "steel letter '0'"
   },
   {
-    "conveyor_belt_2_left.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_1",
+    "steel_char",
+    "steel letter '1'"
   },
   {
-    "conveyor_belt_2_middle.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_2",
+    "steel_char",
+    "steel letter '2'"
   },
   {
-    "conveyor_belt_2_right.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_3",
+    "steel_char",
+    "steel letter '3'"
   },
   {
-    "conveyor_belt_3_left.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_4",
+    "steel_char",
+    "steel letter '4'"
   },
   {
-    "conveyor_belt_3_middle.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_5",
+    "steel_char",
+    "steel letter '5'"
   },
   {
-    "conveyor_belt_3_right.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_6",
+    "steel_char",
+    "steel letter '6'"
   },
   {
-    "conveyor_belt_4_left.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_7",
+    "steel_char",
+    "steel letter '7'"
   },
   {
-    "conveyor_belt_4_middle.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_8",
+    "steel_char",
+    "steel letter '8'"
   },
   {
-    "conveyor_belt_4_right.active",
-    "conveyor_belt",
-    "-"
+    "steel_char_9",
+    "steel_char",
+    "steel letter '9'"
   },
   {
-    "exit.opening",
-    "exit",
-    "-"
+    "steel_char_colon",
+    "steel_char",
+    "steel letter ':'"
   },
   {
-    "exit.closing",
-    "exit",
-    "-"
+    "steel_char_semicolon",
+    "steel_char",
+    "steel letter ';'"
   },
   {
-    "sp_exit.opening",
-    "sp_exit",
-    "-"
+    "steel_char_less",
+    "steel_char",
+    "steel letter '<'"
   },
   {
-    "sp_exit.closing",
-    "sp_exit",
-    "-"
+    "steel_char_equal",
+    "steel_char",
+    "steel letter '='"
   },
   {
-    "sp_exit_open",
-    "sp_exit",
-    "-"
+    "steel_char_greater",
+    "steel_char",
+    "steel letter '>'"
   },
   {
-    "sp_terminal.active",
-    "sp_terminal",
-    "-"
+    "steel_char_question",
+    "steel_char",
+    "steel letter '?'"
   },
   {
-    "sp_buggy_base.activating",
-    "sp_buggy_base",
-    "-"
+    "steel_char_at",
+    "steel_char",
+    "steel letter '@'"
   },
   {
-    "sp_buggy_base.active",
-    "sp_buggy_base",
-    "-"
+    "steel_char_a",
+    "steel_char",
+    "steel letter 'A'"
   },
   {
-    "sp_murphy_clone",
-    "murphy_clone",
-    "-"
+    "steel_char_b",
+    "steel_char",
+    "steel letter 'B'"
   },
   {
-    "amoeba.dropping",
-    "amoeba",
-    "-"
+    "steel_char_c",
+    "steel_char",
+    "steel letter 'C'"
   },
   {
-    "quicksand.emptying",
-    "quicksand",
-    "-"
+    "steel_char_d",
+    "steel_char",
+    "steel letter 'D'"
   },
   {
-    "magic_wall.active",
-    "magic_wall",
-    "-"
+    "steel_char_e",
+    "steel_char",
+    "steel letter 'E'"
   },
   {
-    "bd_magic_wall.active",
-    "magic_wall",
-    "-"
+    "steel_char_f",
+    "steel_char",
+    "steel letter 'F'"
   },
   {
-    "magic_wall_full",
-    "magic_wall",
-    "-"
+    "steel_char_g",
+    "steel_char",
+    "steel letter 'G'"
   },
   {
-    "bd_magic_wall_full",
-    "magic_wall",
-    "-"
+    "steel_char_h",
+    "steel_char",
+    "steel letter 'H'"
   },
   {
-    "magic_wall.emptying",
-    "magic_wall",
-    "-"
+    "steel_char_i",
+    "steel_char",
+    "steel letter 'I'"
   },
   {
-    "bd_magic_wall.emptying",
-    "magic_wall",
-    "-"
+    "steel_char_j",
+    "steel_char",
+    "steel letter 'J'"
   },
   {
-    "magic_wall_dead",
-    "magic_wall",
-    "-"
+    "steel_char_k",
+    "steel_char",
+    "steel letter 'K'"
   },
   {
-    "bd_magic_wall_dead",
-    "magic_wall",
-    "-"
+    "steel_char_l",
+    "steel_char",
+    "steel letter 'L'"
   },
-
   {
-    "emc_fake_grass.active",
-    "fake_grass",
-    "-"
+    "steel_char_m",
+    "steel_char",
+    "steel letter 'M'"
   },
   {
-    "gate_1_gray.active",
-    "gate",
-    ""
+    "steel_char_n",
+    "steel_char",
+    "steel letter 'N'"
   },
   {
-    "gate_2_gray.active",
-    "gate",
-    ""
+    "steel_char_o",
+    "steel_char",
+    "steel letter 'O'"
   },
   {
-    "gate_3_gray.active",
-    "gate",
-    ""
+    "steel_char_p",
+    "steel_char",
+    "steel letter 'P'"
   },
   {
-    "gate_4_gray.active",
-    "gate",
-    ""
+    "steel_char_q",
+    "steel_char",
+    "steel letter 'Q'"
   },
   {
-    "em_gate_1_gray.active",
-    "gate",
-    ""
+    "steel_char_r",
+    "steel_char",
+    "steel letter 'R'"
   },
   {
-    "em_gate_2_gray.active",
-    "gate",
-    ""
+    "steel_char_s",
+    "steel_char",
+    "steel letter 'S'"
   },
   {
-    "em_gate_3_gray.active",
-    "gate",
-    ""
+    "steel_char_t",
+    "steel_char",
+    "steel letter 'T'"
   },
   {
-    "em_gate_4_gray.active",
-    "gate",
-    ""
+    "steel_char_u",
+    "steel_char",
+    "steel letter 'U'"
   },
   {
-    "emc_gate_5_gray.active",
-    "gate",
-    "",
+    "steel_char_v",
+    "steel_char",
+    "steel letter 'V'"
   },
   {
-    "emc_gate_6_gray.active",
-    "gate",
-    "",
+    "steel_char_w",
+    "steel_char",
+    "steel letter 'W'"
   },
   {
-    "emc_gate_7_gray.active",
-    "gate",
-    "",
+    "steel_char_x",
+    "steel_char",
+    "steel letter 'X'"
   },
   {
-    "emc_gate_8_gray.active",
-    "gate",
-    "",
+    "steel_char_y",
+    "steel_char",
+    "steel letter 'Y'"
   },
   {
-    "emc_dripper.active",
-    "dripper",
-    "dripper"
+    "steel_char_z",
+    "steel_char",
+    "steel letter 'Z'"
   },
   {
-    "emc_spring_bumper.active",
-    "emc_spring_bumper",
-    "spring bumper",
+    "steel_char_bracketleft",
+    "steel_char",
+    "steel letter '['"
   },
-
-  /* ----------------------------------------------------------------------- */
-  /* "unreal" (and therefore not drawable) runtime elements                  */
-  /* ----------------------------------------------------------------------- */
-
   {
-    "blocked",
-    "-",
-    "-"
+    "steel_char_backslash",
+    "steel_char",
+    "steel letter '\\'"
   },
   {
-    "explosion",
-    "-",
-    "-"
+    "steel_char_bracketright",
+    "steel_char",
+    "steel letter ']'"
   },
   {
-    "nut.breaking",
-    "-",
-    "-"
+    "steel_char_asciicircum",
+    "steel_char",
+    "steel letter '^'"
   },
   {
-    "diamond.breaking",
-    "-",
-    "-"
+    "steel_char_underscore",
+    "steel_char",
+    "steel letter '_'"
   },
   {
-    "acid_splash_left",
-    "-",
-    "-"
+    "steel_char_copyright",
+    "steel_char",
+    "steel letter '©'"
   },
   {
-    "acid_splash_right",
-    "-",
-    "-"
+    "steel_char_aumlaut",
+    "steel_char",
+    "steel letter 'Ä'"
   },
   {
-    "amoeba.growing",
-    "-",
-    "-"
+    "steel_char_oumlaut",
+    "steel_char",
+    "steel letter 'Ö'"
   },
   {
-    "amoeba.shrinking",
-    "-",
-    "-"
+    "steel_char_uumlaut",
+    "steel_char",
+    "steel letter 'Ãœ'"
   },
   {
-    "expandable_wall.growing",
-    "-",
-    "-"
+    "steel_char_degree",
+    "steel_char",
+    "steel letter '°'"
   },
   {
-    "flames",
-    "-",
-    "-"
+    "steel_char_trademark",
+    "steel_char",
+    "steel letter '®'"
   },
   {
-    "player_is_leaving",
-    "-",
-    "-"
+    "steel_char_cursor",
+    "steel_char",
+    "steel letter ' '"
   },
   {
-    "player_is_exploding_1",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "player_is_exploding_2",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "player_is_exploding_3",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "player_is_exploding_4",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "quicksand.filling",
-    "quicksand",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "magic_wall.filling",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
   },
   {
-    "bd_magic_wall.filling",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'button'"
   },
   {
-    "element.snapping",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'up'"
   },
   {
-    "diagonal.shrinking",
-    "-",
-    "-"
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'down'"
   },
   {
-    "diagonal.growing",
-    "-",
-    "-"
+    "sperms",
+    "frankie",
+    "sperms"
   },
-
-  /* ----------------------------------------------------------------------- */
-  /* dummy elements (never used as game elements, only used as graphics)     */
-  /* ----------------------------------------------------------------------- */
-
   {
-    "steelwall_topleft",
-    "-",
-    "-"
+    "bullet",
+    "frankie",
+    "bullet"
   },
   {
-    "steelwall_topright",
-    "-",
-    "-"
+    "heart",
+    "frankie",
+    "heart"
   },
   {
-    "steelwall_bottomleft",
-    "-",
-    "-"
+    "cross",
+    "frankie",
+    "cross"
   },
   {
-    "steelwall_bottomright",
-    "-",
-    "-"
+    "frankie",
+    "frankie",
+    "frankie"
   },
   {
-    "steelwall_horizontal",
-    "-",
-    "-"
+    "sign_sperms",
+    "sign",
+    "sign (sperms)"
   },
   {
-    "steelwall_vertical",
-    "-",
-    "-"
+    "sign_bullet",
+    "sign",
+    "sign (bullet)"
   },
   {
-    "invisible_steelwall_topleft",
-    "-",
-    "-"
+    "sign_heart",
+    "sign",
+    "sign (heart)"
   },
   {
-    "invisible_steelwall_topright",
-    "-",
-    "-"
+    "sign_cross",
+    "sign",
+    "sign (cross)"
   },
   {
-    "invisible_steelwall_bottomleft",
-    "-",
-    "-"
+    "sign_frankie",
+    "sign",
+    "sign (frankie)"
   },
   {
-    "invisible_steelwall_bottomright",
-    "-",
-    "-"
+    "steel_exit_closed",
+    "steel_exit",
+    "closed steel exit"
   },
   {
-    "invisible_steelwall_horizontal",
-    "-",
-    "-"
+    "steel_exit_open",
+    "steel_exit",
+    "open steel exit"
   },
   {
-    "invisible_steelwall_vertical",
-    "-",
-    "-"
+    "dc_steelwall_1_left",
+    "steelwall",
+    "steel wall (left)"
   },
   {
-    "dynabomb",
-    "-",
-    "-"
+    "dc_steelwall_1_right",
+    "steelwall",
+    "steel wall (right)"
   },
   {
-    "dynabomb.active",
-    "-",
-    "-"
+    "dc_steelwall_1_top",
+    "steelwall",
+    "steel wall (top)"
   },
   {
-    "dynabomb_player_1",
-    "-",
-    "-"
+    "dc_steelwall_1_bottom",
+    "steelwall",
+    "steel wall (bottom)"
   },
   {
-    "dynabomb_player_2",
-    "-",
-    "-"
+    "dc_steelwall_1_horizontal",
+    "steelwall",
+    "steel wall (top/bottom)"
   },
   {
-    "dynabomb_player_3",
-    "-",
-    "-"
+    "dc_steelwall_1_vertical",
+    "steelwall",
+    "steel wall (left/right)"
   },
   {
-    "dynabomb_player_4",
-    "-",
-    "-"
+    "dc_steelwall_1_topleft",
+    "steelwall",
+    "steel wall (top/left)"
   },
   {
-    "shield_normal.active",
-    "-",
-    "-"
+    "dc_steelwall_1_topright",
+    "steelwall",
+    "steel wall (top/right)"
   },
   {
-    "shield_deadly.active",
-    "-",
-    "-"
+    "dc_steelwall_1_bottomleft",
+    "steelwall",
+    "steel wall (bottom/left)"
   },
   {
-    "amoeba",
-    "amoeba",
-    "-"
+    "dc_steelwall_1_bottomright",
+    "steelwall",
+    "steel wall (bottom/right)"
   },
   {
-    "[default]",
-    "default",
-    "-"
+    "dc_steelwall_1_topleft_2",
+    "steelwall",
+    "steel wall (top/left corner)"
   },
   {
-    "[bd_default]",
-    "bd_default",
-    "-"
+    "dc_steelwall_1_topright_2",
+    "steelwall",
+    "steel wall (top/right corner)"
   },
   {
-    "[sp_default]",
-    "sp_default",
-    "-"
+    "dc_steelwall_1_bottomleft_2",
+    "steelwall",
+    "steel wall (bottom/left corner)"
   },
   {
-    "[sb_default]",
-    "sb_default",
-    "-"
+    "dc_steelwall_1_bottomright_2",
+    "steelwall",
+    "steel wall (bottom/right corner)"
   },
   {
-    "internal_clipboard_custom",
-    "internal",
-    "empty custom element"
+    "dc_steelwall_2_left",
+    "steelwall",
+    "steel wall (left)"
   },
   {
-    "internal_clipboard_change",
-    "internal",
-    "empty change page"
+    "dc_steelwall_2_right",
+    "steelwall",
+    "steel wall (right)"
   },
   {
-    "internal_clipboard_group",
-    "internal",
-    "empty group element"
+    "dc_steelwall_2_top",
+    "steelwall",
+    "steel wall (top)"
   },
   {
-    "internal_dummy",
-    "internal",
-    "-"
+    "dc_steelwall_2_bottom",
+    "steelwall",
+    "steel wall (bottom)"
   },
   {
-    "internal_cascade_bd",
-    "internal",
-    "show Boulder Dash elements"
+    "dc_steelwall_2_horizontal",
+    "steelwall",
+    "steel wall (horizontal)"
   },
   {
-    "internal_cascade_bd.active",
-    "internal",
-    "hide Boulder Dash elements"
+    "dc_steelwall_2_vertical",
+    "steelwall",
+    "steel wall (vertical)"
   },
   {
-    "internal_cascade_em",
-    "internal",
-    "show Emerald Mine elements"
+    "dc_steelwall_2_middle",
+    "steelwall",
+    "steel wall (middle)"
   },
   {
-    "internal_cascade_em.active",
-    "internal",
-    "hide Emerald Mine elements"
+    "dc_steelwall_2_single",
+    "steelwall",
+    "steel wall (single)"
   },
   {
-    "internal_cascade_emc",
-    "internal",
-    "show Emerald Mine Club elements"
+    "dc_switchgate_switch_up",
+    "switchgate_switch",
+    "switch for switch gate (steel)"
   },
   {
-    "internal_cascade_emc.active",
-    "internal",
-    "hide Emerald Mine Club elements"
+    "dc_switchgate_switch_down",
+    "switchgate_switch",
+    "switch for switch gate (steel)"
   },
   {
-    "internal_cascade_rnd",
-    "internal",
-    "show Rocks'n'Diamonds elements"
+    "dc_timegate_switch",
+    "timegate_switch",
+    "switch for time gate (steel)"
   },
   {
-    "internal_cascade_rnd.active",
-    "internal",
-    "hide Rocks'n'Diamonds elements"
+    "dc_timegate_switch.active",
+    "timegate_switch",
+    "switch for time gate (steel)"
   },
   {
-    "internal_cascade_sb",
-    "internal",
-    "show Sokoban elements"
+    "dc_landmine",
+    "dc_landmine",
+    "land mine (DC style, removable)"
   },
   {
-    "internal_cascade_sb.active",
-    "internal",
-    "hide Sokoban elements"
+    "expandable_steelwall",
+    "steelwall",
+    "growing steel wall"
   },
   {
-    "internal_cascade_sp",
-    "internal",
-    "show Supaplex elements"
+    "expandable_steelwall_horizontal",
+    "steelwall",
+    "growing steel wall (horizontal)"
   },
   {
-    "internal_cascade_sp.active",
-    "internal",
-    "hide Supaplex elements"
+    "expandable_steelwall_vertical",
+    "steelwall",
+    "growing steel wall (vertical)"
   },
   {
-    "internal_cascade_dc",
-    "internal",
-    "show Diamond Caves II elements"
+    "expandable_steelwall_any",
+    "steelwall",
+    "growing steel wall (any direction)"
   },
   {
-    "internal_cascade_dc.active",
-    "internal",
-    "hide Diamond Caves II elements"
+    "em_exit_closed",
+    "em_exit",
+    "closed exit (EM style)"
   },
   {
-    "internal_cascade_dx",
-    "internal",
-    "show DX Boulderdash elements"
+    "em_exit_open",
+    "em_exit",
+    "open exit (EM style)"
   },
   {
-    "internal_cascade_dx.active",
-    "internal",
-    "hide DX Boulderdash elements"
+    "em_steel_exit_closed",
+    "em_steel_exit",
+    "closed steel exit (EM style)"
   },
   {
-    "internal_cascade_chars",
-    "internal",
-    "show text elements"
+    "em_steel_exit_open",
+    "em_steel_exit",
+    "open steel exit (EM style)"
   },
   {
-    "internal_cascade_chars.active",
-    "internal",
-    "hide text elements"
+    "dc_gate_fake_gray",
+    "gate",
+    "gray door (opened by no key)"
   },
   {
-    "internal_cascade_ce",
-    "internal",
-    "show custom elements"
+    "dc_magic_wall",
+    "dc_magic_wall",
+    "magic wall (DC style)"
   },
   {
-    "internal_cascade_ce.active",
-    "internal",
-    "hide custom elements"
+    "quicksand_fast_empty",
+    "quicksand",
+    "fast quicksand (empty)"
   },
   {
-    "internal_cascade_ge",
-    "internal",
-    "show group elements"
+    "quicksand_fast_full",
+    "quicksand",
+    "fast quicksand (with rock)"
   },
+
+  /* ----------------------------------------------------------------------- */
+  /* "real" (and therefore drawable) runtime elements                        */
+  /* ----------------------------------------------------------------------- */
+
   {
-    "internal_cascade_ge.active",
-    "internal",
-    "hide group elements"
+    "dynabomb_player_1.active",
+    "dynabomb",
+    "-"
   },
   {
-    "internal_cascade_ref",
-    "internal",
-    "show reference elements"
+    "dynabomb_player_2.active",
+    "dynabomb",
+    "-"
   },
   {
-    "internal_cascade_ref.active",
-    "internal",
-    "hide reference elements"
+    "dynabomb_player_3.active",
+    "dynabomb",
+    "-"
   },
   {
-    "internal_cascade_user",
-    "internal",
-    "show user defined elements"
+    "dynabomb_player_4.active",
+    "dynabomb",
+    "-"
   },
   {
-    "internal_cascade_user.active",
-    "internal",
-    "hide user defined elements"
+    "sp_disk_red.active",
+    "dynamite",
+    "-"
   },
   {
-    "internal_cascade_dynamic",
-    "internal",
-    "show elements used in this level"
+    "switchgate.opening",
+    "switchgate",
+    "-"
   },
   {
-    "internal_cascade_dynamic.active",
-    "internal",
-    "hide elements used in this level"
+    "switchgate.closing",
+    "switchgate",
+    "-"
   },
+  {
+    "timegate.opening",
+    "timegate",
+    "-"
+  },
+  {
+    "timegate.closing",
+    "timegate",
+    "-"
+  },
+  {
+    "pearl.breaking",
+    "pearl",
+    "-"
+  },
+  {
+    "trap.active",
+    "trap",
+    "-"
+  },
+  {
+    "invisible_steelwall.active",
+    "steelwall",
+    "-"
+  },
+  {
+    "invisible_wall.active",
+    "wall",
+    "-"
+  },
+  {
+    "invisible_sand.active",
+    "sand",
+    "-"
+  },
+  {
+    "conveyor_belt_1_left.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_1_middle.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_1_right.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_2_left.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_2_middle.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_2_right.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_3_left.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_3_middle.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_3_right.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_4_left.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_4_middle.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "conveyor_belt_4_right.active",
+    "conveyor_belt",
+    "-"
+  },
+  {
+    "exit.opening",
+    "exit",
+    "-"
+  },
+  {
+    "exit.closing",
+    "exit",
+    "-"
+  },
+  {
+    "steel_exit.opening",
+    "steel_exit",
+    "-"
+  },
+  {
+    "steel_exit.closing",
+    "steel_exit",
+    "-"
+  },
+  {
+    "em_exit.opening",
+    "em_exit",
+    "-"
+  },
+  {
+    "em_exit.closing",
+    "em_exit",
+    "-"
+  },
+  {
+    "em_steel_exit.opening",
+    "em_steel_exit",
+    "-"
+  },
+  {
+    "em_steel_exit.closing",
+    "em_steel_exit",
+    "-"
+  },
+  {
+    "sp_exit.opening",
+    "sp_exit",
+    "-"
+  },
+  {
+    "sp_exit.closing",
+    "sp_exit",
+    "-"
+  },
+  {
+    "sp_exit_open",
+    "sp_exit",
+    "-"
+  },
+  {
+    "sp_terminal.active",
+    "sp_terminal",
+    "-"
+  },
+  {
+    "sp_buggy_base.activating",
+    "sp_buggy_base",
+    "-"
+  },
+  {
+    "sp_buggy_base.active",
+    "sp_buggy_base",
+    "-"
+  },
+  {
+    "sp_murphy_clone",
+    "murphy_clone",
+    "-"
+  },
+  {
+    "amoeba.dropping",
+    "amoeba",
+    "-"
+  },
+  {
+    "quicksand.emptying",
+    "quicksand",
+    "-"
+  },
+  {
+    "quicksand_fast.emptying",
+    "quicksand",
+    "-"
+  },
+  {
+    "magic_wall.active",
+    "magic_wall",
+    "-"
+  },
+  {
+    "bd_magic_wall.active",
+    "magic_wall",
+    "-"
+  },
+  {
+    "dc_magic_wall.active",
+    "magic_wall",
+    "-"
+  },
+  {
+    "magic_wall_full",
+    "magic_wall",
+    "-"
+  },
+  {
+    "bd_magic_wall_full",
+    "magic_wall",
+    "-"
+  },
+  {
+    "dc_magic_wall_full",
+    "magic_wall",
+    "-"
+  },
+  {
+    "magic_wall.emptying",
+    "magic_wall",
+    "-"
+  },
+  {
+    "bd_magic_wall.emptying",
+    "magic_wall",
+    "-"
+  },
+  {
+    "dc_magic_wall.emptying",
+    "magic_wall",
+    "-"
+  },
+  {
+    "magic_wall_dead",
+    "magic_wall",
+    "-"
+  },
+  {
+    "bd_magic_wall_dead",
+    "magic_wall",
+    "-"
+  },
+  {
+    "dc_magic_wall_dead",
+    "magic_wall",
+    "-"
+  },
+
+  {
+    "emc_fake_grass.active",
+    "fake_grass",
+    "-"
+  },
+  {
+    "gate_1_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "gate_2_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "gate_3_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "gate_4_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "em_gate_1_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "em_gate_2_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "em_gate_3_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "em_gate_4_gray.active",
+    "gate",
+    ""
+  },
+  {
+    "emc_gate_5_gray.active",
+    "gate",
+    "",
+  },
+  {
+    "emc_gate_6_gray.active",
+    "gate",
+    "",
+  },
+  {
+    "emc_gate_7_gray.active",
+    "gate",
+    "",
+  },
+  {
+    "emc_gate_8_gray.active",
+    "gate",
+    "",
+  },
+  {
+    "dc_gate_white_gray.active",
+    "gate",
+    "",
+  },
+  {
+    "emc_dripper.active",
+    "dripper",
+    "dripper"
+  },
+  {
+    "emc_spring_bumper.active",
+    "emc_spring_bumper",
+    "spring bumper",
+  },
+
+  /* ----------------------------------------------------------------------- */
+  /* "unreal" (and therefore not drawable) runtime elements                  */
+  /* ----------------------------------------------------------------------- */
+
+  {
+    "blocked",
+    "-",
+    "-"
+  },
+  {
+    "explosion",
+    "-",
+    "-"
+  },
+  {
+    "nut.breaking",
+    "-",
+    "-"
+  },
+  {
+    "diamond.breaking",
+    "-",
+    "-"
+  },
+  {
+    "acid_splash_left",
+    "-",
+    "-"
+  },
+  {
+    "acid_splash_right",
+    "-",
+    "-"
+  },
+  {
+    "amoeba.growing",
+    "-",
+    "-"
+  },
+  {
+    "amoeba.shrinking",
+    "-",
+    "-"
+  },
+  {
+    "expandable_wall.growing",
+    "-",
+    "-"
+  },
+  {
+    "expandable_steelwall.growing",
+    "-",
+    "-"
+  },
+  {
+    "flames",
+    "-",
+    "-"
+  },
+  {
+    "player_is_leaving",
+    "-",
+    "-"
+  },
+  {
+    "player_is_exploding_1",
+    "-",
+    "-"
+  },
+  {
+    "player_is_exploding_2",
+    "-",
+    "-"
+  },
+  {
+    "player_is_exploding_3",
+    "-",
+    "-"
+  },
+  {
+    "player_is_exploding_4",
+    "-",
+    "-"
+  },
+  {
+    "quicksand.filling",
+    "quicksand",
+    "-"
+  },
+  {
+    "quicksand_fast.filling",
+    "quicksand",
+    "-"
+  },
+  {
+    "magic_wall.filling",
+    "-",
+    "-"
+  },
+  {
+    "bd_magic_wall.filling",
+    "-",
+    "-"
+  },
+  {
+    "dc_magic_wall.filling",
+    "-",
+    "-"
+  },
+  {
+    "element.snapping",
+    "-",
+    "-"
+  },
+  {
+    "diagonal.shrinking",
+    "-",
+    "-"
+  },
+  {
+    "diagonal.growing",
+    "-",
+    "-"
+  },
+
+  /* ----------------------------------------------------------------------- */
+  /* dummy elements (never used as game elements, only used as graphics)     */
+  /* ----------------------------------------------------------------------- */
+
+  {
+    "steelwall_topleft",
+    "-",
+    "-"
+  },
+  {
+    "steelwall_topright",
+    "-",
+    "-"
+  },
+  {
+    "steelwall_bottomleft",
+    "-",
+    "-"
+  },
+  {
+    "steelwall_bottomright",
+    "-",
+    "-"
+  },
+  {
+    "steelwall_horizontal",
+    "-",
+    "-"
+  },
+  {
+    "steelwall_vertical",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_topleft",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_topright",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_bottomleft",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_bottomright",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_horizontal",
+    "-",
+    "-"
+  },
+  {
+    "invisible_steelwall_vertical",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb.active",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_1",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_2",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_3",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_4",
+    "-",
+    "-"
+  },
+  {
+    "shield_normal.active",
+    "-",
+    "-"
+  },
+  {
+    "shield_deadly.active",
+    "-",
+    "-"
+  },
+  {
+    "amoeba",
+    "amoeba",
+    "-"
+  },
+  {
+    "[default]",
+    "default",
+    "-"
+  },
+  {
+    "[bd_default]",
+    "bd_default",
+    "-"
+  },
+  {
+    "[sp_default]",
+    "sp_default",
+    "-"
+  },
+  {
+    "[sb_default]",
+    "sb_default",
+    "-"
+  },
+  {
+    "internal_clipboard_custom",
+    "internal",
+    "empty custom element"
+  },
+  {
+    "internal_clipboard_change",
+    "internal",
+    "empty change page"
+  },
+  {
+    "internal_clipboard_group",
+    "internal",
+    "empty group element"
+  },
+  {
+    "internal_dummy",
+    "internal",
+    "-"
+  },
+  {
+    "internal_cascade_bd",
+    "internal",
+    "show Boulder Dash elements"
+  },
+  {
+    "internal_cascade_bd.active",
+    "internal",
+    "hide Boulder Dash elements"
+  },
+  {
+    "internal_cascade_em",
+    "internal",
+    "show Emerald Mine elements"
+  },
+  {
+    "internal_cascade_em.active",
+    "internal",
+    "hide Emerald Mine elements"
+  },
+  {
+    "internal_cascade_emc",
+    "internal",
+    "show Emerald Mine Club elements"
+  },
+  {
+    "internal_cascade_emc.active",
+    "internal",
+    "hide Emerald Mine Club elements"
+  },
+  {
+    "internal_cascade_rnd",
+    "internal",
+    "show Rocks'n'Diamonds elements"
+  },
+  {
+    "internal_cascade_rnd.active",
+    "internal",
+    "hide Rocks'n'Diamonds elements"
+  },
+  {
+    "internal_cascade_sb",
+    "internal",
+    "show Sokoban elements"
+  },
+  {
+    "internal_cascade_sb.active",
+    "internal",
+    "hide Sokoban elements"
+  },
+  {
+    "internal_cascade_sp",
+    "internal",
+    "show Supaplex elements"
+  },
+  {
+    "internal_cascade_sp.active",
+    "internal",
+    "hide Supaplex elements"
+  },
+  {
+    "internal_cascade_dc",
+    "internal",
+    "show Diamond Caves II elements"
+  },
+  {
+    "internal_cascade_dc.active",
+    "internal",
+    "hide Diamond Caves II elements"
+  },
+  {
+    "internal_cascade_dx",
+    "internal",
+    "show DX Boulderdash elements"
+  },
+  {
+    "internal_cascade_dx.active",
+    "internal",
+    "hide DX Boulderdash elements"
+  },
+  {
+    "internal_cascade_chars",
+    "internal",
+    "show text elements"
+  },
+  {
+    "internal_cascade_chars.active",
+    "internal",
+    "hide text elements"
+  },
+  {
+    "internal_cascade_steel_chars",
+    "internal",
+    "show steel text elements"
+  },
+  {
+    "internal_cascade_steel_chars.active",
+    "internal",
+    "hide steel text elements"
+  },
+  {
+    "internal_cascade_ce",
+    "internal",
+    "show custom elements"
+  },
+  {
+    "internal_cascade_ce.active",
+    "internal",
+    "hide custom elements"
+  },
+  {
+    "internal_cascade_ge",
+    "internal",
+    "show group elements"
+  },
+  {
+    "internal_cascade_ge.active",
+    "internal",
+    "hide group elements"
+  },
+  {
+    "internal_cascade_ref",
+    "internal",
+    "show reference elements"
+  },
+  {
+    "internal_cascade_ref.active",
+    "internal",
+    "hide reference elements"
+  },
+  {
+    "internal_cascade_user",
+    "internal",
+    "show user defined elements"
+  },
+  {
+    "internal_cascade_user.active",
+    "internal",
+    "hide user defined elements"
+  },
+  {
+    "internal_cascade_dynamic",
+    "internal",
+    "show elements used in this level"
+  },
+  {
+    "internal_cascade_dynamic.active",
+    "internal",
+    "hide elements used in this level"
+  },
+
+  /* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */
+
+  {
+    NULL,
+    NULL,
+    NULL
+  }
+};
+
+
+/* ------------------------------------------------------------------------- */
+/* element action and direction definitions                                  */
+/* ------------------------------------------------------------------------- */
+
+struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] =
+{
+  { ".[DEFAULT]",              ACTION_DEFAULT,                 TRUE    },
+  { ".waiting",                        ACTION_WAITING,                 TRUE    },
+  { ".falling",                        ACTION_FALLING,                 TRUE    },
+  { ".moving",                 ACTION_MOVING,                  TRUE    },
+  { ".digging",                        ACTION_DIGGING,                 FALSE   },
+  { ".snapping",               ACTION_SNAPPING,                FALSE   },
+  { ".collecting",             ACTION_COLLECTING,              FALSE   },
+  { ".dropping",               ACTION_DROPPING,                FALSE   },
+  { ".pushing",                        ACTION_PUSHING,                 FALSE   },
+  { ".walking",                        ACTION_WALKING,                 FALSE   },
+  { ".passing",                        ACTION_PASSING,                 FALSE   },
+  { ".impact",                 ACTION_IMPACT,                  FALSE   },
+  { ".breaking",               ACTION_BREAKING,                FALSE   },
+  { ".activating",             ACTION_ACTIVATING,              FALSE   },
+  { ".deactivating",           ACTION_DEACTIVATING,            FALSE   },
+  { ".opening",                        ACTION_OPENING,                 FALSE   },
+  { ".closing",                        ACTION_CLOSING,                 FALSE   },
+  { ".attacking",              ACTION_ATTACKING,               TRUE    },
+  { ".growing",                        ACTION_GROWING,                 TRUE    },
+  { ".shrinking",              ACTION_SHRINKING,               FALSE   },
+  { ".active",                 ACTION_ACTIVE,                  TRUE    },
+  { ".filling",                        ACTION_FILLING,                 FALSE   },
+  { ".emptying",               ACTION_EMPTYING,                FALSE   },
+  { ".changing",               ACTION_CHANGING,                FALSE   },
+  { ".exploding",              ACTION_EXPLODING,               FALSE   },
+  { ".boring",                 ACTION_BORING,                  FALSE   },
+  { ".boring[1]",              ACTION_BORING_1,                FALSE   },
+  { ".boring[2]",              ACTION_BORING_2,                FALSE   },
+  { ".boring[3]",              ACTION_BORING_3,                FALSE   },
+  { ".boring[4]",              ACTION_BORING_4,                FALSE   },
+  { ".boring[5]",              ACTION_BORING_5,                FALSE   },
+  { ".boring[6]",              ACTION_BORING_6,                FALSE   },
+  { ".boring[7]",              ACTION_BORING_7,                FALSE   },
+  { ".boring[8]",              ACTION_BORING_8,                FALSE   },
+  { ".boring[9]",              ACTION_BORING_9,                FALSE   },
+  { ".boring[10]",             ACTION_BORING_10,               FALSE   },
+  { ".sleeping",               ACTION_SLEEPING,                FALSE   },
+  { ".sleeping[1]",            ACTION_SLEEPING_1,              FALSE   },
+  { ".sleeping[2]",            ACTION_SLEEPING_2,              FALSE   },
+  { ".sleeping[3]",            ACTION_SLEEPING_3,              FALSE   },
+  { ".awakening",              ACTION_AWAKENING,               FALSE   },
+  { ".dying",                  ACTION_DYING,                   FALSE   },
+  { ".turning",                        ACTION_TURNING,                 FALSE   },
+  { ".turning_from_left",      ACTION_TURNING_FROM_LEFT,       FALSE   },
+  { ".turning_from_right",     ACTION_TURNING_FROM_RIGHT,      FALSE   },
+  { ".turning_from_up",                ACTION_TURNING_FROM_UP,         FALSE   },
+  { ".turning_from_down",      ACTION_TURNING_FROM_DOWN,       FALSE   },
+  { ".smashed_by_rock",                ACTION_SMASHED_BY_ROCK,         FALSE   },
+  { ".smashed_by_spring",      ACTION_SMASHED_BY_SPRING,       FALSE   },
+  { ".eating",                 ACTION_EATING,                  FALSE   },
+  { ".twinkling",              ACTION_TWINKLING,               FALSE   },
+  { ".splashing",              ACTION_SPLASHING,               FALSE   },
+  { ".page[1]",                        ACTION_PAGE_1,                  FALSE   },
+  { ".page[2]",                        ACTION_PAGE_2,                  FALSE   },
+  { ".page[3]",                        ACTION_PAGE_3,                  FALSE   },
+  { ".page[4]",                        ACTION_PAGE_4,                  FALSE   },
+  { ".page[5]",                        ACTION_PAGE_5,                  FALSE   },
+  { ".page[6]",                        ACTION_PAGE_6,                  FALSE   },
+  { ".page[7]",                        ACTION_PAGE_7,                  FALSE   },
+  { ".page[8]",                        ACTION_PAGE_8,                  FALSE   },
+  { ".page[9]",                        ACTION_PAGE_9,                  FALSE   },
+  { ".page[10]",               ACTION_PAGE_10,                 FALSE   },
+  { ".page[11]",               ACTION_PAGE_11,                 FALSE   },
+  { ".page[12]",               ACTION_PAGE_12,                 FALSE   },
+  { ".page[13]",               ACTION_PAGE_13,                 FALSE   },
+  { ".page[14]",               ACTION_PAGE_14,                 FALSE   },
+  { ".page[15]",               ACTION_PAGE_15,                 FALSE   },
+  { ".page[16]",               ACTION_PAGE_16,                 FALSE   },
+  { ".page[17]",               ACTION_PAGE_17,                 FALSE   },
+  { ".page[18]",               ACTION_PAGE_18,                 FALSE   },
+  { ".page[19]",               ACTION_PAGE_19,                 FALSE   },
+  { ".page[20]",               ACTION_PAGE_20,                 FALSE   },
+  { ".page[21]",               ACTION_PAGE_21,                 FALSE   },
+  { ".page[22]",               ACTION_PAGE_22,                 FALSE   },
+  { ".page[23]",               ACTION_PAGE_23,                 FALSE   },
+  { ".page[24]",               ACTION_PAGE_24,                 FALSE   },
+  { ".page[25]",               ACTION_PAGE_25,                 FALSE   },
+  { ".page[26]",               ACTION_PAGE_26,                 FALSE   },
+  { ".page[27]",               ACTION_PAGE_27,                 FALSE   },
+  { ".page[28]",               ACTION_PAGE_28,                 FALSE   },
+  { ".page[29]",               ACTION_PAGE_29,                 FALSE   },
+  { ".page[30]",               ACTION_PAGE_30,                 FALSE   },
+  { ".page[31]",               ACTION_PAGE_31,                 FALSE   },
+  { ".page[32]",               ACTION_PAGE_32,                 FALSE   },
+  { ".other",                  ACTION_OTHER,                   FALSE   },
+
+  /* empty suffix always matches -- check as last entry in InitSoundInfo() */
+  { "",                                ACTION_DEFAULT,                 TRUE    },
+
+  { NULL,                      0,                              0       }
+};
+
+struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] =
+{
+  { ".left",           MV_BIT_LEFT                     },
+  { ".right",          MV_BIT_RIGHT                    },
+  { ".up",             MV_BIT_UP                       },
+  { ".down",           MV_BIT_DOWN                     },
+  { ".upleft",         MV_BIT_UP                       },
+  { ".upright",                MV_BIT_RIGHT                    },
+  { ".downleft",       MV_BIT_LEFT                     },
+  { ".downright",      MV_BIT_DOWN                     },
+
+  { NULL,              0                               }
+};
+
+struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] =
+{
+  { ".[DEFAULT]",      GFX_SPECIAL_ARG_DEFAULT,        },
+  { ".TITLE",          GFX_SPECIAL_ARG_TITLE,          },
+  { ".MESSAGE",                GFX_SPECIAL_ARG_MESSAGE,        },
+  { ".MAIN",           GFX_SPECIAL_ARG_MAIN,           },
+  { ".LEVELS",         GFX_SPECIAL_ARG_LEVELS          },
+  { ".SCORES",         GFX_SPECIAL_ARG_SCORES,         },
+  { ".EDITOR",         GFX_SPECIAL_ARG_EDITOR,         },
+  { ".INFO",           GFX_SPECIAL_ARG_INFO,           },
+  { ".SETUP",          GFX_SPECIAL_ARG_SETUP,          },
+  { ".PLAYING",                GFX_SPECIAL_ARG_PLAYING,        },
+  { ".DOOR",           GFX_SPECIAL_ARG_DOOR,           },
+  { ".PREVIEW",                GFX_SPECIAL_ARG_PREVIEW,        },
+  { ".CRUMBLED",       GFX_SPECIAL_ARG_CRUMBLED,       },
+
+  /* empty suffix always matches -- check as last entry in InitMusicInfo() */
+  { "",                        GFX_SPECIAL_ARG_DEFAULT,        },
+
+  { NULL,              0,                              }
+};
 
-  /* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */
-
+struct TokenIntPtrInfo image_config_vars[] =
+{
+  {
+    "titlemessage_initial_1.x",
+    &titlemessage_initial[0].x
+  },
+  {
+    "titlemessage_initial_1.y",
+    &titlemessage_initial[0].y
+  },
+  {
+    "titlemessage_initial_1.width",
+    &titlemessage_initial[0].width
+  },
+  {
+    "titlemessage_initial_1.height",
+    &titlemessage_initial[0].height
+  },
+  {
+    "titlemessage_initial_1.chars",
+    &titlemessage_initial[0].chars
+  },
+  {
+    "titlemessage_initial_1.lines",
+    &titlemessage_initial[0].lines
+  },
+  {
+    "titlemessage_initial_1.align",
+    &titlemessage_initial[0].align
+  },
+  {
+    "titlemessage_initial_1.autowrap",
+    &titlemessage_initial[0].autowrap
+  },
+  {
+    "titlemessage_initial_1.centered",
+    &titlemessage_initial[0].centered
+  },
+  {
+    "titlemessage_initial_1.skip_comments",
+    &titlemessage_initial[0].skip_comments
+  },
+  {
+    "titlemessage_initial_1.sort_priority",
+    &titlemessage_initial[0].sort_priority
+  },
+  {
+    "titlemessage_initial_2.x",
+    &titlemessage_initial[1].x
+  },
+  {
+    "titlemessage_initial_2.y",
+    &titlemessage_initial[1].y
+  },
+  {
+    "titlemessage_initial_2.width",
+    &titlemessage_initial[1].width
+  },
+  {
+    "titlemessage_initial_2.height",
+    &titlemessage_initial[1].height
+  },
+  {
+    "titlemessage_initial_2.chars",
+    &titlemessage_initial[1].chars
+  },
+  {
+    "titlemessage_initial_2.lines",
+    &titlemessage_initial[1].lines
+  },
+  {
+    "titlemessage_initial_2.align",
+    &titlemessage_initial[1].align
+  },
+  {
+    "titlemessage_initial_2.autowrap",
+    &titlemessage_initial[1].autowrap
+  },
+  {
+    "titlemessage_initial_2.centered",
+    &titlemessage_initial[1].centered
+  },
+  {
+    "titlemessage_initial_2.skip_comments",
+    &titlemessage_initial[1].skip_comments
+  },
+  {
+    "titlemessage_initial_2.sort_priority",
+    &titlemessage_initial[1].sort_priority
+  },
+  {
+    "titlemessage_initial_3.x",
+    &titlemessage_initial[2].x
+  },
+  {
+    "titlemessage_initial_3.y",
+    &titlemessage_initial[2].y
+  },
+  {
+    "titlemessage_initial_3.width",
+    &titlemessage_initial[2].width
+  },
+  {
+    "titlemessage_initial_3.height",
+    &titlemessage_initial[2].height
+  },
+  {
+    "titlemessage_initial_3.chars",
+    &titlemessage_initial[2].chars
+  },
+  {
+    "titlemessage_initial_3.lines",
+    &titlemessage_initial[2].lines
+  },
+  {
+    "titlemessage_initial_3.align",
+    &titlemessage_initial[2].align
+  },
+  {
+    "titlemessage_initial_3.autowrap",
+    &titlemessage_initial[2].autowrap
+  },
+  {
+    "titlemessage_initial_3.centered",
+    &titlemessage_initial[2].centered
+  },
+  {
+    "titlemessage_initial_3.skip_comments",
+    &titlemessage_initial[2].skip_comments
+  },
+  {
+    "titlemessage_initial_3.sort_priority",
+    &titlemessage_initial[2].sort_priority
+  },
+  {
+    "titlemessage_initial_4.x",
+    &titlemessage_initial[3].x
+  },
+  {
+    "titlemessage_initial_4.y",
+    &titlemessage_initial[3].y
+  },
+  {
+    "titlemessage_initial_4.width",
+    &titlemessage_initial[3].width
+  },
+  {
+    "titlemessage_initial_4.height",
+    &titlemessage_initial[3].height
+  },
+  {
+    "titlemessage_initial_4.chars",
+    &titlemessage_initial[3].chars
+  },
+  {
+    "titlemessage_initial_4.lines",
+    &titlemessage_initial[3].lines
+  },
+  {
+    "titlemessage_initial_4.align",
+    &titlemessage_initial[3].align
+  },
+  {
+    "titlemessage_initial_4.autowrap",
+    &titlemessage_initial[3].autowrap
+  },
+  {
+    "titlemessage_initial_4.centered",
+    &titlemessage_initial[3].centered
+  },
+  {
+    "titlemessage_initial_4.skip_comments",
+    &titlemessage_initial[3].skip_comments
+  },
+  {
+    "titlemessage_initial_4.sort_priority",
+    &titlemessage_initial[3].sort_priority
+  },
+  {
+    "titlemessage_initial_5.x",
+    &titlemessage_initial[4].x
+  },
+  {
+    "titlemessage_initial_5.y",
+    &titlemessage_initial[4].y
+  },
+  {
+    "titlemessage_initial_5.width",
+    &titlemessage_initial[4].width
+  },
+  {
+    "titlemessage_initial_5.height",
+    &titlemessage_initial[4].height
+  },
+  {
+    "titlemessage_initial_5.chars",
+    &titlemessage_initial[4].chars
+  },
+  {
+    "titlemessage_initial_5.lines",
+    &titlemessage_initial[4].lines
+  },
+  {
+    "titlemessage_initial_5.align",
+    &titlemessage_initial[4].align
+  },
+  {
+    "titlemessage_initial_5.autowrap",
+    &titlemessage_initial[4].autowrap
+  },
+  {
+    "titlemessage_initial_5.centered",
+    &titlemessage_initial[4].centered
+  },
+  {
+    "titlemessage_initial_5.skip_comments",
+    &titlemessage_initial[4].skip_comments
+  },
+  {
+    "titlemessage_initial_5.sort_priority",
+    &titlemessage_initial[4].sort_priority
+  },
+  {
+    "titlemessage_1.x",
+    &titlemessage[0].x
+  },
+  {
+    "titlemessage_1.y",
+    &titlemessage[0].y
+  },
+  {
+    "titlemessage_1.width",
+    &titlemessage[0].width
+  },
+  {
+    "titlemessage_1.height",
+    &titlemessage[0].height
+  },
+  {
+    "titlemessage_1.chars",
+    &titlemessage[0].chars
+  },
+  {
+    "titlemessage_1.lines",
+    &titlemessage[0].lines
+  },
+  {
+    "titlemessage_1.align",
+    &titlemessage[0].align
+  },
+  {
+    "titlemessage_1.autowrap",
+    &titlemessage[0].autowrap
+  },
+  {
+    "titlemessage_1.centered",
+    &titlemessage[0].centered
+  },
+  {
+    "titlemessage_1.skip_comments",
+    &titlemessage[0].skip_comments
+  },
+  {
+    "titlemessage_1.sort_priority",
+    &titlemessage[0].sort_priority
+  },
+  {
+    "titlemessage_2.x",
+    &titlemessage[1].x
+  },
+  {
+    "titlemessage_2.y",
+    &titlemessage[1].y
+  },
+  {
+    "titlemessage_2.width",
+    &titlemessage[1].width
+  },
+  {
+    "titlemessage_2.height",
+    &titlemessage[1].height
+  },
+  {
+    "titlemessage_2.chars",
+    &titlemessage[1].chars
+  },
+  {
+    "titlemessage_2.lines",
+    &titlemessage[1].lines
+  },
+  {
+    "titlemessage_2.align",
+    &titlemessage[1].align
+  },
+  {
+    "titlemessage_2.autowrap",
+    &titlemessage[1].autowrap
+  },
+  {
+    "titlemessage_2.centered",
+    &titlemessage[1].centered
+  },
+  {
+    "titlemessage_2.skip_comments",
+    &titlemessage[1].skip_comments
+  },
+  {
+    "titlemessage_2.sort_priority",
+    &titlemessage[1].sort_priority
+  },
+  {
+    "titlemessage_3.x",
+    &titlemessage[2].x
+  },
+  {
+    "titlemessage_3.y",
+    &titlemessage[2].y
+  },
+  {
+    "titlemessage_3.width",
+    &titlemessage[2].width
+  },
+  {
+    "titlemessage_3.height",
+    &titlemessage[2].height
+  },
+  {
+    "titlemessage_3.chars",
+    &titlemessage[2].chars
+  },
+  {
+    "titlemessage_3.lines",
+    &titlemessage[2].lines
+  },
+  {
+    "titlemessage_3.align",
+    &titlemessage[2].align
+  },
+  {
+    "titlemessage_3.autowrap",
+    &titlemessage[2].autowrap
+  },
+  {
+    "titlemessage_3.centered",
+    &titlemessage[2].centered
+  },
+  {
+    "titlemessage_3.skip_comments",
+    &titlemessage[2].skip_comments
+  },
+  {
+    "titlemessage_3.sort_priority",
+    &titlemessage[2].sort_priority
+  },
+  {
+    "titlemessage_4.x",
+    &titlemessage[3].x
+  },
+  {
+    "titlemessage_4.y",
+    &titlemessage[3].y
+  },
+  {
+    "titlemessage_4.width",
+    &titlemessage[3].width
+  },
+  {
+    "titlemessage_4.height",
+    &titlemessage[3].height
+  },
+  {
+    "titlemessage_4.chars",
+    &titlemessage[3].chars
+  },
+  {
+    "titlemessage_4.lines",
+    &titlemessage[3].lines
+  },
+  {
+    "titlemessage_4.align",
+    &titlemessage[3].align
+  },
+  {
+    "titlemessage_4.autowrap",
+    &titlemessage[3].autowrap
+  },
+  {
+    "titlemessage_4.centered",
+    &titlemessage[3].centered
+  },
+  {
+    "titlemessage_4.skip_comments",
+    &titlemessage[3].skip_comments
+  },
+  {
+    "titlemessage_4.sort_priority",
+    &titlemessage[3].sort_priority
+  },
+  {
+    "titlemessage_5.x",
+    &titlemessage[4].x
+  },
+  {
+    "titlemessage_5.y",
+    &titlemessage[4].y
+  },
+  {
+    "titlemessage_5.width",
+    &titlemessage[4].width
+  },
+  {
+    "titlemessage_5.height",
+    &titlemessage[4].height
+  },
+  {
+    "titlemessage_5.chars",
+    &titlemessage[4].chars
+  },
+  {
+    "titlemessage_5.lines",
+    &titlemessage[4].lines
+  },
+  {
+    "titlemessage_5.align",
+    &titlemessage[4].align
+  },
+  {
+    "titlemessage_5.autowrap",
+    &titlemessage[4].autowrap
+  },
+  {
+    "titlemessage_5.centered",
+    &titlemessage[4].centered
+  },
+  {
+    "titlemessage_5.skip_comments",
+    &titlemessage[4].skip_comments
+  },
   {
-    NULL,
-    NULL,
-    NULL
-  }
-};
-
-
-/* ------------------------------------------------------------------------- */
-/* element action and direction definitions                                  */
-/* ------------------------------------------------------------------------- */
-
-struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] =
-{
-  { ".[DEFAULT]",              ACTION_DEFAULT,                 TRUE    },
-  { ".waiting",                        ACTION_WAITING,                 TRUE    },
-  { ".falling",                        ACTION_FALLING,                 TRUE    },
-  { ".moving",                 ACTION_MOVING,                  TRUE    },
-  { ".digging",                        ACTION_DIGGING,                 FALSE   },
-  { ".snapping",               ACTION_SNAPPING,                FALSE   },
-  { ".collecting",             ACTION_COLLECTING,              FALSE   },
-  { ".dropping",               ACTION_DROPPING,                FALSE   },
-  { ".pushing",                        ACTION_PUSHING,                 FALSE   },
-  { ".walking",                        ACTION_WALKING,                 FALSE   },
-  { ".passing",                        ACTION_PASSING,                 FALSE   },
-  { ".impact",                 ACTION_IMPACT,                  FALSE   },
-  { ".breaking",               ACTION_BREAKING,                FALSE   },
-  { ".activating",             ACTION_ACTIVATING,              FALSE   },
-  { ".deactivating",           ACTION_DEACTIVATING,            FALSE   },
-  { ".opening",                        ACTION_OPENING,                 FALSE   },
-  { ".closing",                        ACTION_CLOSING,                 FALSE   },
-  { ".attacking",              ACTION_ATTACKING,               TRUE    },
-  { ".growing",                        ACTION_GROWING,                 TRUE    },
-  { ".shrinking",              ACTION_SHRINKING,               FALSE   },
-  { ".active",                 ACTION_ACTIVE,                  TRUE    },
-  { ".filling",                        ACTION_FILLING,                 FALSE   },
-  { ".emptying",               ACTION_EMPTYING,                FALSE   },
-  { ".changing",               ACTION_CHANGING,                FALSE   },
-  { ".exploding",              ACTION_EXPLODING,               FALSE   },
-  { ".boring",                 ACTION_BORING,                  FALSE   },
-  { ".boring[1]",              ACTION_BORING_1,                FALSE   },
-  { ".boring[2]",              ACTION_BORING_2,                FALSE   },
-  { ".boring[3]",              ACTION_BORING_3,                FALSE   },
-  { ".boring[4]",              ACTION_BORING_4,                FALSE   },
-  { ".boring[5]",              ACTION_BORING_5,                FALSE   },
-  { ".boring[6]",              ACTION_BORING_6,                FALSE   },
-  { ".boring[7]",              ACTION_BORING_7,                FALSE   },
-  { ".boring[8]",              ACTION_BORING_8,                FALSE   },
-  { ".boring[9]",              ACTION_BORING_9,                FALSE   },
-  { ".boring[10]",             ACTION_BORING_10,               FALSE   },
-  { ".sleeping",               ACTION_SLEEPING,                FALSE   },
-  { ".sleeping[1]",            ACTION_SLEEPING_1,              FALSE   },
-  { ".sleeping[2]",            ACTION_SLEEPING_2,              FALSE   },
-  { ".sleeping[3]",            ACTION_SLEEPING_3,              FALSE   },
-  { ".awakening",              ACTION_AWAKENING,               FALSE   },
-  { ".dying",                  ACTION_DYING,                   FALSE   },
-  { ".turning",                        ACTION_TURNING,                 FALSE   },
-  { ".turning_from_left",      ACTION_TURNING_FROM_LEFT,       FALSE   },
-  { ".turning_from_right",     ACTION_TURNING_FROM_RIGHT,      FALSE   },
-  { ".turning_from_up",                ACTION_TURNING_FROM_UP,         FALSE   },
-  { ".turning_from_down",      ACTION_TURNING_FROM_DOWN,       FALSE   },
-  { ".smashed_by_rock",                ACTION_SMASHED_BY_ROCK,         FALSE   },
-  { ".smashed_by_spring",      ACTION_SMASHED_BY_SPRING,       FALSE   },
-  { ".eating",                 ACTION_EATING,                  FALSE   },
-  { ".twinkling",              ACTION_TWINKLING,               FALSE   },
-  { ".splashing",              ACTION_SPLASHING,               FALSE   },
-  { ".page[1]",                        ACTION_PAGE_1,                  FALSE   },
-  { ".page[2]",                        ACTION_PAGE_2,                  FALSE   },
-  { ".page[3]",                        ACTION_PAGE_3,                  FALSE   },
-  { ".page[4]",                        ACTION_PAGE_4,                  FALSE   },
-  { ".page[5]",                        ACTION_PAGE_5,                  FALSE   },
-  { ".page[6]",                        ACTION_PAGE_6,                  FALSE   },
-  { ".page[7]",                        ACTION_PAGE_7,                  FALSE   },
-  { ".page[8]",                        ACTION_PAGE_8,                  FALSE   },
-  { ".page[9]",                        ACTION_PAGE_9,                  FALSE   },
-  { ".page[10]",               ACTION_PAGE_10,                 FALSE   },
-  { ".page[11]",               ACTION_PAGE_11,                 FALSE   },
-  { ".page[12]",               ACTION_PAGE_12,                 FALSE   },
-  { ".page[13]",               ACTION_PAGE_13,                 FALSE   },
-  { ".page[14]",               ACTION_PAGE_14,                 FALSE   },
-  { ".page[15]",               ACTION_PAGE_15,                 FALSE   },
-  { ".page[16]",               ACTION_PAGE_16,                 FALSE   },
-  { ".page[17]",               ACTION_PAGE_17,                 FALSE   },
-  { ".page[18]",               ACTION_PAGE_18,                 FALSE   },
-  { ".page[19]",               ACTION_PAGE_19,                 FALSE   },
-  { ".page[20]",               ACTION_PAGE_20,                 FALSE   },
-  { ".page[21]",               ACTION_PAGE_21,                 FALSE   },
-  { ".page[22]",               ACTION_PAGE_22,                 FALSE   },
-  { ".page[23]",               ACTION_PAGE_23,                 FALSE   },
-  { ".page[24]",               ACTION_PAGE_24,                 FALSE   },
-  { ".page[25]",               ACTION_PAGE_25,                 FALSE   },
-  { ".page[26]",               ACTION_PAGE_26,                 FALSE   },
-  { ".page[27]",               ACTION_PAGE_27,                 FALSE   },
-  { ".page[28]",               ACTION_PAGE_28,                 FALSE   },
-  { ".page[29]",               ACTION_PAGE_29,                 FALSE   },
-  { ".page[30]",               ACTION_PAGE_30,                 FALSE   },
-  { ".page[31]",               ACTION_PAGE_31,                 FALSE   },
-  { ".page[32]",               ACTION_PAGE_32,                 FALSE   },
-  { ".other",                  ACTION_OTHER,                   FALSE   },
-
-  /* empty suffix always matches -- check as last entry in InitSoundInfo() */
-  { "",                                ACTION_DEFAULT,                 TRUE    },
-
-  { NULL,                      0,                              0       }
-};
-
-struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] =
-{
-  { ".left",           MV_BIT_LEFT                     },
-  { ".right",          MV_BIT_RIGHT                    },
-  { ".up",             MV_BIT_UP                       },
-  { ".down",           MV_BIT_DOWN                     },
-  { ".upleft",         MV_BIT_UP                       },
-  { ".upright",                MV_BIT_RIGHT                    },
-  { ".downleft",       MV_BIT_LEFT                     },
-  { ".downright",      MV_BIT_DOWN                     },
-
-  { NULL,              0                               }
-};
+    "titlemessage_5.sort_priority",
+    &titlemessage[4].sort_priority
+  },
 
-struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] =
-{
-  { ".[DEFAULT]",      GFX_SPECIAL_ARG_DEFAULT,        },
-  { ".TITLE",          GFX_SPECIAL_ARG_TITLE,          },
-  { ".MAIN",           GFX_SPECIAL_ARG_MAIN,           },
-  { ".LEVELS",         GFX_SPECIAL_ARG_LEVELS          },
-  { ".SCORES",         GFX_SPECIAL_ARG_SCORES,         },
-  { ".EDITOR",         GFX_SPECIAL_ARG_EDITOR,         },
-  { ".INFO",           GFX_SPECIAL_ARG_INFO,           },
-  { ".SETUP",          GFX_SPECIAL_ARG_SETUP,          },
-  { ".PLAYING",                GFX_SPECIAL_ARG_PLAYING,        },
-  { ".DOOR",           GFX_SPECIAL_ARG_DOOR,           },
-  { ".PREVIEW",                GFX_SPECIAL_ARG_PREVIEW,        },
-  { ".CRUMBLED",       GFX_SPECIAL_ARG_CRUMBLED,       },
+  {
+    "readme.x",
+    &readme.x
+  },
+  {
+    "readme.y",
+    &readme.y
+  },
+  {
+    "readme.width",
+    &readme.width
+  },
+  {
+    "readme.height",
+    &readme.height
+  },
+  {
+    "readme.chars",
+    &readme.chars
+  },
+  {
+    "readme.lines",
+    &readme.lines
+  },
+  {
+    "readme.align",
+    &readme.align
+  },
+  {
+    "readme.autowrap",
+    &readme.autowrap
+  },
+  {
+    "readme.centered",
+    &readme.centered
+  },
+  {
+    "readme.skip_comments",
+    &readme.skip_comments
+  },
+  {
+    "readme.sort_priority",
+    &readme.sort_priority
+  },
 
-  /* empty suffix always matches -- check as last entry in InitMusicInfo() */
-  { "",                        GFX_SPECIAL_ARG_DEFAULT,        },
+  {
+    "global.num_toons",
+    &global.num_toons
+  },
 
-  { NULL,              0,                              }
-};
+  {
+    "border.draw_masked.TITLE",
+    &border.draw_masked[GFX_SPECIAL_ARG_TITLE]
+  },
+  {
+    "border.draw_masked.MAIN",
+    &border.draw_masked[GFX_SPECIAL_ARG_MAIN]
+  },
+  {
+    "border.draw_masked.LEVELS",
+    &border.draw_masked[GFX_SPECIAL_ARG_LEVELS]
+  },
+  {
+    "border.draw_masked.SCORES",
+    &border.draw_masked[GFX_SPECIAL_ARG_SCORES]
+  },
+  {
+    "border.draw_masked.EDITOR",
+    &border.draw_masked[GFX_SPECIAL_ARG_EDITOR]
+  },
+  {
+    "border.draw_masked.INFO",
+    &border.draw_masked[GFX_SPECIAL_ARG_INFO]
+  },
+  {
+    "border.draw_masked.SETUP",
+    &border.draw_masked[GFX_SPECIAL_ARG_SETUP]
+  },
+  {
+    "border.draw_masked.PLAYING",
+    &border.draw_masked[GFX_SPECIAL_ARG_PLAYING]
+  },
+  {
+    "border.draw_masked.DOOR",
+    &border.draw_masked[GFX_SPECIAL_ARG_DOOR]
+  },
 
-struct TokenIntPtrInfo image_config_vars[] =
-{
-  { "global.num_toons",                &global.num_toons                             },
+  {
+    "title.fade_delay",
+    &title.fade_delay
+  },
+  {
+    "title.post_delay",
+    &title.post_delay
+  },
+  {
+    "title.auto_delay",
+    &title.auto_delay
+  },
 
-  { "border.draw_masked.TITLE",         &border.draw_masked[GFX_SPECIAL_ARG_TITLE]   },
-  { "border.draw_masked.MAIN",  &border.draw_masked[GFX_SPECIAL_ARG_MAIN]    },
-  { "border.draw_masked.LEVELS", &border.draw_masked[GFX_SPECIAL_ARG_LEVELS]  },
-  { "border.draw_masked.SCORES", &border.draw_masked[GFX_SPECIAL_ARG_SCORES]  },
-  { "border.draw_masked.EDITOR", &border.draw_masked[GFX_SPECIAL_ARG_EDITOR]  },
-  { "border.draw_masked.INFO",  &border.draw_masked[GFX_SPECIAL_ARG_INFO]    },
-  { "border.draw_masked.SETUP",         &border.draw_masked[GFX_SPECIAL_ARG_SETUP]   },
-  { "border.draw_masked.PLAYING",&border.draw_masked[GFX_SPECIAL_ARG_PLAYING] },
-  { "border.draw_masked.DOOR",  &border.draw_masked[GFX_SPECIAL_ARG_DOOR]    },
+  {
+    "menu.fade_delay",
+    &menu.fade_delay
+  },
+  {
+    "menu.post_delay",
+    &menu.post_delay
+  },
+  {
+    "menu.auto_delay",
+    &menu.auto_delay
+  },
 
-  { "menu.draw_xoffset",       &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT]   },
-  { "menu.draw_yoffset",       &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT]   },
-  { "menu.draw_xoffset.MAIN",  &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN]      },
-  { "menu.draw_yoffset.MAIN",  &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN]      },
-  { "menu.draw_xoffset.LEVELS",        &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS]    },
-  { "menu.draw_yoffset.LEVELS",        &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS]    },
-  { "menu.draw_xoffset.SCORES",        &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES]    },
-  { "menu.draw_yoffset.SCORES",        &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES]    },
-  { "menu.draw_xoffset.EDITOR",        &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR]    },
-  { "menu.draw_yoffset.EDITOR",        &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR]    },
-  { "menu.draw_xoffset.INFO",  &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO]      },
-  { "menu.draw_yoffset.INFO",  &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO]      },
-  { "menu.draw_xoffset.INFO[ELEMENTS]",
-    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS]                   },
-  { "menu.draw_yoffset.INFO[ELEMENTS]",
-    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS]                   },
-  { "menu.draw_xoffset.INFO[MUSIC]",
-    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC]                              },
-  { "menu.draw_yoffset.INFO[MUSIC]",
-    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC]                              },
-  { "menu.draw_xoffset.INFO[CREDITS]",
-    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS]                    },
-  { "menu.draw_yoffset.INFO[CREDITS]",
-    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS]                    },
-  { "menu.draw_xoffset.INFO[PROGRAM]",
-    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM]                    },
-  { "menu.draw_yoffset.INFO[PROGRAM]",
-    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM]                    },
-  { "menu.draw_xoffset.INFO[LEVELSET]",
-    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET]                   },
-  { "menu.draw_yoffset.INFO[LEVELSET]",
-    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET]                   },
-  { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP]     },
-  { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP]     },
+  {
+    "menu.draw_xoffset",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT]
+  },
+  {
+    "menu.draw_yoffset",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT]
+  },
+  {
+    "menu.draw_xoffset.MAIN",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN]
+  },
+  {
+    "menu.draw_yoffset.MAIN",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN]
+  },
+  {
+    "menu.draw_xoffset.LEVELS",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS]
+  },
+  {
+    "menu.draw_yoffset.LEVELS",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS]
+  },
+  {
+    "menu.draw_xoffset.SCORES",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES]
+  },
+  {
+    "menu.draw_yoffset.SCORES",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES]
+  },
+  {
+    "menu.draw_xoffset.EDITOR",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR]
+  },
+  {
+    "menu.draw_yoffset.EDITOR",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR]
+  },
+  {
+    "menu.draw_xoffset.INFO",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO]
+  },
+  {
+    "menu.draw_yoffset.INFO",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO]
+  },
+  {
+    "menu.draw_xoffset.INFO[ELEMENTS]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS]
+  },
+  {
+    "menu.draw_yoffset.INFO[ELEMENTS]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS]
+  },
+  {
+    "menu.draw_xoffset.INFO[MUSIC]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC]
+  },
+  {
+    "menu.draw_yoffset.INFO[MUSIC]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC]
+  },
+  {
+    "menu.draw_xoffset.INFO[CREDITS]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS]
+  },
+  {
+    "menu.draw_yoffset.INFO[CREDITS]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS]
+  },
+  {
+    "menu.draw_xoffset.INFO[PROGRAM]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM]
+  },
+  {
+    "menu.draw_yoffset.INFO[PROGRAM]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM]
+  },
+  {
+    "menu.draw_xoffset.INFO[VERSION]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_VERSION]
+  },
+  {
+    "menu.draw_yoffset.INFO[VERSION]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_VERSION]
+  },
+  {
+    "menu.draw_xoffset.INFO[LEVELSET]",
+    &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET]
+  },
+  {
+    "menu.draw_yoffset.INFO[LEVELSET]",
+    &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET]
+  },
+  {
+    "menu.draw_xoffset.SETUP",
+    &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP]
+  },
+  {
+    "menu.draw_yoffset.SETUP",
+    &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP]
+  },
 
-  { "menu.scrollbar_xoffset",  &menu.scrollbar_xoffset                       },
+  {
+    "menu.scrollbar_xoffset",
+    &menu.scrollbar_xoffset
+  },
 
-  { "menu.list_size",          &menu.list_size[GFX_SPECIAL_ARG_DEFAULT]      },
-  { "menu.list_size.LEVELS",   &menu.list_size[GFX_SPECIAL_ARG_LEVELS]       },
-  { "menu.list_size.SCORES",   &menu.list_size[GFX_SPECIAL_ARG_SCORES]       },
-  { "menu.list_size.INFO",     &menu.list_size[GFX_SPECIAL_ARG_INFO]         },
+  {
+    "menu.list_size",
+    &menu.list_size[GFX_SPECIAL_ARG_DEFAULT]
+  },
+  {
+    "menu.list_size.LEVELS",
+    &menu.list_size[GFX_SPECIAL_ARG_LEVELS]
+  },
+  {
+    "menu.list_size.SCORES",
+    &menu.list_size[GFX_SPECIAL_ARG_SCORES]
+  },
+  {
+    "menu.list_size.INFO",
+    &menu.list_size[GFX_SPECIAL_ARG_INFO]
+  },
 
-  { "menu.fade_delay",         &menu.fade_delay                              },
-  { "menu.post_delay",         &menu.post_delay                              },
+  { "main.button.name.x",              &menu.main.button.name.x              },
+  { "main.button.name.y",              &menu.main.button.name.y              },
+  { "main.button.levels.x",            &menu.main.button.levels.x            },
+  { "main.button.levels.y",            &menu.main.button.levels.y            },
+  { "main.button.scores.x",            &menu.main.button.scores.x            },
+  { "main.button.scores.y",            &menu.main.button.scores.y            },
+  { "main.button.editor.x",            &menu.main.button.editor.x            },
+  { "main.button.editor.y",            &menu.main.button.editor.y            },
+  { "main.button.info.x",              &menu.main.button.info.x              },
+  { "main.button.info.y",              &menu.main.button.info.y              },
+  { "main.button.game.x",              &menu.main.button.game.x              },
+  { "main.button.game.y",              &menu.main.button.game.y              },
+  { "main.button.setup.x",             &menu.main.button.setup.x             },
+  { "main.button.setup.y",             &menu.main.button.setup.y             },
+  { "main.button.quit.x",              &menu.main.button.quit.x              },
+  { "main.button.quit.y",              &menu.main.button.quit.y              },
 
-  { "main.button.name.x",      &menu.main.button.name.x                      },
-  { "main.button.name.y",      &menu.main.button.name.y                      },
-  { "main.button.levels.x",    &menu.main.button.levels.x                    },
-  { "main.button.levels.y",    &menu.main.button.levels.y                    },
-  { "main.button.scores.x",    &menu.main.button.scores.x                    },
-  { "main.button.scores.y",    &menu.main.button.scores.y                    },
-  { "main.button.editor.x",    &menu.main.button.editor.x                    },
-  { "main.button.editor.y",    &menu.main.button.editor.y                    },
-  { "main.button.info.x",      &menu.main.button.info.x                      },
-  { "main.button.info.y",      &menu.main.button.info.y                      },
-  { "main.button.game.x",      &menu.main.button.game.x                      },
-  { "main.button.game.y",      &menu.main.button.game.y                      },
-  { "main.button.setup.x",     &menu.main.button.setup.x                     },
-  { "main.button.setup.y",     &menu.main.button.setup.y                     },
-  { "main.button.quit.x",      &menu.main.button.quit.x                      },
-  { "main.button.quit.y",      &menu.main.button.quit.y                      },
-  { "main.button.prev_level.x",        &menu.main.button.prev_level.x                },
-  { "main.button.prev_level.y",        &menu.main.button.prev_level.y                },
-  { "main.button.next_level.x",        &menu.main.button.next_level.x                },
-  { "main.button.next_level.y",        &menu.main.button.next_level.y                },
+  { "main.button.prev_level.x",                &menu.main.button.prev_level.x        },
+  { "main.button.prev_level.y",                &menu.main.button.prev_level.y        },
+  { "main.button.next_level.x",                &menu.main.button.next_level.x        },
+  { "main.button.next_level.y",                &menu.main.button.next_level.y        },
 
-  { "main.text.name.x",                &menu.main.text.name.x                        },
-  { "main.text.name.y",                &menu.main.text.name.y                        },
-  { "main.text.name.width",    &menu.main.text.name.width                    },
-  { "main.text.name.height",   &menu.main.text.name.height                   },
-  { "main.text.levels.x",      &menu.main.text.levels.x                      },
-  { "main.text.levels.y",      &menu.main.text.levels.y                      },
-  { "main.text.levels.width",  &menu.main.text.levels.width                  },
-  { "main.text.levels.height", &menu.main.text.levels.height                 },
-  { "main.text.scores.x",      &menu.main.text.scores.x                      },
-  { "main.text.scores.y",      &menu.main.text.scores.y                      },
-  { "main.text.scores.width",  &menu.main.text.scores.width                  },
-  { "main.text.scores.height", &menu.main.text.scores.height                 },
-  { "main.text.editor.x",      &menu.main.text.editor.x                      },
-  { "main.text.editor.y",      &menu.main.text.editor.y                      },
-  { "main.text.editor.width",  &menu.main.text.editor.width                  },
-  { "main.text.editor.height", &menu.main.text.editor.height                 },
-  { "main.text.info.x",                &menu.main.text.info.x                        },
-  { "main.text.info.y",                &menu.main.text.info.y                        },
-  { "main.text.info.width",    &menu.main.text.info.width                    },
-  { "main.text.info.height",   &menu.main.text.info.height                   },
-  { "main.text.game.x",                &menu.main.text.game.x                        },
-  { "main.text.game.y",                &menu.main.text.game.y                        },
-  { "main.text.game.width",    &menu.main.text.game.width                    },
-  { "main.text.game.height",   &menu.main.text.game.height                   },
-  { "main.text.setup.x",       &menu.main.text.setup.x                       },
-  { "main.text.setup.y",       &menu.main.text.setup.y                       },
-  { "main.text.setup.width",   &menu.main.text.setup.width                   },
-  { "main.text.setup.height",  &menu.main.text.setup.height                  },
-  { "main.text.quit.x",                &menu.main.text.quit.x                        },
-  { "main.text.quit.y",                &menu.main.text.quit.y                        },
-  { "main.text.quit.width",    &menu.main.text.quit.width                    },
-  { "main.text.quit.height",   &menu.main.text.quit.height                   },
+  { "main.text.name.x",                        &menu.main.text.name.x                },
+  { "main.text.name.y",                        &menu.main.text.name.y                },
+  { "main.text.name.width",            &menu.main.text.name.width            },
+  { "main.text.name.height",           &menu.main.text.name.height           },
+  { "main.text.name.align",            &menu.main.text.name.align            },
+  { "main.text.levels.x",              &menu.main.text.levels.x              },
+  { "main.text.levels.y",              &menu.main.text.levels.y              },
+  { "main.text.levels.width",          &menu.main.text.levels.width          },
+  { "main.text.levels.height",         &menu.main.text.levels.height         },
+  { "main.text.levels.align",          &menu.main.text.levels.align          },
+  { "main.text.scores.x",              &menu.main.text.scores.x              },
+  { "main.text.scores.y",              &menu.main.text.scores.y              },
+  { "main.text.scores.width",          &menu.main.text.scores.width          },
+  { "main.text.scores.height",         &menu.main.text.scores.height         },
+  { "main.text.scores.align",          &menu.main.text.scores.align          },
+  { "main.text.editor.x",              &menu.main.text.editor.x              },
+  { "main.text.editor.y",              &menu.main.text.editor.y              },
+  { "main.text.editor.width",          &menu.main.text.editor.width          },
+  { "main.text.editor.height",         &menu.main.text.editor.height         },
+  { "main.text.editor.align",          &menu.main.text.editor.align          },
+  { "main.text.info.x",                        &menu.main.text.info.x                },
+  { "main.text.info.y",                        &menu.main.text.info.y                },
+  { "main.text.info.width",            &menu.main.text.info.width            },
+  { "main.text.info.height",           &menu.main.text.info.height           },
+  { "main.text.info.align",            &menu.main.text.info.align            },
+  { "main.text.game.x",                        &menu.main.text.game.x                },
+  { "main.text.game.y",                        &menu.main.text.game.y                },
+  { "main.text.game.width",            &menu.main.text.game.width            },
+  { "main.text.game.height",           &menu.main.text.game.height           },
+  { "main.text.game.align",            &menu.main.text.game.align            },
+  { "main.text.setup.x",               &menu.main.text.setup.x               },
+  { "main.text.setup.y",               &menu.main.text.setup.y               },
+  { "main.text.setup.width",           &menu.main.text.setup.width           },
+  { "main.text.setup.height",          &menu.main.text.setup.height          },
+  { "main.text.setup.align",           &menu.main.text.setup.align           },
+  { "main.text.quit.x",                        &menu.main.text.quit.x                },
+  { "main.text.quit.y",                        &menu.main.text.quit.y                },
+  { "main.text.quit.width",            &menu.main.text.quit.width            },
+  { "main.text.quit.height",           &menu.main.text.quit.height           },
+  { "main.text.quit.align",            &menu.main.text.quit.align            },
 
-  { "main.text.current_level.x",&menu.main.text.current_level.x                      },
-  { "main.text.current_level.y",&menu.main.text.current_level.y                      },
-  { "main.text.first_level.x", &menu.main.text.first_level.x                 },
-  { "main.text.first_level.y", &menu.main.text.first_level.y                 },
-  { "main.text.last_level.x",  &menu.main.text.last_level.x                  },
-  { "main.text.last_level.y",  &menu.main.text.last_level.y                  },
-  { "main.text.level_info_1.x",        &menu.main.text.level_info_1.x                },
-  { "main.text.level_info_1.y",        &menu.main.text.level_info_1.y                },
-  { "main.text.level_info_2.x",        &menu.main.text.level_info_2.x                },
-  { "main.text.level_info_2.y",        &menu.main.text.level_info_2.y                },
+  { "main.text.current_level.x",       &menu.main.text.current_level.x       },
+  { "main.text.current_level.y",       &menu.main.text.current_level.y       },
+  { "main.text.current_level.align",   &menu.main.text.current_level.align   },
+  { "main.text.first_level.x",         &menu.main.text.first_level.x         },
+  { "main.text.first_level.y",         &menu.main.text.first_level.y         },
+  { "main.text.first_level.align",     &menu.main.text.first_level.align     },
+  { "main.text.last_level.x",          &menu.main.text.last_level.x          },
+  { "main.text.last_level.y",          &menu.main.text.last_level.y          },
+  { "main.text.last_level.align",      &menu.main.text.last_level.align      },
+  { "main.text.level_info_1.x",                &menu.main.text.level_info_1.x        },
+  { "main.text.level_info_1.y",                &menu.main.text.level_info_1.y        },
+  { "main.text.level_info_1.align",    &menu.main.text.level_info_1.align    },
+  { "main.text.level_info_1.chars",    &menu.main.text.level_info_1.chars    },
+  { "main.text.level_info_2.x",                &menu.main.text.level_info_2.x        },
+  { "main.text.level_info_2.y",                &menu.main.text.level_info_2.y        },
+  { "main.text.level_info_2.align",    &menu.main.text.level_info_2.align    },
+  { "main.text.level_info_2.chars",    &menu.main.text.level_info_2.chars    },
+  { "main.text.title_1.x",             &menu.main.text.title_1.x             },
+  { "main.text.title_1.y",             &menu.main.text.title_1.y             },
+  { "main.text.title_1.align",         &menu.main.text.title_1.align         },
+  { "main.text.title_2.x",             &menu.main.text.title_2.x             },
+  { "main.text.title_2.y",             &menu.main.text.title_2.y             },
+  { "main.text.title_2.align",         &menu.main.text.title_2.align         },
+  { "main.text.title_3.x",             &menu.main.text.title_3.x             },
+  { "main.text.title_3.y",             &menu.main.text.title_3.y             },
+  { "main.text.title_3.align",         &menu.main.text.title_3.align         },
 
-  { "main.input.name.x",       &menu.main.input.name.x                       },
-  { "main.input.name.y",       &menu.main.input.name.y                       },
+  { "main.input.name.x",               &menu.main.input.name.x               },
+  { "main.input.name.y",               &menu.main.input.name.y               },
+  { "main.input.name.align",           &menu.main.input.name.align           },
 
-  { "preview.x",               &preview.x                                    },
-  { "preview.y",               &preview.y                                    },
-  { "preview.xsize",           &preview.xsize                                },
-  { "preview.ysize",           &preview.ysize                                },
-  { "preview.xoffset",         &preview.xoffset                              },
-  { "preview.yoffset",         &preview.yoffset                              },
-  { "preview.tile_size",       &preview.tile_size                            },
-  { "preview.step_offset",     &preview.step_offset                          },
-  { "preview.step_delay",      &preview.step_delay                           },
+  { "preview.x",                       &preview.x                            },
+  { "preview.y",                       &preview.y                            },
+  { "preview.align",                   &preview.align                        },
+  { "preview.xsize",                   &preview.xsize                        },
+  { "preview.ysize",                   &preview.ysize                        },
+  { "preview.xoffset",                 &preview.xoffset                      },
+  { "preview.yoffset",                 &preview.yoffset                      },
+  { "preview.tile_size",               &preview.tile_size                    },
+  { "preview.step_offset",             &preview.step_offset                  },
+  { "preview.step_delay",              &preview.step_delay                   },
+  { "preview.anim_mode",               &preview.anim_mode                    },
 
-  { "door_1.width",            &door_1.width                                 },
-  { "door_1.height",           &door_1.height                                },
-  { "door_1.step_offset",      &door_1.step_offset                           },
-  { "door_1.step_delay",       &door_1.step_delay                            },
-  { "door_1.anim_mode",                &door_1.anim_mode                             },
-  { "door_2.width",            &door_2.width                                 },
-  { "door_2.height",           &door_2.height                                },
-  { "door_2.step_offset",      &door_2.step_offset                           },
-  { "door_2.step_delay",       &door_2.step_delay                            },
-  { "door_2.anim_mode",                &door_2.anim_mode                             },
+  { "door_1.width",                    &door_1.width                         },
+  { "door_1.height",                   &door_1.height                        },
+  { "door_1.step_offset",              &door_1.step_offset                   },
+  { "door_1.step_delay",               &door_1.step_delay                    },
+  { "door_1.anim_mode",                        &door_1.anim_mode                     },
+  { "door_2.width",                    &door_2.width                         },
+  { "door_2.height",                   &door_2.height                        },
+  { "door_2.step_offset",              &door_2.step_offset                   },
+  { "door_2.step_delay",               &door_2.step_delay                    },
+  { "door_2.anim_mode",                        &door_2.anim_mode                     },
 
-  { "game.panel.level.x",      &game.panel.level.x                           },
-  { "game.panel.level.y",      &game.panel.level.y                           },
-  { "game.panel.gems.x",       &game.panel.gems.x                            },
-  { "game.panel.gems.y",       &game.panel.gems.y                            },
-  { "game.panel.inventory.x",  &game.panel.inventory.x                       },
-  { "game.panel.inventory.y",  &game.panel.inventory.y                       },
-  { "game.panel.keys.x",       &game.panel.keys.x                            },
-  { "game.panel.keys.y",       &game.panel.keys.y                            },
-  { "game.panel.score.x",      &game.panel.score.x                           },
-  { "game.panel.score.y",      &game.panel.score.y                           },
-  { "game.panel.time.x",       &game.panel.time.x                            },
-  { "game.panel.time.y",       &game.panel.time.y                            },
+  { "game.panel.level.x",              &game.panel.level.x                   },
+  { "game.panel.level.y",              &game.panel.level.y                   },
+  { "game.panel.level.align",          &game.panel.level.align               },
+  { "game.panel.level.digits",         &game.panel.level.chars               },
+  { "game.panel.gems.x",               &game.panel.gems.x                    },
+  { "game.panel.gems.y",               &game.panel.gems.y                    },
+  { "game.panel.gems.align",           &game.panel.gems.align                },
+  { "game.panel.gems.digits",          &game.panel.gems.chars                },
+  { "game.panel.inventory.x",          &game.panel.inventory.x               },
+  { "game.panel.inventory.y",          &game.panel.inventory.y               },
+  { "game.panel.inventory.align",      &game.panel.inventory.align           },
+  { "game.panel.inventory.digits",     &game.panel.inventory.chars           },
+  { "game.panel.keys.x",               &game.panel.keys.x                    },
+  { "game.panel.keys.y",               &game.panel.keys.y                    },
+  { "game.panel.keys.align",           &game.panel.keys.align                },
+  { "game.panel.score.x",              &game.panel.score.x                   },
+  { "game.panel.score.y",              &game.panel.score.y                   },
+  { "game.panel.score.align",          &game.panel.score.align               },
+  { "game.panel.score.digits",         &game.panel.score.chars               },
+  { "game.panel.time.x",               &game.panel.time.x                    },
+  { "game.panel.time.y",               &game.panel.time.y                    },
+  { "game.panel.time.align",           &game.panel.time.align                },
+  { "game.panel.time.digits",          &game.panel.time.chars                },
 
   { "[player].boring_delay_fixed",     &game.player_boring_delay_fixed       },
   { "[player].boring_delay_random",    &game.player_boring_delay_random      },
   { "[player].sleeping_delay_fixed",   &game.player_sleeping_delay_fixed     },
   { "[player].sleeping_delay_random",  &game.player_sleeping_delay_random    },
 
-  { NULL,                      NULL,                                         }
+  { NULL,                              NULL,                                 }
 };
 
 
@@ -4850,6 +6259,8 @@ struct FontInfo font_info[NUM_FONTS + 1] =
   { "font.level_number"                },
   { "font.tape_recorder"       },
   { "font.game_info"           },
+  { "font.info.elements"       },
+  { "font.info.levelset"       },
 };