rnd-20030111-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 11 Jan 2003 19:16:21 +0000 (20:16 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:39:38 +0000 (10:39 +0200)
14 files changed:
Makefile
src/conf_e2g.c
src/conf_gfx.c
src/conf_gfx.h
src/conftime.h
src/game.c
src/init.c
src/libgame/toons.c
src/libgame/toons.h
src/main.c
src/main.h
src/tape.c
src/tools.c
src/tools.h

index cb3e37f43728e422859a82473271b5c02721eaea..a04c870b2ba6d0ef8fa0516f32d6fd79bcfaf8f3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -100,6 +100,9 @@ run:
 gdb:
        @$(MAKE_CMD) TARGET=$(DEFAULT_TARGET) && gdb ./rocksndiamonds
 
+enginetest:
+       ./Scripts/make_enginetest.sh
+
 backup:
        ./Scripts/make_backup.sh src
 
index 49948d3472ea54504563cceca890219db46f3656..af01c278ede470c848ef5d2c2401989288ba9bb6 100644 (file)
@@ -436,6 +436,10 @@ element_to_graphic[] =
     EL_SP_BUGGY_BASE,                          -1, -1,
     IMG_SP_BUGGY_BASE
   },
+  {
+    EL_SP_BUGGY_BASE_ACTIVATING,               -1, -1,
+    IMG_SP_BUGGY_BASE_ACTIVATING
+  },
   {
     EL_SP_BUGGY_BASE_ACTIVE,                   -1, -1,
     IMG_SP_BUGGY_BASE_ACTIVE
index d6aff2313eeca0b3984d7d9ff480e77da850d1bb..e4a742d10197091bf5061675cd268229135c02a1 100644 (file)
@@ -34,6 +34,7 @@ struct ConfigInfo image_config_suffix[] =
   { ".mode_linear",                    "false",                TYPE_BOOLEAN },
   { ".mode_pingpong",                  "false",                TYPE_BOOLEAN },
   { ".mode_pingpong2",                 "false",                TYPE_BOOLEAN },
+  { ".mode_random",                    "false",                TYPE_BOOLEAN },
   { ".mode_reverse",                   "false",                TYPE_BOOLEAN },
   { ".global_sync",                    GFX_ARG_UNDEFINED,      TYPE_BOOLEAN },
 
@@ -491,10 +492,15 @@ struct ConfigInfo image_config[] =
   { "sp_buggy_base.xpos",                      "1"                     },
   { "sp_buggy_base.ypos",                      "3"                     },
   { "sp_buggy_base.frames",                    "1"                     },
+  { "sp_buggy_base.activating",                        "RocksSP.pcx"           },
+  { "sp_buggy_base.activating.xpos",           "15"                    },
+  { "sp_buggy_base.activating.ypos",           "2"                     },
+  { "sp_buggy_base.activating.frames",         "1"                     },
   { "sp_buggy_base.active",                    "RocksSP.pcx"           },
   { "sp_buggy_base.active.xpos",               "8"                     },
   { "sp_buggy_base.active.ypos",               "6"                     },
   { "sp_buggy_base.active.frames",             "4"                     },
+  { "sp_buggy_base.active.mode_random",                "true"                  },
 
   { "sp_hard_base1",                           "RocksSP.pcx"           },
   { "sp_hard_base1.xpos",                      "4"                     },
index bc7e6c19a884b0109ceb3081f678b64d593da17f..00a72a382f06f501db4e7aa1c7b49f06882c038f 100644 (file)
 #define IMG_SP_TERMINAL                                91
 #define IMG_SP_TERMINAL_ACTIVE                 92
 #define IMG_SP_BUGGY_BASE                      93
-#define IMG_SP_BUGGY_BASE_ACTIVE               94
-#define IMG_SP_HARD_BASE1                      95
-#define IMG_SP_HARD_BASE2                      96
-#define IMG_SP_HARD_BASE3                      97
-#define IMG_SP_HARD_BASE4                      98
-#define IMG_SP_HARD_BASE5                      99
-#define IMG_SP_HARD_BASE6                      100
-#define IMG_SP_EXPLOSION                       101
-#define IMG_SP_EXPLOSION_INFOTRON              102
-#define IMG_SOKOBAN_OBJECT                     103
-#define IMG_SOKOBAN_FIELD_EMPTY                        104
-#define IMG_SOKOBAN_FIELD_FULL                 105
-#define IMG_EMPTY_SPACE                                106
-#define IMG_SAND                               107
-#define IMG_SAND_CRUMBLED                      108
-#define IMG_WALL                               109
-#define IMG_WALL_CRUMBLED                      110
-#define IMG_STEELWALL                          111
-#define IMG_ROCK                               112
-#define IMG_ROCK_FALLING                       113
-#define IMG_ROCK_MOVING_LEFT                   114
-#define IMG_ROCK_MOVING_RIGHT                  115
-#define IMG_EMERALD                            116
-#define IMG_EMERALD_MOVING                     117
-#define IMG_EMERALD_FALLING                    118
-#define IMG_DIAMOND                            119
-#define IMG_DIAMOND_MOVING                     120
-#define IMG_DIAMOND_FALLING                    121
-#define IMG_BOMB                               122
-#define IMG_NUT                                        123
-#define IMG_NUT_FALLING                                124
-#define IMG_NUT_MOVING_LEFT                    125
-#define IMG_NUT_MOVING_RIGHT                   126
-#define IMG_NUT_CRACKING                       127
-#define IMG_DYNAMITE                           128
-#define IMG_DYNAMITE_ACTIVE                    129
-#define IMG_WALL_EMERALD                       130
-#define IMG_WALL_DIAMOND                       131
-#define IMG_BUG_RIGHT                          132
-#define IMG_BUG_UP                             133
-#define IMG_BUG_LEFT                           134
-#define IMG_BUG_DOWN                           135
-#define IMG_SPACESHIP_RIGHT                    136
-#define IMG_SPACESHIP_UP                       137
-#define IMG_SPACESHIP_LEFT                     138
-#define IMG_SPACESHIP_DOWN                     139
-#define IMG_YAMYAM                             140
-#define IMG_YAMYAM_MOVING                      141
-#define IMG_ROBOT                              142
-#define IMG_ROBOT_MOVING                       143
-#define IMG_ROBOT_WHEEL                                144
-#define IMG_ROBOT_WHEEL_ACTIVE                 145
-#define IMG_MAGIC_WALL                         146
-#define IMG_MAGIC_WALL_ACTIVE                  147
-#define IMG_MAGIC_WALL_FILLING                 148
-#define IMG_MAGIC_WALL_FULL                    149
-#define IMG_MAGIC_WALL_EMPTYING                        150
-#define IMG_MAGIC_WALL_DEAD                    151
-#define IMG_QUICKSAND_EMPTY                    152
-#define IMG_QUICKSAND_FILLING                  153
-#define IMG_QUICKSAND_FULL                     154
-#define IMG_QUICKSAND_EMPTYING                 155
-#define IMG_ACIDPOOL_TOPLEFT                   156
-#define IMG_ACIDPOOL_TOPRIGHT                  157
-#define IMG_ACIDPOOL_BOTTOMLEFT                        158
-#define IMG_ACIDPOOL_BOTTOM                    159
-#define IMG_ACIDPOOL_BOTTOMRIGHT               160
-#define IMG_ACID                               161
-#define IMG_ACID_SPLASH_LEFT                   162
-#define IMG_ACID_SPLASH_RIGHT                  163
-#define IMG_AMOEBA_DROP                                164
-#define IMG_AMOEBA_CREATING                    165
-#define IMG_AMOEBA_SHRINKING                   166
-#define IMG_AMOEBA_WET                         167
-#define IMG_AMOEBA_WET_PART1                   168
-#define IMG_AMOEBA_WET_PART2                   169
-#define IMG_AMOEBA_WET_PART3                   170
-#define IMG_AMOEBA_WET_PART4                   171
-#define IMG_AMOEBA_DRY                         172
-#define IMG_AMOEBA_DRY_PART1                   173
-#define IMG_AMOEBA_DRY_PART2                   174
-#define IMG_AMOEBA_DRY_PART3                   175
-#define IMG_AMOEBA_DRY_PART4                   176
-#define IMG_AMOEBA_FULL                                177
-#define IMG_AMOEBA_FULL_PART1                  178
-#define IMG_AMOEBA_FULL_PART2                  179
-#define IMG_AMOEBA_FULL_PART3                  180
-#define IMG_AMOEBA_FULL_PART4                  181
-#define IMG_AMOEBA_DEAD                                182
-#define IMG_AMOEBA_DEAD_PART1                  183
-#define IMG_AMOEBA_DEAD_PART2                  184
-#define IMG_AMOEBA_DEAD_PART3                  185
-#define IMG_AMOEBA_DEAD_PART4                  186
-#define IMG_EM_KEY1                            187
-#define IMG_EM_KEY2                            188
-#define IMG_EM_KEY3                            189
-#define IMG_EM_KEY4                            190
-#define IMG_EM_GATE1                           191
-#define IMG_EM_GATE2                           192
-#define IMG_EM_GATE3                           193
-#define IMG_EM_GATE4                           194
-#define IMG_EM_GATE1_GRAY                      195
-#define IMG_EM_GATE2_GRAY                      196
-#define IMG_EM_GATE3_GRAY                      197
-#define IMG_EM_GATE4_GRAY                      198
-#define IMG_EXIT_CLOSED                                199
-#define IMG_EXIT_OPENING                       200
-#define IMG_EXIT_OPEN                          201
-#define IMG_BALLOON                            202
-#define IMG_BALLOON_MOVING                     203
-#define IMG_BALLOON_SEND_LEFT                  204
-#define IMG_BALLOON_SEND_RIGHT                 205
-#define IMG_BALLOON_SEND_UP                    206
-#define IMG_BALLOON_SEND_DOWN                  207
-#define IMG_BALLOON_SEND_ANY_DIRECTION         208
-#define IMG_SPRING                             209
-#define IMG_SPRING_MOVING                      210
-#define IMG_EMC_STEELWALL1                     211
-#define IMG_EMC_STEELWALL2                     212
-#define IMG_EMC_STEELWALL3                     213
-#define IMG_EMC_STEELWALL4                     214
-#define IMG_EMC_WALL_PILLAR_UPPER              215
-#define IMG_EMC_WALL_PILLAR_MIDDLE             216
-#define IMG_EMC_WALL_PILLAR_LOWER              217
-#define IMG_EMC_WALL4                          218
-#define IMG_EMC_WALL5                          219
-#define IMG_EMC_WALL6                          220
-#define IMG_EMC_WALL7                          221
-#define IMG_EMC_WALL8                          222
-#define IMG_INVISIBLE_STEELWALL                        223
-#define IMG_INVISIBLE_STEELWALL_ACTIVE         224
-#define IMG_INVISIBLE_WALL                     225
-#define IMG_INVISIBLE_WALL_ACTIVE              226
-#define IMG_INVISIBLE_SAND                     227
-#define IMG_INVISIBLE_SAND_ACTIVE              228
-#define IMG_CONVEYOR_BELT1_MIDDLE              229
-#define IMG_CONVEYOR_BELT1_MIDDLE_ACTIVE       230
-#define IMG_CONVEYOR_BELT1_LEFT                        231
-#define IMG_CONVEYOR_BELT1_LEFT_ACTIVE         232
-#define IMG_CONVEYOR_BELT1_RIGHT               233
-#define IMG_CONVEYOR_BELT1_RIGHT_ACTIVE                234
-#define IMG_CONVEYOR_BELT1_SWITCH_LEFT         235
-#define IMG_CONVEYOR_BELT1_SWITCH_MIDDLE       236
-#define IMG_CONVEYOR_BELT1_SWITCH_RIGHT                237
-#define IMG_CONVEYOR_BELT2_MIDDLE              238
-#define IMG_CONVEYOR_BELT2_MIDDLE_ACTIVE       239
-#define IMG_CONVEYOR_BELT2_LEFT                        240
-#define IMG_CONVEYOR_BELT2_LEFT_ACTIVE         241
-#define IMG_CONVEYOR_BELT2_RIGHT               242
-#define IMG_CONVEYOR_BELT2_RIGHT_ACTIVE                243
-#define IMG_CONVEYOR_BELT2_SWITCH_LEFT         244
-#define IMG_CONVEYOR_BELT2_SWITCH_MIDDLE       245
-#define IMG_CONVEYOR_BELT2_SWITCH_RIGHT                246
-#define IMG_CONVEYOR_BELT3_MIDDLE              247
-#define IMG_CONVEYOR_BELT3_MIDDLE_ACTIVE       248
-#define IMG_CONVEYOR_BELT3_LEFT                        249
-#define IMG_CONVEYOR_BELT3_LEFT_ACTIVE         250
-#define IMG_CONVEYOR_BELT3_RIGHT               251
-#define IMG_CONVEYOR_BELT3_RIGHT_ACTIVE                252
-#define IMG_CONVEYOR_BELT3_SWITCH_LEFT         253
-#define IMG_CONVEYOR_BELT3_SWITCH_MIDDLE       254
-#define IMG_CONVEYOR_BELT3_SWITCH_RIGHT                255
-#define IMG_CONVEYOR_BELT4_MIDDLE              256
-#define IMG_CONVEYOR_BELT4_MIDDLE_ACTIVE       257
-#define IMG_CONVEYOR_BELT4_LEFT                        258
-#define IMG_CONVEYOR_BELT4_LEFT_ACTIVE         259
-#define IMG_CONVEYOR_BELT4_RIGHT               260
-#define IMG_CONVEYOR_BELT4_RIGHT_ACTIVE                261
-#define IMG_CONVEYOR_BELT4_SWITCH_LEFT         262
-#define IMG_CONVEYOR_BELT4_SWITCH_MIDDLE       263
-#define IMG_CONVEYOR_BELT4_SWITCH_RIGHT                264
-#define IMG_SWITCHGATE_SWITCH_UP               265
-#define IMG_SWITCHGATE_SWITCH_DOWN             266
-#define IMG_LIGHT_SWITCH                       267
-#define IMG_LIGHT_SWITCH_ACTIVE                        268
-#define IMG_TIMEGATE_SWITCH                    269
-#define IMG_TIMEGATE_SWITCH_ACTIVE             270
-#define IMG_ENVELOPE                           271
-#define IMG_SIGN_EXCLAMATION                   272
-#define IMG_SIGN_STOP                          273
-#define IMG_LANDMINE                           274
-#define IMG_STEELWALL_SLANTED                  275
-#define IMG_EXTRA_TIME                         276
-#define IMG_SHIELD_NORMAL                      277
-#define IMG_SHIELD_DEADLY                      278
-#define IMG_SHIELD_NORMAL_ACTIVE               279
-#define IMG_SHIELD_DEADLY_ACTIVE               280
-#define IMG_SWITCHGATE_CLOSED                  281
-#define IMG_SWITCHGATE_OPENING                 282
-#define IMG_SWITCHGATE_OPEN                    283
-#define IMG_SWITCHGATE_CLOSING                 284
-#define IMG_TIMEGATE_CLOSED                    285
-#define IMG_TIMEGATE_OPENING                   286
-#define IMG_TIMEGATE_OPEN                      287
-#define IMG_TIMEGATE_CLOSING                   288
-#define IMG_PEARL                              289
-#define IMG_PEARL_BREAKING                     290
-#define IMG_CRYSTAL                            291
-#define IMG_WALL_PEARL                         292
-#define IMG_WALL_CRYSTAL                       293
-#define IMG_TUBE_RIGHT_DOWN                    294
-#define IMG_TUBE_HORIZONTAL_DOWN               295
-#define IMG_TUBE_LEFT_DOWN                     296
-#define IMG_TUBE_HORIZONTAL                    297
-#define IMG_TUBE_VERTICAL_RIGHT                        298
-#define IMG_TUBE_ALL                           299
-#define IMG_TUBE_VERTICAL_LEFT                 300
-#define IMG_TUBE_VERTICAL                      301
-#define IMG_TUBE_RIGHT_UP                      302
-#define IMG_TUBE_HORIZONTAL_UP                 303
-#define IMG_TUBE_LEFT_UP                       304
-#define IMG_TRAP                               305
-#define IMG_TRAP_ACTIVE                                306
-#define IMG_DX_SUPABOMB                                307
-#define IMG_KEY1                               308
-#define IMG_KEY2                               309
-#define IMG_KEY3                               310
-#define IMG_KEY4                               311
-#define IMG_GATE1                              312
-#define IMG_GATE2                              313
-#define IMG_GATE3                              314
-#define IMG_GATE4                              315
-#define IMG_GATE1_GRAY                         316
-#define IMG_GATE2_GRAY                         317
-#define IMG_GATE3_GRAY                         318
-#define IMG_GATE4_GRAY                         319
-#define IMG_GAMEOFLIFE                         320
-#define IMG_BIOMAZE                            321
-#define IMG_PACMAN_RIGHT                       322
-#define IMG_PACMAN_UP                          323
-#define IMG_PACMAN_LEFT                                324
-#define IMG_PACMAN_DOWN                                325
-#define IMG_LAMP                               326
-#define IMG_LAMP_ACTIVE                                327
-#define IMG_TIME_ORB_FULL                      328
-#define IMG_TIME_ORB_EMPTY                     329
-#define IMG_EMERALD_YELLOW                     330
-#define IMG_EMERALD_YELLOW_MOVING              331
-#define IMG_EMERALD_YELLOW_FALLING             332
-#define IMG_EMERALD_RED                                333
-#define IMG_EMERALD_RED_MOVING                 334
-#define IMG_EMERALD_RED_FALLING                        335
-#define IMG_EMERALD_PURPLE                     336
-#define IMG_EMERALD_PURPLE_MOVING              337
-#define IMG_EMERALD_PURPLE_FALLING             338
-#define IMG_WALL_EMERALD_YELLOW                        339
-#define IMG_WALL_EMERALD_RED                   340
-#define IMG_WALL_EMERALD_PURPLE                        341
-#define IMG_WALL_BD_DIAMOND                    342
-#define IMG_WALL_GROWING                       343
-#define IMG_WALL_GROWING_XY                    344
-#define IMG_WALL_GROWING_X                     345
-#define IMG_WALL_GROWING_Y                     346
-#define IMG_WALL_GROWING_ACTIVE_LEFT           347
-#define IMG_WALL_GROWING_ACTIVE_RIGHT          348
-#define IMG_WALL_GROWING_ACTIVE_UP             349
-#define IMG_WALL_GROWING_ACTIVE_DOWN           350
-#define IMG_BLACK_ORB                          351
-#define IMG_SPEED_PILL                         352
-#define IMG_DARK_YAMYAM                                353
-#define IMG_DYNABOMB_ACTIVE                    354
-#define IMG_DYNABOMB_PLAYER1_ACTIVE            355
-#define IMG_DYNABOMB_PLAYER2_ACTIVE            356
-#define IMG_DYNABOMB_PLAYER3_ACTIVE            357
-#define IMG_DYNABOMB_PLAYER4_ACTIVE            358
-#define IMG_DYNABOMB_NR                                359
-#define IMG_DYNABOMB_SZ                                360
-#define IMG_DYNABOMB_XL                                361
-#define IMG_PIG                                        362
-#define IMG_PIG_DOWN                           363
-#define IMG_PIG_DOWN_MOVING                    364
-#define IMG_PIG_DOWN_EATING                    365
-#define IMG_PIG_UP                             366
-#define IMG_PIG_UP_MOVING                      367
-#define IMG_PIG_UP_EATING                      368
-#define IMG_PIG_LEFT                           369
-#define IMG_PIG_LEFT_MOVING                    370
-#define IMG_PIG_LEFT_EATING                    371
-#define IMG_PIG_RIGHT                          372
-#define IMG_PIG_RIGHT_MOVING                   373
-#define IMG_PIG_RIGHT_EATING                   374
-#define IMG_DRAGON                             375
-#define IMG_DRAGON_DOWN                                376
-#define IMG_DRAGON_DOWN_MOVING                 377
-#define IMG_DRAGON_DOWN_ATTACKING              378
-#define IMG_DRAGON_UP                          379
-#define IMG_DRAGON_UP_MOVING                   380
-#define IMG_DRAGON_UP_ATTACKING                        381
-#define IMG_DRAGON_LEFT                                382
-#define IMG_DRAGON_LEFT_MOVING                 383
-#define IMG_DRAGON_LEFT_ATTACKING              384
-#define IMG_DRAGON_RIGHT                       385
-#define IMG_DRAGON_RIGHT_MOVING                        386
-#define IMG_DRAGON_RIGHT_ATTACKING             387
-#define IMG_MOLE                               388
-#define IMG_MOLE_DOWN                          389
-#define IMG_MOLE_DOWN_MOVING                   390
-#define IMG_MOLE_DOWN_DIGGING                  391
-#define IMG_MOLE_UP                            392
-#define IMG_MOLE_UP_MOVING                     393
-#define IMG_MOLE_UP_DIGGING                    394
-#define IMG_MOLE_LEFT                          395
-#define IMG_MOLE_LEFT_MOVING                   396
-#define IMG_MOLE_LEFT_DIGGING                  397
-#define IMG_MOLE_RIGHT                         398
-#define IMG_MOLE_RIGHT_MOVING                  399
-#define IMG_MOLE_RIGHT_DIGGING                 400
-#define IMG_PENGUIN                            401
-#define IMG_PENGUIN_DOWN                       402
-#define IMG_PENGUIN_DOWN_MOVING                        403
-#define IMG_PENGUIN_UP                         404
-#define IMG_PENGUIN_UP_MOVING                  405
-#define IMG_PENGUIN_LEFT                       406
-#define IMG_PENGUIN_LEFT_MOVING                        407
-#define IMG_PENGUIN_RIGHT                      408
-#define IMG_PENGUIN_RIGHT_MOVING               409
-#define IMG_SATELLITE                          410
-#define IMG_SATELLITE_MOVING                   411
-#define IMG_FLAMES_LEFT1                       412
-#define IMG_FLAMES_LEFT2                       413
-#define IMG_FLAMES_LEFT3                       414
-#define IMG_FLAMES_RIGHT1                      415
-#define IMG_FLAMES_RIGHT2                      416
-#define IMG_FLAMES_RIGHT3                      417
-#define IMG_FLAMES_UP1                         418
-#define IMG_FLAMES_UP2                         419
-#define IMG_FLAMES_UP3                         420
-#define IMG_FLAMES_DOWN1                       421
-#define IMG_FLAMES_DOWN2                       422
-#define IMG_FLAMES_DOWN3                       423
-#define IMG_STONEBLOCK                         424
-#define IMG_PLAYER1                            425
-#define IMG_PLAYER1_DOWN                       426
-#define IMG_PLAYER1_DOWN_MOVING                        427
-#define IMG_PLAYER1_DOWN_DIGGING               428
-#define IMG_PLAYER1_DOWN_PUSHING               429
-#define IMG_PLAYER1_DOWN_SNAPPING              430
-#define IMG_PLAYER1_UP                         431
-#define IMG_PLAYER1_UP_MOVING                  432
-#define IMG_PLAYER1_UP_DIGGING                 433
-#define IMG_PLAYER1_UP_PUSHING                 434
-#define IMG_PLAYER1_UP_SNAPPING                        435
-#define IMG_PLAYER1_LEFT                       436
-#define IMG_PLAYER1_LEFT_MOVING                        437
-#define IMG_PLAYER1_LEFT_DIGGING               438
-#define IMG_PLAYER1_LEFT_PUSHING               439
-#define IMG_PLAYER1_LEFT_SNAPPING              440
-#define IMG_PLAYER1_RIGHT                      441
-#define IMG_PLAYER1_RIGHT_MOVING               442
-#define IMG_PLAYER1_RIGHT_DIGGING              443
-#define IMG_PLAYER1_RIGHT_PUSHING              444
-#define IMG_PLAYER1_RIGHT_SNAPPING             445
-#define IMG_PLAYER2                            446
-#define IMG_PLAYER2_DOWN                       447
-#define IMG_PLAYER2_DOWN_MOVING                        448
-#define IMG_PLAYER2_DOWN_DIGGING               449
-#define IMG_PLAYER2_DOWN_PUSHING               450
-#define IMG_PLAYER2_DOWN_SNAPPING              451
-#define IMG_PLAYER2_UP                         452
-#define IMG_PLAYER2_UP_MOVING                  453
-#define IMG_PLAYER2_UP_DIGGING                 454
-#define IMG_PLAYER2_UP_PUSHING                 455
-#define IMG_PLAYER2_UP_SNAPPING                        456
-#define IMG_PLAYER2_LEFT                       457
-#define IMG_PLAYER2_LEFT_MOVING                        458
-#define IMG_PLAYER2_LEFT_DIGGING               459
-#define IMG_PLAYER2_LEFT_PUSHING               460
-#define IMG_PLAYER2_LEFT_SNAPPING              461
-#define IMG_PLAYER2_RIGHT                      462
-#define IMG_PLAYER2_RIGHT_MOVING               463
-#define IMG_PLAYER2_RIGHT_DIGGING              464
-#define IMG_PLAYER2_RIGHT_PUSHING              465
-#define IMG_PLAYER2_RIGHT_SNAPPING             466
-#define IMG_PLAYER3                            467
-#define IMG_PLAYER3_DOWN                       468
-#define IMG_PLAYER3_DOWN_MOVING                        469
-#define IMG_PLAYER3_DOWN_DIGGING               470
-#define IMG_PLAYER3_DOWN_PUSHING               471
-#define IMG_PLAYER3_DOWN_SNAPPING              472
-#define IMG_PLAYER3_UP                         473
-#define IMG_PLAYER3_UP_MOVING                  474
-#define IMG_PLAYER3_UP_DIGGING                 475
-#define IMG_PLAYER3_UP_PUSHING                 476
-#define IMG_PLAYER3_UP_SNAPPING                        477
-#define IMG_PLAYER3_LEFT                       478
-#define IMG_PLAYER3_LEFT_MOVING                        479
-#define IMG_PLAYER3_LEFT_DIGGING               480
-#define IMG_PLAYER3_LEFT_PUSHING               481
-#define IMG_PLAYER3_LEFT_SNAPPING              482
-#define IMG_PLAYER3_RIGHT                      483
-#define IMG_PLAYER3_RIGHT_MOVING               484
-#define IMG_PLAYER3_RIGHT_DIGGING              485
-#define IMG_PLAYER3_RIGHT_PUSHING              486
-#define IMG_PLAYER3_RIGHT_SNAPPING             487
-#define IMG_PLAYER4                            488
-#define IMG_PLAYER4_DOWN                       489
-#define IMG_PLAYER4_DOWN_MOVING                        490
-#define IMG_PLAYER4_DOWN_DIGGING               491
-#define IMG_PLAYER4_DOWN_PUSHING               492
-#define IMG_PLAYER4_DOWN_SNAPPING              493
-#define IMG_PLAYER4_UP                         494
-#define IMG_PLAYER4_UP_MOVING                  495
-#define IMG_PLAYER4_UP_DIGGING                 496
-#define IMG_PLAYER4_UP_PUSHING                 497
-#define IMG_PLAYER4_UP_SNAPPING                        498
-#define IMG_PLAYER4_LEFT                       499
-#define IMG_PLAYER4_LEFT_MOVING                        500
-#define IMG_PLAYER4_LEFT_DIGGING               501
-#define IMG_PLAYER4_LEFT_PUSHING               502
-#define IMG_PLAYER4_LEFT_SNAPPING              503
-#define IMG_PLAYER4_RIGHT                      504
-#define IMG_PLAYER4_RIGHT_MOVING               505
-#define IMG_PLAYER4_RIGHT_DIGGING              506
-#define IMG_PLAYER4_RIGHT_PUSHING              507
-#define IMG_PLAYER4_RIGHT_SNAPPING             508
-#define IMG_EXPLOSION                          509
-#define IMG_TWINKLE_BLUE                       510
-#define IMG_TWINKLE_WHITE                      511
-#define IMG_STEELWALL_TOPLEFT                  512
-#define IMG_STEELWALL_TOPRIGHT                 513
-#define IMG_STEELWALL_BOTTOMLEFT               514
-#define IMG_STEELWALL_BOTTOMRIGHT              515
-#define IMG_STEELWALL_HORIZONTAL               516
-#define IMG_STEELWALL_VERTICAL                 517
-#define IMG_INVISIBLE_STEELWALL_TOPLEFT                518
-#define IMG_INVISIBLE_STEELWALL_TOPRIGHT       519
-#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT     520
-#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT    521
-#define IMG_INVISIBLE_STEELWALL_HORIZONTAL     522
-#define IMG_INVISIBLE_STEELWALL_VERTICAL       523
-#define IMG_ARROW_BLUE_LEFT                    524
-#define IMG_ARROW_BLUE_RIGHT                   525
-#define IMG_ARROW_BLUE_UP                      526
-#define IMG_ARROW_BLUE_DOWN                    527
-#define IMG_ARROW_RED_LEFT                     528
-#define IMG_ARROW_RED_RIGHT                    529
-#define IMG_ARROW_RED_UP                       530
-#define IMG_ARROW_RED_DOWN                     531
-#define IMG_BALL_RED                           532
-#define IMG_BALL_BLUE                          533
-#define IMG_BALL_YELLOW                                534
-#define IMG_BALL_GRAY                          535
-#define IMG_SCROLLBAR_BLUE                     536
-#define IMG_SCROLLBAR_RED                      537
-#define IMG_SCROLLBAR_GREEN                    538
-#define IMG_SCROLLBAR_YELLOW                   539
-#define IMG_CHAR_SPACE                         540
-#define IMG_CHAR_EXCLAM                                541
-#define IMG_CHAR_QUOTEDBL                      542
-#define IMG_CHAR_NUMBERSIGN                    543
-#define IMG_CHAR_DOLLAR                                544
-#define IMG_CHAR_PROCENT                       545
-#define IMG_CHAR_AMPERSAND                     546
-#define IMG_CHAR_APOSTROPHE                    547
-#define IMG_CHAR_PARENLEFT                     548
-#define IMG_CHAR_PARENRIGHT                    549
-#define IMG_CHAR_ASTERISK                      550
-#define IMG_CHAR_PLUS                          551
-#define IMG_CHAR_COMMA                         552
-#define IMG_CHAR_MINUS                         553
-#define IMG_CHAR_PERIOD                                554
-#define IMG_CHAR_SLASH                         555
-#define IMG_CHAR_0                             556
-#define IMG_CHAR_1                             557
-#define IMG_CHAR_2                             558
-#define IMG_CHAR_3                             559
-#define IMG_CHAR_4                             560
-#define IMG_CHAR_5                             561
-#define IMG_CHAR_6                             562
-#define IMG_CHAR_7                             563
-#define IMG_CHAR_8                             564
-#define IMG_CHAR_9                             565
-#define IMG_CHAR_COLON                         566
-#define IMG_CHAR_SEMICOLON                     567
-#define IMG_CHAR_LESS                          568
-#define IMG_CHAR_EQUAL                         569
-#define IMG_CHAR_GREATER                       570
-#define IMG_CHAR_QUESTION                      571
-#define IMG_CHAR_AT                            572
-#define IMG_CHAR_A                             573
-#define IMG_CHAR_B                             574
-#define IMG_CHAR_C                             575
-#define IMG_CHAR_D                             576
-#define IMG_CHAR_E                             577
-#define IMG_CHAR_F                             578
-#define IMG_CHAR_G                             579
-#define IMG_CHAR_H                             580
-#define IMG_CHAR_I                             581
-#define IMG_CHAR_J                             582
-#define IMG_CHAR_K                             583
-#define IMG_CHAR_L                             584
-#define IMG_CHAR_M                             585
-#define IMG_CHAR_N                             586
-#define IMG_CHAR_O                             587
-#define IMG_CHAR_P                             588
-#define IMG_CHAR_Q                             589
-#define IMG_CHAR_R                             590
-#define IMG_CHAR_S                             591
-#define IMG_CHAR_T                             592
-#define IMG_CHAR_U                             593
-#define IMG_CHAR_V                             594
-#define IMG_CHAR_W                             595
-#define IMG_CHAR_X                             596
-#define IMG_CHAR_Y                             597
-#define IMG_CHAR_Z                             598
-#define IMG_CHAR_AE                            599
-#define IMG_CHAR_OE                            600
-#define IMG_CHAR_UE                            601
-#define IMG_CHAR_COPYRIGHT                     602
-#define IMG_CHAR_UNDERSCORE                    603
-#define IMG_CHAR_EMPTY                         604
-#define IMG_CHAR_DEGREE                                605
-#define IMG_CHAR_TM                            606
-#define IMG_CHAR_CURSOR                                607
-#define IMG_CUSTOM_1                           608
-#define IMG_CUSTOM_2                           609
-#define IMG_CUSTOM_3                           610
-#define IMG_CUSTOM_4                           611
-#define IMG_CUSTOM_5                           612
-#define IMG_CUSTOM_6                           613
-#define IMG_CUSTOM_7                           614
-#define IMG_CUSTOM_8                           615
-#define IMG_CUSTOM_9                           616
-#define IMG_CUSTOM_10                          617
-#define IMG_CUSTOM_11                          618
-#define IMG_CUSTOM_12                          619
-#define IMG_CUSTOM_13                          620
-#define IMG_CUSTOM_14                          621
-#define IMG_CUSTOM_15                          622
-#define IMG_CUSTOM_16                          623
-#define IMG_CUSTOM_17                          624
-#define IMG_CUSTOM_18                          625
-#define IMG_CUSTOM_19                          626
-#define IMG_CUSTOM_20                          627
-#define IMG_CUSTOM_21                          628
-#define IMG_CUSTOM_22                          629
-#define IMG_CUSTOM_23                          630
-#define IMG_CUSTOM_24                          631
-#define IMG_CUSTOM_25                          632
-#define IMG_CUSTOM_26                          633
-#define IMG_CUSTOM_27                          634
-#define IMG_CUSTOM_28                          635
-#define IMG_CUSTOM_29                          636
-#define IMG_CUSTOM_30                          637
-#define IMG_CUSTOM_31                          638
-#define IMG_CUSTOM_32                          639
-#define IMG_CUSTOM_33                          640
-#define IMG_CUSTOM_34                          641
-#define IMG_CUSTOM_35                          642
-#define IMG_CUSTOM_36                          643
-#define IMG_CUSTOM_37                          644
-#define IMG_CUSTOM_38                          645
-#define IMG_CUSTOM_39                          646
-#define IMG_CUSTOM_40                          647
-#define IMG_CUSTOM_41                          648
-#define IMG_CUSTOM_42                          649
-#define IMG_CUSTOM_43                          650
-#define IMG_CUSTOM_44                          651
-#define IMG_CUSTOM_45                          652
-#define IMG_CUSTOM_46                          653
-#define IMG_CUSTOM_47                          654
-#define IMG_CUSTOM_48                          655
-#define IMG_CUSTOM_49                          656
-#define IMG_CUSTOM_50                          657
-#define IMG_CUSTOM_51                          658
-#define IMG_CUSTOM_52                          659
-#define IMG_CUSTOM_53                          660
-#define IMG_CUSTOM_54                          661
-#define IMG_CUSTOM_55                          662
-#define IMG_CUSTOM_56                          663
-#define IMG_CUSTOM_57                          664
-#define IMG_CUSTOM_58                          665
-#define IMG_CUSTOM_59                          666
-#define IMG_CUSTOM_60                          667
-#define IMG_CUSTOM_61                          668
-#define IMG_CUSTOM_62                          669
-#define IMG_CUSTOM_63                          670
-#define IMG_CUSTOM_64                          671
-#define IMG_CUSTOM_65                          672
-#define IMG_CUSTOM_66                          673
-#define IMG_CUSTOM_67                          674
-#define IMG_CUSTOM_68                          675
-#define IMG_CUSTOM_69                          676
-#define IMG_CUSTOM_70                          677
-#define IMG_CUSTOM_71                          678
-#define IMG_CUSTOM_72                          679
-#define IMG_CUSTOM_73                          680
-#define IMG_CUSTOM_74                          681
-#define IMG_CUSTOM_75                          682
-#define IMG_CUSTOM_76                          683
-#define IMG_CUSTOM_77                          684
-#define IMG_CUSTOM_78                          685
-#define IMG_CUSTOM_79                          686
-#define IMG_CUSTOM_80                          687
-#define IMG_CUSTOM_81                          688
-#define IMG_CUSTOM_82                          689
-#define IMG_CUSTOM_83                          690
-#define IMG_CUSTOM_84                          691
-#define IMG_CUSTOM_85                          692
-#define IMG_CUSTOM_86                          693
-#define IMG_CUSTOM_87                          694
-#define IMG_CUSTOM_88                          695
-#define IMG_CUSTOM_89                          696
-#define IMG_CUSTOM_90                          697
-#define IMG_CUSTOM_91                          698
-#define IMG_CUSTOM_92                          699
-#define IMG_CUSTOM_93                          700
-#define IMG_CUSTOM_94                          701
-#define IMG_CUSTOM_95                          702
-#define IMG_CUSTOM_96                          703
-#define IMG_CUSTOM_97                          704
-#define IMG_CUSTOM_98                          705
-#define IMG_CUSTOM_99                          706
-#define IMG_CUSTOM_100                         707
-#define IMG_CUSTOM_101                         708
-#define IMG_CUSTOM_102                         709
-#define IMG_CUSTOM_103                         710
-#define IMG_CUSTOM_104                         711
-#define IMG_CUSTOM_105                         712
-#define IMG_CUSTOM_106                         713
-#define IMG_CUSTOM_107                         714
-#define IMG_CUSTOM_108                         715
-#define IMG_CUSTOM_109                         716
-#define IMG_CUSTOM_110                         717
-#define IMG_CUSTOM_111                         718
-#define IMG_CUSTOM_112                         719
-#define IMG_CUSTOM_113                         720
-#define IMG_CUSTOM_114                         721
-#define IMG_CUSTOM_115                         722
-#define IMG_CUSTOM_116                         723
-#define IMG_CUSTOM_117                         724
-#define IMG_CUSTOM_118                         725
-#define IMG_CUSTOM_119                         726
-#define IMG_CUSTOM_120                         727
-#define IMG_CUSTOM_121                         728
-#define IMG_CUSTOM_122                         729
-#define IMG_CUSTOM_123                         730
-#define IMG_CUSTOM_124                         731
-#define IMG_CUSTOM_125                         732
-#define IMG_CUSTOM_126                         733
-#define IMG_CUSTOM_127                         734
-#define IMG_CUSTOM_128                         735
-#define IMG_GLOBAL_BORDER                      736
-#define IMG_GLOBAL_DOOR                                737
-#define IMG_GLOBAL_TOONS                       738
-#define IMG_FONT_BIG                           739
-#define IMG_FONT_MEDIUM                                740
-#define IMG_FONT_SMALL                         741
-#define IMG_FONT_EM                            742
-#define IMG_BACKGROUND_DEFAULT                 743
-#define IMG_BACKGROUND_DOOR                    744
-#define IMG_BACKGROUND_MAIN                    745
-#define IMG_BACKGROUND_LEVEL_SERIES            746
-#define IMG_BACKGROUND_HALL_OF_FAME            747
-#define IMG_BACKGROUND_EDITOR_SETTINGS_LEVEL   748
-#define IMG_BACKGROUND_EDITOR_SETTINGS_ELEMENT 749
-#define IMG_BACKGROUND_INFO                    750
-#define IMG_BACKGROUND_SETUP                   751
-#define IMG_INFO_FONT_EM_1                     752
-#define IMG_INFO_FONT_EM_2                     753
-#define IMG_INFO_FONT_EM_3                     754
-#define IMG_INFO_FONT_EM_4                     755
-#define IMG_INFO_FONT_EM_5                     756
+#define IMG_SP_BUGGY_BASE_ACTIVATING           94
+#define IMG_SP_BUGGY_BASE_ACTIVE               95
+#define IMG_SP_HARD_BASE1                      96
+#define IMG_SP_HARD_BASE2                      97
+#define IMG_SP_HARD_BASE3                      98
+#define IMG_SP_HARD_BASE4                      99
+#define IMG_SP_HARD_BASE5                      100
+#define IMG_SP_HARD_BASE6                      101
+#define IMG_SP_EXPLOSION                       102
+#define IMG_SP_EXPLOSION_INFOTRON              103
+#define IMG_SOKOBAN_OBJECT                     104
+#define IMG_SOKOBAN_FIELD_EMPTY                        105
+#define IMG_SOKOBAN_FIELD_FULL                 106
+#define IMG_EMPTY_SPACE                                107
+#define IMG_SAND                               108
+#define IMG_SAND_CRUMBLED                      109
+#define IMG_WALL                               110
+#define IMG_WALL_CRUMBLED                      111
+#define IMG_STEELWALL                          112
+#define IMG_ROCK                               113
+#define IMG_ROCK_FALLING                       114
+#define IMG_ROCK_MOVING_LEFT                   115
+#define IMG_ROCK_MOVING_RIGHT                  116
+#define IMG_EMERALD                            117
+#define IMG_EMERALD_MOVING                     118
+#define IMG_EMERALD_FALLING                    119
+#define IMG_DIAMOND                            120
+#define IMG_DIAMOND_MOVING                     121
+#define IMG_DIAMOND_FALLING                    122
+#define IMG_BOMB                               123
+#define IMG_NUT                                        124
+#define IMG_NUT_FALLING                                125
+#define IMG_NUT_MOVING_LEFT                    126
+#define IMG_NUT_MOVING_RIGHT                   127
+#define IMG_NUT_CRACKING                       128
+#define IMG_DYNAMITE                           129
+#define IMG_DYNAMITE_ACTIVE                    130
+#define IMG_WALL_EMERALD                       131
+#define IMG_WALL_DIAMOND                       132
+#define IMG_BUG_RIGHT                          133
+#define IMG_BUG_UP                             134
+#define IMG_BUG_LEFT                           135
+#define IMG_BUG_DOWN                           136
+#define IMG_SPACESHIP_RIGHT                    137
+#define IMG_SPACESHIP_UP                       138
+#define IMG_SPACESHIP_LEFT                     139
+#define IMG_SPACESHIP_DOWN                     140
+#define IMG_YAMYAM                             141
+#define IMG_YAMYAM_MOVING                      142
+#define IMG_ROBOT                              143
+#define IMG_ROBOT_MOVING                       144
+#define IMG_ROBOT_WHEEL                                145
+#define IMG_ROBOT_WHEEL_ACTIVE                 146
+#define IMG_MAGIC_WALL                         147
+#define IMG_MAGIC_WALL_ACTIVE                  148
+#define IMG_MAGIC_WALL_FILLING                 149
+#define IMG_MAGIC_WALL_FULL                    150
+#define IMG_MAGIC_WALL_EMPTYING                        151
+#define IMG_MAGIC_WALL_DEAD                    152
+#define IMG_QUICKSAND_EMPTY                    153
+#define IMG_QUICKSAND_FILLING                  154
+#define IMG_QUICKSAND_FULL                     155
+#define IMG_QUICKSAND_EMPTYING                 156
+#define IMG_ACIDPOOL_TOPLEFT                   157
+#define IMG_ACIDPOOL_TOPRIGHT                  158
+#define IMG_ACIDPOOL_BOTTOMLEFT                        159
+#define IMG_ACIDPOOL_BOTTOM                    160
+#define IMG_ACIDPOOL_BOTTOMRIGHT               161
+#define IMG_ACID                               162
+#define IMG_ACID_SPLASH_LEFT                   163
+#define IMG_ACID_SPLASH_RIGHT                  164
+#define IMG_AMOEBA_DROP                                165
+#define IMG_AMOEBA_CREATING                    166
+#define IMG_AMOEBA_SHRINKING                   167
+#define IMG_AMOEBA_WET                         168
+#define IMG_AMOEBA_WET_PART1                   169
+#define IMG_AMOEBA_WET_PART2                   170
+#define IMG_AMOEBA_WET_PART3                   171
+#define IMG_AMOEBA_WET_PART4                   172
+#define IMG_AMOEBA_DRY                         173
+#define IMG_AMOEBA_DRY_PART1                   174
+#define IMG_AMOEBA_DRY_PART2                   175
+#define IMG_AMOEBA_DRY_PART3                   176
+#define IMG_AMOEBA_DRY_PART4                   177
+#define IMG_AMOEBA_FULL                                178
+#define IMG_AMOEBA_FULL_PART1                  179
+#define IMG_AMOEBA_FULL_PART2                  180
+#define IMG_AMOEBA_FULL_PART3                  181
+#define IMG_AMOEBA_FULL_PART4                  182
+#define IMG_AMOEBA_DEAD                                183
+#define IMG_AMOEBA_DEAD_PART1                  184
+#define IMG_AMOEBA_DEAD_PART2                  185
+#define IMG_AMOEBA_DEAD_PART3                  186
+#define IMG_AMOEBA_DEAD_PART4                  187
+#define IMG_EM_KEY1                            188
+#define IMG_EM_KEY2                            189
+#define IMG_EM_KEY3                            190
+#define IMG_EM_KEY4                            191
+#define IMG_EM_GATE1                           192
+#define IMG_EM_GATE2                           193
+#define IMG_EM_GATE3                           194
+#define IMG_EM_GATE4                           195
+#define IMG_EM_GATE1_GRAY                      196
+#define IMG_EM_GATE2_GRAY                      197
+#define IMG_EM_GATE3_GRAY                      198
+#define IMG_EM_GATE4_GRAY                      199
+#define IMG_EXIT_CLOSED                                200
+#define IMG_EXIT_OPENING                       201
+#define IMG_EXIT_OPEN                          202
+#define IMG_BALLOON                            203
+#define IMG_BALLOON_MOVING                     204
+#define IMG_BALLOON_SEND_LEFT                  205
+#define IMG_BALLOON_SEND_RIGHT                 206
+#define IMG_BALLOON_SEND_UP                    207
+#define IMG_BALLOON_SEND_DOWN                  208
+#define IMG_BALLOON_SEND_ANY_DIRECTION         209
+#define IMG_SPRING                             210
+#define IMG_SPRING_MOVING                      211
+#define IMG_EMC_STEELWALL1                     212
+#define IMG_EMC_STEELWALL2                     213
+#define IMG_EMC_STEELWALL3                     214
+#define IMG_EMC_STEELWALL4                     215
+#define IMG_EMC_WALL_PILLAR_UPPER              216
+#define IMG_EMC_WALL_PILLAR_MIDDLE             217
+#define IMG_EMC_WALL_PILLAR_LOWER              218
+#define IMG_EMC_WALL4                          219
+#define IMG_EMC_WALL5                          220
+#define IMG_EMC_WALL6                          221
+#define IMG_EMC_WALL7                          222
+#define IMG_EMC_WALL8                          223
+#define IMG_INVISIBLE_STEELWALL                        224
+#define IMG_INVISIBLE_STEELWALL_ACTIVE         225
+#define IMG_INVISIBLE_WALL                     226
+#define IMG_INVISIBLE_WALL_ACTIVE              227
+#define IMG_INVISIBLE_SAND                     228
+#define IMG_INVISIBLE_SAND_ACTIVE              229
+#define IMG_CONVEYOR_BELT1_MIDDLE              230
+#define IMG_CONVEYOR_BELT1_MIDDLE_ACTIVE       231
+#define IMG_CONVEYOR_BELT1_LEFT                        232
+#define IMG_CONVEYOR_BELT1_LEFT_ACTIVE         233
+#define IMG_CONVEYOR_BELT1_RIGHT               234
+#define IMG_CONVEYOR_BELT1_RIGHT_ACTIVE                235
+#define IMG_CONVEYOR_BELT1_SWITCH_LEFT         236
+#define IMG_CONVEYOR_BELT1_SWITCH_MIDDLE       237
+#define IMG_CONVEYOR_BELT1_SWITCH_RIGHT                238
+#define IMG_CONVEYOR_BELT2_MIDDLE              239
+#define IMG_CONVEYOR_BELT2_MIDDLE_ACTIVE       240
+#define IMG_CONVEYOR_BELT2_LEFT                        241
+#define IMG_CONVEYOR_BELT2_LEFT_ACTIVE         242
+#define IMG_CONVEYOR_BELT2_RIGHT               243
+#define IMG_CONVEYOR_BELT2_RIGHT_ACTIVE                244
+#define IMG_CONVEYOR_BELT2_SWITCH_LEFT         245
+#define IMG_CONVEYOR_BELT2_SWITCH_MIDDLE       246
+#define IMG_CONVEYOR_BELT2_SWITCH_RIGHT                247
+#define IMG_CONVEYOR_BELT3_MIDDLE              248
+#define IMG_CONVEYOR_BELT3_MIDDLE_ACTIVE       249
+#define IMG_CONVEYOR_BELT3_LEFT                        250
+#define IMG_CONVEYOR_BELT3_LEFT_ACTIVE         251
+#define IMG_CONVEYOR_BELT3_RIGHT               252
+#define IMG_CONVEYOR_BELT3_RIGHT_ACTIVE                253
+#define IMG_CONVEYOR_BELT3_SWITCH_LEFT         254
+#define IMG_CONVEYOR_BELT3_SWITCH_MIDDLE       255
+#define IMG_CONVEYOR_BELT3_SWITCH_RIGHT                256
+#define IMG_CONVEYOR_BELT4_MIDDLE              257
+#define IMG_CONVEYOR_BELT4_MIDDLE_ACTIVE       258
+#define IMG_CONVEYOR_BELT4_LEFT                        259
+#define IMG_CONVEYOR_BELT4_LEFT_ACTIVE         260
+#define IMG_CONVEYOR_BELT4_RIGHT               261
+#define IMG_CONVEYOR_BELT4_RIGHT_ACTIVE                262
+#define IMG_CONVEYOR_BELT4_SWITCH_LEFT         263
+#define IMG_CONVEYOR_BELT4_SWITCH_MIDDLE       264
+#define IMG_CONVEYOR_BELT4_SWITCH_RIGHT                265
+#define IMG_SWITCHGATE_SWITCH_UP               266
+#define IMG_SWITCHGATE_SWITCH_DOWN             267
+#define IMG_LIGHT_SWITCH                       268
+#define IMG_LIGHT_SWITCH_ACTIVE                        269
+#define IMG_TIMEGATE_SWITCH                    270
+#define IMG_TIMEGATE_SWITCH_ACTIVE             271
+#define IMG_ENVELOPE                           272
+#define IMG_SIGN_EXCLAMATION                   273
+#define IMG_SIGN_STOP                          274
+#define IMG_LANDMINE                           275
+#define IMG_STEELWALL_SLANTED                  276
+#define IMG_EXTRA_TIME                         277
+#define IMG_SHIELD_NORMAL                      278
+#define IMG_SHIELD_DEADLY                      279
+#define IMG_SHIELD_NORMAL_ACTIVE               280
+#define IMG_SHIELD_DEADLY_ACTIVE               281
+#define IMG_SWITCHGATE_CLOSED                  282
+#define IMG_SWITCHGATE_OPENING                 283
+#define IMG_SWITCHGATE_OPEN                    284
+#define IMG_SWITCHGATE_CLOSING                 285
+#define IMG_TIMEGATE_CLOSED                    286
+#define IMG_TIMEGATE_OPENING                   287
+#define IMG_TIMEGATE_OPEN                      288
+#define IMG_TIMEGATE_CLOSING                   289
+#define IMG_PEARL                              290
+#define IMG_PEARL_BREAKING                     291
+#define IMG_CRYSTAL                            292
+#define IMG_WALL_PEARL                         293
+#define IMG_WALL_CRYSTAL                       294
+#define IMG_TUBE_RIGHT_DOWN                    295
+#define IMG_TUBE_HORIZONTAL_DOWN               296
+#define IMG_TUBE_LEFT_DOWN                     297
+#define IMG_TUBE_HORIZONTAL                    298
+#define IMG_TUBE_VERTICAL_RIGHT                        299
+#define IMG_TUBE_ALL                           300
+#define IMG_TUBE_VERTICAL_LEFT                 301
+#define IMG_TUBE_VERTICAL                      302
+#define IMG_TUBE_RIGHT_UP                      303
+#define IMG_TUBE_HORIZONTAL_UP                 304
+#define IMG_TUBE_LEFT_UP                       305
+#define IMG_TRAP                               306
+#define IMG_TRAP_ACTIVE                                307
+#define IMG_DX_SUPABOMB                                308
+#define IMG_KEY1                               309
+#define IMG_KEY2                               310
+#define IMG_KEY3                               311
+#define IMG_KEY4                               312
+#define IMG_GATE1                              313
+#define IMG_GATE2                              314
+#define IMG_GATE3                              315
+#define IMG_GATE4                              316
+#define IMG_GATE1_GRAY                         317
+#define IMG_GATE2_GRAY                         318
+#define IMG_GATE3_GRAY                         319
+#define IMG_GATE4_GRAY                         320
+#define IMG_GAMEOFLIFE                         321
+#define IMG_BIOMAZE                            322
+#define IMG_PACMAN_RIGHT                       323
+#define IMG_PACMAN_UP                          324
+#define IMG_PACMAN_LEFT                                325
+#define IMG_PACMAN_DOWN                                326
+#define IMG_LAMP                               327
+#define IMG_LAMP_ACTIVE                                328
+#define IMG_TIME_ORB_FULL                      329
+#define IMG_TIME_ORB_EMPTY                     330
+#define IMG_EMERALD_YELLOW                     331
+#define IMG_EMERALD_YELLOW_MOVING              332
+#define IMG_EMERALD_YELLOW_FALLING             333
+#define IMG_EMERALD_RED                                334
+#define IMG_EMERALD_RED_MOVING                 335
+#define IMG_EMERALD_RED_FALLING                        336
+#define IMG_EMERALD_PURPLE                     337
+#define IMG_EMERALD_PURPLE_MOVING              338
+#define IMG_EMERALD_PURPLE_FALLING             339
+#define IMG_WALL_EMERALD_YELLOW                        340
+#define IMG_WALL_EMERALD_RED                   341
+#define IMG_WALL_EMERALD_PURPLE                        342
+#define IMG_WALL_BD_DIAMOND                    343
+#define IMG_WALL_GROWING                       344
+#define IMG_WALL_GROWING_XY                    345
+#define IMG_WALL_GROWING_X                     346
+#define IMG_WALL_GROWING_Y                     347
+#define IMG_WALL_GROWING_ACTIVE_LEFT           348
+#define IMG_WALL_GROWING_ACTIVE_RIGHT          349
+#define IMG_WALL_GROWING_ACTIVE_UP             350
+#define IMG_WALL_GROWING_ACTIVE_DOWN           351
+#define IMG_BLACK_ORB                          352
+#define IMG_SPEED_PILL                         353
+#define IMG_DARK_YAMYAM                                354
+#define IMG_DYNABOMB_ACTIVE                    355
+#define IMG_DYNABOMB_PLAYER1_ACTIVE            356
+#define IMG_DYNABOMB_PLAYER2_ACTIVE            357
+#define IMG_DYNABOMB_PLAYER3_ACTIVE            358
+#define IMG_DYNABOMB_PLAYER4_ACTIVE            359
+#define IMG_DYNABOMB_NR                                360
+#define IMG_DYNABOMB_SZ                                361
+#define IMG_DYNABOMB_XL                                362
+#define IMG_PIG                                        363
+#define IMG_PIG_DOWN                           364
+#define IMG_PIG_DOWN_MOVING                    365
+#define IMG_PIG_DOWN_EATING                    366
+#define IMG_PIG_UP                             367
+#define IMG_PIG_UP_MOVING                      368
+#define IMG_PIG_UP_EATING                      369
+#define IMG_PIG_LEFT                           370
+#define IMG_PIG_LEFT_MOVING                    371
+#define IMG_PIG_LEFT_EATING                    372
+#define IMG_PIG_RIGHT                          373
+#define IMG_PIG_RIGHT_MOVING                   374
+#define IMG_PIG_RIGHT_EATING                   375
+#define IMG_DRAGON                             376
+#define IMG_DRAGON_DOWN                                377
+#define IMG_DRAGON_DOWN_MOVING                 378
+#define IMG_DRAGON_DOWN_ATTACKING              379
+#define IMG_DRAGON_UP                          380
+#define IMG_DRAGON_UP_MOVING                   381
+#define IMG_DRAGON_UP_ATTACKING                        382
+#define IMG_DRAGON_LEFT                                383
+#define IMG_DRAGON_LEFT_MOVING                 384
+#define IMG_DRAGON_LEFT_ATTACKING              385
+#define IMG_DRAGON_RIGHT                       386
+#define IMG_DRAGON_RIGHT_MOVING                        387
+#define IMG_DRAGON_RIGHT_ATTACKING             388
+#define IMG_MOLE                               389
+#define IMG_MOLE_DOWN                          390
+#define IMG_MOLE_DOWN_MOVING                   391
+#define IMG_MOLE_DOWN_DIGGING                  392
+#define IMG_MOLE_UP                            393
+#define IMG_MOLE_UP_MOVING                     394
+#define IMG_MOLE_UP_DIGGING                    395
+#define IMG_MOLE_LEFT                          396
+#define IMG_MOLE_LEFT_MOVING                   397
+#define IMG_MOLE_LEFT_DIGGING                  398
+#define IMG_MOLE_RIGHT                         399
+#define IMG_MOLE_RIGHT_MOVING                  400
+#define IMG_MOLE_RIGHT_DIGGING                 401
+#define IMG_PENGUIN                            402
+#define IMG_PENGUIN_DOWN                       403
+#define IMG_PENGUIN_DOWN_MOVING                        404
+#define IMG_PENGUIN_UP                         405
+#define IMG_PENGUIN_UP_MOVING                  406
+#define IMG_PENGUIN_LEFT                       407
+#define IMG_PENGUIN_LEFT_MOVING                        408
+#define IMG_PENGUIN_RIGHT                      409
+#define IMG_PENGUIN_RIGHT_MOVING               410
+#define IMG_SATELLITE                          411
+#define IMG_SATELLITE_MOVING                   412
+#define IMG_FLAMES_LEFT1                       413
+#define IMG_FLAMES_LEFT2                       414
+#define IMG_FLAMES_LEFT3                       415
+#define IMG_FLAMES_RIGHT1                      416
+#define IMG_FLAMES_RIGHT2                      417
+#define IMG_FLAMES_RIGHT3                      418
+#define IMG_FLAMES_UP1                         419
+#define IMG_FLAMES_UP2                         420
+#define IMG_FLAMES_UP3                         421
+#define IMG_FLAMES_DOWN1                       422
+#define IMG_FLAMES_DOWN2                       423
+#define IMG_FLAMES_DOWN3                       424
+#define IMG_STONEBLOCK                         425
+#define IMG_PLAYER1                            426
+#define IMG_PLAYER1_DOWN                       427
+#define IMG_PLAYER1_DOWN_MOVING                        428
+#define IMG_PLAYER1_DOWN_DIGGING               429
+#define IMG_PLAYER1_DOWN_PUSHING               430
+#define IMG_PLAYER1_DOWN_SNAPPING              431
+#define IMG_PLAYER1_UP                         432
+#define IMG_PLAYER1_UP_MOVING                  433
+#define IMG_PLAYER1_UP_DIGGING                 434
+#define IMG_PLAYER1_UP_PUSHING                 435
+#define IMG_PLAYER1_UP_SNAPPING                        436
+#define IMG_PLAYER1_LEFT                       437
+#define IMG_PLAYER1_LEFT_MOVING                        438
+#define IMG_PLAYER1_LEFT_DIGGING               439
+#define IMG_PLAYER1_LEFT_PUSHING               440
+#define IMG_PLAYER1_LEFT_SNAPPING              441
+#define IMG_PLAYER1_RIGHT                      442
+#define IMG_PLAYER1_RIGHT_MOVING               443
+#define IMG_PLAYER1_RIGHT_DIGGING              444
+#define IMG_PLAYER1_RIGHT_PUSHING              445
+#define IMG_PLAYER1_RIGHT_SNAPPING             446
+#define IMG_PLAYER2                            447
+#define IMG_PLAYER2_DOWN                       448
+#define IMG_PLAYER2_DOWN_MOVING                        449
+#define IMG_PLAYER2_DOWN_DIGGING               450
+#define IMG_PLAYER2_DOWN_PUSHING               451
+#define IMG_PLAYER2_DOWN_SNAPPING              452
+#define IMG_PLAYER2_UP                         453
+#define IMG_PLAYER2_UP_MOVING                  454
+#define IMG_PLAYER2_UP_DIGGING                 455
+#define IMG_PLAYER2_UP_PUSHING                 456
+#define IMG_PLAYER2_UP_SNAPPING                        457
+#define IMG_PLAYER2_LEFT                       458
+#define IMG_PLAYER2_LEFT_MOVING                        459
+#define IMG_PLAYER2_LEFT_DIGGING               460
+#define IMG_PLAYER2_LEFT_PUSHING               461
+#define IMG_PLAYER2_LEFT_SNAPPING              462
+#define IMG_PLAYER2_RIGHT                      463
+#define IMG_PLAYER2_RIGHT_MOVING               464
+#define IMG_PLAYER2_RIGHT_DIGGING              465
+#define IMG_PLAYER2_RIGHT_PUSHING              466
+#define IMG_PLAYER2_RIGHT_SNAPPING             467
+#define IMG_PLAYER3                            468
+#define IMG_PLAYER3_DOWN                       469
+#define IMG_PLAYER3_DOWN_MOVING                        470
+#define IMG_PLAYER3_DOWN_DIGGING               471
+#define IMG_PLAYER3_DOWN_PUSHING               472
+#define IMG_PLAYER3_DOWN_SNAPPING              473
+#define IMG_PLAYER3_UP                         474
+#define IMG_PLAYER3_UP_MOVING                  475
+#define IMG_PLAYER3_UP_DIGGING                 476
+#define IMG_PLAYER3_UP_PUSHING                 477
+#define IMG_PLAYER3_UP_SNAPPING                        478
+#define IMG_PLAYER3_LEFT                       479
+#define IMG_PLAYER3_LEFT_MOVING                        480
+#define IMG_PLAYER3_LEFT_DIGGING               481
+#define IMG_PLAYER3_LEFT_PUSHING               482
+#define IMG_PLAYER3_LEFT_SNAPPING              483
+#define IMG_PLAYER3_RIGHT                      484
+#define IMG_PLAYER3_RIGHT_MOVING               485
+#define IMG_PLAYER3_RIGHT_DIGGING              486
+#define IMG_PLAYER3_RIGHT_PUSHING              487
+#define IMG_PLAYER3_RIGHT_SNAPPING             488
+#define IMG_PLAYER4                            489
+#define IMG_PLAYER4_DOWN                       490
+#define IMG_PLAYER4_DOWN_MOVING                        491
+#define IMG_PLAYER4_DOWN_DIGGING               492
+#define IMG_PLAYER4_DOWN_PUSHING               493
+#define IMG_PLAYER4_DOWN_SNAPPING              494
+#define IMG_PLAYER4_UP                         495
+#define IMG_PLAYER4_UP_MOVING                  496
+#define IMG_PLAYER4_UP_DIGGING                 497
+#define IMG_PLAYER4_UP_PUSHING                 498
+#define IMG_PLAYER4_UP_SNAPPING                        499
+#define IMG_PLAYER4_LEFT                       500
+#define IMG_PLAYER4_LEFT_MOVING                        501
+#define IMG_PLAYER4_LEFT_DIGGING               502
+#define IMG_PLAYER4_LEFT_PUSHING               503
+#define IMG_PLAYER4_LEFT_SNAPPING              504
+#define IMG_PLAYER4_RIGHT                      505
+#define IMG_PLAYER4_RIGHT_MOVING               506
+#define IMG_PLAYER4_RIGHT_DIGGING              507
+#define IMG_PLAYER4_RIGHT_PUSHING              508
+#define IMG_PLAYER4_RIGHT_SNAPPING             509
+#define IMG_EXPLOSION                          510
+#define IMG_TWINKLE_BLUE                       511
+#define IMG_TWINKLE_WHITE                      512
+#define IMG_STEELWALL_TOPLEFT                  513
+#define IMG_STEELWALL_TOPRIGHT                 514
+#define IMG_STEELWALL_BOTTOMLEFT               515
+#define IMG_STEELWALL_BOTTOMRIGHT              516
+#define IMG_STEELWALL_HORIZONTAL               517
+#define IMG_STEELWALL_VERTICAL                 518
+#define IMG_INVISIBLE_STEELWALL_TOPLEFT                519
+#define IMG_INVISIBLE_STEELWALL_TOPRIGHT       520
+#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT     521
+#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT    522
+#define IMG_INVISIBLE_STEELWALL_HORIZONTAL     523
+#define IMG_INVISIBLE_STEELWALL_VERTICAL       524
+#define IMG_ARROW_BLUE_LEFT                    525
+#define IMG_ARROW_BLUE_RIGHT                   526
+#define IMG_ARROW_BLUE_UP                      527
+#define IMG_ARROW_BLUE_DOWN                    528
+#define IMG_ARROW_RED_LEFT                     529
+#define IMG_ARROW_RED_RIGHT                    530
+#define IMG_ARROW_RED_UP                       531
+#define IMG_ARROW_RED_DOWN                     532
+#define IMG_BALL_RED                           533
+#define IMG_BALL_BLUE                          534
+#define IMG_BALL_YELLOW                                535
+#define IMG_BALL_GRAY                          536
+#define IMG_SCROLLBAR_BLUE                     537
+#define IMG_SCROLLBAR_RED                      538
+#define IMG_SCROLLBAR_GREEN                    539
+#define IMG_SCROLLBAR_YELLOW                   540
+#define IMG_CHAR_SPACE                         541
+#define IMG_CHAR_EXCLAM                                542
+#define IMG_CHAR_QUOTEDBL                      543
+#define IMG_CHAR_NUMBERSIGN                    544
+#define IMG_CHAR_DOLLAR                                545
+#define IMG_CHAR_PROCENT                       546
+#define IMG_CHAR_AMPERSAND                     547
+#define IMG_CHAR_APOSTROPHE                    548
+#define IMG_CHAR_PARENLEFT                     549
+#define IMG_CHAR_PARENRIGHT                    550
+#define IMG_CHAR_ASTERISK                      551
+#define IMG_CHAR_PLUS                          552
+#define IMG_CHAR_COMMA                         553
+#define IMG_CHAR_MINUS                         554
+#define IMG_CHAR_PERIOD                                555
+#define IMG_CHAR_SLASH                         556
+#define IMG_CHAR_0                             557
+#define IMG_CHAR_1                             558
+#define IMG_CHAR_2                             559
+#define IMG_CHAR_3                             560
+#define IMG_CHAR_4                             561
+#define IMG_CHAR_5                             562
+#define IMG_CHAR_6                             563
+#define IMG_CHAR_7                             564
+#define IMG_CHAR_8                             565
+#define IMG_CHAR_9                             566
+#define IMG_CHAR_COLON                         567
+#define IMG_CHAR_SEMICOLON                     568
+#define IMG_CHAR_LESS                          569
+#define IMG_CHAR_EQUAL                         570
+#define IMG_CHAR_GREATER                       571
+#define IMG_CHAR_QUESTION                      572
+#define IMG_CHAR_AT                            573
+#define IMG_CHAR_A                             574
+#define IMG_CHAR_B                             575
+#define IMG_CHAR_C                             576
+#define IMG_CHAR_D                             577
+#define IMG_CHAR_E                             578
+#define IMG_CHAR_F                             579
+#define IMG_CHAR_G                             580
+#define IMG_CHAR_H                             581
+#define IMG_CHAR_I                             582
+#define IMG_CHAR_J                             583
+#define IMG_CHAR_K                             584
+#define IMG_CHAR_L                             585
+#define IMG_CHAR_M                             586
+#define IMG_CHAR_N                             587
+#define IMG_CHAR_O                             588
+#define IMG_CHAR_P                             589
+#define IMG_CHAR_Q                             590
+#define IMG_CHAR_R                             591
+#define IMG_CHAR_S                             592
+#define IMG_CHAR_T                             593
+#define IMG_CHAR_U                             594
+#define IMG_CHAR_V                             595
+#define IMG_CHAR_W                             596
+#define IMG_CHAR_X                             597
+#define IMG_CHAR_Y                             598
+#define IMG_CHAR_Z                             599
+#define IMG_CHAR_AE                            600
+#define IMG_CHAR_OE                            601
+#define IMG_CHAR_UE                            602
+#define IMG_CHAR_COPYRIGHT                     603
+#define IMG_CHAR_UNDERSCORE                    604
+#define IMG_CHAR_EMPTY                         605
+#define IMG_CHAR_DEGREE                                606
+#define IMG_CHAR_TM                            607
+#define IMG_CHAR_CURSOR                                608
+#define IMG_CUSTOM_1                           609
+#define IMG_CUSTOM_2                           610
+#define IMG_CUSTOM_3                           611
+#define IMG_CUSTOM_4                           612
+#define IMG_CUSTOM_5                           613
+#define IMG_CUSTOM_6                           614
+#define IMG_CUSTOM_7                           615
+#define IMG_CUSTOM_8                           616
+#define IMG_CUSTOM_9                           617
+#define IMG_CUSTOM_10                          618
+#define IMG_CUSTOM_11                          619
+#define IMG_CUSTOM_12                          620
+#define IMG_CUSTOM_13                          621
+#define IMG_CUSTOM_14                          622
+#define IMG_CUSTOM_15                          623
+#define IMG_CUSTOM_16                          624
+#define IMG_CUSTOM_17                          625
+#define IMG_CUSTOM_18                          626
+#define IMG_CUSTOM_19                          627
+#define IMG_CUSTOM_20                          628
+#define IMG_CUSTOM_21                          629
+#define IMG_CUSTOM_22                          630
+#define IMG_CUSTOM_23                          631
+#define IMG_CUSTOM_24                          632
+#define IMG_CUSTOM_25                          633
+#define IMG_CUSTOM_26                          634
+#define IMG_CUSTOM_27                          635
+#define IMG_CUSTOM_28                          636
+#define IMG_CUSTOM_29                          637
+#define IMG_CUSTOM_30                          638
+#define IMG_CUSTOM_31                          639
+#define IMG_CUSTOM_32                          640
+#define IMG_CUSTOM_33                          641
+#define IMG_CUSTOM_34                          642
+#define IMG_CUSTOM_35                          643
+#define IMG_CUSTOM_36                          644
+#define IMG_CUSTOM_37                          645
+#define IMG_CUSTOM_38                          646
+#define IMG_CUSTOM_39                          647
+#define IMG_CUSTOM_40                          648
+#define IMG_CUSTOM_41                          649
+#define IMG_CUSTOM_42                          650
+#define IMG_CUSTOM_43                          651
+#define IMG_CUSTOM_44                          652
+#define IMG_CUSTOM_45                          653
+#define IMG_CUSTOM_46                          654
+#define IMG_CUSTOM_47                          655
+#define IMG_CUSTOM_48                          656
+#define IMG_CUSTOM_49                          657
+#define IMG_CUSTOM_50                          658
+#define IMG_CUSTOM_51                          659
+#define IMG_CUSTOM_52                          660
+#define IMG_CUSTOM_53                          661
+#define IMG_CUSTOM_54                          662
+#define IMG_CUSTOM_55                          663
+#define IMG_CUSTOM_56                          664
+#define IMG_CUSTOM_57                          665
+#define IMG_CUSTOM_58                          666
+#define IMG_CUSTOM_59                          667
+#define IMG_CUSTOM_60                          668
+#define IMG_CUSTOM_61                          669
+#define IMG_CUSTOM_62                          670
+#define IMG_CUSTOM_63                          671
+#define IMG_CUSTOM_64                          672
+#define IMG_CUSTOM_65                          673
+#define IMG_CUSTOM_66                          674
+#define IMG_CUSTOM_67                          675
+#define IMG_CUSTOM_68                          676
+#define IMG_CUSTOM_69                          677
+#define IMG_CUSTOM_70                          678
+#define IMG_CUSTOM_71                          679
+#define IMG_CUSTOM_72                          680
+#define IMG_CUSTOM_73                          681
+#define IMG_CUSTOM_74                          682
+#define IMG_CUSTOM_75                          683
+#define IMG_CUSTOM_76                          684
+#define IMG_CUSTOM_77                          685
+#define IMG_CUSTOM_78                          686
+#define IMG_CUSTOM_79                          687
+#define IMG_CUSTOM_80                          688
+#define IMG_CUSTOM_81                          689
+#define IMG_CUSTOM_82                          690
+#define IMG_CUSTOM_83                          691
+#define IMG_CUSTOM_84                          692
+#define IMG_CUSTOM_85                          693
+#define IMG_CUSTOM_86                          694
+#define IMG_CUSTOM_87                          695
+#define IMG_CUSTOM_88                          696
+#define IMG_CUSTOM_89                          697
+#define IMG_CUSTOM_90                          698
+#define IMG_CUSTOM_91                          699
+#define IMG_CUSTOM_92                          700
+#define IMG_CUSTOM_93                          701
+#define IMG_CUSTOM_94                          702
+#define IMG_CUSTOM_95                          703
+#define IMG_CUSTOM_96                          704
+#define IMG_CUSTOM_97                          705
+#define IMG_CUSTOM_98                          706
+#define IMG_CUSTOM_99                          707
+#define IMG_CUSTOM_100                         708
+#define IMG_CUSTOM_101                         709
+#define IMG_CUSTOM_102                         710
+#define IMG_CUSTOM_103                         711
+#define IMG_CUSTOM_104                         712
+#define IMG_CUSTOM_105                         713
+#define IMG_CUSTOM_106                         714
+#define IMG_CUSTOM_107                         715
+#define IMG_CUSTOM_108                         716
+#define IMG_CUSTOM_109                         717
+#define IMG_CUSTOM_110                         718
+#define IMG_CUSTOM_111                         719
+#define IMG_CUSTOM_112                         720
+#define IMG_CUSTOM_113                         721
+#define IMG_CUSTOM_114                         722
+#define IMG_CUSTOM_115                         723
+#define IMG_CUSTOM_116                         724
+#define IMG_CUSTOM_117                         725
+#define IMG_CUSTOM_118                         726
+#define IMG_CUSTOM_119                         727
+#define IMG_CUSTOM_120                         728
+#define IMG_CUSTOM_121                         729
+#define IMG_CUSTOM_122                         730
+#define IMG_CUSTOM_123                         731
+#define IMG_CUSTOM_124                         732
+#define IMG_CUSTOM_125                         733
+#define IMG_CUSTOM_126                         734
+#define IMG_CUSTOM_127                         735
+#define IMG_CUSTOM_128                         736
+#define IMG_GLOBAL_BORDER                      737
+#define IMG_GLOBAL_DOOR                                738
+#define IMG_GLOBAL_TOONS                       739
+#define IMG_FONT_BIG                           740
+#define IMG_FONT_MEDIUM                                741
+#define IMG_FONT_SMALL                         742
+#define IMG_FONT_EM                            743
+#define IMG_BACKGROUND_DEFAULT                 744
+#define IMG_BACKGROUND_DOOR                    745
+#define IMG_BACKGROUND_MAIN                    746
+#define IMG_BACKGROUND_LEVEL_SERIES            747
+#define IMG_BACKGROUND_HALL_OF_FAME            748
+#define IMG_BACKGROUND_EDITOR_SETTINGS_LEVEL   749
+#define IMG_BACKGROUND_EDITOR_SETTINGS_ELEMENT 750
+#define IMG_BACKGROUND_INFO                    751
+#define IMG_BACKGROUND_SETUP                   752
+#define IMG_INFO_FONT_EM_1                     753
+#define IMG_INFO_FONT_EM_2                     754
+#define IMG_INFO_FONT_EM_3                     755
+#define IMG_INFO_FONT_EM_4                     756
+#define IMG_INFO_FONT_EM_5                     757
 
-#define NUM_IMAGE_FILES                                757
+#define NUM_IMAGE_FILES                                758
 
 #endif /* CONF_GFX_H */
index 5d6ab7f2def21b44598e39e6c2b6253e3d1da0f5..ae866ea60069ccb55f265e1d12eaa93c07a87b75 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-01-11 14:56]"
+#define COMPILE_DATE_STRING "[2003-01-11 20:15]"
index 095f635e392c97e90af23bdadabd84c3546d3eef..ea346bfd599ddbd287013bf79259c1aa7517bfcd 100644 (file)
@@ -172,14 +172,22 @@ struct ChangingElementInfo
   int base_element;
   int next_element;
   int change_delay;
