712 lines
11 KiB
NASM
Executable File
712 lines
11 KiB
NASM
Executable File
.FILE "HUD.ASM"
|
|
*----------------------------------------------------------------------------
|
|
*HEADS UP DISPLAY ROUTINES
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
|
|
.include C30.EQU
|
|
.include MACS.EQU
|
|
.include MPROC.EQU
|
|
.include OBJ.EQU
|
|
.include VUNIT.EQU
|
|
.include CMOS.EQU
|
|
.include SYSID.EQU
|
|
.include SYS.EQU
|
|
.include GLOBALS.EQU
|
|
.include SNDTAB.EQU
|
|
.include PALL.EQU
|
|
.include OBJECTS.EQU
|
|
.include TEXT.EQU
|
|
.include DIRQ.EQU
|
|
|
|
SECTION_COUNTER .set 0 ;1 = TURN ON UL CRNR
|
|
|
|
|
|
|
|
COUNTDOWN_BUFI .word COUNTDOWN_BUF
|
|
.bss COUNTDOWN_BUF,2
|
|
|
|
MPH_BUFFERI .word MPH_BUFFER
|
|
.bss MPH_BUFFER,2
|
|
|
|
.bss _countdown,1 ;SD
|
|
.bss _MPH,1 ;UD
|
|
.bss SCORE,1 ;UD
|
|
.bss POSITION,1 ;UD
|
|
.bss MAXMPH_COUNT,1 ;FL
|
|
|
|
STOPBUFFI .word STOPBUFFER
|
|
.bss STOPBUFFER,4
|
|
|
|
romdata
|
|
YOURLOSTTXT .string "YOU ARE LOST",0
|
|
OFFROADTXT .string "OFFROAD",0
|
|
.text
|
|
.bss OFFROADBUFF,2
|
|
|
|
|
|
|
|
|
|
.globl MOTION_STOP_HIT,MOTION_SAFETY_ON
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
.bss MOVEIN_OFFSET,1
|
|
MOVEIN_HUD_EQUIP:
|
|
LDI 150,R0
|
|
STI R0,@MOVEIN_OFFSET
|
|
|
|
LIU8 LDI @_MODE,R0
|
|
TSTB MHUD,R0
|
|
BNZ M2L
|
|
SLEEP 1
|
|
BU LIU8
|
|
|
|
|
|
M2L LDI 25-1,AR5
|
|
MIHEL
|
|
LDI @MOVEIN_OFFSET,R0
|
|
SUBI 6,R0
|
|
STI R0,@MOVEIN_OFFSET
|
|
|
|
SLEEP 1
|
|
DBU AR5,MIHEL
|
|
|
|
CLRI R0
|
|
STI R0,@MOVEIN_OFFSET
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
MOVEOUT_HUD_EQUIP:
|
|
|
|
LDI 25-1,AR5
|
|
MIHEL2
|
|
LDI @MOVEIN_OFFSET,R0
|
|
ADDI 6,R0
|
|
STI R0,@MOVEIN_OFFSET
|
|
|
|
SLEEP 1
|
|
DBU AR5,MIHEL2
|
|
|
|
LDI 150,R0
|
|
STI R0,@MOVEIN_OFFSET
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*HEADS UP DISPLAY ROUTINE
|
|
*CALL FROM MAIN LOOP
|
|
*
|
|
*SHOULD ONLY BE CALLED DURING GAME PLAY
|
|
*
|
|
HUD:
|
|
CALL TACHOMETER_ANIMATE
|
|
CALL RADAR_PLOT
|
|
|
|
;
|
|
;MOTION SAFETY ON
|
|
;
|
|
READAUD ADJ_MOTION_PRESENT
|
|
CMPI 0,R0
|
|
BEQ NOMOTIONMSGS
|
|
|
|
LDI @MOTION_STOP_HIT,R0
|
|
BNZ NOMOTIONMSGS
|
|
|
|
|
|
.globl MOTION_SAFETY_ON
|
|
LDI @MOTION_SAFETY_ON,R0
|
|
BZ BLAHBLAH
|
|
|
|
.data
|
|
|
|
SAFETSI .word SAFETS
|
|
romdata
|
|
SAFETS .word MSAF,BSAF,OSAF,MSSM
|
|
MSAF .string "SAFETY MAT ACTIVATED",0
|
|
BSAF .string "SAFETY BEAM ACTIVATED",0
|
|
OSAF .string "FAIL SAFE SWITCH ACTIVATED",0
|
|
MSSM .string "MOTION STOP BUTTON HIT",0
|
|
|
|
.text
|
|
|
|
|
|
LDI @SAFETSI,AR2
|
|
.globl MOTION_SAFETY_TYPE
|
|
ADDI @MOTION_SAFETY_TYPE,AR2
|
|
LDI *AR2,AR2
|
|
|
|
FLOAT 256,R2
|
|
FLOAT 310,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
BLAHBLAH
|
|
;
|
|
;
|
|
NOMOTIONMSGS
|
|
|
|
|
|
|
|
;-------OFF ROAD TIMER
|
|
;
|
|
;
|
|
LDI @_MODE,R0
|
|
ANDN MMODE,R0
|
|
CMPI MGAME,R0
|
|
BNE NOT_OFFROAD
|
|
|
|
LDI @OFFROAD_TMR,R2
|
|
CMPI 10,R2
|
|
BGE NOT_OFFROAD
|
|
|
|
CMPI 3,R2
|
|
BGT NOTLOST
|
|
|
|
|
|
LDL YOURLOSTTXT,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 5,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
CALL SET18FONTDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
BU OFJN
|
|
NOTLOST
|
|
LDL OFFROADTXT,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 5,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
CALL SET18FONTDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
OFJN
|
|
|
|
LDI @OFFROAD_TMR,R2
|
|
LDL OFFROADBUFF,AR2
|
|
CALL _itoa
|
|
FLOAT 256,R2
|
|
FLOAT 30,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
NOT_OFFROAD
|
|
|
|
|
|
|
|
|
|
;-------ELAPSED TIME,SPEED TEXT
|
|
;
|
|
;
|
|
LDL rpm,AR2
|
|
LDI 420,R2 ;R2 POS X
|
|
ADDI @MOVEIN_OFFSET,R2
|
|
LDI 290,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
|
|
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
CMPI AUTO_TRANSMISSION,R0
|
|
BEQ ISAUTOTRNS
|
|
|
|
LDL rpmman,AR2
|
|
LDI 463,R2 ;R2 POS X
|
|
ADDI @MOVEIN_OFFSET,R2
|
|
LDI 380,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
BU DNDNL
|
|
ISAUTOTRNS
|
|
LDL rpmauto,AR2
|
|
LDI 470,R2 ;R2 POS X
|
|
ADDI @MOVEIN_OFFSET,R2
|
|
LDI 380,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
DNDNL
|
|
|
|
|
|
|
|
|
|
;show gear digit
|
|
;
|
|
;
|
|
LDI @PLYCBLK,AR0
|
|
LDI *+AR0(CARGEAR),AR2
|
|
ADDI @GEARI,AR2
|
|
LDI *AR2,AR2
|
|
FLOAT 458,R2 ;R2 POS X
|
|
FLOAT @MOVEIN_OFFSET,R0
|
|
ADDF R0,R2
|
|
FLOAT 360,R3 ;R3 POS Y
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SETSMDIGITFONT
|
|
|
|
.data
|
|
GEARI .word GEARS
|
|
GEARS .word GEARN,GEAR1,GEAR2,GEAR3,GEAR4
|
|
GEAR1 .string "1",0
|
|
GEAR2 .string "2",0
|
|
GEAR3 .string "3",0
|
|
GEAR4 .string "4",0
|
|
GEARN .string ";",0
|
|
.text
|
|
|
|
|
|
|
|
|
|
|
|
;show MPH or KPH
|
|
;
|
|
LDL mph,AR2
|
|
LDI 0,R2 ;R2 POS X
|
|
SUBI @MOVEIN_OFFSET,R2
|
|
LDI 335,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
|
|
READAUD ADJ_MPHORKPM
|
|
CMPI 0,R0
|
|
BEQ ISMPHT
|
|
|
|
LDL kph,AR2
|
|
LDI 50,R2 ;R2 POS X
|
|
SUBI @MOVEIN_OFFSET,R2
|
|
LDI 385,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
BU ISDNN
|
|
ISMPHT
|
|
|
|
LDL mphmph,AR2
|
|
LDI 50,R2 ;R2 POS X
|
|
SUBI @MOVEIN_OFFSET,R2
|
|
LDI 385,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
ISDNN
|
|
|
|
|
|
;-------time remaining
|
|
;
|
|
LDL time,AR2
|
|
LDI 242,R2 ;R2 POS X
|
|
LDI 9,R3 ;R3 POS Y
|
|
SUBI @MOVEIN_OFFSET,R3
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D_DS
|
|
|
|
|
|
;-------TIME (_countdown)
|
|
;
|
|
;
|
|
LDI @_countdown,R2
|
|
LDI @COUNTDOWN_BUFI,AR2
|
|
CALL _itoa
|
|
FLOAT 256,R2
|
|
FLOAT 24,R3
|
|
FLOAT @MOVEIN_OFFSET,R0
|
|
SUBF R0,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SETN43FONT
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
.globl lgnum43_coolyelo
|
|
LDL lgnum43_coolyelo,AR2
|
|
CALL PAL_FIND_RAW
|
|
STI R0,*+AR0(TEXT_PAL)
|
|
|
|
|
|
|
|
;-------LAST 3/10 SECONDS OF TIME (_countdown)
|
|
;
|
|
;
|
|
LDI @_MODE,R0
|
|
AND MMODE,R0
|
|
CMPI MGAME,R0
|
|
BNE NBEEP
|
|
.bss LASTSEC,1
|
|
LDI @_countdown,R0
|
|
CMPI 10,R0
|
|
BGT NBEEP
|
|
BLT NOINITBP
|
|
LDI @LASTSEC,R1
|
|
CMPI R1,R0
|
|
BEQ NBEEP
|
|
STI R0,@LASTSEC
|
|
SOND1 GV_TENSECONDS
|
|
BU NBEEP
|
|
NOINITBP
|
|
LDI @LASTSEC,R1
|
|
CMPI R1,R0
|
|
BEQ NBEEP
|
|
STI R0,@LASTSEC
|
|
|
|
CMPI 3,R0
|
|
BGT NBEEP
|
|
SOND1 BASICBEEPH
|
|
NBEEP
|
|
|
|
|
|
|
|
;-------SPEED
|
|
;
|
|
;
|
|
;PLOT SPEED
|
|
|
|
READAUD ADJ_MPHORKPM
|
|
CMPI 0,R0
|
|
BEQ ISMPH
|
|
|
|
FLOAT @_MPH,R2
|
|
MPYF 1.6666,R2
|
|
FIX R2
|
|
BU ISKPH
|
|
|
|
ISMPH LDI @_MPH,R2
|
|
ISKPH LDI @MPH_BUFFERI,AR2
|
|
CALL _itoa
|
|
FLOAT 66,R2
|
|
FLOAT @MOVEIN_OFFSET,R0
|
|
SUBF R0,R2
|
|
FLOAT 346,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
CALL SETLGDIGITFONTDS
|
|
ORM TXT_RIGHT,*+AR0(TEXT_COLOR)
|
|
ORM TXT_RIGHT,*+AR1(TEXT_COLOR)
|
|
.globl dnums_amber
|
|
LDL dnums_amber,AR2
|
|
CALL PAL_FIND_RAW
|
|
STI R0,*+AR0(TEXT_PAL)
|
|
STI R0,*+AR1(TEXT_PAL)
|
|
|
|
|
|
;-------STOPWATCH (actual elapsed time)
|
|
;
|
|
;
|
|
LDI 8,R0
|
|
LDI 19,R1
|
|
SUBI @MOVEIN_OFFSET,R1
|
|
LDI 106,R2
|
|
LDI 30,R3
|
|
CALL FILL_DITHER
|
|
|
|
LDL elap,AR2
|
|
LDI 10,R2 ;R2 POS X
|
|
LDI 20,R3 ;R3 POS Y
|
|
SUBI @MOVEIN_OFFSET,R3
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D_DS
|
|
|
|
|
|
LDI @STOPWATCH,R0
|
|
LDI @STOPBUFFI,AR2
|
|
CALL TIME2STR
|
|
FLOAT 20,R2
|
|
FLOAT 33,R3
|
|
FLOAT @MOVEIN_OFFSET,R0
|
|
SUBF R0,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
CALL SETSMDIGITFONTDS
|
|
|
|
|
|
;-------POSITION
|
|
;(PLAYERS RANK)
|
|
;
|
|
LDI @POSITION,AR4
|
|
SUBI 1,AR4
|
|
MPYI 3,AR4
|
|
ADDI @POS_TABLEI,AR4
|
|
LDI *AR4++,AR2
|
|
LDI 415,R2
|
|
ADDI *+AR4,R2
|
|
LDI 20,R3
|
|
SUBI @MOVEIN_OFFSET,R3
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D_DS
|
|
|
|
LDI *AR4++,AR2
|
|
LDI 450,R2
|
|
LDI 20,R3
|
|
SUBI @MOVEIN_OFFSET,R3
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D_DS
|
|
|
|
|
|
.data
|
|
POS_TABLEI .word POS_TABLE
|
|
POS_TABLE
|
|
.word scred1,dst,7
|
|
.word scred2,dnd,0
|
|
.word scred3,drd,0
|
|
.word scred4,dth,0
|
|
.word scred5,dth,0
|
|
.word scred6,dth,0
|
|
.word scred7,dth,0
|
|
.word scred8,dth,0
|
|
.word scred9,dth,0
|
|
.word scred10,dth,-20
|
|
.text
|
|
|
|
|
|
|
|
|
|
.if SECTION_COUNTER
|
|
;-------DEBUGGING SECTION_COUNTER
|
|
;
|
|
;
|
|
.bss SECIDX,2
|
|
LDI @PLYCBLK,AR0
|
|
LDI *+AR0(CARTRAK),AR0
|
|
LDI *+AR0(OUSR1),R2
|
|
RS 8,R2
|
|
LDL SECIDX,AR2
|
|
CALL _itoa
|
|
FLOAT 10,R2
|
|
FLOAT 50,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
.endif
|
|
|
|
|
|
;-------LOGIC: MAXMPH COMPUTATION
|
|
;(COMPUTE FOR BONUS SCREEN...)
|
|
;
|
|
;
|
|
FLOAT @_MPH,R2
|
|
.globl CHEAT
|
|
MPYF @CHEAT,R2 ;DO THE CHEAT THING !!!
|
|
FLOAT @NFRAMES,R0
|
|
MPYF R0,R2
|
|
ADDF @MAXMPH,R2
|
|
STF R2,@MAXMPH
|
|
|
|
ADDF @MAXMPH_COUNT,R0
|
|
; LDF @MAXMPH_COUNT,R0
|
|
; INCF R0
|
|
|
|
STF R0,@MAXMPH_COUNT
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*ALLOCATE PALETTES FOR A SECTION
|
|
*
|
|
*PARAMETERS
|
|
* AR2 PTR TO SECTION HEADER
|
|
*
|
|
SECTION_PALETTE_ALLOC:
|
|
alloc_section:
|
|
HARDalloc_section:
|
|
LDI *AR2++,AR6
|
|
LDI *AR2,AR5
|
|
|
|
DEC AR5
|
|
alloc_LPA
|
|
LDI AR6,AR2
|
|
CALL PAL_ALLOC
|
|
INC AR6
|
|
DBU AR5,alloc_LPA
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*DEALLOCATE PALETTES USED FOR A SECTION
|
|
*
|
|
*
|
|
*PARAMETERS
|
|
* AR2 SECTION POINTER
|
|
*
|
|
dealloc_section:
|
|
PUSH AR4
|
|
PUSH AR5
|
|
PUSH AR6
|
|
LDI *AR2++,AR6
|
|
LDI *AR2,AR5
|
|
DEC AR5
|
|
deal_LP
|
|
LDI AR6,AR2
|
|
CALL PAL_DELETE
|
|
INC AR6
|
|
DBU AR5,deal_LP
|
|
POP AR6
|
|
POP AR5
|
|
POP AR4
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
.include RPM.PAL
|
|
|
|
.bss TACHOMETER_PAL,32
|
|
|
|
*----------------------------------------------------------------------------
|
|
TACHOMETER_ANIMATE:
|
|
|
|
LDL TACH_GRADIENT,AR0
|
|
LDL TACHOMETER_PAL,AR1
|
|
|
|
LDI 22-1,RC
|
|
RPTB LP89
|
|
LDI *AR0++,R0
|
|
LP89 STI R0,*AR1++
|
|
|
|
LDI @PLYCBLK,AR0
|
|
LDF *+AR0(CARRPM),R0
|
|
MPYF 0.4583,R0 ;22/48
|
|
; MPYF 0.729,R0 ;35/48
|
|
; MPYF 0.6041,R0 ;29/48
|
|
FIX R0
|
|
CMPI 22,R0
|
|
LDIGT 22,R0
|
|
|
|
CMPI 0,R0
|
|
LDILT 0,R0
|
|
LDI R0,RC
|
|
SUBRI 22,RC
|
|
|
|
LDL TACHOMETER_PAL,AR1
|
|
ADDI R0,AR1
|
|
CLRI R1
|
|
RPTS RC
|
|
STI R1,*AR1++
|
|
|
|
|
|
LDI rpm_p,AR2
|
|
CALL PAL_FIND
|
|
PUSH R0
|
|
LDI R0,R2
|
|
ADDI 256-22,R2
|
|
|
|
LDL TACHOMETER_PAL,AR2
|
|
LDI 22,R3
|
|
CALL PAL_SET
|
|
|
|
|
|
|
|
LDI @PLYCBLK,AR0
|
|
LDI *+AR0(CARGEAR),R0
|
|
|
|
CLRI R1 ;ASSUME NEUTRAL
|
|
LDL GEARPAL,AR2
|
|
CMPI 1,R0
|
|
LDIEQ 4,R1
|
|
|
|
CMPI 2,R0
|
|
LDIEQ 3,R1
|
|
|
|
CMPI 3,R0
|
|
LDIEQ 2,R1
|
|
|
|
CMPI 4,R0
|
|
LDIEQ 1,R1
|
|
|
|
POP R2
|
|
ADDI 1,R2
|
|
ADDI R1,AR2
|
|
LDI 4,R3
|
|
CALL PAL_SET
|
|
RETS
|
|
|
|
GEARPAL
|
|
.word 0
|
|
.word 0
|
|
.word 0
|
|
.word 0
|
|
RGB 0,255,255
|
|
.word 0
|
|
.word 0
|
|
.word 0
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*PARAMETERS
|
|
* R0 X POS
|
|
* R1 Y POS
|
|
* R2 X WIDTH
|
|
* R3 Y WIDTH
|
|
*
|
|
*
|
|
FILL_DITHER:
|
|
PUSH R0
|
|
PUSH R1
|
|
PUSH R2
|
|
PUSH R3
|
|
PUSH R4
|
|
|
|
;background
|
|
LDI CC|DITHER|8,R4
|
|
BD ENTER2
|
|
STI R4,@_ACNTL
|
|
|
|
CLRI R4
|
|
STI R4,@_ACMAP
|
|
;----> BD ENTER2
|
|
|
|
FILL_PLOT:
|
|
PUSH R0
|
|
PUSH R1
|
|
PUSH R2
|
|
PUSH R3
|
|
PUSH R4
|
|
|
|
|
|
; ;background
|
|
; LDI CC|DITHER|8,R4
|
|
; STI R4,@_ACNTL
|
|
ENTER2
|
|
|
|
STI R0,@(_ARPS+(0*3))
|
|
STI R0,@(_ARPS+(3*3))
|
|
|
|
ADDI R2,R0
|
|
STI R0,@(_ARPS+(1*3))
|
|
STI R0,@(_ARPS+(2*3))
|
|
|
|
STI R1,@(_ARPS+(0*3)+1)
|
|
STI R1,@(_ARPS+(1*3)+1)
|
|
|
|
ADDI R3,R1,R0
|
|
STI R0,@(_ARPS+(3*3)+1)
|
|
STI R0,@(_ARPS+(2*3)+1)
|
|
CLRI R0
|
|
STI R0,@_ADDRL
|
|
|
|
CALL _stuff_fpga
|
|
|
|
POP R4
|
|
POP R3
|
|
POP R2
|
|
POP R1
|
|
POP R0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.END
|