1321 lines
21 KiB
NASM
Executable File
1321 lines
21 KiB
NASM
Executable File
.FILE "TRACKSEL.ASM"
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
|
|
.include OBJ.EQU
|
|
.include MACS.EQU
|
|
.include MPROC.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 ERROR.EQU
|
|
.include COMM.EQU
|
|
|
|
|
|
.bss TURNOBJ,1
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
SMALL_CURSOR .set PDATA+0
|
|
BIG_CURSOR .set PDATA+1
|
|
OLD_INDEX .set PDATA+2
|
|
ROM_SMALL_CURSOR .set PDATA+3
|
|
ROM_BIG_CURSOR .set PDATA+4
|
|
LAST_HIDDEN_TRACK .set PDATA+5
|
|
|
|
.bss RAW_CHOOSENTRK,1 ;BEFORE CONVERTING
|
|
|
|
CRUISE SPTR "CRUISE THE USA"
|
|
CRUISE2 SPTR "JAM WITH THE PRESIDENT"
|
|
CRUISE3 SPTR "IN THE WHITE HOUSE HOT TUB"
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
*
|
|
TRACK_SELECTION:
|
|
CLRI R0
|
|
STI R0,@NOAERASE
|
|
STI R0,@START_HIT
|
|
|
|
|
|
|
|
FIFO_CLRP R0 ;IS THE FIFO CLEAR
|
|
DMA_WT R0
|
|
LDI 1,R0
|
|
STI R0,@CLEARRDY ;READY FOR INTERRUPT
|
|
KK5 LDI @CLEARRDY,R0
|
|
BNZ KK5
|
|
|
|
; CALL PAL_INIT
|
|
CALL LOAD_FIXED_PALETTES
|
|
|
|
|
|
LDI -1,R0
|
|
STI R0,*+AR7(OLD_INDEX)
|
|
STI R0,*+AR7(LAST_HIDDEN_TRACK)
|
|
|
|
; CALL CLEANUP_PALS
|
|
LDL crace_PALETTES,AR2
|
|
CALL alloc_section
|
|
SLEEP 1
|
|
|
|
FIFO_CLRP R0 ;IS THE FIFO CLEAR
|
|
DMA_WT R0
|
|
CALL FIFO_RESET
|
|
|
|
LDL _SECcrace,AR2
|
|
CALL LOAD_SECTION_REQ
|
|
HOLD4LOAD
|
|
SLEEP 1
|
|
LDI @DECOMP_ACTIVE,R0
|
|
BNZ HOLD4LOAD
|
|
|
|
|
|
|
|
LDL shared_PALETTES,AR2
|
|
CALL dealloc_section
|
|
LDL shared_PALETTES,AR2
|
|
CALL alloc_section
|
|
LDL _SECshared,AR2
|
|
CALL LOAD_SECTION_REQ
|
|
|
|
CALL OBJ_INIT
|
|
CALL BOILERPLATE_INIT
|
|
|
|
|
|
LDI @FIRST_RACE,R0
|
|
BZ NOT_RACE1
|
|
|
|
LDL _SECctrans,AR2
|
|
CALL LOAD_SECTION_REQ
|
|
LDL ctrans_PALETTES,AR2
|
|
CALL alloc_section
|
|
NOT_RACE1
|
|
|
|
LDP @_CAMERAPOS
|
|
CLRF R0
|
|
STF R0,@_CAMERAPOS+X
|
|
STF R0,@_CAMERAPOS+Y
|
|
|
|
FLOAT -368,R0
|
|
STF R0,@_CAMERAPOS+Z
|
|
SETDP
|
|
|
|
LDI TRACK_SELECTION_LIST_LEN+1,R0
|
|
STI R0,@POSES
|
|
|
|
LDI RM_SINGLE,R0
|
|
STI R0,@RACE_MODE
|
|
|
|
|
|
LDL racemap_grp,AR2
|
|
CALL LOAD_SINGLE_SECTION
|
|
CALL FIX_TRACK_SCREEN
|
|
|
|
|
|
SONDFX VIEW2IN
|
|
|
|
LDI 6,R0
|
|
STI R0,@POSE
|
|
|
|
JSRP ZOOMINP
|
|
|
|
READAUD AUD_RESET_TOTALLY
|
|
CMPI 0,R0
|
|
BEQ JAJAD
|
|
|
|
.globl MOTION_SCREWED
|
|
MOTION_SCREWED:
|
|
|
|
.data
|
|
LLG1 .word L4A
|
|
LLG2 .word L5A
|
|
LLG3 .word L5B
|
|
L88 .word IBOIBOJ
|
|
|
|
romdata
|
|
L4A .string "MOTION RECALIBRATION",0
|
|
L5A .string "REMAIN SEATED",0
|
|
L5B .string "DO NOT TOUCH MATS",0
|
|
.text
|
|
|
|
.bss IBOIBOJ,2
|
|
|
|
|
|
CALL OBJ_INIT
|
|
|
|
LDI 10,AR5
|
|
LLKJ
|
|
LDI @LLG1,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 50,R3
|
|
LDI 60,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
CALL SET40FONTDS
|
|
|
|
LDI @LLG2,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 120,R3
|
|
LDI 60,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
CALL SET40FONTDS
|
|
|
|
LDI @LLG3,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 190,R3
|
|
LDI 60,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
CALL SET40FONTDS
|
|
|
|
|
|
LDI AR5,R2
|
|
LDI @L88,AR2
|
|
CALL _itoa
|
|
LDI @L88,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 260,R3
|
|
LDI 60,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
CALL SETN43FONTDS
|
|
|
|
SONDFX BASICBEEPH
|
|
|
|
SLEEP 60
|
|
DBU AR5,LLKJ
|
|
SLEEP 70
|
|
BU DIAG_RETURN
|
|
JAJAD
|
|
|
|
|
|
;******
|
|
;******
|
|
;****** NORMAL GAME MODE...
|
|
;******
|
|
;******
|
|
|
|
|
|
LDI @FIRST_RACE,R0
|
|
BNZ NOBUYIN77
|
|
|
|
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_GAMES_CONTINUES
|
|
INCAUD AUD_TOTAL_FREEGAMES
|
|
CALL HSTDEC
|
|
BU TOJOIN
|
|
;Has the player made Pole Position? (1)
|
|
;T-> Branch over this Coin Grab
|
|
;F-> Get more coin to continue
|
|
;
|
|
NOT1ST
|
|
|
|
CALL BOILERPLATE
|
|
JSRP INSMORE
|
|
CALL BOILERPLATE_DELETE
|
|
|
|
CMPI 1,AR6
|
|
BNE ENDPLAYER
|
|
INCAUD AUD_GAMES_CONTINUES
|
|
CALL HSTDEC
|
|
TOJOIN
|
|
JSRP ISSUE_STARTGAME_TSEL
|
|
NOBUYIN77
|
|
|
|
LDI @_MODE,R0
|
|
ANDN MBRIDGE|MINTUNNEL|MHUD|MWATER|MINFIN|MHS|MSLINE|MMODE,R0
|
|
OR MINTRO|MGO,R0
|
|
STI R0,@_MODE
|
|
|
|
LDI 12,R0
|
|
STI R0,@_countdown
|
|
CALL INIT_PEDALCHK
|
|
|
|
CLRI R0
|
|
STI R0,@START_HIT
|
|
|
|
LDI @HEAD2HEAD_ON,R0
|
|
BZ PRAPA
|
|
|
|
LDI @OM_CHOSEN_RACE,R0
|
|
CMPI -1,R0
|
|
BNE PRAJHFS
|
|
PRAPA
|
|
|
|
LDI 8,AR5
|
|
BABO
|
|
CALL GET_RACE_IDX
|
|
CALL TRACK_SEL_CURSOR
|
|
SLEEP 1
|
|
DBU AR5,BABO
|
|
PRAJHFS
|
|
|
|
|
|
CLRI R0
|
|
STI R0,@START_HIT
|
|
|
|
|
|
;*************************************************************
|
|
;*************************************************************
|
|
;SELECT TRACK MAIN LOOP
|
|
;*************************************************************
|
|
;*************************************************************
|
|
TRACK_SEL_LP
|
|
|
|
;are we linked?
|
|
LDI @HEAD2HEAD_ON,R0
|
|
BZ NOWAY
|
|
|
|
;has the other player chosen a game
|
|
;
|
|
LDI @OM_CHOSEN_RACE,R0
|
|
CMPI -1,R0
|
|
BEQ NOWAY
|
|
|
|
LDI @OM_HIDDEN_ON,R1
|
|
STI R1,*+AR7(LAST_HIDDEN_TRACK)
|
|
|
|
STI R0,@CHOSEN_RACE
|
|
|
|
LDI @OM_RACE_MODE,R0
|
|
STI R0,@RACE_MODE
|
|
BU TSLPX
|
|
NOWAY
|
|
|
|
|
|
|
|
LDI @START_HIT,R0
|
|
BNZ TSLPX
|
|
|
|
CALL HIDDEN_TRACKS
|
|
CALL GET_RACE_IDX
|
|
CALL TRACK_SEL_CURSOR
|
|
|
|
|
|
;-------time remaining
|
|
;
|
|
LDL time,AR2
|
|
LDI 242,R2 ;R2 POS X
|
|
LDI 240,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
|
|
|
|
LDI @CRUISE,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 30,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADDDS
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
|
|
|
|
|
|
|
;HEAD2HEAD
|
|
;
|
|
;are we in linked game?
|
|
; F -> continue
|
|
;has the other machine chosen the game?
|
|
; T-> accept the game
|
|
;
|
|
|
|
CALL PEDALCHK
|
|
BC TSLPX
|
|
CALL RACESEL_TIMER
|
|
SLEEP 1
|
|
LDI @_countdown,R0
|
|
BGT TRACK_SEL_LP
|
|
TSLPX
|
|
|
|
|
|
;HEAD2HEAD
|
|
;
|
|
;NOW TELL OTHER MACHINE:
|
|
;
|
|
; that we are finished with selecting the race
|
|
; if we are subordinate dont???
|
|
;
|
|
;
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
STI R0,@HIDDEN_ON
|
|
CALL SEND_RACENUM
|
|
|
|
|
|
;IF we are a slave, then we must wait
|
|
;for master to tell us what we chose
|
|
|
|
LDI @HEAD2HEAD_ON,R0
|
|
BZ NOTYETLNKD
|
|
|
|
LDI @DIPRAM,R0
|
|
TSTB CMDP_MASTER,R0
|
|
BZ NOTYETLNKD ;actually: is master therefore IGNORE
|
|
|
|
|
|
LDI 20,AR5
|
|
FEEDBACKLP
|
|
SLEEP 1
|
|
DEC AR5
|
|
CMPI 0,AR5
|
|
.if CDEBUG
|
|
BEQ $
|
|
.endif
|
|
BEQ NOTYETLNKD
|
|
LDI @OM_CHOSEN_RACE,R0
|
|
CMPI -1,R0
|
|
BEQ FEEDBACKLP
|
|
|
|
LDI @OM_HIDDEN_ON,R1
|
|
STI R1,*+AR7(LAST_HIDDEN_TRACK)
|
|
|
|
LDI @OM_CHOSEN_RACE,R0
|
|
STI R0,@CHOSEN_RACE
|
|
|
|
LDI @OM_RACE_MODE,R0
|
|
STI R0,@RACE_MODE
|
|
NOTYETLNKD
|
|
|
|
|
|
;THIS IS NOW MEANINGLESS
|
|
;CLEAR THIS FOR FUTURE USE
|
|
;
|
|
CLRI R0
|
|
STI R0,@OM_HIDDEN_ON
|
|
|
|
|
|
;\\\ \\\ \\\ \\\ \\\ \\\
|
|
; \\\ \\\ \\\ \\\ \\\ \\\
|
|
|
|
SONDFX TRANS
|
|
|
|
|
|
; ;HEAD2HEAD
|
|
; ;
|
|
; ;NOW TELL OTHER MACHINE:
|
|
; ;
|
|
; ; that we are finished with selecting the race
|
|
; ; if we are subordinate dont???
|
|
; ;
|
|
; ;
|
|
; LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
; STI R0,@HIDDEN_ON
|
|
; CALL SEND_RACENUM
|
|
|
|
|
|
;delete cursor
|
|
;
|
|
LDI *+AR7(SMALL_CURSOR),AR4
|
|
LDI *+AR4(OLINK2),AR5
|
|
|
|
LDI @TSEL_HEAD,R0
|
|
BU LKGGA
|
|
JJKKA LDI *+AR0(OLINK2),R0
|
|
.if DEBUG
|
|
BZ $
|
|
.endif
|
|
BZ ALLDNA
|
|
LKGGA LDI R0,AR0
|
|
CMPI *+AR0(OLINK2),AR4
|
|
BNE JJKKA
|
|
STI AR5,*+AR0(OLINK2)
|
|
ALLDNA
|
|
.globl TSEL_HEAD
|
|
|
|
LDI *+AR7(SMALL_CURSOR),AR2
|
|
CALL OBJ_DELETE
|
|
|
|
|
|
|
|
|
|
;********************************************************************
|
|
;WAIT FOR DUAL PLAYER GAME HERE
|
|
;except with the first game
|
|
;
|
|
;********************************************************************
|
|
;
|
|
LDI @FIRST_RACE,R0
|
|
BNZ KAKAF
|
|
JSRP WAIT_FOR_CHALLENGER
|
|
KAKAF
|
|
;
|
|
;********************************************************************
|
|
;********************************************************************
|
|
|
|
|
|
;OM race mode == RM_SINGLE <=>
|
|
; not racing across the USA already
|
|
;else
|
|
; we have bought into an ongoing
|
|
; race game
|
|
LDI @RACE_MODE,R0
|
|
CMPI RM_USA,R0
|
|
BEQ BOUGHRAU
|
|
; BNE NBIRAU
|
|
; BU NOHID1
|
|
;NBIRAU
|
|
|
|
|
|
|
|
LDI @CHOSEN_RACE,R0
|
|
CMPI 5,R0
|
|
LDIEQ RM_USA,R1
|
|
LDINE RM_SINGLE,R1
|
|
STI R1,@RACE_MODE
|
|
|
|
CMPI RM_USA,R1
|
|
BNE NOTUSA_RACE
|
|
|
|
INCAUD AUD_START_GGATE
|
|
INCAUD AUD_FS_USA
|
|
|
|
LDI 0,AR2
|
|
BU JJ2
|
|
NOTUSA_RACE
|
|
|
|
|
|
|
|
;Translate race index into an actual
|
|
;useable value.
|
|
;
|
|
;
|
|
.bss HIDDEN_ON,1
|
|
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
STI R0,@HIDDEN_ON
|
|
CMPI -1,R0
|
|
BEQ NO_HID1
|
|
|
|
LDI @CHOSEN_RACE,AR2
|
|
STI AR2,@RAW_CHOOSENTRK
|
|
|
|
|
|
LDI RACE_GG,AR2
|
|
LDI AUD_FS_HID_GG,AR3
|
|
CMPI 2,R0
|
|
LDIEQ RACE_IN,AR2
|
|
LDIEQ AUD_FS_HID_IN,AR3
|
|
CMPI 3,R0
|
|
LDIEQ RACE_SF,AR2
|
|
LDIEQ AUD_FS_HID_SF,AR3
|
|
|
|
PUSH AR2
|
|
LDI AR3,AR2
|
|
CALL AUDIT_INC
|
|
POP AR2
|
|
|
|
BU JJ2
|
|
|
|
NO_HID1
|
|
;this must happen before translation
|
|
;
|
|
LDI @CHOSEN_RACE,AR2
|
|
STI AR2,@RAW_CHOOSENTRK
|
|
ADDI AUD_FS_AZ,AR2
|
|
CALL AUDIT_INC
|
|
|
|
|
|
LDI @CHOSEN_RACE,AR2
|
|
MPYI TS_SIZE,AR2
|
|
ADDI @TRACK_SELECTION_LISTI,AR2
|
|
LDI *AR2,AR2
|
|
JJ2 STI AR2,@CHOSEN_RACE
|
|
|
|
|
|
BOUGHRAU
|
|
|
|
|
|
JSRP TSEL_ZOOMOUTP
|
|
|
|
|
|
CLRI R0
|
|
STI R0,@NOAERASE
|
|
CALL OBJ_INIT
|
|
SLEEP 2
|
|
CALL CLEANUP_TRACKSEL_PALS
|
|
|
|
CALL CLEANUP_PALS
|
|
|
|
LDI @CHOSEN_RACE,AR0
|
|
ADDI @RACE_STARTING_POINTSI,AR0
|
|
LDI *AR0,R0
|
|
STI R0,@STARTSECTION
|
|
CALL FIND_STARTING_VALUES
|
|
|
|
|
|
LDI UTIL_C|CHOOSERACE_T,R0
|
|
LDI -1,R1
|
|
CALL PRC_KILLALL
|
|
|
|
LDI @CHOSEN_RACE,R0
|
|
STI R0,@BONUS_WAVE ;Set bonus wave 'cause noby else does until you finish a wave
|
|
RETP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
CLEANUP_TRACKSEL_PALS:
|
|
LDL crace_PALETTES,AR2
|
|
CALL dealloc_section
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*V1+V2 = GOLDEN GATE PARK not
|
|
*V1+V3 = SAN FRANCISCO
|
|
*V2+V3 = INDIANA
|
|
*
|
|
*
|
|
*
|
|
|
|
*
|
|
*
|
|
* R0 IDX {1,2,3}
|
|
*
|
|
RESTORE_HIDDEN:
|
|
CMPI -1,R0
|
|
RETSEQ
|
|
PUSH AR0
|
|
PUSH AR2
|
|
LDI 401h,AR2
|
|
CMPI 2,R0
|
|
LDIEQ 406h,AR2
|
|
CMPI 3,R0
|
|
LDIEQ 409h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
LDI *+AR0(OCARBLK),R0
|
|
STI R0,*+AR0(OROMDATA)
|
|
POP AR2
|
|
POP AR0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
HIDDEN_TRACKS:
|
|
LDI @SWITCHBUTS,R0
|
|
RS 16,R0
|
|
AND SW_VIEW0_H|SW_VIEW1_H|SW_VIEW2_H,R0
|
|
|
|
CMPI SW_VIEW0_H|SW_VIEW1_H,R0
|
|
BNE NHT1
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
CMPI 1,R0
|
|
BEQ HIDDTX
|
|
|
|
CALL RESTORE_HIDDEN
|
|
|
|
LDI 1,R0
|
|
STI R0,*+AR7(LAST_HIDDEN_TRACK)
|
|
;replace
|
|
LDI 401h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDI *+AR0(OROMDATA),R0
|
|
STI R0,*+AR0(OCARBLK)
|
|
|
|
LDL mpcesy,R0
|
|
STI R0,*+AR0(OROMDATA)
|
|
|
|
BU HIDDTX
|
|
|
|
|
|
NHT1 CMPI SW_VIEW0_H|SW_VIEW2_H,R0
|
|
BNE NHT2
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
CMPI 2,R0
|
|
BEQ HIDDTX
|
|
CALL RESTORE_HIDDEN
|
|
LDI 2,R0
|
|
STI R0,*+AR7(LAST_HIDDEN_TRACK)
|
|
;replace
|
|
LDI 406h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDI *+AR0(OROMDATA),R0
|
|
STI R0,*+AR0(OCARBLK)
|
|
LDL mpcmed,R0
|
|
STI R0,*+AR0(OROMDATA)
|
|
BU HIDDTX
|
|
|
|
|
|
NHT2 CMPI SW_VIEW1_H|SW_VIEW2_H,R0
|
|
BNE NHT3
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
CMPI 3,R0
|
|
BEQ HIDDTX
|
|
CALL RESTORE_HIDDEN
|
|
LDI 3,R0
|
|
STI R0,*+AR7(LAST_HIDDEN_TRACK)
|
|
;replace
|
|
LDI 409h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDI 409h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
LDI *+AR0(OROMDATA),R0
|
|
STI R0,*+AR0(OCARBLK)
|
|
LDL mpcexp,R0
|
|
STI R0,*+AR0(OROMDATA)
|
|
BU HIDDTX
|
|
|
|
NHT3
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R0
|
|
CMPI -1,R0
|
|
BEQ HIDDTX
|
|
CALL RESTORE_HIDDEN
|
|
LDI -1,R0
|
|
STI R0,*+AR7(LAST_HIDDEN_TRACK)
|
|
HIDDTX
|
|
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*GET THE RACE INDEX (POINTED TO BY WHEEL)
|
|
*
|
|
*
|
|
GET_RACE_IDX:
|
|
CALL GETCHOICE
|
|
|
|
LDI @POSE,R0
|
|
CMPI 5,R0
|
|
BLE NDDR
|
|
DEC R0
|
|
NDDR CMPI @CHOSEN_RACE,R0
|
|
BEQ NSND
|
|
|
|
PUSH R0
|
|
SONDFX TRANS
|
|
POP R0
|
|
|
|
|
|
NSND STI R0,@CHOSEN_RACE
|
|
|
|
LDI *+AR7(LAST_HIDDEN_TRACK),R1
|
|
CMPI -1,R1
|
|
BEQ NH
|
|
|
|
CMPI 1,R0
|
|
BNE R55
|
|
CMPI 1,R1 ;Hidden golden gate
|
|
LDIEQ 11,AR3
|
|
BNE NH
|
|
BU R66
|
|
|
|
R55
|
|
CMPI 6,R0
|
|
BNE R56
|
|
CMPI 2,R1
|
|
LDIEQ 12,AR3
|
|
BNE NH
|
|
BU R66
|
|
R56
|
|
|
|
CMPI 9,R0
|
|
BNE NH
|
|
CMPI 3,R1
|
|
LDIEQ 13,AR3
|
|
BNE NH
|
|
|
|
R66
|
|
LDI @CHOSEN_RACE,R0
|
|
LDI R0,AR2
|
|
BU KK88
|
|
|
|
NH
|
|
|
|
|
|
LDI @CHOSEN_RACE,AR2
|
|
LDI AR2,AR3
|
|
KK88 ADDI 400h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
LDF *+AR0(OPOSX),R2
|
|
FLOAT 256,R0
|
|
ADDF R0,R2
|
|
LDF *+AR0(OPOSY),R3
|
|
FLOAT 180,R0
|
|
ADDF R0,R3
|
|
|
|
|
|
LDI AR3,R0
|
|
MPYI TS_SIZE,R0
|
|
LDI R0,AR0
|
|
ADDI @TRACK_SELECTION_LISTI,AR0
|
|
LDI *AR0,AR2
|
|
ADDI @LEG_NAMESI,AR2
|
|
LDI *AR2,AR2
|
|
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SET12FONT
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
|
|
CMPI 5,AR3
|
|
BNE NOTTHEWH
|
|
|
|
|
|
READAUD ADJ_CLINTON
|
|
CMPI 1,R0
|
|
BNE NOTTHEWH
|
|
|
|
LDI @CRUISE2,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 120,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SET12FONT
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
|
|
LDI @CRUISE3,AR2
|
|
FLOAT 256,R2
|
|
FLOAT 135,R3
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SET12FONT
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
|
|
NOTTHEWH
|
|
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
ZOOMINP:
|
|
LDI 20,AR4
|
|
ZITSP CALL ZOOMIN_TSEL
|
|
|
|
LDI @OM_CHOSEN_RACE,R0
|
|
CMPI -1,R0
|
|
BNE NOWAY543
|
|
CALL GET_RACE_IDX
|
|
CALL TRACK_SEL_CURSOR
|
|
NOWAY543
|
|
|
|
SLEEP 1
|
|
DBU AR4,ZITSP
|
|
RETP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
ZOOMIN_TSEL:
|
|
LDI @OACTIVE,AR5
|
|
|
|
ZISL LDI AR5,R0
|
|
BZ ZIX
|
|
LDI R0,AR0
|
|
LDI *AR0,AR5
|
|
|
|
LDF *+AR0(OVELZ),R0
|
|
SUBF *+AR0(OPOSZ),R0
|
|
MPYF 0.42,R0 ;.15
|
|
CMPF -5,R0
|
|
BGT JJDD
|
|
|
|
ADDF *+AR0(OPOSZ),R0
|
|
STF R0,*+AR0(OPOSZ)
|
|
BU HGF
|
|
JJDD
|
|
LDF *+AR0(OVELZ),R0
|
|
STF R0,*+AR0(OPOSZ)
|
|
CLRF R2
|
|
STF R2,*+AR0(ORADZ)
|
|
LDI AR0,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
BU HHFFD
|
|
HGF
|
|
|
|
|
|
LDF *+AR0(ORADZ),R2
|
|
MPYF 0.65,R2
|
|
STF R2,*+AR0(ORADZ)
|
|
LDI AR0,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
HHFFD
|
|
BU ZISL
|
|
ZIX
|
|
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*DO THE NESSESARY MUMBO JUMBO, *AND* LINKEM _ALL_
|
|
*TOGETHER VIA OLINK2
|
|
*
|
|
*
|
|
*
|
|
FIX_TRACK_SCREEN:
|
|
|
|
CLRI R0
|
|
STI R0,@TSEL_HEAD
|
|
|
|
LDI -1,R6
|
|
|
|
LDI @OACTIVE,AR5
|
|
FTSL LDI AR5,R0
|
|
BZ FTSLX
|
|
LDI R0,AR0
|
|
LDI *AR0,AR5 ;NEXT OBJECT
|
|
|
|
|
|
LDF *+AR0(OPOSX),R0
|
|
STF R0,*+AR0(OVELX)
|
|
LDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR0(OVELY)
|
|
LDF *+AR0(OPOSZ),R0
|
|
STF R0,*+AR0(OVELZ)
|
|
|
|
RANDN 28000
|
|
FLOAT R0
|
|
ADDF *+AR0(OPOSZ),R0
|
|
STF R0,*+AR0(OPOSZ)
|
|
|
|
LDF 6,R0
|
|
CALL SFRAND
|
|
STF R0,*+AR0(ORADZ)
|
|
|
|
|
|
LDI *+AR0(OID),R0
|
|
|
|
CMPI 040Ch,R0 ;SMALL CURSOR
|
|
BNE NSC
|
|
STI AR0,*+AR7(SMALL_CURSOR)
|
|
LDI *+AR0(OROMDATA),R0
|
|
STI R0,*+AR7(ROM_SMALL_CURSOR)
|
|
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
NSC
|
|
CMPI 8A1h,R0
|
|
BNE NTRM1
|
|
|
|
LDI AR0,AR4
|
|
CREATE CYCLE_PUSH,UTIL_C|CHOOSERACE_T
|
|
LDI AR4,AR0
|
|
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
NTRM1
|
|
CMPI 8A2h,R0
|
|
BNE NWHEL1
|
|
|
|
LDI AR0,AR4
|
|
CREATE TURNTO_SELECT,UTIL_C|CHOOSERACE_T
|
|
LDI AR4,AR0
|
|
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
NWHEL1
|
|
|
|
CMPI 0410h,R0
|
|
BNE NBC
|
|
STI AR0,*+AR7(BIG_CURSOR)
|
|
LDI *+AR0(OROMDATA),R0
|
|
STI R0,*+AR7(ROM_BIG_CURSOR)
|
|
|
|
LDI AR0,AR2
|
|
CALL OBJ_DELETE
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
NBC
|
|
|
|
CMPI 0405h,R0
|
|
BNE NAS
|
|
PUSH AR0
|
|
LDI AR0,AR4
|
|
CREATE ANIMATE_MAP,UTIL_C|CHOOSERACE_T
|
|
POP AR0
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
NAS
|
|
CMPI 40Eh,R0
|
|
BNE NN77
|
|
LDI AR0,AR2
|
|
CALL OBJ_DELETE
|
|
BU FTSL
|
|
NN77
|
|
CMPI 40Fh,R0
|
|
BNE NN88
|
|
|
|
LDI AR0,AR2
|
|
CALL OBJ_DELETE
|
|
BU FTSL
|
|
NN88
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
BU FTSL
|
|
FTSLX
|
|
STI R6,@TSEL_HEAD
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
.bss TSEL_HEAD,1
|
|
.bss TSEL_THEONE,1
|
|
TSEL_ZOOMOUTP:
|
|
|
|
SONDFX VIEW2IN
|
|
|
|
LDI @RACE_MODE,R0
|
|
CMPI RM_USA,R0
|
|
BNE JJKKD
|
|
LDI 5,AR2
|
|
BU LLGF
|
|
|
|
JJKKD LDI @RAW_CHOOSENTRK,AR2
|
|
LLGF LDI AR2,AR3
|
|
ADDI 400h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
STI AR0,@TSEL_THEONE
|
|
|
|
CREATEC CENTER_THEONE,UTIL_C
|
|
|
|
LDI 30,AR5
|
|
TSLLP CALL TSEL_ZOOMOUT
|
|
SLEEP 1
|
|
DBU AR5,TSLLP
|
|
RETP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
CENTER_THEONE:
|
|
LDI @TSEL_THEONE,AR4
|
|
|
|
LDI 15,AR5
|
|
CTOLP LDF *+AR4(OPOSX),R0
|
|
MPYF 0.8,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
LDF *+AR4(OPOSY),R0
|
|
MPYF 0.8,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
|
|
CALL CENTER_SUB1
|
|
|
|
SLEEP 1
|
|
DBU AR5,CTOLP
|
|
|
|
|
|
LDI 15,AR5
|
|
CTOLPB LDF *+AR4(OPOSZ),R0
|
|
MPYF 0.08,R0
|
|
CMPF 50,R0
|
|
LDFLT 50,R0
|
|
ADDF *+AR4(OPOSZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
CALL CENTER_SUB1
|
|
|
|
SLEEP 1
|
|
DBU AR5,CTOLPB
|
|
DIE
|
|
|
|
CENTER_SUB1:
|
|
LDF *+AR4(OPOSX),R2
|
|
FLOAT 256,R0
|
|
ADDF R0,R2
|
|
LDF *+AR4(OPOSY),R3
|
|
FLOAT 180,R0
|
|
ADDF R0,R3
|
|
|
|
LDI @RACE_MODE,R0
|
|
CMPI RM_USA,R0
|
|
BNE K89
|
|
LDI 14,AR2
|
|
BU K99
|
|
|
|
K89 LDI @CHOSEN_RACE,AR2
|
|
K99 ADDI @LEG_NAMESI,AR2
|
|
LDI *AR2,AR2
|
|
|
|
LDI 1,RC
|
|
CALL TEXT_ADD
|
|
CALL SET12FONT
|
|
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
TSEL_ZOOMOUT:
|
|
LDI @TSEL_HEAD,R0
|
|
BU LKGG
|
|
|
|
JJKK LDI *+AR0(OLINK2),R0
|
|
BZ ALLDN
|
|
LKGG LDI R0,AR0
|
|
|
|
CMPI @TSEL_THEONE,R0
|
|
BEQ JJKK ;skip our choice
|
|
|
|
LDF *+AR0(OPOSX),R0
|
|
MPYF 0.1,R0
|
|
ADDF *+AR0(OPOSX),R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
LDF *+AR0(OPOSY),R0
|
|
MPYF 0.1,R0
|
|
ADDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDF *+AR0(OPOSZ),R0
|
|
MPYF 0.08,R0
|
|
CMPF 50,R0
|
|
LDFLT 50,R0
|
|
|
|
ADDF *+AR0(OPOSZ),R0
|
|
STF R0,*+AR0(OPOSZ)
|
|
|
|
BU JJKK
|
|
ALLDN
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
ANIMATE_MAP_TABI .word ANIMATE_MAP_TAB
|
|
ANIMATE_MAP_TAB .word mhop1,mhop2,mhop3,mhop4,-1
|
|
*
|
|
ANIMATE_MAP:
|
|
LDI @ANIMATE_MAP_TABI,AR5
|
|
AMLP
|
|
LDI *AR5++,R0
|
|
BN ANIMATE_MAP
|
|
STI R0,*+AR4(OROMDATA)
|
|
|
|
SLEEP 4
|
|
BU AMLP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
TRACK_SEL_CURSOR:
|
|
LDI *+AR7(OLD_INDEX),R0
|
|
|
|
LDI @CHOSEN_RACE,AR0
|
|
CMPI R0,AR0
|
|
RETSEQ
|
|
|
|
STI AR0,*+AR7(OLD_INDEX)
|
|
|
|
LDI AR0,AR3
|
|
LDI AR0,AR2
|
|
ADDI 400h,AR2
|
|
CALL OBJ_FIND_FIRST
|
|
|
|
|
|
CMPI 5,AR3
|
|
LDIEQ *+AR7(ROM_BIG_CURSOR),R0
|
|
LDINE *+AR7(ROM_SMALL_CURSOR),R0
|
|
|
|
LDI *+AR7(SMALL_CURSOR),AR1
|
|
STI R0,*+AR1(OROMDATA)
|
|
|
|
LDF *+AR0(OPOSX),R0
|
|
STF R0,*+AR1(OPOSX)
|
|
LDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR1(OPOSY)
|
|
LDF *+AR0(OPOSZ),R0
|
|
SUBF 8,R0
|
|
STF R0,*+AR1(OPOSZ)
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
*----------------------------------------------------------------------------
|
|
TURNANI .word whel1,whel2,whel3,whel4,whel3,whel2,-1
|
|
|
|
* R6 X
|
|
* R7 Y
|
|
* AR5 Z
|
|
*
|
|
GET_TURNOBJ:
|
|
FLOAT AR5,R5
|
|
LDL TURNANI,AR5
|
|
CALL OBJ_GET
|
|
LDI AR0,AR4
|
|
|
|
STF R6,*+AR4(OPOSX)
|
|
STF R7,*+AR4(OPOSY)
|
|
STF R5,*+AR4(OPOSZ)
|
|
|
|
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
GETTOLP
|
|
LDI @_MODE,R0
|
|
AND MMODE,R0 ;<-this mode
|
|
CMPI MINTRO,R0
|
|
BNE SUICIDE
|
|
|
|
LDI *AR5++,R0
|
|
BNN JIJI
|
|
LDL TURNANI,AR5
|
|
LDI *AR5++,R0
|
|
JIJI STI R0,*+AR4(OROMDATA)
|
|
|
|
SLEEP 7
|
|
BU GETTOLP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
TRACK_SELECTION_LIST_LEN .set 11
|
|
TRACK_SELECTION_LISTI .word TRACK_SELECTION_LIST
|
|
TRACK_SELECTION_LIST
|
|
.word RACE_AZ
|
|
.word RACE_US101
|
|
.word RACE_LA
|
|
.word RACE_IOWA
|
|
.word RACE_DV
|
|
|
|
.word RACE_USA
|
|
|
|
; .word RACE_DC
|
|
.word RACE_BH
|
|
|
|
.word RACE_APPL
|
|
.word RACE_RW
|
|
.word RACE_GC
|
|
.word RACE_CH
|
|
|
|
;hidden races
|
|
.word RACE_GG
|
|
.word RACE_IN
|
|
.word RACE_SF
|
|
|
|
*----------------------------------------------------------------------------
|
|
|
|
.globl BOILEROBJ
|
|
.globl BOILERPLATE_INIT
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
BOILERPLATE_INIT:
|
|
LDL next,AR2
|
|
LDI 0,R2
|
|
LDI 0,R3
|
|
LDI 0,RC
|
|
CALL OBJ_QMAKE
|
|
STI AR0,@BOILEROBJ
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
BOILERPLATE:
|
|
LDI *+AR7(SMALL_CURSOR),AR2
|
|
LDF *+AR2(OPOSX),R0
|
|
STF R0,*+AR2(OCARBLK)
|
|
FLOAT -6000,R0
|
|
STF R0,*+AR2(OPOSX)
|
|
|
|
LDI @BOILEROBJ,AR2
|
|
CALL OBJ_INSERTP
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.bss BOILEROBJ,1
|
|
|
|
*----------------------------------------------------------------------------
|
|
BOILERPLATE_DELETE:
|
|
LDI @BOILEROBJ,AR2
|
|
CALL OBJ_DELETE
|
|
|
|
LDI *+AR7(SMALL_CURSOR),AR2
|
|
LDF *+AR2(OCARBLK),R0
|
|
STF R0,*+AR2(OPOSX)
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.END
|