rnd-19990205-1
[rocksndiamonds.git] / src / main.h
index da627421439f005a7e89dcfd11f3a0d9177d16b6..f25774b42b9632f72b1c7d1f1f4231f53e7e624c 100644 (file)
@@ -71,8 +71,6 @@ typedef unsigned char byte;
 #define STD_LEV_FIELDY 32
 #define MAX_LEV_FIELDX 128
 #define MAX_LEV_FIELDY 128
-#define ED_FIELDX      (2 * SCR_FIELDX - 1)
-#define ED_FIELDY      (2 * SCR_FIELDY - 2)
 
 #define MAX_PLAYERS    4
 
@@ -96,7 +94,6 @@ typedef unsigned char byte;
 #define IN_VIS_FIELD(x,y) ((x)>=0 && (x)<SCR_FIELDX && (y)>=0 &&(y)<SCR_FIELDY)
 #define IN_SCR_FIELD(x,y) ((x)>=BX1 && (x)<=BX2 && (y)>=BY1 &&(y)<=BY2)
 #define IN_LEV_FIELD(x,y) ((x)>=0 && (x)<lev_fieldx && (y)>=0 &&(y)<lev_fieldy)
-#define IN_ED_FIELD(x,y)  ((x)>=0 && (x)<ED_FIELDX && (y)>=0 &&(y)<ED_FIELDY)
 
 #define EP_BIT_AMOEBALIVE      (1 << 0)
 #define EP_BIT_AMOEBOID                (1 << 1)
@@ -199,7 +196,8 @@ typedef unsigned char byte;
 
 /* boundaries of arrays etc. */
 #define MAX_NAMELEN            (10+1)
-#define MAX_LEVNAMLEN          32
+#define MAX_LEVEL_NAME_LEN     32
+#define MAX_LEVEL_AUTHOR_LEN   32
 #define MAX_TAPELEN            (1000 * 50)     /* max. time * framerate */
 #define MAX_LEVDIR_ENTRIES     100
 #define MAX_SCORE_ENTRIES      100
@@ -214,6 +212,7 @@ typedef unsigned char byte;
 #define FRAMES_PER_SECOND      (1000 / GAME_FRAME_DELAY)
 #define GADGET_FRAME_DELAY     150     /* delay between gadget actions */
 #define MICROLEVEL_SCROLL_DELAY        50      /* delay for scrolling micro level */
+#define MICROLEVEL_LABEL_DELAY 250     /* delay for micro level label */
 
 struct HiScore
 {
@@ -336,26 +335,29 @@ struct LevelInfo
   int fieldy;
   int time;
   int edelsteine;
-  char name[MAX_LEVNAMLEN];
+  char name[MAX_LEVEL_NAME_LEN + 1];
+  char author[MAX_LEVEL_AUTHOR_LEN + 1];
   int score[LEVEL_SCORE_ELEMENTS];
   int mampfer_inhalt[8][3][3];
   int tempo_amoebe;
   int dauer_sieb;
   int dauer_ablenk;
   int amoebe_inhalt;
-  boolean high_speed;
+  boolean double_speed;
 };
 
 struct LevelDirInfo
 {
   char *filename;
   char *name;
+  char *author;
   int levels;
   int first_level;
   int last_level;
   int sort_priority;
   boolean user_defined;
   boolean readonly;
+  int color;
 };
 
 struct TapeInfo
@@ -470,13 +472,14 @@ extern struct SetupFileList       *level_setup_list;
 extern char            *sound_name[];
 extern int             background_loop[];
 extern int             num_bg_loops;
+extern char            *element_info[];
 
 
 /* often used screen positions */
 #define SX                     8
 #define SY                     8
-#define REAL_SX                        (SX-2)
-#define REAL_SY                        (SY-2)
+#define REAL_SX                        (SX - 2)
+#define REAL_SY                        (SY - 2)
 #define DX                     566
 #define DY                     60
 #define VX                     DX
@@ -485,29 +488,29 @@ extern int                num_bg_loops;
 #define EY                     (VY - 44)
 #define TILEX                  32
 #define TILEY                  32
