revolution-x/GXENEMY.INC

1993 lines
65 KiB
Plaintext
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.

**************************************************************************
* *
* SYSTEM "ASSEMBLY TIME" CONDITIONALS *
* *
**************************************************************************
WARREN equ 0 ; Only One of these should be 1
BILL equ 0 ; If NONE are 1, then final game choices are used
GEORGE equ 0
NOBODY equ 1 ; for running the game
.if WARREN+BILL+GEORGE+NOBODY != 1
DIS AIN'T RIGHT!!!
.endif
DEBUG EQU 1 ;THIS VERSION IS CURRENTLY UNDER CONSTRUCTION
;DEBUG EQU 0 ;ADD THIS BEFORE RELEASE!!!!!
CENTER_SCREEN EQU 1 ;FLAG TO CENTER PAGES HORIZONTALLY IN BITMAP
;CENTER_SCREEN EQU 0
GERMAN EQU 0 ;ENGLISH RELEASE
;GERMAN EQU 1 ;GERMAN RELEASE
NOTFINAL EQU 1 ;IF = 1, NOT PRODUCTION QUALITY PROGRAM
;NOTFINAL EQU 0 ;ADD THIS BEFORE RELEASE!!!!!
PRINTER EQU 0 ; IF 1, THERE IS A PRINTER HOOKED TO SOUND PORT
YUNIT EQU 1 ;IF 1, THIS VERSION IS FOR THE Y-UNIT AT 6 BITS/PIXEL
TUNIT EQU 1 ;WE GOTS THE T-UNIT NOW!
IMGBGND EQU 0 ;SET TO 1 TO PUT BGNDTBLS IN IMAGE MEMORY
FORCEFREE EQU 1 ;1 = GAME HARDWIRED FREE
NO_DEATH EQU 0 ;1 = Player's will never die
FULLPRICE EQU 1 ;1 = ALL THE PRICINGS ARE INCLUDED
NTSC EQU 0 ;IF 1, THEN SET THE VIDEO TO NTSC COMPATIBLE
USING_UART EQU 1 ;Using UART for sound communication
**************************************************************************
* *
* 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 005800H ;Z of bottom line of road
;ZMAX_REAL .EQU 004000H ;Closest Z allowed
ZMAX_REAL .EQU 003200H ;Closest Z allowed
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
.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
;GNP start 3/2/1994
.GLOBAL DELETE_SHADOW, CLEAR_ANIMS
;GNP end 3/2/1994
***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
OAVAIL EQU 04f0h ;UHW available word
OIHOFF EQU 04e0h ;UHW OFFSET TO IMAGE HEADER
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 400
***** 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
******************************* MPROC.H ********************************
*VARS
.GLOBL TIMER, ACTIVE, PACTIVE, FREE, PFREECNT, PRIORITY
.GLOBL PRCSTR, PRCLSTND, PAUSE_GAME, FREEZE, PFREEZE
*FUNCS
.GLOBL GETPRC,GETPPRC
.GLOBL KILALL,KILL,PINIT,SUCIDE,PRCSLP,PRCDSP,PRCLSP
.GLOBL EXISTP,PEXISTP
.GLOBL GETREGS,GETA11,GETA10,GETA9,GETA8,GETWAKE
.GLOBL PUTREGS,PUTA11,PUTA10,PUTA9,PUTA8
.GLOBL PUTWAKE, XFERPROC, PROC_INT, WAKEUP
.GLOBL OBJPROC_XFER, OBJPROC_INT, OBJPROC_KILL
.GLOBL SEND_COMM, COMM_WAIT, SEND_COMM_WAIT,COMM_WAIT_REMOTE
.GLOBL KILLPROC_ALL, EXISTP_ALL
.GLOBL COUNT_PROCESSES, COUNT_ACTIVE, COUNT_PACTIVE
.GLOBL FREEZE_PROC, FREEZE_PROCS, THAW_PROC, THAW_PROCS
;Moved sound labels to GXGLO.H
*
*PROCESS DATA STRUCTURE
*NOTE: MAKE SURE THIS IS EVENLY DIVISIBLE BY 32
*STRUCT PRC
PLINK EQU 0 ;UHL LINK TO NEXT 32 BITS
PROCID EQU 020H ;UHW PROCESS ID 16 BITS
PTIME EQU 030H ;UHW SLEEP TIME X 16MSEC 16 BITS
PWAKE EQU 0E0H ;UHL
PA8 EQU 0C0H ;UHL
PA9 EQU 0A0H ;UHL
PA10 EQU 080H ;UHL
PA11 EQU 060H ;UHL
PSPTR EQU 040H ;UHL PROCESS STACK POINTER 32 BITS
PDATA EQU 0100H ;UHL PROCESS DATA STORE
****PSDATA EQU 0500H ;UHL PROCESS STACK DATA
PSDATA EQU 0900H ;UHL PROCESS STACK DATA
PTEMP1 EQU PSDATA-0A0H ;UHL ;PROCESS TEMPORARY STORE AREAS
PTEMP2 EQU PSDATA-080H ;UHL
PTEMP3 EQU PSDATA-060H ;UHL
PTEMP4 EQU PSDATA-040H ;UHL
PCTIME EQU PSDATA-020H ;UHW PROCESS CREATION TIME (DEBUGGING)
PCOMM EQU PSDATA-010H ;UHW PROCESS COMMUNICATION AREA
*ENDSTRUCT
;PRCSIZ EQU 0700H ;END OF DATA STRUCTURE
PRCSIZ EQU 1200H ;END OF DATA STRUCTURE
NPROC EQU 120 ;NUMBER OF PROCESSES
**************************************************************************
* *
* THE X-UNIT SYSTEM SPECIFIC EQUATES *
* *
**************************************************************************
*
*MACHINE TIMINGS
*
MACHINE_CYCLE .EQU 100 ;NUMBER OF nanoSECONDS PER MACHINE CYCLE on the 34020:
; 32MHz = 132 ns
; 40MHz = 100 ns
MICRO_SECOND .EQU 1000/MACHINE_CYCLE ;MACHINE CYCLES PER microSECOND
*
*GENERAL SYSTEM EQUATES
*
*
*PIXBLT STUFF
PXSIZE .set 8
SCRN_PTCH .set 512*PXSIZE
CONV_PTCH .SET 13
PLANEMSK .set 0
INI_CFG .set 1108h
INI_CTRL .set 0
.IF WIDESCREEN
SCREEN_WIDTH .EQU 512 ;SCREEN WIDTH IN PIXELS
.ELSE
SCREEN_WIDTH .EQU 400 ;SCREEN WIDTH IN PIXELS
.ENDIF
SCREEN_HEIGHT .EQU 254 ;SCREEN LENGTH IN PIXELS NEW
*
*SYSTEM Z MEMORY MAP
*
SCRATCH .SET 20000000h ;START OF SCRATCH
CMOS .EQU 0a0440000h ;START OF CMOS RAM
SCREEN .SET 00h ;START OF SCREEN MEMORY
SCRNE .SET 0200000h ;END OF SCREEN+1
PSCREEN .SET 800000h ;START OF PALETTE SCREEN MEMORY
SCRATCH_END .EQU 20800000H ;END OF SCRATCH+1
STCKST .SET 207ffff0h ;TOP OF STACK
COLRAM .SET 0a0800000H ;COLOR RAM B0-B4 BLU, B5-B9 GRN, B10-B14 RED
PALSIZE .SET 02000H ;PHYSICAL SIZE OF A PALETTE IN COLOR RAM
*
*USEFUL SYSTEM ADDRESSES
*
ROM .SET 20800000h ;PROGRAM ROM
SWITCH .SET 60c00000h ;I/O (JAMMA CONNECTOR AND WIRED INPUTS)
SWITCH2 .SET 60c00020H ;I/O (WIRED INPUTS AND DIP SWITCHES)
COINS .SET 60c00040H
DIPSWITCH .EQU 60c00060H ;DIP SWITCHES FOR X UNIT
SOUND .SET 60c00080h ;SOUND I/O (B0-B7 = SOUND#)
; B8 = RESET (0 EN)
COIN_COUNTERS .EQU 60c000a0H ;COIN COUNTER DRIVERS
WDOG_BONE .EQU 60c000c0H ;ACCESS HERE TO FEED THE DOG
A2D_PORT .EQU 80800000H ;A/D PORT
AUX_PORT .EQU 060C00080H ;AUXILLARY PORT
IROM .SET 0f8000000h ;IMAGE ROM (assuming 4Mbit parts, 16MB total)
;IROM .SET 0f0000000h ;IMAGE ROM (assuming 8Mbit parts, 32MB total)
CMAPSEL .SET 0C0800080h ;COLOR MAP SELECT (0-15)
UART .SET 80c00000h ;UART (8 long word registers)
SYSCTRL0 .SET 40800000H ;SYSTEM CONTROL LATCH 0
SYSCTRL1 .SET 40C00000H ;SYSTEM CONTROL LATCH 1
SECCHIP .set 60000000h ;security register
INT_REG .set 60400000h ;interrupt register
RST_REG .set 60800000h ;reset register (bit 0 only)
*
* SYSCTRL0 bit 3 bit 2 bit 1 bit 0
*
* if set: VECTORS FROM ENABLE CMOS WRITE PROTECT WRITE PROTECT
* DRAM WRITE BANK 1 HI BANK 1 LO
*
*
* SYSCTRL1 bit 3 bit 2 bit 1 bit 0
*
* if set: DMA BANK 1 LED IS ON I/O RESET DMA ENABLED
*
*
RAMVECTS .equ 8 ;use RAM VECTORS (not ROM)
CMOSENAB .equ 4 ;enable CMOS
WRPROTHI .equ 2 ;Write Protect Hi half of DRAM Bank 1
WRPROTLO .equ 1 ;Write Protect Lo half of DRAM Bank 1
DMABANK1 .equ 8 ;Select Hi BANK of IMAGE ROM (for DMA)
LED_ON .equ 4 ;Turn on LED
SND_RESET .equ 2 ;Reset Sound Board and PIC chip
DMAENAB .equ 1 ;Enable DMA
SYSCINIT .equ (DMAENAB<<8)+RAMVECTS ; for XUNIT
SYSC_COLD .EQU 0 ;System control register upon cold start
.IF UART
LINT2_INTS .EQU 4 ;LINT2 interrupts, with UART
.ELSE
LINT2_INTS .EQU 0 ;LINT2 interrupts, without UART
.ENDIF
*
*UART Equates
*
UART_CSR .EQU 20H ;UART Clock Select Register
UART_CR .EQU 40H ;UART Control Register
UART_THR .EQU 60H ;UART Transmit Hold Register
UART_ACR .EQU 80H ;UART Auxiliary Control Register
UART_IMR .EQU 0A0H ;UART Interrupt Mask Register
*
AUTOERAS .EQU 10H
OBJPALET .EQU 20H
*COIN COUNTER EQUATES ???HELP???
LEFT_COIN .EQU 01H ;LEFT COIN MASK
RIGHT_COIN .EQU 02H ;RIGHT COIN MASK
*EQUATES FOR READING SOUND BOARD IRQ REQUEST LINE
B_WDOG .EQU 30 ;(L) FOR WATCHDOG TRIGGERED
B_A2D .EQU 0 ;(L) FOR CONVERSION COMPLETE
B_SIRQ .EQU 2 ;BIT TO READ FOR SOUND IRQ LINE
*
*INTERRUPT CONSTANTS
.IF NTSC
ENDVBLNK .EQU 13H ;SCAN LINE TO END VERTICAL BLANKING
HSINT .EQU 108+ENDVBLNK ;HALF SCREEN
EOSINT .EQU 229+ENDVBLNK ;END OF SCREEN
DIRQ2INT .EQU 210+ENDVBLNK ;JUST BEFORE EOS
*SCOREINT .EQU 18+ENDVBLNK ;END OF SCORE AREA INTERRUPT
.ELSE
ENDVBLNK .EQU 14H ;SCAN LINE TO END VERTICAL BLANKING
HSINT .EQU 135+ENDVBLNK ;HALF SCREEN
EOSINT .EQU 254+ENDVBLNK ;END OF SCREEN
DIRQ2INT .EQU 246+ENDVBLNK ;JUST BEFORE EOS
*SCOREINT .EQU 18+ENDVBLNK ;END OF SCORE AREA INTERRUPT
.ENDIF
ERASELOC .EQU COLRAM + (03F0H*2) ;GAME AUTO ERASE COLOR LOCATION
ERASECOL .EQU 03F3F3F3FH ;GAME AUTO ERASE COLOR #
GNDERALOC .EQU COLRAM + (03E0H*2) ;GAME AUTO ERASE COLOR LOCATION
GNDERACOL .EQU 03e3e3e3EH ;GAME AUTO ERASE COLOR #
.if CENTER_SCREEN
CENTER_XSHIFT .EQU 56
.else
CENTER_XSHIFT .EQU 0
.endif
BITMAP_OFFSET .EQU CENTER_XSHIFT*8
PAGE0ADR .EQU [0,CENTER_XSHIFT] ;(1 dead, 44 score, 210 playfield)*2, 2 autoerase
PAGE1ADR .EQU [SCRHGHT,CENTER_XSHIFT] ;SCRHGHT*8*512
PAGE2ADR .EQU [512,CENTER_XSHIFT] ;Video page 2 XY address
PAGE3ADR .EQU [768,CENTER_XSHIFT] ;Video page 3 XY address
OFFSETVAL .set BITMAP_OFFSET
TOGGLE_PAGE_XY .set [SCRHGHT,0]
TOGGLE_PAGE_L .set SCRHGHT*SCRN_PTCH
DPYSTRT0 .set BITMAP_OFFSET
DPYSTRT1 .set (SCRHGHT*SCRN_PTCH)+BITMAP_OFFSET
DPYSTRT2 .EQU (512*SCRN_PTCH)+BITMAP_OFFSET
DPYSTRT3 .EQU (768*SCRN_PTCH)+BITMAP_OFFSET
PAGE0E .EQU 0FE000h ;END OF PAGE0+1
PAGE2_START .EQU 0200000H ;Start of video page 2
PAGE2_END .EQU 02FFFFFH ;End of video page 2
PAGE3_START .EQU 0300000H ;Start of video page 3
PAGE3_END .EQU 03FFFFFH ;End of video page 3
*
*DMA STUFF
*
DMAREGS: .equ 0C08000C0h ;BOTTOM OF DMA REGISTERS FOR MMTM
;BIT 15:
;1=START DMA (WRITE)
;0=STOP DMA (WRITE)
;1=DMA BUSY (READ)
;0=DMA IDLE (READ)
;DMAOFFST: .EQU 0C0800000h ;DMA OFFSET REGISTER
;DMACTRL: .equ 0C0800010h ;DMA CONTROL REGISTER
;DMASAGL: .equ 0C0800020h ;DMA DATA STARTING ADDRESS LOW 16 BITS
;DMASAGH: .equ 0C0800030h ;DMA DATA STARTING ADDRESS HIGH 16 BITS
;DMAHORIZ: .equ 0C0800040h ;DMA DESTINATION, X COORDINATE
;DMAVERT: .equ 0C0800050h ;DMA DESTINATION, Y COORDINATE
;DMAHSIZE: .equ 0C0800060h ;DMA DESTINATION, X SIZE
;DMAVSIZE: .equ 0C0800070h ;DMA DESTINATION, Y SIZE
;DMACMAP: .equ 0C0800080h ;DMA COLOR MAP SELECT
;DMACONST: .equ 0C0800090h ;DMA CONSTANT COLOR SUBSTITUTE
;DMAXSCL: .equ 0C08000A0h ;DMA X SCALE REG
;DMAYSCL: .equ 0C08000B0h ;DMA Y SCALE REG
;DMATPLFT: .equ 0C08000C0h ;DMA TOP LEFT WINDOW BORDER
;DMARTBOT: .equ 0C08000D0h ;DMA RT BOTTOM WINDOW BORDER
;DMACONFIG: .equ 0C08000E0h ;DMA CONFIG REGISTER
; ALL DMA REGS ARE 32 BITS!!!
DMAOFFCTL: .EQU 0C0800000h ;DMA OFFSET & CONTROL REGISTERS
DMASAG: .equ 0C0800020h ;DMA DATA STARTING ADDRESS
DMAHV: .equ 0C0800040h ;DMA DESTINATION, XY COORDINATE
DMAHVSIZE: .equ 0C0800060h ;DMA DESTINATION, XY SIZE
DMACMAPCON: .equ 0C0800080h ;DMA COLOR MAP SELECT, CONST
DMAXYSCL: .equ 0C08000A0h ;DMA XY SCALE REG
DMAWINDOW: .equ 0C08000C0h ;DMA BOT:TOP or RT:LEFT WINDOW BORDER
DMACONFIG: .equ 0C08000E0h ;DMA CONFIG REGISTER
DMAGOREG .equ 0C0C00000h ; for read/write of DMA GO BIT ONLY (in bit 31)
; NOTE: trashes offset & control regs on a write.
* LAYOUT OF DMA CONTROL REGISTER
DMAWZ .set 8001h ; Bit 0 write zero data
DMAWNZ .set 8002h ; Bit 1 write non-zero data
DMACZ .set 8004h ; Bit 2 subst zero data with constant
DMACNZ .set 8008h ; Bit 3 subst non-zero data with constant
DMAWAL .SET 8003h ; WRITE BOTH ZERO & NON-ZERO DATA
DMACAL .SET 800ch ; WRITE CONSTANT ON BOTH ZERO & NON-ZERO DATA
DMAHFL .set 0010h ; Bit 4 Horz flip
DMAVFL .set 0020h ; Bit 5 Vert flip
DMACLP .set 0040h ; Bit 6 Clip using UDLR method (0=offset method)
DMACMP .set 0080h ; Bit 7 Zero Compression on
DMALDX .set 0300h ; Bits 8-9 Leading Zero Multiplier (0-3 = 1x,2x,4x,8x)
DMATRX .set 0c00h ; Bits 10-11 Trailing Zero Multiplier (0-3 = 1x,2x,4x,8x)
DMABPP .set 7000h ; Bits 12-14 Bits Per Pixel (1-7, 0=8)
DMAGO .set 8000h ; Bit 15 DMA Go/Halt
; (one '0' write halts DMA,
; two '0' writes kills xfer,
; one '1' write restarts/starts)
* LAYOUT OF DMA CONFIG REGISTER
DMAWIN .set 200000h ; Bit 5 (0 = rt/lft, 1 = top/bot)
DMACF4 .SET 100000H ; BIT 4 TIMING PARAMETER
* LAYOUT OF IMAGE HEADER NEW
ICTRL .EQU 0H
ISIZE .equ 10h
ISIZEX .EQU 10h
ISIZEY .EQU 20H
ISAG .equ 30h
IANIOFF .equ 50H
IANIOFFX .EQU 50H
IANIOFFY .EQU 60H
ICMAP .equ 70H
ICBOX .equ 90H
ICBOXSIZ .equ 0A0H
IHDRSIZ equ 90h
ZM .set 1 ;Z MINUS MULTIPLIER
ZP .set 010000h ;Z PLUS MULTIPLIER
*
*SOUND PROCESSOR EQUATES
NINT .EQU 0800H ;SOUND NON-INTERRUPTABLE ???HELP???
*------- Register names for TMS34010 assembly language functions -------
*-----------------------------------------------------------------------
* Define names of I/O registers
*-----------------------------------------------------------------------
VESYNC .set 0C0000000h
HESYNC .set 0C0000010h
VEBLNK .set 0C0000020h
HEBLNK .set 0C0000030h
VSBLNK .set 0C0000040h
HSBLNK .set 0C0000050h
VTOTAL .set 0C0000060h
HTOTAL .set 0C0000070h
DPYCTL .set 0C0000080h
DPYSTRT .set 0C0000090h
DPYINT .set 0C00000A0h
CONTROL .set 0C00000B0h
HSTDATA .set 0C00000C0h
HSTADRL .set 0C00000D0h
HSTADRH .set 0C00000E0h
HSTCTLL .set 0C00000F0h
HSTCTLH .set 0C0000100h
INTENB .set 0C0000110h
INTPEND .set 0C0000120h
CONVSP .set 0C0000130h
CONVDP .set 0C0000140h
PSIZE .set 0C0000150h
PMASKL .set 0C0000160h
PMASKH .set 0C0000170h
CONVMP .set 0C0000180h
CONFIG .set 0C00001a0h
DPYTAP .set 0C00001b0h
* I/O register locations 23-27 are reserved for future expansion
VCOUNT .set 0C00001C0h
HCOUNT .set 0C00001D0h
DPYADR .set 0C00001E0h
REFADR .set 0C00001F0h
*
DPYMSK .set 0C00002E0h ; replaces DPYTAP
DPYST .set 0C0000200h ; replaces DPYSTRT
DPYNX .SET 0C0000220H ; replaces DPYADR
X .set 1
Y .set 010000h
W .SET 0
L .set 1
* Declarations for condition codes in Macros
GT .set 'GT'
GE .set 'GE'
LT .set 'LT'
LE .set 'LE'
EQ .set 'EQ'
NE .set 'NE'
Z .set 'Z'
NZ .set 'NZ'
NC .set 'NC'
UC .set 'UC'
N .set 'N'
*-----------------------------------------------------------------------
* Masks for I/O register fields:
*-----------------------------------------------------------------------
* STATUS BIT MASKS
CBIT .EQU 40000000H
* DISPLAY CONTROL REGISTER BIT DEFINITIONS
HSD .set 01h ; Horizontal Sync Direction
VSD .set 02h ; Vertical Sync Direction
CSD .set 04h ; Composite Sync Direction
CVD .set 08h ; Composite Video Disable
SSV .set 040h ; Midline reload enable
VCE .set 080h ; Video capture enable
CST .set 0800h ; CPU serial register transfer enable
SRE .set 01000h ; Screen Refresh Enable
NIL .set 04000h ; Non-InterLaced video enable
ENV .set 08000h ; ENable Video
*BIT POSITIONS IN DISPLAY CONTROL
B_CST .SET 11 ; BIT TO ENABLE CSTs
B_SSV .SET 6 ; BIT TO ENABLE SRTs
* BIT FIELDS WITHIN CONTROL REGISTER
CD .set 08000h ;Mask for Cache Dis bit in CONTROL
PPOP .set 07C00h ;Mask for Pix Proc OPer in CONTROL
PBH .set 0200h ;Mask for PBH bit in CONTROL
PBV .set 0100h ;Mask for PBV bit in CONTROL
WIN .set 0C0h ;Mask for Window field in CONTROL
T .set 020h ;Mask for Transparency field in CONTROL
TMD .set 3 ;Mask for Transparency MODE in CONTROL
;old RR .set 018h ;Mask for dram Refresh Rate bit in CONFIG
;old RM .set 04h ;Mask for dram Refresh Mode bit in CONFIG
* BITS WITHIN INTPEND AND INTENB
WVP .set 0800h ;Mask for Window Violation in INTPEND
DIE .set 0400h ;Mask for Disp Int in INTPEND
HIE .set 0200h ;Mask for Host Int in INTPEND
X2E .set 04h ;Mask for Ext Int 2 in INTPEND
X1E .set 02h ;Mask for Ext Int 1 in INTPEND
B_X1E .set 1 ;Bit Pos for Ext Int 1 in INTPEND
* BIT POSITIONS IN INTPEND
DIP .EQU 10 ;BIT TEST FOR DISPLAY INTERRUPT PENDING
* FIELDS WITHIN HSTCTLL
MSGIN .set 07h ; Message from Host to GSP
INTIN_MSK .set 08h ; GSP can write 0 to this bit (ANDNI)
INTIN_BIT .set 03h ; GSP can write 0 to this bit (ANDNI)
INTOUT_MSK .set 080h ; GSP can write 1 to this bit (ORI)
INTOUT_BIT .set 07h ; GSP can write 1 to this bit (ORI)
* OPTIONS FOR WINDOW FIELD IN CONTROL REG
*W0 (ANDNI) No writes inhibited, no interrupt
W3 .set 0C0h ;inhibit writes outside window, no interrupt
W2 .set 080h ;Int on attempt to write outside window.
W1 .set 040h ;Inhibit all writes, Int on attempt to write within window
*OPTIONS FOR PIXEL PROC OPERATIONS IN CONTROL REG
* PPOP (ANDNI) replace
P_AND .set 0400h
P_ANDNOT .set 0800h
P_ZERO .set 0C00h
P_ORNOT .set 01000h
P_XNOR .set 01400h
P_NEG .set 01800h
P_NOR .set 01C00h
P_OR .set 02000h
P_NOP .set 02400h
P_XOR .set 02800h
P_NOTAND .set 02C00h
P_ONES .set 03000h
P_NOTOR .set 03400h
P_NAND .set 03800h
P_NOT .set 03C00h
P_ADD .set 04000h
P_ADDS .set 04400h
P_SUB .set 04800h
P_SUBS .set 04C00h
P_MAX .set 05000h
P_MIN .set 05400h
*-----------------------------------------------------------------------
* Define special A- and B-file registers
*-----------------------------------------------------------------------
* Special A-file registers:
***fp .set A13 ;Frame, param. stack
***pstk .set A14 ;Parameter stack pointer
***frame_pntr .set A14 ;Used by C Compiler
* Special B-file registers:
*
* B FILE REGISTER GRAPHICS DEFINITIONS
*
***saddr .set B0
***sptch .set B1
***daddr .set B2
***dptch .set B3
***offset .set B4
***wstart .set B5
***wend .set B6
***dydx .set B7
***color0 .set B8
***color1 .set B9
***count .set B10
***inc1 .set B11
***inc2 .set B12
***pattrn .set B13
*
SADDR .set B0 ;Source address register
SPTCH .set B1 ;Source pitch register
DADDR .set B2 ;Dest. address register
DPTCH .set B3 ;Dest. pitch register
OFFSET .set B4 ;XY offset register
***WSTART .set B5 ;Window start register
***WEND .set B6 ;Window end register
DYDX .set B7 ;Delta X/delta Y register
COLOR0 .set B8 ;Color 0 register
COLOR1 .set B9 ;Color 1 register
***COUNT .set B10
***INC1 .set B11
***INC2 .set B12
***PATTRN .set B13
**************************************************************************
* *
* GENERATION X - MASTER EQUATE FILE *
* *
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
*SYMBOLS IN FILE T2TRIG.ASM
.GLOBL GETCOS, GETSIN
*SYMBOLS IN FILE GXPALL.ASM
.GLOBAL GETFPAL, PALTRANS, CLRBPAL, CLRFPAL, FINDPAL
.GLOBAL CLRPAL, DELPAL, DELETE_PAL, FREEPAL
.GLOBAL CHANGE_PAL, GET_PALID, INC_PALCNT, CLR_0PALS
.GLOBAL CHANGE_PAL_MULTI
*SYMBOLS IN FILE T2UTIL.ASM
.GLOBAL SCRCLR, CLR_SCRN, MYOINIT, SETPPROC
.GLOBAL SHVELCPY, SHVELFLP, FLP, XZCHK, CLRPDATA
.GLOBAL RANDU, RANDOM, SRAND, RANGRAND, RANDPER
.GLOBL RAND0, RANGERND
.GLOBAL FRANIM, AUTOEOFF
.GLOBAL DMAQWAIT, DMAWAIT, DTIME, DRAWBOX, DRAWBOX_OBJ
.GLOBAL PSTOP, MIDPOINT, QBOXCK, QINSCRN, CLRPLAY
.GLOBAL WHICHSID, ABOVBELO, ALIGNOBJ, GET_CPNT, GETCPNT, GETCENT
.GLOBAL SLINEVEL, CLRBLOCK, FILBLOCK, CHKRANGE, FRAMSKIP, FILL_SCRN
.GLOBAL PNT_IN_RANGE, CENTEROBJ, CK_OBJ_CENT, CK_BOTTOM_CENT
.GLOBAL SET_ZPOS, SET_MZPOS, SET_TZPOS, GET_INIT_CPNT, ANIMATOR
.GLOBAL GET_BOTTOM_MID, ANIMATE_DEL, DMAWPAL
.GLOBAL OSINK, OSINKANI
.GLOBAL STOPPED, SKIP_ANIMATION, KILL_DESTRUCTIBLES, PNTINBOX
.GLOBAL X_ETA, ANIMATE_TIME, SLINEVEL_LOAD, DTIME2
.GLOBAL BLNKAREA, BLNKAREA2, FILLAREA, FILLAREA2, YFLP, NOYFLP
.GLOBAL MAX, MIN, ABSMAX, ABSMIN, ABSINC, ABSDEC, ABSADD, ABSSUB
.GLOBAL TOGL_YFLP
.GLOBAL PreFrag0, PreFrag_Center, PreFrag_Box, PreFrag_LR
.GLOBAL PreFrag_Up, PreFrag_Gun
.GLOBAL Fragger, FlshWyte
.GLOBAL COLLS_OFF, COLLSOFF, ALL_COLLS_OFF, GET_CPNT_SCRNREL
*SYMBOLS IN FILE T2AFUNC.ASM
.GLOBAL A_STRT_ANIM, A_TOGGLE_FLPS, A_DEL_DAMAGE, A_SET_OZVEL
.GLOBAL A_CLR_OXVEL, A_OFFSCRN_DEL, A_OFFOPP_DEL
.GLOBAL A_ONSCREEN, A_INC_AnimSLP, A_RAND_AnimSLP
.GLOBAL A_DEL_OID_DAMAGE, A_OFF_DELETE_OBJ, A_PRINT_SCORE
.GLOBAL A_PreFrag1, A_FLIP_BRANCH, A_OFFSCREEN, A_OBJ_ON_CHANGE_PAL
.GLOBAL A_SET_OYACCEL, A_RAND_FLIP, A_TOGGLE_FLIP
*SYMBOLS IN FILE T2.ASM
.GLOBAL CALLPLAY, IAUTOE, GUNPOWER_TO_MAX
*SYMBOLS IN T2ENEMY.ASM
.GLOBAL INC_ENEMY_COUNT, DEC_ENEMY_COUNT, GET_ENEMY_COUNT, COUNT_KILL
.GLOBAL COUNT_PLAYER_KILL
*SYMBOLS IN FILE T2SCOR.ASM
.GLOBAL SCORAREA, SCORE, PRINT_SCORE
*SYMBOLS IN FILE GXCOLL.ASM
**** .GLOBAL COLL_START
.GLOBAL LA_COLL, PRESENT_COLL, HIGHWAY_COLL
*SYMBOLS IN FILES T2BGND.ASM OR T2BGDATA.ASM
.GLOBAL BAKBITS, BAKLST, SINGLE_PLANE
*SYMBOLS IN T2PLAYER.ASM
.GLOBAL PLAYER_PRAISE, DELAYED_PRAISE
.GLOBAL POID_TO_PDATA
*SYMBOLS IN T2POWER.ASM
.GLOBAL GET_LOWEST_Y, CLIP_TO_Y
*
*GLOBAL DUMMY(NULL) ROUTINES
*
.GLOBAL DUMRETS, DUMCOLL, DUMCRETS, DUMBGND, DUMSCRIPT, DUMRETP
.GLOBAL DUMFGND, DUMDIE, DUMSRETS
.GLOBAL DUMPPRINT
*
* WAVE TYPE EQUATES
*
NWAVES .EQU 50 ;# OF DIFFERENT WAVES (DIFF TABLE SIZE)
.IF DEBUG
LAST_WAVE .EQU 8 ;GAME ENDS AFTER THIS WAVE
.ELSE
LAST_WAVE .EQU 7
.ENDIF
MAXPLAYERS .EQU 3 ;MAXIMUM # OF PLAYERS ALLOWED(INCLUDES DRONE)
RESET_WAVES .EQU 20 ;START OF THE RESET WAVES
*
*HIGH SCORE TABLE STUFF
*
HS_YMIN EQU 150
HS_YMAX EQU 240
HS_XMIN EQU 40
HS_XMAX EQU 360
HS_YBLANK EQU 209
HS_XBLANK EQU 296
CHAR_XBOX EQU (HS_XMAX-HS_XMIN)/10
CHAR_YBOX EQU (HS_YMAX-HS_YMIN)/3
************************************************************
* *
* PLAYER DATA STRUCTURE *
* *
************************************************************
POBJ EQU 0000H ;UHL PLAYER OBJECT BLOCK
PSCRAD EQU 0020H ;UHL PLAYER SCORE SCREEN ADDRESS
PSCORE EQU 0040H ;UHL PLAYER SCORE
PNEXTREP EQU 0060H ;UHL NEXT REPLAY LEVEL, 32 BITS BCD
PPID EQU 0080H ;UHW PLAYER BASE PROCESS I.D.
PINITAB EQU 0090H ;UHL PLAYER INITIALIZATION TABLE
PPALID EQU 00B0H ;UHL PLAYER PALETTE I.D.
PCURSORXY EQU 00D0H ;UHL CURRENT [Y,X] CURSOR POSITION
PLIVES EQU 00F0H ;UHL CURRENT PLAYER LIFE ENERGY [INT,FRACTION]
PGUNPOWER EQU 0110H ;UHW CURRENT AMOUNT OF GUN POWER
PBOMB1 EQU 0120H ;UHW COUNT OF SPECIAL WEAPON 1
PBOMB2 EQU 0130H ;UHW COUNT OF SPECIAL WEAPON 2
PBOMBTYPE EQU 0140H ;UHW TYPE OF WEAPON ATTACHED TO THE BOMB BUTTON
PFIRING EQU 0150H ;UHW IF <> 0 PLAYER IS FIRING HIS GUN. WAIT!
PENTER EQU 0160H ;UHW IF = 1, PLAYER WILL ENTER GAME @ NEXT INPLAY
PDEAD EQU 0170H ;UHW 1 IF DEAD MESSAGE UP
PBOZO EQU 0180H ;UHW BOZO LEVEL, > 0 = SOME SORT OF BOZO
PSTARTS EQU 0190H ;UHW # OF STARTS THIS GAME
PWAVEST EQU 01A0H ;UHW NUMBER OF PLAYER STARTS THIS WAVE
PWAVEDEATHS EQU 01B0H ;UHW NUMBER OF DEATHS THIS WAVE
PWAVES EQU 01C0H ;UHW NUMBER OF WAVES PLAYED THIS GAME
PEXTRAS EQU 01D0H ;UHW NUMBER OF EXTRA LEFT TO EARN THIS GAME
PWAVETIME EQU 01E0H ;UHL TIME THIS PLAYER HAS SPENT ON THIS WAVE
PLASTDTH EQU 0200H ;UHL ELAPSED TIME SINCE LAST PLAYER DEATH
PITIME EQU 0220H ;UHW TIME LEFT FOR ENTERING INITIALS
PDTHFLAG EQU 0230H ;UHW IF = 1, THE GUY IS DEAD
PTOTTIME EQU 0240H ;UHL TOTAL TIME OF THIS CREDIT
PLIFETIME EQU 0260H ;UHL TIME THIS GUY HAS BEEN ALIVE
PSTARTESC EQU 0280H ;UHW FLAG TO SHOW START BUTTON PUSHED FOR ESCAPE
PSWITCHESC EQU 0290H ;UHW FLAG TO SHOW BUTTON ACTION
PENRGSIZ EQU 02A0H ;UHL INC/DEC SIZE OF PLAYER ENERGY
PHITBOXUL EQU 02C0H ;UHL [Y,X] UL SCREEN AREA TO SCORE HITS
PHITBOXLR EQU 02E0H ;UHL [Y,X] LR SCREEN AREA TO SCORE HITS
PLASTLPLOT EQU 0300H ;UHL LAST ENERGY LEVEL PLOTTED
PLASTGPLOT EQU 0320H ;UHW LAST GUN POWER LEVEL PLOTTED
PGUNMODE EQU 0330H ;UHW CURRENT GUN MODE 0 = KILL, ~0 = STUN
PDPRIORITY EQU 0340H ;UHW CURRENT DISPLAY EFFECT PRIORITY
PDTIME EQU 0350H ;UHW CURRENT DISPLAY EFFECT TIME
PGUNMULT EQU 0360H ;UHL GUN ENERGY BAR MULTIPLIER
PINVINCIBLE EQU 0380H ;UHW IF <> 0, PLAYER IS INVINCIBLE
PPOWERTYPE EQU 0390H ;UHW TYPE OF CURRENT POWER-UP, 0 = NONE
PLAUNCHPOS EQU 03A0H ;UHL [Y,X] SCREEN POSITION TO LAUNCH TRACERS
PEBAROBJ EQU 03C0H ;UHL PLAYER ENERGY BAR OBJECT
PEWORDOBJ EQU 03E0H ;UHL PLAYER ENERGY WORD OBJECT
PGBAROBJ EQU 0400H ;UHL PLAYER GUN BAR OBJECT
PGWORDOBJ EQU 0420H ;UHL PLAYER GUN WORD OBJECT
PGMODEOBJ EQU 0440H ;UHL PLAYER GUN MODE OBJECT
PGIRLS_SAVED EQU 0460H ;UHW Number of girls saved this wave
PUNUSED1 EQU 0470H ;UHW Unused word
PSTATUSXY EQU 0480H ;UHL [Y,X] POSITION OF PLAYER STATUS STUFF
PECOLOR EQU 04A0H ;UHW CURRENT COLOR OF ENERGY BAR
PGUNCOOL EQU 04B0H ;UHW AMOUNT OF GUN COOLANT (IN TICKS)
PDOBJ EQU 04C0H ;UHL DISPLAY EFFECT OBJECT CURRENTLY EXISTING
PLASTFLASH EQU 04E0H ;UHB LAST FLASH LAMP ACTIVATED
PROCKCNT EQU 04E8H ;UHB NUMBER OF ROCKETS CURRENTLY ON SCREEN
PSECLIFE EQU 04F0H ;UHL SECONDS PER LIFE UNIT, USED FOR MINTIME
PINITLIFE EQU 0510H ;UHW INITIAL LIFE UNITS PER CREDIT, INT ONLY
PPLASMASHOTS EQU 0520H ;UHW NUMBER OF PLASMA SHOTS LEFT FOR PLAYER
PPOWERHEADS EQU 0530H ;UHW FLAGS FOR POWERUP HEADS-UP DISPLAYS
PLASTLED EQU 0540H ;UHW WAVETIME OF LAST LED SCAN
PCHAR_COUNT EQU 0550H ;UHB INITIAL CHARACTER POSITION
PCASUALTY EQU 0558H ;UHB CASUALTIES THIS WAVE
PDAMAGE EQU 0560H ;UHW BACKGROUND DAMAGE INFLICTED BY THIS GUY
PROCKSFIRED EQU 0570H ;UHW NUMBER OF ROCKETS FIRED THIS COIN
PSCOREFLASH EQU 0580H ;UHW SCORE BOX HIT FLASH FLAG
PRLAUNCHX EQU 0590H ;UHW [X >> 8] WORLD POSITION TO LAUNCH ROCKETS
;PRESERVE1 EQU 0590H ;UHW RESERVED
;PRESERVE2 EQU 05A0H ;UHW RESERVED
PTRACETIME EQU 05A0H ;UHL TIME OF LAST TRACER CREATION
;PDSIZE EQU 05B0H ;SIZE OF PLAYER DATA BLOCK
PDSIZE EQU 05C0H ;SIZE OF PLAYER DATA BLOCK
*NUMBER OF PLAYER STATUS OBJECTS
NSTATUSOBJS .EQU 5
PIZPOS .EQU -07000H ;GET A WAY WAY OUT ZPOS FOR THE PLAYER CURSOR
*PLAYER GUN CONTROL
MAX_GUNPOWER .EQU 220 ;THIS IS THE MAXIMUM GUN POWER
GUN_INCREMENT .EQU 1 ;ADD THIS MUCH POWER TO GUN EACH TICK
GUN_DECREMENT .EQU 4 ;RELIEVE GUN OF THIS POWER PER SHOT
MIN_GUN_ON .EQU 2 ;MINIMUM GUN ON TIME
MAX_GUN_ON .EQU 5 ;MAXIMUM GUN ON TIME
MIN_GUN_OFF .EQU 1 ;MINIMUM GUN OFF TIME
MAX_GUN_OFF .EQU 4 ;MAXIMUM GUN OFF TIME
GUN_COIL_ON .EQU 2 ;TICKS TO KEEP GUN COIL ON
*PLAYER GUN POWER UP TYPES
*PLAYER GUN POWER UP SHOTS
GUNCOOL_TIME .EQU 420
RAPID_SHOTS .EQU 200 ;NUMBER OF RAPID FIRE SHOTS
SUPER_SHOTS .EQU 50 ;NUMBER OF SUPER_SHOTS
*PLAYER GUN MODE EQUATES
GMODE_KILL .EQU 0
GMODE_STUN .EQU 1
GMODE_OFF .EQU 2
*
*SCORE AREA EQUATES
N1P1SCRAD EQU [0,0] ;1 PLAYER 1 SCORE ADDRESS
N2P1SCRAD EQU [0,0] ;2 PLAYER 1 SCORE ADDRESS
N2P2SCRAD EQU [0,266] ;2 PLAYER 2 SCORE ADDRESS
N3P1SCRAD EQU [0,0] ;3 PLAYER 1 SCORE ADDRESS
N3P2SCRAD EQU [0,134] ;3 PLAYER 2 SCORE ADDRESS
N3P3SCRAD EQU [0,268] ;3 PLAYER 3 SCORE ADDRESS
PSCOREOF EQU [2,36] ;DIGITAL SCORE DISPLAY OFFSET
PBOMBOF EQU [13,52] ;DIGITAL BOMB DISPLAY OFFSET
PICONOF EQU [11,0] ;BOMB ICON OFFSET
PBOXSIZ EQU [22,134] ;SIZE OF SCORE BOX
SCRSPC EQU [0,12] ;SPACING BETWEEN SCORE DIGITS
SCRCTR EQU [0,0] ; CENTERING LOC FOR PRESS START
SCRERA EQU [10,-16] ; SCORE BOX ERASE
SCRERAS EQU [12,82] ; SCORE BOX ERASE SIZE
CRDBOX EQU [22,134] ;4 PLAYER CREDIT BOX IS HERE
CRDSIZE EQU [8,134] ;AND THIS IS THE SIZE
CRDTXT EQU [2,65] ;TEXT ADD ON
CRDNUM EQU [9,11] ;CREDIT NUMBER ADD ON
PBOXPOWER EQU [44,67] ;Offset from PSCRAD as target for flying powerup
*
*ENERGY BAR OFFSETS
*
NNRGBLKS EQU 1 ;MAX # OF DISPLAYABLE ENERGY BLOCKS
NNRGUNIP EQU 99 ;# OF ENERGY UNITS/BLOCK
NENERGY EQU NNRGBLKS*NNRGUNIP ;MAX NUMBER OF DISPLAYABLE ENERGY UNITS
*
*GUN ENERGY BAR
*
GUNENERGY EQU 115 ;NUMBER OF DISPLAYABLE GUN ENERGY UNITS
*
*POSITIONS OF PLAYER STATUS BARS
*
P1STATUSXY EQU [240,0]
P2STATUSXY EQU [240,134]
P2STATUSXY2 EQU [240,268] ;Position when NPLAYERS = 2
P3STATUSXY EQU [240,268]
*
*HIT BOXES FOR ENEMIES SHOOTING DIRECTLY AT THE PLAYER
*
*1 PLAYER ONLY GAME
N1P1HITBOX_UL .EQU [SCORE_HEIGHT,0]
N1P1HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH]
*2 PLAYER GAME
N2P1HITBOX_UL .EQU [SCORE_HEIGHT,0]
N2P1HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH/2]
N2P2HITBOX_UL .EQU [SCORE_HEIGHT,SCREEN_WIDTH/2]
N2P2HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH]
*3 PLAYER GAME
N3P1HITBOX_UL .EQU [SCORE_HEIGHT,0]
N3P1HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH/3]
N3P2HITBOX_UL .EQU [SCORE_HEIGHT,SCREEN_WIDTH/3]
N3P2HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH*2/3]
N3P3HITBOX_UL .EQU [SCORE_HEIGHT,SCREEN_WIDTH*2/3]
N3P3HITBOX_LR .EQU [SCREEN_HEIGHT,SCREEN_WIDTH]
*
*FLAG EQUATES FOR "POWERUP_DISPATCH"
LIFE .EQU 1
**************************************************************************
* *
* OBJECT I.D. EQUATES *
* 15 0 *
* OID FORMAT -- SSSS STTT TIII IIPP new *
* TTTT IIII ISSS SSPP almost new *
* ZMPP TTTT SSSS IIII old *
* Z = SET, LYING ON GROUND *
* M = MISCELLANEOUS *
* P = RESERVED FOR PLAYERS *
* T = OBJECT TYPE *
* S = SUPPLEMENTAL LIST # *
* I = IDENTIFIER(SUB-TYPE) *
* *
**************************************************************************
;xxxx x000 0000 0000 (OID) xxxx=bit positions of supp field
;If # of bits changed, fix size of ram table SUPPLSTS
SR_SUPP .set 11 ;knock off bottom bits
SL_SUPP .set 27 ;32-#bits of supp field
SR_POID .EQU 30 ;SHIFTS TO ISOLATE PLAYER NUMBER FROM POID
SL_POID .EQU 30
* I WOULD LIKE TO HAVE MASKS FOR EACH FIELD OF OID ...
MASK_SUPP .EQU 0F800H ;Bits of supplemental fields
MASK_TYPE .EQU 00780H ;Bits of type field
MASK_ID .EQU 0007CH ;Bits of sub-type field
MASK_PLAYER .EQU 3H ;Bits of player field
BIT_ID .equ 2 ;Bits to shift to right align this field
*
*GENERIC OBJECT SUPPLEMENTAL I.D. EQUATES
*
SUPP_0 .EQU 0
SUPP_1 .EQU 00800H ;Player supplemental list
SUPP_2 .EQU 01000H ;Enemy supplemental list
SUPP_3 .EQU 01800H ;Powerup supplemental list
SUPP_4 .EQU 02000H ;Background object list
SUPP_5 .EQU 02800H ;Friend(Innocent) supplemental list
SUPP_6 .EQU 03000H
SUPP_7 .EQU 03800H
SUPP_8 .EQU 04000H
SUPP_9 .EQU 04800H
SUPP_10 .EQU 05000H
SUPP_11 .EQU 05800H
SUPP_12 .EQU 06000H
SUPP_13 .EQU 06800H
SUPP_14 .EQU 07000H
SUPP_15 .EQU 07800H
*
*GENERIC OBJECT SUBTYPE I.D. EQUATES
*
ID_0 .EQU 0
ID_1 .EQU 004H
ID_2 .EQU 008H
ID_3 .EQU 00CH
ID_4 .EQU 010H
ID_5 .EQU 014H
ID_6 .EQU 018H
ID_7 .EQU 01CH
ID_8 .EQU 020H
ID_9 .EQU 024H
ID_10 .EQU 028H
ID_11 .EQU 02CH
ID_12 .EQU 030H
ID_13 .EQU 034H
ID_14 .EQU 038H
ID_15 .EQU 03CH
ID_16 .EQU 040H
ID_17 .EQU 044H
ID_18 .EQU 048H
ID_29 .EQU 074H
ID_30 .EQU 078H
ID_31 .EQU 07CH
*
*PROCESS AND OBJECT TYPE AND CLASS EQUATES
*
TYPE_PLAYER .EQU SUPP_1
TYPE_POWERUP .EQU 00080H|SUPP_3
TYPE_FRIEND .EQU 00100H|SUPP_5
TYPE_JUNK .EQU 00300H
TYPE_TEXT .EQU 00480H
TYPE_UNIV .EQU 00580H|SUPP_4
TYPE_GRND .EQU 00680H|SUPP_15 ;USED FOR GROUND SCANNER
TYPE_NULL .EQU 00700H
TYPE_ENEMY .EQU 00700H|SUPP_2
TYPE_BLOWUP .EQU 00780H|SUPP_14 ;USED FOR SMART BOMB EXECUTION
*
*NULL PROCESS AND OBJECT IDENTIFIER EQUATES
*
*
*ENEMY PROCESS AND OBJECT IDENTIFIER EQUATES
*
N_ENEMIES .EQU 16 ;NUMBER OF DIFFERENT ENEMIES
ID_BGNDOBJ .EQU ID_0 ;DESTRUCTIBLE BACKGROUND OBJECT
ID_ROCKET .EQU ID_1 ;ROCKET BOMB
ID_EXPLOSION .EQU ID_2 ;EXPLOSION
ID_NONBOY .EQU ID_3 ;NEW ORDER BOY
ID_BZERK .EQU ID_4 ;Berzerker
;ID_POPBOY .EQU ID_5 ;POPUP NEW ORDER BOY
ID_BUGBOY .EQU ID_6 ;ON DA BUS NEW ORDER BOY
ID_COG .EQU ID_7 ;COG HEAD
ID_BTR .EQU ID_8 ;TROOP TRANSPORT
ID_MONDOR .EQU ID_9 ;MONDOR THE CARNIVOR
ID_CAT .EQU ID_9 ;The kitty kat
ID_BEEKPR .EQU ID_10 ;BEEKEEPER DUDE
ID_COPTER .EQU ID_11 ;HELICOPTER
ID_DESK .EQU ID_11 ;The mech desk.
ID_BOSSBUG .EQU ID_11 ;DA BIG BUG
*
*POWERUP PROCESS AND OBJECT IDENTIFIER EQUATES
*
ID_LIFE EQU ID_0
ID_SBOMB EQU ID_1
ID_PROCK EQU ID_2
ID_CD EQU ID_3
*
*FRIEND PROCESS AND OBJECT IDENTIFIER EQUATES
*
OID_P1 EQU 00001H ;PLAYER 1 OBJECT ID
OID_P2 EQU 00002H ;PLAYER 2 OBJECT ID
OID_P3 EQU 00003H ;PLAYER 3 OBJECT ID
OID_PROCKET EQU TYPE_PLAYER|ID_ROCKET
OID_PEXPLOSION EQU TYPE_PLAYER|ID_EXPLOSION
OID_P1HUP EQU TYPE_JUNK|OID_P1 ;PLAYER 1 HEADS UP OBJECTS
OID_P2HUP EQU TYPE_JUNK|OID_P2 ;PLAYER 2 HEADS UP OBJECTS
OID_JUNK EQU TYPE_JUNK ;SHIT THAT CLUTTERS THE PLAYFIELD
OID_ATTRACT EQU TYPE_JUNK|ID_1 ;ATTRACT MODE OBJECTS
OID_DAMAGE EQU TYPE_JUNK|ID_2 ;PASTE ON DAMAGE OBJECTS
OID_DIR EQU TYPE_JUNK|ID_3 ;DIRECTIONAL SYMBOLS
OID_SHAD EQU TYPE_JUNK|ID_4 ;SHADOW OBJECTS
OID_SOLO_DIR EQU TYPE_JUNK|ID_5 ;SOLO DIRECTIONAL
OID_TEXT EQU TYPE_TEXT ;"OBJECT LIST" TEXT
OID_BMES1 EQU TYPE_TEXT|ID_1 ;BUYIN MESSAGE 1 OBJECT ID
OID_BMES2 EQU TYPE_TEXT|ID_2 ;BUYIN MESSAGE 2 OBJECT ID
OID_BTIME EQU TYPE_TEXT|ID_3 ;BUYIN TIMER OBJECT ID
OID_TEXTW EQU TYPE_TEXT|ID_4 ;TEXT WINDOW OID
OID_BONUS EQU TYPE_TEXT|ID_5 ;BONUS SCORE OID
OID_INFOTEXT EQU TYPE_TEXT|ID_6 ;INFORMATIVE GAME PLAY TEXT
OID_GAMEOVER EQU TYPE_TEXT|ID_7 ;GAME OVER FLASHER
OID_CREDIT EQU TYPE_TEXT|ID_8 ;CREDIT MESSAGE TEXT
OID_PROMPT EQU TYPE_TEXT|ID_9 ;"READY FOR" MESSAGE
OID_PROMPT2 EQU TYPE_TEXT|ID_10 ;"PRESS START" MESSAGE
OID_CUSTOM EQU TYPE_TEXT|ID_11 ;CUSTOM MESSAGE, COINAGE, MAX CRED, ETC.
OID_REQUIRED EQU TYPE_TEXT|ID_12 ;CREDITS REQUIRED MESSAGE
OID_INIT EQU TYPE_TEXT|ID_13 ;ALPHABET OBJECT ID FOR HS ENTRY
OID_P1TEXT EQU TYPE_TEXT|OID_P1 ;PLAYER 1 SPECIFIC TEXT
OID_P2TEXT EQU TYPE_TEXT|OID_P2 ;PLAYER 2 SPECIFIC TEXT
OID_P1MOTEXT EQU OID_P1|OID_CUSTOM ;MORE PLAYER 1 TEXT
OID_P2MOTEXT EQU OID_P2|OID_CUSTOM ;MORE PLAYER 2 TEXT
OID_UNIV EQU TYPE_UNIV
*
*ENEMY OBJECT I.D.s
*
OID_ENEMY EQU TYPE_ENEMY
OID_ONFIRE_ENEMY EQU TYPE_ENEMY
OID_EROCKET EQU TYPE_ENEMY|ID_ROCKET
OID_NONBOY EQU TYPE_ENEMY|ID_NONBOY ;NON-BOY OBJECT
OID_BZERK EQU TYPE_ENEMY|ID_BZERK ;Berzerker object
;OID_POPBOY EQU TYPE_ENEMY|ID_POPBOY ;NON-BOY OBJECT
OID_BUGBOY EQU TYPE_ENEMY|ID_BUGBOY ;NON-BOY OBJECT
OID_COG EQU TYPE_ENEMY|ID_COG ;COGHEAD OBJECT
OID_BTR EQU TYPE_ENEMY|ID_BTR ;TROOP TRANSPORT
OID_MONDOR EQU TYPE_ENEMY|ID_MONDOR ;MONDOR THE CARNIVOR
OID_CAT EQU TYPE_ENEMY|ID_CAT ;The kitty kat object
OID_BEEKPR EQU TYPE_ENEMY|ID_BEEKPR ;BEEKEEPER DUDE
OID_COPTER EQU TYPE_ENEMY|ID_COPTER ;HELICOPTER
OID_DESK EQU TYPE_ENEMY|ID_DESK ;The mech desk
OID_BOSSBUG EQU TYPE_ENEMY|ID_BOSSBUG ;DA BOSS BUG
*
*POWERUP OBJECT I.D.s
*
OID_LIFE EQU TYPE_POWERUP|ID_LIFE ;LIFE POWERUP PROCESS
OID_SBOMB EQU TYPE_POWERUP|ID_SBOMB ;SMART BOMB
OID_PROCK EQU TYPE_POWERUP|ID_PROCK ;ROCKET
OID_CD EQU TYPE_POWERUP|ID_CD ;CD
OID_BLOWUP EQU TYPE_BLOWUP
OID_GRND EQU TYPE_GRND
**************************************************************************
* *
* PROCESS I.D. EQUATES *
* 15 0 *
* PID FORMAT -- NEWO IIII IIII IIPP new *
* NEWI IIPP IIII IIII old *
* N = NON-DESTRUCTIBLE *
* E = WAVE END WAIT *
* W = WAVE END WILL NOT KILL THESE *
* O = RESERVED FOR PROCESSES ASSOCIATED WITH OBJECTS OF LIKE I.D.s *
* I = PROC. SPECIFIC I.D. *
* P = RESERVED FOR BASE PLAYER PROCESS I.D.'S *
* *
**************************************************************************
M_INDESTRUCT EQU 8000H ;MASK FOR NON-DESTRUCTIBLE BIT
M_WAVEWAIT EQU 4000H ;MASK FOR WAVE END WAIT BIT
M_OID EQU 1000H ;MASK FOR OBJECT ID PROCESSES
PID_IND EQU 000CH ;INDEPENDENT PROCESS
PID_INDW EQU 200CH ;WAVE END WILL NOT KILL IND. PROCESS
PID_INDE EQU 400CH ;WAVE END WAIT INDEPENDENT PROCESS
PID_ATT EQU 0008H ;ATTRACT MODE PROCESS
PID_TFADE EQU 801CH ;Sound track fader process.
*BASE PROCESS IDs FOR PLAYERS
P1PID EQU 0001H ;BASE PROCESS I.D. FOR PLAYER 1 PROCESSES
P2PID EQU 0002H ;BASE PROCESS I.D. FOR PLAYER 2 PROCESSES
P3PID EQU 0003H ;BASE PROCESS I.D. FOR PLAYER 3 PROCESSES
PNUM_SLL EQU 30 ;SLL USED TO ISOLATE PLAYER #
PNUM_SRL EQU 30 ;SRL USED TO ISOLATE PLAYER #
*THE FOLLOWING I.D'S ARE OR'D INTO THE ABOVE PLAYER BASE PROCESS I.D.S
*TO FORM THE COMPLETE PROCID.
*!!!WARNING!!! !!!WARNING!!!*
* PLAYER OR-IN IDs ARE NOT ALLOWED TO USE BITS 10,11 & 12 *
*!!!WARNING!!! !!!WARNING!!!*
PCPID EQU 0000H ;PLAYER CONTROL PROCESS
PID_PINVIN EQU 0010H ;PLAYER INVINCIBILITY PROCESS
PSTRTPID EQU 8020H ;PLAYER START PROCESS IDENTIFIER
PID_SHUTDOWN EQU 0030H ;PLAYER SHUTDOWN PROCESS
PFIREPID EQU 2010H ;PLAYER FIRE BUTTON PROCESS
PBOMBPID EQU 2020H ;PLAYER BOMB BUTTON PROCESS
PINITIALPID EQU 2040H ;PLAYER INITIAL ENTRY
*
*COMPLETE PROCESS I.D.S
*
PID_ANIMP EQU 0600H ;ANIMATOR PROCESS I.D.
PID_GUN EQU 0610H ;GUN WATCH PROCESS
PID_FRAG EQU 0620H ;FrAgger Proc
PID_SKY EQU 0630H ;SKY COLOR FADE PROCESS I.D.
PID_FADE EQU 0640H ;MUSIC FADE PROCESS
PID_JUNK EQU 0900H ;JUNK PROCESS
PID_SKYTEXT EQU 0910H ;SKYNET TEXT PRINTER
PID_BONUS EQU 09A0H ;BONUS PROCESS
PID_TCYCLE equ 0B20h ; temporary color cycle
PID_GOODIE EQU 0B40H ;TEMPORARY GOODIE ANIMATIONS
PID_COLL EQU 0C00H ;COLLISION PROCESS I.D. RES C00 - CF0
PID_DAMCC EQU 0CC0H ;DAMAGE COLOR CYCLE PROCESSES
PID_SCROLL EQU 0D60H ;THE CURRENT SCROLL PROCESS I.D.
PID_MASTERDP EQU 0D70H ;THE MASTER ENEMY DISPATCH PROCESS
PID_BAITER EQU 0D90H ;ENFORCER BAITER PROCESS
PID_POWERUPD0 EQU 0DA0H ;POWER-UP DISPATCHER 0
PID_POWERUPD1 EQU 0DB0H ;POWER-UP DISPATCHER 1
PID_POWERUPD2 EQU 0DC0H ;POWER-UP DISPATCHER 2
PID_POWERUPD3 EQU 0DD0H ;POWER-UP DISPATCHER 3
*
*PROCESSES DIRECTLY ASSOCIATED WITH OBJECTS OF LIKE I.D.s
* THESE ARE USED FOR DISPATCHED ITEMS i.e. ENEMIES, HUMANS, POWERUPS
*
PID_NONBOY EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_NONBOY ;NON-BOY PROCESS
PID_BZERK EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_BZERK ;Berzerker process
PID_COG EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_COG ;COGHEAD PROCESS
PID_MONDOR EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_MONDOR ;MONDOR PROCESS
PID_COPTER EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_COPTER ;HELICOPTER PROCESS
PID_DESK EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_DESK ;MECH DESK PROCESS
PID_BOSSBUG EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_BOSSBUG ;DA BOSS BUG
PID_BEEKPR EQU M_OID|(TYPE_ENEMY & MASK_TYPE)|ID_BEEKPR ;BEEKEEPER GENERATOR
PID_POWERUP EQU M_OID|(TYPE_POWERUP & MASK_TYPE) ;POWERUP PROCESS
*
*"WAVE END WILL NOT KILL" PROCESSES
*
PID_UNIV EQU 2A00H ;UNIVERSE PROCESS
PID_BGND EQU 2B00H ;BGND UPDATE PROCS RESERVE 2B0X -2BFX
PID_COLOR EQU 2CC0H ;COLOR CYCLE PROCESSES
PID_PFADE EQU 2D00H ;FADER PROCESSES ( LOW BYTE = PAL )
PID_CURSOR EQU 2C00H ;GUN CURSOR UPDATE PROCESS
*
*"WAVE END WAIT" PROCESSES
*
PID_BUYIN EQU 4DE0H ;END O' GAME BUY-IN WAIT PID
*
*INDESTRUCTIBLE PROCESSES
*
PID_LC EQU 08F00H ;LEFT COIN
PID_CC EQU 08F20H ;CENTER COIN
PID_RC EQU 08F40H ;RIGHT COIN
PID_XC EQU 08F60H ;FOURTH COIN SLOT
PID_SLAM EQU 08F80H ;SLAM TILT PROCESS
PID_COINCTR EQU 08FA0H ;COIN COUNTER PROCESS
PID_PRINT EQU 08FC0H ;BACKGROUND PRINTER PROCESS
PID_VOLRESET EQU 08FD0H ;Delayed volume set process
PID_VOLUME EQU 08FE0H ;Volume adjust process
PID_VOLUME_DISP EQU 08FF0H ;Volume display page deleter process
PID_DIAG EQU 08100H ;DIAGNOSTICS PROCESS
*
*DAMAGE ODATA VARIABLES
*
DAMAGE_HITS .EQU ODATA ;UHW NUMBER OF HITS AT POINT OF DAMAGE
DAMAGE_PARTID .EQU ODATA+10H ;UHB PART I.D. OF DAMAGED PART
*
*COIL #'S FOR GUN RECOIL
*
P1_RECOIL .EQU 0
P2_RECOIL .EQU 1
P3_RECOIL .EQU 2
*
*PLAYER TRIGGER SWITCH NUMBERS
*
P1TRIGGER .EQU 4
P2TRIGGER .EQU 12
P3TRIGGER .EQU 20
P1BOMB .EQU 5
P2BOMB .EQU 13
P3BOMB .EQU 21
*
*FRANIM FLAG MASKS
SPAWNP EQU 8000H
FLIPBITS EQU 4000H
NEWPALET EQU 2000H
DELTAXZ EQU 1000H
DELTAY EQU 800H
MAKESOUND EQU 200H
SCRIPT EQU 100H
**************************************************************************
* *
* PALETTE ALLOCATOR EQUATES *
* *
**************************************************************************
*PALETTE ALLOCATION RAM
*FOR EACH COLOR PALETTE:
*PALETTE ID 32 BITS, PALETTE COUNT 16 BITS, PALETTE TIME 16 BITS.
*IF PALCNT>0 PALETTE IS ALLOCATED.
*IF (PALCNT=0) & (CURTIME-PALTIME >= 1) THEN PALETTE IS FREE
*
.IF YUNIT
.IF TUNIT
NUMPAL .SET 128 ;NUMBER OF DYNAMICS ALLOCATED PALETTES
NMFPAL .SET 100 ;NUMBER OF FOREGROUND PALETTES
NMBPAL .SET 28 ;NUMBER OF BACKGROUND PALETTES
.ELSE
NUMPAL .SET 16 ;NUMBER OF DYNAMICS ALLOCATED PALETTES
NMFPAL .SET 12 ;NUMBER OF FOREGROUND PALETTES
NMBPAL .SET 4 ;NUMBER OF BACKGROUND PALETTES
.ENDIF
.ELSE
NUMPAL .SET 32 ;NUMBER OF DYNAMICS ALLOCATED PALETTES
NMFPAL .SET 16 ;NUMBER OF FOREGROUND PALETTES
NMBPAL .SET 16 ;NUMBER OF BACKGROUND PALETTES
.ENDIF
*
*PALETTE ENTRY DATA STRUCTURE
PALID .SET 0 ;PALETTE I.D. (32)
PALCNT .SET 020H ;PALETTE ALLOCATION COUNT (16)
PALTIME .SET 030H ;TIME WHEN PAL WAS DELETED
PALRSIZ .SET 040H ;SIZE OF PALETTE ALLOCATION RAM
*
*PALETTE TRANSFER RAM DATA STRUCTURE
PLDCNT .SET 0 ;COLOR COUNT (16)
PALSRC .SET 010H ;SOURCE ADDRESS OF PALETTE COLOR DATA (32)
PALDEST .SET 030H ;DESTINATION PALETTE|START COLOR (16)
PTRSIZ .SET 040H ;SIZE OF EACH CELL
NUMPTR .SET 32 ;NUMBER OF TRANSFERS ALLOWED
*PALETTE MODE STUFF
M_FADE_WHITE EQU 1
M_DONT_FADE_RED EQU 2
M_DONT_FADE_GREEN EQU 4
M_DONT_FADE_BLUE EQU 8
B_FADE_WHITE EQU 0
B_DONT_FADE_RED EQU 1
B_DONT_FADE_GREEN EQU 2
B_DONT_FADE_BLUE EQU 3
;******* FLAGS FOR Fragger scripts ********
FRGBOG .set 001H
FRGGCOL .set 002H
FRGNOFLY .set 004H
FRGNOFLP .set 008H
FRGRND .set 010H
FRGPAL .set 020H
B_FRGBOG .set 0
B_FRGGCO .set 1
B_FRGNOFLY .set 2
B_FRGNOFLP .set 3
B_FRGRND .set 4
B_FRGPAL .set 5
*
*FIXED COLOR CYCLE EQUATES
*
CYCOLORS .EQU COLRAM+(300H*2) ;CYCLABLE COLORS LAST LINE OF 1st PALETTE
COLROFFST .EQU 090H ;OFFSET TO START COLORS
COLRCNT .EQU 6 ;TOTAL NUMBER OF COLORS TO CYCLE
;PCYCLEPAL .EQU 0H ;PLAYER CYCLERS
;PCOLROFFST .EQU 300H+090H ;OFFSET TO 1st PLAYER CYCLER
;PCOLRCNT .EQU 2 ;NUMBER OF PLAYER CYCLERS
*
*GAME STATE CONSTANTS
INGAME .EQU 10H
ININTRO .EQU 18H
INPLAY .EQU 20H
INAMODE .EQU 30H
INDIAG .EQU 40H
INGAMEOV .EQU 50H
INEPILOG .EQU 60H
*
*DISPLAY FLAGS FOR FORE/BACKGROUND OBJECTS
M_SPAWNP EQU 80H ;SPAWN A PROCESS WITH THIS OBJECT IN A8
B_SPAWNP EQU 7
*
*BUY-IN WINDOW CONSTANTS
*
BUYTIME .EQU 10
BUYSLP .EQU 4
BUYTICK .EQU 52/BUYSLP
*
*BACKGROUND UPDATER EQUATES
BLSTSTRT .EQU 08000H
BLSTEND .EQU 08001H
**************************************************************************
* *
* UNIVERSE STUFF *
* *
**************************************************************************
CHUNKS .EQU 1 ;TRAVERSE IN 2^CHUNK PARTS
BGLINK_MEM_SIZE .set 200*1024*8 ; 300 Kbytes
MAX_UNIV_OBJS EQU (BGLINK_MEM_SIZE/BLOCK_SIZE)
OULINK EQU OVAR7 ;UHL UNIVERSE RAM LINK ADDRESS
OENEMYANIM EQU ODATA ;UHL ENEMY GENERATOR ANIM SCRIPT
OATEROCKET EQU ODATA+020H ;UHL FLAG ROCKET COLLISION (ROCKET OBJECT)
OGTIME EQU ODATA+040H ;UHL TIME AT LAST GUN HIT
***********
* NOTE! * ENEMY GENERATORS USE SOME ODATA!! See gxuniseq.asm for defines.
***********
OU_ODATA EQU ODATA+0100H ;Beginning of usable ODATA for universe objects
**************************************************************************
* *
* FRAGGER STUFF *
* *
**************************************************************************
FPDATA EQU PDATA+20H*11 ;BEGINNING OF USABLE PDATA AREA IN FragProc
**************************************************************************
* *
* GENERATION X - DIPSWITCH EQUATE FILE *
* *
* COPYRIGHT (C) 1993 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
* *
* *
**************************************************************************
;
; DIP SWITCH
;
DPMIRROR EQU 0001H ;MIRROR DISPLAY SWITCH
DPMIRROR_RAW .EQU 0001H ;RAW POSITION FROM PORT (Steve & John fixed it!)
DPUSECMOS EQU 0002H ;USE CMOS MASK
DPCOINAGE EQU 001CH ;COINAGE MASK
SR_DPCOINAGE EQU 2 ;shift count to Right justify COINAGE bits
DPCREDITS EQU 00E0H ;CREDITS TO START/CONTINUE MASK
SR_DPCREDITS EQU 5 ;shift count to Right justify CREDITS bits
DPCOUNTRY EQU 0300H ;COUNTRY MASK
SR_DPCOUNTRY EQU 8 ;shift count to Right justify COUNTRY bits
DPUNUSED1 EQU 0400H ;UNUSED BIT 1
DPCOUNTER EQU 0800H ;NUMBER OF COIN COUNTERS
DPPLAYERS EQU 3000H ;NUMBER OF HARDWARE PLAYERS
SR_DPPLAYERS EQU 12 ;shift count to Right justify PLAYERS bits
DPFREEZE EQU 4000H ;FREEZE SWITCH
DPTEST EQU 8000H ;TEST SWITCH
;
; 0 = OFF
; 1 = ON
;
; THANKS TO MARK LOFFREDO FOR REAMING ME OVER AND REVERSING THE
; DIP SWITCHES
;
; DPMIRROR ( DS1 - 1 )
;
; 0 = VIDEO SCREEN VIEWED THROUGH A MIRROR (IN CABINET)
; 1 = VIDEO SCREEN VIEWED NORMALLY (FOR TEST BENCH)
;
; DPUSECMOS ( DS1 - 2 )
;
; 0 = DIP SWITCH COINAGE USED
; 1 = CMOS COINAGE USED
;
; DPRIGHTSLOT ( DS1 - 5 4 3 )
;
; 000 = 1 COIN / 1 CREDIT
; 001 = 2 COIN / 1 CREDIT
; 010 = 3 COIN / 1 CREDIT
; 011 = 4 COIN / 1 CREDIT
; 100 = 1 COIN / 2 CREDIT
; 101 = 1 COIN / 3 CREDIT
; 110 = 1 COIN / 4 CREDIT
; 111 = FREEPLAY
;
; DPUNUSED ( DS1 - 6 )
;
; DPUNUSED ( DS1 - 7 )
;
; DPUNUSED ( DS1 - 8 )
;
; DPCOUNTRY ( DS2 - 2 1 )
;
; 00 = USA
; 01 = GERMAN
; 10 = FRENCH
; 11 = OUTERSPACE
;
; DPUNUSED ( DS2 - 3 )
;
; DPCOUNTER ( DS2 - 4 )
;
; 0 = 1 COUNTER
; 1 = 2 COUNTERS
;
; DPPLAYERS ( DS2 - 6 5 )
;
; 00 = GAME CONFIGURED FOR 3 PLAYERS
; 01 = GAME CONFIGURED FOR 2 PLAYERS
; 10 = GAME CONFIGURED FOR 1 PLAYER
; 11 = GAME CONFIGURED FOR 1 PLAYER
;
; DPFREEZE ( DS2 - 7 )
;
; 0 = DON'T FREEZE SCREEN
; 1 = FREEZE SCREEN ( NOTE : MUST HAVE A TRANSITION TO WORK )
;
; DPTEST ( DS2 - 8 )
;
; 0 = NORMAL NON-TEST
; 1 = TEST MODE
;
**************************************************************************
* *
* AUDIT AND ADJUSTMENT EQUATE FILE *
* *
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
*OFTEN REFERENCED CMOS ROUTINES
.GLOBAL GET_ADJ, AUD, AUD1, STORE_AUDIT, CLR_AUDR, GET_AUD, BAD_AUD
*
* AUDITS
*
* AUDITS ARE HANDLED BY AUDITS NUMBER OFF OF THE BASE
* OF THE AUDIT REGION
*
*
* IF "CHUTES" VALUE IS CHANGED....EXTRA VALUES MUST
* BE PUT IN THIS TABLE. (AND ADJUSTMENT TABLE OF COURSE)
*
AUDNULL EQU 0
AUDLCOIN EQU 1 ;TOTAL COINS IN LEFT CHUTE
AUDCCOIN EQU 2 ;TOTAL COINS IN CENTER CHUTE
AUDRCOIN EQU 3 ;TOTAL COINS IN RIGHT CHUTE
AUD4COIN EQU 4 ;TOTAL COINS IN FOURTH CHUTE
AUDSCOIN EQU 5 ;TOTAL SERVICE CREDITS
AUDPAIDC EQU 6 ;TOTAL PAID CREDITS
*
FRST_C EQU AUDLCOIN ;FOR CLEARING COINS
LAST_C EQU AUDPAIDC
*
AUDSTART EQU 7 ;PLAYER STARTS
AUD1TIME EQU 15 ;TIME 1 PLAYER ONLY
AUD2TIME EQU 16 ;TIME 2 PLAYER SIMULTANEOUS
AUD3TIME EQU 17 ;TIME 3 PLAYER SIMULTANEOUS
AUDPTIME EQU 19 ;TOTAL PLAY TIME
AUDAVGTL EQU 20 ;AVERAGE TIME/LIFE
AUDAVGTC EQU 21 ;AVERAGE TIME/CREDIT
AUDMAXWAVE EQU 22 ;MAX WAVE REACHED
AUDDEARNED EQU 25 ;DINOS EARNED
AUDMAXBOZO EQU 26 ;MAXIMUM BOZO LEVEL ACHIEVED
AUDSLAMS EQU 27 ;NUMBER OF TIMES BEEN SLAMMED
AUDUPTIME EQU 28 ;GAME TOTAL UPTIME ( POWER ON TIME )
AUDCONTOFFER EQU 29 ;GAME CONTINUES OFFERED
AUDCONTTAKEN EQU 30 ;GAME CONTINUES TAKEN
AUDONTIME EQU 31 ;GAME POWER ON TIME
AUDAUTO EQU 32 ;AUTO CYCLE PASSES
AUDDOGGY EQU 33 ;WATCHDOG HITS
AUDAVGGC EQU 34 ;AVERAGE GAME COST
AUDNUMTL EQU 35 ;DIVISOR FOR TIME/LIFE
AUDNUMTC EQU 36 ;DIVISOR FOR TIME/CREDIT
AUDNUMTG EQU 37 ;GAMES COMPLETED
AUDWARNING EQU 39 ;SOFTWARE WARNING
AUDBADTRAP EQU 40 ;SOFTWARE TRAPS
AUDSECURITY EQU 41 ;SECURITY BREECH COUNT
AUDWAVECNT EQU 42 ;COUNTER FOR AVG WAVE REACHED
AUDFINISH EQU 43 ;GAMES THAT HAVE BEEN FINISHED
*
LAST_AUDIT EQU 43 ;LAST AUDIT FOR AUDIT CLEAR INFO
*
FRSTGAUD EQU AUDSTART
LASTGAUD EQU LAST_AUDIT
AUDCAL1UL EQU LAST_AUDIT+1 ;PLAYER 1 UPPER LEFT CALIBRATION
AUDCAL1LR EQU LAST_AUDIT+2 ;PLAYER 1 LOWER LEFT CALIBRATION
AUDCAL2UL EQU LAST_AUDIT+3 ;PLAYER 2 UPPER LEFT CALIBRATION
AUDCAL2LR EQU LAST_AUDIT+4 ;PLAYER 2 LOWER LEFT CALIBRATION
AUDCAL3UL EQU LAST_AUDIT+5 ;PLAYER 3 UPPER LEFT CALIBRATION
AUDCAL3LR EQU LAST_AUDIT+6 ;PLAYER 3 LOWER LEFT CALIBRATION
*
CALIBRATE_START .EQU AUDCAL1UL
CALIBRATE_END .EQU AUDCAL3LR
*
* ADJUSTMENTS ARE ALL LONG WORDS REFERENCED BY ADJUSTMENT
* NUMBER.
*
ADJNULL EQU 0
ADJPRICE EQU 1 ;MASTER PRICING
ADJLMULT EQU 2 ;LEFT SLOT MULTIPLIER
ADJC1 EQU ADJLMULT ;FIRST COIN TABLE ADJUSTMENT
ADJCMULT EQU 3 ;CENTER SLOT MULTIPLIER
ADJRMULT EQU 4 ;RIGHT SLOT MULTIPLIER
ADJ4MULT EQU 5 ;FOURTH SLOT MULTIPLIER
ADJCUNIT EQU 6
ADJBUNIT EQU 7
ADJMUNIT EQU 8
ADJCDIV EQU 9
ADJFRAC EQU 10 ;NON ZERO SAYS SHOW HALF CREDITS
ADJCSTRT EQU 11 ;CREDITS REQUIRED TO START
ADJCCONT EQU 12 ;CREDITS REQUIRED TO CONTINUE
ADJCX EQU ADJCCONT ;LAST COIN TABLE ADJUSTMENT
ADJDIFF EQU 13
ADJHSRES EQU 14
ADJENERGY EQU 15 ;ENERGY PER PLAY
ADJEXTRA EQU 16 ;EXTRA MAN EVERY
ADJNUMEXTRA EQU 17 ;MAXIMUM NUMBER EXTRA MEN/COIN
ADJMUSIC EQU 18 ;ATTRACT MODE SOUND
ADJMAXC EQU 19 ;MAXIMUM CREDITS
ADJFREPL EQU 20 ;NON-ZERO MEANS FREE PLAY
ADJVIRGIN EQU 21 ;NON-ZERO MEANS 1ST 8 OF COIN ADJUST BLOCK UNTOUCHED
ADJBOMBS EQU 22 ;NUMBER OF BOMBS PER GAME
ADJ1ST6 EQU 23 ;NON-ZERO MEANS 1ST 6 UNTOUCHED.
ADJNOCPAG EQU 24
ADJBUYIN EQU 25
ADJHSON EQU 26 ;IF = 0, DON'T ALLOW HIGH SCORE ENTRY
ADJMINTIME EQU 27 ;MINIMUM TIME GUARANTEED PER CREDIT
ADJVOLUME EQU 28 ;Current sound board volume
ADJMINVOL EQU 29 ;Minimum volume allowed
ADJSWAVE EQU 30 ;Starting Wave #
LAST_ADJUST EQU 30