rnd-20030726-1-src
authorHolger Schemel <info@artsoft.org>
Sat, 26 Jul 2003 01:12:06 +0000 (03:12 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:51 +0000 (10:42 +0200)
15 files changed:
Makefile
src/conf_e2g.c
src/conf_gfx.c
src/conf_gfx.h
src/conftime.h
src/editor.c
src/events.c
src/game.c
src/init.c
src/libgame/misc.c
src/libgame/setup.c
src/libgame/setup.h
src/main.c
src/main.h
src/tools.c

index 0c22aefb3fa9bcb1696e9a9c507b3dde989eaf00..bdd285b5e775938c501bd4dd53fd57723470f574 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -49,8 +49,8 @@ CROSS_PATH_WIN32=/usr/local/cross-tools/i386-mingw32msvc
 SRC_DIR = src
 MAKE_CMD = $(MAKE) -C $(SRC_DIR)
 
-DEFAULT_TARGET = x11
-DEFAULT_TARGET = sdl
+DEFAULT_TARGET = x11
+DEFAULT_TARGET = sdl
 
 all:
        @$(MAKE_CMD) TARGET=$(DEFAULT_TARGET)
index ed2a9abf841404c22a7f1b8e7936813df08c9293..45e85c93e27d1064aa348be7ff9ef77a37a0982f 100644 (file)
@@ -36,10 +36,6 @@ element_to_graphic[] =
     EL_BD_ROCK,                                        -1, -1,
     IMG_BD_ROCK
   },
-  {
-    EL_BD_ROCK,                                        ACTION_FALLING, -1,
-    IMG_BD_ROCK_FALLING
-  },
   {
     EL_BD_ROCK,                                        ACTION_MOVING, MV_BIT_LEFT,
     IMG_BD_ROCK_MOVING_LEFT
@@ -48,6 +44,14 @@ element_to_graphic[] =
     EL_BD_ROCK,                                        ACTION_MOVING, MV_BIT_RIGHT,
     IMG_BD_ROCK_MOVING_RIGHT
   },
+  {
+    EL_BD_ROCK,                                        ACTION_PUSHING, MV_BIT_LEFT,
+    IMG_BD_ROCK_PUSHING_LEFT
+  },
+  {
+    EL_BD_ROCK,                                        ACTION_PUSHING, MV_BIT_RIGHT,
+    IMG_BD_ROCK_PUSHING_RIGHT
+  },
   {
     EL_BD_DIAMOND,                             -1, -1,
     IMG_BD_DIAMOND
@@ -192,10 +196,6 @@ element_to_graphic[] =
     EL_SP_ZONK,                                        -1, -1,
     IMG_SP_ZONK
   },
-  {
-    EL_SP_ZONK,                                        ACTION_FALLING, -1,
-    IMG_SP_ZONK_FALLING
-  },
   {
     EL_SP_ZONK,                                        ACTION_MOVING, MV_BIT_LEFT,
     IMG_SP_ZONK_MOVING_LEFT
@@ -204,6 +204,14 @@ element_to_graphic[] =
     EL_SP_ZONK,                                        ACTION_MOVING, MV_BIT_RIGHT,
     IMG_SP_ZONK_MOVING_RIGHT
   },
+  {
+    EL_SP_ZONK,                                        ACTION_PUSHING, MV_BIT_LEFT,
+    IMG_SP_ZONK_PUSHING_LEFT
+  },
+  {
+    EL_SP_ZONK,                                        ACTION_PUSHING, MV_BIT_RIGHT,
+    IMG_SP_ZONK_PUSHING_RIGHT
+  },
   {
     EL_SP_BASE,                                        -1, -1,
     IMG_SP_BASE
@@ -268,10 +276,6 @@ element_to_graphic[] =
     EL_SP_INFOTRON,                            -1, -1,
     IMG_SP_INFOTRON
   },
-  {
-    EL_SP_INFOTRON,                            ACTION_FALLING, -1,
-    IMG_SP_INFOTRON_FALLING
-  },
   {
     EL_SP_CHIP_SINGLE,                         -1, -1,
     IMG_SP_CHIP_SINGLE
@@ -324,22 +328,10 @@ element_to_graphic[] =
     EL_SP_DISK_ORANGE,                         -1, -1,
     IMG_SP_DISK_ORANGE
   },
-  {
-    EL_SP_DISK_ORANGE,                         ACTION_FALLING, -1,
-    IMG_SP_DISK_ORANGE_FALLING
-  },
-  {
-    EL_SP_DISK_ORANGE,                         ACTION_PUSHING, -1,
-    IMG_SP_DISK_ORANGE_PUSHING
-  },
   {
     EL_SP_DISK_YELLOW,                         -1, -1,
     IMG_SP_DISK_YELLOW
   },
-  {
-    EL_SP_DISK_YELLOW,                         ACTION_PUSHING, -1,
-    IMG_SP_DISK_YELLOW_PUSHING
-  },
   {
     EL_SP_DISK_RED,                            -1, -1,
     IMG_SP_DISK_RED
@@ -348,14 +340,6 @@ element_to_graphic[] =
     EL_SP_DISK_RED,                            ACTION_COLLECTING, -1,
     IMG_SP_DISK_RED_COLLECTING
   },
-  {
-    EL_SP_DISK_RED_ACTIVE,                     -1, -1,
-    IMG_SP_DISK_RED_ACTIVE
-  },
-  {
-    EL_SP_DISK_RED,                            ACTION_ACTIVE, -1,
-    IMG_SP_DISK_RED_ACTIVE
-  },
   {
     EL_SP_PORT_RIGHT,                          -1, -1,
     IMG_SP_PORT_RIGHT
@@ -556,10 +540,6 @@ element_to_graphic[] =
     EL_ROCK,                                   -1, -1,
     IMG_ROCK
   },
-  {
-    EL_ROCK,                                   ACTION_FALLING, -1,
-    IMG_ROCK_FALLING
-  },
   {
     EL_ROCK,                                   ACTION_MOVING, MV_BIT_LEFT,
     IMG_ROCK_MOVING_LEFT
@@ -568,6 +548,14 @@ element_to_graphic[] =
     EL_ROCK,                                   ACTION_MOVING, MV_BIT_RIGHT,
     IMG_ROCK_MOVING_RIGHT
   },
+  {
+    EL_ROCK,                                   ACTION_PUSHING, MV_BIT_LEFT,
+    IMG_ROCK_PUSHING_LEFT
+  },
+  {
+    EL_ROCK,                                   ACTION_PUSHING, MV_BIT_RIGHT,
+    IMG_ROCK_PUSHING_RIGHT
+  },
   {
     EL_EMERALD,                                        -1, -1,
     IMG_EMERALD
@@ -608,18 +596,6 @@ element_to_graphic[] =
     EL_NUT,                                    -1, -1,
     IMG_NUT
   },
-  {
-    EL_NUT,                                    ACTION_FALLING, -1,
-    IMG_NUT_FALLING
-  },
-  {
-    EL_NUT,                                    ACTION_MOVING, MV_BIT_LEFT,
-    IMG_NUT_MOVING_LEFT
-  },
-  {
-    EL_NUT,                                    ACTION_MOVING, MV_BIT_RIGHT,
-    IMG_NUT_MOVING_RIGHT
-  },
   {
     EL_NUT_BREAKING,                           -1, -1,
     IMG_NUT_BREAKING
@@ -964,6 +940,10 @@ element_to_graphic[] =
     EL_BALLOON,                                        ACTION_MOVING, -1,
     IMG_BALLOON_MOVING
   },
+  {
+    EL_BALLOON,                                        ACTION_PUSHING, -1,
+    IMG_BALLOON_PUSHING
+  },
   {
     EL_BALLOON_SWITCH_LEFT,                    -1, -1,
     IMG_BALLOON_SWITCH_LEFT
@@ -988,10 +968,6 @@ element_to_graphic[] =
     EL_SPRING,                                 -1, -1,
     IMG_SPRING
   },
-  {
-    EL_SPRING,                                 ACTION_MOVING, -1,
-    IMG_SPRING_MOVING
-  },
   {
     EL_EMC_STEELWALL_1,                                -1, -1,
     IMG_EMC_STEELWALL_1
@@ -1704,26 +1680,66 @@ element_to_graphic[] =
     EL_DARK_YAMYAM,                            -1, -1,
     IMG_DARK_YAMYAM
   },
+  {
+    EL_DYNABOMB,                               -1, -1,
+    IMG_DYNABOMB
+  },
   {
     EL_DYNABOMB_ACTIVE,                                -1, -1,
     IMG_DYNABOMB_ACTIVE
   },
+  {
+    EL_DYNABOMB,                               ACTION_ACTIVE, -1,
+    IMG_DYNABOMB_ACTIVE
+  },
+  {
+    EL_DYNABOMB_PLAYER_1,                      -1, -1,
+    IMG_DYNABOMB_PLAYER_1
+  },
   {
     EL_DYNABOMB_PLAYER_1_ACTIVE,               -1, -1,
     IMG_DYNABOMB_PLAYER_1_ACTIVE
   },
+  {
+    EL_DYNABOMB_PLAYER_1,                      ACTION_ACTIVE, -1,
+    IMG_DYNABOMB_PLAYER_1_ACTIVE
+  },
+  {
+    EL_DYNABOMB_PLAYER_2,                      -1, -1,
+    IMG_DYNABOMB_PLAYER_2
+  },
   {
     EL_DYNABOMB_PLAYER_2_ACTIVE,               -1, -1,
     IMG_DYNABOMB_PLAYER_2_ACTIVE
   },
+  {
+    EL_DYNABOMB_PLAYER_2,                      ACTION_ACTIVE, -1,
+    IMG_DYNABOMB_PLAYER_2_ACTIVE
+  },
+  {
+    EL_DYNABOMB_PLAYER_3,                      -1, -1,
+    IMG_DYNABOMB_PLAYER_3
+  },
   {
     EL_DYNABOMB_PLAYER_3_ACTIVE,               -1, -1,
     IMG_DYNABOMB_PLAYER_3_ACTIVE
   },
+  {
+    EL_DYNABOMB_PLAYER_3,                      ACTION_ACTIVE, -1,
+    IMG_DYNABOMB_PLAYER_3_ACTIVE
+  },
+  {
+    EL_DYNABOMB_PLAYER_4,                      -1, -1,
+    IMG_DYNABOMB_PLAYER_4
+  },
   {
     EL_DYNABOMB_PLAYER_4_ACTIVE,               -1, -1,
     IMG_DYNABOMB_PLAYER_4_ACTIVE
   },
+  {
+    EL_DYNABOMB_PLAYER_4,                      ACTION_ACTIVE, -1,
+    IMG_DYNABOMB_PLAYER_4_ACTIVE
+  },
   {
     EL_DYNABOMB_INCREASE_NUMBER,               -1, -1,
     IMG_DYNABOMB_INCREASE_NUMBER
@@ -1948,10 +1964,6 @@ element_to_graphic[] =
     EL_SATELLITE,                              -1, -1,
     IMG_SATELLITE
   },
