added optional button to restart game (door, panel and touch variants)
[rocksndiamonds.git] / src / game_mm / mm_main.h
index 5d0718f5f4ae188e37ed43d1db9313b776a9efdb..684647ce12ea77ca52aff8fc88a27288e7fb452f 100644 (file)
@@ -48,6 +48,7 @@
 #define EP_BIT_INACTIVE                (1 << 11)
 #define EP_BIT_WALL            (1 << 12)
 #define EP_BIT_PACMAN          (1 << 13)
+#define EP_BIT_ENVELOPE                (1 << 14)
 
 #define IS_GRID(e)             (Elementeigenschaften[e] & EP_BIT_GRID)
 #define IS_MCDUFFIN(e)         (Elementeigenschaften[e] & EP_BIT_MCDUFFIN)
@@ -63,6 +64,7 @@
 #define IS_INACTIVE(e)         (Elementeigenschaften[e] & EP_BIT_INACTIVE)
 #define IS_MM_WALL(e)          (Elementeigenschaften[e] & EP_BIT_WALL)
 #define IS_PACMAN(e)           (Elementeigenschaften[e] & EP_BIT_PACMAN)
+#define IS_ENVELOPE(e)         (Elementeigenschaften[e] & EP_BIT_ENVELOPE)
 
 #define IS_WALL_STEEL(e)       ((e) >= EL_WALL_STEEL_START &&          \
                                 (e) <= EL_WALL_STEEL_END)
                                 (e) <= EL_DF_MIRROR_END)
 #define IS_DF_MIRROR_AUTO(e)   ((e) >= EL_DF_MIRROR_AUTO_START &&      \
                                 (e) <= EL_DF_MIRROR_AUTO_END)
+#define IS_DF_MIRROR_FIXED(e)  ((e) >= EL_DF_MIRROR_FIXED_START &&     \
+                                (e) <= EL_DF_MIRROR_FIXED_END)
+#define IS_DF_SLOPE(e)         ((e) >= EL_DF_SLOPE_START &&            \
+                                (e) <= EL_DF_SLOPE_END)
 #define IS_LASER(e)            ((e) >= EL_LASER_START &&               \
                                 (e) <= EL_LASER_END)
 #define IS_RECEIVER(e)         ((e) >= EL_RECEIVER_START &&            \
                                 (e) == EL_BOMB ||                      \
                                 IS_WALL_AMOEBA(e))
 
-#define CAN_MOVE(e)            ((e) == EL_PACMAN)
-#define IS_FREE(x,y)            (Tile[x][y] == EL_EMPTY)
+#define IS_ABSORBING_BLOCK(e)  (IS_WALL_WOOD(e) ||                     \
+                                IS_DF_WALL_WOOD(e) ||                  \
+                                (e) == EL_BLOCK_WOOD ||                \
+                                (e) == EL_GATE_WOOD ||                 \
+                                (e) == EL_EXIT_CLOSED ||               \
+                                (e) == EL_EXIT_OPEN)
 
-#define IS_MOVING(x,y)          (MovPos[x][y] != 0)
-#define IS_BLOCKED(x,y)         (Tile[x][y] == EL_BLOCKED)
-#define IS_DRAWABLE(e)          ((e) < EL_BLOCKED)
-#define IS_NOT_DRAWABLE(e)      ((e) >= EL_BLOCKED)
+#define IS_ENVELOPE_OPENING(e) ((e) >= EL_ENVELOPE_OPENING_START &&    \
+                                (e) <= EL_ENVELOPE_OPENING_END)
 
-#define PLAYERINFO(x,y)         (&stored_player[StorePlayer[x][y]-EL_SPIELER1])
+#define ENVELOPE_NR(e)         ((e) - EL_ENVELOPE_1)
+#define ENVELOPE_OPENING_NR(e) ((e) - EL_ENVELOPE_1_OPENING)
 
-#define WALL_BASE(e)           ((e) & 0xfff0)
-#define WALL_BITS(e)           ((e) & 0x000f)
+#define CAN_MOVE(e)            ((e) == EL_PACMAN)
+#define IS_FREE(x, y)          (Tile[x][y] == EL_EMPTY)
 
-// Bitmaps with graphic file
-#define PIX_BACK               0
-#define PIX_DOOR               1
-#define PIX_TOONS              2
-#define PIX_DF                 3
-#define        PIX_BIGFONT             4
-#define PIX_SMALLFONT          5
-#define PIX_MEDIUMFONT         6
-// Bitmaps without graphic file
-#define PIX_DB_DOOR            7
+#define IS_MOVING(x, y)                (MovPos[x][y] != 0)
+#define IS_BLOCKED(x, y)       (Tile[x][y] == EL_BLOCKED)
+#define IS_DRAWABLE(e)         ((e) < EL_BLOCKED)
+#define IS_NOT_DRAWABLE(e)     ((e) >= EL_BLOCKED)
 
-#define NUM_PICTURES           7
-#define NUM_BITMAPS            8
+#define WALL_BASE(e)           ((e) & 0xfff0)
+#define WALL_BITS(e)           ((e) & 0x000f)
 
 // boundaries of arrays etc.
 #define MAX_PLAYER_NAME_LEN    10
 #define LEVEL_SCORE_ELEMENTS   16      // level elements with score
 
 
-extern DrawBuffer      *drawto_field;
+extern DrawBuffer      *drawto_mm;
+extern DrawBuffer      *bitmap_db_field;
 
 extern int             game_status;
 extern boolean         level_editor_test_game;
