- { "empty_space", "empty space" }, /* 0 */
- { "sand", "sand" },
- { "wall", "normal wall" },
- { "wall", "round wall" },
- { "rock", "rock" },
- { "key", "key" },
- { "emerald", "emerald" },
- { "exit", "closed exit" },
- { "player", "player" },
- { "bug", "bug" },
- { "spaceship", "spaceship" }, /* 10 */
- { "yamyam", "yam yam" },
- { "robot", "robot" },
- { "wall", "steel wall" },
- { "diamond", "diamond" },
- { "amoeba", "dead amoeba" },
- { "quicksand", "empty quicksand" },
- { "quicksand", "quicksand with rock" },
- { "amoeba", "amoeba drop" },
- { "bomb", "bomb" },
- { "magic_wall", "magic wall" }, /* 20 */
- { "speed_pill", "speed pill" },
- { "acid", "acid pool" },
- { "amoeba", "dropping amoeba" },
- { "amoeba", "normal amoeba" },
- { "nut", "nut with emerald" },
- { "gameoflife", "Conway's wall of life" },
- { "biomaze", "biomaze" },
- { "dynamite", "burning dynamite" },
- { NULL, "unknown" },
- { "robot_wheel", "magic wheel" }, /* 30 */
- { "robot_wheel", "magic wheel (running)" },
- { "key", "red key" },
- { "key", "yellow key" },
- { "key", "green key" },
- { "key", "blue key" },
- { "gate", "red door" },
- { "gate", "yellow door" },
- { "gate", "green door" },
- { "gate", "blue door" },
- { "gate", "gray door (opened by red key)" }, /* 40 */
- { "gate", "gray door (opened by yellow key)"},
- { "gate", "gray door (opened by green key)"},
- { "gate", "gray door (opened by blue key)"},
- { "dynamite", "dynamite" },
- { "pacman", "pac man" },
- { "wall", "invisible normal wall" },
- { "lamp", "lamp (off)" },
- { "lamp", "lamp (on)" },
- { "wall", "wall with emerald" },
- { "wall", "wall with diamond" }, /* 50 */
- { "amoeba", "amoeba with content" },
- { "bd_amoeba", "amoeba (BD style)" },
- { "time_orb_full", "time orb (full)" },
- { "time_orb_empty", "time orb (empty)" },
- { "wall", "growing wall" },
- { "bd_diamond", "diamond (BD style)" },
- { "emerald", "yellow emerald" },
- { "wall", "wall with BD style diamond" },
- { "wall", "wall with yellow emerald" },
- { "dark_yamyam", "dark yam yam" }, /* 60 */
- { "bd_magic_wall", "magic wall (BD style)" },
- { "wall", "invisible steel wall" },
- { NULL, "-" },
- { "dynabomb_nr", "increases number of bombs" },
- { "dynabomb_sz", "increases explosion size" },
- { "dynabomb_xl", "increases power of explosion" },
- { "sokoban_object", "sokoban object" },
- { "sokoban_field", "sokoban empty field" },
- { "sokoban_field", "sokoban field with object" },
- { "bd_butterfly", "butterfly (starts moving right)"}, /* 70 */
- { "bd_butterfly", "butterfly (starts moving up)" },
- { "bd_butterfly", "butterfly (starts moving left)"},
- { "bd_butterfly", "butterfly (starts moving down)"},
- { "bd_firefly", "firefly (starts moving right)" },
- { "bd_firefly", "firefly (starts moving up)" },
- { "bd_firefly", "firefly (starts moving left)" },
- { "bd_firefly", "firefly (starts moving down)" },
- { "bd_butterfly", "butterfly" },
- { "bd_firefly", "firefly" },
- { "player", "yellow player" }, /* 80 */
- { "player", "red player" },
- { "player", "green player" },
- { "player", "blue player" },
- { "bug", "bug (starts moving right)" },
- { "bug", "bug (starts moving up)" },
- { "bug", "bug (starts moving left)" },
- { "bug", "bug (starts moving down)" },
- { "spaceship", "spaceship (starts moving right)"},
- { "spaceship", "spaceship (starts moving up)" },
- { "spaceship", "spaceship (starts moving left)"}, /* 90 */
- { "spaceship", "spaceship (starts moving down)"},
- { "pacman", "pac man (starts moving right)" },
- { "pacman", "pac man (starts moving up)" },
- { "pacman", "pac man (starts moving left)" },
- { "pacman", "pac man (starts moving down)" },
- { "emerald", "red emerald" },
- { "emerald", "purple emerald" },
- { "wall", "wall with red emerald" },
- { "wall", "wall with purple emerald" },
- { NULL, "unknown" }, /* 100 */
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "normal wall (BD style)" },
- { "bd_rock", "rock (BD style)" },
- { "exit", "open exit" },
- { NULL, "black orb bomb" },
- { "amoeba", "amoeba" },
- { "mole", "mole" }, /* 110 */
- { "penguin", "penguin" },
- { "satellite", "satellite" },
- { NULL, "arrow left" },
- { NULL, "arrow right" },
- { NULL, "arrow up" },
- { NULL, "arrow down" },
- { "pig", "pig" },
- { "dragon", "fire breathing dragon" },
- { "key", "red key (EM style)" },
- { NULL, "letter ' '" }, /* 120 */
- { NULL, "letter '!'" },
- { NULL, "letter '\"'" },
- { NULL, "letter '#'" },
- { NULL, "letter '$'" },
- { NULL, "letter '%'" },
- { NULL, "letter '&'" },
- { NULL, "letter '''" },
- { NULL, "letter '('" },
- { NULL, "letter ')'" },
- { NULL, "letter '*'" }, /* 130 */
- { NULL, "letter '+'" },
- { NULL, "letter ','" },
- { NULL, "letter '-'" },
- { NULL, "letter '.'" },
- { NULL, "letter '/'" },
- { NULL, "letter '0'" },
- { NULL, "letter '1'" },
- { NULL, "letter '2'" },
- { NULL, "letter '3'" },
- { NULL, "letter '4'" }, /* 140 */
- { NULL, "letter '5'" },
- { NULL, "letter '6'" },
- { NULL, "letter '7'" },
- { NULL, "letter '8'" },
- { NULL, "letter '9'" },
- { NULL, "letter ':'" },
- { NULL, "letter ';'" },
- { NULL, "letter '<'" },
- { NULL, "letter '='" },
- { NULL, "letter '>'" }, /* 150 */
- { NULL, "letter '?'" },
- { NULL, "letter '@'" },
- { NULL, "letter 'A'" },
- { NULL, "letter 'B'" },
- { NULL, "letter 'C'" },
- { NULL, "letter 'D'" },
- { NULL, "letter 'E'" },
- { NULL, "letter 'F'" },
- { NULL, "letter 'G'" },
- { NULL, "letter 'H'" }, /* 160 */
- { NULL, "letter 'I'" },
- { NULL, "letter 'J'" },
- { NULL, "letter 'K'" },
- { NULL, "letter 'L'" },
- { NULL, "letter 'M'" },
- { NULL, "letter 'N'" },
- { NULL, "letter 'O'" },
- { NULL, "letter 'P'" },
- { NULL, "letter 'Q'" },
- { NULL, "letter 'R'" }, /* 170 */
- { NULL, "letter 'S'" },
- { NULL, "letter 'T'" },
- { NULL, "letter 'U'" },
- { NULL, "letter 'V'" },
- { NULL, "letter 'W'" },
- { NULL, "letter 'X'" },
- { NULL, "letter 'Y'" },
- { NULL, "letter 'Z'" },
- { NULL, "letter 'Ä'" },
- { NULL, "letter 'Ö'" }, /* 180 */
- { NULL, "letter 'Ü'" },
- { NULL, "letter '^'" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" }, /* 190 */
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { NULL, "letter ''" },
- { "wall", "growing wall (horizontal)" }, /* 200 */
- { "wall", "growing wall (vertical)" },
- { "wall", "growing wall (all directions)" },
- { "gate", "red door (EM style)" },
- { "gate", "yellow door (EM style)" },
- { "gate", "green door (EM style)" },
- { "gate", "blue door (EM style)" },
- { "key", "yellow key (EM style)" },
- { "key", "green key (EM style)" },
- { "key", "blue key (EM style)" },
- { "empty_space", "empty space" }, /* 210 */
- { "sp_zonk", "zonk" },
- { "sp_base", "base" },
- { "player", "murphy" },
- { "sp_infotron", "infotron" },
- { "wall", "chip (single)" },
- { "wall", "hardware" },
- { "sp_exit", "exit" },
- { "sp_disk_orange", "orange disk" },
- { "sp_port", "port (leading right)" },
- { "sp_port", "port (leading down)" }, /* 220 */
- { "sp_port", "port (leading left)" },
- { "sp_port", "port (leading up)" },
- { "sp_port", "port (leading right)" },
- { "sp_port", "port (leading down)" },
- { "sp_port", "port (leading left)" },
- { "sp_port", "port (leading up)" },
- { "sp_sniksnak", "snik snak" },
- { "sp_disk_yellow", "yellow disk" },
- { "sp_terminal", "terminal" },
- { "sp_disk_red", "red disk" }, /* 230 */
- { "sp_port", "port (vertical)" },
- { "sp_port", "port (horizontal)" },
- { "sp_port", "port (all directions)" },
- { "sp_electron", "electron" },
- { "sp_buggy_base", "buggy base" },
- { "wall", "chip (left half)" },
- { "wall", "chip (right half)" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" }, /* 240 */
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "hardware" },
- { "wall", "chip (upper half)" },
- { "wall", "chip (lower half)" },
- { "gate", "gray door (EM style, red key)" }, /* 250 */
- { "gate", "gray door (EM style, yellow key)"},
- { "gate", "gray door (EM style, green key)"},
- { "gate", "gray door (EM style, blue key)"},
- { NULL, "unknown" },
- { NULL, "unknown" },
-
- /* 256 */
-
- { "pearl", "pearl" }, /* (256) */
- { "crystal", "crystal" },
- { "wall", "wall with pearl" },
- { "wall", "wall with crystal" },
- { "gate", "white door" }, /* 260 */
- { "gate", "gray door (opened by white key)"},
- { "key", "white key" },
- { "shield_passive", "shield (passive)" },
- { "extra_time", "extra time" },
- { "switchgate", "switch gate (open)" },
- { "switchgate", "switch gate (closed)" },
- { "switchgate_switch", "switch for switch gate" },
- { "switchgate_switch", "switch for switch gate" },
- { NULL, "-" },
- { NULL, "-" }, /* 270 */
- { "conveyor_belt", "red conveyor belt (left)" },
- { "conveyor_belt", "red conveyor belt (middle)" },
- { "conveyor_belt", "red conveyor belt (right)" },
- { "conveyor_belt_switch", "switch for red conveyor belt (left)"},
- { "conveyor_belt_switch", "switch for red conveyor belt (middle)"},
- { "conveyor_belt_switch", "switch for red conveyor belt (right)"},
- { "conveyor_belt", "yellow conveyor belt (left)" },
- { "conveyor_belt", "yellow conveyor belt (middle)" },
- { "conveyor_belt", "yellow conveyor belt (right)" },
- { "conveyor_belt_switch", "switch for yellow conveyor belt (left)"},
- { "conveyor_belt_switch", "switch for yellow conveyor belt (middle)"},
- { "conveyor_belt_switch", "switch for yellow conveyor belt (right)"},
- { "conveyor_belt", "green conveyor belt (left)" },
- { "conveyor_belt", "green conveyor belt (middle)" },
- { "conveyor_belt", "green conveyor belt (right)" },
- { "conveyor_belt_switch", "switch for green conveyor belt (left)"},
- { "conveyor_belt_switch", "switch for green conveyor belt (middle)"},
- { "conveyor_belt_switch", "switch for green conveyor belt (right)"},
- { "conveyor_belt", "blue conveyor belt (left)" },
- { "conveyor_belt", "blue conveyor belt (middle)" },
- { "conveyor_belt", "blue conveyor belt (right)" },
- { "conveyor_belt_switch", "switch for blue conveyor belt (left)"},
- { "conveyor_belt_switch", "switch for blue conveyor belt (middle)"},
- { "conveyor_belt_switch", "switch for blue conveyor belt (right)"},
- { "sand", "land mine" },
- { "envelope", "mail envelope" },
- { "light_switch", "light switch (off)" },
- { "light_switch", "light switch (on)" },
- { "wall", "sign (exclamation)" },
- { "wall", "sign (radio activity)" }, /* 300 */
- { "wall", "sign (stop)" },
- { "wall", "sign (wheel chair)" },
- { "wall", "sign (parking)" },
- { "wall", "sign (one way)" },
- { "wall", "sign (heart)" },
- { "wall", "sign (triangle)" },
- { "wall", "sign (round)" },
- { "wall", "sign (exit)" },
- { "wall", "sign (yin yang)" },
- { "wall", "sign (other)" }, /* 310 */
- { "mole", "mole (starts moving left)" },
- { "mole", "mole (starts moving right)" },
- { "mole", "mole (starts moving up)" },
- { "mole", "mole (starts moving down)" },
- { "wall", "steel wall (slanted)" },
- { "sand", "invisible sand" },
- { NULL, "dx unknown 15" },
- { NULL, "dx unknown 42" },
- { NULL, "-" },
- { NULL, "-" }, /* 320 */
- { "shield_active", "shield (active, kills enemies)"},
- { "timegate", "time gate (open)" },
- { "timegate", "time gate (closed)" },
- { "timegate_wheel", "switch for time gate" },
- { "timegate_wheel", "switch for time gate" },
- { "balloon", "balloon" },
- { "wall", "send balloon to the left" },
- { "wall", "send balloon to the right" },
- { "balloon_switch", "send balloon up" },
- { "balloon_switch", "send balloon down" }, /* 330 */
- { "balloon_switch", "send balloon in any direction" },
- { "wall", "steel wall" },
- { "wall", "steel wall" },
- { "wall", "steel wall" },
- { "wall", "steel wall" },
- { "wall", "normal wall" },
- { "wall", "normal wall" },
- { "wall", "normal wall" },
- { "wall", "normal wall" },
- { "wall", "normal wall" }, /* 340 */
- { "wall", "normal wall" },
- { "wall", "normal wall" },
- { "wall", "normal wall" },
- { "tube", "tube (all directions)" },
- { "tube", "tube (vertical)" },
- { "tube", "tube (horizontal)" },
- { "tube", "tube (vertical & left)" },
- { "tube", "tube (vertical & right)" },
- { "tube", "tube (horizontal & up)" },
- { "tube", "tube (horizontal & down)" }, /* 350 */
- { "tube", "tube (left & up)" },
- { "tube", "tube (left & down)" },
- { "tube", "tube (right & up)" },
- { "tube", "tube (right & down)" },
- { "spring", "spring" },
- { "trap", "trap" },
- { "dx_bomb", "stable bomb (DX style)" },
- { NULL, "-" }
-
- /*
- "-------------------------------",
- */
+ { ".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]", GAME_MODE_DEFAULT, },
+ { ".MAIN", GAME_MODE_MAIN, },
+ { ".LEVELS", GAME_MODE_LEVELS },
+ { ".SCORES", GAME_MODE_SCORES, },
+ { ".EDITOR", GAME_MODE_EDITOR, },
+ { ".INFO", GAME_MODE_INFO, },
+ { ".SETUP", GAME_MODE_SETUP, },
+ { ".PLAYING", GAME_MODE_PLAYING, },
+ { ".DOOR", GAME_MODE_PSEUDO_DOOR, },
+ { ".PREVIEW", GAME_MODE_PSEUDO_PREVIEW, },
+ { ".CRUMBLED", GAME_MODE_PSEUDO_CRUMBLED, },
+
+ /* empty suffix always matches -- check as last entry in InitMusicInfo() */
+ { "", GAME_MODE_DEFAULT, },
+
+ { NULL, 0, }
+};
+
+struct TokenIntPtrInfo image_config_vars[] =
+{
+ { "global.num_toons", &global.num_toons },
+
+ { "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.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.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] },
+
+ { "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 },
+
+ { "[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, }
+};
+
+
+/* ------------------------------------------------------------------------- */
+/* font definitions */
+/* ------------------------------------------------------------------------- */
+
+/* Important: When one entry is a prefix of another entry, the longer entry
+ must come first, because the dynamic configuration does prefix matching! */
+
+struct FontInfo font_info[NUM_FONTS + 1] =
+{
+ { "font.initial_1" },
+ { "font.initial_2" },
+ { "font.initial_3" },
+ { "font.initial_4" },
+ { "font.title_1" },
+ { "font.title_2" },
+ { "font.menu_1" },
+ { "font.menu_2" },
+ { "font.text_1.active" },
+ { "font.text_2.active" },
+ { "font.text_3.active" },
+ { "font.text_4.active" },
+ { "font.text_1" },
+ { "font.text_2" },
+ { "font.text_3" },
+ { "font.text_4" },
+ { "font.envelope_1" },
+ { "font.envelope_2" },
+ { "font.envelope_3" },
+ { "font.envelope_4" },
+ { "font.input_1.active" },
+ { "font.input_2.active" },
+ { "font.input_1" },
+ { "font.input_2" },
+ { "font.option_off" },
+ { "font.option_on" },
+ { "font.value_1" },
+ { "font.value_2" },
+ { "font.value_old" },
+ { "font.level_number" },
+ { "font.tape_recorder" },
+ { "font.game_info" },
+};
+
+
+/* ------------------------------------------------------------------------- */
+/* music token prefix definitions */
+/* ------------------------------------------------------------------------- */
+
+struct MusicPrefixInfo music_prefix_info[NUM_MUSIC_PREFIXES + 1] =
+{
+ { "background", TRUE },
+
+ { NULL, 0 }