-  {
-    EL_SATELLITE,                              ACTION_MOVING, -1,
-    IMG_SATELLITE_MOVING
-  },
   {
     EL_STONEBLOCK,                             -1, -1,
     IMG_STONEBLOCK
index c7fe8f4b13279f41840c4e6c46b272b1961877e0..60b7c875fce55b3b039d17c76a7e09471b3f0182 100644 (file)
@@ -67,10 +67,6 @@ struct ConfigInfo image_config[] =
   { "bd_rock.EDITOR",                          "RocksDC.pcx"           },
   { "bd_rock.EDITOR.xpos",                     "14"                    },
   { "bd_rock.EDITOR.ypos",                     "14"                    },
-  { "bd_rock.falling",                         "RocksDC.pcx"           },
-  { "bd_rock.falling.xpos",                    "12"                    },
-  { "bd_rock.falling.ypos",                    "10"                    },
-  { "bd_rock.falling.frames",                  "1"                     },
   { "bd_rock.moving.left",                     "RocksDC.pcx"           },
   { "bd_rock.moving.left.xpos",                        "12"                    },
   { "bd_rock.moving.left.ypos",                        "10"                    },
@@ -83,6 +79,18 @@ struct ConfigInfo image_config[] =
   { "bd_rock.moving.right.frames",             "4"                     },
   { "bd_rock.moving.right.start_frame",                "1"                     },
   { "bd_rock.moving.right.delay",              "2"                     },
+  { "bd_rock.pushing.left",                    "RocksDC.pcx"           },
+  { "bd_rock.pushing.left.xpos",               "12"                    },
+  { "bd_rock.pushing.left.ypos",               "10"                    },
+  { "bd_rock.pushing.left.frames",             "4"                     },
+  { "bd_rock.pushing.left.delay",              "2"                     },
+  { "bd_rock.pushing.left.anim_mode",          "reverse"               },
+  { "bd_rock.pushing.right",                   "RocksDC.pcx"           },
+  { "bd_rock.pushing.right.xpos",              "12"                    },
+  { "bd_rock.pushing.right.ypos",              "10"                    },
+  { "bd_rock.pushing.right.frames",            "4"                     },
+  { "bd_rock.pushing.right.start_frame",       "1"                     },
+  { "bd_rock.pushing.right.delay",             "2"                     },
 
   { "bd_diamond",                              "RocksElements.pcx"     },
   { "bd_diamond.xpos",                         "0"                     },
@@ -224,10 +232,6 @@ struct ConfigInfo image_config[] =
   { "sp_zonk.xpos",                            "1"                     },
   { "sp_zonk.ypos",                            "0"                     },
   { "sp_zonk.frames",                          "1"                     },
-  { "sp_zonk.falling",                         "RocksSP.pcx"           },
-  { "sp_zonk.falling.xpos",                    "1"                     },
-  { "sp_zonk.falling.ypos",                    "0"                     },
-  { "sp_zonk.falling.frames",                  "1"                     },
   { "sp_zonk.moving.left",                     "RocksSP.pcx"           },
   { "sp_zonk.moving.left.xpos",                        "0"                     },
   { "sp_zonk.moving.left.ypos",                        "6"                     },
@@ -240,6 +244,18 @@ struct ConfigInfo image_config[] =
   { "sp_zonk.moving.right.frames",             "4"                     },
   { "sp_zonk.moving.right.start_frame",                "1"                     },
   { "sp_zonk.moving.right.delay",              "2"                     },
+  { "sp_zonk.pushing.left",                    "RocksSP.pcx"           },
+  { "sp_zonk.pushing.left.xpos",               "0"                     },
+  { "sp_zonk.pushing.left.ypos",               "6"                     },
+  { "sp_zonk.pushing.left.frames",             "4"                     },
+  { "sp_zonk.pushing.left.delay",              "2"                     },
+  { "sp_zonk.pushing.left.anim_mode",          "reverse"               },
+  { "sp_zonk.pushing.right",                   "RocksSP.pcx"           },
+  { "sp_zonk.pushing.right.xpos",              "0"                     },
+  { "sp_zonk.pushing.right.ypos",              "6"                     },
+  { "sp_zonk.pushing.right.frames",            "4"                     },
+  { "sp_zonk.pushing.right.start_frame",       "1"                     },
+  { "sp_zonk.pushing.right.delay",             "2"                     },
 
   { "sp_base",                                 "RocksSP.pcx"           },
   { "sp_base.xpos",                            "2"                     },
@@ -323,10 +339,6 @@ struct ConfigInfo image_config[] =
   { "sp_infotron.EDITOR",                      "RocksSP.pcx"           },
   { "sp_infotron.EDITOR.xpos",                 "8"                     },
   { "sp_infotron.EDITOR.ypos",                 "11"                    },
-  { "sp_infotron.falling",                     "RocksSP.pcx"           },
-  { "sp_infotron.falling.xpos",                        "4"                     },
-  { "sp_infotron.falling.ypos",                        "0"                     },
-  { "sp_infotron.falling.frames",              "1"                     },
 
   { "sp_chip_single",                          "RocksSP.pcx"           },
   { "sp_chip_single.xpos",                     "5"                     },
@@ -383,23 +395,11 @@ struct ConfigInfo image_config[] =
   { "sp_disk_orange.xpos",                     "0"                     },
   { "sp_disk_orange.ypos",                     "1"                     },
   { "sp_disk_orange.frames",                   "1"                     },
-  { "sp_disk_orange.falling",                  "RocksSP.pcx"           },
-  { "sp_disk_orange.falling.xpos",             "0"                     },
-  { "sp_disk_orange.falling.ypos",             "1"                     },
-  { "sp_disk_orange.falling.frames",           "1"                     },
-  { "sp_disk_orange.pushing",                  "RocksSP.pcx"           },
-  { "sp_disk_orange.pushing.xpos",             "0"                     },
-  { "sp_disk_orange.pushing.ypos",             "1"                     },
-  { "sp_disk_orange.pushing.frames",           "1"                     },
 
   { "sp_disk_yellow",                          "RocksSP.pcx"           },
   { "sp_disk_yellow.xpos",                     "2"                     },
   { "sp_disk_yellow.ypos",                     "2"                     },
   { "sp_disk_yellow.frames",                   "1"                     },
-  { "sp_disk_yellow.pushing",                  "RocksSP.pcx"           },
-  { "sp_disk_yellow.pushing.xpos",             "2"                     },
-  { "sp_disk_yellow.pushing.ypos",             "2"                     },
-  { "sp_disk_yellow.pushing.frames",           "1"                     },
 
   { "sp_disk_red",                             "RocksSP.pcx"           },
   { "sp_disk_red.xpos",                                "4"                     },
@@ -409,10 +409,6 @@ struct ConfigInfo image_config[] =
   { "sp_disk_red.collecting.xpos",             "8"                     },
   { "sp_disk_red.collecting.ypos",             "5"                     },
   { "sp_disk_red.collecting.frames",           "8"                     },
-  { "sp_disk_red.active",                      "RocksSP.pcx"           },
-  { "sp_disk_red.active.xpos",                 "4"                     },
-  { "sp_disk_red.active.ypos",                 "2"                     },
-  { "sp_disk_red.active.frames",               "1"                     },
 
   { "sp_port_right",                           "RocksSP.pcx"           },
   { "sp_port_right.xpos",                      "1"                     },
@@ -643,6 +639,7 @@ struct ConfigInfo image_config[] =
   { "wall.xpos",                               "5"                     },
   { "wall.ypos",                               "0"                     },
   { "wall.frames",                             "1"                     },
+
   { "wall_crumbled",                           "RocksElements.pcx"     },
   { "wall_crumbled.xpos",                      "6"                     },
   { "wall_crumbled.ypos",                      "0"                     },
@@ -657,10 +654,6 @@ struct ConfigInfo image_config[] =
   { "rock.xpos",                               "12"                    },
   { "rock.ypos",                               "0"                     },
   { "rock.frames",                             "1"                     },
-  { "rock.falling",                            "RocksElements.pcx"     },
-  { "rock.falling.xpos",                       "12"                    },
-  { "rock.falling.ypos",                       "0"                     },
-  { "rock.falling.frames",                     "1"                     },
   { "rock.moving.left",                                "RocksElements.pcx"     },
   { "rock.moving.left.xpos",                   "12"                    },
   { "rock.moving.left.ypos",                   "0"                     },
@@ -673,6 +666,18 @@ struct ConfigInfo image_config[] =
   { "rock.moving.right.frames",                        "4"                     },
   { "rock.moving.right.start_frame",           "1"                     },
   { "rock.moving.right.delay",                 "2"                     },
+  { "rock.pushing.left",                       "RocksElements.pcx"     },
+  { "rock.pushing.left.xpos",                  "12"                    },
+  { "rock.pushing.left.ypos",                  "0"                     },
+  { "rock.pushing.left.frames",                        "4"                     },
+  { "rock.pushing.left.delay",                 "2"                     },
+  { "rock.pushing.left.anim_mode",             "reverse"               },
+  { "rock.pushing.right",                      "RocksElements.pcx"     },
+  { "rock.pushing.right.xpos",                 "12"                    },
+  { "rock.pushing.right.ypos",                 "0"                     },
+  { "rock.pushing.right.frames",               "4"                     },
+  { "rock.pushing.right.start_frame",          "1"                     },
+  { "rock.pushing.right.delay",                        "2"                     },
 
   { "emerald",                                 "RocksElements.pcx"     },
   { "emerald.xpos",                            "8"                     },
@@ -725,18 +730,6 @@ struct ConfigInfo image_config[] =
   { "nut.xpos",                                        "12"                    },
   { "nut.ypos",                                        "1"                     },
   { "nut.frames",                              "1"                     },
-  { "nut.falling",                             "RocksElements.pcx"     },
-  { "nut.falling.xpos",                                "12"                    },
-  { "nut.falling.ypos",                                "1"                     },
-  { "nut.falling.frames",                      "1"                     },
-  { "nut.moving.left",                         "RocksElements.pcx"     },
-  { "nut.moving.left.xpos",                    "12"                    },
-  { "nut.moving.left.ypos",                    "1"                     },
-  { "nut.moving.left.frames",                  "1"                     },
-  { "nut.moving.right",                                "RocksElements.pcx"     },
-  { "nut.moving.right.xpos",                   "12"                    },
-  { "nut.moving.right.ypos",                   "1"                     },
-  { "nut.moving.right.frames",                 "1"                     },
   { "nut.breaking",                            "RocksElements.pcx"     },
   { "nut.breaking.xpos",                       "13"                    },
   { "nut.breaking.ypos",                       "1"                     },
@@ -1137,7 +1130,12 @@ struct ConfigInfo image_config[] =
   { "balloon.moving.frames",                   "4"                     },
   { "balloon.moving.anim_mode",                        "pingpong"              },
   { "balloon.moving.delay",                    "2"                     },
-
+  { "balloon.pushing",                         "RocksDC.pcx"           },
+  { "balloon.pushing.xpos",                    "12"                    },
+  { "balloon.pushing.ypos",                    "7"                     },
+  { "balloon.pushing.frames",                  "4"                     },
+  { "balloon.pushing.anim_mode",               "pingpong"              },
+  { "balloon.pushing.delay",                   "2"                     },
   { "balloon_switch_left",                     "RocksDC.pcx"           },
   { "balloon_switch_left.xpos",                        "8"                     },
   { "balloon_switch_left.ypos",                        "7"                     },
@@ -1163,10 +1161,6 @@ struct ConfigInfo image_config[] =
   { "spring.xpos",                             "8"                     },
   { "spring.ypos",                             "13"                    },
   { "spring.frames",                           "1"                     },
-  { "spring.moving",                           "RocksDC.pcx"           },
-  { "spring.moving.xpos",                      "8"                     },
-  { "spring.moving.ypos",                      "13"                    },
-  { "spring.moving.frames",                    "1"                     },
 
   { "emc_steelwall_1",                         "RocksDC.pcx"           },
   { "emc_steelwall_1.xpos",                    "14"                    },
@@ -1921,30 +1915,50 @@ struct ConfigInfo image_config[] =
   { "dark_yamyam.frames",                      "4"                     },
   { "dark_yamyam.anim_mode",                   "pingpong2"             },
 
+  { "dynabomb",                                        "RocksElements.pcx"     },
+  { "dynabomb.xpos",                           "12"                    },
+  { "dynabomb.ypos",                           "11"                    },
+  { "dynabomb.frames",                         "1"                     },
   { "dynabomb.active",                         "RocksElements.pcx"     },
   { "dynabomb.active.xpos",                    "12"                    },
   { "dynabomb.active.ypos",                    "11"                    },
   { "dynabomb.active.frames",                  "4"                     },
   { "dynabomb.active.delay",                   "6"                     },
   { "dynabomb.active.anim_mode",               "pingpong"              },
+  { "dynabomb_player_1",                       "RocksElements.pcx"     },
+  { "dynabomb_player_1.xpos",                  "12"                    },
+  { "dynabomb_player_1.ypos",                  "11"                    },
+  { "dynabomb_player_1.frames",                        "1"                     },
   { "dynabomb_player_1.active",                        "RocksElements.pcx"     },
   { "dynabomb_player_1.active.xpos",           "12"                    },
   { "dynabomb_player_1.active.ypos",           "11"                    },
   { "dynabomb_player_1.active.frames",         "4"                     },
   { "dynabomb_player_1.active.delay",          "6"                     },
   { "dynabomb_player_1.active.anim_mode",      "pingpong"              },
+  { "dynabomb_player_2",                       "RocksElements.pcx"     },
+  { "dynabomb_player_2.xpos",                  "12"                    },
+  { "dynabomb_player_2.ypos",                  "11"                    },
+  { "dynabomb_player_2.frames",                        "1"                     },
   { "dynabomb_player_2.active",                        "RocksElements.pcx"     },
   { "dynabomb_player_2.active.xpos",           "12"                    },
   { "dynabomb_player_2.active.ypos",           "11"                    },
   { "dynabomb_player_2.active.frames",         "4"                     },
   { "dynabomb_player_2.active.delay",          "6"                     },
   { "dynabomb_player_2.active.anim_mode",      "pingpong"              },
+  { "dynabomb_player_3",                       "RocksElements.pcx"     },
+  { "dynabomb_player_3.xpos",                  "12"                    },
+  { "dynabomb_player_3.ypos",                  "11"                    },
+  { "dynabomb_player_3.frames",                        "1"                     },
   { "dynabomb_player_3.active",                        "RocksElements.pcx"     },
   { "dynabomb_player_3.active.xpos",           "12"                    },
   { "dynabomb_player_3.active.ypos",           "11"                    },
   { "dynabomb_player_3.active.frames",         "4"                     },
   { "dynabomb_player_3.active.delay",          "6"                     },
   { "dynabomb_player_3.active.anim_mode",      "pingpong"              },
+  { "dynabomb_player_4",                       "RocksElements.pcx"     },
+  { "dynabomb_player_4.xpos",                  "12"                    },
+  { "dynabomb_player_4.ypos",                  "11"                    },
+  { "dynabomb_player_4.frames",                        "1"                     },
   { "dynabomb_player_4.active",                        "RocksElements.pcx"     },
   { "dynabomb_player_4.active.xpos",           "12"                    },
   { "dynabomb_player_4.active.ypos",           "11"                    },
@@ -2191,13 +2205,8 @@ struct ConfigInfo image_config[] =
   { "satellite.xpos",                          "8"                     },
   { "satellite.ypos",                          "9"                     },
   { "satellite.frames",                                "8"                     },
-  { "satellite.moving.delay",                  "2"                     },
-  { "satellite.moving",                                "RocksHeroes.pcx"       },
-  { "satellite.moving.xpos",                   "8"                     },
-  { "satellite.moving.ypos",                   "9"                     },
-  { "satellite.moving.frames",                 "8"                     },
-  { "satellite.moving.delay",                  "2"                     },
-  { "satellite.moving.global_sync",            "true"                  },
+  { "satellite.delay",                         "2"                     },
+  { "satellite.global_sync",                   "true"                  },
 
   { "flames_1_left",                           "RocksHeroes.pcx"       },
   { "flames_1_left.xpos",                      "8"                     },
index 62fd13074774852953ad2b228a6ee2b46a387bd3..f79b0233d4b9cd63b1b472000fdd4c24e6012664 100644 (file)
 #define IMG_BD_WALL_EDITOR                             1
 #define IMG_BD_ROCK                                    2
 #define IMG_BD_ROCK_EDITOR                             3
-#define IMG_BD_ROCK_FALLING                            4
-#define IMG_BD_ROCK_MOVING_LEFT                                5
-#define IMG_BD_ROCK_MOVING_RIGHT                       6
-#define IMG_BD_DIAMOND                                 7
-#define IMG_BD_DIAMOND_MOVING                          8
-#define IMG_BD_DIAMOND_FALLING                         9
-#define IMG_BD_MAGIC_WALL                              10
-#define IMG_BD_MAGIC_WALL_ACTIVE                       11
-#define IMG_BD_MAGIC_WALL_FILLING                      12
-#define IMG_BD_MAGIC_WALL_FULL                         13
-#define IMG_BD_MAGIC_WALL_EMPTYING                     14
-#define IMG_BD_MAGIC_WALL_DEAD                         15
-#define IMG_BD_AMOEBA                                  16
-#define IMG_BD_AMOEBA_EDITOR                           17
-#define IMG_BD_BUTTERFLY                               18
-#define IMG_BD_BUTTERFLY_RIGHT                         19
-#define IMG_BD_BUTTERFLY_UP                            20
-#define IMG_BD_BUTTERFLY_LEFT                          21
-#define IMG_BD_BUTTERFLY_DOWN                          22
-#define IMG_BD_BUTTERFLY_MOVING                                23
-#define IMG_BD_FIREFLY                                 24
-#define IMG_BD_FIREFLY_RIGHT                           25
-#define IMG_BD_FIREFLY_UP                              26
-#define IMG_BD_FIREFLY_LEFT                            27
-#define IMG_BD_FIREFLY_DOWN                            28
-#define IMG_BD_FIREFLY_MOVING                          29
-#define IMG_SP_DEFAULT_EXPLODING                       30
-#define IMG_SP_EMPTY_SPACE                             31
-#define IMG_SP_ZONK                                    32
-#define IMG_SP_ZONK_FALLING                            33
+#define IMG_BD_ROCK_MOVING_LEFT                                4
+#define IMG_BD_ROCK_MOVING_RIGHT                       5
+#define IMG_BD_ROCK_PUSHING_LEFT                       6
+#define IMG_BD_ROCK_PUSHING_RIGHT                      7
+#define IMG_BD_DIAMOND                                 8
+#define IMG_BD_DIAMOND_MOVING                          9
+#define IMG_BD_DIAMOND_FALLING                         10
+#define IMG_BD_MAGIC_WALL                              11
+#define IMG_BD_MAGIC_WALL_ACTIVE                       12
+#define IMG_BD_MAGIC_WALL_FILLING                      13
+#define IMG_BD_MAGIC_WALL_FULL                         14
+#define IMG_BD_MAGIC_WALL_EMPTYING                     15
+#define IMG_BD_MAGIC_WALL_DEAD                         16
+#define IMG_BD_AMOEBA                                  17
+#define IMG_BD_AMOEBA_EDITOR                           18
+#define IMG_BD_BUTTERFLY                               19
+#define IMG_BD_BUTTERFLY_RIGHT                         20
+#define IMG_BD_BUTTERFLY_UP                            21
+#define IMG_BD_BUTTERFLY_LEFT                          22
+#define IMG_BD_BUTTERFLY_DOWN                          23
+#define IMG_BD_BUTTERFLY_MOVING                                24
+#define IMG_BD_FIREFLY                                 25
+#define IMG_BD_FIREFLY_RIGHT                           26
+#define IMG_BD_FIREFLY_UP                              27
+#define IMG_BD_FIREFLY_LEFT                            28
+#define IMG_BD_FIREFLY_DOWN                            29
+#define IMG_BD_FIREFLY_MOVING                          30
+#define IMG_SP_DEFAULT_EXPLODING                       31
+#define IMG_SP_EMPTY_SPACE                             32
+#define IMG_SP_ZONK                                    33
 #define IMG_SP_ZONK_MOVING_LEFT                                34
 #define IMG_SP_ZONK_MOVING_RIGHT                       35
-#define IMG_SP_BASE                                    36
-#define IMG_SP_MURPHY                                  37
-#define IMG_SP_MURPHY_MOVING_LEFT                      38
-#define IMG_SP_MURPHY_MOVING_RIGHT                     39
-#define IMG_SP_MURPHY_DIGGING_LEFT                     40
-#define IMG_SP_MURPHY_DIGGING_RIGHT                    41
-#define IMG_SP_MURPHY_COLLECTING_LEFT                  42
-#define IMG_SP_MURPHY_COLLECTING_RIGHT                 43
-#define IMG_SP_MURPHY_PUSHING_LEFT                     44
-#define IMG_SP_MURPHY_PUSHING_RIGHT                    45
-#define IMG_SP_MURPHY_SNAPPING_LEFT                    46
-#define IMG_SP_MURPHY_SNAPPING_RIGHT                   47
-#define IMG_SP_MURPHY_SNAPPING_UP                      48
-#define IMG_SP_MURPHY_SNAPPING_DOWN                    49
-#define IMG_SP_MURPHY_CLONE                            50
-#define IMG_SP_INFOTRON                                        51
-#define IMG_SP_INFOTRON_EDITOR                         52
-#define IMG_SP_INFOTRON_FALLING                                53
-#define IMG_SP_CHIP_SINGLE                             54
-#define IMG_SP_CHIP_LEFT                               55
-#define IMG_SP_CHIP_RIGHT                              56
-#define IMG_SP_CHIP_TOP                                        57
-#define IMG_SP_CHIP_BOTTOM                             58
-#define IMG_SP_HARDWARE_GRAY                           59
-#define IMG_SP_HARDWARE_GREEN                          60
-#define IMG_SP_HARDWARE_BLUE                           61
-#define IMG_SP_HARDWARE_RED                            62
-#define IMG_SP_HARDWARE_YELLOW                         63
-#define IMG_SP_EXIT_CLOSED                             64
-#define IMG_SP_EXIT_OPEN                               65
-#define IMG_SP_DISK_ORANGE                             66
-#define IMG_SP_DISK_ORANGE_FALLING                     67
-#define IMG_SP_DISK_ORANGE_PUSHING                     68
-#define IMG_SP_DISK_YELLOW                             69
-#define IMG_SP_DISK_YELLOW_PUSHING                     70
-#define IMG_SP_DISK_RED                                        71
-#define IMG_SP_DISK_RED_COLLECTING                     72
-#define IMG_SP_DISK_RED_ACTIVE                         73
-#define IMG_SP_PORT_RIGHT                              74
-#define IMG_SP_PORT_DOWN                               75
-#define IMG_SP_PORT_LEFT                               76
-#define IMG_SP_PORT_UP                                 77
-#define IMG_SP_PORT_HORIZONTAL                         78
-#define IMG_SP_PORT_VERTICAL                           79
-#define IMG_SP_PORT_ANY                                        80
-#define IMG_SP_GRAVITY_PORT_RIGHT                      81
-#define IMG_SP_GRAVITY_PORT_DOWN                       82
-#define IMG_SP_GRAVITY_PORT_LEFT                       83
-#define IMG_SP_GRAVITY_PORT_UP                         84
-#define IMG_SP_SNIKSNAK                                        85
-#define IMG_SP_SNIKSNAK_LEFT                           86
-#define IMG_SP_SNIKSNAK_RIGHT                          87
-#define IMG_SP_SNIKSNAK_UP                             88
-#define IMG_SP_SNIKSNAK_DOWN                           89
-#define IMG_SP_ELECTRON                                        90
-#define IMG_SP_ELECTRON_EDITOR                         91
-#define IMG_SP_ELECTRON_EXPLODING                      92
-#define IMG_SP_TERMINAL                                        93
-#define IMG_SP_TERMINAL_EDITOR                         94
-#define IMG_SP_TERMINAL_ACTIVE                         95
-#define IMG_SP_BUGGY_BASE                              96
-#define IMG_SP_BUGGY_BASE_EDITOR                       97
-#define IMG_SP_BUGGY_BASE_ACTIVATING                   98
-#define IMG_SP_BUGGY_BASE_ACTIVE                       99
-#define IMG_SP_HARDWARE_BASE_1                         100
-#define IMG_SP_HARDWARE_BASE_2                         101
-#define IMG_SP_HARDWARE_BASE_3                         102
-#define IMG_SP_HARDWARE_BASE_4                         103
-#define IMG_SP_HARDWARE_BASE_5                         104
-#define IMG_SP_HARDWARE_BASE_6                         105
-#define IMG_SOKOBAN_OBJECT                             106
-#define IMG_SOKOBAN_OBJECT_EDITOR                      107
-#define IMG_SOKOBAN_FIELD_EMPTY                                108
-#define IMG_SOKOBAN_FIELD_FULL                         109
-#define IMG_EMPTY_SPACE                                        110
-#define IMG_SAND                                       111
-#define IMG_SAND_DIGGING_LEFT                          112
-#define IMG_SAND_DIGGING_RIGHT                         113
-#define IMG_SAND_DIGGING_UP                            114
-#define IMG_SAND_DIGGING_DOWN                          115
-#define IMG_SAND_CRUMBLED                              116
-#define IMG_SAND_CRUMBLED_DIGGING_LEFT                 117
-#define IMG_SAND_CRUMBLED_DIGGING_RIGHT                        118
-#define IMG_SAND_CRUMBLED_DIGGING_UP                   119
-#define IMG_SAND_CRUMBLED_DIGGING_DOWN                 120
-#define IMG_WALL                                       121
-#define IMG_WALL_CRUMBLED                              122
-#define IMG_STEELWALL                                  123
-#define IMG_ROCK                                       124
-#define IMG_ROCK_FALLING                               125
-#define IMG_ROCK_MOVING_LEFT                           126
-#define IMG_ROCK_MOVING_RIGHT                          127
-#define IMG_EMERALD                                    128
-#define IMG_EMERALD_MOVING                             129
-#define IMG_EMERALD_FALLING                            130
-#define IMG_EMERALD_COLLECTING                         131
-#define IMG_DIAMOND                                    132
-#define IMG_DIAMOND_MOVING                             133
-#define IMG_DIAMOND_FALLING                            134
-#define IMG_DIAMOND_COLLECTING                         135
-#define IMG_BOMB                                       136
-#define IMG_NUT                                                137
-#define IMG_NUT_FALLING                                        138
-#define IMG_NUT_MOVING_LEFT                            139
-#define IMG_NUT_MOVING_RIGHT                           140
-#define IMG_NUT_BREAKING                               141
-#define IMG_DYNAMITE                                   142
-#define IMG_DYNAMITE_EDITOR                            143
-#define IMG_DYNAMITE_ACTIVE                            144
-#define IMG_DYNAMITE_ACTIVE_EDITOR                     145
-#define IMG_WALL_EMERALD                               146
-#define IMG_WALL_DIAMOND                               147
-#define IMG_BUG                                                148
-#define IMG_BUG_RIGHT                                  149
-#define IMG_BUG_UP                                     150
-#define IMG_BUG_LEFT                                   151
-#define IMG_BUG_DOWN                                   152
-#define IMG_BUG_MOVING_RIGHT                           153
-#define IMG_BUG_MOVING_UP                              154
-#define IMG_BUG_MOVING_LEFT                            155
-#define IMG_BUG_MOVING_DOWN                            156
-#define IMG_SPACESHIP                                  157
-#define IMG_SPACESHIP_RIGHT                            158
-#define IMG_SPACESHIP_UP                               159
-#define IMG_SPACESHIP_LEFT                             160
-#define IMG_SPACESHIP_DOWN                             161
-#define IMG_SPACESHIP_MOVING_RIGHT                     162
-#define IMG_SPACESHIP_MOVING_UP                                163
-#define IMG_SPACESHIP_MOVING_LEFT                      164
-#define IMG_SPACESHIP_MOVING_DOWN                      165
-#define IMG_YAMYAM                                     166
-#define IMG_YAMYAM_MOVING                              167
-#define IMG_ROBOT                                      168
-#define IMG_ROBOT_MOVING                               169
-#define IMG_ROBOT_WHEEL                                        170
-#define IMG_ROBOT_WHEEL_ACTIVE                         171
-#define IMG_MAGIC_WALL                                 172
-#define IMG_MAGIC_WALL_ACTIVE                          173
-#define IMG_MAGIC_WALL_FILLING                         174
-#define IMG_MAGIC_WALL_FULL                            175
-#define IMG_MAGIC_WALL_EMPTYING                                176
-#define IMG_MAGIC_WALL_DEAD                            177
-#define IMG_QUICKSAND_EMPTY                            178
-#define IMG_QUICKSAND_FILLING                          179
-#define IMG_QUICKSAND_FULL                             180
-#define IMG_QUICKSAND_FULL_EDITOR                      181
-#define IMG_QUICKSAND_EMPTYING                         182
-#define IMG_ACID_POOL_TOPLEFT                          183
-#define IMG_ACID_POOL_TOPRIGHT                         184
-#define IMG_ACID_POOL_BOTTOMLEFT                       185
-#define IMG_ACID_POOL_BOTTOM                           186
-#define IMG_ACID_POOL_BOTTOMRIGHT                      187
-#define IMG_ACID                                       188
-#define IMG_ACID_SPLASH_LEFT                           189
-#define IMG_ACID_SPLASH_RIGHT                          190
-#define IMG_AMOEBA_DROP                                        191
-#define IMG_AMOEBA_GROWING                             192
-#define IMG_AMOEBA_SHRINKING                           193
-#define IMG_AMOEBA_WET                                 194
-#define IMG_AMOEBA_WET_EDITOR                          195
-#define IMG_AMOEBA_DROPPING                            196
-#define IMG_AMOEBA_DRY                                 197
-#define IMG_AMOEBA_FULL                                        198
-#define IMG_AMOEBA_FULL_EDITOR                         199
-#define IMG_AMOEBA_DEAD                                        200
-#define IMG_AMOEBA_DEAD_EDITOR                         201
-#define IMG_EM_KEY_1                                   202
-#define IMG_EM_KEY_2                                   203
-#define IMG_EM_KEY_3                                   204
-#define IMG_EM_KEY_4                                   205
-#define IMG_EM_GATE_1                                  206
-#define IMG_EM_GATE_2                                  207
-#define IMG_EM_GATE_3                                  208
-#define IMG_EM_GATE_4                                  209
-#define IMG_EM_GATE_1_GRAY                             210
-#define IMG_EM_GATE_1_GRAY_EDITOR                      211
-#define IMG_EM_GATE_2_GRAY                             212
-#define IMG_EM_GATE_2_GRAY_EDITOR                      213
-#define IMG_EM_GATE_3_GRAY                             214
-#define IMG_EM_GATE_3_GRAY_EDITOR                      215
-#define IMG_EM_GATE_4_GRAY                             216
-#define IMG_EM_GATE_4_GRAY_EDITOR                      217
-#define IMG_EXIT_CLOSED                                        218
-#define IMG_EXIT_OPENING                               219
-#define IMG_EXIT_OPEN                                  220
-#define IMG_BALLOON                                    221
-#define IMG_BALLOON_MOVING                             222
-#define IMG_BALLOON_SWITCH_LEFT                                223
-#define IMG_BALLOON_SWITCH_RIGHT                       224
-#define IMG_BALLOON_SWITCH_UP                          225
-#define IMG_BALLOON_SWITCH_DOWN                                226
-#define IMG_BALLOON_SWITCH_ANY                         227
-#define IMG_SPRING                                     228
-#define IMG_SPRING_MOVING                              229
-#define IMG_EMC_STEELWALL_1                            230
-#define IMG_EMC_STEELWALL_2                            231
-#define IMG_EMC_STEELWALL_3                            232
-#define IMG_EMC_STEELWALL_4                            233
-#define IMG_EMC_WALL_1                                 234
-#define IMG_EMC_WALL_2                                 235
-#define IMG_EMC_WALL_3                                 236
-#define IMG_EMC_WALL_4                                 237
-#define IMG_EMC_WALL_5                                 238
-#define IMG_EMC_WALL_6                                 239
-#define IMG_EMC_WALL_7                                 240
-#define IMG_EMC_WALL_8                                 241
-#define IMG_INVISIBLE_STEELWALL                                242
-#define IMG_INVISIBLE_STEELWALL_EDITOR                 243
-#define IMG_INVISIBLE_STEELWALL_ACTIVE                 244
-#define IMG_INVISIBLE_WALL                             245
-#define IMG_INVISIBLE_WALL_EDITOR                      246
-#define IMG_INVISIBLE_WALL_ACTIVE                      247
-#define IMG_INVISIBLE_SAND                             248
-#define IMG_INVISIBLE_SAND_EDITOR                      249
-#define IMG_INVISIBLE_SAND_ACTIVE                      250
-#define IMG_CONVEYOR_BELT_1_MIDDLE                     251
-#define IMG_CONVEYOR_BELT_1_MIDDLE_ACTIVE              252
-#define IMG_CONVEYOR_BELT_1_LEFT                       253
-#define IMG_CONVEYOR_BELT_1_LEFT_ACTIVE                        254
-#define IMG_CONVEYOR_BELT_1_RIGHT                      255
-#define IMG_CONVEYOR_BELT_1_RIGHT_ACTIVE               256
-#define IMG_CONVEYOR_BELT_1_SWITCH_LEFT                        257
-#define IMG_CONVEYOR_BELT_1_SWITCH_MIDDLE              258
-#define IMG_CONVEYOR_BELT_1_SWITCH_RIGHT               259
-#define IMG_CONVEYOR_BELT_2_MIDDLE                     260
-#define IMG_CONVEYOR_BELT_2_MIDDLE_ACTIVE              261
-#define IMG_CONVEYOR_BELT_2_LEFT                       262
-#define IMG_CONVEYOR_BELT_2_LEFT_ACTIVE                        263
-#define IMG_CONVEYOR_BELT_2_RIGHT                      264
-#define IMG_CONVEYOR_BELT_2_RIGHT_ACTIVE               265
-#define IMG_CONVEYOR_BELT_2_SWITCH_LEFT                        266
-#define IMG_CONVEYOR_BELT_2_SWITCH_MIDDLE              267
-#define IMG_CONVEYOR_BELT_2_SWITCH_RIGHT               268
-#define IMG_CONVEYOR_BELT_3_MIDDLE                     269
-#define IMG_CONVEYOR_BELT_3_MIDDLE_ACTIVE              270
-#define IMG_CONVEYOR_BELT_3_LEFT                       271
-#define IMG_CONVEYOR_BELT_3_LEFT_ACTIVE                        272
-#define IMG_CONVEYOR_BELT_3_RIGHT                      273
-#define IMG_CONVEYOR_BELT_3_RIGHT_ACTIVE               274
-#define IMG_CONVEYOR_BELT_3_SWITCH_LEFT                        275
-#define IMG_CONVEYOR_BELT_3_SWITCH_MIDDLE              276
-#define IMG_CONVEYOR_BELT_3_SWITCH_RIGHT               277
-#define IMG_CONVEYOR_BELT_4_MIDDLE                     278
-#define IMG_CONVEYOR_BELT_4_MIDDLE_ACTIVE              279
-#define IMG_CONVEYOR_BELT_4_LEFT                       280
-#define IMG_CONVEYOR_BELT_4_LEFT_ACTIVE                        281
-#define IMG_CONVEYOR_BELT_4_RIGHT                      282
-#define IMG_CONVEYOR_BELT_4_RIGHT_ACTIVE               283
-#define IMG_CONVEYOR_BELT_4_SWITCH_LEFT                        284
-#define IMG_CONVEYOR_BELT_4_SWITCH_MIDDLE              285
-#define IMG_CONVEYOR_BELT_4_SWITCH_RIGHT               286
-#define IMG_SWITCHGATE_SWITCH_UP                       287
-#define IMG_SWITCHGATE_SWITCH_DOWN                     288
-#define IMG_LIGHT_SWITCH                               289
-#define IMG_LIGHT_SWITCH_ACTIVE                                290
-#define IMG_TIMEGATE_SWITCH                            291
-#define IMG_TIMEGATE_SWITCH_ACTIVE                     292
-#define IMG_ENVELOPE                                   293
-#define IMG_SIGN_EXCLAMATION                           294
-#define IMG_SIGN_STOP                                  295
-#define IMG_LANDMINE                                   296
-#define IMG_STEELWALL_SLANTED                          297
-#define IMG_EXTRA_TIME                                 298
-#define IMG_SHIELD_NORMAL                              299
-#define IMG_SHIELD_NORMAL_ACTIVE                       300
-#define IMG_SHIELD_DEADLY                              301
-#define IMG_SHIELD_DEADLY_ACTIVE                       302
-#define IMG_SWITCHGATE_CLOSED                          303
-#define IMG_SWITCHGATE_OPENING                         304
-#define IMG_SWITCHGATE_OPEN                            305
-#define IMG_SWITCHGATE_CLOSING                         306
-#define IMG_TIMEGATE_CLOSED                            307
-#define IMG_TIMEGATE_OPENING                           308
-#define IMG_TIMEGATE_OPEN                              309
-#define IMG_TIMEGATE_CLOSING                           310
-#define IMG_PEARL                                      311
-#define IMG_PEARL_BREAKING                             312
-#define IMG_CRYSTAL                                    313
-#define IMG_WALL_PEARL                                 314
-#define IMG_WALL_CRYSTAL                               315
-#define IMG_TUBE_RIGHT_DOWN                            316
-#define IMG_TUBE_HORIZONTAL_DOWN                       317
-#define IMG_TUBE_LEFT_DOWN                             318
-#define IMG_TUBE_HORIZONTAL                            319
-#define IMG_TUBE_VERTICAL_RIGHT                                320
-#define IMG_TUBE_ANY                                   321
-#define IMG_TUBE_VERTICAL_LEFT                         322
-#define IMG_TUBE_VERTICAL                              323
-#define IMG_TUBE_RIGHT_UP                              324
-#define IMG_TUBE_HORIZONTAL_UP                         325
-#define IMG_TUBE_LEFT_UP                               326
-#define IMG_TRAP                                       327
-#define IMG_TRAP_ACTIVE                                        328
-#define IMG_DX_SUPABOMB                                        329
-#define IMG_KEY_1                                      330
-#define IMG_KEY_1_EDITOR                               331
-#define IMG_KEY_2                                      332
-#define IMG_KEY_2_EDITOR                               333
-#define IMG_KEY_3                                      334
-#define IMG_KEY_3_EDITOR                               335
-#define IMG_KEY_4                                      336
-#define IMG_KEY_4_EDITOR                               337
-#define IMG_GATE_1                                     338
-#define IMG_GATE_2                                     339
-#define IMG_GATE_3                                     340
-#define IMG_GATE_4                                     341
-#define IMG_GATE_1_GRAY                                        342
-#define IMG_GATE_1_GRAY_EDITOR                         343
-#define IMG_GATE_2_GRAY                                        344
-#define IMG_GATE_2_GRAY_EDITOR                         345
-#define IMG_GATE_3_GRAY                                        346
-#define IMG_GATE_3_GRAY_EDITOR                         347
-#define IMG_GATE_4_GRAY                                        348
-#define IMG_GATE_4_GRAY_EDITOR                         349
-#define IMG_GAME_OF_LIFE                               350
-#define IMG_BIOMAZE                                    351
-#define IMG_PACMAN                                     352
-#define IMG_PACMAN_RIGHT                               353
-#define IMG_PACMAN_UP                                  354
-#define IMG_PACMAN_LEFT                                        355
-#define IMG_PACMAN_DOWN                                        356
-#define IMG_PACMAN_MOVING_RIGHT                                357
-#define IMG_PACMAN_MOVING_UP                           358
-#define IMG_PACMAN_MOVING_LEFT                         359
-#define IMG_PACMAN_MOVING_DOWN                         360
-#define IMG_LAMP                                       361
-#define IMG_LAMP_EDITOR                                        362
-#define IMG_LAMP_ACTIVE                                        363
-#define IMG_TIME_ORB_FULL                              364
-#define IMG_TIME_ORB_EMPTY                             365
-#define IMG_EMERALD_YELLOW                             366
-#define IMG_EMERALD_YELLOW_MOVING                      367
-#define IMG_EMERALD_YELLOW_FALLING                     368
-#define IMG_EMERALD_RED                                        369
-#define IMG_EMERALD_RED_MOVING                         370
-#define IMG_EMERALD_RED_FALLING                                371
-#define IMG_EMERALD_PURPLE                             372
-#define IMG_EMERALD_PURPLE_MOVING                      373
-#define IMG_EMERALD_PURPLE_FALLING                     374
-#define IMG_WALL_EMERALD_YELLOW                                375
-#define IMG_WALL_EMERALD_RED                           376
-#define IMG_WALL_EMERALD_PURPLE                                377
-#define IMG_WALL_BD_DIAMOND                            378
-#define IMG_EXPANDABLE_WALL                            379
-#define IMG_EXPANDABLE_WALL_HORIZONTAL                 380
-#define IMG_EXPANDABLE_WALL_HORIZONTAL_EDITOR          381
-#define IMG_EXPANDABLE_WALL_VERTICAL                   382
-#define IMG_EXPANDABLE_WALL_VERTICAL_EDITOR            383
-#define IMG_EXPANDABLE_WALL_ANY                                384
-#define IMG_EXPANDABLE_WALL_ANY_EDITOR                 385
-#define IMG_EXPANDABLE_WALL_GROWING_LEFT               386
-#define IMG_EXPANDABLE_WALL_GROWING_RIGHT              387
-#define IMG_EXPANDABLE_WALL_GROWING_UP                 388
-#define IMG_EXPANDABLE_WALL_GROWING_DOWN               389
-#define IMG_BLACK_ORB                                  390
-#define IMG_SPEED_PILL                                 391
-#define IMG_DARK_YAMYAM                                        392
-#define IMG_DYNABOMB_ACTIVE                            393
-#define IMG_DYNABOMB_PLAYER_1_ACTIVE                   394
-#define IMG_DYNABOMB_PLAYER_2_ACTIVE                   395
-#define IMG_DYNABOMB_PLAYER_3_ACTIVE                   396
+#define IMG_SP_ZONK_PUSHING_LEFT                       36
+#define IMG_SP_ZONK_PUSHING_RIGHT                      37
+#define IMG_SP_BASE                                    38
+#define IMG_SP_MURPHY                                  39
+#define IMG_SP_MURPHY_MOVING_LEFT                      40
+#define IMG_SP_MURPHY_MOVING_RIGHT                     41
+#define IMG_SP_MURPHY_DIGGING_LEFT                     42
+#define IMG_SP_MURPHY_DIGGING_RIGHT                    43
+#define IMG_SP_MURPHY_COLLECTING_LEFT                  44
+#define IMG_SP_MURPHY_COLLECTING_RIGHT                 45
+#define IMG_SP_MURPHY_PUSHING_LEFT                     46
+#define IMG_SP_MURPHY_PUSHING_RIGHT                    47
+#define IMG_SP_MURPHY_SNAPPING_LEFT                    48
+#define IMG_SP_MURPHY_SNAPPING_RIGHT                   49
+#define IMG_SP_MURPHY_SNAPPING_UP                      50
+#define IMG_SP_MURPHY_SNAPPING_DOWN                    51
+#define IMG_SP_MURPHY_CLONE                            52
+#define IMG_SP_INFOTRON                                        53
+#define IMG_SP_INFOTRON_EDITOR                         54
+#define IMG_SP_CHIP_SINGLE                             55
+#define IMG_SP_CHIP_LEFT                               56
+#define IMG_SP_CHIP_RIGHT                              57
+#define IMG_SP_CHIP_TOP                                        58
+#define IMG_SP_CHIP_BOTTOM                             59
+#define IMG_SP_HARDWARE_GRAY                           60
+#define IMG_SP_HARDWARE_GREEN                          61
+#define IMG_SP_HARDWARE_BLUE                           62
+#define IMG_SP_HARDWARE_RED                            63
+#define IMG_SP_HARDWARE_YELLOW                         64
+#define IMG_SP_EXIT_CLOSED                             65
+#define IMG_SP_EXIT_OPEN                               66
+#define IMG_SP_DISK_ORANGE                             67
+#define IMG_SP_DISK_YELLOW                             68
+#define IMG_SP_DISK_RED                                        69
+#define IMG_SP_DISK_RED_COLLECTING                     70
+#define IMG_SP_PORT_RIGHT                              71
+#define IMG_SP_PORT_DOWN                               72
+#define IMG_SP_PORT_LEFT                               73
+#define IMG_SP_PORT_UP                                 74
+#define IMG_SP_PORT_HORIZONTAL                         75
+#define IMG_SP_PORT_VERTICAL                           76
+#define IMG_SP_PORT_ANY                                        77
+#define IMG_SP_GRAVITY_PORT_RIGHT                      78
+#define IMG_SP_GRAVITY_PORT_DOWN                       79
+#define IMG_SP_GRAVITY_PORT_LEFT                       80
+#define IMG_SP_GRAVITY_PORT_UP                         81
+#define IMG_SP_SNIKSNAK                                        82
+#define IMG_SP_SNIKSNAK_LEFT                           83
+#define IMG_SP_SNIKSNAK_RIGHT                          84
+#define IMG_SP_SNIKSNAK_UP                             85
+#define IMG_SP_SNIKSNAK_DOWN                           86
+#define IMG_SP_ELECTRON                                        87
+#define IMG_SP_ELECTRON_EDITOR                         88
+#define IMG_SP_ELECTRON_EXPLODING                      89
+#define IMG_SP_TERMINAL                                        90
+#define IMG_SP_TERMINAL_EDITOR                         91
+#define IMG_SP_TERMINAL_ACTIVE                         92
+#define IMG_SP_BUGGY_BASE                              93
+#define IMG_SP_BUGGY_BASE_EDITOR                       94
+#define IMG_SP_BUGGY_BASE_ACTIVATING                   95
+#define IMG_SP_BUGGY_BASE_ACTIVE                       96
+#define IMG_SP_HARDWARE_BASE_1                         97
+#define IMG_SP_HARDWARE_BASE_2                         98
+#define IMG_SP_HARDWARE_BASE_3                         99
+#define IMG_SP_HARDWARE_BASE_4                         100
+#define IMG_SP_HARDWARE_BASE_5                         101
+#define IMG_SP_HARDWARE_BASE_6                         102
+#define IMG_SOKOBAN_OBJECT                             103
+#define IMG_SOKOBAN_OBJECT_EDITOR                      104
+#define IMG_SOKOBAN_FIELD_EMPTY                                105
+#define IMG_SOKOBAN_FIELD_FULL                         106
+#define IMG_EMPTY_SPACE                                        107
+#define IMG_SAND                                       108
+#define IMG_SAND_DIGGING_LEFT                          109
+#define IMG_SAND_DIGGING_RIGHT                         110
+#define IMG_SAND_DIGGING_UP                            111
+#define IMG_SAND_DIGGING_DOWN                          112
+#define IMG_SAND_CRUMBLED                              113
+#define IMG_SAND_CRUMBLED_DIGGING_LEFT                 114
+#define IMG_SAND_CRUMBLED_DIGGING_RIGHT                        115
+#define IMG_SAND_CRUMBLED_DIGGING_UP                   116
+#define IMG_SAND_CRUMBLED_DIGGING_DOWN                 117
+#define IMG_WALL                                       118
+#define IMG_WALL_CRUMBLED                              119
+#define IMG_STEELWALL                                  120
+#define IMG_ROCK                                       121
+#define IMG_ROCK_MOVING_LEFT                           122
+#define IMG_ROCK_MOVING_RIGHT                          123
+#define IMG_ROCK_PUSHING_LEFT                          124
+#define IMG_ROCK_PUSHING_RIGHT                         125
+#define IMG_EMERALD                                    126
+#define IMG_EMERALD_MOVING                             127
+#define IMG_EMERALD_FALLING                            128
+#define IMG_EMERALD_COLLECTING                         129
+#define IMG_DIAMOND                                    130
+#define IMG_DIAMOND_MOVING                             131
+#define IMG_DIAMOND_FALLING                            132
+#define IMG_DIAMOND_COLLECTING                         133
+#define IMG_BOMB                                       134
+#define IMG_NUT                                                135
+#define IMG_NUT_BREAKING                               136
+#define IMG_DYNAMITE                                   137
+#define IMG_DYNAMITE_EDITOR                            138
+#define IMG_DYNAMITE_ACTIVE                            139
+#define IMG_DYNAMITE_ACTIVE_EDITOR                     140
+#define IMG_WALL_EMERALD                               141
+#define IMG_WALL_DIAMOND                               142
+#define IMG_BUG                                                143
+#define IMG_BUG_RIGHT                                  144
+#define IMG_BUG_UP                                     145
+#define IMG_BUG_LEFT                                   146
+#define IMG_BUG_DOWN                                   147
+#define IMG_BUG_MOVING_RIGHT                           148
+#define IMG_BUG_MOVING_UP                              149
+#define IMG_BUG_MOVING_LEFT                            150
+#define IMG_BUG_MOVING_DOWN                            151
+#define IMG_SPACESHIP                                  152
+#define IMG_SPACESHIP_RIGHT                            153
+#define IMG_SPACESHIP_UP                               154
+#define IMG_SPACESHIP_LEFT                             155
+#define IMG_SPACESHIP_DOWN                             156
+#define IMG_SPACESHIP_MOVING_RIGHT                     157
+#define IMG_SPACESHIP_MOVING_UP                                158
+#define IMG_SPACESHIP_MOVING_LEFT                      159
+#define IMG_SPACESHIP_MOVING_DOWN                      160
+#define IMG_YAMYAM                                     161
+#define IMG_YAMYAM_MOVING                              162
+#define IMG_ROBOT                                      163
+#define IMG_ROBOT_MOVING                               164
+#define IMG_ROBOT_WHEEL                                        165
+#define IMG_ROBOT_WHEEL_ACTIVE                         166
+#define IMG_MAGIC_WALL                                 167
+#define IMG_MAGIC_WALL_ACTIVE                          168
+#define IMG_MAGIC_WALL_FILLING                         169
+#define IMG_MAGIC_WALL_FULL                            170
+#define IMG_MAGIC_WALL_EMPTYING                                171
+#define IMG_MAGIC_WALL_DEAD                            172
+#define IMG_QUICKSAND_EMPTY                            173
+#define IMG_QUICKSAND_FILLING                          174
+#define IMG_QUICKSAND_FULL                             175
+#define IMG_QUICKSAND_FULL_EDITOR                      176
+#define IMG_QUICKSAND_EMPTYING                         177
+#define IMG_ACID_POOL_TOPLEFT                          178
+#define IMG_ACID_POOL_TOPRIGHT                         179
+#define IMG_ACID_POOL_BOTTOMLEFT                       180
+#define IMG_ACID_POOL_BOTTOM                           181
+#define IMG_ACID_POOL_BOTTOMRIGHT                      182
+#define IMG_ACID                                       183
+#define IMG_ACID_SPLASH_LEFT                           184
+#define IMG_ACID_SPLASH_RIGHT                          185
+#define IMG_AMOEBA_DROP                                        186
+#define IMG_AMOEBA_GROWING                             187
+#define IMG_AMOEBA_SHRINKING                           188
+#define IMG_AMOEBA_WET                                 189
+#define IMG_AMOEBA_WET_EDITOR                          190
+#define IMG_AMOEBA_DROPPING                            191
+#define IMG_AMOEBA_DRY                                 192
+#define IMG_AMOEBA_FULL                                        193
+#define IMG_AMOEBA_FULL_EDITOR                         194
+#define IMG_AMOEBA_DEAD                                        195
+#define IMG_AMOEBA_DEAD_EDITOR                         196
+#define IMG_EM_KEY_1                                   197
+#define IMG_EM_KEY_2                                   198
+#define IMG_EM_KEY_3                                   199
+#define IMG_EM_KEY_4                                   200
+#define IMG_EM_GATE_1                                  201
+#define IMG_EM_GATE_2                                  202
+#define IMG_EM_GATE_3                                  203
+#define IMG_EM_GATE_4                                  204
+#define IMG_EM_GATE_1_GRAY                             205
+#define IMG_EM_GATE_1_GRAY_EDITOR                      206
+#define IMG_EM_GATE_2_GRAY                             207
+#define IMG_EM_GATE_2_GRAY_EDITOR                      208
+#define IMG_EM_GATE_3_GRAY                             209
+#define IMG_EM_GATE_3_GRAY_EDITOR                      210
+#define IMG_EM_GATE_4_GRAY                             211
+#define IMG_EM_GATE_4_GRAY_EDITOR                      212
+#define IMG_EXIT_CLOSED                                        213
+#define IMG_EXIT_OPENING                               214
+#define IMG_EXIT_OPEN                                  215
+#define IMG_BALLOON                                    216
+#define IMG_BALLOON_MOVING                             217
+#define IMG_BALLOON_PUSHING                            218
+#define IMG_BALLOON_SWITCH_LEFT                                219
+#define IMG_BALLOON_SWITCH_RIGHT                       220
+#define IMG_BALLOON_SWITCH_UP                          221
+#define IMG_BALLOON_SWITCH_DOWN                                222
+#define IMG_BALLOON_SWITCH_ANY                         223
+#define IMG_SPRING                                     224
+#define IMG_EMC_STEELWALL_1                            225
+#define IMG_EMC_STEELWALL_2                            226
+#define IMG_EMC_STEELWALL_3                            227
+#define IMG_EMC_STEELWALL_4                            228
+#define IMG_EMC_WALL_1                                 229
+#define IMG_EMC_WALL_2                                 230
+#define IMG_EMC_WALL_3                                 231
+#define IMG_EMC_WALL_4                                 232
+#define IMG_EMC_WALL_5                                 233
+#define IMG_EMC_WALL_6                                 234
+#define IMG_EMC_WALL_7                                 235
+#define IMG_EMC_WALL_8                                 236
+#define IMG_INVISIBLE_STEELWALL                                237
+#define IMG_INVISIBLE_STEELWALL_EDITOR                 238
+#define IMG_INVISIBLE_STEELWALL_ACTIVE                 239
+#define IMG_INVISIBLE_WALL                             240
+#define IMG_INVISIBLE_WALL_EDITOR                      241
+#define IMG_INVISIBLE_WALL_ACTIVE                      242
+#define IMG_INVISIBLE_SAND                             243
+#define IMG_INVISIBLE_SAND_EDITOR                      244
+#define IMG_INVISIBLE_SAND_ACTIVE                      245
+#define IMG_CONVEYOR_BELT_1_MIDDLE                     246
+#define IMG_CONVEYOR_BELT_1_MIDDLE_ACTIVE              247
+#define IMG_CONVEYOR_BELT_1_LEFT                       248
+#define IMG_CONVEYOR_BELT_1_LEFT_ACTIVE                        249
+#define IMG_CONVEYOR_BELT_1_RIGHT                      250
+#define IMG_CONVEYOR_BELT_1_RIGHT_ACTIVE               251
+#define IMG_CONVEYOR_BELT_1_SWITCH_LEFT                        252
+#define IMG_CONVEYOR_BELT_1_SWITCH_MIDDLE              253
+#define IMG_CONVEYOR_BELT_1_SWITCH_RIGHT               254
+#define IMG_CONVEYOR_BELT_2_MIDDLE                     255
+#define IMG_CONVEYOR_BELT_2_MIDDLE_ACTIVE              256
+#define IMG_CONVEYOR_BELT_2_LEFT                       257
+#define IMG_CONVEYOR_BELT_2_LEFT_ACTIVE                        258
+#define IMG_CONVEYOR_BELT_2_RIGHT                      259
+#define IMG_CONVEYOR_BELT_2_RIGHT_ACTIVE               260
+#define IMG_CONVEYOR_BELT_2_SWITCH_LEFT                        261
+#define IMG_CONVEYOR_BELT_2_SWITCH_MIDDLE              262
+#define IMG_CONVEYOR_BELT_2_SWITCH_RIGHT               263
+#define IMG_CONVEYOR_BELT_3_MIDDLE                     264
+#define IMG_CONVEYOR_BELT_3_MIDDLE_ACTIVE              265
+#define IMG_CONVEYOR_BELT_3_LEFT                       266
+#define IMG_CONVEYOR_BELT_3_LEFT_ACTIVE                        267
+#define IMG_CONVEYOR_BELT_3_RIGHT                      268
+#define IMG_CONVEYOR_BELT_3_RIGHT_ACTIVE               269
+#define IMG_CONVEYOR_BELT_3_SWITCH_LEFT                        270
+#define IMG_CONVEYOR_BELT_3_SWITCH_MIDDLE              271
+#define IMG_CONVEYOR_BELT_3_SWITCH_RIGHT               272
+#define IMG_CONVEYOR_BELT_4_MIDDLE                     273
+#define IMG_CONVEYOR_BELT_4_MIDDLE_ACTIVE              274
+#define IMG_CONVEYOR_BELT_4_LEFT                       275
+#define IMG_CONVEYOR_BELT_4_LEFT_ACTIVE                        276
+#define IMG_CONVEYOR_BELT_4_RIGHT                      277
+#define IMG_CONVEYOR_BELT_4_RIGHT_ACTIVE               278
+#define IMG_CONVEYOR_BELT_4_SWITCH_LEFT                        279
+#define IMG_CONVEYOR_BELT_4_SWITCH_MIDDLE              280
+#define IMG_CONVEYOR_BELT_4_SWITCH_RIGHT               281
+#define IMG_SWITCHGATE_SWITCH_UP                       282
+#define IMG_SWITCHGATE_SWITCH_DOWN                     283
+#define IMG_LIGHT_SWITCH                               284
+#define IMG_LIGHT_SWITCH_ACTIVE                                285
+#define IMG_TIMEGATE_SWITCH                            286
+#define IMG_TIMEGATE_SWITCH_ACTIVE                     287
+#define IMG_ENVELOPE                                   288
+#define IMG_SIGN_EXCLAMATION                           289
+#define IMG_SIGN_STOP                                  290
+#define IMG_LANDMINE                                   291
+#define IMG_STEELWALL_SLANTED                          292
+#define IMG_EXTRA_TIME                                 293
+#define IMG_SHIELD_NORMAL                              294
+#define IMG_SHIELD_NORMAL_ACTIVE                       295
+#define IMG_SHIELD_DEADLY                              296
+#define IMG_SHIELD_DEADLY_ACTIVE                       297
+#define IMG_SWITCHGATE_CLOSED                          298
+#define IMG_SWITCHGATE_OPENING                         299
+#define IMG_SWITCHGATE_OPEN                            300
+#define IMG_SWITCHGATE_CLOSING                         301
+#define IMG_TIMEGATE_CLOSED                            302
+#define IMG_TIMEGATE_OPENING                           303
+#define IMG_TIMEGATE_OPEN                              304
+#define IMG_TIMEGATE_CLOSING                           305
+#define IMG_PEARL                                      306
+#define IMG_PEARL_BREAKING                             307
+#define IMG_CRYSTAL                                    308
+#define IMG_WALL_PEARL                                 309
+#define IMG_WALL_CRYSTAL                               310
+#define IMG_TUBE_RIGHT_DOWN                            311
+#define IMG_TUBE_HORIZONTAL_DOWN                       312
+#define IMG_TUBE_LEFT_DOWN                             313
+#define IMG_TUBE_HORIZONTAL                            314
+#define IMG_TUBE_VERTICAL_RIGHT                                315
+#define IMG_TUBE_ANY                                   316
+#define IMG_TUBE_VERTICAL_LEFT                         317
+#define IMG_TUBE_VERTICAL                              318
+#define IMG_TUBE_RIGHT_UP                              319
+#define IMG_TUBE_HORIZONTAL_UP                         320
+#define IMG_TUBE_LEFT_UP                               321
+#define IMG_TRAP                                       322
+#define IMG_TRAP_ACTIVE                                        323
+#define IMG_DX_SUPABOMB                                        324
+#define IMG_KEY_1                                      325
+#define IMG_KEY_1_EDITOR                               326
+#define IMG_KEY_2                                      327
+#define IMG_KEY_2_EDITOR                               328
+#define IMG_KEY_3                                      329
+#define IMG_KEY_3_EDITOR                               330
+#define IMG_KEY_4                                      331
+#define IMG_KEY_4_EDITOR                               332
+#define IMG_GATE_1                                     333
+#define IMG_GATE_2                                     334
+#define IMG_GATE_3                                     335
+#define IMG_GATE_4                                     336
+#define IMG_GATE_1_GRAY                                        337
+#define IMG_GATE_1_GRAY_EDITOR                         338
+#define IMG_GATE_2_GRAY                                        339
+#define IMG_GATE_2_GRAY_EDITOR                         340
+#define IMG_GATE_3_GRAY                                        341
+#define IMG_GATE_3_GRAY_EDITOR                         342
+#define IMG_GATE_4_GRAY                                        343
+#define IMG_GATE_4_GRAY_EDITOR                         344
+#define IMG_GAME_OF_LIFE                               345
+#define IMG_BIOMAZE                                    346
+#define IMG_PACMAN                                     347
+#define IMG_PACMAN_RIGHT                               348
+#define IMG_PACMAN_UP                                  349
+#define IMG_PACMAN_LEFT                                        350
+#define IMG_PACMAN_DOWN                                        351
+#define IMG_PACMAN_MOVING_RIGHT                                352
+#define IMG_PACMAN_MOVING_UP                           353
+#define IMG_PACMAN_MOVING_LEFT                         354
+#define IMG_PACMAN_MOVING_DOWN                         355
+#define IMG_LAMP                                       356
+#define IMG_LAMP_EDITOR                                        357
+#define IMG_LAMP_ACTIVE                                        358
+#define IMG_TIME_ORB_FULL                              359
+#define IMG_TIME_ORB_EMPTY                             360
+#define IMG_EMERALD_YELLOW                             361
+#define IMG_EMERALD_YELLOW_MOVING                      362
+#define IMG_EMERALD_YELLOW_FALLING                     363
+#define IMG_EMERALD_RED                                        364
+#define IMG_EMERALD_RED_MOVING                         365
+#define IMG_EMERALD_RED_FALLING                                366
+#define IMG_EMERALD_PURPLE                             367
+#define IMG_EMERALD_PURPLE_MOVING                      368
+#define IMG_EMERALD_PURPLE_FALLING                     369
+#define IMG_WALL_EMERALD_YELLOW                                370
+#define IMG_WALL_EMERALD_RED                           371
+#define IMG_WALL_EMERALD_PURPLE                                372
+#define IMG_WALL_BD_DIAMOND                            373
+#define IMG_EXPANDABLE_WALL                            374
+#define IMG_EXPANDABLE_WALL_HORIZONTAL                 375
+#define IMG_EXPANDABLE_WALL_HORIZONTAL_EDITOR          376
+#define IMG_EXPANDABLE_WALL_VERTICAL                   377
+#define IMG_EXPANDABLE_WALL_VERTICAL_EDITOR            378
+#define IMG_EXPANDABLE_WALL_ANY                                379
+#define IMG_EXPANDABLE_WALL_ANY_EDITOR                 380
+#define IMG_EXPANDABLE_WALL_GROWING_LEFT               381
+#define IMG_EXPANDABLE_WALL_GROWING_RIGHT              382
+#define IMG_EXPANDABLE_WALL_GROWING_UP                 383
+#define IMG_EXPANDABLE_WALL_GROWING_DOWN               384
+#define IMG_BLACK_ORB                                  385
+#define IMG_SPEED_PILL                                 386
+#define IMG_DARK_YAMYAM                                        387
+#define IMG_DYNABOMB                                   388
+#define IMG_DYNABOMB_ACTIVE                            389
+#define IMG_DYNABOMB_PLAYER_1                          390
+#define IMG_DYNABOMB_PLAYER_1_ACTIVE                   391
+#define IMG_DYNABOMB_PLAYER_2                          392
+#define IMG_DYNABOMB_PLAYER_2_ACTIVE                   393
+#define IMG_DYNABOMB_PLAYER_3                          394
+#define IMG_DYNABOMB_PLAYER_3_ACTIVE                   395
+#define IMG_DYNABOMB_PLAYER_4                          396
 #define IMG_DYNABOMB_PLAYER_4_ACTIVE                   397
 #define IMG_DYNABOMB_INCREASE_NUMBER                   398
 #define IMG_DYNABOMB_INCREASE_SIZE                     399
 #define IMG_PENGUIN_MOVING_LEFT                                448
 #define IMG_PENGUIN_MOVING_RIGHT                       449
 #define IMG_SATELLITE                                  450
-#define IMG_SATELLITE_MOVING                           451
-#define IMG_FLAMES_1_LEFT                              452
-#define IMG_FLAMES_2_LEFT                              453
-#define IMG_FLAMES_3_LEFT                              454
-#define IMG_FLAMES_1_RIGHT                             455
-#define IMG_FLAMES_2_RIGHT                             456
-#define IMG_FLAMES_3_RIGHT                             457
-#define IMG_FLAMES_1_UP                                        458
-#define IMG_FLAMES_2_UP                                        459
-#define IMG_FLAMES_3_UP                                        460
-#define IMG_FLAMES_1_DOWN                              461
-#define IMG_FLAMES_2_DOWN                              462
-#define IMG_FLAMES_3_DOWN                              463
-#define IMG_STONEBLOCK                                 464
-#define IMG_PLAYER_1                                   465
-#define IMG_PLAYER_1_EDITOR                            466
-#define IMG_PLAYER_1_DOWN                              467
-#define IMG_PLAYER_1_UP                                        468
-#define IMG_PLAYER_1_LEFT                              469
-#define IMG_PLAYER_1_RIGHT                             470
-#define IMG_PLAYER_1_MOVING_DOWN                       471
-#define IMG_PLAYER_1_MOVING_UP                         472
-#define IMG_PLAYER_1_MOVING_LEFT                       473
-#define IMG_PLAYER_1_MOVING_RIGHT                      474
-#define IMG_PLAYER_1_DIGGING_DOWN                      475
-#define IMG_PLAYER_1_DIGGING_UP                                476
-#define IMG_PLAYER_1_DIGGING_LEFT                      477
-#define IMG_PLAYER_1_DIGGING_RIGHT                     478
-#define IMG_PLAYER_1_COLLECTING_DOWN                   479
-#define IMG_PLAYER_1_COLLECTING_UP                     480
-#define IMG_PLAYER_1_COLLECTING_LEFT                   481
-#define IMG_PLAYER_1_COLLECTING_RIGHT                  482
-#define IMG_PLAYER_1_PUSHING_DOWN                      483
-#define IMG_PLAYER_1_PUSHING_UP                                484
-#define IMG_PLAYER_1_PUSHING_LEFT                      485
-#define IMG_PLAYER_1_PUSHING_RIGHT                     486
-#define IMG_PLAYER_1_SNAPPING_DOWN                     487
-#define IMG_PLAYER_1_SNAPPING_UP                       488
-#define IMG_PLAYER_1_SNAPPING_LEFT                     489
-#define IMG_PLAYER_1_SNAPPING_RIGHT                    490
-#define IMG_PLAYER_2                                   491
-#define IMG_PLAYER_2_EDITOR                            492
-#define IMG_PLAYER_2_DOWN                              493
-#define IMG_PLAYER_2_UP                                        494
-#define IMG_PLAYER_2_LEFT                              495
-#define IMG_PLAYER_2_RIGHT                             496
-#define IMG_PLAYER_2_MOVING_DOWN                       497
-#define IMG_PLAYER_2_MOVING_UP                         498
-#define IMG_PLAYER_2_MOVING_LEFT                       499
-#define IMG_PLAYER_2_MOVING_RIGHT                      500
-#define IMG_PLAYER_2_DIGGING_DOWN                      501
-#define IMG_PLAYER_2_DIGGING_UP                                502
-#define IMG_PLAYER_2_DIGGING_LEFT                      503
-#define IMG_PLAYER_2_DIGGING_RIGHT                     504
-#define IMG_PLAYER_2_COLLECTING_DOWN                   505
-#define IMG_PLAYER_2_COLLECTING_UP                     506
-#define IMG_PLAYER_2_COLLECTING_LEFT                   507
-#define IMG_PLAYER_2_COLLECTING_RIGHT                  508
-#define IMG_PLAYER_2_PUSHING_DOWN                      509
-#define IMG_PLAYER_2_PUSHING_UP                                510
-#define IMG_PLAYER_2_PUSHING_LEFT                      511
-#define IMG_PLAYER_2_PUSHING_RIGHT                     512
-#define IMG_PLAYER_2_SNAPPING_DOWN                     513
-#define IMG_PLAYER_2_SNAPPING_UP                       514
-#define IMG_PLAYER_2_SNAPPING_LEFT                     515
-#define IMG_PLAYER_2_SNAPPING_RIGHT                    516
-#define IMG_PLAYER_3                                   517
-#define IMG_PLAYER_3_EDITOR                            518
-#define IMG_PLAYER_3_DOWN                              519
-#define IMG_PLAYER_3_UP                                        520
-#define IMG_PLAYER_3_LEFT                              521
-#define IMG_PLAYER_3_RIGHT                             522
-#define IMG_PLAYER_3_MOVING_DOWN                       523
-#define IMG_PLAYER_3_MOVING_UP                         524
-#define IMG_PLAYER_3_MOVING_LEFT                       525
-#define IMG_PLAYER_3_MOVING_RIGHT                      526
-#define IMG_PLAYER_3_DIGGING_DOWN                      527
-#define IMG_PLAYER_3_DIGGING_UP                                528
-#define IMG_PLAYER_3_DIGGING_LEFT                      529
-#define IMG_PLAYER_3_DIGGING_RIGHT                     530
-#define IMG_PLAYER_3_COLLECTING_DOWN                   531
-#define IMG_PLAYER_3_COLLECTING_UP                     532
-#define IMG_PLAYER_3_COLLECTING_LEFT                   533
-#define IMG_PLAYER_3_COLLECTING_RIGHT                  534
-#define IMG_PLAYER_3_PUSHING_DOWN                      535
-#define IMG_PLAYER_3_PUSHING_UP                                536
-#define IMG_PLAYER_3_PUSHING_LEFT                      537
-#define IMG_PLAYER_3_PUSHING_RIGHT                     538
-#define IMG_PLAYER_3_SNAPPING_DOWN                     539
-#define IMG_PLAYER_3_SNAPPING_UP                       540
-#define IMG_PLAYER_3_SNAPPING_LEFT                     541
-#define IMG_PLAYER_3_SNAPPING_RIGHT                    542
-#define IMG_PLAYER_4                                   543
-#define IMG_PLAYER_4_EDITOR                            544
-#define IMG_PLAYER_4_DOWN                              545
-#define IMG_PLAYER_4_UP                                        546
-#define IMG_PLAYER_4_LEFT                              547
-#define IMG_PLAYER_4_RIGHT                             548
-#define IMG_PLAYER_4_MOVING_DOWN                       549
-#define IMG_PLAYER_4_MOVING_UP                         550
-#define IMG_PLAYER_4_MOVING_LEFT                       551
-#define IMG_PLAYER_4_MOVING_RIGHT                      552
-#define IMG_PLAYER_4_DIGGING_DOWN                      553
-#define IMG_PLAYER_4_DIGGING_UP                                554
-#define IMG_PLAYER_4_DIGGING_LEFT                      555
-#define IMG_PLAYER_4_DIGGING_RIGHT                     556
-#define IMG_PLAYER_4_COLLECTING_DOWN                   557
-#define IMG_PLAYER_4_COLLECTING_UP                     558
-#define IMG_PLAYER_4_COLLECTING_LEFT                   559
-#define IMG_PLAYER_4_COLLECTING_RIGHT                  560
-#define IMG_PLAYER_4_PUSHING_DOWN                      561
-#define IMG_PLAYER_4_PUSHING_UP                                562
-#define IMG_PLAYER_4_PUSHING_LEFT                      563
-#define IMG_PLAYER_4_PUSHING_RIGHT                     564
-#define IMG_PLAYER_4_SNAPPING_DOWN                     565
-#define IMG_PLAYER_4_SNAPPING_UP                       566
-#define IMG_PLAYER_4_SNAPPING_LEFT                     567
-#define IMG_PLAYER_4_SNAPPING_RIGHT                    568
-#define IMG_DEFAULT_EXPLODING                          569
-#define IMG_TWINKLE_BLUE                               570
-#define IMG_TWINKLE_WHITE                              571
-#define IMG_STEELWALL_TOPLEFT                          572
-#define IMG_STEELWALL_TOPRIGHT                         573
-#define IMG_STEELWALL_BOTTOMLEFT                       574
-#define IMG_STEELWALL_BOTTOMRIGHT                      575
-#define IMG_STEELWALL_HORIZONTAL                       576
-#define IMG_STEELWALL_VERTICAL                         577
-#define IMG_STEELWALL_TOPLEFT_EDITOR                   578
-#define IMG_STEELWALL_TOPRIGHT_EDITOR                  579
-#define IMG_STEELWALL_BOTTOMLEFT_EDITOR                        580
-#define IMG_STEELWALL_BOTTOMRIGHT_EDITOR               581
-#define IMG_STEELWALL_HORIZONTAL_EDITOR                        582
-#define IMG_STEELWALL_VERTICAL_EDITOR                  583
-#define IMG_INVISIBLE_STEELWALL_TOPLEFT                        584
-#define IMG_INVISIBLE_STEELWALL_TOPRIGHT               585
-#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT             586
-#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT            587
-#define IMG_INVISIBLE_STEELWALL_HORIZONTAL             588
-#define IMG_INVISIBLE_STEELWALL_VERTICAL               589
-#define IMG_INVISIBLE_STEELWALL_TOPLEFT_EDITOR         590
-#define IMG_INVISIBLE_STEELWALL_TOPRIGHT_EDITOR                591
-#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT_EDITOR      592
-#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT_EDITOR     593
-#define IMG_INVISIBLE_STEELWALL_HORIZONTAL_EDITOR      594
-#define IMG_INVISIBLE_STEELWALL_VERTICAL_EDITOR                595
-#define IMG_ARROW_LEFT                                 596
-#define IMG_ARROW_RIGHT                                        597
-#define IMG_ARROW_UP                                   598
-#define IMG_ARROW_DOWN                                 599
-#define IMG_CHAR_SPACE                                 600
-#define IMG_CHAR_EXCLAM                                        601
-#define IMG_CHAR_QUOTEDBL                              602
-#define IMG_CHAR_NUMBERSIGN                            603
-#define IMG_CHAR_DOLLAR                                        604
-#define IMG_CHAR_PROCENT                               605
-#define IMG_CHAR_AMPERSAND                             606
-#define IMG_CHAR_APOSTROPHE                            607
-#define IMG_CHAR_PARENLEFT                             608
-#define IMG_CHAR_PARENRIGHT                            609
-#define IMG_CHAR_ASTERISK                              610
-#define IMG_CHAR_PLUS                                  611
-#define IMG_CHAR_COMMA                                 612
-#define IMG_CHAR_MINUS                                 613
-#define IMG_CHAR_PERIOD                                        614
-#define IMG_CHAR_SLASH                                 615
-#define IMG_CHAR_0                                     616
-#define IMG_CHAR_1                                     617
-#define IMG_CHAR_2                                     618
-#define IMG_CHAR_3                                     619
-#define IMG_CHAR_4                                     620
-#define IMG_CHAR_5                                     621
-#define IMG_CHAR_6                                     622
-#define IMG_CHAR_7                                     623
-#define IMG_CHAR_8                                     624
-#define IMG_CHAR_9                                     625
-#define IMG_CHAR_COLON                                 626
-#define IMG_CHAR_SEMICOLON                             627
-#define IMG_CHAR_LESS                                  628
-#define IMG_CHAR_EQUAL                                 629
-#define IMG_CHAR_GREATER                               630
-#define IMG_CHAR_QUESTION                              631
-#define IMG_CHAR_AT                                    632
-#define IMG_CHAR_A                                     633
-#define IMG_CHAR_B                                     634
-#define IMG_CHAR_C                                     635
-#define IMG_CHAR_D                                     636
-#define IMG_CHAR_E                                     637
-#define IMG_CHAR_F                                     638
-#define IMG_CHAR_G                                     639
-#define IMG_CHAR_H                                     640
-#define IMG_CHAR_I                                     641
-#define IMG_CHAR_J                                     642
-#define IMG_CHAR_K                                     643
-#define IMG_CHAR_L                                     644
-#define IMG_CHAR_M                                     645
-#define IMG_CHAR_N                                     646
-#define IMG_CHAR_O                                     647
-#define IMG_CHAR_P                                     648
-#define IMG_CHAR_Q                                     649
-#define IMG_CHAR_R                                     650
-#define IMG_CHAR_S                                     651
-#define IMG_CHAR_T                                     652
-#define IMG_CHAR_U                                     653
-#define IMG_CHAR_V                                     654
-#define IMG_CHAR_W                                     655
-#define IMG_CHAR_X                                     656
-#define IMG_CHAR_Y                                     657
-#define IMG_CHAR_Z                                     658
-#define IMG_CHAR_BRACKETLEFT                           659
-#define IMG_CHAR_BACKSLASH                             660
-#define IMG_CHAR_BRACKETRIGHT                          661
-#define IMG_CHAR_ASCIICIRCUM                           662
-#define IMG_CHAR_UNDERSCORE                            663
-#define IMG_CHAR_COPYRIGHT                             664
-#define IMG_CHAR_AUMLAUT                               665
-#define IMG_CHAR_OUMLAUT                               666
-#define IMG_CHAR_UUMLAUT                               667
-#define IMG_CHAR_DEGREE                                        668
-#define IMG_CHAR_TRADEMARK                             669
-#define IMG_CHAR_CURSOR                                        670
-#define IMG_CUSTOM_1                                   671
-#define IMG_CUSTOM_1_EDITOR                            672
-#define IMG_CUSTOM_2                                   673
-#define IMG_CUSTOM_2_EDITOR                            674
-#define IMG_CUSTOM_3                                   675
-#define IMG_CUSTOM_3_EDITOR                            676
-#define IMG_CUSTOM_4                                   677
-#define IMG_CUSTOM_4_EDITOR                            678
-#define IMG_CUSTOM_5                                   679
-#define IMG_CUSTOM_5_EDITOR                            680
-#define IMG_CUSTOM_6                                   681
-#define IMG_CUSTOM_6_EDITOR                            682
-#define IMG_CUSTOM_7                                   683
-#define IMG_CUSTOM_7_EDITOR                            684
-#define IMG_CUSTOM_8                                   685
-#define IMG_CUSTOM_8_EDITOR                            686
-#define IMG_CUSTOM_9                                   687
-#define IMG_CUSTOM_9_EDITOR                            688
-#define IMG_CUSTOM_10                                  689
-#define IMG_CUSTOM_10_EDITOR                           690
-#define IMG_CUSTOM_11                                  691
-#define IMG_CUSTOM_11_EDITOR                           692
-#define IMG_CUSTOM_12                                  693
-#define IMG_CUSTOM_12_EDITOR                           694
-#define IMG_CUSTOM_13                                  695
-#define IMG_CUSTOM_13_EDITOR                           696
-#define IMG_CUSTOM_14                                  697
-#define IMG_CUSTOM_14_EDITOR                           698
-#define IMG_CUSTOM_15                                  699
-#define IMG_CUSTOM_15_EDITOR                           700
-#define IMG_CUSTOM_16                                  701
-#define IMG_CUSTOM_16_EDITOR                           702
-#define IMG_CUSTOM_17                                  703
-#define IMG_CUSTOM_17_EDITOR                           704
-#define IMG_CUSTOM_18                                  705
-#define IMG_CUSTOM_18_EDITOR                           706
-#define IMG_CUSTOM_19                                  707
-#define IMG_CUSTOM_19_EDITOR                           708
-#define IMG_CUSTOM_20                                  709
-#define IMG_CUSTOM_20_EDITOR                           710
-#define IMG_CUSTOM_21                                  711
-#define IMG_CUSTOM_21_EDITOR                           712
-#define IMG_CUSTOM_22                                  713
-#define IMG_CUSTOM_22_EDITOR                           714
-#define IMG_CUSTOM_23                                  715
-#define IMG_CUSTOM_23_EDITOR                           716
-#define IMG_CUSTOM_24                                  717
-#define IMG_CUSTOM_24_EDITOR                           718
-#define IMG_CUSTOM_25                                  719
-#define IMG_CUSTOM_25_EDITOR                           720
-#define IMG_CUSTOM_26                                  721
-#define IMG_CUSTOM_26_EDITOR                           722
-#define IMG_CUSTOM_27                                  723
-#define IMG_CUSTOM_27_EDITOR                           724
-#define IMG_CUSTOM_28                                  725
-#define IMG_CUSTOM_28_EDITOR                           726
-#define IMG_CUSTOM_29                                  727
-#define IMG_CUSTOM_29_EDITOR                           728
-#define IMG_CUSTOM_30                                  729
-#define IMG_CUSTOM_30_EDITOR                           730
-#define IMG_CUSTOM_31                                  731
-#define IMG_CUSTOM_31_EDITOR                           732
-#define IMG_CUSTOM_32                                  733
-#define IMG_CUSTOM_32_EDITOR                           734
-#define IMG_CUSTOM_33                                  735
-#define IMG_CUSTOM_33_EDITOR                           736
-#define IMG_CUSTOM_34                                  737
-#define IMG_CUSTOM_34_EDITOR                           738
-#define IMG_CUSTOM_35                                  739
-#define IMG_CUSTOM_35_EDITOR                           740
-#define IMG_CUSTOM_36                                  741
-#define IMG_CUSTOM_36_EDITOR                           742
-#define IMG_CUSTOM_37                                  743
-#define IMG_CUSTOM_37_EDITOR                           744
-#define IMG_CUSTOM_38                                  745
-#define IMG_CUSTOM_38_EDITOR                           746
-#define IMG_CUSTOM_39                                  747
-#define IMG_CUSTOM_39_EDITOR                           748
-#define IMG_CUSTOM_40                                  749
-#define IMG_CUSTOM_40_EDITOR                           750
-#define IMG_CUSTOM_41                                  751
-#define IMG_CUSTOM_41_EDITOR                           752
-#define IMG_CUSTOM_42                                  753
-#define IMG_CUSTOM_42_EDITOR                           754
-#define IMG_CUSTOM_43                                  755
-#define IMG_CUSTOM_43_EDITOR                           756
-#define IMG_CUSTOM_44                                  757
-#define IMG_CUSTOM_44_EDITOR                           758
-#define IMG_CUSTOM_45                                  759
-#define IMG_CUSTOM_45_EDITOR                           760
-#define IMG_CUSTOM_46                                  761
-#define IMG_CUSTOM_46_EDITOR                           762
-#define IMG_CUSTOM_47                                  763
-#define IMG_CUSTOM_47_EDITOR                           764
-#define IMG_CUSTOM_48                                  765
-#define IMG_CUSTOM_48_EDITOR                           766
-#define IMG_CUSTOM_49                                  767
-#define IMG_CUSTOM_49_EDITOR                           768
-#define IMG_CUSTOM_50                                  769
-#define IMG_CUSTOM_50_EDITOR                           770
-#define IMG_CUSTOM_51                                  771
-#define IMG_CUSTOM_51_EDITOR                           772
-#define IMG_CUSTOM_52                                  773
-#define IMG_CUSTOM_52_EDITOR                           774
-#define IMG_CUSTOM_53                                  775
-#define IMG_CUSTOM_53_EDITOR                           776
-#define IMG_CUSTOM_54                                  777
-#define IMG_CUSTOM_54_EDITOR                           778
-#define IMG_CUSTOM_55                                  779
-#define IMG_CUSTOM_55_EDITOR                           780
-#define IMG_CUSTOM_56                                  781
-#define IMG_CUSTOM_56_EDITOR                           782
-#define IMG_CUSTOM_57                                  783
-#define IMG_CUSTOM_57_EDITOR                           784
-#define IMG_CUSTOM_58                                  785
-#define IMG_CUSTOM_58_EDITOR                           786
-#define IMG_CUSTOM_59                                  787
-#define IMG_CUSTOM_59_EDITOR                           788
-#define IMG_CUSTOM_60                                  789
-#define IMG_CUSTOM_60_EDITOR                           790
-#define IMG_CUSTOM_61                                  791
-#define IMG_CUSTOM_61_EDITOR                           792
-#define IMG_CUSTOM_62                                  793
-#define IMG_CUSTOM_62_EDITOR                           794
-#define IMG_CUSTOM_63                                  795
-#define IMG_CUSTOM_63_EDITOR                           796
-#define IMG_CUSTOM_64                                  797
-#define IMG_CUSTOM_64_EDITOR                           798
-#define IMG_CUSTOM_65                                  799
-#define IMG_CUSTOM_65_EDITOR                           800
-#define IMG_CUSTOM_66                                  801
-#define IMG_CUSTOM_66_EDITOR                           802
-#define IMG_CUSTOM_67                                  803
-#define IMG_CUSTOM_67_EDITOR                           804
-#define IMG_CUSTOM_68                                  805
-#define IMG_CUSTOM_68_EDITOR                           806
-#define IMG_CUSTOM_69                                  807
-#define IMG_CUSTOM_69_EDITOR                           808
-#define IMG_CUSTOM_70                                  809
-#define IMG_CUSTOM_70_EDITOR                           810
-#define IMG_CUSTOM_71                                  811
-#define IMG_CUSTOM_71_EDITOR                           812
-#define IMG_CUSTOM_72                                  813
-#define IMG_CUSTOM_72_EDITOR                           814
-#define IMG_CUSTOM_73                                  815
-#define IMG_CUSTOM_73_EDITOR                           816
-#define IMG_CUSTOM_74                                  817
-#define IMG_CUSTOM_74_EDITOR                           818
-#define IMG_CUSTOM_75                                  819
-#define IMG_CUSTOM_75_EDITOR                           820
-#define IMG_CUSTOM_76                                  821
-#define IMG_CUSTOM_76_EDITOR                           822
-#define IMG_CUSTOM_77                                  823
-#define IMG_CUSTOM_77_EDITOR                           824
-#define IMG_CUSTOM_78                                  825
-#define IMG_CUSTOM_78_EDITOR                           826
-#define IMG_CUSTOM_79                                  827
-#define IMG_CUSTOM_79_EDITOR                           828
-#define IMG_CUSTOM_80                                  829
-#define IMG_CUSTOM_80_EDITOR                           830
-#define IMG_CUSTOM_81                                  831
-#define IMG_CUSTOM_81_EDITOR                           832
-#define IMG_CUSTOM_82                                  833
-#define IMG_CUSTOM_82_EDITOR                           834
-#define IMG_CUSTOM_83                                  835
-#define IMG_CUSTOM_83_EDITOR                           836
-#define IMG_CUSTOM_84                                  837
-#define IMG_CUSTOM_84_EDITOR                           838
-#define IMG_CUSTOM_85                                  839
-#define IMG_CUSTOM_85_EDITOR                           840
-#define IMG_CUSTOM_86                                  841
-#define IMG_CUSTOM_86_EDITOR                           842
-#define IMG_CUSTOM_87                                  843
-#define IMG_CUSTOM_87_EDITOR                           844
-#define IMG_CUSTOM_88                                  845
-#define IMG_CUSTOM_88_EDITOR                           846
-#define IMG_CUSTOM_89                                  847
-#define IMG_CUSTOM_89_EDITOR                           848
-#define IMG_CUSTOM_90                                  849
-#define IMG_CUSTOM_90_EDITOR                           850
-#define IMG_CUSTOM_91                                  851
-#define IMG_CUSTOM_91_EDITOR                           852
-#define IMG_CUSTOM_92                                  853
-#define IMG_CUSTOM_92_EDITOR                           854
-#define IMG_CUSTOM_93                                  855
-#define IMG_CUSTOM_93_EDITOR                           856
-#define IMG_CUSTOM_94                                  857
-#define IMG_CUSTOM_94_EDITOR                           858
-#define IMG_CUSTOM_95                                  859
-#define IMG_CUSTOM_95_EDITOR                           860
-#define IMG_CUSTOM_96                                  861
-#define IMG_CUSTOM_96_EDITOR                           862
-#define IMG_CUSTOM_97                                  863
-#define IMG_CUSTOM_97_EDITOR                           864
-#define IMG_CUSTOM_98                                  865
-#define IMG_CUSTOM_98_EDITOR                           866
-#define IMG_CUSTOM_99                                  867
-#define IMG_CUSTOM_99_EDITOR                           868
-#define IMG_CUSTOM_100                                 869
-#define IMG_CUSTOM_100_EDITOR                          870
-#define IMG_CUSTOM_101                                 871
-#define IMG_CUSTOM_101_EDITOR                          872
-#define IMG_CUSTOM_102                                 873
-#define IMG_CUSTOM_102_EDITOR                          874
-#define IMG_CUSTOM_103                                 875
-#define IMG_CUSTOM_103_EDITOR                          876
-#define IMG_CUSTOM_104                                 877
-#define IMG_CUSTOM_104_EDITOR                          878
-#define IMG_CUSTOM_105                                 879
-#define IMG_CUSTOM_105_EDITOR                          880
-#define IMG_CUSTOM_106                                 881
-#define IMG_CUSTOM_106_EDITOR                          882
-#define IMG_CUSTOM_107                                 883
-#define IMG_CUSTOM_107_EDITOR                          884
-#define IMG_CUSTOM_108                                 885
-#define IMG_CUSTOM_108_EDITOR                          886
-#define IMG_CUSTOM_109                                 887
-#define IMG_CUSTOM_109_EDITOR                          888
-#define IMG_CUSTOM_110                                 889
-#define IMG_CUSTOM_110_EDITOR                          890
-#define IMG_CUSTOM_111                                 891
-#define IMG_CUSTOM_111_EDITOR                          892
-#define IMG_CUSTOM_112                                 893
-#define IMG_CUSTOM_112_EDITOR                          894
-#define IMG_CUSTOM_113                                 895
-#define IMG_CUSTOM_113_EDITOR                          896
-#define IMG_CUSTOM_114                                 897
-#define IMG_CUSTOM_114_EDITOR                          898
-#define IMG_CUSTOM_115                                 899
-#define IMG_CUSTOM_115_EDITOR                          900
-#define IMG_CUSTOM_116                                 901
-#define IMG_CUSTOM_116_EDITOR                          902
-#define IMG_CUSTOM_117                                 903
-#define IMG_CUSTOM_117_EDITOR                          904
-#define IMG_CUSTOM_118                                 905
-#define IMG_CUSTOM_118_EDITOR                          906
-#define IMG_CUSTOM_119                                 907
-#define IMG_CUSTOM_119_EDITOR                          908
-#define IMG_CUSTOM_120                                 909
-#define IMG_CUSTOM_120_EDITOR                          910
-#define IMG_CUSTOM_121                                 911
-#define IMG_CUSTOM_121_EDITOR                          912
-#define IMG_CUSTOM_122                                 913
-#define IMG_CUSTOM_122_EDITOR                          914
-#define IMG_CUSTOM_123                                 915
-#define IMG_CUSTOM_123_EDITOR                          916
-#define IMG_CUSTOM_124                                 917
-#define IMG_CUSTOM_124_EDITOR                          918
-#define IMG_CUSTOM_125                                 919
-#define IMG_CUSTOM_125_EDITOR                          920
-#define IMG_CUSTOM_126                                 921
-#define IMG_CUSTOM_126_EDITOR                          922
-#define IMG_CUSTOM_127                                 923
-#define IMG_CUSTOM_127_EDITOR                          924
-#define IMG_CUSTOM_128                                 925
-#define IMG_CUSTOM_128_EDITOR                          926
-#define IMG_TOON_1                                     927
-#define IMG_TOON_2                                     928
-#define IMG_TOON_3                                     929
-#define IMG_TOON_4                                     930
-#define IMG_TOON_5                                     931
-#define IMG_TOON_6                                     932
-#define IMG_TOON_7                                     933
-#define IMG_TOON_8                                     934
-#define IMG_TOON_9                                     935
-#define IMG_TOON_10                                    936
-#define IMG_TOON_11                                    937
-#define IMG_TOON_12                                    938
-#define IMG_TOON_13                                    939
-#define IMG_TOON_14                                    940
-#define IMG_TOON_15                                    941
-#define IMG_TOON_16                                    942
-#define IMG_TOON_17                                    943
-#define IMG_TOON_18                                    944
-#define IMG_TOON_19                                    945
-#define IMG_TOON_20                                    946
-#define IMG_MENU_CALIBRATE_RED                         947
-#define IMG_MENU_CALIBRATE_BLUE                                948
-#define IMG_MENU_CALIBRATE_YELLOW                      949
-#define IMG_MENU_BUTTON                                        950
-#define IMG_MENU_BUTTON_ACTIVE                         951
-#define IMG_MENU_BUTTON_LEFT                           952
-#define IMG_MENU_BUTTON_RIGHT                          953
-#define IMG_MENU_BUTTON_UP                             954
-#define IMG_MENU_BUTTON_DOWN                           955
-#define IMG_MENU_BUTTON_LEFT_ACTIVE                    956
-#define IMG_MENU_BUTTON_RIGHT_ACTIVE                   957
-#define IMG_MENU_BUTTON_UP_ACTIVE                      958
-#define IMG_MENU_BUTTON_DOWN_ACTIVE                    959
-#define IMG_MENU_SCROLLBAR                             960
-#define IMG_MENU_SCROLLBAR_ACTIVE                      961
-#define IMG_FONT_INITIAL_1                             962
-#define IMG_FONT_INITIAL_2                             963
-#define IMG_FONT_INITIAL_3                             964
-#define IMG_FONT_INITIAL_4                             965
-#define IMG_FONT_TITLE_1                               966
-#define IMG_FONT_TITLE_1_LEVELS                                967
-#define IMG_FONT_TITLE_2                               968
-#define IMG_FONT_MENU_1                                        969
-#define IMG_FONT_MENU_2                                        970
-#define IMG_FONT_TEXT_1                                        971
-#define IMG_FONT_TEXT_1_LEVELS                         972
-#define IMG_FONT_TEXT_1_PREVIEW                                973
-#define IMG_FONT_TEXT_1_SCORES                         974
-#define IMG_FONT_TEXT_1_ACTIVE_SCORES                  975
-#define IMG_FONT_TEXT_2                                        976
-#define IMG_FONT_TEXT_2_LEVELS                         977
-#define IMG_FONT_TEXT_2_PREVIEW                                978
-#define IMG_FONT_TEXT_2_SCORES                         979
-#define IMG_FONT_TEXT_2_ACTIVE_SCORES                  980
-#define IMG_FONT_TEXT_3                                        981
-#define IMG_FONT_TEXT_3_LEVELS                         982
-#define IMG_FONT_TEXT_3_PREVIEW                                983
-#define IMG_FONT_TEXT_3_SCORES                         984
-#define IMG_FONT_TEXT_3_ACTIVE_SCORES                  985
-#define IMG_FONT_TEXT_4                                        986
-#define IMG_FONT_TEXT_4_LEVELS                         987
-#define IMG_FONT_TEXT_4_SCORES                         988
-#define IMG_FONT_TEXT_4_ACTIVE_SCORES                  989
-#define IMG_FONT_INPUT_1                               990
-#define IMG_FONT_INPUT_1_MAIN                          991
-#define IMG_FONT_INPUT_1_ACTIVE                                992
-#define IMG_FONT_INPUT_1_ACTIVE_MAIN                   993
-#define IMG_FONT_INPUT_1_ACTIVE_SETUP                  994
-#define IMG_FONT_INPUT_2                               995
-#define IMG_FONT_INPUT_2_ACTIVE                                996
-#define IMG_FONT_OPTION_OFF                            997
-#define IMG_FONT_OPTION_ON                             998
-#define IMG_FONT_VALUE_1                               999
-#define IMG_FONT_VALUE_2                               1000
-#define IMG_FONT_VALUE_OLD                             1001
-#define IMG_FONT_LEVEL_NUMBER                          1002
-#define IMG_FONT_TAPE_RECORDER                         1003
-#define IMG_FONT_GAME_INFO                             1004
-#define IMG_GLOBAL_BORDER                              1005
-#define IMG_GLOBAL_DOOR                                        1006
-#define IMG_EDITOR_ELEMENT_BORDER                      1007
-#define IMG_EDITOR_ELEMENT_BORDER_INPUT                        1008
-#define IMG_BACKGROUND                                 1009
-#define IMG_BACKGROUND_MAIN                            1010
-#define IMG_BACKGROUND_LEVELS                          1011
-#define IMG_BACKGROUND_SCORES                          1012
-#define IMG_BACKGROUND_EDITOR                          1013
-#define IMG_BACKGROUND_INFO                            1014
-#define IMG_BACKGROUND_SETUP                           1015
-#define IMG_BACKGROUND_DOOR                            1016
+#define IMG_FLAMES_1_LEFT                              451
+#define IMG_FLAMES_2_LEFT                              452
+#define IMG_FLAMES_3_LEFT                              453
+#define IMG_FLAMES_1_RIGHT                             454
+#define IMG_FLAMES_2_RIGHT                             455
+#define IMG_FLAMES_3_RIGHT                             456
+#define IMG_FLAMES_1_UP                                        457
+#define IMG_FLAMES_2_UP                                        458
+#define IMG_FLAMES_3_UP                                        459
+#define IMG_FLAMES_1_DOWN                              460
+#define IMG_FLAMES_2_DOWN                              461
+#define IMG_FLAMES_3_DOWN                              462
+#define IMG_STONEBLOCK                                 463
+#define IMG_PLAYER_1                                   464
+#define IMG_PLAYER_1_EDITOR                            465
+#define IMG_PLAYER_1_DOWN                              466
+#define IMG_PLAYER_1_UP                                        467
+#define IMG_PLAYER_1_LEFT                              468
+#define IMG_PLAYER_1_RIGHT                             469
+#define IMG_PLAYER_1_MOVING_DOWN                       470
+#define IMG_PLAYER_1_MOVING_UP                         471
+#define IMG_PLAYER_1_MOVING_LEFT                       472
+#define IMG_PLAYER_1_MOVING_RIGHT                      473
+#define IMG_PLAYER_1_DIGGING_DOWN                      474
+#define IMG_PLAYER_1_DIGGING_UP                                475
+#define IMG_PLAYER_1_DIGGING_LEFT                      476
+#define IMG_PLAYER_1_DIGGING_RIGHT                     477
+#define IMG_PLAYER_1_COLLECTING_DOWN                   478
+#define IMG_PLAYER_1_COLLECTING_UP                     479
+#define IMG_PLAYER_1_COLLECTING_LEFT                   480
+#define IMG_PLAYER_1_COLLECTING_RIGHT                  481
+#define IMG_PLAYER_1_PUSHING_DOWN                      482
+#define IMG_PLAYER_1_PUSHING_UP                                483
+#define IMG_PLAYER_1_PUSHING_LEFT                      484
+#define IMG_PLAYER_1_PUSHING_RIGHT                     485
+#define IMG_PLAYER_1_SNAPPING_DOWN                     486
+#define IMG_PLAYER_1_SNAPPING_UP                       487
+#define IMG_PLAYER_1_SNAPPING_LEFT                     488
+#define IMG_PLAYER_1_SNAPPING_RIGHT                    489
+#define IMG_PLAYER_2                                   490
+#define IMG_PLAYER_2_EDITOR                            491
+#define IMG_PLAYER_2_DOWN                              492
+#define IMG_PLAYER_2_UP                                        493
+#define IMG_PLAYER_2_LEFT                              494
+#define IMG_PLAYER_2_RIGHT                             495
+#define IMG_PLAYER_2_MOVING_DOWN                       496
+#define IMG_PLAYER_2_MOVING_UP                         497
+#define IMG_PLAYER_2_MOVING_LEFT                       498
+#define IMG_PLAYER_2_MOVING_RIGHT                      499
+#define IMG_PLAYER_2_DIGGING_DOWN                      500
+#define IMG_PLAYER_2_DIGGING_UP                                501
+#define IMG_PLAYER_2_DIGGING_LEFT                      502
+#define IMG_PLAYER_2_DIGGING_RIGHT                     503
+#define IMG_PLAYER_2_COLLECTING_DOWN                   504
+#define IMG_PLAYER_2_COLLECTING_UP                     505
+#define IMG_PLAYER_2_COLLECTING_LEFT                   506
+#define IMG_PLAYER_2_COLLECTING_RIGHT                  507
+#define IMG_PLAYER_2_PUSHING_DOWN                      508
+#define IMG_PLAYER_2_PUSHING_UP                                509
+#define IMG_PLAYER_2_PUSHING_LEFT                      510
+#define IMG_PLAYER_2_PUSHING_RIGHT                     511
+#define IMG_PLAYER_2_SNAPPING_DOWN                     512
+#define IMG_PLAYER_2_SNAPPING_UP                       513
+#define IMG_PLAYER_2_SNAPPING_LEFT                     514
+#define IMG_PLAYER_2_SNAPPING_RIGHT                    515
+#define IMG_PLAYER_3                                   516
+#define IMG_PLAYER_3_EDITOR                            517
+#define IMG_PLAYER_3_DOWN                              518
+#define IMG_PLAYER_3_UP                                        519
+#define IMG_PLAYER_3_LEFT                              520
+#define IMG_PLAYER_3_RIGHT                             521
+#define IMG_PLAYER_3_MOVING_DOWN                       522
+#define IMG_PLAYER_3_MOVING_UP                         523
+#define IMG_PLAYER_3_MOVING_LEFT                       524
+#define IMG_PLAYER_3_MOVING_RIGHT                      525
+#define IMG_PLAYER_3_DIGGING_DOWN                      526
+#define IMG_PLAYER_3_DIGGING_UP                                527
+#define IMG_PLAYER_3_DIGGING_LEFT                      528
+#define IMG_PLAYER_3_DIGGING_RIGHT                     529
+#define IMG_PLAYER_3_COLLECTING_DOWN                   530
+#define IMG_PLAYER_3_COLLECTING_UP                     531
+#define IMG_PLAYER_3_COLLECTING_LEFT                   532
+#define IMG_PLAYER_3_COLLECTING_RIGHT                  533
+#define IMG_PLAYER_3_PUSHING_DOWN                      534
+#define IMG_PLAYER_3_PUSHING_UP                                535
+#define IMG_PLAYER_3_PUSHING_LEFT                      536
+#define IMG_PLAYER_3_PUSHING_RIGHT                     537
+#define IMG_PLAYER_3_SNAPPING_DOWN                     538
+#define IMG_PLAYER_3_SNAPPING_UP                       539
+#define IMG_PLAYER_3_SNAPPING_LEFT                     540
+#define IMG_PLAYER_3_SNAPPING_RIGHT                    541
+#define IMG_PLAYER_4                                   542
+#define IMG_PLAYER_4_EDITOR                            543
+#define IMG_PLAYER_4_DOWN                              544
+#define IMG_PLAYER_4_UP                                        545
+#define IMG_PLAYER_4_LEFT                              546
+#define IMG_PLAYER_4_RIGHT                             547
+#define IMG_PLAYER_4_MOVING_DOWN                       548
+#define IMG_PLAYER_4_MOVING_UP                         549
+#define IMG_PLAYER_4_MOVING_LEFT                       550
+#define IMG_PLAYER_4_MOVING_RIGHT                      551
+#define IMG_PLAYER_4_DIGGING_DOWN                      552
+#define IMG_PLAYER_4_DIGGING_UP                                553
+#define IMG_PLAYER_4_DIGGING_LEFT                      554
+#define IMG_PLAYER_4_DIGGING_RIGHT                     555
+#define IMG_PLAYER_4_COLLECTING_DOWN                   556
+#define IMG_PLAYER_4_COLLECTING_UP                     557
+#define IMG_PLAYER_4_COLLECTING_LEFT                   558
+#define IMG_PLAYER_4_COLLECTING_RIGHT                  559
+#define IMG_PLAYER_4_PUSHING_DOWN                      560
+#define IMG_PLAYER_4_PUSHING_UP                                561
+#define IMG_PLAYER_4_PUSHING_LEFT                      562
+#define IMG_PLAYER_4_PUSHING_RIGHT                     563
+#define IMG_PLAYER_4_SNAPPING_DOWN                     564
+#define IMG_PLAYER_4_SNAPPING_UP                       565
+#define IMG_PLAYER_4_SNAPPING_LEFT                     566
+#define IMG_PLAYER_4_SNAPPING_RIGHT                    567
+#define IMG_DEFAULT_EXPLODING                          568
+#define IMG_TWINKLE_BLUE                               569
+#define IMG_TWINKLE_WHITE                              570
+#define IMG_STEELWALL_TOPLEFT                          571
+#define IMG_STEELWALL_TOPRIGHT                         572
+#define IMG_STEELWALL_BOTTOMLEFT                       573
+#define IMG_STEELWALL_BOTTOMRIGHT                      574
+#define IMG_STEELWALL_HORIZONTAL                       575
+#define IMG_STEELWALL_VERTICAL                         576
+#define IMG_STEELWALL_TOPLEFT_EDITOR                   577
+#define IMG_STEELWALL_TOPRIGHT_EDITOR                  578
+#define IMG_STEELWALL_BOTTOMLEFT_EDITOR                        579
+#define IMG_STEELWALL_BOTTOMRIGHT_EDITOR               580
+#define IMG_STEELWALL_HORIZONTAL_EDITOR                        581
+#define IMG_STEELWALL_VERTICAL_EDITOR                  582
+#define IMG_INVISIBLE_STEELWALL_TOPLEFT                        583
+#define IMG_INVISIBLE_STEELWALL_TOPRIGHT               584
+#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT             585
+#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT            586
+#define IMG_INVISIBLE_STEELWALL_HORIZONTAL             587
+#define IMG_INVISIBLE_STEELWALL_VERTICAL               588
+#define IMG_INVISIBLE_STEELWALL_TOPLEFT_EDITOR         589
+#define IMG_INVISIBLE_STEELWALL_TOPRIGHT_EDITOR                590
+#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT_EDITOR      591
+#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT_EDITOR     592
+#define IMG_INVISIBLE_STEELWALL_HORIZONTAL_EDITOR      593
+#define IMG_INVISIBLE_STEELWALL_VERTICAL_EDITOR                594
+#define IMG_ARROW_LEFT                                 595
+#define IMG_ARROW_RIGHT                                        596
+#define IMG_ARROW_UP                                   597
+#define IMG_ARROW_DOWN                                 598
+#define IMG_CHAR_SPACE                                 599
+#define IMG_CHAR_EXCLAM                                        600
+#define IMG_CHAR_QUOTEDBL                              601
+#define IMG_CHAR_NUMBERSIGN                            602
+#define IMG_CHAR_DOLLAR                                        603
+#define IMG_CHAR_PROCENT                               604
+#define IMG_CHAR_AMPERSAND                             605
+#define IMG_CHAR_APOSTROPHE                            606
+#define IMG_CHAR_PARENLEFT                             607
+#define IMG_CHAR_PARENRIGHT                            608
+#define IMG_CHAR_ASTERISK                              609
+#define IMG_CHAR_PLUS                                  610
+#define IMG_CHAR_COMMA                                 611
+#define IMG_CHAR_MINUS                                 612
+#define IMG_CHAR_PERIOD                                        613
+#define IMG_CHAR_SLASH                                 614
+#define IMG_CHAR_0                                     615
+#define IMG_CHAR_1                                     616
+#define IMG_CHAR_2                                     617
+#define IMG_CHAR_3                                     618
+#define IMG_CHAR_4                                     619
+#define IMG_CHAR_5                                     620
+#define IMG_CHAR_6                                     621
+#define IMG_CHAR_7                                     622
+#define IMG_CHAR_8                                     623
+#define IMG_CHAR_9                                     624
+#define IMG_CHAR_COLON                                 625
+#define IMG_CHAR_SEMICOLON                             626
+#define IMG_CHAR_LESS                                  627
+#define IMG_CHAR_EQUAL                                 628
+#define IMG_CHAR_GREATER                               629
+#define IMG_CHAR_QUESTION                              630
+#define IMG_CHAR_AT                                    631
+#define IMG_CHAR_A                                     632
+#define IMG_CHAR_B                                     633
+#define IMG_CHAR_C                                     634
+#define IMG_CHAR_D                                     635
+#define IMG_CHAR_E                                     636
+#define IMG_CHAR_F                                     637
+#define IMG_CHAR_G                                     638
+#define IMG_CHAR_H                                     639
+#define IMG_CHAR_I                                     640
+#define IMG_CHAR_J                                     641
+#define IMG_CHAR_K                                     642
+#define IMG_CHAR_L                                     643
+#define IMG_CHAR_M                                     644
+#define IMG_CHAR_N                                     645
+#define IMG_CHAR_O                                     646
+#define IMG_CHAR_P                                     647
+#define IMG_CHAR_Q                                     648
+#define IMG_CHAR_R                                     649
+#define IMG_CHAR_S                                     650
+#define IMG_CHAR_T                                     651
+#define IMG_CHAR_U                                     652
+#define IMG_CHAR_V                                     653
+#define IMG_CHAR_W                                     654
+#define IMG_CHAR_X                                     655
+#define IMG_CHAR_Y                                     656
+#define IMG_CHAR_Z                                     657
+#define IMG_CHAR_BRACKETLEFT                           658
+#define IMG_CHAR_BACKSLASH                             659
+#define IMG_CHAR_BRACKETRIGHT                          660
+#define IMG_CHAR_ASCIICIRCUM                           661
+#define IMG_CHAR_UNDERSCORE                            662
+#define IMG_CHAR_COPYRIGHT                             663
+#define IMG_CHAR_AUMLAUT                               664
+#define IMG_CHAR_OUMLAUT                               665
+#define IMG_CHAR_UUMLAUT                               666
+#define IMG_CHAR_DEGREE                                        667
+#define IMG_CHAR_TRADEMARK                             668
+#define IMG_CHAR_CURSOR                                        669
+#define IMG_CUSTOM_1                                   670
+#define IMG_CUSTOM_1_EDITOR                            671
+#define IMG_CUSTOM_2                                   672
+#define IMG_CUSTOM_2_EDITOR                            673
+#define IMG_CUSTOM_3                                   674
+#define IMG_CUSTOM_3_EDITOR                            675
+#define IMG_CUSTOM_4                                   676
+#define IMG_CUSTOM_4_EDITOR                            677
+#define IMG_CUSTOM_5                                   678
+#define IMG_CUSTOM_5_EDITOR                            679
+#define IMG_CUSTOM_6                                   680
+#define IMG_CUSTOM_6_EDITOR                            681
+#define IMG_CUSTOM_7                                   682
+#define IMG_CUSTOM_7_EDITOR                            683
+#define IMG_CUSTOM_8                                   684
+#define IMG_CUSTOM_8_EDITOR                            685
+#define IMG_CUSTOM_9                                   686
+#define IMG_CUSTOM_9_EDITOR                            687
+#define IMG_CUSTOM_10                                  688
+#define IMG_CUSTOM_10_EDITOR                           689
+#define IMG_CUSTOM_11                                  690
+#define IMG_CUSTOM_11_EDITOR                           691
+#define IMG_CUSTOM_12                                  692
+#define IMG_CUSTOM_12_EDITOR                           693
+#define IMG_CUSTOM_13                                  694
+#define IMG_CUSTOM_13_EDITOR                           695
+#define IMG_CUSTOM_14                                  696
+#define IMG_CUSTOM_14_EDITOR                           697
+#define IMG_CUSTOM_15                                  698
+#define IMG_CUSTOM_15_EDITOR                           699
+#define IMG_CUSTOM_16                                  700
+#define IMG_CUSTOM_16_EDITOR                           701
+#define IMG_CUSTOM_17                                  702
+#define IMG_CUSTOM_17_EDITOR                           703
+#define IMG_CUSTOM_18                                  704
+#define IMG_CUSTOM_18_EDITOR                           705
+#define IMG_CUSTOM_19                                  706
+#define IMG_CUSTOM_19_EDITOR                           707
+#define IMG_CUSTOM_20                                  708
+#define IMG_CUSTOM_20_EDITOR                           709
+#define IMG_CUSTOM_21                                  710
+#define IMG_CUSTOM_21_EDITOR                           711
+#define IMG_CUSTOM_22                                  712
+#define IMG_CUSTOM_22_EDITOR                           713
+#define IMG_CUSTOM_23                                  714
+#define IMG_CUSTOM_23_EDITOR                           715
+#define IMG_CUSTOM_24                                  716
+#define IMG_CUSTOM_24_EDITOR                           717
+#define IMG_CUSTOM_25                                  718
+#define IMG_CUSTOM_25_EDITOR                           719
+#define IMG_CUSTOM_26                                  720
+#define IMG_CUSTOM_26_EDITOR                           721
+#define IMG_CUSTOM_27                                  722
+#define IMG_CUSTOM_27_EDITOR                           723
+#define IMG_CUSTOM_28                                  724
+#define IMG_CUSTOM_28_EDITOR                           725
+#define IMG_CUSTOM_29                                  726
+#define IMG_CUSTOM_29_EDITOR                           727
+#define IMG_CUSTOM_30                                  728
+#define IMG_CUSTOM_30_EDITOR                           729
+#define IMG_CUSTOM_31                                  730
+#define IMG_CUSTOM_31_EDITOR                           731
+#define IMG_CUSTOM_32                                  732
+#define IMG_CUSTOM_32_EDITOR                           733
+#define IMG_CUSTOM_33                                  734
+#define IMG_CUSTOM_33_EDITOR                           735
+#define IMG_CUSTOM_34                                  736
+#define IMG_CUSTOM_34_EDITOR                           737
+#define IMG_CUSTOM_35                                  738
+#define IMG_CUSTOM_35_EDITOR                           739
+#define IMG_CUSTOM_36                                  740
+#define IMG_CUSTOM_36_EDITOR                           741
+#define IMG_CUSTOM_37                                  742
+#define IMG_CUSTOM_37_EDITOR                           743
+#define IMG_CUSTOM_38                                  744
+#define IMG_CUSTOM_38_EDITOR                           745
+#define IMG_CUSTOM_39                                  746
+#define IMG_CUSTOM_39_EDITOR                           747
+#define IMG_CUSTOM_40                                  748
+#define IMG_CUSTOM_40_EDITOR                           749
+#define IMG_CUSTOM_41                                  750
+#define IMG_CUSTOM_41_EDITOR                           751
+#define IMG_CUSTOM_42                                  752
+#define IMG_CUSTOM_42_EDITOR                           753
+#define IMG_CUSTOM_43                                  754
+#define IMG_CUSTOM_43_EDITOR                           755
+#define IMG_CUSTOM_44                                  756
+#define IMG_CUSTOM_44_EDITOR                           757
+#define IMG_CUSTOM_45                                  758
+#define IMG_CUSTOM_45_EDITOR                           759
+#define IMG_CUSTOM_46                                  760
+#define IMG_CUSTOM_46_EDITOR                           761
+#define IMG_CUSTOM_47                                  762
+#define IMG_CUSTOM_47_EDITOR                           763
+#define IMG_CUSTOM_48                                  764
+#define IMG_CUSTOM_48_EDITOR                           765
+#define IMG_CUSTOM_49                                  766
+#define IMG_CUSTOM_49_EDITOR                           767
+#define IMG_CUSTOM_50                                  768
+#define IMG_CUSTOM_50_EDITOR                           769
+#define IMG_CUSTOM_51                                  770
+#define IMG_CUSTOM_51_EDITOR                           771
+#define IMG_CUSTOM_52                                  772
+#define IMG_CUSTOM_52_EDITOR                           773
+#define IMG_CUSTOM_53                                  774
+#define IMG_CUSTOM_53_EDITOR                           775
+#define IMG_CUSTOM_54                                  776
+#define IMG_CUSTOM_54_EDITOR                           777
+#define IMG_CUSTOM_55                                  778
+#define IMG_CUSTOM_55_EDITOR                           779
+#define IMG_CUSTOM_56                                  780
+#define IMG_CUSTOM_56_EDITOR                           781
+#define IMG_CUSTOM_57                                  782
+#define IMG_CUSTOM_57_EDITOR                           783
+#define IMG_CUSTOM_58                                  784
+#define IMG_CUSTOM_58_EDITOR                           785
+#define IMG_CUSTOM_59                                  786
+#define IMG_CUSTOM_59_EDITOR                           787
+#define IMG_CUSTOM_60                                  788
+#define IMG_CUSTOM_60_EDITOR                           789
+#define IMG_CUSTOM_61                                  790
+#define IMG_CUSTOM_61_EDITOR                           791
+#define IMG_CUSTOM_62                                  792
+#define IMG_CUSTOM_62_EDITOR                           793
+#define IMG_CUSTOM_63                                  794
+#define IMG_CUSTOM_63_EDITOR                           795
+#define IMG_CUSTOM_64                                  796
+#define IMG_CUSTOM_64_EDITOR                           797
+#define IMG_CUSTOM_65                                  798
+#define IMG_CUSTOM_65_EDITOR                           799
+#define IMG_CUSTOM_66                                  800
+#define IMG_CUSTOM_66_EDITOR                           801
+#define IMG_CUSTOM_67                                  802
+#define IMG_CUSTOM_67_EDITOR                           803
+#define IMG_CUSTOM_68                                  804
+#define IMG_CUSTOM_68_EDITOR                           805
+#define IMG_CUSTOM_69                                  806
+#define IMG_CUSTOM_69_EDITOR                           807
+#define IMG_CUSTOM_70                                  808
+#define IMG_CUSTOM_70_EDITOR                           809
+#define IMG_CUSTOM_71                                  810
+#define IMG_CUSTOM_71_EDITOR                           811
+#define IMG_CUSTOM_72                                  812
+#define IMG_CUSTOM_72_EDITOR                           813
+#define IMG_CUSTOM_73                                  814
+#define IMG_CUSTOM_73_EDITOR                           815
+#define IMG_CUSTOM_74                                  816
+#define IMG_CUSTOM_74_EDITOR                           817
+#define IMG_CUSTOM_75                                  818
+#define IMG_CUSTOM_75_EDITOR                           819
+#define IMG_CUSTOM_76                                  820
+#define IMG_CUSTOM_76_EDITOR                           821
+#define IMG_CUSTOM_77                                  822
+#define IMG_CUSTOM_77_EDITOR                           823
+#define IMG_CUSTOM_78                                  824
+#define IMG_CUSTOM_78_EDITOR                           825
+#define IMG_CUSTOM_79                                  826
+#define IMG_CUSTOM_79_EDITOR                           827
+#define IMG_CUSTOM_80                                  828
+#define IMG_CUSTOM_80_EDITOR                           829
+#define IMG_CUSTOM_81                                  830
+#define IMG_CUSTOM_81_EDITOR                           831
+#define IMG_CUSTOM_82                                  832
+#define IMG_CUSTOM_82_EDITOR                           833
+#define IMG_CUSTOM_83                                  834
+#define IMG_CUSTOM_83_EDITOR                           835
+#define IMG_CUSTOM_84                                  836
+#define IMG_CUSTOM_84_EDITOR                           837
+#define IMG_CUSTOM_85                                  838
+#define IMG_CUSTOM_85_EDITOR                           839
+#define IMG_CUSTOM_86                                  840
+#define IMG_CUSTOM_86_EDITOR                           841
+#define IMG_CUSTOM_87                                  842
+#define IMG_CUSTOM_87_EDITOR                           843
+#define IMG_CUSTOM_88                                  844
+#define IMG_CUSTOM_88_EDITOR                           845
+#define IMG_CUSTOM_89                                  846
+#define IMG_CUSTOM_89_EDITOR                           847
+#define IMG_CUSTOM_90                                  848
+#define IMG_CUSTOM_90_EDITOR                           849
+#define IMG_CUSTOM_91                                  850
+#define IMG_CUSTOM_91_EDITOR                           851
+#define IMG_CUSTOM_92                                  852
+#define IMG_CUSTOM_92_EDITOR                           853
+#define IMG_CUSTOM_93                                  854
+#define IMG_CUSTOM_93_EDITOR                           855
+#define IMG_CUSTOM_94                                  856
+#define IMG_CUSTOM_94_EDITOR                           857
+#define IMG_CUSTOM_95                                  858
+#define IMG_CUSTOM_95_EDITOR                           859
+#define IMG_CUSTOM_96                                  860
+#define IMG_CUSTOM_96_EDITOR                           861
+#define IMG_CUSTOM_97                                  862
+#define IMG_CUSTOM_97_EDITOR                           863
+#define IMG_CUSTOM_98                                  864
+#define IMG_CUSTOM_98_EDITOR                           865
+#define IMG_CUSTOM_99                                  866
+#define IMG_CUSTOM_99_EDITOR                           867
+#define IMG_CUSTOM_100                                 868
+#define IMG_CUSTOM_100_EDITOR                          869
+#define IMG_CUSTOM_101                                 870
+#define IMG_CUSTOM_101_EDITOR                          871
+#define IMG_CUSTOM_102                                 872
+#define IMG_CUSTOM_102_EDITOR                          873
+#define IMG_CUSTOM_103                                 874
+#define IMG_CUSTOM_103_EDITOR                          875
+#define IMG_CUSTOM_104                                 876
+#define IMG_CUSTOM_104_EDITOR                          877
+#define IMG_CUSTOM_105                                 878
+#define IMG_CUSTOM_105_EDITOR                          879
+#define IMG_CUSTOM_106                                 880
+#define IMG_CUSTOM_106_EDITOR                          881
+#define IMG_CUSTOM_107                                 882
+#define IMG_CUSTOM_107_EDITOR                          883
+#define IMG_CUSTOM_108                                 884
+#define IMG_CUSTOM_108_EDITOR                          885
+#define IMG_CUSTOM_109                                 886
+#define IMG_CUSTOM_109_EDITOR                          887
+#define IMG_CUSTOM_110                                 888
+#define IMG_CUSTOM_110_EDITOR                          889
+#define IMG_CUSTOM_111                                 890
+#define IMG_CUSTOM_111_EDITOR                          891
+#define IMG_CUSTOM_112                                 892
+#define IMG_CUSTOM_112_EDITOR                          893
+#define IMG_CUSTOM_113                                 894
+#define IMG_CUSTOM_113_EDITOR                          895
+#define IMG_CUSTOM_114                                 896
+#define IMG_CUSTOM_114_EDITOR                          897
+#define IMG_CUSTOM_115                                 898
+#define IMG_CUSTOM_115_EDITOR                          899
+#define IMG_CUSTOM_116                                 900
+#define IMG_CUSTOM_116_EDITOR                          901
+#define IMG_CUSTOM_117                                 902
+#define IMG_CUSTOM_117_EDITOR                          903
+#define IMG_CUSTOM_118                                 904
+#define IMG_CUSTOM_118_EDITOR                          905
+#define IMG_CUSTOM_119                                 906
+#define IMG_CUSTOM_119_EDITOR                          907
+#define IMG_CUSTOM_120                                 908
+#define IMG_CUSTOM_120_EDITOR                          909
+#define IMG_CUSTOM_121                                 910
+#define IMG_CUSTOM_121_EDITOR                          911
+#define IMG_CUSTOM_122                                 912
+#define IMG_CUSTOM_122_EDITOR                          913
+#define IMG_CUSTOM_123                                 914
+#define IMG_CUSTOM_123_EDITOR                          915
+#define IMG_CUSTOM_124                                 916
+#define IMG_CUSTOM_124_EDITOR                          917
+#define IMG_CUSTOM_125                                 918
+#define IMG_CUSTOM_125_EDITOR                          919
+#define IMG_CUSTOM_126                                 920
+#define IMG_CUSTOM_126_EDITOR                          921
+#define IMG_CUSTOM_127                                 922
+#define IMG_CUSTOM_127_EDITOR                          923
+#define IMG_CUSTOM_128                                 924
+#define IMG_CUSTOM_128_EDITOR                          925
+#define IMG_TOON_1                                     926
+#define IMG_TOON_2                                     927
+#define IMG_TOON_3                                     928
+#define IMG_TOON_4                                     929
+#define IMG_TOON_5                                     930
+#define IMG_TOON_6                                     931
+#define IMG_TOON_7                                     932
+#define IMG_TOON_8                                     933
+#define IMG_TOON_9                                     934
+#define IMG_TOON_10                                    935
+#define IMG_TOON_11                                    936
+#define IMG_TOON_12                                    937
+#define IMG_TOON_13                                    938
+#define IMG_TOON_14                                    939
+#define IMG_TOON_15                                    940
+#define IMG_TOON_16                                    941
+#define IMG_TOON_17                                    942
+#define IMG_TOON_18                                    943
+#define IMG_TOON_19                                    944
+#define IMG_TOON_20                                    945
+#define IMG_MENU_CALIBRATE_RED                         946
+#define IMG_MENU_CALIBRATE_BLUE                                947
+#define IMG_MENU_CALIBRATE_YELLOW                      948
+#define IMG_MENU_BUTTON                                        949
+#define IMG_MENU_BUTTON_ACTIVE                         950
+#define IMG_MENU_BUTTON_LEFT                           951
+#define IMG_MENU_BUTTON_RIGHT                          952
+#define IMG_MENU_BUTTON_UP                             953
+#define IMG_MENU_BUTTON_DOWN                           954
+#define IMG_MENU_BUTTON_LEFT_ACTIVE                    955
+#define IMG_MENU_BUTTON_RIGHT_ACTIVE                   956
+#define IMG_MENU_BUTTON_UP_ACTIVE                      957
+#define IMG_MENU_BUTTON_DOWN_ACTIVE                    958
+#define IMG_MENU_SCROLLBAR                             959
+#define IMG_MENU_SCROLLBAR_ACTIVE                      960
+#define IMG_FONT_INITIAL_1                             961
+#define IMG_FONT_INITIAL_2                             962
+#define IMG_FONT_INITIAL_3                             963
+#define IMG_FONT_INITIAL_4                             964
+#define IMG_FONT_TITLE_1                               965
+#define IMG_FONT_TITLE_1_LEVELS                                966
+#define IMG_FONT_TITLE_2                               967
+#define IMG_FONT_MENU_1                                        968
+#define IMG_FONT_MENU_2                                        969
+#define IMG_FONT_TEXT_1                                        970
+#define IMG_FONT_TEXT_1_LEVELS                         971
+#define IMG_FONT_TEXT_1_PREVIEW                                972
+#define IMG_FONT_TEXT_1_SCORES                         973
+#define IMG_FONT_TEXT_1_ACTIVE_SCORES                  974
+#define IMG_FONT_TEXT_2                                        975
+#define IMG_FONT_TEXT_2_LEVELS                         976
+#define IMG_FONT_TEXT_2_PREVIEW                                977
+#define IMG_FONT_TEXT_2_SCORES                         978
+#define IMG_FONT_TEXT_2_ACTIVE_SCORES                  979
+#define IMG_FONT_TEXT_3                                        980
+#define IMG_FONT_TEXT_3_LEVELS                         981
+#define IMG_FONT_TEXT_3_PREVIEW                                982
+#define IMG_FONT_TEXT_3_SCORES                         983
+#define IMG_FONT_TEXT_3_ACTIVE_SCORES                  984
+#define IMG_FONT_TEXT_4                                        985
+#define IMG_FONT_TEXT_4_LEVELS                         986
+#define IMG_FONT_TEXT_4_SCORES                         987
+#define IMG_FONT_TEXT_4_ACTIVE_SCORES                  988
+#define IMG_FONT_INPUT_1                               989
+#define IMG_FONT_INPUT_1_MAIN                          990
+#define IMG_FONT_INPUT_1_ACTIVE                                991
+#define IMG_FONT_INPUT_1_ACTIVE_MAIN                   992
+#define IMG_FONT_INPUT_1_ACTIVE_SETUP                  993
+#define IMG_FONT_INPUT_2                               994
+#define IMG_FONT_INPUT_2_ACTIVE                                995
+#define IMG_FONT_OPTION_OFF                            996
+#define IMG_FONT_OPTION_ON                             997
+#define IMG_FONT_VALUE_1                               998
+#define IMG_FONT_VALUE_2                               999
+#define IMG_FONT_VALUE_OLD                             1000
+#define IMG_FONT_LEVEL_NUMBER                          1001
+#define IMG_FONT_TAPE_RECORDER                         1002
+#define IMG_FONT_GAME_INFO                             1003
+#define IMG_GLOBAL_BORDER                              1004
+#define IMG_GLOBAL_DOOR                                        1005
+#define IMG_EDITOR_ELEMENT_BORDER                      1006
+#define IMG_EDITOR_ELEMENT_BORDER_INPUT                        1007
+#define IMG_BACKGROUND                                 1008
+#define IMG_BACKGROUND_MAIN                            1009
+#define IMG_BACKGROUND_LEVELS                          1010
+#define IMG_BACKGROUND_SCORES                          1011
+#define IMG_BACKGROUND_EDITOR                          1012
+#define IMG_BACKGROUND_INFO                            1013
+#define IMG_BACKGROUND_SETUP                           1014
+#define IMG_BACKGROUND_DOOR                            1015
 
-#define NUM_IMAGE_FILES                                        1017
+#define NUM_IMAGE_FILES                                        1016
 
 #endif /* CONF_GFX_H */
index f45491f6ef8722a52d3147c6081e994108d856cc..0a2e58145a5f3c05f3618b3626a76bb5f445fa67 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-07-23 01:01]"
+#define COMPILE_DATE_STRING "[2003-07-26 03:06]"
index b7fc8bd49f1cf0c52f5cf4419c1eaada5d2c817d..77557f6e596a8fad672a43446f3d2c0300d44e48 100644 (file)
@@ -888,7 +888,7 @@ static struct
     GADGET_ID_CHANGE_CONT_RND_DOWN,    GADGET_ID_CHANGE_CONT_RND_UP,
     GADGET_ID_CHANGE_CONT_RND_TEXT,    GADGET_ID_NONE,
     &custom_element.change.random,