@@ -245,61 +249,6 @@ extern short               Sign[16];
 extern char           *element_info[];
 extern int             num_element_info;
 
-// often used screen positions
-#define DX                     534
-#define DY                     60
-#define EX                     DX
-#define EY                     (DY + 178)
-#define TILEX                  TILESIZE
-#define TILEY                  TILESIZE
-#define MINI_TILESIZE          (TILESIZE / 2)
-#define MINI_TILEX             (TILEX / 2)
-#define MINI_TILEY             (TILEY / 2)
-#define MICRO_TILEX            (TILEX / 4)
-#define MICRO_TILEY            (TILEY / 4)
-#define MICRO_WALLX            (TILEX / 8)
-#define MICRO_WALLY            (TILEY / 8)
-#define MIDPOSX                        (SCR_FIELDX / 2)
-#define MIDPOSY                        (SCR_FIELDY / 2)
-#define DXSIZE                 100
-#define DYSIZE                 280
-#define VXSIZE                 DXSIZE
-#define VYSIZE                 100
-#define EXSIZE                 DXSIZE
-#define EYSIZE                 (VXSIZE + 44)
-#define FULL_SXSIZE            (2 + SXSIZE + 2)
-#define FULL_SYSIZE            (2 + SYSIZE + 2)
-#define MICROLEV_XPOS          (SX + 12 * TILEX)
-#define MICROLEV_YPOS          (SY +  6 * TILEY)
-#define MICROLEV_XSIZE         (STD_LEV_FIELDX * MICRO_TILEX)
-#define MICROLEV_YSIZE         (STD_LEV_FIELDY * MICRO_TILEY)
-#define MICROLABEL_XPOS                (SY)
-#define MICROLABEL_YPOS                (SY + 352)
-#define MICROLABEL_XSIZE       (SXSIZE)
-#define MICROLABEL_YSIZE       (FONT4_YSIZE)
-
-#define GFX_STARTX             SX
-#define GFX_STARTY             SY
-#define MINI_GFX_STARTX                (SX + 8 * TILEX)
-#define MINI_GFX_STARTY                (SY + 6 * TILEY)
-#define MICRO_GFX_STARTX       (MINI_GFX_STARTX + 8 * MINI_TILEX)
-#define MICRO_GFX_STARTY       (MINI_GFX_STARTY + 6 * MINI_TILEY)
-#define GFX_PER_LINE           16
-#define MINI_GFX_PER_LINE      GFX_PER_LINE
-#define MICRO_GFX_PER_LINE     GFX_PER_LINE
-
-#define MINI_DF_STARTX         (8 * TILEX)
-#define MINI_DF_STARTY         (8 * TILEY)
-#define MICRO_DF_STARTX                (MINI_DF_STARTX + 8 * MINI_TILEX)
-#define MICRO_DF_STARTY                (MINI_DF_STARTY + 8 * MINI_TILEY)
-#define DF_PER_LINE            16
-#define MINI_DF_PER_LINE       DF_PER_LINE
-#define MICRO_DF_PER_LINE      DF_PER_LINE
-
-#define MICRO_FONT_STARTX      (MICRO_DF_STARTX + 8 * MICRO_TILEX)
-#define MICRO_FONT_STARTY      (MICRO_DF_STARTY + 8 * MICRO_TILEY)
-#define MICRO_FONT_PER_LINE    8
-
 // wall positions (that can be OR'ed together)
 #define WALL_TOPLEFT           1
 #define WALL_TOPRIGHT          2
@@ -356,31 +305,22 @@ extern int                num_element_info;
 #define EL_KETTLE              29
 #define EL_BOMB                        30
 #define EL_PRISM               31
-#define EL_WALL_START          32
-#define EL_WALL_EMPTY          EL_WALL_START
-#define EL_WALL_00             EL_WALL_START
-#define EL_WALL_STEEL          EL_WALL_00
-#define EL_WALL_STEEL_START    EL_WALL_00
-#define EL_WALL_15             47
-#define EL_WALL_STEEL_END      EL_WALL_15
-#define EL_WALL_16             48
-#define EL_WALL_WOOD           EL_WALL_16
-#define EL_WALL_WOOD_START     EL_WALL_16
-#define EL_WALL_31             63
-#define EL_WALL_WOOD_END       EL_WALL_31
-#define EL_WALL_32             64
-#define EL_WALL_ICE            EL_WALL_32
-#define EL_WALL_ICE_START      EL_WALL_32
-#define EL_WALL_47             79
-#define EL_WALL_ICE_END                EL_WALL_47
-#define EL_WALL_48             80
-#define EL_WALL_AMOEBA         EL_WALL_48
-#define EL_WALL_AMOEBA_START   EL_WALL_48
-#define EL_WALL_63             95
-#define EL_WALL_AMOEBA_END     EL_WALL_63
-#define EL_WALL_END            EL_WALL_63
+#define EL_WALL_START          EL_WALL_STEEL_START
+#define EL_WALL_STEEL_BASE     32
+#define EL_WALL_STEEL_START    (EL_WALL_STEEL_BASE + 0)
+#define EL_WALL_STEEL_END      (EL_WALL_STEEL_BASE + 15)
+#define EL_WALL_WOOD_BASE      48
+#define EL_WALL_WOOD_START     (EL_WALL_WOOD_BASE + 0)
+#define EL_WALL_WOOD_END       (EL_WALL_WOOD_BASE + 15)
+#define EL_WALL_ICE_BASE       64
+#define EL_WALL_ICE_START      (EL_WALL_ICE_BASE + 0)
+#define EL_WALL_ICE_END                (EL_WALL_ICE_BASE + 15)
+#define EL_WALL_AMOEBA_BASE    80
+#define EL_WALL_AMOEBA_START   (EL_WALL_AMOEBA_BASE + 0)
+#define EL_WALL_AMOEBA_END     (EL_WALL_AMOEBA_BASE + 15)
+#define EL_WALL_END            EL_WALL_AMOEBA_END
 #define EL_BLOCK_WOOD          96