-#define MINI_TILEX             (TILEX/2)
-#define MINI_TILEY             (TILEY/2)
-#define MICRO_TILEX            (TILEX/8)
-#define MICRO_TILEY            (TILEY/8)
-#define MIDPOSX                        (SCR_FIELDX/2)
-#define MIDPOSY                        (SCR_FIELDY/2)
-#define SXSIZE                 (SCR_FIELDX*TILEX)
-#define SYSIZE                 (SCR_FIELDY*TILEY)
-#define FXSIZE                 ((SCR_FIELDX+2)*TILEX)
-#define FYSIZE                 ((SCR_FIELDY+2)*TILEY)
+#define MINI_TILEX             (TILEX / 2)
+#define MINI_TILEY             (TILEY / 2)
+#define MICRO_TILEX            (TILEX / 8)
+#define MICRO_TILEY            (TILEY / 8)
+#define MIDPOSX                        (SCR_FIELDX / 2)
+#define MIDPOSY                        (SCR_FIELDY / 2)
+#define SXSIZE                 (SCR_FIELDX * TILEX)
+#define SYSIZE                 (SCR_FIELDY * TILEY)
+#define FXSIZE                 ((SCR_FIELDX + 2) * TILEX)
+#define FYSIZE                 ((SCR_FIELDY + 2) * TILEY)
 #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 FULL_SXSIZE            (2 + SXSIZE + 2)
+#define FULL_SYSIZE            (2 + SYSIZE + 2)
 #define MICROLEV_XSIZE         ((STD_LEV_FIELDX + 2) * MICRO_TILEX)
 #define MICROLEV_YSIZE         ((STD_LEV_FIELDY + 2) * MICRO_TILEY)
 #define MICROLEV_XPOS          (SX + (SXSIZE - MICROLEV_XSIZE) / 2)
 #define MICROLEV_YPOS          (SX + 12 * TILEY - MICRO_TILEY)
-#define MICROLABEL_YPOS                (MICROLEV_YPOS+MICROLEV_YSIZE+12)
+#define MICROLABEL_YPOS                (MICROLEV_YPOS + MICROLEV_YSIZE + 7)
 #define FONT1_XSIZE            32
 #define FONT1_YSIZE            32
 #define FONT2_XSIZE            14
@@ -528,9 +531,9 @@ extern int          num_bg_loops;
 #define MICRO_GFX_PER_LINE     128
 #define HEROES_PER_LINE                16
 #define MINI_MORE_STARTX       0
-#define MINI_MORE_STARTY       160
+#define MINI_MORE_STARTY       224
 #define MICRO_MORE_STARTX      0
-#define MICRO_MORE_STARTY      240
+#define MICRO_MORE_STARTY      336
 #define MORE_PER_LINE          16
 #define MINI_MORE_PER_LINE     16
 #define MICRO_MORE_PER_LINE    16
@@ -661,7 +664,7 @@ extern int          num_bg_loops;
 
 #define EL_AUSGANG_AUF         107
 
-#define EL_UNUSED_108          108
+#define EL_BLACK_ORB           108
 
 #define EL_AMOEBA2DIAM         109
 #define EL_MAULWURF            110
@@ -680,11 +683,14 @@ extern int                num_bg_loops;
 #define EL_CHAR_ASCII0         (EL_CHAR_START-32)
 #define EL_CHAR_AUSRUF         (EL_CHAR_ASCII0+33)
 #define EL_CHAR_ZOLL           (EL_CHAR_ASCII0+34)
+#define EL_CHAR_RAUTE          (EL_CHAR_ASCII0+35)
 #define EL_CHAR_DOLLAR         (EL_CHAR_ASCII0+36)
 #define EL_CHAR_PROZ           (EL_CHAR_ASCII0+37)
+#define EL_CHAR_AMPERSAND      (EL_CHAR_ASCII0+38)
 #define EL_CHAR_APOSTR         (EL_CHAR_ASCII0+39)
 #define EL_CHAR_KLAMM1         (EL_CHAR_ASCII0+40)
 #define EL_CHAR_KLAMM2         (EL_CHAR_ASCII0+41)
