251 lines
3.8 KiB
NASM
Executable File
251 lines
3.8 KiB
NASM
Executable File
.FILE "TOTALA.ASM"
|
|
*----------------------------------------------------------------------------
|
|
*TOTALA.ASM
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
.include MACS.EQU
|
|
.include VUNIT.EQU
|
|
.include GLOBALS.EQU
|
|
.include PALL.EQU
|
|
|
|
|
|
NOFIFO .set 0
|
|
|
|
AIVI .word _AIVI
|
|
|
|
.bss _ACNTL,1
|
|
.bss _ACMAP,1
|
|
.bss _ARPS,12
|
|
.bss _AIVI,4
|
|
.bss _ADDRL,1
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
* rdma(x1,y1,x2,y2,palette,addr)
|
|
*
|
|
*PARAMETERS
|
|
* AR2 x1
|
|
* R2 y1
|
|
* R3 x2
|
|
* RC y2
|
|
* RS palette
|
|
* RE addr
|
|
*
|
|
*
|
|
_rdma:
|
|
STI RS,@_ACMAP
|
|
STI RE,@_ADDRL
|
|
|
|
|
|
STI AR2,@_ARPS+0 ;AX
|
|
STI AR2,@_ARPS+9 ;DX
|
|
STI R2,@_ARPS+1 ;AY
|
|
STI R2,@_ARPS+4 ;BY
|
|
STI R3,@_ARPS+3 ;BX
|
|
STI R3,@_ARPS+6 ;CX
|
|
STI RC,@_ARPS+7 ;CY
|
|
STI RC,@_ARPS+10 ;DY
|
|
|
|
;BU _stuff_fpga
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*COPY THE CONTENTS OF _ACNTL TO _ADDRL INTO THE FIFO
|
|
*
|
|
_stuff_fpga:
|
|
PUSH AR0
|
|
PUSH AR1
|
|
PUSH R0
|
|
PUSH R1
|
|
PUSH RC
|
|
PUSH RS
|
|
PUSH RE
|
|
|
|
.if STATISTICS
|
|
LDI @ST_POLYGONS,R0
|
|
INC R0
|
|
STI R0,@ST_POLYGONS
|
|
.endif
|
|
|
|
|
|
LDP @FIFO_STATUS
|
|
STUFFWT LDI @FIFO_STATUS,R0
|
|
AND FIFO_STATUS_MAX_FLAG,R0
|
|
BNZ STUFFWT
|
|
SETDP
|
|
|
|
FIFO_WT R0
|
|
LDP @FIFO_ADDR,AR0
|
|
LS 16,AR0
|
|
|
|
LDI @ASHADOW,AR1
|
|
LDI *AR1++,R0
|
|
|
|
STI R0,*AR0
|
|
|| LDI *AR1++,R0
|
|
|
|
STI R0,*AR0
|
|
|
|
LDI 3,RC
|
|
RPTB LP1
|
|
LDI *AR1++,R0 ;x
|
|
STI R0,*AR0
|
|
LDI *AR1++(2),R0 ;y
|
|
LP1 STI R0,*AR0
|
|
|
|
LDI *AR1++,R0 ;IVs
|
|
STI R0,*AR0
|
|
|| LDI *AR1++,R0
|
|
STI R0,*AR0
|
|
|| LDI *AR1++,R0
|
|
STI R0,*AR0
|
|
|| LDI *AR1++,R0
|
|
STI R0,*AR0
|
|
|| LDI *AR1++,R0 ;addr
|
|
STI R0,*AR0
|
|
|
|
LDP @FIFO_INC
|
|
LDI @FIFO_INC,R0
|
|
SETDP
|
|
|
|
CLRI AR3
|
|
LDI *AR3,R0
|
|
|
|
POP RE
|
|
POP RS
|
|
POP RC
|
|
POP R1
|
|
POP R0
|
|
POP AR1
|
|
POP AR0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*BITBLIT MODEL AS 2D IMAGE
|
|
*
|
|
*LOCKUP ON
|
|
*
|
|
*
|
|
*
|
|
*Internal vertices are used to get the image parameters
|
|
*
|
|
*PARAMETERS
|
|
* AR2 MODEL POINTER
|
|
* R2 POS X
|
|
* R3 POS Y
|
|
* R4 CNTL
|
|
*
|
|
* BLTMOD2D_NOPAL
|
|
* RS PAL
|
|
*
|
|
* .word nV-1|(nP-1)<<16
|
|
* {
|
|
* .word x,-y,z
|
|
* } * nV
|
|
* {
|
|
* .word control|pal<<16
|
|
* .word v1|v2<<8|v3<<16|v4<<24
|
|
* .word iv01,iv23
|
|
* .word addr
|
|
* } * NUM_POLYGONS
|
|
*
|
|
* This is expected:
|
|
*
|
|
* Offset Contents
|
|
* 0 radius
|
|
* 1 nV|nP == 3
|
|
* 2 [x y z]
|
|
* 4 [x y z]
|
|
* 6 [x y z]
|
|
* 8 [x y z]
|
|
* 10 cntl|pal
|
|
* 11 verts
|
|
* 12 iv01
|
|
* 13 iv23
|
|
* 14 addr
|
|
*
|
|
*
|
|
BLTMOD2D_NOPAL:
|
|
PUSHM R0,R1,R2,R3,R4,R5,R6,R7
|
|
PUSHM AR0,AR1,AR2,AR3
|
|
|
|
BU SKIPPALENTRY
|
|
|
|
BLTMOD2D:
|
|
PUSHM R0,R1,R2,R3,R4,R5,R6,R7
|
|
PUSHM AR0,AR1,AR2,AR3
|
|
|
|
LDI *+AR2(10),AR0 ;IMAGE PAL
|
|
RS 16,AR0
|
|
ADDI @_PALLISTI,AR0
|
|
LDI *AR0,RS
|
|
RS 8,RS
|
|
|
|
SKIPPALENTRY
|
|
STI R4,@_ACNTL
|
|
|
|
.if DEBUG
|
|
LDI *+AR2(1),R0
|
|
CMPI 3,R0
|
|
BNE $ ;it should have 4 vertices and 1 polygon
|
|
.endif
|
|
|
|
|
|
LDI -16,R0
|
|
LDI *+AR2(12),R4
|
|
STI R4,@_AIVI
|
|
LSH R0,R4,R5
|
|
STI R5,@_AIVI+1
|
|
|
|
LDI *+AR2(13),R6
|
|
STI R6,@_AIVI+2
|
|
LSH R0,R6,R7
|
|
STI R7,@_AIVI+3
|
|
|
|
LDI *+AR2(14),RE ;IMAGE ADDR
|
|
|
|
|
|
PUSH R3
|
|
AND 0FFh,R4
|
|
AND 0FFh,R6
|
|
LDI R2,AR2
|
|
SUBI R4,R6 ;find xsize
|
|
ADDI R6,R2,R3 ;add xsize to dest
|
|
|
|
POP R2
|
|
RS 8,R7
|
|
AND 0FFh,R7 ;find y size
|
|
ADDI R7,R2,R0
|
|
LDI R0,RC
|
|
|
|
|
|
CALL _rdma
|
|
|
|
POPM AR3,AR2,AR1,AR0
|
|
POPM R7,R6,R5,R4,R3,R2,R1,R0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
BLTMOD2D_DS:
|
|
PUSHM R2,R3,R4
|
|
ADDI 2,R2
|
|
ADDI 2,R3
|
|
LDI TM|ZS|NZR,R4
|
|
CALL BLTMOD2D
|
|
POPM R4,R3,R2
|
|
CALL BLTMOD2D
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.END
|