-#define EL_BALL_GRAY           97
+#define EL_GRAY_BALL           97
 #define EL_BEAMER_START                98
 #define EL_BEAMER_00           (EL_BEAMER_START + 0)
 #define EL_BEAMER_01           (EL_BEAMER_START + 1)
@@ -451,8 +391,12 @@ extern int         num_element_info;
 #define EL_GRID_WOOD_03                (EL_GRID_WOOD_START + 3)
 #define EL_GRID_WOOD_END       EL_GRID_WOOD_03
 #define EL_FUEL_EMPTY          155
+#define EL_ENVELOPE_1          156
+#define EL_ENVELOPE_2          157
+#define EL_ENVELOPE_3          158
+#define EL_ENVELOPE_4          159
 
-#define EL_MM_END_1            155
+#define EL_MM_END_1            159
 
 #define EL_CHAR_START          160
 #define EL_CHAR_ASCII0         (EL_CHAR_START - 32)
@@ -539,14 +483,15 @@ extern int                num_element_info;
 #define EL_GRID_STEEL_FIXED_07 (EL_GRID_STEEL_FIXED_START + 7) // 157.5°
 #define EL_GRID_STEEL_FIXED_END        EL_GRID_STEEL_FIXED_07
 
-#define EL_DF_WALL_WOOD                272
-#define EL_DF_WALL_START       EL_DF_WALL_WOOD_START
-#define EL_DF_WALL_WOOD_START  (EL_DF_WALL_WOOD + 0)
-#define EL_DF_WALL_WOOD_END    (EL_DF_WALL_WOOD + 15)
+#define EL_DF_WALL_WOOD_BASE   272
+#define EL_DF_WALL_WOOD_START  (EL_DF_WALL_WOOD_BASE + 0)
+#define EL_DF_WALL_WOOD_END    (EL_DF_WALL_WOOD_BASE + 15)
+
+#define EL_DF_WALL_STEEL_BASE  288
+#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL_BASE + 0)
+#define EL_DF_WALL_STEEL_END   (EL_DF_WALL_STEEL_BASE + 15)
 
-#define EL_DF_WALL_STEEL       288
-#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL + 0)
-#define EL_DF_WALL_STEEL_END   (EL_DF_WALL_STEEL + 15)
+#define EL_DF_WALL_START       EL_DF_WALL_WOOD_START
 #define EL_DF_WALL_END         EL_DF_WALL_STEEL_END
 
 #define EL_DF_EMPTY            304
@@ -635,28 +580,64 @@ extern int                num_element_info;
 #define EL_MCDUFFIN            420
 #define EL_PACMAN              421
 #define EL_FUSE_OFF            422
-#define EL_STEEL_WALL          423
-#define EL_WOODEN_WALL         424
-#define EL_ICE_WALL            425
-#define EL_AMOEBA_WALL         426
+#define EL_WALL_STEEL          423
+#define EL_WALL_WOOD           424
+#define EL_WALL_ICE            425
+#define EL_WALL_AMOEBA         426
 #define EL_LASER               427
 #define EL_RECEIVER            428
-#define EL_DF_STEEL_WALL       429
-#define EL_DF_WOODEN_WALL      430
-
-#define EL_MM_END_2            430
+#define EL_DF_WALL_STEEL       429
+#define EL_DF_WALL_WOOD                430
+
+#define EL_DF_MIRROR_FIXED_START 431
+#define EL_DF_MIRROR_FIXED_00  (EL_DF_MIRROR_FIXED_START + 0)
+#define EL_DF_MIRROR_FIXED_01  (EL_DF_MIRROR_FIXED_START + 1)
+#define EL_DF_MIRROR_FIXED_02  (EL_DF_MIRROR_FIXED_START + 2)
+#define EL_DF_MIRROR_FIXED_03  (EL_DF_MIRROR_FIXED_START + 3)
+#define EL_DF_MIRROR_FIXED_04  (EL_DF_MIRROR_FIXED_START + 4)
+#define EL_DF_MIRROR_FIXED_05  (EL_DF_MIRROR_FIXED_START + 5)
+#define EL_DF_MIRROR_FIXED_06  (EL_DF_MIRROR_FIXED_START + 6)
+#define EL_DF_MIRROR_FIXED_07  (EL_DF_MIRROR_FIXED_START + 7)
+#define EL_DF_MIRROR_FIXED_08  (EL_DF_MIRROR_FIXED_START + 8)
+#define EL_DF_MIRROR_FIXED_09  (EL_DF_MIRROR_FIXED_START + 9)
+#define EL_DF_MIRROR_FIXED_10  (EL_DF_MIRROR_FIXED_START + 10)
+#define EL_DF_MIRROR_FIXED_11  (EL_DF_MIRROR_FIXED_START + 11)
+#define EL_DF_MIRROR_FIXED_12  (EL_DF_MIRROR_FIXED_START + 12)
+#define EL_DF_MIRROR_FIXED_13  (EL_DF_MIRROR_FIXED_START + 13)
+#define EL_DF_MIRROR_FIXED_14  (EL_DF_MIRROR_FIXED_START + 14)
+#define EL_DF_MIRROR_FIXED_15  (EL_DF_MIRROR_FIXED_START + 15)
+#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_15
+
+#define EL_DF_SLOPE_START       447
+#define EL_DF_SLOPE_00         (EL_DF_SLOPE_START + 0)
+#define EL_DF_SLOPE_01         (EL_DF_SLOPE_START + 1)
+#define EL_DF_SLOPE_02         (EL_DF_SLOPE_START + 2)
+#define EL_DF_SLOPE_03         (EL_DF_SLOPE_START + 3)
+#define EL_DF_SLOPE_END                EL_DF_SLOPE_03
+
+#define EL_MM_END_2            450
 #define EL_MM_END              EL_MM_END_2
 
 // "real" (and therefore drawable) runtime elements
 #define EL_EXIT_OPENING                500
 #define EL_EXIT_CLOSING                501
