1594 lines
23 KiB
NASM
Executable File
1594 lines
23 KiB
NASM
Executable File
.FILE "MAP.ASM"
|
|
*----------------------------------------------------------------------------
|
|
*OVERHEAD MAP
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
|
|
.include MACS.EQU
|
|
.include OBJ.EQU
|
|
.include MPROC.EQU
|
|
.include VUNIT.EQU
|
|
.include SYSID.EQU
|
|
.include SYS.EQU
|
|
.include GLOBALS.EQU
|
|
.include SNDTAB.EQU
|
|
.include PALL.EQU
|
|
.include OBJECTS.EQU
|
|
.include TEXT.EQU
|
|
.include H2HOBJ.EQU
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
MAP_ITERATIONS .set 30
|
|
|
|
|
|
;INITIAL THETAs
|
|
M1ST .set -HALFPI
|
|
M2ST .set HALFPI
|
|
M3ST .set -HALFPI
|
|
M4ST .set HALFPI
|
|
|
|
;THETA DELTAs
|
|
M1STD .set 0.052359877 ;HALFPI/30
|
|
M2STD .set -0.052359877 ;-HALFPI/30
|
|
M3STD .set 0.052359877 ;HALFPI/30
|
|
M4STD .set -0.052359877 ;-HALFPI/30
|
|
|
|
M1STDI
|
|
M3STDI .float M1STD
|
|
|
|
M2STDI
|
|
M4STDI .float M2STD
|
|
|
|
|
|
;PROCESS DATA DEFINEs
|
|
MAP1OBJ .set PDATA+0
|
|
MAP2OBJ .set PDATA+1
|
|
MAP3OBJ .set PDATA+2
|
|
MAP4OBJ .set PDATA+3
|
|
|
|
MAPLPX .set PDATA+4 ;MAP LEAD POSITION X
|
|
MAPLPY .set PDATA+5 ;MAP LEAD POSITION Y
|
|
MAPLPZ .set PDATA+6 ;MAP LEAD POSITION Z
|
|
|
|
MAP1T .set PDATA+7 ;MAP 1 THETA
|
|
MAP2T .set PDATA+8 ;MAP 2 THETA
|
|
MAP3T .set PDATA+9 ;MAP 3 THETA
|
|
MAP4T .set PDATA+10;MAP 4 THETA
|
|
|
|
MAPLTX .set PDATA+11 ;MAP LEAD THETA
|
|
MAPLMAT .set PDATA+12 ;MAP LEAD MATRIX
|
|
MAPLMATEND .set PDATA+20
|
|
|
|
MAPXD .set PDATA+21
|
|
MAPYD .set PDATA+22
|
|
|
|
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
UNFOLDMAP:
|
|
CALL MAPPAL_ILLUM_INIT
|
|
UNFOLDMAP_NOPAL:
|
|
LDIL O_3DROT,R6
|
|
OR O_NOUROT|O_NOUNIV,R6
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
LDI R0,AR3
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
LDI R0,AR4
|
|
|
|
|
|
LDL map1,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP1OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR3,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map2,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP2OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR4,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map3,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP3OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR3,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map4,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP4OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR4,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDF M1ST,R0
|
|
STF R0,*+AR7(MAP1T)
|
|
LDF M2ST,R0
|
|
STF R0,*+AR7(MAP2T)
|
|
LDF M3ST,R0
|
|
STF R0,*+AR7(MAP3T)
|
|
LDF M4ST,R0
|
|
STF R0,*+AR7(MAP4T)
|
|
|
|
CLRF R0
|
|
STF R0,*+AR7(MAPLPX)
|
|
STF R0,*+AR7(MAPLPY)
|
|
FLOAT 3368,R0 ;368
|
|
STF R0,*+AR7(MAPLPZ)
|
|
|
|
LDF HALFPI,R2
|
|
STF R2,*+AR7(MAPLTX)
|
|
LDI AR7,AR2
|
|
ADDI MAPLMAT,AR2
|
|
CALL FIND_XMATRIX
|
|
|
|
|
|
LDF 0.2,R0
|
|
STF R0,@MAPPAL24
|
|
LDF 0.6,R0
|
|
STF R0,@MAPPAL13
|
|
|
|
|
|
LDI MAP_ITERATIONS-1,AR5
|
|
UNFOLD_LP
|
|
; CALL MAP_ILLUM_COMPUTE
|
|
|
|
|
|
LDF @MAPPAL24,R0
|
|
ADDF 0.0266,R0
|
|
STF R0,@MAPPAL24
|
|
LDF @MAPPAL13,R0
|
|
ADDF 0.0133,R0
|
|
STF R0,@MAPPAL13
|
|
CALL MAPPAL_ILLUM
|
|
|
|
|
|
LDF *+AR7(MAPLPZ),R0
|
|
FLOAT 368,R1
|
|
SUBF R0,R1
|
|
MPYF 0.25,R1
|
|
ADDF R1,R0
|
|
|
|
FLOAT 368,R1
|
|
CMPI 0,AR5
|
|
LDFEQ R1,R0
|
|
STF R0,*+AR7(MAPLPZ)
|
|
|
|
|
|
LDF *+AR7(MAPLTX),R2
|
|
MPYF 0.9,R2
|
|
|
|
CLRF R1
|
|
CMPI 0,AR5
|
|
LDFEQ R1,R2
|
|
STF R2,*+AR7(MAPLTX)
|
|
LDI AR7,AR2
|
|
ADDI MAPLMAT,AR2
|
|
CALL FIND_XMATRIX
|
|
|
|
|
|
|
|
LDI *+AR7(MAP2OBJ),AR4
|
|
LDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
LDF *+AR7(MAP2T),R2
|
|
ADDF @M2STDI,R2
|
|
STF R2,*+AR7(MAP2T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
LDI *+AR7(MAP3OBJ),AR4
|
|
LDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
LDF *+AR7(MAP3T),R2
|
|
ADDF @M3STDI,R2
|
|
STF R2,*+AR7(MAP3T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
|
|
LDF *+AR7(MAP2T),R2
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
LDI *+AR7(MAP1OBJ),AR4
|
|
CALL CLR_VECTORA
|
|
FLOAT -127,R0
|
|
STF R0,*+AR2(X)
|
|
LDI @MATRIXAI,R2
|
|
LDI AR4,R3
|
|
ADDI OPOSX,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSZ),R0
|
|
ADDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
|
|
LDF *+AR7(MAP1T),R2
|
|
ADDF @M1STDI,R2
|
|
STF R2,*+AR7(MAP1T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
LDF *+AR7(MAP3T),R2
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
LDI *+AR7(MAP4OBJ),AR4
|
|
CALL CLR_VECTORA
|
|
FLOAT 128,R0
|
|
STF R0,*+AR2(X)
|
|
LDI @MATRIXAI,R2
|
|
LDI AR4,R3
|
|
ADDI OPOSX,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSZ),R0
|
|
ADDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
|
|
LDF *+AR7(MAP4T),R2
|
|
ADDF @M4STDI,R2
|
|
STF R2,*+AR7(MAP4T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
SLEEP 1
|
|
DBU AR5,UNFOLD_LP
|
|
|
|
;
|
|
; LDF 1.0,R0
|
|
; STF R0,@MAPPAL24
|
|
; STF R0,@MAPPAL13
|
|
; CALL MAPPAL_ILLUM
|
|
;
|
|
;
|
|
; LDI 15,AR5
|
|
;LU76 LDF @MAPPAL13,R0
|
|
; SUBRF 1.0,R0
|
|
; MPYF 0.1,R0
|
|
; ADDF @MAPPAL13,R0
|
|
; STF R0,@MAPPAL13
|
|
;
|
|
; LDF @MAPPAL24,R0
|
|
; SUBRF 1.0,R0
|
|
; MPYF 0.1,R0
|
|
; ADDF @MAPPAL24,R0
|
|
; STF R0,@MAPPAL24
|
|
;
|
|
; CALL MAPPAL_ILLUM
|
|
;
|
|
; SLEEP 1
|
|
; DBU AR5,LU76
|
|
;
|
|
|
|
LDI map1_p,R0 ;ONE TO OVERWRITE
|
|
LDI map1_p,R1 ;WHAT TO OVERWRITE IT WITH
|
|
CALL PAL_OVERWRITE
|
|
|
|
LDI *+AR7(MAP1OBJ),AR0
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
|
|
LDI *+AR7(MAP2OBJ),AR0
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
|
|
LDI *+AR7(MAP3OBJ),AR0
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
|
|
LDI *+AR7(MAP4OBJ),AR0
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
FOLDMAP:
|
|
SONDFX WIPE4
|
|
|
|
*ELP CHANGE
|
|
CALL MAPPAL_ILLUM_INIT
|
|
*ELP END CHANGE
|
|
|
|
|
|
|
|
LDIL O_3DROT,R6
|
|
OR O_NOUROT|O_NOUNIV,R6
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI R0,AR3
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI R0,AR4
|
|
|
|
|
|
LDL map1,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP1OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR3,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map2,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP2OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR4,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map3,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP3OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR3,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
LDL map4,AR2
|
|
CALL OBJ_GETE
|
|
STI AR0,*+AR7(MAP4OBJ)
|
|
LDI R6,R0
|
|
OR *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI AR4,*+AR0(OPAL)
|
|
STI R0,*+AR0(OFLAGS)
|
|
LDI AR0,AR2
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
CLRF R0
|
|
STF R0,*+AR7(MAP1T)
|
|
STF R0,*+AR7(MAP2T)
|
|
STF R0,*+AR7(MAP3T)
|
|
STF R0,*+AR7(MAP4T)
|
|
|
|
CLRF R0
|
|
STF R0,*+AR7(MAPLPX)
|
|
STF R0,*+AR7(MAPLPY)
|
|
FLOAT 368,R0 ;368
|
|
STF R0,*+AR7(MAPLPZ)
|
|
|
|
CLRF R2
|
|
STF R2,*+AR7(MAPLTX)
|
|
LDI AR7,AR2
|
|
ADDI MAPLMAT,AR2
|
|
CALL FIND_XMATRIX
|
|
|
|
|
|
LDF 1,R0
|
|
STF R0,*+AR7(MAPXD)
|
|
STF R0,*+AR7(MAPYD)
|
|
|
|
|
|
LDI MAP_ITERATIONS-1,AR5
|
|
FOLD_LP
|
|
CALL MAP_ILLUM_COMPUTE
|
|
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
|
|
|
|
|
|
LDF *+AR7(MAPXD),R1
|
|
MPYF 1.20,R1
|
|
STF R1,*+AR7(MAPXD)
|
|
LDF *+AR7(MAPLPX),R0
|
|
ADDF R1,R0
|
|
STF R0,*+AR7(MAPLPX)
|
|
|
|
LDF *+AR7(MAPYD),R1
|
|
MPYF 1.2,R1
|
|
STF R1,*+AR7(MAPYD)
|
|
LDF *+AR7(MAPLPY),R0
|
|
SUBF R1,R0
|
|
STF R0,*+AR7(MAPLPY)
|
|
|
|
|
|
LDF *+AR7(MAPLPZ),R0
|
|
FLOAT 3368,R1
|
|
SUBF R0,R1
|
|
MPYF 0.05,R1
|
|
ADDF R1,R0
|
|
|
|
FLOAT 3368,R1
|
|
CMPI 0,AR5
|
|
LDFEQ R1,R0
|
|
STF R0,*+AR7(MAPLPZ)
|
|
|
|
|
|
|
|
|
|
LDF *+AR7(MAPLTX),R2
|
|
|
|
LDF HALFPI,R0
|
|
SUBF R2,R0
|
|
MPYF 0.1,R0
|
|
ADDF R0,R2
|
|
|
|
LDF HALFPI,R1
|
|
CMPI 0,AR5
|
|
LDFEQ R1,R2
|
|
STF R2,*+AR7(MAPLTX)
|
|
LDI AR7,AR2
|
|
ADDI MAPLMAT,AR2
|
|
CALL FIND_XMATRIX
|
|
|
|
|
|
|
|
|
|
|
|
LDI *+AR7(MAP2OBJ),AR4
|
|
LDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
LDF *+AR7(MAP2T),R2
|
|
SUBF @M2STDI,R2
|
|
STF R2,*+AR7(MAP2T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
; OBJECT 2
|
|
;----------------------------------------------------------------------
|
|
|
|
|
|
LDI *+AR7(MAP3OBJ),AR4
|
|
LDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
LDF *+AR7(MAP3T),R2
|
|
SUBF @M3STDI,R2
|
|
STF R2,*+AR7(MAP3T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
; OBJECT 3
|
|
;----------------------------------------------------------------------
|
|
|
|
|
|
|
|
LDF *+AR7(MAP2T),R2 ;MATRIX FOR TRANSLATION
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
LDI *+AR7(MAP1OBJ),AR4
|
|
CALL CLR_VECTORA
|
|
FLOAT -127,R0
|
|
STF R0,*+AR2(X)
|
|
LDI @MATRIXAI,R2
|
|
LDI AR4,R3
|
|
ADDI OPOSX,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSZ),R0
|
|
ADDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
|
|
LDF *+AR7(MAP1T),R2
|
|
SUBF @M1STDI,R2
|
|
STF R2,*+AR7(MAP1T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
|
|
|
|
; OBJECT 1
|
|
;----------------------------------------------------------------------
|
|
|
|
|
|
LDF *+AR7(MAP3T),R2 ;MATRIX FOR TRANSLATION
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
LDI *+AR7(MAP4OBJ),AR4
|
|
CALL CLR_VECTORA
|
|
FLOAT 128,R0
|
|
STF R0,*+AR2(X)
|
|
LDI @MATRIXAI,R2
|
|
LDI AR4,R3
|
|
ADDI OPOSX,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF *+AR7(MAPLPX),R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF *+AR7(MAPLPY),R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSZ),R0
|
|
ADDF *+AR7(MAPLPZ),R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
|
|
LDF *+AR7(MAP4T),R2
|
|
SUBF @M4STDI,R2
|
|
STF R2,*+AR7(MAP4T)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
LDI AR7,R2
|
|
ADDI MAPLMAT,R2
|
|
LDI AR2,R3
|
|
CALL CONCATMAT
|
|
|
|
; OBJECT 4
|
|
;--------------------------------------------------------------------
|
|
|
|
|
|
SLEEP 1
|
|
DBU AR5,FOLD_LP
|
|
|
|
LDI *+AR7(MAP1OBJ),AR2
|
|
CALL OBJ_DELETE
|
|
LDI *+AR7(MAP2OBJ),AR2
|
|
CALL OBJ_DELETE
|
|
LDI *+AR7(MAP3OBJ),AR2
|
|
CALL OBJ_DELETE
|
|
LDI *+AR7(MAP4OBJ),AR2
|
|
CALL OBJ_DELETE
|
|
|
|
CALL CLEAR_MAP_PALS
|
|
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
.globl CLEAR_MAP_PALS
|
|
CLEAR_MAP_PALS:
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
BNC IBOIBO
|
|
LDI R0,AR2
|
|
CALL PAL_DELETE_RAW
|
|
|
|
IBOIBO
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
.if DEBUG
|
|
BNC $
|
|
.endif
|
|
RETSNC
|
|
LDI R0,AR2
|
|
CALL PAL_DELETE_RAW
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
MAPPAL_ILLUM_INIT:
|
|
|
|
LDI @EPALR,AR0 ;LOAD PALETTES AT
|
|
LDI @EPALL,AR1 ;THE SAME TIME
|
|
|
|
LDI map1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
STI R0,*AR1++
|
|
LDI R0,AR2
|
|
AND 0FFFh,AR2
|
|
RS 1,AR2
|
|
SUBI 1,AR2
|
|
L342 LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
STI R0,*AR1++
|
|
DBU AR2,L342
|
|
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_ALLOC_RAW
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_ALLOC_RAW
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
;*----------------------------------------------------------------------------
|
|
;MAPPAL_ILLUM_CLEANUP:
|
|
; PUSH R0
|
|
; PUSH AR2
|
|
; LDI @EPALR,AR2
|
|
; CALL PAL_FIND_RAW
|
|
; LDI R0,AR2
|
|
; CALL PAL_DELETE_RAW
|
|
;
|
|
; LDI @EPALL,AR2
|
|
; CALL PAL_FIND_RAW
|
|
; LDI R0,AR2
|
|
; CALL PAL_DELETE_RAW
|
|
; POP AR2
|
|
; POP R0
|
|
; RETS
|
|
;*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
FORMULA1 .float 0.318309886
|
|
MAP_ILLUM_COMPUTE:
|
|
|
|
LDF *+AR7(MAP1T),R0
|
|
ADDF HALFPI,R0
|
|
MPYF @FORMULA1,R0
|
|
SUBRF 1.0,R0
|
|
MPYF 0.7,R0
|
|
ADDF 0.3,R0
|
|
STF R0,@MAPPAL13
|
|
|
|
LDF *+AR7(MAP2T),R0
|
|
ADDF HALFPI,R0
|
|
MPYF @FORMULA1,R0
|
|
SUBRF 1.0,R0
|
|
MPYF 0.7,R0
|
|
ADDF 0.3,R0
|
|
STF R0,@MAPPAL24
|
|
|
|
CALL MAPPAL_ILLUM
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
.bss MAPPAL13,1 ;FL multiplier
|
|
.bss MAPPAL24,1 ;FL multiplier
|
|
MAPPAL_ILLUM:
|
|
PUSH AR0
|
|
PUSH AR1
|
|
PUSH AR2
|
|
PUSH AR3
|
|
PUSH AR4
|
|
PUSH AR5
|
|
|
|
PUSH R0
|
|
PUSH R1
|
|
PUSH R2
|
|
PUSH R3
|
|
PUSH R4
|
|
PUSH R5
|
|
PUSHFL R6
|
|
|
|
|
|
LDF @MAPPAL13,R6 ;1st multiplier
|
|
|
|
LDI @EPALL,AR0
|
|
|
|
LDI map1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
|
|
LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
LDI R0,AR5
|
|
LS 1,AR5
|
|
RS 2,AR5
|
|
L894
|
|
LDI *AR3++,R4 ;get src2 (TRUE)
|
|
LDI R4,R0
|
|
AND 01Fh,R0
|
|
LS 3,R0
|
|
FLOAT R0
|
|
MPYF R6,R0
|
|
FIX R0
|
|
RS 3,R0
|
|
AND 01Fh,R0
|
|
|
|
LDI R4,R1
|
|
RS 5,R1
|
|
AND 01Fh,R1
|
|
LS 3,R1
|
|
FLOAT R1
|
|
MPYF R6,R1
|
|
FIX R1
|
|
RS 3,R1
|
|
AND 01Fh,R1
|
|
LS 5,R1
|
|
OR R1,R0
|
|
|
|
LDI R4,R1
|
|
RS 10,R1
|
|
AND 01Fh,R1
|
|
LS 3,R1
|
|
FLOAT R1
|
|
MPYF R6,R1
|
|
FIX R1
|
|
RS 3,R1
|
|
AND 01Fh,R1
|
|
LS 10,R1
|
|
OR R1,R0
|
|
|
|
;second word
|
|
;
|
|
RS 16,R4
|
|
|
|
LDI R4,R2
|
|
AND 01Fh,R2
|
|
LS 3,R2
|
|
FLOAT R2
|
|
MPYF R6,R2
|
|
FIX R2
|
|
RS 3,R2
|
|
AND 01Fh,R2
|
|
|
|
LDI R4,R3
|
|
RS 5,R3
|
|
AND 01Fh,R3
|
|
LS 3,R3
|
|
FLOAT R3
|
|
MPYF R6,R3
|
|
FIX R3
|
|
RS 3,R3
|
|
AND 01Fh,R3
|
|
LS 5,R3
|
|
OR R3,R2
|
|
|
|
LDI R4,R3
|
|
RS 10,R3
|
|
AND 01Fh,R3
|
|
LS 3,R3
|
|
FLOAT R3
|
|
MPYF R6,R3
|
|
FIX R3
|
|
RS 3,R3
|
|
AND 01Fh,R3
|
|
LS 10,R3
|
|
OR R3,R2
|
|
|
|
LS 16,R2
|
|
OR R2,R0
|
|
STI R0,*AR0++
|
|
DBU AR5,L894
|
|
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
CMPI -1,R0
|
|
BEQ JAJA4
|
|
LDI *AR2++,R3
|
|
LDI R0,R2
|
|
CALL PAL_SET
|
|
JAJA4
|
|
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
|
|
|
|
LDF @MAPPAL24,R6 ;2nd multiplier
|
|
LDI @EPALR,AR0
|
|
|
|
LDI map1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
|
|
LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
LDI R0,AR5
|
|
LS 1,AR5
|
|
RS 2,AR5
|
|
L894D
|
|
LDI *AR3++,R4 ;get src2 (TRUE)
|
|
LDI R4,R0
|
|
AND 01Fh,R0
|
|
LS 3,R0
|
|
FLOAT R0
|
|
MPYF R6,R0
|
|
FIX R0
|
|
RS 3,R0
|
|
AND 01Fh,R0
|
|
|
|
LDI R4,R1
|
|
RS 5,R1
|
|
AND 01Fh,R1
|
|
LS 3,R1
|
|
FLOAT R1
|
|
MPYF R6,R1
|
|
FIX R1
|
|
RS 3,R1
|
|
AND 01Fh,R1
|
|
LS 5,R1
|
|
OR R1,R0
|
|
|
|
LDI R4,R1
|
|
RS 10,R1
|
|
AND 01Fh,R1
|
|
LS 3,R1
|
|
FLOAT R1
|
|
MPYF R6,R1
|
|
FIX R1
|
|
RS 3,R1
|
|
AND 01Fh,R1
|
|
LS 10,R1
|
|
OR R1,R0
|
|
|
|
;second word
|
|
;
|
|
RS 16,R4
|
|
|
|
LDI R4,R2
|
|
AND 01Fh,R2
|
|
LS 3,R2
|
|
FLOAT R2
|
|
MPYF R6,R2
|
|
FIX R2
|
|
RS 3,R2
|
|
AND 01Fh,R2
|
|
|
|
LDI R4,R3
|
|
RS 5,R3
|
|
AND 01Fh,R3
|
|
LS 3,R3
|
|
FLOAT R3
|
|
MPYF R6,R3
|
|
FIX R3
|
|
RS 3,R3
|
|
AND 01Fh,R3
|
|
LS 5,R3
|
|
OR R3,R2
|
|
|
|
LDI R4,R3
|
|
RS 10,R3
|
|
AND 01Fh,R3
|
|
LS 3,R3
|
|
FLOAT R3
|
|
MPYF R6,R3
|
|
FIX R3
|
|
RS 3,R3
|
|
AND 01Fh,R3
|
|
LS 10,R3
|
|
OR R3,R2
|
|
|
|
LS 16,R2
|
|
OR R2,R0
|
|
STI R0,*AR0++
|
|
DBU AR5,L894D
|
|
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
CMPI -1,R0
|
|
BEQ JAJA5
|
|
LDI *AR2++,R3
|
|
LDI R0,R2
|
|
CALL PAL_SET
|
|
JAJA5
|
|
|
|
POPFL R6
|
|
POP R5
|
|
POP R4
|
|
POP R3
|
|
POP R2
|
|
POP R1
|
|
POP R0
|
|
|
|
POP AR5
|
|
POP AR4
|
|
POP AR3
|
|
POP AR2
|
|
POP AR1
|
|
POP AR0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.bss STOPWATCH,1 ;the counter
|
|
.bss STOPWATCH_CNTL,1 ;the controller 0 = stop, 1 = go
|
|
|
|
COLONI .word COLON
|
|
COLON .string ":",0
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*RETURNS
|
|
* AR2 POINTING TO LAP BUFFER
|
|
*
|
|
lap_bufferI .word lap_buffer
|
|
tmp_bufferI .word tmp_buffer
|
|
.bss lap_buffer,4
|
|
.bss tmp_buffer,2
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*TIME2STR CONVERT TIME CODE TO STRING
|
|
*
|
|
*
|
|
*PARAMETERS
|
|
* R0 TIME (IN 1/60 SECONDS)
|
|
* AR2 STRING SPACE
|
|
*
|
|
TIME2STR:
|
|
PUSH R0
|
|
PUSH R1
|
|
PUSH R2
|
|
PUSH AR0
|
|
PUSH AR1
|
|
PUSH AR2
|
|
|
|
CALL CVTTIME
|
|
|
|
PUSH R0
|
|
PUSH R1
|
|
CALL _itoa
|
|
|
|
LDI AR2,AR0
|
|
LDI @COLONI,AR1
|
|
CALL STRCAT
|
|
|
|
POP R2
|
|
LDI @tmp_bufferI,AR2
|
|
CALL _itoaLZ
|
|
|
|
LDI AR2,AR1
|
|
CALL STRCAT
|
|
|
|
LDI @COLONI,AR1
|
|
CALL STRCAT
|
|
|
|
POP R2
|
|
LDI @tmp_bufferI,AR2
|
|
CALL _itoaLZ
|
|
LDI AR2,AR1
|
|
CALL STRCAT
|
|
|
|
LDI AR0,AR2
|
|
|
|
POP AR2
|
|
POP AR1
|
|
POP AR0
|
|
POP R2
|
|
POP R1
|
|
POP R0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*CVTTIME CVT TIMECODE TO COMPONENTS
|
|
*
|
|
*PARAMETERS
|
|
* R0
|
|
*
|
|
*RETURNS
|
|
* R0 (INT) HUNDERTHS
|
|
* R1 (INT) SECONDS
|
|
* R2 (INT) MINUTES
|
|
*
|
|
MINFACT .FLOAT 0.000303030303 ;1/(55*60)
|
|
SECFACT .FLOAT 0.018181818 ;1/55
|
|
HUNFACT .FLOAT 1.818181818 ;100/55
|
|
|
|
CVTTIME:
|
|
PUSH R3
|
|
PUSHF R3
|
|
|
|
FLOAT R0,R3
|
|
MPYF @MINFACT,R3
|
|
FIX R3,R3
|
|
CEILI 99,R3
|
|
FLOORI 0,R3
|
|
LDI R3,R2 ;MINUTES
|
|
MPYI 3300,R3
|
|
SUBI R3,R0
|
|
LDILT 0,R0
|
|
|
|
FLOAT R0,R3
|
|
MPYF @SECFACT,R3
|
|
FIX R3,R3
|
|
CEILI 59,R3
|
|
FLOORI 0,R3
|
|
LDI R3,R1 ;SECONDS
|
|
MPYI 55,R3
|
|
SUBI R3,R0
|
|
LDILT 0,R0
|
|
|
|
FLOAT R0,R3
|
|
MPYF @HUNFACT,R3
|
|
FIX R3,R0 ;HUNDRETHS
|
|
|
|
CEILI 99,R0
|
|
FLOORI 0,R0
|
|
|
|
POPF R3
|
|
POP R3
|
|
RETS
|
|
|
|
|
|
;*THIS CHECKS CVTTIME FOR MONOTONICITY
|
|
;CHEK
|
|
; LDI 0,R5
|
|
; LDI -1,R4
|
|
;CKLP
|
|
; LDI R5,R0
|
|
; CALL CVTTIME
|
|
; MPYI 100,R1
|
|
; MPYI 6000,R2
|
|
; ADDI R0,R1
|
|
; ADDI R1,R2
|
|
; CMPI R2,R4
|
|
; BGE $
|
|
; LDI R2,R4
|
|
; ADDI 1,R5
|
|
; CMPI 32000,R5
|
|
; BLT CKLP
|
|
; B $
|
|
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
RADAR_XMIN .set 460
|
|
RADAR_XMAX .set 500
|
|
RADAR_XCNTR .set ((RADAR_XMAX-RADAR_XMIN)/2)+RADAR_XMIN
|
|
|
|
RADAR_YMIN .set 100
|
|
RADAR_YMAX .set 200
|
|
RADAR_YCNTR .set ((RADAR_YMAX-RADAR_YMIN)/2)+RADAR_YMIN
|
|
|
|
|
|
BLIPSIZE_X .set 4
|
|
BLIPSIZE_Y .set 4
|
|
|
|
BLIPSIZE_XH .set 2
|
|
BLIPSIZE_YH .set 2
|
|
|
|
|
|
.bss THIS_MACHINE_AHEAD,1
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
RADAR_PLOT:
|
|
PUSH AR4
|
|
LDI @PLYCAR,AR4
|
|
|
|
;background
|
|
LDI CC|DITHER|8,R0
|
|
STI R0,@_ACNTL
|
|
|
|
LDI RADAR_XMIN,R0
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(0*3))
|
|
STI R0,@(_ARPS+(3*3))
|
|
|
|
LDI RADAR_XMAX,R0
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(1*3))
|
|
STI R0,@(_ARPS+(2*3))
|
|
|
|
LDI RADAR_YMIN,R0
|
|
STI R0,@(_ARPS+(0*3)+1)
|
|
STI R0,@(_ARPS+(1*3)+1)
|
|
|
|
LDI RADAR_YMAX,R0
|
|
STI R0,@(_ARPS+(3*3)+1)
|
|
STI R0,@(_ARPS+(2*3)+1)
|
|
CLRI R0
|
|
STI R0,@_ADDRL
|
|
|
|
CLRI R0
|
|
STI R0,@_ACMAP
|
|
CALL _stuff_fpga
|
|
|
|
|
|
LDP @(_CAMERARAD+Y)
|
|
LDF @(_CAMERARAD+Y),R2
|
|
SETDP
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
|
|
|
|
LDI @CAR_LISTI,AR0
|
|
SUBI OLINK3,AR0
|
|
RADAR_LP
|
|
LDI *+AR0(OLINK3),R0
|
|
BEQ RADAR_X
|
|
|
|
LDI R0,AR0
|
|
|
|
LDI CC|3,R0 ;red (RACER)
|
|
|
|
LDI *+AR0(OID),R1
|
|
CMPI DRONE_C|VEHICLE_T|DRNE_RACER,R1
|
|
LDINE CC|0Ch,R0 ;light gray (general racer)
|
|
STI R0,@_ACNTL
|
|
|
|
CALL CLR_VECTORA
|
|
|
|
LDF *+AR0(OPOSX),R0
|
|
SUBF *+AR4(OPOSX),R0
|
|
LDLF 0.003,R1
|
|
MPYF R1,R0
|
|
STF R0,*+AR2(X)
|
|
|
|
LDF *+AR0(OPOSZ),R0
|
|
SUBF *+AR4(OPOSZ),R0
|
|
LDLF 0.003,R1
|
|
MPYF R1,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
LDI @MATRIXAI,R2
|
|
LDI AR2,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR2(X),R0
|
|
FIX R0
|
|
ADDI RADAR_XCNTR-2,R0
|
|
|
|
|
|
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
LDI @HEAD2HEAD_ON,R2 ;are we playing HEAD2HEAD?
|
|
BZ NOTTHEOPLYR
|
|
CMPI @PLY2CAR,AR0 ;is this the other PLAYER?
|
|
BNE NOTTHEOPLYR
|
|
|
|
CLRI R6
|
|
|
|
|
|
CMPI RADAR_XMIN,R0
|
|
LDILT RADAR_XMIN,R0
|
|
LDILT 1,R6
|
|
CMPI RADAR_XMAX,R0
|
|
LDIGT RADAR_XMAX,R0
|
|
LDIGT 1,R6
|
|
|
|
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(0*3))
|
|
STI R0,@(_ARPS+(3*3))
|
|
|
|
ADDI 3,R0
|
|
STI R0,@(_ARPS+(1*3))
|
|
STI R0,@(_ARPS+(2*3))
|
|
|
|
LDF *+AR2(Z),R0
|
|
MPYF 0.3,R0
|
|
FIX R0
|
|
|
|
NEGI R0
|
|
ADDI RADAR_YCNTR-2,R0
|
|
|
|
|
|
CMPI RADAR_YMIN,R0
|
|
LDILT RADAR_YMIN,R0
|
|
LDILT 1,R6
|
|
CMPI RADAR_YMAX,R0
|
|
LDIGT RADAR_YMAX,R0
|
|
LDIGT 1,R6
|
|
|
|
|
|
STI R0,@(_ARPS+(0*3)+1)
|
|
STI R0,@(_ARPS+(1*3)+1)
|
|
|
|
ADDI 3,R0
|
|
STI R0,@(_ARPS+(3*3)+1)
|
|
STI R0,@(_ARPS+(2*3)+1)
|
|
|
|
LDL H2HPAL1,AR2
|
|
CALL PAL_FIND_RAW
|
|
STI R0,@_ACMAP
|
|
|
|
|
|
LDI TM|ZS,R0 ;red (RACER)
|
|
STI R0,@_ACNTL
|
|
|
|
LDI @DIPRAM,R0
|
|
TSTB CMDP_MASTER,R0
|
|
BZ GL14
|
|
|
|
LDL h2p1a_I,R0
|
|
STI R0,@_ADDRL
|
|
|
|
|
|
|
|
LDI @_ARPS+(0*3)+1,R0
|
|
SUBI 16,R0
|
|
STI R0,@_ARPS+(0*3)+1
|
|
LDI @_ARPS+(1*3)+1,R0
|
|
SUBI 16,R0
|
|
STI R0,@_ARPS+(1*3)+1
|
|
|
|
LDI @_ARPS+(0*3),R0
|
|
SUBI 13,R0
|
|
STI R0,@_ARPS+(0*3)
|
|
LDI @_ARPS+(3*3),R0
|
|
SUBI 13,R0
|
|
STI R0,@_ARPS+(3*3)
|
|
|
|
|
|
|
|
|
|
LDI 00038h,R0
|
|
STI R0,@_AIVI
|
|
LDI 00041h,R0
|
|
STI R0,@_AIVI+1
|
|
LDI 00D41h,R0
|
|
STI R0,@_AIVI+2
|
|
LDI 00D38h,R0
|
|
STI R0,@_AIVI+3
|
|
|
|
|
|
|
|
BU GL15
|
|
GL14 LDL h2p2b_I,R0
|
|
STI R0,@_ADDRL
|
|
|
|
|
|
LDI @_ARPS+(0*3)+1,R0
|
|
SUBI 16,R0
|
|
STI R0,@_ARPS+(0*3)+1
|
|
LDI @_ARPS+(1*3)+1,R0
|
|
SUBI 16,R0
|
|
STI R0,@_ARPS+(1*3)+1
|
|
|
|
LDI @_ARPS+(0*3),R0
|
|
SUBI 13,R0
|
|
STI R0,@_ARPS+(0*3)
|
|
LDI @_ARPS+(3*3),R0
|
|
SUBI 13,R0
|
|
STI R0,@_ARPS+(3*3)
|
|
|
|
|
|
LDI 00041h,R0
|
|
STI R0,@_AIVI
|
|
LDI 0004Bh,R0
|
|
STI R0,@_AIVI+1
|
|
LDI 00D4Bh,R0
|
|
STI R0,@_AIVI+2
|
|
LDI 00D41h,R0
|
|
STI R0,@_AIVI+3
|
|
GL15
|
|
|
|
|
|
CMPI 0,R6
|
|
BEQ DADA4
|
|
|
|
;we have a case where the other player is either behind us
|
|
;or in front of us
|
|
;
|
|
LDI *+AR0(OCARBLK),AR1
|
|
LDI *+AR1(CAR_OM),R0
|
|
.if DEBUG
|
|
BZ $ ;debugging please remove
|
|
.endif
|
|
LDI *+AR1(CARTRACK_ID),R0
|
|
|
|
LDI @PLYCBLK,AR2
|
|
LDI *+AR2(CARTRAK),AR2
|
|
LDI *+AR2(OUSR1),R1
|
|
CMPI R1,R0
|
|
BLT ISBEHIND
|
|
; BLE ISBEHIND
|
|
|
|
; LDI RADAR_XCNTR,R0
|
|
; ADDI 9,R0
|
|
; STI R0,@_ARPS+(1*3)
|
|
; STI R0,@_ARPS+(2*3)
|
|
; SUBI 18,R0
|
|
; STI R0,@_ARPS+(0*3)
|
|
; STI R0,@_ARPS+(3*3)
|
|
|
|
LDI RADAR_YMIN,R0
|
|
ADDI 10,R0
|
|
STI R0,@_ARPS+(2*3)+1
|
|
STI R0,@_ARPS+(3*3)+1
|
|
SUBI 20,R0
|
|
STI R0,@_ARPS+(0*3)+1
|
|
STI R0,@_ARPS+(1*3)+1
|
|
BU DADA4
|
|
|
|
ISBEHIND
|
|
; LDI RADAR_XCNTR,R0
|
|
; ADDI 9,R0
|
|
; STI R0,@_ARPS+(1*3)
|
|
; STI R0,@_ARPS+(2*3)
|
|
; SUBI 18,R0
|
|
; STI R0,@_ARPS+(0*3)
|
|
; STI R0,@_ARPS+(3*3)
|
|
|
|
LDI RADAR_YMAX,R0
|
|
ADDI 10,R0
|
|
STI R0,@_ARPS+(2*3)+1
|
|
STI R0,@_ARPS+(3*3)+1
|
|
SUBI 20,R0
|
|
STI R0,@_ARPS+(0*3)+1
|
|
STI R0,@_ARPS+(1*3)+1
|
|
DADA4
|
|
|
|
CALL _stuff_fpga
|
|
CLRI R0
|
|
STI R0,@_ACMAP
|
|
BU RADAR_LP
|
|
NOTTHEOPLYR
|
|
|
|
|
|
CMPI RADAR_XMIN,R0
|
|
BLT RADAR_LP
|
|
CMPI RADAR_XMAX,R0
|
|
BGT RADAR_LP
|
|
|
|
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(0*3))
|
|
STI R0,@(_ARPS+(3*3))
|
|
|
|
ADDI 3,R0
|
|
STI R0,@(_ARPS+(1*3))
|
|
STI R0,@(_ARPS+(2*3))
|
|
|
|
LDF *+AR2(Z),R0
|
|
MPYF 0.3,R0
|
|
FIX R0
|
|
|
|
NEGI R0
|
|
ADDI RADAR_YCNTR-2,R0
|
|
|
|
|
|
CMPI RADAR_YMIN,R0
|
|
BLT RADAR_LP
|
|
CMPI RADAR_YMAX,R0
|
|
BGT RADAR_LP
|
|
|
|
STI R0,@(_ARPS+(0*3)+1)
|
|
STI R0,@(_ARPS+(1*3)+1)
|
|
|
|
ADDI 3,R0
|
|
STI R0,@(_ARPS+(3*3)+1)
|
|
STI R0,@(_ARPS+(2*3)+1)
|
|
CALL _stuff_fpga
|
|
|
|
BU RADAR_LP
|
|
|
|
RADAR_X
|
|
LDI CC|1,R0
|
|
STI R0,@_ACNTL
|
|
|
|
LDI RADAR_XCNTR-2,R0
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(0*3))
|
|
STI R0,@(_ARPS+(3*3))
|
|
|
|
LDI RADAR_XCNTR+1,R0
|
|
ADDI @MOVEIN_OFFSET,R0
|
|
STI R0,@(_ARPS+(1*3))
|
|
STI R0,@(_ARPS+(2*3))
|
|
|
|
LDI RADAR_YCNTR-2,R0
|
|
STI R0,@(_ARPS+(0*3)+1)
|
|
STI R0,@(_ARPS+(1*3)+1)
|
|
|
|
LDI RADAR_YCNTR+1,R0
|
|
STI R0,@(_ARPS+(3*3)+1)
|
|
STI R0,@(_ARPS+(2*3)+1)
|
|
CALL _stuff_fpga
|
|
|
|
POP AR4
|
|
|
|
LDI @HEAD2HEAD_ON,R0
|
|
BZ NODOAP
|
|
LDI @PLY2CAR,AR0
|
|
LDI *+AR0(OCARBLK),AR0
|
|
LDI @PLYCBLK,AR1
|
|
LDI *+AR0(CARTRACK_ID),R0
|
|
LDI *+AR1(CARTRACK_ID),R1
|
|
CMPI R0,R1
|
|
LDIGT 1,R0
|
|
LDILE 0,R0
|
|
STI R0,@THIS_MACHINE_AHEAD
|
|
|
|
NODOAP
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.END
|