uint
    SUSERFLAGS	= 0x00FF,
    VSPRITE	= 0x0001,
    SAVEBACK	= 0x0002,
    OVERLAY	= 0x0004,
    MUSTDRAW	= 0x0008,
    BACKSAVED	= 0x0100,
    BOBUPDATE	= 0x0200,
    GELGONE	= 0x0400,
    VSOVERFLOW	= 0x0800,

    BUSERFLAGS	= 0x00FF,
    SAVEBOB	= 0x0001,
    BOBISCOMP	= 0x0002,
    BWAITING	= 0x0100,
    BDRAWN	= 0x0200,
    BOBSAWAY	= 0x0400,
    BOBNIX	= 0x0800,
    SAVEPRESERVE= 0x1000,
    OUTSTEP	= 0x2000,

    ANFRACSIZE	= 6,
    ANIMHALF	= 0x0020,
    RINGTRIGGER = 0x0001;

type
    VSprite_t = struct {
	*VSprite_t vs_NextVSprite;
	*VSprite_t vs_PrevVSprite;
	*VSprite_t vs_DrawPath;
	*VSprite_t vs_ClearPath;
	uint vs_OldY, vs_OldX;
	uint vs_Flags;
	uint vs_Y, vs_X;
	uint vs_Height, vs_Width, vs_Depth;
	uint vs_MeMask, vs_HitMask;
	*uint vs_ImageData;
	*uint vs_BorderLine, vs_CollMask;
	*uint vs_SprColors;
	*Bob_t vs_VSBob;
	ushort vs_PlanePick, vs_PlaneOnOff;
    },

    Bob_t = struct {
	uint b_Flags;
	*uint b_SaveBuffer, b_ImageShadow;
	*Bob_t b_Before, b_After;
	*VSprite_t b_BobVSprite;
	*AnimComp_t b_BobComp;
	*DBufPacket b_DBuffer;
    },

    AnimComp_t = struct {
	uint ac_Flags;
	uint ac_Timer, ac_TimeSet;
	*AnimComp_t ac_NextComp, ac_PrevComp;
	*AnimComp_t ac_NextSeq, ac_PrevSeq;
	proc()void ac_AnimCRoutine;
	uint ac_XTrans, ac_YTrans;
	*AnimOb_t ac_HeadOb;
	*Bob_t ac_AnimBob;
    },

    AnimOb_t = struct {
	*AnimOb_t ao_NextOb, ao_PrevOb;
	ulong ao_Clock;
	uint ao_AnOldY, ao_AnOldX;
	uint ao_AnY, ao_AnX;
	uint ao_YVel, ao_XVel;
	uint ao_YAccel, ao_XAccel;
	uint ao_RingYTrans, ao_RingXTrans;
	proc()void ao_AnimORoutine;
	*AnimComp_t ao_HeadComp;
    },

    DBufBPacket_t = struct {
	uint db_BufY, db_BufX;
	*VSprite_t db_BufPath;
	*uint db_BufBuffer;
    };

extern
    AddAnimOb(*AnimOb_t anOb; **AnimOb_t anKey; *RastPort_t rp)void,
    AddBob(*Bob_t b; *RastPort_t rp)void,
    AddVSprite(*VSprite_t vs; *RastPort_t rp)void,
    Animate(**AnimOb_t anKey; *RastPort_t rp)void,
    DrawGList(*RastPort_t rp; *ViewPort_t vp)void,
    FreeGBuffers(*AnimOb_t anOb; *RastPort_t rp; ulong db)void,
    GetGBuffers(*AnimOb_t anOb; *RastPort_t rp; ulong db)bool,
    InitAnimate(**AnimOb_t ao)void,
    InitGels(*VSprite_t head, tail; *GelsInfo_t GInfo)void,
    InitGMasks(*AnimOb_t anOb)void,
    InitMasks(*VSprite_t vs)void,
    RemBob(*Bob_t b; *RastPort_t rp)void,
    RemIBob(*Bob_t b; *RastPort_t rp; *ViewPort_t vp)void,
    RemVSprite(*VSprite_t vs)void,
    SetCollision(ulong num; proc()void routine; *GelsInfo_t GInfo)void,
    SortGList(*RastPort_t rp)void;