-    NULL,                              "use random change:", NULL
+    NULL,                              "use random change:", "(%)"
   },
 };
 
index b1c15e9fc8a8e09069c64984b52e4bfb9b81c439..0dec9df9a52d62b89705f83f9ac61f39f4c560c6 100644 (file)
@@ -432,6 +432,7 @@ void HandleButton(int mx, int my, int button)
          printf("      MovDelay[%d][%d] == %d\n", x,y, MovDelay[x][y]);
          printf("      ChangeDelay[%d][%d] == %d\n", x,y, ChangeDelay[x][y]);
          printf("      GfxElement[%d][%d] == %d\n", x,y, GfxElement[x][y]);
+         printf("      GfxAction[%d][%d] == %d\n", x,y, GfxAction[x][y]);
          printf("\n");
        }
       }
index c2deb648c2f817fb4dcdcfaaedc57b8fc93481b7..5b22dcbd4f7d511af5972303033fe20a6f5bae44 100644 (file)
@@ -1906,6 +1906,8 @@ void Explode(int ex, int ey, int phase, int mode)
 
     for (y = ey - 1; y <= ey + 1; y++) for(x = ex - 1; x <= ex + 1; x++)
     {
+      int xx = x - ex + 1;
+      int yy = y - ey + 1;
       int element;
 
       if (!IN_LEV_FIELD(x, y) ||
@@ -2016,11 +2018,10 @@ void Explode(int ex, int ey, int phase, int mode)
       else if (center_element == EL_AMOEBA_TO_DIAMOND)
        Store[x][y] = level.amoeba_content;
       else if (center_element == EL_YAMYAM)
-       Store[x][y] =
-         level.yamyam_content[game.yamyam_content_nr][x - ex + 1][y - ey + 1];
-      else if (IS_CUSTOM_ELEMENT(center_element))
-       Store[x][y] =
-         element_info[center_element].content[x - ex + 1][y - ey + 1];
+       Store[x][y] = level.yamyam_content[game.yamyam_content_nr][xx][yy];
+      else if (IS_CUSTOM_ELEMENT(center_element) &&
+              element_info[center_element].content[xx][yy] != EL_EMPTY)
+       Store[x][y] = element_info[center_element].content[xx][yy];
       else if (element == EL_WALL_EMERALD)
        Store[x][y] = EL_EMERALD;
       else if (element == EL_WALL_DIAMOND)
@@ -2037,6 +2038,8 @@ void Explode(int ex, int ey, int phase, int mode)
        Store[x][y] = EL_PEARL;
       else if (element == EL_WALL_CRYSTAL)
        Store[x][y] = EL_CRYSTAL;
+      else if (IS_CUSTOM_ELEMENT(element))
+       Store[x][y] = element_info[element].content[1][1];
       else
        Store[x][y] = EL_EMPTY;
 
@@ -3440,7 +3443,7 @@ void StartMoving(int x, int y)
   if (Stop[x][y])
     return;
 
-  /* !!! this should be handled more generic (not only for more) !!! */
+  /* !!! this should be handled more generic (not only for mole) !!! */
   if (element != EL_MOLE && GfxAction[x][y] != ACTION_DIGGING)
     GfxAction[x][y] = ACTION_DEFAULT;
 
@@ -5224,7 +5227,7 @@ static void ChangeElementNow(int x, int y, int element)
     if (!change->only_complete || complete_change)
     {
       if (change->only_complete && change->use_random_change &&
-         RND(change->random) != 0)
+         RND(100) < change->random)
        return;
 
       for (yy = 0; yy < 3; yy++) for(xx = 0; xx < 3 ; xx++)
@@ -5233,7 +5236,7 @@ static void ChangeElementNow(int x, int y, int element)
        int ey = y + yy - 1;
 
        if (can_change[xx][yy] && (!change->use_random_change ||
-                                  RND(change->random) == 0))
+                                  RND(100) < change->random))
        {
          if (IS_MOVING(ex, ey) || IS_BLOCKED(ex, ey))
            RemoveMovingField(ex, ey);
@@ -5583,6 +5586,16 @@ void GameActions()
 
     GfxFrame[x][y]++;
 
+#if 1
+    /* reset finished pushing action (not done in ContinueMoving() to allow
+       continous pushing animation for elements without push delay) */
+    if (GfxAction[x][y] == ACTION_PUSHING && !IS_MOVING(x, y))
+    {
+      ResetGfxAnimation(x, y);
+      DrawLevelField(x, y);
+    }
+#endif
+
 #if DEBUG
     if (IS_BLOCKED(x, y))
     {
@@ -6339,7 +6352,9 @@ void ScrollFigure(struct PlayerInfo *player, int mode)
     if (Feld[last_jx][last_jy] == EL_EMPTY)
       Feld[last_jx][last_jy] = EL_PLAYER_IS_LEAVING;
 
+#if 0
     DrawPlayer(player);
+#endif
     return;
   }
   else if (!FrameReached(&player->actual_frame_counter, 1))
@@ -6355,7 +6370,9 @@ void ScrollFigure(struct PlayerInfo *player, int mode)
   if (player->MovPos == 0)
     CheckGravityMovement(player);
 
-  DrawPlayer(player);
+#if 0
+  DrawPlayer(player);  /* needed here only to cleanup last field */
+#endif
 
   if (player->MovPos == 0)
   {
@@ -7327,6 +7344,7 @@ int DigField(struct PlayerInfo *player,
          PlaySoundLevelElementAction(x, y, element, ACTION_PUSHING);
 
        InitMovingField(x, y, move_direction);
+       GfxAction[x][y] = ACTION_PUSHING;
 
        if (mode == DF_SNAP)
          ContinueMoving(x, y);
@@ -7885,6 +7903,8 @@ static void HandleGameButtons(struct GadgetInfo *gi)
       else if (audio.music_available)
       { 
        setup.sound = setup.sound_music = TRUE;
+
+       SetAudioMode(setup.sound);
        PlayMusic(level_nr);
       }
       break;
@@ -7893,14 +7913,20 @@ static void HandleGameButtons(struct GadgetInfo *gi)
       if (setup.sound_loops)
        setup.sound_loops = FALSE;
       else if (audio.loops_available)
+      {
        setup.sound = setup.sound_loops = TRUE;
+       SetAudioMode(setup.sound);
+      }
       break;
 
     case SOUND_CTRL_ID_SIMPLE:
       if (setup.sound_simple)
        setup.sound_simple = FALSE;
       else if (audio.sound_available)
+      {
        setup.sound = setup.sound_simple = TRUE;
+       SetAudioMode(setup.sound);
+      }
       break;
 
     default:
index 57cdc8e15ac56852058190a16dfe5ef9ebb8976b..20a84d1e0b400be248f5db6ff50844f8946a16a5 100644 (file)
@@ -754,6 +754,10 @@ static void InitGraphicInfo()
     int src_x, src_y;
     int first_frame, last_frame;
 
+#if 0
+    printf("::: image: '%s'\n", image->token);
+#endif
+
     set_graphic_parameters(i, image->parameter);
 
     /* now check if no animation frames are outside of the loaded image */
@@ -993,6 +997,10 @@ static void InitSoundInfo()
     sound_effect_properties[i] = ACTION_OTHER;
     sound_info[i].loop = FALSE;
 
+#if 0
+    printf("::: sound: '%s'\n", sound->token);
+#endif
+
     /* determine all loop sounds and identify certain sound classes */
 
     for (j=0; element_action_info[j].suffix; j++)
@@ -1010,6 +1018,11 @@ static void InitSoundInfo()
       }
     }
 
+#if 0
+    if (strcmp(sound->token, "custom_42") == 0)
+      printf("::: '%s' -> %d\n", sound->token, sound_info[i].loop);
+#endif
+
     /* associate elements and some selected sound actions */
 
     for (j=0; j<MAX_NUM_ELEMENTS; j++)
@@ -3041,6 +3054,18 @@ void InitLevelArtworkInfo()
 
 static void InitImages()
 {
+#if 1
+  setLevelArtworkDir(artwork.gfx_first);
+#endif
+
+#if 0
+  printf("::: InitImages ['%s', '%s'] ['%s', '%s']\n",
+        artwork.gfx_current_identifier,
+        artwork.gfx_current->identifier,
+        leveldir_current->graphics_set,
+        leveldir_current->graphics_path);
+#endif
+
   ReloadCustomImages();
 
   LoadCustomElementDescriptions();
@@ -3051,12 +3076,16 @@ static void InitImages()
 
 static void InitSound()
 {
+  setLevelArtworkDir(artwork.snd_first);
+
   InitReloadCustomSounds(artwork.snd_current->identifier);
   ReinitializeSounds();
 }
 
 static void InitMusic()
 {
+  setLevelArtworkDir(artwork.mus_first);
+
   InitReloadCustomMusic(artwork.mus_current->identifier);
   ReinitializeMusic();
 }
@@ -3090,6 +3119,12 @@ void ReloadCustomArtwork()
   static boolean last_override_level_graphics = FALSE;
   static boolean last_override_level_sounds = FALSE;
   static boolean last_override_level_music = FALSE;
+  static boolean last_own_level_graphics_set = FALSE;
+  static boolean last_own_level_sounds_set = FALSE;
+  static boolean last_own_level_music_set = FALSE;
+  boolean level_graphics_set_changed = FALSE;
+  boolean level_sounds_set_changed = FALSE;
+  boolean level_music_set_changed = FALSE;
   /* identifier for new artwork; default: artwork configured in setup */
 #if 0
   char *gfx_new_identifier = artwork.gfx_current->identifier;
@@ -3187,12 +3222,14 @@ void ReloadCustomArtwork()
           gfx_new_identifier, identifier_old, identifier_new);
 #endif
 
+#if 0
     leveldir_current_identifier = leveldir_current->identifier;
+#endif
   }
 
   /* custom level artwork configured in level series configuration file
      always overrides custom level artwork stored in level series directory
-     and (level independent) custom artwork configured in setup menue */
+     and (level independent) custom artwork configured in setup menu */
   if (leveldir_current->graphics_set != NULL)
     gfx_new_identifier = leveldir_current->graphics_set;
   if (leveldir_current->sounds_set != NULL)
