short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-short JustHit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
-unsigned long Elementeigenschaften[MAX_ELEMENTS];
+unsigned long Elementeigenschaften1[MAX_ELEMENTS];
+unsigned long Elementeigenschaften2[MAX_ELEMENTS];
int level_nr, leveldir_nr, num_leveldirs;
int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
char *element_info[] =
{
- "empty space",
+ "empty space", /* 0 */
"sand",
"normal wall",
"round wall",
"closed exit",
"player",
"bug",
- "spaceship",
+ "spaceship", /* 10 */
"yam yam",
"robot",
"steel wall",
"quicksand with rock",
"amoeba drop",
"bomb",
- "magic wall",
+ "magic wall", /* 20 */
"speed ball",
"acid pool",
"dropping amoeba",
"biomaze",
"burning dynamite",
"unknown",
- "magic wheel",
+ "magic wheel", /* 30 */
"running wire",
"red key",
"yellow key",
"yellow door",
"green door",
"blue door",
- "gray door (opened by red key)",
+ "gray door (opened by red key)", /* 40 */
"gray door (opened by yellow key)",
"gray door (opened by green key)",
"gray door (opened by blue key)",
"light bulb (dark)",
"ligh bulb (glowing)",
"wall with emerald",
- "wall with diamond",
+ "wall with diamond", /* 50 */
"amoeba with content",
"amoeba (BD style)",
"time orb (full)",
"yellow emerald",
"wall with BD style diamond",
"wall with yellow emerald",
- "dark yam yam",
+ "dark yam yam", /* 60 */
"magic wall (BD style)",
"invisible steel wall",
"dynabomb",
"sokoban object",
"sokoban empty field",
"sokoban field with object",
- "butterfly (starts moving right)",
+ "butterfly (starts moving right)", /* 70 */
"butterfly (starts moving up)",
"butterfly (starts moving left)",
"butterfly (starts moving down)",
"firefly (starts moving down)",
"butterfly",
"firefly",
- "yellow player",
+ "yellow player", /* 80 */
"red player",
"green player",
"blue player",
"bug (starts moving down)",
"spaceship (starts moving right)",
"spaceship (starts moving up)",
- "spaceship (starts moving left)",
+ "spaceship (starts moving left)", /* 90 */
"spaceship (starts moving down)",
"pac man (starts moving right)",
"pac man (starts moving up)",
"violet emerald",
"wall with red emerald",
"wall with violet emerald",
- "unknown",
+ "unknown", /* 100 */
"unknown",
"unknown",
"unknown",
"open exit",
"unknown",
"amoeba",
- "mole",
+ "mole", /* 110 */
"penguin",
"satellite",
"arrow left",
"pig",
"fire breathing dragon",
"unknown",
- "letter ' '",
+ "letter ' '", /* 120 */
"letter '!'",
"letter '\"'",
"letter '#'",
"letter '''",
"letter '('",
"letter ')'",
- "letter '*'",
+ "letter '*'", /* 130 */
"letter '+'",
"letter ','",
"letter '-'",
"letter '1'",
"letter '2'",
"letter '3'",
- "letter '4'",
+ "letter '4'", /* 140 */
"letter '5'",
"letter '6'",
"letter '7'",
"letter ';'",
"letter '<'",
"letter '='",
- "letter '>'",
+ "letter '>'", /* 150 */
"letter '?'",
"letter '@'",
"letter 'A'",
"letter 'E'",
"letter 'F'",
"letter 'G'",
- "letter 'H'",
+ "letter 'H'", /* 160 */
"letter 'I'",
"letter 'J'",
"letter 'K'",
"letter 'O'",
"letter 'P'",
"letter 'Q'",
- "letter 'R'",
+ "letter 'R'", /* 170 */
"letter 'S'",
"letter 'T'",
"letter 'U'",
"letter 'Y'",
"letter 'Z'",
"letter 'Ä'",
- "letter 'Ö'",
+ "letter 'Ö'", /* 180 */
"letter 'Ü'",
"letter '^'",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
+ "letter ''", /* 190 */
"letter ''",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
- "letter ''",
- "growing wall (horizontally)",
+ "growing wall (horizontally)", /* 200 */
"growing wall (vertically)",
"growing wall (all directions)",
"unused",
"unused",
"unused",
"unused",
- "empty space",
+ "empty space", /* 210 */
"zonk",
"base",
"murphy",
"exit",
"orange disk",
"port (leading right)",
- "port (leading down)",
+ "port (leading down)", /* 220 */
"port (leading left)",
"port (leading up)",
"port (leading right)",
"snik snak",
"yellow disk",
"terminal",
- "red disk",
+ "red disk", /* 230 */
"port (vertically)",
"port (horizontally)",
"port (all directions)",
"chip (right half)",
"hardware",
"hardware",
- "hardware",
+ "hardware", /* 240 */
"hardware",
"hardware",
"hardware",
"hardware",
"chip (upper half)",
"chip (lower half)",
- "unknown",
+ "unknown", /* 250 */
"unknown",
"unknown",
"unknown",
/* 256 */
- "pearl",
+ "pearl", /* (256) */
"crystal",
"wall with pearl",
"wall with crystal",
- "white door",
+ "white door", /* 260 */
"gray door (opened by white key)",
"white key",
"force field",
"extra time",
"switch gate (open)",
"switch gate (closed)",
- "switch for switch gate",
+ "switch for switch gate (open)",
+ "switch for switch gate (closed)",
"time gate",
- "time gate with magic wheel",
- "green conveyor belt (left)",
- "green conveyor belt (middle)",
- "green conveyor belt (right)",
- "switch for green conveyor belt",
+ "time gate with magic wheel", /* 270 */
"red conveyor belt (left)",
"red conveyor belt (middle)",
"red conveyor belt (right)",
- "switch for red conveyor belt",
+ "switch for red conveyor belt (left)",
+ "switch for red conveyor belt (middle)",
+ "switch for red conveyor belt (right)",
+ "yellow conveyor belt (left)",
+ "yellow conveyor belt (middle)",
+ "yellow conveyor belt (right)",
+ "switch for yellow conveyor belt (left)", /* 280 */
+ "switch for yellow conveyor belt (middle)",
+ "switch for yellow conveyor belt (right)",
+ "green conveyor belt (left)",
+ "green conveyor belt (middle)",
+ "green conveyor belt (right)",
+ "switch for green conveyor belt (left)",
+ "switch for green conveyor belt (middle)",
+ "switch for green conveyor belt (right)",
"blue conveyor belt (left)",
- "blue conveyor belt (middle)",
+ "blue conveyor belt (middle)", /* 290 */
"blue conveyor belt (right)",
- "switch for blue conveyor belt",
+ "switch for blue conveyor belt (left)",
+ "switch for blue conveyor belt (middle)",
+ "switch for blue conveyor belt (right)",
"land mine",
"mail envelope",
"light switch",
"sign (exclamation)",
"sign (radio activity)",
- "sign (stop)",
+ "sign (stop)", /* 300 */
"sign (wheel chair)",
"sign (parking)",
"sign (one way)",
"sign (exit)",
"sign (yin yang)",
"sign (other)",
- "mole (starts moving left)",
+ "mole (starts moving left)", /* 310 */
"mole (starts moving right)",
"mole (starts moving up)",
"mole (starts moving down)",
"-",
"-",
"-",
- "-",
+ "-", /* 320 */
"-",
"-",
"-",
#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)
+/* values for 'Elementeigenschaften1' */
#define EP_BIT_AMOEBALIVE (1 << 0)
#define EP_BIT_AMOEBOID (1 << 1)
#define EP_BIT_SCHLUESSEL (1 << 2)
#define EP_BIT_OVER_PLAYER (1 << 30)
#define EP_BIT_ACTIVE_BOMB (1 << 31)
-#define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE)
-#define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID)
-#define IS_SCHLUESSEL(e) (Elementeigenschaften[e] & EP_BIT_SCHLUESSEL)
-#define IS_PFORTE(e) (Elementeigenschaften[e] & EP_BIT_PFORTE)
-#define IS_SOLID(e) (Elementeigenschaften[e] & EP_BIT_SOLID)
-#define IS_MASSIVE(e) (Elementeigenschaften[e] & EP_BIT_MASSIVE)
-#define IS_SLIPPERY(e) (Elementeigenschaften[e] & EP_BIT_SLIPPERY)
-#define IS_ENEMY(e) (Elementeigenschaften[e] & EP_BIT_ENEMY)
-#define IS_MAUER(e) (Elementeigenschaften[e] & EP_BIT_MAUER)
-#define CAN_FALL(e) (Elementeigenschaften[e] & EP_BIT_CAN_FALL)
-#define CAN_SMASH(e) (Elementeigenschaften[e] & EP_BIT_CAN_SMASH)
-#define CAN_CHANGE(e) (Elementeigenschaften[e] & EP_BIT_CAN_CHANGE)
-#define CAN_MOVE(e) (Elementeigenschaften[e] & EP_BIT_CAN_MOVE)
-#define COULD_MOVE(e) (Elementeigenschaften[e] & EP_BIT_COULD_MOVE)
-#define DONT_TOUCH(e) (Elementeigenschaften[e] & EP_BIT_DONT_TOUCH)
-#define DONT_GO_TO(e) (Elementeigenschaften[e] & EP_BIT_DONT_GO_TO)
-#define IS_MAMPF2(e) (Elementeigenschaften[e] & EP_BIT_MAMPF2)
-#define IS_CHAR(e) (Elementeigenschaften[e] & EP_BIT_CHAR)
-#define IS_BD_ELEMENT(e) (Elementeigenschaften[e] & EP_BIT_BD_ELEMENT)
-#define IS_SB_ELEMENT(e) (Elementeigenschaften[e] & EP_BIT_SB_ELEMENT)
-#define IS_GEM(e) (Elementeigenschaften[e] & EP_BIT_GEM)
-#define IS_INACTIVE(e) (Elementeigenschaften[e] & EP_BIT_INACTIVE)
-#define IS_EXPLOSIVE(e) (Elementeigenschaften[e] & EP_BIT_EXPLOSIVE)
-#define IS_MAMPF3(e) (Elementeigenschaften[e] & EP_BIT_MAMPF3)
-#define IS_PUSHABLE(e) (Elementeigenschaften[e] & EP_BIT_PUSHABLE)
-#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_QUICK_GATE(e) (Elementeigenschaften[e] & EP_BIT_QUICK_GATE)
-#define IS_OVER_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_OVER_PLAYER)
-#define IS_ACTIVE_BOMB(e) (Elementeigenschaften[e] & EP_BIT_ACTIVE_BOMB)
+/* values for 'Elementeigenschaften2' */
+#define EP_BIT_BELT (1 << 0)
+#define EP_BIT_BELT_SWITCH (1 << 1)
+
+#define IS_AMOEBALIVE(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBALIVE)
+#define IS_AMOEBOID(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBOID)
+#define IS_SCHLUESSEL(e) (Elementeigenschaften1[e] & EP_BIT_SCHLUESSEL)
+#define IS_PFORTE(e) (Elementeigenschaften1[e] & EP_BIT_PFORTE)
+#define IS_SOLID(e) (Elementeigenschaften1[e] & EP_BIT_SOLID)
+#define IS_MASSIVE(e) (Elementeigenschaften1[e] & EP_BIT_MASSIVE)
+#define IS_SLIPPERY(e) (Elementeigenschaften1[e] & EP_BIT_SLIPPERY)
+#define IS_ENEMY(e) (Elementeigenschaften1[e] & EP_BIT_ENEMY)
+#define IS_MAUER(e) (Elementeigenschaften1[e] & EP_BIT_MAUER)
+#define CAN_FALL(e) (Elementeigenschaften1[e] & EP_BIT_CAN_FALL)
+#define CAN_SMASH(e) (Elementeigenschaften1[e] & EP_BIT_CAN_SMASH)
+#define CAN_CHANGE(e) (Elementeigenschaften1[e] & EP_BIT_CAN_CHANGE)
+#define CAN_MOVE(e) (Elementeigenschaften1[e] & EP_BIT_CAN_MOVE)
+#define COULD_MOVE(e) (Elementeigenschaften1[e] & EP_BIT_COULD_MOVE)
+#define DONT_TOUCH(e) (Elementeigenschaften1[e] & EP_BIT_DONT_TOUCH)
+#define DONT_GO_TO(e) (Elementeigenschaften1[e] & EP_BIT_DONT_GO_TO)
+#define IS_MAMPF2(e) (Elementeigenschaften1[e] & EP_BIT_MAMPF2)
+#define IS_CHAR(e) (Elementeigenschaften1[e] & EP_BIT_CHAR)
+#define IS_BD_ELEMENT(e) (Elementeigenschaften1[e] & EP_BIT_BD_ELEMENT)
+#define IS_SB_ELEMENT(e) (Elementeigenschaften1[e] & EP_BIT_SB_ELEMENT)
+#define IS_GEM(e) (Elementeigenschaften1[e] & EP_BIT_GEM)
+#define IS_INACTIVE(e) (Elementeigenschaften1[e] & EP_BIT_INACTIVE)
+#define IS_EXPLOSIVE(e) (Elementeigenschaften1[e] & EP_BIT_EXPLOSIVE)
+#define IS_MAMPF3(e) (Elementeigenschaften1[e] & EP_BIT_MAMPF3)
+#define IS_PUSHABLE(e) (Elementeigenschaften1[e] & EP_BIT_PUSHABLE)
+#define ELEM_IS_PLAYER(e) (Elementeigenschaften1[e] & EP_BIT_PLAYER)
+#define HAS_CONTENT(e) (Elementeigenschaften1[e] & EP_BIT_HAS_CONTENT)
+#define IS_EATABLE(e) (Elementeigenschaften1[e] & EP_BIT_EATABLE)
+#define IS_SP_ELEMENT(e) (Elementeigenschaften1[e] & EP_BIT_SP_ELEMENT)
+#define IS_QUICK_GATE(e) (Elementeigenschaften1[e] & EP_BIT_QUICK_GATE)
+#define IS_OVER_PLAYER(e) (Elementeigenschaften1[e] & EP_BIT_OVER_PLAYER)
+#define IS_ACTIVE_BOMB(e) (Elementeigenschaften1[e] & EP_BIT_ACTIVE_BOMB)
+#define IS_BELT(e) (Elementeigenschaften2[e] & EP_BIT_BELT)
+#define IS_BELT_SWITCH(e) (Elementeigenschaften2[e] & EP_BIT_BELT_SWITCH)
#define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y]))
#define IS_FREE_OR_PLAYER(x,y) (Feld[x][y] == EL_LEERRAUM)
#define IS_MOVING(x,y) (MovPos[x][y] != 0)
+#define IS_FALLING(x,y) (MovPos[x][y] != 0 && MovDir[x][y] == MV_DOWN)
#define IS_BLOCKED(x,y) (Feld[x][y] == EL_BLOCKED)
#define EL_CHANGED(e) ((e) == EL_FELSBROCKEN ? EL_EDELSTEIN : \
#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1])
-/* Pixmaps with Xpm or X11 Bitmap files */
+/* Pixmaps with graphic file */
#define PIX_BACK 0
#define PIX_DOOR 1
#define PIX_HEROES 2
#define PIX_TOONS 3
-#define PIX_MORE 4
-#define PIX_BIGFONT 5
-#define PIX_SMALLFONT 6
-/* Pixmaps without them */
-#define PIX_DB_BACK 7
-#define PIX_DB_DOOR 8
-#define PIX_DB_FIELD 9
-
-#define NUM_PICTURES 7
+#define PIX_SP 4
+#define PIX_DC 5
+#define PIX_BIGFONT 6
+#define PIX_SMALLFONT 7
+/* Pixmaps without graphic file */
+#define PIX_DB_BACK 8
+#define PIX_DB_DOOR 9
+#define PIX_DB_FIELD 10
+
+#define NUM_PICTURES 8
#define NUM_PIXMAPS 10
/* boundaries of arrays etc. */
int Frame;
boolean Pushing;
+ boolean Switching;
boolean LevelSolved, GameOver;
boolean snapped;
int yam_content_nr;
boolean magic_wall_active;
int magic_wall_time_left;
+ int belt_dir[4];
};
struct GlobalInfo
extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short JustHit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
-extern unsigned long Elementeigenschaften[MAX_ELEMENTS];
+extern unsigned long Elementeigenschaften1[MAX_ELEMENTS];
+extern unsigned long Elementeigenschaften2[MAX_ELEMENTS];
extern int level_nr, leveldir_nr, num_leveldirs;
extern int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
#define GFX_PER_LINE 16
#define MINI_GFX_PER_LINE 32
#define MICRO_GFX_PER_LINE 128
+
#define HEROES_PER_LINE 16
-#define MINI_MORE_STARTX 0
-#define MINI_MORE_STARTY 352
-#define MICRO_MORE_STARTX 0
-#define MICRO_MORE_STARTY 448
-#define MORE_PER_LINE 16
-#define MINI_MORE_PER_LINE 16
-#define MICRO_MORE_PER_LINE 64
+#define MINI_SP_STARTX 0
+#define MINI_SP_STARTY 352
+#define MICRO_SP_STARTX 0
+#define MICRO_SP_STARTY 448
+#define SP_PER_LINE 16
+#define MINI_SP_PER_LINE 16
+#define MICRO_SP_PER_LINE 64
+
+#define MINI_DC_STARTX 256
+#define MINI_DC_STARTY 0
+#define MICRO_DC_STARTX 0
+#define MICRO_DC_STARTY 0
+#define DC_PER_LINE 8
+#define MINI_DC_PER_LINE 8
+#define MICRO_DC_PER_LINE 32
+
#define FONT_CHARS_PER_LINE 16
#define FONT_LINES_PER_FONT 4
/* game elements:
-** 0 - 255: real elements, stored in level file
-** 256 - 511: flag elements, only used at runtime
+** 0 - 1000: real elements, stored in level file
+** 1000 - 2000: flag elements, only used at runtime
*/
/* "real" level elements */
#define EL_LEERRAUM 0
#define EL_KEY_WHITE 262
#define EL_FORCE_FIELD 263
#define EL_EXTRA_TIME 264
-#define EL_SWITCH_GATE_OPEN 265
-#define EL_SWITCH_GATE_CLOSED 266
-#define EL_SWITCH_GATE_SWITCH 267
-#define EL_TIME_GATE 268
-#define EL_TIME_GATE_WHEEL 269
-#define EL_BELT_GREEN_LEFT 270
-#define EL_BELT_GREEN_MIDDLE 271
-#define EL_BELT_GREEN_RIGHT 272
-#define EL_BELT_GREEN_SWITCH 273
-#define EL_BELT_RED_LEFT 274
-#define EL_BELT_RED_MIDDLE 275
-#define EL_BELT_RED_RIGHT 276
-#define EL_BELT_RED_SWITCH 277
-#define EL_BELT_BLUE_LEFT 278
-#define EL_BELT_BLUE_MIDDLE 279
-#define EL_BELT_BLUE_RIGHT 280
-#define EL_BELT_BLUE_SWITCH 281
-#define EL_LANDMINE 282
-#define EL_ENVELOPE 283
-#define EL_LIGHT_SWITCH 284
-#define EL_SIGN_EXCLAMATION 285
-#define EL_SIGN_RADIOACTIVITY 286
-#define EL_SIGN_STOP 287
-#define EL_SIGN_WHEELCHAIR 288
-#define EL_SIGN_PARKING 289
-#define EL_SIGN_ONEWAY 290
-#define EL_SIGN_HEART 291
-#define EL_SIGN_TRIANGLE 292
-#define EL_SIGN_ROUND 293
-#define EL_SIGN_EXIT 294
-#define EL_SIGN_YINYANG 295
-#define EL_SIGN_OTHER 296
-#define EL_MOLE_LEFT 297
-#define EL_MOLE_RIGHT 298
-#define EL_MOLE_UP 299
-#define EL_MOLE_DOWN 300
-#define EL_STEEL_SLANTED 301
-#define EL_SAND_INVISIBLE 302
+#define EL_SWITCHGATE_OPEN 265
+#define EL_SWITCHGATE_CLOSED 266
+#define EL_SWITCHGATE_SWITCH_L 267
+#define EL_SWITCHGATE_SWITCH_R 268
+#define EL_TIME_GATE 269
+#define EL_TIME_GATE_WHEEL 270
+#define EL_BELT1_LEFT 271
+#define EL_BELT1_MIDDLE 272
+#define EL_BELT1_RIGHT 273
+#define EL_BELT1_SWITCH_L 274
+#define EL_BELT1_SWITCH_M 275
+#define EL_BELT1_SWITCH_R 276
+#define EL_BELT2_LEFT 277
+#define EL_BELT2_MIDDLE 278
+#define EL_BELT2_RIGHT 279
+#define EL_BELT2_SWITCH_L 280
+#define EL_BELT2_SWITCH_M 281
+#define EL_BELT2_SWITCH_R 282
+#define EL_BELT3_LEFT 283
+#define EL_BELT3_MIDDLE 284
+#define EL_BELT3_RIGHT 285
+#define EL_BELT3_SWITCH_L 286
+#define EL_BELT3_SWITCH_M 287
+#define EL_BELT3_SWITCH_R 288
+#define EL_BELT4_LEFT 289
+#define EL_BELT4_MIDDLE 290
+#define EL_BELT4_RIGHT 291
+#define EL_BELT4_SWITCH_L 292
+#define EL_BELT4_SWITCH_M 293
+#define EL_BELT4_SWITCH_R 294
+#define EL_LANDMINE 295
+#define EL_ENVELOPE 296
+#define EL_LIGHT_SWITCH 297
+#define EL_SIGN_EXCLAMATION 298
+#define EL_SIGN_RADIOACTIVITY 299
+#define EL_SIGN_STOP 300
+#define EL_SIGN_WHEELCHAIR 301
+#define EL_SIGN_PARKING 302
+#define EL_SIGN_ONEWAY 303
+#define EL_SIGN_HEART 304
+#define EL_SIGN_TRIANGLE 305
+#define EL_SIGN_ROUND 306
+#define EL_SIGN_EXIT 307
+#define EL_SIGN_YINYANG 308
+#define EL_SIGN_OTHER 309
+#define EL_MOLE_LEFT 310
+#define EL_MOLE_RIGHT 311
+#define EL_MOLE_UP 312
+#define EL_MOLE_DOWN 313
+#define EL_STEEL_SLANTED 314
+#define EL_SAND_INVISIBLE 315
/* "real" (and therefore drawable) runtime elements */
#define EL_SIEB_LEER 1000
/* game graphics:
** 0 - 255: graphics from "RocksScreen"
** 256 - 511: graphics from "RocksFont"
-** 512 - 767: graphics from "RocksMore"
-** 768 - 1023: graphics from "RocksHeroes"
+** 512 - 767: graphics from "RocksHeroes"
+** 768 - 1023: graphics from "RocksSP"
+** 1024 - 1279: graphics from "RocksDC"
*/
#define GFX_START_ROCKSSCREEN 0
#define GFX_END_ROCKSSCREEN 255
#define GFX_START_ROCKSFONT 256
#define GFX_END_ROCKSFONT 511
-#define GFX_START_ROCKSMORE 512
-#define GFX_END_ROCKSMORE 767
-#define GFX_START_ROCKSHEROES 768
-#define GFX_END_ROCKSHEROES 1023
+#define GFX_START_ROCKSHEROES 512
+#define GFX_END_ROCKSHEROES 767
+#define GFX_START_ROCKSSP 768
+#define GFX_END_ROCKSSP 1023
+#define GFX_START_ROCKSDC 1024
+#define GFX_END_ROCKSDC 1279
-#define NUM_TILES 1024
+#define NUM_TILES 1280
/* graphics from "RocksScreen" */
/* Zeile 0 (0) */
#define GFX_FLAMMEN_UP (GFX_START_ROCKSHEROES +14*HEROES_PER_LINE + 8)
#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)
+/* graphics from "RocksSP" */
+#define GFX_SP_EMPTY (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 0)
/*
-#define GFX_SP_ZONK (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 1)
+#define GFX_SP_ZONK (GFX_START_ROCKSSP + 0 * SP_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)
+#define GFX_SP_BASE (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 2)
+#define GFX_SP_MURPHY (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 3)
+#define GFX_SP_INFOTRON (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 4)
+#define GFX_SP_CHIP_SINGLE (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 5)
+#define GFX_SP_HARD_GRAY (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 6)
+#define GFX_SP_EXIT (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 7)
+#define GFX_SP_DISK_ORANGE (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 0)
+#define GFX_SP_PORT1_RIGHT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 1)
+#define GFX_SP_PORT1_DOWN (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 2)
+#define GFX_SP_PORT1_LEFT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 3)
+#define GFX_SP_PORT1_UP (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 4)
+#define GFX_SP_PORT2_RIGHT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 5)
+#define GFX_SP_PORT2_DOWN (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 6)
+#define GFX_SP_PORT2_LEFT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 7)
+#define GFX_SP_PORT2_UP (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 0)
+#define GFX_SP_SNIKSNAK (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 1)
+#define GFX_SP_DISK_YELLOW (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 2)
+#define GFX_SP_TERMINAL (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 3)
+#define GFX_SP_DISK_RED (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 4)
+#define GFX_SP_PORT_Y (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 5)
+#define GFX_SP_PORT_X (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 6)
+#define GFX_SP_PORT_XY (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 7)
+#define GFX_SP_ELECTRON (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 0)
+#define GFX_SP_BUG (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 1)
+#define GFX_SP_CHIP_LEFT (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 2)
+#define GFX_SP_CHIP_RIGHT (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 3)
+#define GFX_SP_HARD_BASE1 (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 4)
+#define GFX_SP_HARD_GREEN (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 5)
+#define GFX_SP_HARD_BLUE (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 6)
+#define GFX_SP_HARD_RED (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 7)
+#define GFX_SP_HARD_YELLOW (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 0)
+#define GFX_SP_HARD_BASE2 (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 1)
+#define GFX_SP_HARD_BASE3 (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 2)
+#define GFX_SP_HARD_BASE4 (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 3)
+#define GFX_SP_HARD_BASE5 (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 4)
+#define GFX_SP_HARD_BASE6 (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 5)
+#define GFX_SP_CHIP_UPPER (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 6)
+#define GFX_SP_CHIP_LOWER (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 7)
+
+#define GFX_INVISIBLE_STEEL (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 3)
+#define GFX_UNSICHTBAR (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 7)
+#define GFX_SP_ZONK (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 0)
+
+#define GFX_EM_KEY_1 (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 4)
+#define GFX_EM_KEY_2 (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 5)
+#define GFX_EM_KEY_3 (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 6)
+#define GFX_EM_KEY_4 (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 7)
+#define GFX_EM_GATE_1 (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 0)
+#define GFX_EM_GATE_2 (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 1)
+#define GFX_EM_GATE_3 (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 2)
+#define GFX_EM_GATE_4 (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 3)
+#define GFX_EM_GATE_1X (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 4)
+#define GFX_EM_GATE_2X (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 5)
+#define GFX_EM_GATE_3X (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 6)
+#define GFX_EM_GATE_4X (GFX_START_ROCKSSP + 7 * SP_PER_LINE + 7)
+
+#define GFX_MURPHY_GO_LEFT (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 8)
+#define GFX_MURPHY_ANY_LEFT (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 9)
+#define GFX_MURPHY_GO_RIGHT (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 11)
+#define GFX_MURPHY_ANY_RIGHT (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 12)
+#define GFX_MURPHY_SNAP_UP (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 14)
+#define GFX_MURPHY_SNAP_DOWN (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 15)
+#define GFX_MURPHY_SNAP_RIGHT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 8)
+#define GFX_MURPHY_SNAP_LEFT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 9)
+#define GFX_MURPHY_PUSH_RIGHT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 10)
+#define GFX_MURPHY_PUSH_LEFT (GFX_START_ROCKSSP + 1 * SP_PER_LINE + 11)
+
+#define GFX_SP_BUG_WARNING (GFX_START_ROCKSSP + 2 * SP_PER_LINE + 15)
+#define GFX_SP_EXPLODE_EMPTY (GFX_START_ROCKSSP + 3 * SP_PER_LINE + 8)
+#define GFX_SP_EXPLODE_INFOTRON (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 8)
+#define GFX_SP_BUG_ACTIVE (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 8)
+#define GFX_SP_SNIKSNAK_LEFT (GFX_START_ROCKSSP + 8 * SP_PER_LINE + 8)
+#define GFX_SP_SNIKSNAK_RIGHT (GFX_START_ROCKSSP + 8 * SP_PER_LINE + 12)
+#define GFX_SP_SNIKSNAK_UP (GFX_START_ROCKSSP + 9 * SP_PER_LINE + 8)
+#define GFX_SP_SNIKSNAK_DOWN (GFX_START_ROCKSSP + 9 * SP_PER_LINE + 12)
+
+#define GFX2_SP_ELECTRON (GFX_START_ROCKSSP + 10 * SP_PER_LINE + 8)
+#define GFX2_SP_TERMINAL (GFX_START_ROCKSSP + 11 * SP_PER_LINE + 8)
+#define GFX2_SP_TERMINAL_ACTIVE (GFX_START_ROCKSSP + 12 * SP_PER_LINE + 8)
+
+/* graphics from "RocksDC" */
+#define GFX_BELT1_MIDDLE (GFX_START_ROCKSDC + 0 * DC_PER_LINE + 0)
+#define GFX_BELT1_LEFT (GFX_START_ROCKSDC + 1 * DC_PER_LINE + 0)
+#define GFX_BELT1_RIGHT (GFX_START_ROCKSDC + 2 * DC_PER_LINE + 0)
+#define GFX_BELT2_MIDDLE (GFX_START_ROCKSDC + 3 * DC_PER_LINE + 0)
+#define GFX_BELT2_LEFT (GFX_START_ROCKSDC + 4 * DC_PER_LINE + 0)
+#define GFX_BELT2_RIGHT (GFX_START_ROCKSDC + 5 * DC_PER_LINE + 0)
+#define GFX_BELT3_MIDDLE (GFX_START_ROCKSDC + 6 * DC_PER_LINE + 0)
+#define GFX_BELT3_LEFT (GFX_START_ROCKSDC + 7 * DC_PER_LINE + 0)
+#define GFX_BELT3_RIGHT (GFX_START_ROCKSDC + 8 * DC_PER_LINE + 0)
+#define GFX_BELT4_MIDDLE (GFX_START_ROCKSDC + 9 * DC_PER_LINE + 0)
+#define GFX_BELT4_LEFT (GFX_START_ROCKSDC + 10 * DC_PER_LINE + 0)
+#define GFX_BELT4_RIGHT (GFX_START_ROCKSDC + 11 * DC_PER_LINE + 0)
+#define GFX_BELT1_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 3)
+#define GFX_BELT1_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 3)
+#define GFX_BELT1_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 3)
/* graphics from "RocksFont" */
#define GFX_CHAR_START (GFX_START_ROCKSFONT)
#define GFX_KEY_WHITE GFX_CHAR_FRAGE
#define GFX_FORCE_FIELD GFX_CHAR_FRAGE
#define GFX_EXTRA_TIME GFX_CHAR_FRAGE
-#define GFX_SWITCH_GATE_OPEN GFX_CHAR_FRAGE
-#define GFX_SWITCH_GATE_CLOSED GFX_CHAR_FRAGE
-#define GFX_SWITCH_GATE_SWITCH GFX_CHAR_FRAGE
+#define GFX_SWITCHGATE_OPEN GFX_CHAR_FRAGE
+#define GFX_SWITCHGATE_CLOSED GFX_CHAR_FRAGE
+#define GFX_SWITCHGATE_SWITCH_L GFX_CHAR_FRAGE
+#define GFX_SWITCHGATE_SWITCH_R GFX_CHAR_FRAGE
#define GFX_TIME_GATE GFX_CHAR_FRAGE
#define GFX_TIME_GATE_WHEEL GFX_CHAR_FRAGE
-#define GFX_BELT_GREEN_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT_GREEN_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT_GREEN_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT_GREEN_SWITCH GFX_CHAR_FRAGE
-#define GFX_BELT_RED_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT_RED_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT_RED_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT_RED_SWITCH GFX_CHAR_FRAGE
-#define GFX_BELT_BLUE_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT_BLUE_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT_BLUE_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT_BLUE_SWITCH GFX_CHAR_FRAGE
+
+/*
+#define GFX_BELT1_LEFT GFX_CHAR_FRAGE
+#define GFX_BELT1_MIDDLE GFX_CHAR_FRAGE
+#define GFX_BELT1_RIGHT GFX_CHAR_FRAGE
+#define GFX_BELT1_SWITCH_L GFX_CHAR_FRAGE
+#define GFX_BELT1_SWITCH_M GFX_CHAR_FRAGE
+#define GFX_BELT1_SWITCH_R GFX_CHAR_FRAGE
+#define GFX_BELT2_LEFT GFX_CHAR_FRAGE
+#define GFX_BELT2_MIDDLE GFX_CHAR_FRAGE
+#define GFX_BELT2_RIGHT GFX_CHAR_FRAGE
+#define GFX_BELT2_SWITCH_L GFX_CHAR_FRAGE
+#define GFX_BELT2_SWITCH_M GFX_CHAR_FRAGE
+#define GFX_BELT2_SWITCH_R GFX_CHAR_FRAGE
+#define GFX_BELT3_LEFT GFX_CHAR_FRAGE
+#define GFX_BELT3_MIDDLE GFX_CHAR_FRAGE
+#define GFX_BELT3_RIGHT GFX_CHAR_FRAGE
+#define GFX_BELT3_SWITCH_L GFX_CHAR_FRAGE
+#define GFX_BELT3_SWITCH_M GFX_CHAR_FRAGE
+#define GFX_BELT3_SWITCH_R GFX_CHAR_FRAGE
+#define GFX_BELT4_LEFT GFX_CHAR_FRAGE
+#define GFX_BELT4_MIDDLE GFX_CHAR_FRAGE
+#define GFX_BELT4_RIGHT GFX_CHAR_FRAGE
+#define GFX_BELT4_SWITCH_L GFX_CHAR_FRAGE
+#define GFX_BELT4_SWITCH_M GFX_CHAR_FRAGE
+#define GFX_BELT4_SWITCH_R GFX_CHAR_FRAGE
+*/
+
#define GFX_LANDMINE GFX_CHAR_FRAGE
#define GFX_ENVELOPE GFX_CHAR_FRAGE
#define GFX_LIGHT_SWITCH GFX_CHAR_FRAGE
*x = SX + (graphic % GFX_PER_LINE) * TILEX;
*y = SY + (graphic / GFX_PER_LINE) * TILEY;
}
- else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
- {
- graphic -= GFX_START_ROCKSMORE;
- *pixmap_nr = PIX_MORE;
- *x = (graphic % MORE_PER_LINE) * TILEX;
- *y = (graphic / MORE_PER_LINE) * TILEY;
- }
else if (graphic >= GFX_START_ROCKSHEROES && graphic <= GFX_END_ROCKSHEROES)
{
graphic -= GFX_START_ROCKSHEROES;
*x = (graphic % HEROES_PER_LINE) * TILEX;
*y = (graphic / HEROES_PER_LINE) * TILEY;
}
+ else if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
+ {
+ graphic -= GFX_START_ROCKSSP;
+ *pixmap_nr = PIX_SP;
+ *x = (graphic % SP_PER_LINE) * TILEX;
+ *y = (graphic / SP_PER_LINE) * TILEY;
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
+ {
+ graphic -= GFX_START_ROCKSDC;
+ *pixmap_nr = PIX_DC;
+ *x = (graphic % DC_PER_LINE) * TILEX;
+ *y = (graphic / DC_PER_LINE) * TILEY;
+ }
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
graphic -= GFX_START_ROCKSFONT;
}
else
{
- *pixmap_nr = PIX_MORE;
+ *pixmap_nr = PIX_SP;
*x = 0;
*y = 0;
}
*x = MINI_GFX_STARTX + (graphic % MINI_GFX_PER_LINE) * MINI_TILEX;
*y = MINI_GFX_STARTY + (graphic / MINI_GFX_PER_LINE) * MINI_TILEY;
}
- else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ else if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
{
- graphic -= GFX_START_ROCKSMORE;
- graphic -= ((graphic / MORE_PER_LINE) * MORE_PER_LINE) / 2;
- *pixmap = pix[PIX_MORE];
- *x = MINI_MORE_STARTX + (graphic % MINI_MORE_PER_LINE) * MINI_TILEX;
- *y = MINI_MORE_STARTY + (graphic / MINI_MORE_PER_LINE) * MINI_TILEY;
+ graphic -= GFX_START_ROCKSSP;
+ graphic -= ((graphic / SP_PER_LINE) * SP_PER_LINE) / 2;
+ *pixmap = pix[PIX_SP];
+ *x = MINI_SP_STARTX + (graphic % MINI_SP_PER_LINE) * MINI_TILEX;
+ *y = MINI_SP_STARTY + (graphic / MINI_SP_PER_LINE) * MINI_TILEY;
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
+ {
+ graphic -= GFX_START_ROCKSDC;
+ *pixmap = pix[PIX_DC];
+ *x = MINI_DC_STARTX + (graphic % MINI_DC_PER_LINE) * MINI_TILEX;
+ *y = MINI_DC_STARTY + (graphic / MINI_DC_PER_LINE) * MINI_TILEY;
}
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
}
else
{
- *pixmap = pix[PIX_MORE];
- *x = MINI_MORE_STARTX;
- *y = MINI_MORE_STARTY;
+ *pixmap = pix[PIX_SP];
+ *x = MINI_SP_STARTX;
+ *y = MINI_SP_STARTY;
}
}
graphic = el2gfx(element);
- if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
+ {
+ graphic -= GFX_START_ROCKSSP;
+ graphic -= ((graphic / SP_PER_LINE) * SP_PER_LINE) / 2;
+ XCopyArea(display, pix[PIX_SP], drawto, gc,
+ MICRO_SP_STARTX + (graphic % MICRO_SP_PER_LINE) *MICRO_TILEX,
+ MICRO_SP_STARTY + (graphic / MICRO_SP_PER_LINE) *MICRO_TILEY,
+ MICRO_TILEX, MICRO_TILEY, xpos, ypos);
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
{
- graphic -= GFX_START_ROCKSMORE;
- graphic -= ((graphic / MORE_PER_LINE) * MORE_PER_LINE) / 2;
- XCopyArea(display, pix[PIX_MORE], drawto, gc,
- MICRO_MORE_STARTX + (graphic % MICRO_MORE_PER_LINE) *MICRO_TILEX,
- MICRO_MORE_STARTY + (graphic / MICRO_MORE_PER_LINE) *MICRO_TILEY,
+ graphic -= GFX_START_ROCKSDC;
+ graphic -= ((graphic / DC_PER_LINE) * DC_PER_LINE) / 2;
+ XCopyArea(display, pix[PIX_DC], drawto, gc,
+ MICRO_DC_STARTX + (graphic % MICRO_DC_PER_LINE) *MICRO_TILEX,
+ MICRO_DC_STARTY + (graphic / MICRO_DC_PER_LINE) *MICRO_TILEY,
MICRO_TILEX, MICRO_TILEY, xpos, ypos);
}
else
case EL_KEY_WHITE: return GFX_KEY_WHITE;
case EL_FORCE_FIELD: return GFX_FORCE_FIELD;
case EL_EXTRA_TIME: return GFX_EXTRA_TIME;
- case EL_SWITCH_GATE_OPEN: return GFX_SWITCH_GATE_OPEN;
- case EL_SWITCH_GATE_CLOSED: return GFX_SWITCH_GATE_CLOSED;
- case EL_SWITCH_GATE_SWITCH: return GFX_SWITCH_GATE_SWITCH;
+ case EL_SWITCHGATE_OPEN: return GFX_SWITCHGATE_OPEN;
+ case EL_SWITCHGATE_CLOSED: return GFX_SWITCHGATE_CLOSED;
+ case EL_SWITCHGATE_SWITCH_L:return GFX_SWITCHGATE_SWITCH_L;
+ case EL_SWITCHGATE_SWITCH_R:return GFX_SWITCHGATE_SWITCH_R;
case EL_TIME_GATE: return GFX_TIME_GATE;
case EL_TIME_GATE_WHEEL: return GFX_TIME_GATE_WHEEL;
- case EL_BELT_GREEN_LEFT: return GFX_BELT_GREEN_LEFT;
- case EL_BELT_GREEN_MIDDLE: return GFX_BELT_GREEN_MIDDLE;
- case EL_BELT_GREEN_RIGHT: return GFX_BELT_GREEN_RIGHT;
- case EL_BELT_GREEN_SWITCH: return GFX_BELT_GREEN_SWITCH;
- case EL_BELT_RED_LEFT: return GFX_BELT_RED_LEFT;
- case EL_BELT_RED_MIDDLE: return GFX_BELT_RED_MIDDLE;
- case EL_BELT_RED_RIGHT: return GFX_BELT_RED_RIGHT;
- case EL_BELT_RED_SWITCH: return GFX_BELT_RED_SWITCH;
- case EL_BELT_BLUE_LEFT: return GFX_BELT_BLUE_LEFT;
- case EL_BELT_BLUE_MIDDLE: return GFX_BELT_BLUE_MIDDLE;
- case EL_BELT_BLUE_RIGHT: return GFX_BELT_BLUE_RIGHT;
- case EL_BELT_BLUE_SWITCH: return GFX_BELT_BLUE_SWITCH;
+ case EL_BELT1_LEFT: return GFX_BELT1_LEFT;
+ case EL_BELT1_MIDDLE: return GFX_BELT1_MIDDLE;
+ case EL_BELT1_RIGHT: return GFX_BELT1_RIGHT;
+ case EL_BELT1_SWITCH_L: return GFX_BELT1_SWITCH_L;
+ case EL_BELT1_SWITCH_M: return GFX_BELT1_SWITCH_M;
+ case EL_BELT1_SWITCH_R: return GFX_BELT1_SWITCH_R;
+ case EL_BELT2_LEFT: return GFX_BELT2_LEFT;
+ case EL_BELT2_MIDDLE: return GFX_BELT2_MIDDLE;
+ case EL_BELT2_RIGHT: return GFX_BELT2_RIGHT;
+ case EL_BELT2_SWITCH_L: return GFX_BELT2_SWITCH_L;
+ case EL_BELT2_SWITCH_M: return GFX_BELT2_SWITCH_M;
+ case EL_BELT2_SWITCH_R: return GFX_BELT2_SWITCH_R;
+ case EL_BELT3_LEFT: return GFX_BELT3_LEFT;
+ case EL_BELT3_MIDDLE: return GFX_BELT3_MIDDLE;
+ case EL_BELT3_RIGHT: return GFX_BELT3_RIGHT;
+ case EL_BELT3_SWITCH_L: return GFX_BELT3_SWITCH_L;
+ case EL_BELT3_SWITCH_M: return GFX_BELT3_SWITCH_M;
+ case EL_BELT3_SWITCH_R: return GFX_BELT3_SWITCH_R;
+ case EL_BELT4_LEFT: return GFX_BELT4_LEFT;
+ case EL_BELT4_MIDDLE: return GFX_BELT4_MIDDLE;
+ case EL_BELT4_RIGHT: return GFX_BELT4_RIGHT;
+ case EL_BELT4_SWITCH_L: return GFX_BELT4_SWITCH_L;
+ case EL_BELT4_SWITCH_M: return GFX_BELT4_SWITCH_M;
+ case EL_BELT4_SWITCH_R: return GFX_BELT4_SWITCH_R;
case EL_LANDMINE: return GFX_LANDMINE;
case EL_ENVELOPE: return GFX_ENVELOPE;
case EL_LIGHT_SWITCH: return GFX_LIGHT_SWITCH;
int nr_element = element - EL_SP_START;
int gfx_per_line = 8;
int nr_graphic =
- (nr_element / gfx_per_line) * MORE_PER_LINE +
+ (nr_element / gfx_per_line) * SP_PER_LINE +
(nr_element % gfx_per_line);
- return GFX_START_ROCKSMORE + nr_graphic;
+ return GFX_START_ROCKSSP + nr_graphic;
}
else
return -1;