-  void (*changer_function)(int x, int y);
+  void (*pre_change_function)(int x, int y);
+  void (*change_function)(int x, int y);
+  void (*post_change_function)(int x, int y);
 };
 
 static struct ChangingElementInfo changing_element_list[] =
 {
-  { EL_NUT_CRACKING,           EL_EMERALD,             6, NULL         },
-  { EL_PEARL_BREAKING,         EL_EMPTY,               8, NULL         },
-  { EL_UNDEFINED,              EL_UNDEFINED,          -1, NULL         }
+  { EL_NUT_CRACKING,           EL_EMERALD,              6, NULL, NULL, NULL },
+  { EL_PEARL_BREAKING,         EL_EMPTY,                8, NULL, NULL, NULL },
+  { EL_EXIT_OPENING,           EL_EXIT_OPEN,           29, NULL, NULL, NULL },
+  { EL_SWITCHGATE_OPENING,     EL_SWITCHGATE_OPEN,     29, NULL, NULL, NULL },
+  { EL_SWITCHGATE_CLOSING,     EL_SWITCHGATE_CLOSED,   29, NULL, NULL, NULL },
+  { EL_TIMEGATE_OPENING,       EL_TIMEGATE_OPEN,       29, NULL, NULL, NULL },
+  { EL_TIMEGATE_CLOSING,       EL_TIMEGATE_CLOSED,     29, NULL, NULL, NULL },
+
+  { EL_UNDEFINED,              EL_UNDEFINED,           -1, NULL        }
 };
 
 static struct ChangingElementInfo changing_element[MAX_NUM_ELEMENTS];