+#define EL_CHAR_MULT           (EL_CHAR_ASCII0+42)
 #define EL_CHAR_PLUS           (EL_CHAR_ASCII0+43)
 #define EL_CHAR_KOMMA          (EL_CHAR_ASCII0+44)
 #define EL_CHAR_MINUS          (EL_CHAR_ASCII0+45)
@@ -707,7 +713,10 @@ extern int         num_bg_loops;
 #define EL_CHAR_COPY           (EL_CHAR_ASCII0+94)
 #define EL_CHAR_END            (EL_CHAR_START+79)
 
-#define EL_CHAR(x)             (EL_CHAR_A + x - 'A')
+#define EL_CHAR(x)             ((x) == 'Ä' ? EL_CHAR_AE : \
+                                (x) == 'Ö' ? EL_CHAR_OE : \
+                                (x) == 'Ü' ? EL_CHAR_UE : \
+                                EL_CHAR_A + (x) - 'A')
 
 #define EL_MAUER_X             200
 #define EL_MAUER_Y             201
@@ -828,7 +837,11 @@ extern int         num_bg_loops;
 #define GFX_BADEWANNE1         16
 #define GFX_SALZSAEURE         17
 #define GFX_BADEWANNE2         18
+
+/*
 #define GFX_UNSICHTBAR         19
+*/
+
 #define GFX_SCHLUESSEL1                20
 #define GFX_SCHLUESSEL2                21
 #define GFX_SCHLUESSEL3                22
@@ -928,6 +941,7 @@ extern int          num_bg_loops;
 #define GFX_EDELSTEIN_ROT      152
 #define GFX_EDELSTEIN_LILA     154
 #define GFX_DYNABOMB_XL                156
+#define GFX_BLACK_ORB          157
 #define GFX_SPEED_PILL         158
 #define GFX_SONDE              159
 /* Zeile 10 (160) */
@@ -967,8 +981,21 @@ extern int         num_bg_loops;
 #define GFX_FIREFLY_L          206
 #define GFX_FIREFLY_U          207
 
-#define GFX_INVISIBLE_STEEL    GFX_UNSICHTBAR
-
+/* only available as size MINI_TILE */
+#define GFX_VSTEEL_UPPER_LEFT  208
+#define GFX_VSTEEL_UPPER_RIGHT 209
+#define GFX_VSTEEL_LOWER_LEFT  210
+#define GFX_VSTEEL_LOWER_RIGHT 211
+#define GFX_VSTEEL_HORIZONTAL  212
+#define GFX_VSTEEL_VERTICAL    213
+#define GFX_ISTEEL_UPPER_LEFT  214
+#define GFX_ISTEEL_UPPER_RIGHT 215
+#define GFX_ISTEEL_LOWER_LEFT  216
+#define GFX_ISTEEL_LOWER_RIGHT 217
+#define GFX_ISTEEL_HORIZONTAL  218
+#define GFX_ISTEEL_VERTICAL    219
+
+/* elements with graphics borrowed from other elements */
 #define GFX_SCHLUESSEL         GFX_SCHLUESSEL1
 #define GFX_SPIELFIGUR         GFX_SPIELER1
 
@@ -1027,91 +1054,105 @@ extern int             num_bg_loops;
 #define GFX_FLAMMEN_DOWN       (GFX_START_ROCKSHEROES +15*HEROES_PER_LINE + 8)
 
 /* graphics from "RocksMore" */
