From 3607ef8e4000754063935d908053d564de92c0a2 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sun, 16 Nov 2003 04:25:47 +0100 Subject: [PATCH] rnd-20031116-1-src --- src/Makefile | 6 + src/conf_e2g.c | 64 -- src/conf_gfx.c | 64 -- src/conf_gfx.h | 2594 +++++++++++++++++++++---------------------- src/conf_mus.c | 41 + src/conf_mus.h | 32 + src/conf_snd.c | 2 +- src/conf_snd.h | 250 ++--- src/conftime.h | 2 +- src/game.c | 225 ++-- src/game.h | 2 +- src/init.c | 196 +++- src/libgame/misc.c | 12 +- src/libgame/setup.c | 61 + src/libgame/sound.c | 400 +++++-- src/libgame/sound.h | 7 + src/main.c | 14 + src/main.h | 41 +- src/screens.c | 24 +- 19 files changed, 2252 insertions(+), 1785 deletions(-) create mode 100644 src/conf_mus.c create mode 100644 src/conf_mus.h diff --git a/src/Makefile b/src/Makefile index 46a9ddd2..dd6896bf 100644 --- a/src/Makefile +++ b/src/Makefile @@ -135,6 +135,7 @@ LDFLAGS = $(SYS_LDFLAGS) $(EXTRA_LDFLAGS) -lm SRCS = main.c \ conf_gfx.c \ conf_snd.c \ + conf_mus.c \ init.c \ config.c \ events.c \ @@ -151,6 +152,7 @@ SRCS = main.c \ OBJS = main.o \ conf_gfx.o \ conf_snd.o \ + conf_mus.o \ init.o \ config.o \ events.o \ @@ -166,6 +168,7 @@ OBJS = main.o \ CNFS = conf_gfx.h \ conf_snd.h \ + conf_mus.h \ conf_chr.c \ conf_chr.h \ conf_cus.c \ @@ -215,6 +218,9 @@ conf_gfx.h: conf_gfx.c conf_snd.h: conf_snd.c @$(MAKE) auto-conf +conf_mus.h: conf_mus.c + @$(MAKE) auto-conf + $(TIMESTAMP_FILE): $(SRCS) $(LIBGAME) @date '+"[%Y-%m-%d %H:%M]"' \ | sed -e 's/^/#define COMPILE_DATE_STRING /' \ diff --git a/src/conf_e2g.c b/src/conf_e2g.c index 4f989bad..e17b2fac 100644 --- a/src/conf_e2g.c +++ b/src/conf_e2g.c @@ -109,74 +109,10 @@ element_to_graphic[] = EL_BD_BUTTERFLY, -1, -1, FALSE, IMG_BD_BUTTERFLY }, - { - EL_BD_BUTTERFLY_RIGHT, -1, -1, FALSE, - IMG_BD_BUTTERFLY_RIGHT - }, - { - EL_BD_BUTTERFLY, -1, MV_BIT_RIGHT, FALSE, - IMG_BD_BUTTERFLY_RIGHT - }, - { - EL_BD_BUTTERFLY_UP, -1, -1, FALSE, - IMG_BD_BUTTERFLY_UP - }, - { - EL_BD_BUTTERFLY, -1, MV_BIT_UP, FALSE, - IMG_BD_BUTTERFLY_UP - }, - { - EL_BD_BUTTERFLY_LEFT, -1, -1, FALSE, - IMG_BD_BUTTERFLY_LEFT - }, - { - EL_BD_BUTTERFLY, -1, MV_BIT_LEFT, FALSE, - IMG_BD_BUTTERFLY_LEFT - }, - { - EL_BD_BUTTERFLY_DOWN, -1, -1, FALSE, - IMG_BD_BUTTERFLY_DOWN - }, - { - EL_BD_BUTTERFLY, -1, MV_BIT_DOWN, FALSE, - IMG_BD_BUTTERFLY_DOWN - }, { EL_BD_FIREFLY, -1, -1, FALSE, IMG_BD_FIREFLY }, - { - EL_BD_FIREFLY_RIGHT, -1, -1, FALSE, - IMG_BD_FIREFLY_RIGHT - }, - { - EL_BD_FIREFLY, -1, MV_BIT_RIGHT, FALSE, - IMG_BD_FIREFLY_RIGHT - }, - { - EL_BD_FIREFLY_UP, -1, -1, FALSE, - IMG_BD_FIREFLY_UP - }, - { - EL_BD_FIREFLY, -1, MV_BIT_UP, FALSE, - IMG_BD_FIREFLY_UP - }, - { - EL_BD_FIREFLY_LEFT, -1, -1, FALSE, - IMG_BD_FIREFLY_LEFT - }, - { - EL_BD_FIREFLY, -1, MV_BIT_LEFT, FALSE, - IMG_BD_FIREFLY_LEFT - }, - { - EL_BD_FIREFLY_DOWN, -1, -1, FALSE, - IMG_BD_FIREFLY_DOWN - }, - { - EL_BD_FIREFLY, -1, MV_BIT_DOWN, FALSE, - IMG_BD_FIREFLY_DOWN - }, { EL_SP_DEFAULT, ACTION_EXPLODING, -1, FALSE, IMG_SP_DEFAULT_EXPLODING diff --git a/src/conf_gfx.c b/src/conf_gfx.c index d0758de8..36d9ddbf 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -167,50 +167,18 @@ struct ConfigInfo image_config[] = { "bd_butterfly.anim_mode", "pingpong" }, { "bd_butterfly.delay", "4" }, { "bd_butterfly.global_sync", "true" }, - { "bd_butterfly.right", "RocksElements.pcx" }, - { "bd_butterfly.right.xpos", "4" }, - { "bd_butterfly.right.ypos", "12" }, - { "bd_butterfly.right.frames", "2" }, - { "bd_butterfly.right.anim_mode", "pingpong" }, - { "bd_butterfly.right.delay", "4" }, - { "bd_butterfly.right.global_sync", "true" }, { "bd_butterfly.right.EDITOR", "RocksElements.pcx" }, { "bd_butterfly.right.EDITOR.xpos", "8" }, { "bd_butterfly.right.EDITOR.ypos", "12" }, - { "bd_butterfly.right.EDITOR.frames", "1" }, - { "bd_butterfly.up", "RocksElements.pcx" }, - { "bd_butterfly.up.xpos", "4" }, - { "bd_butterfly.up.ypos", "12" }, - { "bd_butterfly.up.frames", "2" }, - { "bd_butterfly.up.anim_mode", "pingpong" }, - { "bd_butterfly.up.delay", "4" }, - { "bd_butterfly.up.global_sync", "true" }, { "bd_butterfly.up.EDITOR", "RocksElements.pcx" }, { "bd_butterfly.up.EDITOR.xpos", "9" }, { "bd_butterfly.up.EDITOR.ypos", "12" }, - { "bd_butterfly.up.EDITOR.frames", "1" }, - { "bd_butterfly.left", "RocksElements.pcx" }, - { "bd_butterfly.left.xpos", "4" }, - { "bd_butterfly.left.ypos", "12" }, - { "bd_butterfly.left.frames", "2" }, - { "bd_butterfly.left.anim_mode", "pingpong" }, - { "bd_butterfly.left.delay", "4" }, - { "bd_butterfly.left.global_sync", "true" }, { "bd_butterfly.left.EDITOR", "RocksElements.pcx" }, { "bd_butterfly.left.EDITOR.xpos", "10" }, { "bd_butterfly.left.EDITOR.ypos", "12" }, - { "bd_butterfly.left.EDITOR.frames", "1" }, - { "bd_butterfly.down", "RocksElements.pcx" }, - { "bd_butterfly.down.xpos", "4" }, - { "bd_butterfly.down.ypos", "12" }, - { "bd_butterfly.down.frames", "2" }, - { "bd_butterfly.down.anim_mode", "pingpong" }, - { "bd_butterfly.down.delay", "4" }, - { "bd_butterfly.down.global_sync", "true" }, { "bd_butterfly.down.EDITOR", "RocksElements.pcx" }, { "bd_butterfly.down.EDITOR.xpos", "11" }, { "bd_butterfly.down.EDITOR.ypos", "12" }, - { "bd_butterfly.down.EDITOR.frames", "1" }, { "bd_firefly", "RocksElements.pcx" }, { "bd_firefly.xpos", "6" }, @@ -219,50 +187,18 @@ struct ConfigInfo image_config[] = { "bd_firefly.anim_mode", "pingpong" }, { "bd_firefly.delay", "4" }, { "bd_firefly.global_sync", "true" }, - { "bd_firefly.right", "RocksElements.pcx" }, - { "bd_firefly.right.xpos", "6" }, - { "bd_firefly.right.ypos", "12" }, - { "bd_firefly.right.frames", "2" }, - { "bd_firefly.right.anim_mode", "pingpong" }, - { "bd_firefly.right.delay", "4" }, - { "bd_firefly.right.global_sync", "true" }, { "bd_firefly.right.EDITOR", "RocksElements.pcx" }, { "bd_firefly.right.EDITOR.xpos", "12" }, { "bd_firefly.right.EDITOR.ypos", "12" }, - { "bd_firefly.right.EDITOR.frames", "1" }, - { "bd_firefly.up", "RocksElements.pcx" }, - { "bd_firefly.up.xpos", "6" }, - { "bd_firefly.up.ypos", "12" }, - { "bd_firefly.up.frames", "2" }, - { "bd_firefly.up.anim_mode", "pingpong" }, - { "bd_firefly.up.delay", "4" }, - { "bd_firefly.up.global_sync", "true" }, { "bd_firefly.up.EDITOR", "RocksElements.pcx" }, { "bd_firefly.up.EDITOR.xpos", "13" }, { "bd_firefly.up.EDITOR.ypos", "12" }, - { "bd_firefly.up.EDITOR.frames", "1" }, - { "bd_firefly.left", "RocksElements.pcx" }, - { "bd_firefly.left.xpos", "6" }, - { "bd_firefly.left.ypos", "12" }, - { "bd_firefly.left.frames", "2" }, - { "bd_firefly.left.anim_mode", "pingpong" }, - { "bd_firefly.left.delay", "4" }, - { "bd_firefly.left.global_sync", "true" }, { "bd_firefly.left.EDITOR", "RocksElements.pcx" }, { "bd_firefly.left.EDITOR.xpos", "14" }, { "bd_firefly.left.EDITOR.ypos", "12" }, - { "bd_firefly.left.EDITOR.frames", "1" }, - { "bd_firefly.down", "RocksElements.pcx" }, - { "bd_firefly.down.xpos", "6" }, - { "bd_firefly.down.ypos", "12" }, - { "bd_firefly.down.frames", "2" }, - { "bd_firefly.down.anim_mode", "pingpong" }, - { "bd_firefly.down.delay", "4" }, - { "bd_firefly.down.global_sync", "true" }, { "bd_firefly.down.EDITOR", "RocksElements.pcx" }, { "bd_firefly.down.EDITOR.xpos", "15" }, { "bd_firefly.down.EDITOR.ypos", "12" }, - { "bd_firefly.down.EDITOR.frames", "1" }, /* images for Supaplex style elements and actions */ diff --git a/src/conf_gfx.h b/src/conf_gfx.h index 5aa17748..90ff4a1a 100644 --- a/src/conf_gfx.h +++ b/src/conf_gfx.h @@ -38,1307 +38,1299 @@ #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_RIGHT_EDITOR 21 -#define IMG_BD_BUTTERFLY_UP 22 -#define IMG_BD_BUTTERFLY_UP_EDITOR 23 -#define IMG_BD_BUTTERFLY_LEFT 24 -#define IMG_BD_BUTTERFLY_LEFT_EDITOR 25 -#define IMG_BD_BUTTERFLY_DOWN 26 -#define IMG_BD_BUTTERFLY_DOWN_EDITOR 27 -#define IMG_BD_FIREFLY 28 -#define IMG_BD_FIREFLY_RIGHT 29 -#define IMG_BD_FIREFLY_RIGHT_EDITOR 30 -#define IMG_BD_FIREFLY_UP 31 -#define IMG_BD_FIREFLY_UP_EDITOR 32 -#define IMG_BD_FIREFLY_LEFT 33 -#define IMG_BD_FIREFLY_LEFT_EDITOR 34 -#define IMG_BD_FIREFLY_DOWN 35 -#define IMG_BD_FIREFLY_DOWN_EDITOR 36 -#define IMG_SP_DEFAULT_EXPLODING 37 -#define IMG_SP_ZONK 38 -#define IMG_SP_ZONK_MOVING_LEFT 39 -#define IMG_SP_ZONK_MOVING_RIGHT 40 -#define IMG_SP_ZONK_PUSHING_LEFT 41 -#define IMG_SP_ZONK_PUSHING_RIGHT 42 -#define IMG_SP_BASE 43 -#define IMG_SP_MURPHY 44 -#define IMG_SP_MURPHY_MOVING_LEFT 45 -#define IMG_SP_MURPHY_MOVING_RIGHT 46 -#define IMG_SP_MURPHY_DIGGING_LEFT 47 -#define IMG_SP_MURPHY_DIGGING_RIGHT 48 -#define IMG_SP_MURPHY_COLLECTING_LEFT 49 -#define IMG_SP_MURPHY_COLLECTING_RIGHT 50 -#define IMG_SP_MURPHY_PUSHING_LEFT 51 -#define IMG_SP_MURPHY_PUSHING_RIGHT 52 -#define IMG_SP_MURPHY_SNAPPING_LEFT 53 -#define IMG_SP_MURPHY_SNAPPING_RIGHT 54 -#define IMG_SP_MURPHY_SNAPPING_UP 55 -#define IMG_SP_MURPHY_SNAPPING_DOWN 56 -#define IMG_SP_MURPHY_CLONE 57 -#define IMG_SP_INFOTRON 58 -#define IMG_SP_INFOTRON_EDITOR 59 -#define IMG_SP_CHIP_SINGLE 60 -#define IMG_SP_CHIP_LEFT 61 -#define IMG_SP_CHIP_RIGHT 62 -#define IMG_SP_CHIP_TOP 63 -#define IMG_SP_CHIP_BOTTOM 64 -#define IMG_SP_HARDWARE_GRAY 65 -#define IMG_SP_HARDWARE_GREEN 66 -#define IMG_SP_HARDWARE_BLUE 67 -#define IMG_SP_HARDWARE_RED 68 -#define IMG_SP_HARDWARE_YELLOW 69 -#define IMG_SP_EXIT_CLOSED 70 -#define IMG_SP_EXIT_OPENING 71 -#define IMG_SP_EXIT_OPEN 72 -#define IMG_SP_EXIT_CLOSING 73 -#define IMG_SP_DISK_ORANGE 74 -#define IMG_SP_DISK_YELLOW 75 -#define IMG_SP_DISK_RED 76 -#define IMG_SP_DISK_RED_COLLECTING 77 -#define IMG_SP_DISK_RED_ACTIVE 78 -#define IMG_SP_PORT_RIGHT 79 -#define IMG_SP_PORT_DOWN 80 -#define IMG_SP_PORT_LEFT 81 -#define IMG_SP_PORT_UP 82 -#define IMG_SP_PORT_HORIZONTAL 83 -#define IMG_SP_PORT_VERTICAL 84 -#define IMG_SP_PORT_ANY 85 -#define IMG_SP_GRAVITY_PORT_RIGHT 86 -#define IMG_SP_GRAVITY_PORT_DOWN 87 -#define IMG_SP_GRAVITY_PORT_LEFT 88 -#define IMG_SP_GRAVITY_PORT_UP 89 -#define IMG_SP_SNIKSNAK 90 -#define IMG_SP_SNIKSNAK_LEFT 91 -#define IMG_SP_SNIKSNAK_RIGHT 92 -#define IMG_SP_SNIKSNAK_UP 93 -#define IMG_SP_SNIKSNAK_DOWN 94 -#define IMG_SP_SNIKSNAK_TURNING_FROM_LEFT_UP 95 -#define IMG_SP_SNIKSNAK_TURNING_FROM_LEFT_DOWN 96 -#define IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_UP 97 -#define IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_DOWN 98 -#define IMG_SP_SNIKSNAK_TURNING_FROM_UP_LEFT 99 -#define IMG_SP_SNIKSNAK_TURNING_FROM_UP_RIGHT 100 -#define IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_LEFT 101 -#define IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_RIGHT 102 -#define IMG_SP_ELECTRON 103 -#define IMG_SP_ELECTRON_EDITOR 104 -#define IMG_SP_ELECTRON_EXPLODING 105 -#define IMG_SP_TERMINAL 106 -#define IMG_SP_TERMINAL_EDITOR 107 -#define IMG_SP_TERMINAL_ACTIVE 108 -#define IMG_SP_BUGGY_BASE 109 -#define IMG_SP_BUGGY_BASE_EDITOR 110 -#define IMG_SP_BUGGY_BASE_ACTIVATING 111 -#define IMG_SP_BUGGY_BASE_ACTIVE 112 -#define IMG_SP_HARDWARE_BASE_1 113 -#define IMG_SP_HARDWARE_BASE_2 114 -#define IMG_SP_HARDWARE_BASE_3 115 -#define IMG_SP_HARDWARE_BASE_4 116 -#define IMG_SP_HARDWARE_BASE_5 117 -#define IMG_SP_HARDWARE_BASE_6 118 -#define IMG_SOKOBAN_OBJECT 119 -#define IMG_SOKOBAN_OBJECT_EDITOR 120 -#define IMG_SOKOBAN_FIELD_EMPTY 121 -#define IMG_SOKOBAN_FIELD_FULL 122 -#define IMG_EMPTY_SPACE 123 -#define IMG_SAND 124 -#define IMG_SAND_CRUMBLED 125 -#define IMG_SAND_DIGGING_LEFT 126 -#define IMG_SAND_DIGGING_RIGHT 127 -#define IMG_SAND_DIGGING_UP 128 -#define IMG_SAND_DIGGING_DOWN 129 -#define IMG_SAND_DIGGING_LEFT_CRUMBLED 130 -#define IMG_SAND_DIGGING_RIGHT_CRUMBLED 131 -#define IMG_SAND_DIGGING_UP_CRUMBLED 132 -#define IMG_SAND_DIGGING_DOWN_CRUMBLED 133 -#define IMG_WALL 134 -#define IMG_WALL_SLIPPERY 135 -#define IMG_STEELWALL 136 -#define IMG_ROCK 137 -#define IMG_ROCK_MOVING_LEFT 138 -#define IMG_ROCK_MOVING_RIGHT 139 -#define IMG_ROCK_PUSHING_LEFT 140 -#define IMG_ROCK_PUSHING_RIGHT 141 -#define IMG_EMERALD 142 -#define IMG_EMERALD_MOVING 143 -#define IMG_EMERALD_FALLING 144 -#define IMG_EMERALD_COLLECTING 145 -#define IMG_DIAMOND 146 -#define IMG_DIAMOND_MOVING 147 -#define IMG_DIAMOND_FALLING 148 -#define IMG_DIAMOND_COLLECTING 149 -#define IMG_BOMB 150 -#define IMG_NUT 151 -#define IMG_NUT_BREAKING 152 -#define IMG_DYNAMITE 153 -#define IMG_DYNAMITE_EDITOR 154 -#define IMG_DYNAMITE_ACTIVE 155 -#define IMG_DYNAMITE_ACTIVE_EDITOR 156 -#define IMG_WALL_EMERALD 157 -#define IMG_WALL_DIAMOND 158 -#define IMG_BUG 159 -#define IMG_BUG_RIGHT 160 -#define IMG_BUG_UP 161 -#define IMG_BUG_LEFT 162 -#define IMG_BUG_DOWN 163 -#define IMG_BUG_MOVING_RIGHT 164 -#define IMG_BUG_MOVING_UP 165 -#define IMG_BUG_MOVING_LEFT 166 -#define IMG_BUG_MOVING_DOWN 167 -#define IMG_BUG_TURNING_FROM_RIGHT_UP 168 -#define IMG_BUG_TURNING_FROM_UP_LEFT 169 -#define IMG_BUG_TURNING_FROM_LEFT_DOWN 170 -#define IMG_BUG_TURNING_FROM_DOWN_RIGHT 171 -#define IMG_BUG_TURNING_FROM_RIGHT_DOWN 172 -#define IMG_BUG_TURNING_FROM_UP_RIGHT 173 -#define IMG_BUG_TURNING_FROM_LEFT_UP 174 -#define IMG_BUG_TURNING_FROM_DOWN_LEFT 175 -#define IMG_SPACESHIP 176 -#define IMG_SPACESHIP_RIGHT 177 -#define IMG_SPACESHIP_UP 178 -#define IMG_SPACESHIP_LEFT 179 -#define IMG_SPACESHIP_DOWN 180 -#define IMG_SPACESHIP_MOVING_RIGHT 181 -#define IMG_SPACESHIP_MOVING_UP 182 -#define IMG_SPACESHIP_MOVING_LEFT 183 -#define IMG_SPACESHIP_MOVING_DOWN 184 -#define IMG_SPACESHIP_TURNING_FROM_RIGHT_UP 185 -#define IMG_SPACESHIP_TURNING_FROM_UP_LEFT 186 -#define IMG_SPACESHIP_TURNING_FROM_LEFT_DOWN 187 -#define IMG_SPACESHIP_TURNING_FROM_DOWN_RIGHT 188 -#define IMG_SPACESHIP_TURNING_FROM_RIGHT_DOWN 189 -#define IMG_SPACESHIP_TURNING_FROM_UP_RIGHT 190 -#define IMG_SPACESHIP_TURNING_FROM_LEFT_UP 191 -#define IMG_SPACESHIP_TURNING_FROM_DOWN_LEFT 192 -#define IMG_YAMYAM 193 -#define IMG_YAMYAM_MOVING 194 -#define IMG_ROBOT 195 -#define IMG_ROBOT_MOVING 196 -#define IMG_ROBOT_WHEEL 197 -#define IMG_ROBOT_WHEEL_ACTIVE 198 -#define IMG_MAGIC_WALL 199 -#define IMG_MAGIC_WALL_ACTIVE 200 -#define IMG_MAGIC_WALL_FILLING 201 -#define IMG_MAGIC_WALL_FULL 202 -#define IMG_MAGIC_WALL_EMPTYING 203 -#define IMG_MAGIC_WALL_DEAD 204 -#define IMG_QUICKSAND_EMPTY 205 -#define IMG_QUICKSAND_FILLING 206 -#define IMG_QUICKSAND_FULL 207 -#define IMG_QUICKSAND_FULL_EDITOR 208 -#define IMG_QUICKSAND_EMPTYING 209 -#define IMG_ACID_POOL_TOPLEFT 210 -#define IMG_ACID_POOL_TOPRIGHT 211 -#define IMG_ACID_POOL_BOTTOMLEFT 212 -#define IMG_ACID_POOL_BOTTOM 213 -#define IMG_ACID_POOL_BOTTOMRIGHT 214 -#define IMG_ACID 215 -#define IMG_ACID_SPLASH_LEFT 216 -#define IMG_ACID_SPLASH_RIGHT 217 -#define IMG_AMOEBA_DROP 218 -#define IMG_AMOEBA_GROWING 219 -#define IMG_AMOEBA_SHRINKING 220 -#define IMG_AMOEBA_WET 221 -#define IMG_AMOEBA_WET_EDITOR 222 -#define IMG_AMOEBA_DROPPING 223 -#define IMG_AMOEBA_DRY 224 -#define IMG_AMOEBA_FULL 225 -#define IMG_AMOEBA_FULL_EDITOR 226 -#define IMG_AMOEBA_DEAD 227 -#define IMG_AMOEBA_DEAD_EDITOR 228 -#define IMG_EM_KEY_1 229 -#define IMG_EM_KEY_2 230 -#define IMG_EM_KEY_3 231 -#define IMG_EM_KEY_4 232 -#define IMG_EM_GATE_1 233 -#define IMG_EM_GATE_2 234 -#define IMG_EM_GATE_3 235 -#define IMG_EM_GATE_4 236 -#define IMG_EM_GATE_1_GRAY 237 -#define IMG_EM_GATE_1_GRAY_EDITOR 238 -#define IMG_EM_GATE_2_GRAY 239 -#define IMG_EM_GATE_2_GRAY_EDITOR 240 -#define IMG_EM_GATE_3_GRAY 241 -#define IMG_EM_GATE_3_GRAY_EDITOR 242 -#define IMG_EM_GATE_4_GRAY 243 -#define IMG_EM_GATE_4_GRAY_EDITOR 244 -#define IMG_EXIT_CLOSED 245 -#define IMG_EXIT_OPENING 246 -#define IMG_EXIT_OPEN 247 -#define IMG_EXIT_CLOSING 248 -#define IMG_BALLOON 249 -#define IMG_BALLOON_MOVING 250 -#define IMG_BALLOON_PUSHING 251 -#define IMG_BALLOON_SWITCH_LEFT 252 -#define IMG_BALLOON_SWITCH_RIGHT 253 -#define IMG_BALLOON_SWITCH_UP 254 -#define IMG_BALLOON_SWITCH_DOWN 255 -#define IMG_BALLOON_SWITCH_ANY 256 -#define IMG_SPRING 257 -#define IMG_EMC_STEELWALL_1 258 -#define IMG_EMC_STEELWALL_2 259 -#define IMG_EMC_STEELWALL_3 260 -#define IMG_EMC_STEELWALL_4 261 -#define IMG_EMC_WALL_1 262 -#define IMG_EMC_WALL_2 263 -#define IMG_EMC_WALL_3 264 -#define IMG_EMC_WALL_4 265 -#define IMG_EMC_WALL_5 266 -#define IMG_EMC_WALL_6 267 -#define IMG_EMC_WALL_7 268 -#define IMG_EMC_WALL_8 269 -#define IMG_INVISIBLE_STEELWALL 270 -#define IMG_INVISIBLE_STEELWALL_EDITOR 271 -#define IMG_INVISIBLE_STEELWALL_ACTIVE 272 -#define IMG_INVISIBLE_WALL 273 -#define IMG_INVISIBLE_WALL_EDITOR 274 -#define IMG_INVISIBLE_WALL_ACTIVE 275 -#define IMG_INVISIBLE_SAND 276 -#define IMG_INVISIBLE_SAND_EDITOR 277 -#define IMG_INVISIBLE_SAND_ACTIVE 278 -#define IMG_CONVEYOR_BELT_1_MIDDLE 279 -#define IMG_CONVEYOR_BELT_1_MIDDLE_ACTIVE 280 -#define IMG_CONVEYOR_BELT_1_LEFT 281 -#define IMG_CONVEYOR_BELT_1_LEFT_ACTIVE 282 -#define IMG_CONVEYOR_BELT_1_RIGHT 283 -#define IMG_CONVEYOR_BELT_1_RIGHT_ACTIVE 284 -#define IMG_CONVEYOR_BELT_1_SWITCH_LEFT 285 -#define IMG_CONVEYOR_BELT_1_SWITCH_MIDDLE 286 -#define IMG_CONVEYOR_BELT_1_SWITCH_RIGHT 287 -#define IMG_CONVEYOR_BELT_2_MIDDLE 288 -#define IMG_CONVEYOR_BELT_2_MIDDLE_ACTIVE 289 -#define IMG_CONVEYOR_BELT_2_LEFT 290 -#define IMG_CONVEYOR_BELT_2_LEFT_ACTIVE 291 -#define IMG_CONVEYOR_BELT_2_RIGHT 292 -#define IMG_CONVEYOR_BELT_2_RIGHT_ACTIVE 293 -#define IMG_CONVEYOR_BELT_2_SWITCH_LEFT 294 -#define IMG_CONVEYOR_BELT_2_SWITCH_MIDDLE 295 -#define IMG_CONVEYOR_BELT_2_SWITCH_RIGHT 296 -#define IMG_CONVEYOR_BELT_3_MIDDLE 297 -#define IMG_CONVEYOR_BELT_3_MIDDLE_ACTIVE 298 -#define IMG_CONVEYOR_BELT_3_LEFT 299 -#define IMG_CONVEYOR_BELT_3_LEFT_ACTIVE 300 -#define IMG_CONVEYOR_BELT_3_RIGHT 301 -#define IMG_CONVEYOR_BELT_3_RIGHT_ACTIVE 302 -#define IMG_CONVEYOR_BELT_3_SWITCH_LEFT 303 -#define IMG_CONVEYOR_BELT_3_SWITCH_MIDDLE 304 -#define IMG_CONVEYOR_BELT_3_SWITCH_RIGHT 305 -#define IMG_CONVEYOR_BELT_4_MIDDLE 306 -#define IMG_CONVEYOR_BELT_4_MIDDLE_ACTIVE 307 -#define IMG_CONVEYOR_BELT_4_LEFT 308 -#define IMG_CONVEYOR_BELT_4_LEFT_ACTIVE 309 -#define IMG_CONVEYOR_BELT_4_RIGHT 310 -#define IMG_CONVEYOR_BELT_4_RIGHT_ACTIVE 311 -#define IMG_CONVEYOR_BELT_4_SWITCH_LEFT 312 -#define IMG_CONVEYOR_BELT_4_SWITCH_MIDDLE 313 -#define IMG_CONVEYOR_BELT_4_SWITCH_RIGHT 314 -#define IMG_SWITCHGATE_SWITCH_UP 315 -#define IMG_SWITCHGATE_SWITCH_DOWN 316 -#define IMG_LIGHT_SWITCH 317 -#define IMG_LIGHT_SWITCH_ACTIVE 318 -#define IMG_TIMEGATE_SWITCH 319 -#define IMG_TIMEGATE_SWITCH_ACTIVE 320 -#define IMG_ENVELOPE_1 321 -#define IMG_ENVELOPE_1_COLLECTING 322 -#define IMG_ENVELOPE_2 323 -#define IMG_ENVELOPE_2_COLLECTING 324 -#define IMG_ENVELOPE_3 325 -#define IMG_ENVELOPE_3_COLLECTING 326 -#define IMG_ENVELOPE_4 327 -#define IMG_ENVELOPE_4_COLLECTING 328 -#define IMG_SIGN_EXCLAMATION 329 -#define IMG_SIGN_STOP 330 -#define IMG_LANDMINE 331 -#define IMG_STEELWALL_SLIPPERY 332 -#define IMG_EXTRA_TIME 333 -#define IMG_SHIELD_NORMAL 334 -#define IMG_SHIELD_NORMAL_ACTIVE 335 -#define IMG_SHIELD_DEADLY 336 -#define IMG_SHIELD_DEADLY_ACTIVE 337 -#define IMG_SWITCHGATE_CLOSED 338 -#define IMG_SWITCHGATE_OPENING 339 -#define IMG_SWITCHGATE_OPEN 340 -#define IMG_SWITCHGATE_CLOSING 341 -#define IMG_TIMEGATE_CLOSED 342 -#define IMG_TIMEGATE_OPENING 343 -#define IMG_TIMEGATE_OPEN 344 -#define IMG_TIMEGATE_CLOSING 345 -#define IMG_PEARL 346 -#define IMG_PEARL_BREAKING 347 -#define IMG_CRYSTAL 348 -#define IMG_WALL_PEARL 349 -#define IMG_WALL_CRYSTAL 350 -#define IMG_TUBE_RIGHT_DOWN 351 -#define IMG_TUBE_HORIZONTAL_DOWN 352 -#define IMG_TUBE_LEFT_DOWN 353 -#define IMG_TUBE_HORIZONTAL 354 -#define IMG_TUBE_VERTICAL_RIGHT 355 -#define IMG_TUBE_ANY 356 -#define IMG_TUBE_VERTICAL_LEFT 357 -#define IMG_TUBE_VERTICAL 358 -#define IMG_TUBE_RIGHT_UP 359 -#define IMG_TUBE_HORIZONTAL_UP 360 -#define IMG_TUBE_LEFT_UP 361 -#define IMG_TRAP 362 -#define IMG_TRAP_ACTIVE 363 -#define IMG_DX_SUPABOMB 364 -#define IMG_KEY_1 365 -#define IMG_KEY_1_EDITOR 366 -#define IMG_KEY_2 367 -#define IMG_KEY_2_EDITOR 368 -#define IMG_KEY_3 369 -#define IMG_KEY_3_EDITOR 370 -#define IMG_KEY_4 371 -#define IMG_KEY_4_EDITOR 372 -#define IMG_GATE_1 373 -#define IMG_GATE_2 374 -#define IMG_GATE_3 375 -#define IMG_GATE_4 376 -#define IMG_GATE_1_GRAY 377 -#define IMG_GATE_1_GRAY_EDITOR 378 -#define IMG_GATE_2_GRAY 379 -#define IMG_GATE_2_GRAY_EDITOR 380 -#define IMG_GATE_3_GRAY 381 -#define IMG_GATE_3_GRAY_EDITOR 382 -#define IMG_GATE_4_GRAY 383 -#define IMG_GATE_4_GRAY_EDITOR 384 -#define IMG_GAME_OF_LIFE 385 -#define IMG_BIOMAZE 386 -#define IMG_PACMAN 387 -#define IMG_PACMAN_RIGHT 388 -#define IMG_PACMAN_UP 389 -#define IMG_PACMAN_LEFT 390 -#define IMG_PACMAN_DOWN 391 -#define IMG_PACMAN_TURNING_FROM_RIGHT 392 -#define IMG_PACMAN_TURNING_FROM_UP 393 -#define IMG_PACMAN_TURNING_FROM_LEFT 394 -#define IMG_PACMAN_TURNING_FROM_DOWN 395 -#define IMG_LAMP 396 -#define IMG_LAMP_EDITOR 397 -#define IMG_LAMP_ACTIVE 398 -#define IMG_TIME_ORB_FULL 399 -#define IMG_TIME_ORB_EMPTY 400 -#define IMG_EMERALD_YELLOW 401 -#define IMG_EMERALD_YELLOW_MOVING 402 -#define IMG_EMERALD_YELLOW_FALLING 403 -#define IMG_EMERALD_RED 404 -#define IMG_EMERALD_RED_MOVING 405 -#define IMG_EMERALD_RED_FALLING 406 -#define IMG_EMERALD_PURPLE 407 -#define IMG_EMERALD_PURPLE_MOVING 408 -#define IMG_EMERALD_PURPLE_FALLING 409 -#define IMG_WALL_EMERALD_YELLOW 410 -#define IMG_WALL_EMERALD_RED 411 -#define IMG_WALL_EMERALD_PURPLE 412 -#define IMG_WALL_BD_DIAMOND 413 -#define IMG_EXPANDABLE_WALL 414 -#define IMG_EXPANDABLE_WALL_HORIZONTAL 415 -#define IMG_EXPANDABLE_WALL_HORIZONTAL_EDITOR 416 -#define IMG_EXPANDABLE_WALL_VERTICAL 417 -#define IMG_EXPANDABLE_WALL_VERTICAL_EDITOR 418 -#define IMG_EXPANDABLE_WALL_ANY 419 -#define IMG_EXPANDABLE_WALL_ANY_EDITOR 420 -#define IMG_EXPANDABLE_WALL_GROWING_LEFT 421 -#define IMG_EXPANDABLE_WALL_GROWING_RIGHT 422 -#define IMG_EXPANDABLE_WALL_GROWING_UP 423 -#define IMG_EXPANDABLE_WALL_GROWING_DOWN 424 -#define IMG_BLACK_ORB 425 -#define IMG_SPEED_PILL 426 -#define IMG_DARK_YAMYAM 427 -#define IMG_DYNABOMB 428 -#define IMG_DYNABOMB_ACTIVE 429 -#define IMG_DYNABOMB_PLAYER_1 430 -#define IMG_DYNABOMB_PLAYER_1_ACTIVE 431 -#define IMG_DYNABOMB_PLAYER_2 432 -#define IMG_DYNABOMB_PLAYER_2_ACTIVE 433 -#define IMG_DYNABOMB_PLAYER_3 434 -#define IMG_DYNABOMB_PLAYER_3_ACTIVE 435 -#define IMG_DYNABOMB_PLAYER_4 436 -#define IMG_DYNABOMB_PLAYER_4_ACTIVE 437 -#define IMG_DYNABOMB_INCREASE_NUMBER 438 -#define IMG_DYNABOMB_INCREASE_SIZE 439 -#define IMG_DYNABOMB_INCREASE_POWER 440 -#define IMG_PIG 441 -#define IMG_PIG_DOWN 442 -#define IMG_PIG_UP 443 -#define IMG_PIG_LEFT 444 -#define IMG_PIG_RIGHT 445 -#define IMG_PIG_MOVING_DOWN 446 -#define IMG_PIG_MOVING_UP 447 -#define IMG_PIG_MOVING_LEFT 448 -#define IMG_PIG_MOVING_RIGHT 449 -#define IMG_PIG_DIGGING_DOWN 450 -#define IMG_PIG_DIGGING_UP 451 -#define IMG_PIG_DIGGING_LEFT 452 -#define IMG_PIG_DIGGING_RIGHT 453 -#define IMG_DRAGON 454 -#define IMG_DRAGON_DOWN 455 -#define IMG_DRAGON_UP 456 -#define IMG_DRAGON_LEFT 457 -#define IMG_DRAGON_RIGHT 458 -#define IMG_DRAGON_MOVING_DOWN 459 -#define IMG_DRAGON_MOVING_UP 460 -#define IMG_DRAGON_MOVING_LEFT 461 -#define IMG_DRAGON_MOVING_RIGHT 462 -#define IMG_DRAGON_ATTACKING_DOWN 463 -#define IMG_DRAGON_ATTACKING_UP 464 -#define IMG_DRAGON_ATTACKING_LEFT 465 -#define IMG_DRAGON_ATTACKING_RIGHT 466 -#define IMG_MOLE 467 -#define IMG_MOLE_DOWN 468 -#define IMG_MOLE_UP 469 -#define IMG_MOLE_LEFT 470 -#define IMG_MOLE_RIGHT 471 -#define IMG_MOLE_MOVING_DOWN 472 -#define IMG_MOLE_MOVING_UP 473 -#define IMG_MOLE_MOVING_LEFT 474 -#define IMG_MOLE_MOVING_RIGHT 475 -#define IMG_MOLE_DIGGING_DOWN 476 -#define IMG_MOLE_DIGGING_UP 477 -#define IMG_MOLE_DIGGING_LEFT 478 -#define IMG_MOLE_DIGGING_RIGHT 479 -#define IMG_PENGUIN 480 -#define IMG_PENGUIN_EDITOR 481 -#define IMG_PENGUIN_DOWN 482 -#define IMG_PENGUIN_UP 483 -#define IMG_PENGUIN_LEFT 484 -#define IMG_PENGUIN_RIGHT 485 -#define IMG_PENGUIN_MOVING_DOWN 486 -#define IMG_PENGUIN_MOVING_UP 487 -#define IMG_PENGUIN_MOVING_LEFT 488 -#define IMG_PENGUIN_MOVING_RIGHT 489 -#define IMG_SATELLITE 490 -#define IMG_FLAMES_1_LEFT 491 -#define IMG_FLAMES_2_LEFT 492 -#define IMG_FLAMES_3_LEFT 493 -#define IMG_FLAMES_1_RIGHT 494 -#define IMG_FLAMES_2_RIGHT 495 -#define IMG_FLAMES_3_RIGHT 496 -#define IMG_FLAMES_1_UP 497 -#define IMG_FLAMES_2_UP 498 -#define IMG_FLAMES_3_UP 499 -#define IMG_FLAMES_1_DOWN 500 -#define IMG_FLAMES_2_DOWN 501 -#define IMG_FLAMES_3_DOWN 502 -#define IMG_STONEBLOCK 503 -#define IMG_PLAYER_1 504 -#define IMG_PLAYER_1_EDITOR 505 -#define IMG_PLAYER_1_DOWN 506 -#define IMG_PLAYER_1_UP 507 -#define IMG_PLAYER_1_LEFT 508 -#define IMG_PLAYER_1_RIGHT 509 -#define IMG_PLAYER_1_MOVING_DOWN 510 -#define IMG_PLAYER_1_MOVING_UP 511 -#define IMG_PLAYER_1_MOVING_LEFT 512 -#define IMG_PLAYER_1_MOVING_RIGHT 513 -#define IMG_PLAYER_1_DIGGING_DOWN 514 -#define IMG_PLAYER_1_DIGGING_UP 515 -#define IMG_PLAYER_1_DIGGING_LEFT 516 -#define IMG_PLAYER_1_DIGGING_RIGHT 517 -#define IMG_PLAYER_1_COLLECTING_DOWN 518 -#define IMG_PLAYER_1_COLLECTING_UP 519 -#define IMG_PLAYER_1_COLLECTING_LEFT 520 -#define IMG_PLAYER_1_COLLECTING_RIGHT 521 -#define IMG_PLAYER_1_PUSHING_DOWN 522 -#define IMG_PLAYER_1_PUSHING_UP 523 -#define IMG_PLAYER_1_PUSHING_LEFT 524 -#define IMG_PLAYER_1_PUSHING_RIGHT 525 -#define IMG_PLAYER_1_SNAPPING_DOWN 526 -#define IMG_PLAYER_1_SNAPPING_UP 527 -#define IMG_PLAYER_1_SNAPPING_LEFT 528 -#define IMG_PLAYER_1_SNAPPING_RIGHT 529 -#define IMG_PLAYER_2 530 -#define IMG_PLAYER_2_EDITOR 531 -#define IMG_PLAYER_2_DOWN 532 -#define IMG_PLAYER_2_UP 533 -#define IMG_PLAYER_2_LEFT 534 -#define IMG_PLAYER_2_RIGHT 535 -#define IMG_PLAYER_2_MOVING_DOWN 536 -#define IMG_PLAYER_2_MOVING_UP 537 -#define IMG_PLAYER_2_MOVING_LEFT 538 -#define IMG_PLAYER_2_MOVING_RIGHT 539 -#define IMG_PLAYER_2_DIGGING_DOWN 540 -#define IMG_PLAYER_2_DIGGING_UP 541 -#define IMG_PLAYER_2_DIGGING_LEFT 542 -#define IMG_PLAYER_2_DIGGING_RIGHT 543 -#define IMG_PLAYER_2_COLLECTING_DOWN 544 -#define IMG_PLAYER_2_COLLECTING_UP 545 -#define IMG_PLAYER_2_COLLECTING_LEFT 546 -#define IMG_PLAYER_2_COLLECTING_RIGHT 547 -#define IMG_PLAYER_2_PUSHING_DOWN 548 -#define IMG_PLAYER_2_PUSHING_UP 549 -#define IMG_PLAYER_2_PUSHING_LEFT 550 -#define IMG_PLAYER_2_PUSHING_RIGHT 551 -#define IMG_PLAYER_2_SNAPPING_DOWN 552 -#define IMG_PLAYER_2_SNAPPING_UP 553 -#define IMG_PLAYER_2_SNAPPING_LEFT 554 -#define IMG_PLAYER_2_SNAPPING_RIGHT 555 -#define IMG_PLAYER_3 556 -#define IMG_PLAYER_3_EDITOR 557 -#define IMG_PLAYER_3_DOWN 558 -#define IMG_PLAYER_3_UP 559 -#define IMG_PLAYER_3_LEFT 560 -#define IMG_PLAYER_3_RIGHT 561 -#define IMG_PLAYER_3_MOVING_DOWN 562 -#define IMG_PLAYER_3_MOVING_UP 563 -#define IMG_PLAYER_3_MOVING_LEFT 564 -#define IMG_PLAYER_3_MOVING_RIGHT 565 -#define IMG_PLAYER_3_DIGGING_DOWN 566 -#define IMG_PLAYER_3_DIGGING_UP 567 -#define IMG_PLAYER_3_DIGGING_LEFT 568 -#define IMG_PLAYER_3_DIGGING_RIGHT 569 -#define IMG_PLAYER_3_COLLECTING_DOWN 570 -#define IMG_PLAYER_3_COLLECTING_UP 571 -#define IMG_PLAYER_3_COLLECTING_LEFT 572 -#define IMG_PLAYER_3_COLLECTING_RIGHT 573 -#define IMG_PLAYER_3_PUSHING_DOWN 574 -#define IMG_PLAYER_3_PUSHING_UP 575 -#define IMG_PLAYER_3_PUSHING_LEFT 576 -#define IMG_PLAYER_3_PUSHING_RIGHT 577 -#define IMG_PLAYER_3_SNAPPING_DOWN 578 -#define IMG_PLAYER_3_SNAPPING_UP 579 -#define IMG_PLAYER_3_SNAPPING_LEFT 580 -#define IMG_PLAYER_3_SNAPPING_RIGHT 581 -#define IMG_PLAYER_4 582 -#define IMG_PLAYER_4_EDITOR 583 -#define IMG_PLAYER_4_DOWN 584 -#define IMG_PLAYER_4_UP 585 -#define IMG_PLAYER_4_LEFT 586 -#define IMG_PLAYER_4_RIGHT 587 -#define IMG_PLAYER_4_MOVING_DOWN 588 -#define IMG_PLAYER_4_MOVING_UP 589 -#define IMG_PLAYER_4_MOVING_LEFT 590 -#define IMG_PLAYER_4_MOVING_RIGHT 591 -#define IMG_PLAYER_4_DIGGING_DOWN 592 -#define IMG_PLAYER_4_DIGGING_UP 593 -#define IMG_PLAYER_4_DIGGING_LEFT 594 -#define IMG_PLAYER_4_DIGGING_RIGHT 595 -#define IMG_PLAYER_4_COLLECTING_DOWN 596 -#define IMG_PLAYER_4_COLLECTING_UP 597 -#define IMG_PLAYER_4_COLLECTING_LEFT 598 -#define IMG_PLAYER_4_COLLECTING_RIGHT 599 -#define IMG_PLAYER_4_PUSHING_DOWN 600 -#define IMG_PLAYER_4_PUSHING_UP 601 -#define IMG_PLAYER_4_PUSHING_LEFT 602 -#define IMG_PLAYER_4_PUSHING_RIGHT 603 -#define IMG_PLAYER_4_SNAPPING_DOWN 604 -#define IMG_PLAYER_4_SNAPPING_UP 605 -#define IMG_PLAYER_4_SNAPPING_LEFT 606 -#define IMG_PLAYER_4_SNAPPING_RIGHT 607 -#define IMG_DEFAULT_EXPLODING 608 -#define IMG_TWINKLE_BLUE 609 -#define IMG_TWINKLE_WHITE 610 -#define IMG_STEELWALL_TOPLEFT 611 -#define IMG_STEELWALL_TOPRIGHT 612 -#define IMG_STEELWALL_BOTTOMLEFT 613 -#define IMG_STEELWALL_BOTTOMRIGHT 614 -#define IMG_STEELWALL_HORIZONTAL 615 -#define IMG_STEELWALL_VERTICAL 616 -#define IMG_STEELWALL_TOPLEFT_EDITOR 617 -#define IMG_STEELWALL_TOPRIGHT_EDITOR 618 -#define IMG_STEELWALL_BOTTOMLEFT_EDITOR 619 -#define IMG_STEELWALL_BOTTOMRIGHT_EDITOR 620 -#define IMG_STEELWALL_HORIZONTAL_EDITOR 621 -#define IMG_STEELWALL_VERTICAL_EDITOR 622 -#define IMG_INVISIBLE_STEELWALL_TOPLEFT 623 -#define IMG_INVISIBLE_STEELWALL_TOPRIGHT 624 -#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT 625 -#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT 626 -#define IMG_INVISIBLE_STEELWALL_HORIZONTAL 627 -#define IMG_INVISIBLE_STEELWALL_VERTICAL 628 -#define IMG_INVISIBLE_STEELWALL_TOPLEFT_EDITOR 629 -#define IMG_INVISIBLE_STEELWALL_TOPRIGHT_EDITOR 630 -#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT_EDITOR 631 -#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT_EDITOR 632 -#define IMG_INVISIBLE_STEELWALL_HORIZONTAL_EDITOR 633 -#define IMG_INVISIBLE_STEELWALL_VERTICAL_EDITOR 634 -#define IMG_ARROW_LEFT 635 -#define IMG_ARROW_RIGHT 636 -#define IMG_ARROW_UP 637 -#define IMG_ARROW_DOWN 638 -#define IMG_CHAR_SPACE 639 -#define IMG_CHAR_EXCLAM 640 -#define IMG_CHAR_QUOTEDBL 641 -#define IMG_CHAR_NUMBERSIGN 642 -#define IMG_CHAR_DOLLAR 643 -#define IMG_CHAR_PROCENT 644 -#define IMG_CHAR_AMPERSAND 645 -#define IMG_CHAR_APOSTROPHE 646 -#define IMG_CHAR_PARENLEFT 647 -#define IMG_CHAR_PARENRIGHT 648 -#define IMG_CHAR_ASTERISK 649 -#define IMG_CHAR_PLUS 650 -#define IMG_CHAR_COMMA 651 -#define IMG_CHAR_MINUS 652 -#define IMG_CHAR_PERIOD 653 -#define IMG_CHAR_SLASH 654 -#define IMG_CHAR_0 655 -#define IMG_CHAR_1 656 -#define IMG_CHAR_2 657 -#define IMG_CHAR_3 658 -#define IMG_CHAR_4 659 -#define IMG_CHAR_5 660 -#define IMG_CHAR_6 661 -#define IMG_CHAR_7 662 -#define IMG_CHAR_8 663 -#define IMG_CHAR_9 664 -#define IMG_CHAR_COLON 665 -#define IMG_CHAR_SEMICOLON 666 -#define IMG_CHAR_LESS 667 -#define IMG_CHAR_EQUAL 668 -#define IMG_CHAR_GREATER 669 -#define IMG_CHAR_QUESTION 670 -#define IMG_CHAR_AT 671 -#define IMG_CHAR_A 672 -#define IMG_CHAR_B 673 -#define IMG_CHAR_C 674 -#define IMG_CHAR_D 675 -#define IMG_CHAR_E 676 -#define IMG_CHAR_F 677 -#define IMG_CHAR_G 678 -#define IMG_CHAR_H 679 -#define IMG_CHAR_I 680 -#define IMG_CHAR_J 681 -#define IMG_CHAR_K 682 -#define IMG_CHAR_L 683 -#define IMG_CHAR_M 684 -#define IMG_CHAR_N 685 -#define IMG_CHAR_O 686 -#define IMG_CHAR_P 687 -#define IMG_CHAR_Q 688 -#define IMG_CHAR_R 689 -#define IMG_CHAR_S 690 -#define IMG_CHAR_T 691 -#define IMG_CHAR_U 692 -#define IMG_CHAR_V 693 -#define IMG_CHAR_W 694 -#define IMG_CHAR_X 695 -#define IMG_CHAR_Y 696 -#define IMG_CHAR_Z 697 -#define IMG_CHAR_BRACKETLEFT 698 -#define IMG_CHAR_BACKSLASH 699 -#define IMG_CHAR_BRACKETRIGHT 700 -#define IMG_CHAR_ASCIICIRCUM 701 -#define IMG_CHAR_UNDERSCORE 702 -#define IMG_CHAR_COPYRIGHT 703 -#define IMG_CHAR_AUMLAUT 704 -#define IMG_CHAR_OUMLAUT 705 -#define IMG_CHAR_UUMLAUT 706 -#define IMG_CHAR_DEGREE 707 -#define IMG_CHAR_TRADEMARK 708 -#define IMG_CHAR_CURSOR 709 -#define IMG_CUSTOM_1 710 -#define IMG_CUSTOM_1_EDITOR 711 -#define IMG_CUSTOM_2 712 -#define IMG_CUSTOM_2_EDITOR 713 -#define IMG_CUSTOM_3 714 -#define IMG_CUSTOM_3_EDITOR 715 -#define IMG_CUSTOM_4 716 -#define IMG_CUSTOM_4_EDITOR 717 -#define IMG_CUSTOM_5 718 -#define IMG_CUSTOM_5_EDITOR 719 -#define IMG_CUSTOM_6 720 -#define IMG_CUSTOM_6_EDITOR 721 -#define IMG_CUSTOM_7 722 -#define IMG_CUSTOM_7_EDITOR 723 -#define IMG_CUSTOM_8 724 -#define IMG_CUSTOM_8_EDITOR 725 -#define IMG_CUSTOM_9 726 -#define IMG_CUSTOM_9_EDITOR 727 -#define IMG_CUSTOM_10 728 -#define IMG_CUSTOM_10_EDITOR 729 -#define IMG_CUSTOM_11 730 -#define IMG_CUSTOM_11_EDITOR 731 -#define IMG_CUSTOM_12 732 -#define IMG_CUSTOM_12_EDITOR 733 -#define IMG_CUSTOM_13 734 -#define IMG_CUSTOM_13_EDITOR 735 -#define IMG_CUSTOM_14 736 -#define IMG_CUSTOM_14_EDITOR 737 -#define IMG_CUSTOM_15 738 -#define IMG_CUSTOM_15_EDITOR 739 -#define IMG_CUSTOM_16 740 -#define IMG_CUSTOM_16_EDITOR 741 -#define IMG_CUSTOM_17 742 -#define IMG_CUSTOM_17_EDITOR 743 -#define IMG_CUSTOM_18 744 -#define IMG_CUSTOM_18_EDITOR 745 -#define IMG_CUSTOM_19 746 -#define IMG_CUSTOM_19_EDITOR 747 -#define IMG_CUSTOM_20 748 -#define IMG_CUSTOM_20_EDITOR 749 -#define IMG_CUSTOM_21 750 -#define IMG_CUSTOM_21_EDITOR 751 -#define IMG_CUSTOM_22 752 -#define IMG_CUSTOM_22_EDITOR 753 -#define IMG_CUSTOM_23 754 -#define IMG_CUSTOM_23_EDITOR 755 -#define IMG_CUSTOM_24 756 -#define IMG_CUSTOM_24_EDITOR 757 -#define IMG_CUSTOM_25 758 -#define IMG_CUSTOM_25_EDITOR 759 -#define IMG_CUSTOM_26 760 -#define IMG_CUSTOM_26_EDITOR 761 -#define IMG_CUSTOM_27 762 -#define IMG_CUSTOM_27_EDITOR 763 -#define IMG_CUSTOM_28 764 -#define IMG_CUSTOM_28_EDITOR 765 -#define IMG_CUSTOM_29 766 -#define IMG_CUSTOM_29_EDITOR 767 -#define IMG_CUSTOM_30 768 -#define IMG_CUSTOM_30_EDITOR 769 -#define IMG_CUSTOM_31 770 -#define IMG_CUSTOM_31_EDITOR 771 -#define IMG_CUSTOM_32 772 -#define IMG_CUSTOM_32_EDITOR 773 -#define IMG_CUSTOM_33 774 -#define IMG_CUSTOM_33_EDITOR 775 -#define IMG_CUSTOM_34 776 -#define IMG_CUSTOM_34_EDITOR 777 -#define IMG_CUSTOM_35 778 -#define IMG_CUSTOM_35_EDITOR 779 -#define IMG_CUSTOM_36 780 -#define IMG_CUSTOM_36_EDITOR 781 -#define IMG_CUSTOM_37 782 -#define IMG_CUSTOM_37_EDITOR 783 -#define IMG_CUSTOM_38 784 -#define IMG_CUSTOM_38_EDITOR 785 -#define IMG_CUSTOM_39 786 -#define IMG_CUSTOM_39_EDITOR 787 -#define IMG_CUSTOM_40 788 -#define IMG_CUSTOM_40_EDITOR 789 -#define IMG_CUSTOM_41 790 -#define IMG_CUSTOM_41_EDITOR 791 -#define IMG_CUSTOM_42 792 -#define IMG_CUSTOM_42_EDITOR 793 -#define IMG_CUSTOM_43 794 -#define IMG_CUSTOM_43_EDITOR 795 -#define IMG_CUSTOM_44 796 -#define IMG_CUSTOM_44_EDITOR 797 -#define IMG_CUSTOM_45 798 -#define IMG_CUSTOM_45_EDITOR 799 -#define IMG_CUSTOM_46 800 -#define IMG_CUSTOM_46_EDITOR 801 -#define IMG_CUSTOM_47 802 -#define IMG_CUSTOM_47_EDITOR 803 -#define IMG_CUSTOM_48 804 -#define IMG_CUSTOM_48_EDITOR 805 -#define IMG_CUSTOM_49 806 -#define IMG_CUSTOM_49_EDITOR 807 -#define IMG_CUSTOM_50 808 -#define IMG_CUSTOM_50_EDITOR 809 -#define IMG_CUSTOM_51 810 -#define IMG_CUSTOM_51_EDITOR 811 -#define IMG_CUSTOM_52 812 -#define IMG_CUSTOM_52_EDITOR 813 -#define IMG_CUSTOM_53 814 -#define IMG_CUSTOM_53_EDITOR 815 -#define IMG_CUSTOM_54 816 -#define IMG_CUSTOM_54_EDITOR 817 -#define IMG_CUSTOM_55 818 -#define IMG_CUSTOM_55_EDITOR 819 -#define IMG_CUSTOM_56 820 -#define IMG_CUSTOM_56_EDITOR 821 -#define IMG_CUSTOM_57 822 -#define IMG_CUSTOM_57_EDITOR 823 -#define IMG_CUSTOM_58 824 -#define IMG_CUSTOM_58_EDITOR 825 -#define IMG_CUSTOM_59 826 -#define IMG_CUSTOM_59_EDITOR 827 -#define IMG_CUSTOM_60 828 -#define IMG_CUSTOM_60_EDITOR 829 -#define IMG_CUSTOM_61 830 -#define IMG_CUSTOM_61_EDITOR 831 -#define IMG_CUSTOM_62 832 -#define IMG_CUSTOM_62_EDITOR 833 -#define IMG_CUSTOM_63 834 -#define IMG_CUSTOM_63_EDITOR 835 -#define IMG_CUSTOM_64 836 -#define IMG_CUSTOM_64_EDITOR 837 -#define IMG_CUSTOM_65 838 -#define IMG_CUSTOM_65_EDITOR 839 -#define IMG_CUSTOM_66 840 -#define IMG_CUSTOM_66_EDITOR 841 -#define IMG_CUSTOM_67 842 -#define IMG_CUSTOM_67_EDITOR 843 -#define IMG_CUSTOM_68 844 -#define IMG_CUSTOM_68_EDITOR 845 -#define IMG_CUSTOM_69 846 -#define IMG_CUSTOM_69_EDITOR 847 -#define IMG_CUSTOM_70 848 -#define IMG_CUSTOM_70_EDITOR 849 -#define IMG_CUSTOM_71 850 -#define IMG_CUSTOM_71_EDITOR 851 -#define IMG_CUSTOM_72 852 -#define IMG_CUSTOM_72_EDITOR 853 -#define IMG_CUSTOM_73 854 -#define IMG_CUSTOM_73_EDITOR 855 -#define IMG_CUSTOM_74 856 -#define IMG_CUSTOM_74_EDITOR 857 -#define IMG_CUSTOM_75 858 -#define IMG_CUSTOM_75_EDITOR 859 -#define IMG_CUSTOM_76 860 -#define IMG_CUSTOM_76_EDITOR 861 -#define IMG_CUSTOM_77 862 -#define IMG_CUSTOM_77_EDITOR 863 -#define IMG_CUSTOM_78 864 -#define IMG_CUSTOM_78_EDITOR 865 -#define IMG_CUSTOM_79 866 -#define IMG_CUSTOM_79_EDITOR 867 -#define IMG_CUSTOM_80 868 -#define IMG_CUSTOM_80_EDITOR 869 -#define IMG_CUSTOM_81 870 -#define IMG_CUSTOM_81_EDITOR 871 -#define IMG_CUSTOM_82 872 -#define IMG_CUSTOM_82_EDITOR 873 -#define IMG_CUSTOM_83 874 -#define IMG_CUSTOM_83_EDITOR 875 -#define IMG_CUSTOM_84 876 -#define IMG_CUSTOM_84_EDITOR 877 -#define IMG_CUSTOM_85 878 -#define IMG_CUSTOM_85_EDITOR 879 -#define IMG_CUSTOM_86 880 -#define IMG_CUSTOM_86_EDITOR 881 -#define IMG_CUSTOM_87 882 -#define IMG_CUSTOM_87_EDITOR 883 -#define IMG_CUSTOM_88 884 -#define IMG_CUSTOM_88_EDITOR 885 -#define IMG_CUSTOM_89 886 -#define IMG_CUSTOM_89_EDITOR 887 -#define IMG_CUSTOM_90 888 -#define IMG_CUSTOM_90_EDITOR 889 -#define IMG_CUSTOM_91 890 -#define IMG_CUSTOM_91_EDITOR 891 -#define IMG_CUSTOM_92 892 -#define IMG_CUSTOM_92_EDITOR 893 -#define IMG_CUSTOM_93 894 -#define IMG_CUSTOM_93_EDITOR 895 -#define IMG_CUSTOM_94 896 -#define IMG_CUSTOM_94_EDITOR 897 -#define IMG_CUSTOM_95 898 -#define IMG_CUSTOM_95_EDITOR 899 -#define IMG_CUSTOM_96 900 -#define IMG_CUSTOM_96_EDITOR 901 -#define IMG_CUSTOM_97 902 -#define IMG_CUSTOM_97_EDITOR 903 -#define IMG_CUSTOM_98 904 -#define IMG_CUSTOM_98_EDITOR 905 -#define IMG_CUSTOM_99 906 -#define IMG_CUSTOM_99_EDITOR 907 -#define IMG_CUSTOM_100 908 -#define IMG_CUSTOM_100_EDITOR 909 -#define IMG_CUSTOM_101 910 -#define IMG_CUSTOM_101_EDITOR 911 -#define IMG_CUSTOM_102 912 -#define IMG_CUSTOM_102_EDITOR 913 -#define IMG_CUSTOM_103 914 -#define IMG_CUSTOM_103_EDITOR 915 -#define IMG_CUSTOM_104 916 -#define IMG_CUSTOM_104_EDITOR 917 -#define IMG_CUSTOM_105 918 -#define IMG_CUSTOM_105_EDITOR 919 -#define IMG_CUSTOM_106 920 -#define IMG_CUSTOM_106_EDITOR 921 -#define IMG_CUSTOM_107 922 -#define IMG_CUSTOM_107_EDITOR 923 -#define IMG_CUSTOM_108 924 -#define IMG_CUSTOM_108_EDITOR 925 -#define IMG_CUSTOM_109 926 -#define IMG_CUSTOM_109_EDITOR 927 -#define IMG_CUSTOM_110 928 -#define IMG_CUSTOM_110_EDITOR 929 -#define IMG_CUSTOM_111 930 -#define IMG_CUSTOM_111_EDITOR 931 -#define IMG_CUSTOM_112 932 -#define IMG_CUSTOM_112_EDITOR 933 -#define IMG_CUSTOM_113 934 -#define IMG_CUSTOM_113_EDITOR 935 -#define IMG_CUSTOM_114 936 -#define IMG_CUSTOM_114_EDITOR 937 -#define IMG_CUSTOM_115 938 -#define IMG_CUSTOM_115_EDITOR 939 -#define IMG_CUSTOM_116 940 -#define IMG_CUSTOM_116_EDITOR 941 -#define IMG_CUSTOM_117 942 -#define IMG_CUSTOM_117_EDITOR 943 -#define IMG_CUSTOM_118 944 -#define IMG_CUSTOM_118_EDITOR 945 -#define IMG_CUSTOM_119 946 -#define IMG_CUSTOM_119_EDITOR 947 -#define IMG_CUSTOM_120 948 -#define IMG_CUSTOM_120_EDITOR 949 -#define IMG_CUSTOM_121 950 -#define IMG_CUSTOM_121_EDITOR 951 -#define IMG_CUSTOM_122 952 -#define IMG_CUSTOM_122_EDITOR 953 -#define IMG_CUSTOM_123 954 -#define IMG_CUSTOM_123_EDITOR 955 -#define IMG_CUSTOM_124 956 -#define IMG_CUSTOM_124_EDITOR 957 -#define IMG_CUSTOM_125 958 -#define IMG_CUSTOM_125_EDITOR 959 -#define IMG_CUSTOM_126 960 -#define IMG_CUSTOM_126_EDITOR 961 -#define IMG_CUSTOM_127 962 -#define IMG_CUSTOM_127_EDITOR 963 -#define IMG_CUSTOM_128 964 -#define IMG_CUSTOM_128_EDITOR 965 -#define IMG_CUSTOM_129 966 -#define IMG_CUSTOM_129_EDITOR 967 -#define IMG_CUSTOM_130 968 -#define IMG_CUSTOM_130_EDITOR 969 -#define IMG_CUSTOM_131 970 -#define IMG_CUSTOM_131_EDITOR 971 -#define IMG_CUSTOM_132 972 -#define IMG_CUSTOM_132_EDITOR 973 -#define IMG_CUSTOM_133 974 -#define IMG_CUSTOM_133_EDITOR 975 -#define IMG_CUSTOM_134 976 -#define IMG_CUSTOM_134_EDITOR 977 -#define IMG_CUSTOM_135 978 -#define IMG_CUSTOM_135_EDITOR 979 -#define IMG_CUSTOM_136 980 -#define IMG_CUSTOM_136_EDITOR 981 -#define IMG_CUSTOM_137 982 -#define IMG_CUSTOM_137_EDITOR 983 -#define IMG_CUSTOM_138 984 -#define IMG_CUSTOM_138_EDITOR 985 -#define IMG_CUSTOM_139 986 -#define IMG_CUSTOM_139_EDITOR 987 -#define IMG_CUSTOM_140 988 -#define IMG_CUSTOM_140_EDITOR 989 -#define IMG_CUSTOM_141 990 -#define IMG_CUSTOM_141_EDITOR 991 -#define IMG_CUSTOM_142 992 -#define IMG_CUSTOM_142_EDITOR 993 -#define IMG_CUSTOM_143 994 -#define IMG_CUSTOM_143_EDITOR 995 -#define IMG_CUSTOM_144 996 -#define IMG_CUSTOM_144_EDITOR 997 -#define IMG_CUSTOM_145 998 -#define IMG_CUSTOM_145_EDITOR 999 -#define IMG_CUSTOM_146 1000 -#define IMG_CUSTOM_146_EDITOR 1001 -#define IMG_CUSTOM_147 1002 -#define IMG_CUSTOM_147_EDITOR 1003 -#define IMG_CUSTOM_148 1004 -#define IMG_CUSTOM_148_EDITOR 1005 -#define IMG_CUSTOM_149 1006 -#define IMG_CUSTOM_149_EDITOR 1007 -#define IMG_CUSTOM_150 1008 -#define IMG_CUSTOM_150_EDITOR 1009 -#define IMG_CUSTOM_151 1010 -#define IMG_CUSTOM_151_EDITOR 1011 -#define IMG_CUSTOM_152 1012 -#define IMG_CUSTOM_152_EDITOR 1013 -#define IMG_CUSTOM_153 1014 -#define IMG_CUSTOM_153_EDITOR 1015 -#define IMG_CUSTOM_154 1016 -#define IMG_CUSTOM_154_EDITOR 1017 -#define IMG_CUSTOM_155 1018 -#define IMG_CUSTOM_155_EDITOR 1019 -#define IMG_CUSTOM_156 1020 -#define IMG_CUSTOM_156_EDITOR 1021 -#define IMG_CUSTOM_157 1022 -#define IMG_CUSTOM_157_EDITOR 1023 -#define IMG_CUSTOM_158 1024 -#define IMG_CUSTOM_158_EDITOR 1025 -#define IMG_CUSTOM_159 1026 -#define IMG_CUSTOM_159_EDITOR 1027 -#define IMG_CUSTOM_160 1028 -#define IMG_CUSTOM_160_EDITOR 1029 -#define IMG_CUSTOM_161 1030 -#define IMG_CUSTOM_161_EDITOR 1031 -#define IMG_CUSTOM_162 1032 -#define IMG_CUSTOM_162_EDITOR 1033 -#define IMG_CUSTOM_163 1034 -#define IMG_CUSTOM_163_EDITOR 1035 -#define IMG_CUSTOM_164 1036 -#define IMG_CUSTOM_164_EDITOR 1037 -#define IMG_CUSTOM_165 1038 -#define IMG_CUSTOM_165_EDITOR 1039 -#define IMG_CUSTOM_166 1040 -#define IMG_CUSTOM_166_EDITOR 1041 -#define IMG_CUSTOM_167 1042 -#define IMG_CUSTOM_167_EDITOR 1043 -#define IMG_CUSTOM_168 1044 -#define IMG_CUSTOM_168_EDITOR 1045 -#define IMG_CUSTOM_169 1046 -#define IMG_CUSTOM_169_EDITOR 1047 -#define IMG_CUSTOM_170 1048 -#define IMG_CUSTOM_170_EDITOR 1049 -#define IMG_CUSTOM_171 1050 -#define IMG_CUSTOM_171_EDITOR 1051 -#define IMG_CUSTOM_172 1052 -#define IMG_CUSTOM_172_EDITOR 1053 -#define IMG_CUSTOM_173 1054 -#define IMG_CUSTOM_173_EDITOR 1055 -#define IMG_CUSTOM_174 1056 -#define IMG_CUSTOM_174_EDITOR 1057 -#define IMG_CUSTOM_175 1058 -#define IMG_CUSTOM_175_EDITOR 1059 -#define IMG_CUSTOM_176 1060 -#define IMG_CUSTOM_176_EDITOR 1061 -#define IMG_CUSTOM_177 1062 -#define IMG_CUSTOM_177_EDITOR 1063 -#define IMG_CUSTOM_178 1064 -#define IMG_CUSTOM_178_EDITOR 1065 -#define IMG_CUSTOM_179 1066 -#define IMG_CUSTOM_179_EDITOR 1067 -#define IMG_CUSTOM_180 1068 -#define IMG_CUSTOM_180_EDITOR 1069 -#define IMG_CUSTOM_181 1070 -#define IMG_CUSTOM_181_EDITOR 1071 -#define IMG_CUSTOM_182 1072 -#define IMG_CUSTOM_182_EDITOR 1073 -#define IMG_CUSTOM_183 1074 -#define IMG_CUSTOM_183_EDITOR 1075 -#define IMG_CUSTOM_184 1076 -#define IMG_CUSTOM_184_EDITOR 1077 -#define IMG_CUSTOM_185 1078 -#define IMG_CUSTOM_185_EDITOR 1079 -#define IMG_CUSTOM_186 1080 -#define IMG_CUSTOM_186_EDITOR 1081 -#define IMG_CUSTOM_187 1082 -#define IMG_CUSTOM_187_EDITOR 1083 -#define IMG_CUSTOM_188 1084 -#define IMG_CUSTOM_188_EDITOR 1085 -#define IMG_CUSTOM_189 1086 -#define IMG_CUSTOM_189_EDITOR 1087 -#define IMG_CUSTOM_190 1088 -#define IMG_CUSTOM_190_EDITOR 1089 -#define IMG_CUSTOM_191 1090 -#define IMG_CUSTOM_191_EDITOR 1091 -#define IMG_CUSTOM_192 1092 -#define IMG_CUSTOM_192_EDITOR 1093 -#define IMG_CUSTOM_193 1094 -#define IMG_CUSTOM_193_EDITOR 1095 -#define IMG_CUSTOM_194 1096 -#define IMG_CUSTOM_194_EDITOR 1097 -#define IMG_CUSTOM_195 1098 -#define IMG_CUSTOM_195_EDITOR 1099 -#define IMG_CUSTOM_196 1100 -#define IMG_CUSTOM_196_EDITOR 1101 -#define IMG_CUSTOM_197 1102 -#define IMG_CUSTOM_197_EDITOR 1103 -#define IMG_CUSTOM_198 1104 -#define IMG_CUSTOM_198_EDITOR 1105 -#define IMG_CUSTOM_199 1106 -#define IMG_CUSTOM_199_EDITOR 1107 -#define IMG_CUSTOM_200 1108 -#define IMG_CUSTOM_200_EDITOR 1109 -#define IMG_CUSTOM_201 1110 -#define IMG_CUSTOM_201_EDITOR 1111 -#define IMG_CUSTOM_202 1112 -#define IMG_CUSTOM_202_EDITOR 1113 -#define IMG_CUSTOM_203 1114 -#define IMG_CUSTOM_203_EDITOR 1115 -#define IMG_CUSTOM_204 1116 -#define IMG_CUSTOM_204_EDITOR 1117 -#define IMG_CUSTOM_205 1118 -#define IMG_CUSTOM_205_EDITOR 1119 -#define IMG_CUSTOM_206 1120 -#define IMG_CUSTOM_206_EDITOR 1121 -#define IMG_CUSTOM_207 1122 -#define IMG_CUSTOM_207_EDITOR 1123 -#define IMG_CUSTOM_208 1124 -#define IMG_CUSTOM_208_EDITOR 1125 -#define IMG_CUSTOM_209 1126 -#define IMG_CUSTOM_209_EDITOR 1127 -#define IMG_CUSTOM_210 1128 -#define IMG_CUSTOM_210_EDITOR 1129 -#define IMG_CUSTOM_211 1130 -#define IMG_CUSTOM_211_EDITOR 1131 -#define IMG_CUSTOM_212 1132 -#define IMG_CUSTOM_212_EDITOR 1133 -#define IMG_CUSTOM_213 1134 -#define IMG_CUSTOM_213_EDITOR 1135 -#define IMG_CUSTOM_214 1136 -#define IMG_CUSTOM_214_EDITOR 1137 -#define IMG_CUSTOM_215 1138 -#define IMG_CUSTOM_215_EDITOR 1139 -#define IMG_CUSTOM_216 1140 -#define IMG_CUSTOM_216_EDITOR 1141 -#define IMG_CUSTOM_217 1142 -#define IMG_CUSTOM_217_EDITOR 1143 -#define IMG_CUSTOM_218 1144 -#define IMG_CUSTOM_218_EDITOR 1145 -#define IMG_CUSTOM_219 1146 -#define IMG_CUSTOM_219_EDITOR 1147 -#define IMG_CUSTOM_220 1148 -#define IMG_CUSTOM_220_EDITOR 1149 -#define IMG_CUSTOM_221 1150 -#define IMG_CUSTOM_221_EDITOR 1151 -#define IMG_CUSTOM_222 1152 -#define IMG_CUSTOM_222_EDITOR 1153 -#define IMG_CUSTOM_223 1154 -#define IMG_CUSTOM_223_EDITOR 1155 -#define IMG_CUSTOM_224 1156 -#define IMG_CUSTOM_224_EDITOR 1157 -#define IMG_CUSTOM_225 1158 -#define IMG_CUSTOM_225_EDITOR 1159 -#define IMG_CUSTOM_226 1160 -#define IMG_CUSTOM_226_EDITOR 1161 -#define IMG_CUSTOM_227 1162 -#define IMG_CUSTOM_227_EDITOR 1163 -#define IMG_CUSTOM_228 1164 -#define IMG_CUSTOM_228_EDITOR 1165 -#define IMG_CUSTOM_229 1166 -#define IMG_CUSTOM_229_EDITOR 1167 -#define IMG_CUSTOM_230 1168 -#define IMG_CUSTOM_230_EDITOR 1169 -#define IMG_CUSTOM_231 1170 -#define IMG_CUSTOM_231_EDITOR 1171 -#define IMG_CUSTOM_232 1172 -#define IMG_CUSTOM_232_EDITOR 1173 -#define IMG_CUSTOM_233 1174 -#define IMG_CUSTOM_233_EDITOR 1175 -#define IMG_CUSTOM_234 1176 -#define IMG_CUSTOM_234_EDITOR 1177 -#define IMG_CUSTOM_235 1178 -#define IMG_CUSTOM_235_EDITOR 1179 -#define IMG_CUSTOM_236 1180 -#define IMG_CUSTOM_236_EDITOR 1181 -#define IMG_CUSTOM_237 1182 -#define IMG_CUSTOM_237_EDITOR 1183 -#define IMG_CUSTOM_238 1184 -#define IMG_CUSTOM_238_EDITOR 1185 -#define IMG_CUSTOM_239 1186 -#define IMG_CUSTOM_239_EDITOR 1187 -#define IMG_CUSTOM_240 1188 -#define IMG_CUSTOM_240_EDITOR 1189 -#define IMG_CUSTOM_241 1190 -#define IMG_CUSTOM_241_EDITOR 1191 -#define IMG_CUSTOM_242 1192 -#define IMG_CUSTOM_242_EDITOR 1193 -#define IMG_CUSTOM_243 1194 -#define IMG_CUSTOM_243_EDITOR 1195 -#define IMG_CUSTOM_244 1196 -#define IMG_CUSTOM_244_EDITOR 1197 -#define IMG_CUSTOM_245 1198 -#define IMG_CUSTOM_245_EDITOR 1199 -#define IMG_CUSTOM_246 1200 -#define IMG_CUSTOM_246_EDITOR 1201 -#define IMG_CUSTOM_247 1202 -#define IMG_CUSTOM_247_EDITOR 1203 -#define IMG_CUSTOM_248 1204 -#define IMG_CUSTOM_248_EDITOR 1205 -#define IMG_CUSTOM_249 1206 -#define IMG_CUSTOM_249_EDITOR 1207 -#define IMG_CUSTOM_250 1208 -#define IMG_CUSTOM_250_EDITOR 1209 -#define IMG_CUSTOM_251 1210 -#define IMG_CUSTOM_251_EDITOR 1211 -#define IMG_CUSTOM_252 1212 -#define IMG_CUSTOM_252_EDITOR 1213 -#define IMG_CUSTOM_253 1214 -#define IMG_CUSTOM_253_EDITOR 1215 -#define IMG_CUSTOM_254 1216 -#define IMG_CUSTOM_254_EDITOR 1217 -#define IMG_CUSTOM_255 1218 -#define IMG_CUSTOM_255_EDITOR 1219 -#define IMG_CUSTOM_256 1220 -#define IMG_CUSTOM_256_EDITOR 1221 -#define IMG_TOON_1 1222 -#define IMG_TOON_2 1223 -#define IMG_TOON_3 1224 -#define IMG_TOON_4 1225 -#define IMG_TOON_5 1226 -#define IMG_TOON_6 1227 -#define IMG_TOON_7 1228 -#define IMG_TOON_8 1229 -#define IMG_TOON_9 1230 -#define IMG_TOON_10 1231 -#define IMG_TOON_11 1232 -#define IMG_TOON_12 1233 -#define IMG_TOON_13 1234 -#define IMG_TOON_14 1235 -#define IMG_TOON_15 1236 -#define IMG_TOON_16 1237 -#define IMG_TOON_17 1238 -#define IMG_TOON_18 1239 -#define IMG_TOON_19 1240 -#define IMG_TOON_20 1241 -#define IMG_MENU_CALIBRATE_RED 1242 -#define IMG_MENU_CALIBRATE_BLUE 1243 -#define IMG_MENU_CALIBRATE_YELLOW 1244 -#define IMG_MENU_BUTTON 1245 -#define IMG_MENU_BUTTON_ACTIVE 1246 -#define IMG_MENU_BUTTON_LEFT 1247 -#define IMG_MENU_BUTTON_RIGHT 1248 -#define IMG_MENU_BUTTON_UP 1249 -#define IMG_MENU_BUTTON_DOWN 1250 -#define IMG_MENU_BUTTON_LEFT_ACTIVE 1251 -#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1252 -#define IMG_MENU_BUTTON_UP_ACTIVE 1253 -#define IMG_MENU_BUTTON_DOWN_ACTIVE 1254 -#define IMG_MENU_SCROLLBAR 1255 -#define IMG_MENU_SCROLLBAR_ACTIVE 1256 -#define IMG_FONT_INITIAL_1 1257 -#define IMG_FONT_INITIAL_2 1258 -#define IMG_FONT_INITIAL_3 1259 -#define IMG_FONT_INITIAL_4 1260 -#define IMG_FONT_TITLE_1 1261 -#define IMG_FONT_TITLE_1_LEVELS 1262 -#define IMG_FONT_TITLE_2 1263 -#define IMG_FONT_MENU_1 1264 -#define IMG_FONT_MENU_2 1265 -#define IMG_FONT_TEXT_1 1266 -#define IMG_FONT_TEXT_1_LEVELS 1267 -#define IMG_FONT_TEXT_1_PREVIEW 1268 -#define IMG_FONT_TEXT_1_SCORES 1269 -#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1270 -#define IMG_FONT_TEXT_2 1271 -#define IMG_FONT_TEXT_2_LEVELS 1272 -#define IMG_FONT_TEXT_2_PREVIEW 1273 -#define IMG_FONT_TEXT_2_SCORES 1274 -#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1275 -#define IMG_FONT_TEXT_3 1276 -#define IMG_FONT_TEXT_3_LEVELS 1277 -#define IMG_FONT_TEXT_3_PREVIEW 1278 -#define IMG_FONT_TEXT_3_SCORES 1279 -#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1280 -#define IMG_FONT_TEXT_4 1281 -#define IMG_FONT_TEXT_4_LEVELS 1282 -#define IMG_FONT_TEXT_4_SCORES 1283 -#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1284 -#define IMG_FONT_ENVELOPE_1 1285 -#define IMG_FONT_ENVELOPE_2 1286 -#define IMG_FONT_ENVELOPE_3 1287 -#define IMG_FONT_ENVELOPE_4 1288 -#define IMG_FONT_INPUT_1 1289 -#define IMG_FONT_INPUT_1_MAIN 1290 -#define IMG_FONT_INPUT_1_ACTIVE 1291 -#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1292 -#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1293 -#define IMG_FONT_INPUT_2 1294 -#define IMG_FONT_INPUT_2_ACTIVE 1295 -#define IMG_FONT_OPTION_OFF 1296 -#define IMG_FONT_OPTION_ON 1297 -#define IMG_FONT_VALUE_1 1298 -#define IMG_FONT_VALUE_2 1299 -#define IMG_FONT_VALUE_OLD 1300 -#define IMG_FONT_LEVEL_NUMBER 1301 -#define IMG_FONT_TAPE_RECORDER 1302 -#define IMG_FONT_GAME_INFO 1303 -#define IMG_GLOBAL_BORDER 1304 -#define IMG_GLOBAL_DOOR 1305 -#define IMG_EDITOR_ELEMENT_BORDER 1306 -#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1307 -#define IMG_BACKGROUND_ENVELOPE_1 1308 -#define IMG_BACKGROUND_ENVELOPE_2 1309 -#define IMG_BACKGROUND_ENVELOPE_3 1310 -#define IMG_BACKGROUND_ENVELOPE_4 1311 -#define IMG_BACKGROUND 1312 -#define IMG_BACKGROUND_MAIN 1313 -#define IMG_BACKGROUND_LEVELS 1314 -#define IMG_BACKGROUND_SCORES 1315 -#define IMG_BACKGROUND_EDITOR 1316 -#define IMG_BACKGROUND_INFO 1317 -#define IMG_BACKGROUND_SETUP 1318 -#define IMG_BACKGROUND_DOOR 1319 +#define IMG_BD_BUTTERFLY_RIGHT_EDITOR 20 +#define IMG_BD_BUTTERFLY_UP_EDITOR 21 +#define IMG_BD_BUTTERFLY_LEFT_EDITOR 22 +#define IMG_BD_BUTTERFLY_DOWN_EDITOR 23 +#define IMG_BD_FIREFLY 24 +#define IMG_BD_FIREFLY_RIGHT_EDITOR 25 +#define IMG_BD_FIREFLY_UP_EDITOR 26 +#define IMG_BD_FIREFLY_LEFT_EDITOR 27 +#define IMG_BD_FIREFLY_DOWN_EDITOR 28 +#define IMG_SP_DEFAULT_EXPLODING 29 +#define IMG_SP_ZONK 30 +#define IMG_SP_ZONK_MOVING_LEFT 31 +#define IMG_SP_ZONK_MOVING_RIGHT 32 +#define IMG_SP_ZONK_PUSHING_LEFT 33 +#define IMG_SP_ZONK_PUSHING_RIGHT 34 +#define IMG_SP_BASE 35 +#define IMG_SP_MURPHY 36 +#define IMG_SP_MURPHY_MOVING_LEFT 37 +#define IMG_SP_MURPHY_MOVING_RIGHT 38 +#define IMG_SP_MURPHY_DIGGING_LEFT 39 +#define IMG_SP_MURPHY_DIGGING_RIGHT 40 +#define IMG_SP_MURPHY_COLLECTING_LEFT 41 +#define IMG_SP_MURPHY_COLLECTING_RIGHT 42 +#define IMG_SP_MURPHY_PUSHING_LEFT 43 +#define IMG_SP_MURPHY_PUSHING_RIGHT 44 +#define IMG_SP_MURPHY_SNAPPING_LEFT 45 +#define IMG_SP_MURPHY_SNAPPING_RIGHT 46 +#define IMG_SP_MURPHY_SNAPPING_UP 47 +#define IMG_SP_MURPHY_SNAPPING_DOWN 48 +#define IMG_SP_MURPHY_CLONE 49 +#define IMG_SP_INFOTRON 50 +#define IMG_SP_INFOTRON_EDITOR 51 +#define IMG_SP_CHIP_SINGLE 52 +#define IMG_SP_CHIP_LEFT 53 +#define IMG_SP_CHIP_RIGHT 54 +#define IMG_SP_CHIP_TOP 55 +#define IMG_SP_CHIP_BOTTOM 56 +#define IMG_SP_HARDWARE_GRAY 57 +#define IMG_SP_HARDWARE_GREEN 58 +#define IMG_SP_HARDWARE_BLUE 59 +#define IMG_SP_HARDWARE_RED 60 +#define IMG_SP_HARDWARE_YELLOW 61 +#define IMG_SP_EXIT_CLOSED 62 +#define IMG_SP_EXIT_OPENING 63 +#define IMG_SP_EXIT_OPEN 64 +#define IMG_SP_EXIT_CLOSING 65 +#define IMG_SP_DISK_ORANGE 66 +#define IMG_SP_DISK_YELLOW 67 +#define IMG_SP_DISK_RED 68 +#define IMG_SP_DISK_RED_COLLECTING 69 +#define IMG_SP_DISK_RED_ACTIVE 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_SNIKSNAK_TURNING_FROM_LEFT_UP 87 +#define IMG_SP_SNIKSNAK_TURNING_FROM_LEFT_DOWN 88 +#define IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_UP 89 +#define IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_DOWN 90 +#define IMG_SP_SNIKSNAK_TURNING_FROM_UP_LEFT 91 +#define IMG_SP_SNIKSNAK_TURNING_FROM_UP_RIGHT 92 +#define IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_LEFT 93 +#define IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_RIGHT 94 +#define IMG_SP_ELECTRON 95 +#define IMG_SP_ELECTRON_EDITOR 96 +#define IMG_SP_ELECTRON_EXPLODING 97 +#define IMG_SP_TERMINAL 98 +#define IMG_SP_TERMINAL_EDITOR 99 +#define IMG_SP_TERMINAL_ACTIVE 100 +#define IMG_SP_BUGGY_BASE 101 +#define IMG_SP_BUGGY_BASE_EDITOR 102 +#define IMG_SP_BUGGY_BASE_ACTIVATING 103 +#define IMG_SP_BUGGY_BASE_ACTIVE 104 +#define IMG_SP_HARDWARE_BASE_1 105 +#define IMG_SP_HARDWARE_BASE_2 106 +#define IMG_SP_HARDWARE_BASE_3 107 +#define IMG_SP_HARDWARE_BASE_4 108 +#define IMG_SP_HARDWARE_BASE_5 109 +#define IMG_SP_HARDWARE_BASE_6 110 +#define IMG_SOKOBAN_OBJECT 111 +#define IMG_SOKOBAN_OBJECT_EDITOR 112 +#define IMG_SOKOBAN_FIELD_EMPTY 113 +#define IMG_SOKOBAN_FIELD_FULL 114 +#define IMG_EMPTY_SPACE 115 +#define IMG_SAND 116 +#define IMG_SAND_CRUMBLED 117 +#define IMG_SAND_DIGGING_LEFT 118 +#define IMG_SAND_DIGGING_RIGHT 119 +#define IMG_SAND_DIGGING_UP 120 +#define IMG_SAND_DIGGING_DOWN 121 +#define IMG_SAND_DIGGING_LEFT_CRUMBLED 122 +#define IMG_SAND_DIGGING_RIGHT_CRUMBLED 123 +#define IMG_SAND_DIGGING_UP_CRUMBLED 124 +#define IMG_SAND_DIGGING_DOWN_CRUMBLED 125 +#define IMG_WALL 126 +#define IMG_WALL_SLIPPERY 127 +#define IMG_STEELWALL 128 +#define IMG_ROCK 129 +#define IMG_ROCK_MOVING_LEFT 130 +#define IMG_ROCK_MOVING_RIGHT 131 +#define IMG_ROCK_PUSHING_LEFT 132 +#define IMG_ROCK_PUSHING_RIGHT 133 +#define IMG_EMERALD 134 +#define IMG_EMERALD_MOVING 135 +#define IMG_EMERALD_FALLING 136 +#define IMG_EMERALD_COLLECTING 137 +#define IMG_DIAMOND 138 +#define IMG_DIAMOND_MOVING 139 +#define IMG_DIAMOND_FALLING 140 +#define IMG_DIAMOND_COLLECTING 141 +#define IMG_BOMB 142 +#define IMG_NUT 143 +#define IMG_NUT_BREAKING 144 +#define IMG_DYNAMITE 145 +#define IMG_DYNAMITE_EDITOR 146 +#define IMG_DYNAMITE_ACTIVE 147 +#define IMG_DYNAMITE_ACTIVE_EDITOR 148 +#define IMG_WALL_EMERALD 149 +#define IMG_WALL_DIAMOND 150 +#define IMG_BUG 151 +#define IMG_BUG_RIGHT 152 +#define IMG_BUG_UP 153 +#define IMG_BUG_LEFT 154 +#define IMG_BUG_DOWN 155 +#define IMG_BUG_MOVING_RIGHT 156 +#define IMG_BUG_MOVING_UP 157 +#define IMG_BUG_MOVING_LEFT 158 +#define IMG_BUG_MOVING_DOWN 159 +#define IMG_BUG_TURNING_FROM_RIGHT_UP 160 +#define IMG_BUG_TURNING_FROM_UP_LEFT 161 +#define IMG_BUG_TURNING_FROM_LEFT_DOWN 162 +#define IMG_BUG_TURNING_FROM_DOWN_RIGHT 163 +#define IMG_BUG_TURNING_FROM_RIGHT_DOWN 164 +#define IMG_BUG_TURNING_FROM_UP_RIGHT 165 +#define IMG_BUG_TURNING_FROM_LEFT_UP 166 +#define IMG_BUG_TURNING_FROM_DOWN_LEFT 167 +#define IMG_SPACESHIP 168 +#define IMG_SPACESHIP_RIGHT 169 +#define IMG_SPACESHIP_UP 170 +#define IMG_SPACESHIP_LEFT 171 +#define IMG_SPACESHIP_DOWN 172 +#define IMG_SPACESHIP_MOVING_RIGHT 173 +#define IMG_SPACESHIP_MOVING_UP 174 +#define IMG_SPACESHIP_MOVING_LEFT 175 +#define IMG_SPACESHIP_MOVING_DOWN 176 +#define IMG_SPACESHIP_TURNING_FROM_RIGHT_UP 177 +#define IMG_SPACESHIP_TURNING_FROM_UP_LEFT 178 +#define IMG_SPACESHIP_TURNING_FROM_LEFT_DOWN 179 +#define IMG_SPACESHIP_TURNING_FROM_DOWN_RIGHT 180 +#define IMG_SPACESHIP_TURNING_FROM_RIGHT_DOWN 181 +#define IMG_SPACESHIP_TURNING_FROM_UP_RIGHT 182 +#define IMG_SPACESHIP_TURNING_FROM_LEFT_UP 183 +#define IMG_SPACESHIP_TURNING_FROM_DOWN_LEFT 184 +#define IMG_YAMYAM 185 +#define IMG_YAMYAM_MOVING 186 +#define IMG_ROBOT 187 +#define IMG_ROBOT_MOVING 188 +#define IMG_ROBOT_WHEEL 189 +#define IMG_ROBOT_WHEEL_ACTIVE 190 +#define IMG_MAGIC_WALL 191 +#define IMG_MAGIC_WALL_ACTIVE 192 +#define IMG_MAGIC_WALL_FILLING 193 +#define IMG_MAGIC_WALL_FULL 194 +#define IMG_MAGIC_WALL_EMPTYING 195 +#define IMG_MAGIC_WALL_DEAD 196 +#define IMG_QUICKSAND_EMPTY 197 +#define IMG_QUICKSAND_FILLING 198 +#define IMG_QUICKSAND_FULL 199 +#define IMG_QUICKSAND_FULL_EDITOR 200 +#define IMG_QUICKSAND_EMPTYING 201 +#define IMG_ACID_POOL_TOPLEFT 202 +#define IMG_ACID_POOL_TOPRIGHT 203 +#define IMG_ACID_POOL_BOTTOMLEFT 204 +#define IMG_ACID_POOL_BOTTOM 205 +#define IMG_ACID_POOL_BOTTOMRIGHT 206 +#define IMG_ACID 207 +#define IMG_ACID_SPLASH_LEFT 208 +#define IMG_ACID_SPLASH_RIGHT 209 +#define IMG_AMOEBA_DROP 210 +#define IMG_AMOEBA_GROWING 211 +#define IMG_AMOEBA_SHRINKING 212 +#define IMG_AMOEBA_WET 213 +#define IMG_AMOEBA_WET_EDITOR 214 +#define IMG_AMOEBA_DROPPING 215 +#define IMG_AMOEBA_DRY 216 +#define IMG_AMOEBA_FULL 217 +#define IMG_AMOEBA_FULL_EDITOR 218 +#define IMG_AMOEBA_DEAD 219 +#define IMG_AMOEBA_DEAD_EDITOR 220 +#define IMG_EM_KEY_1 221 +#define IMG_EM_KEY_2 222 +#define IMG_EM_KEY_3 223 +#define IMG_EM_KEY_4 224 +#define IMG_EM_GATE_1 225 +#define IMG_EM_GATE_2 226 +#define IMG_EM_GATE_3 227 +#define IMG_EM_GATE_4 228 +#define IMG_EM_GATE_1_GRAY 229 +#define IMG_EM_GATE_1_GRAY_EDITOR 230 +#define IMG_EM_GATE_2_GRAY 231 +#define IMG_EM_GATE_2_GRAY_EDITOR 232 +#define IMG_EM_GATE_3_GRAY 233 +#define IMG_EM_GATE_3_GRAY_EDITOR 234 +#define IMG_EM_GATE_4_GRAY 235 +#define IMG_EM_GATE_4_GRAY_EDITOR 236 +#define IMG_EXIT_CLOSED 237 +#define IMG_EXIT_OPENING 238 +#define IMG_EXIT_OPEN 239 +#define IMG_EXIT_CLOSING 240 +#define IMG_BALLOON 241 +#define IMG_BALLOON_MOVING 242 +#define IMG_BALLOON_PUSHING 243 +#define IMG_BALLOON_SWITCH_LEFT 244 +#define IMG_BALLOON_SWITCH_RIGHT 245 +#define IMG_BALLOON_SWITCH_UP 246 +#define IMG_BALLOON_SWITCH_DOWN 247 +#define IMG_BALLOON_SWITCH_ANY 248 +#define IMG_SPRING 249 +#define IMG_EMC_STEELWALL_1 250 +#define IMG_EMC_STEELWALL_2 251 +#define IMG_EMC_STEELWALL_3 252 +#define IMG_EMC_STEELWALL_4 253 +#define IMG_EMC_WALL_1 254 +#define IMG_EMC_WALL_2 255 +#define IMG_EMC_WALL_3 256 +#define IMG_EMC_WALL_4 257 +#define IMG_EMC_WALL_5 258 +#define IMG_EMC_WALL_6 259 +#define IMG_EMC_WALL_7 260 +#define IMG_EMC_WALL_8 261 +#define IMG_INVISIBLE_STEELWALL 262 +#define IMG_INVISIBLE_STEELWALL_EDITOR 263 +#define IMG_INVISIBLE_STEELWALL_ACTIVE 264 +#define IMG_INVISIBLE_WALL 265 +#define IMG_INVISIBLE_WALL_EDITOR 266 +#define IMG_INVISIBLE_WALL_ACTIVE 267 +#define IMG_INVISIBLE_SAND 268 +#define IMG_INVISIBLE_SAND_EDITOR 269 +#define IMG_INVISIBLE_SAND_ACTIVE 270 +#define IMG_CONVEYOR_BELT_1_MIDDLE 271 +#define IMG_CONVEYOR_BELT_1_MIDDLE_ACTIVE 272 +#define IMG_CONVEYOR_BELT_1_LEFT 273 +#define IMG_CONVEYOR_BELT_1_LEFT_ACTIVE 274 +#define IMG_CONVEYOR_BELT_1_RIGHT 275 +#define IMG_CONVEYOR_BELT_1_RIGHT_ACTIVE 276 +#define IMG_CONVEYOR_BELT_1_SWITCH_LEFT 277 +#define IMG_CONVEYOR_BELT_1_SWITCH_MIDDLE 278 +#define IMG_CONVEYOR_BELT_1_SWITCH_RIGHT 279 +#define IMG_CONVEYOR_BELT_2_MIDDLE 280 +#define IMG_CONVEYOR_BELT_2_MIDDLE_ACTIVE 281 +#define IMG_CONVEYOR_BELT_2_LEFT 282 +#define IMG_CONVEYOR_BELT_2_LEFT_ACTIVE 283 +#define IMG_CONVEYOR_BELT_2_RIGHT 284 +#define IMG_CONVEYOR_BELT_2_RIGHT_ACTIVE 285 +#define IMG_CONVEYOR_BELT_2_SWITCH_LEFT 286 +#define IMG_CONVEYOR_BELT_2_SWITCH_MIDDLE 287 +#define IMG_CONVEYOR_BELT_2_SWITCH_RIGHT 288 +#define IMG_CONVEYOR_BELT_3_MIDDLE 289 +#define IMG_CONVEYOR_BELT_3_MIDDLE_ACTIVE 290 +#define IMG_CONVEYOR_BELT_3_LEFT 291 +#define IMG_CONVEYOR_BELT_3_LEFT_ACTIVE 292 +#define IMG_CONVEYOR_BELT_3_RIGHT 293 +#define IMG_CONVEYOR_BELT_3_RIGHT_ACTIVE 294 +#define IMG_CONVEYOR_BELT_3_SWITCH_LEFT 295 +#define IMG_CONVEYOR_BELT_3_SWITCH_MIDDLE 296 +#define IMG_CONVEYOR_BELT_3_SWITCH_RIGHT 297 +#define IMG_CONVEYOR_BELT_4_MIDDLE 298 +#define IMG_CONVEYOR_BELT_4_MIDDLE_ACTIVE 299 +#define IMG_CONVEYOR_BELT_4_LEFT 300 +#define IMG_CONVEYOR_BELT_4_LEFT_ACTIVE 301 +#define IMG_CONVEYOR_BELT_4_RIGHT 302 +#define IMG_CONVEYOR_BELT_4_RIGHT_ACTIVE 303 +#define IMG_CONVEYOR_BELT_4_SWITCH_LEFT 304 +#define IMG_CONVEYOR_BELT_4_SWITCH_MIDDLE 305 +#define IMG_CONVEYOR_BELT_4_SWITCH_RIGHT 306 +#define IMG_SWITCHGATE_SWITCH_UP 307 +#define IMG_SWITCHGATE_SWITCH_DOWN 308 +#define IMG_LIGHT_SWITCH 309 +#define IMG_LIGHT_SWITCH_ACTIVE 310 +#define IMG_TIMEGATE_SWITCH 311 +#define IMG_TIMEGATE_SWITCH_ACTIVE 312 +#define IMG_ENVELOPE_1 313 +#define IMG_ENVELOPE_1_COLLECTING 314 +#define IMG_ENVELOPE_2 315 +#define IMG_ENVELOPE_2_COLLECTING 316 +#define IMG_ENVELOPE_3 317 +#define IMG_ENVELOPE_3_COLLECTING 318 +#define IMG_ENVELOPE_4 319 +#define IMG_ENVELOPE_4_COLLECTING 320 +#define IMG_SIGN_EXCLAMATION 321 +#define IMG_SIGN_STOP 322 +#define IMG_LANDMINE 323 +#define IMG_STEELWALL_SLIPPERY 324 +#define IMG_EXTRA_TIME 325 +#define IMG_SHIELD_NORMAL 326 +#define IMG_SHIELD_NORMAL_ACTIVE 327 +#define IMG_SHIELD_DEADLY 328 +#define IMG_SHIELD_DEADLY_ACTIVE 329 +#define IMG_SWITCHGATE_CLOSED 330 +#define IMG_SWITCHGATE_OPENING 331 +#define IMG_SWITCHGATE_OPEN 332 +#define IMG_SWITCHGATE_CLOSING 333 +#define IMG_TIMEGATE_CLOSED 334 +#define IMG_TIMEGATE_OPENING 335 +#define IMG_TIMEGATE_OPEN 336 +#define IMG_TIMEGATE_CLOSING 337 +#define IMG_PEARL 338 +#define IMG_PEARL_BREAKING 339 +#define IMG_CRYSTAL 340 +#define IMG_WALL_PEARL 341 +#define IMG_WALL_CRYSTAL 342 +#define IMG_TUBE_RIGHT_DOWN 343 +#define IMG_TUBE_HORIZONTAL_DOWN 344 +#define IMG_TUBE_LEFT_DOWN 345 +#define IMG_TUBE_HORIZONTAL 346 +#define IMG_TUBE_VERTICAL_RIGHT 347 +#define IMG_TUBE_ANY 348 +#define IMG_TUBE_VERTICAL_LEFT 349 +#define IMG_TUBE_VERTICAL 350 +#define IMG_TUBE_RIGHT_UP 351 +#define IMG_TUBE_HORIZONTAL_UP 352 +#define IMG_TUBE_LEFT_UP 353 +#define IMG_TRAP 354 +#define IMG_TRAP_ACTIVE 355 +#define IMG_DX_SUPABOMB 356 +#define IMG_KEY_1 357 +#define IMG_KEY_1_EDITOR 358 +#define IMG_KEY_2 359 +#define IMG_KEY_2_EDITOR 360 +#define IMG_KEY_3 361 +#define IMG_KEY_3_EDITOR 362 +#define IMG_KEY_4 363 +#define IMG_KEY_4_EDITOR 364 +#define IMG_GATE_1 365 +#define IMG_GATE_2 366 +#define IMG_GATE_3 367 +#define IMG_GATE_4 368 +#define IMG_GATE_1_GRAY 369 +#define IMG_GATE_1_GRAY_EDITOR 370 +#define IMG_GATE_2_GRAY 371 +#define IMG_GATE_2_GRAY_EDITOR 372 +#define IMG_GATE_3_GRAY 373 +#define IMG_GATE_3_GRAY_EDITOR 374 +#define IMG_GATE_4_GRAY 375 +#define IMG_GATE_4_GRAY_EDITOR 376 +#define IMG_GAME_OF_LIFE 377 +#define IMG_BIOMAZE 378 +#define IMG_PACMAN 379 +#define IMG_PACMAN_RIGHT 380 +#define IMG_PACMAN_UP 381 +#define IMG_PACMAN_LEFT 382 +#define IMG_PACMAN_DOWN 383 +#define IMG_PACMAN_TURNING_FROM_RIGHT 384 +#define IMG_PACMAN_TURNING_FROM_UP 385 +#define IMG_PACMAN_TURNING_FROM_LEFT 386 +#define IMG_PACMAN_TURNING_FROM_DOWN 387 +#define IMG_LAMP 388 +#define IMG_LAMP_EDITOR 389 +#define IMG_LAMP_ACTIVE 390 +#define IMG_TIME_ORB_FULL 391 +#define IMG_TIME_ORB_EMPTY 392 +#define IMG_EMERALD_YELLOW 393 +#define IMG_EMERALD_YELLOW_MOVING 394 +#define IMG_EMERALD_YELLOW_FALLING 395 +#define IMG_EMERALD_RED 396 +#define IMG_EMERALD_RED_MOVING 397 +#define IMG_EMERALD_RED_FALLING 398 +#define IMG_EMERALD_PURPLE 399 +#define IMG_EMERALD_PURPLE_MOVING 400 +#define IMG_EMERALD_PURPLE_FALLING 401 +#define IMG_WALL_EMERALD_YELLOW 402 +#define IMG_WALL_EMERALD_RED 403 +#define IMG_WALL_EMERALD_PURPLE 404 +#define IMG_WALL_BD_DIAMOND 405 +#define IMG_EXPANDABLE_WALL 406 +#define IMG_EXPANDABLE_WALL_HORIZONTAL 407 +#define IMG_EXPANDABLE_WALL_HORIZONTAL_EDITOR 408 +#define IMG_EXPANDABLE_WALL_VERTICAL 409 +#define IMG_EXPANDABLE_WALL_VERTICAL_EDITOR 410 +#define IMG_EXPANDABLE_WALL_ANY 411 +#define IMG_EXPANDABLE_WALL_ANY_EDITOR 412 +#define IMG_EXPANDABLE_WALL_GROWING_LEFT 413 +#define IMG_EXPANDABLE_WALL_GROWING_RIGHT 414 +#define IMG_EXPANDABLE_WALL_GROWING_UP 415 +#define IMG_EXPANDABLE_WALL_GROWING_DOWN 416 +#define IMG_BLACK_ORB 417 +#define IMG_SPEED_PILL 418 +#define IMG_DARK_YAMYAM 419 +#define IMG_DYNABOMB 420 +#define IMG_DYNABOMB_ACTIVE 421 +#define IMG_DYNABOMB_PLAYER_1 422 +#define IMG_DYNABOMB_PLAYER_1_ACTIVE 423 +#define IMG_DYNABOMB_PLAYER_2 424 +#define IMG_DYNABOMB_PLAYER_2_ACTIVE 425 +#define IMG_DYNABOMB_PLAYER_3 426 +#define IMG_DYNABOMB_PLAYER_3_ACTIVE 427 +#define IMG_DYNABOMB_PLAYER_4 428 +#define IMG_DYNABOMB_PLAYER_4_ACTIVE 429 +#define IMG_DYNABOMB_INCREASE_NUMBER 430 +#define IMG_DYNABOMB_INCREASE_SIZE 431 +#define IMG_DYNABOMB_INCREASE_POWER 432 +#define IMG_PIG 433 +#define IMG_PIG_DOWN 434 +#define IMG_PIG_UP 435 +#define IMG_PIG_LEFT 436 +#define IMG_PIG_RIGHT 437 +#define IMG_PIG_MOVING_DOWN 438 +#define IMG_PIG_MOVING_UP 439 +#define IMG_PIG_MOVING_LEFT 440 +#define IMG_PIG_MOVING_RIGHT 441 +#define IMG_PIG_DIGGING_DOWN 442 +#define IMG_PIG_DIGGING_UP 443 +#define IMG_PIG_DIGGING_LEFT 444 +#define IMG_PIG_DIGGING_RIGHT 445 +#define IMG_DRAGON 446 +#define IMG_DRAGON_DOWN 447 +#define IMG_DRAGON_UP 448 +#define IMG_DRAGON_LEFT 449 +#define IMG_DRAGON_RIGHT 450 +#define IMG_DRAGON_MOVING_DOWN 451 +#define IMG_DRAGON_MOVING_UP 452 +#define IMG_DRAGON_MOVING_LEFT 453 +#define IMG_DRAGON_MOVING_RIGHT 454 +#define IMG_DRAGON_ATTACKING_DOWN 455 +#define IMG_DRAGON_ATTACKING_UP 456 +#define IMG_DRAGON_ATTACKING_LEFT 457 +#define IMG_DRAGON_ATTACKING_RIGHT 458 +#define IMG_MOLE 459 +#define IMG_MOLE_DOWN 460 +#define IMG_MOLE_UP 461 +#define IMG_MOLE_LEFT 462 +#define IMG_MOLE_RIGHT 463 +#define IMG_MOLE_MOVING_DOWN 464 +#define IMG_MOLE_MOVING_UP 465 +#define IMG_MOLE_MOVING_LEFT 466 +#define IMG_MOLE_MOVING_RIGHT 467 +#define IMG_MOLE_DIGGING_DOWN 468 +#define IMG_MOLE_DIGGING_UP 469 +#define IMG_MOLE_DIGGING_LEFT 470 +#define IMG_MOLE_DIGGING_RIGHT 471 +#define IMG_PENGUIN 472 +#define IMG_PENGUIN_EDITOR 473 +#define IMG_PENGUIN_DOWN 474 +#define IMG_PENGUIN_UP 475 +#define IMG_PENGUIN_LEFT 476 +#define IMG_PENGUIN_RIGHT 477 +#define IMG_PENGUIN_MOVING_DOWN 478 +#define IMG_PENGUIN_MOVING_UP 479 +#define IMG_PENGUIN_MOVING_LEFT 480 +#define IMG_PENGUIN_MOVING_RIGHT 481 +#define IMG_SATELLITE 482 +#define IMG_FLAMES_1_LEFT 483 +#define IMG_FLAMES_2_LEFT 484 +#define IMG_FLAMES_3_LEFT 485 +#define IMG_FLAMES_1_RIGHT 486 +#define IMG_FLAMES_2_RIGHT 487 +#define IMG_FLAMES_3_RIGHT 488 +#define IMG_FLAMES_1_UP 489 +#define IMG_FLAMES_2_UP 490 +#define IMG_FLAMES_3_UP 491 +#define IMG_FLAMES_1_DOWN 492 +#define IMG_FLAMES_2_DOWN 493 +#define IMG_FLAMES_3_DOWN 494 +#define IMG_STONEBLOCK 495 +#define IMG_PLAYER_1 496 +#define IMG_PLAYER_1_EDITOR 497 +#define IMG_PLAYER_1_DOWN 498 +#define IMG_PLAYER_1_UP 499 +#define IMG_PLAYER_1_LEFT 500 +#define IMG_PLAYER_1_RIGHT 501 +#define IMG_PLAYER_1_MOVING_DOWN 502 +#define IMG_PLAYER_1_MOVING_UP 503 +#define IMG_PLAYER_1_MOVING_LEFT 504 +#define IMG_PLAYER_1_MOVING_RIGHT 505 +#define IMG_PLAYER_1_DIGGING_DOWN 506 +#define IMG_PLAYER_1_DIGGING_UP 507 +#define IMG_PLAYER_1_DIGGING_LEFT 508 +#define IMG_PLAYER_1_DIGGING_RIGHT 509 +#define IMG_PLAYER_1_COLLECTING_DOWN 510 +#define IMG_PLAYER_1_COLLECTING_UP 511 +#define IMG_PLAYER_1_COLLECTING_LEFT 512 +#define IMG_PLAYER_1_COLLECTING_RIGHT 513 +#define IMG_PLAYER_1_PUSHING_DOWN 514 +#define IMG_PLAYER_1_PUSHING_UP 515 +#define IMG_PLAYER_1_PUSHING_LEFT 516 +#define IMG_PLAYER_1_PUSHING_RIGHT 517 +#define IMG_PLAYER_1_SNAPPING_DOWN 518 +#define IMG_PLAYER_1_SNAPPING_UP 519 +#define IMG_PLAYER_1_SNAPPING_LEFT 520 +#define IMG_PLAYER_1_SNAPPING_RIGHT 521 +#define IMG_PLAYER_2 522 +#define IMG_PLAYER_2_EDITOR 523 +#define IMG_PLAYER_2_DOWN 524 +#define IMG_PLAYER_2_UP 525 +#define IMG_PLAYER_2_LEFT 526 +#define IMG_PLAYER_2_RIGHT 527 +#define IMG_PLAYER_2_MOVING_DOWN 528 +#define IMG_PLAYER_2_MOVING_UP 529 +#define IMG_PLAYER_2_MOVING_LEFT 530 +#define IMG_PLAYER_2_MOVING_RIGHT 531 +#define IMG_PLAYER_2_DIGGING_DOWN 532 +#define IMG_PLAYER_2_DIGGING_UP 533 +#define IMG_PLAYER_2_DIGGING_LEFT 534 +#define IMG_PLAYER_2_DIGGING_RIGHT 535 +#define IMG_PLAYER_2_COLLECTING_DOWN 536 +#define IMG_PLAYER_2_COLLECTING_UP 537 +#define IMG_PLAYER_2_COLLECTING_LEFT 538 +#define IMG_PLAYER_2_COLLECTING_RIGHT 539 +#define IMG_PLAYER_2_PUSHING_DOWN 540 +#define IMG_PLAYER_2_PUSHING_UP 541 +#define IMG_PLAYER_2_PUSHING_LEFT 542 +#define IMG_PLAYER_2_PUSHING_RIGHT 543 +#define IMG_PLAYER_2_SNAPPING_DOWN 544 +#define IMG_PLAYER_2_SNAPPING_UP 545 +#define IMG_PLAYER_2_SNAPPING_LEFT 546 +#define IMG_PLAYER_2_SNAPPING_RIGHT 547 +#define IMG_PLAYER_3 548 +#define IMG_PLAYER_3_EDITOR 549 +#define IMG_PLAYER_3_DOWN 550 +#define IMG_PLAYER_3_UP 551 +#define IMG_PLAYER_3_LEFT 552 +#define IMG_PLAYER_3_RIGHT 553 +#define IMG_PLAYER_3_MOVING_DOWN 554 +#define IMG_PLAYER_3_MOVING_UP 555 +#define IMG_PLAYER_3_MOVING_LEFT 556 +#define IMG_PLAYER_3_MOVING_RIGHT 557 +#define IMG_PLAYER_3_DIGGING_DOWN 558 +#define IMG_PLAYER_3_DIGGING_UP 559 +#define IMG_PLAYER_3_DIGGING_LEFT 560 +#define IMG_PLAYER_3_DIGGING_RIGHT 561 +#define IMG_PLAYER_3_COLLECTING_DOWN 562 +#define IMG_PLAYER_3_COLLECTING_UP 563 +#define IMG_PLAYER_3_COLLECTING_LEFT 564 +#define IMG_PLAYER_3_COLLECTING_RIGHT 565 +#define IMG_PLAYER_3_PUSHING_DOWN 566 +#define IMG_PLAYER_3_PUSHING_UP 567 +#define IMG_PLAYER_3_PUSHING_LEFT 568 +#define IMG_PLAYER_3_PUSHING_RIGHT 569 +#define IMG_PLAYER_3_SNAPPING_DOWN 570 +#define IMG_PLAYER_3_SNAPPING_UP 571 +#define IMG_PLAYER_3_SNAPPING_LEFT 572 +#define IMG_PLAYER_3_SNAPPING_RIGHT 573 +#define IMG_PLAYER_4 574 +#define IMG_PLAYER_4_EDITOR 575 +#define IMG_PLAYER_4_DOWN 576 +#define IMG_PLAYER_4_UP 577 +#define IMG_PLAYER_4_LEFT 578 +#define IMG_PLAYER_4_RIGHT 579 +#define IMG_PLAYER_4_MOVING_DOWN 580 +#define IMG_PLAYER_4_MOVING_UP 581 +#define IMG_PLAYER_4_MOVING_LEFT 582 +#define IMG_PLAYER_4_MOVING_RIGHT 583 +#define IMG_PLAYER_4_DIGGING_DOWN 584 +#define IMG_PLAYER_4_DIGGING_UP 585 +#define IMG_PLAYER_4_DIGGING_LEFT 586 +#define IMG_PLAYER_4_DIGGING_RIGHT 587 +#define IMG_PLAYER_4_COLLECTING_DOWN 588 +#define IMG_PLAYER_4_COLLECTING_UP 589 +#define IMG_PLAYER_4_COLLECTING_LEFT 590 +#define IMG_PLAYER_4_COLLECTING_RIGHT 591 +#define IMG_PLAYER_4_PUSHING_DOWN 592 +#define IMG_PLAYER_4_PUSHING_UP 593 +#define IMG_PLAYER_4_PUSHING_LEFT 594 +#define IMG_PLAYER_4_PUSHING_RIGHT 595 +#define IMG_PLAYER_4_SNAPPING_DOWN 596 +#define IMG_PLAYER_4_SNAPPING_UP 597 +#define IMG_PLAYER_4_SNAPPING_LEFT 598 +#define IMG_PLAYER_4_SNAPPING_RIGHT 599 +#define IMG_DEFAULT_EXPLODING 600 +#define IMG_TWINKLE_BLUE 601 +#define IMG_TWINKLE_WHITE 602 +#define IMG_STEELWALL_TOPLEFT 603 +#define IMG_STEELWALL_TOPRIGHT 604 +#define IMG_STEELWALL_BOTTOMLEFT 605 +#define IMG_STEELWALL_BOTTOMRIGHT 606 +#define IMG_STEELWALL_HORIZONTAL 607 +#define IMG_STEELWALL_VERTICAL 608 +#define IMG_STEELWALL_TOPLEFT_EDITOR 609 +#define IMG_STEELWALL_TOPRIGHT_EDITOR 610 +#define IMG_STEELWALL_BOTTOMLEFT_EDITOR 611 +#define IMG_STEELWALL_BOTTOMRIGHT_EDITOR 612 +#define IMG_STEELWALL_HORIZONTAL_EDITOR 613 +#define IMG_STEELWALL_VERTICAL_EDITOR 614 +#define IMG_INVISIBLE_STEELWALL_TOPLEFT 615 +#define IMG_INVISIBLE_STEELWALL_TOPRIGHT 616 +#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT 617 +#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT 618 +#define IMG_INVISIBLE_STEELWALL_HORIZONTAL 619 +#define IMG_INVISIBLE_STEELWALL_VERTICAL 620 +#define IMG_INVISIBLE_STEELWALL_TOPLEFT_EDITOR 621 +#define IMG_INVISIBLE_STEELWALL_TOPRIGHT_EDITOR 622 +#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT_EDITOR 623 +#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT_EDITOR 624 +#define IMG_INVISIBLE_STEELWALL_HORIZONTAL_EDITOR 625 +#define IMG_INVISIBLE_STEELWALL_VERTICAL_EDITOR 626 +#define IMG_ARROW_LEFT 627 +#define IMG_ARROW_RIGHT 628 +#define IMG_ARROW_UP 629 +#define IMG_ARROW_DOWN 630 +#define IMG_CHAR_SPACE 631 +#define IMG_CHAR_EXCLAM 632 +#define IMG_CHAR_QUOTEDBL 633 +#define IMG_CHAR_NUMBERSIGN 634 +#define IMG_CHAR_DOLLAR 635 +#define IMG_CHAR_PROCENT 636 +#define IMG_CHAR_AMPERSAND 637 +#define IMG_CHAR_APOSTROPHE 638 +#define IMG_CHAR_PARENLEFT 639 +#define IMG_CHAR_PARENRIGHT 640 +#define IMG_CHAR_ASTERISK 641 +#define IMG_CHAR_PLUS 642 +#define IMG_CHAR_COMMA 643 +#define IMG_CHAR_MINUS 644 +#define IMG_CHAR_PERIOD 645 +#define IMG_CHAR_SLASH 646 +#define IMG_CHAR_0 647 +#define IMG_CHAR_1 648 +#define IMG_CHAR_2 649 +#define IMG_CHAR_3 650 +#define IMG_CHAR_4 651 +#define IMG_CHAR_5 652 +#define IMG_CHAR_6 653 +#define IMG_CHAR_7 654 +#define IMG_CHAR_8 655 +#define IMG_CHAR_9 656 +#define IMG_CHAR_COLON 657 +#define IMG_CHAR_SEMICOLON 658 +#define IMG_CHAR_LESS 659 +#define IMG_CHAR_EQUAL 660 +#define IMG_CHAR_GREATER 661 +#define IMG_CHAR_QUESTION 662 +#define IMG_CHAR_AT 663 +#define IMG_CHAR_A 664 +#define IMG_CHAR_B 665 +#define IMG_CHAR_C 666 +#define IMG_CHAR_D 667 +#define IMG_CHAR_E 668 +#define IMG_CHAR_F 669 +#define IMG_CHAR_G 670 +#define IMG_CHAR_H 671 +#define IMG_CHAR_I 672 +#define IMG_CHAR_J 673 +#define IMG_CHAR_K 674 +#define IMG_CHAR_L 675 +#define IMG_CHAR_M 676 +#define IMG_CHAR_N 677 +#define IMG_CHAR_O 678 +#define IMG_CHAR_P 679 +#define IMG_CHAR_Q 680 +#define IMG_CHAR_R 681 +#define IMG_CHAR_S 682 +#define IMG_CHAR_T 683 +#define IMG_CHAR_U 684 +#define IMG_CHAR_V 685 +#define IMG_CHAR_W 686 +#define IMG_CHAR_X 687 +#define IMG_CHAR_Y 688 +#define IMG_CHAR_Z 689 +#define IMG_CHAR_BRACKETLEFT 690 +#define IMG_CHAR_BACKSLASH 691 +#define IMG_CHAR_BRACKETRIGHT 692 +#define IMG_CHAR_ASCIICIRCUM 693 +#define IMG_CHAR_UNDERSCORE 694 +#define IMG_CHAR_COPYRIGHT 695 +#define IMG_CHAR_AUMLAUT 696 +#define IMG_CHAR_OUMLAUT 697 +#define IMG_CHAR_UUMLAUT 698 +#define IMG_CHAR_DEGREE 699 +#define IMG_CHAR_TRADEMARK 700 +#define IMG_CHAR_CURSOR 701 +#define IMG_CUSTOM_1 702 +#define IMG_CUSTOM_1_EDITOR 703 +#define IMG_CUSTOM_2 704 +#define IMG_CUSTOM_2_EDITOR 705 +#define IMG_CUSTOM_3 706 +#define IMG_CUSTOM_3_EDITOR 707 +#define IMG_CUSTOM_4 708 +#define IMG_CUSTOM_4_EDITOR 709 +#define IMG_CUSTOM_5 710 +#define IMG_CUSTOM_5_EDITOR 711 +#define IMG_CUSTOM_6 712 +#define IMG_CUSTOM_6_EDITOR 713 +#define IMG_CUSTOM_7 714 +#define IMG_CUSTOM_7_EDITOR 715 +#define IMG_CUSTOM_8 716 +#define IMG_CUSTOM_8_EDITOR 717 +#define IMG_CUSTOM_9 718 +#define IMG_CUSTOM_9_EDITOR 719 +#define IMG_CUSTOM_10 720 +#define IMG_CUSTOM_10_EDITOR 721 +#define IMG_CUSTOM_11 722 +#define IMG_CUSTOM_11_EDITOR 723 +#define IMG_CUSTOM_12 724 +#define IMG_CUSTOM_12_EDITOR 725 +#define IMG_CUSTOM_13 726 +#define IMG_CUSTOM_13_EDITOR 727 +#define IMG_CUSTOM_14 728 +#define IMG_CUSTOM_14_EDITOR 729 +#define IMG_CUSTOM_15 730 +#define IMG_CUSTOM_15_EDITOR 731 +#define IMG_CUSTOM_16 732 +#define IMG_CUSTOM_16_EDITOR 733 +#define IMG_CUSTOM_17 734 +#define IMG_CUSTOM_17_EDITOR 735 +#define IMG_CUSTOM_18 736 +#define IMG_CUSTOM_18_EDITOR 737 +#define IMG_CUSTOM_19 738 +#define IMG_CUSTOM_19_EDITOR 739 +#define IMG_CUSTOM_20 740 +#define IMG_CUSTOM_20_EDITOR 741 +#define IMG_CUSTOM_21 742 +#define IMG_CUSTOM_21_EDITOR 743 +#define IMG_CUSTOM_22 744 +#define IMG_CUSTOM_22_EDITOR 745 +#define IMG_CUSTOM_23 746 +#define IMG_CUSTOM_23_EDITOR 747 +#define IMG_CUSTOM_24 748 +#define IMG_CUSTOM_24_EDITOR 749 +#define IMG_CUSTOM_25 750 +#define IMG_CUSTOM_25_EDITOR 751 +#define IMG_CUSTOM_26 752 +#define IMG_CUSTOM_26_EDITOR 753 +#define IMG_CUSTOM_27 754 +#define IMG_CUSTOM_27_EDITOR 755 +#define IMG_CUSTOM_28 756 +#define IMG_CUSTOM_28_EDITOR 757 +#define IMG_CUSTOM_29 758 +#define IMG_CUSTOM_29_EDITOR 759 +#define IMG_CUSTOM_30 760 +#define IMG_CUSTOM_30_EDITOR 761 +#define IMG_CUSTOM_31 762 +#define IMG_CUSTOM_31_EDITOR 763 +#define IMG_CUSTOM_32 764 +#define IMG_CUSTOM_32_EDITOR 765 +#define IMG_CUSTOM_33 766 +#define IMG_CUSTOM_33_EDITOR 767 +#define IMG_CUSTOM_34 768 +#define IMG_CUSTOM_34_EDITOR 769 +#define IMG_CUSTOM_35 770 +#define IMG_CUSTOM_35_EDITOR 771 +#define IMG_CUSTOM_36 772 +#define IMG_CUSTOM_36_EDITOR 773 +#define IMG_CUSTOM_37 774 +#define IMG_CUSTOM_37_EDITOR 775 +#define IMG_CUSTOM_38 776 +#define IMG_CUSTOM_38_EDITOR 777 +#define IMG_CUSTOM_39 778 +#define IMG_CUSTOM_39_EDITOR 779 +#define IMG_CUSTOM_40 780 +#define IMG_CUSTOM_40_EDITOR 781 +#define IMG_CUSTOM_41 782 +#define IMG_CUSTOM_41_EDITOR 783 +#define IMG_CUSTOM_42 784 +#define IMG_CUSTOM_42_EDITOR 785 +#define IMG_CUSTOM_43 786 +#define IMG_CUSTOM_43_EDITOR 787 +#define IMG_CUSTOM_44 788 +#define IMG_CUSTOM_44_EDITOR 789 +#define IMG_CUSTOM_45 790 +#define IMG_CUSTOM_45_EDITOR 791 +#define IMG_CUSTOM_46 792 +#define IMG_CUSTOM_46_EDITOR 793 +#define IMG_CUSTOM_47 794 +#define IMG_CUSTOM_47_EDITOR 795 +#define IMG_CUSTOM_48 796 +#define IMG_CUSTOM_48_EDITOR 797 +#define IMG_CUSTOM_49 798 +#define IMG_CUSTOM_49_EDITOR 799 +#define IMG_CUSTOM_50 800 +#define IMG_CUSTOM_50_EDITOR 801 +#define IMG_CUSTOM_51 802 +#define IMG_CUSTOM_51_EDITOR 803 +#define IMG_CUSTOM_52 804 +#define IMG_CUSTOM_52_EDITOR 805 +#define IMG_CUSTOM_53 806 +#define IMG_CUSTOM_53_EDITOR 807 +#define IMG_CUSTOM_54 808 +#define IMG_CUSTOM_54_EDITOR 809 +#define IMG_CUSTOM_55 810 +#define IMG_CUSTOM_55_EDITOR 811 +#define IMG_CUSTOM_56 812 +#define IMG_CUSTOM_56_EDITOR 813 +#define IMG_CUSTOM_57 814 +#define IMG_CUSTOM_57_EDITOR 815 +#define IMG_CUSTOM_58 816 +#define IMG_CUSTOM_58_EDITOR 817 +#define IMG_CUSTOM_59 818 +#define IMG_CUSTOM_59_EDITOR 819 +#define IMG_CUSTOM_60 820 +#define IMG_CUSTOM_60_EDITOR 821 +#define IMG_CUSTOM_61 822 +#define IMG_CUSTOM_61_EDITOR 823 +#define IMG_CUSTOM_62 824 +#define IMG_CUSTOM_62_EDITOR 825 +#define IMG_CUSTOM_63 826 +#define IMG_CUSTOM_63_EDITOR 827 +#define IMG_CUSTOM_64 828 +#define IMG_CUSTOM_64_EDITOR 829 +#define IMG_CUSTOM_65 830 +#define IMG_CUSTOM_65_EDITOR 831 +#define IMG_CUSTOM_66 832 +#define IMG_CUSTOM_66_EDITOR 833 +#define IMG_CUSTOM_67 834 +#define IMG_CUSTOM_67_EDITOR 835 +#define IMG_CUSTOM_68 836 +#define IMG_CUSTOM_68_EDITOR 837 +#define IMG_CUSTOM_69 838 +#define IMG_CUSTOM_69_EDITOR 839 +#define IMG_CUSTOM_70 840 +#define IMG_CUSTOM_70_EDITOR 841 +#define IMG_CUSTOM_71 842 +#define IMG_CUSTOM_71_EDITOR 843 +#define IMG_CUSTOM_72 844 +#define IMG_CUSTOM_72_EDITOR 845 +#define IMG_CUSTOM_73 846 +#define IMG_CUSTOM_73_EDITOR 847 +#define IMG_CUSTOM_74 848 +#define IMG_CUSTOM_74_EDITOR 849 +#define IMG_CUSTOM_75 850 +#define IMG_CUSTOM_75_EDITOR 851 +#define IMG_CUSTOM_76 852 +#define IMG_CUSTOM_76_EDITOR 853 +#define IMG_CUSTOM_77 854 +#define IMG_CUSTOM_77_EDITOR 855 +#define IMG_CUSTOM_78 856 +#define IMG_CUSTOM_78_EDITOR 857 +#define IMG_CUSTOM_79 858 +#define IMG_CUSTOM_79_EDITOR 859 +#define IMG_CUSTOM_80 860 +#define IMG_CUSTOM_80_EDITOR 861 +#define IMG_CUSTOM_81 862 +#define IMG_CUSTOM_81_EDITOR 863 +#define IMG_CUSTOM_82 864 +#define IMG_CUSTOM_82_EDITOR 865 +#define IMG_CUSTOM_83 866 +#define IMG_CUSTOM_83_EDITOR 867 +#define IMG_CUSTOM_84 868 +#define IMG_CUSTOM_84_EDITOR 869 +#define IMG_CUSTOM_85 870 +#define IMG_CUSTOM_85_EDITOR 871 +#define IMG_CUSTOM_86 872 +#define IMG_CUSTOM_86_EDITOR 873 +#define IMG_CUSTOM_87 874 +#define IMG_CUSTOM_87_EDITOR 875 +#define IMG_CUSTOM_88 876 +#define IMG_CUSTOM_88_EDITOR 877 +#define IMG_CUSTOM_89 878 +#define IMG_CUSTOM_89_EDITOR 879 +#define IMG_CUSTOM_90 880 +#define IMG_CUSTOM_90_EDITOR 881 +#define IMG_CUSTOM_91 882 +#define IMG_CUSTOM_91_EDITOR 883 +#define IMG_CUSTOM_92 884 +#define IMG_CUSTOM_92_EDITOR 885 +#define IMG_CUSTOM_93 886 +#define IMG_CUSTOM_93_EDITOR 887 +#define IMG_CUSTOM_94 888 +#define IMG_CUSTOM_94_EDITOR 889 +#define IMG_CUSTOM_95 890 +#define IMG_CUSTOM_95_EDITOR 891 +#define IMG_CUSTOM_96 892 +#define IMG_CUSTOM_96_EDITOR 893 +#define IMG_CUSTOM_97 894 +#define IMG_CUSTOM_97_EDITOR 895 +#define IMG_CUSTOM_98 896 +#define IMG_CUSTOM_98_EDITOR 897 +#define IMG_CUSTOM_99 898 +#define IMG_CUSTOM_99_EDITOR 899 +#define IMG_CUSTOM_100 900 +#define IMG_CUSTOM_100_EDITOR 901 +#define IMG_CUSTOM_101 902 +#define IMG_CUSTOM_101_EDITOR 903 +#define IMG_CUSTOM_102 904 +#define IMG_CUSTOM_102_EDITOR 905 +#define IMG_CUSTOM_103 906 +#define IMG_CUSTOM_103_EDITOR 907 +#define IMG_CUSTOM_104 908 +#define IMG_CUSTOM_104_EDITOR 909 +#define IMG_CUSTOM_105 910 +#define IMG_CUSTOM_105_EDITOR 911 +#define IMG_CUSTOM_106 912 +#define IMG_CUSTOM_106_EDITOR 913 +#define IMG_CUSTOM_107 914 +#define IMG_CUSTOM_107_EDITOR 915 +#define IMG_CUSTOM_108 916 +#define IMG_CUSTOM_108_EDITOR 917 +#define IMG_CUSTOM_109 918 +#define IMG_CUSTOM_109_EDITOR 919 +#define IMG_CUSTOM_110 920 +#define IMG_CUSTOM_110_EDITOR 921 +#define IMG_CUSTOM_111 922 +#define IMG_CUSTOM_111_EDITOR 923 +#define IMG_CUSTOM_112 924 +#define IMG_CUSTOM_112_EDITOR 925 +#define IMG_CUSTOM_113 926 +#define IMG_CUSTOM_113_EDITOR 927 +#define IMG_CUSTOM_114 928 +#define IMG_CUSTOM_114_EDITOR 929 +#define IMG_CUSTOM_115 930 +#define IMG_CUSTOM_115_EDITOR 931 +#define IMG_CUSTOM_116 932 +#define IMG_CUSTOM_116_EDITOR 933 +#define IMG_CUSTOM_117 934 +#define IMG_CUSTOM_117_EDITOR 935 +#define IMG_CUSTOM_118 936 +#define IMG_CUSTOM_118_EDITOR 937 +#define IMG_CUSTOM_119 938 +#define IMG_CUSTOM_119_EDITOR 939 +#define IMG_CUSTOM_120 940 +#define IMG_CUSTOM_120_EDITOR 941 +#define IMG_CUSTOM_121 942 +#define IMG_CUSTOM_121_EDITOR 943 +#define IMG_CUSTOM_122 944 +#define IMG_CUSTOM_122_EDITOR 945 +#define IMG_CUSTOM_123 946 +#define IMG_CUSTOM_123_EDITOR 947 +#define IMG_CUSTOM_124 948 +#define IMG_CUSTOM_124_EDITOR 949 +#define IMG_CUSTOM_125 950 +#define IMG_CUSTOM_125_EDITOR 951 +#define IMG_CUSTOM_126 952 +#define IMG_CUSTOM_126_EDITOR 953 +#define IMG_CUSTOM_127 954 +#define IMG_CUSTOM_127_EDITOR 955 +#define IMG_CUSTOM_128 956 +#define IMG_CUSTOM_128_EDITOR 957 +#define IMG_CUSTOM_129 958 +#define IMG_CUSTOM_129_EDITOR 959 +#define IMG_CUSTOM_130 960 +#define IMG_CUSTOM_130_EDITOR 961 +#define IMG_CUSTOM_131 962 +#define IMG_CUSTOM_131_EDITOR 963 +#define IMG_CUSTOM_132 964 +#define IMG_CUSTOM_132_EDITOR 965 +#define IMG_CUSTOM_133 966 +#define IMG_CUSTOM_133_EDITOR 967 +#define IMG_CUSTOM_134 968 +#define IMG_CUSTOM_134_EDITOR 969 +#define IMG_CUSTOM_135 970 +#define IMG_CUSTOM_135_EDITOR 971 +#define IMG_CUSTOM_136 972 +#define IMG_CUSTOM_136_EDITOR 973 +#define IMG_CUSTOM_137 974 +#define IMG_CUSTOM_137_EDITOR 975 +#define IMG_CUSTOM_138 976 +#define IMG_CUSTOM_138_EDITOR 977 +#define IMG_CUSTOM_139 978 +#define IMG_CUSTOM_139_EDITOR 979 +#define IMG_CUSTOM_140 980 +#define IMG_CUSTOM_140_EDITOR 981 +#define IMG_CUSTOM_141 982 +#define IMG_CUSTOM_141_EDITOR 983 +#define IMG_CUSTOM_142 984 +#define IMG_CUSTOM_142_EDITOR 985 +#define IMG_CUSTOM_143 986 +#define IMG_CUSTOM_143_EDITOR 987 +#define IMG_CUSTOM_144 988 +#define IMG_CUSTOM_144_EDITOR 989 +#define IMG_CUSTOM_145 990 +#define IMG_CUSTOM_145_EDITOR 991 +#define IMG_CUSTOM_146 992 +#define IMG_CUSTOM_146_EDITOR 993 +#define IMG_CUSTOM_147 994 +#define IMG_CUSTOM_147_EDITOR 995 +#define IMG_CUSTOM_148 996 +#define IMG_CUSTOM_148_EDITOR 997 +#define IMG_CUSTOM_149 998 +#define IMG_CUSTOM_149_EDITOR 999 +#define IMG_CUSTOM_150 1000 +#define IMG_CUSTOM_150_EDITOR 1001 +#define IMG_CUSTOM_151 1002 +#define IMG_CUSTOM_151_EDITOR 1003 +#define IMG_CUSTOM_152 1004 +#define IMG_CUSTOM_152_EDITOR 1005 +#define IMG_CUSTOM_153 1006 +#define IMG_CUSTOM_153_EDITOR 1007 +#define IMG_CUSTOM_154 1008 +#define IMG_CUSTOM_154_EDITOR 1009 +#define IMG_CUSTOM_155 1010 +#define IMG_CUSTOM_155_EDITOR 1011 +#define IMG_CUSTOM_156 1012 +#define IMG_CUSTOM_156_EDITOR 1013 +#define IMG_CUSTOM_157 1014 +#define IMG_CUSTOM_157_EDITOR 1015 +#define IMG_CUSTOM_158 1016 +#define IMG_CUSTOM_158_EDITOR 1017 +#define IMG_CUSTOM_159 1018 +#define IMG_CUSTOM_159_EDITOR 1019 +#define IMG_CUSTOM_160 1020 +#define IMG_CUSTOM_160_EDITOR 1021 +#define IMG_CUSTOM_161 1022 +#define IMG_CUSTOM_161_EDITOR 1023 +#define IMG_CUSTOM_162 1024 +#define IMG_CUSTOM_162_EDITOR 1025 +#define IMG_CUSTOM_163 1026 +#define IMG_CUSTOM_163_EDITOR 1027 +#define IMG_CUSTOM_164 1028 +#define IMG_CUSTOM_164_EDITOR 1029 +#define IMG_CUSTOM_165 1030 +#define IMG_CUSTOM_165_EDITOR 1031 +#define IMG_CUSTOM_166 1032 +#define IMG_CUSTOM_166_EDITOR 1033 +#define IMG_CUSTOM_167 1034 +#define IMG_CUSTOM_167_EDITOR 1035 +#define IMG_CUSTOM_168 1036 +#define IMG_CUSTOM_168_EDITOR 1037 +#define IMG_CUSTOM_169 1038 +#define IMG_CUSTOM_169_EDITOR 1039 +#define IMG_CUSTOM_170 1040 +#define IMG_CUSTOM_170_EDITOR 1041 +#define IMG_CUSTOM_171 1042 +#define IMG_CUSTOM_171_EDITOR 1043 +#define IMG_CUSTOM_172 1044 +#define IMG_CUSTOM_172_EDITOR 1045 +#define IMG_CUSTOM_173 1046 +#define IMG_CUSTOM_173_EDITOR 1047 +#define IMG_CUSTOM_174 1048 +#define IMG_CUSTOM_174_EDITOR 1049 +#define IMG_CUSTOM_175 1050 +#define IMG_CUSTOM_175_EDITOR 1051 +#define IMG_CUSTOM_176 1052 +#define IMG_CUSTOM_176_EDITOR 1053 +#define IMG_CUSTOM_177 1054 +#define IMG_CUSTOM_177_EDITOR 1055 +#define IMG_CUSTOM_178 1056 +#define IMG_CUSTOM_178_EDITOR 1057 +#define IMG_CUSTOM_179 1058 +#define IMG_CUSTOM_179_EDITOR 1059 +#define IMG_CUSTOM_180 1060 +#define IMG_CUSTOM_180_EDITOR 1061 +#define IMG_CUSTOM_181 1062 +#define IMG_CUSTOM_181_EDITOR 1063 +#define IMG_CUSTOM_182 1064 +#define IMG_CUSTOM_182_EDITOR 1065 +#define IMG_CUSTOM_183 1066 +#define IMG_CUSTOM_183_EDITOR 1067 +#define IMG_CUSTOM_184 1068 +#define IMG_CUSTOM_184_EDITOR 1069 +#define IMG_CUSTOM_185 1070 +#define IMG_CUSTOM_185_EDITOR 1071 +#define IMG_CUSTOM_186 1072 +#define IMG_CUSTOM_186_EDITOR 1073 +#define IMG_CUSTOM_187 1074 +#define IMG_CUSTOM_187_EDITOR 1075 +#define IMG_CUSTOM_188 1076 +#define IMG_CUSTOM_188_EDITOR 1077 +#define IMG_CUSTOM_189 1078 +#define IMG_CUSTOM_189_EDITOR 1079 +#define IMG_CUSTOM_190 1080 +#define IMG_CUSTOM_190_EDITOR 1081 +#define IMG_CUSTOM_191 1082 +#define IMG_CUSTOM_191_EDITOR 1083 +#define IMG_CUSTOM_192 1084 +#define IMG_CUSTOM_192_EDITOR 1085 +#define IMG_CUSTOM_193 1086 +#define IMG_CUSTOM_193_EDITOR 1087 +#define IMG_CUSTOM_194 1088 +#define IMG_CUSTOM_194_EDITOR 1089 +#define IMG_CUSTOM_195 1090 +#define IMG_CUSTOM_195_EDITOR 1091 +#define IMG_CUSTOM_196 1092 +#define IMG_CUSTOM_196_EDITOR 1093 +#define IMG_CUSTOM_197 1094 +#define IMG_CUSTOM_197_EDITOR 1095 +#define IMG_CUSTOM_198 1096 +#define IMG_CUSTOM_198_EDITOR 1097 +#define IMG_CUSTOM_199 1098 +#define IMG_CUSTOM_199_EDITOR 1099 +#define IMG_CUSTOM_200 1100 +#define IMG_CUSTOM_200_EDITOR 1101 +#define IMG_CUSTOM_201 1102 +#define IMG_CUSTOM_201_EDITOR 1103 +#define IMG_CUSTOM_202 1104 +#define IMG_CUSTOM_202_EDITOR 1105 +#define IMG_CUSTOM_203 1106 +#define IMG_CUSTOM_203_EDITOR 1107 +#define IMG_CUSTOM_204 1108 +#define IMG_CUSTOM_204_EDITOR 1109 +#define IMG_CUSTOM_205 1110 +#define IMG_CUSTOM_205_EDITOR 1111 +#define IMG_CUSTOM_206 1112 +#define IMG_CUSTOM_206_EDITOR 1113 +#define IMG_CUSTOM_207 1114 +#define IMG_CUSTOM_207_EDITOR 1115 +#define IMG_CUSTOM_208 1116 +#define IMG_CUSTOM_208_EDITOR 1117 +#define IMG_CUSTOM_209 1118 +#define IMG_CUSTOM_209_EDITOR 1119 +#define IMG_CUSTOM_210 1120 +#define IMG_CUSTOM_210_EDITOR 1121 +#define IMG_CUSTOM_211 1122 +#define IMG_CUSTOM_211_EDITOR 1123 +#define IMG_CUSTOM_212 1124 +#define IMG_CUSTOM_212_EDITOR 1125 +#define IMG_CUSTOM_213 1126 +#define IMG_CUSTOM_213_EDITOR 1127 +#define IMG_CUSTOM_214 1128 +#define IMG_CUSTOM_214_EDITOR 1129 +#define IMG_CUSTOM_215 1130 +#define IMG_CUSTOM_215_EDITOR 1131 +#define IMG_CUSTOM_216 1132 +#define IMG_CUSTOM_216_EDITOR 1133 +#define IMG_CUSTOM_217 1134 +#define IMG_CUSTOM_217_EDITOR 1135 +#define IMG_CUSTOM_218 1136 +#define IMG_CUSTOM_218_EDITOR 1137 +#define IMG_CUSTOM_219 1138 +#define IMG_CUSTOM_219_EDITOR 1139 +#define IMG_CUSTOM_220 1140 +#define IMG_CUSTOM_220_EDITOR 1141 +#define IMG_CUSTOM_221 1142 +#define IMG_CUSTOM_221_EDITOR 1143 +#define IMG_CUSTOM_222 1144 +#define IMG_CUSTOM_222_EDITOR 1145 +#define IMG_CUSTOM_223 1146 +#define IMG_CUSTOM_223_EDITOR 1147 +#define IMG_CUSTOM_224 1148 +#define IMG_CUSTOM_224_EDITOR 1149 +#define IMG_CUSTOM_225 1150 +#define IMG_CUSTOM_225_EDITOR 1151 +#define IMG_CUSTOM_226 1152 +#define IMG_CUSTOM_226_EDITOR 1153 +#define IMG_CUSTOM_227 1154 +#define IMG_CUSTOM_227_EDITOR 1155 +#define IMG_CUSTOM_228 1156 +#define IMG_CUSTOM_228_EDITOR 1157 +#define IMG_CUSTOM_229 1158 +#define IMG_CUSTOM_229_EDITOR 1159 +#define IMG_CUSTOM_230 1160 +#define IMG_CUSTOM_230_EDITOR 1161 +#define IMG_CUSTOM_231 1162 +#define IMG_CUSTOM_231_EDITOR 1163 +#define IMG_CUSTOM_232 1164 +#define IMG_CUSTOM_232_EDITOR 1165 +#define IMG_CUSTOM_233 1166 +#define IMG_CUSTOM_233_EDITOR 1167 +#define IMG_CUSTOM_234 1168 +#define IMG_CUSTOM_234_EDITOR 1169 +#define IMG_CUSTOM_235 1170 +#define IMG_CUSTOM_235_EDITOR 1171 +#define IMG_CUSTOM_236 1172 +#define IMG_CUSTOM_236_EDITOR 1173 +#define IMG_CUSTOM_237 1174 +#define IMG_CUSTOM_237_EDITOR 1175 +#define IMG_CUSTOM_238 1176 +#define IMG_CUSTOM_238_EDITOR 1177 +#define IMG_CUSTOM_239 1178 +#define IMG_CUSTOM_239_EDITOR 1179 +#define IMG_CUSTOM_240 1180 +#define IMG_CUSTOM_240_EDITOR 1181 +#define IMG_CUSTOM_241 1182 +#define IMG_CUSTOM_241_EDITOR 1183 +#define IMG_CUSTOM_242 1184 +#define IMG_CUSTOM_242_EDITOR 1185 +#define IMG_CUSTOM_243 1186 +#define IMG_CUSTOM_243_EDITOR 1187 +#define IMG_CUSTOM_244 1188 +#define IMG_CUSTOM_244_EDITOR 1189 +#define IMG_CUSTOM_245 1190 +#define IMG_CUSTOM_245_EDITOR 1191 +#define IMG_CUSTOM_246 1192 +#define IMG_CUSTOM_246_EDITOR 1193 +#define IMG_CUSTOM_247 1194 +#define IMG_CUSTOM_247_EDITOR 1195 +#define IMG_CUSTOM_248 1196 +#define IMG_CUSTOM_248_EDITOR 1197 +#define IMG_CUSTOM_249 1198 +#define IMG_CUSTOM_249_EDITOR 1199 +#define IMG_CUSTOM_250 1200 +#define IMG_CUSTOM_250_EDITOR 1201 +#define IMG_CUSTOM_251 1202 +#define IMG_CUSTOM_251_EDITOR 1203 +#define IMG_CUSTOM_252 1204 +#define IMG_CUSTOM_252_EDITOR 1205 +#define IMG_CUSTOM_253 1206 +#define IMG_CUSTOM_253_EDITOR 1207 +#define IMG_CUSTOM_254 1208 +#define IMG_CUSTOM_254_EDITOR 1209 +#define IMG_CUSTOM_255 1210 +#define IMG_CUSTOM_255_EDITOR 1211 +#define IMG_CUSTOM_256 1212 +#define IMG_CUSTOM_256_EDITOR 1213 +#define IMG_TOON_1 1214 +#define IMG_TOON_2 1215 +#define IMG_TOON_3 1216 +#define IMG_TOON_4 1217 +#define IMG_TOON_5 1218 +#define IMG_TOON_6 1219 +#define IMG_TOON_7 1220 +#define IMG_TOON_8 1221 +#define IMG_TOON_9 1222 +#define IMG_TOON_10 1223 +#define IMG_TOON_11 1224 +#define IMG_TOON_12 1225 +#define IMG_TOON_13 1226 +#define IMG_TOON_14 1227 +#define IMG_TOON_15 1228 +#define IMG_TOON_16 1229 +#define IMG_TOON_17 1230 +#define IMG_TOON_18 1231 +#define IMG_TOON_19 1232 +#define IMG_TOON_20 1233 +#define IMG_MENU_CALIBRATE_RED 1234 +#define IMG_MENU_CALIBRATE_BLUE 1235 +#define IMG_MENU_CALIBRATE_YELLOW 1236 +#define IMG_MENU_BUTTON 1237 +#define IMG_MENU_BUTTON_ACTIVE 1238 +#define IMG_MENU_BUTTON_LEFT 1239 +#define IMG_MENU_BUTTON_RIGHT 1240 +#define IMG_MENU_BUTTON_UP 1241 +#define IMG_MENU_BUTTON_DOWN 1242 +#define IMG_MENU_BUTTON_LEFT_ACTIVE 1243 +#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1244 +#define IMG_MENU_BUTTON_UP_ACTIVE 1245 +#define IMG_MENU_BUTTON_DOWN_ACTIVE 1246 +#define IMG_MENU_SCROLLBAR 1247 +#define IMG_MENU_SCROLLBAR_ACTIVE 1248 +#define IMG_FONT_INITIAL_1 1249 +#define IMG_FONT_INITIAL_2 1250 +#define IMG_FONT_INITIAL_3 1251 +#define IMG_FONT_INITIAL_4 1252 +#define IMG_FONT_TITLE_1 1253 +#define IMG_FONT_TITLE_1_LEVELS 1254 +#define IMG_FONT_TITLE_2 1255 +#define IMG_FONT_MENU_1 1256 +#define IMG_FONT_MENU_2 1257 +#define IMG_FONT_TEXT_1 1258 +#define IMG_FONT_TEXT_1_LEVELS 1259 +#define IMG_FONT_TEXT_1_PREVIEW 1260 +#define IMG_FONT_TEXT_1_SCORES 1261 +#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1262 +#define IMG_FONT_TEXT_2 1263 +#define IMG_FONT_TEXT_2_LEVELS 1264 +#define IMG_FONT_TEXT_2_PREVIEW 1265 +#define IMG_FONT_TEXT_2_SCORES 1266 +#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1267 +#define IMG_FONT_TEXT_3 1268 +#define IMG_FONT_TEXT_3_LEVELS 1269 +#define IMG_FONT_TEXT_3_PREVIEW 1270 +#define IMG_FONT_TEXT_3_SCORES 1271 +#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1272 +#define IMG_FONT_TEXT_4 1273 +#define IMG_FONT_TEXT_4_LEVELS 1274 +#define IMG_FONT_TEXT_4_SCORES 1275 +#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1276 +#define IMG_FONT_ENVELOPE_1 1277 +#define IMG_FONT_ENVELOPE_2 1278 +#define IMG_FONT_ENVELOPE_3 1279 +#define IMG_FONT_ENVELOPE_4 1280 +#define IMG_FONT_INPUT_1 1281 +#define IMG_FONT_INPUT_1_MAIN 1282 +#define IMG_FONT_INPUT_1_ACTIVE 1283 +#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1284 +#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1285 +#define IMG_FONT_INPUT_2 1286 +#define IMG_FONT_INPUT_2_ACTIVE 1287 +#define IMG_FONT_OPTION_OFF 1288 +#define IMG_FONT_OPTION_ON 1289 +#define IMG_FONT_VALUE_1 1290 +#define IMG_FONT_VALUE_2 1291 +#define IMG_FONT_VALUE_OLD 1292 +#define IMG_FONT_LEVEL_NUMBER 1293 +#define IMG_FONT_TAPE_RECORDER 1294 +#define IMG_FONT_GAME_INFO 1295 +#define IMG_GLOBAL_BORDER 1296 +#define IMG_GLOBAL_DOOR 1297 +#define IMG_EDITOR_ELEMENT_BORDER 1298 +#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1299 +#define IMG_BACKGROUND_ENVELOPE_1 1300 +#define IMG_BACKGROUND_ENVELOPE_2 1301 +#define IMG_BACKGROUND_ENVELOPE_3 1302 +#define IMG_BACKGROUND_ENVELOPE_4 1303 +#define IMG_BACKGROUND 1304 +#define IMG_BACKGROUND_MAIN 1305 +#define IMG_BACKGROUND_LEVELS 1306 +#define IMG_BACKGROUND_SCORES 1307 +#define IMG_BACKGROUND_EDITOR 1308 +#define IMG_BACKGROUND_INFO 1309 +#define IMG_BACKGROUND_SETUP 1310 +#define IMG_BACKGROUND_DOOR 1311 -#define NUM_IMAGE_FILES 1320 +#define NUM_IMAGE_FILES 1312 #endif /* CONF_GFX_H */ diff --git a/src/conf_mus.c b/src/conf_mus.c new file mode 100644 index 00000000..6fe7f9da --- /dev/null +++ b/src/conf_mus.c @@ -0,0 +1,41 @@ +/*********************************************************** +* Rocks'n'Diamonds -- McDuffin Strikes Back! * +*----------------------------------------------------------* +* (c) 1995-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * +*----------------------------------------------------------* +* conf_mus.c * +***********************************************************/ + +#include "libgame/libgame.h" +#include "main.h" + + +/* List values that are not defined in the configuration file are set to + reliable default values. If that value is MUS_ARG_UNDEFINED, it will + be dynamically determined, using some of the other list values. */ + +struct ConfigInfo music_config_suffix[] = +{ + { ".mode_loop", ARG_UNDEFINED, TYPE_BOOLEAN }, + + { NULL, NULL, 0 } +}; + +struct ConfigInfo music_config[] = +{ + { "background", UNDEFINED_FILENAME }, + { "background.MAIN", UNDEFINED_FILENAME }, + { "background.LEVELS", UNDEFINED_FILENAME }, + { "background.SCORES", UNDEFINED_FILENAME }, + { "background.EDITOR", UNDEFINED_FILENAME }, + { "background.INFO", "rhythmloop.wav" }, + { "background.SETUP", UNDEFINED_FILENAME }, + { "background.PLAYING", UNDEFINED_FILENAME }, + + { NULL, NULL } +}; diff --git a/src/conf_mus.h b/src/conf_mus.h new file mode 100644 index 00000000..ea12090f --- /dev/null +++ b/src/conf_mus.h @@ -0,0 +1,32 @@ +/*********************************************************** +* Rocks'n'Diamonds -- McDuffin Strikes Back! * +*----------------------------------------------------------* +* (c) 1995-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * +*----------------------------------------------------------* +* conf_mus.h * +***********************************************************/ + +/* ----- this file was automatically generated -- do not edit by hand ----- */ + +#ifndef CONF_MUS_H +#define CONF_MUS_H + +/* values for music configuration */ + +#define MUS_BACKGROUND 0 +#define MUS_BACKGROUND_MAIN 1 +#define MUS_BACKGROUND_LEVELS 2 +#define MUS_BACKGROUND_SCORES 3 +#define MUS_BACKGROUND_EDITOR 4 +#define MUS_BACKGROUND_INFO 5 +#define MUS_BACKGROUND_SETUP 6 +#define MUS_BACKGROUND_PLAYING 7 + +#define NUM_MUSIC_FILES 8 + +#endif /* CONF_MUS_H */ diff --git a/src/conf_snd.c b/src/conf_snd.c index 27b664b0..2a2d65af 100644 --- a/src/conf_snd.c +++ b/src/conf_snd.c @@ -16,7 +16,7 @@ /* List values that are not defined in the configuration file are set to - reliable default values. If that value is GFX_ARG_UNDEFINED, it will + reliable default values. If that value is SND_ARG_UNDEFINED, it will be dynamically determined, using some of the other list values. */ struct ConfigInfo sound_config_suffix[] = diff --git a/src/conf_snd.h b/src/conf_snd.h index 9d89363f..7cf2f25e 100644 --- a/src/conf_snd.h +++ b/src/conf_snd.h @@ -18,186 +18,186 @@ /* values for sounds configuration */ -#define SND_CLASS_DEFAULT_DIGGING 0 -#define SND_CLASS_DEFAULT_COLLECTING 1 -#define SND_CLASS_DEFAULT_SNAPPING 2 -#define SND_CLASS_DEFAULT_PUSHING 3 -#define SND_CLASS_DEFAULT_IMPACT 4 -#define SND_CLASS_DEFAULT_WALKING 5 -#define SND_CLASS_DEFAULT_PASSING 6 -#define SND_CLASS_DEFAULT_DYING 7 -#define SND_CLASS_DEFAULT_EXPLODING 8 -#define SND_CLASS_SP_DEFAULT_EXPLODING 9 -#define SND_BD_DIAMOND_COLLECTING 10 +#define SND_CLASS_DEFAULT_DIGGING 0 +#define SND_CLASS_DEFAULT_COLLECTING 1 +#define SND_CLASS_DEFAULT_SNAPPING 2 +#define SND_CLASS_DEFAULT_PUSHING 3 +#define SND_CLASS_DEFAULT_IMPACT 4 +#define SND_CLASS_DEFAULT_WALKING 5 +#define SND_CLASS_DEFAULT_PASSING 6 +#define SND_CLASS_DEFAULT_DYING 7 +#define SND_CLASS_DEFAULT_EXPLODING 8 +#define SND_CLASS_SP_DEFAULT_EXPLODING 9 +#define SND_BD_DIAMOND_COLLECTING 10 #define SND_BD_DIAMOND_IMPACT 11 -#define SND_BD_ROCK_PUSHING 12 -#define SND_BD_ROCK_IMPACT 13 +#define SND_BD_ROCK_PUSHING 12 +#define SND_BD_ROCK_IMPACT 13 #define SND_BD_MAGIC_WALL_ACTIVATING 14 -#define SND_BD_MAGIC_WALL_ACTIVE 15 -#define SND_BD_MAGIC_WALL_FILLING 16 +#define SND_BD_MAGIC_WALL_ACTIVE 15 +#define SND_BD_MAGIC_WALL_FILLING 16 #define SND_BD_AMOEBA_WAITING 17 #define SND_BD_AMOEBA_GROWING 18 #define SND_BD_AMOEBA_TURNING_TO_GEM 19 #define SND_BD_AMOEBA_TURNING_TO_ROCK 20 #define SND_BD_BUTTERFLY_MOVING 21 -#define SND_BD_BUTTERFLY_WAITING 22 +#define SND_BD_BUTTERFLY_WAITING 22 #define SND_BD_FIREFLY_MOVING 23 #define SND_BD_FIREFLY_WAITING 24 -#define SND_SP_BASE_DIGGING 25 -#define SND_SP_BUGGY_BASE_DIGGING 26 -#define SND_SP_BUGGY_BASE_ACTIVE 27 -#define SND_SP_INFOTRON_COLLECTING 28 +#define SND_SP_BASE_DIGGING 25 +#define SND_SP_BUGGY_BASE_DIGGING 26 +#define SND_SP_BUGGY_BASE_ACTIVE 27 +#define SND_SP_INFOTRON_COLLECTING 28 #define SND_SP_INFOTRON_IMPACT 29 -#define SND_SP_ZONK_PUSHING 30 -#define SND_SP_ZONK_IMPACT 31 -#define SND_SP_DISK_RED_COLLECTING 32 -#define SND_SP_DISK_ORANGE_PUSHING 33 -#define SND_SP_DISK_YELLOW_PUSHING 34 -#define SND_CLASS_SP_PORT_PASSING 35 -#define SND_CLASS_SP_EXIT_PASSING 36 -#define SND_CLASS_SP_EXIT_OPENING 37 -#define SND_CLASS_SP_EXIT_CLOSING 38 +#define SND_SP_ZONK_PUSHING 30 +#define SND_SP_ZONK_IMPACT 31 +#define SND_SP_DISK_RED_COLLECTING 32 +#define SND_SP_DISK_ORANGE_PUSHING 33 +#define SND_SP_DISK_YELLOW_PUSHING 34 +#define SND_CLASS_SP_PORT_PASSING 35 +#define SND_CLASS_SP_EXIT_PASSING 36 +#define SND_CLASS_SP_EXIT_OPENING 37 +#define SND_CLASS_SP_EXIT_CLOSING 38 #define SND_SP_SNIKSNAK_MOVING 39 #define SND_SP_SNIKSNAK_WAITING 40 #define SND_SP_ELECTRON_MOVING 41 #define SND_SP_ELECTRON_WAITING 42 -#define SND_SP_TERMINAL_ACTIVATING 43 +#define SND_SP_TERMINAL_ACTIVATING 43 #define SND_SP_TERMINAL_ACTIVE 44 -#define SND_CLASS_SOKOBAN_PUSHING 45 -#define SND_CLASS_SOKOBAN_FILLING 46 -#define SND_CLASS_SOKOBAN_EMPTYING 47 -#define SND_CLASS_PLAYER_MOVING 48 -#define SND_SAND_DIGGING 49 +#define SND_CLASS_SOKOBAN_PUSHING 45 +#define SND_CLASS_SOKOBAN_FILLING 46 +#define SND_CLASS_SOKOBAN_EMPTYING 47 +#define SND_CLASS_PLAYER_MOVING 48 +#define SND_SAND_DIGGING 49 #define SND_EMERALD_COLLECTING 50 -#define SND_EMERALD_IMPACT 51 +#define SND_EMERALD_IMPACT 51 #define SND_DIAMOND_COLLECTING 52 -#define SND_DIAMOND_IMPACT 53 +#define SND_DIAMOND_IMPACT 53 #define SND_DIAMOND_BREAKING 54 -#define SND_ROCK_PUSHING 55 +#define SND_ROCK_PUSHING 55 #define SND_ROCK_IMPACT 56 -#define SND_BOMB_PUSHING 57 +#define SND_BOMB_PUSHING 57 #define SND_NUT_PUSHING 58 -#define SND_NUT_BREAKING 59 +#define SND_NUT_BREAKING 59 #define SND_NUT_IMPACT 60 -#define SND_CLASS_DYNAMITE_COLLECTING 61 -#define SND_CLASS_DYNAMITE_DROPPING 62 -#define SND_CLASS_DYNAMITE_ACTIVE 63 -#define SND_CLASS_KEY_COLLECTING 64 -#define SND_CLASS_GATE_PASSING 65 +#define SND_CLASS_DYNAMITE_COLLECTING 61 +#define SND_CLASS_DYNAMITE_DROPPING 62 +#define SND_CLASS_DYNAMITE_ACTIVE 63 +#define SND_CLASS_KEY_COLLECTING 64 +#define SND_CLASS_GATE_PASSING 65 #define SND_BUG_MOVING 66 #define SND_BUG_WAITING 67 #define SND_SPACESHIP_MOVING 68 #define SND_SPACESHIP_WAITING 69 -#define SND_YAMYAM_MOVING 70 -#define SND_YAMYAM_WAITING 71 -#define SND_YAMYAM_DIGGING 72 -#define SND_ROBOT_MOVING 73 -#define SND_ROBOT_WAITING 74 -#define SND_ROBOT_WHEEL_ACTIVATING 75 +#define SND_YAMYAM_MOVING 70 +#define SND_YAMYAM_WAITING 71 +#define SND_YAMYAM_DIGGING 72 +#define SND_ROBOT_MOVING 73 +#define SND_ROBOT_WAITING 74 +#define SND_ROBOT_WHEEL_ACTIVATING 75 #define SND_ROBOT_WHEEL_ACTIVE 76 -#define SND_MAGIC_WALL_ACTIVATING 77 +#define SND_MAGIC_WALL_ACTIVATING 77 #define SND_MAGIC_WALL_ACTIVE 78 #define SND_MAGIC_WALL_FILLING 79 -#define SND_CLASS_AMOEBA_WAITING 80 -#define SND_CLASS_AMOEBA_GROWING 81 -#define SND_CLASS_AMOEBA_DROPPING 82 -#define SND_ACID_SPLASHING 83 -#define SND_CLASS_QUICKSAND_FILLING 84 -#define SND_CLASS_QUICKSAND_EMPTYING 85 -#define SND_CLASS_EXIT_OPENING 86 -#define SND_CLASS_EXIT_CLOSING 87 -#define SND_CLASS_EXIT_PASSING 88 -#define SND_PENGUIN_PASSING 89 -#define SND_BALLOON_MOVING 90 -#define SND_BALLOON_WAITING 91 -#define SND_BALLOON_PUSHING 92 -#define SND_CLASS_BALLOON_SWITCH_ACTIVATING 93 -#define SND_SPRING_MOVING 94 -#define SND_SPRING_PUSHING 95 -#define SND_SPRING_IMPACT 96 -#define SND_CLASS_WALL_GROWING 97 +#define SND_CLASS_AMOEBA_WAITING 80 +#define SND_CLASS_AMOEBA_GROWING 81 +#define SND_CLASS_AMOEBA_DROPPING 82 +#define SND_ACID_SPLASHING 83 +#define SND_CLASS_QUICKSAND_FILLING 84 +#define SND_CLASS_QUICKSAND_EMPTYING 85 +#define SND_CLASS_EXIT_OPENING 86 +#define SND_CLASS_EXIT_CLOSING 87 +#define SND_CLASS_EXIT_PASSING 88 +#define SND_PENGUIN_PASSING 89 +#define SND_BALLOON_MOVING 90 +#define SND_BALLOON_WAITING 91 +#define SND_BALLOON_PUSHING 92 +#define SND_CLASS_BALLOON_SWITCH_ACTIVATING 93 +#define SND_SPRING_MOVING 94 +#define SND_SPRING_PUSHING 95 +#define SND_SPRING_IMPACT 96 +#define SND_CLASS_WALL_GROWING 97 #define SND_PEARL_COLLECTING 98 -#define SND_PEARL_BREAKING 99 -#define SND_PEARL_IMPACT 100 +#define SND_PEARL_BREAKING 99 +#define SND_PEARL_IMPACT 100 #define SND_CRYSTAL_COLLECTING 101 -#define SND_CRYSTAL_IMPACT 102 -#define SND_CLASS_ENVELOPE_COLLECTING 103 -#define SND_CLASS_ENVELOPE_OPENING 104 -#define SND_CLASS_ENVELOPE_CLOSING 105 -#define SND_INVISIBLE_SAND_DIGGING 106 +#define SND_CRYSTAL_IMPACT 102 +#define SND_CLASS_ENVELOPE_COLLECTING 103 +#define SND_CLASS_ENVELOPE_OPENING 104 +#define SND_CLASS_ENVELOPE_CLOSING 105 +#define SND_INVISIBLE_SAND_DIGGING 106 #define SND_SHIELD_NORMAL_COLLECTING 107 -#define SND_SHIELD_NORMAL_ACTIVE 108 +#define SND_SHIELD_NORMAL_ACTIVE 108 #define SND_SHIELD_DEADLY_COLLECTING 109 -#define SND_SHIELD_DEADLY_ACTIVE 110 -#define SND_EXTRA_TIME_COLLECTING 111 +#define SND_SHIELD_DEADLY_ACTIVE 110 +#define SND_EXTRA_TIME_COLLECTING 111 #define SND_MOLE_MOVING 112 -#define SND_MOLE_WAITING 113 -#define SND_MOLE_DIGGING 114 -#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING 115 -#define SND_CLASS_SWITCHGATE_OPENING 116 -#define SND_CLASS_SWITCHGATE_CLOSING 117 -#define SND_CLASS_SWITCHGATE_PASSING 118 +#define SND_MOLE_WAITING 113 +#define SND_MOLE_DIGGING 114 +#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING 115 +#define SND_CLASS_SWITCHGATE_OPENING 116 +#define SND_CLASS_SWITCHGATE_CLOSING 117 +#define SND_CLASS_SWITCHGATE_PASSING 118 #define SND_TIMEGATE_SWITCH_ACTIVATING 119 -#define SND_TIMEGATE_SWITCH_ACTIVE 120 -#define SND_TIMEGATE_SWITCH_DEACTIVATING 121 +#define SND_TIMEGATE_SWITCH_ACTIVE 120 +#define SND_TIMEGATE_SWITCH_DEACTIVATING 121 #define SND_TIMEGATE_OPENING 122 -#define SND_CLASS_TIMEGATE_CLOSING 123 -#define SND_CLASS_TIMEGATE_PASSING 124 -#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING 125 -#define SND_CLASS_CONVEYOR_BELT_ACTIVE 126 -#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING 127 -#define SND_LIGHT_SWITCH_ACTIVATING 128 +#define SND_CLASS_TIMEGATE_CLOSING 123 +#define SND_CLASS_TIMEGATE_PASSING 124 +#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING 125 +#define SND_CLASS_CONVEYOR_BELT_ACTIVE 126 +#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING 127 +#define SND_LIGHT_SWITCH_ACTIVATING 128 #define SND_LIGHT_SWITCH_DEACTIVATING 129 #define SND_DX_SUPABOMB_PUSHING 130 -#define SND_TRAP_DIGGING 131 -#define SND_TRAP_ACTIVATING 132 -#define SND_CLASS_TUBE_WALKING 133 -#define SND_AMOEBA_TURNING_TO_GEM 134 -#define SND_AMOEBA_TURNING_TO_ROCK 135 -#define SND_SPEED_PILL_COLLECTING 136 +#define SND_TRAP_DIGGING 131 +#define SND_TRAP_ACTIVATING 132 +#define SND_CLASS_TUBE_WALKING 133 +#define SND_AMOEBA_TURNING_TO_GEM 134 +#define SND_AMOEBA_TURNING_TO_ROCK 135 +#define SND_SPEED_PILL_COLLECTING 136 #define SND_DYNABOMB_INCREASE_NUMBER_COLLECTING 137 #define SND_DYNABOMB_INCREASE_SIZE_COLLECTING 138 #define SND_DYNABOMB_INCREASE_POWER_COLLECTING 139 -#define SND_CLASS_DYNABOMB_DROPPING 140 -#define SND_CLASS_DYNABOMB_ACTIVE 141 +#define SND_CLASS_DYNABOMB_DROPPING 140 +#define SND_CLASS_DYNABOMB_ACTIVE 141 #define SND_SATELLITE_MOVING 142 #define SND_SATELLITE_WAITING 143 #define SND_SATELLITE_PUSHING 144 -#define SND_LAMP_ACTIVATING 145 +#define SND_LAMP_ACTIVATING 145 #define SND_LAMP_DEACTIVATING 146 #define SND_TIME_ORB_FULL_COLLECTING 147 -#define SND_TIME_ORB_FULL_IMPACT 148 -#define SND_TIME_ORB_EMPTY_PUSHING 149 -#define SND_TIME_ORB_EMPTY_IMPACT 150 -#define SND_GAME_OF_LIFE_WAITING 151 -#define SND_GAME_OF_LIFE_GROWING 152 -#define SND_BIOMAZE_WAITING 153 -#define SND_BIOMAZE_GROWING 154 -#define SND_PACMAN_MOVING 155 -#define SND_PACMAN_WAITING 156 -#define SND_PACMAN_DIGGING 157 +#define SND_TIME_ORB_FULL_IMPACT 148 +#define SND_TIME_ORB_EMPTY_PUSHING 149 +#define SND_TIME_ORB_EMPTY_IMPACT 150 +#define SND_GAME_OF_LIFE_WAITING 151 +#define SND_GAME_OF_LIFE_GROWING 152 +#define SND_BIOMAZE_WAITING 153 +#define SND_BIOMAZE_GROWING 154 +#define SND_PACMAN_MOVING 155 +#define SND_PACMAN_WAITING 156 +#define SND_PACMAN_DIGGING 157 #define SND_DARK_YAMYAM_MOVING 158 #define SND_DARK_YAMYAM_WAITING 159 #define SND_DARK_YAMYAM_DIGGING 160 -#define SND_PENGUIN_MOVING 161 -#define SND_PENGUIN_WAITING 162 +#define SND_PENGUIN_MOVING 161 +#define SND_PENGUIN_WAITING 162 #define SND_PIG_MOVING 163 #define SND_PIG_WAITING 164 #define SND_PIG_DIGGING 165 -#define SND_DRAGON_MOVING 166 -#define SND_DRAGON_WAITING 167 +#define SND_DRAGON_MOVING 166 +#define SND_DRAGON_WAITING 167 #define SND_DRAGON_ATTACKING 168 -#define SND_GAME_STARTING 169 +#define SND_GAME_STARTING 169 #define SND_GAME_RUNNING_OUT_OF_TIME 170 -#define SND_GAME_LEVELTIME_BONUS 171 +#define SND_GAME_LEVELTIME_BONUS 171 #define SND_GAME_LOSING 172 -#define SND_GAME_WINNING 173 -#define SND_GAME_SOKOBAN_SOLVING 174 -#define SND_DOOR_OPENING 175 -#define SND_DOOR_CLOSING 176 +#define SND_GAME_WINNING 173 +#define SND_GAME_SOKOBAN_SOLVING 174 +#define SND_DOOR_OPENING 175 +#define SND_DOOR_CLOSING 176 #define SND_BACKGROUND_SCORES 177 -#define SND_BACKGROUND_INFO 178 +#define SND_BACKGROUND_INFO 178 -#define NUM_SOUND_FILES 179 +#define NUM_SOUND_FILES 179 #endif /* CONF_SND_H */ diff --git a/src/conftime.h b/src/conftime.h index b3dbda7e..a2246cbf 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2003-11-14 23:13]" +#define COMPILE_DATE_STRING "[2003-11-16 04:25]" diff --git a/src/game.c b/src/game.c index f5c787f6..27aa2b40 100644 --- a/src/game.c +++ b/src/game.c @@ -182,12 +182,13 @@ static boolean CheckTriggeredElementChange(int, int, int, int); static boolean CheckElementSideChange(int, int, int, int, int, int); static boolean CheckElementChange(int, int, int, int); -static void PlaySoundLevel(int, int, int); -static void PlaySoundLevelNearest(int, int, int); -static void PlaySoundLevelAction(int, int, int); -static void PlaySoundLevelElementAction(int, int, int, int); -static void PlaySoundLevelActionIfLoop(int, int, int); -static void StopSoundLevelActionIfLoop(int, int, int); +static void PlayLevelSound(int, int, int); +static void PlayLevelSoundNearest(int, int, int); +static void PlayLevelSoundAction(int, int, int); +static void PlayLevelSoundElementAction(int, int, int, int); +static void PlayLevelSoundActionIfLoop(int, int, int); +static void StopLevelSoundActionIfLoop(int, int, int); +static void PlayLevelMusic(); static void MapGameButtons(); static void HandleGameButtons(struct GadgetInfo *); @@ -1449,8 +1450,9 @@ void InitGame() OpenDoor(DOOR_OPEN_ALL); PlaySoundStereo(SND_GAME_STARTING, SOUND_MIDDLE); + if (setup.sound_music) - PlayMusic(level_nr); + PlayLevelMusic(); KeyboardAutoRepeatOffUnlessAutoplay(); @@ -1717,7 +1719,7 @@ void GameWon() Feld[ExitX][ExitY] = (element == EL_EXIT_OPEN ? EL_EXIT_CLOSING : EL_SP_EXIT_CLOSING); - PlaySoundLevelElementAction(ExitX, ExitY, element, ACTION_CLOSING); + PlayLevelSoundElementAction(ExitX, ExitY, element, ACTION_CLOSING); } /* Hero disappears */ @@ -2054,14 +2056,14 @@ void CheckDynamite(int x, int y) if (MovDelay[x][y] != 0) { DrawDynamite(x, y); - PlaySoundLevelActionIfLoop(x, y, ACTION_ACTIVE); + PlayLevelSoundActionIfLoop(x, y, ACTION_ACTIVE); return; } } #if 1 - StopSoundLevelActionIfLoop(x, y, ACTION_ACTIVE); + StopLevelSoundActionIfLoop(x, y, ACTION_ACTIVE); #else if (Feld[x][y] == EL_DYNAMITE_ACTIVE || Feld[x][y] == EL_SP_DISK_RED_ACTIVE) @@ -2174,7 +2176,7 @@ void Explode(int ex, int ey, int phase, int mode) #endif if (mode == EX_NORMAL || mode == EX_CENTER) - PlaySoundLevelAction(ex, ey, ACTION_EXPLODING); + PlayLevelSoundAction(ex, ey, ACTION_EXPLODING); /* remove things displayed in background while burning dynamite */ if (Back[ex][ey] != EL_EMPTY && !IS_INDESTRUCTIBLE(Back[ex][ey])) @@ -2559,12 +2561,12 @@ void Bang(int x, int y) #if 0 #if 1 - PlaySoundLevelAction(x, y, ACTION_EXPLODING); + PlayLevelSoundAction(x, y, ACTION_EXPLODING); #else if (game.emulation == EMU_SUPAPLEX) - PlaySoundLevel(x, y, SND_SP_ELEMENT_EXPLODING); + PlayLevelSound(x, y, SND_SP_ELEMENT_EXPLODING); else - PlaySoundLevel(x, y, SND_ELEMENT_EXPLODING); + PlayLevelSound(x, y, SND_ELEMENT_EXPLODING); #endif #endif @@ -2622,7 +2624,7 @@ void SplashAcid(int x, int y) if (element != EL_ACID_SPLASH_LEFT && element != EL_ACID_SPLASH_RIGHT) { - PlaySoundLevel(x, y, SND_ACID_SPLASHING); + PlayLevelSound(x, y, SND_ACID_SPLASHING); if (IN_LEV_FIELD(x-1, y) && IS_FREE(x-1, y) && (!IN_LEV_FIELD(x-1, y-1) || @@ -2822,9 +2824,9 @@ static void ToggleSwitchgateSwitch(int x, int y) { Feld[xx][yy] = EL_SWITCHGATE_CLOSING; #if 1 - PlaySoundLevelAction(xx, yy, ACTION_CLOSING); + PlayLevelSoundAction(xx, yy, ACTION_CLOSING); #else - PlaySoundLevel(xx, yy, SND_SWITCHGATE_CLOSING); + PlayLevelSound(xx, yy, SND_SWITCHGATE_CLOSING); #endif } else if (element == EL_SWITCHGATE_CLOSED || @@ -2832,9 +2834,9 @@ static void ToggleSwitchgateSwitch(int x, int y) { Feld[xx][yy] = EL_SWITCHGATE_OPENING; #if 1 - PlaySoundLevelAction(xx, yy, ACTION_OPENING); + PlayLevelSoundAction(xx, yy, ACTION_OPENING); #else - PlaySoundLevel(xx, yy, SND_SWITCHGATE_OPENING); + PlayLevelSound(xx, yy, SND_SWITCHGATE_OPENING); #endif } } @@ -2928,7 +2930,7 @@ static void ActivateTimegateSwitch(int x, int y) element == EL_TIMEGATE_CLOSING) { Feld[xx][yy] = EL_TIMEGATE_OPENING; - PlaySoundLevel(xx, yy, SND_TIMEGATE_OPENING); + PlayLevelSound(xx, yy, SND_TIMEGATE_OPENING); } /* @@ -3018,12 +3020,12 @@ void Impact(int x, int y) else if (impact && element == EL_PEARL) { Feld[x][y] = EL_PEARL_BREAKING; - PlaySoundLevel(x, y, SND_PEARL_BREAKING); + PlayLevelSound(x, y, SND_PEARL_BREAKING); return; } else if (impact && CheckElementChange(x, y, element, CE_IMPACT)) { - PlaySoundLevelElementAction(x, y, element, ACTION_IMPACT); + PlayLevelSoundElementAction(x, y, element, ACTION_IMPACT); return; } @@ -3064,7 +3066,7 @@ void Impact(int x, int y) game.magic_wall_time_left = level.time_magic_wall * FRAMES_PER_SECOND; game.magic_wall_active = TRUE; - PlaySoundLevel(x, y, (smashed == EL_MAGIC_WALL ? + PlayLevelSound(x, y, (smashed == EL_MAGIC_WALL ? SND_MAGIC_WALL_ACTIVATING : SND_BD_MAGIC_WALL_ACTIVATING)); } @@ -3128,20 +3130,20 @@ void Impact(int x, int y) else if (smashed == EL_NUT) { Feld[x][y + 1] = EL_NUT_BREAKING; - PlaySoundLevel(x, y, SND_NUT_BREAKING); + PlayLevelSound(x, y, SND_NUT_BREAKING); RaiseScoreElement(EL_NUT); return; } else if (smashed == EL_PEARL) { Feld[x][y + 1] = EL_PEARL_BREAKING; - PlaySoundLevel(x, y, SND_PEARL_BREAKING); + PlayLevelSound(x, y, SND_PEARL_BREAKING); return; } else if (smashed == EL_DIAMOND) { Feld[x][y + 1] = EL_DIAMOND_BREAKING; - PlaySoundLevel(x, y, SND_DIAMOND_BREAKING); + PlayLevelSound(x, y, SND_DIAMOND_BREAKING); return; } else if (IS_BELT_SWITCH(smashed)) @@ -3181,16 +3183,16 @@ void Impact(int x, int y) Feld[x][y + 1] == EL_BD_MAGIC_WALL_ACTIVE)) { if (Feld[x][y + 1] == EL_MAGIC_WALL_ACTIVE) - PlaySoundLevel(x, y, SND_MAGIC_WALL_FILLING); + PlayLevelSound(x, y, SND_MAGIC_WALL_FILLING); else if (Feld[x][y + 1] == EL_BD_MAGIC_WALL_ACTIVE) - PlaySoundLevel(x, y, SND_BD_MAGIC_WALL_FILLING); + PlayLevelSound(x, y, SND_BD_MAGIC_WALL_FILLING); return; } /* play sound of object that hits the ground */ if (lastline || object_hit) - PlaySoundLevelElementAction(x, y, element, ACTION_IMPACT); + PlayLevelSoundElementAction(x, y, element, ACTION_IMPACT); } inline static void TurnRoundExt(int x, int y) @@ -3837,9 +3839,9 @@ void StartMoving(int x, int y) Feld[x][y] = EL_QUICKSAND_EMPTYING; Store[x][y] = EL_ROCK; #if 1 - PlaySoundLevelAction(x, y, ACTION_EMPTYING); + PlayLevelSoundAction(x, y, ACTION_EMPTYING); #else - PlaySoundLevel(x, y, SND_QUICKSAND_EMPTYING); + PlayLevelSound(x, y, SND_QUICKSAND_EMPTYING); #endif } else if (Feld[x][y + 1] == EL_QUICKSAND_EMPTY) @@ -3859,9 +3861,9 @@ void StartMoving(int x, int y) Store[x][y + 1] = Store[x][y]; Store[x][y] = 0; #if 1 - PlaySoundLevelAction(x, y, ACTION_FILLING); + PlayLevelSoundAction(x, y, ACTION_FILLING); #else - PlaySoundLevel(x, y, SND_QUICKSAND_FILLING); + PlayLevelSound(x, y, SND_QUICKSAND_FILLING); #endif } } @@ -3874,9 +3876,9 @@ void StartMoving(int x, int y) Feld[x][y] = EL_QUICKSAND_FILLING; Store[x][y] = element; #if 1 - PlaySoundLevelAction(x, y, ACTION_FILLING); + PlayLevelSoundAction(x, y, ACTION_FILLING); #else - PlaySoundLevel(x, y, SND_QUICKSAND_FILLING); + PlayLevelSound(x, y, SND_QUICKSAND_FILLING); #endif } else if (element == EL_MAGIC_WALL_FULL) @@ -4193,7 +4195,7 @@ void StartMoving(int x, int y) #else DrawLevelElementAnimationIfNeeded(x, y, element); #endif - PlaySoundLevelAction(x, y, ACTION_WAITING); + PlayLevelSoundAction(x, y, ACTION_WAITING); } else if (element == EL_SP_ELECTRON) DrawLevelElementAnimationIfNeeded(x, y, element); @@ -4220,7 +4222,7 @@ void StartMoving(int x, int y) else DrawLevelField(x, y); - PlaySoundLevelActionIfLoop(x, y, ACTION_ATTACKING); + PlayLevelSoundActionIfLoop(x, y, ACTION_ATTACKING); for (i=1; i <= 3; i++) { @@ -4260,7 +4262,7 @@ void StartMoving(int x, int y) if (MovDelay[x][y]) /* element still has to wait some time */ { - PlaySoundLevelAction(x, y, ACTION_WAITING); + PlayLevelSoundAction(x, y, ACTION_WAITING); return; } @@ -4310,7 +4312,7 @@ void StartMoving(int x, int y) Feld[x][y] = EL_EMPTY; DrawLevelField(x, y); - PlaySoundLevel(newx, newy, SND_PENGUIN_PASSING); + PlayLevelSound(newx, newy, SND_PENGUIN_PASSING); if (IN_SCR_FIELD(SCREENX(newx), SCREENY(newy))) DrawGraphicThruMask(SCREENX(newx),SCREENY(newy), el2img(element), 0); @@ -4351,7 +4353,7 @@ void StartMoving(int x, int y) DrawLevelField(newx, newy); } - PlaySoundLevel(x, y, SND_PIG_DIGGING); + PlayLevelSound(x, y, SND_PIG_DIGGING); } else if (!IS_FREE(newx, newy)) { @@ -4400,7 +4402,7 @@ void StartMoving(int x, int y) else DrawLevelField(x, y); - PlaySoundLevel(x, y, SND_DRAGON_ATTACKING); + PlayLevelSound(x, y, SND_DRAGON_ATTACKING); MovDelay[x][y] = 50; @@ -4425,7 +4427,7 @@ void StartMoving(int x, int y) DrawLevelField(newx, newy); } - PlaySoundLevel(x, y, SND_YAMYAM_DIGGING); + PlayLevelSound(x, y, SND_YAMYAM_DIGGING); } else if (element == EL_DARK_YAMYAM && IN_LEV_FIELD(newx, newy) && IS_FOOD_DARK_YAMYAM(Feld[newx][newy])) @@ -4446,7 +4448,7 @@ void StartMoving(int x, int y) DrawLevelField(newx, newy); } - PlaySoundLevel(x, y, SND_DARK_YAMYAM_DIGGING); + PlayLevelSound(x, y, SND_DARK_YAMYAM_DIGGING); } else if ((element == EL_PACMAN || element == EL_MOLE) && IN_LEV_FIELD(newx, newy) && IS_AMOEBOID(Feld[newx][newy])) @@ -4462,7 +4464,7 @@ void StartMoving(int x, int y) if (element == EL_MOLE) { Feld[newx][newy] = EL_AMOEBA_SHRINKING; - PlaySoundLevel(x, y, SND_MOLE_DIGGING); + PlayLevelSound(x, y, SND_MOLE_DIGGING); ResetGfxAnimation(x, y); GfxAction[x][y] = ACTION_DIGGING; @@ -4475,7 +4477,7 @@ void StartMoving(int x, int y) { Feld[newx][newy] = EL_EMPTY; DrawLevelField(newx, newy); - PlaySoundLevel(x, y, SND_PACMAN_DIGGING); + PlayLevelSound(x, y, SND_PACMAN_DIGGING); } } else if (element == EL_MOLE && IN_LEV_FIELD(newx, newy) && @@ -4514,7 +4516,7 @@ void StartMoving(int x, int y) TestIfBadThingTouchesHero(x, y); #if 0 - PlaySoundLevelAction(x, y, ACTION_WAITING); + PlayLevelSoundAction(x, y, ACTION_WAITING); #endif return; @@ -4522,7 +4524,7 @@ void StartMoving(int x, int y) InitMovingField(x, y, MovDir[x][y]); - PlaySoundLevelAction(x, y, ACTION_MOVING); + PlayLevelSoundAction(x, y, ACTION_MOVING); } if (MovDir[x][y]) @@ -4827,7 +4829,7 @@ void AmoebeUmwandeln(int ax, int ay) } } } - PlaySoundLevel(ax, ay, (IS_GEM(level.amoeba_content) ? + PlayLevelSound(ax, ay, (IS_GEM(level.amoeba_content) ? SND_AMOEBA_TURNING_TO_GEM : SND_AMOEBA_TURNING_TO_ROCK)); Bang(ax, ay); @@ -4852,7 +4854,7 @@ void AmoebeUmwandeln(int ax, int ay) if (Feld[x][y] == EL_AMOEBA_TO_DIAMOND) { - PlaySoundLevel(x, y, (IS_GEM(level.amoeba_content) ? + PlayLevelSound(x, y, (IS_GEM(level.amoeba_content) ? SND_AMOEBA_TURNING_TO_GEM : SND_AMOEBA_TURNING_TO_ROCK)); Bang(x, y); @@ -4895,7 +4897,7 @@ void AmoebeUmwandelnBD(int ax, int ay, int new_element) } if (done) - PlaySoundLevel(ax, ay, (new_element == EL_BD_ROCK ? + PlayLevelSound(ax, ay, (new_element == EL_BD_ROCK ? SND_BD_AMOEBA_TURNING_TO_ROCK : SND_BD_AMOEBA_TURNING_TO_GEM)); } @@ -4912,12 +4914,12 @@ void AmoebeWaechst(int x, int y) if (DelayReached(&sound_delay, sound_delay_value)) { #if 1 - PlaySoundLevelElementAction(x, y, Store[x][y], ACTION_GROWING); + PlayLevelSoundElementAction(x, y, Store[x][y], ACTION_GROWING); #else if (Store[x][y] == EL_BD_AMOEBA) - PlaySoundLevel(x, y, SND_BD_AMOEBA_GROWING); + PlayLevelSound(x, y, SND_BD_AMOEBA_GROWING); else - PlaySoundLevel(x, y, SND_AMOEBA_GROWING); + PlayLevelSound(x, y, SND_AMOEBA_GROWING); #endif sound_delay_value = 30; } @@ -5117,9 +5119,9 @@ void AmoebeAbleger(int ax, int ay) { Feld[newax][neway] = EL_AMOEBA_DROP; /* drop left/right of amoeba */ #if 1 - PlaySoundLevelAction(newax, neway, ACTION_GROWING); + PlayLevelSoundAction(newax, neway, ACTION_GROWING); #else - PlaySoundLevel(newax, neway, SND_AMOEBA_GROWING); + PlayLevelSound(newax, neway, SND_AMOEBA_GROWING); #endif } else @@ -5208,7 +5210,7 @@ void Life(int ax, int ay) } if (changed) - PlaySoundLevel(ax, ay, element == EL_BIOMAZE ? SND_BIOMAZE_GROWING : + PlayLevelSound(ax, ay, element == EL_BIOMAZE ? SND_BIOMAZE_GROWING : SND_GAME_OF_LIFE_GROWING); } @@ -5219,7 +5221,7 @@ static void InitRobotWheel(int x, int y) static void RunRobotWheel(int x, int y) { - PlaySoundLevel(x, y, SND_ROBOT_WHEEL_ACTIVE); + PlayLevelSound(x, y, SND_ROBOT_WHEEL_ACTIVE); } static void StopRobotWheel(int x, int y) @@ -5235,7 +5237,7 @@ static void InitTimegateWheel(int x, int y) static void RunTimegateWheel(int x, int y) { - PlaySoundLevel(x, y, SND_TIMEGATE_SWITCH_ACTIVE); + PlayLevelSound(x, y, SND_TIMEGATE_SWITCH_ACTIVE); } void CheckExit(int x, int y) @@ -5258,7 +5260,7 @@ void CheckExit(int x, int y) Feld[x][y] = EL_EXIT_OPENING; - PlaySoundLevelNearest(x, y, SND_CLASS_EXIT_OPENING); + PlayLevelSoundNearest(x, y, SND_CLASS_EXIT_OPENING); } void CheckExitSP(int x, int y) @@ -5279,7 +5281,7 @@ void CheckExitSP(int x, int y) Feld[x][y] = EL_SP_EXIT_OPENING; - PlaySoundLevelNearest(x, y, SND_CLASS_SP_EXIT_OPENING); + PlayLevelSoundNearest(x, y, SND_CLASS_SP_EXIT_OPENING); } static void CloseAllOpenTimegates() @@ -5296,9 +5298,9 @@ static void CloseAllOpenTimegates() { Feld[x][y] = EL_TIMEGATE_CLOSING; #if 1 - PlaySoundLevelAction(x, y, ACTION_CLOSING); + PlayLevelSoundAction(x, y, ACTION_CLOSING); #else - PlaySoundLevel(x, y, SND_TIMEGATE_CLOSING); + PlayLevelSound(x, y, SND_TIMEGATE_CLOSING); #endif } } @@ -5502,9 +5504,9 @@ void MauerAbleger(int ax, int ay) if (new_wall) #if 1 - PlaySoundLevelAction(ax, ay, ACTION_GROWING); + PlayLevelSoundAction(ax, ay, ACTION_GROWING); #else - PlaySoundLevel(ax, ay, SND_EXPANDABLE_WALL_GROWING); + PlayLevelSound(ax, ay, SND_EXPANDABLE_WALL_GROWING); #endif } @@ -5588,7 +5590,7 @@ static void WarnBuggyBase(int x, int y) if (IS_PLAYER(xx, yy)) { - PlaySoundLevel(x, y, SND_SP_BUGGY_BASE_ACTIVE); + PlayLevelSound(x, y, SND_SP_BUGGY_BASE_ACTIVE); break; } @@ -5602,7 +5604,7 @@ static void InitTrap(int x, int y) static void ActivateTrap(int x, int y) { - PlaySoundLevel(x, y, SND_TRAP_ACTIVATING); + PlayLevelSound(x, y, SND_TRAP_ACTIVATING); } static void ChangeActiveTrap(int x, int y) @@ -5759,14 +5761,14 @@ static boolean ChangeElementNow(int x, int y, int element, int page) } if (something_has_changed) - PlaySoundLevelElementAction(x, y, element, ACTION_CHANGING); + PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING); } } else { ChangeElementNowExt(x, y, change->target_element); - PlaySoundLevelElementAction(x, y, element, ACTION_CHANGING); + PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING); } return TRUE; @@ -6321,7 +6323,7 @@ void GameActions() SetRandomAnimationValue(x, y); #if 1 - PlaySoundLevelActionIfLoop(x, y, GfxAction[x][y]); + PlayLevelSoundActionIfLoop(x, y, GfxAction[x][y]); #endif if (IS_INACTIVE(element)) @@ -6451,7 +6453,7 @@ void GameActions() #endif if (IS_BELT_ACTIVE(element)) - PlaySoundLevelAction(x, y, ACTION_ACTIVE); + PlayLevelSoundAction(x, y, ACTION_ACTIVE); if (game.magic_wall_active) { @@ -6541,9 +6543,9 @@ void GameActions() if (element == EL_BD_MAGIC_WALL_FULL || element == EL_BD_MAGIC_WALL_ACTIVE || element == EL_BD_MAGIC_WALL_EMPTYING) - PlaySoundLevel(magic_wall_x, magic_wall_y, SND_BD_MAGIC_WALL_ACTIVE); + PlayLevelSound(magic_wall_x, magic_wall_y, SND_BD_MAGIC_WALL_ACTIVE); else - PlaySoundLevel(magic_wall_x, magic_wall_y, SND_MAGIC_WALL_ACTIVE); + PlayLevelSound(magic_wall_x, magic_wall_y, SND_MAGIC_WALL_ACTIVE); } if (game.magic_wall_time_left > 0) @@ -6597,9 +6599,9 @@ void GameActions() if (SHIELD_ON(player)) { if (player->shield_deadly_time_left) - PlaySoundLevel(player->jx, player->jy, SND_SHIELD_DEADLY_ACTIVE); + PlayLevelSound(player->jx, player->jy, SND_SHIELD_DEADLY_ACTIVE); else if (player->shield_normal_time_left) - PlaySoundLevel(player->jx, player->jy, SND_SHIELD_NORMAL_ACTIVE); + PlayLevelSound(player->jx, player->jy, SND_SHIELD_NORMAL_ACTIVE); } } @@ -7664,11 +7666,11 @@ void BuryHero(struct PlayerInfo *player) return; #if 1 - PlaySoundLevelElementAction(jx, jy, player->element_nr, ACTION_DYING); + PlayLevelSoundElementAction(jx, jy, player->element_nr, ACTION_DYING); #else - PlaySoundLevel(jx, jy, SND_CLASS_PLAYER_DYING); + PlayLevelSound(jx, jy, SND_CLASS_PLAYER_DYING); #endif - PlaySoundLevel(jx, jy, SND_GAME_LOSING); + PlayLevelSound(jx, jy, SND_GAME_LOSING); player->GameOver = TRUE; RemoveHero(player); @@ -7863,7 +7865,7 @@ int DigField(struct PlayerInfo *player, player->programmed_action = move_direction; DOUBLE_PLAYER_SPEED(player); - PlaySoundLevel(x, y, SND_CLASS_SP_PORT_PASSING); + PlayLevelSound(x, y, SND_CLASS_SP_PORT_PASSING); break; case EL_TUBE_ANY: @@ -7905,7 +7907,7 @@ int DigField(struct PlayerInfo *player, if (!(tube_enter_directions[i][1] & move_direction)) return MF_NO_ACTION; /* tube has no opening in this direction */ - PlaySoundLevel(x, y, SND_CLASS_TUBE_WALKING); + PlayLevelSound(x, y, SND_CLASS_TUBE_WALKING); } break; @@ -7938,9 +7940,9 @@ int DigField(struct PlayerInfo *player, /* play sound from background or player, whatever is available */ if (element_info[element].sound[sound_action] != SND_UNDEFINED) - PlaySoundLevelElementAction(x, y, element, sound_action); + PlayLevelSoundElementAction(x, y, element, sound_action); else - PlaySoundLevelElementAction(x, y, player->element_nr, sound_action); + PlayLevelSoundElementAction(x, y, player->element_nr, sound_action); break; } @@ -7969,7 +7971,7 @@ int DigField(struct PlayerInfo *player, player->programmed_action = move_direction; DOUBLE_PLAYER_SPEED(player); - PlaySoundLevelAction(x, y, ACTION_PASSING); + PlayLevelSoundAction(x, y, ACTION_PASSING); break; } @@ -7988,7 +7990,7 @@ int DigField(struct PlayerInfo *player, player->is_digging = TRUE; } - PlaySoundLevelElementAction(x, y, element, ACTION_DIGGING); + PlayLevelSoundElementAction(x, y, element, ACTION_DIGGING); CheckTriggeredElementChange(x, y, element, CE_OTHER_GETS_DIGGED); @@ -8086,7 +8088,7 @@ int DigField(struct PlayerInfo *player, } RaiseScoreElement(element); - PlaySoundLevelElementAction(x, y, element, ACTION_COLLECTING); + PlayLevelSoundElementAction(x, y, element, ACTION_COLLECTING); CheckTriggeredElementChange(x, y, element, CE_OTHER_GETS_COLLECTED); @@ -8210,23 +8212,23 @@ int DigField(struct PlayerInfo *player, Feld[x][y] = EL_SOKOBAN_OBJECT; if (Back[x][y] == Back[nextx][nexty]) - PlaySoundLevelAction(x, y, ACTION_PUSHING); + PlayLevelSoundAction(x, y, ACTION_PUSHING); else if (Back[x][y] != 0) - PlaySoundLevelElementAction(x, y, EL_SOKOBAN_FIELD_FULL, + PlayLevelSoundElementAction(x, y, EL_SOKOBAN_FIELD_FULL, ACTION_EMPTYING); else - PlaySoundLevelElementAction(nextx, nexty, EL_SOKOBAN_FIELD_EMPTY, + PlayLevelSoundElementAction(nextx, nexty, EL_SOKOBAN_FIELD_EMPTY, ACTION_FILLING); if (local_player->sokobanfields_still_needed == 0 && game.emulation == EMU_SOKOBAN) { player->LevelSolved = player->GameOver = TRUE; - PlaySoundLevel(x, y, SND_GAME_SOKOBAN_SOLVING); + PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING); } } else - PlaySoundLevelElementAction(x, y, element, ACTION_PUSHING); + PlayLevelSoundElementAction(x, y, element, ACTION_PUSHING); InitMovingField(x, y, move_direction); GfxAction[x][y] = ACTION_PUSHING; @@ -8260,7 +8262,7 @@ int DigField(struct PlayerInfo *player, player->switch_x = x; player->switch_y = y; - PlaySoundLevelElementAction(x, y, element, ACTION_ACTIVATING); + PlayLevelSoundElementAction(x, y, element, ACTION_ACTIVATING); if (element == EL_ROBOT_WHEEL) { @@ -8297,7 +8299,7 @@ int DigField(struct PlayerInfo *player, ToggleLightSwitch(x, y); #if 0 - PlaySoundLevel(x, y, element == EL_LIGHT_SWITCH ? + PlayLevelSound(x, y, element == EL_LIGHT_SWITCH ? SND_LIGHT_SWITCH_ACTIVATING : SND_LIGHT_SWITCH_DEACTIVATING); #endif @@ -8478,7 +8480,7 @@ boolean DropElement(struct PlayerInfo *player) if (IN_SCR_FIELD(SCREENX(jx), SCREENY(jy))) DrawGraphicThruMask(SCREENX(jx), SCREENY(jy), el2img(Feld[jx][jy]), 0); - PlaySoundLevelAction(jx, jy, ACTION_DROPPING); + PlayLevelSoundAction(jx, jy, ACTION_DROPPING); CheckTriggeredElementChange(jx, jy, new_element, CE_OTHER_GETS_DROPPED); CheckElementChange(jx, jy, new_element, CE_DROPPED_BY_PLAYER); @@ -8495,7 +8497,7 @@ boolean DropElement(struct PlayerInfo *player) if (IN_SCR_FIELD(SCREENX(jx), SCREENY(jy))) DrawGraphicThruMask(SCREENX(jx), SCREENY(jy), el2img(Feld[jx][jy]), 0); - PlaySoundLevelAction(jx, jy, ACTION_DROPPING); + PlayLevelSoundAction(jx, jy, ACTION_DROPPING); } return TRUE; @@ -8508,7 +8510,7 @@ boolean DropElement(struct PlayerInfo *player) static int *loop_sound_frame = NULL; static int *loop_sound_volume = NULL; -void InitPlaySoundLevel() +void InitPlayLevelSound() { int num_sounds = getSoundListSize(); @@ -8522,7 +8524,7 @@ void InitPlaySoundLevel() loop_sound_volume = checked_calloc(num_sounds * sizeof(int)); } -static void PlaySoundLevel(int x, int y, int nr) +static void PlayLevelSound(int x, int y, int nr) { int sx = SCREENX(x), sy = SCREENY(y); int volume, stereo_position; @@ -8567,37 +8569,37 @@ static void PlaySoundLevel(int x, int y, int nr) PlaySoundExt(nr, volume, stereo_position, type); } -static void PlaySoundLevelNearest(int x, int y, int sound_action) +static void PlayLevelSoundNearest(int x, int y, int sound_action) { - PlaySoundLevel(x < LEVELX(BX1) ? LEVELX(BX1) : + PlayLevelSound(x < LEVELX(BX1) ? LEVELX(BX1) : x > LEVELX(BX2) ? LEVELX(BX2) : x, y < LEVELY(BY1) ? LEVELY(BY1) : y > LEVELY(BY2) ? LEVELY(BY2) : y, sound_action); } -static void PlaySoundLevelAction(int x, int y, int action) +static void PlayLevelSoundAction(int x, int y, int action) { - PlaySoundLevelElementAction(x, y, Feld[x][y], action); + PlayLevelSoundElementAction(x, y, Feld[x][y], action); } -static void PlaySoundLevelElementAction(int x, int y, int element, int action) +static void PlayLevelSoundElementAction(int x, int y, int element, int action) { int sound_effect = element_info[element].sound[action]; if (sound_effect != SND_UNDEFINED) - PlaySoundLevel(x, y, sound_effect); + PlayLevelSound(x, y, sound_effect); } -static void PlaySoundLevelActionIfLoop(int x, int y, int action) +static void PlayLevelSoundActionIfLoop(int x, int y, int action) { int sound_effect = element_info[Feld[x][y]].sound[action]; if (sound_effect != SND_UNDEFINED && IS_LOOP_SOUND(sound_effect)) - PlaySoundLevel(x, y, sound_effect); + PlayLevelSound(x, y, sound_effect); } -static void StopSoundLevelActionIfLoop(int x, int y, int action) +static void StopLevelSoundActionIfLoop(int x, int y, int action) { int sound_effect = element_info[Feld[x][y]].sound[action]; @@ -8605,6 +8607,18 @@ static void StopSoundLevelActionIfLoop(int x, int y, int action) StopSoundExt(sound_effect, SND_CTRL_STOP_SOUND); } +static void PlayLevelMusic() +{ +#if 1 + if (levelset.music[game_status][level_nr] != MUS_UNDEFINED) + PlayMusic(levelset.music[game_status][level_nr]); + else + PlayMusic(-(level_nr + 1)); +#else + PlayMusic(level_nr); +#endif +} + void RaiseScore(int value) { local_player->score += value; @@ -8905,7 +8919,8 @@ static void HandleGameButtons(struct GadgetInfo *gi) setup.sound = setup.sound_music = TRUE; SetAudioMode(setup.sound); - PlayMusic(level_nr); + + PlayLevelMusic(); } break; diff --git a/src/game.h b/src/game.h index 18213102..519c6fc3 100644 --- a/src/game.h +++ b/src/game.h @@ -91,7 +91,7 @@ int DigField(struct PlayerInfo *, int, int, int, int, int); boolean SnapField(struct PlayerInfo *, int, int); boolean DropElement(struct PlayerInfo *); -void InitPlaySoundLevel(); +void InitPlayLevelSound(); void RaiseScore(int); void RaiseScoreElement(int); diff --git a/src/init.c b/src/init.c index 6db9d246..301f0022 100644 --- a/src/init.c +++ b/src/init.c @@ -1216,17 +1216,17 @@ static void InitSoundInfo() sound_info = checked_calloc(num_sounds * sizeof(struct SoundInfo)); /* initialize sound effect for all elements to "no sound" */ - for (i=0; itoken); sound_effect_properties[i] = ACTION_OTHER; - sound_info[i].loop = FALSE; + sound_info[i].loop = FALSE; /* default: play sound only once */ #if 0 printf("::: sound %d: '%s'\n", i, sound->token); @@ -1256,7 +1256,7 @@ static void InitSoundInfo() /* associate elements and some selected sound actions */ - for (j=0; j -1; i++) + { + int gamemode = gamemode_to_music[i].gamemode; + int level = gamemode_to_music[i].level; + int music = gamemode_to_music[i].music; + + if (gamemode < 0) + gamemode = 0; + + if (level < 0) + level = 0; + + levelset.music[gamemode][level] = music; + } +#endif + + /* initialize gamemode/music mapping from dynamic configuration */ + for (i=0; i < num_property_mappings; i++) + { + int prefix = property_mapping[i].base_index; + int gamemode = property_mapping[i].ext1_index; + int level = property_mapping[i].ext2_index; + int music = property_mapping[i].artwork_index; + + if (prefix < 0 || prefix >= NUM_MUSIC_PREFIXES) + continue; + + if (gamemode < 0) + gamemode = 0; + + if (level < 0) + level = 0; + + levelset.music[gamemode][level] = music; + } + + /* now set all '-1' values to levelset specific default values */ + for (i=0; i < NUM_SPECIAL_GFX_ARGS; i++) + { + for (j=0; j < MAX_LEVELS; j++) + { + /* generic default music */ + int default_music = levelset.music[i][0]; /* may still be -1 */ + + /* no music for this specific game mode and level -- use default music */ + if (levelset.music[i][j] == -1) + levelset.music[i][j] = default_music; + } + } + +#if 0 + /* TEST ONLY */ + for (i=0; i < NUM_SPECIAL_GFX_ARGS; i++) + for (j=0; j < MAX_LEVELS; j++) + if (levelset.music[i][j] != -1) + printf("::: levelset.music[%d][%d] == %d\n", + i, j, levelset.music[i][j]); +#endif +} + +static void set_music_parameters(int music, char **parameter_raw) +{ + int parameter[NUM_MUS_ARGS]; + int i; + + /* get integer values from string parameters */ + for (i=0; i < NUM_MUS_ARGS; i++) + parameter[i] = + get_parameter_value(music_config_suffix[i].token, parameter_raw[i], + music_config_suffix[i].type); + + /* explicit loop mode setting in configuration overrides default value */ + if (parameter[MUS_ARG_MODE_LOOP] != ARG_UNDEFINED_VALUE) + music_info[music].loop = parameter[MUS_ARG_MODE_LOOP]; +} + +static void InitMusicInfo() +{ + int num_music = getMusicListSize(); + int i, j; + + if (music_info != NULL) + free(music_info); + + music_info = checked_calloc(num_music * sizeof(struct MusicInfo)); + + for (i=0; i < num_music; i++) + { + struct FileInfo *music = getMusicListEntry(i); + int len_music_text = strlen(music->token); + + music_info[i].loop = TRUE; /* default: play music in loop mode */ + + /* determine all loop music */ + + for (j=0; music_prefix_info[j].prefix; j++) + { + int len_prefix_text = strlen(music_prefix_info[j].prefix); + + if (len_prefix_text < len_music_text && + strncmp(music->token, + music_prefix_info[j].prefix, len_prefix_text) == 0) + { + music_info[i].loop = music_prefix_info[j].is_loop_music; + + break; + } + } + + set_music_parameters(i, music->parameter); + } +} + static void ReinitializeGraphics() { InitGraphicInfo(); /* graphic properties mapping */ @@ -1356,12 +1482,13 @@ static void ReinitializeSounds() InitSoundInfo(); /* sound properties mapping */ InitElementSoundInfo(); /* element game sound mapping */ - InitPlaySoundLevel(); /* internal game sound settings */ + InitPlayLevelSound(); /* internal game sound settings */ } static void ReinitializeMusic() { - /* currently nothing to do */ + InitMusicInfo(); /* music properties mapping */ + InitLevelsetMusicInfo(); /* levelset music mapping */ } void InitElementPropertiesStatic() @@ -3128,6 +3255,18 @@ static char *get_string_in_brackets(char *string) return string_in_brackets; } +static char *get_level_id_suffix(int id_nr) +{ + char *id_suffix = checked_malloc(1 + 3 + 1); + + if (id_nr < 0 || id_nr > 999) + id_nr = 0; + + sprintf(id_suffix, ".%03d", id_nr); + + return id_suffix; +} + #if 0 static char *get_element_class_token(int element) { @@ -3154,9 +3293,11 @@ static void InitArtworkConfig() { static char *image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + 1]; static char *sound_id_prefix[2 * MAX_NUM_ELEMENTS + 1]; + static char *music_id_prefix[NUM_MUSIC_PREFIXES + 1]; static char *action_id_suffix[NUM_ACTIONS + 1]; static char *direction_id_suffix[NUM_DIRECTIONS + 1]; static char *special_id_suffix[NUM_SPECIAL_GFX_ARGS + 1]; + static char *level_id_suffix[MAX_LEVELS + 1]; static char *dummy[1] = { NULL }; static char *ignore_generic_tokens[] = { @@ -3164,9 +3305,13 @@ static void InitArtworkConfig() "sort_priority", NULL }; - static char **ignore_image_tokens, **ignore_sound_tokens; + static char **ignore_image_tokens; + static char **ignore_sound_tokens; + static char **ignore_music_tokens; int num_ignore_generic_tokens; - int num_ignore_image_tokens, num_ignore_sound_tokens; + int num_ignore_image_tokens; + int num_ignore_sound_tokens; + int num_ignore_music_tokens; int i; /* dynamically determine list of generic tokens to be ignored */ @@ -3195,37 +3340,56 @@ static void InitArtworkConfig() ignore_sound_tokens[i] = ignore_generic_tokens[i]; ignore_sound_tokens[num_ignore_sound_tokens] = NULL; - for (i=0; i= num_music) /* invalid music */ + return; + + if (snd_ctrl.nr < 0) /* undefined music */ + { + if (num_music_noconf == 0) /* no fallback music available */ + return; + + snd_ctrl.nr = (-(snd_ctrl.nr + 1)) % num_music_noconf; + snd_info = Music_NoConf[snd_ctrl.nr]; + } + else + snd_info = getMusicInfoEntryFromMusicID(snd_ctrl.nr); + } + else + { + if (snd_ctrl.nr >= num_sounds) + return; + + snd_info = getSoundInfoEntryFromSoundID(snd_ctrl.nr); + } + + /* + if (snd_ctrl.nr >= (IS_MUSIC(snd_ctrl) ? num_music : num_sounds)) + return; + */ +#else if (IS_MUSIC(snd_ctrl)) { - if (num_music == 0) + if (num_music_noconf == 0) return; - snd_ctrl.nr = snd_ctrl.nr % num_music; + snd_ctrl.nr = snd_ctrl.nr % num_music_noconf; } else if (snd_ctrl.nr >= num_sounds) return; +#endif #if 0 - snd_info = (IS_MUSIC(snd_ctrl) ? Music[snd_ctrl.nr] : Sound[snd_ctrl.nr]); +#if 1 + snd_info = (IS_MUSIC(snd_ctrl) ? getMusicInfoEntryFromMusicID(snd_ctrl.nr) : + getSoundInfoEntryFromSoundID(snd_ctrl.nr)); #else - snd_info = (IS_MUSIC(snd_ctrl) ? Music[snd_ctrl.nr] : + snd_info = (IS_MUSIC(snd_ctrl) ? Music_NoConf[snd_ctrl.nr] : getSoundInfoEntryFromSoundID(snd_ctrl.nr)); +#endif #endif if (snd_info == NULL) @@ -862,6 +915,10 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) /* play music samples on a dedicated music channel */ if (IS_MUSIC(snd_ctrl)) { +#if 0 + printf("::: slot %d, ptr 0x%08x\n", snd_ctrl.nr, snd_ctrl.data_ptr); +#endif + Mixer_StopMusicChannel(); mixer[audio.music_channel] = snd_ctrl; @@ -1783,12 +1840,138 @@ static void *Load_WAV(char *filename) return snd_info; } +static void *Load_MOD(char *filename) +{ +#if defined(TARGET_SDL) + MusicInfo *mod_info; + + if (!audio.sound_available) + return NULL; + + mod_info = checked_calloc(sizeof(MusicInfo)); + + if ((mod_info->data_ptr = Mix_LoadMUS(filename)) == NULL) + { + Error(ERR_WARN, "cannot read music file '%s'", filename); + free(mod_info); + return NULL; + } + + mod_info->type = MUS_TYPE_MOD; + mod_info->source_filename = getStringCopy(filename); + + return mod_info; +#else + return NULL; +#endif +} + +void LoadCustomMusic_NoConf(void) +{ + static boolean draw_init_text = TRUE; /* only draw at startup */ + static char *last_music_directory = NULL; + char *music_directory = getCustomMusicDirectory(); + DIR *dir; + struct dirent *dir_entry; + int num_music = getMusicListSize(); + + if (!audio.sound_available) + return; + + if (last_music_directory != NULL && + strcmp(last_music_directory, music_directory) == 0) + return; /* old and new music directory are the same */ + + if (last_music_directory != NULL) + free(last_music_directory); + last_music_directory = getStringCopy(music_directory); + + FreeAllMusic_NoConf(); + + if ((dir = opendir(music_directory)) == NULL) + { + Error(ERR_WARN, "cannot read music directory '%s'", music_directory); + audio.music_available = FALSE; + return; + } + + if (draw_init_text) + DrawInitText("Loading music:", 120, FC_GREEN); + + while ((dir_entry = readdir(dir)) != NULL) /* loop until last dir entry */ + { + char *basename = dir_entry->d_name; + char *filename = NULL; + MusicInfo *mus_info = NULL; + boolean music_already_used = FALSE; + int i; + + for (i=0; i < num_music; i++) + { + struct FileInfo *music = getMusicListEntry(i); + +#if 0 + printf("::: -> '%s'\n", music->filename); +#endif + + if (strcmp(basename, music->filename) == 0) + { + music_already_used = TRUE; + break; + } + } + + if (music_already_used) + continue; + +#if 0 + if (FileIsSound(basename) || FileIsMusic(basename)) + printf("DEBUG: loading music '%s' ... [%d]\n", + basename, music_already_used); +#endif + + if (draw_init_text) + DrawInitText(basename, 150, FC_YELLOW); + + filename = getPath2(music_directory, basename); + + if (FileIsSound(basename)) + mus_info = Load_WAV(filename); + else if (FileIsMusic(basename)) + mus_info = Load_MOD(filename); + + free(filename); + + if (mus_info) + { + num_music_noconf++; + Music_NoConf = checked_realloc(Music_NoConf, + num_music_noconf * sizeof(MusicInfo *)); + Music_NoConf[num_music_noconf - 1] = mus_info; + } + } + + closedir(dir); + + draw_init_text = FALSE; + + if (num_music_noconf == 0) + Error(ERR_WARN, "cannot find any valid music files in directory '%s'", + music_directory); +} + int getSoundListSize() { return (sound_info->num_file_list_entries + sound_info->num_dynamic_file_list_entries); } +int getMusicListSize() +{ + return (music_info->num_file_list_entries + + music_info->num_dynamic_file_list_entries); +} + struct FileInfo *getSoundListEntry(int pos) { int num_list_entries = sound_info->num_file_list_entries; @@ -1798,6 +1981,15 @@ struct FileInfo *getSoundListEntry(int pos) &sound_info->dynamic_file_list[list_pos]); } +struct FileInfo *getMusicListEntry(int pos) +{ + int num_list_entries = music_info->num_file_list_entries; + int list_pos = (pos < num_list_entries ? pos : pos - num_list_entries); + + return (pos < num_list_entries ? &music_info->file_list[list_pos] : + &music_info->dynamic_file_list[list_pos]); +} + static SoundInfo *getSoundInfoEntryFromSoundID(int pos) { int num_list_entries = sound_info->num_file_list_entries; @@ -1809,16 +2001,37 @@ static SoundInfo *getSoundInfoEntryFromSoundID(int pos) return snd_info[list_pos]; } +static MusicInfo *getMusicInfoEntryFromMusicID(int pos) +{ + int num_list_entries = music_info->num_file_list_entries; + int list_pos = (pos < num_list_entries ? pos : pos - num_list_entries); + MusicInfo **mus_info = + (MusicInfo **)(pos < num_list_entries ? music_info->artwork_list : + music_info->dynamic_artwork_list); + + return mus_info[list_pos]; +} + int getSoundListPropertyMappingSize() { return sound_info->num_property_mapping_entries; } +int getMusicListPropertyMappingSize() +{ + return music_info->num_property_mapping_entries; +} + struct PropertyMapping *getSoundListPropertyMapping() { return sound_info->property_mapping; } +struct PropertyMapping *getMusicListPropertyMapping() +{ + return music_info->property_mapping; +} + void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, struct ConfigInfo *config_suffix_list, char **base_prefixes, char **ext1_suffixes, @@ -1899,98 +2112,79 @@ void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, #endif } -static MusicInfo *Load_MOD(char *filename) +void InitMusicList(struct ConfigInfo *config_list, int num_file_list_entries, + struct ConfigInfo *config_suffix_list, + char **base_prefixes, char **ext1_suffixes, + char **ext2_suffixes, char **ext3_suffixes, + char **ignore_tokens) { -#if defined(TARGET_SDL) - MusicInfo *mod_info; + int i; - if (!audio.sound_available) - return NULL; + music_info = checked_calloc(sizeof(struct ArtworkListInfo)); + music_info->type = ARTWORK_TYPE_MUSIC; - mod_info = checked_calloc(sizeof(MusicInfo)); + /* ---------- initialize file list and suffix lists ---------- */ - if ((mod_info->data_ptr = Mix_LoadMUS(filename)) == NULL) - { - Error(ERR_WARN, "cannot read music file '%s'", filename); - free(mod_info); - return NULL; - } + music_info->num_file_list_entries = num_file_list_entries; + music_info->num_dynamic_file_list_entries = 0; - mod_info->type = MUS_TYPE_MOD; - mod_info->source_filename = getStringCopy(filename); + music_info->file_list = + getFileListFromConfigList(config_list, config_suffix_list, ignore_tokens, + num_file_list_entries); + music_info->dynamic_file_list = NULL; - return mod_info; -#else - return NULL; -#endif -} + music_info->num_suffix_list_entries = 0; + for (i=0; config_suffix_list[i].token != NULL; i++) + music_info->num_suffix_list_entries++; -void LoadCustomMusic(void) -{ - static boolean draw_init_text = TRUE; /* only draw at startup */ - static char *last_music_directory = NULL; - char *music_directory = getCustomMusicDirectory(); - DIR *dir; - struct dirent *dir_entry; + music_info->suffix_list = config_suffix_list; - if (!audio.sound_available) - return; + /* ---------- initialize base prefix and suffixes lists ---------- */ - if (last_music_directory != NULL && - strcmp(last_music_directory, music_directory) == 0) - return; /* old and new music directory are the same */ + music_info->num_base_prefixes = 0; + for (i=0; base_prefixes[i] != NULL; i++) + music_info->num_base_prefixes++; - if (last_music_directory != NULL) - free(last_music_directory); - last_music_directory = getStringCopy(music_directory); + music_info->num_ext1_suffixes = 0; + for (i=0; ext1_suffixes[i] != NULL; i++) + music_info->num_ext1_suffixes++; - FreeAllMusic(); + music_info->num_ext2_suffixes = 0; + for (i=0; ext2_suffixes[i] != NULL; i++) + music_info->num_ext2_suffixes++; - if ((dir = opendir(music_directory)) == NULL) - { - Error(ERR_WARN, "cannot read music directory '%s'", music_directory); - audio.music_available = FALSE; - return; - } + music_info->num_ext3_suffixes = 0; + for (i=0; ext3_suffixes[i] != NULL; i++) + music_info->num_ext3_suffixes++; - if (draw_init_text) - DrawInitText("Loading music:", 120, FC_GREEN); + music_info->num_ignore_tokens = 0; + for (i=0; ignore_tokens[i] != NULL; i++) + music_info->num_ignore_tokens++; - while ((dir_entry = readdir(dir)) != NULL) /* loop until last dir entry */ - { - char *basename = dir_entry->d_name; - char *filename = getPath2(music_directory, basename); - MusicInfo *mus_info = NULL; + music_info->base_prefixes = base_prefixes; + music_info->ext1_suffixes = ext1_suffixes; + music_info->ext2_suffixes = ext2_suffixes; + music_info->ext3_suffixes = ext3_suffixes; + music_info->ignore_tokens = ignore_tokens; -#if 0 - printf("DEBUG: loading music '%s' ...\n", basename); -#endif + music_info->num_property_mapping_entries = 0; - if (draw_init_text) - DrawInitText(basename, 150, FC_YELLOW); + music_info->property_mapping = NULL; - if (FileIsSound(basename)) - mus_info = Load_WAV(filename); - else if (FileIsMusic(basename)) - mus_info = Load_MOD(filename); + /* ---------- initialize artwork reference and content lists ---------- */ - free(filename); + music_info->sizeof_artwork_list_entry = sizeof(MusicInfo *); - if (mus_info) - { - num_music++; - Music = checked_realloc(Music, num_music * sizeof(MusicInfo *)); - Music[num_music - 1] = mus_info; - } - } + music_info->artwork_list = + checked_calloc(num_file_list_entries * sizeof(MusicInfo *)); + music_info->dynamic_artwork_list = NULL; - closedir(dir); + music_info->content_list = NULL; - draw_init_text = FALSE; + /* ---------- initialize artwork loading/freeing functions ---------- */ - if (num_music == 0) - Error(ERR_WARN, "cannot find any valid music files in directory '%s'", - music_directory); + music_info->load_artwork = Load_MOD; + music_info->free_artwork = FreeMusic; } void PlayMusic(int nr) @@ -2066,10 +2260,15 @@ void FadeSound(int nr) void FadeSounds() { - FadeMusic(); StopSoundExt(-1, SND_CTRL_FADE_ALL); } +void FadeSoundsAndMusic() +{ + FadeSounds(); + FadeMusic(); +} + void StopMusic(void) { if (!audio.music_available) @@ -2125,7 +2324,13 @@ static void ReloadCustomMusic() printf("DEBUG: reloading music '%s' ...\n", artwork.mus_current_identifier); #endif - LoadCustomMusic(); + LoadArtworkConfig(music_info); + ReloadCustomArtworkList(music_info); + +#if 1 + /* load all music files from directory not defined in "musicinfo.conf" */ + LoadCustomMusic_NoConf(); +#endif } void InitReloadCustomSounds(char *set_identifier) @@ -2147,6 +2352,7 @@ void InitReloadCustomMusic(char *set_identifier) return; #if defined(AUDIO_UNIX_NATIVE) + LoadArtworkConfig(music_info); /* also load config on sound client */ WriteReloadInfoToPipe(set_identifier, SND_CTRL_RELOAD_MUSIC); #else ReloadCustomMusic(); @@ -2177,8 +2383,10 @@ void FreeSound(void *ptr) free(sound); } -void FreeMusic(MusicInfo *music) +void FreeMusic(void *ptr) { + MusicInfo *music = (MusicInfo *)ptr; + if (music == NULL) return; @@ -2199,25 +2407,31 @@ void FreeMusic(MusicInfo *music) free(music); } -void FreeAllSounds() -{ - FreeCustomArtworkLists(sound_info); -} - -void FreeAllMusic() +static void FreeAllMusic_NoConf() { int i; - if (Music == NULL) + if (Music_NoConf == NULL) return; - for(i=0; i