-#define EL_GRAY_BALL_OPENING   502
-#define EL_ICE_WALL_SHRINKING  503
-#define EL_AMOEBA_WALL_GROWING 504
-
-#define EL_WALL_CHANGING       512
-#define EL_WALL_CHANGING_START (EL_WALL_CHANGING + 0)
-#define EL_WALL_CHANGING_END   (EL_WALL_CHANGING + 15)
+#define EL_GRAY_BALL_ACTIVE    502
+#define EL_GRAY_BALL_OPENING   503
+#define EL_WALL_ICE_SHRINKING  504
+#define EL_WALL_AMOEBA_GROWING 505
+#define EL_BOMB_ACTIVE         506
+#define EL_MINE_ACTIVE         507
+#define EL_ENVELOPE_1_OPENING  508
+#define EL_ENVELOPE_2_OPENING  509
+#define EL_ENVELOPE_3_OPENING  510
+#define EL_ENVELOPE_4_OPENING  511
+
+#define EL_ENVELOPE_OPENING_START      EL_ENVELOPE_1_OPENING
+#define EL_ENVELOPE_OPENING_END                EL_ENVELOPE_4_OPENING
+
+#define EL_WALL_CHANGING_BASE  512
+#define EL_WALL_CHANGING_START (EL_WALL_CHANGING_BASE + 0)
+#define EL_WALL_CHANGING_END   (EL_WALL_CHANGING_BASE + 15)
 
 #define EL_FIRST_RUNTIME_EL    EL_EXIT_OPENING
 
@@ -674,324 +655,6 @@ extern int                num_element_info;
 
 #define IMG_EMPTY              IMG_EMPTY_SPACE
 
