205 lines
8.7 KiB
OpenEdge ABL
205 lines
8.7 KiB
OpenEdge ABL
|
IFND GRAPHICS_GELS_I
|
||
|
GRAPHICS_GELS_I SET 1
|
||
|
**
|
||
|
** $Filename: graphics/gels.i $
|
||
|
** $Release: 1.3 $
|
||
|
**
|
||
|
** include file for AMIGA GELS (Graphics Elements)
|
||
|
**
|
||
|
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
|
||
|
** All Rights Reserved
|
||
|
**
|
||
|
|
||
|
*------ VS_vSflags ---------------------------------------------------
|
||
|
|
||
|
* ;-- user-set vSprite flags --
|
||
|
SUSERFLAGS EQU $00FF ; mask of all user-settable vSprite-flags
|
||
|
BITDEF VS,VSPRITE,0 ; set if vSprite, clear if bob
|
||
|
BITDEF VS,SAVEBACK,1 ; set if background is to be saved/restored
|
||
|
BITDEF VS,OVERLAY,2 ; set to mask image of bob onto background
|
||
|
BITDEF VS,MUSTDRAW,3 ; set if vSprite absolutely must be drawn
|
||
|
* ;-- system-set vSprite flags --
|
||
|
BITDEF VS,BACKSAVED,8 ; this bob's background has been saved
|
||
|
BITDEF VS,BOBUPDATE,9 ; temporary flag, useless to outside world
|
||
|
BITDEF VS,GELGONE,10 ; set if gel is completely clipped (offscreen)
|
||
|
BITDEF VS,VSOVERFLOW,11 ; vSprite overflow (if MUSTDRAW set we draw!)
|
||
|
|
||
|
|
||
|
*------ B_flags ------------------------------------------------------
|
||
|
* ;-- these are the user flag bits --
|
||
|
BUSERFLAGS EQU $00FF ; mask of all user-settable bob-flags
|
||
|
BITDEF B,SAVEBOB,0 ; set to not erase bob
|
||
|
BITDEF B,BOBISCOMP,1 ; set to identify bob as animComp
|
||
|
* ;-- these are the system flag bits --
|
||
|
BITDEF B,BWAITING,8 ; set while bob is waiting on 'after'
|
||
|
BITDEF B,BDRAWN,9 ; set when bob is drawn this DrawG pass
|
||
|
BITDEF B,BOBSAWAY,10 ; set to initiate removal of bob
|
||
|
BITDEF B,BOBNIX,11 ; set when bob is completely removed
|
||
|
BITDEF B,SAVEPRESERVE,12 ; for back-restore during double-buffer
|
||
|
BITDEF B,OUTSTEP,13 ; for double-clearing if double-buffer
|
||
|
|
||
|
|
||
|
*------ defines for the animation procedures -------------------------
|
||
|
|
||
|
ANFRACSIZE EQU 6
|
||
|
ANIMHALF EQU $0020
|
||
|
RINGTRIGGER EQU $0001
|
||
|
|
||
|
*------ macros --------------------------------------------------------
|
||
|
* these are GEL functions that are currently simple enough to exist as a
|
||
|
* definition. It should not be assumed that this will always be the case
|
||
|
|
||
|
InitAnimate MACRO * &animKey
|
||
|
CLR.L \1
|
||
|
ENDM
|
||
|
|
||
|
|
||
|
RemBob MACRO * &b
|
||
|
OR.W #BF_BOBSAWAY,b_BobFlags+\1
|
||
|
ENDM
|
||
|
|
||
|
*------ VS : vSprite -------------------------------------------------
|
||
|
STRUCTURE VS,0 ; vSprite
|
||
|
* -- SYSTEM VARIABLES --
|
||
|
* GEL linked list forward/backward pointers sorted by y,x value
|
||
|
APTR vs_NextVSprite ; struct *vSprite
|
||
|
APTR vs_PrevVSprite ; struct *vSprite
|
||
|
* GEL draw list constructed in the order the bobs are actually drawn, then
|
||
|
* list is copied to clear list
|
||
|
* must be here in vSprite for system boundary detection
|
||
|
APTR vs_DrawPath ; struct *vSprite: pointer of overlay drawing
|
||
|
APTR vs_ClearPath ; struct *vSprite: pointer for overlay clearing
|
||
|
* the vSprite positions are defined in (y,x) order to make sorting
|
||
|
* sorting easier, since (y,x) as a long integer
|
||
|
WORD vs_Oldy ; previous position
|
||
|
WORD vs_Oldx ;
|
||
|
* -- COMMON VARIABLES --
|
||
|
WORD vs_VSFlags ; vSprite flags
|
||
|
* -- USER VARIABLES --
|
||
|
* the vSprite positions are defined in (y,x) order to make sorting
|
||
|
* easier, since (y,x) as a long integer
|
||
|
WORD vs_Y ; screen position
|
||
|
WORD vs_X
|
||
|
WORD vs_Height
|
||
|
WORD vs_Width ; number of words per row of image data
|
||
|
WORD vs_Depth ; number of planes of data
|
||
|
WORD vs_MeMask ; which types can collide with this vSprite
|
||
|
WORD vs_HitMask ; which types this vSprite can collide with
|
||
|
APTR vs_ImageData ; *WORD pointer to vSprite image
|
||
|
* borderLine is the one-dimensional logical OR of all
|
||
|
* the vSprite bits, used for fast collision detection of edge
|
||
|
APTR vs_BorderLine ; *WORD: logical OR of all vSprite bits
|
||
|
APTR vs_CollMask ; *WORD: similar to above except this is a
|
||
|
* matrix pointer to this vSprite's color definitions (not used by bobs)
|
||
|
APTR vs_SprColors ; *WORD
|
||
|
APTR vs_VSBob ; struct *bob: points home if this vSprite is
|
||
|
; part of a bob
|
||
|
* planePick flag: set bit selects a plane from image, clear bit selects
|
||
|
* use of shadow mask for that plane
|
||
|
* OnOff flag: if using shadow mask to fill plane, this bit (corresponding
|
||
|
* to bit in planePick) describes whether to fill with 0's or 1's
|
||
|
* There are two uses for these flags:
|
||
|
* - if this is the vSprite of a bob, these flags describe how
|
||
|
* the bob is to be drawn into memory
|
||
|
* - if this is a simple vSprite and the user intends on setting
|
||
|
* the MUSTDRAW flag of the vSprite, these flags must be set
|
||
|
* too to describe which color registers the user wants for
|
||
|
* the image
|
||
|
BYTE vs_PlanePick
|
||
|
BYTE vs_PlaneOnOff
|
||
|
LABEL vs_SUserExt ; user definable
|
||
|
LABEL vs_SIZEOF
|
||
|
|
||
|
|
||
|
*------ BOB : bob ------------------------------------------------------
|
||
|
|
||
|
STRUCTURE BOB,0 ; bob: blitter object
|
||
|
* -- COMMON VARIABLES --
|
||
|
WORD bob_BobFlags ; general purpose flags (see definitions below)
|
||
|
* -- USER VARIABLES --
|
||
|
APTR bob_SaveBuffer ; *WORD pointer to the buffer for background
|
||
|
* save used by bobs for "cookie-cutting" and multi-plane masking
|
||
|
APTR bob_ImageShadow ; *WORD
|
||
|
* pointer to BOBs for sequenced drawing of bobs
|
||
|
* for correct overlaying of multiple component animations
|
||
|
APTR bob_Before ; struct *bob: draw this bob before bob pointed
|
||
|
; to by before
|
||
|
APTR bob_After ; struct *bob: draw this bob after bob pointed
|
||
|
; to by after
|
||
|
APTR bob_BobVSprite ; struct *vSprite: this bob's vSprite definition
|
||
|
APTR bob_BobComp ; struct *animComp: pointer to this bob's
|
||
|
; animComp def
|
||
|
APTR bob_DBuffer ; struct dBufPacket: pointer to this bob's
|
||
|
; dBuf packet
|
||
|
LABEL bob_BUserExt ; bob user extension
|
||
|
LABEL bob_SIZEOF
|
||
|
|
||
|
*------ AC : animComp ------------------------------------------------
|
||
|
|
||
|
STRUCTURE AC,0 ; animComp
|
||
|
* -- COMMON VARIABLES --
|
||
|
WORD ac_CompFlags ; animComp flags for system & user
|
||
|
* timer defines how long to keep this component active:
|
||
|
* if set non-zero, timer decrements to zero then switches to nextSeq
|
||
|
* if set to zero, animComp never switches
|
||
|
WORD ac_Timer
|
||
|
* -- USER VARIABLES --
|
||
|
* initial value for timer when the animComp is activated by the system
|
||
|
WORD ac_TimeSet
|
||
|
* pointer to next and previous components of animation object
|
||
|
APTR ac_NextComp ; struct *animComp
|
||
|
APTR ac_PrevComp ; struct *animComp
|
||
|
* pointer to component component definition of next image in sequence
|
||
|
APTR ac_NextSeq ; struct *animComp
|
||
|
APTR ac_PrevSeq ; struct *animComp
|
||
|
APTR ac_AnimCRoutine ; address of special animation procedure
|
||
|
WORD ac_YTrans ; initial y translation (if this is a component)
|
||
|
WORD ac_XTrans ; initial x translation (if this is a component)
|
||
|
APTR ac_HeadOb ; struct *animOb
|
||
|
APTR ac_AnimBob ; struct *bob
|
||
|
LABEL ac_SIZE
|
||
|
|
||
|
*------ AO : animOb --------------------------------------------------
|
||
|
|
||
|
STRUCTURE AO,0 ; animOb
|
||
|
* -- SYSTEM VARIABLES --
|
||
|
APTR ao_NextOb ; struct *animOb
|
||
|
APTR ao_PrevOb ; struct *animOb
|
||
|
* number of calls to Animate this animOb has endured
|
||
|
LONG ao_Clock
|
||
|
WORD ao_AnOldY ; old y,x coordinates
|
||
|
WORD ao_AnOldX ;
|
||
|
* -- COMMON VARIABLES --
|
||
|
WORD ao_AnY ; y,x coordinates of the animOb
|
||
|
WORD ao_AnX ;
|
||
|
* -- USER VARIABLES --
|
||
|
WORD ao_YVel ; velocities of this object
|
||
|
WORD ao_XVel ;
|
||
|
WORD ao_XAccel ; accelerations of this object
|
||
|
WORD ao_YAccel ; !!! backwards !!!
|
||
|
WORD ao_RingYTrans ; ring translation values
|
||
|
WORD ao_RingXTrans ;
|
||
|
APTR ao_AnimORoutine ; address of special animation procedure
|
||
|
APTR ao_HeadComp ; struct *animComp: pointer to first component
|
||
|
LABEL ao_AUserExt ; animOb user extension
|
||
|
LABEL ao_SIZEOF
|
||
|
|
||
|
|
||
|
*------ DBP : dBufPacket ---------------------------------------------
|
||
|
* dBufPacket defines the values needed to be saved across buffer to buffer
|
||
|
* when in double-buffer mode
|
||
|
|
||
|
STRUCTURE DBP,0 ; dBufPacket
|
||
|
WORD dbp_BufY ; save the other buffers screen coordinates
|
||
|
WORD dbp_BufX ;
|
||
|
APTR dbp_BufPath ; struct *vSprite: carry the draw path over
|
||
|
; the gap
|
||
|
* these pointers must be filled in by the user
|
||
|
* pointer to other buffer's background save buffer
|
||
|
APTR dbp_BufBuffer ; *WORD
|
||
|
* pointer to other buffer's background plane pointers
|
||
|
APTR dbp_BufPlanes ; **WORD
|
||
|
LABEL dbp_SIZEOF
|
||
|
|
||
|
ENDC ; GRAPHICS_GELS_I
|