#define SCR_FIELDY 17
#define MAX_BUF_XSIZE (SCR_FIELDX + 2)
#define MAX_BUF_YSIZE (SCR_FIELDY + 2)
-
-#if 0
-#define MIN_LEV_FIELDX (SCR_FIELDX - 2)
-#define MIN_LEV_FIELDY (SCR_FIELDY - 2)
-#else
#define MIN_LEV_FIELDX 3
#define MIN_LEV_FIELDY 3
-#endif
#define STD_LEV_FIELDX 64
#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
#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)
#define FFWD_FRAME_DELAY 10 /* 200% speed for fast forward */
#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 */
struct HiScore
{
extern int FfwdFrameDelay;
extern int MoveSpeed;
extern int BX1,BY1, BX2,BY2;
-extern int SBX_Left, SBX_Middle, SBX_Right;
-extern int SBY_Upper, SBY_Middle, SBY_Lower;
+extern int SBX_Left, SBX_Right;
+extern int SBY_Upper, SBY_Lower;
extern int ZX,ZY, ExitX,ExitY;
extern int AllPlayersGone;
extern int FrameCounter, TimeFrames, TimePlayed, TimeLeft;
#define EYSIZE (VXSIZE + 44)
#define FULL_SXSIZE (2+SXSIZE+2)
#define FULL_SYSIZE (2+SYSIZE+2)
-#define MICROLEV_XPOS (SX+4*32+16)
-#define MICROLEV_YPOS (SX+12*32)
-#define MICROLEV_XSIZE (STD_LEV_FIELDX*MICRO_TILEX)
-#define MICROLEV_YSIZE (STD_LEV_FIELDY*MICRO_TILEY)
+#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 FONT1_XSIZE 32
#define FONT1_YSIZE 32
#define EL_ERZ_EDEL_GELB 59
#define EL_MAMPFER2 60
#define EL_SIEB2_INAKTIV 61
-
-#define EL_UNUSED_62 62
-
+#define EL_INVISIBLE_STEEL 62
#define EL_DYNABOMB 63
#define EL_DYNABOMB_NR 64
#define EL_DYNABOMB_SZ 65
#define GFX_FIREFLY_L 206
#define GFX_FIREFLY_U 207
+#define GFX_INVISIBLE_STEEL GFX_UNSICHTBAR
+
#define GFX_SCHLUESSEL GFX_SCHLUESSEL1
#define GFX_SPIELFIGUR GFX_SPIELER1
#define REDRAW_VIDEO_1 (1L << 4)
#define REDRAW_VIDEO_2 (1L << 5)
#define REDRAW_VIDEO_3 (1L << 6)
-#define REDRAW_MICROLEV (1L << 7)
-#define REDRAW_FROM_BACKBUFFER (1L << 8)
-#define REDRAW_DOOR_2 (REDRAW_VIDEO_1 | REDRAW_VIDEO_2 | REDRAW_VIDEO_3)
-#define REDRAW_DOOR_3 (1L << 9)
-#define REDRAW_DOORS (REDRAW_DOOR_1 | REDRAW_DOOR_2 | REDRAW_DOOR_3)
-#define REDRAW_MAIN (REDRAW_FIELD | REDRAW_TILES | REDRAW_MICROLEV)
-#define REDRAWTILES_THRESHOLD SCR_FIELDX*SCR_FIELDY/2
+#define REDRAW_MICROLEVEL (1L << 7)
+#define REDRAW_MICROLEVEL_LABEL (1L << 8)
+#define REDRAW_FROM_BACKBUFFER (1L << 9)
+#define REDRAW_DOOR_2 (REDRAW_VIDEO_1 | \
+ REDRAW_VIDEO_2 | \
+ REDRAW_VIDEO_3)
+#define REDRAW_DOOR_3 (1L << 10)
+#define REDRAW_DOORS (REDRAW_DOOR_1 | \
+ REDRAW_DOOR_2 | \
+ REDRAW_DOOR_3)
+#define REDRAW_MAIN (REDRAW_FIELD | \
+ REDRAW_TILES | \
+ REDRAW_MICROLEVEL | \
+ REDRAW_MICROLEVEL_LABEL)
+#define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
/* areas in pixmap PIX_DOOR */
/* meaning in PIX_DB_DOOR: (3 PAGEs)