revolution-x/GXDISP.H

482 lines
16 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

**************************************************************************
* *
* GENERATION X - DISPLAY EQUATE FILE *
* *
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
BOGUS_SCL .set [800h,800h] ; bogus scale to fool SCALE_MAMA
WIDESCREEN .EQU 0 ;SET SCREEN 512 PIX INSTEAD OF 400
MAX_UNI .set 5 ; maximum number of universes which can be stacked
; LINKED LIST LAYOUT
MAP_IMG .EQU 0 ; low order bits determine whether
; this is img (0x0), seq (0x1), damage (1xx)
; or delayed seq (x1x), use MAP_SPAREL1 (1xxx)
MAP_X .EQU 20h ; Universe position
MAP_Y .EQU 40h
MAP_Z .EQU 60h
MAP_FLAGS .EQU 80h ; see below
MAP_ID .equ 90h
MAP_OBJ .EQU 0a0h ; if hi bit set, obj not created (lo 4 bits = damage count)
MAP_PREV .EQU 0c0h ; for list sorted in Z
MAP_NEXT .EQU 0e0h ; for list sorted in Z
MAP_SPAREL1 .equ 100h
BLOCK_SIZE .EQU 120h ;RAM BLOCK SIZE
B_IF_LAST .SET 3
B_IF_DAM .set 2
B_IF_DANIM .set 1
B_IF_SEQ .set 0
M_IF_LAST .SET 8
M_IF_DAM .set 4
M_IF_DANIM .set 2
M_IF_SEQ .set 1
**** MAP_FLAGS LAYOUT
*
* 15 14 13 12 11 10-6 5 4 3 2 1 0
* ENEMY/NOVEC/PORTAL/NOPXSCN/ONEUSE/OIDTYP/FLIPH/FLIPV/GRND/BLK/DBLSCL/NOSCALE
*
****
; NOTE: NOPXSCN, DBLSCL and NOSCALE are transferred directly to OFLAGS
;DON'T CHANGE "B_BF_ENEMY" OKAY! -dozer
B_BF_ENEMY EQU 15
B_BF_NOVECT EQU 14
B_BF_PORTAL EQU 13
B_BF_ONEUSE EQU 11
B_BF_ID EQU 6 ; local ID for univ piece
B_BF_GROUND EQU 3
B_BF_BLOCK EQU 2
M_BF_ENEMY EQU 08000H
M_BF_NOVECT EQU 04000H
M_BF_PORTAL EQU 02000H
M_BF_NOPXSCN EQU 01000H
M_BF_ONEUSE EQU 0800H
M_BF_ID EQU 007C0H ; local ID for univ piece
M_BF_GROUND EQU 00008H
M_BF_BLOCK EQU 00004H
PU_ZPORTAL .set 0
PU_BGHEAD .set 20h
PU_YBASE .set 40h
PU_XBASE .set 60h
PU_YWORLD .set 80h
PU_ZBASE .set 0a0h
PU_YHALF .set 0c0h
PU_ZFAR .set 0e0h
PU_SKYCOL .set 100h
PU_GNDCOL .set 110h
PU_XPORTAL .set 120h
PU_YPORTAL .set 140h
PU_XSACCEL .set 160h
PU_YSACCEL .set 180h
PU_ZSACCEL .set 1a0h
PU_XSCROLL .set 1c0h
PU_YSCROLL .set 1e0h
PU_ZSCROLL .set 200h
PU_YOFF .set 220h
PU_ZOFF .set 240h
UNIV_STK_SIZ .set 260h
*********************************************
* MultiMake Option Flags *
*********************************************
OM_GUNV .set 1 ; A Gunvector follows (OBJECT)
OM_COLL .set 2 ; A Collision vector follows (OBJECT, WHOLE)
OM_ANIM .set 4 ; An animation script follows (OBJECT)
OM_CFUNC .set 8 ; A creation function follows (OBJECT)
OM_POS .set 10h ; A position is supplied (WHOLE)
OM_WPOS .set 30h ; it's a world position (WHOLE)
OM_SPOS .set 50h ; it's a screen position (WHOLE)
OM_GRND .set 80h ; the world position is relative to ground.
OM_OID .set 100h ; An OID follows (OBJECT)
OM_DUMCOLL .set 200h ; Use DUMCOLL as default (instead of 0)
OM_PRVANIM .set 400h ; Use the previously set Animation Script
OM_INSERT .set 800h ; call INSERT_OBJ upon completion
OM_OPARTS .set 1000h ; Supply an OPARTSX and Y for this object.
OM_PRVGUNV .set 2000h ; Use the previously set Gun Vector.
*
* ROADFLG defines !!! ADDED 8/24/92
*
RD_INCURV .set 40h
RD_INHILL .set 80h
RD_INFORK .set 20h
RD_INGRSH .set 10h
RD_FRK_LFT .set 2 ; left exit ramp
RD_FRK_RT .set 1 ; right exit ramp
RD_FRK_BOTH .set 3 ; fork both left and right
RD_B_FRKLFT .set 1
RD_B_FRKRT .set 0
RD_B_INCURV .set 6
RD_B_INHILL .set 7
RD_B_INFORK .set 5
RD_B_INGRSH .set 4
SCRTOP EQU 0 ;set to line after static top area
SCRBOT EQU 253
SCRLFT EQU 0
.IF WIDESCREEN
SCRRGT EQU 511
.ELSE
SCRRGT EQU 399
.ENDIF
SCALE_1TO1 .EQU 01000100H ;1 TO 1 SCALE FOR DMA.
CIRC_MASK .set 100bff0h ; for ROADX and ROADY
ROADOFFX .set 1000000h ; 1K circular word buffer
ROADOFFY .set 1008000h ; 1K circular word buffer
DEFAULT_WXBUFFER .EQU 56*08000H ;DEFAULT WORLD X BUFFER FOR UNIVERSE CHECK
DEFAULT_WYBUFFER .EQU 56*08000H ;DEFAULT WORLD Y BUFFER FOR UNIVERSE CHECK
.IF WIDESCREEN
HALFX .EQU 255 ;3-D TRANSLATION X-OFFSET
.ELSE
HALFX .EQU 199 ;3-D TRANSLATION X-OFFSET
.ENDIF
ZMAX .EQU 05800H ;Z of bottom line of road
ZMAX_REAL .EQU 03200H ;Closest Z allowed
ZMAX_REAL2 .EQU 04000H ;Closest Z allowed FOR DOUBLE SCALE OBJECTS
ZMAX_KLUDGE .EQU ZMAX_REAL-0800H ;ACTUAL CLOSEST Z ALLOWED
Z2INDX .equ 9 ; bits to shift to turn ZPOS into table index
Z2SCALE .equ 7 ; bits to shift to turn ZPOS into scale
ZFRAC .equ 6 ; bits to shift to get from Hires Z to norm Z
LEFT_WORLDX EQU (SCRLFT-HALFX)*ZMAX_REAL ;SCREEN X=0 @ Z=ZMAX_REAL
RGHT_WORLDX EQU -LEFT_WORLDX
SLL_SHADOW .EQU 2 ;Additional Y shrink for shadows
SIZYMINTBL .set 200h ; for hills
*VARS
.GLOBL FGLIST, BGLISTS, OFREE, ENDOFREE, ANIOBJS, ANIFUNCS
.GLOBL BGPLANECT, OFREECNT, OBJSTR
.GLOBL SCRNTL, SCRNBR
.GLOBL DMAQCUR, DMAQ, QDMAFLG
.GLOBL DISPLAYON, DMAIQSTR
.GLOBAL SUPPLSTS, SUPPLSTSX
*FUNCS ******* UPDATE DISP.DOC WITH NEW FUNCTIONS !!!!!! ********************
.GLOBL DMAINT, DISPNEXT_FG, CLRDMAQ
.GLOBL ANIMP, ANI, ANINP
.GLOBL GET_SCALED_SIZE
.GLOBL SETANIOF0, SETANIOF, SETOPARTSXY, SET_OPARTSXY, MATCHOPARTSXY
.GLOBL DISPLAY, QDMA, QDMAN, QDMA2, QDMAN2, YZSORT
.GLOBL FINDOID
.GLOBL OINIT, CkOFREE, IsAnObj, GETOBJ
.GLOBL INSBOBJ, REINSBOBJ
.GLOBL INSERT_OBJ, INSOBJ, INSERT_ON_OBJ, PULL_OBJ, PULLOBJ
.GLOBL DELETE_OBJ, ZAP_OBJ
.GLOBL DELOBJ, FREEOBJ, FREEGOBJ, ZAPOBJ
.GLOBL DELSHAD, PULLSHAD, GET_SHAD
.GLOBL FPSTFOBJ0, STFOBJ0, MULTIMAKE, CREATE_OBJ
.GLOBL C_GETPRC, C_ANIM, C_STRTANIM
.GLOBL CNTRANIP, GETANIXY, GETANIXYL
.GLOBL GETANIXL, GETANIX, GETANIYL, GETANIY
.GLOBL GETANIP, GET_ANIP, SETANIP, SET_ANIP, MATCHANIP
.GLOBL GETOFFP, GET_OFFP, SETOFFP, SET_OFFP, MATCHOFFP
.GLOBL SET_ANIXP, SET_ANIYP, SetOnGrnd
.GLOBL SETOBJS, SET_OBJS, SET_FLPS, TOGGLE_FLPS, SET_FLIP, TOGGLE_FLIP
.GLOBL INITPART, CNTMPART, INSPART, CkMPART1, CkMPART
.GLOBL PULL_PART, PULLPART, PULL_PART1, FINDPART, EXIST_PART
.GLOBL GANIOF, GARBOF, SetArbP
.GLOBL STFANIM, STRTANIM, STRT_ANIM, INSANIM, CKINSANI
.GLOBL PULL_ANIM, PULLANIM, CkAnim, OnAnim, CKPULLANIM
.GLOBL GETSUPP, GET_SUPP, INSSUPP, INSERT_SUPP, PULLSUPP, PULL_SUPP
.GLOBL CNTSUPP
.GLOBL OBJ_OFF, OBJ_ON, IS_OBJ_OFF, SCREXP32, COPY_OBJ, OBJON, OBJ_CONST
.GLOBAL CLEAR_OPLINKS, STOPOBJS, OBJ_TO_PNT
.GLOBAL STORE_ZVAL, STORE_ZVALH, KILOBJ, KILOBJ_ALL, SCRTST
.GLOBAL EXISTOBJ, OBJTOPNT, STOPOBJS, CLR_VEL, STOPOBJ, CLRVEL, EXISTOBJ_ALL
.GLOBAL GET_ANIP_SCRNREL, GET_SCRNREL, MAKE_SCRNREL
.GLOBAL MAKE_WORLDREL, MAKEWORLDREL, PNT_WORLDREL, GETANIP_SCRNREL
.GLOBAL A_GOTO, GETAFARG_WORD, GETAFARG_LONG
.GLOBAL CLR_ODATA, SET_ONGRND, DIST_FROM_GROUND, CREATE_COPY
.GLOBAL PULL_ANIM_ALL, PULL_ANIM_MULTI
.GLOBAL A_AnimScr, A_AnimFrm, A_AnimGo
.GLOBAL CLRODATA, GET_HEAD_PART, ADD_OFF2ANIP
.GLOBAL A_CHANGE_OID, CHANGE_OID, CHANGE_OIDS
.GLOBAL A_CLR_GUNVECT, GET_HEAD_PART_A0, OBJOFF, CHANGEOID
.GLOBAL STOREZVAL, COUNT_HEADS, FIND_HEAD
.GLOBAL OBJ_OFF_MULTI, OBJ_ON_MULTI
.GLOBAL OBJECTS_ON, OBJECTS_OFF
.GLOBAL SET_OPLANE, STOREOPLANE, STORE_OPLANE, INSPLANE
.GLOBAL GET_BPLANE, SETPLANE_BB, OBJWNZ, OBJ_WNZ, OBJ_ON_WNZ
.GLOBAL DELETE_SHADOW, CLEAR_ANIMS, CREATE_MULTI_COPY, EXIST_OBJ
.GLOBAL RESUME_EXIST_OBJ
***CONSTANTS
MAXPLANES EQU 15
*EQUATES FOR SCORE AREA
SKYTOPOF .EQU 32
SCORDPYS .EQU 0FFFFFEDCH ;DPYSTRT VALUE FOR HIDING THE SCORE
SCORE_HEIGHT .EQU SKYTOPOF ;HEIGHT OF SCORE AREA
SCRNST .EQU [SCRTOP+SCORE_HEIGHT,SCRLFT] ;TOP LEFT W/SCORE AREA
SCRNST_FULL .EQU [SCRTOP,SCRLFT] ;TOP LEFT WITH NO SCORE AREA
SCRNEND .EQU [SCRBOT,SCRRGT] ;BOT RIGHT OF SCREEN (for SCRNBR, clipper)
SCRWIDTH .EQU SCRRGT-SCRLFT+1
SCRHGHT .EQU SCRBOT-SCRTOP+1
SCRNMID .EQU [(SCRBOT+SCRTOP+1)/2,(SCRRGT+SCRLFT+1)/2] ;MIDPOINT OF SCREEN
SCRNXMID .EQU (SCRRGT+SCRLFT+1)/2
SCRNYMID .EQU (SCRBOT+SCRTOP+1)/2
*
*NEW OBJECT BLOCK INITIALIZATION TABLE
NEWIIMG .EQU 0
NEWICVEC .EQU 20H
NEWIOID .EQU 40H
NEWIFLAG .EQU 50H
NEWIFLAG2 .EQU 60H
NEWICFUNC .EQU 70H
SHADID .EQU 00FFFH ;SHADOWS ARE HIGH PRI
;* PLANE TABLE STRUCT
*STRUCT PLANE
P_LSTHD EQU 0 ;UHL ptr to head of OBJECT LIST
P_LSTTL EQU 020H ;UHL ptr to tail of OBJECT LIST
P_XPOS EQU 040H ;UHL World Top Left X of OBJECT LIST
P_YPOS EQU 060H ;UHL World Top Left Y
P_XYOFF EQU 080H ;UHL Y:X integer temporary offset for shaking
P_XRATE EQU 0A0H ;UHL SCROLLX multiplier for plane
P_FLAGS EQU 0C0H ;UHW Flag bits for plane
*ENDSTRUCT
PLNSIZ EQU 0D0H ;size of PLANE STRUCTURE
P_M_NOSHAKE EQU 1 ;NO SHAKE THIS PLANE..
P_B_NOSHAKE EQU 0
;**** LSTHD, LSTTL offsets above must match OLINK, OBLINK offset of OBJ ****
;*OBJECT BLOCK LAYOUT
*STRUCT OBJ
OLINK EQU 00H ;UHL Link to next object block
OBLINK EQU 020H ;UHL Back Link to previous obj
OSLINK EQU 040H ;UHL Supplemental lists (OID class)
OSHAD EQU 060H ;UHL ptr to shadow
OPLINK EQU 080H ;UHL Link to controlling process
OCVECT EQU 0A0H ;UHL vector to collision table
OGUNVECT EQU 0C0H ;UHL vector to gun collision handler
OPART1 EQU 0E0H ;UHL ptr to head of multi-part obj
OPARTS EQU 0100H ;UHL linked list of multi-parts
OZVEL EQU 0120H ;SHL Z VELOCITY
OXVEL EQU 0140H ;SHL X VELOCITY
OYVEL EQU 0160H ;SHL Y VELOCITY
OXVAL EQU 0180H ;SHL BIT X POSITION
OXFRAC EQU 0180H ; Fractional portion of X position
OXPOS EQU 0190H ; Integer portion of X position
OYVAL EQU 01A0H ;SHL BIT Y POSITION
OYFRAC EQU 01A0H ; Fractional portion of Y position
OYPOS EQU 01B0H ; Integer portion of Y position
OZVAL EQU 01C0H ;SHL Z POSITION
OZFRAC EQU 01C0H ; Fractional portion of Z position
OZPOS EQU 01D0H ; INTEGER Z position of object
OPARTSXY EQU 01E0H ;UHL multi part position offset
; ----> OANIOFF IS SCALED
OANIOFF EQU 0200H ;UHL ADJUSTED ANIMATION OFFSET
OANIOFFX EQU 0200H ; X ANIMATION OFFSET FROM TOP LEFT ADJUSTED FOR FLIP
OANIOFFY EQU 0210H ; Y ANIMATION OFFSET FROM TOP LEFT ADJUSTED FOR FLIP
; From OFSET to OSCALE, DO NOT CHANGE ORDER!
; (used for mass register input to clip loop)
OFSET EQU 0220H ;UHW PRECOMPUTED OFFSET
OCTRL EQU 0230h ;UHW DMA #2 CONTROL WORD
OSAG EQU 0240H ;UHL SOURCE ADDRESS (UNCLIPPED, ADJUSTED FOR FLIPS)
ODAG EQU 0260h ;UHL Screen Pos (saved as intermediate step in DISPLAY! NEW)
ODAGX EQU 0260H
ODAGY EQU 0270H
OUSIZE EQU 0280h ;UHL DMA #2 UNSCALED SIZE
OUSIZEX EQU 0280h ; X-SIZE
OUSIZEY EQU 0290h ; Y-SIZE
; ----> OSIZE IS SCALED
OSIZE EQU 02a0H ;UHL H,W OF OBJECT (16,16) W=ADJUSTED FOR MORSEL
OSIZEX EQU 02a0H ; X SIZE
OSIZEY EQU 02b0H ; Y SIZE
OPAL EQU 02c0H ;UHW B(0-15) PALETTE; B(16-31) CONSTANT COLOR
OCONST EQU 02d0H ; CONSTANT COLOR
OSCALE EQU 02e0h ;UHL DMA #2 SCALE
OSCALEX EQU 02e0h ; X-SCALE
OSCALEY EQU 02f0h ; Y-SCALE
OIMG EQU 0300H ;UHL Pointer to image data table
ONuManScl EQU 0320H ;UHW New scale for manually scaled imgs
;OTIME EQU 0320H ;UHW TIME of creation
OYACCEL EQU 0330H ;UHW just the fraction for Grav
OGRNDOFF EQU 0340H ;SHL WORLD Y OFFSET
OZDEPTH EQU 0360H ;UHL OBJECT'S Z DEPTH [FRONT DEPTH, REAR DEPTH]
OZREAR EQU 0360H ;UHW REAR Z DEPTH
OZFRNT EQU 0370H ;UHW FRONT Z DEPTH
OVAR1 EQU 0380H ;UHL # OVARS scratch space for system routines
OVAR2 EQU 03a0H ;UHL #
OVAR3 EQU 03c0H ;UHL #used by
OVAR4 EQU 03e0H ;UHL # ANIM
OVAR5 EQU 0400H ;UHL @used by
OVAR6 EQU 0420H ;UHL @ FlashWyt
OVAR7 EQU 0440H ;UHL 2nd byte used for MULTI-PART Z alignment (OZOFF)
OVAR8 EQU 0460H ;UHL used as AnimArg
OVAR9 EQU 0480H ;UHL #USED FOR PLAYER DATA AREA PTR (OPLAYER)
OFLAGS EQU 04a0H ;UHW General purpose flags
OID EQU 04b0H ;UHW Object ID
OUANIOFF EQU 04c0h ;UHL UNSCALED ANIMATION OFFSET
OUANIOFFX EQU 04c0h ; X ANIMATION OFFSET FROM TOP LEFT ADJUSTED FOR FLIP
OUANIOFFY EQU 04d0h ; Y ANIMATION OFFSET FROM TOP LEFT ADJUSTED FOR FLIP
OIHOFF EQU 04e0h ;UHW OFFSET TO IMAGE HEADER
ONOT_SORTED EQU 04f0h ;UHW If <> 0, then object is out of order
ODATA EQU 0500h ; SCRATCH SPACE FOR USER ROUTINES
ODATAX EQU 0700H ; = 0500H + 0200H
*ENDSTRUCT
OBSIZ EQU ODATAX ;Object Block Size
OCLRSIZ EQU ODATA ;GETOBJ WILL CLEAR UPTO AND NOT INCLUDING HERE
NOBJ EQU 600
***** MISCELLANEOUS OFFSETS
;**** OFFSETS for ANIM
*STRUCT ANIM+OBJ
AnimNxt EQU OVAR1 ;UHL link to next obj of Animy linked list
AnimFrm EQU OVAR2 ;UHL ptr to current animation frame
AnimScr EQU OVAR3 ;UHL ptr to animation script
AnimSLP EQU OVAR4 ;UDB reset value for AnimSlp
AnimSlp EQU OVAR4+8 ;UDB # tiks before next ANI
AnimLoop EQU OVAR4+16 ;UDB General purpose Loop counter
AnimOpen EQU OVAR4+24 ;UDB reserved for future definition (keep cleared)
*ENDSTRUCT
AnimRetScr EQU OVAR5 ;UHL ANIMATION RETURN SCRIPT
AnimRetFrm EQU OVAR6 ;UHL ANIMATION RETURN FRAME
OPARTID EQU OVAR7 ;UHB # of part in multi-parter, stuffed by MULTIMAKE
OZOFF EQU OVAR7+8 ;UHB Z OFFSET
AnimArg EQU OVAR8 ;stuffed by AnimP for use by GETAFARG_xxxx
OPLAYER EQU OVAR9
;*** ANIFLY SCRIPT FLAGS ***
AFlip EQU 08000H ;flip bits in aniscript flag
Axxxxxx EQU 04000H ;unused
AMulti EQU 02000H ;animate down multi-parter list?
AFunc EQU 01000H ;call function in aniscript flag
;*** BITS SET IN FLAGS:SLEEP WORD OF AN ANIM SCRIPT ***
B_AFlip EQU 15 ;WARNING don't move, tested w/ jrnn in AnimP (gxc)
B_xxxxxx EQU 14
B_AMulti EQU 13
B_AFunc EQU 12
BQCELL EQU 0B0H ;SIZE OF DMA QUEUE ELEMENT
***********************
* Values for OCTRL *
***********************
M_WRZERO EQU 00001H ;Write Zero Data
M_WRNONZ EQU 00002H ;Write Non-Zero Data
M_CONZER EQU 00004H ;Replace Zero Data with constant
M_CONNON EQU 00008H ;Replace Non-Zero Data with constant
M_CONST EQU 0000CH ;any constant data replacement
M_FLIPH EQU 00010H ;Flip Horizontally
M_FLIPV EQU 00020H ;Flip Vertically
M_LRCLIP EQU 00040H ;left right clipping using the offset register
M_COMPRESS EQU 00080H ;zero compression
M_INUSE EQU 08000H ;obj not on free list
*BIT POSITIONS FOR OCTRL
B_WRZERO EQU 0
B_WRNONZ EQU 1
B_CONZER EQU 2
B_CONNON EQU 3
B_FLIPH EQU 4
B_FLIPV EQU 5
B_LRCLIP EQU 6
B_COMPRESS EQU 7
B_INUSE EQU 15
***********************
* Values for OFLAGS *
***********************
M_NOSCALE EQU 00001H ;NO AUTO SCALING (or controls RESCALING if MANSCALE)
M_DBLSCL EQU 00002H ;DOUBLE scale for sizes defined at half size
M_BNODEL EQU 00004H ;do not pull BGND from list
M_NODISP EQU 00008H ;DO NOT DISPLAY THIS OBJECT!
M_NOSHADOW EQU 00010H ;Shadows not allowed for this object.
M_MANSCALE EQU 00020H ;MANUAL SCALING (You set scale, sizes computed when M_NOSCALE clr)
M_NOPARTANI EQU 00040H ;IF IN MULTI-SCRIPT, THEN DON'T ANIMATE
;DON'T EVEN THINK ABOUT CHANGIN' M_OFSCRN OR ELSE - dozer
M_OFSCRN EQU 00080H ;if 1, VELADD has marked as OFF SCREEN
M_SHAD EQU 00100H ;IF=1 OBJECT IS A SHADOW OBJ
M_OPARTSXY EQU 00200H
M_DEAD EQU 00400H
M_GCOLL EQU 00800H
M_NOPIXSCAN EQU 01000H
M_NOCOLL EQU 02000H ;Don't do regular collisions...
M_ANIM EQU 04000H ;set if on ANIFLY list
M_SCRNOBJ EQU 08000H ;SCREEN OBJECT
*BIT POSITIONS FOR OFLAGS
B_NOSCALE EQU 0
B_DBLSCL EQU 1 ;DOUBLE scale
B_MASTER EQU 2
B_BNODEL EQU 2
B_NODISP EQU 3
B_NOSHADOW EQU 4 ;Shadows not allowed for this object.
B_MANSCALE EQU 5 ;MANUAL SCALING (You set scale, sizes computed automatically)
B_NOPARTANI EQU 6
;DON'T EVEN THINK ABOUT CHANGIN' B_OFSCRN OR ELSE - dozer
B_OFSCRN EQU 7
B_SHAD EQU 8
B_OPARTSXY EQU 9 ;USE OPARTSXY FIELD INSTEAD OF OANIOFF FOR OFFSET
B_DEAD EQU 10 ;IF <> 0, THIS PART IS CONSIDERED DEAD
B_GCOLL EQU 11 ;IF=1 GROUND SCAN
B_NOPIXSCAN EQU 12 ;IF=1 DO NOT PIXEL SCAN THIS OBJECT
B_NOCOLL EQU 13
B_ANIM EQU 14
B_NOWORLD EQU 15
B_SCRNOBJ EQU 15 ;SCREEN OBJECT
;UNIVERSE DAMAGE FLAGS
B_ANIMSYNC EQU 0 ;OFFSET NEW ANIMATION TO SYNC WITH OLD
B_FLASHOBJ EQU 1 ;FLASH OBJECT CONSTANT COLOR #1
B_LASTFRM EQU 2 ;GO STRAIGHT TO LAST FRAME
B_NOMORE EQU 3 ;NO MORE DAMAGE FLAG
B_NEXTFRM EQU 4 ;GO TO NEXT FRAME
B_STAY EQU 5 ;STAY AT CURRENT DAMAGE FRAME
B_NOSTOPANIM EQU 6 ;DON'T STOP THE ANIMATION WHEN CHANGING TO A STATIC FRAME
B_RANDFRM equ 7 ;CHOOSE a frame at random
M_ANIMSYNC EQU 001H
M_FLASHOBJ EQU 002H
M_LASTFRM EQU 004H
M_NOMORE EQU 008H
M_NEXTFRM EQU 010H
M_STAY EQU 020H
M_NOSTOPANIM EQU 040H
M_RANDFRM equ 080h