X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=b5b016345676b67a88183e5e3126ab1ef7f69a58;hb=67758fda340e825f188fc6a4caad03381bf031dc;hp=3c77e192ba7186cd04fbf620ebdfc818871b62c9;hpb=95d786b6fe8474c30a22f839751e0d04c7682ded;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 3c77e192..b5b01634 100644 --- a/src/main.h +++ b/src/main.h @@ -124,6 +124,7 @@ typedef unsigned char byte; #define EP_BIT_PLAYER (1 << 25) #define EP_BIT_HAS_CONTENT (1 << 26) #define EP_BIT_EATABLE (1 << 27) +#define EP_BIT_SP_ELEMENT (1 << 28) #define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID) @@ -153,6 +154,7 @@ typedef unsigned char byte; #define ELEM_IS_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_PLAYER) #define HAS_CONTENT(e) (Elementeigenschaften[e] & EP_BIT_HAS_CONTENT) #define IS_EATABLE(e) (Elementeigenschaften[e] & EP_BIT_EATABLE) +#define IS_SP_ELEMENT(e) (Elementeigenschaften[e] & EP_BIT_SP_ELEMENT) #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) @@ -339,6 +341,7 @@ struct LevelInfo int dauer_sieb; int dauer_ablenk; int amoebe_inhalt; + boolean high_speed; }; struct LevelDirInfo @@ -437,7 +440,9 @@ extern int BX1,BY1, BX2,BY2; extern int ZX,ZY, ExitX,ExitY; extern int AllPlayersGone; extern int FrameCounter, TimeFrames, TimeLeft; -extern int MampferMax, MampferNr, SiebAktiv; +extern int MampferMax, MampferNr; +extern boolean SiebAktiv; +extern int SiebCount; extern boolean network_player_action_received; @@ -517,7 +522,7 @@ extern int num_bg_loops; #define MINI_MORE_STARTY 160 #define MICRO_MORE_STARTX 0 #define MICRO_MORE_STARTY 208 -#define MORE_PER_LINE 8 +#define MORE_PER_LINE 16 #define MINI_MORE_PER_LINE 16 #define MICRO_MORE_PER_LINE 16 #define FONT_CHARS_PER_LINE 16 @@ -548,8 +553,8 @@ extern int num_bg_loops; #define EL_MORAST_VOLL 17 #define EL_TROPFEN 18 #define EL_BOMBE 19 -#define EL_SIEB_LEER 20 -#define EL_SIEB_VOLL 21 +#define EL_SIEB_INAKTIV 20 +#define EL_SPEED_PILL 21 #define EL_SALZSAEURE 22 #define EL_AMOEBE_NASS 23 #define EL_AMOEBE_NORM 24 @@ -589,8 +594,10 @@ extern int num_bg_loops; #define EL_ERZ_EDEL_BD 58 #define EL_ERZ_EDEL_GELB 59 #define EL_MAMPFER2 60 -#define EL_SIEB2_LEER 61 -#define EL_SIEB2_VOLL 62 +#define EL_SIEB2_INAKTIV 61 + +#define EL_UNUSED_62 62 + #define EL_DYNABOMB 63 #define EL_DYNABOMB_NR 64 #define EL_DYNABOMB_SZ 65 @@ -641,10 +648,14 @@ extern int num_bg_loops; #define EL_BADEWANNE3 102 #define EL_BADEWANNE4 103 #define EL_BADEWANNE5 104 -#define EL_SIEB_TOT 105 -#define EL_AUSGANG_ACT 106 + +#define EL_UNUSED_105 105 +#define EL_UNUSED_106 106 + #define EL_AUSGANG_AUF 107 -#define EL_SIEB2_TOT 108 + +#define EL_UNUSED_108 108 + #define EL_AMOEBA2DIAM 109 #define EL_MAULWURF 110 #define EL_PINGUIN 111 @@ -689,6 +700,8 @@ 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_MAUER_X 200 #define EL_MAUER_Y 201 #define EL_MAUER_XY 202 @@ -751,34 +764,44 @@ extern int num_bg_loops; #define EL_UNUSED_254 254 #define EL_UNUSED_255 255 -/* "unreal" runtime elements */ -#define EL_BLOCKED 300 -#define EL_EXPLODING 301 -#define EL_CRACKINGNUT 302 -#define EL_BLURB_LEFT 303 -#define EL_BLURB_RIGHT 304 -#define EL_AMOEBING 305 -#define EL_MAUERND 306 -#define EL_BURNING 307 -#define EL_PLAYER_IS_LEAVING 308 +/* "real" (and therefore drawable) runtime elements */ +#define EL_SIEB_LEER 300 +#define EL_SIEB2_LEER 301 +#define EL_SIEB_VOLL 302 +#define EL_SIEB2_VOLL 303 +#define EL_SIEB_TOT 304 +#define EL_SIEB2_TOT 305 +#define EL_AUSGANG_ACT 306 +#define EL_SP_TERMINAL_ACTIVE 307 + +/* "unreal" (and therefore not drawable) runtime elements */ +#define EL_BLOCKED 400 +#define EL_EXPLODING 401 +#define EL_CRACKINGNUT 402 +#define EL_BLURB_LEFT 403 +#define EL_BLURB_RIGHT 404 +#define EL_AMOEBING 405 +#define EL_MAUERND 406 +#define EL_BURNING 407 +#define EL_PLAYER_IS_LEAVING 408 /* game graphics: -** 0 - 209: graphics from "RocksScreen" -** 210 - 255: graphics from "RocksMore" -** 256 - 511: graphics from "RocksFont" -** 512 - 767: graphics from "RocksHeroes" +** 0 - 255: graphics from "RocksScreen" +** 256 - 511: graphics from "RocksMore" +** 512 - 767: graphics from "RocksFont" +** 768 - 1023: graphics from "RocksHeroes" */ #define GFX_START_ROCKSSCREEN 0 -#define GFX_END_ROCKSSCREEN 209 -#define GFX_START_ROCKSMORE 210 -#define GFX_END_ROCKSMORE 255 -#define GFX_START_ROCKSFONT 256 -#define GFX_END_ROCKSFONT 511 -#define GFX_START_ROCKSHEROES 512 -#define GFX_END_ROCKSHEROES 767 +#define GFX_END_ROCKSSCREEN 255 +#define GFX_START_ROCKSMORE 256 +#define GFX_END_ROCKSMORE 511 +#define GFX_START_ROCKSFONT 512 +#define GFX_END_ROCKSFONT 767 +#define GFX_START_ROCKSHEROES 768 +#define GFX_END_ROCKSHEROES 1023 -#define NUM_TILES 768 +#define NUM_TILES 1024 /* graphics from "RocksScreen" */ /* Zeile 0 (0) */ @@ -871,9 +894,10 @@ extern int num_bg_loops; #define GFX_SOKOBAN_FELD_VOLL 123 #define GFX_GEBLUBBER 124 /* Zeile 8 (128) */ -#define GFX_SIEB_LEER 128 -#define GFX_SIEB_VOLL GFX_SIEB_LEER -#define GFX_SIEB_TOT GFX_SIEB_LEER +#define GFX_SIEB_INAKTIV 128 +#define GFX_SIEB_LEER GFX_SIEB_INAKTIV +#define GFX_SIEB_VOLL GFX_SIEB_INAKTIV +#define GFX_SIEB_TOT GFX_SIEB_INAKTIV #define GFX_ERZ_EDEL 132 #define GFX_ERZ_DIAM 133 #define GFX_ERZ_EDEL_ROT 134 @@ -896,6 +920,7 @@ extern int num_bg_loops; #define GFX_EDELSTEIN_ROT 152 #define GFX_EDELSTEIN_LILA 154 #define GFX_DYNABOMB_XL 156 +#define GFX_SPEED_PILL 158 #define GFX_SONDE 159 /* Zeile 10 (160) */ #define GFX_EDELSTEIN_BD 163 @@ -906,9 +931,10 @@ extern int num_bg_loops; #define GFX_MAUER_L1 GFX_MAUER_LEFT #define GFX_MAUER_L 170 #define GFX_MAUER_LEBT 171 -#define GFX_SIEB2_LEER 172 -#define GFX_SIEB2_VOLL GFX_SIEB2_LEER -#define GFX_SIEB2_TOT GFX_SIEB2_LEER +#define GFX_SIEB2_INAKTIV 172 +#define GFX_SIEB2_LEER GFX_SIEB2_INAKTIV +#define GFX_SIEB2_VOLL GFX_SIEB2_INAKTIV +#define GFX_SIEB2_TOT GFX_SIEB2_INAKTIV /* Zeile 11 (176) */ #define GFX_AUSGANG_ZU 176 #define GFX_AUSGANG_ACT 177 @@ -991,46 +1017,57 @@ 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_PRE_LINE + 0) -#define GFX_SP_ZONK (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 1) -#define GFX_SP_BASE (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 2) -#define GFX_SP_MURPHY (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 3) -#define GFX_SP_INFOTRON (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 4) -#define GFX_SP_CHIP_SINGLE (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 5) -#define GFX_SP_HARD_GRAY (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 6) -#define GFX_SP_EXIT (GFX_START_ROCKSMORE + 0 * MORE_PRE_LINE + 7) -#define GFX_SP_DISK_ORANGE (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 0) -#define GFX_SP_PORT1_RIGHT (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 1) -#define GFX_SP_PORT1_DOWN (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 2) -#define GFX_SP_PORT1_LEFT (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 3) -#define GFX_SP_PORT1_UP (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 4) -#define GFX_SP_PORT2_RIGHT (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 5) -#define GFX_SP_PORT2_DOWN (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 6) -#define GFX_SP_PORT2_LEFT (GFX_START_ROCKSMORE + 1 * MORE_PRE_LINE + 7) -#define GFX_SP_PORT2_UP (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 0) -#define GFX_SP_SNIKSNAK (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 1) -#define GFX_SP_DISK_YELLOW (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 2) -#define GFX_SP_TERMINAL (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 3) -#define GFX_SP_DISK_RED (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 4) -#define GFX_SP_PORT_Y (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 5) -#define GFX_SP_PORT_X (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 6) -#define GFX_SP_PORT_XY (GFX_START_ROCKSMORE + 2 * MORE_PRE_LINE + 7) -#define GFX_SP_ELECTRON (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 0) -#define GFX_SP_BUG (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 1) -#define GFX_SP_CHIP_LEFT (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 2) -#define GFX_SP_CHIP_RIGHT (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 3) -#define GFX_SP_HARD_BASE1 (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 4) -#define GFX_SP_HARD_GREEN (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 5) -#define GFX_SP_HARD_BLUE (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 6) -#define GFX_SP_HARD_RED (GFX_START_ROCKSMORE + 3 * MORE_PRE_LINE + 7) -#define GFX_SP_HARD_YELLOW (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 0) -#define GFX_SP_HARD_BASE2 (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 1) -#define GFX_SP_HARD_BASE3 (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 2) -#define GFX_SP_HARD_BASE4 (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 3) -#define GFX_SP_HARD_BASE5 (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 4) -#define GFX_SP_HARD_BASE6 (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 5) -#define GFX_SP_CHIP_UPPER (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 6) -#define GFX_SP_CHIP_LOWER (GFX_START_ROCKSMORE + 4 * MORE_PRE_LINE + 7) +#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_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_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)