-#define GFX_START_MIRRORSCREEN 0
-#define GFX_END_MIRRORSCREEN   191
-#define GFX_START_PSEUDO       192
-#define GFX_END_PSEUDO         255
-#define GFX_START_MIRRORFONT   256
-#define GFX_END_MIRRORFONT     511
-#define GFX_START_MIRRORDF     512
-#define GFX_END_MIRRORDF       767
-
-#define NUM_TILES              512
-
-// graphics from "MirrorScreen"
-#define GFX_EMPTY              (-1)
-// row 0 (0)
-#define GFX_MIRROR_START       0
-#define GFX_MIRROR             GFX_MIRROR_START
-#define GFX_MIRROR_00          (GFX_MIRROR_START + 0)
-#define GFX_MIRROR_01          (GFX_MIRROR_START + 1)
-#define GFX_MIRROR_02          (GFX_MIRROR_START + 2)
-#define GFX_MIRROR_03          (GFX_MIRROR_START + 3)
-#define GFX_MIRROR_04          (GFX_MIRROR_START + 4)
-#define GFX_MIRROR_05          (GFX_MIRROR_START + 5)
-#define GFX_MIRROR_06          (GFX_MIRROR_START + 6)
-#define GFX_MIRROR_07          (GFX_MIRROR_START + 7)
-#define GFX_MIRROR_08          (GFX_MIRROR_START + 8)
-#define GFX_MIRROR_09          (GFX_MIRROR_START + 9)
-#define GFX_MIRROR_10          (GFX_MIRROR_START + 10)
-#define GFX_MIRROR_11          (GFX_MIRROR_START + 11)
-#define GFX_MIRROR_12          (GFX_MIRROR_START + 12)
-#define GFX_MIRROR_13          (GFX_MIRROR_START + 13)
-#define GFX_MIRROR_14          (GFX_MIRROR_START + 14)
-#define GFX_MIRROR_15          (GFX_MIRROR_START + 15)
-#define GFX_MIRROR_END         GFX_MIRROR_15
-// row 1 (16)
-#define GFX_GRID_STEEL_START   16
-#define GFX_GRID_STEEL         GFX_GRID_STEEL_START
-#define GFX_GRID_STEEL_00      (GFX_GRID_STEEL_START + 0)
-#define GFX_GRID_STEEL_01      (GFX_GRID_STEEL_START + 1)
-#define GFX_GRID_STEEL_02      (GFX_GRID_STEEL_START + 2)
-#define GFX_GRID_STEEL_03      (GFX_GRID_STEEL_START + 3)
-#define GFX_MCDUFFIN_START     20
-#define GFX_MCDUFFIN           GFX_MCDUFFIN_START
-#define GFX_MCDUFFIN_RIGHT     (GFX_MCDUFFIN_START + 0)
-#define GFX_MCDUFFIN_UP                (GFX_MCDUFFIN_START + 1)
-#define GFX_MCDUFFIN_LEFT      (GFX_MCDUFFIN_START + 2)
-#define GFX_MCDUFFIN_DOWN      (GFX_MCDUFFIN_START + 3)
-#define GFX_EXIT_CLOSED                24
-#define GFX_EXIT_OPENING_1     25
-#define GFX_EXIT_OPENING_2     26
-#define GFX_EXIT_OPEN          27
-#define GFX_KETTLE             28
-#define GFX_EXPLOSION_KETTLE   29
-// row 2 (32)
-#define GFX_PRISM              32
-#define GFX_WALL_SEVERAL       33
-#define GFX_WALL_ANIMATION     34
-#define GFX_BLOCK_WOOD         36
-#define GFX_BOMB               37
-#define GFX_FUSE_ON            38
-#define GFX_FUSE_OFF           39
-#define GFX_GATE_STONE         40
-#define GFX_KEY                        41
-#define GFX_LIGHTBULB_OFF      42
-#define GFX_LIGHTBULB_ON       43
-#define GFX_BALL_RED           44
-#define GFX_BALL_BLUE          45
-#define GFX_BALL_YELLOW                46
-#define GFX_BALL_GRAY          47
-// row 3 (48)
-#define GFX_BEAMER_START       48
-#define GFX_BEAMER_END         63
-// row 4 (64)
-#define GFX_PACMAN_START       64
-#define GFX_PACMAN             GFX_PACMAN_START
-#define GFX_PACMAN_RIGHT       (GFX_PACMAN_START + 0)
-#define GFX_PACMAN_UP          (GFX_PACMAN_START + 1)
-#define GFX_PACMAN_LEFT                (GFX_PACMAN_START + 2)
-#define GFX_PACMAN_DOWN                (GFX_PACMAN_START + 3)
-#define GFX_EXPLOSION_START    72
-#define GFX_EXPLOSION_SHORT    76
-#define GFX_EXPLOSION_LAST     78
-// row 5 (80)
-#define GFX_POLAR_START                80
-#define GFX_POLAR_END          95
-// row 6 (96)
-#define GFX_POLAR_CROSS_START  96
-#define GFX_POLAR_CROSS                GFX_POLAR_CROSS_START
-#define GFX_POLAR_CROSS_00     (GFX_POLAR_CROSS_START + 0)
-#define GFX_POLAR_CROSS_01     (GFX_POLAR_CROSS_START + 1)
-#define GFX_POLAR_CROSS_02     (GFX_POLAR_CROSS_START + 2)
-#define GFX_POLAR_CROSS_03     (GFX_POLAR_CROSS_START + 3)
-#define GFX_MIRROR_FIXED_START 100
-#define GFX_MIRROR_FIXED       GFX_MIRROR_FIXED_START
-#define GFX_MIRROR_FIXED_00    (GFX_MIRROR_FIXED_START + 0)
-#define GFX_MIRROR_FIXED_01    (GFX_MIRROR_FIXED_START + 1)
-#define GFX_MIRROR_FIXED_02    (GFX_MIRROR_FIXED_START + 2)
-#define GFX_MIRROR_FIXED_03    (GFX_MIRROR_FIXED_START + 3)
-// row 7 (112)
-#define GFX_BLOCK_STONE                112
-#define GFX_GATE_WOOD          113
-#define GFX_FUEL_FULL          114
-#define GFX_FUEL_EMPTY         115
-#define GFX_GRID_WOOD_00       116
-#define GFX_GRID_WOOD_01       117
-#define GFX_GRID_WOOD_02       118
-#define GFX_GRID_WOOD_03       119
-// row 8 (128)
-#define GFX_ARROW_BLUE_LEFT    128
-#define GFX_ARROW_BLUE_RIGHT   129
-#define GFX_ARROW_BLUE_UP      130
-#define GFX_ARROW_BLUE_DOWN    131
-#define GFX_ARROW_RED_LEFT     132
-#define GFX_ARROW_RED_RIGHT    133
-#define GFX_ARROW_RED_UP       134
-#define GFX_ARROW_RED_DOWN     135
-// row 9 (144)
-#define GFX_SCROLLBAR_BLUE     144
-#define GFX_SCROLLBAR_RED      145
-// row 10 (160)
-#define GFX_MASK_CIRCLE                160
-#define GFX_MASK_RECTANGLE     161
-#define GFX_MASK_RECTANGLE2    162
-#define GFX_MASK_RECTANGLE3    163
-#define GFX_MASK_GRID_00       164
-#define GFX_MASK_GRID_01       165
-#define GFX_MASK_GRID_02       166
-#define GFX_MASK_GRID_03       167
-// row 11 (176)
-#define GFX_MASK_MCDUFFIN_00   176
-#define GFX_MASK_MCDUFFIN_01   177
-#define GFX_MASK_MCDUFFIN_02   178
-#define GFX_MASK_MCDUFFIN_03   179
-
-// pseudo-graphics; will be mapped to other graphics
-#define GFX_WALL_STEEL         192
-#define GFX_WALL_WOOD          193
-#define GFX_WALL_ICE           194
-#define GFX_WALL_AMOEBA                195
-#define GFX_DF_WALL_STEEL      196
-#define GFX_DF_WALL_WOOD       197
-
-#define GFX_KUGEL_ROT          GFX_BALL_RED
-#define GFX_KUGEL_BLAU         GFX_BALL_BLUE
-#define GFX_KUGEL_GELB         GFX_BALL_YELLOW
-#define GFX_KUGEL_GRAU         GFX_BALL_GRAY
-
-// graphics from "MirrorFont"
-#define GFX_CHAR_START         (GFX_START_MIRRORFONT)
-#define GFX_CHAR_ASCII0                (GFX_CHAR_START - 32)
-#define GFX_CHAR_AUSRUF                (GFX_CHAR_ASCII0 + 33)
-#define GFX_CHAR_ZOLL          (GFX_CHAR_ASCII0 + 34)
-#define GFX_CHAR_DOLLAR                (GFX_CHAR_ASCII0 + 36)
-#define GFX_CHAR_PROZ          (GFX_CHAR_ASCII0 + 37)
-#define GFX_CHAR_APOSTR                (GFX_CHAR_ASCII0 + 39)
-#define GFX_CHAR_KLAMM1                (GFX_CHAR_ASCII0 + 40)
-#define GFX_CHAR_KLAMM2                (GFX_CHAR_ASCII0 + 41)
-#define GFX_CHAR_PLUS          (GFX_CHAR_ASCII0 + 43)
-#define GFX_CHAR_KOMMA         (GFX_CHAR_ASCII0 + 44)
-#define GFX_CHAR_MINUS         (GFX_CHAR_ASCII0 + 45)
-#define GFX_CHAR_PUNKT         (GFX_CHAR_ASCII0 + 46)
-#define GFX_CHAR_SLASH         (GFX_CHAR_ASCII0 + 47)
-#define GFX_CHAR_0             (GFX_CHAR_ASCII0 + 48)
-#define GFX_CHAR_9             (GFX_CHAR_ASCII0 + 57)
-#define GFX_CHAR_DOPPEL                (GFX_CHAR_ASCII0 + 58)
-#define GFX_CHAR_SEMIKL                (GFX_CHAR_ASCII0 + 59)
-#define GFX_CHAR_LT            (GFX_CHAR_ASCII0 + 60)
-#define GFX_CHAR_GLEICH                (GFX_CHAR_ASCII0 + 61)
-#define GFX_CHAR_GT            (GFX_CHAR_ASCII0 + 62)
-#define GFX_CHAR_FRAGE         (GFX_CHAR_ASCII0 + 63)
-#define GFX_CHAR_AT            (GFX_CHAR_ASCII0 + 64)
-#define GFX_CHAR_A             (GFX_CHAR_ASCII0 + 65)
-#define GFX_CHAR_Z             (GFX_CHAR_ASCII0 + 90)
-#define GFX_CHAR_AE            (GFX_CHAR_ASCII0 + 91)
-#define GFX_CHAR_OE            (GFX_CHAR_ASCII0 + 92)
-#define GFX_CHAR_UE            (GFX_CHAR_ASCII0 + 93)
-#define GFX_CHAR_COPY          (GFX_CHAR_ASCII0 + 94)
-#define GFX_CHAR_END           (GFX_CHAR_START + 79)
-
-// graphics from "MirrorDF"
-#define GFX_DF_MIRROR_00       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  0)
-#define GFX_DF_MIRROR_01       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  1)
-#define GFX_DF_MIRROR_02       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  2)
-#define GFX_DF_MIRROR_03       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  3)
-#define GFX_DF_MIRROR_04       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  4)
-#define GFX_DF_MIRROR_05       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  5)
-#define GFX_DF_MIRROR_06       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  6)
-#define GFX_DF_MIRROR_07       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  7)
-#define GFX_DF_MIRROR_08       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  8)
-#define GFX_DF_MIRROR_09       (GFX_START_MIRRORDF +  0 * DF_PER_LINE +  9)
-#define GFX_DF_MIRROR_10       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 10)
-#define GFX_DF_MIRROR_11       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 11)
-#define GFX_DF_MIRROR_12       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 12)
-#define GFX_DF_MIRROR_13       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 13)
-#define GFX_DF_MIRROR_14       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 14)
-#define GFX_DF_MIRROR_15       (GFX_START_MIRRORDF +  0 * DF_PER_LINE + 15)
-
-#define GFX_DF_MIRROR_AUTO_00  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  0)
-#define GFX_DF_MIRROR_AUTO_01  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  1)
-#define GFX_DF_MIRROR_AUTO_02  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  2)
-#define GFX_DF_MIRROR_AUTO_03  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  3)
-#define GFX_DF_MIRROR_AUTO_04  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  4)
-#define GFX_DF_MIRROR_AUTO_05  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  5)
-#define GFX_DF_MIRROR_AUTO_06  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  6)
-#define GFX_DF_MIRROR_AUTO_07  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  7)
-#define GFX_DF_MIRROR_AUTO_08  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  8)
-#define GFX_DF_MIRROR_AUTO_09  (GFX_START_MIRRORDF +  1 * DF_PER_LINE +  9)
-#define GFX_DF_MIRROR_AUTO_10  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 10)
-#define GFX_DF_MIRROR_AUTO_11  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 11)
-#define GFX_DF_MIRROR_AUTO_12  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 12)
-#define GFX_DF_MIRROR_AUTO_13  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 13)
-#define GFX_DF_MIRROR_AUTO_14  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 14)
-#define GFX_DF_MIRROR_AUTO_15  (GFX_START_MIRRORDF +  1 * DF_PER_LINE + 15)
-
-#define GFX_GRID_STEEL_FIXED_00        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  0)
-#define GFX_GRID_STEEL_FIXED_01        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  1)
-#define GFX_GRID_STEEL_FIXED_02        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  2)
-#define GFX_GRID_STEEL_FIXED_03        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  3)
-#define GFX_GRID_STEEL_FIXED_04        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  4)
-#define GFX_GRID_STEEL_FIXED_05        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  5)
-#define GFX_GRID_STEEL_FIXED_06        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  6)
-#define GFX_GRID_STEEL_FIXED_07        (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  7)
-#define GFX_GRID_STEEL_FIXED   GFX_GRID_STEEL_FIXED_00
-
-#define GFX_GRID_WOOD_FIXED_00 (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  8)
-#define GFX_GRID_WOOD_FIXED_01 (GFX_START_MIRRORDF +  2 * DF_PER_LINE +  9)
-#define GFX_GRID_WOOD_FIXED_02 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 10)
-#define GFX_GRID_WOOD_FIXED_03 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 11)
-#define GFX_GRID_WOOD_FIXED_04 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 12)
-#define GFX_GRID_WOOD_FIXED_05 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 13)
-#define GFX_GRID_WOOD_FIXED_06 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 14)
-#define GFX_GRID_WOOD_FIXED_07 (GFX_START_MIRRORDF +  2 * DF_PER_LINE + 15)
-#define GFX_GRID_WOOD_FIXED    GFX_GRID_WOOD_FIXED_00
-
-#define GFX_GRID_STEEL_AUTO_00 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  0)
-#define GFX_GRID_STEEL_AUTO_01 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  1)
-#define GFX_GRID_STEEL_AUTO_02 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  2)
-#define GFX_GRID_STEEL_AUTO_03 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  3)
-#define GFX_GRID_STEEL_AUTO_04 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  4)
-#define GFX_GRID_STEEL_AUTO_05 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  5)
-#define GFX_GRID_STEEL_AUTO_06 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  6)
-#define GFX_GRID_STEEL_AUTO_07 (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  7)
-#define GFX_GRID_STEEL_AUTO    GFX_GRID_STEEL_AUTO_00
-
-#define GFX_GRID_WOOD_AUTO_00  (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  8)
-#define GFX_GRID_WOOD_AUTO_01  (GFX_START_MIRRORDF +  3 * DF_PER_LINE +  9)
-#define GFX_GRID_WOOD_AUTO_02  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 10)
-#define GFX_GRID_WOOD_AUTO_03  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 11)
-#define GFX_GRID_WOOD_AUTO_04  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 12)
-#define GFX_GRID_WOOD_AUTO_05  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 13)
-#define GFX_GRID_WOOD_AUTO_06  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 14)
-#define GFX_GRID_WOOD_AUTO_07  (GFX_START_MIRRORDF +  3 * DF_PER_LINE + 15)
-#define GFX_GRID_WOOD_AUTO     GFX_GRID_WOOD_AUTO_00
-
-#define GFX_BEAMER_RED_START   (GFX_START_MIRRORDF +  4 * DF_PER_LINE +  0)
-#define GFX_BEAMER_RED_END     (GFX_START_MIRRORDF +  4 * DF_PER_LINE + 15)
-#define GFX_BEAMER_YELLOW_START        (GFX_START_MIRRORDF +  5 * DF_PER_LINE +  0)
-#define GFX_BEAMER_YELLOW_END  (GFX_START_MIRRORDF +  5 * DF_PER_LINE + 15)
-#define GFX_BEAMER_GREEN_START (GFX_START_MIRRORDF +  6 * DF_PER_LINE +  0)
-#define GFX_BEAMER_GREEN_END   (GFX_START_MIRRORDF +  6 * DF_PER_LINE + 15)
-#define GFX_BEAMER_BLUE_START  (GFX_START_MIRRORDF +  7 * DF_PER_LINE +  0)
-#define GFX_BEAMER_BLUE_END    (GFX_START_MIRRORDF +  7 * DF_PER_LINE + 15)
-
-#define GFX_DF_WALL_SEVERAL    (GFX_START_MIRRORDF +  8 * DF_PER_LINE +  0)
-#define GFX_REFRACTOR          (GFX_START_MIRRORDF +  8 * DF_PER_LINE +  1)
-#define GFX_CELL               (GFX_START_MIRRORDF +  8 * DF_PER_LINE +  2)
-#define GFX_MINE               (GFX_START_MIRRORDF +  8 * DF_PER_LINE +  4)
-
-#define GFX_LASER_RIGHT                (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  0)
-#define GFX_LASER_UP           (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  1)
-#define GFX_LASER_LEFT         (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  2)
-#define GFX_LASER_DOWN         (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  3)
-#define GFX_RECEIVER_RIGHT     (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  4)
-#define GFX_RECEIVER_UP                (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  5)
-#define GFX_RECEIVER_LEFT      (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  6)
-#define GFX_RECEIVER_DOWN      (GFX_START_MIRRORDF +  9 * DF_PER_LINE +  7)
-
-#define GFX_FIBRE_OPTIC_00     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  0)
-#define GFX_FIBRE_OPTIC_01     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  1)
-#define GFX_FIBRE_OPTIC_02     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  2)
-#define GFX_FIBRE_OPTIC_03     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  3)
-#define GFX_FIBRE_OPTIC_04     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  4)
-#define GFX_FIBRE_OPTIC_05     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  5)
-#define GFX_FIBRE_OPTIC_06     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  6)
-#define GFX_FIBRE_OPTIC_07     (GFX_START_MIRRORDF + 10 * DF_PER_LINE +  7)
-
-#define GFX_FIBRE_OPTIC_ED_00  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  0)
-#define GFX_FIBRE_OPTIC_ED_01  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  1)
-#define GFX_FIBRE_OPTIC_ED_02  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  2)
-#define GFX_FIBRE_OPTIC_ED_03  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  3)
-#define GFX_FIBRE_OPTIC_ED_04  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  4)
-#define GFX_FIBRE_OPTIC_ED_05  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  5)
-#define GFX_FIBRE_OPTIC_ED_06  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  6)
-#define GFX_FIBRE_OPTIC_ED_07  (GFX_START_MIRRORDF + 11 * DF_PER_LINE +  7)
-
-// the names of the sounds
-#define SND_AMOEBE             0
-#define SND_ANTIGRAV           1
-#define SND_AUTSCH             2
-#define SND_BONG               3
-#define SND_FUEL               4
-#define SND_HALLOFFAME         5
-#define SND_HOLZ               6
-#define SND_HUI                        7
-#define SND_KABUMM             8
-#define SND_KINK               9
-#define SND_KLING              10
-#define SND_LASER              11
-#define SND_OEFFNEN            12
-#define SND_QUIEK              13
-#define SND_RHYTHMLOOP         14
-#define SND_ROAAAR             15
-#define SND_SIRR               16
-#define SND_SLURP              17
-#define SND_WARNTON            18
-#define SND_WHOOSH             19
-
-#define NUM_SOUNDS             20
-
 // values for graphics/sounds action types
 #define MM_ACTION_DEFAULT      0
 #define MM_ACTION_WAITING      1
