461 lines
12 KiB
Plaintext
Executable File
461 lines
12 KiB
Plaintext
Executable File
*SYS.EQU
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
|
|
|
|
|
|
*RACE_MODE tells us what type of race we are having
|
|
*are we doing the A to Z continuous (RM_USA)
|
|
*or are we in a single race so that we must check
|
|
* what the next leg must be
|
|
*
|
|
*
|
|
*FIRST_RACE you may only select a car (&transmission)
|
|
* before the first race, then you are stuck with
|
|
* it as long as you continue the game.
|
|
*
|
|
RM_USA .set 1
|
|
RM_SINGLE .set 2
|
|
|
|
.globl RACE_MODE
|
|
.globl FIRST_RACE
|
|
|
|
|
|
;I put this here because this ASSEMBLER DOES NOT RESOLVE
|
|
;THE SCOPE OF GLOBALS, it simply ASSUMES that all globals are not constants
|
|
COIN_ENTRY_SIZE .set 11
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*A LEVEL OF INDIRECTION IS PLACED IN THE SYSTEM
|
|
*SO THAT DIFFERENT LEVELS OF MENUS MAY BE REACHED
|
|
*
|
|
RACE_GG .set 0
|
|
RACE_SF .set 1
|
|
RACE_US101 .set 2
|
|
RACE_RW .set 3
|
|
RACE_BH .set 4
|
|
RACE_LA .set 5
|
|
RACE_DV .set 6
|
|
RACE_AZ .set 7
|
|
RACE_GC .set 8
|
|
RACE_IOWA .set 9
|
|
RACE_CH .set 10
|
|
RACE_IN .set 11
|
|
RACE_APPL .set 12
|
|
RACE_DC .set 13
|
|
RACE_USA .set 14
|
|
*----------------------------------------------------------------------------
|
|
|
|
*STRUCT TRACKSEL
|
|
TS_INDEX .set 0
|
|
*ENDSTRUCT
|
|
TS_SIZE .set 1
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
* SYSTEM MODE FLAGS/VALUES
|
|
*
|
|
MBRIDGE .set 00800h ;ON THE GG BRIDGE
|
|
MINTUNNEL .set 00400h ;INSIDE THE TUNNEL
|
|
MGO .set 00200h ;GO! RACE is ACTIVE
|
|
MHUD .set 00100h ;HUD on
|
|
MWATER .set 00080h ;INFINITY WATER on
|
|
MINFIN .set 00040h ;INFINITY SKY on
|
|
MHS .set 00020h ;HS High score entry display
|
|
MSLINE .set 00010h ;STARTING LINE
|
|
|
|
MMODE .set 0000Fh ;MASK main mode types
|
|
MINACTIVE .set 00000h ;SY network inactive node
|
|
MDIAG .set 00001h ;SY DIAGNOSTICS
|
|
MATTR .set 00002h ;SY ATTRACT
|
|
MINTRO .set 00003h ;GM the INTRO (GAME)
|
|
MGAME .set 00004h ;GM the GAME
|
|
MBONUS .set 00005h ;GM the BONUS screen
|
|
MINIT .set 00006h ;GM entering initials
|
|
MINSERT_COINS .set 00007h ;GM asking the questions more coins...
|
|
MCT .set 00008h ;GM the choose transmission
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
STARTING_TIME .set 90 ;(INTRO.ASM,BONUS.ASM)
|
|
|
|
|
|
|
|
MPH_CONVERSION .set 0.49
|
|
IMPH_CONVERSION .set 2.04 ;1/0.49
|
|
|
|
|
|
*CAR BLOCK STRUCTURE
|
|
*
|
|
CARVNUM .set 5 ; #OF CAR ROAD CONTACT POINTS
|
|
CARVSIZ .set 6 ; CAR POINT STRUCT SIZE
|
|
CARPX .set 0 ;FL CAR SUSPENSION PT X
|
|
CARPY .set 1 ;FL CAR SUSPENSION PT Y
|
|
CARPZ .set 2 ;FL CAR SUSPENSION PT Z
|
|
CARPRDYD .set 3 ;FL DELTA Y TO ROAD
|
|
CARPYV .set 4 ;FL Y VELOCITY
|
|
CARPCOL .set 5 ;UH ROAD OBJECT COLLIDED WITH
|
|
|
|
*STRUCT CARBLK
|
|
CT_PX .set 0 ;FL CAR SUSPENSION PT X (CENTERPOINT)
|
|
CT_PY .set 1 ;FL CAR SUSPENSION PT Y
|
|
CT_PZ .set 2 ;FL CAR SUSPENSION PT Z
|
|
CT_PRDYD .set 3 ;FL DELTA Y TO ROAD
|
|
CT_PYV .set 4 ;FL Y VELOCITY
|
|
CT_PCOL .set 5 ;UH ROAD OBJECT COLLIDED WITH
|
|
RF_PX .set 6 ;FL CAR SUSPENSION PT X (RIGHT FRONT)
|
|
RF_PY .set 7 ;FL CAR SUSPENSION PT Y
|
|
RF_PZ .set 8 ;FL CAR SUSPENSION PT Z
|
|
RF_PRDYD .set 9 ;FL DELTA Y TO ROAD
|
|
RF_PYV .set 10 ;FL Y VELOCITY
|
|
RF_PCOL .set 11 ;UH ROAD OBJECT COLLIDED WITH
|
|
LF_PX .set 12 ;FL CAR SUSPENSION PT X (LEFT FRONT)
|
|
LF_PY .set 13 ;FL CAR SUSPENSION PT Y
|
|
LF_PZ .set 14 ;FL CAR SUSPENSION PT Z
|
|
LF_PRDYD .set 15 ;FL DELTA Y TO ROAD
|
|
LF_PYV .set 16 ;FL Y VELOCITY
|
|
LF_PCOL .set 17 ;UH ROAD OBJECT COLLIDED WITH
|
|
LR_PX .set 18 ;FL CAR SUSPENSION PT X (LEFT REAR)
|
|
LR_PY .set 19 ;FL CAR SUSPENSION PT Y
|
|
LR_PZ .set 20 ;FL CAR SUSPENSION PT Z
|
|
LR_PRDYD .set 21 ;FL DELTA Y TO ROAD
|
|
LR_PYV .set 22 ;FL Y VELOCITY
|
|
LR_PCOL .set 23 ;UH ROAD OBJECT COLLIDED WITH
|
|
RR_PX .set 24 ;FL CAR SUSPENSION PT X (RIGHT REAR)
|
|
RR_PY .set 25 ;FL CAR SUSPENSION PT Y
|
|
RR_PZ .set 26 ;FL CAR SUSPENSION PT Z
|
|
RR_PRDYD .set 27 ;FL DELTA Y TO ROAD
|
|
RR_PYV .set 28 ;FL Y VELOCITY
|
|
RR_PCOL .set 29 ;UH ROAD OBJECT COLLIDED WITH
|
|
CAR_ONROAD .set 30 ;UH O=NOTHING,300=ROAD,310=SHOULDER,XXX=OTHER
|
|
CAR_AIRF .set 31 ;UH 1 IF FRONT AIRBORNE, 0 IF NOT
|
|
CAR_AIRB .set 32 ;UH 1 IF REAR AIRBORNE, 0 IF NOT
|
|
CARTURN .set 33 ;FL ANGLE OF FRONT WHEELS
|
|
CARTRACTION .set 34 ;FL TRACTION COEFF. (0=MAX TRACTION)
|
|
CARMAXACCEL .set 35 ;FL MAXIMUM ACCEL (PIX/16 MSEC)
|
|
CARTHROTTLE .set 36 ;FL THROTTLE VALUE 0-1.0 (1.0=FULL THROTTLE)
|
|
CARSKID .set 37 ;FL SKID VALUE 0-1.0 (1.0=FULL SKID)
|
|
CARSPEED .set 38 ;FL CURRENT SPEED (PIX/16 MSEC.)
|
|
CARDIST .set 39 ;FL CURRENT DIST TRAVELLED (PIX/16 MSEC.)
|
|
CARXMOM .set 40 ;FL ANGULAR MOMENTUM (X RADIANS/F)
|
|
CARYMOM .set 41 ;FL ANGULAR MOMENTUM (Y RADIANS/F)
|
|
CARZMOM .set 42 ;FL ANGULAR MOMENTUM (Z RADIANS/F)
|
|
CARBRAKE .set 43 ;FL BRAKING FRICTION (0-1.0)
|
|
CARYROT .set 44 ;FL Y ROTATION CAR BODY RADIANS
|
|
CARVROT .set 45 ;FL Y ROTATION CAR VELOCITY
|
|
CARDROT .set 46 ;FL LAST FRAME Y BODY ROTATION
|
|
CARROT .set 47 ;FL OVER-ROTATION FOR TURNING
|
|
CARMASS .set 48 ;FL MASS OF CAR (tons)
|
|
CAR_SPIN .set 49 ;UH SPINOUT FLAG
|
|
CARSPRAD .set 50 ;FL RADIANS TO SPIN
|
|
CAR_BUMP .set 51 ;UH BUMP FLAG 0=NO BUMP, 1-F=INTENSITY
|
|
CARPTSTR .set 52 ;SD TRACK PIECE } POSITION
|
|
CARPTSDIST .set 53 ;FL DISTANCE } TRACKING
|
|
CARPTSRANK .set 54 ;UD RANK } SYSTEM
|
|
CARTRAK .set 55 ;UH CLOSEST TRACK PIECE
|
|
CARGEAR .set 56 ;UH GEAR 0=NEUTRAL,1,2,3,4
|
|
CARRPM .set 57 ;FL RPMX100 (ABOUT 0.0 to 50.0)
|
|
CARXPLUS .set 58 ;FL CAR BOX X EXTREMES
|
|
CARXMINUS .set 59 ;FL CAR BOX X EXTREMES
|
|
CARYPLUS .set 60 ;FL CAR BOX Y EXTREMES
|
|
CARYMINUS .set 61 ;FL CAR BOX Y EXTREMES
|
|
CARZPLUS .set 62 ;FL CAR BOX Z EXTREMES
|
|
CARZMINUS .set 63 ;FL CAR BOX Z EXTREMES
|
|
CAR_ID .set 64 ;UH DEBUGGING CAR ID
|
|
CARSHAD .set 65 ;UH CAR SHADOW FLAG ON=1, 0=OFF
|
|
CARXLEAN .set 66 ;FL X BODY LEAN
|
|
CARZLEAN .set 67 ;FL Z BODY LEAN
|
|
CARRDFR .set 68 ;FL ROAD FRICTION
|
|
CAROFRDFR .set 69 ;FL OFFROAD FRICTION
|
|
CARDIST2CNTR .set 70 ;FL DISTANCE TO CENTER OF ROAD
|
|
CARWHLTAB .set 71 ;FL WHEEL ROAD SCAN OFFSETS
|
|
CARTRANS .set 86 ;UH 0=AUTO, 1=MANUAL TRANSMISSION
|
|
CARTRACK_ID .set 87 ;UH ID OF CURRENT TRACK SECTION
|
|
CAR_OM .set 88 ;UH OTHER MACHINE CONTROLS CAR (LINKING)
|
|
CARNUM .set 89 ;UH CAR DISPATCH # 0-127, B7=MASTER
|
|
CARUPD .set 90 ;UH CAR HAS BEEN COMM UPDATED THIS FRAME
|
|
CARSIZ .set 91 ;SZ TOTAL SIZE OF CAR STRUCTURE
|
|
*ENDSTRUCT
|
|
|
|
|
|
NUM_CARS .set 25 ;NUMBER OF CARS ACTIVE
|
|
|
|
|
|
|
|
FEET .set 48
|
|
|
|
|
|
*STRUCT VEHTAB
|
|
VEHTAB_MODEL .set 0 ;UH ROM PTR TO MODEL
|
|
VEHTAB_PAL .set 1 ;UH MODEL PTR
|
|
VEHTAB_ANI .set 2 ;UH ANIMATION TABLE (0 IF NONE)
|
|
VEHTAB_DMODEL .set 3 ;UH DEGRADED MODEL (0 IF NONE)
|
|
VEHTAB_DMODEL2 .set 4 ;UH DEGRADED MODEL (0 IF NONE) LEVEL 2
|
|
VEHTAB_TAILCNT .set 5 ;UH
|
|
VEHTAB_MASS .set 6 ;FL MASS OF MODEL
|
|
VEHTAB_PASSBY .set 7 ;UH SND PTR TO PASSBY CALL
|
|
VEHTAB_BNOISE .set 8 ;UH SND PTR TO BACKGRND CALL
|
|
VEHTAB_PALTAB .set 9 ;UH PALETTE TABLE PTR
|
|
VEHTAB_DDYNATAB .set 10 ;UH DRONE DYNAMIC TABLE PTR
|
|
VEHTAB_SIZE .set 11 ;SIZ
|
|
*ENDSTRUCT
|
|
|
|
|
|
|
|
*THIS IS THE LEG MAP
|
|
*
|
|
*
|
|
*STRUCT LEG
|
|
LEG_POSX .set 0 ;UH
|
|
LEG_POSY .set 1 ;UH ALSO HAS RIGHTMOST BIT 0 = 4 LANE 1 = 2 LANE
|
|
LEG_POSZ .set 2 ;UH
|
|
LEG_ID .set 3 ;UH
|
|
*ENDSTRUCT
|
|
LEG_SIZE .set 4 ;SI
|
|
.globl LEG_MAP ;RAM SPACE
|
|
MAX_LEG_ELEMENTS .set 1600
|
|
|
|
|
|
*STATISTICAL STRUCTURE FOR THE GAME LEGS <NERD DATA>
|
|
*
|
|
*
|
|
*
|
|
*STRUCT tagGAMETRAK
|
|
GT_ETIME .set 0 ;TC ELAPSED TIME (TIME CODED)
|
|
GT_POS .set 1 ;UD POSITION
|
|
GT_MAXMPH .set 2 ;UD MAX MPH
|
|
GT_COLLS .set 3 ;UD NUMBER OF COLLISIONS
|
|
GT_SIZE .set 4 ;SIZ
|
|
*ENDSTRUCT
|
|
|
|
|
|
*
|
|
*this structure has hard coded routines which depend on the
|
|
*size being a known constant. see backgrnd.asm. do not alter
|
|
*the size of this structure.
|
|
*
|
|
*STRUCT STRDGROUP
|
|
DGRP_HEAD .set 0 ;UH PTR TO HEAD OBJECT OF THE GROUP
|
|
DGRP_BIN .set 1 ;UH PTR TO BINARY ROM STRUCT
|
|
DGRP_FSTART .set 2 ;UH fLEX START
|
|
DGRP_FLAG .set 3 ;UH FLAGS (see below)
|
|
DGRP_IDX .set 4 ;UH INDEX NUMBER
|
|
*ENDSTRUCT
|
|
DGRP_SIZE .set 5 ;SI sizeof(STRUCT DGROUP_S)
|
|
|
|
MAX_DGROUPS .set 20 ;MAXIMUM DGROUPS ACTIVE
|
|
|
|
|
|
|
|
*STRUCT TYCOB
|
|
TB_FLAG .set 0 ;UH
|
|
TB_POSX .set 1 ;FL
|
|
TB_POSY .set 2 ;FL
|
|
TB_POSZ .set 3 ;FL
|
|
TB_RADY .set 4 ;FL
|
|
TB_GROUP .set 5 ;UH
|
|
TB_GROUPOVERLAY .set 6 ;UH
|
|
TB_REGSIZE .set 7 ;SIZ
|
|
TB_RVS_POSX .set 7 ;FL
|
|
TB_RVS_POSY .set 8 ;FL
|
|
TB_RVS_POSZ .set 9 ;FL
|
|
TB_RVS_RADY .set 10 ;FL
|
|
TB_RVSSIZE .set 11 ;SIZ
|
|
TB_OVER2 .set 12 ; or 6 or 7
|
|
*ENDSTRUCT
|
|
|
|
|
|
|
|
*OVERLAY SECTION 'LOOK'
|
|
*TYCO TRACK FLAGS
|
|
*
|
|
SC_OVERLAY .set 00001h
|
|
SC_BRANCH .set 00002h
|
|
SC_2NDSTART .set 00004h
|
|
SC_REVERSE .set 00008h
|
|
SC_ROADMODEL .set 00070h
|
|
SC_OVERDSC .set 08000h ;USE CURRENT OVERLAY 1 or 2
|
|
SC_OVER2 .set 01000h
|
|
|
|
SC_LDSECT .set 01000h ;LOAD A NEW SECTION INTO THE SYSTEM
|
|
SC_LDDEST .set 06000h ;WHICH OVERLAY TO LOAD INTO (1 or 2)
|
|
SC_LDSECT_IDX .set 00F00h ;WHICH LOOK TO LOAD INTO OVERLAY SPACE
|
|
SC_ROUTINE .set 000FF0000h ;IF NON-ZERO ROUTINE SHOULD BE CALLED
|
|
|
|
|
|
|
|
AUTO_TRANSMISSION .set 0
|
|
MANUAL_TRANSMISSION .set 1
|
|
|
|
*----------------------------------------------------------------------------
|
|
PI .set 3.141592654
|
|
TWOPI .set 6.283185307
|
|
HALFPI .set 1.570796327
|
|
HALFPI3 .set 4.71238898
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*PLAYER STRUCT
|
|
PLY_STATUS .set 00h
|
|
PLY_CAR .set 01h
|
|
PLY_PROC .set 02h
|
|
PLY_SIZ .set 03h
|
|
PLY_CBLK .set 04h
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*GLOW BUTTONS
|
|
*
|
|
BUT_START .set 1
|
|
BUT_VIEW1 .set 2
|
|
BUT_VIEW2 .set 4
|
|
BUT_VIEW3 .set 8
|
|
BUT_VIEWS .set 0Eh
|
|
BUT_TAILS .set 030h
|
|
BUT_FRONT .set 0C0h
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*GENV IDS
|
|
*
|
|
*!!!DO NOT CHANGE THESE EQUATES!!! MORE THAN 3 SYSTEMS RELY ON THESE!!!
|
|
*!!!NUMBERS BEING EXACTLY AS SPECIFIED HERE. DO NOT THINK OF CHANGING THEM!!!
|
|
*
|
|
BGD_BIGOBJ .set 01000h
|
|
BGD_ROUTINE .set 02000h
|
|
BGD_PALETTE .set 04000h
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
MAX_VERTICES .set 256
|
|
MAX_POLYGONS .set 300 ;ACTUALLY UNLIMITED AS LONG AS CONVEX
|
|
|
|
FP .set AR3
|
|
|
|
SCRNHX .set 256.0 ;HALF OF SCREEN X SIZE FLOAT
|
|
SCRNHY .set 200.0 ;HALF OF SCREEN Y SIZE FLOAT
|
|
SCREENHX .set 256 ;HALF OF SCREEN X SIZE INTEGER
|
|
SCREENHY .set 200 ;HALF OF SCREEN Y SIZE INTEGER
|
|
|
|
|
|
*STRUCT VECTOR
|
|
X .set 0
|
|
Y .set 1
|
|
Z .set 2
|
|
W .set 3
|
|
*ENDSTRUCT
|
|
|
|
*STRUCT EQUATION
|
|
A .set 0
|
|
B .set 1
|
|
C .set 2
|
|
D .set 3
|
|
*ENDSTRUCT
|
|
|
|
*STRUCT MATRIX
|
|
A00 .set 0
|
|
A01 .set 1
|
|
A02 .set 2
|
|
A10 .set 3
|
|
A11 .set 4
|
|
A12 .set 5
|
|
A20 .set 6
|
|
A21 .set 7
|
|
A22 .set 8
|
|
*ENDSTRUCT
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*DYNAMIC OBJECT STRUCTURE
|
|
*
|
|
*If the object has the dynamic object flag set then the vectors are translated
|
|
*as follows:
|
|
* 1. assume a regular vertex list
|
|
* 2. get the first dynamic object
|
|
* 3. for each vertex belonging to the dynamic object:
|
|
* -subtract off the DYNACENTER
|
|
* -rotate by the DYNAMATRIX
|
|
* -translate by the DYNATRANS
|
|
* -further transform as normal:
|
|
* -general rotational matrix
|
|
* -general translation
|
|
* -division by depth
|
|
* -store into blowlist
|
|
* 4. continue getting dynamic objects until finished
|
|
*
|
|
*
|
|
*
|
|
*STRUCT DYNAOBJ
|
|
DYNALINK .set 00 ;link to next DYNAOBJ
|
|
DYNACENTERX .set 01 ;the center of the vertices
|
|
DYNACENTERY .set 02
|
|
DYNACENTERZ .set 03
|
|
DYNATRANSX .set 04 ;the translation of the vertices
|
|
DYNATRANSY .set 05
|
|
DYNATRANSZ .set 06
|
|
DYNAMATRIX .set 07 ;the matrix of the vertices
|
|
DYNAMAT00 .set 07
|
|
DYNAMAT10 .set 08
|
|
DYNAMAT20 .set 09
|
|
DYNAMAT01 .set 0Ah
|
|
DYNAMAT11 .set 0Bh
|
|
DYNAMAT21 .set 0Ch
|
|
DYNAMAT02 .set 0Dh
|
|
DYNAMAT12 .set 0Eh
|
|
DYNAMAT22 .set 0Fh
|
|
DYNANVERTS .set 10h
|
|
DYNAPARENT .set 11h
|
|
DYNAFLAG .set 12h
|
|
*ENDSTRUCT
|
|
DYNASIZE .set 13h
|
|
NUM_DYNAS .set NUM_CARS*7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*SOUND SYSTEM EQUATES
|
|
PRIORITY .set 00FFh
|
|
CHAN0 .set 0000h ;
|
|
CHAN1 .set 0100h ;
|
|
CHAN2 .set 0200h ;
|
|
CHAN3 .set 0300h ;
|
|
NINT .set 1000h ;NON INTERRUPTABLE
|
|
ENINT .set 2000h ;NON INTERRUPTABLE BY EQUAL
|
|
|
|
|
|
NCHAN .set 4
|
|
|
|
|
|
*STRUCT SOUNDSTR
|
|
SND_PRI .set 0 ;UH priority (00=lowest, FF= highest)
|
|
SND_TIM .set 1 ;UH TIMER
|
|
SND_TMR .set 2 ;UH TIMER COUNTDOWN
|
|
SND_ST .set 3 ;UH ADDRESS OF SOUND TABLE (START)
|
|
SND_ADDR .set 4 ;UH ADDRESS OF SOUND TABLE (CURRENT POINTER)
|
|
SND_VOL .set 5 ;SD VOLUME OF TRACK
|
|
SND_IDX .set 6 ;UH INDEX OF SOUND
|
|
SND_REP .set 7 ;UH REPEAT COUNT OF SOUND
|
|
SND_STATUS .set 8 ;UH FLAG FX SND increment ?
|
|
*ENDSTRUCT
|
|
SND_SIZ .set 9 ;SIZ
|
|
|
|
|
|
|
|
NUM_STATIONS .set 4
|
|
SURFIN_STAT .set 0
|
|
HARDROCK_STAT .set 1
|
|
COUNTRY_STAT .set 2
|
|
RAP_STAT .set 3
|