3874 lines
60 KiB
NASM
Executable File
3874 lines
60 KiB
NASM
Executable File
.FILE "INTRO.ASM"
|
||
*----------------------------------------------------------------------------
|
||
*INTRO SCREENS AND RELATED ROUTINES
|
||
*
|
||
*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 ERROR.EQU
|
||
.include H2HOBJ.EQU
|
||
.include COMM.EQU
|
||
|
||
|
||
|
||
.text
|
||
|
||
.bss START_HIT,1
|
||
.bss CHOSEN_VEHICLE,1 ;WHEEL POSITION W/HYSTERISUS
|
||
.bss CHOSEN_TRANSMISSION,1
|
||
.bss CHOSEN_RACE,1
|
||
.bss END_OF_GAMEP,1
|
||
.bss RACE_MODE,1 ;USA (A-Z) || SINGLE
|
||
.bss FIRST_RACE,1 ;T or F
|
||
.bss POSES,1 ;for the WHEEL
|
||
.bss GAMEDIFF,1
|
||
.bss CHECKPOINT_NUM,1
|
||
.bss H2H_FLAGSTATE,1 ;WAVEFLAG
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*
|
||
*
|
||
romdata
|
||
JINOW .string "JOIN IN NOW",0
|
||
.text
|
||
|
||
HEAD2HEAD_LOGO_WAIT:
|
||
LDI 1,AR6
|
||
BU H2HLE
|
||
HEAD2HEAD_LOGO:
|
||
CLRI AR6
|
||
H2HLE
|
||
|
||
LDI 2,R0
|
||
STI R0,@FRAMRATE ;frame governor
|
||
|
||
LDI @_MODE,R0 ;shut off infinity
|
||
AND MMODE,R0
|
||
STI R0,@_MODE
|
||
|
||
|
||
LDL redhd1,AR2
|
||
LDI 0,R2
|
||
LDI 0,R3
|
||
LDI 368,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_INSERTP
|
||
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
STI AR0,*+AR7(PDATA) ;red (bottom)
|
||
|
||
|
||
|
||
LDL yelhd1,AR2
|
||
LDI 0,R2
|
||
LDI 0,R3
|
||
LDI 368,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_INSERTP
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
STI AR0,*+AR7(PDATA+1) ;yellow (bottom)
|
||
|
||
|
||
|
||
LDL big2,AR2
|
||
LDI 0,R2
|
||
LDI 0,R3
|
||
LDI 368,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_INSERTP
|
||
|
||
LDL H2HPAL3,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
STI AR0,*+AR7(PDATA+2) ;big2
|
||
|
||
|
||
FLOAT 160,R6 ;60+4*25
|
||
FLOAT 4000,R7 ;big2
|
||
LDI 25,AR5
|
||
|
||
|
||
H2HLLP
|
||
LDI *+AR7(PDATA+1),AR0 ;red (bottom)
|
||
STF R6,*+AR0(OPOSY)
|
||
LDI *+AR7(PDATA),AR0 ;yellow
|
||
NEGF R6,R0
|
||
STF R0,*+AR0(OPOSY)
|
||
|
||
LDI *+AR7(PDATA+2),AR0 ;big2
|
||
STF R7,*+AR0(OPOSZ)
|
||
|
||
|
||
SUBF 4,R6
|
||
|
||
LDLF 360,R0
|
||
SUBF R0,R7,R1
|
||
MPYF 0.1,R1
|
||
SUBF R1,R7
|
||
|
||
|
||
CALL JINMSG
|
||
|
||
CALL KABOSHP
|
||
BC KABOSH
|
||
|
||
SLEEP 1
|
||
DBU AR5,H2HLLP
|
||
|
||
|
||
READADJ ADJ_ATTRACT_MODE_SOUND
|
||
CMPI 1,R0
|
||
BNE NOSND1
|
||
SOND1 STAMP
|
||
NOSND1
|
||
|
||
;cycle HEAD 2 HEAD punch
|
||
;
|
||
LDI *+AR7(PDATA),AR4 ;yellow
|
||
FLOAT 120,R6
|
||
JSRP THROBIT
|
||
CALL KABOSHP
|
||
BC KABOSH
|
||
|
||
LDI *+AR7(PDATA+2),AR4 ;big2
|
||
FLOAT 300,R6
|
||
JSRP THROBIT
|
||
CALL KABOSHP
|
||
BC KABOSH
|
||
|
||
LDI *+AR7(PDATA+1),AR4 ;red (bottom)
|
||
FLOAT 120,R6
|
||
JSRP THROBIT
|
||
CALL KABOSHP
|
||
BC KABOSH
|
||
|
||
|
||
;
|
||
;
|
||
|
||
|
||
|
||
CMPI 1,AR6 ;are we waiting for a joiner??
|
||
BEQ WFC
|
||
|
||
CALL KABOSHP
|
||
BC KABOSH
|
||
SLEEP 30
|
||
BR CYCLE_ATTR
|
||
WFC:
|
||
LDI 1,R0
|
||
STI R0,@FRAMRATE ;frame governor
|
||
|
||
|
||
WFCLP342
|
||
LDI @ICF,R0
|
||
BGT NOMSGG
|
||
LDL JINOW,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 100,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
NOMSGG
|
||
SLEEP 1
|
||
|
||
CALL KABOSHP
|
||
BNC WFCLP342
|
||
; LDI @TRANSMISSION_ACTIVE,R0
|
||
; BZ KABOSH
|
||
;
|
||
; LDI @OM_MODE,R0
|
||
; AND MMODE,R0
|
||
; CMPI MBONUS,R0
|
||
; BEQ WFCLP342
|
||
; CMPI MINIT,R0
|
||
; BEQ WFCLP342
|
||
; CMPI MINSERT_COINS,R0
|
||
; BEQ WFCLP342
|
||
;
|
||
; LDI @OM_LINKWAIT,R0
|
||
; BNZ WFCLP342
|
||
KABOSH
|
||
CALL CLEAR_LINK
|
||
LDI -2,R0
|
||
STI R0,@_ATTR_MODE
|
||
BU SET_ATTR
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*RETURNS CARRY SET ON KABOSH THIS MESS
|
||
*
|
||
*
|
||
KABOSHP:
|
||
LDI @TRANSMISSION_ACTIVE,R0
|
||
BZ TKABOSH
|
||
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MBONUS,R0
|
||
BEQ FKABOSH
|
||
CMPI MINIT,R0
|
||
BEQ FKABOSH
|
||
CMPI MINSERT_COINS,R0
|
||
BEQ FKABOSH
|
||
CMPI MATTR,R0
|
||
BEQ TKABOSH
|
||
|
||
LDI @OM_LINKWAIT,R0
|
||
BZ TKABOSH
|
||
|
||
FKABOSH
|
||
CLRC
|
||
RETS
|
||
|
||
TKABOSH
|
||
SETC
|
||
RETS
|
||
|
||
|
||
|
||
JINMSG:
|
||
CMPI 1,AR6
|
||
BNE NOJINMSG
|
||
LDL JINOW,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 100,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
NOJINMSG
|
||
|
||
RETS
|
||
|
||
|
||
ADDFL .MACRO VAL,REG
|
||
.data
|
||
l? .float :VAL:
|
||
.text
|
||
ADDF @l?,:REG:
|
||
.ENDM
|
||
|
||
SUBFL .MACRO VAL,REG
|
||
.data
|
||
l? .float :VAL:
|
||
.text
|
||
SUBF @l?,:REG:
|
||
.ENDM
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
THROBIT:
|
||
|
||
LDI 1,AR5
|
||
THROBLP1
|
||
LDF *+AR4(OPOSZ),R0
|
||
SUBF R6,R0
|
||
STF R0,*+AR4(OPOSZ)
|
||
|
||
CALL JINMSG
|
||
|
||
CALL KABOSHP
|
||
BC ENDTHROB
|
||
SLEEP 1
|
||
DBU AR5,THROBLP1
|
||
|
||
READADJ ADJ_ATTRACT_MODE_SOUND
|
||
CMPI 1,R0
|
||
BNE NOSND2
|
||
SOND1 STAMP
|
||
NOSND2
|
||
|
||
|
||
LDI 4,AR5
|
||
KKGKG CALL JINMSG
|
||
CALL KABOSHP
|
||
BC ENDTHROB
|
||
SLEEP 1
|
||
DBU AR5,KKGKG
|
||
|
||
LDI 1,AR5
|
||
THROBLP2
|
||
LDF *+AR4(OPOSZ),R0
|
||
ADDF R6,R0
|
||
STF R0,*+AR4(OPOSZ)
|
||
CALL JINMSG
|
||
CALL KABOSHP
|
||
BC ENDTHROB
|
||
SLEEP 1
|
||
DBU AR5,THROBLP2
|
||
ENDTHROB
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
romdata
|
||
WFCHAL1 .string "WAITING",0
|
||
WFCHAL2 .string "FOR CHALLENGER",0
|
||
WFCHAL3 .string "HOLD RADIO OR VIEW3 TO CANCEL",0
|
||
.text
|
||
|
||
.bss FRAMELAG,1
|
||
*
|
||
*
|
||
WAIT_FOR_CHALLENGER:
|
||
|
||
LDI 5,R0
|
||
STI R0,@FRAMELAG
|
||
|
||
.globl BOILEROBJ
|
||
CLRI R0
|
||
STI R0,@BOILEROBJ
|
||
|
||
;IF NO TRANSMISSIONS ARE HAPPENING
|
||
;(OTHER == SINGLE PLAYER) THEN IGNORE THIS MESS AND ASSUME
|
||
;SINGLE PLAYER
|
||
;
|
||
LDI @TRANSMISSION_ACTIVE,R0
|
||
BZ WFCLPXXX
|
||
|
||
LDI @NOASK_LINK,R0
|
||
BNZ WFCLPXXX
|
||
|
||
|
||
LDI @FIRST_RACE,R0
|
||
BNZ CHAHC
|
||
.globl BOILERPLATE_INIT
|
||
CALL BOILERPLATE_INIT
|
||
LDI AR0,AR2
|
||
CALL OBJ_INSERTP
|
||
CHAHC
|
||
|
||
CLRI R0
|
||
STI R0,@START_HIT
|
||
STI R0,@miniidle
|
||
|
||
LDI @_MODE,R0
|
||
OR MGO,R0
|
||
STI R0,@_MODE
|
||
|
||
;if no challenger
|
||
LDI 20,R0
|
||
STI R0,@_countdown
|
||
|
||
CALL SEND_VEHICLE
|
||
|
||
|
||
WFCLP
|
||
CALL SEND_VEHICLE
|
||
|
||
LDI @COINDROP,R0
|
||
BZ NOWORRY
|
||
CLRI R0
|
||
STI R0,@COINDROP
|
||
LDI 20,R1
|
||
BU JJFHF
|
||
NOWORRY
|
||
|
||
LDI @_countdown,R1
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MINIT,R0
|
||
LDIEQ 20,R1
|
||
CMPI MBONUS,R0
|
||
LDIEQ 20,R1
|
||
JJFHF STI R1,@_countdown
|
||
|
||
;IF challenger found THEN wait until ready then exit
|
||
;
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ BABAB
|
||
|
||
LDI @OM_VEHICLE,R0
|
||
BGE WAITX ;WE'RE THERE DUDE!
|
||
BABAB
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BNZ HHFBF
|
||
LDI @_countdown,R0
|
||
BLE WFCLPXXX
|
||
HHFBF
|
||
|
||
LDI @FRAMELAG,R0
|
||
DEC R0
|
||
LDILT 0,R0
|
||
STI R0,@FRAMELAG
|
||
|
||
BGT NOMSG768
|
||
|
||
LDL WFCHAL1,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 100,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
LDL WFCHAL2,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 146,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
NOMSG768
|
||
|
||
;if it is a linked game AND he hasn't chosen his vehicle
|
||
;then wait for him to choose his vehicle
|
||
;
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ BABAHH
|
||
SLEEP 1
|
||
BU WFCLP
|
||
BABAHH
|
||
|
||
*ELP CHANGE
|
||
; LDI @miniidle,R0
|
||
; INC R0
|
||
; CMPI 2,R0
|
||
; LDIGE 0,R0
|
||
; STI R0,@miniidle
|
||
; CMPI 0,R0
|
||
; BNE JJFJFJ
|
||
|
||
LDI @SWITCHBUTS,R0
|
||
RS 16,R0
|
||
; AND SW_VIEW0_H|SW_VIEW1_H|SW_VIEW2_H|SW_RADIO_H,R0
|
||
AND SW_VIEW2_H|SW_RADIO_H,R0
|
||
BZ JJFJFJ
|
||
|
||
LDI @_countdown,R0
|
||
DEC R0
|
||
LDILT 0,R0
|
||
STI R0,@_countdown
|
||
JJFJFJ
|
||
*ELP END CHANGE
|
||
|
||
LDI @FRAMELAG,R0
|
||
BGT NOMSG123
|
||
|
||
CALL WAITINTROTIMER
|
||
|
||
LDL WFCHAL3,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 192,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADDDS
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
||
NOMSG123
|
||
|
||
SLEEP 1
|
||
BU WFCLP
|
||
|
||
WFCLPXXX
|
||
CLRI R0
|
||
STI R0,@MY_LINKWAIT
|
||
STI R0,@HEAD2HEAD_ON
|
||
|
||
CALL SEND_LINKCANCELLED
|
||
SLEEP 1
|
||
CALL SETONE ;1 PLAYER GAME
|
||
|
||
|
||
WAITX
|
||
|
||
;*****
|
||
;***** WE CAN NO LONGER ACCEPT A DUDE
|
||
;*****
|
||
;*****
|
||
|
||
LDI @BOILEROBJ,AR2
|
||
CMPI 0,AR2
|
||
CALLNE OBJ_DELETE
|
||
|
||
|
||
LDI @_MODE,R0
|
||
ANDN MGO,R0
|
||
STI R0,@_MODE
|
||
|
||
LDI 5,R0 ;so player doesn't puke (see near call)
|
||
STI R0,@_countdown
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*an issue start game has been called and
|
||
*it has been determined that the other machine
|
||
*is either in MBONUS or MINIT. at that point
|
||
*we will wait for the other machine to enter
|
||
*MATTR, or MINTRO
|
||
*
|
||
*
|
||
*
|
||
CHECK_ENDBONUS:
|
||
LDI @TRANSMISSION_ACTIVE,R0
|
||
BZ CEBT
|
||
|
||
LDI @OM_BONUS_WAITFLAG,R0
|
||
BNZ CEBT
|
||
|
||
LDI @OM_LINKWAIT,R0
|
||
BNZ CEBT
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BNZ CEBT
|
||
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MATTR,R0
|
||
BEQ CEBT
|
||
|
||
CLRC
|
||
RETS
|
||
CEBT
|
||
SETC
|
||
RETS
|
||
|
||
|
||
pbss BONUS_WAITFLAG,1
|
||
pbss OM_BONUS_WAITFLAG,1
|
||
WAIT_FOR_ENDBONUS:
|
||
PUSHP R6
|
||
|
||
SLEEP 2
|
||
CALL CHECK_ENDBONUS
|
||
BC ISGAME5
|
||
|
||
|
||
POPP R6
|
||
|
||
|
||
|
||
CMPI 1,R6
|
||
BEQ NOOBJSSS
|
||
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_ALLOC_RAW
|
||
LDL H2HPAL3,AR2
|
||
CALL PAL_ALLOC_RAW
|
||
|
||
LDL redhd1,AR2
|
||
LDI 0,R2
|
||
LDI -60,R3
|
||
LDI 368,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
|
||
PUSHP AR2
|
||
CALL OBJ_INSERTP
|
||
LDI AR2,AR0
|
||
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
|
||
|
||
|
||
LDL yelhd1,AR2
|
||
LDI 0,R2
|
||
LDI 60,R3
|
||
LDI 368,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
|
||
PUSHP AR2
|
||
CALL OBJ_INSERTP
|
||
LDI AR2,AR0
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
|
||
|
||
|
||
LDL big2,AR2
|
||
LDI 0,R2
|
||
LDI 0,R3
|
||
LDI 368,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
|
||
PUSHP AR2
|
||
CALL OBJ_INSERTP
|
||
LDI AR2,AR0
|
||
|
||
LDL H2HPAL3,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
BU LKJASDFGD
|
||
|
||
NOOBJSSS
|
||
.globl BOILERPLATE_INIT
|
||
CALL BOILERPLATE_INIT
|
||
LDI AR0,AR2
|
||
CALL OBJ_INSERTP
|
||
LKJASDFGD
|
||
PUSHP R6
|
||
|
||
WAIT_FOR_ENDBONUS_LP
|
||
LDI 1,R0
|
||
STI R0,@BONUS_WAITFLAG
|
||
LDL WFCHAL1,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 100,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
LDL WFCHAL2,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 160,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
|
||
CALL CHECK_ENDBONUS
|
||
BC ISGAME5
|
||
|
||
|
||
SLEEP 1
|
||
BU WAIT_FOR_ENDBONUS_LP
|
||
ISGAME5
|
||
CLRI R0
|
||
STI R0,@BONUS_WAITFLAG
|
||
|
||
SLEEP 2
|
||
|
||
POPP R6
|
||
CMPI 1,R6
|
||
BEQ NOJHASD
|
||
|
||
POPP AR2
|
||
CALL OBJ_DELETE
|
||
POPP AR2
|
||
CALL OBJ_DELETE
|
||
POPP AR2
|
||
CALL OBJ_DELETE
|
||
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_DELETE_RAW
|
||
LDL H2HPAL3,AR2
|
||
CALL PAL_DELETE_RAW
|
||
BU IURENDFL
|
||
NOJHASD
|
||
LDI @BOILEROBJ,AR2
|
||
CMPI 0,AR2
|
||
CALLNE OBJ_DELETE
|
||
IURENDFL
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
ISSUE_STARTGAME_TSEL:
|
||
LDI 1,R6
|
||
BU LKAS534
|
||
ISSUE_STARTGAME:
|
||
CLRI R6
|
||
LKAS534
|
||
LDI @TRANSMISSION_ACTIVE,R0
|
||
BZ NOGAME
|
||
|
||
; LDI @OM_MODE,R0
|
||
; AND MMODE,R0
|
||
; CMPI MGAME,R0
|
||
; BEQ NOGAME
|
||
|
||
*ELP CHANGE
|
||
|
||
|
||
|
||
LDI @FIRST_RACE,R0
|
||
BNZ NOTNND
|
||
LDI @WAS_HEAD2HEAD_ON,R0
|
||
BNZ NOTNND
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MBONUS,R0
|
||
BEQ NOGAME
|
||
CMPI MINIT,R0
|
||
BEQ NOGAME
|
||
CMPI MINSERT_COINS,R0
|
||
BEQ NOGAME
|
||
NOTNND
|
||
|
||
|
||
|
||
|
||
;IF THE OTHER GAME IS:
|
||
; MBONUS
|
||
; MINIT
|
||
;THEN
|
||
; PLACE WAIT FOR CHALLENGER ON SCREEN
|
||
; IF PLAYER WAITS THEN WAIT FOR OTHER ISSUE START GAME
|
||
; ELSE IF PLAYER SINGLE THEN SINGLE PLAYER
|
||
;
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MBONUS,R0
|
||
BEQ DOIT6
|
||
CMPI MINSERT_COINS,R0
|
||
BEQ DOIT6
|
||
CMPI MINIT,R0
|
||
BNE NODOIT6
|
||
DOIT6
|
||
JSRP WAIT_FOR_ENDBONUS
|
||
NODOIT6
|
||
|
||
LDI @WAS_HEAD2HEAD_ON,R0
|
||
BNZ DOITANY4
|
||
|
||
LDI @OM_BONUS_WAITFLAG,R0
|
||
BNZ DOITANY4
|
||
|
||
LDI @_ATTR_MODE,R0
|
||
CMPI -7,R0
|
||
BEQ DOITANY4
|
||
|
||
|
||
LDI @OM_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MATTR,R0
|
||
BEQ DOITANY4
|
||
*ELP CHANGE
|
||
; BNE PLAPA55
|
||
; LDI @FIRST_RACE,R0
|
||
; BNZ DOITANY4
|
||
;PLAPA55
|
||
*ELP END CHANGE
|
||
|
||
;we were not playing a linked game,
|
||
;AND we were both playing race across
|
||
;the usa
|
||
;THEREFORE
|
||
;to continue is to play a single player game
|
||
;
|
||
|
||
*ELP CHANGE February 8,1995
|
||
;when the player hits start there is a slight pause
|
||
;when the player goes into INTRO (1) but before
|
||
;he goes to issue start game (2)
|
||
;(1) MINTRO on start button decode then calls COLD_ENTER
|
||
;(2) creates the PLYR_INTRO process, and 1st sequence
|
||
; then sends the LINK predicate to the other machine
|
||
;(note:)
|
||
; a. prior to FEB 8th the game would go to MGAME
|
||
; b. the game needs to switch modes to note drain the coins
|
||
;
|
||
;
|
||
CMPI MINTRO,R0
|
||
BNE NOGAME
|
||
|
||
; BU NOGAME
|
||
*ELP END CHANGE
|
||
|
||
DOITANY4
|
||
CLRI R0
|
||
STI R0,@BONUS_WAITFLAG
|
||
*ELP END CHANGE
|
||
|
||
|
||
CLRI R0
|
||
STI R0,@LINKEDP
|
||
CALL SEND_START_GAME
|
||
LDI 30,AR5
|
||
|
||
WTFORRETVAL
|
||
DEC AR5
|
||
CMPI 0,AR5
|
||
BLE NTINLK
|
||
|
||
SLEEP 1
|
||
|
||
*ELP CHANGE
|
||
LDI @TRANSMISSION_ACTIVE,R0
|
||
BZ NOGAME
|
||
*ELP END CHANGE
|
||
|
||
LDI @LINKEDP,R0 ;0 = invalid
|
||
;1 = linked
|
||
;2 = not linked
|
||
BZ WTFORRETVAL
|
||
CMPI 1,R0
|
||
BNE NTINLK
|
||
|
||
LDI 1,R0
|
||
STI R0,@HEAD2HEAD_ON
|
||
|
||
INCAUD AUD_H2HGAMES
|
||
|
||
CLRI R0
|
||
STI R0,@OM_LINKWAIT
|
||
STI R0,@MY_LINKWAIT
|
||
|
||
NTINLK
|
||
.bss NOASK_LINK,1
|
||
CLRI R0
|
||
STI R0,@NOASK_LINK
|
||
RETP
|
||
NOGAME
|
||
*ELP CHANGE
|
||
CALL SEND_LINKCANCELLED
|
||
SLEEP 1
|
||
*ELP END CHANGE
|
||
CALL CLEAR_LINK
|
||
LDI 1,R0
|
||
STI R0,@NOASK_LINK
|
||
CALL SETONE
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
PLYR_INTRO:
|
||
LDI RM_SINGLE,R0
|
||
STI R0,@RACE_MODE
|
||
LDI MINTRO|MGO,R0
|
||
STI R0,@_MODE
|
||
CLRI R0
|
||
STI R0,@WAS_HEAD2HEAD_ON
|
||
LDI 1,R0
|
||
STI R0,@FIRST_RACE
|
||
|
||
JSRP ISSUE_STARTGAME
|
||
|
||
CALL INIT_LASTHS_TABLE ;Initialize the table for players hs entries
|
||
LDI -1,R2
|
||
SETADJ ADJ_INITIALS
|
||
|
||
INCAUD AUD_GAMENUMBER
|
||
INCAUD AUD_GAMES_START
|
||
|
||
CALL HSTDEC
|
||
|
||
|
||
CLRI R0
|
||
STI R0,@BONUS_WAVE
|
||
|
||
LDF 1.0,R0
|
||
STF R0,@GAMEDIFF
|
||
|
||
READAUD AUD_UNFINISHED_GAMES
|
||
PUSH R0
|
||
READAUD AUD_UNFINISHED_GAMES_FOUND
|
||
POP R1
|
||
CMPI R1,R0
|
||
BEQ NOULOG
|
||
ERRON U,EC_UNFINISHED
|
||
LDI R1,R2
|
||
SETAUD AUD_UNFINISHED_GAMES_FOUND
|
||
NOULOG
|
||
|
||
INCAUD AUD_NUM_UNFINISHED
|
||
|
||
LDI 1,R0 ;SHUFFLE DRIVIN
|
||
STI R0,@TUNE_IDX
|
||
|
||
CNR_ENTER
|
||
LDP @IN_RESET_MODE
|
||
LDI @IN_RESET_MODE,R0
|
||
SETDP
|
||
BZ CONTINUE
|
||
SLEEP 1
|
||
BU CNR_ENTER
|
||
CONTINUE
|
||
SOND1 START_THEME
|
||
|
||
|
||
LDI BUT_START,R0 ;BUTTON OVERWRITE (MAYBE USE MASK IN FUTURE)
|
||
STI R0,@BUTTON_STATUS
|
||
|
||
CLRI R0 ;INITIALIZE SCORE
|
||
STI R0,@SCORE
|
||
STI R0,@END_OF_GAMEP ;END OF GAME FLAG
|
||
STI R0,@_MPH
|
||
STI R0,@STARTSECTION ;BEGIN LEG OF JOURNEY
|
||
STI R0,@CAR_CHOICE_GOTTEN
|
||
STI R0,@CHOSEN_RACE
|
||
LDI -1,R0
|
||
STI R0,@IS_HIDDEN
|
||
|
||
|
||
|
||
CALL GETCMOS_VALUES
|
||
CALL INIT_PEDALCHK
|
||
CALL OBJ_INIT
|
||
CALL TEXT_INIT
|
||
|
||
JSRP TRACK_SELECTION
|
||
LDI @FIRST_RACE,R0
|
||
BZ LOAD_NEW_SELECTION
|
||
|
||
|
||
CALL INIT_PEDALCHK
|
||
CALL OBJ_INIT
|
||
CALL TEXT_INIT
|
||
|
||
.bss DCALL,1 ;IS CHOOSE TRANSMISSION ACTIVE?
|
||
CLRI R0
|
||
STI R0,@DCALL
|
||
|
||
JSRP CHOOSE_TRANSMISSION
|
||
|
||
LDI 1,R0
|
||
STI R0,@DCALL
|
||
JSRP CHOOSECAR
|
||
|
||
|
||
LDI BUT_VIEW2,R0 ;BUTTON OVERWRITE (MAYBE USE MASK IN FUTURE)
|
||
STI R0,@BUTTON_STATUS
|
||
|
||
WFSNP SLEEP 1
|
||
LDI @START_NOW_P,R0
|
||
BZ WFSNP
|
||
|
||
ALL_JOINUP
|
||
|
||
|
||
LDI @_MODE,R0
|
||
OR MINFIN,R0
|
||
STI R0,@_MODE
|
||
|
||
|
||
READAUD ADJ_TIME_TO_START
|
||
MPYI 5,R0
|
||
ADDI 60,R0
|
||
STI R0,@_countdown
|
||
|
||
CREATEC WAVEFLAG,UTIL_C|MONKEY_T
|
||
CALL CLEANUP_TRACKSEL_PALS
|
||
|
||
LDI UTIL_C|CHOOSECAR_T,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
|
||
;
|
||
;SETUP THE GAME
|
||
;
|
||
CLRF R0
|
||
STF R0,@GAME_TIMER
|
||
INCAUD AUD_NUM_BUYINS
|
||
|
||
|
||
LDI 0AAh,R0
|
||
STI R0,@BGNDCOLA
|
||
|
||
LDI 1,R0 ;SET GAME FRAME RATE
|
||
STI R0,@FRAMRATE
|
||
STI R0,@TIMECLR
|
||
STI R0,@DRONE_DISPATCH_P
|
||
|
||
CLRI R0
|
||
STI R0,@SCREENWIPE_DONE
|
||
STI R0,@NEXT_STARTUP
|
||
STI R0,@CHALLENGE_RACE
|
||
|
||
|
||
LDI 9,R0
|
||
STI R0,@POSITION
|
||
|
||
|
||
READAUD ADJ_CHECKPOINT_BONUS
|
||
STI R0,@CHECKPOINT_TIME_BONUS
|
||
|
||
LDI 1,R0
|
||
STI R0,@NOAERASE
|
||
|
||
;///////////////////////////////
|
||
LDI @FIRST_RACE,R0
|
||
BZ _PLYR
|
||
|
||
|
||
CLRI R2 ;FIRST WAVE
|
||
SETAUD AUD_LAST_LEG
|
||
|
||
LDF 1.0,R0
|
||
STF R0,@WHEELPWR
|
||
|
||
DIE
|
||
.bss START_NOW_P,1
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
CHOOSE_NEXT_RACE:
|
||
CALL TEXT_INIT
|
||
LDI UTIL_C|TEXTP_T,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
|
||
LDI PLYR_C|PLYR1_T,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
|
||
LDI @_MODE,R0
|
||
ANDN MINFIN|MWATER,R0
|
||
STI R0,@_MODE
|
||
|
||
CALL OBJ_INIT
|
||
CALL DYNAOBJ_INIT ;init DYNAMIC OBJECTS
|
||
CALL CARB_INIT ;init CAR BLOCKS
|
||
CALL INIT_RDDEBRIS ;initialize ROAD DEBRIS list(s)
|
||
|
||
|
||
CLRI R0
|
||
STI R0,@FIRST_RACE
|
||
|
||
;
|
||
SLEEP 4
|
||
;
|
||
|
||
BU CNR_ENTER
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
LOAD_NEW_SELECTION:
|
||
|
||
LDI @CHOSEN_RACE,AR0
|
||
ADDI @FULLSETUP_TABLEI,AR0
|
||
LDI *AR0,R0
|
||
CALLU R0
|
||
|
||
LDI MINTRO|MINFIN,R0
|
||
STI R0,@_MODE
|
||
|
||
LDF @START_POS+X,R0
|
||
LDF @START_POS+Y,R1
|
||
LDF @START_POS+Z,R2
|
||
|
||
LDP @_CAMERAPOS+X
|
||
STF R0,@_CAMERAPOS+X
|
||
STF R1,@_CAMERAPOS+Y
|
||
STF R2,@_CAMERAPOS+Z
|
||
SETDP
|
||
|
||
|
||
LDI @CHOSEN_RACE,AR0
|
||
ADDI @RACE_STARTING_POINTSI,AR0
|
||
LDI *AR0,R0
|
||
STI R0,@STARTSECTION
|
||
CALL BGD_INIT
|
||
CALL INIT_GAMELEG
|
||
|
||
LDI MGAME,R0
|
||
STI R0,@_MODE
|
||
CALL SCREENWIPE_OPEN
|
||
|
||
SLEEP 6
|
||
|
||
LDI MGAME|MHUD|MINFIN,R0
|
||
STI R0,@_MODE
|
||
|
||
LDI @CHOSEN_RACE,AR0
|
||
ADDI @BONUS_POSTLAUNCHI,AR0
|
||
LDI *AR0,R0
|
||
CALLU R0
|
||
|
||
LDI BUT_VIEW2,R0 ;BUTTON OVERWRITE (MAYBE USE MASK IN FUTURE)
|
||
STI R0,@BUTTON_STATUS
|
||
BU ALL_JOINUP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
PLYPOS2YL .set -400
|
||
PLYPOS2ZL .set 2200
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*PARAMETERS
|
||
* AR4 PLYRS CAR
|
||
*
|
||
WATCH_PLYRS_CAR:
|
||
|
||
LDF @START_RADY,R2
|
||
LDI @MATRIXAI,AR2
|
||
CALL FIND_YMATRIX
|
||
LDI AR2,R2
|
||
CALL CLR_VECTORA
|
||
|
||
FLOAT -PLYPOS2ZL,R0
|
||
STF R0,*+AR2(Z)
|
||
FLOAT PLYPOS2YL,R0
|
||
STF R0,*+AR2(Y)
|
||
LDI @MATRIXAI,R2
|
||
LDI AR2,R3
|
||
CALL MATRIX_MUL
|
||
|
||
|
||
LDF *+AR4(OPOSX),R0
|
||
LDF *+AR4(OPOSY),R1
|
||
LDF *+AR4(OPOSZ),R2
|
||
|
||
ADDF *+AR2(X),R0
|
||
ADDF *+AR2(Y),R1
|
||
ADDF *+AR2(Z),R2
|
||
|
||
LDP @_CAMERAPOS
|
||
STF R0,@_CAMERAPOS+X
|
||
STF R1,@_CAMERAPOS+Y
|
||
STF R2,@_CAMERAPOS+Z
|
||
SETDP
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
INIT_GAMELEG:
|
||
CLRI R0
|
||
STI R0,@SMOKE_COUNT
|
||
STI R0,@DID_TIMED_OUT
|
||
STI R0,@CHECKPOINT_NUM
|
||
STI R0,@REAL_CHECKPOINTS
|
||
STI R0,@MOTION_STOP_HIT
|
||
STI R0,@H2H_FLAGSTATE
|
||
LDI 2,R0
|
||
STI R0,@FRAMRATE
|
||
|
||
LDF 0,R0
|
||
STF R0,@ROADKILL_SOUND_TIMER
|
||
|
||
CREATE RHO_DISPATCHER,SPAWNER_C|TRAFFIC_T
|
||
CREATE SIGMA_DISPATCHER,SPAWNER_C|TRAFFIC_T
|
||
CREATE CPOINT_LIGHT,SPAWNER_C|COLORCYC_T
|
||
CREATEC POSITION_FINDER,SPAWNER_C|TRAFFIC_T
|
||
CREATE MOVEIN_HUD_EQUIP,UTIL_C
|
||
|
||
|
||
|
||
LDI SM_HALT,R0
|
||
STI R0,@SUSPEND_MODE
|
||
|
||
LDI 0,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
LDI 1,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
|
||
LDI 2,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
LDI 3,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
|
||
LDI 4,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
LDI 5,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
|
||
LDI 6,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
LDI 7,R4
|
||
CREATE RACER_DRONE,DRONE_C
|
||
|
||
|
||
LDI 9,R4
|
||
LDI @DIPRAM,R0
|
||
TSTB DIP_COMMP,R0
|
||
BNZ BABA66
|
||
|
||
TSTB CMDP_MASTER,R0
|
||
BZ BABA66
|
||
|
||
LDI 8,R4
|
||
BABA66
|
||
|
||
CREATE RACER_DRONE,DRONE_C
|
||
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*CHOOSECAR
|
||
*
|
||
CCTI .word CCT
|
||
CCT .string "CHOOSE CAR",0
|
||
|
||
CCTABI .word CCTAB
|
||
|
||
romdata
|
||
|
||
;all Y's were 0
|
||
;
|
||
CCTAB
|
||
.word -1384,-164,-4708,cvettem
|
||
.float PI
|
||
.word 0481h
|
||
|
||
.word -448,-200,-4708,hotrodm
|
||
.float PI
|
||
.word 0482h
|
||
|
||
.word 464,-177,-4708,misslem
|
||
.float PI
|
||
.word 0483h
|
||
|
||
.word 1424,-147,-4708,testorm
|
||
.float PI
|
||
.word 0484h
|
||
|
||
.word -1
|
||
.text
|
||
|
||
.bss CHOOSENCAR,1
|
||
|
||
|
||
RACE_STARTING_POINTSI .word RACE_STARTING_POINTS
|
||
romdata
|
||
RACE_STARTING_POINTS
|
||
.word 0
|
||
.word L_LEG2_BEGIN+1
|
||
.word L_LEG3_BEGIN+1
|
||
.word L_LEG4_BEGIN+1
|
||
.word L_LEG5_BEGIN+1
|
||
.word L_LEG6_BEGIN+1
|
||
.word L_LEG7_BEGIN+1
|
||
.word L_LEG8_BEGIN+1
|
||
.word L_LEG9_BEGIN+1
|
||
.word L_LEG10_BEGIN+1
|
||
.word L_LEG11_BEGIN+1
|
||
.word L_LEG12_BEGIN+1
|
||
.word L_LEG13_BEGIN+1
|
||
.word L_LEG14_BEGIN+1
|
||
.text
|
||
|
||
*
|
||
*CAMERA POSITION IS ASSUMED TO BE SET BY THE TIME
|
||
*THIS ROUTINE IS REACHED.
|
||
*
|
||
*
|
||
CHOOSECAR:
|
||
LDI @CHOSEN_RACE,AR0
|
||
ADDI @FULLSETUP_TABLEI,AR0
|
||
LDI *AR0,R0
|
||
CALLU R0
|
||
|
||
LDI @CHOSEN_RACE,AR0
|
||
ADDI @RACE_STARTING_POINTSI,AR0
|
||
LDI *AR0,R0
|
||
STI R0,@STARTSECTION
|
||
CALL BGD_INIT
|
||
|
||
|
||
LDI MINTRO|MINFIN|MWATER|MGO,R0
|
||
STI R0,@_MODE
|
||
|
||
CLRI R0
|
||
STI R0,@BGNDCOLA
|
||
STI R0,@START_HIT
|
||
|
||
CALL TEXT_INIT
|
||
SOND1 CHOOSEUCAR
|
||
|
||
CREATEC HIDDEN_VEHICLES,UTIL_C|CHOOSECAR_T
|
||
|
||
|
||
LDI @CCTI,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 50,R3
|
||
LDI 600,RC
|
||
CALL TEXT_ADD
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
CALL SET40FONT
|
||
|
||
|
||
JT75 LDI @CAR_CHOICE_GOTTEN,R0
|
||
BNZ KIBO
|
||
SLEEP 1
|
||
BU JT75
|
||
KIBO
|
||
|
||
LDL crace_PALETTES,AR2
|
||
CALL dealloc_section
|
||
|
||
|
||
.data
|
||
XOFFSETI .word XOFFSET
|
||
XOFFSET .float -1384
|
||
.float -448
|
||
.float 464
|
||
.float 1424
|
||
.text
|
||
|
||
LDI @CHOSEN_VEHICLE,AR0
|
||
ADDI @XOFFSETI,AR0
|
||
LDF *AR0,R6
|
||
FLOAT 576,R1
|
||
SUBRF R1,R6
|
||
|
||
|
||
LANESIZE .set 1152
|
||
;if a slave then ALWAYS appear on right side
|
||
;
|
||
;
|
||
LDI @DIPRAM,R0
|
||
TSTB DIP_COMMP,R0
|
||
BNZ BABA
|
||
|
||
TSTB CMDP_MASTER,R0
|
||
BZ BABA
|
||
|
||
FLOAT LANESIZE,R1
|
||
ADDF R1,R6
|
||
BABA
|
||
|
||
|
||
|
||
LDF @START_RADY,R2
|
||
LDI @MATRIXAI,AR2
|
||
CALL HPFIND_YMATRIX
|
||
LDI AR2,R2
|
||
CALL CLR_VECTORA
|
||
STF R6,*+AR2(X)
|
||
LDI AR2,R3
|
||
CALL MATRIX_MUL
|
||
|
||
LDF *+AR2(X),R6
|
||
LDF *+AR2(Z),R7
|
||
|
||
|
||
|
||
LDI @SINGLE_SECTION_TEMPPTR,R0
|
||
NLD LDI R0,AR0
|
||
LDF *+AR0(OPOSX),R0
|
||
ADDF R6,R0
|
||
STF R0,*+AR0(OPOSX)
|
||
|
||
LDF *+AR0(OPOSZ),R0
|
||
ADDF R7,R0
|
||
STF R0,*+AR0(OPOSZ)
|
||
|
||
LDI *+AR0(OLINK2),R0
|
||
BNZ NLD
|
||
|
||
LDI @CAMERAPOSI,AR2
|
||
LDF *+AR2(X),R0
|
||
ADDF R6,R0
|
||
STF R0,*+AR2(X)
|
||
|
||
LDF *+AR2(Z),R0
|
||
ADDF R7,R0
|
||
STF R0,*+AR2(Z)
|
||
|
||
|
||
LDL CAR_ARRAY,AR3
|
||
LDI 3,AR5
|
||
LNNN LDI *AR3++,AR0
|
||
LDF *+AR0(OPOSX),R0
|
||
ADDF R6,R0
|
||
STF R0,*+AR0(OPOSX)
|
||
|
||
LDF *+AR0(OPOSZ),R0
|
||
ADDF R7,R0
|
||
STF R0,*+AR0(OPOSZ)
|
||
DBU AR5,LNNN
|
||
|
||
|
||
|
||
LDI @_MODE,R0
|
||
ANDN MGO,R0
|
||
STI R0,@_MODE
|
||
LDI 5,R0 ;WAVEFLAG routine properly sets this
|
||
STI R0,@_countdown ;we just need to set so PLYR doesnt puke
|
||
|
||
LDI 100h,R0 ;FULL START INDEX
|
||
STI R0,@RACER_GRID_START
|
||
|
||
|
||
CALL TEXT_INIT ;ELIMINATE THE 'CHOOSE CAR' TEXT
|
||
|
||
LDI @CHOSEN_VEHICLE,R0
|
||
|
||
LDI @IS_HIDDEN,R1
|
||
CMPI -1,R1
|
||
BEQ NOHIDE
|
||
|
||
PUSH R0
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
|
||
CMPI 5,AR2
|
||
LDIEQ 1,AR2
|
||
CMPI 6,AR2
|
||
LDIEQ 2,AR2
|
||
CMPI 7,AR2
|
||
LDIEQ 3,AR2
|
||
|
||
ADDI AUD_CAR_SELECTION+4,AR2
|
||
CALL AUDIT_INC
|
||
POP R0
|
||
|
||
ADDI 4,R0
|
||
BU TMP886
|
||
|
||
NOHIDE
|
||
PUSH R0
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI AUD_CAR_SELECTION,AR2
|
||
CALL AUDIT_INC
|
||
POP R0
|
||
|
||
TMP886 STI R0,@CHOOSENCAR
|
||
|
||
|
||
|
||
|
||
LDI UTIL_C|CHOOSECAR_T,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
|
||
|
||
LDI @DIPRAM,R0
|
||
TSTB DIP_COMMP,R0
|
||
BNZ JAJAKKA
|
||
JSRP WAIT_FOR_CHALLENGER
|
||
JAJAKKA
|
||
|
||
|
||
CALL INIT_GAMELEG
|
||
|
||
CREATE DROPTHEWHEEL,UTIL_C|CHOOSECAR_T
|
||
CREATE DROPTHECYCLE,UTIL_C|CHOOSECAR_T
|
||
CREATE DROPTHETURN,UTIL_C|CHOOSECAR_T
|
||
CREATE RAISE_DOOR,UTIL_C|CHOOSECAR_T ;in 50
|
||
|
||
|
||
|
||
;(BECOMES PLYR PROC)
|
||
CREATE ZOOMTOCAR,UTIL_C|CHOOSECAR_T ;in 25 (TRANS.ASM)
|
||
SLEEP 70
|
||
|
||
|
||
|
||
SLEEP 1
|
||
|
||
LDI UTIL_C|CHOOSECAR_T,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
|
||
CALL CLEANUP_DIMCAR_PALS
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
.bss CAR_CHOICE_GOTTEN,1
|
||
|
||
THE_CAR_CHOICE_PROC:
|
||
; SLEEP 15
|
||
|
||
CLRI R0
|
||
STI R0,@CAR_CHOICE_GOTTEN
|
||
STI R0,@START_HIT
|
||
*
|
||
*CHOOSE CAR LOOP
|
||
*
|
||
LDI 12,R0
|
||
STI R0,@_countdown
|
||
CALL INIT_PEDALCHK
|
||
CCLP
|
||
LDI @START_HIT,R0
|
||
BNZ CCLPX
|
||
|
||
CALL GETCHOICE
|
||
CALL TRANSCHOICE
|
||
CALL DIAL_ROUT
|
||
CALL SHOW_CAR_STATISTICS
|
||
|
||
;-------time remaining
|
||
;
|
||
LDL time,AR2
|
||
LDI 242,R2 ;R2 POS X
|
||
LDI 337,R3 ;R3 POS Y
|
||
LDI TM|ZS,R4
|
||
CALL BLTMOD2D
|
||
|
||
|
||
CALL PEDALCHK
|
||
BC CCLPX
|
||
CALL INTROTIMER
|
||
SLEEP 1
|
||
|
||
LDI @_countdown,R0
|
||
BGT CCLP
|
||
CCLPX
|
||
*
|
||
*END CHOOSE CAR LOOP
|
||
*
|
||
LDI 1,R0
|
||
STI R0,@CAR_CHOICE_GOTTEN
|
||
DIE
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*CAR IS CHOOSEN, THEN RAISE THE GARAGE DOOR
|
||
*
|
||
*
|
||
*
|
||
RAISE_DOOR:
|
||
|
||
SOND1 GOPEN
|
||
|
||
|
||
LDI 49,AR5
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI 501h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI AR0,AR4
|
||
RDLP
|
||
LDF *+AR4(OPOSY),R0
|
||
SUBF 14,R0
|
||
STF R0,*+AR4(OPOSY)
|
||
|
||
SLEEP 1
|
||
DBU AR5,RDLP
|
||
|
||
DIE
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
.include DELTA.EQU
|
||
.include RACER.EQU
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*THIS PROCESS:
|
||
* 1) MOVES THE CAMERA TO THE VEHICLE
|
||
* 2) LOWERS VEHICLE TO GROUND
|
||
* 3) TURNS VEHICLE TO FACING OUT
|
||
* 4) DRIVES VEHICLE FORWARD (WHILE TRACKING
|
||
* WITH CAMERA)
|
||
* 5) INITIALIZES AS PLAYERS CAR
|
||
* 6) TRANSFERS CONTROL TO THE PLYRS
|
||
* MAIN ROUTINE
|
||
*
|
||
*
|
||
*
|
||
ZOOMTOCAR:
|
||
.globl START_NOW_P
|
||
|
||
CLRI R0
|
||
STI R0,@START_NOW_P
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI 481h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI AR0,AR4
|
||
|
||
LDF @START_RADY,R2
|
||
LDI @MATRIXAI,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
|
||
LDI 25,AR5
|
||
ZTCLP
|
||
|
||
;NOW MOVE TO IN FRONT OF OBJECT
|
||
|
||
LDF @START_RADY,R2
|
||
LDI @MATRIXAI,AR2
|
||
CALL FIND_YMATRIX
|
||
LDI AR2,R2
|
||
CALL CLR_VECTORA
|
||
|
||
FLOAT -PLYPOS2ZL,R0
|
||
STF R0,*+AR2(Z)
|
||
FLOAT PLYPOS2YL,R0
|
||
STF R0,*+AR2(Y)
|
||
LDI @MATRIXAI,R2
|
||
LDI AR2,R3
|
||
CALL MATRIX_MUL
|
||
|
||
|
||
LDF *+AR4(OPOSX),R0
|
||
LDF *+AR4(OPOSY),R1
|
||
LDF *+AR4(OPOSZ),R2
|
||
|
||
ADDF *+AR2(X),R0
|
||
ADDF *+AR2(Y),R1
|
||
ADDF *+AR2(Z),R2
|
||
|
||
LDP @_CAMERAPOS
|
||
SUBF @_CAMERAPOS+X,R0
|
||
SUBF @_CAMERAPOS+Y,R1
|
||
SUBF @_CAMERAPOS+Z,R2
|
||
MPYF 0.2,R0
|
||
MPYF 0.2,R1
|
||
MPYF 0.2,R2
|
||
ADDF @_CAMERAPOS+X,R0
|
||
ADDF @_CAMERAPOS+Y,R1
|
||
ADDF @_CAMERAPOS+Z,R2
|
||
|
||
|
||
STF R0,@_CAMERAPOS+X
|
||
STF R1,@_CAMERAPOS+Y
|
||
STF R2,@_CAMERAPOS+Z
|
||
SETDP
|
||
|
||
|
||
|
||
;TURN CAR TO FACE AWAY (SMOOTH)
|
||
LDF @START_RADY,R2
|
||
CALL NORMITS
|
||
LDF R2,R0
|
||
LDF *+AR4(ORADY),R2
|
||
CALL NORMITS
|
||
STF R2,*+AR4(ORADY)
|
||
CALL GETTHETADIFF
|
||
|
||
ABSF R0,R1
|
||
CMPF 0.04,R1
|
||
BLT DOALL1
|
||
|
||
MPYF 0.10,R0
|
||
ADDF R0,R2
|
||
BU IBO45A
|
||
|
||
DOALL1 ADDF R0,R2
|
||
|
||
IBO45A STF R2,*+AR4(ORADY)
|
||
LDI AR4,AR2
|
||
ADDI OMATRIX,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
|
||
;LOWER CAR TO GROUND
|
||
LDF *+AR4(OPOSY),R0
|
||
LDF *+AR4(OUSR1),R1
|
||
SUBF R0,R1,R0
|
||
MPYF 0.15,R0
|
||
LDF R0,R1
|
||
ADDF *+AR4(OPOSY),R0
|
||
STF R0,*+AR4(OPOSY)
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI 401h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
ADDF R1,R0
|
||
STF R0,*+AR0(OPOSY)
|
||
|
||
SLEEP 1
|
||
DBU AR5,ZTCLP
|
||
|
||
|
||
|
||
|
||
;NOW SET ALL FACING PROPERLY
|
||
;
|
||
PUSH AR4
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI 481h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI AR0,AR4
|
||
POP AR4
|
||
|
||
|
||
LDI PLYR_C|PLYR1_T,R0
|
||
STI R0,*+AR7(PID)
|
||
*
|
||
*
|
||
*
|
||
*
|
||
|
||
;NOW MOVE TO IN FRONT OF OBJECT
|
||
LDI @CAMERAPOSI,AR6
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
CMPI 4,AR2
|
||
BLT NDO
|
||
SUBI 4,AR2
|
||
NDO ADDI 401h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI AR0,AR2
|
||
CALL OBJ_DELETE
|
||
|
||
|
||
;TURN CAR TO FACE AWAY
|
||
LDF *+AR4(ORADY),R2
|
||
LDF @START_RADY,R0
|
||
CALL GETTHETADIFF
|
||
ADDF R0,R2
|
||
STF R2,*+AR4(ORADY)
|
||
LDI AR4,AR2
|
||
ADDI OMATRIX,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
|
||
;LOWER CAR TO GROUND
|
||
LDF *+AR4(OPOSY),R0
|
||
LDF *+AR4(OUSR1),R1
|
||
SUBF R0,R1,R0
|
||
ADDF *+AR4(OPOSY),R0
|
||
STF R0,*+AR4(OPOSY)
|
||
|
||
|
||
SONDFX ENGINESTART
|
||
*
|
||
*
|
||
*
|
||
LDI 24,AR5
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
CMPI 4,AR2
|
||
BLT NDO2
|
||
SUBI 4,AR2
|
||
NDO2
|
||
ADDI 481h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI AR0,AR4
|
||
|
||
|
||
LDI AR4,AR2
|
||
CALL OBJ_PULL
|
||
CALL PLYR_CAR_INIT
|
||
|
||
LDF 1,R6
|
||
PUSH AR5
|
||
PUSHFL R6
|
||
LDI *+AR4(OCARBLK),AR5
|
||
STF R6,*+AR5(CARSPEED)
|
||
|
||
LDF @START_RADY,R6
|
||
STF R6,*+AR5(CARYROT)
|
||
STF R6,*+AR5(CARVROT)
|
||
STF R6,*+AR5(CARDROT)
|
||
|
||
CLRF R2
|
||
CALL DRONEGO
|
||
|
||
|
||
POPFL R6
|
||
POP AR5
|
||
CALL WATCH_PLYRS_CAR
|
||
|
||
|
||
SONDFX STARTLINEREVS2
|
||
|
||
*
|
||
*NOW WE MOVE FORWARD AND INTO THE POSITION
|
||
*OF INSIDE LANE OF ROAD PIECE (OUSR1==0102h)
|
||
*
|
||
|
||
LDI @DYNALIST_TRUEBEGIN,AR0
|
||
LDI *+AR0(OUSR1),R1
|
||
ANDN 0FFh,R1
|
||
|
||
LDI *+AR0(OLINK4),AR0
|
||
LDI AR0,AR5
|
||
|
||
|
||
|
||
|
||
;MOVE FORWARD LOOP
|
||
;
|
||
MOVELOOP
|
||
LDF *+AR5(OPOSX),R0
|
||
SUBF *+AR4(OPOSX),R0
|
||
MPYF R0,R0
|
||
LDF *+AR5(OPOSZ),R1
|
||
SUBF *+AR4(OPOSZ),R1
|
||
MPYF R1,R1
|
||
ADDF R1,R0
|
||
|
||
LDF R0,R4
|
||
FLOAT 700,R1
|
||
|
||
|
||
;if a slave then ALWAYS appear on right side
|
||
;
|
||
LDI @DIPRAM,R3
|
||
TSTB DIP_COMMP,R3
|
||
BNZ BABADUY
|
||
|
||
TSTB CMDP_MASTER,R3
|
||
BZ BABADUY
|
||
|
||
FLOAT LANESIZE,R3
|
||
ADDF R3,R1
|
||
BABADUY
|
||
MPYF R1,R1
|
||
CMPF R1,R0
|
||
BLE IBODONE
|
||
|
||
|
||
PUSH AR5
|
||
LDI *+AR4(OCARBLK),AR5
|
||
LDF 0.5,R0
|
||
STF R0,*+AR5(CARTHROTTLE)
|
||
CLRF R2
|
||
CALL DRONEGO
|
||
POP AR5
|
||
CALL WATCH_PLYRS_CAR
|
||
SLEEP 1
|
||
BU MOVELOOP
|
||
|
||
IBODONE
|
||
LDI @DIPRAM,R3
|
||
TSTB DIP_COMMP,R3
|
||
BNZ BABADUY4
|
||
|
||
LDI AR5,AR2
|
||
|
||
TSTB CMDP_MASTER,R3
|
||
LDIZ 572,AR3
|
||
LDINZ 1724,AR3
|
||
|
||
FLOAT AR3,R0
|
||
STF R0,*+AR7(DELTA_XLANE)
|
||
|
||
|
||
LDI 0,AR3
|
||
CALL SPOS_INIT ;INIT STARTING POSITION
|
||
BABADUY4
|
||
|
||
|
||
LDI 1,R0
|
||
STI R0,@START_NOW_P
|
||
|
||
LDI MGAME|MINFIN|MWATER,R0 ;NOT MGO NOT MHUD
|
||
STI R0,@_MODE
|
||
BU PLYR_INTRO_ENTER
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
.bss CAR_ARRAY,4
|
||
GETTHECARS:
|
||
LDF @START_RADY,R2
|
||
LDI @MATRIXAI,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
LDL CAR_ARRAY,AR3
|
||
LDI @CCTABI,AR4
|
||
CLRI R4
|
||
LISTLP CALL OBJ_GET
|
||
|
||
LDI @VECTORAI,AR2
|
||
FLOAT *AR4++,R1 ;GET X POSITION
|
||
STF R1,*+AR2(X)
|
||
FLOAT *AR4++,R1 ;GET Y POSITION
|
||
STF R1,*+AR2(Y)
|
||
FLOAT *AR4++,R1 ;GET Z POSITION
|
||
STF R1,*+AR2(Z)
|
||
|
||
LDI @MATRIXAI,R2
|
||
LDI AR2,R3
|
||
CALL MATRIX_MUL
|
||
|
||
|
||
LDF *+AR2(X),R0
|
||
ADDF @START_POS+X,R0
|
||
STF R0,*+AR0(OPOSX)
|
||
LDF *+AR2(Y),R0
|
||
ADDF @START_POS+Y,R0
|
||
STF R0,*+AR0(OPOSY)
|
||
LDF *+AR2(Z),R0
|
||
ADDF @START_POS+Z,R0
|
||
STF R0,*+AR0(OPOSZ)
|
||
|
||
LDI *AR4++,R0
|
||
STI R0,*+AR0(OROMDATA)
|
||
STI AR0,*AR3++
|
||
|
||
LDI AR0,AR2
|
||
CALL OBJ_INSERT
|
||
|
||
LDI AR7,AR1
|
||
ADDI PDATA,AR1
|
||
ADDI R4,AR1
|
||
STI AR0,*AR1
|
||
INC R4
|
||
|
||
LDF *AR4++,R2
|
||
ADDF @START_RADY,R2
|
||
LDI AR0,AR2
|
||
ADDI OMATRIX,AR2
|
||
STF R2,*+AR0(ORADY)
|
||
CALL FIND_YMATRIX
|
||
|
||
LDI *AR4++,R0
|
||
STI R0,*+AR0(OID)
|
||
|
||
LDI *AR4,R0
|
||
CMPI -1,R0
|
||
BNE LISTLP
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*SHOW CAR STATISTICS
|
||
*
|
||
*USES
|
||
* AR4,AR5,AR6,R4,R5
|
||
*
|
||
SCS_TABI .word SCS_TAB
|
||
SCS_TAB .float 10,70,170,230
|
||
|
||
SHOW_CAR_STATISTICS:
|
||
LDI @DCALL,R0
|
||
RETSZ
|
||
PUSH AR3
|
||
PUSH AR4
|
||
PUSH AR5
|
||
PUSH AR6
|
||
PUSH AR7
|
||
|
||
LDI @CHOSEN_VEHICLE,AR7
|
||
ADDI @SCS_TABI,AR7
|
||
|
||
LDL TITLES,AR5
|
||
LDI 5-1,AR3
|
||
GBERLP LDI *AR5++,AR2
|
||
LDF *AR7,R2
|
||
FLOAT 180,R3
|
||
FLOAT AR3,R0
|
||
MPYF 10,R0
|
||
SUBF R0,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADDDS
|
||
CALL SETFIXEDFONTDS
|
||
DBU AR3,GBERLP
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,AR5
|
||
ADDI @TEXTTABSI,AR5
|
||
LDI *AR5,AR5
|
||
|
||
|
||
LDI 5,AR3
|
||
GNNERLP
|
||
LDI *AR5++,AR2
|
||
LDF *AR7,R2
|
||
ADDF 100,R2
|
||
CMPI 6,AR3
|
||
LDFEQ *AR7,R2
|
||
|
||
FLOAT 180,R3
|
||
FLOAT AR3,R0
|
||
MPYF 10,R0
|
||
SUBF R0,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADDDS
|
||
CALL SETFIXEDFONTDS
|
||
DBU AR3,GNNERLP
|
||
|
||
POP AR7
|
||
POP AR6
|
||
POP AR5
|
||
POP AR4
|
||
POP AR3
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
.bss CAR1PAL,129
|
||
.bss CAR2PAL,129
|
||
.bss CAR3PAL,129
|
||
.bss CAR4PAL,129
|
||
|
||
CARPAL_TABLEI .word CARPAL_TABLE
|
||
CARSRCPAL_TABI .word CARSRCPAL_TAB
|
||
|
||
romdata
|
||
CARPAL_TABLE .word CAR1PAL,CAR2PAL,CAR3PAL,CAR4PAL
|
||
CARSRCPAL_TAB .word cvette_p,hotrod_p,missle_p,testor_p
|
||
.text
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*(AND OVERHEAD LIGHT CLEANUP)
|
||
*
|
||
*
|
||
CLEANUP_DIMCAR_PALS:
|
||
LDL flour_lghtof,AR2
|
||
CALL PAL_FIND_RAW
|
||
LDI R0,AR2
|
||
CALL PAL_DELETE_RAW
|
||
|
||
|
||
LDL CAR1PAL,AR2
|
||
CALL PAL_FIND_RAW
|
||
LDI R0,AR2
|
||
CALL PAL_DELETE_RAW
|
||
|
||
LDL CAR2PAL,AR2
|
||
CALL PAL_FIND_RAW
|
||
LDI R0,AR2
|
||
CALL PAL_DELETE_RAW
|
||
|
||
LDL CAR3PAL,AR2
|
||
CALL PAL_FIND_RAW
|
||
LDI R0,AR2
|
||
CALL PAL_DELETE_RAW
|
||
|
||
LDL CAR4PAL,AR2
|
||
CALL PAL_FIND_RAW
|
||
LDI R0,AR2
|
||
CALL PAL_DELETE_RAW
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*GENERAL PURPOSE CHOOSE CAR LOOP ROUTINE
|
||
*
|
||
*
|
||
;THE CAR
|
||
RNDR_C1_DYH .set PDATA+1 ;desired Y height
|
||
RNDR_C1_SYH .set PDATA+2 ;starting y height
|
||
RNDR_C2_DYH .set PDATA+3
|
||
RNDR_C2_SYH .set PDATA+4
|
||
RNDR_C3_DYH .set PDATA+5
|
||
RNDR_C3_SYH .set PDATA+6
|
||
RNDR_C4_DYH .set PDATA+7
|
||
RNDR_C4_SYH .set PDATA+8
|
||
;THE LIFT
|
||
RNDR_L1_DYH .set PDATA+9 ;desired Y height
|
||
RNDR_L1_SYH .set PDATA+10 ;starting y height
|
||
RNDR_L2_DYH .set PDATA+11
|
||
RNDR_L2_SYH .set PDATA+12
|
||
RNDR_L3_DYH .set PDATA+13
|
||
RNDR_L3_SYH .set PDATA+14
|
||
RNDR_L4_DYH .set PDATA+15
|
||
RNDR_L4_SYH .set PDATA+16
|
||
|
||
|
||
|
||
CDYH .set 0
|
||
CSYH .set 1
|
||
C_SIZE .set 2
|
||
C_STRT .set PDATA+1
|
||
C_OFF2LIFT .set 8
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*
|
||
*
|
||
*PARAMETERS
|
||
* AR2 RAW PALETTE CAR1PAL
|
||
* AR3 ID OF VEHICLE
|
||
* IR0 RNDR_C1_DYH
|
||
* IR1 INDEX OF VEHCILE
|
||
*
|
||
GETTHECAR:
|
||
LDI 1,R0
|
||
STI R0,*AR2
|
||
CALL PAL_ALLOC_RAW
|
||
LDI R0,R6
|
||
LDI AR3,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
BNC $
|
||
LDI *+AR0(OFLAGS),R0
|
||
OR O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
STI R6,*+AR0(OPAL)
|
||
LDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR7(IR0)
|
||
INC IR0
|
||
STF R0,*+AR7(IR0)
|
||
STF R0,*+AR0(OUSR1)
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
ROUNDER:
|
||
LDL CAR1PAL,AR2
|
||
LDI 481h,AR3
|
||
LDI RNDR_C1_DYH,IR0
|
||
CALL GETTHECAR
|
||
|
||
LDL CAR2PAL,AR2
|
||
LDI 482h,AR3
|
||
LDI RNDR_C2_DYH,IR0
|
||
CALL GETTHECAR
|
||
|
||
LDL CAR3PAL,AR2
|
||
LDI 483h,AR3
|
||
LDI RNDR_C3_DYH,IR0
|
||
CALL GETTHECAR
|
||
|
||
LDL CAR4PAL,AR2
|
||
LDI 484h,AR3
|
||
LDI RNDR_C4_DYH,IR0
|
||
CALL GETTHECAR
|
||
|
||
|
||
LDI 401h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR7(RNDR_L1_DYH)
|
||
STF R0,*+AR7(RNDR_L1_SYH)
|
||
|
||
LDI 402h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR7(RNDR_L2_DYH)
|
||
STF R0,*+AR7(RNDR_L2_SYH)
|
||
|
||
LDI 403h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR7(RNDR_L3_DYH)
|
||
STF R0,*+AR7(RNDR_L3_SYH)
|
||
|
||
LDI 404h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR7(RNDR_L4_DYH)
|
||
STF R0,*+AR7(RNDR_L4_SYH)
|
||
|
||
|
||
|
||
|
||
LDI 0,AR0
|
||
LDF 0.5,R0
|
||
CALL CAR_DIMMER
|
||
|
||
LDI 1,AR0
|
||
LDF 0.5,R0
|
||
CALL CAR_DIMMER
|
||
|
||
LDI 2,AR0
|
||
LDF 0.5,R0
|
||
CALL CAR_DIMMER
|
||
|
||
LDI 3,AR0
|
||
LDF 0.5,R0
|
||
CALL CAR_DIMMER
|
||
|
||
CALL LIGHT_INIT
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,R0
|
||
STI R0,@SPINCURR
|
||
|
||
CLRI R0
|
||
STI R0,*+AR7(PDATA)
|
||
ROUNDERLP
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
LDI *+AR7(PDATA),R0
|
||
CMPI R0,AR2
|
||
BEQ RLL
|
||
|
||
STI AR2,*+AR7(PDATA)
|
||
|
||
|
||
LDI @DCALL,R1
|
||
BZ NODO56
|
||
|
||
PUSH AR2
|
||
PUSH R0
|
||
SONDFX HYDRO
|
||
POP R0
|
||
POP AR2
|
||
NODO56
|
||
|
||
LDI R0,IR0
|
||
MPYI C_SIZE,IR0
|
||
ADDI C_STRT,IR0
|
||
INC IR0
|
||
LDF *+AR7(IR0),R1
|
||
DEC IR0
|
||
STF R1,*+AR7(IR0)
|
||
|
||
|
||
PUSH AR2
|
||
LDI R0,AR2
|
||
CALL LIGHT_OFF
|
||
POP AR2
|
||
LDI R0,AR0
|
||
LDF 0.5,R0
|
||
CALL CAR_DIMMER
|
||
|
||
|
||
LDI AR2,IR0
|
||
MPYI C_SIZE,IR0
|
||
ADDI C_STRT,IR0
|
||
INC IR0
|
||
LDF *+AR7(IR0),R0
|
||
DEC IR0
|
||
FLOAT 300,R1
|
||
SUBF R1,R0
|
||
STF R0,*+AR7(IR0)
|
||
|
||
|
||
PUSH AR2
|
||
CALL LIGHT_ON
|
||
POP AR2
|
||
LDI AR2,AR0
|
||
LDF 1.0,R0
|
||
CALL CAR_DIMMER
|
||
RLL
|
||
|
||
CALL AFFECT_THE_CARS
|
||
|
||
SLEEP 1
|
||
BU ROUNDERLP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*AFFECT CARS
|
||
*
|
||
*
|
||
*PARAMETERS
|
||
* INDEX OF CAR
|
||
*
|
||
*
|
||
*OPERATION
|
||
* RAISE VEHICLE AND SPIN
|
||
*
|
||
*
|
||
AFFECT_THE_CARS:
|
||
|
||
LDI 481h,AR2
|
||
LDI RNDR_C1_DYH,IR0
|
||
LDI 0,IR1
|
||
CALL AFFECTED_CAR
|
||
|
||
LDI 482h,AR2
|
||
LDI RNDR_C2_DYH,IR0
|
||
LDI 1,IR1
|
||
CALL AFFECTED_CAR
|
||
|
||
LDI 483h,AR2
|
||
LDI RNDR_C3_DYH,IR0
|
||
LDI 2,IR1
|
||
CALL AFFECTED_CAR
|
||
|
||
LDI 484h,AR2
|
||
LDI RNDR_C4_DYH,IR0
|
||
LDI 3,IR1
|
||
CALL AFFECTED_CAR
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*HIDDEN VEHICLES
|
||
*
|
||
*
|
||
*
|
||
.bss IS_HIDDEN,1
|
||
|
||
HIDDEN_TABLEI .word HIDDEN_TABLE
|
||
HIDDEN_TABLE .word jeepm,sbuspm,copcar,gtruck
|
||
|
||
|
||
HIDDEN_VEHICLES:
|
||
LDI -1,R0
|
||
STI R0,@IS_HIDDEN
|
||
|
||
HIDDEN_VEHICLES_LP
|
||
SLEEP 1
|
||
|
||
LDI @CAR_CHOICE_GOTTEN,R0
|
||
BZ NSCD
|
||
DIE
|
||
NSCD
|
||
|
||
LDI @SWITCHBUTS,R0
|
||
RS 16,R0
|
||
AND SW_VIEW0_H|SW_VIEW1_H,R0
|
||
BZ SETAS_ORIGINALS
|
||
|
||
SETAS_HIDDEN
|
||
LDI @IS_HIDDEN,R0
|
||
CMPI -1,R0
|
||
CALLNE RESET_ORIGINAL
|
||
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
; CMPI 1,AR2
|
||
; BEQ HIDDEN_VEHICLES_LP
|
||
CMPI 3,AR2
|
||
BEQ HIDDEN_VEHICLES_LP
|
||
|
||
STI AR2,@IS_HIDDEN
|
||
|
||
ADDI 481h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
|
||
LDI @CHOSEN_VEHICLE,AR2
|
||
ADDI @HIDDEN_TABLEI,AR2
|
||
LDI *AR2,R0
|
||
STI R0,*+AR0(OROMDATA)
|
||
LDI *+AR0(OFLAGS),R0
|
||
ANDN O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
BU HIDDEN_VEHICLES_LP
|
||
SETAS_ORIGINALS
|
||
|
||
LDI @IS_HIDDEN,R0
|
||
CMPI -1,R0
|
||
BEQ HIDDEN_VEHICLES_LP ;no one was hidden,
|
||
;just ignore
|
||
CALL RESET_ORIGINAL
|
||
LDI -1,R0
|
||
STI R0,@IS_HIDDEN
|
||
BU HIDDEN_VEHICLES_LP
|
||
|
||
|
||
*PARAMETERS
|
||
* R0 INDEX OF PREVIOUS VEHICLES
|
||
*
|
||
RESET_ORIGINAL:
|
||
;insert code here to set the old vehicle
|
||
;as
|
||
;
|
||
PUSH R0
|
||
LDI R0,AR2
|
||
ADDI 481h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
POP AR2
|
||
|
||
MPYI 6,AR2
|
||
ADDI @CCTABI,AR2
|
||
LDI *+AR2(3),R0
|
||
STI R0,*+AR0(OROMDATA)
|
||
|
||
LDI *+AR0(OFLAGS),R0
|
||
OR O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
.bss SPINCURR,1
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*PARAMETERS
|
||
* AR2 ID
|
||
* IR0 DESIRED HEIGHT OFFSET of AR7
|
||
* IR1 IDX OF CAR
|
||
*
|
||
*
|
||
AFFECTED_CAR:
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR0(OPOSY),R0
|
||
LDF *+AR7(IR0),R1
|
||
SUBF R0,R1,R0
|
||
MPYF 0.15,R0
|
||
ADDF *+AR0(OPOSY),R0
|
||
STF R0,*+AR0(OPOSY)
|
||
|
||
PUSH IR0
|
||
PUSH AR0
|
||
LDI AR0,AR1
|
||
SUBI 080h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDF *+AR1(OPOSY),R0
|
||
INC IR0
|
||
SUBF *+AR7(IR0),R0
|
||
ADDI C_OFF2LIFT,IR0
|
||
ADDF *+AR7(IR0),R0
|
||
STF R0,*+AR0(OPOSY)
|
||
POP AR0
|
||
POP IR0
|
||
|
||
|
||
LDI @SPINCURR,R0
|
||
LDI @CHOSEN_VEHICLE,R1
|
||
CMPI R0,R1
|
||
BEQ IBOIBO
|
||
|
||
CMPI R0,IR1
|
||
BNE N12
|
||
;track to PI
|
||
|
||
LDF *+AR0(ORADY),R2
|
||
LDLF 0.392699,R1
|
||
ADDF R1,R2
|
||
CALL NORMITS
|
||
LDF PI,R0
|
||
ADDF @START_RADY,R0
|
||
PUSHFL R2
|
||
LDF R0,R2
|
||
CALL NORMITS
|
||
LDF R2,R0
|
||
POPFL R2
|
||
CALL GETTHETADIFF
|
||
|
||
|
||
PUSHFL R2
|
||
LDF R0,R2
|
||
CALL NORMITS
|
||
LDF R2,R0
|
||
POPFL R2
|
||
|
||
CMPF 0.04,R0
|
||
BLT DOALL
|
||
|
||
MPYF 0.10,R0
|
||
ADDF R0,R2
|
||
BU IBO45
|
||
|
||
DOALL ADDF R0,R2
|
||
LDI @CHOSEN_VEHICLE,R1
|
||
STI R1,@SPINCURR
|
||
|
||
IBO45 STF R2,*+AR0(ORADY)
|
||
LDI AR0,AR2
|
||
ADDI OMATRIX,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
IBOIBO CMPI R1,IR1
|
||
BNE N12
|
||
;just spin
|
||
|
||
LDF *+AR0(ORADY),R2
|
||
ADDF 0.1,R2
|
||
STF R2,*+AR0(ORADY)
|
||
LDI AR0,AR2
|
||
ADDI OMATRIX,AR2
|
||
CALL FIND_YMATRIX
|
||
|
||
N12
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*PARAMETERS
|
||
* AR0 CAR INDEX
|
||
* R0 (FL) DIMMER VALUE
|
||
*
|
||
CAR_DIMMER:
|
||
LDI AR0,AR1
|
||
ADDI @CARPAL_TABLEI,AR1
|
||
LDI *AR1,AR1 ;NOW HOLDS RAM LOCATION
|
||
|
||
ADDI @CARSRCPAL_TABI,AR0
|
||
LDI *AR0,AR0
|
||
ADDI @PALROMI,AR0
|
||
LDI *AR0,AR0
|
||
CALL PAL_DIMMER
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
.include glight.pal
|
||
*----------------------------------------------------------------------------
|
||
LIGHT_INIT:
|
||
PUSH AR2
|
||
LDL flour_lghtof,AR2
|
||
CALL PAL_ALLOC_RAW
|
||
|
||
LDI 0,AR2
|
||
CALL LIGHT_OFF
|
||
LDI 1,AR2
|
||
CALL LIGHT_OFF
|
||
LDI 2,AR2
|
||
CALL LIGHT_OFF
|
||
LDI 3,AR2
|
||
CALL LIGHT_OFF
|
||
POP AR2
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*PARAMETERS
|
||
* AR2 INDEX (0 to 3)
|
||
*
|
||
LIGHT_OFF:
|
||
PUSH R0
|
||
PUSH AR0
|
||
PUSH AR2
|
||
ADDI 601h,AR2
|
||
PUSH AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDL flour_lghtof,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
LDI *+AR0(OFLAGS),R0
|
||
OR O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
POP AR2
|
||
SUBI 200h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI *+AR0(OFLAGS),R0
|
||
ANDN O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
POP AR2
|
||
POP AR0
|
||
POP R0
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*as above
|
||
*
|
||
LIGHT_ON:
|
||
PUSH R0
|
||
PUSH AR0
|
||
PUSH AR2
|
||
ADDI 601h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI *+AR0(OFLAGS),R0
|
||
ANDN O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
SUBI 200h,AR2
|
||
CALL OBJ_FIND_FIRST
|
||
LDI *+AR0(OFLAGS),R0
|
||
ANDN O_1PAL,R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
POP AR2
|
||
POP AR0
|
||
POP R0
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*USES
|
||
* R5 AS A DEDICATED REG
|
||
*
|
||
INIT_PEDALCHK:
|
||
CLRI R5 ;FLAG : HAS THE PEDAL BEEN RELEASEDP
|
||
LDI @_pot1,R0
|
||
FIX @PEDALMN,R1
|
||
ADDI 20,R1
|
||
CMPI R1,R0
|
||
LDIGE 1,R5 ;GE -> IT HASN'T
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
GETCHOICE:
|
||
PUSHF R4
|
||
PUSH R4
|
||
LDI @_MODE,R4
|
||
AND MMODE,R4
|
||
FLOAT @_pot0,R3 ;GET CURRENT WHEEL
|
||
FLOAT @POSES,R1 ;GET # POSES
|
||
|
||
LDF @STEERFR,R0
|
||
CALL DIV_F
|
||
|
||
LDF R0,R1
|
||
MPYF 0.5,R1
|
||
|
||
FLOAT @POSE,R2 ;@CHOSEN_VEHICLE,R2
|
||
MPYF R0,R2
|
||
ADDF R1,R2 ;MIDDLE OF ZONE
|
||
ADDF @STEERMN,R2 ;ADD IN MINIMUM
|
||
CMPI MINIT,R4
|
||
BEQ GETCHA
|
||
STF R2,@WHEELPOS
|
||
GETCHA
|
||
SUBF R3,R2
|
||
|
||
ABSF R2,R3 ;FIND DIFFERENCE
|
||
MPYF 0.6,R0 ;SLIGHT HYSTERESIS
|
||
CMPF R0,R3
|
||
BLE GETCHX
|
||
|
||
LDF R2,R2
|
||
LDILT 1,R0
|
||
LDIGE -1,R0
|
||
|
||
ADDI @POSE,R0 ;CHOSEN_VEHICLE,R0
|
||
LDFLT 0,R0
|
||
CMPI @POSES,R0
|
||
BLT GETCH1
|
||
LDI @POSES,R0
|
||
SUBI 1,R0
|
||
GETCH1 STI R0,@POSE
|
||
GETCHX
|
||
POP R4
|
||
POPF R4
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*USES
|
||
* R5 see above
|
||
*RETURNS
|
||
* NC FALSE
|
||
* C TRUE
|
||
*
|
||
PEDALCHK:
|
||
LDI @_pot1,R0 ;set in main IRQ
|
||
LDP @PEDALMN
|
||
FIX @PEDALMN,R1
|
||
ADDI 20,R1
|
||
CMPI R1,R0
|
||
LDILT 0,R5
|
||
BLT SKIPKEY
|
||
|
||
LDI R5,R5 ;IF the pedal has not yet been released
|
||
BZ PEDALTRUE ;up do not accept this as a valid pedal choice
|
||
SKIPKEY
|
||
|
||
PEDALFALSE
|
||
CLRC
|
||
RETS
|
||
|
||
PEDALTRUE
|
||
SETC
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
romdata
|
||
T_READY .string "READY",0
|
||
T_SET .string "SET",0
|
||
T_GO .string "GO",0
|
||
T_CHALLENG .string "CHALLENGE RACE",0
|
||
.text
|
||
|
||
TLIST .word T_READY,CHICK_READY,SEND_WAVEFL_READY
|
||
.word T_SET,CHICK_SET,SEND_WAVEFL_SET
|
||
TLGO .word T_GO,CHICK_GO,SEND_WAVEFL_GO
|
||
|
||
.bss BABE_CONTROL,1
|
||
|
||
|
||
.bss CURR_FLAGSTATE,1
|
||
WAVEFLAG:
|
||
LDP @STOPWATCH_CNTL
|
||
CLRI R0
|
||
STI R0,@STOPWATCH_CNTL
|
||
STI R0,@BABE_CONTROL
|
||
LDP @STOPWATCH
|
||
STI R0,@STOPWATCH
|
||
|
||
LDI @_MODE,R0
|
||
LDI R0,R5
|
||
OR MHUD|MSLINE,R0
|
||
STI R0,@_MODE
|
||
|
||
|
||
READADJ ADJ_FREEGAME
|
||
CMPI 0,R0
|
||
BEQ FGLL
|
||
|
||
CREATE BLINK_FREEBE,UTIL_C
|
||
|
||
LDI @_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MATTR,R0
|
||
BEQ FGLL
|
||
|
||
CREATE SHOW_RACE_NAME,UTIL_C
|
||
FGLL
|
||
; LDI @HEAD2HEAD_ON,R0
|
||
; CALLNZ SEND_BSYNC0
|
||
|
||
SLEEP 5
|
||
|
||
|
||
LDI @_MODE,R0
|
||
AND MMODE,R0
|
||
CMPI MATTR,R0
|
||
BEQ NOBABE
|
||
|
||
CREATEC BABE_WAVEFLAG,UTIL_C
|
||
NOBABE
|
||
|
||
CLRI R0
|
||
STI R0,@CURR_FLAGSTATE
|
||
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ NOHEAD2HEAD
|
||
CLRI R0
|
||
STI R0,@OM_BSYNC
|
||
H2HWTLP
|
||
SLEEP 1
|
||
CALL SEND_BSYNC3
|
||
LDI @OM_BSYNC,R0
|
||
CMPI 3,R0
|
||
BNE H2HWTLP
|
||
NOHEAD2HEAD
|
||
|
||
|
||
|
||
;-----------------------------------
|
||
; -----------------------------------
|
||
; -----------------------------------
|
||
SONDFX STARTLINEREVS2
|
||
|
||
LDI 2,AR5
|
||
LDL TLIST,AR6
|
||
WAVEFLAGLP
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ JDJFF
|
||
LDI @DIPRAM,R0
|
||
TSTB CMDP_MASTER,R0
|
||
BZ JDJFF
|
||
|
||
JFF LDI @CURR_FLAGSTATE,R0
|
||
CMPI 3,R0
|
||
BEQ JUMPOUT
|
||
CMPI @H2H_FLAGSTATE,R0
|
||
BLT NXTSTAT
|
||
SLEEP 1
|
||
BU JFF
|
||
NXTSTAT LDI @H2H_FLAGSTATE,R0
|
||
STI R0,@CURR_FLAGSTATE
|
||
BU KKLFF
|
||
JDJFF
|
||
SLEEP 20
|
||
KKLFF
|
||
|
||
LDI *AR6++,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 160,R3
|
||
LDI 20,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
LDI *AR6++,AR2
|
||
CALL ONESNDFX
|
||
|
||
|
||
;if H2H_ON && MASTER
|
||
;then SEND_STATE
|
||
;
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ BABAD
|
||
LDI @DIPRAM,R0
|
||
TSTB CMDP_MASTER,R0
|
||
BNZ BABAD
|
||
LDI *AR6,R0
|
||
CALLU R0
|
||
|
||
BABAD ADDI 1,AR6
|
||
|
||
DEC AR5
|
||
CMPI 0,AR5
|
||
BGT WAVEFLAGLP
|
||
|
||
|
||
JUMPOUT LDL TLGO,AR6
|
||
SLEEP 15
|
||
|
||
LDI 1,R0
|
||
STI R0,@BABE_CONTROL
|
||
|
||
|
||
SLEEP 5
|
||
|
||
LDI *AR6++,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 160,R3
|
||
LDI 20,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
LDI *AR6++,AR2
|
||
CALL ONESNDFX
|
||
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ BABAD666
|
||
LDI @DIPRAM,R0
|
||
TSTB CMDP_MASTER,R0
|
||
BNZ BABAD666
|
||
CALL SEND_WAVEFL_GO
|
||
BABAD666
|
||
|
||
|
||
|
||
OR MGO,R5 ;SAVED MODE
|
||
ANDN MSLINE,R5
|
||
STI R5,@_MODE
|
||
STI R5,@STOPWATCH_CNTL ;STOPWATCH TIMER
|
||
|
||
|
||
.globl CHECK_MOTION_DIP,CHECK_MOTION_PRESENT
|
||
CALL CHECK_MOTION_DIP
|
||
BNZ NANAD ;RETURN IF NON MOVING
|
||
CALL CHECK_MOTION_PRESENT
|
||
BNE NANAD
|
||
|
||
CLRI AR2
|
||
LDP @991030h
|
||
LDI @991030h,R2
|
||
LDI *AR2,AR2
|
||
SETDP
|
||
LDL 0FF80h,R1
|
||
AND R1,R2
|
||
BZ NANAD
|
||
MOTION_ERROR_TIKS .set (57*5)
|
||
.globl WAITTIK
|
||
LDI MOTION_ERROR_TIKS,R1
|
||
STI R1,@WAITTIK
|
||
BU NANAD
|
||
|
||
NOERR .globl ABORT_RESET_GALIL
|
||
CALL ABORT_RESET_GALIL
|
||
.globl XQ,SEND_CMD,WAIT_ACK
|
||
LDL XQ,AR2 ;tell galil to continue executing program
|
||
CALL SEND_CMD
|
||
CALL WAIT_ACK
|
||
NANAD
|
||
|
||
LDI SM_GO,R0
|
||
STI R0,@SUSPEND_MODE
|
||
|
||
SONDFX PEELOUT
|
||
|
||
READAUD ADJ_TIME_TO_START
|
||
MPYI 5,R0
|
||
ADDI 60,R0
|
||
STI R0,@_countdown
|
||
|
||
LDI @HEAD2HEAD_ON,R0
|
||
BZ NOTHHHH
|
||
LDI @OM_RACE_MODE,R0
|
||
CMPI RM_USA,R0
|
||
BNE NOTHHHH
|
||
LDI RM_USA,R0
|
||
STI R0,@RACE_MODE
|
||
|
||
|
||
NOTHHHH
|
||
|
||
LDI @_MODE,R0 ;MAKE SURE MODE IS IN GAME
|
||
AND MMODE,R0
|
||
CMPI MATTR,R0
|
||
CALLNE RESUME_TUNE_NT
|
||
DIE
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
RACESEL_TIMER:
|
||
LDI @_countdown,R2
|
||
LDI @COUNTDOWN_BUFI,AR2
|
||
CALL _itoa
|
||
BUD IT_E2
|
||
FLOAT 256,R2
|
||
FLOAT 253,R3
|
||
LDI 1,RC
|
||
;----> BUD IT_E2
|
||
*----------------------------------------------------------------------------
|
||
WAITINTROTIMER:
|
||
FLOAT 215,R3
|
||
BU LKJAFSD
|
||
INTROTIMER:
|
||
FLOAT 350,R3
|
||
LKJAFSD
|
||
PUSHF R3
|
||
LDI @_countdown,R2
|
||
LDI @COUNTDOWN_BUFI,AR2
|
||
CALL _itoa
|
||
POPF R3
|
||
FLOAT 256,R2
|
||
LDI 1,RC
|
||
IT_E2 CALL TEXT_ADD
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
CALL SETN43FONT
|
||
.globl lgnum43_coolyelo
|
||
LDL lgnum43_coolyelo,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(TEXT_PAL)
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*DIAL ROUT
|
||
*
|
||
*SET THE PROPER OBJECT COLOR CYCLING
|
||
*
|
||
.bss LASTCHOICE,1
|
||
DIAL_ROUT:
|
||
LDI @POSE,AR2
|
||
CMPI 0,AR2
|
||
LDILT 0,AR2
|
||
CMPI 3,AR2
|
||
LDIGT 3,AR2
|
||
STPI AR2,@CHOSEN_VEHICLE
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*END OF PLAYERS GAME
|
||
*
|
||
* COMPUTE TIME
|
||
* SHOW STATISTICS
|
||
* IDENTIFY GAME OVER
|
||
* HSTD IF NESSESARY
|
||
* GOTO ATTRACT MODE
|
||
*
|
||
*
|
||
ENDPLAYER:
|
||
|
||
CLRI R2
|
||
SETAUD AUD_BCREDITS
|
||
|
||
|
||
LDI AUD_NUM_UNFINISHED,AR2
|
||
CALL AUDIT_READ
|
||
DEC R0
|
||
LDI R0,R2
|
||
SETAUD AUD_NUM_UNFINISHED
|
||
|
||
|
||
LDI 0,R0
|
||
STI R0,@FRAMRATE ;RESET FRAME RATE TO ATTRACT MODE
|
||
|
||
; LDI -5,AR2 ;HSTD SHOULD BE NEXT SCREEN!
|
||
LDI -2,AR2 ;HSTD SHOULD BE NEXT SCREEN!
|
||
STI AR2,@_ATTR_MODE
|
||
|
||
LDI DRONE_C,R0
|
||
LDI CLASS_M,R1
|
||
CALL PRC_KILLALL
|
||
|
||
LDI SPAWNER_C,R0
|
||
LDI CLASS_M,R1
|
||
CALL PRC_KILLALL
|
||
|
||
*ELP CHANGE
|
||
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
|
||
*ELP END CHANGE
|
||
|
||
*
|
||
*NOW CLEAN UP THE SYSTEM,. REINITIALIZE EVERYTHING AND
|
||
*GO INTO ATTRACT MODE
|
||
*
|
||
|
||
CALL TEXT_INIT
|
||
|
||
; CLRI AR2
|
||
; CALL SENDSND
|
||
; SOND1 GAMEOVR
|
||
|
||
*ELP CHANGE
|
||
; LDL _SECggate,AR2
|
||
; CALL LOAD_SECTION_REQ
|
||
*ELP END CHANGE
|
||
|
||
CLRI R0 ;R0 (B0-15) PID
|
||
CLRI R1 ;R1 (B0-15) MASK
|
||
CALL PRC_KILLALL
|
||
|
||
BU SET_ATTR
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*GAME AVAILABLE P
|
||
*RETURNS
|
||
* CARRY SET CREDIT ENTER - GAME IS AVAILABLE
|
||
* CARRY CLR NO CREDIT AVAILABLE
|
||
* R0 CREDITS AVAILABLE
|
||
*
|
||
GAME_AVAILABLEP:
|
||
PUSH R2
|
||
PUSH AR2
|
||
|
||
READADJ ADJ_FREE_PLAY
|
||
CMPI 1,R0
|
||
BEQ GA_TRUE
|
||
|
||
.ref GET_CREDITS_TO_START
|
||
CALL GET_CREDITS_TO_START
|
||
|
||
|
||
READAUD AUD_CREDITS
|
||
CMPI R1,R0
|
||
BLT GA_FALSE
|
||
|
||
|
||
GA_TRUE
|
||
SETC
|
||
POP AR2
|
||
POP R2
|
||
RETS
|
||
|
||
GA_FALSE
|
||
CLRC
|
||
POP AR2
|
||
POP R2
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*START BUTTON
|
||
*
|
||
*
|
||
_start:
|
||
LDI @_MODE,R0
|
||
AND MMODE,R0
|
||
|
||
CMPI MCT,R0
|
||
BEQ CN
|
||
CMPI MBONUS,R0
|
||
BEQ CN
|
||
CMPI MINSERT_COINS,R0
|
||
BEQ CN
|
||
CMPI MINIT,R0
|
||
BEQ CN
|
||
|
||
CMPI MINTRO,R0
|
||
BNE NOTINTRO
|
||
|
||
CN LDI 1,R0
|
||
STI R0,@START_HIT
|
||
DIE
|
||
NOTINTRO
|
||
|
||
NOTINSRT
|
||
|
||
CMPI MGAME,R0
|
||
BEQ _startX
|
||
|
||
CALL GAME_AVAILABLEP
|
||
BC CANSTART
|
||
|
||
;NO CREDITS TO START!
|
||
LDI @TEASE_COUNT,R0
|
||
CMPI 0,R0
|
||
BGT _startX
|
||
INC R0
|
||
STI R0,@TEASE_COUNT
|
||
SOND1 TEASE_TURNKEY
|
||
DIE
|
||
|
||
CANSTART
|
||
CALL GET_CREDITS_TO_START
|
||
SUBI R1,R0
|
||
|
||
LDI R0,R2
|
||
CMPI 0,R2
|
||
LDILT 0,R2
|
||
SETAUD AUD_CREDITS ;DECREMENT CREDIT COUNT
|
||
|
||
|
||
LDI 0,R2
|
||
LDI AUD_BCREDITS,AR2
|
||
CALL AUDIT_WRITE
|
||
|
||
startgame
|
||
LDI @_MODE,R0
|
||
|
||
.if DEBUG
|
||
LDI R0,R1
|
||
ANDN MMODE,R0
|
||
|
||
AND MMODE,R1
|
||
CMPI MATTR,R1 ;this kludge allows us, in debugging
|
||
BEQ CYCLEOUT ;more to cycle out of game mode into
|
||
OR MATTR,R1 ;attract mode...
|
||
STI R1,@_MODE ;
|
||
|
||
;
|
||
;SYSTEM SHUTDOWN, STRAIGHTLINE CODE NOW ACTIVE
|
||
;
|
||
BR CYCLE_ATTR
|
||
;
|
||
;
|
||
CYCLEOUT
|
||
.endif
|
||
|
||
ANDN MMODE,R0
|
||
*ELP CHANGE February 8,1995
|
||
; OR MGAME,R0
|
||
;we must begin the game in MINTRO
|
||
;
|
||
;
|
||
OR MINTRO,R0
|
||
*ELP END CHANGE
|
||
STI R0,@_MODE
|
||
|
||
CLRI R0
|
||
STI R0,@(_plyr1+PLY_CAR)
|
||
|
||
LDP @FASTSTKI ;GET PAGE OF STORED ADDRESS
|
||
LDI @FASTSTKI,SP ;LOAD THE ADDRESS INTO SP
|
||
LDI 1,AR2
|
||
CALL WAVE
|
||
BR COLD_ENTER ;RESET SYSTEM RUNNING
|
||
|
||
_startX
|
||
DIE
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*PARAMETERS
|
||
* AR4 OBJECT
|
||
*
|
||
*
|
||
ULTRA_PROC:
|
||
CLRF R6
|
||
UPLP LDF 0.0349078,R0
|
||
FLOAT @NFRAMES,R1
|
||
MPYF R1,R0
|
||
SUBF R0,R6
|
||
LDF R6,R2
|
||
LDI AR4,AR2
|
||
ADDI OMATRIX,AR2
|
||
CALL FIND_YMATRIX
|
||
SLEEP 1
|
||
BU UPLP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
ULTRA_LOGO:
|
||
CALL OBJ_GET
|
||
RETSC
|
||
LDIL nintendo,R0
|
||
STI R0,*+AR0(OROMDATA)
|
||
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV,R0
|
||
OR *+AR0(OFLAGS),R0
|
||
STI R0,*+AR0(OFLAGS)
|
||
|
||
CLRF R0
|
||
STF R0,*+AR0(OPOSX)
|
||
|
||
FLOAT 50,R0
|
||
STF R0,*+AR0(OPOSY)
|
||
FLOAT 368,R0
|
||
STF R0,*+AR0(OPOSZ)
|
||
|
||
LDI AR0,AR2
|
||
CALL OBJ_INSERTP
|
||
|
||
LDI AR2,AR4
|
||
PUSH AR0
|
||
PUSH AR2
|
||
CREATE ULTRA_PROC,UTIL_C
|
||
POP AR2
|
||
POP AR0
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
LOGO_SMALL:
|
||
LDI @DIPRAM,R0
|
||
TSTB DIP_COMMP,R0
|
||
RETSNZ
|
||
|
||
|
||
LDL redhd1,AR2 ;red (bottom)
|
||
LDI 230,R2
|
||
LDI -190-60,R3
|
||
LDI 926,RC ;368*2
|
||
CALL OBJ_QMAKE
|
||
RETSC
|
||
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_INSERT
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
|
||
|
||
LDL yelhd1,AR2 ;top
|
||
LDI 230,R2
|
||
LDI -190+60,R3
|
||
LDI 926,RC ;368*2
|
||
CALL OBJ_QMAKE
|
||
RETSC
|
||
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_INSERT
|
||
LDL H2HPAL2,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
|
||
|
||
LDL big2,AR2
|
||
LDI 230,R2
|
||
LDI -190,R3
|
||
LDI 924,RC ;(368*2)-2
|
||
CALL OBJ_QMAKE
|
||
RETSC
|
||
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_INSERT
|
||
LDL H2HPAL3,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(OPAL)
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*STRAIGHT LINE CODE, SYSTEM SHUTDOWN
|
||
*THIS ROUTINE IS BRANCHED TO, NOT CALLED!
|
||
*
|
||
*
|
||
SET_ATTR:
|
||
CALL SILENT
|
||
LDI @FASTSTKI,SP ;GET PAGE OF STORED ADDRESS
|
||
LDI @_ATTR_MODE,AR2 ;AND INTO FP TOO
|
||
CALL WAVE
|
||
BU COLD_ENTER
|
||
|
||
CYCLE_ATTR:
|
||
_debug:
|
||
|
||
CALL SILENT
|
||
CALL LOAD_FIXED_PALETTES
|
||
|
||
LDI @FASTSTKI,SP ;GET PAGE OF STORED ADDRESS
|
||
LDI @_ATTR_MODE,AR2 ;AND INTO FP TOO
|
||
DEC AR2
|
||
CMPI -4,AR2
|
||
LDILT -1,AR2
|
||
STI AR2,@_ATTR_MODE
|
||
CALL WAVE
|
||
BU COLD_ENTER ;RESET SYSTEM RUNNING
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*ATTRACT MODE TIMEOUT MECHANISM
|
||
*SLEEP _timer TIKS THEN JUMP TO CYCLE_ATTR
|
||
*
|
||
.bss _timer,1
|
||
_timeout:
|
||
LDI @_timer,AR2
|
||
CALL SLEEP
|
||
BU CYCLE_ATTR
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*INSERT COINS ROUTINES
|
||
*
|
||
* INSMORE JSRPed FROM PLYR.ASM
|
||
* COIN_CNTDOWN CREATED, KILLED
|
||
*
|
||
TROI SPTR "INSERT COINS"
|
||
ICCI SPTR "TO CONTINUE"
|
||
PSCI SPTR "PRESS START"
|
||
|
||
.bss SAVEDMODE,1
|
||
|
||
INSMORE:
|
||
LDI @_MODE,R0
|
||
STI R0,@SAVEDMODE
|
||
|
||
CALL CHECK_MOTION_DIP
|
||
BNZ KFFDA
|
||
|
||
CALL ABORT_RESET_GALIL
|
||
LDI 0,R0
|
||
.globl MOTION_STOP_HIT,MOTION_SAFETY_ON
|
||
STI R0,@MOTION_STOP_HIT
|
||
STI R0,@MOTION_SAFETY_ON
|
||
.globl WAITTIK
|
||
STI R0,@WAITTIK
|
||
KFFDA
|
||
|
||
|
||
;
|
||
LDF @GAME_TIMER,R2
|
||
MPYF 100,R2
|
||
FIX R2
|
||
|
||
READAUD AUD_TOTAL_TIME
|
||
ADDI R0,R2
|
||
SETAUD AUD_TOTAL_TIME
|
||
|
||
READAUD AUD_NUM_BUYINS
|
||
LDI R0,R1
|
||
LDI R2,R0
|
||
CALL DIV_I30
|
||
|
||
LDI R0,R2
|
||
SETAUD AUD_AVG_TIME
|
||
;
|
||
|
||
|
||
LDI 20,R0
|
||
STI R0,@_countdown
|
||
|
||
|
||
CALL SILENT
|
||
SOND1 DISCODUCK
|
||
|
||
CLRI R0
|
||
STI R0,@STOPWATCH_CNTL
|
||
STI R0,@START_HIT
|
||
|
||
LDI @_MODE,R0
|
||
ANDN MMODE,R0
|
||
OR MINSERT_COINS|MGO,R0
|
||
STI R0,@_MODE
|
||
|
||
|
||
LDI @TROI,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 100,R3
|
||
LDI 9999,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
LDI AR0,AR4 ;SAVE POINTERS FOR TEXT CHANGE
|
||
|
||
|
||
LDI @ICCI,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 150,R3
|
||
LDI 9999,RC
|
||
CALL TEXT_ADD
|
||
CALL SET40FONT
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
|
||
|
||
CREATEC COIN_CNTDOWN,034h
|
||
READAUD AUD_BCREDITS
|
||
LDI R0,R4 ;WATCH CREDITS
|
||
|
||
CLRI R5 ;TO START TOGGLE
|
||
LDI 15,AR6 ;wait at least 15 frames to continue
|
||
LDI 0,R0
|
||
STI R0,@miniidle
|
||
|
||
|
||
|
||
;wait for a coin to be dropped in
|
||
;if coins are in change text to PRESS START
|
||
|
||
INSMORE_LP
|
||
CALL INSERT_MORE_COINS
|
||
|
||
|
||
READAUD AUD_BCREDITS
|
||
CMPI R0,R4
|
||
BEQ NOINCTIM
|
||
|
||
LDI R0,R4
|
||
LDI 20,R0
|
||
STI R0,@_countdown
|
||
NOINCTIM
|
||
|
||
LDI R5,R5
|
||
BNZ CHECKHIT
|
||
|
||
READADJ ADJ_FREE_PLAY
|
||
CMPI 1,R0
|
||
BEQ FREEP
|
||
|
||
|
||
READAUD AUD_CREDITS
|
||
|
||
.ref GET_CREDITS_TO_CONTINUE
|
||
CALL GET_CREDITS_TO_CONTINUE
|
||
CMPI R1,R0
|
||
BLT JUSTGOON
|
||
|
||
; CMPI 0,R0
|
||
; BEQ JUSTGOON
|
||
FREEP
|
||
LDI @PSCI,R0 ;change the text
|
||
STI R0,*+AR4(TEXT_PTR)
|
||
LDI 1,R5
|
||
|
||
LDI @BUTTON_STATUS,R0
|
||
OR BUT_START,R0
|
||
STI R0,@BUTTON_STATUS
|
||
JUSTGOON
|
||
|
||
;check to see if plyr hit start (decrement count)
|
||
LDI R5,R5
|
||
BNZ CANWT
|
||
|
||
|
||
|
||
TOSLP
|
||
;HITTING THE BUTTON W/O CREDITS
|
||
LDI @START_HIT,R0
|
||
BZ NRST
|
||
CLRI R0
|
||
STI R0,@START_HIT
|
||
LDI 20,R0
|
||
STI R0,@_countdown
|
||
NRST
|
||
LDI @miniidle,R0 ;only every 10th frame
|
||
CMPI 0,R0
|
||
|
||
LDI @SWITCHBUTS,R0
|
||
LDL SW_RADIO|SW_VIEW0|SW_VIEW1|SW_VIEW2,R1
|
||
AND R1,R0
|
||
BZ TOSLP2
|
||
|
||
CMPI R1,R0 ;but if ALL are pressed...dont decrement
|
||
BEQ TOSLP2
|
||
|
||
LDI @_countdown,R0
|
||
DEC R0
|
||
STI R0,@_countdown
|
||
TOSLP2
|
||
|
||
|
||
DEC AR6
|
||
CMPI 0,AR6
|
||
BGT CANWT
|
||
|
||
LDI @SWITCHBUTS,R0
|
||
TSTB SW_START,R0
|
||
BZ CANWT
|
||
|
||
; LDI AR5,R0 ;if no decrement -> DONT
|
||
; BNZ CANWT
|
||
|
||
LDI @_countdown,R0
|
||
DEC R0
|
||
STI R0,@_countdown
|
||
LDI 15,AR6 ;wait at least 15 frames to continue
|
||
CANWT
|
||
|
||
.bss miniidle,1
|
||
LDI @miniidle,R0
|
||
INC R0
|
||
CMPI 25,R0
|
||
LDIGE 0,R0
|
||
STI R0,@miniidle
|
||
SLEEP 1
|
||
LDI @_countdown,R0
|
||
BNZ INSMORE_LP
|
||
CLRI AR6
|
||
BU RETURNTOPLYR
|
||
|
||
CHECKHIT
|
||
LDI @START_HIT,R0
|
||
BZ TOSLP
|
||
|
||
|
||
;Secret Button Combo!!
|
||
;
|
||
;if the plyr holds all the view buttons and radio as he
|
||
;hits the start button, he gets to CRUISE the USA
|
||
;-ELP August 11,1994
|
||
;
|
||
LDI @SWITCHBUTS,R0
|
||
LDIL (SW_RADIO|SW_VIEW0|SW_VIEW1|SW_VIEW2),R1
|
||
AND R1,R0
|
||
CMPI R1,R0
|
||
BNE NOSECRET_CRUISE
|
||
|
||
LDI RM_USA,R0
|
||
STI R0,@RACE_MODE
|
||
NOSECRET_CRUISE
|
||
|
||
LDI 0,R2
|
||
LDI AUD_BCREDITS,AR2
|
||
CALL AUDIT_WRITE
|
||
|
||
|
||
|
||
READAUD AUD_CREDITS
|
||
CALL GET_CREDITS_TO_CONTINUE
|
||
SUBI R1,R0
|
||
|
||
|
||
; DEC R0
|
||
LDILT 0,R0
|
||
LDI R0,R2
|
||
SETAUD AUD_CREDITS
|
||
|
||
|
||
LDI @_MODE,R0
|
||
ANDN MMODE,R0
|
||
OR MGAME,R0
|
||
STI R0,@_MODE
|
||
|
||
LDI 1,R0
|
||
STI R0,@STOPWATCH_CNTL
|
||
|
||
LDI 60,R0
|
||
STI R0,@_countdown
|
||
LDI 1,AR6
|
||
|
||
LDI @BUTTON_STATUS,R0
|
||
ANDN BUT_START,R0
|
||
STI R0,@BUTTON_STATUS
|
||
|
||
INCAUD AUD_NUM_BUYINS
|
||
|
||
RETURNTOPLYR
|
||
LDI @SAVEDMODE,R0
|
||
STI R0,@_MODE
|
||
|
||
LDI 034h,R0
|
||
LDI -1,R1
|
||
CALL PRC_KILLALL
|
||
CALL TEXT_INIT
|
||
CALL RESUME_TUNE_NT
|
||
|
||
CLRF R0
|
||
STPF R0,@GAME_TIMER
|
||
RETP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*PLACE THE COUNTDOWN TIMER
|
||
*
|
||
*
|
||
COIN_CNTDOWN:
|
||
LDI @_countdown,R4
|
||
|
||
COIN_CNTDOWN_LP
|
||
LDI @_countdown,R2
|
||
LDI @COUNTDOWN_BUFI,AR2
|
||
CALL _itoa
|
||
FLOAT 256,R2
|
||
FLOAT 270,R3
|
||
LDI 1,RC
|
||
CALL TEXT_ADD
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
CALL SETN43FONT
|
||
.globl lgnum43_coolyelo
|
||
LDL lgnum43_coolyelo,AR2
|
||
CALL PAL_FIND_RAW
|
||
STI R0,*+AR0(TEXT_PAL)
|
||
SLEEP 1
|
||
BU COIN_CNTDOWN_LP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
.bss DIRTY_SHARED,1
|
||
LOAD_SHARED:
|
||
CLRI R0
|
||
STI R0,@DIRTY_SHARED
|
||
|
||
LDL _SECshared,AR2
|
||
CALL LOAD_SECTION_REQ
|
||
|
||
LDI bottom_gtmp_p,R0 ;ONE TO OVERWRITE
|
||
LDI R0,R1 ;WHAT TO OVERWRITE IT WITH
|
||
CALL PAL_OVERWRITE
|
||
|
||
LDI bottom2_gtmp_p,R0
|
||
LDI R0,R1
|
||
CALL PAL_OVERWRITE
|
||
|
||
LDI shldr2_gtmp_p,R0
|
||
LDI R0,R1
|
||
CALL PAL_OVERWRITE
|
||
RETS
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
.include light.pal
|
||
TRAFFIC_LIGHT:
|
||
SLEEP 20
|
||
LDL TRAFFIC_LL,AR5
|
||
TLT_LP
|
||
|
||
LDI light_p,AR2
|
||
CALL PAL_FIND
|
||
BNC NSSD
|
||
BR SUICIDE
|
||
NSSD
|
||
|
||
LDI *AR5++,AR2
|
||
CMPI -1,AR2
|
||
BNE CCC
|
||
LDL TRAFFIC_LL,AR5
|
||
LDI *AR5++,AR2
|
||
CCC
|
||
LDI R0,R2
|
||
LDIL 8000000Ah,R3 ;16
|
||
CALL PAL_SET
|
||
LDI *AR5++,AR2
|
||
CALL SLEEP
|
||
BU TLT_LP
|
||
|
||
TRAFFIC_LL .word light_yellowon,10,light_redon,32,light_greenon,32,-1
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
CPOINT_LIGHT:
|
||
LDI @RGBTAB_CPI,AR4
|
||
INC AR4
|
||
|
||
LDI checks_p,AR2
|
||
CALL PAL_FIND
|
||
BNC SDASDFA
|
||
BR SUICIDE
|
||
SDASDFA
|
||
LDI R0,AR6
|
||
CPL_LP
|
||
|
||
LDI AR4,AR2
|
||
LDI AR6,R2
|
||
ADDI 251,R2
|
||
LDI 5,R3
|
||
CALL PAL_SET
|
||
|
||
|
||
LDI *++AR4(5),R0
|
||
BNN CNT
|
||
LDI @RGBTAB_CPI,AR4
|
||
CNT
|
||
|
||
LDI *AR4++,AR2
|
||
CALL SLEEP
|
||
B CPL_LP
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
RGBTAB_CPI .word RGBTAB_CP
|
||
|
||
RGBTAB_CP
|
||
|
||
.word 4
|
||
RGB 212,212,0
|
||
RGB 212,212,0
|
||
RGB 212,212,0
|
||
.word 0,0
|
||
.word 2
|
||
|
||
RGB 255,255,0
|
||
RGB 255,255,0
|
||
RGB 255,255,0
|
||
.word 0,0
|
||
.word 4
|
||
|
||
.word 0,0,0
|
||
RGB 212,212,0
|
||
RGB 212,212,0
|
||
.word 2
|
||
|
||
.word 0,0,0
|
||
RGB 255,255,0
|
||
RGB 255,255,0
|
||
.word -1
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
*----------------------------------------------------------------------------
|
||
*
|
||
*
|
||
*
|
||
*
|
||
SHOW_RACE_NAME:
|
||
LDI @BONUS_WAVE,AR2
|
||
ADDI @LEG_NAMESI,AR2
|
||
LDI *AR2,AR2
|
||
FLOAT 256,R2
|
||
FLOAT 360,R3
|
||
LDI 340,RC
|
||
CALL TEXT_ADDDS
|
||
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
|
||
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
|
||
|
||
LDI AR0,AR4
|
||
LDI AR1,AR5
|
||
|
||
|
||
|
||
FLOAT -100,R6
|
||
LDI 20,AR6
|
||
SLLP1 FLOAT 256,R0
|
||
SUBF R6,R0
|
||
MPYF 0.2,R0
|
||
ADDF R0,R6
|
||
STF R6,*+AR5(TEXT_POSX)
|
||
LDF R6,R0
|
||
ADDF 3,R0
|
||
STF R0,*+AR4(TEXT_POSX)
|
||
|
||
SLEEP 1
|
||
DBU AR6,SLLP1
|
||
|
||
|
||
;CENTER IT
|
||
;
|
||
FLOAT 256,R6
|
||
STF R6,*+AR5(TEXT_POSX)
|
||
LDF R6,R0
|
||
ADDF 3,R0
|
||
STF R0,*+AR4(TEXT_POSX)
|
||
|
||
SLEEP 50
|
||
|
||
|
||
LDI 20,AR6
|
||
SLLP1A FLOAT -100,R0
|
||
SUBF R6,R0
|
||
MPYF 0.2,R0
|
||
ADDF R0,R6
|
||
STF R6,*+AR5(TEXT_POSX)
|
||
LDF R6,R0
|
||
ADDF 3,R0
|
||
STF R0,*+AR4(TEXT_POSX)
|
||
|
||
SLEEP 1
|
||
DBU AR6,SLLP1A
|
||
DIE
|
||
*----------------------------------------------------------------------------
|
||
|
||
|
||
;*----------------------------------------------------------------------------
|
||
;SKYPALSI .word SKYPALS
|
||
; romdata
|
||
; .include sky.pal
|
||
;SKYPALS .word sky1_dusk,sky1_dark,sky1_dred
|
||
; .word sky1_az,sky1_genorg,sky1_dblue
|
||
; .text
|
||
;
|
||
;*
|
||
;*
|
||
;* AR2 PARAMETERS
|
||
;*
|
||
; .globl SETSKYPAL
|
||
;SETSKYPAL:
|
||
;
|
||
; LDI sky1_p,AR2
|
||
; CALL PAL_FIND
|
||
; LDI R0,R2
|
||
;
|
||
; LDI 1,AR2
|
||
; ADDI @SKYPALSI,AR2
|
||
; LDI *AR2,AR2
|
||
; LDI *AR2++,R3
|
||
; CALL PAL_SET
|
||
; RETS
|
||
;*----------------------------------------------------------------------------
|
||
.END
|