@@ -3200,16 +3237,46 @@ void ReloadCustomArtwork()
   if (leveldir_current->music_set != NULL)
     mus_new_identifier = leveldir_current->music_set;
 
+  if (leveldir_current_identifier != leveldir_current->identifier)
+  {
+    if (last_own_level_graphics_set || leveldir_current->graphics_set != NULL)
+      level_graphics_set_changed = TRUE;
+
+    if (last_own_level_sounds_set || leveldir_current->sounds_set != NULL)
+      level_sounds_set_changed = TRUE;
+
+    if (last_own_level_music_set || leveldir_current->music_set != NULL)
+      level_music_set_changed = TRUE;
+
+    last_own_level_graphics_set = (leveldir_current->graphics_set != NULL);
+    last_own_level_sounds_set = (leveldir_current->sounds_set != NULL);
+    last_own_level_music_set = (leveldir_current->music_set != NULL);
+  }
+
 #if 1
-  printf("CHECKING OLD/NEW GFX:\n  OLD: '%s'\n  NEW: '%s' [setup '%s', level '%s']\n",
+  leveldir_current_identifier = leveldir_current->identifier;
+#endif
+
+  if (setup.override_level_graphics)
+    gfx_new_identifier = artwork.gfx_current->identifier;
+  if (setup.override_level_sounds)
+    snd_new_identifier = artwork.snd_current->identifier;
+  if (setup.override_level_music)
+    mus_new_identifier = artwork.mus_current->identifier;
+
+
+#if 0
+  printf("CHECKING OLD/NEW GFX:\n  OLD: '%s'\n  NEW: '%s' ['%s', '%s'] [%d]\n",
         artwork.gfx_current_identifier, gfx_new_identifier,
-        artwork.gfx_current->identifier, leveldir_current->graphics_set);
+        artwork.gfx_current->identifier, leveldir_current->graphics_set,
+        level_graphics_set_changed);
 #endif
 
   if (strcmp(artwork.gfx_current_identifier, gfx_new_identifier) != 0 ||
-      last_override_level_graphics != setup.override_level_graphics)
+      last_override_level_graphics != setup.override_level_graphics ||
+      level_graphics_set_changed)
   {
-#if 1
+#if 0
     printf("RELOADING GRAPHICS '%s' -> '%s' ['%s']\n",
           artwork.gfx_current_identifier,
           gfx_new_identifier,
@@ -3224,7 +3291,9 @@ void ReloadCustomArtwork()
     artwork.gfx_current_identifier = gfx_new_identifier;
 #endif
 
+#if 0
     setLevelArtworkDir(artwork.gfx_first);
+#endif
 
     ClearRectangle(window, 0, 0, WIN_XSIZE, WIN_YSIZE);
 
@@ -3259,7 +3328,8 @@ void ReloadCustomArtwork()
   }
 
   if (strcmp(artwork.snd_current_identifier, snd_new_identifier) != 0 ||
-      last_override_level_sounds != setup.override_level_sounds)
+      last_override_level_sounds != setup.override_level_sounds ||
+      level_sounds_set_changed)
   {
 #if 0
     printf("RELOADING SOUNDS '%s' -> '%s' ('%s')\n",
@@ -3288,7 +3358,8 @@ void ReloadCustomArtwork()
   }
 
   if (strcmp(artwork.mus_current_identifier, mus_new_identifier) != 0 ||
-      last_override_level_music != setup.override_level_music)
+      last_override_level_music != setup.override_level_music ||
+      level_music_set_changed)
   {
     /* set artwork path to send it to the sound server process */
     setLevelArtworkDir(artwork.mus_first);
index f487175728d274d820630ec09a205d9d7a2c846e..264060305f3ba9e64d6d7268da8a1ca472fcfbb1 100644 (file)
@@ -1801,8 +1801,16 @@ static void read_token_parameters(SetupFileHash *setup_file_hash,
     /* mark config file token as well known from default config */
     setHashEntry(setup_file_hash, file_list_entry->token, known_token_value);
   }
+#if 0
   else
+  {
+    if (strcmp(file_list_entry->filename,
+              file_list_entry->default_filename) != 0)
+      printf("___ resetting '%s' to default\n", file_list_entry->token);
+
     setString(&file_list_entry->filename, file_list_entry->default_filename);
+  }
+#endif
 
   /* check for config tokens that can be build by base token and suffixes */
   for (i=0; suffix_list[i].token != NULL; i++)
@@ -1869,8 +1877,346 @@ static void add_property_mapping(struct PropertyMapping **list,
   new_list_entry->artwork_index = artwork_index;
 }
 
+static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info,
+                                         char *filename)
+{
+  struct FileInfo *file_list = artwork_info->file_list;
+  struct ConfigInfo *suffix_list = artwork_info->suffix_list;
+  char **base_prefixes = artwork_info->base_prefixes;
+  char **ext1_suffixes = artwork_info->ext1_suffixes;
+  char **ext2_suffixes = artwork_info->ext2_suffixes;
+  char **ext3_suffixes = artwork_info->ext3_suffixes;
+  char **ignore_tokens = artwork_info->ignore_tokens;
+  int num_file_list_entries = artwork_info->num_file_list_entries;
+  int num_suffix_list_entries = artwork_info->num_suffix_list_entries;
+  int num_base_prefixes = artwork_info->num_base_prefixes;
+  int num_ext1_suffixes = artwork_info->num_ext1_suffixes;
+  int num_ext2_suffixes = artwork_info->num_ext2_suffixes;
+  int num_ext3_suffixes = artwork_info->num_ext3_suffixes;
+  int num_ignore_tokens = artwork_info->num_ignore_tokens;
+  SetupFileHash *setup_file_hash, *extra_file_hash;
+  char *known_token_value = KNOWN_TOKEN_VALUE;
+  int i, j, k, l;
+
+  if (filename == NULL)
+    return;
+
+#if 0
+  printf("::: LoadArtworkConfigFromFilename: '%s'\n", filename);
+#endif
+
+  if ((setup_file_hash = loadSetupFileHash(filename)) == NULL)
+    return;
+
+  /* read parameters for all known config file tokens */
+  for (i=0; i<num_file_list_entries; i++)
+    read_token_parameters(setup_file_hash, suffix_list, &file_list[i]);
+
+  /* set all tokens that can be ignored here to "known" keyword */
+  for (i=0; i < num_ignore_tokens; i++)
+    setHashEntry(setup_file_hash, ignore_tokens[i], known_token_value);
+
+  /* copy all unknown config file tokens to extra config list */
+  extra_file_hash = newSetupFileHash();
+  BEGIN_HASH_ITERATION(setup_file_hash, itr)
+  {
+    if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) != 0)
+      setHashEntry(extra_file_hash,
+                  HASH_ITERATION_TOKEN(itr), HASH_ITERATION_VALUE(itr));
+  }
+  END_HASH_ITERATION(setup_file_hash, itr)
+
+  /* at this point, we do not need the config file hash anymore -- free it */
+  freeSetupFileHash(setup_file_hash);
+
+  /* now try to determine valid, dynamically defined config tokens */
+
+  BEGIN_HASH_ITERATION(extra_file_hash, itr)
+  {
+    struct FileInfo **dynamic_file_list =
+      &artwork_info->dynamic_file_list;
+    int *num_dynamic_file_list_entries =
+      &artwork_info->num_dynamic_file_list_entries;
+    struct PropertyMapping **property_mapping =
+      &artwork_info->property_mapping;
+    int *num_property_mapping_entries =
+      &artwork_info->num_property_mapping_entries;
+    int current_summarized_file_list_entry =
+      artwork_info->num_file_list_entries +
+      artwork_info->num_dynamic_file_list_entries;
+    char *token = HASH_ITERATION_TOKEN(itr);
+    int len_token = strlen(token);
+    int start_pos;
+    boolean base_prefix_found = FALSE;
+    boolean parameter_suffix_found = FALSE;
+
+    /* skip all parameter definitions (handled by read_token_parameters()) */
+    for (i=0; i < num_suffix_list_entries && !parameter_suffix_found; i++)
+    {
+      int len_suffix = strlen(suffix_list[i].token);
+
+      if (token_suffix_match(token, suffix_list[i].token, -len_suffix))
+       parameter_suffix_found = TRUE;
+    }
+
+#if 0
+    if (IS_PARENT_PROCESS())
+    {
+      if (parameter_suffix_found)
+       printf("---> skipping token '%s' (parameter token)\n", token);
+      else
+       printf("---> examining token '%s': search prefix ...\n", token);
+    }
+#endif
+
+    if (parameter_suffix_found)
+      continue;
+
+    /* ---------- step 0: search for matching base prefix ---------- */
+
+    start_pos = 0;
+    for (i=0; i<num_base_prefixes && !base_prefix_found; i++)
+    {
+      char *base_prefix = base_prefixes[i];
+      int len_base_prefix = strlen(base_prefix);
+      boolean ext1_suffix_found = FALSE;
+      boolean ext2_suffix_found = FALSE;
+      boolean ext3_suffix_found = FALSE;
+      boolean exact_match = FALSE;
+      int base_index = -1;
+      int ext1_index = -1;
+      int ext2_index = -1;
+      int ext3_index = -1;
+
+      base_prefix_found = token_suffix_match(token, base_prefix, start_pos);
+
+      if (!base_prefix_found)
+       continue;
+
+      base_index = i;
+
+      if (start_pos + len_base_prefix == len_token)    /* exact match */
+      {
+       exact_match = TRUE;
+
+       add_dynamic_file_list_entry(dynamic_file_list,
+                                   num_dynamic_file_list_entries,
+                                   extra_file_hash,
+                                   suffix_list,
+                                   num_suffix_list_entries,
+                                   token);
+       add_property_mapping(property_mapping,
+                            num_property_mapping_entries,
+                            base_index, -1, -1, -1,
+                            current_summarized_file_list_entry);
+       continue;
+      }
+
+#if 0
+      if (IS_PARENT_PROCESS())
+       printf("---> examining token '%s': search 1st suffix ...\n", token);
+#endif
+
+      /* ---------- step 1: search for matching first suffix ---------- */
+
+      start_pos += len_base_prefix;
+      for (j=0; j<num_ext1_suffixes && !ext1_suffix_found; j++)
+      {
+       char *ext1_suffix = ext1_suffixes[j];
+       int len_ext1_suffix = strlen(ext1_suffix);
+
+       ext1_suffix_found = token_suffix_match(token, ext1_suffix, start_pos);
+
+       if (!ext1_suffix_found)
+         continue;
+
+       ext1_index = j;
+
+       if (start_pos + len_ext1_suffix == len_token)   /* exact match */
+       {
+         exact_match = TRUE;
+
+         add_dynamic_file_list_entry(dynamic_file_list,
+                                     num_dynamic_file_list_entries,
+                                     extra_file_hash,
+                                     suffix_list,
+                                     num_suffix_list_entries,
+                                     token);
+         add_property_mapping(property_mapping,
+                              num_property_mapping_entries,
+                              base_index, ext1_index, -1, -1,
+                              current_summarized_file_list_entry);
+         continue;
+       }
+
+       start_pos += len_ext1_suffix;
+      }
+
+      if (exact_match)
+       break;
+
+#if 0
+      if (IS_PARENT_PROCESS())
+       printf("---> examining token '%s': search 2nd suffix ...\n", token);
+#endif
+
+      /* ---------- step 2: search for matching second suffix ---------- */
+
+      for (k=0; k<num_ext2_suffixes && !ext2_suffix_found; k++)
+      {
+       char *ext2_suffix = ext2_suffixes[k];
+       int len_ext2_suffix = strlen(ext2_suffix);
+
+       ext2_suffix_found = token_suffix_match(token, ext2_suffix,start_pos);
+
+       if (!ext2_suffix_found)
+         continue;
+
+       ext2_index = k;
+
+       if (start_pos + len_ext2_suffix == len_token)   /* exact match */
+       {
+         exact_match = TRUE;
+
+         add_dynamic_file_list_entry(dynamic_file_list,
+                                     num_dynamic_file_list_entries,
+                                     extra_file_hash,
+                                     suffix_list,
+                                     num_suffix_list_entries,
+                                     token);
+         add_property_mapping(property_mapping,
+                              num_property_mapping_entries,
+                              base_index, ext1_index, ext2_index, -1,
+                              current_summarized_file_list_entry);
+         continue;
+       }
+
+       start_pos += len_ext2_suffix;
+      }
+
+      if (exact_match)
+       break;
+
+#if 0
+      if (IS_PARENT_PROCESS())
+       printf("---> examining token '%s': search 3rd suffix ...\n",token);
+#endif
+
+      /* ---------- step 3: search for matching third suffix ---------- */
+
+      for (l=0; l<num_ext3_suffixes && !ext3_suffix_found; l++)
+      {
+       char *ext3_suffix = ext3_suffixes[l];
+       int len_ext3_suffix = strlen(ext3_suffix);
+
+       ext3_suffix_found =token_suffix_match(token,ext3_suffix,start_pos);
+
+       if (!ext3_suffix_found)
+         continue;
+
+       ext3_index = l;
+
+       if (start_pos + len_ext3_suffix == len_token) /* exact match */
+       {
+         exact_match = TRUE;
+
+         add_dynamic_file_list_entry(dynamic_file_list,
+                                     num_dynamic_file_list_entries,
+                                     extra_file_hash,
+                                     suffix_list,
+                                     num_suffix_list_entries,
+                                     token);
+         add_property_mapping(property_mapping,
+                              num_property_mapping_entries,
+                              base_index, ext1_index, ext2_index, ext3_index,
+                              current_summarized_file_list_entry);
+         continue;
+       }
+      }
+    }
+  }
+  END_HASH_ITERATION(extra_file_hash, itr)
+
+  if (artwork_info->num_dynamic_file_list_entries > 0)
+  {
+    artwork_info->dynamic_artwork_list =
+      checked_calloc(artwork_info->num_dynamic_file_list_entries *
+                    artwork_info->sizeof_artwork_list_entry);
+  }
+
+  if (extra_file_hash != NULL && options.verbose && IS_PARENT_PROCESS())
+  {
+    SetupFileList *setup_file_list, *list;
+    boolean dynamic_tokens_found = FALSE;
+    boolean unknown_tokens_found = FALSE;
+
+    if ((setup_file_list = loadSetupFileList(filename)) == NULL)
+      Error(ERR_EXIT, "loadSetupFileHash works, but loadSetupFileList fails");
+
+    BEGIN_HASH_ITERATION(extra_file_hash, itr)
+    {
+      if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) == 0)
+       dynamic_tokens_found = TRUE;
+      else
+       unknown_tokens_found = TRUE;
+    }
+    END_HASH_ITERATION(extra_file_hash, itr)
+
+#if DEBUG
+    if (dynamic_tokens_found)
+    {
+      Error(ERR_RETURN_LINE, "-");
+      Error(ERR_RETURN, "dynamic token(s) found:");
+
+      for (list = setup_file_list; list != NULL; list = list->next)
+      {
+       char *value = getHashEntry(extra_file_hash, list->token);
+
+       if (value != NULL && strcmp(value, known_token_value) == 0)
+         Error(ERR_RETURN, "- dynamic token: '%s'", list->token);
+      }
+
+      Error(ERR_RETURN_LINE, "-");
+    }
+#endif
+
+    if (unknown_tokens_found)
+    {
+      Error(ERR_RETURN_LINE, "-");
+      Error(ERR_RETURN, "warning: unknown token(s) found in config file:");
+      Error(ERR_RETURN, "- config file: '%s'", filename);
+
+      for (list = setup_file_list; list != NULL; list = list->next)
+      {
+       char *value = getHashEntry(extra_file_hash, list->token);
+
+       if (value != NULL && strcmp(value, known_token_value) != 0)
+         Error(ERR_RETURN, "- dynamic token: '%s'", list->token);
+      }
+
+      Error(ERR_RETURN_LINE, "-");
+    }
+
+    freeSetupFileList(setup_file_list);
+  }
+
+  freeSetupFileHash(extra_file_hash);
+
+#if 0
+  for (i=0; i<num_file_list_entries; i++)
+  {
+    printf("'%s' ", file_list[i].token);
+    if (file_list[i].filename)
+      printf("-> '%s'\n", file_list[i].filename);
+    else
+      printf("-> UNDEFINED [-> '%s']\n", file_list[i].default_filename);
+  }
+#endif
+}
+
 void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
 {
+#if 0
   struct FileInfo *file_list = artwork_info->file_list;
   struct ConfigInfo *suffix_list = artwork_info->suffix_list;
   char **base_prefixes = artwork_info->base_prefixes;
@@ -1889,6 +2235,13 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
   SetupFileHash *setup_file_hash, *extra_file_hash;
   char *known_token_value = KNOWN_TOKEN_VALUE;
   int i, j, k, l;
+#else
+  struct FileInfo *file_list = artwork_info->file_list;
+  int num_file_list_entries = artwork_info->num_file_list_entries;
+  int num_suffix_list_entries = artwork_info->num_suffix_list_entries;
+  char *filename_base, *filename_local;
+  int i, j;
+#endif
 
 #if 0
   printf("GOT CUSTOM ARTWORK CONFIG FILE '%s'\n", filename);
@@ -1931,6 +2284,38 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
     artwork_info->num_property_mapping_entries = 0;
   }
 
