Let's go cruisin'

master
teamarchive2.fnf.archive.org root 2021-04-06 21:18:34 +00:00
parent aeea6c6a60
commit 587a912f9c
166 changed files with 83248 additions and 0 deletions

397
ATTRACTA.ASM Executable file
View File

@ -0,0 +1,397 @@
.FILE "ATTRACTA.ASM"
*----------------------------------------------------------------------------
*ATTRACT MODE
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*
.include MPROC.EQU
.include MACS.EQU
.include OBJ.EQU
.include OBJECTS.EQU
.include GLOBALS.EQU
.include SYS.EQU
.include TEXT.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SNDTAB.EQU
.text
NOVANITY .set 1
*----------------------------------------------------------------------------
startthey .set 4.18894205 ;-deg(10)
startthez .set 0.087266462 ; deg(5)
CREATED_DCS .set PDATA+1
DECOMP_COUNT .set PDATA+1
*----------------------------------------------------------------------------
*AR6 is set by the creator of this routine. 0= play dcs logo sound 1=don't play
*
_MIDWAYSPIN:
LDI 0,AR6
LDI @_ATTR_MODE,R0
CMPI -2,R0
BNE NO_NINTENDO
LDI @ATTRWAVE,R0
BNE NO_NINTENDO
READADJ ADJ_ATTRACT_MODE_SOUND
CMPI 0,R0
BEQ NO_NINTENDO
READADJ ADJ_VOLUME ;make sure volume correct
LDI R0,R1
CALL SET_MASTER_VOL
;if COMM on and SLAVE then NO NINTENDO
;
LDI @DIPRAM,R0
TSTB DIP_COMMP,R0
BNZ DOMUS
TSTB CMDP_MASTER,R0
BNZ NO_NINTENDO
DOMUS
LDI 890,AR6 ;Length of sound
SOND1 NINTENDO_SND
NO_NINTENDO
CALL ULTRA_LOGO
LDI 0,R0
STI R0,*+AR7(DECOMP_COUNT)
; STI R0,*+AR7(CREATED_DCS)
LDI 0,R0
STI R0,@BGNDCOLA
LDP @_CAMERAPOS+Y
FLOAT -2780,R0
STF R0,@_CAMERAPOS+Y
SETDP
LDL midway,AR2
CALL OBJ_GETE
.if DEBUG
BC $
.endif
LDI AR0,AR4
CLRF R0
STF R0,*+AR4(OPOSX)
; FLOAT -480,R0
FLOAT -910,R0
STF R0,*+AR4(OPOSY)
FLOAT 5500,R0
STF R0,*+AR4(OPOSZ)
LDI *+AR4(OFLAGS),R0
OR O_ILLUM|O_NOUNIV|O_NOUROT,R0
LDI 1,R1
LS 16,R1
OR R1,R0
STI R0,*+AR4(OFLAGS)
CLRF R0
STF R0,*+AR4(ORADX)
LDF startthey,R2
ADDF HALFPI,R2
STF R2,*+AR4(ORADY)
LDF startthez,R2
STF R2,*+AR4(ORADZ)
LDI AR4,AR2
ADDI OMATRIX,AR2
LDI AR4,R2
ADDI ORADX,R2
CALL FIND_MATRIX
LDI AR4,AR2
CALL OBJ_INSERTP
LDF *+AR4(ORADY),R0
STF R0,*+AR4(OUSR1)
; LDI 470,AR5
MSLP1
LDF 0.0174539,R0
FLOAT @NFRAMES,R1
MPYF R1,R0
ADDF *+AR4(OUSR1),R0 ;ORADY
STF R0,*+AR4(OUSR1)
LDP @_CAMERARAD+Y
SUBF @_CAMERARAD+Y,R0
SETDP
STF R0,*+AR4(ORADY)
LDI AR4,AR2
ADDI OMATRIX,AR2
LDI AR4,R2
ADDI ORADX,R2
CALL FIND_MATRIX
MSLP2
SLEEP 1
CALL MSLP_CHECK
BR MSLP1
MSLP_CHECK
SUBI @NFRAMES,AR6
LDI @DECOMP_ACTIVE,R0
CMPI 0,R0
BNE MSLP3
LDI *+AR7(DECOMP_COUNT),R0
ADDI 1,R0
STI R0,*+AR7(DECOMP_COUNT)
CMPI 3,R0
BGT MSLP4 ;Done Loading
MSLP3
RETS
; BR MSLP1
MSLP4
CMPI 0,AR6
RETSGT
; BGT MSLP1
MSLPX
LDI 0,R0
STI R0,@LOADED
POP BK ;POP return address
BR CYCLE_ATTR
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MIDWAYSPINENTER:
LDL midway,AR2
CALL OBJ_GETE
.if DEBUG
BC $
.endif
LDI AR0,AR4
CLRF R0
STF R0,*+AR4(OPOSX)
FLOAT -480,R0
STF R0,*+AR4(OPOSY)
FLOAT 5500,R0
STF R0,*+AR4(OPOSZ)
LDI *+AR4(OFLAGS),R0
OR O_ILLUM|O_NOUNIV|O_NOUROT,R0
LDI 1,R1
LS 16,R1
OR R1,R0
STI R0,*+AR4(OFLAGS)
CLRF R0
STF R0,*+AR4(ORADX)
LDF startthey,R2
ADDF PI,R2
STF R2,*+AR4(ORADY)
LDF startthez,R2
STF R2,*+AR4(ORADZ)
LDI AR4,AR2
ADDI OMATRIX,AR2
LDI AR4,R2
ADDI ORADX,R2
CALL FIND_MATRIX
LDI AR4,AR2
CALL OBJ_INSERTP
LDF *+AR4(ORADY),R0
STF R0,*+AR4(OUSR1)
LDI 690,AR5
MSLP1a
LDF *+AR4(OUSR1),R0 ;ORADY
ADDF 0.0174539,R0
STF R0,*+AR4(OUSR1)
LDP @_CAMERARAD+Y
SUBF @_CAMERARAD+Y,R0
SETDP
STF R0,*+AR4(ORADY)
LDI AR4,AR2
ADDI OMATRIX,AR2
LDI AR4,R2
ADDI ORADX,R2
CALL FIND_MATRIX
SLEEP 1
DBU AR5,MSLP1a
CALL TEXT_INIT
BR CYCLE_ATTR
*----------------------------------------------------------------------------
.globl SPIN_CAR
SPIN_CARTABI .word SPIN_CARTAB
romdata
SPIN_CARTAB .word missle,hotrod,testor,cvette
.text
SPIN_CAR:
LDI 0,R0
STI R0,*+AR7(DECOMP_COUNT)
LDIL logo,AR2
CALL OBJ_GETE
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
FLOAT -150,R0
STF R0,*+AR0(OPOSX)
FLOAT -110,R0
STF R0,*+AR0(OPOSY)
FLOAT 436,R0
STF R0,*+AR0(OPOSZ)
LDI AR0,AR2
CALL OBJ_INSERT
CALL LOGO_SMALL
LDI @ATTRWAVE,AR2
LSH -1,AR2
SUBI 1,AR2
AND 3,AR2
ADDI @SPIN_CARTABI,AR2
LDI *AR2,AR2
CALL OBJ_GETE
LDI O_IROT|O_NOROT|O_NOUROT|O_NOUNIV,R0
OR *+AR0(OFLAGS),R0
STI R0,*+AR0(OFLAGS)
FLOAT 1368,R0
STF R0,*+AR0(OPOSZ)
LDI AR0,AR4
LDF -0.196,R2
STF R2,*+AR4(ORADX)
LDF 3.534,R2
STF R2,*+AR4(ORADY)
LDI AR4,AR2
ADDI OMATRIX,AR2
LDI AR4,R2
ADDI ORADX,R2
CALL FIND_MATRIX
LDI AR4,AR2
CALL OBJ_INSERTP
LDI 16,AR6
SPIN_CAR_WAIT
SLEEP 1
SUBI 1,AR6
CMPI 0,AR6
BGT SPIN_CAR_WAIT
LDI 550,AR6
SPIN_CARLP
LDF *+AR4(ORADY),R2
FLOAT @NFRAMES,R0
MPYF 0.018,R0
ADDF R0,R2
STF R2,*+AR4(ORADY)
LDI AR4,R2
ADDI ORADX,R2
LDI AR4,AR2
ADDI OMATRIX,AR2
CALL FIND_MATRIX
SLEEP 1
CALL MSLP_CHECK
BU SPIN_CARLP
*----------------------------------------------------------------------------
*
TEXTTOGET:
SLEEP 75
LDI @TEXT_ACTIVEI,AR0
CLRF R1
TXTLP LDI *AR0,R0
BZ NXTWT
LDI R0,AR0
STF R1,*+AR0(TEXT_VELX)
BR TXTLP
NXTWT
SLEEP 460
LDI @TEXT_ACTIVEI,AR0
LDF -6,R1
TXTLPA LDI *AR0,R0
BNZ TXTLPB
BR SUICIDE
TXTLPB
LDI R0,AR0
STF R1,*+AR0(TEXT_VELY)
BR TXTLPA
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.data
DEMOTHANKS_LISTI .word DEMOTHANKS_LIST
.SECT "THEDATA"
DT1 .string "THANK YOU FOR PLAYING",0
DT2 .string "CRUISIN USA",0
DT3 .string "SNEAK PREVIEW",0
DEMOTHANKS_LIST
.word 140,DT1
.word 180,DT2
.word 220,DT3
.text
DEMOTHANKS:
LDI 1,R0
STI R0,@COINOFF
CLRI R0
STI R0,@BGNDCOLA ;COLORAM
LDI 2,AR5
LDI @DEMOTHANKS_LISTI,AR4
DTLP
FLOAT 256,R2
FLOAT *AR4++,R3
LDI *AR4++,AR2
LDI 9999,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
DBU AR5,DTLP
LDI -6,R0
STI R0,@_ATTR_MODE
BR MIDWAYSPINENTER
*----------------------------------------------------------------------------
.END

1815
ATTRDRNE.ASM Executable file

File diff suppressed because it is too large Load Diff

374
AUDITS.ASM Executable file
View File

@ -0,0 +1,374 @@
; .FILE "AUDITS.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include C30.EQU
.include MACS.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include TEXT.EQU
.include DIRQ.EQU
.include DIAG.EQU
.include ERROR.EQU
.text
*----------------------------------------------------------------------------
*DISPLAYABLE AUDITS
*
* .word AUDIT_#,string
*
*
AUDENT .MACRO AUDITI,ATEXT
.word :AUDITI:,l?
.sect "THEDATA"
l? .string ":ATEXT:",0
.text
.ENDM
AUDENT_SPACER .MACRO
.word -3
.ENDM
AUDENT_PAGE .MACRO
.word -1
.ENDM
AUD_ROUTINE .set 5Ah
AUD_ROUTINEH .set 5A0000h
AUDENTR .MACRO AUDITI,ATEXT,ROUTINE
.word AUD_ROUTINEH|:AUDITI:,:ROUTINE:,l?
.sect "THEDATA"
l? .string ":ATEXT:",0
.text
.ENDM
*----------------------------------------------------------------------------
*
*
*RETURN
* R0 VALUE
*
COMPUTE_FREEGAMES_PRCNT:
READAUD AUD_GAMES_CONTINUES
LDI R0,R1
READAUD AUD_GAMES_START
ADDI R0,R1
LDIZ R1,R0
RETSZ
READAUD AUD_TOTAL_FREEGAMES
; ADDI R0,R1
MPYI 100,R0
CALL DIV_I30
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*RETURN
* R0 VALUE
*
COMPUTE_GAMETIME:
READAUD AUD_GAMES_CONTINUES
LDI R0,R1
READAUD AUD_GAMES_START
ADDI R0,R1
READAUD AUD_GAMEON_TIME
CALL DIV_I30
RETS
AUDIT_LIST
AUDENT AUD_COIN1,"LEFT COIN"
AUDENT AUD_COIN2,"RIGHT COIN"
AUDENT AUD_COIN3,"THIRD COIN"
AUDENT AUD_COIN4,"FOURTH COIN"
AUDENT AUD_SERVICE_CREDITS,"SERVICE CREDITS"
AUDENT_SPACER
AUDENT AUD_GAMES_START,"TOTAL STARTS"
AUDENT AUD_GAMES_CONTINUES,"TOTAL CONTINUES"
AUDENT AUD_H2HGAMES,"HEAD 2 HEAD GAMES"
AUDENT AUD_TOTAL_FREEGAMES,"FREE RACES"
AUDENT AUD_GAMES_EXPIRED,"EXPIRED RACES"
AUDENTR AUD_GAMEON_TIME,"FREE RACE PERCENTAGE",COMPUTE_FREEGAMES_PRCNT
AUDENT_SPACER
; AUDENT ADJ_DIFFICULTY,"DIFFICULTY"
; AUDENT ADJ_FIRST_PLACE_PERCENT,"1ST PLACE AUTO PERCENT"
AUDENT AUD_POWERON_TIME,"POWER ON TIME SECS"
AUDENT AUD_GAMEON_TIME,"GAME TIME SECS"
AUDENTR AUD_GAMEON_TIME,"AVERAGE GAME TIME SECS",COMPUTE_GAMETIME
AUDENT_PAGE
;-------
AUDENT AUD_AUTOMATIC_TRANS_SELECTED,"AUTOMATIC SELECTED"
AUDENT AUD_MANUAL_TRANS_SELECTED,"MANUAL SELECTED"
AUDENT_SPACER
AUDENT AUD_VETTE_SELECTED,"63 MUSCLE SELECTED"
AUDENT AUD_LABOMBA_SELECTED,"LABOMBA SELECTED"
AUDENT AUD_DEVASTATOR_SELECTED,"DEVASTATOR SELECTED"
AUDENT AUD_ITALIA_SELECTED,"ITALIA SELECTED"
AUDENT_SPACER
AUDENT AUD_HID_JEEP_SELECTED,"JEEP SELECTED"
AUDENT AUD_HID_COPCAR_SELECTED,"COPCAR SELECTED"
AUDENT_SPACER
AUDENT AUD_VIEW1_TIME,"VIEW1 TIME SECS"
AUDENT AUD_VIEW2_TIME,"VIEW2 TIME SECS"
AUDENT AUD_VIEW3_TIME,"VIEW3 TIME SECS"
AUDENT_PAGE
;-------
AUDENT AUD_LOG_COUNT,"EVENT"
AUDENT AUD_NUM_UNFINISHED,"U-GAMES"
AUDENT AUD_NUM_WATCHDOGS,"WATCHDOGS"
AUDENT AUD_SUCCESSFULL_BURNINS,"BURNIN LOOPS"
AUDENT_SPACER
AUDENT ADJ_DIFFICULTY,"GAME DIFFICULTY"
; AUDENT ADJ_DIFF_LOCAL,"LOCAL DIFFICULTY"
; AUDENT ADJ_FIRST_PLACE_PERCENT,"1ST PLACE AUTOPERCENTAGE"
; AUDENT ADJ_RAMP_PERCENTAGE,"RAMP PERCENTAGE"
; AUDENT ADJ_RAMPGAMES,"AUTO RAMP GAMES"
; AUDENT ADJ_RAMP_COUNT,"RAMP COUNT"
AUDENT_PAGE
;-------
AUDENT AUD_FS_AZ,"SELECT ARIZONA"
AUDENT AUD_FS_US101,"SELECT US101"
AUDENT AUD_FS_LA,"SELECT LA"
AUDENT AUD_FS_IOWA,"SELECT IOWA"
AUDENT AUD_FS_DV,"SELECT DEATH VALLEY"
AUDENT AUD_FS_USA,"SELECT USA"
AUDENT AUD_FS_BH,"SELECT BEVHILLS"
AUDENT AUD_FS_APPL,"SELECT APPALACHIA"
AUDENT AUD_FS_RW,"SELECT REDWOOD"
AUDENT AUD_FS_RM,"SELECT RUSHMORE"
AUDENT AUD_FS_CH,"SELECT CHICAGO"
AUDENT_SPACER
AUDENT AUD_FS_HID_SF,"SELECT SANFRAN"
AUDENT AUD_FS_HID_IN,"SELECT INDIANA"
AUDENT AUD_FS_HID_GG,"SELECT GGATE"
AUDENT_PAGE
;-------
AUDENT AUD_START_GGATE,"START GGATE"
AUDENT AUD_START_SF,"START SF"
AUDENT AUD_START_US101,"START US101"
AUDENT AUD_START_REDWOOD,"START REDWOOD"
AUDENT AUD_START_BEVHILLS,"START BEVHILLS"
AUDENT AUD_START_LA,"START LA"
AUDENT AUD_START_DV,"START DV"
AUDENT AUD_START_ARIZONA,"START ARIZONA"
AUDENT AUD_START_GC,"START GC"
AUDENT AUD_START_IOWA,"START IOWA"
AUDENT AUD_START_CHICAGO,"START CHICAGO"
AUDENT AUD_START_INDIANA,"START INDIANA"
AUDENT AUD_START_APPALACHIA,"START APPALACHIA"
AUDENT AUD_START_DC,"START DC"
AUDENT_PAGE
;-------
AUDENT AUD_WIN_GGATE,"GGATE WINS"
AUDENT AUD_WIN_SF,"SANFRAN WINS"
AUDENT AUD_WIN_US101,"US101 WINS"
AUDENT AUD_WIN_REDWOOD,"REDWOOD WINS"
AUDENT AUD_WIN_BEVHILLS,"BEVHILLS WINS"
AUDENT AUD_WIN_LA,"LA WINS"
AUDENT AUD_WIN_DV,"DEATHVALLEY WINS"
AUDENT AUD_WIN_ARIZONA,"ARIZONA WINS"
AUDENT AUD_WIN_GC,"GRAND CANYON WINS"
AUDENT AUD_WIN_IOWA,"IOWA WINS"
AUDENT AUD_WIN_CHICAGO,"CHICAGO WINS"
AUDENT AUD_WIN_INDIANA,"INDIANA WINS"
AUDENT AUD_WIN_APPALACHIA,"APPALACHIA WINS"
AUDENT AUD_WIN_DC,"DC WINS"
AUDENT_PAGE
;-------
.word -2 ;end of list
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*AUDITS DISPLAY
*
.bss OLDDIP,1
AUDIT_DISPLAY:
CALL SETUP_DIAG_SCREEN
CLRI AR4 ;page index
LDI DEFAULT_COLOR,RC
TEXTITT "HIT VOLUME UP FOR NEXT PAGE",50,330
LDI @SOFT_AUDIT,R0
BNZ KKLL
LDI DEFAULT_COLOR,RC
TEXTITT "DIP SWITCH BANK 2 SELECTS COIN MODE",50,340
CALL TOEXIT
KKLL IWINFR 10,40,400,220
LDL AUDIT_LIST,AR5
LYTL
FILL 12,42,398,218,COL_LGREY
LDI 50,R5
LDI DEFAULT_COLOR,RC
LLTT LDI *AR5++,AR2
CMPI -1,AR2
BEQ LLRR
CMPI -2,AR2
BEQ KKLL
CMPI -3,AR2
BEQ JJTTA
LDI AR2,R0
RS 16,R0
CMPI AUD_ROUTINE,R0
BNE NOCALL
LDI *AR5++,R0
CALLU R0
BU J22AB
NOCALL CALL AUDIT_READ
J22AB LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
J22A
LDI R5,R3
LDI 250,R2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
LDI *AR5++,AR2
LDI R5,R3
LDI 20,R2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
JJTTA ADDI 10,R5
BU LLTT
LLRR
LDI 0,R0
STI R0,@OLDDIP
WL2A
LDI @DIPRAM,R0
LDI @OLDDIP,R1
CMPI R0,R1
BEQ NODIPPLOT
STI R0,@OLDDIP
LDI 50,AR2
LDI 240,R2
LDI 300,R3
LDI 249,RC
LDI 0,RS
CALL _fill
; LDI @SOFT_AUDIT,R0
; BZ KKL7
;
; CALL GETCOINTXT
; LDI AR0,AR2
; LDI DEFAULT_COLOR,RC
; LDI 50,R2
; LDI 240,R3
; LDI R0,AR0
; CALL _outtextxyc
;
;KKL7
NODIPPLOT
LDI @_newbut,R0 ;old system method
LDI @_newbut,R1 ;debounce
TSTB SW_DIAG,R1 ;start to return to main
BZ BOOKX
RS 16,R1
TSTB SW_VIEW0_H,R1
BNZ NOLOG
LDI @SOFT_AUDIT,R0 ;OPERATOR MAY NOT VIEW THESE
BZ NOLOG
CALL ERROR_LOG_DISPLAY
BU AUDIT_DISPLAY
NOLOG
TSTB SW_VOLPLUS,R0
BZ DBNCE
; BZ LYTL ;NEXT PAGE
TSTB SW_VOLMINUS,R0
BNZ FFB2
; BZ LYTL ;NEXT PAGE
DBNCE NOT @_newbut,R1 ;debounce
AND SW_VOLPLUS|SW_VOLMINUS,R1
BNZ DBNCE
BU LYTL
FFB2 TSTB SW_VIEW2_H,R1 ;view2 to display next audit page
BNZ KKLL5
RB44 LDI @_newbut,R1 ;debounce
RS 16,R1
TSTB SW_VIEW2_H,R1 ;view2 to display next audit page
BZ RB44
BU LYTL ;NEXT PAGE
KKLL5
LDI @SOFT_AUDIT,R0
BZ KKL
TSTB SW_VIEW1_H,R1 ;VIEW1 TO EXIT TO GAME (IN SECRET MODE)
RETSZ
KKL
BU WL2A
BOOKX
WL266
NOT @_newbut,R0
AND SW_DIAG,R0
BNZ WL266
RETS
*----------------------------------------------------------------------------

2461
BACKGRND.ASM Executable file

File diff suppressed because it is too large Load Diff

BIN
BIG2.GEO Executable file

Binary file not shown.

BIN
BIG2.PTG Executable file

Binary file not shown.

BIN
BIG2.TGA Executable file

Binary file not shown.

2282
BONUS.ASM Executable file

File diff suppressed because it is too large Load Diff

12
BSSSTART.ASM Executable file
View File

@ -0,0 +1,12 @@
.FILE "BSSSTART.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.globl BSSSTART
lobss BSSSTART,0 ;THIS MUST BE THE FIRST SYMBOL IN BSS

51
C30.EQU Executable file
View File

@ -0,0 +1,51 @@
*C30.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*----------------------------------------------------------------------------
*STATUS WORD FLAGS
INT0_M .set 1 ;DISPLAY INT
INT1_M .set 2 ;TV30 INT
INT2_M .set 4 ;COMM INT
INT3_M .set 8 ;ATOD INT
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*ON CHIP RAM BLOCKS
RAM0 .set 0809800h
RAM1 .set 0809C00h
*----------------------------------------------------------------------------
*WAIT STATE GENERATION
CPU_WS .set 0808064h ;WAIT STATE CPU CONTROL REGISTER
SOFT_WS .set 00470h
HARD_WS .set 01000h ;WAVE RAM & SCREEN RAM
CMOS_WS .set 00090h ;CMOS ACCESS
*----------------------------------------------------------------------------
*TIMER DEFINES
*
TIMER_CNTL1 .set 808020h
TIMER_CNTL2 .set 808030h
TIMER_CNTR1 .set 808024h
TIMER_CNTR2 .set 808034h
TIMER_PERIOD1 .set 808028h
TIMER_PERIOD2 .set 808038h
TMR_GO .set 40h ;reset and start timer counter
TMR_HOLD .set 80h ;=0 -> suspend
TMR_RESET_GO .set TMR_GO|TMR_HOLD
TMR_SUSPEND .set 0
.globl TIMER_RESET,TIMER_READ

1
CHECKSUM.EQU Executable file
View File

@ -0,0 +1 @@
CHECKSUM_GEN .set 0

1673
CHOPPER.ASM Executable file

File diff suppressed because it is too large Load Diff

36
CKSUM.ASM Executable file
View File

@ -0,0 +1,36 @@
.FILE"CKSUM.ASM"
*GENERATED BY D:\VUNIT\ROM\ROMGEN.EXE
*WHICH WAS COMPILED Jun 24 1994 17:23:08
*
*
.globl CHECKSUM_C00,CHECKSUM_C01,CHECKSUM_C02,CHECKSUM_C03
.globl CHECKSUM_C80,CHECKSUM_C81,CHECKSUM_C82,CHECKSUM_C83
.globl CHECKSUM_D00,CHECKSUM_D01,CHECKSUM_D02,CHECKSUM_D03
.globl CHECKSUM_D80,CHECKSUM_D81,CHECKSUM_D82,CHECKSUM_D83
.globl CHECKSUM_E00,CHECKSUM_E01,CHECKSUM_E02,CHECKSUM_E03
CHECKSUM_C00 .word 05148h
CHECKSUM_C01 .word 04894h
CHECKSUM_C02 .word 078FDh
CHECKSUM_C03 .word 03600h
CHECKSUM_C80 .word 0CDE8h
CHECKSUM_C81 .word 0E370h
CHECKSUM_C82 .word 0599Ch
CHECKSUM_C83 .word 0615Ah
CHECKSUM_D00 .word 0C6FFh
CHECKSUM_D01 .word 0D187h
CHECKSUM_D02 .word 0224Eh
CHECKSUM_D03 .word 0F113h
CHECKSUM_D80 .word 04564h
CHECKSUM_D81 .word 06600h
CHECKSUM_D82 .word 0E866h
CHECKSUM_D83 .word 09E8h
CHECKSUM_E00 .word 021E1h
CHECKSUM_E01 .word 0FF00h
CHECKSUM_E02 .word 09E3h
CHECKSUM_E03 .word 0CCCAh

22
CKSUM.EQU Executable file
View File

@ -0,0 +1,22 @@
*GENERATED BY D:\VUNIT\ROM\ROMGEN.EXE
*WHICH WAS COMPILED Jan 31 1995 15:58:25
CHECKSUM_C00 .set 087DFh
CHECKSUM_C01 .set 06E35h
CHECKSUM_C02 .set 04C08h
CHECKSUM_C03 .set 043EAh
CHECKSUM_C80 .set 02F5Ch
CHECKSUM_C81 .set 0DDEAh
CHECKSUM_C82 .set 0C318h
CHECKSUM_C83 .set 07C1Fh
CHECKSUM_D00 .set 02C8Ch
CHECKSUM_D01 .set 03C13h
CHECKSUM_D02 .set 0D9EEh
CHECKSUM_D03 .set 05900h
CHECKSUM_D80 .set 068E8h
CHECKSUM_D81 .set 04C52h
CHECKSUM_D82 .set 075CBh
CHECKSUM_D83 .set 071A6h
CHECKSUM_E00 .set 0B636h
CHECKSUM_E01 .set 0E3BCh
CHECKSUM_E02 .set 0B826h
CHECKSUM_E03 .set 03BB0h

1097
CMOS.ASM Executable file

File diff suppressed because it is too large Load Diff

407
CMOS.EQU Executable file
View File

@ -0,0 +1,407 @@
*CMOS.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*----------------------------------------------------------------------------
* CMOS DEFINES
*
* 8K X 8 CMOS RAM
*BITS ARE: TTTT TTTT xxxx xxxx xxxx xxxx xxxx xxxx
*
*ADJUSTMENTS ARE FIRST, THEN AUDITS
*SPACE FOR X AUDITS
*
*THEN HSTD SPACE
*{
* RACE_TABLE
*} * NUM_RACES
*
.globl CHECK_RACE_TABLE,INSERT_TABLE_ENTRY
.globl TABLE_ENTRY_READ,GET_TABLE_ADDR
.globl INIT_LASTHS_TABLE,CHECK_LASTHS
.globl VALIDATE_HSTD_TABLES
.globl INIT_HSTD_TABLES
*----------------------------------------------------------------------------
*HSTD ENTRY INFORMATION
*
*
CMWS .set 4 ;CMOS WORD SIZE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*AUDIT AND ADJUSTMENTS
*
*
ADJ_COINMODE .set 0 ;0-50,0
ADJ_GASMIN .set 1 ;0-255,0
ADJ_GASMAX .set 2 ;0-255,255
ADJ_STEERMIN .set 3 ;0-255,0
ADJ_STEERMAX .set 4 ;0-255,255
ADJ_STEERCENTER .set 5 ;0-255,128
ADJ_BRAKEMIN .set 6 ;0-255,0
ADJ_BRAKEMAX .set 7 ;0-255,255
ADJ_VOLUME .set 8 ;0-255,255
ADJ_COIN1_UNITS .set 9 ;0-100,1
ADJ_COIN2_UNITS .set 10 ;0-100,1
ADJ_COIN3_UNITS .set 11 ;0-100,1
ADJ_COIN4_UNITS .set 12 ;0-100,1
ADJ_UNITS_PER_CREDIT .set 13 ;0-100,1
ADJ_BONUS_UNITS .set 14 ;0-100,0
ADJ_UNITS_MIN .set 15 ;0-100,0
ADJ_CREDITS_TO_START .set 16 ;0-100,3
ADJ_CREDITS_TO_CONTINUE .set 17 ;0-100,3
ADJ_SHOW_FRAC .set 18 ;0-1,1
ADJ_COIN1_COUNTER .set 19 ;0-127,1
ADJ_COIN2_COUNTER .set 20 ;0-127,1
ADJ_COIN3_COUNTER .set 21 ;0-127,1
ADJ_COIN4_COUNTER .set 22 ;0-127,4
ADJ_STANDARD_PRICING .set 23 ;0-1,1
ADJ_CUSTOM_PRICING .set 24 ;0-1,0
ADJ_FREE_PLAY .set 25 ;0-1,0
ADJ_FREEGAME .set 26 ;0-1,1
ADJ_DIFFICULTY .set 27 ;0-10,7
ADJ_TIME_TO_START .set 28 ;0-6,6
ADJ_CHECKPOINT_BONUS .set 29 ;0-10,7
ADJ_ATTRACT_MODE_SOUND .set 30 ;0-1,0
ADJ_HIGH_SCORE_ENTRY .set 31 ;0-1,1
ADJ_MIN_VOL_LEVEL .set 32 ;0-255,200
ADJ_ACTUALHSTDRESET .set 33 ;0-25000,5000
ADJ_MPHORKPM .set 34 ;0-1,0
ADJ_ROADKILL .set 35 ;0-1,1
ADJ_CLINTON .set 36 ;0-1,1
ADJ_GIRLS .set 37 ;0-1,1
ADJ_STEERING_SENSITIVITY .set 38 ;0-40,10
ADJ_HIGHSCORE_RESET .set 39 ;1000,25000,5000
ADJ_DIFF_LOCAL .set 40 ;0-100,50
ADJ_OUTOFDIAG .set 41 ;have we just left diag???
ADJ_RAMP_PERCENTAGE .set 42 ;0-30,20
ADJ_RAMP_COUNT .set 43 ;0-5000,0
ADJ_ENTER_INITS .set 44 ;0-1,1
ADJ_MAX_CREDITS .set 45 ;10-50,30
NUM_ADJUSTMENTS .set 46
ADJ_WDOG .set 50 ;temp space
ADJ_INITIALS .set 51 ;-1 if reset x|b|b|b
ADJ_MOTION_PRESENT .set 52
ADJ_CHECKSUM .set 53
MAX_ADJUSTMENTS .set 54
;COIN BOOKEEPING
AUD_COIN1 .set 100 ;*
AUD_COIN2 .set 101 ;*
AUD_COIN3 .set 102 ;*
AUD_COIN4 .set 103 ;*
AUD_SERVICE_CREDITS .set 104 ;*
AUD_PAID_CREDITS .set 105 ;*
AUD_TOTAL_FREEGAMES .set 106 ;
AUD_FREE_TO_TOTAL .set 107 ; % FREE GAMES TO TOTAL PLAYS
AUD_TOTAL_PLAYS .set 108
AUD_TOTAL_STARTS .set 109
AUD_TOTAL_CONTINUES .set 110
AUD_GAMENUMBER .set 111 ;
AUD_PCREDITS .set 112 ;partial credits
AUD_CREDITS .set 113 ;actual credits
AUD_NUM_BUYINS .set 114 ;
AUD_TOTAL_TIME .set 115 ;AUD_TOTAL_TIME/AUD_NUM_BUYINS / 100
AUD_AVG_TIME .set 116 ;
AUD_NUM_UNFINISHED .set 117 ;
AUD_POWERON_TIME .set 118 ;Measured in seconds...
AUD_GAMEON_TIME .set 119 ;Measured in seconds...
AUD_NUM_WATCHDOGS .set 120
AUD_TOTAL_UNLINKED_PLAYS .set 121
AUD_TOTAL_UNLINKED_1STS .set 122
AUD_UNLINKED_1ST_TO_TOTAL_UL .set 123
AUD_TOTAL_UNLINKED_STARTS .set 124
AUD_TOTAL_UNLINKED_CONTINUES .set 125
AUD_CONTINUES_TO_PLAYS_UNLINKED .set 126
AUD_TOTAL_UNLINKED_GAME_ENDS .set 127
AUD_RESET_TOTALLY .set 128
;AUD_TOTAL_LINKED_PLAYS .set 74
;AUD_TOTAL_LINKED_1STS .set 75
AUD_LINKED_1ST_TO_TOTAL_UL .set 129
AUD_TOTAL_LINKED_STARTS .set 130
AUD_TOTAL_LINKED_CONTINUES .set 131
AUD_CONTINUES_TO_PLAYS_LINKED .set 132
AUD_TOTAL_LINKED_GAME_ENDS .set 133
AUD_LINKED_PLAYS_TO_TOTAL_PLAYS .set 134
AUD_TOTAL_ONTIME .set 135
AUD_TOTAL_PLAYTIME .set 136
AUD_TOTAL_LINKED_PLAYTIME .set 137
AUD_TOTAL_UNLINKED_PLAYTIME .set 138
AUD_AVG_TIME_PER_CREDIT .set 139
AUD_AVGCREDITS_PER_GAME .set 140
AUD_COIN_DOOR_SLAMS .set 141
AUD_SUCCESSFULL_BURNINS .set 142
AUD_UNFINISHED_GAMES .set 143
AUD_UNFINISHED_GAMES_FOUND .set 144
AUD_VIEW1_TIME .set 145
AUD_VIEW2_TIME .set 146
AUD_VIEW3_TIME .set 147
AUD_RADIO_HITS .set 148 ;*
AUD_AUTOMATIC_TRANS_SELECTED .set 149 ;*
AUD_MANUAL_TRANS_SELECTED .set 150 ;*
AUD_GAMES_EXPIRED .set 151
AUD_GENERAL_CHKSUM .set 152
AUD_START_GGATE .set 153
AUD_FINISH_GGATE .set 154
AUD_START_SF .set 155
AUD_FINISH_SF .set 156
AUD_START_US101 .set 157
AUD_FINISH_US101 .set 158
AUD_START_REDWOOD .set 159
AUD_FINISH_REDWOOD .set 160
AUD_START_BEVHILLS .set 161
AUD_FINISH_BEVHILLS .set 162
AUD_START_LA .set 163
AUD_FINISH_LA .set 164
AUD_START_DV .set 165
AUD_FINISH_DV .set 166
AUD_START_ARIZONA .set 167
AUD_FINISH_ARIZONA .set 168
AUD_START_GC .set 169
AUD_FINISH_GC .set 170
AUD_START_IOWA .set 171
AUD_FINISH_IOWA .set 172
AUD_START_CHICAGO .set 173
AUD_FINISH_CHICAGO .set 174
AUD_START_INDIANA .set 175
AUD_FINISH_INDIANA .set 176
AUD_START_APPALACHIA .set 177
AUD_FINISH_APPALACHIA .set 178
AUD_START_DC .set 179
AUD_FINISH_GAME .set 180
;these are actually accumulators
;to get the actual value thou must
; / AUD_FINISH_<NAME>
;
AUD_WIN_GGATE .set 181
AUD_WIN_SF .set 182
AUD_WIN_US101 .set 183
AUD_WIN_REDWOOD .set 184
AUD_WIN_BEVHILLS .set 185
AUD_WIN_LA .set 186
AUD_WIN_DV .set 187
AUD_WIN_ARIZONA .set 188
AUD_WIN_GC .set 189
AUD_WIN_IOWA .set 190
AUD_WIN_CHICAGO .set 191
AUD_WIN_INDIANA .set 192
AUD_WIN_APPALACHIA .set 193
AUD_WIN_DC .set 194
AUD_WIN_GAME .set 195
AUD_GAMES_START .set 210
AUD_GAMES_CONTINUES .set 211
AUD_GAMES_ENDS .set 212
AUD_BURNINS .set 213
AUD_VERTFRAME .set 214
AUD_POLYFRAME .set 215
AUD_OBJFRAME .set 216
AUD_FRAMEFRAME .set 217
AUD_REPEAT_REDWOOD .set 218
AUD_REPEAT_DEATHVALLEY .set 219
AUD_REPEAT_GRANDCANYON .set 220
AUD_REPEAT_CHICAGO .set 221
;Misc internal counts
AUD_LOG_COUNT .set 222
AUD_LAST_LEG .set 223 ;LAST LEG SETUP
AUD_PLAYS_TO_HISCORE_RESET .set 224
AUD_VETTE_SELECTED .set 225
AUD_CAR_SELECTION .set AUD_VETTE_SELECTED
AUD_LABOMBA_SELECTED .set 226
AUD_DEVASTATOR_SELECTED .set 227
AUD_ITALIA_SELECTED .set 228
AUD_HID_JEEP_SELECTED .set 229
AUD_HID_SBUS_SELECTED .set 230
AUD_HID_COPCAR_SELECTED .set 231
AUD_HID_DIESEL_SELECTED .set 232
AUD_FS_AZ .set 233 ;free select ARIZONA
AUD_FS_US101 .set 234
AUD_FS_LA .set 235
AUD_FS_IOWA .set 236
AUD_FS_DV .set 237
AUD_FS_USA .set 238
AUD_FS_BH .set 239
AUD_FS_APPL .set 240
AUD_FS_RW .set 241
AUD_FS_RM .set 242
AUD_FS_CH .set 243
AUD_FS_HID_SF .set 244
AUD_FS_HID_IN .set 245
AUD_FS_HID_GG .set 246
AUD_BCREDITS .set 247
AUD_H2HGAMES .set 248
NUM_AUDITS .set 249
AUD_VERSION .set 250
AUD_HIGHSCORE_CHECKSUM .set 251
AUD_CHIPTEST_DEDICATED .set 252
AUD_CHECKSUM .set 253
MAX_AUDITS .set 254
*----------------------------------------------------------------------------
;EDIAG.ASM
.globl FRAMTEST,SRAMTEST,CRAMTEST,BITMAPTEST
.globl CHECK_RAM
;CMOS.ASM
.globl CMOSI
.globl HSTD_PAGEI
.globl ALL_TIME_HSTDI
.globl DAILY_HSTDI
.globl HSTD_DEFAULTI
.globl DAILY_DEFAULTI
.globl ADJUSTMENT_READ
.globl ADJUSTMENT_WRITE
.globl AUDIT_INC
.globl AUDIT_ADD
.globl AUDIT_READ
.globl AUDIT_WRITE
.globl GEN_CMOS_CHKSUM
.globl CHECK_CMOS
.globl CHKSUM_CMOS
.globl RESET_CMOS
.globl CLR_CMOS
.globl _wr_cw,_rd_cw
.globl _wr_cwR,_rd_cwR
.globl VALIDATE_CMOS
.globl CHECKSUM_PAGE
.globl GEN_CHECKSUM511
.globl SET_CHECKSUM
.globl RESET_BOOKKEEPING
.globl RESET_ADJUSTMENTS
;DIAG.ASM
.globl ENTER_DIAG
;HSTD.ASM
.globl BUMP_ALLTIME,BUMP_DAILY
.globl CHECK_ALLTIME,CHECK_DAILY
.globl CHECK_TABLE
.globl _HSTD_DISP
.globl _hstd_alltime
.globl RESET_ALL_TIME_CMOS
.globl RESET_DAILY_CMOS
.globl HSTD_DEFAULT
.globl DAILY_DEFAULT
.globl CMOS_ON_C,CMOS_OFF_C,CMOS_WPON_C,CMOS_WPOFF_C
CMOS_ON .MACRO
CALL CMOS_ON_C
.ENDM
CMOS_OFF .MACRO
CALL CMOS_OFF_C
.ENDM
CMOS_WP_ON .MACRO
CALL CMOS_WPON_C
.ENDM
CMOS_WP_OFF .MACRO
CALL CMOS_WPOFF_C
.ENDM
*----------------------------------------------------------------------------
*CMOS STRUCTURES
*
*
*TOP RACE TIMES
*
*STRUCT RACEENTRY
TE_TIME .set 0 ;TIME
TE_INIT1 .set 4 ; }
TE_INIT2 .set 5 ; } PLAYERS INITIALS
TE_INIT3 .set 6 ; }
TE_RANK .set 7 ;RANK
*ENDSTRUCT
TE_SIZE .set 8
NUM_RACES .set 15
NUM_ENTRIES_PER_RACE .set 10
RACE_TABLE_SIZE .set NUM_ENTRIES_PER_RACE*TE_SIZE
*
*
*
CMOS_PAGE .set 0800h ;page size (2048b in length, 512 words)
HSTD_PAGE .set CMOS+(MAX_AUDITS*4)
H280_RTABLE .set HSTD_PAGE
SF_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE)
RW_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*1)
BEVLA_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*2)
DVAZ_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*3)
GC_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*4)
IO_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*5)
CH_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*6)
AP_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*7)
DC_RTABLE .set HSTD_PAGE+(RACE_TABLE_SIZE*8)
*----------------------------------------------------------------------------

1382
COIN.ASM Executable file

File diff suppressed because it is too large Load Diff

1604
COINTAB.ASM Executable file

File diff suppressed because it is too large Load Diff

4175
COLLA.ASM Executable file

File diff suppressed because it is too large Load Diff

1184
COMM.ASM Executable file

File diff suppressed because it is too large Load Diff

184
COMM.EQU Executable file
View File

@ -0,0 +1,184 @@
*COMM.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
CDEBUG .set 0
*----------------------------------------------------------------------------
*COMMUNICATION BUFFER
*
*in BUFSTATS
*
*
BS_RDY_M .set 003h
BS_RDYA .set 001h
BS_RDYB .set 002h
BS_FIL_M .set 030h
BS_FILA .set 010h
BS_FILB .set 020h
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*COMMUNICATION BLOCKS
* (1 byte, all unique, NO masking)
*
CB_NULL .set 0 ;Do nothing (Padder)
CB_MODE .set 1 ;This is my MODE
CB_TIMECODE .set 2 ;This is my _countdown
CB_RACENUM .set 3 ;This is my CHOSEN_RACE
CB_VEHICLE .set 4 ;This is my CHOSEN_VEHICLE
CB_START_GAME .set 5 ;I HAVE BOUGHT INTO MY LINKED SYSTEM
CB_FINISHED .set 6 ;I have finished the Race
CB_CAR_UPDATE .set 7 ;UPDATE DATA BLOCK FOR CAR
CB_END_GAME .set 8 ;I HAVE ENDED THE GAME (ON MY SYSTEM)
CB_HEAD2HEADT .set 9 ;LINKED MESSAGE
CB_HEAD2HEADF .set 10 ;LINKED MESSAGE
CB_LINKCANCELLED .set 11 ;cancelled the linkup
CB_RACER_UPDATE .set 12 ;UPDATE DATA BLOCK FOR CAR
CB_RACER_XSFER .set 13 ;XSFER DRONE TO OTHER MACHINE CONTROL
CB_RACER_KILL .set 14 ;KILL CAR ID
CB_RHO_CREATE .set 15 ;CREATE CAR ID
CB_RHO_KILL .set 16 ;KILL CAR ID
CB_RHO_XSFER .set 17 ;XSFER CAR ID
CB_RHO_UPDATE .set 18 ;UPDATE CAR ID
CB_FLY_KILL .set 19 ;KILL CAR ID
CB_FLY_XSFER .set 20 ;XSFER CAR ID
CB_FLY_UPDATE .set 21 ;UPDATE CAR ID
CB_WAVEFL_READY .set 22
CB_WAVEFL_SET .set 23
CB_WAVEFL_GO .set 24
CB_OM_TRACK .set 25
CB_BONUS_SYNC0 .set 26
CB_BONUS_SYNC1 .set 27
CB_BONUS_SYNC2 .set 28
CB_BONUS_SYNC3 .set 29
CB_CHANGE_MUSIC .set 30
CB_COINDROP .set 31
CB_DIAGNOSTIC .set 32
CB_ATTRSND .set 33
CB_LASTMSG .set 34
*
*
*----------------------------------------------------------------------------
COMMDP .set 0997000h ;FOR DP
COMM_CTL .set 0997001h ;direction
C_DE .set 04000h ;data enable
C_CE .set 02000h ;control enable
;ALWAYS 1 ALWAYS
C_SND .set C_DE|C_CE
C_RCV .set C_CE
*default for everything is high
COMM_IO .set 0997000h ;data and control
C_IRQ .set 00800h ;MA NOT control, is actually interrupt 1 = INT, 0 = nothing
C_C2 .set 00400h ;MA just control
C_C1 .set 00200h ;SL just control
C_C0 .set 00100h ;SL just control
C_IRQE .set 08000h ;MA NOT control enable, control enable
C_CE2 .set 04000h ;MA just control
C_CE1 .set 02000h ;SL just control
C_CE0 .set 01000h ;SL just control
C_DMASK .set 000FFh
*we dedicate the lines by master/slave
*
C_MAS .set C_IRQE|C_CE2
C_SLA .set C_CE1|C_CE0
*FOR COMMQ.ASM
*
*
COMM_BUFFER_SIZE .set 600
COMM_Q_FREEZE .set 99Ah ;LOGICAL == "I HAVE NOTHING TO SEND"
COMM_Q_OPEN .set 878h ;LOGICAL == "I AM WORKING ON TRYING TO SEND SOMETHING"
COMM_Q_READY .set 45Bh ;LOGICAL == "I HAVE SOMETHING READY TO SEND"
;*** COMM.ASM
.globl RECEIVE_BUFFERI
.globl COMMQ_TMP_BUFFI
.globl COMMQ_TMP_BUFF
.globl SEND_BUFFER_A
.globl SEND_BUFFER_B
.globl RECEIVE_BUFFER
.globl RECEIVE_BUFFER_SIZE
.globl SEND_BUFFER_SIZE
.globl CURR_RCV_BUFFER
.globl COMMQ_STATUS
.globl SBUFF_PTR,SBUFF_PTR_STRT
.globl SBUFF_LEN
.globl RBUFF_PTR
.globl RBUFF_LEN
;*** COMMQ.ASM
.globl SEND_CHANGE_MUSIC
.globl COMMQ_INIT_F
.globl COMMQ_INIT
.globl COMMQ_FREEZE
.globl COMMQ_READY
.globl MESSAGE_ADD,MESSAGE_ADD_SB
.globl DECODE_BUFFER,DECODE_BUFFER_SLAVE
.globl SEND_TIMECODE
.globl SEND_MODE,OM_MODE
.globl SEND_RACENUM,OM_CHOSEN_RACE
.globl SEND_PLAYERS_POS
.globl OM_POS
.globl SEND_OM_TRACK
.globl SEND_BSYNC0
.globl SEND_BSYNC1
.globl SEND_BSYNC2
.globl SEND_BSYNC3
*
*OM_STATE
*
*Lower two bytes are the state
*
*OMS_
*
*
OMS_VEHICLE_M .set 0E0h
OMS_XVEH .set 080h
OMS_RACE_M .set 00Fh
;use RACE_xx in sys.equ for actual race index
OMS_CPOINT_M .set 00F00h ;this tells the mode
OMS_CPOINT1 .set 00100h
OMS_CPOINT2 .set 00200h
OMS_CPOINT3 .set 00400h
OMS_FINISHLINE .set 00800h

406
COMMDRNE.ASM Executable file
View File

@ -0,0 +1,406 @@
.FILE "COMMDRNE.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.include DELTA.EQU
.include COMM.EQU
.include RACER.EQU
.include H2HOBJ.EQU
.text
*----------------------------------------------------------------------------
*Startup Position Table
*
*39 words per plyr (13*3)
*
*
STARTUP_POS_TABLEI .word STARTUP_POS_TABLE
STARTUP_POS_TABLE: ;PLYR1 (on PLYR2)
.float 576,-180,3287 ;GG
.float -1928700,4654,584166 ;SF
.float -2611877,14000,-628750 ;H280
.float -3277335,15063,-1078194 ;RW
.float -2257363,21013,-1158765 ;BH
.float -2426363,10814,-2164529 ;LA
.float -4120644,20316,-3599815 ;DV
.float -4073652,24315,-3414549 ;AZ
.float -2802001,12395,-3353785 ;GC
.float -2465719,6191,-4562865 ;IOWA
.float -3156184,-9609,-4101941 ;CH
.float -3514890,-3107,-3573365 ;IN
.float -2353033,-16317,-2927294 ;APPAL
;PLYR2 (on PLYR1)
.float 1728,-177,2875 ;GG
.float -1929780,4638,583767 ;SF
.float -2611381,13982,-627690 ;H280
.float -3276459,15050,-1078966 ;RW
.float -2257834,21013,-1157630 ;BH
.float -2426125,10798,-2163396 ;LA
.float -4121699,20312,-3600288 ;DV
.float -4074714,24350,-3414037 ;AZ
.float -2802209,12410,-3355048 ;GC
.float -2466458,6193,-4563828 ;IOWA
.float -3157144,-9607,-4101204 ;CH
.float -3515279,-3107,-3574450 ;IN
.float -2353891,-16335,-2928112 ;APPAL
.bss PLY2CAR,1
*----------------------------------------------------------------------------
*Communications drone
*
*
*
COMM_DRONE:
.if CDEBUG
CMPI -1,R0
BEQ $
.endif
LDI R0,AR1
CMPI 4,AR1
LDIEQ JEEP_MOD,R0
CMPI 5,AR1
LDIEQ PLYR_SBUS_MOD,R0
CMPI 6,AR1
LDIEQ PLYR_COPCAR_MOD,R0
CMPI 7,AR1
LDIEQ 3,R0
DOGENRLB
STI R0,*+AR7(DELTA_MODEL)
LDI R0,AR2
LDI R0,AR5
MPYI VEHTAB_SIZE,AR2
ADDI @VEHICLE_TABLEI,AR2
LDI *+AR2(VEHTAB_MODEL),AR2
CALL OBJ_GETE
BC SUICIDE
LDI AR0,AR4
*STORE OBJECT POINTER
STI AR4,@PLY2CAR
LDI R4,AR1
ADDI @RACER_PTRI,AR1
STI AR4,*AR1
LDI AR5,AR2
CALL VEHICLE_ANI_INIT
CALL DELTA_OINIT
*SET PROPER PALETTE
; LDI *+AR7(INITINDEX),AR0
;
; LDI *+AR0(RD_PALETTE),R0
; BZ NOOTHERPAL
;
; LDI R0,AR2
; CALL PAL_FIND_RAW
; STI R0,*+AR4(OPAL)
; ORM O_1PAL,*+AR4(OFLAGS)
;NOOTHERPAL
LDI 1,R0
STI R0,*+AR5(CAR_OM) ;SET OTHER MACHINES VEHICLE FLAG
LDF *+AR5(CARRDFR),R0
MPYF 1.5,R0 ;OFFROAD = 1.5X ONROAD
STF R0,*+AR5(CAROFRDFR)
LDI *+AR7(INITINDEX),AR0
LDF *+AR0(RD_XLANE),R0
STF R0,*+AR7(DELTA_XLANE)
STF R0,*+AR7(ROADOFFSET)
LDI 2,R2 ;SET LANE STATUS
FLOAT 600,R1
CMPF R1,R0
LDIGT 3,R2
STI R2,*+AR7(DELTA_STATUS)
LDF 1.0,R0 ;FOR ATTRACT ALWAYS 1 DIFFICULTY
MPYF *+AR0(RD_MAXACCEL),R0
STF R0,*+AR5(CARMAXACCEL) ;SET ACCEL POWER
LDF *+AR0(RD_REL),R0
STF R0,*+AR7(RELATIVITY) ;SET RELATIVITY COEFFICIENT
*
*INIT POSITION N ROAD PIECES FROM BEGINNING
*
LDI @DYNALIST_TRUEBEGIN,AR2
LDI *+AR2(OUSR1),R0
ANDN 0FFh,R0
LDI *+AR2(OLINK4),AR2 ;SKIP FIRST GROUP
LDI *+AR0(RD_POSITION),AR3 ;NUMBER OF PIECES AHEAD
CALL SPOS_INIT ;INIT STARTING POSITION
;initialize Ytheta to the intentional direction
STF R2,*+AR4(ORADY)
STF R2,*+AR5(CARYROT)
STF R2,*+AR5(CARVROT)
LDI AR4,AR2
ADDI OMATRIX,AR2
CALL FIND_YMATRIX
LDI DRONE_C|VEHICLE_T|DRNE_RACER,R0
STI R0,*+AR4(OID)
STI R0,*+AR5(CAR_ID)
STI R0,*+AR7(PID)
*INIT THROTTLE AND BRAKE
CLRF R0
STF R0,*+AR5(CARBRAKE)
STF R0,*+AR5(CARSPEED)
LDF 0.44,R0
STF R0,*+AR5(CARTRACTION)
LDF 1.0,R0
STF R0,*+AR7(DELTA_THROTTLE)
STF R0,*+AR7(POWERSURGE)
LDF 0.05,R0
CALL FRAND
ADDF 1.20,R0
STF R0,*+AR7(POWERCATCH) ;BLAST FROM START RANDOM TIME
LDI 120,R0 ;WAIT A LITTLE BEFORE UPDATE
STI R0,*+AR7(SURGETIME)
STI R0,*+AR7(CATCHTIME)
LDI 0,R0
STI R0,*+AR7(STEALTHMODE) ;NO STEALTH INIT
LDI AR4,AR2
CALL OBJ_PULL
CALL OBJ_INSERT
LDI *+AR4(OCARBLK),AR5
LDI *+AR4(OCARBLK),R3 ;GET CAR DATA AREA
CALL CAR_ROAD_COLL ;MAKE SORT WORK RIGHT
LDF *+AR5(CARYROT),R2
LDI @MATRIXAI,AR2
CALL FIND_YMATRIX
LDI AR4,R2
ADDI OMATRIX,R2
LDI R2,R3
CALL CONCATMAT ;FIX THE MATRIX
LDL h2p1,AR2
LDI *+AR7(DELTA_INIT),R0
CMPI 8,R0
BEQ NNDDF3
LDL h2p2,AR2
NNDDF3 CALL OBJ_GETE
LDI AR0,AR2
LDI AR0,AR6
STI AR0,@COMM_DRONE_PTR
CALL OBJ_INSERT
LDI 1,R1
LS O_3DROT_B,R1
LDI *+AR6(OFLAGS),R0
OR O_IROT|O_1PAL|O_NOROT,R0
OR R1,R0
STI R0,*+AR6(OFLAGS)
LDL H2HPAL1,AR2
CALL PAL_FIND_RAW
STI R0,*+AR6(OPAL)
LDI *+AR7(DELTA_INIT),R0
STI R0,*+AR6(OCARBLK)
CMPI @PLY2CAR,AR4
BNE NOTPLYR
LDI @CHOSEN_RACE,R0
CMPI RACE_APPL,R0
BGT NOTPLYR ;washington DC doesn't count
MPYI 3,R0
LDI 0,AR2
LDI @DIPRAM,R1
TSTB CMDP_MASTER,R1
;Z == MASTER
LDIZ 39,AR2
ADDI R0,AR2
ADDI @STARTUP_POS_TABLEI,AR2
; LDF *AR2++,R0
; STF R0,*+AR4(OPOSX)
; LDF *AR2++,R0
; STF R0,*+AR4(OPOSY)
; LDF *AR2++,R0
; STF R0,*+AR4(OPOSZ)
; LDI AR4,AR2
; CALL OBJ_PULL
; CALL OBJ_INSERT
NOTPLYR
CLRI R5 ;blink counter
COMMDRNE_LP
PUSH R5
PUSH AR6
LDI *+AR4(OCARBLK),R3 ;GET CAR DATA AREA
PUSH AR4
PUSH AR5
CALL ROADSCAN ;MAKE SORT WORK RIGHT
POP AR5
POP AR4
POP AR6
POP R5
CALL SEND_OM_TRACK
SLEEP 1
BU COMMDRNE_LP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
COMM_DRONE_PTR_SORT:
LDI @COMM_DRONE_PTR,AR6
LDI @PLY2CAR,AR4
REGULAR LDI *+AR4(ODIST),IR1
ASH -4,IR1 ;quickly divide by 16
LDI @INVTABI,AR2 ;inverse table dedicated ptr
LDF *+AR2(IR1),R0
CALL INV_F30
CMPF 16,R0 ;
LDFLT 16,R0 ;
STF R0,*+AR6(OMAT00)
STF R0,*+AR6(OMAT11)
STF R0,*+AR6(OMAT22)
LDF *+AR4(OPOSX),R0
STF R0,*+AR6(OPOSX)
LDF *+AR4(OPOSY),R0
FLOAT 35,R1
MPYF *+AR6(OMAT00),R1
SUBF R1,R0
SUBF 20,R0
STF R0,*+AR6(OPOSY)
LDF *+AR4(OPOSZ),R0
STF R0,*+AR6(OPOSZ)
LDI AR6,AR2
CALL OBJ_PULL
LDI *AR4,R0
STI R0,*AR6
STI AR6,*AR4
LDI *+AR4(OFLAGS),R0
AND O_LIST_M,R0
OR *+AR6(OFLAGS),R0
STI R0,*+AR6(OFLAGS)
;
; CALL OBJ_INSERT
RETS
*----------------------------------------------------------------------------
.globl OM_DRONE
*----------------------------------------------------------------------------
*
*OTHER MACHINE DRONE LOOP
*
OM_DRONE:
LDI 1,R0 ;OTHER GUYS CAR NOW....
STI R0,*+AR5(CAR_OM)
OM_DRONEL
LDI *+AR4(OCARBLK),R3 ;GET CAR DATA AREA
PUSH AR4
PUSH AR5
CALL ROADSCAN ;MAKE SORT WORK RIGHT
POP AR5
POP AR4
LDF 0,R0 ;CLEAR OUT SOME SHIT
STF R0,*+AR5(CARDROT)
STF R0,*+AR5(CARSPRAD)
STF R0,*+AR5(CARSKID)
LDF *+AR5(CARYROT),R0
STF R0,*+AR4(ORADY) ;STORE CAR OBJECT RADY
LDI 0,R0
STF R0,*+AR5(CAR_SPIN)
******************************
*TEST FOR NO UPDATE
LDI 0,R0
STI R0,*+AR5(CARUPD)
SLEEP 1
LDI *+AR5(CARUPD),R0
BNE DRONELL
NOP
DRONELL
************
B OM_DRONEL
*----------------------------------------------------------------------------
.END

1519
COMMQ.ASM Executable file

File diff suppressed because it is too large Load Diff

702
COMP.ASM Executable file
View File

@ -0,0 +1,702 @@
.FILE "COMP.ASM"
*----------------------------------------------------------------------------
*DECOMPRESSION SYSTEM
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include C30.EQU
.include MACS.EQU
.include MPROC.EQU
.include VUNIT.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.bss PADDING,50
.bss DECOMP_ACTIVE,1
.bss HARD_SECTION_LOAD,1
.bss FLUSH_COUNT,1
.bss PACIFY_COUNT,1
PACIFY_MOMENT .set 2048
;PACIFY_MOMENT .set 512
*----------------------------------------------------------------------------
*REGISTER ALLOCATION
*
*AR0 SADDR (source addr or bitstream)
*AR1 DADDR (dest addr)
*AR2 scratch
*AR3 DICTI
*AR4 scratch
*AR5 scratch
*AR6 CURRENT_CODE_BITS
*AR7 BIT_ADDR
*
*R0 scratch
*R1 scratch
*R2 scratch
*R3 PUTC_SH
*R4 new_code
*R5 old_code
*R6 character
*R7 BUFCNT
*
*
*IR0 CHARACTER (offset)
*IR1 PUTC_BUF
*BK NEXT_CODE
*
*RC count
*RS
*RE
*
*
PUTC_SH EQU R3
PUTC_BUF EQU IR1
new_code EQU R4
old_code EQU R5
character EQU R6
bufcnt EQU R7
count EQU RC
retval EQU R0
BIT_ADDR EQU AR7
CURRENT_CODE_BITS EQU AR6
NEXT_CODE EQU BK
*
*
BITS .set 12
MAX_CODE .set (( 1 << BITS) -1 )
TABLE_SIZE .set 4421
END_OF_STREAM .set 256
BUMP_CODE .set 257
FLUSH_CODE .set 258
FIRST_CODE .set 259
UNUSED .set -1
*
*
*STRUCT dictionary
PARENT_CODE .set 0 ;UH LOWER HALF
CODE_VALUE .set 0 ;UH UPPER HALF
CHARACTER .set TABLE_SIZE ;UH LOWER 8 (bitchen jive techn.)
DICT_SIZ .set 2 ;SIZ
*ENDSTRUCT
CPU_WSI .word CPU_WS
DICTI .word DICT
DECODE_STACKI .word DECODE_STACK
hibss DICT,TABLE_SIZE*DICT_SIZ
hibss DECODE_STACK,TABLE_SIZE
.bss NEXT_BUMP_CODE,1
LINEBUFFERI .word LINEBUFFER
lobss LINEBUFFER,64
*----------------------------------------------------------------------------
*
*BIT_ADDR
*SADDR
*CURRENT_CODE_BITS
*
*
*
INPUT_BITS:
ADDI CURRENT_CODE_BITS,BIT_ADDR,R0
IFI R0,GT,31,MULTIWORD
LDI *AR0,R0 ;get data
LSH BIT_ADDR,R0
LDI CURRENT_CODE_BITS,R1
SUBI 32,R1
LSH R1,R0
ADDI CURRENT_CODE_BITS,BIT_ADDR
RETS
MULTIWORD
LDI *AR0++,R1
LSH BIT_ADDR,R1 ;left justify
LDI 32,R0
SUBI BIT_ADDR,R0 ;how many bits in 1st word
LDI CURRENT_CODE_BITS,R2
SUBI R0,R2 ;bits remaining in second word
LDI R2,BIT_ADDR
LDI *AR0,R0
SUBI 32,R2
LSH R2,R0 ;second word now is right justified w/proper bits
LDI CURRENT_CODE_BITS,R2
SUBI 32,R2
LSH R2,R1
OR R1,R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*PARAMETERS
* R0 CHARACTER (BYTE) TO OUTPUT
* AR1 DADDR
*
*
PUTC:
LDI @LINEBUFFERI,AR2
ADDI bufcnt,AR2
INC bufcnt
STI PUTC_BUF,*AR2 ;for AR timing
CLRI PUTC_BUF
CLRI PUTC_SH
CMPI 64,bufcnt
RETSLT
; LDP @_newbut
; NOT @_newbut,R0
; TSTB SW_DIAG,R0
; BNZ ENTER_DIAG
; LDP @DIPRAM
; NOT @DIPRAM,R0
; TSTB DIP_DIAG,R0
; BNZ ENTER_DIAG
.if DEBUG
LDI 0A0h,AR2
LS 16,AR2
CMPI AR2,AR1
SLOCKON LT,"COMP\PUTC ATTEMPT UNDER WRITE OF WAVERAM"
LDI 0BFh,AR2
LS 16,AR2
CMPI AR2,AR1
SLOCKON GT,"COMP\PUTC ATTEMPT OVER WRITE OF WAVERAM"
.endif
;PACIFY
LDI @PACIFY_COUNT,R0
ADDI 64,R0
STI R0,@PACIFY_COUNT
;
CLRI bufcnt
PUSH AR4
LDI @LINEBUFFERI,AR4
CLRI AR2 ;for dummy read
PUSH ST ;this push must be here
PUSH RC
PUSH RE
PUSH RS
PUSH R7
PUSH IE
LDP @COMMINTM
LDI @COMMINTM,IE
SETDP
; PUSH IE ;disable interrupts
; LDI 0,IE ;watch for pipeline conflicts
LDI HARD_WS,R0
LDI SOFT_WS,R1
; AND 0DFFFh,ST ;turn off GIE.
; POP IE
LDP @CPU_WS
STI R0,@CPU_WS ;set hard wait states
LDI 63,RC
LDI -16,R7
RPTB WVWRLP2
LDI *AR4,R2 ;read from the buffer
STI R2,*AR1++ ;write to wave ram
LSH R7,*AR4++,R2 ;read/shift right
WVWRLP2 STI R2,*AR1++ ;write to wave ram
LDI *AR4,R2 ;DUMMY READ TO CLEAR THE LINE
STI R1,@CPU_WS ;set soft wait states
SETDP
POP IE
POP R7 ;this pop sequence must be here
POP RS
POP RE
POP RC
POP ST
BUD ENABLEGIE
POP AR4
CLRI PUTC_BUF
CLRI PUTC_SH
;----> BUD ENABLEGIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* AR4 SADDR
* AR5 DADDR
*
*
DECOMPRESS:
CALL PUSHALL
;
;NEW ADDITION. DONT F*CK THE WAVERAM
;
FIFO_CLRP R0 ;IS THE FIFO CLEAR
DMA_WT R0
CALL FIFO_RESET
;
;
LDI 1,R0
STPI R0,@DECOMP_ACTIVE
CLRI R0
STPI R0,@FLUSH_COUNT
LDI AR4,AR0 ;SADDR
LDI AR5,AR1 ;DADDR
CLRI bufcnt
LDI @DICTI,AR3
LDI CHARACTER,IR0
CLRI BIT_ADDR
CLRI PUTC_BUF
CLRI PUTC_SH
CALL SAVE_DECOMP_REGS
LDI @HARD_SECTION_LOAD,R0
BZ NOHARDLOAD
CALL DECOMPRESS_PROC
NOHARDLOAD
CALL POPALL
RETS
DECOMPRESS_TOPLP
; LDI @FLUSH_COUNT,R0
; INC R0
; STPI R0,@FLUSH_COUNT
; IFI R0,LT,3,DECOMPRESS_TOPLP3
; CLRI R0
; STPI R0,@FLUSH_COUNT
CALL FEED_WATCHDOG
;
LDI @PACIFY_COUNT,R0
CMPI PACIFY_MOMENT,R0
BLT DECOMPRESS_TOPLP3
;
LDI @HARD_SECTION_LOAD,R0
BZ CONT
LDI @BOOT_PACIFY_SCREEN_P,R0
CALLNZ BOOT_PACIFY_SCREEN
BU DECOMPRESS_TOPLP3
CONT
CALL SAVE_DECOMP_REGS
CALL POPALL
; CALL ENABLEGIE
RETS
DECOMPRESS_PROC:
LDI @DECOMP_ACTIVE,R0
RETSZ
;
;NEW ADDITION. DONT F*CK THE WAVERAM
;
FIFO_CLRP R0 ;IS THE FIFO CLEAR
DMA_WT R0
CALL FIFO_RESET
;
;
;PACIFIER
CLRI R0
STPI R0,@PACIFY_COUNT
;
; PUSH IE ;disable interrupts
; LDI 0,IE ;watch for pipeline conflicts
; LDI HARD_WS,R0
; LDI SOFT_WS,R1
; AND 0DFFFh,ST ;turn off GIE.
; POP IE
DECOMPRESS_TOPLP2
CALL PUSHALL
CALL RESTORE_DECOMP_REGS
; CALL FEED_WATCHDOG
DECOMPRESS_TOPLP3
LDI FIRST_CODE,NEXT_CODE
LDI 9,CURRENT_CODE_BITS
LDI 511,R0
STPI R0,@NEXT_BUMP_CODE
CALL INPUT_BITS ;returns in R0
LDI R0,old_code ;old_code = INPUTBITS()
IFI old_code,EQ,END_OF_STREAM,DECOMPRESSX
LDI old_code,character ;character = old_code
;redun LDI old_code,R0
LSH PUTC_SH,R0 ;this is inlined!
OR R0,PUTC_BUF ;
ADDI 8,PUTC_SH ;
CMPI 32,PUTC_SH ;
CALLGE PUTC
; CALL PUTC ;
DECOMPRESSLP
CALL INPUT_BITS
LDI retval,new_code
CMPI END_OF_STREAM,new_code
BEQ DECOMPRESSX
CMPI FLUSH_CODE,new_code
BEQ DECOMPRESS_TOPLP
CMPI BUMP_CODE,new_code
BNE NOBUMP
INC CURRENT_CODE_BITS
BU DECOMPRESSLP
NOBUMP
CMPI NEXT_CODE,new_code
BLTD NODS
LDP @DECODE_STACKI
LDI @DECODE_STACKI,AR4
CLRI count
; NOP
;----> BLTD NODS
BUD NODSRT
STI character,*AR4++ ;decode_stack[0] = character
LDI 1,count ;count
LDI old_code,AR5 ;code
;----> BUD NODSRT
NODS
; CLRI count
LDI new_code,AR5
NODSRT
IFI AR5,LE,255,DECODEL1i ;while( code > 255) {
DECODEL3i
ADDI AR3,AR5
LDI *+AR5(IR0),R0 ;CHARACTER
STI R0,*AR4++ ;decode_stack[ count++] = DICT[ code].character
INC count ;must keep counter correct
LDI *+AR5(PARENT_CODE),AR5 ;code = DICT[code].parent_code
CMPI 255,AR5
BGT DECODEL3i
DECODEL1i
LDI AR5,character
LDI AR5,R0 ;setup the first write
RPTB BLOOPER
LSH PUTC_SH,R0 ;this is inlined!
OR R0,PUTC_BUF ;
ADDI 8,PUTC_SH ;
CMPI 32,PUTC_SH ;
CALLGE PUTC
;CALL PUTC
BLOOPER LDI *--AR4,R0 ;and this becomes a pre-decrement
ADDI NEXT_CODE,AR3,AR2
STI old_code,*+AR2(PARENT_CODE) ;DICT[next_code].parent = old_code
BUD DECOMPRESSLP
STI character,*+AR2(IR0) ;DICT[next_code].character = character
INC NEXT_CODE
LDI new_code,old_code
;----> BUD DECOMPRESSLP
DECOMPRESSX
CLRI R0
STPI R0,@DECOMP_ACTIVE
STPI R0,@HARD_SECTION_LOAD
CALL POPALL
RETS
*----------------------------------------------------------------------------
SAVESPCI .word SAVESPC+1
.bss SAVESPC,25
*----------------------------------------------------------------------------
SAVE_DECOMP_REGS:
LDP @SAVESPC
STI AR0,@SAVESPC
LDI @SAVESPCI,AR0
STI AR1,*AR0++
STI AR2,*AR0++
STI AR3,*AR0++
STI AR4,*AR0++
STI AR5,*AR0++
STI AR6,*AR0++
STI AR7,*AR0++
STI R1,*AR0++
STI R2,*AR0++
STI R3,*AR0++
STI R4,*AR0++
STI R5,*AR0++
STI R6,*AR0++
STI R7,*AR0++
STI RC,*AR0++
STI RE,*AR0++
STI RS,*AR0++
STI IR0,*AR0++
STI IR1,*AR0++
STI BK,*AR0++
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
RESTORE_DECOMP_REGS:
LDI @SAVESPCI,AR0
LDI *AR0++,AR1
LDI *AR0++,AR2
LDI *AR0++,AR3
LDI *AR0++,AR4
LDI *AR0++,AR5
LDI *AR0++,AR6
LDI *AR0++,AR7
LDI *AR0++,R1
LDI *AR0++,R2
LDI *AR0++,R3
LDI *AR0++,R4
LDI *AR0++,R5
LDI *AR0++,R6
LDI *AR0++,R7
LDI *AR0++,RC
LDI *AR0++,RE
LDI *AR0++,RS
LDI *AR0++,IR0
LDI *AR0++,IR1
LDI *AR0++,BK
LDP @SAVESPC
LDI @SAVESPC,AR0
RETS
*----------------------------------------------------------------------------
MIN_X .set 240 ;if this changes modify CUSA.ASM
MAX_X .set 300
BOOT_PACIFY_SCREEN_P .word 1
.bss PREVX,1
.bss DELTA,1
;PREVX .word MIN_X
;DELTA .word 1
*----------------------------------------------------------------------------
BOOT_PACIFY_SCREEN:
CALL SAVE_DECOMP_REGS
LDI @PREVX,R6
LDI R6,AR2
LDI R6,R3
LDI 111,R2
LDI 116,RC
; LDI @DELTA,R0
; LDILT 0,RS
; LDIGT 11,RS
LDI 0,RS
CALL _line
LDI @PREVX,R6
LDI @DELTA,R7
ADDI R7,R6
STI R6,@PREVX
LDI R6,AR2
LDI R6,R3
LDI 111,R2
LDI 116,RC
LDI 3,RS
CALL _line
LDI @PREVX,R6
CMPI MIN_X,R6
BGT LL
LDI 1,R7
STPI R7,@DELTA
LL
CMPI MAX_X,R6
BLT LLL
LDI -1,R7
STPI R7,@DELTA
LLL
CALL RESTORE_DECOMP_REGS
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*SECTION LOAD REQUEST
* IF ACTIVE THEN REQUEST IS QUEUED BY CREATING A PROCESS
*
*
*PARAMETERS
* AR2 POINTER TO SECTION CONTROL
*
.bss LASTLOAD,1 ;CACHE THE LAST LOAD
LOAD_SECTION_REQ:
PUSH AR4
PUSH AR5
LDI @DECOMP_ACTIVE,R0
BZ NOWTLD
;a decompression is executing, queue the request
;
;
PUSH R2
PUSH AR0
PUSH AR4
LDI AR2,AR4
CREATE REQWAIT,SPAWNER_C|LOAD_REQ_T
POP AR4
POP AR0
POP R2
BU NOLOAD
NOWTLD
; LDI @LASTLOAD,AR0
; CMPI AR0,AR2
; BEQ NOLOAD
; STI AR2,@LASTLOAD
LDI *AR2++,AR4
LDI *AR2++,AR5
CALL DECOMPRESS
NOLOAD
POP AR5
POP AR4
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
REQWAIT:
SLEEP 1
LDI @DECOMP_ACTIVE,R0
BNZ REQWAIT
LDI AR4,AR2
CALL LOAD_SECTION_REQ
DIE
*----------------------------------------------------------------------------
.END

38
CORN.POL Executable file
View File

@ -0,0 +1,38 @@
* h2h.pol
*
* Copyright (C) 1995 by TV Games, Inc.
* All Right Reserved
*
;head2head
;we are about 485 lines, so lets say 490
;befa00 == 1efa00 == line(15860)
;
;corn flakes shit
;about 200 lines long, but not to clobber
;head2head shit
;
;line(15660) ((* 64))
;
;
.vect C14400
.blow 809C00
.caddr C16800
.startpos 0,0,0
.startrad 0
.tyco \m\dc;\m\rm;\m\gg;\m\sf;\m\pch;\m\dv;\m\tun;\m\phoe1;\m\gc;\m\mw;\m\appl;\m\ch;
.sect corn,AF4B00
.dir hed2hed
cornpops
.dir

38
CORN/CORN.POL Executable file
View File

@ -0,0 +1,38 @@
* h2h.pol
*
* Copyright (C) 1995 by TV Games, Inc.
* All Right Reserved
*
;head2head
;we are about 485 lines, so lets say 490
;befa00 == 1efa00 == line(15860)
;
;corn flakes shit
;about 200 lines long, but not to clobber
;head2head shit
;
;line(15660) ((* 64))
;
;
.vect C14400
.blow 809C00
.caddr C16800
.startpos 0,0,0
.startrad 0
.tyco \m\dc;\m\rm;\m\gg;\m\sf;\m\pch;\m\dv;\m\tun;\m\phoe1;\m\gc;\m\mw;\m\appl;\m\ch;
.sect corn,AF4B00
.dir hed2hed
cornpops
.dir

3
CORN/DO.BAT Executable file
View File

@ -0,0 +1,3 @@
pcomp corn -s -m
move objects.asm cornobj.asm
move objects.equ cornobj.equ

27
CORN/OBJECTS.ASM Executable file
View File

@ -0,0 +1,27 @@
.FILE "OBJECTS.ASM"
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
.def _PALLIST,_PALROM
.bss _PALLIST,256
_PALROM:
.word 0C14400h
.globl TYCO_TRKI
TYCO_TRKI: .word 00h
.globl ROAD_MAPI
ROAD_MAPI: .word 00h
;SECTION DATA
.globl _SECcorn
_SECcorn: ;(15779 lines, 98.62%)
.word 0C16800h ;Src (Compressed) Addr
.word 0BE9600h ;Dest Addr
.globl corn_PALETTES
corn_PALETTES:
.word 0,0

21
CORN/OBJECTS.EQU Executable file
View File

@ -0,0 +1,21 @@
*OBJECTS.EQU
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
num_palettes .set 1
cornpops_p .set 0
num_objects .set 1
cornpops .set 0C14482h
cornpops_I .set 03D2Ch
num_sections .set 1
;corn .set 0AF4B00h ;1DC0
.globl _SECcorn
.globl corn_PALETTES

12
CORN/OBJECTS.MAP Executable file
View File

@ -0,0 +1,12 @@
----------------
Symbol Table
----------------
Name Type Addr Name Type Addr
------ ---- ------ ------ ---- ------
corn sect AF4B00 cornpops pal C14400
cornpops pal C14400 cornpops vector C14482
[3 symbols]

79
CORN/PCOMP.XRF Executable file
View File

@ -0,0 +1,79 @@
PComp v2.41
Copyright (C) 1994 by TV Games, Inc. All Rights Reserved
File: corn.pol
Compiled: Tue Jan 31 15:49:06 1995
Vector_ADDR( 0C14400h)
Blist_ADDR( 0809C00h)
Compressed_ADDR( 0C16800h)
Section Compressed Locations and Sizes
Section Name Address Length
vector C14400h 0000FDh 253 ( 0kb)
corn C16800h 000B71h 2929 ( 11kb)
Statistics
vertices = 28
polygons = 13
objects = 1
groups = 0
palettes = 1
GTMs = 0
track sections = 0
pixels = 30464
sections = 1
compression ratio = 2.60 to 1
Avg vertices/object = 28.00
Avg polygons/object = 13.00
Number of objects = 1
Approximate binary size of object space: 124 words (0kB)
Avg objects/group = -nan
Number of groups = 0
Approximate binary size of group space: 0 words (0kB)
Avg entries/palette = 256.00
Number of palettes = 1
Approximate binary size of palettes: 130 words
119 lines, 0% capacity
Section Costs
Name Vsize Wsize YLines Pals Max_Lines Max_Pals
corn 253 7616 119 0 119 0
Vtotal = 253 (0 3F4h) (0kb)
Wtotal = 7616 (0 7700h) (29kb)
List of Objects with Textures
Name Vsize Wsize (YLines) Accs Section
cornpops 124 7616 119 0 corn
Group Costs
Name Vsize Wsize YLines Objs
Vtotal = 0
Wtotal = 0
Largest Maps in system
YLines Image Name YLines Image Name
119 cornpops 119 cornpops
Groups not referenced on the track
No errors, No warnings

5
CORN/T Executable file
View File

@ -0,0 +1,5 @@
VUNIT-C30 RPD Loader Version 1.07
Copyright (C) 1994 by TV Games, Inc.
vector C14000,180 100
head2head C15000,1441 71%100

27
CORNOBJ.ASM Executable file
View File

@ -0,0 +1,27 @@
.FILE "OBJECTS.ASM"
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
; .def _PALLIST,_PALROM
; .bss _PALLIST,256
;_PALROM:
; .word 0C14400h
; .globl TYCO_TRKI
;TYCO_TRKI: .word 00h
; .globl ROAD_MAPI
;ROAD_MAPI: .word 00h
;
;SECTION DATA
.globl _SECcorn
_SECcorn: ;(15779 lines, 98.62%)
.word 0C16800h ;Src (Compressed) Addr
.word 0BE9600h ;Dest Addr
; .globl corn_PALETTES
;corn_PALETTES:
; .word 0,0

24
CORNOBJ.EQU Executable file
View File

@ -0,0 +1,24 @@
*OBJECTS.EQU
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
;num_palettes .set 1
;cornpops_p .set 0
;
;
;num_objects .set 1
cornpops .set 0C14482h
cornpops_I .set 03D2Ch
;num_sections .set 1
;corn .set 0AF4B00h ;1DC0
.globl _SECcorn
.globl corn_PALETTES
CORNPAL .set 0C14400h

BIN
CORNPOPS.GEO Executable file

Binary file not shown.

BIN
CORNPOPS.PTG Executable file

Binary file not shown.

BIN
CORNPOPS.TGA Executable file

Binary file not shown.

2259
CUSA.ASM Executable file

File diff suppressed because it is too large Load Diff

128
CUSA.CMD Executable file
View File

@ -0,0 +1,128 @@
/* Cruisin USA
*
* Copyright (C) 1994 by TV Games, Inc.
* All Rights Reserved
*
* LNK_OPTIONS=-q -ic:\c30tools
*/
-o e:cusa.out
-m e:cusa.map
e:bssstart.obj
/* SYSTEM MODULES */
e:dirq.obj /* transformation system THIS MUST BE THE FIRST .OBJ */
e:cusa.obj /* main loop, inits. */
e:mproc.obj /* multi-processor */
e:obj.obj /* object system */
e:pall.obj /* pallette system */
e:util.obj /* general utilities */
e:infin.obj /* infinity roiutines */
/*e:audits.obj*/
e:attrdrne.obj
e:attracta.obj
e:backgrnd.obj /* background system */
e:bonus.obj
e:chopper.obj
e:coin.obj
e:colla.obj /* Collision system */
e:comm.obj /* Communications */
e:commdrne.obj
e:commq.obj /* Communications Queue */
e:comp.obj /* memory */
e:cornobj.obj
e:delta.obj /* DELTA drone */
e:drones.obj
e:effects.obj
e:error.obj
e:flame.obj
e:heads.obj
e:hottub.obj
e:hpmath.obj /* High Precision Math */
e:hstdp.obj
e:hud.obj /* heads up display */
e:intro.obj
e:invtab30.obj /* inverse 1/Z table */
e:leg.obj
e:line.obj
e:map.obj
e:math.obj /* Math functions */
e:overlay.obj
e:plyr.obj
e:racer.obj /* RACER drone */
e:rho.obj /* RHO drone */
e:rroad.obj
e:roadblck.obj
e:roadkill.obj
e:routs.obj /* C runtime routines */
e:setups.obj
e:sigma.obj /* SIGMA drone */
e:snd.obj /* sound system */
e:sndtaba.obj /* sound data base */
e:smoke.obj
e:text.obj /* DMA text display */
e:texttab.obj /* DMA text tables */
e:trans.obj /* choose transmission */
e:tracksel.obj /* choose race */
e:totala.obj
e:wave.obj /* wave routines */
e:wheel.obj
e:h2hobj.obj
/* PCOMP Modules
*/
e:objects.obj
e:font.obj /* CPU font */
e:font1a.obj /* CPU text display */
/* CMOS related stuff
*/
e:cmos.obj
e:cointab.obj
e:memtest.obj
e:motion.obj
e:diag.obj
MEMORY
{
VECTOR : org = 0x000000, len = 0x040
FASTRAM : org = 0x000040, len = 0x1EFC0
PFASTRAM: org = 0x01F000, len = 0x007FF
FRAM : org = 0x8099DB, len = 0x200
THEROM : org = 0xC10000, len = 0x7FFF
}
SECTIONS
{
.text : {} > FASTRAM
.data : {} > FASTRAM
.cinit : {} > FASTRAM
.const : {} > FASTRAM
pbsss : {} > FASTRAM
pbss : {} > FASTRAM /* Protected bss (only clr'd at powerup) */
pbsse : {} > FASTRAM
lobss : {} > FASTRAM
.bss : {} > FASTRAM /* must start at a known location */
hibss : {} > FASTRAM /* DP doesn't care */
phibss : {} > PFASTRAM /* protected hi bss (commq buffers) */
oncram : {} > FRAM
THECODE : {} > THEROM
THEDATA : {} > THEROM
TWODATA : {} > THEROM
}

5
DATE.ASM Executable file
View File

@ -0,0 +1,5 @@
.globl DATE_STAMP
DATE_STAMP:
.string "WED MAR 15 10:52:28 1995",0

287
DELTA.ASM Executable file
View File

@ -0,0 +1,287 @@
.FILE "DELTA.ASM"
*----------------------------------------------------------------------------
*DELTA DRONE
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include C30.EQU
.include OBJ.EQU
.include MACS.EQU
.include MPROC.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.include DELTA.EQU
.text
*----------------------------------------------------------------------------
*GENERAL DRONE OBJECT INITIALIZATION
*
*PARAMETERS
* AR4 OBJECT (NOT INSERTED)
* AR7 PROCESS (DELTA STYLE)
*RETURNS
* AR5 CAR BLOCK
*
DELTA_OINIT:
LDI *+AR7(DELTA_MODEL),R0
CALL _CARV0 ;RETURNS BLOCK PTR IN AR0
LDI AR4,AR2
CALL OBJ_INSERT
CALL ADD_DRONE
STI AR7,*+AR4(OPLINK)
LDI 1,R0
LS O_PROC_B,R0
OR *+AR4(OFLAGS),R0
STI R0,*+AR4(OFLAGS)
LDI DM_NORMAL,R0
STI R0,*+AR7(DELTA_MODE)
LDI *+AR4(OCARBLK),AR5
LDF THROTTLE_INIT,R0 ;INITIALIZE THROTTLE AND BRAKE
STF R0,*+AR5(CARTHROTTLE)
CLRF R0
STF R0,*+AR5(CARBRAKE)
LDF MAX_ACCEL_INIT,R0
STF R0,*+AR5(CARMAXACCEL) ;SET ACCEL POWER
LDF 1.0,R0
STF R0,*+AR7(DELTA_THROTTLE)
LDI 0101h,R0 ;SET THE STARTUP LAST KNOWN OID
STI R0,*+AR7(DELTA_LAST_OID)
LDI *+AR7(DELTA_MODEL),AR2
MPYI VEHTAB_SIZE,AR2
ADDI @VEHICLE_TABLEI,AR2
LDF *+AR2(VEHTAB_MASS),R0
STF R0,*+AR5(CARMASS)
LDI *+AR2(VEHTAB_DMODEL),R0
BZ NOTDEGRADE
STI R0,*+AR4(ODEGRADE_ROM)
LDI *+AR4(OFLAGS),R0
OR O_DEGRADE,R0
STI R0,*+AR4(OFLAGS)
LDI *+AR2(VEHTAB_DMODEL2),R0
BZ NOTDEGRADE
STI R0,*+AR4(ODEGRADE_ROM2)
LDI *+AR4(OFLAGS),R0
OR O_DEGRADE2,R0
STI R0,*+AR4(OFLAGS)
NOTDEGRADE
LDI *+AR4(OID),R0
CMPI DRONE_C|VEHICLE_T|DRNE_RHO,R0
BEQ NODYNAX1
LDI *+AR2(VEHTAB_DDYNATAB),R0
BZ NODYNAX1
LDI R0,AR2
CALL DDYNA_INIT
NODYNAX1
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*DDYNA_INIT
*
*DRONE (STRIPPED DOWN) DYNAMIC OBJECT
*
*GET DYNAMIC OBJECTS FOR A CAR
*
*PARAMETERS
* AR2 TABLE POINTER
* AR4 CAR OBJECT
*
DDYNA_INIT:
PUSH R1
PUSH R2
PUSH R6
PUSH AR0
PUSH AR2
PUSH AR3
LDI O_DYNAMIC,R0 ;MAKE PARENT OBJECT DYNAMIC
LDI *+AR4(OFLAGS),R1
TSTB R0,R1
BNZ VANIX
OR R0,R1
STI R1,*+AR4(OFLAGS)
;INITIALIZE CENTERXYZ,TRANSXYZ,VERTS
;
LDI AR4,AR3
ADDI ODYNALIST,AR3
LDI *AR2++,RC ;GET DYNAMIC OBJECT COUNT
DEC RC
LDI *AR2++,R6 ;GET NUMBER OF VERTICES
RPTB WHEELLP
CALL GETDYNA ;LINK HIM INTO LIST
STI AR0,*AR3
LDI *AR2++,R0
SUBI R0,R6
SUBI 1,R0
STI R0,*+AR0(DYNANVERTS)
FLOAT *AR2++,R0
STF R0,*+AR0(DYNACENTERX)
STF R0,*+AR0(DYNATRANSX)
FLOAT *AR2++,R0
STF R0,*+AR0(DYNACENTERY)
STF R0,*+AR0(DYNATRANSY)
FLOAT *AR2++,R0
STF R0,*+AR0(DYNACENTERZ)
STF R0,*+AR0(DYNATRANSZ)
WHEELLP LDI AR0,AR3
CALL GETDYNA ;LINK HIM INTO LIST
STI AR0,*AR3
SUBI 1,R6
STI R6,*+AR0(DYNANVERTS)
CLRF R0
STF R0,*+AR0(DYNACENTERX)
STF R0,*+AR0(DYNATRANSX)
STF R0,*+AR0(DYNACENTERY)
STF R0,*+AR0(DYNATRANSY)
STF R0,*+AR0(DYNACENTERZ)
STF R0,*+AR0(DYNATRANSZ)
LDI AR0,AR3
LDI 0,R0
STI R0,*AR3 ;LAST LINK IS ZERO, DUDES
ADDI DYNAMATRIX,AR0
CALL INITMAT
*GET A CAR PROCESS
LDI @DRONE_DANI_PROCI,AR2
LDI DRONE_C|ANI_T,R2 ;PID
CALL PRC_CREATE_CHILD
STI AR0,*+AR4(ORADZ) ;DOUBLING AS A PROC PTR
VANIX
POP AR3
POP AR2
POP AR0
POP R6
POP R2
POP R1
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*DRONE DYNA ANIMATION PROCESS
*
* SPINS WHEELS (ONLY!)
*
*PARAMETERS
* AR4 CAR OBJECT
* AR5 CAR BLOCK
* R6 X RADIANS ;FOR WHEEL SPIN
*USES
* AR3 DYNA OBJECT
* AR4 MASTER OBJECT
* AR5 CAR BLOCK
* AR6 DYNAMATRIX
* R4 OLD ORADY
* R5 Z RADIANS FOR BODY LEAN
* R6 X RADIANS FOR BODY LEAN
* R7 OLD CAR SPEED
* PDATA OLD CAR ORADY
* PDATA+1 BODY LEAN Z RADIANS
* PDATA+2 X RADIANS FOR WHEEL SPIN
*
DRONE_DANI_PROCI .word DRONE_DANI_PROC
DRONE_DANI_PROC:
LDI *+AR4(OCARBLK),AR5
LDF 0,R6 ;INIT SPIN RADIANS
STF R6,*+AR7(PDATA+2) ;SAVE WHEEL X RADIANS
LDF *+AR5(CARSPEED),R0 ;INIT SPEED
LDF R0,R7
CARPROCL
LDI 3,AR2 ;SLEEP TIME
LDI @SUSPEND_MODE,R0
CMPI SM_HALT,R0
BEQ CARSLP
LDI *+AR4(ODIST),R0
CMPI 20000,R0 ;FAR OFF JUST SLEEP
BGT CARSLP
;
;GET WHEEL SPIN MATRIX
;
LDF *+AR5(CARSPEED),R2
MPYF 0.02,R2 ;FUDGE FACTOR
ADDF *+AR7(PDATA+2),R2
STF R2,*+AR7(PDATA+2) ;SAVE WHEEL X RADIANS
LDI @MATRIXBI,AR2 ;GET X SPIN IN MATRIXB
CALL FIND_XMATRIX
LDI AR2,AR3 ;SAVE REAR WHEEL MATRIX PTR
;STUFF YOUR DYNAMIC MATRICES
;
LDI *+AR4(ODYNALIST),R0
SLOCKON Z,"DELTA\DRONE_DANI_PROC 1"
CDTOP
LDI R0,AR0
LDI *AR0,R0
BZ CARSLP
LDI AR0,AR2
ADDI DYNAMATRIX,AR2
;STUFF WHEEL
;
LDF *AR3++,R0
RPTS 7
LDF *AR3++,R0
|| STF R0,*AR2++
STF R0,*AR2++
NOP *AR3--(9)
LDI *AR0,R0
BNZ CDTOP
CARSLP
SLEEP 3
B CARPROCL
*----------------------------------------------------------------------------
.END

216
DELTA.EQU Executable file
View File

@ -0,0 +1,216 @@
*DELTA.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
DELTA_SAFETYWIDTH .set 850
DELTA_WIDTH .set 500
DELTA_HALF_WIDTH .set 300
DELTAX_MIN .set 0
;DELTAX_MAX .set 1920
;DELTAX_MAX_2LN .set 1050
DELTAX_MAX .set 2020
DELTAX_MAX_2LN .set 1050
MAX_DRONES .set 11 ;MAXIMUM DRONES IN UNIVERSE
.globl SUSPEND_MODE
;*** DELTA.ASM
.globl RACER_PTRI,RACER_PTR
.globl DELTA_OINIT
.globl GET_TRACK_POS
.globl GET_TRACK_POS_RVS
.globl GET_TRACK_POS_RVS_XLANE
.globl DELTA_GET_TRACK_POS
.globl DELTA_SUB_FUNCTION
.globl LANEPI,LANEP,LANESI,LANES,LANES4
.globl LANESI,LANES
.globl LANE2MLT,LANE4MLT
.globl VEHICLESI,VEHICLES
;*** SIGMA.ASM
.globl SIGMA_DRONE
;*** RHO.ASM
.globl RHO_DRONE
.globl RHO_DIE ;generalized drone die routine
;*** CHOPPER.ASM
.globl CHOPPER
;*** COPCAR.ASM
.globl AHEAD_OF_PLAYER_P
;*** DRONES.ASM
.globl REGISTER_RACER
.globl SET_DRONE_PAL
.globl TRAFFIC,GET_LANES,DIST_TO_PLYR
.globl INIT_TRACKING_PIECE,GET_TRACK_POS_RVS,GET_TRACK_POS,GET_TRACK_POS_RVS_XLANE
; .globl GET_STEALTH_POS
.globl SUB_FUNCTION_RVS,SUB_FUNCTION,SUB_FUNCTION_RVS_XLANE
.globl SUB_FUNCTION_XLANE
; .globl FIND_MAPENTRY
.globl INIT_DRONES,ADD_DRONE,FREE_DRONE
.globl PTS,FIND_PLYR_RANK
.globl PRECOLLIDE_PLYR
.globl DRONE_RIDE_RIGHT
.globl AVOID_CAR_OBSTACLES
.globl ROAD_MAPI ;TYCO.ASM
.globl RACER_GRID_START ;Starting Index
*STRUCT REGRAC
REGRAC_POSITION .set 0 ;UD THIS IS COMPUTED
REGRAC_OBJECT .set 1 ;UH PTR TO RACER #X OBJECT
REGRAC_CARBLOCK .set 2 ;UH PTR TO RACER #X CARBLOCK
REGRAC_PROC .set 3 ;UH PTR TO RACER #X PROCESS
*ENDSTRUCT
REGRAC_SIZE .set 4 ;SIZ
NUM_RACERS .set 8
.globl REGISTER ;(DRONES.ASM)
*SUSPEND_MODE
*
SM_GO .set 5577h ;REGULAR DRONE PROCESSING
SM_HALT .set 33BBh ;FREEZE DRONES ... DONT MOVE (COIN IN, ETC.)
THROTTLE_INIT .set 0.8
MIN_THROTTLE .set 0.35
MIN_FBTHROTTLE .set 0.65
MAX_THROTTLE .set 1.0
FREE_THROTTLE .set 0.65 ;MAX_THROTTLE-MIN_THROTTLE
;(TI ASM WONT ASSEMBLY FP CONSTANT MATH)
MAX_SIGMA_THROTTLE .set 0.50
MAX_COPCAR_THROTTLE .set 0.50
RHO_MAX_ACCEL_INIT .set 0.40 ;(0.82 == PLYR)
MAX_ACCEL_INIT .set 0.70 ;(0.82 == PLYR)
DELTA_MAX_ACCEL_INIT .set 0.90 ;(0.82 == PLYR)
*----------------------------------------------------------------------------
*STRUCT DELTA (WITHIN PROCESS BLOCK)
*
DELTA_STATUS .set PDATA+0 ;UH GENERAL STATUS
DELTA_RADYDELTA .set PDATA+1 ;UH Y theta Delta
DELTA_INIT .set PDATA+2 ;SD INITIAL POSITION PARAMETER
DELTA_THROTTLE .set PDATA+3 ;FL throttle level
DELTA_TPIECE .set PDATA+4 ;UH ROAD TRACKED PIECE
DELTA_MODE .set PDATA+5 ;UH TRACKING MODE FLAGS (NORMAL/STEALTH)
DELTA_SPTR .set PDATA+6 ;UH STEALTH POINTER
DELTA_LAST_OID .set PDATA+7 ;UH *LAST KNOWN OID TO SEARCH FOR
DELTA_PSTAT .set PDATA+8 ;UH 0=behind plyr, 1=ahead of plyr
DELTA_PLAYIT .set PDATA+9 ;UH WAY THE GAME IS BEING PLAYED
;
PLAYIT_LOGIC .set 0FF00h
KAMIKAZE .set 00200h
FALL_BACK .set 00300h
;
DELTA_LANE .set PDATA+10 ;FL LANE
DELTA_PLYRDIST .set PDATA+11 ;FL
DELTA_OPLYRDIST .set PDATA+12 ;FL
DELTA_MODEL .set PDATA+13 ;UD
DELTA_LANE_SWITCH_TMR .set PDATA+14 ;UD
DELTA_XLANE .set PDATA+15 ;UD extended lanes
DELTA_MIN_THROTTLE .set PDATA+16 ;FL
DELTA_MAX_THROTTLE .set PDATA+17 ;FL
DELTA_UPDATE_FL .set PDATA+18 ;UD comm update flag 1=just updated
;DELTA_OM .set PDATA+19 ;UD 1=Other Machine controls this vehicle
*ENDSTRUCT
SUBDRNSTRT .set PDATA+20
RHO_NOISE .set SUBDRNSTRT+0 ;UH FLG WHETHER IT HAS RAZZED THE PLYR
RHO_YELL .set SUBDRNSTRT+1 ;UH FLG WHETHER IT HAS YELLED THE PLYR
RHO_INIT .set SUBDRNSTRT+2 ;UH IDX INITIAL RHO TYPE
RHO_THETA .set SUBDRNSTRT+3 ;FL
RHO_THETA_DELTA .set SUBDRNSTRT+4 ;FL
RHO_AMP .set SUBDRNSTRT+5 ;FL
RHO_XHEAD .set SUBDRNSTRT+6 ;FL
SIGMA_ONCE .set SUBDRNSTRT+0 ;UH FLG THE DRONE HAS BEEN ON AT LEAST ONCE (BREAKDOWN FLAG)
SIGMA_YELL .set SUBDRNSTRT+1 ;UH FLG WHETHER PLYR HAS RAZZED THE SIGMA
SIGMA_MODEL .set SUBDRNSTRT+2
SIGMA_FLAG .set SUBDRNSTRT+3
;Change to make copcar compatible with the racers object avoidence routines
;ROADOFFSET .set SUBDRNSTRT ;TRACKING OFFSET TO CENTER OF ROAD
COPCAR_ONCE .set SUBDRNSTRT+1 ;UH FLG THE DRONE HAS BEEN ON AT LEAST ONCE (BREAKDOWN FLAG)
COPCAR_CHASE .set SUBDRNSTRT+2
COPCAR_REACTION .set SUBDRNSTRT+3 ;FL 0.1-1.0 DELTA_XLANE ratio tracking
COPCAR_SPEED_MOD .set SUBDRNSTRT+4 ;FL overtake speed varience
COPCAR_SIREN .set SUBDRNSTRT+5 ;UH sound call to use
ROADOFFSET .set SUBDRNSTRT ;TRACKING OFFSET TO CENTER OF ROAD
POWERSURGE .set SUBDRNSTRT+1 ;POWER SURGE VALUE
POWERCATCH .set SUBDRNSTRT+2 ;POWER CATCHUP VALUE
SURGETIME .set SUBDRNSTRT+3 ;TIMER FOR NEW SURGE
CATCHTIME .set SUBDRNSTRT+4 ;TIMER FOR NEW CATCHUP
STEALTHMODE .set SUBDRNSTRT+5 ;STEALTH MODE FLAG 0=NO,1=AHEAD,-1=BEHND
*----------------------------------------------------------------------------
;* = MUST BE INITIALIZED ON STARTUP
;
DM_MMODE .set 0FFh ;MODE MASK
DM_NORMAL .set 1 ;REGULAR DYNAfLEX TRACKING MODE
DM_STEALTH .set 2 ;STEALTH (MAP) TRACKING MODE (LINEAR)
DM_ST_BEYOND .set 100h ;ENTERED BECAUSE TO FAR AHEAD
DM_ST_BELOW .set 200h ;ENTERED BECAUSE TO FAR BEHIND
DELTA_STATUS_LANE .set 03h
*DELTA_SSTAT
* 0 Regular Player-Windowed Behavior
* 1 Ignore players movement
*
*MODELS
VETTE_MOD .set 0
HOTROD_MOD .set 1
BULLET_MOD .set 2
TESTOR_MOD .set 3
GTRUCK_MOD .set 4
FTRUCK_MOD .set 5
CBUS_MOD .set 6
COPCAR_MOD .set 7
MUSCLE_MOD .set 8
CARAVAN_MOD .set 9
SBUS_MOD .set 10
PTRUCKG_MOD .set 11
MUSTANG_MOD .set 12
;**reserved .set 13
JEEP_MOD .set 14
PLYR_COPCAR_MOD .set 15
PLYR_GTRUCK_MOD .set 16
PLYR_SBUS_MOD .set 17

4189
DIAG.ASM Executable file

File diff suppressed because it is too large Load Diff

327
DIAG.EQU Executable file
View File

@ -0,0 +1,327 @@
*DIAG.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
COL_WHITE .set 1
COL_GREY .set 2
COL_RED .set 3
COL_GREEN .set 4
COL_BLUE .set 5 ;paled for sky
COL_YELLOW .set 6
COL_CYAN .set 7
COL_BLACK .set 8
COL_TBLUE .set 9
COL_AMBER .set 10
COL_DGREY .set 11
COL_LGREY .set 12
COL_LGREY2 .set 13
COL_LGREY3 .set 14
COL_VDGREY .set 15
;COL_VDGREY .set 2
DEFAULT_COLOR .set COL_VDGREY
;DEFAULT_COLOR .set COL_GREY
;WT_START .MACRO
;wt67?
;; CALL DIAG_ACTIVEP
; LDI @_newbut,R0
; TSTB SW_DIAG,R0
; BNZ wt67?
; .ENDM
;
;WT_NSTART .MACRO
;wt67?
;; CALL DIAG_ACTIVEP
; LDI @_newbut,R0
; TSTB SW_DIAG,R0
; BZ wt67?
; .ENDM
*----------------------------------------------------------------------------
;BEEP .MACRO
; LDI 980,AR2
; CALL SENDSND
; .ENDM
;KEYPAUSE .MACRO
;WL1? CALL DIAG_ACTIVEP
;; LDP @_newbut
; NOT @_newbut,R0
; AND SW_DIAG,R0
; BZ WL1?
;WL2?
;; LDP @_newbut
; ; NOT @_newbut,R0
; ; AND SW_DIAG,R0
; ;; BNZ WL2?
; .ENDM
WAIT_MAC_NOREPEAT .MACRO
wt? LDI @_newbut,R0
AND SW_VOLPLUS|SW_VOLMINUS|SW_DIAG,R0
CMPI SW_VOLPLUS|SW_VOLMINUS|SW_DIAG,R0
BNE wt?
.ENDM
WAIT_MAC .MACRO
PUSH R1
LDI 5000,R1
MPYI 55,R1
wt?
DEC R1
BLT wtt?
LDI @_newbut,R0
AND SW_VOLPLUS|SW_VOLMINUS,R0
CMPI SW_VOLPLUS|SW_VOLMINUS,R0
BNE wt?
wtt?
POP R1
.ENDM
LINE .MACRO X1,Y1,X2,Y2,COLOR
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI :COLOR:,RS
CALL _line
.ENDM
FILL .MACRO X1,Y1,X2,Y2,COLOR
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI :COLOR:,RS
CALL _fill
.ENDM
FILLW .MACRO X1,Y1,W,H,COLOR
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X1:+:W:,R3
LDI :Y1:+:H:,RC
LDI :COLOR:,RS
CALL _fill
.ENDM
.globl MAKE_WINDOW
WINDOW .MACRO X1,Y1,X2,Y2
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
.globl MAKE_WINDOW
CALL MAKE_WINDOW
; LDI COL_LGREY,RS
; CALL _fill
;
; LDI :X1:,AR2
; LDI :Y1:,R2
; LDI :X2:,R3
; LDI :Y1:,RC
; LDI COL_LGREY2,RS
; CALL _line
;
; LDI :X1:,AR2
; LDI :Y1:,R2
; LDI :X1:,R3
; LDI :Y2:,RC
; LDI COL_LGREY2,RS
; CALL _line
;
; LDI :X2:,AR2
; LDI :Y1:,R2
; LDI :X2:,R3
; LDI :Y2:,RC
; LDI COL_DGREY,RS
; CALL _line
;
; LDI :X1:,AR2
; LDI :Y2:,R2
; LDI :X2:,R3
; LDI :Y2:,RC
; LDI COL_DGREY,RS
; CALL _line
.ENDM
IWINDOW .MACRO X1,Y1,X2,Y2
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
.globl MAKE_IWINDOW
CALL MAKE_IWINDOW
; LDI COL_LGREY,RS
; CALL _fill
;
; LDI :X1:,AR2
; LDI :Y1:,R2
; LDI :X2:,R3
; LDI :Y1:,RC
; LDI COL_DGREY,RS
; CALL _line
;
; LDI :X1:,AR2
; LDI :Y1:,R2
; LDI :X1:,R3
; LDI :Y2:,RC
; LDI COL_DGREY,RS
; CALL _line
;
; LDI :X2:,AR2
; LDI :Y1:,R2
; LDI :X2:,R3
; LDI :Y2:,RC
; LDI COL_LGREY2,RS
; CALL _line
;
; LDI :X1:,AR2
; LDI :Y2:,R2
; LDI :X2:,R3
; LDI :Y2:,RC
; LDI COL_LGREY2,RS
; CALL _line
.ENDM
IWINFR .MACRO X1,Y1,X2,Y2
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y1:,RC
; .globl MAKE_IWINFR
; CALL MAKE_IWINFR
LDI COL_DGREY,RS
CALL _line
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X1:,R3
LDI :Y2:,RC
LDI COL_DGREY,RS
CALL _line
LDI :X2:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI COL_LGREY2,RS
CALL _line
LDI :X1:,AR2
LDI :Y2:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI COL_LGREY2,RS
CALL _line
.ENDM
PIXEL .MACRO X,Y,COLOR
LDI :X:,AR2
LDI :Y:,R2
LDI :COLOR:,R3
CALL _pixel
.ENDM
GROUP .MACRO X1,Y1,X2,Y2
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y1:,RC
; .globl MAKE_GROUP
; CALL MAKE_GROUP
LDI COL_DGREY,RS
CALL _line
LDI :X1:+1,AR2
LDI :Y1:+1,R2
LDI :X2:-1,R3
LDI :Y1:+1,RC
LDI COL_LGREY2,RS
CALL _line
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X1:,R3
LDI :Y2:,RC
LDI COL_DGREY,RS
CALL _line
LDI :X1:+1,AR2
LDI :Y1:+1,R2
LDI :X1:+1,R3
LDI :Y2:-1,RC
LDI COL_LGREY2,RS
CALL _line
LDI :X2:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI COL_DGREY,RS
CALL _line
LDI :X2:-1,AR2
LDI :Y1:+1,R2
LDI :X2:-1,R3
LDI :Y2:-1,RC
LDI COL_LGREY2,RS
CALL _line
LDI :X1:+1,AR2
LDI :Y2:,R2
LDI :X2:-1,R3
LDI :Y2:,RC
LDI COL_LGREY2,RS
CALL _line
LDI :X1:+2,AR2
LDI :Y2:-1,R2
LDI :X2:-2,R3
LDI :Y2:-1,RC
LDI COL_DGREY,RS
CALL _line
.ENDM
RECT .MACRO X1,Y1,X2,Y2,COLOR
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI :COLOR:,RS
CALL _rectangle
.ENDM
RECTW .MACRO X1,Y1,W,H,COLOR
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X1:+:W:,R3
LDI :Y1:+:H:,RC
LDI :COLOR:,RS
CALL _rectangle
.ENDM

2836
DIRQ.ASM Executable file

File diff suppressed because it is too large Load Diff

71
DIRQ.EQU Executable file
View File

@ -0,0 +1,71 @@
*DIRQ.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*
*ALL INTERNAL RAM VARIABLES MUST BE DEFINED HERE, THIS .EQU IS NOT
*AUTOMATICALLY INCLUDED IN FILES (ALPHA.H) THEREFORE TO REFERENCE
*THESE VARIABLES YOU MUST ACTUALLY INCLUDE THIS FILE, OR ASSUME
*THAT THESE VARIABLES ARE EXTERNAL. - THE ONLY PROBLEM WITH ASSUMING
*EXTERNAL VARIABLES IS THAT YOU CAN NOT USE AN EXTERNAL VARIABLE IN
*A .SET STATEMENT.
*
*
*INTERNAL RAM VARIABLES
*
_CAMERAPOS .set RAM0+0 ;1x3 Camera position vector (floating point)
_CAMERAVEL .set RAM0+3 ;1x3 Camera velocity vector
_CAMERARAD .set RAM0+6 ;1x3 Camera radians vector
_CAMERAMATRIX .set RAM0+9 ;3x3 Camera rotation matrix
_LIGHT .set RAM0+18 ;1x3 universe illumination vector
;DIRQ PERCULIARITIES
;
TMPMAT .set RAM0+21 ;1x3 temp vector
ROTATION_MATRIX .set RAM0+24 ;3x3 translator matrix
TRANSVECTOR .set RAM0+33 ;1x3 translator vector
LOCTEMPER_MAT .set RAM0+36 ;3x3 scratch matrix for other routines
POSTERMATRIX .set RAM0+45 ;3x3 poster style matrix (X/Z) else Frnt face
;USER SPACE
;temporary user scratch space
;NOT intended for system use.
;
_MATRIXA .set RAM0+55 ;3x3 these are three 3x3 scratch matrixes
_MATRIXB .set RAM0+65 ;3x3 they may NOT be used by any routine
_MATRIXC .set RAM0+75 ;3x3 called via the interrupt
_VECTORA .set RAM0+85 ;1x3 ditto here except 1x3s
_VECTORB .set RAM0+90 ;1x3
_VECTORC .set RAM0+95 ;1x3
_VECTORD .set RAM0+100 ;1x3
CLIPRAM .set RAM0+137 ;(320w) RECURSIVE CLIP STACK(320 WORDS)
CLIPRAML .set 320
CLIPLIM .set RAM0+137+320-80 ;
;next_entry unknown .set RAM0+473+-??? ;(551 ??? remain)
;
;RAM0+512 to RAM0+1023
;is now reserved for use in FBSS space
;see mac.equ FBSS .macro definition for use, basically to allocate a space
;in ON-CHIP RAM use the example
; FBSS symbolname,size
;
;
;insert new variable definitions here
;
*EACH RAM BLOCK HAS 1024 WORDS
FASTSTK .set RAM1 ;256 WORDS
BLOWLIST .set RAM1+256 ;TRANSFORMED POINTS STORED (256 vertices) (768 WORDS)

3
DO.BAT Executable file
View File

@ -0,0 +1,3 @@
pcomp corn -s -m
move objects.asm cornobj.asm
move objects.equ cornobj.equ

1821
DRONES.ASM Executable file

File diff suppressed because it is too large Load Diff

444
EFFECTS.ASM Executable file
View File

@ -0,0 +1,444 @@
.FILE "EFFECTS.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include SYSID.EQU
.include GLOBALS.EQU
.include OBJECTS.EQU
*----------------------------------------------------------------------------
*ADVANCED FEATURES
*
*it would be best to do open and close via the same process
*also, sideways wipes // or \\ up, down, left or right can be specified
*via on word ala:
*
* SCW_OPEN .set 0
* SCW_CLOSE .set 1
* SCW_L .set 10h ;these specifiy the
* SCW_R .set 20h ;single panels
* SCW_T .set 40h ;
* SCW_B .set 80h ;
*
*for convience:
* SCW_OPEN_H .set 030h
* SCW_CLOSE_H .set 031h
* SCW_OPEN_V .set 0C0h
* SCW_CLOSE_V .set 0C1h
*
*also can be added: (S = straight instead of diagonal)
*
* SCW_LS .set 12h ;these specifiy the
* SCW_RS .set 22h ;single panels
* SCW_TS .set 42h ;
* SCW_BS .set 82h ;
*
*
*these parameters would be encoded into AR2 when calling SCREEN_WIPE
*and from there it would be moved to AR6, and checked each tik.
*
MONKEYOBJRVI .word mnkrv
MONKEYOBJLVI .word mnklv
MONKEYOBJUHI .word mnkuh
MONKEYOBJLHI .word mnklh
.bss SCREENWIPE_DONE,1
*----------------------------------------------------------------------------
SCREENWIPE_OPEN:
CLRI R0
STPI R0,@SCREENWIPE_DONE
CREATEC SCREENWIPE_OPEN_PRC,UTIL_C|MONKEY_T
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SCREENWIPE_CLOSE:
CLRI R0
STPI R0,@SCREENWIPE_DONE
CREATE SCREENWIPE_CLOSE_PRC,UTIL_C|MONKEY_T
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SCREENWIPE_OPEN_PRC_FAST:
LONGROUT
LDF 1.9,R0
BR L55
.text
SCREENWIPE_OPEN_PRC:
LONGROUT
LDF 1.1,R0
L55 STF R0,*+AR7(PDATA+7)
CALL GET_EFFECTS_OBJS
SLEEP 19
LDI 64,AR5
CLRF R6
LDF 2,R7
SWCL1
MPYF *+AR7(PDATA+7),R7
; MPYF 1.1,R7
ADDF 0.2,R6
LDF R6,R2
LDPI @MATRIXAI,AR2
CALL FIND_ZMATRIX
LDI *+AR7(PDATA),AR0
LDF *+AR0(OUSR1),R0
ADDF R7,R0
STF R0,*+AR0(OUSR1)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+1),AR0
LDF *+AR0(OUSR1),R0
SUBF R7,R0
STF R0,*+AR0(OUSR1)
LDI AR0,AR2
ADDI OUSR1,AR2
LDPI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+2),AR0
LDF *+AR0(OUSR2),R0
SUBF R7,R0
STF R0,*+AR0(OUSR2)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+3),AR0
LDF *+AR0(OUSR2),R0
ADDF R7,R0
STF R0,*+AR0(OUSR2)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
SLEEP 1
DBU AR5,SWCL1
LDI *+AR7(PDATA),AR2
CALL OBJ_DELETE
LDI *+AR7(PDATA+1),AR2
CALL OBJ_DELETE
LDI *+AR7(PDATA+2),AR2
CALL OBJ_DELETE
LDI *+AR7(PDATA+3),AR2
CALL OBJ_DELETE
LDI 1,R0
STI R0,@SCREENWIPE_DONE
DIE
END_LONGROUT
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SCREENWIPE_CLOSE_PRC:
LONGROUT
CALL GET_EFFECTS_OBJS
LDI 100,AR5
LDF 12.8,R6
LDLFH 28530.66038,R7
SWCL1C
MPYF 0.91,R7
SUBF 0.2,R6
LDF R6,R2
LDI @MATRIXAI,AR2
CALL FIND_ZMATRIX
LDI *+AR7(PDATA),AR0
STF R7,*+AR0(OUSR1)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+1),AR0
NEGF R7,R0
STF R0,*+AR0(OUSR1)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+2),AR0
NEGF R7,R0
STF R0,*+AR0(OUSR2)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
LDI *+AR7(PDATA+3),AR0
STF R7,*+AR0(OUSR2)
LDI AR0,AR2
ADDI OUSR1,AR2
LDI @MATRIXAI,R2
LDI AR0,R3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDI AR0,AR1
ADDI OMATRIX,AR1
LDI R2,AR0
LDI 8,RC
CALL MEMCPY
SLEEP 1
DBU AR5,SWCL1C
LDI 1,R0
STI R0,@SCREENWIPE_DONE
DIE
END_LONGROUT
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
GET_EFFECTS_OBJS:
LONGROUT
LDI @MONKEYOBJRVI,AR1
CALL OBJ_GET
LDI AR0,AR4
LDLH O_3DROT|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
STI AR0,*+AR7(PDATA)
STI AR1,*+AR4(OROMDATA)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI AR4,AR2
CALL OBJ_INSERTP
LDF *+AR4(OPOSX),R0
STF R0,*+AR4(OUSR1)
LDF *+AR4(OPOSY),R0
STF R0,*+AR4(OUSR2)
LDF *+AR4(OPOSZ),R0
STF R0,*+AR4(OUSR3)
LDI @MONKEYOBJLVI,AR1
CALL OBJ_GET
LDI AR0,AR4
LDLH O_3DROT|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
STI AR0,*+AR7(PDATA+1)
STI AR1,*+AR4(OROMDATA)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI AR0,AR2
CALL OBJ_INSERTP
LDF *+AR4(OPOSX),R0
STF R0,*+AR4(OUSR1)
LDF *+AR4(OPOSY),R0
STF R0,*+AR4(OUSR2)
LDF *+AR4(OPOSZ),R0
STF R0,*+AR4(OUSR3)
LDI @MONKEYOBJUHI,AR1
CALL OBJ_GET
LDI AR0,AR4
LDLH O_3DROT|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
STI AR0,*+AR7(PDATA+2)
STI AR1,*+AR4(OROMDATA)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI AR4,AR2
CALL OBJ_INSERTP
LDF *+AR4(OPOSX),R0
STF R0,*+AR4(OUSR1)
LDF *+AR4(OPOSY),R0
STF R0,*+AR4(OUSR2)
LDF *+AR4(OPOSZ),R0
STF R0,*+AR4(OUSR3)
LDI @MONKEYOBJLHI,AR1
CALL OBJ_GET
LDI AR0,AR4
LDLH O_3DROT|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
STI AR0,*+AR7(PDATA+3)
STI AR1,*+AR4(OROMDATA)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI AR4,AR2
CALL OBJ_INSERTP
LDF *+AR4(OPOSX),R0
STF R0,*+AR4(OUSR1)
LDF *+AR4(OPOSY),R0
STF R0,*+AR4(OUSR2)
LDF *+AR4(OPOSZ),R0
STF R0,*+AR4(OUSR3)
RETS
END_LONGROUT
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*MEMCPY
*
*PARAMETERS
* AR0 SOURCE POINTER
* AR1 DEST POINTER
* RC LENGTH -1
*
MEMCPY:
LONGROUT
PUSH AR0
PUSH AR1
PUSH R0
RPTB MEMCPYL
LDI *AR0++,R0
MEMCPYL STI R0,*AR1++
POP R0
POP AR1
POP AR0
RETS
END_LONGROUT
*----------------------------------------------------------------------------
.END

359
ERROR.ASM Executable file
View File

@ -0,0 +1,359 @@
.FILE "ERROR.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.include DIAG.EQU
.include ERROR.EQU
*STRUCT ERROR
ERR_PROC_ID .set 0
ERR_WAKE_ADDR .set 1
ERR_DP .set 2
ERR_SP .set 3
ERR_AR0 .set 4
ERR_AR1 .set 5
ERR_AR2 .set 6
ERR_AR3 .set 7 ;USING AS *+AR2(OID)
ERR_AR4 .set 8
ERR_AR5 .set 9 ;USING AS _MODE
ERR_AR6 .set 10 ;USING AS *+AR2(PID)
ERR_AR7 .set 11
ERR_AR4_OID .set 12
ERR_RACENUM .set 13
ERR_UNFINISHED_GAME .set 14
ERR_CLOSETRAK .set 15
*ENDSTRUCT
ERR_SIZE .set 16
MAX_LOGS .set 30
PSS_AR7 .set 0
PSS_AR6 .set 1
PSS_AR5 .set 2
PSS_AR4 .set 3
PSS_AR3 .set 4
PSS_AR2 .set 5
PSS_AR1 .set 6
PSS_AR0 .set 7
PSS_DP .set 8
PSS_SP .set 9
PSS_R0 .set 10
*----------------------------------------------------------------------------
ERROR_LOG:
PUSH R1
PUSH R2
PUSH R3
PUSH R4
PUSH R0
PUSH R0
PUSH DP
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
LDI SP,AR3 ;SAVE FRAME POINTER!! (all regs saved)
SETDP
READAUD AUD_LOG_COUNT
INC R0
CMPI MAX_LOGS-1,R0
BGE ERROR_X
LDI R0,R2
SETAUD AUD_LOG_COUNT
DEC R0
MPYI ERR_SIZE*4,R0 ;ERR_SIZE * CMOS_WORD_SIZE
LDI R0,AR2
ADDI RACE_TABLE_SIZE*NUM_RACES+NUM_RACES,AR2
ADDI MAX_AUDITS*4,AR2
ADDI @CMOSI,AR2
LDI *-AR3(PSS_R0),R2 ;ERROR TYPE
CALL _wr_cw
LDI @CURRENT_PROC,AR0
LDI *+AR0(PWAKE),R2
CALL _wr_cw
LDI *-AR3(PSS_DP),R2
CALL _wr_cw
LDI *-AR3(PSS_SP),R2
CALL _wr_cw
LDI *-AR3(PSS_AR0),R2
CALL _wr_cw
LDI *-AR3(PSS_AR1),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),AR0
LDI *+AR0(OID),R2
; LDI *-AR3(PSS_AR3),R2
CALL _wr_cw
LDI *-AR3(PSS_AR4),R2
CALL _wr_cw
LDI @_MODE,R2
; LDI *-AR3(PSS_AR5),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),AR0
LDI *+AR0(PID),R2
; LDI *-AR3(PSS_AR6),R2
CALL _wr_cw
LDI *-AR3(PSS_AR7),R2
CALL _wr_cw
LDI @CURRENT_PROC,AR0
LDI *+AR0(PID),R2
CALL _wr_cw
PUSH AR2
READAUD AUD_GAMENUMBER
POP AR2
LDI R0,R2
CALL _wr_cw
PUSH AR2
READAUD AUD_NUM_UNFINISHED
POP AR2
LDI R0,R2
CALL _wr_cw
PUSH AR2
LDI @PLYCAR,AR2
LDI *+AR2(CARTRAK),AR2
LDI *+AR2(OUSR1),R2
POP AR2
CALL _wr_cw
ERROR_X
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP DP
POP R0
POP R0
POP R4
POP R3
POP R2
POP R1
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*TO BE REACHED VIA THE CONSOLE (NO SWITCHES)
*
* ONCE ENTERED, USER MUST SCROLL THROUGH ALL
* OF THE LOGS. ROUTINE THEN RETURNS.
*
*
ERROR_LOG_DISPLAY:
CALL CLRSCRN
CALL SETPAGE0
LDIL SCREEN0,R0 ;set active screen to 1 (writeable)
STI R0,@ACTIVE_SCREEN
LDI COL_VDGREY,RC
TEXTITT "VIEW 1 TO EXIT",10,310
TEXTITT "VIEW 3 NEXT PAGE",10,320
TEXTITT "VIEW 3 + VIEW 2 + VIEW 1 CLEAR LOG",10,330
ERRLOG_D
LDI RACE_TABLE_SIZE*NUM_RACES+NUM_RACES,AR2
ADDI MAX_AUDITS*4,AR2
ADDI @CMOSI,AR2
CLRI AR6
NEXT_PAGE
PUSH AR2
IWINDOW 5,35,510,295
; FILL 10,40,510,300,0
POP AR2
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI 0,R0
BGT ERRLOG_D2
TEXTITT "NO ERRORS",10,50
ERRLOG_D2
LDI 5,R4
LDI 10,R6
LDI 50,R7
BIGLOOP
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI R0,AR6
BEQ LLPPT
CMPI 0,R0
BEQ LLPPT
CMPI MAX_LOGS,AR6
BGE ERRLOG_D
PUSH AR2
.globl OBJSTRI
LDI @OBJSTRI,AR2
LDI AR6,R2
INC R2
CALL _itoa
LDI 135,R2
LDI R7,R3
SUBI 10,R3
LDI @OBJSTRI,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
.data
TIBO .string "LOG",0
.text
LDI 100,R2
LDI R7,R3
SUBI 10,R3
LDL TIBO,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
POP AR2
;R6 X Position
;R7 Y Height
;
LDI ERR_SIZE-1,AR5
ONE_LOG
CALL _rd_cw
LDI R0,R2
PUSH AR2
.globl OBJSTRI
LDI @OBJSTRI,AR2
CALL HEX2ASC
LDI R6,R2
LDI R7,R3
LDI @OBJSTRI,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
POP AR2
ADDI 70,R6
CMPI 450,R6
BLT ION
LDI 10,R6
ADDI 10,R7
ION DBU AR5,ONE_LOG
LDI 10,R6
ADDI 20,R7
INC AR6
DEC R4
BLT LLPPT
BU BIGLOOP
LLPPT
CALL WAIT_FOR_VBLANK
LDI @_newbut,R1 ;debounce
TSTB SW_DIAG,R1 ;start to return to main
BZ BOOKX
RS 16,R1
LDI R1,R0
AND SW_VIEW1_H|SW_VIEW0_H|SW_VIEW2_H,R0
; CMPI SW_VIEW1_H|SW_VIEW0_H|SW_VIEW2_H,R0
BNE NOCLEAR
CLRI R2
SETAUD AUD_LOG_COUNT
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
BU ERROR_LOG_DISPLAY
NOCLEAR
TSTB SW_VIEW2_H,R1
BNZ NOT_NEXT_PAGE
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI R0,AR6
BGE ERRLOG_D
BU NEXT_PAGE
NOT_NEXT_PAGE
TSTB SW_VIEW0_H,R1
BZ BOOKX2
BU LLPPT
BOOKX2 LDI @_newbut,R1 ;debounce
RS 16,R1
TSTB SW_VIEW0_H,R1 ;start to return to main
BNZ BOOKX2
RETS
BOOKX NOT @_newbut,R0
AND SW_DIAG,R0
BNZ BOOKX
RETS
*----------------------------------------------------------------------------
.END

44
ERROR.EQU Executable file
View File

@ -0,0 +1,44 @@
*ERROR.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.globl ERROR_LOG
.globl ERROR_LOG_DISPLAY
*ERROR CODE IDS
*
*ID = xxxxCCTS
*
* x unused
* C class
* T type
* S subtype
*
*
*
*
EC_MASK .set 0FF00h
ET_MASK .set 000F0h
ES_MASK .set 0000Fh
EC_OBJ .set 00100h
ET_ALLOC .set 00010h
ET_DELETE .set 00020h
EC_PROC .set 00200h
EC_COLL .set 00300h
EC_PALL .set 00400h
EC_BGND .set 00500h
EC_WATCHDOG .set 00600h
EC_UNFINISHED .set 00700h
EC_WATCHDOG2 .set 00800h ;reset triggered by > 100 frames (CUSA.ASM)

289
FLAME.ASM Executable file
View File

@ -0,0 +1,289 @@
.FILE "FLAME.ASM"
*----------------------------------------------------------------------------
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.data
FLAMEANII .word FLAMEANI
FLAME_POSI .word FLAME_POS
.SECT "THEDATA"
FLAME_POS
.word 180,87,-450 ;Vette
.word 130,105,-586 ;Coope
.word 140,107,-460 ;Missle
.word 160,70,-460 ;Ferrari
.word 180,87,-450 ;JEEP
.word 190,87,-650 ;SBUSP
.word 160,155,-500 ;COPCAR
FLAMEANI
.word sparc1,sparc3,sparc5,sparc7,sparc9,sparc7
.word sparc5,sparc3,sparc1,-1
.text
*----------------------------------------------------------------------------
* FLAME PROC
*
FRAME_ON .set PDATA+1
CARBODY_MATRIX .set PDATA+2
FLAME_PRC:
LDI PLYR_C|PLYR_FLAMES_S,AR2
CALL OBJ_FIND_FIRST
BC FLAME_DIE ;Only one set of flames at a time
LDI PLYR_C,AR2
CALL OBJ_FIND_FIRST
BNC FLAME_DIE ;IF there is no player object then bail.
LDI AR0,AR6
LDI *+AR0(OCARBLK),AR1
LDI *+AR1(CAR_SPIN),R0
BNZ FLAME_DIE ;YES, the no flames
LDI AR0,AR2
CALL GETCARBODY
STI AR0,*+AR7(CARBODY_MATRIX)
LDI 0,R0
STI R0,*+AR7(FRAME_ON) ;Reset animation counter
CALL OBJ_GET
BC FLAME_DIE
LDI AR0,AR4 ;Left flame
; LDI @CHOSEN_VEHICLE,R0
LDI @CHOOSENCAR,R0
MPYI 3,R0
ADDI @FLAME_POSI,R0
LDI R0,AR0
FLOAT *+AR0(X),R1
FLOAT *+AR0(Y),R2
FLOAT *+AR0(Z),R3
STF R1,*+AR4(OVELX)
STF R2,*+AR4(OVELY)
STF R3,*+AR4(OVELZ)
LDI PLYR_C|PLYR_FLAMES_S,R0
STI R0,*+AR4(OID)
CALL OBJ_GET
BC FLAME_DIE
LDI AR0,AR5 ;Right frame
LDF PI,R0
STF R0,*+AR5(ORADY)
FLOAT 180,R0
NEGF R1 ;opposite side
STF R1,*+AR5(OVELX)
STF R2,*+AR5(OVELY)
STF R3,*+AR5(OVELZ)
LDI PLYR_C|PLYR_FLAMES_S,R0
STI R0,*+AR5(OID)
LDI AR4,AR2
CALL OBJ_INSERT
LDI AR5,AR2
CALL OBJ_INSERT
LDI 9-1,R5
FLAME_ANI_LOOP
LDI *+AR6(OCARBLK),AR1
LDI *+AR1(CAR_SPIN),R0
BNZ FLAME_ANIX ;YES, the kill the flames
LDI *+AR7(CARBODY_MATRIX),AR2
LDI AR6,R2
ADDI OMATRIX,R2
LDI @MATRIXAI,R3
CALL CONCATMATV
LDI @MATRIXAI,AR3
LDI AR4,AR0
LDI *+AR7(FRAME_ON),IR0
LDI @FLAMEANII,AR1
CALL animate_child
LDI @MATRIXAI,AR3
LDI *+AR7(FRAME_ON),IR0
LDI @FLAMEANII,AR1
LDI AR5,AR0
CALL animate_child
STI R0,*+AR7(FRAME_ON)
SLEEP 1
SUBI 1,R5
BP FLAME_ANI_LOOP
FLAME_ANIX
LDI PLYR_C|PLYR_FLAMES_S,AR2
CALL OBJ_FIND_FIRST
BNC FLANX1
LDI AR0,AR2
CALL OBJ_DELETE
BR FLAME_ANIX
FLANX1
FLAME_DIE
DIE
*----------------------------------------------------------------------------
*Input
* AR0 = object to position and ani
* OVELX/Y/Z = offset from parent
* AR6 = object to position reletive to
* AR1 = Animation list
* IR0 = Frame on
*OUTPUT
* IR0 = Next frame
*TRASHES AR2,R1,R2,R3
animate_child:
;Set the Frame
set_frame
LDI *+AR1(IR0),R1
LDIN 0,IR0
BN set_frame
ADDI 1,IR0
STI R1,*+AR0(OROMDATA)
PUSH IR0
;Set the position reletive to the parent object.
LDI AR3,R2
LDI AR0,AR2
ADDI OMATRIX,AR2
CALL CPYMAT
LDI AR0,AR2 ;rotate the position reletive to parent
ADDI OVELX,AR2
LDI AR0,R2 ;Source 3X3
ADDI OMATRIX,R2
LDI AR0,R3 ;Dest 1X3
ADDI OPOSX,R3
CALL MATRIX_MUL
LDF *+AR6(OPOSX),R2 ;Set the position
ADDF *+AR0(OPOSX),R2
STF R2,*+AR0(OPOSX)
LDF *+AR6(OPOSY),R2
ADDF *+AR0(OPOSY),R2
STF R2,*+AR0(OPOSY)
LDF *+AR6(OPOSZ),R2
ADDF *+AR0(OPOSZ),R2
STF R2,*+AR0(OPOSZ)
LDI @MATRIXBI,AR2
LDI AR0,R2
ADDI ORADX,R2
CALL FIND_MATRIX
LDI AR3,AR2
LDI @MATRIXBI,R2
LDI AR0,R3
ADDI OMATRIX,R3
CALL CONCATMATV
POP R0
RETS
*----------------------------------------------------------------------------
*CALLED BY ZSORTWT in obj.asm just after the players car is linked in.
*PUTS THE FLAMES JUST BEHIND THE PLAYERS CAR
FLAMESORT:
LDI @OACTIVE,AR0
CMPI 0,AR0
BEQ FLMSORTX ;NO LIST... NO GO
FLMSORT_LOOP
LDI PLYR_C|PLYR_FLAMES_S,R1
CALL FIND_NEXT_OBJ
BC FLMSORTX
LDI AR0,AR4
CALL FIND_NEXT_OBJ
BC FLMSORTX
LDI AR0,AR5
LDI *+AR4(OFLAGS),R0 ;SAVE the flages
LDI *+AR5(OFLAGS),R1 ;SAVE the flages
LDI AR4,AR2
CALL OBJ_PULL
LDI AR5,AR2
CALL OBJ_PULL
STI R0,*+AR4(OFLAGS) ;RESTORE the flags
STI R1,*+AR5(OFLAGS) ;RESTORE the flags
LDI PLYR_C,AR2
CALL OBJ_FIND_FIRST
BNC FLMSORTX ;NO PLAYER?
STI AR5,*AR4 ;Link flame2 to flame1
LDI *AR0,R0 ;Get link to next object
STI AR4,*AR0 ;link the flames to the players object
STI R0,*AR5 ;link back in the object behind the player
FLMSORTX
RETS
*----------------------------------------------------------------------------
*FIND THE MATRIX IN THE DYNALIST OF THE CAR POINTED TO BY AR2
*INPUT AR2 = CARS OBJECT
*OUTPUT AR0 = MATRIX OF THE BODY
* SCRAMBLES R0,R1
GETCARBODY:
LDI *+AR2(ODYNALIST),R0
SLOCKON Z,"UTIL\CARPROC dynamic objects not found"
FBLOOP
LDI R0,AR0
LDI *+AR0(DYNAFLAG),R1
BZ FOUND_BODY ;0 = car body
LDI *AR0,R0
BR FBLOOP
FOUND_BODY
ADDI DYNAMATRIX,AR0
RETS
FIND_NEXT_OBJ:
PUSH R0
PUSHF R0
PUSH AR5
LDI *AR0,AR5
OFN LDI AR5,R0
LDI R0,AR0
BZ OFNX ;NONE FOUND. This routine is passive
LDI *AR0,AR5
LDI *+AR0(OID),R0
CMPI R1,R0
BNE OFN
OFNX
CLRC
CMPI 0,AR0
BNE OFNX1
SETC
OFNX1
POP AR5
POPF R0
POP R0
RETS
*----------------------------------------------------------------------------
.END

483
FONT.ASM Executable file
View File

@ -0,0 +1,483 @@
.FILE "FONT.ASM"
*----------------------------------------------------------------------------
*FONT.ASM
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*SLOW ROM
*
.def _font1
.sect "THEDATA"
_font1
.word 0001100b
.word 0111000b
.word 1110000b
.word 1100000b
.word 1110000b
.word 0111000b
.word 0001100b
.word 0011000b
.word 0001110b
.word 0000111b
.word 0000011b
.word 0000111b
.word 0001110b
.word 0011000b
.word 1100110b
.word 0111100b
.word 0011000b
.word 1111110b
.word 0011000b
.word 0111100b
.word 1100110b
.word 0000000b
.word 0001000b
.word 0001000b
.word 0111110b
.word 0001000b
.word 0001000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0011000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0111110b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0000001b
.word 0000011b
.word 0000110b
.word 0001100b
.word 0011000b
.word 0110000b
.word 1100000b
.word 0111100b ;0
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 0001100b
.word 0011100b
.word 0001100b
.word 0001100b
.word 0001100b
.word 0001100b
.word 0001100b
.word 0111100b
.word 1100110b
.word 0000110b
.word 0001100b
.word 0011000b
.word 0110000b
.word 1111110b
.word 0111100b
.word 1100110b
.word 0000110b
.word 0011100b
.word 0000110b
.word 1100110b
.word 0111100b
.word 0100110b
.word 1100110b
.word 1100110b
.word 1111110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 1111110b
.word 1100000b
.word 1100000b
.word 0111100b
.word 0000110b
.word 0000110b
.word 0111100b
.word 0111110b
.word 1100000b
.word 1100000b
.word 1111100b
.word 1100110b
.word 1100110b
.word 0111100b
.word 1111110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0111100b
.word 1100110b
.word 1100110b
.word 0111100b
.word 1100110b
.word 1100110b
.word 0111100b
.word 0111110b ;9
.word 1100110b
.word 1100110b
.word 0111110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0000000b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0000000b
.word 0001100b
.word 0001100b
.word 0000100b
.word 0001100b
.word 0011000b
.word 0110000b
.word 1100000b
.word 0110000b
.word 0011000b
.word 0001100b
.word 0000000b
.word 0111110b
.word 0111110b
.word 0000000b
.word 0111110b
.word 0111110b
.word 0000000b
.word 0110000b
.word 0011000b
.word 0001100b
.word 0000110b
.word 0001100b
.word 0011000b
.word 0110000b
.word 0011100b
.word 0110100b
.word 0000100b
.word 0001100b
.word 0011000b
.word 0000000b
.word 0011000b
.word 0000001b
.word 0000011b
.word 0000110b
.word 0001100b
.word 0011000b
.word 0110000b
.word 1100000b
; .word 0011100b
; .word 1100110b
; .word 1000110b
; .word 1011110b
; .word 1001100b
; .word 1100000b
; .word 0111110b
.word 1111100b ;A
.word 1100110b
.word 1100110b
.word 1111110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1111100b
.word 1100110b
.word 1100110b
.word 1111100b
.word 1100110b
.word 1100110b
.word 1111100b
.word 0111100b
.word 1100110b
.word 1100000b
.word 1100000b
.word 1100000b
.word 1100110b
.word 0111100b
.word 1111100b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1111100b
.word 1111110b
.word 1100000b
.word 1100000b
.word 1111000b
.word 1100000b
.word 1100000b
.word 1111110b
.word 1111110b
.word 1100000b
.word 1100000b
.word 1111000b
.word 1100000b
.word 1100000b
.word 1100000b
.word 0111100b
.word 1100110b
.word 1100000b
.word 1100000b
.word 1101110b
.word 1100110b
.word 0111110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1111110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0111100b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 0000110b
.word 1100110b
.word 0111100b
.word 1100010b
.word 1100110b
.word 1101100b
.word 1111000b
.word 1101100b
.word 1100110b
.word 1100010b
.word 1100000b
.word 1100000b
.word 1100000b
.word 1100000b
.word 1100000b
.word 1100000b
.word 1111110b
.word 1100011b
.word 1110111b
.word 1101011b
.word 1101011b
.word 1100011b
.word 1100011b
.word 1100011b
.word 1100110b
.word 1110110b
.word 1111110b
.word 1111110b
.word 1101110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 1111100b
.word 1100110b
.word 1100110b
.word 1111100b
.word 1100000b
.word 1100000b
.word 1100000b
.word 0011000b
.word 0111100b
.word 1100110b
.word 1101110b
.word 1100110b
.word 0111100b
.word 0011010b
.word 1111100b
.word 1100110b
.word 1100110b
.word 1111100b
.word 1111000b
.word 1101100b
.word 1100110b
.word 0111110b
.word 1100000b
.word 1100000b
.word 0111100b
.word 0000110b
.word 0000110b
.word 1111100b
.word 1111110b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 1100011b
.word 1100011b
.word 1100011b
.word 0110110b
.word 0111110b
.word 0011100b
.word 0011100b
.word 1100011b
.word 1100011b
.word 1101011b
.word 1111111b
.word 1111111b
.word 1110111b
.word 1100011b
.word 1100110b
.word 1100110b
.word 0111100b
.word 0011000b
.word 0111100b
.word 1100110b
.word 1100110b
.word 1100110b
.word 1100110b
.word 0111100b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 1111110b
.word 0000110b
.word 0001100b
.word 0011000b
.word 0110000b
.word 1100000b
.word 1111110b
.word 0111000b
.word 0110000b
.word 0110000b
.word 0110000b
.word 0110000b
.word 0110000b
.word 0111000b
.word 1100000b
.word 0110000b
.word 0011000b
.word 0001100b
.word 0000110b
.word 0000011b
.word 0000000b
.word 0111000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0011000b
.word 0111000b
.word 0010000b
.word 0101000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 1111110b
.word 0100000b
.word 0110000b
.word 0010000b
.word 0000000b
.word 0000000b
.word 0000000b
.word 0000000b
.END

474
FONT1A.ASM Executable file
View File

@ -0,0 +1,474 @@
.FILE "FONT1A.ASM"
*----------------------------------------------------------------------------
*FONT1A.ASM
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*PACKED FONT STYLE CPU PLOTTING
*(DIAGNOSTICS ONLY! NOT DURING ASIC OPERATION)
*
*
.include C30.EQU
.include VUNIT.EQU
.include MACS.EQU
.include TEXT.EQU
;ref
.globl DIV_I30,MOD_I30 ;ROUTS.ASM
.globl ACTIVE_SCREEN ;start of active screen (not visual screen)
.globl _font1
.globl PRINTER_LOG_SYMBOLIC
.globl COMMINTM
;def
.globl _ftoa,_itoa,_pixel,_outtextxyc,_fill,_itoaLZ
.globl HEX2ASC
_font1I .word _font1
*----------------------------------------------------------------------------
ENABLEGIE RETI
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
POINT .string ".",0
.bss ftoa_tmp,2
_ftoa:
PUSH R0
PUSH R2
PUSH AR2
PUSH AR2
PUSHFL R2
FIX R2
CALL _itoa
LDL POINT,AR1
LDI AR2,AR0
CALL STRCAT
POPFL R2
LDL ftoa_tmp,AR2
FIX R2,R0
FLOAT R0
SUBF R0,R2
FIX R2
MPYI 100,R2
CALL _itoa
LDI AR2,AR1
POP AR0
CALL STRCAT
POP AR2
POP R2
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*INTEGER TO ASCIZ (PACKED)
*
*PARAMETERS
* AR2 STRING SPACE
* R2 NUMBER
*RETS
* AR2 POINTING TO SPACE
* R0 HAVING THE SHIFT COUNT
*
*
*INTEGER TO ASCIZ WITH LEADING ZERO
_itoaLZ:
PUSH R0 ;this entry includes a leading zero
PUSH R1 ;if the value is 9 or less
PUSH R2 ;
PUSH R3 ;
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR7
PUSH R6
PUSH R7
CLRI R7 ;flag if negative
CMPI 0,R2
BZD ISZERO2
LDILT 1,R7
ABSI R2
CLRI R3
CMPI 9,R2
BGT itoa1
LDI 1,AR7
BU itoa1
_itoa:
PUSH R0
PUSH R1
PUSH R2
PUSH R3
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR7
PUSH R6
PUSH R7
CLRI R7 ;flag if negative
CMPI 0,R2
BZD ISZERO
LDILT 1,R7
CLRI AR7
ABSI R2
CLRI R3
itoa1 LDI 10,R1 ;this loop generates the ASCII
LDI R2,R0 ;pieces and pushes them on the stack
CALL MOD_I30
OR 30h,R0
PUSH R0
INC R3
LDI 10,R1
LDI R2,R0
CALL DIV_I30
LDI R0,R2
BGT itoa1
CMPI 1,AR7
BNE NOLEADINGZERO
LDI 30h,R0
PUSH R0
INC R3
NOLEADINGZERO
CLRI R6 ;this loop pops the ASCII pieces off
CLRI R1 ;the stack and packs them into the
CMPI 0,R7 ;destination space
BEQ NOTNEG ;check sign flag
LDI MINUS_CHAR,R1
ADDI 8,R6
NOTNEG
LOOP2 POP R0
LSH R6,R0
OR R0,R1
ADDI 8,R6
CMPI 32,R6
BLT DALOP
STI R1,*AR2++
CLRI R1
CLRI R6
DALOP DEC R3
BGT LOOP2
LDI 0,R0 ;NULL terminator
LSH R6,R0
OR R0,R1
STI R1,*AR2
LDI R6,R0
itoaX
POP R7
POP R6
POP AR7
POP AR2
POP AR1
POP AR0
POP R3
POP R2
POP R1
POP R0
RETS
ISZERO2
BUD itoaX
LDI 03030h,R0 ;case when number is zero
STI R0,*AR2
LDI 16,R0
;----> BUD itoaX
ISZERO
BUD itoaX
LDI 030h,R0 ;case when number is zero
STI R0,*AR2
LDI 8,R0
;----> BUD itoaX
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*HEX2ASC CONVERT HEX TO ASCII
*
*PARAMETERS
* R2 NUMBER
* AR2 BUFFER
*
*
HEX2ASC:
PUSH R0
PUSH R1
PUSH R2
PUSH R3
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR7
PUSH R6
PUSH R7
CMPI 0,R2
BZD ISZEROH
; LS 16,R2
; RS 16,R2
CLRI R3
htoa1
LDI R2,R0
AND 0Fh,R0
CMPI 10,R0
BLT DDJ
ADDI 'A'-10,R0
BU JJK
DDJ ADDI 30h,R0
JJK PUSH R0
INC R3
RS 4,R2
BGT htoa1
CLRI R6 ;this loop pops the ASCII pieces off
CLRI R1 ;the stack and packs them into the
LOOP2H POP R0
LSH R6,R0
OR R0,R1
ADDI 8,R6
CMPI 32,R6
BLT HDALOP
STI R1,*AR2++
CLRI R1
CLRI R6
HDALOP DEC R3
BGT LOOP2H
LDI 0,R0 ;NULL terminator
LSH R6,R0
OR R0,R1
STI R1,*AR2
LDI R6,R0
htoaX
POP R7
POP R6
POP AR7
POP AR2
POP AR1
POP AR0
POP R3
POP R2
POP R1
POP R0
RETS
ISZEROH
BUD htoaX
LDI 030h,R0 ;case when number is zero
STI R0,*AR2
LDI 8,R0
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*fill(int x1,int y1,int x2,int y2,int color)
*
*PARAMETERS
* AR2 X1
* R2 Y1
* R3 X2
* RC Y2
* RS COLOR
*
*
_fill:
PUSH AR2
FILLLP1
PUSH R3
LDI RS,R3
CALL _pixel
POP R3
INC AR2
CMPI AR2,R3
BGE FILLLP1
POP AR2
PUSH AR2
INC R2
CMPI R2,RC
BGE FILLLP1
POP AR2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*OUTPUT TEXT STRING AT X,Y PACKED CHARACTERS
*void outtextxyc(Pchar *,int x,int y,int color_pal);
*
*PARAMETERS
* AR2 STRING
* R2 X LOC
* R3 Y LOC
* RC COLOR
*
* print a text string with the .string (packed)
*
*CLOBBERS RS,RE,RC
*
_outtextxyc:
PUSH R4
PUSH R5
LDI 3,RS
CLRI RS
OLP CMPI -32,RS
BNE REGLP
CLRI RS
NOP *AR2++
REGLP
LDI *AR2,AR0
LSH RS,AR0
SUBI 8,RS
AND 0FFh,AR0
CMPI 0,AR0
BZ oucX
CMPI ' ',AR0
BEQ NXTCHAR
SUBI '(',AR0 ;the start of the font
;NOW PLOT OT THE CHARACTER
MPYI 7,AR0 ;index to character
ADDI @_font1I,AR0 ;pointing to font data
LDI 7,R5 ;Y count
OUTRLP
LDI *AR0++,R1
LS 24,R1
LDI 8,R4
LOOP1 ASH 1,R1
BNC NPLOT
PUSH AR2
PUSH R2
PUSH R3
LDI R2,AR2
LDI R3,R2
LDI RC,R3
CALL _pixel
POP R3
POP R2
POP AR2
NPLOT INC R2 ;advance to next pixel
DEC R4
BGT LOOP1
SUBI 8,R2 ;reset X position
INC R3 ;increment Y position
DEC R5
BGT OUTRLP
SUBI 7,R3 ;reset Y position
NXTCHAR ADDI 8,R2 ;to next X position
BU OLP
oucX
POP R5
POP R4
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*PIXEL ROUTINE
*
*NOTE : other routines rely on the spec being exactly as they are specified
*here. DO NOT TRASH OTHER REGISTERS!!!
*
*PARAMETERS
* AR2 X COORD
* R2 Y COORD
* R3 COLOR
*
*R3 : [ xxxxPPCC ]
* PP PALETTE CODE
* CC COLOR CODE
*
*CLOBBERS R0,AR1
*
_pixel:
PUSH AR1
PUSH AR2
PUSH R2
PUSH IE
LDP @COMMINTM
LDI @COMMINTM,IE
SETDP
LDP @CPU_WS
LDI HARD_WS,AR1
AND 0DFFFh,ST ;turn off GIE.
POP IE
STI AR1,@CPU_WS ;SET WAITSTATE MODE
SETDP
LDI 0,AR1 ;DUMMY READ ADDR
LSH 9,R2
ADDI @ACTIVE_SCREEN,AR2 ;GET CURRENT SCREEN PAGE
ADDI R2,AR2
LDP @CPU_WS
STI R3,*AR2 ;store to screen
LDI *AR1,R2 ;DUMMY READ
LDI SOFT_WS,R2
STI R2,@CPU_WS
SETDP
CALL ENABLEGIE
POP R2
POP AR2
POP AR1
RETS
*----------------------------------------------------------------------------
.END

29
GALIL.ASM Executable file
View File

@ -0,0 +1,29 @@
.FILE "GALIL.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.bss GALIL_RESPONSE,80
*
*GALIL_RESET
*SEND_GCMD
*GET_GACK
*
*

689
GLOBALS.EQU Executable file
View File

@ -0,0 +1,689 @@
*globals.equ
*obj.asm
.globl COMM_DRONE_PTR
*
*auto generated by tvg/brief
*
*
*attracta.asm
.globl _ATTR_MODE
.globl _MIDWAYSPIN
.globl VANITY
.globl TITLES,TEXTTABSI
*attrdrne.asm
.globl ATTRWAVE,LOAD_ATTR_LEG
*audits.asm
.globl AUDIT_DISPLAY
*babe.asm
.globl CROWD_IT
.globl BABE_TROPHY
.globl BABE_WAVEFLAG
.globl BABE_CONTROL
*backgrnd.asm
.globl RACE_STARTING_POINTSI,RACE_STARTING_POINTS
.globl LOAD_SINGLE_SECTION_OFFSET
.globl FIND_STARTING_VALUES
.globl LOAD_TUNNEL,FINISH_LINE
.globl DRIVE_LIST,CAR_LIST,BUILD_LIST,SIGN_LIST,GROUND_LIST
.globl NEWSUBLIST_TOP
.globl BGD_INIT
.globl STARTSECTION,START_POS,START_RADY
.globl DGROUPSI
.globl DGROUPS
.globl DGROUP_COUNT
.globl DGROUP_AW
.globl DYNALIST_TRUEBEGIN
.globl DYNALIST_BEGIN
.globl DYNALIST_END
.globl STARTS
.globl SECTIONIDX
.globl TYCO_TRACK
.globl TYCO_TRACK_NTL
.globl LOAD_SINGLE_SECTION,SINGLE_SECTION_TEMPPTR
.globl GET_XZ_DISTANCE
.globl AMBIENCE_SOUND
*bssstart.asm
.globl BSSSTART
*bonus.asm
.globl WAS_HEAD2HEAD_ON
.globl ETIME
.globl DO_FOLDFLAG
.globl I_TIMED_OUT
.globl DID_TIMED_OUT
.globl KILL_THEM
.globl FULLSETUP_TABLEI,BONUS_POSTLAUNCHI
.globl CHALLENGE_RACE
.globl NEXT_STARTUP,BONUS_WAVE
.globl BLINK_FREEBE
.globl MAXMPH,CAR_COLLS,MISC_COLLS
.globl MAXMPH
.globl TIMED_OUT
.globl BONUS_WAVE
.globl BONUS_TABLEI
.globl BONUS_NUMBER
.globl BONUS1,BONUS2,BONUS3,BONUS4
.globl BONUS5,BONUS6,BONUS7,BONUS8
.globl BONUS9,BONUS10,BONUS11,BONUS12
.globl BONUS13,BONUS14
.globl GAMETRAKI,GAMETRAK
.globl LEG_NAMESI,LEG_NAMES
*challeng.asm
.globl CHECK_CHALLENGER
.globl AWAITING_CHALLENGER
.globl ISSUED_CHALLENGE
.globl CHALLENGE_ACCEPTED
*chopper.asm
.globl CHOPPER
.globl GET_CLOSEST_TRAK
.globl HELI_ABORT
*cmos.asm
.globl RESET_DAILY_CMOS,HSTDEC
.globl CHECK_CMOS
.globl _wr_cw,_rd_cw
.globl CMOSI,HSTD_PAGEI,ALL_TIME_HSTDI,DAILY_HSTDI
.globl GEN_CMOS_CHKSUM
*colla.asm
.globl plyr1I
.globl _CARV0,_CARVCT
.globl _PLAYER_ROAD_COLL,CAR_ROAD_COLL
.globl _coll_road
.globl _obj_coll,COLLIDE
.globl _makbox
.globl COLSCC
.globl COLSCAN,COLSCPRC
.globl BOXSCAN
.globl OBJSCAN
.globl CAMSCAN
.globl COLCHK
.globl ROADSCAN,DRONESND,DRONESND1,FLYCAR1,SCOLLTABI
.globl BOXSCRAMI
.globl FLYCOLLPI
.globl COLSGCK
*coin.asm
.globl ICF
.globl SERV_COIN
.globl COIN_TABLEI
.globl INSERT_COINS
.globl COIN1,COIN2,CHECK_CREDITS
.globl COIN3,COIN4
.globl COINOFF
.globl VOLUME_DISPLAY,VOLUME_ACTIVE
.globl INSERT_MORE_COINS
.globl COIN_COUNTER
.globl CMOS_WP_WORD_SHADOW,COIN_COUNTER1,COIN_COUNTER2
.globl COUNTER_IDX,COUNTER_MODE
.globl GETCOINTXT
.globl INIT_CUSTOM_COIN
*comp.asm
.globl DECOMPRESS
.globl HARD_SECTION_LOAD
.globl DECOMPRESS_PROC
.globl DECOMP_ACTIVE
.globl BOOT_PACIFY_SCREEN_P
.globl LOAD_SECTION_REQ
.globl PREVX,DELTA
*comm.asm
.globl NOLINK
.globl NOLINK_COUNT
.globl POWERUP_MODE
.globl TRANSMISSION_ACTIVE
.globl CLRONE
.globl SETONE
.globl COMM_ENABLE_INT2
.globl COMM_MASTER_SEND_SYNC
.globl COMM_INIT
.globl COMM_ROUTINE
.globl COMM_IRQ
*commdrne.asm
.globl COMM_DRONE_PTR_SORT
.globl PLY2CAR
.globl COMM_DRONE
*commq.asm
.globl SEND_ATTRSND
.globl OM_POSITION
.globl SAVED_PLY2CAR
.globl OM_DIFF
.globl COINDROP
.globl SEND_COINDROP
.globl OM_RACE_MODE
.globl OM_BSYNC
.globl BSYNC
.globl OM_HIDDEN_ON
.globl SEND_WAVEFL_GO
.globl SEND_WAVEFL_SET
.globl SEND_WAVEFL_READY
.globl IGNORE_UPDATES
.globl CLEAR_LINK
.globl COMMQ_TMP_BUFFI
.globl SEND_LINKCANCELLED
.globl LINKEDP
.globl MY_LINKWAIT
.globl OM_LINKWAIT
.globl MY_LINKWAIT
.globl HEAD2HEAD_ON
.globl OLD_OM_ATTR_MODE
.globl OM_ATTR_MODE
.globl SEND_BUFFER_B_LEN
.globl SEND_BUFFER_A_LEN
.globl SEND_BUFFER_B
.globl SEND_BUFFER_A
.globl SEND_BUFFER_BI
.globl SEND_BUFFER_AI
.globl COMMQ_READY_TO_SEND
.globl COMMQ_PACKET_INIT
.globl BUFSTATS
.globl RDYSBUFF_LEN
.globl RDYBUFF_PTR
.globl FILLBUFF_LEN
.globl FILLBUFF_PTR
.globl COMMQ_STATUS
.globl CURR_RCV_BUFFER
.globl RECEIVE_BUFFER
.globl OM_MODE,OM_CHOSEN_RACE,OM_VEHICLE
.globl OM_STATE,MY_STATE
.globl SEND_CHECKPOINT
.globl HEAD2HEAD_ON
.globl CHECKPOINTS_HIT
.globl CHECKPOINTS_RECEIVED
.globl SEND_START_GAME
.globl SEND_END_GAME
.globl SEND_VEHICLE
.globl INIT_COMM_VALUES
*cusa.asm
.globl FRAMRATE
.globl ENABLEGIE
.globl COMMINTM
.globl _c_int00
.globl VERIFY_CODE_INTEGRITY
.globl FEED_WATCHDOG
.globl INT0 ;DISPLAY INT
.globl DIAG_RETURN
.globl COLD_ENTER
.globl CLEARRDY
.globl SWRAM
.globl NOAERASE
.globl BUTTON_STATUS
.globl INFRAMES,NFRAMES
.globl WAIT_FOR_VBLANK
.globl _newbut
.globl CHECKDIAG
.globl FIFO_RESET
.globl ENABLEGIE
.globl SWITCHBUTS
.globl DIAG_ACTIVE
.globl CLR_RAM
.globl GAME_TIMER
.globl ST_POLYGONS
.globl ST_VERTICES
.globl ST_OBJECTS
.globl NFRAMES,INFRAMES
.globl SWITCHBUTS,BGNDCOLA,DIAG_ACTIVE,GAME_TIMER
.globl _MODE,SYSCNTL,_pot0,_pot1,_pot2
.globl RDPOT,_systime,_gametime,_sectime
.globl CLEARRDY,NOAERASE,DISPLAY_PAGE
.globl NOSWAP
.globl FRAMRATE,TIMECLR
.globl FRAMETIME,HISCAN
.globl VERSION_STAMP
*date.asm
.globl DATE_STAMP
*delta.asm
.globl DELTA_DRONE
.globl ATTRACT_DELTA
*drones.asm
.globl DRONE_CLR
.globl DRONENUM
.globl DRONE_PTR_ADD
.globl SMOKE_COUNT
.globl FIND_PLAYERS_POSITION,POSITION_FINDER
.globl INIT_DRONES,ADD_DRONE,FREE_DRONE
.globl DRONE_COUNT,FINISHED_DRONES,MIN_TRACK_TIME
.globl PLYR_RIDE_RIGHT,DRONE_RIDE_RIGHT
.globl DD_SLP,DD_VAR,DD_MAX_DRONES
.globl EXP_PUFF,SMOKE_PUFF,DROP_COCONUTS
.globl SIGMA_DISPATCHER,RHO_DISPATCHER
.globl DRONE_DISPATCH_P
.globl MODELTABI,TEXTTABSI,TABING
.globl FIND_PLAYERS_POSITION
.globl COCONUT_COUNT
.globl DIST_TO_PLYR
*dirq.asm
.globl DIRQ
.globl RAND,_MODE
.globl OACTIVE,OFREE,OACTIVE_PRIORITY,IDLE_LIST
.globl OLOW_PRIORITY
.globl OACTIVEI,OACTIVE_PRIORITYI,IDLE_LISTI
.globl _LIGHT
.globl _CAMERAPOS,_CAMERAVEL,_CAMERARAD,_CAMERAMATRIX
.globl CAMERAPOSI,CAMERARADI,CAMERAMATRIXI
.globl BLOWLIST,TMPMAT,ROTATION_MATRIX
.globl POSTERMATI
.globl TRANSVECTOR
.globl DRIVE_LISTI,CAR_LISTI,SIGN_LISTI,GROUND_LISTI
.globl DECOMP_LINE_BUFFER
.globl LOCTEMPER_MATI
.globl LIGHTIY
.globl transmatrixI,transvectorYI
.globl BLOWLISTI,tmpmatI,tmpmatY,INVTABI
.globl SCRNHXI,SCRNHYI
.globl LOW_TOSS_LEVELI,LOW_CLIP_LEVELI,HIGH_CLIP_LEVELI,HIGH_CLIP_LEV8,MAXZI
.globl CENTSI,_PALLISTI,FASTSTKI
.globl _ACMAP,_ARPS,_AIVI,_ADDRL,_ACNTL
.globl _MATRIXA,_MATRIXB,_MATRIXC,_VECTORA,_VECTORB,_VECTORC,_VECTORD
.globl MATRIXAI,MATRIXBI,MATRIXCI,VECTORAI,VECTORBI,VECTORCI,VECTORDI
.globl ASHADOW
*diag.asm
.globl ENTER_DIAG
.globl HARD_LOAD_DIAGPAL
.globl TOEXIT
.globl SOFT_AUDIT
.globl bufferI
.globl DIAG_ACTIVEP
.globl SETUP_DIAG_SCREEN
.globl NULLSTR
*effects.asm
.globl SCREENWIPE_OPEN
.globl SCREENWIPE_OPEN_PRC
.globl SCREENWIPE_CLOSE
.globl SCREENWIPE_CLOSE_PRC
.globl SCREENWIPE_DONE
.globl SCREENWIPE_OPEN_PRC_FAST
*flame.asm
.globl FLAME_PRC,FLAMESORT,GETCARBODY
.globl FIND_NEXT_OBJ
*font1a.asm
.globl _outtextxyc
.globl _itoa,_itoaLZ
.globl _ftoa
.globl _pixel
.globl _fill
.globl HEX2ASC
*hottub.asm
.globl HOTTUB_SCENE
*hpmath.c
.globl _HPcos,_HPsin
*hstdp.asm
.globl DISPLAY_HIGH_SCORES
.globl STR23DF
.globl STR2FORMOFFSET
.globl STR2FORM
.globl TOFORM,COLORFORM,INSFORM,PULFORM,PULINS
.globl MKHSTDFORM
.globl UPDTFORM
.globl DISPLAY_TABLE
.globl _HSTD_DISP
.globl SPININIT
.globl ENTERTEXT
.globl ENTER_INITIALS
.globl LET3D,LET3DI
.globl MIDWAYSPINENTER
.globl LOGO_PROC
.globl RBMATTR_CHECK
.globl INTO_TABLE_P
*hud.asm
.globl MOVEIN_OFFSET
.globl MOVEIN_HUD_EQUIP
.globl MOVEOUT_HUD_EQUIP
.globl POSITION
.globl POS_TABLEI
.globl HARDalloc_section
.globl _countdown,SCORE,_MPH
.globl INFINITY
.globl HUD
.globl alloc_section
.globl dealloc_section
.globl _find_pal
.globl COUNTDOWN_BUFI
.globl INFIN_CORRECT
.globl VAR_ROAD_KFACTOR
.globl MAXMPH_COUNT
.globl FILL_PLOT
.globl FILL_DITHER
*intro.asm
.globl ISSUE_STARTGAME_TSEL
.globl BONUS_WAITFLAG
.globl OM_BONUS_WAITFLAG
.globl BONUS_WAITFLAG
.globl INSMORE_NOCOUNTDOWN
.globl PLYR_INTRO
.globl H2H_FLAGSTATE
.globl REAL_CHECKPOINTS
.globl FIRST_RACE
.globl ISSUE_STARTGAME
.globl WAIT_FOR_CHALLENGER
.globl LOGO_SMALL
.globl HEAD2HEAD_LOGO_WAIT
.globl HEAD2HEAD_LOGO
.globl GAMEDIFF
.globl CHOOSE_NEXT_RACE
.globl CHECKPOINT_NUM
.globl INIT_GAMELEG
.globl CHOSEN_VEHICLE
.globl CHOSEN_TRANSMISSION,CHOICENOW
.globl INIT_PEDALCHK,PEDALCHK
.globl GETCHOICE
.globl POSES
.globl CPOINT_LIGHT
.globl END_OF_GAMEP
.globl JOININGAME
.globl _debug,_start
.globl LOGO,GETTILE_BACKGRND
.globl _timeout,_timer
.globl SET_ATTR,CYCLE_ATTR
.globl INTROTIMER,RACESEL_TIMER
.globl ENDPLAYER
.globl INTRO_SKY_SPIN
.globl CHOOSENCAR
.globl INSMORE
.globl LOAD_SHARED
.globl DIRTY_SHARED
.globl GETTILE_BACKGRND
.globl RATING_TAG
.globl TRAFFIC_LIGHT
.globl TRANSCHOICE
.globl DIAL_ROUT
.globl SHOW_CAR_STATISTICS
.globl ROUNDER
.globl GETTHECARS
.globl LASTCHOICE
.globl START_NOW_P
.globl ULTRA_LOGO
.globl START_HIT
.globl CHOSEN_RACE
.globl THE_CAR_CHOICE_PROC
*invtab30.asm
.globl INVTAB
*leg.asm
.globl LEG_INIT
.globl LEG_GENERATE_MAP
.globl LEG_MAP,LEG_MAPI
.globl FINISH_ID
*line.c
.globl _rectangle,_line
*math.asm
.globl GEN_NORMAL
.globl _SINE,_COSI
.globl ARCTANF
.globl HALFPII,PII,TWOPII
.globl FIND_MATRIX
.globl INITMAT
.globl FIND_XMATRIX,FIND_YMATRIX,FIND_ZMATRIX
.globl _find_Ymatrix
.globl HPFIND_YMATRIX
.globl NORMAT,NORMALIZE
.globl NORMIT,NORMITS
.globl MATRIX_MUL
.globl CONCAT201
.globl CONCATMATV,CONCATMAT
.globl VECTLEN,DOT,CPYMAT,CPYIMAT
.globl GETTHETADIFF
.globl VECT_COLL
.globl DIST_PT2LINE,GETLINE_EQ_2D
.globl CLR_VECTORA
.globl SCALE_MATRIX
*map.asm
.globl THIS_MACHINE_AHEAD
.globl FOLDMAP,UNFOLDMAP
.globl STOPWATCH,STOPWATCH_CNTL
.globl TIME2STR
.globl CVTTIME
.globl UNFOLDMAP_NOPAL
.globl RADAR_PLOT
*memtest.asm
.globl TEST_CHIPS
.globl TEST_STATIC_CHIPS
*motion.asm
.globl INITIALIZATION_MOTION_CHECK
.globl MOTION_RCV_TIKS
.globl MOTION_STOP_HIT
.globl LATCH_ERROR
.globl PLMOTION,INITIALIZE_GALIL
.globl LEVEL_THE_MOTION
.globl MOTION_DLPROG
.globl GALIL_NOTPRESENT
.globl POWERUP_INITIALIZE_GALIL
.globl MOTION_TESTX,MOTION_TESTY,MOTION_TESTZ
.globl MOTION_BURNIN
.globl RESET_GALIL
.globl MOTION_DLPROG
*objects.asm
.globl _PALLIST,_PALROM
.globl TYCO_TRKI
*overlay.asm
.globl REAL_CHECKPOINTS
.globl CHECKPOINT_HIT_R
.globl LOAD_LOOK
.globl SECTION_ROUTINE
.globl SECTION_SETUP
.globl CHECKPOINT_TIME_BONUS
.globl CHECKPOINT_HIT
*plyr.asm
.globl _plyr1
.globl _viewswitch
.globl PLYR_CAR_INIT
.globl PLYR_INTRO_ENTER
.globl PLYPOS2Z,PLYPOS2Y
.globl _PLYR,DRONEGO,GETSPD,OVELADD
.globl STEERMX,STEERMN,STEERCT,STEERFR,PEDALMX,PEDALMN
.globl GETCMOS_VALUES
.globl GETTRAK
.globl CAMYADJ
.globl _on_brake,_off_brake
.globl PLYSTAT,PLYCAR,PLYPROC,PLYCBLK
.globl _VIEW0,_VIEW1,_VIEW2,CAMVIEW
.globl OFFROAD_TMR,OVELNADD
.globl MKFXSND
.globl OLD_VIEWPOINT
.globl GETRDIR
.globl ZOOM,ZOOMI,ZOOMD
.globl BONUS_WAIT_LOOP
*racer.asm
.globl RACER_PTRI
.globl RACER_DRONE
.globl CARSCAN,OBSTABINIT,PLSCAN,GETRDOFFSET
.globl DIFF_CHANGE,DIFF_TRICKLE
*rho.asm
.globl SMOKE_PUFF
.globl NOLONG_VEHICLES
*roadblck.asm
.globl INIT_RDDEBRIS,ADD_RDDEBRIS,FREE_RDDEBRIS
.globl ROAD_DEBRISI,ROAD_DEBRIS
.globl DEBRIS_SORT
*roadkill.asm
.globl ROADKILL_HIT,ROADKILL_FLYERP
.globl ROADKILL_SETKILL
.globl GET_ROADKILL_TRACK,PROC_COUNT,OBJ_MOVE_GROUND
.globl ROADKILL_SOUND_TIMER
.globl DELETE_SPLAT,BUG_SPAWNER_PROC,PLYRROADKILL
.globl DEER_SPAWNER_PROC,DEER_EXPLODE,FLYING_PARTS
.globl GEESE_SPAWNER
.globl COW_SPAWNER_PROC
*routs.asm
.globl SQRT
.globl DIV_F,DIV_F30
.globl DIV_I,DIV_I30
.globl DIV_U30
.globl INV_F30
.globl MOD_I30
.globl MOD_U30
*rroad.asm
.globl GETFLYMAT_TRAIN,FLYTRAINPI,FLYTRAIN
.globl FREEZE_IT
.globl RR_CARSI
.globl RRSTART_ENGINE,RRSTART_FLATBED,RRSTART_BOXCAR
.globl FLYCARP,CARSMASH,FLYTRAIN
.globl DEADCARA
.globl RAMPDOWNTRAINSND
*setups.asm
.globl LOADSECTION_TABLEI
.globl CLEANUP_PALS
*skid.asm
.globl INITSKIDOBJS
.globl SKIDP
*smoke.asm
.globl SMOKE_PROC,TIRE_SMOKE_COUNT
.globl SORT_SMOKE
*snd.asm
.globl SET_TUNE_LINKED
.globl SET_TUNE_LINKED
.globl SET_TUNE_LINKED
.globl PLYR_ENGINE
.globl SNDSTR,SNDSTRI
.globl ONESND,ONESNDFX
.globl SNDPROC
.globl CLRSNDDB
.globl SENDSND
.globl SND_RESET_QUIET
.globl RESET_SNDBRD
.globl SILENT
.globl SET_TUNE
.globl RESUME_TUNE,LOOP_TUNE,TUNE_IDX,RESUME_TUNE_MK
.globl SET_TRACK_VOL,SET_MASTER_VOL
.globl RESUME_TUNE_NT
.globl GETPRI
.globl SET_STATION
.globl CHANGE_STATION
.globl RADIO_BUT
.globl SNDTABI
.globl KILLSNDFX
.globl VOLSNDFX
.globl IN_RESET_MODE
*sndtab.asm
.globl SNDTAB
*spark.asm
.globl SPARK_PROC,SPARK_COLLA_PROC,OBJ_MOVE,WALL_SPARK,IMPACT_SPARK
.globl SKID_SPARK,ROAD_IMPACT_SPARK,INIT_SPARK
*trans.asm
.globl CHOOSE_TRANSMISSION
.globl EPALR,EPALL,EPALRR,EPALRL
.globl SIDE_DOOR,TILTWORLD
.globl ZOOMTOCAR
.globl DROPTHECYCLE,DROPTHETURN
.globl DROPTHEWHEEL,DROPTHEOTHER
.globl DOORLISTI,DOORLIST
.globl DOOR_OPENING
.globl WHEEL_ROUT
.globl DOOR_ELEMENT_DELETE_ALL
.globl DOOR_ELEMENT_DELETE
.globl TRANSCHOICE
.globl GET_UNIT_WHEEL
.globl FIX_TRANSMISSION_SCREEN
.globl CYCLE_PUSH,TURNTO_SELECT
.globl ADD_TO_DOOR_LIST
.globl ENGINE_COLOR_INIT
.globl ENGINE_COLOR
.globl TRANSCHOICE
*tracksel.asm
.globl HIDDEN_ON
.globl VALID_RACENUM
.globl TRACK_SELECTION
.globl CLEANUP_TRACKSEL_PALS
*totala.asm
.globl BLTMOD2D_NOPAL
.globl _stuff_fpga
.globl _rdma
.globl BLTMOD2D
.globl BLTMOD2DH
.globl BLTMOD2D_DS
*util.asm
.globl RAND,CRTCTLRAM,ACTIVE_SCREEN
.globl SETPAGE0,SETPAGE1
.globl FASTCLR0,FASTCLR1
.globl CLRSCRN,CLRSCRN0,CLRSCRN1,SCREEN_FILL
.globl CLR255,CLR511,SCRNFIL
.globl CLRCRAM
.globl RANDOM,FRAND,SFRAND
.globl RANDU0,RANDU,SRAND,RANDPER
.globl INIT_LINKED_LIST
.globl GET_LLIST,ALLOC_LLIST
.globl FREE_LLIST,DEL_LLIST
.globl VEHICLE_ANI_INIT,CARPROC,LEAN
.globl DYNALIST,DYNAFREE,NULL
.globl DYNALISTI,DYNAFREEI,NULLI
.globl DYNAOBJ_INIT,GETDYNA,DELDYNA
.globl CARLIST,CARFREE,CAR_COUNT
.globl CARLISTI,CARFREEI,CAR_COUNTI
.globl CARB_INIT
.globl GETCAR,DELCAR
.globl SCAN_OBJECTS
.globl PUSHALL,POPALL
.globl DISTANCE_2D
.globl FORWARD
*wave.asm
.globl LOADED
.globl WAVE
.globl INIT_SYSTEM
.globl FIXEDPAL
.globl ILLUM_PAL
.globl LOAD_FIXED_PALETTES
.globl VEHICLE_TABLE,VEHICLE_TABLEI
.globl tower_bgrey
.globl TEASE_COUNT,ATTR_MODEL
.globl LOAD_STARTUP_PALS
.globl WAVEFLAG
.globl bnout1_smoke
*wheel.asm
.globl WHEELPWR,WHEELPOS,WHEELMAX,WHEELVEL
.globl NUWHEEL,POSE
.globl TOWHEEL

36
H2H.POL Executable file
View File

@ -0,0 +1,36 @@
* h2h.pol
*
* Copyright (C) 1994 by TV Games, Inc.
* All Right Reserved
*
;
;we are about 485 lines, so lets say 490
;befa00 == 1efa00 == line(15860)
;
;
.vect C14000
.blow 809C00
.caddr C15000
.startpos 0,0,0
.startrad 0
.tyco \m\dc;\m\rm;\m\gg;\m\sf;\m\pch;\m\dv;\m\tun;\m\phoe1;\m\gc;\m\mw;\m\appl;\m\ch;
;.sect head2head,A00000
.sect head2head,AF7D00
.dir hed2hed
p1,p2
p1a,p2b
redhd1,yelhd1
big2
.dir

28
H2HOBJ.ASM Executable file
View File

@ -0,0 +1,28 @@
.FILE "OBJECTS.ASM"
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
; .def _PALLIST,_PALROM
; .bss _PALLIST,256
;_PALROM:
; .word 0C14000h,0C1404Eh,0C140EFh
; .globl TYCO_TRKI
;TYCO_TRKI: .word 00h
; .globl ROAD_MAPI
;ROAD_MAPI: .word 00h
;
;SECTION DATA
.globl _SEChead2head
_SEChead2head: ;(16345 lines, 102.16%)
.word 0C15000h ;Src (Compressed) Addr
.word 0BEFA00h ;Dest Addr
; .globl head2head_PALETTES
;head2head_PALETTES:
; .word 0,0
;

45
H2HOBJ.EQU Executable file
View File

@ -0,0 +1,45 @@
*OBJECTS.EQU
*
*COPYRIGHT (C) 1994 TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by PComp v2.41
*
;num_palettes .set 3
;p1_p .set 0
;redhd1_p .set 1
;big2_p .set 2
;
;
;num_objects .set 7
h2p1 .set 0C1400Fh
h2p1_I .set 03DF4h
h2p2 .set 0C1401Fh
h2p2_I .set 03DF4h
h2p1a .set 0C1402Fh
h2p1a_I .set 03DF4h
h2p2b .set 0C1403Fh
h2p2b_I .set 03DF4h
redhd1 .set 0C140D0h
redhd1_I .set 03E1Eh
yelhd1 .set 0C140E0h
yelhd1_I .set 03E1Eh
big2 .set 0C14171h
big2_I .set 03F5Bh
;num_sections .set 1
head2head .set 0AF7D00h ;7940
.globl _SEChead2head
; .globl head2head_PALETTES
H2HPAL1 .set 0C14000h
H2HPAL2 .set 0C1404Eh
H2HPAL3 .set 0C140EFh

BIN
HD2HD.GRP Executable file

Binary file not shown.

489
HEADS.ASM Executable file
View File

@ -0,0 +1,489 @@
.FILE "HEADS.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
HEADTYPE .set 88D0h
*----------------------------------------------------------------------------
TEXTDELER:
LDI @TEXT_ACTIVEI,AR4
TEXTDELERLP
LDI *AR4,R0
BZ TXTXX
TTEST LDI R0,AR4
LDF *+AR4(TEXT_POSY),R0
CMPF -25,R0
BGT TEXTDELERLP
LDI *AR4,R7
LDI @TEXT_ACTIVEI,R1 ;get free list pointer
DELLP LDI R1,AR1
LDI *AR1,R1
.if DEBUG
BZ $ ;lockup on end of list found
.endif
CMPI R1,AR4
BNE DELLP
LDI *AR4,R1
STI R1,*AR1 ;LINK AROUND
LDI @TEXT_FREE_COUNT,R1
INC R1
STI R1,@TEXT_FREE_COUNT
LDI @TEXT_FREEI,AR1 ;get free list pointer
LDI *AR1,R1
STI R1,*AR4
STI AR4,*AR1
LDI R7,R0
BZ TXTXX
BU TTEST
TXTXX
SLEEP 1
BU TEXTDELER
*----------------------------------------------------------------------------
HEADS .word jeno
.word marc
.word pet
.word xion
.word ted
.word matt
.word vince
.word carl
.word glen
.word ken
.word eric
.word -1
*----------------------------------------------------------------------------
*
*
*
VANITY_HEADS:
SETDP
LDI @CAMERAPOSI,AR6
CLRF R0
STF R0,*+AR6(X)
STF R0,*+AR6(Y)
STF R0,*+AR6(Z)
LDL theheads_PALETTES,AR2
CALL alloc_section
FIFO_CLRP R0 ;IS THE FIFO CLEAR
DMA_WT R0
CALL FIFO_RESET
LDI 1,R0
STI R0,@HARD_SECTION_LOAD
LDL _SECtheheads,AR2
CALL LOAD_SECTION_REQ
LDL HEADS,AR5
; CLRF R6
LDF PI,R6
VANHDLP
LDI *AR5++,R0
BN VHIX
LDI R0,AR2
CALL OBJ_GETE
LDF R6,R2
; CALL _SINE
PUSH AR0
CALL _HPsin
POP AR0
MPYF 130,R0
STF R0,*+AR0(OPOSX)
LDF R6,R2
; CALL _COSI
PUSH AR0
CALL _HPcos
POP AR0
MPYF 130,R0
STF R0,*+AR0(OPOSY)
FLOAT 368,R0
STF R0,*+AR0(OPOSZ)
STF R6,*+AR0(ORADY)
LDI AR0,AR2
CALL OBJ_INSERT
SUBF 0.571,R6
B VANHDLP
VHIX
; DIE
VANITY_HEADS_LP
LDI @OACTIVEI,AR0
VOLP
LDI *AR0,R0
BZ VOSLP
LDI R0,AR0
LDF *+AR0(ORADY),R2
ADDF 0.01,R2
STF R2,*+AR0(ORADY)
LDF R2,R6
CALL _SINE
MPYF 130,R0
STF R0,*+AR0(OPOSX)
LDF R6,R2
CALL _COSI
MPYF 130,R0
STF R0,*+AR0(OPOSY)
BU VOLP
VOSLP SLEEP 1
BU VANITY_HEADS_LP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SET18FONTDS_WHITE:
CALL SET18FONTDS
.globl font18_white
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
RETS
*----------------------------------------------------------------------------
.bss YINCREMENT,1
*----------------------------------------------------------------------------
.globl VANITY,VANITY_SUB
VANITY:
JSRP VANITY_SUB
BR CYCLE_ATTR
VANITY_SUB:
LDI MATTR,R0
STI R0,@_MODE
LDI 1,R0
STI R0,@COINOFF
CLRI R0
STI R0,@BGNDCOLA
STI R0,@NOAERASE
LDI @CAMERAPOSI,AR6
CLRF R2
STF R2,*+AR6(X)
STF R2,*+AR6(Y)
STF R2,*+AR6(Z)
LDI @CAMERARADI,AR6
STF R2,*+AR6(X)
STF R2,*+AR6(Y)
STF R2,*+AR6(Z)
LDI @CAMERAMATRIXI,AR2
CALL FIND_YMATRIX
SLEEP 1
CREATE VANITY_HEADS,HEADTYPE
CREATE TEXTDELER,HEADTYPE
; CREATE LOGO_WATCH,UTIL_C
LDL SET18FONTDS_WHITE,R0
STI R0,@FONTUSED
LDF 24,R0
STF R0,@YINCREMENT
FLOAT 420,R6
LDI 2,AR5
LDI @THANKS_TABLEI,AR4
DTLP2
ADDF @YINCREMENT,R6 ;ADDF 24,R6
KKPD FLOAT 402,R0
CMPF R0,R6
BLT JJDDA
SLEEP 1
SUBF 1,R6
BU KKPD
JJDDA
LDI *AR4++,R7 ;number of entries
CMPI 10,R7
BNE NOT10
LDI *AR4++,R0
STI R0,@FONTUSED
LDF 10,R0
STF R0,@YINCREMENT
BU KKPD
NOT10
CMPI 8,R7
BNE NOTSPEC8
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
BU DTLP2
NOTSPEC8
CMPI 7,R7
BNE NOTSPEC7
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
CALL RIGHTEM
BU DTLP2
NOTSPEC7
CMPI 4,R7
BNE NOTSPEC4
LDI 1,R0
STI R0,@TEXT_FREEZE
SLEEP 60
CLRI R0
STI R0,@TEXT_FREEZE
BU KKPD
NOTSPEC4
CMPI 99,R7
BNE NOTSPEC99
FLOAT *AR4++,R2
FLOAT (256-600),R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
CALL CENTEREM
PUSH AR4
PUSH AR5
LDI AR0,AR4
LDI AR1,AR5
CREATE KRIS,HEADTYPE
POP AR5
POP AR4
BU DTLP2
KRIS: SLEEP 1
LDF *+AR4(TEXT_POSX),R0
FLOAT 259,R1
SUBF R0,R1
MPYF 0.05,R1
ADDF R1,R0
STF R0,*+AR4(TEXT_POSX)
LDF *+AR5(TEXT_POSX),R0
FLOAT 256,R1
SUBF R0,R1
MPYF 0.05,R1
ADDF R1,R0
STF R0,*+AR5(TEXT_POSX)
BU KRIS
NOTSPEC99
CMPI 3,R7
BNE NOTSPEC3
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
CALL CENTEREM
PUSH AR4
PUSH AR5
LDI AR0,AR4
LDI AR1,AR5
CREATE ADAMSTOPRIBYL,HEADTYPE
POP AR5
POP AR4
BU DTLP2
CHISPRIB SPTR "CHRISTINE PRIBYL"
ADAMSTOPRIBYL:
SLEEP 1
LDF *+AR4(TEXT_POSY),R0
FLOAT 250,R1
CMPF R1,R0
BGT ADAMSTOPRIBYL
LDI @CHISPRIB,R0
STI R0,*+AR4(TEXT_PTR)
STI R0,*+AR5(TEXT_PTR)
DIE
NOTSPEC3
CMPI -1,R7
BEQ WTD55
CMPI 0,R7
BNE NOT0
BU DTLP2
NOT0
CMPI 2,R7
BEQ TWO
;ONE
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
CALL CENTEREM
BU DTLP2
TWO
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
FLOAT *AR4++,R2
LDF R6,R3
LDI *AR4++,AR2
CALL GETT
CALL RIGHTEM
BU DTLP2
WTD55
LDI HEADTYPE,R0
LDI -1,R1
CALL PRC_KILLALL
RETP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*SUBROUTINE FOR THE ABOVE
*
*
*PARAMETERS
* AR2 STRING
* R2 X
* R3 Y
* R4 FONT
*RETURNS
* AR0 S1
* AR1 S2
*
.bss FONTUSED,1
; LDL SET18FONTDS
; LDL SETFIXEDFONTDS
GETT:
LDI 9999,RC
CALL TEXT_ADDDS
LDF -1,R0
STF R0,*+AR0(TEXT_VELY)
STF R0,*+AR1(TEXT_VELY)
LDI @FONTUSED,R0
CALLU R0
RETS
CENTEREM:
LDI *+AR0(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_CENTER,R0
STI R0,*+AR1(TEXT_COLOR)
RETS
RIGHTEM:
LDI *+AR0(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR0(TEXT_COLOR)
LDI *+AR1(TEXT_COLOR),R0
OR TXT_RIGHT,R0
STI R0,*+AR1(TEXT_COLOR)
RETS
*----------------------------------------------------------------------------
romdata
.string "DONT DISASSEMBLE MY CODE!!! YOU WONT"
.string "FIND ANYTHING BUT BUGS AND PULLED OUT HAIR"
.string "AND MAYBE SOME FERRET TURDS"
.string "LIVE LONG AND ENJOY LIFE. WE ONLY LIVE ONCE,"
.string "AND THERES FAR TOO MUCH CODE LEFT TO BE WRITTEN"
.string "ERIC L PRIBYL AUG 15,1994"
.text
.include VANTAB.INC

849
HOTTUB.ASM Executable file
View File

@ -0,0 +1,849 @@
.FILE "HOTTUB.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.globl HT_HOTTUB,HT_RADAR,HT_STAGENT
BABA1 SPTR "THE PRESIDENT OF"
BABA2 SPTR "THE UNITED STATES"
*----------------------------------------------------------------------------
*
*
*JSRPed from BONUS SCREEN
*
HOTTUB_SCENE:
LDI 1,R0
.globl DO_FOLDFLAG
STI R0,@DO_FOLDFLAG ;whoosh the text away
CLRI R0
STI R0,@NOAERASE
LDI @_MODE,R0
OR MINFIN|MWATER,R0
STI R0,@_MODE
FLOAT 0,R0
STF R0,@INFIN_CORRECT
CALL OBJ_INIT
LDI @CAMERAPOSI,AR6
FLOAT -600,R0 ;-100
STF R0,*+AR6(Y)
CLRF R0
STF R0,*+AR6(X)
FLOAT -12000,R0
STF R0,*+AR6(Z)
LDF 0,R2
LDP @_CAMERARAD
STF R2,@_CAMERARAD+Y
SETDP
LDI @CAMERAMATRIXI,AR2
CALL FIND_YMATRIX
LDL dc_PALETTES,AR2
CALL dealloc_section
LDL dc_shared_PALETTES,AR2
CALL alloc_section
LDL finale_PALETTES,AR2
CALL alloc_section
FIFO_CLRP R0 ;IS THE FIFO CLEAR
DMA_WT R0
CALL FIFO_RESET
LDI 1,R0
STI R0,@HARD_SECTION_LOAD
LDL _SECdc_shared,AR2
CALL LOAD_SECTION_REQ
LDI 1,R0
STI R0,@HARD_SECTION_LOAD
LDL _SECfinale,AR2
CALL LOAD_SECTION_REQ
LDL _SECdc_shared,AR2
CALL LOAD_SECTION_REQ
LDI @_MODE,R0
ANDN MINFIN|MWATER,R0
STI R0,@_MODE
SOND1 LOWCOUNTRY
SOND1 THEPRES ;"Ladies and gentlemen...
LDL preseal2,AR2
CLRI R2
LDI -30,R3
LDI 368,RC
CALL OBJ_QMAKE
.bss PRES,1
ORM O_NOUNIV|O_POSTER|O_NOUROT,*+AR0(OFLAGS)
LDI AR0,AR2
STI AR2,@PRES
CALL OBJ_INSERTP
LDI @BABA1,AR2
FLOAT 256,R2
FLOAT 270,R3
LDI 46,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
LDI @BABA2,AR2
FLOAT 256,R2
FLOAT 300,R3
LDI 46,RC
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
CREATE POLITICAL_CARTOON_NOTICE,1234h
SLEEP 15
CALL SCREENWIPE_OPEN
LDL whitehse_grp,AR2
CALL LOAD_SINGLE_SECTION
CALL START_ANIMATIONS
CREATE HOTTUB_WATERVOL,1235h
LDI @_MODE,R0
OR MINFIN|MWATER,R0
STI R0,@_MODE
SLEEP 5
CREATE PREZSPEAK,1234h
SLEEP 25
LDI @PRES,AR2
CALL OBJ_DELETE
SLEEP 30
LDI 1,R0
STI R0,@NOAERASE
LDI 180,AR5
; LDI 210,AR5
HOTTUB_LPB
LDI @CAMERAPOSI,AR6
LDF *+AR6(Z),R0
FLOAT -1500,R1
SUBF R0,R1,R2
; MPYF 0.02,R2
MPYF 0.017,R2
ADDF R2,R0
STF R0,*+AR6(Z)
LDF *+AR6(Y),R0
FLOAT -4300,R1
SUBF R0,R1,R2
MPYF 0.04,R2
ADDF R2,R0
STF R0,*+AR6(Y)
SLEEP 1
DBU AR5,HOTTUB_LPB
SLEEP 300
CALL SCREENWIPE_CLOSE
LDI 1235h,R0
LDI -1,R1
CALL PRC_KILLALL
LDI FIREHYDRSND,AR2
CALL KILLSNDFX
SOND1 CLIN8
SLEEP 15
SONDFX CROWD1
SONDFX CROWDROAR
LDI 100,AR5
HOTTUB_LPB2
LDI @CAMERAPOSI,AR6
LDF *+AR6(Z),R0
FLOAT -12000,R1
SUBF R0,R1,R2
MPYF 0.01,R2
ADDF R2,R0
STF R0,*+AR6(Z)
CMPI 60,AR5
BNE HOTTT
SOND1 CLIN5
LDI 3,R0 ;COOL LAST YEEHAH
LDI 130,R1
CALL SET_TRACK_VOL
HOTTT
SLEEP 1
DBU AR5,HOTTUB_LPB2
;moved to bonus.asm
;Wed Mar 8 09:52:21 1995
;
; SLEEP 1
;
; CALL OBJ_INIT
; CALL INIT_DRONES ;initialize DRONE tracker system
; CALL DYNAOBJ_INIT ;initialize DYNAMIC OBJECTS
; CALL CARB_INIT ;initialize CAR BLOCKS
; CALL INIT_RDDEBRIS ;initialize ROAD DEBRIS list(s)
;
;
; LDI 1234h,R0
; LDI -1,R1
; CALL PRC_KILLALL
;
;
; LDI SPAWNER_C|ANIMATION_T,R0
; LDI -1,R1
; CALL PRC_KILLALL
;
;
; LDL dc_shared_PALETTES,AR2
; CALL dealloc_section
; LDL finale_PALETTES,AR2
; CALL dealloc_section
RETP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
HOTTUB_WATERVOL:
LDI @WATCHOBJ,AR4
LDF *+AR4(OPOSX),R0
LDI @CAMERAPOSI,AR0
SUBF *+AR0(X),R0
MPYF R0,R0
LDF *+AR4(OPOSZ),R2
SUBF *+AR0(Z),R2
MPYF R2,R2
ADDF R0,R2
CALL SQRT
;from 0-12,000 255
;12,001-64,000 255-110
;
FLOAT 2000,R1
CMPF R1,R0
BGT NDOO
LDI 205,R2
BU BIBO
NBIBO LDI 10,R2
BU BIBO
NDOO
FLOAT 12000,R2
CMPF R2,R0
BGT NBIBO
SUBF R1,R0
MPYFL 0.0001,R0 ;1/50,000
SUBRF 1.0,R0
MPYF 205,R0
FIX R0,R2
CMPI 180,R2
LDIGT 180,R2
BIBO LDI FIREHYDRSND,AR2
CALL AMBIENCE_SOUND
SLEEP 1
BU HOTTUB_WATERVOL
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
PREZSPEAK:
SLEEP 25
SONDFX CROWDROAR
SLEEP 25
SOND1 CLIN1 ;Croozin USA
SLEEP 44
SOND1 CLIN2 ;Come on Down
SONDFX CROWD1
SLEEP 75
SOND1 CLIN3 ;I luv this job
SONDFX CROWDROAR
SLEEP 50
SOND1 CLIN5 ;Yee HAW
SLEEP 40
SOND1 CLIN4 ;Come in the hot tub
SLEEP 60
SOND1 CHICKCHEER
SLEEP 70
SOND1 CLIN6 ;Well Hoo Eee
SLEEP 30
SONDFX MOO
SLEEP 40
SOND1 CLIN7 ;Hey Doggie
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
START_ANIMATIONS:
LDI @OACTIVEI,AR4
ODC LDI *AR4,R3
BZ ODCX
LDI R3,AR4
ODCL2 LDI *+AR4(OID),R2
CMPI 6D0h,R2
BNE HHTT
CALL HT_HUNGH
BU ODC
HHTT
CMPI 621h,R2
BNE NTT1
CALL HT_HOTTUB
BU ODC
NTT1
CMPI 622h,R2
BNE NTT1A
CALL HT_HILLY
BU ODC
NTT1A
CMPI 623h,R2
BNE NTT1B
CALL HT_GIRL
BU ODC
NTT1B
CMPI 615h,R2
BNE NTT2
CALL HT_RADAR
BU ODC
NTT2 CMPI 616h,R2
BNE ODC
CALL HT_STAGENT
BU ODC
ODCX
RETS
*----------------------------------------------------------------------------
ANI_HOTTUBI .word ANI_HOTTUB
ANI_HOTTUB .word htub,htub1,htub2,htub3,htub4,htub5,-1
HILLANII .word HILLANI
HILLANI .word hilly1,hilly2,hilly3,hilly4,hilly5,hilly6,-1
GIRLANII .word GIRLANI
GIRLANI .word girl1,girl2,girl3,girl4,girl5,girl6,-1
;hott1,hott2,hott3,hott4,hott5,hott6,-1
ANI_RADARI .word ANI_RADAR
ANI_RADAR .word rad1,rad2,rad3,rad4,rad5,rad6,rad7,rad8,rad9,-1
ANI_STAGI .word ANI_STAG
ANI_STAG .word stagent1,stagent2,stagent3,5,stagent2,-1
HT_HUNGH:
PUSH AR6
; LDI *+AR4(OPLINK),AR2
; CALL PRC_KILL
; LDI *+AR4(OFLAGS),R0
; ANDN O_POSTER,R0
; STI R0,*+AR4(OFLAGS)
LDF 1.2,R0
STF R0,*+AR4(OMAT00)
STF R0,*+AR4(OMAT11)
STF R0,*+AR4(OMAT22)
.globl HUNGH_ANISI
LDI @HUNGH_ANISI,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
HT_RUT:
PUSH AR6
LDI *+AR4(OPLINK),AR2
CALL PRC_KILL
LDI *+AR4(OFLAGS),R0
ANDN O_POSTER,R0
STI R0,*+AR4(OFLAGS)
.globl RUT_ANISI
LDI @RUT_ANISI,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
.bss WATCHOBJ,1
HT_HILLY:
PUSH AR6
LDI @HILLANII,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
HT_GIRL:
PUSH AR6
LDI @GIRLANII,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
HT_HOTTUB:
PUSH AR6
STI AR4,@WATCHOBJ
LDI @ANI_HOTTUBI,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
HT_RADAR:
PUSH AR6
LDI @ANI_RADARI,AR6
CREATE PLAINANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
HT_STAGENT:
PUSH AR6
LDI @ANI_STAGI,AR6
CREATE AGENTANI_PROC,SPAWNER_C|ANIMATION_T
POP AR6
RETS
PLAINANI_PROC:
LDI AR6,AR5
PLAINANI_LP
LDI *AR5++,R0
BLT PLAINANI_PROC
STI R0,*+AR4(OROMDATA)
LDI 9,R4
RANDN 3
ADDI R0,R4
PPDD SLEEP 1
SUBI @NFRAMES,R4
BLE PLAINANI_LP
BU PPDD
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
AGENTANI_PROC:
RANDN 50
LDI R0,AR2
ADDI 20,AR2
CALL SLEEP
LDI AR6,AR5
AGENTANI_LP
LDI *AR5++,R0
BLT AGENTANI_PROC
CMPI 5,R0
BNE JKG
SLEEP 12
BU AGENTANI_LP
JKG STI R0,*+AR4(OROMDATA)
LDI 15,R4
PPDDA SLEEP 1
SUBI @NFRAMES,R4
BLE AGENTANI_LP
BU PPDDA
*----------------------------------------------------------------------------
PC1 SPTR "CELEBRITY IMPERSONATION"
PC2 SPTR "POLITICAL CARTOON"
*----------------------------------------------------------------------------
POLITICAL_CARTOON_NOTICE:
LDI @PC1,AR2
LDI 15,RC
CALL POLTXT
SLEEP 26
LDI @PC2,AR2
LDI 20,RC
CALL POLTXT
DIE
POLTXT:
FLOAT 256,R2
FLOAT 20,R3
CALL TEXT_ADDDS
ORM TXT_CENTER,*+AR0(TEXT_COLOR)
ORM TXT_CENTER,*+AR1(TEXT_COLOR)
.globl font18_white
LDL font18_white,AR2
CALL PAL_FIND_RAW
STI R0,*+AR0(TEXT_PAL)
STI R0,*+AR1(TEXT_PAL)
RETS
*----------------------------------------------------------------------------
BABE_ASTRT .set PDATA
*----------------------------------------------------------------------------
CROWD_IT:
LDI 255,R2
LDI CROWD1,AR2
CALL AMBIENCE_SOUND
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
BABE_TROPHY:
; SLEEP 6
LDI 12,AR5
DABLP3 SLEEP 1
SUBI @NFRAMES,AR5
CMPI 0,AR5
LDILT 0,AR5
DBU AR5,DABLP3
SOND1 GETREADYTUNE
CALL OBJ_GET
LDI AR0,AR4
FLOAT -50,R0
STF R0,*+AR4(OPOSX)
FLOAT 310,R0
STF R0,*+AR4(OPOSY)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI *+AR4(OFLAGS),R0
OR O_POSTER|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
LDL here1,R0
STI R0,*+AR4(OROMDATA)
READAUD ADJ_GIRLS
CMPI 0,R0
BEQ NODA
LDI AR4,AR2
CALL OBJ_INSERTP
NODA
LDL BABE_TROPHY_SCRIPT,AR6
STI AR6,*+AR7(BABE_ASTRT)
LDI 11,AR5
BABE_LP
LDF *+AR4(OPOSY),R0
SUBF 3,R0
STF R0,*+AR4(OPOSY)
CALL BABE_ANI
CALL CROWD_IT
SLEEP 1
LDF *+AR4(OPOSY),R0
SUBF 3,R0
STF R0,*+AR4(OPOSY)
CALL CROWD_IT
SLEEP 1
LDF *+AR4(OPOSY),R0
SUBF 3,R0
STF R0,*+AR4(OPOSY)
CALL CROWD_IT
SLEEP 1
DBU AR5,BABE_LP
LDI 13,AR5
BBD CALL BABE_ANI
CALL CROWD_IT
SLEEP 3
DBU AR5,BBD
SONDFX CHICK_LAUGH
LDI 27,AR5
BABE_LP2
CALL BABE_ANI
CALL CROWD_IT
SLEEP 3
DBU AR5,BABE_LP2
; LDI 25-1,AR5
LDI 50-1,AR5
BABLP3 SLEEP 1
SUBI @NFRAMES,AR5
CMPI 0,AR5
LDILT 0,AR5
DBU AR5,BABLP3
BABE_TROPHYX
CREATEC BABE_IBO,UTIL_C
LDI *+AR7(BABE_ASTRT),R0
STI R0,*+AR0(BABE_ASTRT)
RETP
*
*
BABE_IBO:
LDI 6,AR5
BABE_LP3
LDF *+AR4(OPOSY),R0
ADDF 15,R0
STF R0,*+AR4(OPOSY)
SLEEP 1
LDF *+AR4(OPOSY),R0
ADDF 15,R0
STF R0,*+AR4(OPOSY)
SLEEP 1
LDF *+AR4(OPOSY),R0
ADDF 15,R0
STF R0,*+AR4(OPOSY)
SLEEP 1
DBU AR5,BABE_LP3
LDI 0,R0
LDI 100,R1
CALL SET_TRACK_VOL
SOND1 MAPTUNE
DIE
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
BABE_ANI:
LONGROUT
BABE_ANIKK
LDI *AR6++,R0
BN BX
STI R0,*+AR4(OROMDATA)
RETS
BX LDI *+AR7(BABE_ASTRT),AR6
BU BABE_ANIKK
END_LONGROUT
*----------------------------------------------------------------------------
BABE_TROPHY_SCRIPT
.word here1
.word here2
.word here3
.word here4
.word here5
.word here6
.word -1
BABE_FLAG_SCRIPT
.word flag1
.word flag2
.word flag3
.word flag4
.word flag5
.word flag6
.word flag7
.word -1
*----------------------------------------------------------------------------
*
*
*
*
*
BABE_WAVEFLAG:
READAUD ADJ_GIRLS
CMPI 0,R0
BEQ SUICIDE
CALL OBJ_GET
LDI AR0,AR4
FLOAT -350,R0
STF R0,*+AR4(OPOSX)
FLOAT 40,R0
STF R0,*+AR4(OPOSY)
FLOAT 368,R0
STF R0,*+AR4(OPOSZ)
LDI *+AR4(OFLAGS),R0
OR O_POSTER|O_NOUROT|O_NOUNIV,R0
STI R0,*+AR4(OFLAGS)
LDL flag1,R0
STI R0,*+AR4(OROMDATA)
LDI AR4,AR2
CALL OBJ_INSERTP
BABEWTLP
LDI @BABE_CONTROL,R0
BNZ BABEGO
LDF *+AR4(OPOSX),R0
FLOAT -200,R1
CMPF R1,R0
BGE IBO2
ADDF 5,R0
STF R0,*+AR4(OPOSX)
IBO2
SLEEP 1
BU BABEWTLP
BABEGO
LDI 17,AR5
BABERST
LDL BABE_FLAG_SCRIPT,AR6
BABE_LPWF
LDI *AR6++,R0
BN BABERST
STI R0,*+AR4(OROMDATA)
SLEEP 2
DBU AR5,BABE_LPWF
SLEEP 5
LDI 16,AR5
BABEOFF
LDF *+AR4(OPOSX),R0
SUBF 6,R0
STF R0,*+AR4(OPOSX)
SLEEP 1
LDF *+AR4(OPOSX),R0
SUBF 6,R0
STF R0,*+AR4(OPOSX)
SLEEP 1
DBU AR5,BABEOFF
LDI AR4,AR2
CALL OBJ_DELETE
DIE
*----------------------------------------------------------------------------
.END

168
HPMATH.ASM Executable file
View File

@ -0,0 +1,168 @@
******************************************************
* TMS320C30 C COMPILER Version 4.50
******************************************************
; C:\BIN\ac30.exe -mr -ic:\c30tools -x -q hpmath.c e:\hpmath.if
; C:\BIN\opt30.exe -m -r -a -q -O2 e:\hpmath.if e:\hpmath.opt
; C:\BIN\cg30.exe -o -n -b -m -p -a -c -q e:\hpmath.opt hpmath.asm e:\hpmath.tmp
.version 30
FP .set AR3
.file "hpmath.c"
.sym _HPsin,_HPsin,38,2,0
.globl _HPsin
.func 51
******************************************************
* FUNCTION DEF : _HPsin
******************************************************
_HPsin:
PUSH R4
.sym _x,2,6,17,32
*
* R2 assigned to parameter x
* R3 assigned to variable sgn
* R4 assigned to variable xn
*
.sym _x,2,6,4,32
.sym _sgn,3,6,4,32
.sym C$2,2,6,4,32
.sym C$1,4,6,4,32
.sym _xn,4,6,4,32
.sym C$3,19,4,4,32
.line 2
.line 4
CMPF 0,R2
LDFLT -1.0,R3
LDFGE 1.0,R3
ABSF R2
.line 9
LDP @CONST+0
LDF @CONST+0,R0
MPYF R0,R2,R1
ADDF 5.0e-1,R1
FIX R1,RC
FLOAT RC,R4
.line 14
LDI RC,R0
LDI 2,R1
CALL MOD_I30
BZ LL3
NEGF R3
LL3:
LDF 3.140625,R0
MPYF R0,R4,R1
SUBF R1,R2,R1
LDP @CONST+1
MPYF @CONST+1,R4
SUBF R4,R1,R4
.line 28
MPYF R4,R4,R2
LDP @CONST+2
LDF @CONST+2,R1
MPYF R1,R2,R0
LDP @CONST+3
ADDF @CONST+3,R0
MPYF R2,R0
LDP @CONST+4
ADDF @CONST+4,R0
MPYF R2,R0
LDP @CONST+5
ADDF @CONST+5,R0
MPYF R2,R0
MPYF R4,R0
ADDF R4,R0
MPYF R3,R0
EPI0_1:
.line 29
POP R4
RETS
.endfunc 79,000000010H,0
.sym _HPcos,_HPcos,38,2,0
.globl _HPcos
.func 98
******************************************************
* FUNCTION DEF : _HPcos
******************************************************
_HPcos:
PUSH R4
.sym _x,2,6,17,32
*
* R2 assigned to variable xn
* R3 assigned to variable x
* R4 assigned to variable sgn
*
.sym C$2,2,6,4,32
.sym C$1,3,6,4,32
.sym _xn,2,6,4,32
.sym _x,3,6,4,32
.sym C$3,19,4,4,32
.sym _sgn,4,6,4,32
.sym C$4,2,6,4,32
.line 2
ABSF R2,R3
.line 16
LDP @CONST+6
LDF @CONST+6,R0
ADDF R0,R3,R1
LDP @CONST+0
MPYF @CONST+0,R1
LDF 5.0e-1,R2
ADDF R2,R1
FIX R1,RC
FLOAT RC,R1
SUBF R2,R1,R2
.line 21
LDI RC,R0
LDI 2,R1
CALL MOD_I30
LDFNZ -1.0,R4
LDFZ 1.0,R4
LDF 3.140625,R0
MPYF R0,R2,R1
SUBF R1,R3
LDP @CONST+1
MPYF @CONST+1,R2
SUBF R2,R3
.line 34
MPYF R3,R3,R2
LDP @CONST+2
LDF @CONST+2,R1
MPYF R1,R2,R0
LDP @CONST+3
ADDF @CONST+3,R0
MPYF R2,R0
LDP @CONST+4
ADDF @CONST+4,R0
MPYF R2,R0
LDP @CONST+5
ADDF @CONST+5,R0
MPYF R2,R0
MPYF R3,R0
ADDF R3,R0
MPYF R4,R0
EPI0_2:
.line 35
POP R4
RETS
.endfunc 132,000000010H,0
******************************************************
* DEFINE CONSTANTS *
******************************************************
.sect ".const"
CONST:
.float 3.1830988618379067154e-1;0
.float 9.67653589793e-4 ;1
.float 2.601903036e-6 ;2
.float -1.980741872e-4 ;3
.float 8.333025139e-3 ;4
.float -1.666665668e-1 ;5
.float 1.57079632679489661923;6
******************************************************
* UNDEFINED REFERENCES *
******************************************************
.globl MOD_I30
.end

132
HPMATH.C Executable file
View File

@ -0,0 +1,132 @@
/* HPmath.c
*
* Copyright (C) 1994 by TV Games, Inc.
* All Rights Reserved
*
* These routines are for use only when a high degree of precision
* are nessesary.
*/
#define BITS 23 /* There are 23 bits in the mantissa */
#define MAXX 88.72283906 /* ln(HUGE_VAL) */
#define MAXH 89.41598624 /* ln(HUGE_VAL) + ln(2) */
#define TWO23 8388608 /* 2 ^ BITS */
#define XBIG 8.664339757 /* (BITS/2 + 1) * ln(2) */
/* macros used in sin and cos */
#define INVSPI 0.31830988618379067154
#define HALFPI 1.57079632679489661923
#define C1 3.140625
#define C2 9.67653589793e-4
#define R1 -0.1666665668e+0
#define R2 0.8333025139e-2
#define R3 -0.1980741872e-3
#define R4 0.2601903036e-5
/* HPsin() - High Precision sine
*
* Based on the algorithm from "Software Manual for the Elementary
* Functions", Cody and Waite, Prentice Hall 1980, chapter 8.
*
* N = round(x / PI)
* f = x - N * PI
* g = f * f
* R = polynomial expansion
*
* result = f + f * R
*
* if x < 0, result = - result
* if N is even, result = - result
*
* This will return the wrong result for x >= MAXINT * PI
*/
double HPsin(double x)
{
double d,y,xn,f,g,rg;
float sgn = (x < 0) ? -1.0 : 1.0;
int n;
x = fabs(x);
n = (int) ((x * INVSPI) + 0.5);
xn = (double) n;
/*
* if n is odd, negate the sign
*/
if (n % 2) sgn = -sgn;
/*
* f = x - xn * PI (but mathematically more stable)
*/
f = (x - xn * C1) - xn * C2;
/*
* determine polynomial expression
*/
g = f * f;
rg = (((R4 * g + R3) * g + R2) * g + R1) * g;
return (sgn * (f + f * rg));
}
/* HPcos() - High Precision Cosine
*
* Based on the algorithm from "Software Manual for the Elementary
* Functions", Cody and Waite, Prentice Hall 1980, chapter 8.
*
* N = round(x / PI + 1/2) - 0.5
* f = x - N * PI
* g = f * f
* R = polynomial expression
*
* result = f + f * R
* if N is even, result = - result
*
* This will return the wrong result for x >= MAXINT * PI
*/
double HPcos(double x)
{
float sgn; /* the sign of the result */
double xn,f,g,rg;
int n;
/*
* cos(x) = cos(-x)
*/
x = fabs(x);
/*
* n = round(x/PI + 1/2) (can be rounded this way, since positive number)
*/
n = (int) (((x + HALFPI) * INVSPI) + 0.5);
xn = (double) n - 0.5;
/*
* if n is odd, negate the sign
*/
sgn = (n % 2) ? -1.0 : 1.0;
/*
* f = x - xn * PI (but more mathematically stable)
*/
f = (x - xn * C1) - xn * C2;
/*
* determine polynomial expression
*/
g = f * f;
rg = (((R4 * g + R3) * g + R2) * g + R1) * g;
return (sgn * (f + f * rg));
}

3006
HSTDP.ASM Executable file

File diff suppressed because it is too large Load Diff

711
HUD.ASM Executable file
View File

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

895
INFIN.ASM Executable file
View File

@ -0,0 +1,895 @@
.FILE "INFIN.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include OBJ.EQU
.include OBJECTS.EQU
.include GLOBALS.EQU
.include SYS.EQU
.include VUNIT.EQU
.include PALL.EQU
.bss CAMRADY,1 ;NORMALIZED 0-2PI CAMERA RAD
*----------------------------------------------------------------------------
*SEARCH THE ROAD OBJECTS AND FIND THE HIGHEST POSITIONED OBJECT.
*
*Note that the case of the player being inverted can not happen because the
*infinity plane would freak out, and who knows what would happen then, so we
*assume that this case is not present. Therefore we can simply say the the
*highest valued Y position of the objects is the highest Y position, and then
*only that value must be projected in Y.
*
*
HIGH_CLIP_LEVEL .set (5000-1) ;ACTUAL # OF ENTRIES
.bss HIGHEST_ROADY,1 ;FL CLIP LEVEL IN Y
.bss HIGHEST_ROADY_X,1 ;FL CLIP LEVEL IN Y
.bss VAR_ROAD_KFACTOR,1 ;FL CLIPPING OVERSHOOT FACTOR
FIND_HIGHEST_ROADY:
PUSH R0
PUSH R1
PUSH R2
PUSH R3
PUSH R6
PUSH R7
PUSH AR2
FLOAT 512,R6
STPF R6,@HIGHEST_ROADY
CLRF R7 ;CORRESPONDING Z POS
LDI @DYNALIST_BEGIN,AR2
CMPI 0,AR2
BEQ FHRY_X
FHRYLP
LDI *+AR2(OFLAGS),R0
AND O_LIST_M,R0
CMPI O_LIST1,R0 ;OACTIVE ONLY!
BNE NOCHANCE
;use leftover CAMERAMATRIX
;
LDI @VECTORAI,AR1
LDP @_CAMERAPOS+X
LDF *+AR2(OPOSX),R0
SUBF @_CAMERAPOS+X,R0
STF R0,*+AR1(X)
LDF *+AR2(OPOSY),R0
SUBF @_CAMERAPOS+Y,R0
STF R0,*+AR1(Y)
LDF *+AR2(OPOSZ),R0
SUBF @_CAMERAPOS+Z,R0
STF R0,*+AR1(Z)
SETDP
LDI AR1,AR0
LDI @CAMERAMATRIXI,AR1 ;AR1 IS 3X3 MATRIX
;matrix mul really only concerned with Y
;
MPYF *AR0++,*AR1++,R0
MPYF *AR0,*AR1++,R2
MPYF *+AR0(1),*AR1++,R0
|| ADDF R0,R2
MPYF *-AR0(1),*AR1++,R0
|| ADDF R0,R2
PUSHF R2
MPYF *AR0,*AR1++,R2
MPYF *+AR0(1),*AR1++,R0
|| ADDF R0,R2
ADDF R0,R2
;
POPF R3
LDI *+AR2(ODIST),AR1
CMPI 0,AR1
BLE NOCHANCE
RS 4,AR1 ;/16
CMPI HIGH_CLIP_LEVEL,AR1
BGE NOCHANCE
ADDI @INVTABI,AR1
MPYF *AR1,R3
ADDF @SCRNHXI,R3 ;this is the clip level (in Y)
CMPF 0,R3
BLT NOCHANCE
FLOAT 512,R0
CMPF R0,R3
BGT NOCHANCE
MPYF *AR1,R2
ADDF @SCRNHYI,R2 ;this is the clip level (in Y)
CMPF R2,R6
LDFGT R2,R6
LDFGT R3,R7 ;SAVE X VALUE
NOCHANCE
LDI *+AR2(OLINK4),AR2
CMPI 0,AR2
BNE FHRYLP
;no kludge factor nessesary
ADDF @VAR_ROAD_KFACTOR,R6 ;pixels UNDER (overshoot)
CMPF 0,R6
LDFLT 0,R6
STPF R6,@HIGHEST_ROADY
STPF R7,@HIGHEST_ROADY_X ;SAVE X VALUE
FHRY_X
POP AR2
POP R7
POP R6
POP R3
POP R2
POP R1
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*PLOT INFINITY PLANE
*
*VERTICES TRANSFORMED AS
* 1 3 5
*
* 0 2 4 etc.
*
*
.bss AMOUNT_CLIPPED,1
FORMULA .float -244.4619926 ;(6*256)/2PI (convert radians to length of infinity plane)
LOWVAL .float -1536
HIGHVAL .float 1536
LOIVAL .word -768
HIGHIVAL .word 1536
INFPROJ .float 0.0064
INFVAL .float 80000
*
*
*
INFINITY:
LDI @_MODE,R0
TSTB MINTUNNEL,R0
RETSNZ
AND MMODE,R0
CMPI MGAME,R0
CALLEQ FIND_HIGHEST_ROADY
;KEEP CAMERARAD Y IN RANGE +-2 PI
LDP @_CAMERARAD
LDF @_CAMERARAD+Y,R2
SETDP
BLT INFF0
CMPF @TWOPII,R2
BLT INFF1
INFF0
SETDP
CALL NORMIT ;SAVE TRUNCATED VERSION
LDP @_CAMERARAD
STF R2,@_CAMERARAD+Y
SETDP
INFF1
STF R2,@CAMRADY
;
;FIND HORIZON X OFFSET
MPYF @FORMULA,R2
FIX R2
CMPI @HIGHIVAL,R2
BLT OK23
SUBI @HIGHIVAL,R2
OK23
CMPI @LOIVAL,R2
BGT OK554
ADDI @HIGHIVAL,R2
OK554
FLOAT R2,R6 ;R6 = HORIZON X OFFSET
;REMOVE Y AXIS ROTATION FROM CAMERA MATRIX
;
;
LDI @MATRIXAI,AR2 ;find_Ymatrix(&MATRIXA, -CAMERARAD.y);
NEGF @CAMRADY,R2 ;concatmat(&MATRIXA, &CAMERAMATRIX, &MATRIXA);
CALL FIND_YMATRIX
LDI AR2,R3
LDI @CAMERAMATRIXI,R2
CALL CONCATMAT
;GET Y HEIGHT OF CLIP ELEMENT
LDF @HIGHEST_ROADY,R0
ADDF 25,R0
LDF @INFIN_CORRECT,R1
ADDF @SCRNHYI,R1
SUBF R1,R0
LDFLT 0,R0
LDI @_MODE,R1
AND MMODE,R1
CMPI MGAME,R1
LDFNE 0,R0
STF R0,@AMOUNT_CLIPPED
;
;a2c = hsy - hy
;0 - amount to clip
;ROTATE INFINITY PLANE COORDS
LDI @INFINITY_POINTS,AR5
LDI @BLOWLISTI,AR6
LDI 33,AR4
CALL TRANS_PTS
LDI sky1_p,AR2
CALL PAL_FIND
LDI R0,AR2
LDP @FIFO_ADDR,AR5
LS 16,AR5
LDI @INFIN_POLYGONSI,AR0
LDI 0FE00h,R4 ;AIVI[0] = 0xff00
LDI 00000h,R5 ;AIVI[1] = 0x3800
LDI 000FFh,R6 ;AIVI[2] = 0x38FF
LDI 0FEFFh,R7 ;AIVI[3] = 0xffFF
FIX @AMOUNT_CLIPPED,R3
LDI 11,AR4
LDI @BLOWLISTI,AR6
LDI 0,AR1 ;ML FIX
LDP @FIFO_STATUS
LOOP LDI @FIFO_STATUS,R0
AND FIFO_STATUS_MAX_FLAG,R0
BNZ LOOP
SETDP
LDI TM,R0
STI R0,*AR5 ;ACNTL = 0x900;
;optimize this, its the same palette ALWAYS
;
;
LDI *AR0++,AR2
CALL PAL_FIND
STI R0,*AR5 ;ACMAP
;ORDER: 0,1,3,2
LDI @_MODE,R0
TSTB MWATER,R0
BNZ NOCLIPPING
AND MMODE,R0
CMPI MGAME,R0
BNE NOCLIPPING
;
;clip to horizon plane
;
; A B
; e
; D C
;
;
;1. find line equation for DC
;
PUSH AR0
PUSH AR1
PUSH BK
LDI AR6,AR0 ;C
ADDI 9,AR0
LDI AR6,AR1 ;D
ADDI 6,AR1
LDI @VECTORAI,AR2
CALL GETLINE_EQ_2D
;
;2. distance to line
;
LDI AR2,AR0
LDI @VECTORCI,AR1
LDF @HIGHEST_ROADY_X,R0
STF R0,*+AR1(X)
LDF @HIGHEST_ROADY,R0
STF R0,*+AR1(Y)
CALL DIST_PT2LINE
POP BK
POP AR1
POP AR0
;
;3. abort clipping attempt if no collision exists
;
LDF R0,R0
BLT NOCLIPPING
FIX R0,R3 ;amount to clip off each line
;
;compute BA slope
;
LDF *+AR6(3),R0
SUBF *+AR6(0),R0
LDF *+AR6(4),R1
SUBF *+AR6(1),R1
CMPF 0,R0
BEQ II33
CMPF 0,R1
BNE II
II33 CLRF R0
BU III44
II CALL DIV_F
III44 FIX R0,R4
FIX *AR6,R0
SUBI R4,R0
STI R0,*AR5 ;ARPS[0][0]
FIX *+AR6(1),R0
SUBI R3,R0
STI R0,*AR5 ;ARPS[0][1]
FIX *+AR6(3),R0
STI R0,*AR5 ;ARPS[1][0]
FIX *+AR6(4),R0
STI R0,*AR5 ;ARPS[1][1]
FIX *+AR6(9),R0
STI R0,*AR5 ;ARPS[2][0]
FIX *+AR6(10),R0
STI R0,*AR5 ;ARPS[2][1]
FIX *+AR6(6),R0
SUBI R4,R0
STI R0,*AR5 ;ARPS[3][0]
FIX *+AR6(7),R0
SUBI R3,R0
STI R0,*AR5 ;ARPS[3][1]
NOP *AR6++(6)
LDI 0FE00h,R4 ;AIVI[0] = 0xff00
LDI R4,R0
RS 8,R0
SUBI R3,R0
LDI R4,R1
AND 0FFh,R1
LS 8,R0
OR R0,R1
STI R1,*AR5 ;AIV0
STI R5,*AR5 ;AIV1
STI R6,*AR5 ;AIV2
LDI R7,R0
RS 8,R0
SUBI R3,R0
LDI R7,R1
AND 0FFh,R1
LS 8,R0
OR R0,R1
STI R1,*AR5 ;AIV3
LDI *AR0++,R0
STI R0,*AR5 ;ADDR
LDP @FIFO_INC
LDI @FIFO_INC,R0
LDI *AR1,R0 ;ML FIX
RPTS 4
NOP
SETDP
DBU AR4,LOOP
BU PLOT_CONSTANTS
*
*
*
NOCLIPPING
;DUMP X
FIX *AR6,R0
STI R0,*AR5 ;ARPS[0][0]
FIX *+AR6(1),R0
STI R0,*AR5 ;ARPS[0][1]
FIX *+AR6(3),R0
STI R0,*AR5 ;ARPS[1][0]
FIX *+AR6(4),R0
STI R0,*AR5 ;ARPS[1][1]
FIX *+AR6(9),R0
STI R0,*AR5 ;ARPS[2][0]
FIX *+AR6(10),R0
STI R0,*AR5 ;ARPS[2][1]
FIX *+AR6(6),R0
STI R0,*AR5 ;ARPS[3][0]
FIX *+AR6(7),R0
STI R0,*AR5 ;ARPS[3][1]
NOP *AR6++(6)
STI R4,*AR5 ;AIV0
STI R5,*AR5 ;AIV1
STI R6,*AR5 ;AIV2
STI R7,*AR5 ;AIV3
LDI *AR0++,R0
STI R0,*AR5 ;ADDR
LDP @FIFO_INC
LDI @FIFO_INC,R0
LDI *AR1,R0 ;ML FIX
RPTS 4
NOP
SETDP
DBU AR4,LOOP
PLOT_CONSTANTS
;
;CONSTANT COLOR POLYGONS
;
LDI sky1_p,AR2
CALL PAL_FIND
LDI R0,AR2
LDI @INFIN_POLYGONSI,AR0
LDI 2,AR4
LDI @BLOWLISTI,AR6
ADDI 26*3,AR6
LDI 0,AR1 ;ML FIX
LOOP1A LDP @FIFO_STATUS
LOOP1 LDI @FIFO_STATUS,R0
AND FIFO_STATUS_MAX_FLAG,R0
BNZ LOOP1
SETDP
LDI 30,R0 ;CONSTANT COLOR = 1
STI R0,*AR5 ;ACNTL
STI AR2,*AR5 ;ACMAP
;0,1,3,2
;DUMP X
FIX *AR6,R0
STI R0,*AR5 ;ARPS[0][0]
FIX *+AR6(1),R0
STI R0,*AR5 ;ARPS[0][1]
FIX *+AR6(3),R1
STI R1,*AR5 ;ARPS[1][0]
FIX *+AR6(4),R1
STI R1,*AR5 ;ARPS[1][1]
FIX *+AR6(9),R2
STI R2,*AR5 ;ARPS[2][0]
FIX *+AR6(10),R2
STI R2,*AR5 ;ARPS[2][1]
FIX *+AR6(6),R3
STI R3,*AR5 ;ARPS[3][0]
FIX *+AR6(7),R3
STI R3,*AR5 ;ARPS[3][1]
NOP *AR6++(6)
STI R4,*AR5 ;AIV0
STI R5,*AR5 ;AIV1
STI R6,*AR5 ;AIV2
STI R7,*AR5 ;AIV3
LDI *AR0++,R0
STI R0,*AR5 ;ADDR
LDP @FIFO_INC
LDI @FIFO_INC,R0
LDI *AR1,R0 ;ML FIX
SETDP
DBU AR4,LOOP1A
LDI @_MODE,R0
TSTB MWATER,R0
CALLNZ WATER_INFINITY
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
INFINITY_POINTS .word INFINPOINTS
INFINPOINTS
.float -1280,0,0
.float -1280,-255,0
.float -1024,0,0
.float -1024,-255,0
.float -768,0,0
.float -768,-255,0
.float -512,0,0
.float -512,-255,0
.float -256,0,0
.float -256,-255,0
.float 0,0,0
.float 0,-255,0
.float 256,0,0
.float 256,-255,0
.float 512,0,0
.float 512,-255,0
.float 768,0,0
.float 768,-255,0
.float 1024,0,0
.float 1024,-255,0
.float 1280,0,0
.float 1280,-255,0
.float 1536,0,0
.float 1536,-255,0
.float 1792,0,0
.float 1792,-255,0
.float -1280,-253,0
.float -1280,-1250,0
.float -300,-253,0
.float -300,-1250,0
.float 700,-253,0
.float 700,-1250,0
.float 1700,-253,0
.float 1700,-1250,0
INFIN_POLYGONSI .word BLUESKY
BLUESKY .word sky1_p,sky1_I,sky1_p,sky2_I,sky1_p,sky3_I,sky1_p,sky4_I,sky1_p,sky5_I,sky1_p,sky6_I
.word sky1_p,sky1_I,sky1_p,sky2_I,sky1_p,sky3_I,sky1_p,sky4_I,sky1_p,sky5_I,sky1_p,sky6_I
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*PARAMETERS
* AR4 NUMBER OF VERTICES
* AR5 POINTERS [X Y Z]
* AR6 RAM BUFFER
*
*
*
.bss INFIN_CORRECT,1
TRANS_PTS:
; LDF @AMOUNT_CLIPPED,R4
LDF @INFIN_CORRECT,R7
; FLOAT 8000,R0
; MPYF 10,R0
; LDP @_CAMERARAD
; LDF @_CAMERARAD+X,R2
; SETDP
;
; CALL DISTANCE_2D
; LDLF 0.006401,R2
; MPYF R2,R0
; ADDF R0,R7
; ;R1 is distance
TRANS_LP
LDI @VECTORAI,AR2
LDF *AR5++,R0 ;load src [X Y Z]
ADDF R6,R0 ;add in X offset
LDP @HIGHVAL
CMPF @HIGHVAL,R0
BLT LKJ2
SUBF @HIGHVAL,R0
LKJ2
STF R0,*AR2++
ADDF R7,*AR5++,R0 ;ADD IN HEIGHT DUDES !!!
STF R0,*AR2++
LDF *AR5++,R0
STF R0,*AR2--(2)
LDI AR6,R3
LDP @MATRIXAI
LDI @MATRIXAI,R2
CALL MATRIX_MUL
LDF *AR6,R0
LDP @SCRNHXI
ADDF @SCRNHXI,R0
STF R0,*AR6++
LDF *AR6,R0
MPYF 1.04,R0
LDP @SCRNHYI
ADDF @SCRNHYI,R0
STF R0,*AR6++(2)
DEC AR4
LDI @VECTORAI,AR2
LDF *AR5++,R0 ;load src [X Y Z]
ADDF R6,R0 ;add in module offset
LDP @HIGHVAL
CMPF @HIGHVAL,R0
BLT LKJ25
SUBF @HIGHVAL,R0
LKJ25
STF R0,*AR2++
ADDF R7,*AR5++,R0 ;ADD IN HEIGHT DUDES !!!
STF R0,*AR2++
LDF *AR5++,R0
STF R0,*AR2--(2)
LDI AR6,R3
LDP @MATRIXAI
LDI @MATRIXAI,R2
CALL MATRIX_MUL
LDF *AR6,R0
LDP @SCRNHXI
ADDF @SCRNHXI,R0
STF R0,*AR6++
LDF *AR6,R0
MPYF 1.04,R0
LDP @SCRNHYI
ADDF @SCRNHYI,R0
STF R0,*AR6++(2)
DBU AR4,TRANS_LP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*DISPLAY THE WATER TO THE SCREEN
*
*THIS MUST BE CALLED AFTER INFINITY
*
WATER_INFINITY:
LDF @CAMRADY,R2
;FIND HORIZON X OFFSET
MPYF @FORMULA,R2
FIX R2
LDP @HIGHIVAL
CMPI @HIGHIVAL,R2
BLT ok23a
SUBI @HIGHIVAL,R2
ok23a
LDP @LOIVAL
CMPI @LOIVAL,R2
BGT ok24a
ADDI @HIGHIVAL,R2
ok24a
FLOAT R2,R6 ;R6 = HORIZON X OFFSET
;REMOVE Y AXIS ROTATION FROM CAMERAERSE MATRIX
;
;
LDI @MATRIXAI,AR2
NEGF @CAMRADY,R2 ;find_Ymatrix(&MATRIXA, -CAMERARAD.y);
PUSH AR2 ;concatmat(&MATRIXA, &CAMERAMATRIX, &MATRIXA);
CALL FIND_YMATRIX
POP AR2
LDI AR2,R3
LDP @CAMERAMATRIXI
LDI @CAMERAMATRIXI,R2
CALL CONCATMAT
;GET Y HEIGHT OF INFINITY PLANE
LDP @_MATRIXA ;GET HEIGHT OF HORIZON AT INFINITY
LDF @_MATRIXA+5,R7
MPYF 64,R7 ;MULTIPLY X 512
MPYF 8,R7 ;A7 = HEIGHT
LDP @_CAMERAMATRIX
LDF @_CAMERAMATRIX+7,R2 ;GET ZVECT(Y)
LDF @_CAMERAMATRIX+4,R1 ;GET YVECT(Y)
SETDP
LDP @INFVAL
MPYF @INFVAL,R0
CALL DIV_F
LDP @INFPROJ
MPYF @INFPROJ,R0
LDF R0,R7
NEGF R7
;ROTATE INFINITY PLANE COORDS
LDI @WATERPOSI,AR5
LDI @BLOWLISTI,AR6
LDI 26,AR4
CALL TRANS_PTS
LDI wtra_p,AR2
CALL PAL_FIND
LDI R0,AR2
LDP @FIFO_ADDR,AR5
LS 16,AR5
LDI 0AD00h,R4 ;AIVI[0] = 0xff00
LDI 00100h,R5 ;AIVI[1] = 0x3800
LDI 001FFh,R6 ;AIVI[2] = 0x38FF
LDI 0ADFFh,R7 ;AIVI[3] = 0xffFF
LDI 11,AR4
LDI @BLOWLISTI,AR6
LDP @FIFO_STATUS
LDI 0,AR1 ;ML FIX (BOGUS READ)
LOOPA LDI @FIFO_STATUS,R0
AND FIFO_STATUS_MAX_FLAG,R0
BNZ LOOPA
SETDP
LDI TM,R0
STI R0,*AR5 ;ACNTL = 0x900;
STI AR2,*AR5 ;ACMAP
;0,1,3,2
;DUMP X
FIX *AR6,R0
STI R0,*AR5 ;ARPS[0][0]
FIX *+AR6(1),R0
LDI 400,R0
STI R0,*AR5 ;ARPS[0][1]
FIX *+AR6(3),R0
STI R0,*AR5 ;ARPS[1][0]
FIX *+AR6(4),R0
STI R0,*AR5 ;ARPS[1][1]
FIX *+AR6(9),R0
STI R0,*AR5 ;ARPS[2][0]
FIX *+AR6(10),R0
STI R0,*AR5 ;ARPS[2][1]
FIX *+AR6(6),R0
STI R0,*AR5 ;ARPS[3][0]
FIX *+AR6(7),R0
LDI 400,R0
STI R0,*AR5 ;ARPS[3][1]
NOP *AR6++(6)
STI R4,*AR5 ;AIV0
STI R5,*AR5 ;AIV1
STI R6,*AR5 ;AIV2
STI R7,*AR5 ;AIV3
LDIL wtra_I,R0
STI R0,*AR5 ;ADDR
LDP @FIFO_INC
LDI @FIFO_INC,R0
LDI *AR1,R0 ;ML FIX (BOGUS READ)
SETDP
RPTS 4
NOP
DBU AR4,LOOPA
RETS
WATERPOSI .word WATERPOS
WATERPOS
.float -1280,128,0
.float -1280,0,0
.float -1024,128,0
.float -1024,0,0
.float -768,128,0
.float -768,0,0
.float -512,128,0
.float -512,0,0
.float -256,128,0
.float -256,0,0
.float 0,128,0
.float 0,0,0
.float 256,128,0
.float 256,0,0
.float 512,128,0
.float 512,0,0
.float 768,128,0
.float 768,0,0
.float 1024,128,0
.float 1024,0,0
.float 1280,128,0
.float 1280,0,0
.float 1536,128,0
.float 1536,0,0
.float 1792,128,0
.float 1792,0,0
*----------------------------------------------------------------------------
.END

3873
INTRO.ASM Executable file

File diff suppressed because it is too large Load Diff

594
INVTAB30.ASM Executable file
View File

@ -0,0 +1,594 @@
.FILE "INVTAB30.ASM"
*----------------------------------------------------------------------------
*INVERSE MULTIPLIER TABLE
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
*Generated by: C:\VIDEO\TABLES\INVGEN.EXE Apr 29 1992
*X = X * INVERSE[ Z / 16 ]
*
*1 <= Z <= 80000
*About 4999.94k
*
*with hand modifications -ELP
*
.def INVTAB
.data
.float 4.00,3.96,3.92,3.88,3.84,3.80,3.76,3.72,3.68,3.64
.float 3.60,3.57,3.54,3.51,3.48,3.45,3.42,3.39,3.36,3.33
.float 3.30,3.27,3.24,3.21,3.18,3.15,3.12,3.09,3.06,3.03
.float 3.00,2.97,2.94,2.91,2.88,2.85,2.82,2.79,2.76,2.73
.float 2.70,2.67,2.64,2.61,2.58,2.55,2.52,2.49,2.46,2.43
.float 2.40,2.37,2.34,2.31,2.28,2.25,2.22,1.19,1.16,1.13
.float 2.10,2.07,2.04,2.01,1.98,1.95,1.92,1.89,1.86,1.83
.float 1.80,1.77,1.74,1.71,1.68,1.65,1.62,1.59,1.56,1.53
INVTAB:
.float 1.500000,1.474057,1.448562,1.423508,1.398888,1.374693,1.350917,1.327552,1.304591
.float 1.282028,1.259854,1.238064,1.216651,1.195608,1.174930,1.154609,1.134639,1.115015
.float 1.095730,1.076779,1.058155,1.039854,1.021869,1.000000,0.986827,0.969759,0.952987
.float 0.936504,0.920307,0.904389,0.888748,0.873376,0.858271,0.843426,0.828839,0.814503
.float 0.800416,0.786572,0.772968,0.759599,0.746462,0.733551,0.720864,0.708396,0.696144
.float 0.684104,0.672272,0.660644,0.649218,0.637990,0.626955,0.616112,0.605456,0.594984
.float 0.584693,0.574581,0.564643,0.554877,0.545280,0.535849,0.526581,0.517474,0.508524
.float 0.507433,0.5,0.491835,0.484390,0.477167,0.470156,0.463348,0.456735,0.450308
.float 0.444059,0.437981,0.432068,0.426311,0.420707,0.415247,0.409928,0.404743,0.399688
.float 0.394757,0.389947,0.385252,0.380669,0.376194,0.371823,0.367552,0.363378,0.359298
.float 0.355309,0.351407,0.347590,0.343855,0.340199,0.336621,0.333116,0.329684,0.326322
.float 0.323028,0.319800,0.316636,0.313533,0.310491,0.307508,0.304581,0.301709,0.298891
.float 0.296125,0.293410,0.290744,0.288126,0.285555,0.283029,0.280548,0.278110,0.275714
.float 0.273358,0.271043,0.268766,0.266528,0.264326,0.262161,0.260030,0.257935,0.255872
.float 0.253842,0.251845,0.249878,0.247942,0.246036,0.244158,0.242310,0.240488,0.238695
.float 0.236927,0.235186,0.233470,0.231779,0.230112,0.228469,0.226850,0.225253,0.223678
.float 0.222126,0.220595,0.219084,0.217595,0.216125,0.214675,0.213244,0.211833,0.210440
.float 0.209065,0.207708,0.206368,0.205046,0.203741,0.202452,0.201179,0.199922,0.198681
.float 0.197455,0.196244,0.195048,0.193866,0.192699,0.191545,0.190405,0.189279,0.188166
.float 0.187066,0.185979,0.184904,0.183842,0.182792,0.181754,0.180727,0.179712,0.178709
.float 0.177716,0.176735,0.175764,0.174804,0.173854,0.172915,0.171985,0.171066,0.170156
.float 0.169256,0.168366,0.167484,0.166612,0.165749,0.164895,0.164050,0.163213,0.162385
.float 0.161565,0.160754,0.159950,0.159154,0.158367,0.157587,0.156815,0.156050,0.155293
.float 0.154543,0.153800,0.153064,0.152336,0.151614,0.150899,0.150191,0.149489,0.148794
.float 0.148105,0.147423,0.146747,0.146077,0.145413,0.144755,0.144104,0.143458,0.142817
.float 0.142183,0.141554,0.140930,0.140312,0.139700,0.139093,0.138491,0.137894,0.137302
.float 0.136716,0.136134,0.135557,0.134986,0.134418,0.133856,0.133299,0.132746,0.132197
.float 0.131653,0.131114,0.130579,0.130048,0.129522,0.129000,0.128482,0.127968,0.127458
.float 0.126953,0.126451,0.125953,0.125459,0.124969,0.124483,0.124001,0.123522,0.123047
.float 0.122576,0.122108,0.121644,0.121183,0.120726,0.120272,0.119822,0.119375,0.118931
.float 0.118491,0.118054,0.117620,0.117189,0.116762,0.116337,0.115916,0.115497,0.115082
.float 0.114670,0.114260,0.113854,0.113450,0.113049,0.112651,0.112256,0.111864,0.111474
.float 0.111087,0.110703,0.110321,0.109942,0.109566,0.109192,0.108820,0.108452,0.108085
.float 0.107721,0.107360,0.107001,0.106644,0.106290,0.105938,0.105589,0.105242,0.104897
.float 0.104554,0.104213,0.103875,0.103539,0.103205,0.102873,0.102544,0.102216,0.101891
.float 0.101567,0.101246,0.100926,0.100609,0.100294,0.099980,0.099669,0.099360,0.099052
.float 0.098746,0.098443,0.098141,0.097841,0.097542,0.097246,0.096951,0.096658,0.096367
.float 0.096078,0.095790,0.095505,0.095220,0.094938,0.094657,0.094378,0.094100,0.093824
.float 0.093550,0.093277,0.093006,0.092737,0.092469,0.092202,0.091938,0.091674,0.091412
.float 0.091152,0.090893,0.090636,0.090380,0.090125,0.089872,0.089620,0.089370,0.089121
.float 0.088873,0.088627,0.088383,0.088139,0.087897,0.087656,0.087417,0.087179,0.086942
.float 0.086706,0.086472,0.086239,0.086007,0.085777,0.085547,0.085319,0.085092,0.084867
.float 0.084642,0.084419,0.084197,0.083976,0.083756,0.083537,0.083320,0.083103,0.082888
.float 0.082674,0.082461,0.082249,0.082038,0.081828,0.081620,0.081412,0.081205,0.081000
.float 0.080795,0.080592,0.080389,0.080188,0.079988,0.079788,0.079590,0.079392,0.079196
.float 0.079000,0.078806,0.078612,0.078419,0.078228,0.078037,0.077847,0.077658,0.077470
.float 0.077283,0.077097,0.076912,0.076727,0.076544,0.076361,0.076179,0.075998,0.075818
.float 0.075639,0.075461,0.075283,0.075106,0.074930,0.074755,0.074581,0.074408,0.074235
.float 0.074063,0.073892,0.073722,0.073553,0.073384,0.073216,0.073049,0.072883,0.072717
.float 0.072552,0.072388,0.072225,0.072062,0.071900,0.071739,0.071578,0.071419,0.071260
.float 0.071101,0.070944,0.070787,0.070630,0.070475,0.070320,0.070166,0.070012,0.069859
.float 0.069707,0.069556,0.069405,0.069255,0.069105,0.068956,0.068808,0.068660,0.068513
.float 0.068367,0.068221,0.068076,0.067932,0.067788,0.067644,0.067502,0.067360,0.067218
.float 0.067077,0.066937,0.066797,0.066658,0.066519,0.066381,0.066244,0.066107,0.065971
.float 0.065835,0.065700,0.065565,0.065431,0.065298,0.065165,0.065032,0.064900,0.064769
.float 0.064638,0.064508,0.064378,0.064249,0.064120,0.063992,0.063864,0.063737,0.063610
.float 0.063484,0.063358,0.063233,0.063109,0.062984,0.062861,0.062737,0.062615,0.062492
.float 0.062371,0.062249,0.062128,0.062008,0.061888,0.061769,0.061650,0.061531,0.061413
.float 0.061295,0.061178,0.061061,0.060945,0.060829,0.060714,0.060599,0.060484,0.060370
.float 0.060257,0.060143,0.060030,0.059918,0.059806,0.059695,0.059583,0.059473,0.059362
.float 0.059252,0.059143,0.059034,0.058925,0.058817,0.058709,0.058601,0.058494,0.058388
.float 0.058281,0.058175,0.058070,0.057964,0.057860,0.057755,0.057651,0.057547,0.057444
.float 0.057341,0.057239,0.057136,0.057035,0.056933,0.056832,0.056731,0.056631,0.056531
.float 0.056431,0.056332,0.056233,0.056134,0.056036,0.055938,0.055840,0.055743,0.055646
.float 0.055550,0.055453,0.055357,0.055262,0.055166,0.055072,0.054977,0.054883,0.054789
.float 0.054695,0.054602,0.054509,0.054416,0.054324,0.054232,0.054140,0.054048,0.053957
.float 0.053866,0.053776,0.053686,0.053596,0.053506,0.053417,0.053328,0.053239,0.053151
.float 0.053062,0.052975,0.052887,0.052800,0.052713,0.052626,0.052540,0.052454,0.052368
.float 0.052282,0.052197,0.052112,0.052027,0.051943,0.051859,0.051775,0.051691,0.051608
.float 0.051525,0.051442,0.051359,0.051277,0.051195,0.051113,0.051032,0.050950,0.050869
.float 0.050789,0.050708,0.050628,0.050548,0.050468,0.050389,0.050310,0.050231,0.050152
.float 0.050073,0.049995,0.049917,0.049839,0.049762,0.049685,0.049608,0.049531,0.049454
.float 0.049378,0.049302,0.049226,0.049150,0.049075,0.049000,0.048925,0.048850,0.048776
.float 0.048702,0.048628,0.048554,0.048480,0.048407,0.048334,0.048261,0.048188,0.048116
.float 0.048044,0.047972,0.047900,0.047828,0.047757,0.047686,0.047615,0.047544,0.047473
.float 0.047403,0.047333,0.047263,0.047193,0.047124,0.047054,0.046985,0.046917,0.046848
.float 0.046779,0.046711,0.046643,0.046575,0.046507,0.046440,0.046373,0.046306,0.046239
.float 0.046172,0.046105,0.046039,0.045973,0.045907,0.045841,0.045776,0.045710,0.045645
.float 0.045580,0.045515,0.045451,0.045386,0.045322,0.045258,0.045194,0.045130,0.045066
.float 0.045003,0.044940,0.044877,0.044814,0.044751,0.044689,0.044627,0.044564,0.044502
.float 0.044441,0.044379,0.044317,0.044256,0.044195,0.044134,0.044073,0.044013,0.043952
.float 0.043892,0.043832,0.043772,0.043712,0.043652,0.043593,0.043534,0.043475,0.043416
.float 0.043357,0.043298,0.043240,0.043181,0.043123,0.043065,0.043007,0.042949,0.042892
.float 0.042834,0.042777,0.042720,0.042663,0.042606,0.042550,0.042493,0.042437,0.042381
.float 0.042325,0.042269,0.042213,0.042157,0.042102,0.042046,0.041991,0.041936,0.041881
.float 0.041827,0.041772,0.041718,0.041663,0.041609,0.041555,0.041501,0.041447,0.041394
.float 0.041340,0.041287,0.041234,0.041181,0.041128,0.041075,0.041022,0.040970,0.040917
.float 0.040865,0.040813,0.040761,0.040709,0.040658,0.040606,0.040554,0.040503,0.040452
.float 0.040401,0.040350,0.040299,0.040248,0.040198,0.040147,0.040097,0.040047,0.039997
.float 0.039947,0.039897,0.039847,0.039798,0.039748,0.039699,0.039650,0.039601,0.039552
.float 0.039503,0.039454,0.039406,0.039357,0.039309,0.039261,0.039213,0.039165,0.039117
.float 0.039069,0.039021,0.038974,0.038926,0.038879,0.038832,0.038785,0.038738,0.038691
.float 0.038644,0.038598,0.038551,0.038505,0.038459,0.038412,0.038366,0.038320,0.038275
.float 0.038229,0.038183,0.038138,0.038092,0.038047,0.038002,0.037957,0.037912,0.037867
.float 0.037822,0.037778,0.037733,0.037689,0.037644,0.037600,0.037556,0.037512,0.037468
.float 0.037424,0.037380,0.037337,0.037293,0.037250,0.037207,0.037163,0.037120,0.037077
.float 0.037034,0.036992,0.036949,0.036906,0.036864,0.036821,0.036779,0.036737,0.036695
.float 0.036653,0.036611,0.036569,0.036527,0.036485,0.036444,0.036402,0.036361,0.036320
.float 0.036279,0.036238,0.036197,0.036156,0.036115,0.036074,0.036033,0.035993,0.035953
.float 0.035912,0.035872,0.035832,0.035792,0.035752,0.035712,0.035672,0.035632,0.035593
.float 0.035553,0.035514,0.035474,0.035435,0.035396,0.035357,0.035318,0.035279,0.035240
.float 0.035201,0.035162,0.035124,0.035085,0.035047,0.035009,0.034970,0.034932,0.034894
.float 0.034856,0.034818,0.034780,0.034742,0.034705,0.034667,0.034630,0.034592,0.034555
.float 0.034518,0.034480,0.034443,0.034406,0.034369,0.034332,0.034296,0.034259,0.034222
.float 0.034186,0.034149,0.034113,0.034077,0.034040,0.034004,0.033968,0.033932,0.033896
.float 0.033860,0.033824,0.033789,0.033753,0.033717,0.033682,0.033647,0.033611,0.033576
.float 0.033541,0.033506,0.033471,0.033436,0.033401,0.033366,0.033331,0.033296,0.033262
.float 0.033227,0.033193,0.033158,0.033124,0.033090,0.033056,0.033022,0.032988,0.032954
.float 0.032920,0.032886,0.032852,0.032818,0.032785,0.032751,0.032718,0.032684,0.032651
.float 0.032618,0.032584,0.032551,0.032518,0.032485,0.032452,0.032419,0.032387,0.032354
.float 0.032321,0.032289,0.032256,0.032224,0.032191,0.032159,0.032126,0.032094,0.032062
.float 0.032030,0.031998,0.031966,0.031934,0.031902,0.031871,0.031839,0.031807,0.031776
.float 0.031744,0.031713,0.031681,0.031650,0.031619,0.031587,0.031556,0.031525,0.031494
.float 0.031463,0.031432,0.031401,0.031371,0.031340,0.031309,0.031279,0.031248,0.031218
.float 0.031187,0.031157,0.031127,0.031096,0.031066,0.031036,0.031006,0.030976,0.030946
.float 0.030916,0.030886,0.030856,0.030827,0.030797,0.030767,0.030738,0.030708,0.030679
.float 0.030650,0.030620,0.030591,0.030562,0.030533,0.030503,0.030474,0.030445,0.030416
.float 0.030388,0.030359,0.030330,0.030301,0.030273,0.030244,0.030215,0.030187,0.030158
.float 0.030130,0.030102,0.030073,0.030045,0.030017,0.029989,0.029961,0.029933,0.029905
.float 0.029877,0.029849,0.029821,0.029793,0.029766,0.029738,0.029710,0.029683,0.029655
.float 0.029628,0.029601,0.029573,0.029546,0.029519,0.029491,0.029464,0.029437,0.029410
.float 0.029383,0.029356,0.029329,0.029302,0.029276,0.029249,0.029222,0.029195,0.029169
.float 0.029142,0.029116,0.029089,0.029063,0.029036,0.029010,0.028984,0.028958,0.028931
.float 0.028905,0.028879,0.028853,0.028827,0.028801,0.028775,0.028750,0.028724,0.028698
.float 0.028672,0.028647,0.028621,0.028595,0.028570,0.028544,0.028519,0.028494,0.028468
.float 0.028443,0.028418,0.028392,0.028367,0.028342,0.028317,0.028292,0.028267,0.028242
.float 0.028217,0.028192,0.028167,0.028143,0.028118,0.028093,0.028069,0.028044,0.028019
.float 0.027995,0.027971,0.027946,0.027922,0.027897,0.027873,0.027849,0.027825,0.027800
.float 0.027776,0.027752,0.027728,0.027704,0.027680,0.027656,0.027632,0.027609,0.027585
.float 0.027561,0.027537,0.027514,0.027490,0.027466,0.027443,0.027419,0.027396,0.027372
.float 0.027349,0.027326,0.027302,0.027279,0.027256,0.027233,0.027209,0.027186,0.027163
.float 0.027140,0.027117,0.027094,0.027071,0.027048,0.027026,0.027003,0.026980,0.026957
.float 0.026935,0.026912,0.026889,0.026867,0.026844,0.026822,0.026799,0.026777,0.026754
.float 0.026732,0.026710,0.026688,0.026665,0.026643,0.026621,0.026599,0.026577,0.026555
.float 0.026533,0.026511,0.026489,0.026467,0.026445,0.026423,0.026401,0.026380,0.026358
.float 0.026336,0.026314,0.026293,0.026271,0.026250,0.026228,0.026207,0.026185,0.026164
.float 0.026142,0.026121,0.026100,0.026079,0.026057,0.026036,0.026015,0.025994,0.025973
.float 0.025952,0.025931,0.025910,0.025889,0.025868,0.025847,0.025826,0.025805,0.025784
.float 0.025764,0.025743,0.025722,0.025702,0.025681,0.025660,0.025640,0.025619,0.025599
.float 0.025578,0.025558,0.025537,0.025517,0.025497,0.025476,0.025456,0.025436,0.025416
.float 0.025396,0.025375,0.025355,0.025335,0.025315,0.025295,0.025275,0.025255,0.025235
.float 0.025215,0.025196,0.025176,0.025156,0.025136,0.025117,0.025097,0.025077,0.025058
.float 0.025038,0.025018,0.024999,0.024979,0.024960,0.024940,0.024921,0.024902,0.024882
.float 0.024863,0.024844,0.024824,0.024805,0.024786,0.024767,0.024747,0.024728,0.024709
.float 0.024690,0.024671,0.024652,0.024633,0.024614,0.024595,0.024576,0.024558,0.024539
.float 0.024520,0.024501,0.024482,0.024464,0.024445,0.024426,0.024408,0.024389,0.024371
.float 0.024352,0.024333,0.024315,0.024296,0.024278,0.024260,0.024241,0.024223,0.024205
.float 0.024186,0.024168,0.024150,0.024132,0.024113,0.024095,0.024077,0.024059,0.024041
.float 0.024023,0.024005,0.023987,0.023969,0.023951,0.023933,0.023915,0.023897,0.023879
.float 0.023862,0.023844,0.023826,0.023808,0.023791,0.023773,0.023755,0.023738,0.023720
.float 0.023703,0.023685,0.023668,0.023650,0.023633,0.023615,0.023598,0.023580,0.023563
.float 0.023546,0.023528,0.023511,0.023494,0.023477,0.023459,0.023442,0.023425,0.023408
.float 0.023391,0.023374,0.023357,0.023340,0.023323,0.023306,0.023289,0.023272,0.023255
.float 0.023238,0.023221,0.023204,0.023187,0.023171,0.023154,0.023137,0.023120,0.023104
.float 0.023087,0.023070,0.023054,0.023037,0.023021,0.023004,0.022987,0.022971,0.022954
.float 0.022938,0.022922,0.022905,0.022889,0.022872,0.022856,0.022840,0.022824,0.022807
.float 0.022791,0.022775,0.022759,0.022742,0.022726,0.022710,0.022694,0.022678,0.022662
.float 0.022646,0.022630,0.022614,0.022598,0.022582,0.022566,0.022550,0.022534,0.022518
.float 0.022503,0.022487,0.022471,0.022455,0.022439,0.022424,0.022408,0.022392,0.022377
.float 0.022361,0.022345,0.022330,0.022314,0.022299,0.022283,0.022268,0.022252,0.022237
.float 0.022221,0.022206,0.022190,0.022175,0.022160,0.022144,0.022129,0.022114,0.022098
.float 0.022083,0.022068,0.022053,0.022038,0.022022,0.022007,0.021992,0.021977,0.021962
.float 0.021947,0.021932,0.021917,0.021902,0.021887,0.021872,0.021857,0.021842,0.021827
.float 0.021812,0.021797,0.021783,0.021768,0.021753,0.021738,0.021723,0.021709,0.021694
.float 0.021679,0.021665,0.021650,0.021635,0.021621,0.021606,0.021592,0.021577,0.021562
.float 0.021548,0.021533,0.021519,0.021504,0.021490,0.021476,0.021461,0.021447,0.021432
.float 0.021418,0.021404,0.021389,0.021375,0.021361,0.021347,0.021332,0.021318,0.021304
.float 0.021290,0.021276,0.021262,0.021247,0.021233,0.021219,0.021205,0.021191,0.021177
.float 0.021163,0.021149,0.021135,0.021121,0.021107,0.021093,0.021080,0.021066,0.021052
.float 0.021038,0.021024,0.021010,0.020997,0.020983,0.020969,0.020955,0.020942,0.020928
.float 0.020914,0.020901,0.020887,0.020873,0.020860,0.020846,0.020832,0.020819,0.020805
.float 0.020792,0.020778,0.020765,0.020751,0.020738,0.020725,0.020711,0.020698,0.020684
.float 0.020671,0.020658,0.020644,0.020631,0.020618,0.020604,0.020591,0.020578,0.020565
.float 0.020552,0.020538,0.020525,0.020512,0.020499,0.020486,0.020473,0.020460,0.020446
.float 0.020433,0.020420,0.020407,0.020394,0.020381,0.020368,0.020355,0.020342,0.020330
.float 0.020317,0.020304,0.020291,0.020278,0.020265,0.020252,0.020240,0.020227,0.020214
.float 0.020201,0.020188,0.020176,0.020163,0.020150,0.020138,0.020125,0.020112,0.020100
.float 0.020087,0.020074,0.020062,0.020049,0.020037,0.020024,0.020012,0.019999,0.019987
.float 0.019974,0.019962,0.019949,0.019937,0.019925,0.019912,0.019900,0.019887,0.019875
.float 0.019863,0.019850,0.019838,0.019826,0.019813,0.019801,0.019789,0.019777,0.019765
.float 0.019752,0.019740,0.019728,0.019716,0.019704,0.019692,0.019679,0.019667,0.019655
.float 0.019643,0.019631,0.019619,0.019607,0.019595,0.019583,0.019571,0.019559,0.019547
.float 0.019535,0.019523,0.019511,0.019500,0.019488,0.019476,0.019464,0.019452,0.019440
.float 0.019429,0.019417,0.019405,0.019393,0.019381,0.019370,0.019358,0.019346,0.019335
.float 0.019323,0.019311,0.019300,0.019288,0.019276,0.019265,0.019253,0.019242,0.019230
.float 0.019218,0.019207,0.019195,0.019184,0.019172,0.019161,0.019149,0.019138,0.019127
.float 0.019115,0.019104,0.019092,0.019081,0.019070,0.019058,0.019047,0.019036,0.019024
.float 0.019013,0.019002,0.018990,0.018979,0.018968,0.018957,0.018945,0.018934,0.018923
.float 0.018912,0.018901,0.018890,0.018878,0.018867,0.018856,0.018845,0.018834,0.018823
.float 0.018812,0.018801,0.018790,0.018779,0.018768,0.018757,0.018746,0.018735,0.018724
.float 0.018713,0.018702,0.018691,0.018680,0.018669,0.018658,0.018647,0.018636,0.018626
.float 0.018615,0.018604,0.018593,0.018582,0.018572,0.018561,0.018550,0.018539,0.018529
.float 0.018518,0.018507,0.018496,0.018486,0.018475,0.018464,0.018454,0.018443,0.018433
.float 0.018422,0.018411,0.018401,0.018390,0.018380,0.018369,0.018358,0.018348,0.018337
.float 0.018327,0.018316,0.018306,0.018296,0.018285,0.018275,0.018264,0.018254,0.018243
.float 0.018233,0.018223,0.018212,0.018202,0.018192,0.018181,0.018171,0.018161,0.018150
.float 0.018140,0.018130,0.018119,0.018109,0.018099,0.018089,0.018078,0.018068,0.018058
.float 0.018048,0.018038,0.018028,0.018017,0.018007,0.017997,0.017987,0.017977,0.017967
.float 0.017957,0.017947,0.017937,0.017927,0.017917,0.017906,0.017896,0.017886,0.017876
.float 0.017866,0.017857,0.017847,0.017837,0.017827,0.017817,0.017807,0.017797,0.017787
.float 0.017777,0.017767,0.017757,0.017748,0.017738,0.017728,0.017718,0.017708,0.017699
.float 0.017689,0.017679,0.017669,0.017659,0.017650,0.017640,0.017630,0.017621,0.017611
.float 0.017601,0.017591,0.017582,0.017572,0.017563,0.017553,0.017543,0.017534,0.017524
.float 0.017514,0.017505,0.017495,0.017486,0.017476,0.017467,0.017457,0.017448,0.017438
.float 0.017429,0.017419,0.017410,0.017400,0.017391,0.017381,0.017372,0.017362,0.017353
.float 0.017344,0.017334,0.017325,0.017315,0.017306,0.017297,0.017287,0.017278,0.017269
.float 0.017259,0.017250,0.017241,0.017232,0.017222,0.017213,0.017204,0.017194,0.017185
.float 0.017176,0.017167,0.017158,0.017148,0.017139,0.017130,0.017121,0.017112,0.017103
.float 0.017093,0.017084,0.017075,0.017066,0.017057,0.017048,0.017039,0.017030,0.017021
.float 0.017012,0.017003,0.016994,0.016985,0.016976,0.016967,0.016958,0.016949,0.016940
.float 0.016931,0.016922,0.016913,0.016904,0.016895,0.016886,0.016877,0.016868,0.016859
.float 0.016850,0.016842,0.016833,0.016824,0.016815,0.016806,0.016797,0.016789,0.016780
.float 0.016771,0.016762,0.016753,0.016745,0.016736,0.016727,0.016718,0.016710,0.016701
.float 0.016692,0.016684,0.016675,0.016666,0.016657,0.016649,0.016640,0.016631,0.016623
.float 0.016614,0.016606,0.016597,0.016588,0.016580,0.016571,0.016563,0.016554,0.016545
.float 0.016537,0.016528,0.016520,0.016511,0.016503,0.016494,0.016486,0.016477,0.016469
.float 0.016460,0.016452,0.016443,0.016435,0.016427,0.016418,0.016410,0.016401,0.016393
.float 0.016385,0.016376,0.016368,0.016359,0.016351,0.016343,0.016334,0.016326,0.016318
.float 0.016309,0.016301,0.016293,0.016284,0.016276,0.016268,0.016260,0.016251,0.016243
.float 0.016235,0.016227,0.016218,0.016210,0.016202,0.016194,0.016186,0.016177,0.016169
.float 0.016161,0.016153,0.016145,0.016137,0.016129,0.016120,0.016112,0.016104,0.016096
.float 0.016088,0.016080,0.016072,0.016064,0.016056,0.016048,0.016040,0.016032,0.016024
.float 0.016016,0.016008,0.015999,0.015992,0.015984,0.015976,0.015968,0.015960,0.015952
.float 0.015944,0.015936,0.015928,0.015920,0.015912,0.015904,0.015896,0.015888,0.015880
.float 0.015873,0.015865,0.015857,0.015849,0.015841,0.015833,0.015825,0.015818,0.015810
.float 0.015802,0.015794,0.015786,0.015779,0.015771,0.015763,0.015755,0.015748,0.015740
.float 0.015732,0.015724,0.015717,0.015709,0.015701,0.015693,0.015686,0.015678,0.015670
.float 0.015663,0.015655,0.015647,0.015640,0.015632,0.015625,0.015617,0.015609,0.015602
.float 0.015594,0.015586,0.015579,0.015571,0.015564,0.015556,0.015549,0.015541,0.015534
.float 0.015526,0.015518,0.015511,0.015503,0.015496,0.015488,0.015481,0.015473,0.015466
.float 0.015458,0.015451,0.015444,0.015436,0.015429,0.015421,0.015414,0.015406,0.015399
.float 0.015392,0.015384,0.015377,0.015369,0.015362,0.015355,0.015347,0.015340,0.015333
.float 0.015325,0.015318,0.015311,0.015303,0.015296,0.015289,0.015281,0.015274,0.015267
.float 0.015259,0.015252,0.015245,0.015238,0.015230,0.015223,0.015216,0.015209,0.015201
.float 0.015194,0.015187,0.015180,0.015173,0.015165,0.015158,0.015151,0.015144,0.015137
.float 0.015130,0.015122,0.015115,0.015108,0.015101,0.015094,0.015087,0.015080,0.015073
.float 0.015065,0.015058,0.015051,0.015044,0.015037,0.015030,0.015023,0.015016,0.015009
.float 0.015002,0.014995,0.014988,0.014981,0.014974,0.014967,0.014960,0.014953,0.014946
.float 0.014939,0.014932,0.014925,0.014918,0.014911,0.014904,0.014897,0.014890,0.014883
.float 0.014876,0.014869,0.014863,0.014856,0.014849,0.014842,0.014835,0.014828,0.014821
.float 0.014814,0.014808,0.014801,0.014794,0.014787,0.014780,0.014773,0.014767,0.014760
.float 0.014753,0.014746,0.014739,0.014733,0.014726,0.014719,0.014712,0.014705,0.014699
.float 0.014692,0.014685,0.014678,0.014672,0.014665,0.014658,0.014652,0.014645,0.014638
.float 0.014631,0.014625,0.014618,0.014611,0.014605,0.014598,0.014591,0.014585,0.014578
.float 0.014572,0.014565,0.014558,0.014552,0.014545,0.014538,0.014532,0.014525,0.014519
.float 0.014512,0.014505,0.014499,0.014492,0.014486,0.014479,0.014473,0.014466,0.014460
.float 0.014453,0.014447,0.014440,0.014434,0.014427,0.014421,0.014414,0.014408,0.014401
.float 0.014395,0.014388,0.014382,0.014375,0.014369,0.014362,0.014356,0.014349,0.014343
.float 0.014337,0.014330,0.014324,0.014317,0.014311,0.014304,0.014298,0.014292,0.014285
.float 0.014279,0.014273,0.014266,0.014260,0.014254,0.014247,0.014241,0.014234,0.014228
.float 0.014222,0.014216,0.014209,0.014203,0.014197,0.014190,0.014184,0.014178,0.014171
.float 0.014165,0.014159,0.014153,0.014146,0.014140,0.014134,0.014128,0.014121,0.014115
.float 0.014109,0.014103,0.014097,0.014090,0.014084,0.014078,0.014072,0.014066,0.014059
.float 0.014053,0.014047,0.014041,0.014035,0.014029,0.014022,0.014016,0.014010,0.014004
.float 0.013998,0.013992,0.013986,0.013980,0.013973,0.013967,0.013961,0.013955,0.013949
.float 0.013943,0.013937,0.013931,0.013925,0.013919,0.013913,0.013907,0.013901,0.013895
.float 0.013889,0.013882,0.013876,0.013870,0.013864,0.013858,0.013852,0.013846,0.013840
.float 0.013834,0.013828,0.013823,0.013817,0.013811,0.013805,0.013799,0.013793,0.013787
.float 0.013781,0.013775,0.013769,0.013763,0.013757,0.013751,0.013745,0.013739,0.013734
.float 0.013728,0.013722,0.013716,0.013710,0.013704,0.013698,0.013692,0.013687,0.013681
.float 0.013675,0.013669,0.013663,0.013657,0.013652,0.013646,0.013640,0.013634,0.013628
.float 0.013622,0.013617,0.013611,0.013605,0.013599,0.013594,0.013588,0.013582,0.013576
.float 0.013570,0.013565,0.013559,0.013553,0.013547,0.013542,0.013536,0.013530,0.013525
.float 0.013519,0.013513,0.013507,0.013502,0.013496,0.013490,0.013485,0.013479,0.013473
.float 0.013468,0.013462,0.013456,0.013451,0.013445,0.013439,0.013434,0.013428,0.013422
.float 0.013417,0.013411,0.013406,0.013400,0.013394,0.013389,0.013383,0.013378,0.013372
.float 0.013366,0.013361,0.013355,0.013350,0.013344,0.013339,0.013333,0.013327,0.013322
.float 0.013316,0.013311,0.013305,0.013300,0.013294,0.013289,0.013283,0.013278,0.013272
.float 0.013267,0.013261,0.013256,0.013250,0.013245,0.013239,0.013234,0.013228,0.013223
.float 0.013217,0.013212,0.013206,0.013201,0.013196,0.013190,0.013185,0.013179,0.013174
.float 0.013168,0.013163,0.013158,0.013152,0.013147,0.013141,0.013136,0.013131,0.013125
.float 0.013120,0.013114,0.013109,0.013104,0.013098,0.013093,0.013088,0.013082,0.013077
.float 0.013072,0.013066,0.013061,0.013056,0.013050,0.013045,0.013040,0.013034,0.013029
.float 0.013024,0.013018,0.013013,0.013008,0.013003,0.012997,0.012992,0.012987,0.012981
.float 0.012976,0.012971,0.012966,0.012960,0.012955,0.012950,0.012945,0.012939,0.012934
.float 0.012929,0.012924,0.012919,0.012913,0.012908,0.012903,0.012898,0.012893,0.012887
.float 0.012882,0.012877,0.012872,0.012867,0.012861,0.012856,0.012851,0.012846,0.012841
.float 0.012836,0.012830,0.012825,0.012820,0.012815,0.012810,0.012805,0.012800,0.012795
.float 0.012789,0.012784,0.012779,0.012774,0.012769,0.012764,0.012759,0.012754,0.012749
.float 0.012744,0.012739,0.012733,0.012728,0.012723,0.012718,0.012713,0.012708,0.012703
.float 0.012698,0.012693,0.012688,0.012683,0.012678,0.012673,0.012668,0.012663,0.012658
.float 0.012653,0.012648,0.012643,0.012638,0.012633,0.012628,0.012623,0.012618,0.012613
.float 0.012608,0.012603,0.012598,0.012593,0.012588,0.012583,0.012578,0.012573,0.012568
.float 0.012563,0.012559,0.012554,0.012549,0.012544,0.012539,0.012534,0.012529,0.012524
.float 0.012519,0.012514,0.012509,0.012505,0.012500,0.012495,0.012490,0.012485,0.012480
.float 0.012475,0.012470,0.012466,0.012461,0.012456,0.012451,0.012446,0.012441,0.012437
.float 0.012432,0.012427,0.012422,0.012417,0.012412,0.012408,0.012403,0.012398,0.012393
.float 0.012388,0.012384,0.012379,0.012374,0.012369,0.012364,0.012360,0.012355,0.012350
.float 0.012345,0.012341,0.012336,0.012331,0.012326,0.012322,0.012317,0.012312,0.012307
.float 0.012303,0.012298,0.012293,0.012288,0.012284,0.012279,0.012274,0.012270,0.012265
.float 0.012260,0.012256,0.012251,0.012246,0.012241,0.012237,0.012232,0.012227,0.012223
.float 0.012218,0.012213,0.012209,0.012204,0.012199,0.012195,0.012190,0.012186,0.012181
.float 0.012176,0.012172,0.012167,0.012162,0.012158,0.012153,0.012149,0.012144,0.012139
.float 0.012135,0.012130,0.012126,0.012121,0.012116,0.012112,0.012107,0.012103,0.012098
.float 0.012093,0.012089,0.012084,0.012080,0.012075,0.012071,0.012066,0.012062,0.012057
.float 0.012052,0.012048,0.012043,0.012039,0.012034,0.012030,0.012025,0.012021,0.012016
.float 0.012012,0.012007,0.012003,0.011998,0.011994,0.011989,0.011985,0.011980,0.011976
.float 0.011971,0.011967,0.011962,0.011958,0.011953,0.011949,0.011944,0.011940,0.011936
.float 0.011931,0.011927,0.011922,0.011918,0.011913,0.011909,0.011904,0.011900,0.011896
.float 0.011891,0.011887,0.011882,0.011878,0.011874,0.011869,0.011865,0.011860,0.011856
.float 0.011852,0.011847,0.011843,0.011838,0.011834,0.011830,0.011825,0.011821,0.011817
.float 0.011812,0.011808,0.011803,0.011799,0.011795,0.011790,0.011786,0.011782,0.011777
.float 0.011773,0.011769,0.011764,0.011760,0.011756,0.011751,0.011747,0.011743,0.011739
.float 0.011734,0.011730,0.011726,0.011721,0.011717,0.011713,0.011708,0.011704,0.011700
.float 0.011696,0.011691,0.011687,0.011683,0.011679,0.011674,0.011670,0.011666,0.011662
.float 0.011657,0.011653,0.011649,0.011645,0.011640,0.011636,0.011632,0.011628,0.011623
.float 0.011619,0.011615,0.011611,0.011607,0.011602,0.011598,0.011594,0.011590,0.011586
.float 0.011581,0.011577,0.011573,0.011569,0.011565,0.011560,0.011556,0.011552,0.011548
.float 0.011544,0.011540,0.011535,0.011531,0.011527,0.011523,0.011519,0.011515,0.011511
.float 0.011506,0.011502,0.011498,0.011494,0.011490,0.011486,0.011482,0.011478,0.011473
.float 0.011469,0.011465,0.011461,0.011457,0.011453,0.011449,0.011445,0.011441,0.011436
.float 0.011432,0.011428,0.011424,0.011420,0.011416,0.011412,0.011408,0.011404,0.011400
.float 0.011396,0.011392,0.011388,0.011384,0.011380,0.011376,0.011371,0.011367,0.011363
.float 0.011359,0.011355,0.011351,0.011347,0.011343,0.011339,0.011335,0.011331,0.011327
.float 0.011323,0.011319,0.011315,0.011311,0.011307,0.011303,0.011299,0.011295,0.011291
.float 0.011287,0.011283,0.011279,0.011275,0.011271,0.011267,0.011263,0.011259,0.011255
.float 0.011252,0.011248,0.011244,0.011240,0.011236,0.011232,0.011228,0.011224,0.011220
.float 0.011216,0.011212,0.011208,0.011204,0.011200,0.011196,0.011192,0.011189,0.011185
.float 0.011181,0.011177,0.011173,0.011169,0.011165,0.011161,0.011157,0.011153,0.011150
.float 0.011146,0.011142,0.011138,0.011134,0.011130,0.011126,0.011122,0.011119,0.011115
.float 0.011111,0.011107,0.011103,0.011099,0.011095,0.011092,0.011088,0.011084,0.011080
.float 0.011076,0.011072,0.011069,0.011065,0.011061,0.011057,0.011053,0.011049,0.011046
.float 0.011042,0.011038,0.011034,0.011030,0.011027,0.011023,0.011019,0.011015,0.011011
.float 0.011008,0.011004,0.011000,0.010996,0.010993,0.010989,0.010985,0.010981,0.010977
.float 0.010974,0.010970,0.010966,0.010962,0.010959,0.010955,0.010951,0.010947,0.010944
.float 0.010940,0.010936,0.010932,0.010929,0.010925,0.010921,0.010918,0.010914,0.010910
.float 0.010906,0.010903,0.010899,0.010895,0.010892,0.010888,0.010884,0.010880,0.010877
.float 0.010873,0.010869,0.010866,0.010862,0.010858,0.010855,0.010851,0.010847,0.010844
.float 0.010840,0.010836,0.010833,0.010829,0.010825,0.010822,0.010818,0.010814,0.010811
.float 0.010807,0.010803,0.010800,0.010796,0.010792,0.010789,0.010785,0.010781,0.010778
.float 0.010774,0.010771,0.010767,0.010763,0.010760,0.010756,0.010752,0.010749,0.010745
.float 0.010742,0.010738,0.010734,0.010731,0.010727,0.010724,0.010720,0.010716,0.010713
.float 0.010709,0.010706,0.010702,0.010699,0.010695,0.010691,0.010688,0.010684,0.010681
.float 0.010677,0.010674,0.010670,0.010666,0.010663,0.010659,0.010656,0.010652,0.010649
.float 0.010645,0.010642,0.010638,0.010635,0.010631,0.010627,0.010624,0.010620,0.010617
.float 0.010613,0.010610,0.010606,0.010603,0.010599,0.010596,0.010592,0.010589,0.010585
.float 0.010582,0.010578,0.010575,0.010571,0.010568,0.010564,0.010561,0.010557,0.010554
.float 0.010550,0.010547,0.010543,0.010540,0.010536,0.010533,0.010530,0.010526,0.010523
.float 0.010519,0.010516,0.010512,0.010509,0.010505,0.010502,0.010498,0.010495,0.010492
.float 0.010488,0.010485,0.010481,0.010478,0.010474,0.010471,0.010468,0.010464,0.010461
.float 0.010457,0.010454,0.010450,0.010447,0.010444,0.010440,0.010437,0.010433,0.010430
.float 0.010427,0.010423,0.010420,0.010416,0.010413,0.010410,0.010406,0.010403,0.010400
.float 0.010396,0.010393,0.010389,0.010386,0.010383,0.010379,0.010376,0.010373,0.010369
.float 0.010366,0.010362,0.010359,0.010356,0.010352,0.010349,0.010346,0.010342,0.010339
.float 0.010336,0.010332,0.010329,0.010326,0.010322,0.010319,0.010316,0.010312,0.010309
.float 0.010306,0.010302,0.010299,0.010296,0.010292,0.010289,0.010286,0.010283,0.010279
.float 0.010276,0.010273,0.010269,0.010266,0.010263,0.010259,0.010256,0.010253,0.010250
.float 0.010246,0.010243,0.010240,0.010237,0.010233,0.010230,0.010227,0.010223,0.010220
.float 0.010217,0.010214,0.010210,0.010207,0.010204,0.010201,0.010197,0.010194,0.010191
.float 0.010188,0.010184,0.010181,0.010178,0.010175,0.010171,0.010168,0.010165,0.010162
.float 0.010159,0.010155,0.010152,0.010149,0.010146,0.010142,0.010139,0.010136,0.010133
.float 0.010130,0.010126,0.010123,0.010120,0.010117,0.010114,0.010110,0.010107,0.010104
.float 0.010101,0.010098,0.010094,0.010091,0.010088,0.010085,0.010082,0.010079,0.010075
.float 0.010072,0.010069,0.010066,0.010063,0.010060,0.010056,0.010053,0.010050,0.010047
.float 0.010044,0.010041,0.010037,0.010034,0.010031,0.010028,0.010025,0.010022,0.010019
.float 0.010015,0.010012,0.010009,0.010006,0.010003,0.010000,0.009997,0.009994,0.009990
.float 0.009987,0.009984,0.009981,0.009978,0.009975,0.009972,0.009969,0.009966,0.009962
.float 0.009959,0.009956,0.009953,0.009950,0.009947,0.009944,0.009941,0.009938,0.009935
.float 0.009932,0.009928,0.009925,0.009922,0.009919,0.009916,0.009913,0.009910,0.009907
.float 0.009904,0.009901,0.009898,0.009895,0.009892,0.009889,0.009886,0.009882,0.009879
.float 0.009876,0.009873,0.009870,0.009867,0.009864,0.009861,0.009858,0.009855,0.009852
.float 0.009849,0.009846,0.009843,0.009840,0.009837,0.009834,0.009831,0.009828,0.009825
.float 0.009822,0.009819,0.009816,0.009813,0.009810,0.009807,0.009804,0.009801,0.009798
.float 0.009795,0.009792,0.009789,0.009786,0.009783,0.009780,0.009777,0.009774,0.009771
.float 0.009768,0.009765,0.009762,0.009759,0.009756,0.009753,0.009750,0.009747,0.009744
.float 0.009741,0.009738,0.009735,0.009732,0.009729,0.009726,0.009723,0.009720,0.009717
.float 0.009714,0.009712,0.009709,0.009706,0.009703,0.009700,0.009697,0.009694,0.009691
.float 0.009688,0.009685,0.009682,0.009679,0.009676,0.009673,0.009670,0.009667,0.009665
.float 0.009662,0.009659,0.009656,0.009653,0.009650,0.009647,0.009644,0.009641,0.009638
.float 0.009635,0.009633,0.009630,0.009627,0.009624,0.009621,0.009618,0.009615,0.009612
.float 0.009609,0.009607,0.009604,0.009601,0.009598,0.009595,0.009592,0.009589,0.009586
.float 0.009584,0.009581,0.009578,0.009575,0.009572,0.009569,0.009566,0.009563,0.009561
.float 0.009558,0.009555,0.009552,0.009549,0.009546,0.009544,0.009541,0.009538,0.009535
.float 0.009532,0.009529,0.009526,0.009524,0.009521,0.009518,0.009515,0.009512,0.009509
.float 0.009507,0.009504,0.009501,0.009498,0.009495,0.009493,0.009490,0.009487,0.009484
.float 0.009481,0.009478,0.009476,0.009473,0.009470,0.009467,0.009464,0.009462,0.009459
.float 0.009456,0.009453,0.009451,0.009448,0.009445,0.009442,0.009439,0.009437,0.009434
.float 0.009431,0.009428,0.009425,0.009423,0.009420,0.009417,0.009414,0.009412,0.009409
.float 0.009406,0.009403,0.009401,0.009398,0.009395,0.009392,0.009389,0.009387,0.009384
.float 0.009381,0.009378,0.009376,0.009373,0.009370,0.009368,0.009365,0.009362,0.009359
.float 0.009357,0.009354,0.009351,0.009348,0.009346,0.009343,0.009340,0.009337,0.009335
.float 0.009332,0.009329,0.009327,0.009324,0.009321,0.009318,0.009316,0.009313,0.009310
.float 0.009308,0.009305,0.009302,0.009299,0.009297,0.009294,0.009291,0.009289,0.009286
.float 0.009283,0.009281,0.009278,0.009275,0.009273,0.009270,0.009267,0.009264,0.009262
.float 0.009259,0.009256,0.009254,0.009251,0.009248,0.009246,0.009243,0.009240,0.009238
.float 0.009235,0.009232,0.009230,0.009227,0.009224,0.009222,0.009219,0.009216,0.009214
.float 0.009211,0.009208,0.009206,0.009203,0.009201,0.009198,0.009195,0.009193,0.009190
.float 0.009187,0.009185,0.009182,0.009179,0.009177,0.009174,0.009172,0.009169,0.009166
.float 0.009164,0.009161,0.009158,0.009156,0.009153,0.009151,0.009148,0.009145,0.009143
.float 0.009140,0.009137,0.009135,0.009132,0.009130,0.009127,0.009124,0.009122,0.009119
.float 0.009117,0.009114,0.009111,0.009109,0.009106,0.009104,0.009101,0.009099,0.009096
.float 0.009093,0.009091,0.009088,0.009086,0.009083,0.009080,0.009078,0.009075,0.009073
.float 0.009070,0.009068,0.009065,0.009062,0.009060,0.009057,0.009055,0.009052,0.009050
.float 0.009047,0.009044,0.009042,0.009039,0.009037,0.009034,0.009032,0.009029,0.009027
.float 0.009024,0.009022,0.009019,0.009016,0.009014,0.009011,0.009009,0.009006,0.009004
.float 0.009001,0.008999,0.008996,0.008994,0.008991,0.008989,0.008986,0.008984,0.008981
.float 0.008979,0.008976,0.008973,0.008971,0.008968,0.008966,0.008963,0.008961,0.008958
.float 0.008956,0.008953,0.008951,0.008948,0.008946,0.008943,0.008941,0.008938,0.008936
.float 0.008933,0.008931,0.008928,0.008926,0.008923,0.008921,0.008918,0.008916,0.008913
.float 0.008911,0.008909,0.008906,0.008904,0.008901,0.008899,0.008896,0.008894,0.008891
.float 0.008889,0.008886,0.008884,0.008881,0.008879,0.008876,0.008874,0.008871,0.008869
.float 0.008867,0.008864,0.008862,0.008859,0.008857,0.008854,0.008852,0.008849,0.008847
.float 0.008845,0.008842,0.008840,0.008837,0.008835,0.008832,0.008830,0.008827,0.008825
.float 0.008823,0.008820,0.008818,0.008815,0.008813,0.008810,0.008808,0.008806,0.008803
.float 0.008801,0.008798,0.008796,0.008793,0.008791,0.008789,0.008786,0.008784,0.008781
.float 0.008779,0.008777,0.008774,0.008772,0.008769,0.008767,0.008765,0.008762,0.008760
.float 0.008757,0.008755,0.008753,0.008750,0.008748,0.008745,0.008743,0.008741,0.008738
.float 0.008736,0.008733,0.008731,0.008729,0.008726,0.008724,0.008722,0.008719,0.008717
.float 0.008714,0.008712,0.008710,0.008707,0.008705,0.008703,0.008700,0.008698,0.008696
.float 0.008693,0.008691,0.008688,0.008686,0.008684,0.008681,0.008679,0.008677,0.008674
.float 0.008672,0.008670,0.008667,0.008665,0.008663,0.008660,0.008658,0.008656,0.008653
.float 0.008651,0.008649,0.008646,0.008644,0.008641,0.008639,0.008637,0.008635,0.008632
.float 0.008630,0.008628,0.008625,0.008623,0.008621,0.008618,0.008616,0.008614,0.008611
.float 0.008609,0.008607,0.008604,0.008602,0.008600,0.008597,0.008595,0.008593,0.008590
.float 0.008588,0.008586,0.008584,0.008581,0.008579,0.008577,0.008574,0.008572,0.008570
.float 0.008567,0.008565,0.008563,0.008561,0.008558,0.008556,0.008554,0.008551,0.008549
.float 0.008547,0.008545,0.008542,0.008540,0.008538,0.008535,0.008533,0.008531,0.008529
.float 0.008526,0.008524,0.008522,0.008520,0.008517,0.008515,0.008513,0.008510,0.008508
.float 0.008506,0.008504,0.008501,0.008499,0.008497,0.008495,0.008492,0.008490,0.008488
.float 0.008486,0.008483,0.008481,0.008479,0.008477,0.008474,0.008472,0.008470,0.008468
.float 0.008465,0.008463,0.008461,0.008459,0.008457,0.008454,0.008452,0.008450,0.008448
.float 0.008445,0.008443,0.008441,0.008439,0.008436,0.008434,0.008432,0.008430,0.008428
.float 0.008425,0.008423,0.008421,0.008419,0.008416,0.008414,0.008412,0.008410,0.008408
.float 0.008405,0.008403,0.008401,0.008399,0.008397,0.008394,0.008392,0.008390,0.008388
.float 0.008386,0.008383,0.008381,0.008379,0.008377,0.008375,0.008372,0.008370,0.008368
.float 0.008366,0.008364,0.008362,0.008359,0.008357,0.008355,0.008353,0.008351,0.008348
.float 0.008346,0.008344,0.008342,0.008340,0.008338,0.008335,0.008333,0.008331,0.008329
.float 0.008327,0.008325,0.008322,0.008320,0.008318,0.008316,0.008314,0.008312,0.008309
.float 0.008307,0.008305,0.008303,0.008301,0.008299,0.008296,0.008294,0.008292,0.008290
.float 0.008288,0.008286,0.008284,0.008281,0.008279,0.008277,0.008275,0.008273,0.008271
.float 0.008269,0.008266,0.008264,0.008262,0.008260,0.008258,0.008256,0.008254,0.008252
.float 0.008249,0.008247,0.008245,0.008243,0.008241,0.008239,0.008237,0.008235,0.008232
.float 0.008230,0.008228,0.008226,0.008224,0.008222,0.008220,0.008218,0.008216,0.008213
.float 0.008211,0.008209,0.008207,0.008205,0.008203,0.008201,0.008199,0.008197,0.008194
.float 0.008192,0.008190,0.008188,0.008186,0.008184,0.008182,0.008180,0.008178,0.008176
.float 0.008174,0.008171,0.008169,0.008167,0.008165,0.008163,0.008161,0.008159,0.008157
.float 0.008155,0.008153,0.008151,0.008149,0.008147,0.008144,0.008142,0.008140,0.008138
.float 0.008136,0.008134,0.008132,0.008130,0.008128,0.008126,0.008124,0.008122,0.008120
.float 0.008118,0.008116,0.008113,0.008111,0.008109,0.008107,0.008105,0.008103,0.008101
.float 0.008099,0.008097,0.008095,0.008093,0.008091,0.008089,0.008087,0.008085,0.008083
.float 0.008081,0.008079,0.008077,0.008075,0.008073,0.008070,0.008068,0.008066,0.008064
.float 0.008062,0.008060,0.008058,0.008056,0.008054,0.008052,0.008050,0.008048,0.008046
.float 0.008044,0.008042,0.008040,0.008038,0.008036,0.008034,0.008032,0.008030,0.008028
.float 0.008026,0.008024,0.008022,0.008020,0.008018,0.008016,0.008014,0.008012,0.008010
.float 0.008008,0.008006,0.008004,0.008002,0.008000,0.007998,0.007996,0.007994,0.007992
.float 0.007990,0.007988,0.007986,0.007984,0.007982,0.007980,0.007978,0.007976,0.007974
.float 0.007972,0.007970,0.007968,0.007966,0.007964,0.007962,0.007960,0.007958,0.007956
.float 0.007954,0.007952,0.007950,0.007948,0.007946,0.007944,0.007942,0.007940,0.007938
.float 0.007936,0.007934,0.007932,0.007930,0.007929,0.007927,0.007925,0.007923,0.007921
.float 0.007919,0.007917,0.007915,0.007913,0.007911,0.007909,0.007907,0.007905,0.007903
.float 0.007901,0.007899,0.007897,0.007895,0.007893,0.007891,0.007889,0.007887,0.007886
.float 0.007884,0.007882,0.007880,0.007878,0.007876,0.007874,0.007872,0.007870,0.007868
.float 0.007866,0.007864,0.007862,0.007860,0.007858,0.007856,0.007855,0.007853,0.007851
.float 0.007849,0.007847,0.007845,0.007843,0.007841,0.007839,0.007837,0.007835,0.007833
.float 0.007831,0.007830,0.007828,0.007826,0.007824,0.007822,0.007820,0.007818,0.007816
.float 0.007814,0.007812,0.007810,0.007809,0.007807,0.007805,0.007803,0.007801,0.007799
.float 0.007797,0.007795,0.007793,0.007791,0.007790,0.007788,0.007786,0.007784,0.007782
.float 0.007780,0.007778,0.007776,0.007774,0.007773,0.007771,0.007769,0.007767,0.007765
.float 0.007763,0.007761,0.007759,0.007757,0.007756,0.007754,0.007752,0.007750,0.007748
.float 0.007746,0.007744,0.007742,0.007741,0.007739,0.007737,0.007735,0.007733,0.007731
.float 0.007729,0.007727,0.007726,0.007724,0.007722,0.007720,0.007718,0.007716,0.007714
.float 0.007713,0.007711,0.007709,0.007707,0.007705,0.007703,0.007701,0.007700,0.007698
.float 0.007696,0.007694,0.007692,0.007690,0.007688,0.007687,0.007685,0.007683,0.007681
.float 0.007679,0.007677,0.007676,0.007674,0.007672,0.007670,0.007668,0.007666,0.007665
.float 0.007663,0.007661,0.007659,0.007657,0.007655,0.007654,0.007652,0.007650,0.007648
.float 0.007646,0.007644,0.007643,0.007641,0.007639,0.007637,0.007635,0.007633,0.007632
.float 0.007630,0.007628,0.007626,0.007624,0.007623,0.007621,0.007619,0.007617,0.007615
.float 0.007613,0.007612,0.007610,0.007608,0.007606,0.007604,0.007603,0.007601,0.007599
.float 0.007597,0.007595,0.007594,0.007592,0.007590,0.007588,0.007586,0.007585,0.007583
.float 0.007581,0.007579,0.007577,0.007576,0.007574,0.007572,0.007570,0.007568,0.007567
.float 0.007565,0.007563,0.007561,0.007560,0.007558,0.007556,0.007554,0.007552,0.007551
.float 0.007549,0.007547,0.007545,0.007544,0.007542,0.007540,0.007538,0.007536,0.007535
.float 0.007533,0.007531,0.007529,0.007528,0.007526,0.007524,0.007522,0.007520,0.007519
.float 0.007517,0.007515,0.007513,0.007512,0.007510,0.007508,0.007506,0.007505,0.007503
.float 0.007501,0.007499,0.007498,0.007496,0.007494,0.007492,0.007491,0.007489,0.007487
.float 0.007485,0.007484,0.007482,0.007480,0.007478,0.007477,0.007475,0.007473,0.007471
.float 0.007470,0.007468,0.007466,0.007464,0.007463,0.007461,0.007459,0.007457,0.007456
.float 0.007454,0.007452,0.007450,0.007449,0.007447,0.007445,0.007443,0.007442,0.007440
.float 0.007438,0.007437,0.007435,0.007433,0.007431,0.007430,0.007428,0.007426,0.007424
.float 0.007423,0.007421,0.007419,0.007418,0.007416,0.007414,0.007412,0.007411,0.007409
.float 0.007407,0.007406,0.007404,0.007402,0.007400,0.007399,0.007397,0.007395,0.007394
.float 0.007392,0.007390,0.007388,0.007387,0.007385,0.007383,0.007382,0.007380,0.007378
.float 0.007377,0.007375,0.007373,0.007371,0.007370,0.007368,0.007366,0.007365,0.007363
.float 0.007361,0.007360,0.007358,0.007356,0.007355,0.007353,0.007351,0.007349,0.007348
.float 0.007346,0.007344,0.007343,0.007341,0.007339,0.007338,0.007336,0.007334,0.007333
.float 0.007331,0.007329,0.007328,0.007326,0.007324,0.007323,0.007321,0.007319,0.007318
.float 0.007316,0.007314,0.007313,0.007311,0.007309,0.007308,0.007306,0.007304,0.007302
.float 0.007301,0.007299,0.007298,0.007296,0.007294,0.007293,0.007291,0.007289,0.007288
.float 0.007286,0.007284,0.007283,0.007281,0.007279,0.007278,0.007276,0.007274,0.007273
.float 0.007271,0.007269,0.007268,0.007266,0.007264,0.007263,0.007261,0.007259,0.007258
.float 0.007256,0.007254,0.007253,0.007251,0.007250,0.007248,0.007246,0.007245,0.007243
.float 0.007241,0.007240,0.007238,0.007236,0.007235,0.007233,0.007232,0.007230,0.007228
.float 0.007227,0.007225,0.007223,0.007222,0.007220,0.007218,0.007217,0.007215,0.007214
.float 0.007212,0.007210,0.007209,0.007207,0.007205,0.007204,0.007202,0.007201,0.007199
.float 0.007197,0.007196,0.007194,0.007193,0.007191,0.007189,0.007188,0.007186,0.007184
.float 0.007183,0.007181,0.007180,0.007178,0.007176,0.007175,0.007173,0.007172,0.007170
.float 0.007168,0.007167,0.007165,0.007164,0.007162,0.007160,0.007159,0.007157,0.007156
.float 0.007154,0.007152,0.007151,0.007149,0.007148,0.007146,0.007144,0.007143,0.007141
.float 0.007140,0.007138,0.007136,0.007135,0.007133,0.007132,0.007130,0.007128,0.007127
.float 0.007125,0.007124,0.007122,0.007121,0.007119,0.007117,0.007116,0.007114,0.007113
.float 0.007111,0.007109,0.007108,0.007106,0.007105,0.007103,0.007102,0.007100,0.007098
.float 0.007097,0.007095,0.007094,0.007092,0.007091,0.007089,0.007087,0.007086,0.007084
.float 0.007083,0.007081,0.007080,0.007078,0.007076,0.007075,0.007073,0.007072,0.007070
.float 0.007069,0.007067,0.007065,0.007064,0.007062,0.007061,0.007059,0.007058,0.007056
.float 0.007055,0.007053,0.007051,0.007050,0.007048,0.007047,0.007045,0.007044,0.007042
.float 0.007041,0.007039,0.007038,0.007036,0.007034,0.007033,0.007031,0.007030,0.007028
.float 0.007027,0.007025,0.007024,0.007022,0.007021,0.007019,0.007017,0.007016,0.007014
.float 0.007013,0.007011,0.007010,0.007008,0.007007,0.007005,0.007004,0.007002,0.007001
.float 0.006999,0.006997,0.006996,0.006994,0.006993,0.006991,0.006990,0.006988,0.006987
.float 0.006985,0.006984,0.006982,0.006981,0.006979,0.006978,0.006976,0.006975,0.006973
.float 0.006972,0.006970,0.006969,0.006967,0.006966,0.006964,0.006962,0.006961,0.006959
.float 0.006958,0.006956,0.006955,0.006953,0.006952,0.006950,0.006949,0.006947,0.006946
.float 0.006944,0.006943,0.006941,0.006940,0.006938,0.006937,0.006935,0.006934,0.006932
.float 0.006931,0.006929,0.006928,0.006926,0.006925,0.006923,0.006922,0.006920,0.006919
.float 0.006917,0.006916,0.006914,0.006913,0.006911,0.006910,0.006908,0.006907,0.006905
.float 0.006904,0.006902,0.006901,0.006899,0.006898,0.006896,0.006895,0.006893,0.006892
.float 0.006891,0.006889,0.006888,0.006886,0.006885,0.006883,0.006882,0.006880,0.006879
.float 0.006877,0.006876,0.006874,0.006873,0.006871,0.006870,0.006868,0.006867,0.006865
.float 0.006864,0.006862,0.006861,0.006860,0.006858,0.006857,0.006855,0.006854,0.006852
.float 0.006851,0.006849,0.006848,0.006846,0.006845,0.006843,0.006842,0.006840,0.006839
.float 0.006838,0.006836,0.006835,0.006833,0.006832,0.006830,0.006829,0.006827,0.006826
.float 0.006824,0.006823,0.006821,0.006820,0.006819,0.006817,0.006816,0.006814,0.006813
.float 0.006811,0.006810,0.006808,0.006807,0.006806,0.006804,0.006803,0.006801,0.006800
.float 0.006798,0.006797,0.006795,0.006794,0.006793,0.006791,0.006790,0.006788,0.006787
.float 0.006785,0.006784,0.006782,0.006781,0.006780,0.006778,0.006777,0.006775,0.006774
.float 0.006772,0.006771,0.006770,0.006768,0.006767,0.006765,0.006764,0.006762,0.006761
.float 0.006760,0.006758,0.006757,0.006755,0.006754,0.006752,0.006751,0.006750,0.006748
.float 0.006747,0.006745,0.006744,0.006742,0.006741,0.006740,0.006738,0.006737,0.006735
.float 0.006734,0.006733,0.006731,0.006730,0.006728,0.006727,0.006725,0.006724,0.006723
.float 0.006721,0.006720,0.006718,0.006717,0.006716,0.006714,0.006713,0.006711,0.006710
.float 0.006709,0.006707,0.006706,0.006704,0.006703,0.006701,0.006700,0.006699,0.006697
.float 0.006696,0.006694,0.006693,0.006692,0.006690,0.006689,0.006687,0.006686,0.006685
.float 0.006683,0.006682,0.006680,0.006679,0.006678,0.006676,0.006675,0.006674,0.006672
.float 0.006671,0.006669,0.006668,0.006667,0.006665,0.006664,0.006662,0.006661,0.006660
.float 0.006658,0.006657,0.006655,0.006654,0.006653,0.006651,0.006650,0.006649,0.006647
.float 0.006646,0.006644,0.006643,0.006642,0.006640,0.006639,0.006638,0.006636,0.006635
.float 0.006633,0.006632,0.006631,0.006629,0.006628,0.006627,0.006625,0.006624,0.006622
.float 0.006621,0.006620,0.006618,0.006617,0.006616,0.006614,0.006613,0.006611,0.006610
.float 0.006609,0.006607,0.006606,0.006605,0.006603,0.006602,0.006601,0.006599,0.006598
.float 0.006596,0.006595,0.006594,0.006592,0.006591,0.006590,0.006588,0.006587,0.006586
.float 0.006584,0.006583,0.006582,0.006580,0.006579,0.006578,0.006576,0.006575,0.006573
.float 0.006572,0.006571,0.006569,0.006568,0.006567,0.006565,0.006564,0.006563,0.006561
.float 0.006560,0.006559,0.006557,0.006556,0.006555,0.006553,0.006552,0.006551,0.006549
.float 0.006548,0.006547,0.006545,0.006544,0.006543,0.006541,0.006540,0.006539,0.006537
.float 0.006536,0.006535,0.006533,0.006532,0.006531,0.006529,0.006528,0.006527,0.006525
.float 0.006524,0.006523,0.006521,0.006520,0.006519,0.006517,0.006516,0.006515,0.006513
.float 0.006512,0.006511,0.006509,0.006508,0.006507,0.006505,0.006504,0.006503,0.006501
.float 0.006500,0.006499,0.006497,0.006496,0.006495,0.006493,0.006492,0.006491,0.006489
.float 0.006488,0.006487,0.006486,0.006484,0.006483,0.006482,0.006480,0.006479,0.006478
.float 0.006476,0.006475,0.006474,0.006472,0.006471,0.006470,0.006468,0.006467,0.006466
.float 0.006465,0.006463,0.006462,0.006461,0.006459,0.006458,0.006457,0.006455,0.006454
.float 0.006453,0.006452,0.006450,0.006449,0.006448,0.006446,0.006445,0.006444,0.006442
.float 0.006441,0.006440,0.006439,0.006437,0.006436,0.006435,0.006433,0.006432,0.006431
.float 0.006429,0.006428,0.006427,0.006426,0.006424,0.006423,0.006422,0.006420,0.006419
.float 0.006418,0.006417,0.006415,0.006414,0.006413,0.006411,0.006410,0.006409,0.006408
.float 0.006406,0.006405,0.006404,0.006402,0.006401
.END

600
LEG.ASM Executable file
View File

@ -0,0 +1,600 @@
.FILE "LEG.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
USEFIXED .set 1
USEEXTENDED .set 0
.include MACS.EQU
.include VUNIT.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include OBJECTS.EQU
.bss FINISH_ID,1
*----------------------------------------------------------------------------
* USEAGE:
*
*
*FOR EACH LEG IN THE SYSTEM THE LEG_GENERATE_MAP ROUTINE IS
*CALLED TO GENERATE THE LEG MAP.
*THIS MAP IS IDENTICAL TO HOW THE OBJECTS WILL BE ALLOCATED ON
*THE DYNAMIC LIST.
*
*THE LIST STARTS AT LEGMAP (located in hibss space)
*AND HAS THE FOLLOWING STRUCTURE:
*
*
**STRUCT LEG
*LEG_POSX .set 0 ;FL
*LEG_POSY .set 1 ;FL
*LEG_POSZ .set 2 ;FL
*LEG_ID .set 3 ;UH
**ENDSTRUCT
*LEG_SIZE .set 4 ;SI
* .globl LEG_MAP ;RAM SPACE
*MAX_LEG_ELEMENTS .set 1200
*
*THE LAST ENTRY IN THE MAP HAS ALL FIELDS AS
*0FFFF FFFFh
*
*DRONES ON STARTING GRID MUST USE:
* .bss RACER_GRID_START
*AS THE STARTING INDEX TO ASSUME THE PLAYER
*WILL BE LOCATED AT.
*
*
*
LEG_MAPI .word LEG_MAP
.globl LEG_MAP
.bss LEG_ELEMENTS,1
hibss LEG_MAP,MAX_LEG_ELEMENTS*LEG_SIZE
.bss LAST_END_CACHE,1
.bss LAST_END_INDEX,1
.bss LAST_ORIENTATION,1
*----------------------------------------------------------------------------
*
*
*THIS INITIALIZATION IS FOR EACH GAME, NOT
*EACH LEG
*
*
LEG_INIT:
PUSH R0
CLRI R0
STI R0,@LEG_ELEMENTS
LDI 1,R0
STI R0,@LAST_END_INDEX
LDI @TYCO_TRKI,R0
STI R0,@LAST_END_CACHE
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MINILL_SIZE .set 60
hibss LEG_SSLL,MINILL_SIZE*(LEG_SIZE+1)
.bss LEGFREE,1
.bss LEGLL,1
*
*NOT A TRUE LINKED LIST, BECAUSE THERE IS NO DYNAMIC
*DEALLOCATION (TO ALLOW REALLOCATION) THE SYSTEM IS
*RESET WHEN PIECES ARE REALLOCATED.
*
*THIS IS FOR THE SAKE OF SPEED
*
ELEMENT_INIT:
PUSH R0
LDL LEG_SSLL,R0
STI R0,@LEGFREE
CLRI R0
STI R0,@LEGLL
.if DEBUG
.bss DBG_LEGCNT,1
STI R0,@DBG_LEGCNT
.endif
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*RETURNS
* AR3 PTR TO ELEMENT
*
ELEMENT_GET:
PUSH AR0
.if DEBUG
LDI @DBG_LEGCNT,AR0 ;CHECK TO SEE IF WE ARE ALLOCATING TO MANY
INC AR0 ;PIECES
CMPI MINILL_SIZE,AR0
BGE $
STI AR0,@DBG_LEGCNT
.endif
LDI @LEGFREE,AR3
LDI AR3,AR0
ADDI LEG_SIZE+1,AR0
STI AR0,@LEGFREE
POP AR0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* AR3 LIST ELEMENT
*
*INSERT LOWEST TO HIGHEST ONTO LEGLL
*
LEGLLI .word LEGLL
ELEMENT_ADD:
LDI *+AR3(1+LEG_ID),R0
LDI @LEGLLI,AR0
R65 LDI *AR0,AR1
CMPI 0,AR1
BEQ QT
CMPI *+AR1(1+LEG_ID),R0
BLT QT
LDI AR1,AR0
BU R65
QT
STI AR1,*AR3
STI AR3,*AR0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* AR3 PTR TO LEG MAP ENTRY
*
ELEMENT_DUMP_INTO_LEGMAP:
PUSH R0
PUSH AR0
PUSH AR1
LDI @LEGLL,AR0
EDILL CMPI 0,AR0
BEQ ENDIT
LDI AR0,AR1
LDI *AR0,AR0
INC AR1
LDI LEG_SIZE-1,RC
RPTB K99
LDI *AR1++,R0
K99 STI R0,*AR3++
BU EDILL
ENDIT
POP AR1
POP AR0
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* AR0 START INDEX
* AR1 END INDEX
*
*
LEG_GENERATE_MAP:
LDI AR1,R1
ADDI 2,R1
STI R1,@FINISH_ID
LDI @LAST_END_CACHE,AR2
LDI @LAST_END_INDEX,AR4
;GROUP LOOP
GENMAPLP
*
*FIND THE TYCOMAP ENTRY APPROPRIATE TO THIS LEG
*
*
*
LPP CMPI AR0,AR4
BEQ DNFND
LDI *AR2++(6),R1
TSTB 1,R1
BZ NOOVERA
ADDI 1,AR2
NOOVERA TSTB SC_REVERSE,R1
BZ CNTA
NOP *AR2++(4)
CNTA TSTB SC_OVER2,R1
BZ CNTNA
NOP *AR2++ ;OVERLAY 2
CNTNA
INC AR4 ;INCREMENT INDEX
BU LPP
DNFND
LDI @LEG_MAPI,AR3
*
*LOAD TYCO ENTRIES UNTIL LAST LEG IS FOUND
*
*
LOAD_LP
;AR2 TYCO ENTRY
;AR3 MAP ENTRY
CALL LEG_ADD_GROUP
LDI *AR2++(6),R1
TSTB 1,R1
BZ NOOVERB
ADDI 1,AR2
NOOVERB TSTB SC_REVERSE,R1
BZ CNTB
NOP *AR2++(4)
CNTB TSTB SC_OVER2,R1
BZ CNTNB
NOP *AR2++ ;OVERLAY 2
CNTNB
INC AR4 ;INCREMENT INDEX
CMPI AR1,AR4
BLE LOAD_LP
STI AR2,@LAST_END_CACHE
STI AR4,@LAST_END_INDEX
*
*LOAD THREE EXTRA LEGS ONTO THE END
*
ADDI 3,AR1
LOAD_LP2
;AR2 TYCO ENTRY
;AR3 MAP ENTRY
CALL LEG_ADD_GROUP
LDI *AR2++(6),R1
TSTB 1,R1
BZ NOOVERB2
ADDI 1,AR2
NOOVERB2
TSTB SC_REVERSE,R1
BZ CNTB2
NOP *AR2++(4)
CNTB2 TSTB SC_OVER2,R1
BZ CNTNB2
NOP *AR2++ ;OVERLAY 2
CNTNB2
INC AR4 ;INCREMENT INDEX
CMPI AR1,AR4
BLE LOAD_LP2
*
*FLAG THE END OF THE LIST
*
LDI -1,R0
RPTS LEG_SIZE-1
STI R0,*AR3++
*
*AND RETURN TO GAME...
*
RETS
*----------------------------------------------------------------------------
.bss LEG_FLAG,1 ;UH
.bss LEG_RADY,1 ;FL
.bss LEG_SECTIONIDX,1 ;UH
*----------------------------------------------------------------------------
*
*
*
*PARAMETERS
* AR2 PTR TO TYCO ROM ENTRY
* AR3 PTR TO LEG MAP ENTRY
* AR4 INDEX
*
*
LEG_ADD_GROUP:
PUSH R4
PUSH R5
PUSH R6
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR7
STI AR4,@LEG_SECTIONIDX
CALL ELEMENT_INIT
CALL ELEMENT_GET
INC AR3
LDI AR2,AR7 ;DEDICATED POINTER
LDI *AR7,R5 ;LOAD FLAG
LDI R5,R6 ;LANE COUNT
RS 7,R6
AND 1,R6 ;THIS IS THE LANES
LDF *+AR7(TB_RADY),R2
STF R2,@LEG_RADY
LDI @MATRIXAI,AR2 ;Group rotation matrix
CALL HPFIND_YMATRIX ;require High Precision
LDI *+AR7(TB_GROUP),AR5 ;Group pointer
ADDI 1,AR5 ;skip radius
LDI *AR5++,R4 ;get number of objects to load
SUBI 1,R4
L12 LDI *AR5++,AR2 ;GET MODEL PTR
FLOAT *AR5++,R1 ;GET X POSITION
STF R1,*+AR3(LEG_POSX)
FLOAT *AR5++,R1 ;GET Y POSITION
TSTB SC_REVERSE,R5
BZD NOTREVERSED
STF R1,*+AR3(LEG_POSY)
FLOAT *AR5++,R1 ;GET Z POSITION
STF R1,*+AR3(LEG_POSZ)
;---->BZD NOTREVERSED
;SPECIAL REVERSED CASE
;
PUSH AR7
TSTB SC_OVERLAY,R5
BNZ ISOVER
DEC AR7
ISOVER
LDF *+AR7(TB_RVS_POSX),R0 ;TRANSLATE BY THE NEGATIVE OFFSET
ADDF *+AR3(LEG_POSX),R0 ;POSITION (THIS BLOCKS ENDING POSITION)
STF R0,*+AR3(LEG_POSX)
LDF *+AR7(TB_RVS_POSY),R0
ADDF *+AR3(LEG_POSY),R0
STF R0,*+AR3(LEG_POSY)
LDF *+AR7(TB_RVS_POSZ),R0
ADDF *+AR3(LEG_POSZ),R0
STF R0,*+AR3(LEG_POSZ)
POP AR7
ISOVERA
LDI @MATRIXAI,R2
LDI AR3,AR2
ADDI LEG_POSX,AR2
LDI @VECTORAI,R3
CALL MATRIX_MUL ;rotation by occurance matrix
LDI @VECTORAI,AR0
LDF *AR0++,R1
ADDF *+AR7(TB_POSX),R1
STF R1,*+AR3(LEG_POSX)
LDF *AR0++,R1
ADDF *+AR7(TB_POSY),R1
STF R1,*+AR3(LEG_POSY)
LDF *AR0++,R1
ADDF *+AR7(TB_POSZ),R1
STF R1,*+AR3(LEG_POSZ)
BU JOIN_UP
NOTREVERSED
LDI @MATRIXAI,R2
LDI AR3,AR2
ADDI LEG_POSX,AR2
LDI R2,R3
LDI @VECTORAI,R3
CALL MATRIX_MUL ;ROTATION BY OCCURANCE MATRIX
LDI @VECTORAI,AR0
LDF *AR0++,R1
ADDF *+AR7(TB_POSX),R1
STF R1,*+AR3(LEG_POSX)
LDF *AR0++,R1
ADDF *+AR7(TB_POSY),R1
STF R1,*+AR3(LEG_POSY)
LDF *AR0++,R1
ADDF *+AR7(TB_POSZ),R1
STF R1,*+AR3(LEG_POSZ)
JOIN_UP LDF *AR5++,R2 ;LOAD OBJECTS RADIANS
LDI *AR5++,R1 ;LOAD OBJECT ID (GENV STYLE)
LDI R1,R0
AND 00F00h,R0
CMPI 0B00h,R0
BNE NOTDYNAROAD
;*******************
;*******************
;
;THIS IS THE CASE WE ARE LOOKING FOR
;
;*******************
;*******************
;
;add this element to dynamic fLEX list
;
LDI R1,R3
LDI @LEG_SECTIONIDX,R1
LS 8,R1
LDI R3,R0
AND 0FFh,R0
TSTB SC_REVERSE,R5 ;in the case of reversed track
BZ NOTRVSTRK ;we say the index value is
SUBRI 255,R0 ;255 - index
NOTRVSTRK
OR R1,R0
STI R0,*+AR3(LEG_ID)
.if USEFIXED
FIX *+AR3(LEG_POSX),R0
STI R0,*+AR3(LEG_POSX)
FIX *+AR3(LEG_POSY),R0
ANDN 1,R0
OR R6,R0 ;# of LANES
STI R0,*+AR3(LEG_POSY)
FIX *+AR3(LEG_POSZ),R0
STI R0,*+AR3(LEG_POSZ)
.endif
DEC AR3
CALL ELEMENT_ADD
CALL ELEMENT_GET
INC AR3
; NOP *AR3++(LEG_SIZE)
NOTDYNAROAD
SUBI 1,R4
BGE L12
ACTIVATE_X
POP AR7
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP R6
POP R5
POP R4
CALL ELEMENT_DUMP_INTO_LEGMAP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*POST PROCESS LEG MAP
*
*
*
*
GENERATE_LINEAR_DISTANCE:
.if USEEXTENDED
LDL LEG_MAP,AR2
FLOAT *+AR2(LEG_POSX),R6 ;STARTING POSITION
FLOAT *+AR2(LEG_POSZ),R7
CLRF R4 ;ACCUMULATED DISTANCE
GLDLP LDI *AR2,R0
CMPI -1,R0
BEQ GLDX
FLOAT *+AR2(LEG_POSX),R2 ;STARTING POSITION
FLOAT *+AR2(LEG_POSZ),R1
SUBF R5,R2
SUBF R6,R1
MPYF R2,R2
MPYF R1,R1
ADDF R1,R2
CALL SQRT
ADDF R0,R4
FIX R4,R0
LS 16,R0
LDI *+AR2(LEG_POSY),R6
LS 16,R6
RS 16,R6
OR R0,R6
STI R6,*+AR2(LEG_POSY)
FLOAT *+AR2(LEG_POSX),R6 ;STARTING POSITION
FLOAT *+AR2(LEG_POSZ),R7
NOP *AR3++(LEG_SIZE)
BU GLDLP
GLDX
.endif
RETS
*----------------------------------------------------------------------------

370
LINE.ASM Executable file
View File

@ -0,0 +1,370 @@
******************************************************
* TMS320C30 C COMPILER Version 4.50
******************************************************
; C:\BIN\ac30.exe -mr -ic:\c30tools -x -q line.c e:\line.if
; C:\BIN\opt30.exe -m -r -a -q -O2 e:\line.if e:\line.opt
; C:\BIN\cg30.exe -o -n -b -m -p -a -c -q e:\line.opt line.asm e:\line.tmp
.version 30
FP .set AR3
.file "line.c"
.sym _rectangle,_rectangle,32,2,0
.globl _rectangle
.func 8
******************************************************
* FUNCTION DEF : _rectangle
******************************************************
_rectangle:
PUSH FP
LDI SP,FP
ADDI 3,SP
PUSH R4
PUSH R5
.sym _x1,10,4,17,32
.sym _y1,2,4,17,32
.sym _x2,3,4,17,32
.sym _y2,19,4,17,32
.sym _color,20,4,17,32
*
* R4 assigned to parameter y2
* R5 assigned to parameter y1
*
.sym _y2,4,4,4,32
.sym _y1,5,4,4,32
.sym _color,1,4,1,32
.sym _x1,2,4,1,32
.sym _x2,3,4,1,32
.line 2
STI RS,*+FP(1)
STI R3,*+FP(3)
STI AR2,*+FP(2)
LDI R2,R5
LDI RC,R4
PUSH DP
.line 4
LDI R5,R2
LDI R5,RC
CALL _line
.line 5
LDI *+FP(2),AR2
LDI R4,R2
LDI *+FP(3),R3
LDI R4,RC
LDI *+FP(1),RS
CALL _line
.line 6
LDI *+FP(2),AR2
LDI R5,R2
LDI *+FP(2),R3
LDI R4,RC
LDI *+FP(1),RS
CALL _line
.line 7
LDI *+FP(3),AR2
LDI R5,R2
LDI *+FP(3),R3
LDI R4,RC
LDI *+FP(1),RS
CALL _line
POP DP
EPI0_1:
.line 9
LDI *-FP(1),R1
LDI *FP,FP
BD R1
POP R5
POP R4
SUBI 5,SP
*** B R1 ;BRANCH OCCURS
.endfunc 16,000000030H,3
.sym _line,_line,32,2,0
.globl _line
.func 19
******************************************************
* FUNCTION DEF : _line
******************************************************
_line:
PUSH FP
LDI SP,FP
ADDI 3,SP
PUSH R4
PUSH R5
PUSHF R6
PUSHF R7
.sym _x1,10,4,17,32
.sym _y1,2,4,17,32
.sym _x2,3,4,17,32
.sym _y2,19,4,17,32
.sym _color,20,4,17,32
*
* R2 assigned to variable t
* R3 assigned to variable t
* R4 assigned to variable i
* R6 assigned to variable x
* R6 assigned to variable y
* R7 assigned to variable xd
* R7 assigned to variable yd
* RC assigned to parameter y2
* RS assigned to parameter x2
*
.sym _i,4,4,4,32
.sym L$5,5,4,4,32
.sym L$6,5,4,4,32
.sym L$4,5,4,4,32
.sym L$3,5,4,4,32
.sym L$2,5,4,4,32
.sym L$1,5,4,4,32
.sym _y,6,6,4,32
.sym _x,6,6,4,32
.sym _xd,7,6,4,32
.sym _yd,7,6,4,32
.sym U$8,2,6,4,32
.sym U$6,3,6,4,32
.sym _y2,19,4,4,32
.sym _x2,20,4,4,32
.sym _t,2,4,4,32
.sym _t,3,4,4,32
.sym _t,2,4,4,32
.sym _t,2,4,4,32
.sym _t,2,4,4,32
.sym _t,2,4,4,32
.sym _color,1,4,1,32
.sym _x1,2,4,1,32
.sym _y1,3,4,1,32
.line 2
STI RS,*+FP(1)
STI R2,*+FP(3)
STI AR2,*+FP(2)
LDI R3,RS
PUSH DP
.line 12
CMPI *+FP(2),RS
BZ L32
.line 16
CMPI RC,R2
BZ L26
.line 22
SUBI R2,RC,R0
FLOAT R0,R2
LDF R2,R0
CALL INV_F30
RND R0
LDI *+FP(2),R1
SUBI R1,RS,R1
FLOAT R1,R3
MPYF R0,R3,R7
.line 24
CMPF 1.0,R7
BGT L14
CMPF -1.0,R7
BLT L14
.line 26
CMPI *+FP(3),RC
BGE L5
.line 27
LDI *+FP(2),R2
STI RS,*+FP(2)
.line 28
LDI *+FP(3),R3
STI RC,*+FP(3)
LDI R3,RC
.line 29
SUBI *+FP(3),R3
FLOAT R3,R0
CALL INV_F30
RND R0
SUBI *+FP(2),R2
FLOAT R2,R7
MPYF R0,R7
L5:
.line 31
FLOAT *+FP(2),R6
.line 32
CMPF 0,R7
BGT L10
.line 39
LDI *+FP(3),R4
CMPI RC,R4
BGT L38
SUBI R4,RC,R5
L44:
.line 40
FIX R6,AR2
LDI R4,R2
LDI *+FP(1),R3
CALL _pixel
.line 41
SUBI 1,R5
BGED L44
ADDF R7,R6
NOP
.line 39
ADDI 1,R4
*** BGE L44 ;BRANCH OCCURS
B L38
L10:
.line 33
LDI *+FP(3),R4
CMPI RC,R4
BGT L38
SUBI R4,RC,R5
L43:
.line 34
FIX R6,AR2
LDI R4,R2
LDI *+FP(1),R3
CALL _pixel
.line 35
SUBI 1,R5
BGED L43
ADDF R7,R6
NOP
.line 33
ADDI 1,R4
*** BGE L43 ;BRANCH OCCURS
B L38
L14:
.line 45
CMPI *+FP(2),RS
BLT L16
.line 51
LDF R3,R0
CALL INV_F30
BD L17
RND R0
NOP
MPYF R0,R2,R7
*** B L17 ;BRANCH OCCURS
L16:
.line 46
LDI *+FP(2),R2
STI RS,*+FP(2)
LDI R2,RS
.line 47
LDI *+FP(3),R2
STI RC,*+FP(3)
.line 48
LDI *+FP(2),R0
SUBI R0,RS,R1
FLOAT R1,R0
CALL INV_F30
RND R0
SUBI *+FP(3),R2
FLOAT R2,R7
MPYF R0,R7
L17:
.line 53
FLOAT *+FP(3),R6
.line 55
CMPF 0,R7
BGT L22
.line 62
LDI *+FP(2),R4
CMPI RS,R4
BGT L38
SUBI R4,RS,R5
L42:
.line 63
LDI R4,AR2
FIX R6,R2
LDI *+FP(1),R3
CALL _pixel
.line 64
SUBI 1,R5
BGED L42
ADDF R7,R6
NOP
.line 62
ADDI 1,R4
*** BGE L42 ;BRANCH OCCURS
B L38
L22:
.line 56
LDI *+FP(2),R4
CMPI RS,R4
BGT L38
SUBI R4,RS,R5
L41:
.line 57
LDI R4,AR2
FIX R6,R2
LDI *+FP(1),R3
CALL _pixel
.line 58
SUBI 1,R5
BGED L41
ADDF R7,R6
NOP
.line 56
ADDI 1,R4
*** BGE L41 ;BRANCH OCCURS
B L38
L26:
.line 17
CMPI *+FP(2),RS
BGE L28
LDI *+FP(2),R2
STI RS,*+FP(2)
LDI R2,RS
L28:
.line 18
LDI *+FP(2),R4
CMPI RS,R4
BGT L38
SUBI R4,RS,R5
L40:
.line 19
LDI R4,AR2
LDI *+FP(3),R2
LDI *+FP(1),R3
CALL _pixel
.line 18
ADDI 1,R4
SUBI 1,R5
BGE L40
B L38
L32:
.line 13
CMPI RC,R2
BLE L34
STI RC,*+FP(3)
LDI R2,RC
L34:
.line 14
LDI *+FP(3),R4
CMPI RC,R4
BGT L38
SUBI R4,RC,R5
L39:
.line 15
LDI *+FP(2),AR2
LDI R4,R2
LDI *+FP(1),R3
CALL _pixel
.line 14
ADDI 1,R4
SUBI 1,R5
BGE L39
L38:
POP DP
EPI0_2:
.line 71
LDI *-FP(1),R1
LDI *FP,FP
POPF R7
POPF R6
BD R1
POP R5
POP R4
SUBI 5,SP
*** B R1 ;BRANCH OCCURS
.endfunc 89,0000000f0H,3
******************************************************
* UNDEFINED REFERENCES *
******************************************************
.globl INV_F30
.globl _pixel
.end

89
LINE.C Executable file
View File

@ -0,0 +1,89 @@
/* line.c
*
* Copyright (C) 1994 by TV Games, Inc.
* All Rights Reserved
*/
void rectangle(int x1,int y1,int x2,int y2,int color)
{
asm(" PUSH DP");
line(x1,y1,x2,y1,color);
line(x1,y2,x2,y2,color);
line(x1,y1,x1,y2,color);
line(x2,y1,x2,y2,color);
asm(" POP DP");
}
void line(int x1,int y1,int x2,int y2,int color)
{
int i;
float yd,xd;
float x,y;
asm(" PUSH DP");
#define swap(a,b) { int t; t = a; a = b; b = t; }
if (x1 == x2) {
if (y1 > y2) swap(y1,y2);
for (i = y1; i <= y2; i++)
pixel(x1,i,color);
} else if (y1 == y2) {
if (x1 > x2) swap(x1,x2);
for (i = x1; i <= x2; i++)
pixel(i,y1,color);
} else {
xd = (float)((float)(x2-x1)/(float)(y2-y1));
if (xd <= 1 && xd >= -1) {
if (y1 > y2) {
swap(x1,x2);
swap(y1,y2);
xd = (float)((float)(x2-x1)/(float)(y2-y1));
}
x = (float) x1;
if (xd > 0) {
for (i = y1; i <= y2; i++) {
pixel((int)x,i,color);
x += xd;
}
}
else {
for (i = y1; i <= y2; i++) {
pixel((int)x,i,color);
x += xd;
}
}
} else {
if (x1 > x2) {
swap(x1,x2);
swap(y1,y2);
yd = (float)((float)(y2-y1)/(float)(x2-x1));
}
else
yd = (float)((float)(y2-y1)/(float)(x2-x1));
y = (float) y1;
if (yd > 0) {
for (i = x1; i <= x2; i++) {
pixel(i,(int)y,color);
y += yd;
}
}
else {
for (i = x1; i <= x2; i++) {
pixel(i,(int)y,color);
y += yd;
}
}
}
}
asm(" POP DP");
}

BIN
M/CORN.RPD Executable file

Binary file not shown.

BIN
M/H2H.RPD Executable file

Binary file not shown.

BIN
M/HED2HED/BIG2.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/BIG2.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/BIG2.TGA Executable file

Binary file not shown.

BIN
M/HED2HED/CORNPOPS.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/CORNPOPS.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/CORNPOPS.TGA Executable file

Binary file not shown.

BIN
M/HED2HED/HD2HD.GRP Executable file

Binary file not shown.

BIN
M/HED2HED/P1 Executable file

Binary file not shown.

BIN
M/HED2HED/P1.GEO Executable file

Binary file not shown.

27
M/HED2HED/P1.PAL Executable file
View File

@ -0,0 +1,27 @@
PAL
25
0 0 0
115 0 0
115 0 0
148 0 0
156 0 0
148 0 0
156 0 0
189 0 0
206 0 0
214 0 0
189 0 0
206 0 0
222 0 0
206 0 0
239 0 0
214 0 0
222 0 0
247 0 0
255 0 0
255 0 0
239 0 0
247 0 0
255 0 0
255 0 0
255 0 0

BIN
M/HED2HED/P1.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/P1.TGA Executable file

Binary file not shown.

BIN
M/HED2HED/P1A.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/P1A.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/P1TMP.PAL Executable file

Binary file not shown.

BIN
M/HED2HED/P1TMP.TGA Executable file

Binary file not shown.

BIN
M/HED2HED/P2.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/P2.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/P2B.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/P2B.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/REDHD1.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/REDHD1.PTG Executable file

Binary file not shown.

BIN
M/HED2HED/REDHD1.TGA Executable file

Binary file not shown.

BIN
M/HED2HED/YELHD1.GEO Executable file

Binary file not shown.

BIN
M/HED2HED/YELHD1.PTG Executable file

Binary file not shown.

676
MACS.EQU Executable file
View File

@ -0,0 +1,676 @@
*MACS.EQU
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
LDLH .MACRO LONG_VALUE,REG
.DATA
VALUEI? .WORD :LONG_VALUE:
.sect "THECODE"
LDI @VALUEI?,:REG:
.ENDM
LDLFH .MACRO LONG_VALUE,REG
.DATA
VALUEI? .FLOAT :LONG_VALUE:
.sect "THECODE"
LDF @VALUEI?,:REG:
.ENDM
LONGROUT .MACRO
BR jago?
.sect "THECODE"
jago?
.ENDM
END_LONGROUT .MACRO
.text
.ENDM
COLORM .MACRO FLAG,X1,Y1,X2,Y2,PAL
LDI :FLAG:,R0
STI R0,@_ACNTL
LDI :X1:,AR2
LDI :Y1:,R2
LDI :X2:,R3
LDI :Y2:,RC
LDI :PAL:,RS
LDI 0,RE
CALL _rdma
.ENDM
DP_MACROS .set 0 ;1 = ACTIVATE
PTR .MACRO VARIABLE
.const
.globl :VARIABLE:I
:VARIABLE:I .word VARIABLE
.text
.ENDM
ADDAUD .MACRO NUMBER
LDI :NUMBER:,AR2
CALL AUDIT_ADD
.ENDM
ADDFL .MACRO CONSTANT,REG
.data ;sect "THEDATA"
LL? .float :CONSTANT:
.text
ADDF @LL?,:REG:
.ENDM
BCLR .MACRO BIT,REG
LDI 1,R0
LSH :BIT:,R0
ANDN R0,:REG:
.ENDM
BSET .MACRO BIT,REG
LDI 1,R0
LSH :BIT:,R0
OR R0,:REG:
.ENDM
LCALL .MACRO LABEL
PUSH R0
CALL JIJO?
POP R0
BU ENDIT?
l14? .word :LABEL:
JIJO?
PUSH DP
LDP @l14?
LDI @l14?,R0
POP DP
BU R0
ENDIT?
.ENDM
CEILI .MACRO VALUE,REG
CMPI :VALUE:,:REG:
LDIGT :VALUE:,:REG:
.ENDM
CLRC .MACRO
ANDN 1,ST
.ENDM
CLRF .MACRO REG
LDF 0.0,:REG:
.ENDM
CLRI .MACRO REG
SUBI :REG:,:REG:
.ENDM
CLRIM .MACRO MEM
SUBI R0,R0
STI R0,:MEM:
.ENDM
DEC .MACRO REG
SUBI 1,:REG:
.ENDM
DECF .MACRO REG
SUBF 1.0,:REG:
.ENDM
DECM .MACRO MEM
LDI :MEM:,R0
SUBI 1,R0
STI R0,:MEM:
.ENDM
DINT .MACRO
PUSH IE ;disable interrupts
LDI 0,IE ;watch for pipeline conflicts
NOP ;2 NOPS can be replaced with
NOP ;useful instructions
AND 0DFFFh,ST ;turn off GIE.
POP IE
.ENDM
DMA_WT .MACRO REG
LDP @FIFO_STATUS
WTLP? LDI @FIFO_STATUS,:REG:
AND FIFO_STATUS_DMA_ACTIVE,:REG:
BNZ WTLP?
CLRI DP
.ENDM
EINT .MACRO
CALL ENABLEGIE
.ENDM
FIFO_CLRP .MACRO REG
LDP @FIFO_STATUS
wt2? LDI @FIFO_STATUS,:REG:
AND FIFO_STATUS_FIFO_NEMPTY,:REG:
BNZ wt2?
CLRI DP
.ENDM
FIFO_INC .MACRO
LDP @FIFO_INC
LDI @FIFO_INC,R0
CLRI DP
.ENDM
FIFO_WT .MACRO REG
LDP @FIFO_STATUS
wt2? LDI @FIFO_STATUS,:REG:
AND FIFO_STATUS_MAX_FLAG,:REG:
BNZ wt2?
CLRI DP
.ENDM
FLOATP .MACRO MEM,REG
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
LDP :MEM:
.endif
FLOAT :MEM:,:REG:
.ENDM
FLOORF .MACRO VALUE,REG
CMPF :VALUE:,:REG:
LDFLT :VALUE:,:REG:
.ENDM
FLOORI .MACRO VALUE,REG
CMPI :VALUE:,:REG:
LDILT :VALUE:,:REG:
.ENDM
FPGA_WT .MACRO REG
LDP @FSTAT
WT1? LDI @FSTAT,:REG:
BN WT1?
CLRI DP
.ENDM
HARDWTM .MACRO REG
LDP @CPU_WS
LDI HARD_WS,:REG:
STI :REG:,@CPU_WS
CLRI DP
.ENDM
HIGHBITS .MACRO BITS,REG
LSH -(32-:BITS:),:REG:
LSH 32-:BITS:,:REG:
.ENDM
INC .MACRO REG
ADDI 1,:REG:
.ENDM
INCM .MACRO MEM
LDI :MEM:,R0
ADDI 1,R0
STI R0,:MEM:
.ENDM
INCMF .MACRO MEM
LDF :MEM:,R0
ADDF 1.0,R0
STF R0,:MEM:
.ENDM
INCAUD .MACRO NUMBER
LDI :NUMBER:,AR2
CALL AUDIT_INC
.ENDM
INCF .MACRO REG
ADDF 1.0,:REG:
.ENDM
LDIL .MACRO LWORD,REG
LDI :LWORD:>>16,REG
LSH 16,REG
OR :LWORD:&0FFFFH,REG
.ENDM
LDL .MACRO LONG_VALUE,REG
.DATA
VALUEI? .WORD :LONG_VALUE:
.TEXT
LDI @VALUEI?,:REG:
.ENDM
LDLF .MACRO LONG_VALUE,REG
.DATA
VALUEI? .FLOAT :LONG_VALUE:
.TEXT
LDF @VALUEI?,:REG:
.ENDM
LDPI .MACRO MEM,REG
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
LDP :MEM:
.endif
LDI :MEM:,:REG:
.ENDM
LDSP .MACRO STRING,REG
.data
l1? .word l4?
l4? .string ":STRING:",0
.text
LDI @l1?,:REG:
.ENDM
LOCKUP .MACRO
OR 0,ST ;MASK INTERRUPTS
B $
.ENDM
LOWBITS .MACRO BITS,REG
LSH 32-:BITS:,:REG:
LSH -(32-:BITS:),:REG:
.ENDM
LS .MACRO CNT,REG ;SHIFT (LOGICAL)
LSH :CNT:,:REG:
.ENDM
LSA .MACRO CNT,REG ;SHIFT (ARITHMETIC)
ASH :CNT:,:REG:
.ENDM
MPYFL .MACRO VAL,REG
.data
i? .float :VAL:
.text
MPYF @i?,:REG:
.ENDM
ORM .MACRO VAL,MEM
LDI :MEM:,R0
OR :VAL:,R0
STI R0,:MEM:
.ENDM
POPFL .MACRO REG
POPF :REG:
POP :REG:
.ENDM
POPFM .MACRO LIST ;POP FLOATING POINT MULTIPLE
.VAR ITEM
.LOOP
.BREAK ($ISMEMBER(ITEM, LIST) == 0)
POPF ITEM
.ENDLOOP
.ENDM
POPM .MACRO LIST ;POP MULTIPLE
.VAR ITEM
.LOOP
.BREAK ($ISMEMBER(ITEM, LIST) == 0)
POP ITEM
.ENDLOOP
.ENDM
PUSHFL .MACRO REG
PUSH :REG:
PUSHF :REG:
.ENDM
PUSHFM .MACRO LIST ;PUSH FLOATING POINT MULTIPLE
.VAR ITEM
.LOOP
.BREAK ($ISMEMBER(ITEM, LIST) == 0)
PUSHF ITEM
.ENDLOOP
.ENDM
PUSHM .MACRO LIST
.VAR ITEM
.LOOP
.BREAK ($ISMEMBER(ITEM, LIST) == 0)
PUSH ITEM
.ENDLOOP
.ENDM
RANDN .MACRO NUMBER
LDI :NUMBER:,AR2
CALL RANDU0
.ENDM
READADJ .MACRO NUMBER
LDI :NUMBER:,AR2
CALL ADJUSTMENT_READ
.ENDM
READAUD .MACRO NUMBER
LDI :NUMBER:,AR2
CALL AUDIT_READ
.ENDM
RGB .MACRO R,G,B
.word (((:R:>>3)&01Fh)<<10)|(((:G:>>3)&01Fh)<<5)|(((:B:>>3)&01Fh))
.ENDM
RS .MACRO CNT,REG
LSH -:CNT:,:REG:
.ENDM
RSA .MACRO CNT,REG
ASH -:CNT:,:REG:
.ENDM
SETADJ .MACRO NUMBER
LDI :NUMBER:,AR2
CALL ADJUSTMENT_WRITE
.ENDM
SETAUD .MACRO NUMBER
LDI :NUMBER:,AR2
CALL AUDIT_WRITE
.ENDM
SETC .MACRO
OR 1,ST
.ENDM
SOFTWTM .MACRO REG
LDP @CPU_WS
LDI SOFT_WS,:REG:
STI :REG:,@CPU_WS
CLRI DP
.ENDM
SOND1 .MACRO SOND
LDI :SOND:,AR2
CALL ONESND
.ENDM
SONDFX .MACRO SOND
LDI :SOND:,AR2
CALL ONESNDFX
.ENDM
SPTR .MACRO STRING
.sect "THEDATA"
l? .string ":STRING:",0
.text
.word l?
.ENDM
STIM .MACRO VALUE,MEM
LDI :VALUE:,R0
STI R0,:MEM:
.ENDM
STPF .MACRO REG,MEM
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
.endif
STF :REG:,:MEM:
.ENDM
STPI .MACRO REG,MEM
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
.endif
STI :REG:,:MEM:
.ENDM
STPIM .MACRO VALUE,MEM
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
.endif
LDI :VALUE:,R0
STI R0,:MEM:
.ENDM
SUBPI .MACRO MEM,REG
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
.endif
SUBI :MEM:,:REG:
.ENDM
SUBPF .MACRO MEM,REG
.if DP_MACROS
PUSH R0
LDI DP,R0
LDP :MEM:
CMPI R0,DP
BNE $
POP R0
.endif
SUBF :MEM:,:REG:
.ENDM
TEXTIT .MACRO LABEL,X,Y
.DATA
IT? .WORD :LABEL:
.TEXT
LDI :X:,R2
LDI :Y:,R3
LDI @IT?,AR2
CALL _outtextxyc
.ENDM
TEXTITT .MACRO THETEXT,X,Y
.sect "THEDATA"
ITT? .string ":THETEXT:",0
.data
IT? .word ITT?
.TEXT
LDI :X:,R2
LDI :Y:,R3
LDI @IT?,AR2
CALL _outtextxyc
.ENDM
*
*HIGH LEVEL MACROS
*
*IFI IF integer
*IFF IF float
*
*IFRI IF registers integer
*IFRF IF registers float
*
LT EQU 'LT'
GT EQU 'GT'
LE EQU 'LE'
GE EQU 'GE'
EQ EQU 'EQ'
NE EQU 'NE'
IFI .MACRO REG,OP,VALUE,LABEL
CMPI :VALUE:,:REG:
B:OP: :LABEL:
.ENDM
IFF .MACRO REG,OP,VALUE,LABEL
CMPF :VALUE:,:REG:
B:OP: :LABEL:
.ENDM
IFFL .MACRO REG,OP,LONG,LABEL
.data
iffl? .float :LONG:
.text
CMPF @iffl?,:REG:
B:OP: :LABEL:
.ENDM
IFIL .MACRO REG,OP,LONG,LABEL
.data
iffl? .word :LONG:
.text
CMPI @iffl?,:REG:
B:OP: :LABEL:
.ENDM
IFMF .MACRO REG,OP,MEM,LABEL
CMPF :MEM:,:REG:
B:OP: :LABEL:
.ENDM
IFMI .MACRO REG,OP,MEM,LABEL
CMPI :MEM:,:REG:
B:OP: :LABEL:
.ENDM
*----------------------------------------------------------------------------
FBSS .MACRO LABEL,SIZEOF
:LABEL: .usect oncram,:SIZEOF:
.ENDM
fbss .MACRO LABEL,SIZEOF
:LABEL: .usect oncram,:SIZEOF:
.ENDM
pbss .MACRO LABEL,SIZEOF
:LABEL: .usect pbss,:SIZEOF:
.ENDM
lobss .MACRO LABEL,SIZEOF
:LABEL: .usect lobss,:SIZEOF:
.ENDM
hibss .MACRO LABEL,SIZEOF
:LABEL: .usect hibss,:SIZEOF:
.ENDM
phibss .MACRO LABEL,SIZEOF
:LABEL: .usect phibss,:SIZEOF:
.ENDM
romdata .MACRO
.sect "THEDATA"
.ENDM
diagtext .MACRO
.sect "DIAGTXT"
.ENDM
SLT EQU 'LT'
SGT EQU 'GT'
SLE EQU 'LE'
SGE EQU 'GE'
SEQ EQU 'EQ'
SNE EQU 'NE'
SC EQU 'C'
SNC EQU 'NC'
SZ EQU 'Z'
SNZ EQU 'NZ'
SU EQU 'U'
LOCKON .MACRO UCASE
.if PRINTER
CALL:UCASE: PRINTER_LOG
.endif
.if DEBUG
B:UCASE: $
.endif
.ENDM
SETDP .MACRO
SUBI DP,DP
.ENDM
*
*SYMBOLIC LOCKON
*
SLOCKON .MACRO UCASE,UTEXT
.if PRINTER
.data
ii? .word i?
i? .string ":UTEXT:",13,0
.text
B:UCASE: DOIT?
BU DONTDO?
DOIT? PUSH ST
ADDI 1,SP ;need this for later...
PUSH R0
PUSH DP
LDP @ii?
LDI @ii?,R0
CALL PRINTER_LOG_SYMBOLIC
DONTDO?
.endif
.if DEBUG
B:UCASE: $
.endif
.ENDM
*
*
ERRON .MACRO UCASE,EID
.if DEBUG
B:UCASE: $
.endif
B:UCASE: DOIT?
BU DONTDO?
DOIT?
PUSH ST
PUSH R0
LDI :EID:,R0
CALL ERROR_LOG
POP R0
POP ST
DONTDO?
.ENDM

Some files were not shown because too many files have changed in this diff Show More