@@ -1060,8 +723,9 @@ extern int         num_element_info;
 #define ANG_RAY_270            12
 #define IS_22_5_ANGLE(angle)   ((angle) % 2)
 #define IS_90_ANGLE(angle)     (!((angle) % 4))
+#define IS_45_ANGLE(angle)     (!(((angle) + 2) % 4))
 #define IS_HORIZ_ANGLE(angle)  (!((angle) % 8))
-#define IS_VERT_ANGLE(angle)   ((angle) % 8)
+#define IS_VERT_ANGLE(angle)   (!(((angle) + 4) % 8))
 
 // mirror angles
 #define ANG_MIRROR_0           0
@@ -1084,6 +748,8 @@ extern int         num_element_info;
 #define HIT_MASK_RIGHT         (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMRIGHT)
 #define HIT_MASK_TOP           (HIT_MASK_TOPLEFT | HIT_MASK_TOPRIGHT)
 #define HIT_MASK_BOTTOM                (HIT_MASK_BOTTOMLEFT | HIT_MASK_BOTTOMRIGHT)
+#define HIT_MASK_DIAGONAL_1    (HIT_MASK_TOPLEFT  | HIT_MASK_BOTTOMRIGHT)
+#define HIT_MASK_DIAGONAL_2    (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMLEFT)
 #define HIT_MASK_ALL           (HIT_MASK_LEFT | HIT_MASK_RIGHT)
 
 // step values for rotating elements
