X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=5f0a813a1c71a68b98995920e798a855c0df7f65;hb=20e58eb6573a45a41c25958e17e8d9c20f738edc;hp=496bc9a6d3c50993782cc1468b351c8f790358bb;hpb=20c6b8920ccb37a41b9f7467135ecd6550816f59;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 496bc9a6..5f0a813a 100644 --- a/src/main.h +++ b/src/main.h @@ -124,6 +124,8 @@ typedef unsigned char byte; #define EP_BIT_HAS_CONTENT (1 << 26) #define EP_BIT_EATABLE (1 << 27) #define EP_BIT_SP_ELEMENT (1 << 28) +#define EP_BIT_QUICK_GATE (1 << 29) +#define EP_BIT_OVER_PLAYER (1 << 30) #define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID) @@ -154,6 +156,8 @@ typedef unsigned char byte; #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_QUICK_GATE(e) (Elementeigenschaften[e] & EP_BIT_QUICK_GATE) +#define IS_OVER_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_OVER_PLAYER) #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) @@ -197,13 +201,18 @@ typedef unsigned char byte; /* boundaries of arrays etc. */ #define MAX_NAMELEN (10+1) #define MAX_LEVEL_NAME_LEN 32 -#define MAX_LEVEL_AUTHOR_LEN 34 +#define MAX_LEVEL_AUTHOR_LEN 32 #define MAX_TAPELEN (1000 * 50) /* max. time * framerate */ #define MAX_LEVDIR_ENTRIES 100 #define MAX_SCORE_ENTRIES 100 #define MAX_ELEMENTS 512 #define MAX_NUM_AMOEBA 100 +/* values for elements with content */ +#define MIN_ELEMENT_CONTENTS 1 +#define STD_ELEMENT_CONTENTS 4 +#define MAX_ELEMENT_CONTENTS 8 + #define LEVEL_SCORE_ELEMENTS 16 /* level elements with score */ /* fundamental game speed values */ @@ -298,6 +307,8 @@ struct PlayerInfo byte effective_action; /* action aknowledged from network server or summarized over all configured input devices when in single player mode */ + byte programmed_action; /* action forced by game itself (like moving + through doors); overrides other actions */ int joystick_fd; /* file descriptor of player's joystick */ @@ -306,10 +317,12 @@ struct PlayerInfo int Frame; boolean Pushing; - boolean gone, LevelSolved, GameOver; + boolean LevelSolved, GameOver; boolean snapped; unsigned long move_delay; + int move_delay_value; + int last_move_dir; unsigned long push_delay; @@ -334,16 +347,18 @@ struct LevelInfo int fieldx; int fieldy; int time; - int edelsteine; - char name[MAX_LEVEL_NAME_LEN]; - char author[MAX_LEVEL_AUTHOR_LEN]; + int gems_needed; + 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; + int yam_content[MAX_ELEMENT_CONTENTS][3][3]; + int num_yam_contents; + int amoeba_speed; + int amoeba_content; + int time_magic_wall; + int time_wheel; + boolean double_speed; + boolean gravity; }; struct LevelDirInfo @@ -357,6 +372,7 @@ struct LevelDirInfo int sort_priority; boolean user_defined; boolean readonly; + int color; }; struct TapeInfo @@ -380,6 +396,18 @@ struct TapeInfo } pos[MAX_TAPELEN]; }; +struct GameInfo +{ + int emulation; + int yam_content_nr; + boolean magic_wall_active; + int magic_wall_time_left; +}; + +struct GlobalInfo +{ +}; + extern Display *display; extern Visual *visual; extern int screen; @@ -441,19 +469,15 @@ extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos; extern int BorderElement; extern int GameFrameDelay; extern int FfwdFrameDelay; -extern int MoveSpeed; extern int BX1,BY1, BX2,BY2; 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; -extern int MampferMax, MampferNr; extern boolean SiebAktiv; extern int SiebCount; -extern int game_emulation; - extern boolean network_player_action_received; extern struct LevelDirInfo leveldir[]; @@ -467,10 +491,13 @@ extern struct OptionInfo options; extern struct SetupInfo setup; extern struct SetupFileList *setup_list; extern struct SetupFileList *level_setup_list; +extern struct GameInfo game; +extern struct GlobalInfo global; extern char *sound_name[]; extern int background_loop[]; extern int num_bg_loops; +extern char *element_info[]; /* often used screen positions */ @@ -517,6 +544,8 @@ extern int num_bg_loops; #define FONT3_YSIZE 14 #define FONT4_XSIZE 16 #define FONT4_YSIZE 16 +#define FONT5_XSIZE 10 +#define FONT5_YSIZE 12 #define GFX_STARTX SX #define GFX_STARTY SY @@ -529,12 +558,12 @@ 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 224 +#define MINI_MORE_STARTY 352 #define MICRO_MORE_STARTX 0 -#define MICRO_MORE_STARTY 336 +#define MICRO_MORE_STARTY 448 #define MORE_PER_LINE 16 #define MINI_MORE_PER_LINE 16 -#define MICRO_MORE_PER_LINE 16 +#define MICRO_MORE_PER_LINE 64 #define FONT_CHARS_PER_LINE 16 #define FONT_LINES_PER_FONT 4 @@ -662,7 +691,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 @@ -675,17 +704,20 @@ extern int num_bg_loops; #define EL_SCHWEIN 117 #define EL_DRACHE 118 -#define EL_UNUSED_119 119 +#define EL_EM_KEY_1_FILE 119 #define EL_CHAR_START 120 #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) @@ -708,19 +740,23 @@ 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 #define EL_MAUER_XY 202 -#define EL_UNUSED_203 203 -#define EL_UNUSED_204 204 -#define EL_UNUSED_205 205 -#define EL_UNUSED_206 206 -#define EL_UNUSED_207 207 -#define EL_UNUSED_208 208 -#define EL_UNUSED_209 209 +#define EL_EM_GATE_1 203 +#define EL_EM_GATE_2 204 +#define EL_EM_GATE_3 205 +#define EL_EM_GATE_4 206 + +#define EL_EM_KEY_2_FILE 207 +#define EL_EM_KEY_3_FILE 208 +#define EL_EM_KEY_4_FILE 209 #define EL_SP_START 210 #define EL_SP_EMPTY (EL_SP_START + 0) @@ -765,10 +801,11 @@ extern int num_bg_loops; #define EL_SP_CHIP_LOWER (EL_SP_START + 39) #define EL_SP_END (EL_SP_START + 39) -#define EL_UNUSED_250 250 -#define EL_UNUSED_251 251 -#define EL_UNUSED_252 252 -#define EL_UNUSED_253 253 +#define EL_EM_GATE_1X 250 +#define EL_EM_GATE_2X 251 +#define EL_EM_GATE_3X 252 +#define EL_EM_GATE_4X 253 + #define EL_UNUSED_254 254 #define EL_UNUSED_255 255 @@ -782,6 +819,10 @@ extern int num_bg_loops; #define EL_AUSGANG_ACT 306 #define EL_SP_TERMINAL_ACTIVE 307 #define EL_SP_BUG_ACTIVE 308 +#define EL_EM_KEY_1 309 +#define EL_EM_KEY_2 310 +#define EL_EM_KEY_3 311 +#define EL_EM_KEY_4 312 /* "unreal" (and therefore not drawable) runtime elements */ #define EL_BLOCKED 400 @@ -933,6 +974,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) */ @@ -973,12 +1015,18 @@ extern int num_bg_loops; #define GFX_FIREFLY_U 207 /* only available as size MINI_TILE */ -#define GFX_STEEL_UPPER_LEFT 208 -#define GFX_STEEL_UPPER_RIGHT 209 -#define GFX_STEEL_LOWER_LEFT 210 -#define GFX_STEEL_LOWER_RIGHT 211 -#define GFX_STEEL_HORIZONTAL 212 -#define GFX_STEEL_VERTICAL 213 +#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 @@ -1039,62 +1087,89 @@ 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_INVISIBLE_STEEL (GFX_START_ROCKSMORE + 5 * MORE_PER_LINE + 3) -#define GFX_UNSICHTBAR (GFX_START_ROCKSMORE + 5 * 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_SP_ZONK (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 0) + +#define GFX_EM_KEY_1 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 4) +#define GFX_EM_KEY_2 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 5) +#define GFX_EM_KEY_3 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 6) +#define GFX_EM_KEY_4 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 7) +#define GFX_EM_GATE_1 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 0) +#define GFX_EM_GATE_2 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 1) +#define GFX_EM_GATE_3 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 2) +#define GFX_EM_GATE_4 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 3) +#define GFX_EM_GATE_1X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 4) +#define GFX_EM_GATE_2X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 5) +#define GFX_EM_GATE_3X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 6) +#define GFX_EM_GATE_4X (GFX_START_ROCKSMORE + 7 * 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) @@ -1221,6 +1296,7 @@ extern int num_bg_loops; #define FC_YELLOW 3 #define FC_SPECIAL1 4 #define FC_SPECIAL2 5 +#define FC_SPECIAL3 6 /* values for game_status */ #define EXITGAME 0 @@ -1247,7 +1323,7 @@ extern int num_bg_loops; #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" -#define PROGRAM_VERSION_STRING "1.2.1" +#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 @@ -1270,28 +1346,23 @@ 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_FROM_BACKBUFFER (1L << 8) +#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 << 9) +#define REDRAW_DOOR_3 (1 << 9) #define REDRAW_DOORS (REDRAW_DOOR_1 | \ REDRAW_DOOR_2 | \ REDRAW_DOOR_3)