-#define GFX_SP_EMPTY           (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 0)
-#define GFX_SP_ZONK            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 1)
-#define GFX_SP_BASE            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 2)
-#define GFX_SP_MURPHY          (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 3)
-#define GFX_SP_INFOTRON                (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 4)
-#define GFX_SP_CHIP_SINGLE     (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 5)
-#define GFX_SP_HARD_GRAY       (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 6)
-#define GFX_SP_EXIT            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 7)
-#define GFX_SP_DISK_ORANGE     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 0)
-#define GFX_SP_PORT1_RIGHT     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 1)
-#define GFX_SP_PORT1_DOWN      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 2)
-#define GFX_SP_PORT1_LEFT      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 3)
-#define GFX_SP_PORT1_UP                (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 4)
-#define GFX_SP_PORT2_RIGHT     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 5)
-#define GFX_SP_PORT2_DOWN      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 6)
-#define GFX_SP_PORT2_LEFT      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 7)
-#define GFX_SP_PORT2_UP                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 0)
-#define GFX_SP_SNIKSNAK                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 1)
-#define GFX_SP_DISK_YELLOW     (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 2)
-#define GFX_SP_TERMINAL                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 3)
-#define GFX_SP_DISK_RED                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 4)
-#define GFX_SP_PORT_Y          (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 5)
-#define GFX_SP_PORT_X          (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 6)
-#define GFX_SP_PORT_XY         (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 7)
-#define GFX_SP_ELECTRON                (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 0)
-#define GFX_SP_BUG             (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 1)
-#define GFX_SP_CHIP_LEFT       (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 2)
-#define GFX_SP_CHIP_RIGHT      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 3)
-#define GFX_SP_HARD_BASE1      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 4)
-#define GFX_SP_HARD_GREEN      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 5)
-#define GFX_SP_HARD_BLUE       (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 6)
-#define GFX_SP_HARD_RED                (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 7)
-#define GFX_SP_HARD_YELLOW     (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 0)
-#define GFX_SP_HARD_BASE2      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 1)
-#define GFX_SP_HARD_BASE3      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 2)
-#define GFX_SP_HARD_BASE4      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 3)
-#define GFX_SP_HARD_BASE5      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 4)
-#define GFX_SP_HARD_BASE6      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 5)
-#define GFX_SP_CHIP_UPPER      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 6)
-#define GFX_SP_CHIP_LOWER      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 7)
-
-#define GFX_SP_BUG_WARNING     (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +15)
-#define GFX_SP_EXPLODE_EMPTY   (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE + 8)
-#define GFX_SP_EXPLODE_INFOTRON        (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE + 8)
-#define GFX_SP_BUG_ACTIVE      (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE + 8)
-#define GFX_SP_SNIKSNAK_LEFT   (GFX_START_ROCKSMORE +  8 * MORE_PER_LINE + 8)
-#define GFX_SP_SNIKSNAK_RIGHT  (GFX_START_ROCKSMORE +  8 * MORE_PER_LINE +12)
-#define GFX_SP_SNIKSNAK_UP     (GFX_START_ROCKSMORE +  9 * MORE_PER_LINE + 8)
-#define GFX_SP_SNIKSNAK_DOWN   (GFX_START_ROCKSMORE +  9 * MORE_PER_LINE +12)
-
-#define GFX2_SP_ELECTRON       (GFX_START_ROCKSMORE + 10 * MORE_PER_LINE + 8)
-#define GFX2_SP_TERMINAL       (GFX_START_ROCKSMORE + 11 * MORE_PER_LINE + 8)
-#define GFX2_SP_TERMINAL_ACTIVE        (GFX_START_ROCKSMORE + 12 * MORE_PER_LINE + 8)
+#define GFX_SP_EMPTY           (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  0)
+#define GFX_SP_ZONK            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  1)
+#define GFX_SP_BASE            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  2)
+#define GFX_SP_MURPHY          (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  3)
+#define GFX_SP_INFOTRON                (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  4)
+#define GFX_SP_CHIP_SINGLE     (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  5)
+#define GFX_SP_HARD_GRAY       (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  6)
+#define GFX_SP_EXIT            (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  7)
+#define GFX_SP_DISK_ORANGE     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  0)
+#define GFX_SP_PORT1_RIGHT     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  1)
+#define GFX_SP_PORT1_DOWN      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  2)
+#define GFX_SP_PORT1_LEFT      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  3)
+#define GFX_SP_PORT1_UP                (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  4)
+#define GFX_SP_PORT2_RIGHT     (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  5)
+#define GFX_SP_PORT2_DOWN      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  6)
+#define GFX_SP_PORT2_LEFT      (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  7)
+#define GFX_SP_PORT2_UP                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  0)
+#define GFX_SP_SNIKSNAK                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  1)
+#define GFX_SP_DISK_YELLOW     (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  2)
+#define GFX_SP_TERMINAL                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  3)
+#define GFX_SP_DISK_RED                (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  4)
+#define GFX_SP_PORT_Y          (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  5)
+#define GFX_SP_PORT_X          (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  6)
+#define GFX_SP_PORT_XY         (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE +  7)
+#define GFX_SP_ELECTRON                (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  0)
+#define GFX_SP_BUG             (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  1)
+#define GFX_SP_CHIP_LEFT       (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  2)
+#define GFX_SP_CHIP_RIGHT      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  3)
+#define GFX_SP_HARD_BASE1      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  4)
+#define GFX_SP_HARD_GREEN      (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  5)
+#define GFX_SP_HARD_BLUE       (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  6)
+#define GFX_SP_HARD_RED                (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  7)
+#define GFX_SP_HARD_YELLOW     (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  0)
+#define GFX_SP_HARD_BASE2      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  1)
+#define GFX_SP_HARD_BASE3      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  2)
+#define GFX_SP_HARD_BASE4      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  3)
+#define GFX_SP_HARD_BASE5      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  4)
+#define GFX_SP_HARD_BASE6      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  5)
+#define GFX_SP_CHIP_UPPER      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  6)
+#define GFX_SP_CHIP_LOWER      (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  7)
+
+#define GFX_INVISIBLE_STEEL    (GFX_START_ROCKSMORE +  5 * MORE_PER_LINE +  3)
+#define GFX_UNSICHTBAR         (GFX_START_ROCKSMORE +  5 * MORE_PER_LINE +  7)
+
+#define GFX_MURPHY_GO_LEFT     (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  8)
+#define GFX_MURPHY_ANY_LEFT    (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  9)
+#define GFX_MURPHY_GO_RIGHT    (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 11)
+#define GFX_MURPHY_ANY_RIGHT   (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 12)
+#define GFX_MURPHY_SNAP_UP     (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 14)
+#define GFX_MURPHY_SNAP_DOWN   (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 15)
+#define GFX_MURPHY_SNAP_RIGHT  (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  8)
+#define GFX_MURPHY_SNAP_LEFT   (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE +  9)
+#define GFX_MURPHY_PUSH_RIGHT  (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 10)
+#define GFX_MURPHY_PUSH_LEFT   (GFX_START_ROCKSMORE +  1 * MORE_PER_LINE + 11)
+
+#define GFX_SP_BUG_WARNING     (GFX_START_ROCKSMORE +  2 * MORE_PER_LINE + 15)
+#define GFX_SP_EXPLODE_EMPTY   (GFX_START_ROCKSMORE +  3 * MORE_PER_LINE +  8)
+#define GFX_SP_EXPLODE_INFOTRON        (GFX_START_ROCKSMORE +  4 * MORE_PER_LINE +  8)
+#define GFX_SP_BUG_ACTIVE      (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  8)
+#define GFX_SP_SNIKSNAK_LEFT   (GFX_START_ROCKSMORE +  8 * MORE_PER_LINE +  8)
+#define GFX_SP_SNIKSNAK_RIGHT  (GFX_START_ROCKSMORE +  8 * MORE_PER_LINE + 12)
+#define GFX_SP_SNIKSNAK_UP     (GFX_START_ROCKSMORE +  9 * MORE_PER_LINE +  8)
+#define GFX_SP_SNIKSNAK_DOWN   (GFX_START_ROCKSMORE +  9 * MORE_PER_LINE + 12)
+
+#define GFX2_SP_ELECTRON       (GFX_START_ROCKSMORE + 10 * MORE_PER_LINE +  8)
+#define GFX2_SP_TERMINAL       (GFX_START_ROCKSMORE + 11 * MORE_PER_LINE +  8)
+#define GFX2_SP_TERMINAL_ACTIVE        (GFX_START_ROCKSMORE + 12 * MORE_PER_LINE +  8)
 
 /* graphics from "RocksFont" */
 #define GFX_CHAR_START         (GFX_START_ROCKSFONT)