@@ -1098,31 +764,12 @@ extern int               num_element_info;
 #define GAME_OVER_NO_ENERGY    1
 #define GAME_OVER_OVERLOADED   2
 #define GAME_OVER_BOMB         3
-#define GAME_OVER_DELAYED      4
-
-// values for color_status
-#define STATIC_COLORS          0
-#define DYNAMIC_COLORS         1
 
 #define PROGRAM_VERSION_MAJOR  2
 #define PROGRAM_VERSION_MINOR  0
 #define PROGRAM_VERSION_PATCH  2
 #define PROGRAM_VERSION_STRING "2.0.2"
 
-#define PROGRAM_TITLE_STRING   "Mirror Magic II"
-#define PROGRAM_AUTHOR_STRING  "Holger Schemel"
-#define PROGRAM_RIGHTS_STRING  "Copyright ^1994-2001"
-#define PROGRAM_DOS_PORT_STRING        "DOS port based on code by Guido Schulz"
-#define PROGRAM_IDENT_STRING   PROGRAM_VERSION_STRING " " TARGET_STRING
-#define WINDOW_TITLE_STRING    PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
-#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
-#define ICON_TITLE_STRING      PROGRAM_TITLE_STRING
-#define UNIX_USERDATA_DIRECTORY        ".mirrormagic"
-
-#define X11_ICON_FILENAME      "mirrormagic_icon.xbm"
-#define X11_ICONMASK_FILENAME  "mirrormagic_iconmask.xbm"
-#define MSDOS_POINTER_FILENAME "mouse.pcx"
-
 // functions for version handling
 #define MM_VERSION_IDENT(x,y,z)        VERSION_IDENT(x,y,z,0)
 #define MM_VERSION_MAJOR(x)    VERSION_PART_1(x)
@@ -1146,8 +793,4 @@ extern int         num_element_info;
                                                 PROGRAM_VERSION_MINOR, \
                                                 PROGRAM_VERSION_PATCH)
 
-// sound control
-
-#define ST(x)           (((x) - 8) * 16)
-
 #endif // MM_MAIN_H