+#if 1
+  /* first look for special artwork configured in level series config */
+  filename_base = getCustomArtworkLevelConfigFilename(artwork_info->type);
+
+  if (fileExists(filename_base))
+    LoadArtworkConfigFromFilename(artwork_info, filename_base);
+
+#if 0
+  for(i=0; i<num_file_list_entries; i++)
+    if (strcmp(file_list[i].token, "background") == 0)
+      printf("!!! base !!! -- '%s' -> '%s'\n",
+            file_list[i].token, file_list[i].filename);
+#endif
+
+#if 1
+  filename_local = getCustomArtworkConfigFilename(artwork_info->type);
+
+  if (filename_local != NULL && strcmp(filename_base, filename_local) != 0)
+    LoadArtworkConfigFromFilename(artwork_info, filename_local);
+
+#if 0
+  for(i=0; i<num_file_list_entries; i++)
+    if (strcmp(file_list[i].token, "background") == 0)
+      printf("!!! local !!! -- '%s' -> '%s'\n",
+            file_list[i].token, file_list[i].filename);
+#endif
+
+#endif
+#endif
+
+#if 0
+
   if (filename == NULL)
     return;
 
@@ -2241,6 +2626,8 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
       printf("-> UNDEFINED [-> '%s']\n", file_list[i].default_filename);
   }
 #endif
