cruisin-usa/BONUS.ASM

2283 lines
36 KiB
NASM
Executable File

.FILE "BONUS.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.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 DELTA.EQU
.include COMM.EQU
.include H2HOBJ.EQU
.bss MAXMPH,1 ;FL
.bss CHALLENGE_RACE,1 ;FL 1= TRUE,0= FALSE
.bss NEXT_STARTUP,1 ;IDX
.bss BONUS_WAVE,1 ;IDX
.bss FINISH_LINE,1 ;UH RoadCode for the finish line of this leg
.bss DO_FOLDFLAG,1 ;UH ==1 when folding flag
NUM_LEGS .set 14
LEG_NAMESI .word LEG_NAMES
LEG_NAMES .word LEG1,LEG2,LEG3,LEG4,LEG5,LEG6,LEG7,LEG8
.word LEG9,LEG10,LEG11,LEG12,LEG13,LEG14,LEG_USA
romdata
LEG1 .string "GOLDEN GATE PARK",0
LEG2 .string "SAN FRANCISCO",0 ;+tunnel
LEG3 .string "US 101",0
LEG4 .string "REDWOOD FOREST",0 ;+beach
LEG5 .string "BEVERLY HILLS",0 ;+tunnel2
LEG6 .string "LA FREEWAY",0
LEG7 .string "DEATH VALLEY",0
LEG8 .string "ARIZONA",0
LEG9 .string "GRAND CANYON",0
LEG10 .string "IOWA",0 ;midwest
LEG11 .string "CHICAGO",0
LEG12 .string "INDIANA",0 ;midwest
LEG13 .string "APPALACHIA",0
LEG14 .string "WASHINGTON DC",0
LEG_USA .string "SF TO WASHINGTON DC",0
WINT1 .string "FREE GAME FOR",0
WINT2 .string "1ST PLACE",0
EXPIRED .string "EXPIRED",0
.text
*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
GAMETRAKI .word GAMETRAK
.bss GAMETRAK,NUM_LEGS*GT_SIZE
.bss ETIME,1
;etime,#,maxmph
BUFFERSI .word BIGBUFFER
.bss BIGBUFFER,(4+1+2+2)*NUM_LEGS
BONUS_POSTLAUNCHI .word BONUS_POSTLAUNCH
romdata
BONUS_POSTLAUNCH
.word BONUS_GGATE,BONUS_SANFRAN,BONUSNULL,BONUSNULL
.word BONUS_BEVHILLS,BONUSNULL,BONUSNULL
.word BONUSNULL,BONUSNULL,BONUSNULL
.word BONUSNULL,BONUSNULL,BONUSNULL
.word BONUSNULL,BONUSNULL,BONUSNULL
.text
*----------------------------------------------------------------------------
BONUS_SANFRAN:
CREATE TRAFFIC_LIGHT,SPAWNER_C|COLORCYC_T
FLOAT -35,R0
STF R0,@INFIN_CORRECT
BONUS_GGATE:
BONUS_BEVHILLS:
LDI @_MODE,R0
OR MWATER,R0
STI R0,@_MODE
BONUSNULL:
RETS
*----------------------------------------------------------------------------
BONUS_TABLEI .word BONUS_TABLE
romdata
BONUS_TABLE .word BONUS1,BONUS2,BONUS3,BONUS4,BONUS5
.word BONUS6,BONUS7,BONUS8,BONUS9,BONUS10
.word BONUS11,BONUS12,BONUS13,BONUS14
.text
*----------------------------------------------------------------------------
*ROUTINES FOR OVERLAY.ASM
*
*
BONUS14
LDI 14,R1
BU LK
BONUS13 LDI L_LEG14_BEGIN+1,R0
LDI 13,R1
BU LK
BONUS12 LDI L_LEG13_BEGIN+1,R0
LDI 12,R1
BU LK
BONUS11 LDI L_LEG12_BEGIN+1,R0
LDI 11,R1
BU LK
BONUS10 LDI L_LEG11_BEGIN+1,R0
LDI 10,R1
BU LK
BONUS9 LDI L_LEG10_BEGIN+1,R0
LDI 9,R1
BU LK
BONUS8 LDI L_LEG9_BEGIN+1,R0
LDI 8,R1
BU LK
BONUS7 LDI L_LEG8_BEGIN+1,R0
LDI 7,R1
BU LK
BONUS6 LDI L_LEG7_BEGIN+1,R0
LDI 6,R1
BU LK
BONUS5 LDI L_LEG6_BEGIN+1,R0
LDI 5,R1
BU LK
BONUS4 LDI L_LEG5_BEGIN+1,R0
LDI 4,R1
BU LK
BONUS3 LDI L_LEG4_BEGIN+1,R0
LDI 3,R1
BU LK
BONUS2 LDI L_LEG3_BEGIN+1,R0
LDI 2,R1
BU LK
BONUS1 LDI L_LEG2_BEGIN+1,R0
LDI 1,R1
LK STI R0,@NEXT_STARTUP
STI R1,@BONUS_WAVE
LDI @_MODE,R0
LDI R0,R1
AND MMODE,R1
CMPI MGAME,R1
RETSNE
ANDN MMODE,R0
OR MBONUS,R0
ANDN MINTUNNEL,R0
STI R0,@_MODE
;;; COMMUNICATIONS ALCHEMY
;;;
LDI @MY_STATE,R0
OR OMS_FINISHLINE,R0
STI R0,@MY_STATE
;DIFFICULTY ADJUSTMENTS
;
LDI @POSITION,R0
CALL DIFF_CHANGE
;AUDIT MUMBO JUMBO
;
LDI @BONUS_WAVE,R2
SETAUD AUD_LAST_LEG
LDI @BONUS_WAVE,AR2
DEC AR2
MPYI 2,AR2
ADDI AUD_FINISH_GGATE,AR2
CALL AUDIT_INC
CLRI R0
STI R0,@FIRST_RACE
CALL KILL_PLYR_SOUNDS
LDI MAX_DRONES,R0
STI R0,@DD_MAX_DRONES
READAUD ADJ_CHECKPOINT_BONUS
STI R0,@CHECKPOINT_TIME_BONUS
LDI @PLYCAR,AR4
LDI @PLYCBLK,AR5
CALL FIND_PLAYERS_POSITION
CREATEC BONUS_SCREEN,22
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
JSUB:
LDL BHDDFAS,AR2
FLOAT 256,R2
FLOAT 278,R3
LDI 7,RC
CALL TEXT_ADDDS
LDI *+AR0(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR1(TEXT_COLOR)
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
RETS
DISPLAY_H2H_WINNER:
LDI @WAS_HEAD2HEAD_ON,R0
BZ DODIE
LDI @OM_POSITION,R0
CMPI @POSITION,R0
BLT DODIE
CLRI R0
STI R0,@UNFOLDFLAG
LDL big2,AR2
LDI 0,R2
LDI 140,R3
LDI 856,RC
CALL OBJ_QMAKE
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV|O_1PAL,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
LDI AR0,AR2
CALL OBJ_INSERTHP
LDL H2HPAL3,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(OPAL)
STI AR0,*+AR7(PDATA+2) ;big2
LDL redhd1,AR2
LDI 0,R2
LDI 80,R3
LDI 868,RC
CALL OBJ_QMAKE
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV|O_1PAL,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
LDI AR0,AR2
CALL OBJ_INSERTHP
LDL H2HPAL2,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(OPAL)
STI AR0,*+AR7(PDATA) ;red (bottom)
LDL yelhd1,AR2
LDI 0,R2
LDI 200,R3
LDI 868,RC
CALL OBJ_QMAKE
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV|O_1PAL,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
LDI AR0,AR2
CALL OBJ_INSERTHP
LDL H2HPAL2,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(OPAL)
STI AR0,*+AR7(PDATA+1) ;yellow (bottom)
romdata
BHDDFAS .string "WINNER",0
.text
.globl font18_white
.bss UNFOLDFLAG,1
DHHW_LP
LDI @UNFOLDFLAG,R0
BNZ DODIEXXX
CALL JSUB
SLEEP 10
CALL JSUB
SLEEP 5
FLOAT -5000,R6
LDI *+AR7(PDATA),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
LDI *+AR7(PDATA+1),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
LDI *+AR7(PDATA+2),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
SLEEP 5
FLOAT 5000,R6
LDI *+AR7(PDATA),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
LDI *+AR7(PDATA+1),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
LDI *+AR7(PDATA+2),AR2
LDF *+AR2(OPOSZ),R0
ADDF R6,R0
STF R0,*+AR2(OPOSZ)
DBU AR5,DHHW_LP
DODIEXXX
LDI *+AR7(PDATA),AR2
CALL OBJ_DELETE_HIGH_PRIORITY
LDI *+AR7(PDATA+1),AR2
CALL OBJ_DELETE_HIGH_PRIORITY
LDI *+AR7(PDATA+2),AR2
CALL OBJ_DELETE_HIGH_PRIORITY
DODIE
DIE
*----------------------------------------------------------------------------
OBJ_DELETE_HIGH_PRIORITY:
PUSH R0
PUSH R1
PUSH AR1
PUSH AR2
.globl OHIGH_PRIORITYI
LDI @OHIGH_PRIORITYI,R1
DELLP LDI R1,AR1 ;WE MUST FIND DEAD OBJECT TO LINK AROUND
LDI *AR1,R1
BZ DELOBJX
CMPI R1,AR2
BNE DELLP
LDI *AR2,R1
STI R1,*AR1 ;LINK AROUND
LDI @OFREE,R1
STI R1,*AR2
STI AR2,@OFREE
LDI @OFREECNT,R0 ;INCREMENT FREE OBJECT COUNT
ADDI 1,R0
STI R0,@OFREECNT
CLRI R0
STI R0,*+AR2(OLINK2) ;CLEAR SEARCH ID
STI R0,*+AR2(OFLAGS)
DELOBJX
POP AR2
POP AR1
POP R1
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
.bss SAVED_COUNTDOWN,1
BONUS_SCREEN:
LDI @BGNDCOLA,R0
STI R0,*+AR7(PDATA)
LDI @_countdown,R0
STI R0,@SAVED_COUNTDOWN
CLRI R0
STI R0,@BGNDCOLA
CALL SILENT
CALL SND_RESET_QUIET
CLRI R0
STI R0,@STOPWATCH_CNTL
STI R0,@DO_FOLDFLAG
CALL KILL_THEM
LDI 0,R0 ;SMOKE MAY BE KILLED, SO I HAVE TO RESET THIS
STI R0,@TIRE_SMOKE_COUNT
LDI 1,R0
STI R0,@IGNORE_UPDATES
CALL PRC_INIT
CREATE BONSCRN2,UTIL_C
CREATE BONUS_WAIT_LOOP,PLYR_C|PLYR1_T
CREATE SCAN_OBJECTS,UTIL_C
CALL FIND_AND_REACTIVATE ;REACTIVATE CHEERING ANIMATIONS
.if DEBUG
CALL VERIFY_CODE_INTEGRITY
.endif
LDP @FASTSTKI ;GET PAGE OF STORED ADDRESS
LDI @FASTSTKI,SP ;LOAD THE ADDRESS INTO SP
BR COLD_ENTER
.bss SPEEDHIT,1
*
*
*
BONSCRN2:
LDI @DID_TIMED_OUT,R0
BZ DOREG3A
LDI 0,R0 ;ELAPSED TIME OF 0 = DID NOT FINISH
STI R0,@ETIME
DOREG3A LDI @STOPWATCH,R0
STI R0,@ETIME
*ELP CHANGE
;TURN ON LINK HERE... ALL LISTEN
;
;
CALL CLRONE ;CAN NOW BE DUAL PLAYER
*ELP END CHANGE
CLRI R0
STI R0,@START_HIT ;----------------------------------
CREATE MOVEOUT_HUD_EQUIP,UTIL_C
;Wait for sound board to reset
;
CNR_ENTER
LDP @IN_RESET_MODE
LDI @IN_RESET_MODE,R0
SETDP
BZ CONTINUE
SLEEP 1
BU CNR_ENTER
CONTINUE
.bss WAS_HEAD2HEAD_ON,1
LDI @HEAD2HEAD_ON,R0
STI R0,@WAS_HEAD2HEAD_ON
CALL CLEAR_LINK ;WE ARE NOW *NOT* LINKED
SOND1 MAPTUNE
LDI @DID_TIMED_OUT,R0
BZ PAPAPA44
LDI @POSITION,R0
CMPI 1,R0
BNE COOLRET
LDI @WAS_HEAD2HEAD_ON,R0
BZ COOLRET
LDI 2,R0
STI R0,@POSITION
BU COOLRET
PAPAPA44
CREATE BACKUP_CAMERA,UTIL_C|BONUS_SCREEN_T
SONDFX CROWD1
; LDI @DID_TIMED_OUT,R0
; B
SONDFX CROWDROAR
SOND1 CHICKCHEER ;CHAN3
JJDDHH
LDI @POSITION,R0
CMPI 1,R0
BNE COOLRET
CREATEC FREE_RACE_ANNOUNCE,UTIL_C
JSRP BABE_TROPHY
COOLRET
;LAME TEXT EFFECTS
;
;
LDI AR7,AR5
CREATE BONS_MAXMPH,UTIL_C|TEXTP_T
CREATE BONS_ETIME,UTIL_C|TEXTP_T
CREATE BONS_POSITION,UTIL_C|TEXTP_T
CREATE BONS_RECORDTIME,UTIL_C|TEXTP_T
CREATE DISPLAY_H2H_WINNER,UTIL_C|TEXTP_T|3
LDI @DID_TIMED_OUT,R0
BNZ NODOHOTTIME
CALL INTO_TABLE_P
BNC NODOHOTTIME
CMPI 0,R0
BNE ISREC
CREATE BONS_HOTTIME_REC,UTIL_C|TEXTP_T
BU NODOHOTTIME
ISREC CREATE BONS_HOTTIME,UTIL_C|TEXTP_T
NODOHOTTIME
;insert show best times here!
;
;
SLEEP 5
LDI @POSITION,R0
CMPI 1,R0
BEQ JJAG
LDI 0,R0
LDI 100,R1
CALL SET_TRACK_VOL
SOND1 MAPTUNE
JJAG
SONDFX CROWD1
LDI 120-1,AR5
PAPA45
LDI @START_HIT,R0
BNZ PAPA45X
SUBI @NFRAMES,AR5
CMPI 0,AR5
LDILT 0,AR5
SLEEP 1
DBU AR5,PAPA45
PAPA45X
CREATE UNFOLDMAP,UTIL_C
SLEEP 10
LDI 1,R0
STI R0,@UNFOLDFLAG
SLEEP 30
CALL LOAD_FIXED_PALETTES
;THIS RELOADS THE PALETTES THAT WERE USED FOR THE BABES
.global BABE_PALISTI
PUSH AR5
PUSH AR6
LDI @BABE_PALISTI,AR5
LDI 4,AR6
FIXPALLP
LDI *+AR5,AR2
CALL PAL_FIND
BC FIXPAL1
LDI AR2,R0
LDI R0,R1
CALL PAL_OVERWRITE
FIXPAL1
NOP *++AR5(2)
DBU AR6,FIXPALLP
POP AR6
POP AR5
LDL SW_VIEW0|SW_VIEW1|SW_VIEW2|SW_RADIO|SW_4TH|SW_3RD|SW_2ND|SW_1ST,R1
LDL SW_VIEW1|SW_RADIO|SW_2ND,R2
LDI @SWITCHBUTS,R0
AND R1,R0
CMPI R2,R0
BNE NOWAY
READADJ ADJ_STEERMIN
SUBI @_pot0,R0
ABSI R0
CMPI 20,R0
BGT NOWAY
LDI RM_USA,R0
STI R0,@RACE_MODE
NOWAY
CALL KILL_THE_REANIMATORS ;cheering crowd
LDL shared_PALETTES,AR2
CALL dealloc_section
LDL shared_PALETTES,AR2
CALL alloc_section
LDL _SECshared,AR2
CALL LOAD_SECTION_REQ
CALL INIT_DRONES ;init DRONE tracker system
LDI @RACE_MODE,R0
CMPI RM_USA,R0
BNE DDF1
CREATE SHOWLEG_PROC,UTIL_C|55h
DDF1
SONDFX CC_DIGIT
;SHOW STATISTICS TO DATE
;
;
LDI @BONUS_WAVE,R5
SUBI 1,R5
LDI R5,AR0
MPYI GT_SIZE,AR0
ADDI @GAMETRAKI,AR0
; LDI @MAXMPH,R0
; STI R0,*+AR0(GT_MAXMPH)
LDI 1,R0
STI R0,*+AR0(GT_POS)
STI R0,*+AR0(GT_COLLS)
LDI @ETIME,R0
STI R0,*+AR0(GT_ETIME)
LDI @RACE_MODE,R0
CMPI RM_USA,R0
BNE NOTNIN2
LDI @GAMETRAKI,AR3
LDI @BUFFERSI,AR4
CLRI R4
FLOAT 180,R7 ;Y
NXTNAME
LDI @START_HIT,R0
BNZ NOTNIN2
CALL PLACE_FLAG
SLEEP 2
ADDF 10,R7
ADDI GT_SIZE,AR3
INC R4
CMPI R5,R4
BLE NXTNAME
NOTNIN2
;CHECK INITS
;
;SLEEP 30 ;Make sure last flag is done
LDI 20-1,AR5
PAPA35
LDI @START_HIT,R0
BNZ PAPA35X
SLEEP 1
DBU AR5,PAPA35
PAPA35X
;DANGEROUS AND MESSY CODE, BUT
;WE NEVER TOUCH THE ACTIVE LIST
;ANYWAY, THEREFORE WE DONT NEED
;THESE ELEMENTS
;(OBJ_INIT CALLED IMMEDIATELY NEXT)
;
CLRI R0
STI R0,@OACTIVE
READAUD ADJ_HIGH_SCORE_ENTRY
CMPI 0,R0
BEQ NOENTER
JSRP ENTER_INITIALS
LDF @STEERCT,R0 ;STEERING CENTER
STF R0,@WHEELPOS
NOENTER
CLRI R0
STI R0,@NOSWAP ;NO PAGE SWAPPING OFF
LDI @RACE_MODE,R0
CMPI RM_USA,R0
BNE NOTNIN
LDI @BONUS_WAVE,R0
CMPI 14,R0
BEQ CLINTON_SHOW
NOTNIN
CLRI R0
STI R0,@NOSWAP
STI R0,@NOLONG_VEHICLES
CLRF R0
LDP @_CAMERAPOS+X
STF R0,@_CAMERAPOS+X
FLOAT -1000,R0
STF R0,@_CAMERAPOS+Y
FLOAT -2500,R0
STF R0,@_CAMERAPOS+Z
CLRF R2
STF R2,@_CAMERARAD+Y
SETDP
LDI @CAMERAMATRIXI,AR2
CALL FIND_YMATRIX
;\\++\\ //--//
; \\++\\ //--//
; \\++\\ //
LDI @RACE_MODE,R0
CMPI RM_USA,R0
BNE NOT_ATOZ
; CALL CLEANUP_PALS
LDI @BONUS_WAVE,AR0
ADDI @FULLSETUP_TABLEI,AR0
ISWRP LDI *AR0,R0
CALLU R0
NOT_ATOZ
SLEEP 10
LDI 1,R0
STI R0,@DO_FOLDFLAG
SLEEP 10
LDI @RACE_MODE,R0
CMPI RM_USA,R0
BNE CHOOSE_NEXT_RACE
.globl MOTION_SCREWED
READAUD AUD_RESET_TOTALLY
CMPI 0,R0
BNE MOTION_SCREWED
CREATE SHOWNEXTLEG_PROC,UTIL_C|TEXTP_T
LDI @DID_TIMED_OUT,R0 ;IF TIMED OUT THEN YOU MAY NOT GET A FREE RACE
BNZ NOT1ST
LDI @POSITION,R0
CMPI 1,R0
BNE NOT1ST
READAUD ADJ_FREEGAME
CMPI 0,R0
BEQ NOT1ST
LDI @BONUS_WAVE,AR2
DEC AR2
ADDI AUD_WIN_GGATE,AR2
CALL AUDIT_INC
INCAUD AUD_TOTAL_FREEGAMES
LDI @_MODE,R0
ANDN MMODE,R0
OR MINTRO,R0
STI R0,@_MODE
LDI @BONUS_WAVE,R0
STI R0,@CHOSEN_RACE
CALL SEND_RACENUM
BU FINFIN
;Has the player made Pole Position? (1)
;T-> Branch over this Coin Grab
;F-> Get more coin to continue
;
NOT1ST
;;; SYNCED INSMORE...
;;; the difference is that the two machine communicate the time
;;;
;;;
JSRP INSMORE
LDI @_MODE,R0
ANDN MMODE,R0
OR MINTRO,R0
STI R0,@_MODE
*ELP CHANGE
; CALL CLRONE ;CAN NOW BE DUAL PLAYER
*ELP END CHANGE
CMPI 1,AR6
BNE ENDPLAYER
INCAUD AUD_GAMES_CONTINUES
CALL HSTDEC
LDI @BONUS_WAVE,R0
STI R0,@CHOSEN_RACE
CALL SEND_RACENUM
FINFIN
*ELP CHANGE
; LDI @_MODE,R0
; ANDN MINFIN|MWATER,R0
; STI R0,@_MODE
*ELP END CHANGE
JSRP ISSUE_STARTGAME
JSRP WAIT_FOR_CHALLENGER
; /-----RACE MODE ONLY-------
; |
; V
LDI @BONUS_WAVE,AR2
MPYI 2,AR2
ADDI AUD_START_GGATE,AR2
CALL AUDIT_INC
CALL TEXT_INIT
LDI UTIL_C|TEXTP_T,R0
LDI -1,R1
CALL PRC_KILLALL
*ELP CHANGE
LDI @_MODE,R0
ANDN MINFIN|MWATER,R0
STI R0,@_MODE
*ELP END CHANGE
CALL OBJ_INIT
CALL DYNAOBJ_INIT ;init DYNAMIC OBJECTS
CALL CARB_INIT ;init CAR BLOCKS
CALL INIT_RDDEBRIS ;initialize ROAD DEBRIS list(s)
;;; RE INITIALIZE TRACK...
;;;
;;;
CALL TEXT_INIT
LDI UTIL_C|TEXTP_T,R0
LDI -1,R1
CALL PRC_KILLALL
LDI 0,R0
LDI 255,R1
CALL SET_TRACK_VOL
CALL RESUME_TUNE_NT
LDI BUT_VIEW2,R0 ;BUTTON OVERWRITE (MAYBE USE MASK IN FUTURE)
STI R0,@BUTTON_STATUS
READAUD ADJ_TIME_TO_START
MPYI 5,R0
ADDI 60,R0
STI R0,@_countdown
LDI @_MODE,R0
ANDN MGO|MMODE,R0
OR MGAME|MINFIN,R0
STI R0,@_MODE
CREATEC FOLDMAP,UTIL_C
LDI @BONUS_WAVE,AR0
ADDI @BONUS_POSTLAUNCHI,AR0
LDI *AR0,R0
CALLU R0
LDI @NEXT_STARTUP,R0
STI R0,@STARTSECTION
CALL BGD_INIT
PUSH AR7
LDI UTIL_C|BACKGRND_T,R0
LDI -1,R1
CALL PRC_FIND
LDI AR0,AR7
LDI 3,R0
STI R0,*+AR7(PTIME)
LDI PLYR_C|PLYR1_T,R0
LDI -1,R1
CALL PRC_FIND
LDI AR0,AR2
CALL PRC_FOLLOW
POP AR7
LDI *+AR7(PDATA),R0
STI R0,@BGNDCOLA
LDI 1,R0
STI R0,@NOAERASE
CLRI R0
STI R0,@OHIGH_PRIORITY
CREATE WAVEFLAG,UTIL_C|MONKEY_T
CLRI R0
STI R0,@DID_TIMED_OUT
CALL INIT_GAMELEG
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*entered into from above (process)
*
*
*
*
CLINTON_SHOW:
LDI RM_SINGLE,R0
STI R0,@RACE_MODE
LDI 1,R0
STI R0,@DO_FOLDFLAG
LDI UTIL_C,R0
LDI -1,R1
CALL PRC_KILLALL
LDI UTIL_C|TEXTP_T,R0
LDI -1,R1
CALL PRC_KILLALL
LDI PLYR_C|PLYR1_T,R0
LDI -1,R1
CALL PRC_KILLALL
CALL TEXT_INIT
READAUD ADJ_CLINTON
CMPI 1,R0
BNE NOCLINTON
JSRP HOTTUB_SCENE
NOCLINTON
;patched from hottub.asm
;to cure potential lockup when HOTTUB_SCENE
;is not called.
;Wed Mar 8 09:52:18 1995
;
;
SLEEP 1
CALL OBJ_INIT
CALL INIT_DRONES ;initialize DRONE tracker system
CALL DYNAOBJ_INIT ;initialize DYNAMIC OBJECTS
CALL CARB_INIT ;initialize CAR BLOCKS
CALL INIT_RDDEBRIS ;initialize ROAD DEBRIS list(s)
LDI 1234h,R0
LDI -1,R1
CALL PRC_KILLALL
LDI SPAWNER_C|ANIMATION_T,R0
LDI -1,R1
CALL PRC_KILLALL
LDL dc_shared_PALETTES,AR2
CALL dealloc_section
LDL finale_PALETTES,AR2
CALL dealloc_section
;
;
;>>>insert MAP with time for entire race
;
LDI 15,R0
STI R0,@BONUS_WAVE
READAUD ADJ_HIGH_SCORE_ENTRY
CMPI 0,R0
BEQ NOENTR2
JSRP ENTER_INITIALS
LDF @STEERCT,R0 ;STEERING CENTER
STF R0,@WHEELPOS
NOENTR2 CLRI R0
STI R0,@NOSWAP
CALL OBJ_INIT
.globl CLEAR_MAP_PALS
CALL CLEAR_MAP_PALS
LDI MATTR,R0
STI R0,@_MODE
LDI @POSITION,R0
CMPI 1,R0
BNE JAJD
INCAUD AUD_CREDITS
INCAUD AUD_WIN_DC
INCAUD AUD_TOTAL_FREEGAMES
JAJD
.globl VANITY_SUB
JSRP VANITY_SUB
LDI -2,R0
STI R0,@_ATTR_MODE
BU SET_ATTR
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.globl font18_white
BLINK_FREEBE:
SLEEP 5
LDI 5*18,AR5
BFLP1
LDI @_MODE,R4
AND MMODE,R4
CMPI MATTR,R4
LDINE 70,R3
LDIEQ 125,R3
LDINE 256,R2
LDIEQ 365,R2
FLOAT R2
FLOAT R3
LDI 1,RC
LDL WINT1,AR2
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
CMPI MATTR,R4
LDINE 90,R3
LDIEQ 150,R3
LDINE 256,R2
LDIEQ 365,R2
FLOAT R2
FLOAT R3
LDI 1,RC
LDL WINT2,AR2
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
;insert frame rate equalizer
;
SLEEP 1
DBU AR5,BFLP1
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
BACKUP_CAMERA:
LDI @PLYCBLK,AR0
LDI *+AR0(CARTRAK),AR2
LDI *+AR2(OLINK4),AR0
LDF *+AR0(OPOSX),R2
SUBF *+AR2(OPOSX),R2
LDF *+AR0(OPOSZ),R3
SUBF *+AR2(OPOSZ),R3
CALL ARCTANF
SUBF HALFPI,R0
LDF R0,R2
FLOAT -7500,R0
ADDF @ZOOMD,R0
CALL DISTANCE_2D
LDF R0,R6
LDF R1,R7
LDP @_CAMERAPOS+X
ADDF @_CAMERAPOS+X,R6
ADDF @_CAMERAPOS+Z,R7
SETDP
LDI 30,AR5
BACKLP
LDP @_CAMERAPOS+X
LDF @_CAMERAPOS+X,R0
LDF @_CAMERAPOS+Z,R1
SUBF R0,R6,R2
SUBF R1,R7,R3
MPYF 0.02,R2
MPYF 0.02,R3
ADDF R0,R2,R0
ADDF R1,R3,R1
STF R0,@_CAMERAPOS+X
STF R1,@_CAMERAPOS+Z
LDF @_CAMERAPOS+Y,R0
SUBF 10,R0
STF R0,@_CAMERAPOS+Y
SETDP
SLEEP 1
DBU AR5,BACKLP
DIE
*----------------------------------------------------------------------------
.bss DID_TIMED_OUT,1
*----------------------------------------------------------------------------
TIMED_OUT:
LDI 1,R0
STI R0,@DID_TIMED_OUT
INCAUD AUD_GAMES_EXPIRED
LDI @BONUS_WAVE,AR2
ADDI @BONUS_TABLEI,AR2
LDI *AR2,R0
CALLU R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
KILL_PLYR_SOUNDS:
LDI 1000,AR2 ;ENGINE RPM IDLE
CALL SENDSND
LDI SKIDB,AR2 ;KILL LOOPERS WHILE SUSPENDED
CALL KILLSNDFX
LDI SKIDC,AR2 ;KILL LOOPERS WHILE SUSPENDED
CALL KILLSNDFX
LDI BRAKSND,AR2
CALL KILLSNDFX
LDI TUNSND,AR2
CALL KILLSNDFX
LDI GRAVELA,AR2
CALL KILLSNDFX
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.include ommdfont.pal
romdata
FRA1 .string "FIRST PLACE",0
FRA2 .string "FREE RACE",0
.text
CONGRATS .set 4
CONGRAT_SPEECHI .word CONGRAT_SPEECH
CONGRAT_SPEECH: .word GL_WOOLAUGH,GL_YEAH,GL_YES,GL_YOUDIDIT
FREE_RACE_ANNOUNCE:
SOND1 GETREADYTUNE
LDI CONGRATS,AR2
CALL RANDU0
LDI R0,AR2
ADDI @CONGRAT_SPEECHI,AR2
LDI *AR2,AR2
CALL ONESNDFX
LDI 7,AR5
FRAL1
LDI @START_HIT,R0
BNZ PRC_SUICIDE
LDL FRA1,AR2
FLOAT 256,R2
FLOAT 100,R3
LDI 15,RC
CALL TEXT_ADD
CALL SET40FONT
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
SLEEP 9
LDL FRA2,AR2
PUSH AR2
READAUD ADJ_FREEGAME
POP AR2
CMPI 0,R0
BNE ISFREE
LDL FRA1,AR2
ISFREE
FLOAT 256,R2
FLOAT 150,R3
LDI 15,RC
CALL TEXT_ADD
CALL SET40FONT
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
SLEEP 10
DBU AR5,FRAL1
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
LCTSI .word LCTS
LNLSI .word LNLS
romdata
LCTS .string "RACE COMPLETED:",0
LNLS .string "NEXT RACE:",0
.text
*
*
SHOWLEG_TIME .set 20+20+50
*
*
SHOWLEG_PROC:
LDI @BONUS_WAVE,AR2
DEC AR2
ADDI @LEG_NAMESI,AR2
LDI *AR2,AR2
FLOAT 256,R2
FLOAT 300,R3
LDI SHOWLEG_TIME,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA)
STI AR1,*+AR7(PDATA+1)
CALL SET18FONTDS
LDI @LCTSI,AR2
FLOAT 256,R2
FLOAT 275,R3
LDI SHOWLEG_TIME,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA+2)
STI AR1,*+AR7(PDATA+3)
CALL SET18FONTDS
FLOAT -100,R6
LDI 20,AR5 ;20
SLLP1 FLOAT 256,R0
SUBF R6,R0
MPYF 0.2,R0
ADDF R0,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,SLLP1
;CENTER IT
;
FLOAT 256,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 35
LDI 20,AR5
SLLP1A FLOAT -100,R0
SUBF R6,R0
MPYF 0.2,R0
ADDF R0,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,SLLP1A
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SHOWNEXTLEG_PROC:
SLEEP 20
LDI @BONUS_WAVE,AR2
ADDI @LEG_NAMESI,AR2
LDI *AR2,AR2
FLOAT 256,R2
FLOAT 50,R3
LDI SHOWLEG_TIME,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA)
STI AR1,*+AR7(PDATA+1)
CALL SET18FONTDS
LDI @LNLSI,AR2
FLOAT 256,R2
; FLOAT 275,R3
FLOAT 25,R3
LDI SHOWLEG_TIME,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA+2)
STI AR1,*+AR7(PDATA+3)
CALL SET18FONTDS
FLOAT 600,R6
LDI 16,AR5
SLLP2 FLOAT 256,R0
SUBF R6,R0
MPYF 0.25,R0
ADDF R0,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,SLLP2
;CENTER IT
;
FLOAT 256,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 50
LDI 215,AR5
SLLP2A FLOAT 600,R0
SUBF R6,R0
MPYF 0.25,R0
ADDF R0,R6
LDI *+AR7(PDATA+1),AR0
STF R6,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+3),AR0
STF R6,*+AR0(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
LDI *+AR7(PDATA),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+2),AR0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,SLLP2A
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* R4 INDEX
*
*
FLAG_POS_TABLEI .word FLAG_POS_TABLE
romdata
FLAG_POS_TABLE
.word 36,133 ;GGpark
.word 39,147 ;Sanfran
.word 40,156 ;I101
.word 43,166 ;Redwds
.word 63,192 ;BeverlyHils
.word 76,200 ;LA freeway
.word 88,190 ;Deathvalley
.word 128,198 ;Arizona
.word 257,106 ;Mount Rush
.word 302,125 ;Iowa
.word 334,125 ;Chicago
.word 358,134 ;Indiana
.word 412,129 ;Appalachia
.word 434,140 ;Washington
.text
*----------------------------------------------------------------------------
*
*
*PARAMETERS
* R4 INDEX
*
PLACE_FLAG:
PUSH AR0
PUSH AR4
PUSH R2
PUSH R3
PUSH RC
LDI R4,AR0
MPYI 2,AR0
ADDI @FLAG_POS_TABLEI,AR0
LDI *AR0,R2
SUBI 256,R2
LDI *+AR0,R3
SUBI 200-20,R3
LDI 367,RC
LDL star,AR2
CALL OBJ_QMAKE
LDIL O_3DROT,R0
OR O_NOUROT|O_NOUNIV,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
LDI AR0,AR2
CALL OBJ_INSERTHP
LDI AR0,AR4
LDF *+AR4(OPOSX),R0
STF R0,*+AR4(OVELX)
LDF *+AR4(OPOSY),R0
STF R0,*+AR4(OVELY)
LDF 100,R0
CALL SFRAND
STF R0,*+AR4(OPOSX)
FLOAT -230,R0
STF R0,*+AR4(OPOSY)
CREATEC PLACE_FLAG_PROC,UTIL_C
SONDFX MAPSTAR2
POP RC
POP RC
POP R2
POP AR4
POP AR0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*PARAMETERS
* AR4 OBJECT
* AR4 *+(OVEL) POSITION TO ACHIEVE
*
*
PLACE_FLAG_PROC:
LDI 12,AR5
PFPLP
LDF *+AR4(OVELX),R0
SUBF *+AR4(OPOSX),R0
MPYF 0.25,R0
ADDF *+AR4(OPOSX),R0
STF R0,*+AR4(OPOSX)
LDF *+AR4(OVELY),R1
SUBF *+AR4(OPOSY),R1
MPYF 0.25,R1
ADDF *+AR4(OPOSY),R1
STF R1,*+AR4(OPOSY)
MPYF R1,R1
MPYF R0,R0
ADDF R1,R0
CMPF 25,R0
BLT ALLDN7
LDF *+AR4(ORADZ),R2
ADDF 0.1,R2
STF R2,*+AR4(ORADZ)
LDI AR4,AR2
ADDI OMATRIX,AR2
CALL FIND_ZMATRIX
SLEEP 1
DBU AR5,PFPLP
ALLDN7
LDF *+AR4(OVELX),R0
STF R0,*+AR4(OPOSX)
LDF *+AR4(OVELY),R0
STF R0,*+AR4(OPOSY)
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
romdata
BT1 .string "AVERAGE MPH:",0
BT1A .string "AVERAGE KPH:",0
.text
BONS_MAXMPH:
LDL BT1,R6
LDL BT1A,R7
READAUD ADJ_MPHORKPM
CMPI 0,R0
LDIEQ R6,AR2
LDINE R7,AR2
FLOAT 0,R2
FLOAT 20,R3
LDI 999,RC
CALL TEXT_ADDDS
STI AR0,*+AR7(PDATA+10) ;SHADOW
STI AR1,*+AR7(PDATA+11) ;ACTUAL
LDI *+AR0(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR1(TEXT_COLOR)
READAUD ADJ_MPHORKPM
CMPI 0,R0
BEQ ISMPHT
LDF @MAXMPH,R0
MPYF 1.6666,R0
BU KJL
ISMPHT LDF @MAXMPH,R0
KJL LDF @MAXMPH_COUNT,R1
CALL DIV_F
FIX R0,R2
LDI AR7,AR2
ADDI PDATA,AR2
CALL _itoa
FLOAT 512,R2
FLOAT 20,R3
LDI 999,RC
CALL TEXT_ADDDS
CALL SETLGDIGITFONTDS
STI AR0,*+AR7(PDATA+12)
STI AR1,*+AR7(PDATA+13)
.globl dnums_amber
LDL dnums_amber,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
CLRF R0
STF R0,@MAXMPH
STF R0,@MAXMPH_COUNT
ENTER_HERE:
LDI 31,AR5
CLRF R6 ;FIXED STF
FLOAT 512,R7 ;FLT STF
BML
FLOAT 250,R0
SUBF R6,R0
MPYF 0.1,R0
CMPF 8,R0
LDFLT 8,R0
ADDF R0,R6
FLOAT 250,R0
CMPF R0,R6
LDFGT R0,R6
LDI *+AR7(PDATA+10),AR0
LDI *+AR7(PDATA+11),AR1
STF R6,*+AR1(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
STF R0,*+AR0(TEXT_POSX)
FLOAT 260,R0
SUBF R7,R0
MPYF 0.20,R0
CMPF -12,R0
LDFLT -12,R0
ADDF R0,R7
FLOAT 260,R0
CMPF R0,R7
LDFLT R0,R7
LDI *+AR7(PDATA+12),AR0
LDI *+AR7(PDATA+13),AR1
STF R7,*+AR1(TEXT_POSX)
LDF R7,R0
ADDF 3,R0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,BML
FLOAT 250,R0
FLOAT 253,R1
FLOAT 260,R2
FLOAT 263,R3
LDI *+AR7(PDATA+10),AR0
STF R1,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+11),AR0
STF R0,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+12),AR0
STF R3,*+AR0(TEXT_POSX)
LDI *+AR7(PDATA+13),AR0
STF R2,*+AR0(TEXT_POSX)
KKL SLEEP 1
LDI @DO_FOLDFLAG,R0
BZ KKL
SONDFX WIPE2
LDI 31,AR5
FLOAT 250,R6 ;FIXED STF
FLOAT 260,R7 ;FLT STF
BML2
FLOAT -20,R0
SUBF R6,R0
MPYF 0.1,R0
ADDF R0,R6
LDI *+AR7(PDATA+10),AR0
LDI *+AR7(PDATA+11),AR1
STF R6,*+AR1(TEXT_POSX)
LDF R6,R0
ADDF 3,R0
STF R0,*+AR0(TEXT_POSX)
FLOAT 532,R0
SUBF R7,R0
MPYF 0.1,R0
ADDF R0,R7
LDI *+AR7(PDATA+12),AR0
LDI *+AR7(PDATA+13),AR1
STF R7,*+AR1(TEXT_POSX)
LDF R7,R0
ADDF 3,R0
STF R0,*+AR0(TEXT_POSX)
SLEEP 1
DBU AR5,BML2
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
romdata
RT2 .string "RECORD TIME:",0 ;coded time format
.text
BONS_RECORDTIME:
SLEEP 5
LDL RT2,AR2
FLOAT 0,R2
FLOAT 120,R3
LDI 999,RC
CALL TEXT_ADDDS
CALL SET18FONTDS
LDI *+AR0(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA+10)
STI AR1,*+AR7(PDATA+11)
LDI @BONUS_WAVE,R6
DEC R6
LDI 0,R7
CALL GET_TABLE_ADDR
CALL TABLE_ENTRY_READ
;
;R0 time code
;R1 init 1
;R2 init 2
;R3 init 3
;
LDI AR7,AR1
ADDI PDATA+14,AR1
AND 0FFh,R1
AND 0FFh,R2
AND 0FFh,R3
LS 8,R2
OR R2,R1
LS 16,R3
OR R3,R1
LDI ' ',R2
LS 24,R2
OR R2,R1
STI R1,*AR1
LDI ' ',R2
STI R2,*+AR1
LDI AR7,AR2
ADDI PDATA,AR2
CALL TIME2STR
LDI AR1,AR0
LDI AR2,AR1
LDI AR0,AR2
CALL STRCAT ;AR1 from above
FLOAT 512,R2
FLOAT 120,R3
LDI 999,RC
CALL TEXT_ADDDS
CALL SET18FONTDS
STI AR0,*+AR7(PDATA+12)
STI AR1,*+AR7(PDATA+13)
BU ENTER_HERE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
romdata
HH1 .string "NEW RECORD TIME",0
HH2 .string "NEW HOT TIME",0
.text
BONS_HOTTIME_REC:
CLRI R4 ;ON OFF TOGGLE
SLEEP 5
LDL HH1,AR2
BU BLAHB
BONS_HOTTIME:
CLRI R4 ;ON OFF TOGGLE
SLEEP 5
LDL HH2,AR2
BLAHB STI AR2,*+AR7(PDATA)
FLOAT 256,R2
FLOAT (150+300),R3
LDI 999,RC
CALL TEXT_ADDDS
LDI *+AR0(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR1(TEXT_COLOR)
LDI AR0,AR4
LDI AR1,AR5
.globl font18_white
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR4(TEXT_PAL)
STI R0,*+AR5(TEXT_PAL)
BONHTLP
LDF *+AR4(TEXT_POSY),R0
FLOAT 152,R1
LDF R1,R3
SUBF R0,R1,R1
MPYF 0.1,R1
ADDF R0,R1
CMPF R3,R1
LDFLT R3,R1
STF R1,*+AR4(TEXT_POSY)
LDF *+AR5(TEXT_POSY),R0
FLOAT 150,R1
LDF R1,R3
SUBF R0,R1,R1
MPYF 0.1,R1
ADDF R0,R1
CMPF R3,R1
LDFLT R3,R1
STF R1,*+AR5(TEXT_POSY)
CALL TEXTTOG
SLEEP 1
LDI @DO_FOLDFLAG,R0
BZ BONHTLP
BONHTLP2
LDF *+AR4(TEXT_POSY),R0
FLOAT 152+300,R1
LDF R1,R3
SUBF R0,R1,R1
MPYF 0.1,R1
ADDF R0,R1
CMPF R3,R1
LDFGT R3,R1
STF R1,*+AR4(TEXT_POSY)
LDF *+AR5(TEXT_POSY),R0
FLOAT 150+300,R1
LDF R1,R3
SUBF R0,R1,R1
MPYF 0.1,R1
ADDF R0,R1
CMPF R3,R1
LDFGT R3,R1
STF R1,*+AR5(TEXT_POSY)
SLEEP 1
BU BONHTLP2
BADA LDI 1,R0
STI R0,*+AR4(TEXT_TIKS)
STI R0,*+AR5(TEXT_TIKS)
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
TEXTTOG:
ADDI @NFRAMES,R4
CMPI 30,R4
BLT ISOFF
CMPI 35,R4
BLT GAGA
CLRI R4
GAGA
LDL NULLSTR5,R0
BU IBOIBO
ISOFF LDI *+AR7(PDATA),R0
IBOIBO STI R0,*+AR4(TEXT_PTR)
STI R0,*+AR5(TEXT_PTR)
RETS
romdata
NULLSTR5 .string " ",0
.text
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
romdata
BT2 .string "ELAPSED TIME:",0 ;coded time format
.text
BONS_ETIME:
SLEEP 5
LDL BT2,AR2
FLOAT 0,R2
FLOAT 50,R3
LDI 999,RC
CALL TEXT_ADDDS
CALL SET18FONTDS
LDI *+AR0(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR1(TEXT_COLOR)
STI AR0,*+AR7(PDATA+10)
STI AR1,*+AR7(PDATA+11)
LDI @DID_TIMED_OUT,R0
BZ DOREG3
LDI 0,R0 ;ELAPSED TIME OF 0 = DID NOT FINISH
STI R0,@ETIME
LDL EXPIRED,AR2
BU LREG3
DOREG3 LDI @STOPWATCH,R0
STI R0,@ETIME
LDI AR7,AR2
ADDI PDATA,AR2
CALL TIME2STR
LREG3
FLOAT 512,R2
FLOAT 50,R3
LDI 999,RC
CALL TEXT_ADDDS
CALL SET18FONTDS
STI AR0,*+AR7(PDATA+12)
STI AR1,*+AR7(PDATA+13)
.globl font18_white
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
CLRI R0
STI R0,@STOPWATCH
BU ENTER_HERE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
romdata
BT3 .string "POSITION:",0 ;coded time format
.text
BONS_POSITION:
LDI @POSITION,AR4
DEC AR4
MPYI 3,AR4
ADDI @POS_TABLEI,AR4
LDI -60,R5 ;YPOS
LDI 40,AR6
BPL1
FLOAT R5,R0
LDF R0,R1
FLOAT 138-60,R2
SUBRF R2,R0
MPYF 0.2,R0
ADDF R1,R0
FIX R0,R5
LDI *AR4,AR2
LDI 220,R2
ADDI *+AR4(2),R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
LDI *+AR4(1),AR2
LDI 220+35,R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
SLEEP 1
DBU AR6,BPL1
LDI 158,AR6
BPL2
LDI *AR4,AR2
LDI 220,R2
ADDI *+AR4(2),R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
LDI *+AR4(1),AR2
LDI 220+35,R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
SLEEP 1
LDI @DO_FOLDFLAG,R0
BZ BPL2
LDI 40,AR6
BPL3
FLOAT R5,R0
LDF R0,R1
SUBRF -60,R0
MPYF 0.2,R0
ADDF R1,R0
FIX R0,R5
LDI *AR4,AR2
LDI 220,R2
ADDI *+AR4(2),R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
LDI *+AR4(1),AR2
LDI 220+35,R2
LDI R5,R3
LDI TM|ZS,R4
CALL BLTMOD2D_DS
SLEEP 1
DBU AR6,BPL3
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
KILL_THEM:
;KILL ALL DRONES
LDI DRONE_C,R0
LDI CLASS_M,R1
CALL PRC_KILLALL
;TRAFFIC
LDI SPAWNER_C,R0
LDI CLASS_M,R1
CALL PRC_KILLALL
;WAVEFLAG, MONKEYs
LDI UTIL_C|MONKEY_T,R0
LDI CLASS_M|TYPE_M,R1
CALL PRC_KILLALL
;LBACK_WATCH
LDI UTIL_C|BACKGRND_T,R0
LDI -1,R1
CALL PRC_KILLALL
CALL DELETE_SPLAT
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
FIND_AND_REACTIVATE:
PUSH AR0
PUSH AR4
LDI @OACTIVE,AR0
FARLP LDI *AR0,R0
BZ FARX
LDI R0,AR0
LDI *+AR0(OID),R0
CMPI RDDEBRIS_C|TSC_IGNORE|TSC_DUDE_S,R0
BNE NOTRUT
LDI AR0,AR4
.globl RUT_ANI
CALL RUT_ANI
BU FARLP
NOTRUT CMPI RDDEBRIS_C|TSC_IGNORE|TSC_BABE_S,R0
BNE FARLP
LDI AR0,AR4
.global HUNGH_ANI_REENTER
CALL HUNGH_ANI_REENTER
BU FARLP
FARX
POP AR4
POP AR0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
KILL_THE_REANIMATORS:
LDI SPAWNER_C|ANIMATION_T|7,R0
LDI -1,R1
CALL PRC_KILLALL
RETS
*----------------------------------------------------------------------------
.END