-#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)
+#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)
 
 /* the names of the sounds */
 #define SND_ALCHEMY            0
@@ -1232,14 +1273,21 @@ extern int              num_bg_loops;
 #define TAPES_DIRECTORY                "tapes"
 #define SCORES_DIRECTORY       "scores"
 
-#define VERSION_STRING         "1.2.1"
-#define GAMETITLE_STRING       "Rocks'n'Diamonds"
-#define WINDOWTITLE_STRING     GAMETITLE_STRING " " VERSION_STRING
-#define COPYRIGHT_STRING       "Copyright ^1995-99 by Holger Schemel"
+#define PROGRAM_VERSION_STRING "1.3.0"
+#define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
+#define PROGRAM_AUTHOR_STRING  "Holger Schemel"
+#define WINDOW_TITLE_STRING    PROGRAM_TITLE_STRING " " PROGRAM_VERSION_STRING
+#define COPYRIGHT_STRING       "Copyright ^1995-99 by " PROGRAM_AUTHOR_STRING
 
 /* default name for empty highscore entry */
 #define EMPTY_PLAYER_NAME      "no name"
 
+/* default name for unknown player names */
+#define ANONYMOUS_NAME         "anonymous"
+
+/* default name for new levels */
+#define NAMELESS_LEVEL_NAME    "nameless level"
+
 /* values for button_status */
 #define MB_NOT_PRESSED         FALSE
 #define MB_RELEASED            FALSE