+
+#endif
 }
 
 static void deleteArtworkListEntry(struct ArtworkListInfo *artwork_info,
@@ -2282,11 +2669,6 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info,
   ListNode *node;
   char *filename = getCustomArtworkFilename(basename, artwork_info->type);
 
-#if 1
-    if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: got filename '%s'\n", filename);
-#endif
-
   if (filename == NULL)
   {
     int error_mode = ERR_WARN;
@@ -2306,11 +2688,8 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info,
        This usually means that this artwork does not exist in this artwork set
        and a fallback to the existing artwork is done. */
 
-#if 1
-#if 1
-    if (strcmp(basename, "RocksScreen.pcx") == 0)
-#endif
-      printf("[artwork '%s' already exists (same list entry)]\n", filename);
+#if 0
+    printf("[artwork '%s' already exists (same list entry)]\n", filename);
 #endif
 
     return;
@@ -2418,8 +2797,15 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info)
 #endif
 
   for(i=0; i<num_file_list_entries; i++)
+  {
+#if 0
+    if (strcmp(file_list[i].token, "background") == 0)
+      printf("::: '%s' -> '%s'\n", file_list[i].token, file_list[i].filename);
+#endif
+
     LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i],
                      file_list[i].filename, i);
+  }
 
 #if 0
   printf("DEBUG: reloading %d dynamic artwork files ...\n",
index 165b8a2afad7a9078f9dcfa5e6b285bc64761fa2..574d37e84262217730ba644439c0a8e38907b255 100644 (file)
@@ -268,6 +268,16 @@ static char *getDefaultMusicDir(char *music_subdir)
   return music_dir;
 }
 