@@ -691,7 +699,9 @@ static void InitGameEngine()
     changing_element[i].base_element = EL_UNDEFINED;
     changing_element[i].next_element = EL_UNDEFINED;
     changing_element[i].change_delay = -1;
-    changing_element[i].changer_function = NULL;
+    changing_element[i].pre_change_function = NULL;
+    changing_element[i].change_function = NULL;
+    changing_element[i].post_change_function = NULL;
   }
 
   i = 0;
@@ -700,10 +710,12 @@ static void InitGameEngine()
     struct ChangingElementInfo *ce = &changing_element_list[i];
     int element = ce->base_element;
 
-    changing_element[element].base_element     = ce->base_element;
-    changing_element[element].next_element     = ce->next_element;
-    changing_element[element].change_delay     = ce->change_delay;
-    changing_element[element].changer_function = ce->changer_function;
+    changing_element[element].base_element         = ce->base_element;
+    changing_element[element].next_element         = ce->next_element;
+    changing_element[element].change_delay         = ce->change_delay;
+    changing_element[element].pre_change_function  = ce->pre_change_function;
+    changing_element[element].change_function      = ce->change_function;
+    changing_element[element].post_change_function = ce->post_change_function;
 
     i++;
   }
@@ -4639,67 +4651,109 @@ void CheckForDragon(int x, int y)
   }
 }
 
