.GLOBAL OFREE,OBJLST,BAKLST,BAK2LST,DISPLAYON,SCRNRELV .GLOBAL OINIT,GETOBJ,INSOBJ,DELOBJ,DISPLAY,ADDOBJ,KILOBJ,OBJSTR,DISPH .GLOBAL ANI,STFOBJ,MAKOBJ,SCRTST,SCRTSTG,GSAGOF,GANIOF .GLOBAL YZSORT,INSB2OBJ,INSBOBJ,DELB2OBJ,DELBOBJ,KILB2OBJ,KILBOBJ .GLOBAL PULLB2OBJ,PULLBOBJ,PULLOBJ,GANISAG,ADJSTWTL,CLIPOBJ .GLOBAL QDMA,QDMAN,SHADJUMP,GETANIXY,ANI2,SHADST2,SHADCPY,SHADCPY2 .GLOBAL SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL,BAK2TLX,BAK2TLY .GLOBAL SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL,DELSOBJ,DELSHAD,SHADST .GLOBAL OBJSTR,SCREENTL,SCREENLR,QSYNC,DMAQCUR,DMAQCNT .GLOBAL BOTQ0CNT,BOTQ1CNT,TOPQ0CNT,TOPQ1CNT,BOTQ0FLG,BOTQ1FLG .GLOBAL TOPQ0FLG,TOPQ1FLG,BOTQ0,BOTQ1,TOPQ0,TOPQ1,STOPOBJS .GLOBAL FREEOBJ,FREESOBJ,FREEOBJE,PULLSOBJ,INSSOBJ .GLOBAL SHADUPD,SHADUPD2,EXISTOBJ,DMAINT .GLOBAL DISPQT,ENDOFREE,ISOBJ * *GLOBALS CONNECTED TO NARC .GLOBAL DFRMGRND,CURPAL,DUMCOLL * *CONSTANTS * ; SCRNST .EQU [1,5] ;TOP LEFT OF SCREEN SCRNEND .EQU [252,395] ;BOTTOM RIGHT OF SCREEN SCRNMID .EQU [128,200] ;MIDPOINT OF SCREEN SHADID .EQU >0FFF ;SHADOWS ARE HIGH PRI * *OBJECT INITIALIZATION TABLE INITXVAL .EQU 0 INITYVAL .EQU 20H INITIMG .EQU 40H INITZPOS .EQU 60H INITFLAGS .EQU 70H INITID .EQU 80H INITXVEL .EQU 90H INITYVEL .EQU 0B0H INITCVECT .EQU 0D0H * * OBJECT BLOCK LAYOUT * *STRUCT OBJ OLINK .EQU 0 ;UHL 32 BIT LINK TO NEXT OBJECT BLOCK OXVEL .EQU 20H ;UHL 32 BIT X VELOCITY 16.16 OYVEL .EQU 40H ;UHL 32 BIT Y VELOCITY 16.16 OXVAL .EQU 60H ;UHL 32 BIT X POSITION OXFRAC .EQU 60H ; FRACTIONAL PORTION OF X POSITION OXPOS .EQU 70H ; INTEGER PORTION OF X POSITION OYVAL .EQU 080H ;UHL 32 BIT Y POSITION OYFRAC .EQU 080H ; FRACTIONAL PORTION OF Y POSITION OYPOS .EQU 090H ; INTEGER PORTION OF Y POSITION ;OZVAL .EQU 0A0H ; 32 BIT Z POSITION OZPOS .EQU 0A0H ;UHW INTEGER Z POSITION OF OBJECT ;OZVEL .EQU 0C0H ; 32 BIT Z VELOCITY OFLAGS .EQU 0B0H ;UHW 32 BIT BITS 0 - 5 DMA CONTROL; B16-31= OFFSET PRECOMPUTED OFSET .EQU 0C0H ;UHW PRECOMPUTED OFFSET OSAG .EQU 0D0H ;UHL 32 BIT SOURCE ADDRESS (UNCLIPPED, ADJUSTED FOR FLIPS) OSIZE .EQU 0F0H ; 32 BIT H,W OF OBJECT (16,16) W=ADJUSTED FOR MORSEL OSIZEX .EQU 0F0H ;UHW X SIZE OSIZEY .EQU 100H ;UHW Y SIZE OPAL .EQU 110H ;UHW PALLETTE OCONST .EQU 120H ;CONSTANT COLOR OIMG .EQU 130H ;UHL 32 BIT POINTER TO IMAGE DATA TABLE OID .EQU 150H ;UHW 16 BIT OBJECT ID ;OZSIZ .EQU 190H ; 32 BIT Z THICKNESS ;OZMINUS .EQU 1B0H ; THICKNESS ALONG MINUS Z ;OZPLUS .EQU 1C0H ; THICKNESS ALONG PLUS Z ;OCVECT .EQU 180H ; 32 BIT LINK TO COLLISION HANDLER OPLINK .EQU 160H ;UHL 32 BIT LINK TO CONTROLLING PROCESS ODMAXY .EQU 180H ; 32 BIT SCREEN COORD OF OBJECT ODMAX .EQU 180H ;X COORDINATE ODMAY .EQU 190H ;Y COORDINATE OXCLIP .EQU 1A0H ;UHW 16 BIT TOTAL X PRECLIP OSHAD .EQU 1C0H ;32 BIT SHADOW LINK OCOLLIDE .EQU 1E0H OBSIZ .EQU 1F0H *ENDSTRUCT NOBJ .EQU 400 ; OBJECTS TO DISPLAY * BQCELL .EQU >A0 ;SIZE OF DMA QUEUE ELEMENT *********************** * VALUES FOR OFLAGS * *********************** M_WRZERO .EQU 1 ;WRITE ZERO DATA M_WRNONZ .EQU 2 ;WRITE NON-ZERO DATA M_CONZER .EQU 4 ;REPLACE ZERO DATA WITH CONSTANT M_CONNON .EQU 8 ;REPLACE NON-ZERO DATA WITH CONSTANT M_CONST .EQU >C ;ANY CONSTANT DATA REPLACEMENT M_FLIPH .EQU >10 ;FLIP HORIZONTALLY M_FLIPV .EQU >20 ;FLIP VERTICALLY M_NODIS .EQU >100 ;IGNORE THIS ENTRY M_PZPLUS .EQU >200 ;TAKE Z VALUE FROM RAM LOC. PREVZ AND ADD 1 M_PIXSCAN .EQU >400 ;IF=1 O.K. TO PIXEL SCAN WITH THIS OBJECT M_NOCOLL .EQU >800 ;IF=1 OBJECT NOT COLLIDABLE M_PREVZ .EQU >1000 ;TAKE Z VALUE FROM RAM LOC. PREVZ M_NOMOV .EQU >2000 ;DO NOT ADD VELOCITIES M_INUSE .set >8000 ;obj in use by display system * *BIT POSITIONS FOR OFLAGS 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_NODIS .EQU 8 B_PZPLUS .EQU 9 B_PIXSCAN .EQU 10 B_NOCOLL .EQU 11 B_PREVZ .EQU 12 B_NOMOV .EQU 13 B_INUSE .set 15