+static char *getDefaultArtworkDir(int type)
+{
+  return (type == TREE_TYPE_GRAPHICS_DIR ?
+         getDefaultGraphicsDir(GRAPHICS_SUBDIR) :
+         type == TREE_TYPE_SOUNDS_DIR ?
+         getDefaultSoundsDir(SOUNDS_SUBDIR) :
+         type == TREE_TYPE_MUSIC_DIR ?
+         getDefaultMusicDir(MUSIC_SUBDIR) : "");
+}
+
 static char *getUserGraphicsDir()
 {
   static char *usergraphics_dir = NULL;
@@ -328,13 +338,29 @@ void setLevelArtworkDir(TreeInfo *ti)
      ti->type == TREE_TYPE_SOUNDS_DIR   ? leveldir_current->sounds_set :
      leveldir_current->music_set);
 
-  if ((level_artwork = getTreeInfoFromIdentifier(ti, artwork_set)) == NULL)
-    return;
-
   if (*artwork_path_ptr != NULL)
     free(*artwork_path_ptr);
 
-  *artwork_path_ptr = getStringCopy(getSetupArtworkDir(level_artwork));
+  if ((level_artwork = getTreeInfoFromIdentifier(ti, artwork_set)))
+    *artwork_path_ptr = getStringCopy(getSetupArtworkDir(level_artwork));
+  else
+  {
+    /* No (or non-existing) artwork configured in "levelinfo.conf". This would
+       normally result in using the artwork configured in the setup menu. But
+       if an artwork subdirectory exists (which might contain custom artwork
+       or an artwork configuration file), this level artwork must be treated
+       as relative to the default "classic" artwork, not to the artwork that
+       is currently configured in the setup menu. */
+
+    char *dir = getPath2(getCurrentLevelDir(), ARTWORK_DIRECTORY(ti->type));
+
+    if (fileExists(dir))
+      *artwork_path_ptr = getStringCopy(getDefaultArtworkDir(ti->type));
+    else
+      *artwork_path_ptr = getStringCopy(UNDEFINED_FILENAME);
+
+    free(dir);
+  }
 }
 
 static char *getLevelArtworkDir(int type)