+static void InitBuggyBase(int x, int y)
+{
+  int element = Feld[x][y];
+  int activating_delay = FRAMES_PER_SECOND / 4;
+
+  MovDelay[x][y] =
+    (element == EL_SP_BUGGY_BASE ?
+     2 * FRAMES_PER_SECOND + RND(5 * FRAMES_PER_SECOND) - activating_delay :
+     element == EL_SP_BUGGY_BASE_ACTIVATING ?
+     activating_delay :
+     element == EL_SP_BUGGY_BASE_ACTIVE ?
+     1 * FRAMES_PER_SECOND + RND(1 * FRAMES_PER_SECOND) : 1);
+}
+
+static void WarnBuggyBase(int x, int y)
+{
+  int i;
+  static int xy[4][2] =
+  {
+    { 0, -1 },
+    { -1, 0 },
+    { +1, 0 },
+    { 0, +1 }
+  };
+
+  for (i=0; i<4; i++)
+  {
+    int xx = x + xy[i][0], yy = y + xy[i][1];
+
+    if (IS_PLAYER(xx, yy))
+    {
+      PlaySoundLevel(x, y, SND_SP_BUGGY_BASE_ACTIVE);
+
+      break;
+    }
+  }
+}
+
 static void CheckBuggyBase(int x, int y)
 {
   int element = Feld[x][y];
 
   if (element == EL_SP_BUGGY_BASE)
   {
-    if (!MovDelay[x][y])       /* wait some time before activating base */
-      MovDelay[x][y] = 2 * FRAMES_PER_SECOND + RND(5 * FRAMES_PER_SECOND);
+    if (MovDelay[x][y] == 0)   /* wait some time before activating base */
+    {
+      GfxFrame[x][y] = 0;
 
-    if (MovDelay[x][y])
+      InitBuggyBase(x, y);
+    }
+
+    MovDelay[x][y]--;
+
+    if (MovDelay[x][y] != 0)
     {
-      MovDelay[x][y]--;
-      if (MovDelay[x][y] < 5 && IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
-        DrawGraphic(SCREENX(x), SCREENY(y), IMG_SP_BUGGY_BASE, 0);
-      if (MovDelay[x][y])
-       return;
+      DrawLevelElementAnimation(x, y, element);
+    }
+    else
+    {
+      Feld[x][y] = EL_SP_BUGGY_BASE_ACTIVATING;
+      DrawLevelField(x, y);
+    }
+  }
+  else if (element == EL_SP_BUGGY_BASE_ACTIVATING)
+  {
+    if (MovDelay[x][y] == 0)   /* display activation warning of buggy base */
+    {
+      GfxFrame[x][y] = 0;
+
+      InitBuggyBase(x, y);
+    }
+
+    MovDelay[x][y]--;
 
+    if (MovDelay[x][y] != 0)
+    {
+      DrawLevelElementAnimation(x, y, element);
+    }
+    else
+    {
       Feld[x][y] = EL_SP_BUGGY_BASE_ACTIVE;
+      DrawLevelField(x, y);
     }
   }
   else if (element == EL_SP_BUGGY_BASE_ACTIVE)
   {
-    if (!MovDelay[x][y])       /* start activating buggy base */
-      MovDelay[x][y] = 1 * FRAMES_PER_SECOND + RND(1 * FRAMES_PER_SECOND);
-
-    if (MovDelay[x][y])
+    if (MovDelay[x][y] == 0)   /* start activating buggy base */
     {
-      MovDelay[x][y]--;
-      if (MovDelay[x][y])
-      {
-       int i;
-       static int xy[4][2] =
-       {
-         { 0, -1 },
-         { -1, 0 },
-         { +1, 0 },
-         { 0, +1 }
-       };
-
-       if (IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
-       {
-         int graphic = IMG_SP_BUGGY_BASE_ACTIVE;
-         int frame = getGraphicAnimationFrame(graphic, SimpleRND(100));
-
-          DrawGraphic(SCREENX(x), SCREENY(y), graphic, frame);
-       }
+      GfxFrame[x][y] = 0;
 
-       for (i=0; i<4; i++)
-       {
-         int xx = x + xy[i][0], yy = y + xy[i][1];
+      InitBuggyBase(x, y);
+    }
 
-         if (IS_PLAYER(xx, yy))
-         {
-           PlaySoundLevel(x, y, SND_SP_BUGGY_BASE_ACTIVE);
-           break;
-         }
-       }
+    MovDelay[x][y]--;
 
-       return;
-      }
+    if (MovDelay[x][y] != 0)
+    {
+      DrawLevelElementAnimation(x, y, element);
 
+      WarnBuggyBase(x, y);
+    }
+    else
+    {
       Feld[x][y] = EL_SP_BUGGY_BASE;
       DrawLevelField(x, y);
     }
@@ -4712,15 +4766,17 @@ static void CheckTrap(int x, int y)
 
   if (element == EL_TRAP)
   {
-    if (!MovDelay[x][y])       /* wait some time before activating trap */
+    if (MovDelay[x][y] == 0)   /* wait some time before activating trap */
       MovDelay[x][y] = 2 * FRAMES_PER_SECOND + RND(5 * FRAMES_PER_SECOND);
 
-    if (MovDelay[x][y])
-    {
-      MovDelay[x][y]--;
-      if (MovDelay[x][y])
-       return;
+    MovDelay[x][y]--;
 
+    if (MovDelay[x][y] != 0)
+    {
+      /* do nothing while waiting */
+    }
+    else
+    {
       Feld[x][y] = EL_TRAP_ACTIVE;
       PlaySoundLevel(x, y, SND_TRAP_ACTIVATING);
     }
@@ -4730,36 +4786,28 @@ static void CheckTrap(int x, int y)
     int delay = 4;
     int num_frames = 8;
 
-    if (!MovDelay[x][y])       /* start activating trap */
-      MovDelay[x][y] = num_frames * delay;
-
-    if (MovDelay[x][y])
+    if (MovDelay[x][y] == 0)   /* start activating trap */
     {
-      MovDelay[x][y]--;
-
-      if (MovDelay[x][y])
-      {
-       if (!(MovDelay[x][y] % delay))
-       {
-         if (IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
-         {
-           int graphic = IMG_TRAP_ACTIVE;
-           int frame = getGraphicAnimationFrame(graphic, 31 - MovDelay[x][y]);
-
-           DrawGraphic(SCREENX(x),SCREENY(y), graphic, frame);
-           DrawCrumbledSand(SCREENX(x), SCREENY(y));
-         }
-       }
+      MovDelay[x][y] = num_frames * delay;
+      GfxFrame[x][y] = 0;
+    }
 
-       return;
-      }
+    MovDelay[x][y]--;
 
+    if (MovDelay[x][y] != 0)
+    {
+      if (DrawLevelElementAnimation(x, y, element))
+       DrawCrumbledSand(SCREENX(x), SCREENY(y));
+    }
+    else
+    {
       Feld[x][y] = EL_TRAP;
       DrawLevelField(x, y);
     }
   }
 }
 
+#if 0
 static void DrawBeltAnimation(int x, int y, int element)
 {
   int belt_nr = getBeltNrFromBeltActiveElement(element);
@@ -4773,35 +4821,38 @@ static void DrawBeltAnimation(int x, int y, int element)
       PlaySoundLevelAction(x, y, SND_ACTION_ACTIVE);
   }
 }
+#endif
 
 static void ChangeElement(int x, int y)
 {
   int element = Feld[x][y];
-  int change_delay = changing_element[element].change_delay;
 
-  if (!MovDelay[x][y])                 /* next animation frame */
+  if (MovDelay[x][y] == 0)             /* initialize element change */
   {
-    MovDelay[x][y] = change_delay + 1;
+    MovDelay[x][y] = changing_element[element].change_delay + 1;
     GfxFrame[x][y] = 0;
+
+    if (changing_element[element].pre_change_function)
+      changing_element[element].pre_change_function(x, y);
   }
 
-  if (MovDelay[x][y])                  /* wait some time before next frame */
-  {
-    MovDelay[x][y]--;
+  MovDelay[x][y]--;
 
-    if (MovDelay[x][y])
-    {
-      DrawLevelElementAnimation(x, y, element);
+  if (MovDelay[x][y] != 0)             /* continue element change */
+  {
+    DrawLevelElementAnimation(x, y, element);
 
-      return;
-    }
+    if (changing_element[element].change_function)
+      changing_element[element].change_function(x, y);
   }
+  else                                 /* finish element change */
+  {
+    Feld[x][y] = changing_element[element].next_element;
+    DrawLevelField(x, y);
 
-  Feld[x][y] = changing_element[element].next_element;
-  DrawLevelField(x, y);
-
-  if (changing_element[element].changer_function)
-    changing_element[element].changer_function(x, y);
+    if (changing_element[element].post_change_function)
+      changing_element[element].post_change_function(x, y);
+  }
 }
 
 static void PlayerActions(struct PlayerInfo *player, byte player_action)
@@ -5163,8 +5214,10 @@ void GameActions()
       AusgangstuerPruefen(x, y);
     else if (element == EL_SP_EXIT_CLOSED)
       AusgangstuerPruefen_SP(x, y);
+#if 0
     else if (element == EL_EXIT_OPENING)
       AusgangstuerOeffnen(x, y);
+#endif
     else if (element == EL_WALL_GROWING_ACTIVE)
       MauerWaechst(x, y);
     else if (element == EL_WALL_GROWING ||
@@ -5174,14 +5227,15 @@ void GameActions()
       MauerAbleger(x, y);
     else if (element == EL_FLAMES)
       CheckForDragon(x, y);
-    else if (element == EL_SP_BUGGY_BASE || element == EL_SP_BUGGY_BASE_ACTIVE)
+    else if (element == EL_SP_BUGGY_BASE ||
+            element == EL_SP_BUGGY_BASE_ACTIVATING ||
+            element == EL_SP_BUGGY_BASE_ACTIVE)
       CheckBuggyBase(x, y);
     else if (element == EL_TRAP || element == EL_TRAP_ACTIVE)
       CheckTrap(x, y);
 #if 0
     else if (IS_BELT_ACTIVE(element))
       DrawBeltAnimation(x, y, element);
-#endif
     else if (element == EL_SWITCHGATE_OPENING)
       OpenSwitchgate(x, y);
     else if (element == EL_SWITCHGATE_CLOSING)
@@ -5190,6 +5244,7 @@ void GameActions()
       OpenTimegate(x, y);
     else if (element == EL_TIMEGATE_CLOSING)
       CloseTimegate(x, y);
+#endif
 
     else if (IS_AUTO_CHANGING(element))
       ChangeElement(x, y);
@@ -6199,6 +6254,7 @@ int DigField(struct PlayerInfo *player,
     case EL_TRAP:
     case EL_SP_BASE:
     case EL_SP_BUGGY_BASE:
+    case EL_SP_BUGGY_BASE_ACTIVATING:
       RemoveField(x, y);
       PlaySoundLevelElementAction(x, y, element, SND_ACTION_DIGGING);
       break;
index 6a2777fd62e6316fce5a45d603db9583baebc97c..c25ded7716ddd8d0e1b251f69e131cfad253d7e3 100644 (file)
@@ -878,6 +878,8 @@ static void InitGraphicInfo()
       new_graphic_info[i].anim_mode = ANIM_PINGPONG;
     else if (parameter[GFX_ARG_MODE_PINGPONG2])
       new_graphic_info[i].anim_mode = ANIM_PINGPONG2;
+    else if (parameter[GFX_ARG_MODE_RANDOM])
+      new_graphic_info[i].anim_mode = ANIM_RANDOM;
     else if (new_graphic_info[i].anim_frames > 1)
       new_graphic_info[i].anim_mode = ANIM_LOOP;
     else
@@ -1878,6 +1880,7 @@ void InitElementProperties()
     EL_SAND,
     EL_SP_BASE,
     EL_SP_BUGGY_BASE,
+    EL_SP_BUGGY_BASE_ACTIVATING,
     EL_TRAP,
     EL_INVISIBLE_SAND,
     EL_INVISIBLE_SAND_ACTIVE
index c067d2d460ee1e9fd1d55308b671216780114bcb..5dc74a99f6ad5d779ca30d2c01671404add0b0e1 100644 (file)
@@ -35,31 +35,37 @@ int getAnimationFrame(int num_frames, int delay, int mode, int start_frame,
 
   sync_frame += start_frame * delay;
 
-  if (mode & ANIM_LOOP)                        /* normal, looping animation */
+  if (mode & ANIM_LOOP)                        /* looping animation */
   {
     frame = (sync_frame % (delay * num_frames)) / delay;
   }
-  else if (mode & ANIM_LINEAR)         /* normal, non-looping animation */
+  else if (mode & ANIM_LINEAR)         /* linear (non-looping) animation */
   {
     frame = sync_frame / delay;
 
     if (frame > num_frames - 1)
       frame = num_frames - 1;
   }
-  else if (mode & ANIM_PINGPONG)       /* use border frames once */
+  else if (mode & ANIM_PINGPONG)       /* oscillate (border frames once) */
   {
     int max_anim_frames = 2 * num_frames - 2;
 
     frame = (sync_frame % (delay * max_anim_frames)) / delay;
     frame = (frame < num_frames ? frame : max_anim_frames - frame);
   }
-  else if (mode & ANIM_PINGPONG2)      /* use border frames twice */
+  else if (mode & ANIM_PINGPONG2)      /* oscillate (border frames twice) */
   {
     int max_anim_frames = 2 * num_frames;
 
     frame = (sync_frame % (delay * max_anim_frames)) / delay;
     frame = (frame < num_frames ? frame : max_anim_frames - frame - 1);
   }
+  else if (mode & ANIM_RANDOM)         /* play frames in random order */
+  {
+    /* note: expect different frames for the same delay cycle! */
+
+    frame = SimpleRND(num_frames);
+  }
 
   if (mode & ANIM_REVERSE)             /* use reverse animation direction */
     frame = num_frames - frame - 1;
index 3588d7da46a4a0df1080c7f796780f20f492b15d..4ed43abe148c1e16e46db1dafaa911d809a83c26 100644 (file)
@@ -24,6 +24,7 @@
 #define ANIM_PINGPONG          (1 << 2)
 #define ANIM_PINGPONG2         (1 << 3)
 #define ANIM_REVERSE           (1 << 4)
+#define ANIM_RANDOM            (1 << 5)
 
 /* values for toon animation direction */
 #define ANIMDIR_LEFT   1
index fc8cd0400821784b028391c898e9204819ae6be7..86c98a98924036415636dbd1bc95222bee5ccdd2 100644 (file)
@@ -679,19 +679,10 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS] =
 
   /* "real" (and therefore drawable) runtime elements */
 
-  { "magic_wall",              "-"                             },
-  { "magic_wall",              "-"                             },
-  { "magic_wall",              "-"                             },    /* 490 */
-  { "magic_wall",              "-"                             },
-  { "wall",                    "-"                             },
-  { "wall",                    "-"                             },
-  { "exit",                    "-"                             },
-  { "sp_terminal",             "-"                             },
-  { "sp_buggy_base",           "-"                             },
   { "key",                     "-"                             },
   { "key",                     "-"                             },
+  { "key",                     "-"                             },    /* 490 */
   { "key",                     "-"                             },
-  { "key",                     "-"                             },    /* 500 */
   { "dynabomb",                        "-"                             },
   { "dynabomb",                        "-"                             },
   { "dynabomb",                        "-"                             },
@@ -700,29 +691,39 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS] =
   { "switchgate",              "-"                             },
   { "timegate",                        "-"                             },
   { "timegate",                        "-"                             },
-  { "pearl",                   "-"                             },
-  { "trap",                    "-"                             },    /* 510 */
-  { "murphy_clone",            "-"                             },
-  { "quicksand",               "-"                             },
-  { "magic_wall",              "-"                             },
-  { "magic_wall",              "-"                             },
-  { "amoeba",                  "-"                             },
-  { "sp_exit",                 "-"                             },
+  { "pearl",                   "-"                             },    /* 500 */
+  { "trap",                    "-"                             },
   { "wall",                    "-"                             },
-  { "sand",                    "-"                             },
   { "wall",                    "-"                             },
-  { "conveyor_belt",           "-"                             },    /* 520 */
+  { "sand",                    "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
+  { "conveyor_belt",           "-"                             },    /* 510 */
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
   { "conveyor_belt",           "-"                             },
-  { "conveyor_belt",           "-"                             },    /* 530 */
   { "conveyor_belt",           "-"                             },
+  { "conveyor_belt",           "-"                             },
+  { "exit",                    "-"                             },
+  { "sp_exit",                 "-"                             },
+  { "sp_terminal",             "-"                             },
+  { "sp_buggy_base",           "-"                             },    /* 520 */
+  { "sp_buggy_base",           "-"                             },
+  { "murphy_clone",            "-"                             },
+  { "amoeba",                  "-"                             },
+  { "quicksand",               "-"                             },
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },    /* 530 */
+  { "magic_wall",              "-"                             },
+  { "magic_wall",              "-"                             },
 
   { NULL,                      "-"                             }
 };
index 204f7c415ffb040f13fa2ab0ce41d8e0515bb3ab..3679d5503966117b64d10449f4facaefd4db5263 100644 (file)
 /* "real" (and therefore drawable) runtime elements */
 #define EL_FIRST_RUNTIME_REAL          NUM_FILE_ELEMENTS
 
-#define EL_MAGIC_WALL_ACTIVE           (EL_FIRST_RUNTIME_REAL + 0)
-#define EL_BD_MAGIC_WALL_ACTIVE                (EL_FIRST_RUNTIME_REAL + 1)
-#define EL_MAGIC_WALL_FULL             (EL_FIRST_RUNTIME_REAL + 2)
-#define EL_BD_MAGIC_WALL_FULL          (EL_FIRST_RUNTIME_REAL + 3)
-#define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 4)
-#define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 5)
-#define EL_EXIT_OPENING                        (EL_FIRST_RUNTIME_REAL + 6)
-#define EL_SP_TERMINAL_ACTIVE          (EL_FIRST_RUNTIME_REAL + 7)
-#define EL_SP_BUGGY_BASE_ACTIVE                (EL_FIRST_RUNTIME_REAL + 8)
-#define EL_EM_KEY1                     (EL_FIRST_RUNTIME_REAL + 9)
-#define EL_EM_KEY2                     (EL_FIRST_RUNTIME_REAL + 10)
-#define EL_EM_KEY3                     (EL_FIRST_RUNTIME_REAL + 11)
-#define EL_EM_KEY4                     (EL_FIRST_RUNTIME_REAL + 12)
-#define EL_DYNABOMB_PLAYER1_ACTIVE     (EL_FIRST_RUNTIME_REAL + 13)
-#define EL_DYNABOMB_PLAYER2_ACTIVE     (EL_FIRST_RUNTIME_REAL + 14)
-#define EL_DYNABOMB_PLAYER3_ACTIVE     (EL_FIRST_RUNTIME_REAL + 15)
-#define EL_DYNABOMB_PLAYER4_ACTIVE     (EL_FIRST_RUNTIME_REAL + 16)
-#define EL_SWITCHGATE_OPENING          (EL_FIRST_RUNTIME_REAL + 17)
-#define EL_SWITCHGATE_CLOSING          (EL_FIRST_RUNTIME_REAL + 18)
-#define EL_TIMEGATE_OPENING            (EL_FIRST_RUNTIME_REAL + 19)
-#define EL_TIMEGATE_CLOSING            (EL_FIRST_RUNTIME_REAL + 20)
-#define EL_PEARL_BREAKING              (EL_FIRST_RUNTIME_REAL + 21)
-#define EL_TRAP_ACTIVE                 (EL_FIRST_RUNTIME_REAL + 22)
-#define EL_SP_MURPHY_CLONE             (EL_FIRST_RUNTIME_REAL + 23)
-#define EL_QUICKSAND_EMPTYING          (EL_FIRST_RUNTIME_REAL + 24)
-#define EL_MAGIC_WALL_EMPTYING         (EL_FIRST_RUNTIME_REAL + 25)
-#define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 26)
-#define EL_AMOEBA_DRIPPING             (EL_FIRST_RUNTIME_REAL + 27)
-#define EL_SP_EXIT_OPEN                        (EL_FIRST_RUNTIME_REAL + 28)
-#define EL_INVISIBLE_STEELWALL_ACTIVE  (EL_FIRST_RUNTIME_REAL + 29)
-#define EL_INVISIBLE_SAND_ACTIVE       (EL_FIRST_RUNTIME_REAL + 30)
-#define EL_INVISIBLE_WALL_ACTIVE       (EL_FIRST_RUNTIME_REAL + 31)
-#define EL_CONVEYOR_BELT1_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 32)
-#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 33)
-#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 34)
-#define EL_CONVEYOR_BELT2_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 35)
-#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 36)
-#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
-#define EL_CONVEYOR_BELT3_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 38)
-#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 39)
-#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 40)
-#define EL_CONVEYOR_BELT4_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 41)
-#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 42)
-#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 43)
+#define EL_EM_KEY1                     (EL_FIRST_RUNTIME_REAL + 0)
+#define EL_EM_KEY2                     (EL_FIRST_RUNTIME_REAL + 1)
+#define EL_EM_KEY3                     (EL_FIRST_RUNTIME_REAL + 2)
+#define EL_EM_KEY4                     (EL_FIRST_RUNTIME_REAL + 3)
+#define EL_DYNABOMB_PLAYER1_ACTIVE     (EL_FIRST_RUNTIME_REAL + 4)
+#define EL_DYNABOMB_PLAYER2_ACTIVE     (EL_FIRST_RUNTIME_REAL + 5)
+#define EL_DYNABOMB_PLAYER3_ACTIVE     (EL_FIRST_RUNTIME_REAL + 6)
+#define EL_DYNABOMB_PLAYER4_ACTIVE     (EL_FIRST_RUNTIME_REAL + 7)
+#define EL_SWITCHGATE_OPENING          (EL_FIRST_RUNTIME_REAL + 8)
+#define EL_SWITCHGATE_CLOSING          (EL_FIRST_RUNTIME_REAL + 9)
+#define EL_TIMEGATE_OPENING            (EL_FIRST_RUNTIME_REAL + 10)
+#define EL_TIMEGATE_CLOSING            (EL_FIRST_RUNTIME_REAL + 11)
+#define EL_PEARL_BREAKING              (EL_FIRST_RUNTIME_REAL + 12)
+#define EL_TRAP_ACTIVE                 (EL_FIRST_RUNTIME_REAL + 13)
+#define EL_INVISIBLE_STEELWALL_ACTIVE  (EL_FIRST_RUNTIME_REAL + 14)
+#define EL_INVISIBLE_WALL_ACTIVE       (EL_FIRST_RUNTIME_REAL + 15)
+#define EL_INVISIBLE_SAND_ACTIVE       (EL_FIRST_RUNTIME_REAL + 16)
+#define EL_CONVEYOR_BELT1_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 17)
+#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 18)
+#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 19)
+#define EL_CONVEYOR_BELT2_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 20)
+#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 21)
+#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
+#define EL_CONVEYOR_BELT3_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 23)
+#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 24)
+#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 25)
+#define EL_CONVEYOR_BELT4_LEFT_ACTIVE  (EL_FIRST_RUNTIME_REAL + 26)
+#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE        (EL_FIRST_RUNTIME_REAL + 27)
+#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 28)
+#define EL_EXIT_OPENING                        (EL_FIRST_RUNTIME_REAL + 29)
+#define EL_SP_EXIT_OPEN                        (EL_FIRST_RUNTIME_REAL + 30)
+#define EL_SP_TERMINAL_ACTIVE          (EL_FIRST_RUNTIME_REAL + 31)
+#define EL_SP_BUGGY_BASE_ACTIVATING    (EL_FIRST_RUNTIME_REAL + 32)
+#define EL_SP_BUGGY_BASE_ACTIVE                (EL_FIRST_RUNTIME_REAL + 33)
+#define EL_SP_MURPHY_CLONE             (EL_FIRST_RUNTIME_REAL + 34)
+#define EL_AMOEBA_DRIPPING             (EL_FIRST_RUNTIME_REAL + 35)
+#define EL_QUICKSAND_EMPTYING          (EL_FIRST_RUNTIME_REAL + 36)
+#define EL_MAGIC_WALL_ACTIVE           (EL_FIRST_RUNTIME_REAL + 37)
+#define EL_BD_MAGIC_WALL_ACTIVE                (EL_FIRST_RUNTIME_REAL + 38)
+#define EL_MAGIC_WALL_FULL             (EL_FIRST_RUNTIME_REAL + 39)
+#define EL_BD_MAGIC_WALL_FULL          (EL_FIRST_RUNTIME_REAL + 40)
+#define EL_MAGIC_WALL_EMPTYING         (EL_FIRST_RUNTIME_REAL + 41)
+#define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 42)
+#define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 43)
+#define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 44)
 
 /* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 45)
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
 #define GFX_ARG_MODE_LINEAR                    10
 #define GFX_ARG_MODE_PINGPONG                  11
 #define GFX_ARG_MODE_PINGPONG2                 12
-#define GFX_ARG_MODE_REVERSE                   13
-#define GFX_ARG_GLOBAL_SYNC                    14
+#define GFX_ARG_MODE_RANDOM                    13
+#define GFX_ARG_MODE_REVERSE                   14
+#define GFX_ARG_GLOBAL_SYNC                    15
 
-#define NUM_GFX_ARGS                           15
+#define NUM_GFX_ARGS                           16
 
 #define GFX_ARG_UNDEFINED                      "-1000000"
 #define GFX_ARG_UNDEFINED_VALUE                        (atoi(GFX_ARG_UNDEFINED))
index 3a96d18312479c7785fafa2e4195d733dceec8a5..7543d425df07b89fd328463cf0039531f8b2ec76 100644 (file)
@@ -682,22 +682,28 @@ void TapeQuickLoad()
  * tape autoplay functions
  * ------------------------------------------------------------------------- */
 
+#define MAX_NUM_AUTOPLAY_LEVELS                1000
+
 void AutoPlayTape()
 {
   static LevelDirTree *autoplay_leveldir = NULL;
   static boolean autoplay_initialized = FALSE;
   static int autoplay_level_nr = -1;
-  static int levels_played = 0;
-  static int levels_solved = 0;
+  static int num_levels_played = 0;
+  static int num_levels_solved = 0;
+  static boolean levels_failed[MAX_NUM_AUTOPLAY_LEVELS];
+  int i;
 
   if (autoplay_initialized)
   {
     /* just finished auto-playing tape */
     printf("%s.\n", tape.auto_play_level_solved ? "solved" : "NOT SOLVED");
 
-    levels_played++;
+    num_levels_played++;
     if (tape.auto_play_level_solved)
-      levels_solved++;
+      num_levels_solved++;
+    else if (level_nr >= 0 && level_nr < MAX_NUM_AUTOPLAY_LEVELS)
+      levels_failed[level_nr] = TRUE;
   }
   else
   {
@@ -731,6 +737,9 @@ void AutoPlayTape()
     printf_line('=', 79);
     printf("\n");
 
+    for (i=0; i<MAX_NUM_AUTOPLAY_LEVELS; i++)
+      levels_failed[i] = FALSE;
+
     autoplay_initialized = TRUE;
   }
 
@@ -766,14 +775,22 @@ void AutoPlayTape()
 
   printf("\n");
   printf_line('=', 79);
-  printf("Number of levels played: %d\n", levels_played);
-  printf("Number of levels solved: %d (%d%%)\n", levels_solved,
-        levels_solved * 100 / levels_played);
+  printf("Number of levels played: %d\n", num_levels_played);
+  printf("Number of levels solved: %d (%d%%)\n", num_levels_solved,
+        num_levels_solved * 100 / num_levels_played);
   printf_line('-', 79);
   printf("Summary (for automatic parsing by scripts):\n");
-  printf("LEVELDIR '%s', SOLVED %d/%d (%d%%)\n",
-        autoplay_leveldir->identifier, levels_solved, levels_played,
-        levels_solved * 100 / levels_played);
+  printf("LEVELDIR '%s', SOLVED %d/%d (%d%%)",
+        autoplay_leveldir->identifier, num_levels_solved, num_levels_played,
+        num_levels_solved * 100 / num_levels_played);
+  if (num_levels_played != num_levels_solved)
+  {
+    printf(", FAILED:");
+    for (i=0; i<MAX_NUM_AUTOPLAY_LEVELS; i++)
+      if (levels_failed[i])
+       printf(" %03d", i);
+  }
+  printf("\n");
   printf_line('=', 79);
 
   CloseAllAndExit(0);
index ecbe07d0f99c10317cb665e3fc6497c74c281526..354f196c48797f47612d8157fa2650029fa848c5 100644 (file)
@@ -404,6 +404,37 @@ void ClearWindow()
   }
 }
 
+void MarkTileDirty(int x, int y)
+{
+  int xx = redraw_x1 + x;
+  int yy = redraw_y1 + y;
+
+  if (!redraw[xx][yy])
+    redraw_tiles++;
+
+  redraw[xx][yy] = TRUE;
+  redraw_mask |= REDRAW_TILES;
+}
+
+void SetBorderElement()
+{
+  int x, y;
+
+  BorderElement = EL_EMPTY;
+
+  for(y=0; y<lev_fieldy && BorderElement == EL_EMPTY; y++)
+  {
+    for(x=0; x<lev_fieldx; x++)
+    {
+      if (!IS_MASSIVE(Feld[x][y]))
+       BorderElement = EL_STEELWALL;
+
+      if (y != 0 && y != lev_fieldy - 1 && x != lev_fieldx - 1)
+       x = lev_fieldx - 2;
+    }
+  }
+}
+
 static int getGraphicAnimationPhase(int frames, int delay, int mode)
 {
   int phase;
@@ -437,35 +468,40 @@ inline int getGraphicAnimationFrame(int graphic, int sync_frame)
                           sync_frame);
 }
 
-void MarkTileDirty(int x, int y)
+inline void DrawGraphicAnimationExt(DrawBuffer *dst_bitmap, int x, int y,
+                                   int graphic, int sync_frame, int mask_mode)
 {
-  int xx = redraw_x1 + x;
-  int yy = redraw_y1 + y;
-
-  if (!redraw[xx][yy])
-    redraw_tiles++;
+  int frame = getGraphicAnimationFrame(graphic, sync_frame);
 
-  redraw[xx][yy] = TRUE;
-  redraw_mask |= REDRAW_TILES;
+  if (mask_mode == USE_MASKING)
+    DrawGraphicThruMaskExt(dst_bitmap, x, y, graphic, frame);
+  else
+    DrawGraphicExt(dst_bitmap, x, y, graphic, frame);
 }
 
-void SetBorderElement()
+inline boolean DrawGraphicAnimation(int x, int y, int graphic)
 {
-  int x, y;
+  int lx = LEVELX(x), ly = LEVELY(y);
 
-  BorderElement = EL_EMPTY;
+  if (!IN_SCR_FIELD(x, y) ||
+      (GfxFrame[lx][ly] % new_graphic_info[graphic].anim_delay) != 0)
+    return FALSE;
 
-  for(y=0; y<lev_fieldy && BorderElement == EL_EMPTY; y++)
-  {
-    for(x=0; x<lev_fieldx; x++)
-    {
-      if (!IS_MASSIVE(Feld[x][y]))
-       BorderElement = EL_STEELWALL;
+  DrawGraphicAnimationExt(drawto_field, FX + x * TILEX, FY + y * TILEY,
+                         graphic, GfxFrame[lx][ly], NO_MASKING);
+  MarkTileDirty(x, y);
 
-      if (y != 0 && y != lev_fieldy - 1 && x != lev_fieldx - 1)
-       x = lev_fieldx - 2;
-    }
-  }
+  return TRUE;
+}
+
+boolean DrawLevelGraphicAnimation(int x, int y, int graphic)
+{
+  return DrawGraphicAnimation(SCREENX(x), SCREENY(y), graphic);
+}
+
+boolean DrawLevelElementAnimation(int x, int y, int element)
+{
+  return DrawGraphicAnimation(SCREENX(x), SCREENY(y), el2img(element));
 }
 
 void DrawAllPlayers()
@@ -788,40 +824,6 @@ void DrawPlayer(struct PlayerInfo *player)
   MarkTileDirty(sx,sy);
 }
 
-inline void DrawGraphicAnimationExt(DrawBuffer *dst_bitmap, int x, int y,
-                                   int graphic, int sync_frame, int mask_mode)
-{
-  int frame = getGraphicAnimationFrame(graphic, sync_frame);
-
-  if (mask_mode == USE_MASKING)
-    DrawGraphicThruMaskExt(dst_bitmap, x, y, graphic, frame);
-  else
-    DrawGraphicExt(dst_bitmap, x, y, graphic, frame);
-}
-
-inline void DrawGraphicAnimation(int x, int y, int graphic)
-{
-  int lx = LEVELX(x), ly = LEVELY(y);
-
-  if (!IN_SCR_FIELD(x, y) ||
-      (GfxFrame[lx][ly] % new_graphic_info[graphic].anim_delay) != 0)
-    return;
-
-  DrawGraphicAnimationExt(drawto_field, FX + x * TILEX, FY + y * TILEY,
-                         graphic, GfxFrame[lx][ly], NO_MASKING);
-  MarkTileDirty(x, y);
-}
-
-void DrawLevelGraphicAnimation(int x, int y, int graphic)
-{
-  DrawGraphicAnimation(SCREENX(x), SCREENY(y), graphic);
-}
-
-void DrawLevelElementAnimation(int x, int y, int element)
-{
-  DrawGraphicAnimation(SCREENX(x), SCREENY(y), el2img(element));
-}
-
 #if 0
 void getOldGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
 {
index 629593dffc5541cfc57006bc0641c25a4e785336..834642310350653e971f98f3ce7755e2fee31753 100644 (file)
@@ -70,25 +70,26 @@ void DrawBackground(int, int, int, int);
 void MarkTileDirty(int, int);
 void SetBorderElement();
 
+int getGraphicAnimationFrame(int, int);
+void DrawGraphicAnimationExt(DrawBuffer *, int, int, int, int, int);
+boolean DrawGraphicAnimation(int, int, int);
+boolean DrawLevelGraphicAnimation(int, int, int);
+boolean DrawLevelElementAnimation(int, int, int);
+
 void DrawAllPlayers(void);
 void DrawPlayerField(int, int);
 void DrawPlayer(struct PlayerInfo *);
-int getGraphicAnimationFrame(int, int);
-void DrawGraphicAnimationExt(DrawBuffer *, int, int, int, int, int);
-void DrawGraphicAnimation(int, int, int);
-void DrawLevelGraphicAnimation(int, int, int);
-void DrawLevelElementAnimation(int, int, int);
+
 void getGraphicSource(int, int, Bitmap **, int *, int *);
 void DrawGraphic(int, int, int, int);
-#if 0
-void DrawOldGraphicExt(DrawBuffer *, int, int, int);
-#endif
 void DrawGraphicExt(DrawBuffer *, int, int, int, int);
 void DrawGraphicThruMask(int, int, int, int);
 void DrawGraphicThruMaskExt(DrawBuffer *, int, int, int, int);
+
 void DrawMiniGraphic(int, int, int);
 void getMiniGraphicSource(int, Bitmap **, int *, int *);
 void DrawMiniGraphicExt(DrawBuffer *, int, int, int);
+
 void DrawGraphicShifted(int, int, int, int, int, int, int, int);
 void DrawGraphicShiftedThruMask(int, int, int, int, int, int, int);
 void DrawScreenElementExt(int, int, int, int, int, int, int);
@@ -103,8 +104,10 @@ void DrawScreenElement(int, int, int);
 void DrawLevelElement(int, int, int);
 void DrawScreenField(int, int);
 void DrawLevelField(int, int);
+
 void DrawMiniElement(int, int, int);
 void DrawMiniElementOrWall(int, int, int, int);
+
 void getMicroGraphicSource(int, Bitmap **, int *, int *);
 void DrawMicroElement(int, int, int);
 void DrawLevel(void);