@@ -1248,36 +1296,29 @@ extern int              num_bg_loops;
 #define MB_MENU_MARK           TRUE
 #define MB_MENU_INITIALIZE     (-1)
 #define MB_LEFT                        1
-#ifdef MSDOS
-#define MB_MIDDLE              4
-#define MB_RIGHT               2
-#else
 #define MB_MIDDLE              2
 #define MB_RIGHT               3
-#endif
 
 /* values for redraw_mask */
-#define REDRAW_ALL             (1L << 0)
-#define REDRAW_FIELD           (1L << 1)
-#define REDRAW_TILES           (1L << 2)
-#define REDRAW_DOOR_1          (1L << 3)
-#define REDRAW_VIDEO_1         (1L << 4)
-#define REDRAW_VIDEO_2         (1L << 5)
-#define REDRAW_VIDEO_3         (1L << 6)
-#define REDRAW_MICROLEVEL      (1L << 7)
-#define REDRAW_MICROLEVEL_LABEL        (1L << 8)
-#define REDRAW_FROM_BACKBUFFER (1L << 9)
+#define REDRAW_ALL             (1 << 0)
+#define REDRAW_FIELD           (1 << 1)
+#define REDRAW_TILES           (1 << 2)
+#define REDRAW_DOOR_1          (1 << 3)
+#define REDRAW_VIDEO_1         (1 << 4)
+#define REDRAW_VIDEO_2         (1 << 5)
+#define REDRAW_VIDEO_3         (1 << 6)
+#define REDRAW_MICROLEVEL      (1 << 7)
+#define REDRAW_FROM_BACKBUFFER (1 << 8)
 #define REDRAW_DOOR_2          (REDRAW_VIDEO_1 | \
                                 REDRAW_VIDEO_2 | \
                                 REDRAW_VIDEO_3)
-#define REDRAW_DOOR_3          (1L << 10)
+#define REDRAW_DOOR_3          (1 << 9)
 #define REDRAW_DOORS           (REDRAW_DOOR_1 | \
                                 REDRAW_DOOR_2 | \
                                 REDRAW_DOOR_3)
 #define REDRAW_MAIN            (REDRAW_FIELD | \
                                 REDRAW_TILES | \
-                                REDRAW_MICROLEVEL | \
-                                REDRAW_MICROLEVEL_LABEL)
+                                REDRAW_MICROLEVEL)
 #define REDRAWTILES_THRESHOLD  (SCR_FIELDX * SCR_FIELDY / 2)
 
 /* areas in pixmap PIX_DOOR */
@@ -1300,9 +1341,9 @@ extern int                num_bg_loops;
 #define DOOR_GFX_PAGEY2                DYSIZE
 
 /* for DrawGraphicAnimation() [tools.c] and AnimateToon() [cartoons.c] */
-#define ANIM_NORMAL    0
-#define ANIM_OSCILLATE 1
-#define ANIM_REVERSE   2
+#define ANIM_NORMAL            0
+#define ANIM_OSCILLATE         1
+#define ANIM_REVERSE           2
 
 /* values for game_emulation */
 #define EMU_NONE               0