@@ -453,34 +479,49 @@ char *getCustomImageFilename(char *basename)
 
   if (!setup.override_level_graphics)
   {
+#if 0
     /* 1st try: look for special artwork configured in level series config */
     filename = getPath2(getLevelArtworkDir(TREE_TYPE_GRAPHICS_DIR), basename);
-#if 1
+#if 0
     if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: check 1: filename '%s'\n", filename);
+      printf("::: trying 1 '%s' ...\n", filename);
 #endif
     if (fileExists(filename))
       return filename;
 
     free(filename);
+#endif
 
     /* 2nd try: look for special artwork in current level series directory */
     filename = getPath3(getCurrentLevelDir(), GRAPHICS_DIRECTORY, basename);
+#if 0
+    if (strcmp(basename, "RocksScreen.pcx") == 0)
+      printf("::: trying 2 '%s' ...\n", filename);
+#endif
+    if (fileExists(filename))
+      return filename;
+
+    free(filename);
+
 #if 1
+    /* 1st try: look for special artwork configured in level series config */
+    filename = getPath2(getLevelArtworkDir(TREE_TYPE_GRAPHICS_DIR), basename);
+#if 0
     if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: check 2: filename '%s'\n", filename);
+      printf("::: trying 2.1 '%s' ...\n", filename);
 #endif
     if (fileExists(filename))
       return filename;
 
     free(filename);
+#endif
   }
 
   /* 3rd try: look for special artwork in configured artwork directory */
   filename = getPath2(getSetupArtworkDir(artwork.gfx_current), basename);
-#if 1
-    if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: check 3: filename '%s'\n", filename);
+#if 0
+  if (strcmp(basename, "RocksScreen.pcx") == 0)
+    printf("::: trying 3 '%s' ...\n", filename);
 #endif
   if (fileExists(filename))
     return filename;
@@ -489,9 +530,9 @@ char *getCustomImageFilename(char *basename)
 
   /* 4th try: look for default artwork in new default artwork directory */
   filename = getPath2(getDefaultGraphicsDir(GRAPHICS_SUBDIR), basename);
-#if 1
-    if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: check 4: filename '%s'\n", filename);
+#if 0
+  if (strcmp(basename, "RocksScreen.pcx") == 0)
+    printf("::: trying 4 '%s' ...\n", filename);
 #endif
   if (fileExists(filename))
     return filename;
@@ -500,9 +541,9 @@ char *getCustomImageFilename(char *basename)
 
   /* 5th try: look for default artwork in old default artwork directory */
   filename = getPath2(options.graphics_directory, basename);
-#if 1
-    if (strcmp(basename, "RocksScreen.pcx") == 0)
-      printf("::: check 5: filename '%s'\n", filename);
+#if 0
+  if (strcmp(basename, "RocksScreen.pcx") == 0)
+    printf("::: trying 5 '%s' ...\n", filename);
 #endif
   if (fileExists(filename))
     return filename;
@@ -519,12 +560,14 @@ char *getCustomSoundFilename(char *basename)
 
   if (!setup.override_level_sounds)
   {
+#if 0
     /* 1st try: look for special artwork configured in level series config */
     filename = getPath2(getLevelArtworkDir(TREE_TYPE_SOUNDS_DIR), basename);
     if (fileExists(filename))
       return filename;
 
     free(filename);
+#endif
 
     /* 2nd try: look for special artwork in current level series directory */
     filename = getPath3(getCurrentLevelDir(), SOUNDS_DIRECTORY, basename);
@@ -532,6 +575,15 @@ char *getCustomSoundFilename(char *basename)
       return filename;
 
     free(filename);
+
+#if 1
+    /* 1st try: look for special artwork configured in level series config */
+    filename = getPath2(getLevelArtworkDir(TREE_TYPE_SOUNDS_DIR), basename);
+    if (fileExists(filename))
+      return filename;
+
+    free(filename);
+#endif
   }
 
   /* 3rd try: look for special artwork in configured artwork directory */
@@ -571,6 +623,18 @@ char *getCustomArtworkConfigFilename(int type)
   return getCustomArtworkFilename(ARTWORKINFO_FILENAME(type), type);
 }
 
+char *getCustomArtworkLevelConfigFilename(int type)
+{
+  static char *filename = NULL;
+
+  if (filename != NULL)
+    free(filename);
+
+  filename = getPath2(getLevelArtworkDir(type), ARTWORKINFO_FILENAME(type));
+
+  return filename;
+}
+
 char *getCustomMusicDirectory(void)
 {
   static char *directory = NULL;
@@ -580,12 +644,14 @@ char *getCustomMusicDirectory(void)
 
   if (!setup.override_level_music)
   {
+#if 0
     /* 1st try: look for special artwork configured in level series config */
     directory = getStringCopy(getLevelArtworkDir(TREE_TYPE_MUSIC_DIR));
     if (fileExists(directory))
       return directory;
 
     free(directory);
+#endif
 
     /* 2nd try: look for special artwork in current level series directory */
     directory = getPath2(getCurrentLevelDir(), MUSIC_DIRECTORY);
@@ -593,6 +659,15 @@ char *getCustomMusicDirectory(void)
       return directory;
 
     free(directory);
+
+#if 1
+    /* 1st try: look for special artwork configured in level series config */
+    directory = getStringCopy(getLevelArtworkDir(TREE_TYPE_MUSIC_DIR));
+    if (fileExists(directory))
+      return directory;
+
+    free(directory);
+#endif
   }
 
   /* 3rd try: look for special artwork in configured artwork directory */
index 479f88c4c482030741b7589aedeebe78696b1967..ab976302fce665088b5aeaf7e73882794fef3759 100644 (file)
@@ -193,6 +193,7 @@ char *getCustomImageFilename(char *);
 char *getCustomSoundFilename(char *);
 char *getCustomArtworkFilename(char *, int);
 char *getCustomArtworkConfigFilename(int);
+char *getCustomArtworkLevelConfigFilename(int);
 char *getCustomMusicDirectory(void);
 
 void InitTapeDirectory(char *);
index 8a720ae939e07babe23c9ecffaf41c8228988e4c..697d1b740fcf607994123ce00f5a25c56ef72b74 100644 (file)
@@ -2923,11 +2923,36 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "-",
     "-"
   },
+  {
+    "dynabomb",
+    "-",
+    "-"
+  },
   {
     "dynabomb_active",
     "-",
     "-"
   },
+  {
+    "dynabomb_player_1",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_2",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_3",
+    "-",
+    "-"
+  },
+  {
+    "dynabomb_player_4",
+    "-",
+    "-"
+  },
   {
     "shield_normal_active",
     "-",
@@ -3003,6 +3028,9 @@ struct ElementActionInfo element_action_info[NUM_ACTIONS + 1] =
   { ".dying",          ACTION_DYING,           FALSE   },
   { ".other",          ACTION_OTHER,           FALSE   },
 
+  /* empty suffix always matches -- check as last entry in InitSoundInfo() */
+  { "",                        ACTION_DEFAULT,         TRUE    },
+
   { NULL,              0,                      0       }
 };
 
index 4f431f8a5f2c83d20b8c540f7320fc57c1e8c653..8bef96cc876e53bf6b6d627b74751d4fa17dafe5 100644 (file)
 #define EL_INVISIBLE_STEELWALL_HORIZONTAL      (EL_FIRST_DUMMY + 10)
 #define EL_INVISIBLE_STEELWALL_VERTICAL                (EL_FIRST_DUMMY + 11)
 #define EL_SAND_CRUMBLED                       (EL_FIRST_DUMMY + 12)
-#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 13)
-#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 14)
-#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 15)
-#define EL_DEFAULT                             (EL_FIRST_DUMMY + 16)
-#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 17)
-#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 18)
-#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 19)
-
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 20)
+#define EL_DYNABOMB                            (EL_FIRST_DUMMY + 13)
+#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 14)
+#define EL_DYNABOMB_PLAYER_1                   (EL_FIRST_DUMMY + 15)
+#define EL_DYNABOMB_PLAYER_2                   (EL_FIRST_DUMMY + 16)
+#define EL_DYNABOMB_PLAYER_3                   (EL_FIRST_DUMMY + 17)
+#define EL_DYNABOMB_PLAYER_4                   (EL_FIRST_DUMMY + 18)
+#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 19)
+#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 20)
+#define EL_DEFAULT                             (EL_FIRST_DUMMY + 21)
+#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 22)
+#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 23)
+#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 24)
+
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 25)
 
 
 /* values for graphics/sounds action types */
index cfbc85cc632c1c376fcd34dfd13a1b342747d03d..e7b996358e77ad7e6e1ab3b91fa42571753c36a1 100644 (file)
@@ -540,6 +540,7 @@ void DrawPlayerField(int x, int y)
 
 void DrawPlayer(struct PlayerInfo *player)
 {
+#if 0
   int jx = player->jx, jy = player->jy;
   int last_jx = player->last_jx, last_jy = player->last_jy;
   int next_jx = jx + (jx - last_jx), next_jy = jy + (jy - last_jy);
@@ -551,6 +552,23 @@ void DrawPlayer(struct PlayerInfo *player)
   boolean player_is_moving = (last_jx != jx || last_jy != jy ? TRUE : FALSE);
   int move_dir = player->MovDir;
   int action = ACTION_DEFAULT;
+#else
+  int jx = player->jx, jy = player->jy;
+  int move_dir = player->MovDir;
+  int dx = (move_dir == MV_LEFT ? -1 : move_dir == MV_RIGHT ? +1 : 0);
+  int dy = (move_dir == MV_UP   ? -1 : move_dir == MV_DOWN  ? +1 : 0);
+  int last_jx = (player->is_moving ? jx - dx : jx);
+  int last_jy = (player->is_moving ? jy - dy : jy);
+  int next_jx = jx + dx;
+  int next_jy = jy + dy;
+  int sx = SCREENX(jx), sy = SCREENY(jy);
+  int sxx = 0, syy = 0;
+  int element = Feld[jx][jy], last_element = Feld[last_jx][last_jy];
+  int graphic;
+  int frame = 0;
+  boolean player_is_moving = (player->MovPos ? TRUE : FALSE);
+  int action = ACTION_DEFAULT;
+#endif
 
   if (!player->active || !IN_SCR_FIELD(SCREENX(last_jx), SCREENY(last_jy)))
     return;
@@ -580,7 +598,11 @@ void DrawPlayer(struct PlayerInfo *player)
   /* draw things in the field the player is leaving, if needed               */
   /* ----------------------------------------------------------------------- */
 
+#if 1
+  if (player->is_moving)
+#else
   if (player_is_moving)
+#endif
   {
     if (Back[last_jx][last_jy] && IS_DRAWABLE(last_element))
     {
@@ -600,6 +622,7 @@ void DrawPlayer(struct PlayerInfo *player)
 
     if (player->Pushing && IN_SCR_FIELD(SCREENX(next_jx), SCREENY(next_jy)))
     {
+#if 1
 #if 1
       DrawLevelElement(next_jx, next_jy, EL_EMPTY);
 #else
@@ -612,6 +635,7 @@ void DrawPlayer(struct PlayerInfo *player)
       }
       else
        DrawLevelField(next_jx, next_jy);
+#endif
 #endif
     }
   }
@@ -700,7 +724,17 @@ void DrawPlayer(struct PlayerInfo *player)
   /* draw things the player is pushing, if needed                            */
   /* ----------------------------------------------------------------------- */
 
+#if 0
+  printf("::: %d, %d [%d, %d] [%d]\n",
+        player->Pushing, player_is_moving, player->GfxAction,
+        player->is_moving, player_is_moving);
+#endif
+
+#if 1
+  if (player->Pushing && player->is_moving)
+#else
   if (player->Pushing && player_is_moving)
+#endif
   {
     int px = SCREENX(next_jx), py = SCREENY(next_jy);
 
@@ -720,23 +754,35 @@ void DrawPlayer(struct PlayerInfo *player)
 #endif
     else
     {
+#if 1
+      int element = MovingOrBlocked2Element(next_jx, next_jy);
+#else
 #if 1
       int element = Feld[jx][jy];
 #else
       int element = Feld[next_jx][next_jy];
 #endif
+#endif
 
+#if 1
       int graphic = el2img(element);
       int frame = 0;
 
+#if 0
       if ((sxx || syy) && IS_PUSHABLE(element))
+#endif
       {
-       graphic = el_act_dir2img(element, ACTION_MOVING, move_dir);
+       graphic = el_act_dir2img(element, ACTION_PUSHING, move_dir);
        frame = getGraphicAnimationFrame(graphic, player->Frame);
       }
 
+#if 0
+      printf("::: pushing %d: %d ...\n", sxx, frame);
+#endif
+
       DrawGraphicShifted(px, py, sxx, syy, graphic, frame,
                         NO_CUTTING, NO_MASKING);
+#endif
     }
   }