#define EL_DYNABOMB_PLAYER2_ACTIVE (EL_FIRST_RUNTIME_REAL + 5)
#define EL_DYNABOMB_PLAYER3_ACTIVE (EL_FIRST_RUNTIME_REAL + 6)
#define EL_DYNABOMB_PLAYER4_ACTIVE (EL_FIRST_RUNTIME_REAL + 7)
-#define EL_SWITCHGATE_OPENING (EL_FIRST_RUNTIME_REAL + 8)
-#define EL_SWITCHGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 9)
-#define EL_TIMEGATE_OPENING (EL_FIRST_RUNTIME_REAL + 10)
-#define EL_TIMEGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 11)
-#define EL_PEARL_BREAKING (EL_FIRST_RUNTIME_REAL + 12)
-#define EL_TRAP_ACTIVE (EL_FIRST_RUNTIME_REAL + 13)
-#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 14)
-#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 15)
-#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 16)
-#define EL_CONVEYOR_BELT1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 17)
-#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 18)
-#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 19)
-#define EL_CONVEYOR_BELT2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 20)
-#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 21)
-#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
-#define EL_CONVEYOR_BELT3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 23)
-#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 24)
-#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 25)
-#define EL_CONVEYOR_BELT4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 26)
-#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 27)
-#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 28)
-#define EL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 29)
-#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 30)
-#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 31)
-#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 32)
-#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 33)
-#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 34)
-#define EL_AMOEBA_DRIPPING (EL_FIRST_RUNTIME_REAL + 35)
-#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 36)
-#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
-#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 38)
-#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 39)
-#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 40)
-#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 41)
-#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 42)
-#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 43)
-#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_SP_DISK_RED_ACTIVE (EL_FIRST_RUNTIME_REAL + 8)
+#define EL_SWITCHGATE_OPENING (EL_FIRST_RUNTIME_REAL + 9)
+#define EL_SWITCHGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 10)
+#define EL_TIMEGATE_OPENING (EL_FIRST_RUNTIME_REAL + 11)
+#define EL_TIMEGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 12)
+#define EL_PEARL_BREAKING (EL_FIRST_RUNTIME_REAL + 13)
+#define EL_TRAP_ACTIVE (EL_FIRST_RUNTIME_REAL + 14)
+#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 15)
+#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 16)
+#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 17)
+#define EL_CONVEYOR_BELT1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 18)
+#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 19)
+#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 20)
+#define EL_CONVEYOR_BELT2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 21)
+#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
+#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 23)
+#define EL_CONVEYOR_BELT3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 24)
+#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 25)
+#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 26)
+#define EL_CONVEYOR_BELT4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 27)
+#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 28)
+#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 29)
+#define EL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 30)
+#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 31)
+#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 32)
+#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 33)
+#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 34)
+#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 35)
+#define EL_AMOEBA_DRIPPING (EL_FIRST_RUNTIME_REAL + 36)
+#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 37)
+#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 38)
+#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 39)
+#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 40)
+#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 41)
+#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 42)
+#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 43)
+#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 45)
/* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 46)
#define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0)
#define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1)
#define NUM_ACTIONS 21
/* values for special image configuration suffixes */
-#define GFX_SPECIAL_ARG_EDITOR 0
-#define GFX_SPECIAL_ARG_PREVIEW 1
+#define GFX_SPECIAL_ARG_MAIN 0
+#define GFX_SPECIAL_ARG_LEVELS 1
+#define GFX_SPECIAL_ARG_SCORES 2
+#define GFX_SPECIAL_ARG_EDITOR 3
+#define GFX_SPECIAL_ARG_INFO 4
+#define GFX_SPECIAL_ARG_SETUP 5
+#define GFX_SPECIAL_ARG_DOOR 6
+#define GFX_SPECIAL_ARG_PREVIEW 7
-#define NUM_SPECIAL_GFX_ARGS 2
+#define NUM_SPECIAL_GFX_ARGS 8
/* values for image configuration suffixes */
#define GFX_ARG_XOFFSET 8
#define GFX_ARG_YOFFSET 9
#define GFX_ARG_FRAMES 10
-#define GFX_ARG_START_FRAME 11
-#define GFX_ARG_DELAY 12
-#define GFX_ARG_MODE_LOOP 13
-#define GFX_ARG_MODE_LINEAR 14
-#define GFX_ARG_MODE_PINGPONG 15
-#define GFX_ARG_MODE_PINGPONG2 16
-#define GFX_ARG_MODE_RANDOM 17
-#define GFX_ARG_MODE_REVERSE 18
-#define GFX_ARG_GLOBAL_SYNC 19
-#define GFX_ARG_STEP_OFFSET 20
-#define GFX_ARG_STEP_DELAY 21
-#define GFX_ARG_DIRECTION 22
-#define GFX_ARG_POSITION 23
-#define GFX_ARG_DRAW_XOFFSET 24
-#define GFX_ARG_DRAW_YOFFSET 25
-#define GFX_ARG_NAME 26
-
-#define NUM_GFX_ARGS 27
+#define GFX_ARG_FRAMES_PER_LINE 11
+#define GFX_ARG_START_FRAME 12
+#define GFX_ARG_DELAY 13
+#define GFX_ARG_ANIM_MODE 14
+#define GFX_ARG_GLOBAL_SYNC 15
+#define GFX_ARG_STEP_OFFSET 16
+#define GFX_ARG_STEP_DELAY 17
+#define GFX_ARG_DIRECTION 18
+#define GFX_ARG_POSITION 19
+#define GFX_ARG_DRAW_XOFFSET 20
+#define GFX_ARG_DRAW_YOFFSET 21
+#define GFX_ARG_FORMAT 22
+#define GFX_ARG_NAME 23
+
+#define NUM_GFX_ARGS 24
/* values for sound configuration suffixes */
#define FONT_INITIAL_2 1
#define FONT_INITIAL_3 2
#define FONT_INITIAL_4 3
-#define FONT_BIG_1 4
-#define FONT_BIG_2 5
-#define FONT_BIG_3 6
-#define FONT_BIG_4 7
-#define FONT_MEDIUM_1 8
-#define FONT_MEDIUM_2 9
-#define FONT_MEDIUM_3 10
-#define FONT_MEDIUM_4 11
-#define FONT_SMALL_1 12
-#define FONT_SMALL_2 13
-#define FONT_SMALL_3 14
-#define FONT_SMALL_4 15
-#define FONT_TAPE 16
-#define FONT_GAME 17
-#define FONT_NARROW 18
-
-#define NUM_FONTS 19
+#define FONT_TITLE_1 4
+#define FONT_TITLE_2 5
+#define FONT_MENU_1 6
+#define FONT_MENU_2 7
+#define FONT_TEXT_1 8
+#define FONT_TEXT_2 9
+#define FONT_TEXT_3 10
+#define FONT_TEXT_4 11
+#define FONT_INPUT 12
+#define FONT_INPUT_ACTIVE 13
+#define FONT_OPTION_OFF 14
+#define FONT_OPTION_ON 15
+#define FONT_VALUE_1 16
+#define FONT_VALUE_2 17
+#define FONT_VALUE_OLD 18
+#define FONT_TAPE_RECORDER 19
+#define FONT_LEVEL_NUMBER 20
+
+#define NUM_FONTS 21
#define NUM_INITIAL_FONTS 4
-#define FIRST_IMG_FONT IMG_FONT_INITIAL_1
-#define LAST_IMG_FONT IMG_FONT_NARROW
-
-#define NUM_IMG_FONTS (LAST_IMG_FONT - \
- FIRST_IMG_FONT + 1)
-
/* values for game_status */
#define EXITGAME 0
#define TYPENAME 6
#define HALLOFFAME 7
#define SETUP 8
+#define PSEUDO_PREVIEW 9
+#define PSEUDO_DOOR 10
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 2
int GfxAction;
boolean use_murphy_graphic;
+ boolean use_disk_red_graphic;
boolean Pushing;
boolean Switching;
struct ElementInfo
{
- char *token_name; /* element token prefix used in config files */
+ char *token_name; /* element token used in config files */
char *sound_class_name; /* classification for custom sound effects */
char *editor_description; /* short description for level editor */
char *custom_description; /* custom description for level editor */
int graphic[NUM_ACTIONS]; /* default graphics for several actions */
-
int direction_graphic[NUM_ACTIONS][NUM_DIRECTIONS];
/* special graphics for left/right/up/down */
-
int special_graphic[NUM_SPECIAL_GFX_ARGS];
/* special graphics for certain screens */
- int editor_graphic; /* graphic displayed in level editor */
- int preview_graphic; /* graphic displayed in level preview */
-
int sound[NUM_ACTIONS]; /* default sounds for several actions */
};
-#if 0
struct FontInfo
{
- int graphic; /* default graphic for this font */
+ char *token_name; /* font token used in config files */
+ int graphic; /* default graphic for this font */
int special_graphic[NUM_SPECIAL_GFX_ARGS];
/* special graphics for certain screens */
+ int special_bitmap_id[NUM_SPECIAL_GFX_ARGS];
+ /* internal bitmap ID for special graphics */
};
-#endif
struct GraphicInfo
{
extern struct ElementActionInfo element_action_info[];
extern struct ElementDirectionInfo element_direction_info[];
extern struct SpecialSuffixInfo special_suffix_info[];
+extern struct FontInfo font_info[];
extern struct GraphicInfo *graphic_info;
extern struct SoundInfo *sound_info;
extern struct ConfigInfo image_config[], sound_config[];