+ int nr;
+ int mode_nr;
+
+ struct GraphicInfo control_info;
+
+ int num_parts;
+ int part_counter;
+ int active_part_nr;
+
+ boolean has_base;
+
+ int init_delay_counter;
+
+ int state;
+
+ int last_state, last_active_part_nr;
+};
+
+struct GlobalAnimControlInfo
+{
+ struct GlobalAnimMainControlInfo anim[NUM_GLOBAL_ANIMS_AND_TOONS];
+
+ int nr;
+ int num_anims;
+};
+
+struct GameModeAnimClass
+{
+ int game_mode;
+ int class;
+} game_mode_anim_classes_list[] =
+{
+ { GAME_MODE_TITLE_INITIAL_1, ANIM_CLASS_TITLE_INITIAL },
+ { GAME_MODE_TITLE_INITIAL_2, ANIM_CLASS_TITLE_INITIAL },
+ { GAME_MODE_TITLE_INITIAL_3, ANIM_CLASS_TITLE_INITIAL },
+ { GAME_MODE_TITLE_INITIAL_4, ANIM_CLASS_TITLE_INITIAL },
+ { GAME_MODE_TITLE_INITIAL_5, ANIM_CLASS_TITLE_INITIAL },
+ { GAME_MODE_TITLE_1, ANIM_CLASS_TITLE },
+ { GAME_MODE_TITLE_2, ANIM_CLASS_TITLE },
+ { GAME_MODE_TITLE_3, ANIM_CLASS_TITLE },
+ { GAME_MODE_TITLE_4, ANIM_CLASS_TITLE },
+ { GAME_MODE_TITLE_5, ANIM_CLASS_TITLE },
+ { GAME_MODE_LEVELS, ANIM_CLASS_TOONS_MENU_SUBMENU },
+ { GAME_MODE_LEVELNR, ANIM_CLASS_TOONS_MENU_SUBMENU },
+ { GAME_MODE_INFO, ANIM_CLASS_TOONS_MENU_SUBMENU },
+ { GAME_MODE_SETUP, ANIM_CLASS_TOONS_MENU_SUBMENU },
+ { GAME_MODE_PSEUDO_MAINONLY, ANIM_CLASS_TOONS_MENU_MAIN },
+ { GAME_MODE_PSEUDO_TYPENAME, ANIM_CLASS_TOONS_MENU_MAIN },
+ { GAME_MODE_SCORES, ANIM_CLASS_TOONS },
+
+ { -1, -1 }
+};
+
+struct AnimClassGameMode
+{
+ int class_bit;
+ int game_mode;
+} anim_class_game_modes_list[] =
+{
+ { ANIM_CLASS_BIT_TITLE_INITIAL, GAME_MODE_TITLE_INITIAL },
+ { ANIM_CLASS_BIT_TITLE, GAME_MODE_TITLE },
+ { ANIM_CLASS_BIT_MAIN, GAME_MODE_MAIN },
+ { ANIM_CLASS_BIT_SUBMENU, GAME_MODE_PSEUDO_SUBMENU },
+ { ANIM_CLASS_BIT_MENU, GAME_MODE_PSEUDO_MENU },
+ { ANIM_CLASS_BIT_TOONS, GAME_MODE_PSEUDO_TOONS },
+
+ { -1, -1 }
+};
+
+/* forward declaration for internal use */
+static void HandleGlobalAnim(int, int);
+static void DoAnimationExt(void);
+
+static struct GlobalAnimControlInfo global_anim_ctrl[NUM_GAME_MODES];
+static struct ToonInfo toons[MAX_NUM_TOONS];
+
+static unsigned int anim_sync_frame = 0;
+static unsigned int anim_sync_frame_delay = 0;
+static unsigned int anim_sync_frame_delay_value = GAME_FRAME_DELAY;
+
+static int game_mode_anim_classes[NUM_GAME_MODES];
+static int anim_class_game_modes[NUM_ANIM_CLASSES];
+
+static int anim_status_last = GAME_MODE_DEFAULT;
+static int anim_classes_last = ANIM_CLASS_NONE;
+
+
+static int getGlobalAnimationPart(struct GlobalAnimMainControlInfo *anim)