几何变换引擎(GTE)
几何变换引擎(GTE)是PSX全部3D计算的核心。GTE可以进行向量和矩阵操作,视角变换,颜色均衡等等。它比CPU进行这些操作快得多,作为PSX的第二个协处理器,没有分配物理地址内存,所有的控制通过特殊指令完成。
基本算法
在3D空间中一个点(顶点)的描述是用一个向量[X,Y,Z]。在GTE操作中,有两种向量,一种是变长度的,另一种是1.0单元长度,叫做法向量。前者用来描述3D空间的一个位置和平移,第二个用来描述方向。
顶点的旋转是进行顶点向量和旋转矩阵的乘法。旋转矩阵是3×3的矩阵包含了3个正交法向量(它实际上是一个矩阵,描述了顶点所在的坐标系统和全局坐标系统的关系)。这个矩阵来自旋转角度,如下所示:
sn=sin(n),cn=cos(n)
绕X轴旋转角度A:
| |1
| 0
| 0|
|
| |0
| cA
| -sA|
|
| |0
| sA
| cA|
|
绕Y轴旋转角度B:
| |cB
| 0
| sB|
|
| |0
| 1
| 0|
|
| |-sB
| 0
| cB|
|
绕Z轴旋转角度C:
| |cC
| -sC
| 0|
|
| |sC
| cC
| 0|
|
| |0
| 0
| 1|
|
绕多个轴旋转可以通过这些矩阵相乘完成,注意相乘的顺序非常重要。GTE没有sin或者cos函数,所以这些计算要通过CPU完成。平移是简单的两个向量相加,在当前坐标系中重定位顶点,当然,顶点平移和旋转的顺序也是很重要的。
| RTPS/RTPT
| 旋转、平移和视角转换
这两个函数对1个或者3个顶点同时进行最终的3D计算。这些点先乘以旋转矩阵R再加上平移矩阵TR,最后应用一个视角转换,生成2D屏幕坐标。它也返回一个插值值用在各种深度化指令中。
|
| MVMVA
| 矩阵和向量乘法和加法
乘以一个向量和一个旋转矩阵或者光源矩阵或者颜色矩阵,然后加上平移向量或者背景颜色向量
|
| DCPL
| 深度化光源颜色
先从光源向量(一个平面的法向量乘以光源矩阵后限制到零)和一个提供的RGB值计算出一个颜色。然后通过在远颜色向量和新得到的颜色之间插值来进行深度化。
|
| DPCS/DPCT
| 单色/3色深度化
在一个颜色和远颜色向量之间插值对1个或者3个颜色进行深度化。
|
| INTPL
| 插值
在一个向量和远颜色向量之间插值
|
| SQR
| 平方
计算一个向量的平方
|
| NCS/CNT
| 法向颜色
从一个点或平面的法向和光源和颜色计算一个颜色。法向参考的平面或点的基本颜色认为是白色
|
| NCDS/NCDT
| 法向颜色深度化
和NCS/NCT类似,但是同时进行深度化(像DPCS/DPCT)
|
| NCCS/NCCT
| 和NCS/NCT类似,但是平面或点的基本颜色也计算在内
|
| CDP
| 从光源向量(基本颜色当成白色)计算一个颜色和进行深度化(像DPCS)
|
| CC
| 从光源向量和一个基本颜色计算一个颜色
|
| NCLIP
| 计算3个2D点的外积(例如投影后定义一个平面的3个顶点)
3个顶点相对于虚拟点应该按顺时针储存,这样如果我们面对平面的背面,函数的结果是负值
|
| AVSZ3/AVSZ4
| 累加3或者4个Z值,然后乘以一个固定点的值。这个值通常是经过挑选的,这样函数可以返回这些Z值的平均值(通常还要用2或者4去除一下,以便加到顺序表OT)
|
| OP
| 计算两个向量的外积
|
| GPF
| 两个向量相乘。返回值作为24位RGB值
|
| GPL
| 一个向量乘以一个标量后加到另一个向量。返回值作为24位RGB值
|
CPU有6个特别的针对GTE寄存器的装入和储存指令,一个指令用来向协处理器下达命令
| rt
| CPU寄存器0-31
|
| gd
| GTE数据寄存器0-31
|
| gc
| GTE控制寄存器0-31
|
| imm
| 16位立即数
|
| base
| CPU寄存器0-31
|
| imm(base)
| base+imm指向的地址
|
| b25
| 25位字长数据段
|
| LWC2 gd,imm(base)
| 储存imm(base)的值到GTE数据寄存器gd
|
| SWC2 gd,imm(base)
| 储存GTE数据寄存器到imm(base)
|
| MTC2 rt,gd
| 储存寄存器rt到GTE数据寄存器gd
|
| MFC2 rt,gd
| 储存GTE数据寄存器gd到寄存器rt
|
| CTC2 rt,gc
| 储存寄存器rt到GTE控制寄存器gc
|
| CFC2 rt,gc
| 储存GTE控制寄存器gc到寄存器rt
|
| COP2 b25
| 执行GTE命令
|
所有访问该寄存器的GTE命令和操作,GTE装入和储存指令有2个指令的延迟。
对GTE编程
使用GTE前要先打开它,在系统控制协处理器(cop0)的状态寄存器中分配了第30位给GTE。在使用任何GTE指令前,先要设置它。
GTE指令和函数不应该用在:跳转和分支的延迟中、事件处理和中断中。
如果在当前GTE命令未完成前读取GTE寄存器或者执行GTE命令,CPU会保持它知道指令完成。每个GTE指令所需的周期数在命令列表中显示。
GTE有32个数据寄存器和32个控制寄存器,每个都是32字长。控制寄存器通称为Cop2C,数据寄存器称为Cop2D。下表描述了他们的用法。
| 控制寄存器Cop2C
|
| 序号
| 名称
| 描述
|
| 0
| R11R12
| 旋转矩阵元素11,12
|
| 1
| R13R21
| 旋转矩阵元素13,21
|
| 2
| R22R23
| 旋转矩阵元素22,23
|
| 3
| R31R32
| 旋转矩阵元素31,32
|
| 4
| R33
| 旋转矩阵元素33
|
| 5
| TRX
| 旋转向量X
|
| 6
| TRY
| 旋转向量Y
|
| 7
| TRZ
| 旋转向量Z
|
| 8
| L11L12
| 光源矩阵元素11,12
|
| 9
| L13L21
| 光源矩阵元素13,21
|
| 10
| L22L23
| 光源矩阵元素22,23
|
| 11
| L31L32
| 光源矩阵元素31,32
|
| 12
| L33
| 光源矩阵元素33
|
| 13
| RBK
| 背景颜色红色分量
|
| 14
| BBK
| 背景颜色蓝色分量
|
| 15
| GBK
| 背景颜色绿色分量
|
| 16
| LR1LR2
| 光源颜色矩阵源1和2红色分量
|
| 17
| LR3LG1
| 光源颜色矩阵源3红色,1绿色分量
|
| 18
| LG2LG3
| 光源颜色矩阵源2和3绿色分量
|
| 19
| LB1LB2
| 光源颜色矩阵源1和2蓝色分量
|
| 20
| LB3
| 光源颜色矩阵源3蓝色分量
|
| 21
| RFC
| 远颜色红色分量
|
| 22
| GFC
| 远颜色绿色分量
|
| 23
| BFC
| 远颜色蓝色分量
|
| 24
| OFX
| 屏幕偏移X
|
| 25
| OFY
| 屏幕偏移Y
|
| 26
| H
| 投影平面距离
|
| 27
| DQA
| 深度查询参数A(系数)
|
| 28
| DQB
| 深度查询参数B(偏移)
|
| 29
| ZSF3
| Z3平均缩放因子(通常是1/3)
|
| 30
| ZSF4
| Z4平均缩放因子(通常是1/4)
|
| 31
| FLAG
| 返回任何计算错误
|
GTE使用带符号定点寄存器进行运算,下面是寄存器字长描述。
| R11R12、R13R21、R22R23、R31R32
|
| 31
0
|
| R11、R13、R22、R31
| R12、R21、R23、R32
|
| 符号
| 整数部分
| 小数部分
| 符号
| 整数部分
| 小数部分
|
| 1
| 3
| 12
| 1
| 3
| 12
|
| R33
|
| 31
0
|
| 0
| R33
|
|
| 符号
| 整数部分
| 小数部分
|
| 16
| 1
| 3
| 12
|
| TRX、TRY、TRZ
|
| 31
0
|
| 符号
| 整数部分
|
| 1
| 0
|
| L11L12、L13L21、L22L23、L31L32
|
| 31
0
|
| L11、L13、L22、L31
| L12、L21、L23、L32
|
| 符号
| 整数部分
| 小数部分
| 符号
| 整数部分
| 小数部分
|
| 1
| 3
| 12
| 1
| 3
| 12
|
| L33
|
| 31
0
|
| 0
| L33
|
|
| 符号
| 整数部分
| 小数部分
|
| 16
| 1
| 3
| 12
|
| RBK、GBK、BBK
|
| 31
0
|
| 符号
| 整数部分
| 小数部分
|
| 1
| 19
| 12
|
| LR1LR2、LR3LG1、LG2LG3、LB1LB2
|
| 31
0
|
| LR1、LR3、LG2、LB1
| LR2、LG1、LG3、LB2
|
| 符号
| 整数部分
| 小数部分
| 符号
| 整数部分
| 小数部分
|
| 1
| 3
| 12
| 1
| 3
| 12
|
| LB3
|
| 31
0
|
| 0
| LB3
|
|
| 符号
| 整数部分
| 小数部分
|
| 16
| 1
| 3
| 12
|
| RFC、GFC、BFC
|
| 31
0
|
| 符号
| 整数部分
| 小数部分
|
| 1
| 27
| 4
|
| OFX、OFY
|
| 31
0
|
| 符号
| 整数部分
| 小数部分
|
| 1
| 15
| 16
|
| DQA、DQB
|
| 31
0
|
| 0
| DQA
|
|
| 符号
| 整数部分
| 小数部分
|
| 16
| 1
| 7
| 8
|
| ZF3、ZF4
|
| 31
0
|
| 0
| ZF3
|
|
| 符号
| 整数部分
| 小数部分
|
| 16
| 1
| 3
| 12
|
| 标志寄存器
|
| 位
| 标志
|
| 31
| 第30-23、18-13位的逻辑和
|
| 30
| 计算测试结果#1溢出(大于2^43)
|
| 29
| 计算测试结果#2溢出(大于2^43)
|
| 28
| 计算测试结果#3溢出(大于2^43)
|
| 27
| 计算测试结果#1下溢出(小于-2^43)
|
| 26
| 计算测试结果#2下溢出(小于-2^43)
|
| 25
| 计算测试结果#3下溢出(小于-2^43)
|
| 24
| 限制器A1超出范围(小于0,或者小于-2^15,或者大于2^15)
|
| 23
| 限制器A2超出范围(小于0,或者小于-2^15,或者大于2^15)
|
| 22
| 限制器A3超出范围(小于0,或者小于-2^15,或者大于2^15)
|
| 21
| 限制器B1超出范围(小于0,或者大于2^8)
|
| 20
| 限制器B2超出范围(小于0,或者大于2^8)
|
| 19
| 限制器B3超出范围(小于0,或者大于2^8)
|
| 18
| 限制器C超出范围(小于0,或者大于2^16)
|
| 17
| 除法溢出(商大于等于2.0)
|
| 16
| 计算测试结果#4溢出(大于2^43)
|
| 15
| 计算测试结果#4下溢出(小于-2^43)
|
| 14
| 限制器D1超出范围(小于-2^10,或者大于2^10)
|
| 13
| 限制器D2超出范围(小于-2^10,或者大于2^10)
|
| 12
| 限制器E超出范围(小于0,或者大于2^12)
|
| 数据寄存器Cop2D
|
| 序号
| 名字
| 读/写
| 31 16
| 15 0
| 定点数格式
| 描述
|
| 0
| VXY0
| R/W
| VY0
| VX0
| 1,3,12或者1,15,0
| 向量0的X和Y
|
| 1
| VZ0
| R/W
| 0
| VZ0
| 1,3,12或者1,15,0
| 向量0的Z
|
| 2
| VXY1
| R/W
| VY1
| VX1
| 1,3,12或者1,15,0
| 向量1的X和Y
|
| 3
| VZ1
| R/W
| 0
| VZ1
| 1,3,12或者1,15,0
| 向量1的Z
|
| 4
| VXY2
| R/W
| VY2
| VX2
| 1,3,12或者1,15,0
| 向量2的X和Y
|
| 5
| VZ2
| R/W
| 0
| VZ2
| 1,3,12或者1,15,0
| 向量2的Z
|
| 6
| RGB
| R/W
| Code,R
| G,B
| 每个8位
| RGB值,Code也传送但是不用在计算中
|
| 7
| OTZ
| R
| 0
| OTZ
| 0,15,0
| Z平均值
|
| 8
| IR0
| R/W
| 符号
| IR0
| 1,3,12
| 立即数0,格式可能不同
|
| 9
| IR1
| R/W
| 符号
| IR1
| 1,3,12
| 立即数1,格式可能不同
|
| 10
| IR2
| R/W
| 符号
| IR2
| 1,3,12
| 立即数2,格式可能不同
|
| 11
| IR3
| R/W
| 符号
| IR3
| 1,3,12
| 立即数3,格式可能不同
|
| 12
| SXY0
| R/W
| SX0
| SY0
| 1,15,0
| 屏幕XY坐标FIFO(注1)
|
| 13
| SXY1
| R/W
| SX1
| SY1
| 1,15,0
| 屏幕XY坐标FIFO(注1)
|
| 14
| SXY2
| R/W
| SX2
| SY2
| 1,15,0
| 屏幕XY坐标FIFO(注1)
|
| 15
| SXYP
| R/W
| SXP
| SYP
| 1,15,0
| 屏幕XY坐标FIFO(注1)
|
| 16
| SZ0
| R/W
| 0
| SZ0
| 0,16,0
| 屏幕Z FIFO(注1)
|
| 17
| SZ1
| R/W
| 0
| SZ1
| 0,16,0
| 屏幕Z FIFO(注1)
|
| 18
| SZ2
| R/W
| 0
| SZ2
| 0,16,0
| 屏幕Z FIFO(注1)
|
| 19
| SZ3
| R/W
| 0
| SZ3
| 0,16,0
| 屏幕Z FIFO(注1)
|
| 20
| RGB0
| R/W
| CD0,B0
| G0,R0
| 每个8位
| 特征颜色FIFO(注1)
|
| 21
| RGB1
| R/W
| CD1,B1
| G1,R0
| 每个8位
| 特征颜色FIFO(注1)
|
| 22
| RGB2
| R/W
| CD2,B2
| G2,R0
| 每个8位
| 特征颜色FIFO(注1),CD2是当前执行函数的位图案
|
| 23
| RES1
| -
| -
| -
| -
| 禁止
|
| 24
| MAC0
| R/W
| MAC0
| 1,31,0
| 乘积之和0
|
|
| 25
| MAC1
| R/W
| MAC1
| 1,31,0
| 乘积之和1
|
|
| 26
| MAC2
| R/W
| MAC2
| 1,31,0
| 乘积之和2
|
|
| 27
| MAC3
| R/W
| MAC3
| 1,31,0
| 乘积之和3
|
|
| 28
| IRGB
| W
| 0
| IB,IG,IR
| 注2
| 注2
|
| 29
| ORGB
| R
| 0
| OB,OG,OR
| 注3
| 注3
|
| 30
| LZCS
| W
| LZCS
| 1,31,0
| 源数据前导0计数(注4)
|
|
| 31
| LZCR
| R
| LZCR
| 6,6,0
| 结果前导0计数(注4)
|
|
注1:SXYx,SZx和RGBx是FIFO寄存器,最后计算的结果存在最后的寄存器,如果得到一个新的SXY值,下面的事情将会发生:
SXY0=SXY1
SXY1=SXY2
SXY2=SXYP
SXYP=结果
注2:
| IRGB
|
| 0
| R
| G
| B
|
| 31 15
| 14 10
| 9 5
| 4 0
|
当向IRGB写一个值时,发生下面的事情:
IR1=IR格式转换到(1,11,4)
IR2=IG格式转换到(1,11,4)
IR3=IB格式转换到(1,11,4)
注3:
| IRGB
|
| 0
| R
| G
| B
|
| 31 15
| 14 10
| 9 5
| 4 0
|
当向IRGB写一个值时,发生下面的事情:
IR=(IR1>>7)&0x1F
IG=(IR2>>7)&0x1F
IB=(IR3>>7)&0x1F
注4:
如果LZCS是正数,读取LZCR返回LZCS的前导0,如果是负数,返回前导1。
这节描述各种GTE函数的实际进行的计算。第一行是函数的名字、周期数和简要描述,第二行包含了任何需要输入到操作码的字段,第三行是实际操作码。在列表的最后查看各字段和它们的描述。然后是一个需要输入的各个寄存器列表和输出的寄存器列表。再然后是初始化函数后进行的计算,左边格式字段是数据存放格式,右边格式字段是计算进行所需的格式。在计算的某时刻,会进行一些检查和限制,结果存在标志寄存器中,见前面的表。下面计算表中第二列内方括号的内容表示被前面的限制符限制,附加的限制标识器表示数值如果超出了范围就被限制到下限或上限。
| 名称
| 周期
| 命令
| 描述
|
| RTPS
| 15
| cop2 0x0180001
| 视角转换
|
| 字段
| 无
|
| 输入
|
| V0
| 转换向量
| 1,15,0
|
| R
| 旋转矩阵
| 1,3,12
|
| TR
| 平移向量
| 1,31,0
|
| H
| 视平面距离
| 0,16,0
|
DQA
DQB
| 深度查询插值值
| 1,7,8
|
OFX
OFY
| 屏幕平移值
| 1,15,16
|
| 输出
|
| SXY FIFO
| 屏幕XY坐标(短)
| 1,15,0
|
| SZ FIFO
| 屏幕Z坐标(短)
| 0,16,0
|
| IR0
| 深度查询插值值
| 1,3,12
|
| IR1
| 屏幕X(短)
| 1,15,0
|
| IR2
| 屏幕Y(短)
| 1,15,0
|
| IR3
| 屏幕Z(短)
| 1,15,0
|
| MAC1
| 屏幕X(长)
| 1,31,0
|
| MAC2
| 屏幕Y(长)
| 1,31,0
|
| MAC3
| 屏幕Z(长)
| 1,31,0
|
| 计算
|
| 1,31,0
| MAC1=A1[TRX + R11*VX0 +
R12*VY0 + R13*VZ0]
| 1,31,12
|
| 1,31,0
| MAC2=A2[TRY + R21*VX0 +
R22*VY0 + R23*VZ0]
| 1,31,12
|
| 1,31,0
| MAC3=A3[TRZ + R31*VX0 +
R32*VY0 + R33*VZ0]
| 1,31,12
|
| 1,15,0
| IR1= Lm_B1[MAC1]
| 1,31,0
|
| 1,15,0
| IR2= Lm_B2[MAC2]
| 1,31,0
|
| 1,15,0
| IR3= Lm_B3[MAC3]
| 1,31,0
|
|
| SZ0<-SZ1<-SZ2<-SZ3
| 1,31,0
|
| 0,16,0
| SZ3= Lm_D(MAC3)
|
|
|
| SX0<-SX1<-SX2,
SY0<-SY1<-SY2
|
|
| 1,15,0
| Lm_G1[F[OFX + IR1*(H/SZ)]]
| 1,27,16
|
| 1,15,0
| SY2= Lm_G2[F[OFY +
IR2*(H/SZ)]]
|
|
| 1,31,0
| MAC0= F[DQB + DQA * (H/SZ)]
| 1,19,24
|
| 1,15,0
| IR0= Lm_H[MAC0]
| 1,31,0
|
| 注:Z值下限为0.5×H,对于更小的Z值,你要自己写程序。
|
| 名称
| 周期
| 命令
| 描述
|
| RTPT
| 23
| cop2 0x0280030
| 3点视角转换
|
| 字段
| 无
|
| 输入
|
V0
V1
V2
| 转换向量
| 1,15,0
|
| R
| 旋转矩阵
| 1,3,12
|
| TR
| 平移向量
| 1,31,0
|
| H
| 视平面距离
| 0,16,0
|
DQA
DQB
| 深度查询插值值
| 1,7,8
|
OFX
OFY
| 屏幕平移值
| 1,15,16
|
| 输出
|
| SXY FIFO
| 屏幕XY坐标(短)
| 1,15,0
|
| SZ FIFO
| 屏幕Z坐标(短)
| 0,16,0
|
| IR0
| 深度查询插值值
| 1,3,12
|
| IR1
| 屏幕X(短)
| 1,15,0
|
| IR2
| 屏幕Y(短)
| 1,15,0
|
| IR3
| 屏幕Z(短)
| 1,15,0
|
| MAC1
| 屏幕X(长)
| 1,31,0
|
| MAC2
| 屏幕Y(长)
| 1,31,0
|
| MAC3
| 屏幕Z(长)
| 1,31,0
|
| 名称
| 周期
| 命令
| 描述
|
| MVMVA
| 8
| cop2 0x0400012
| 向量乘以矩阵加上向量
|
| 字段
| sf,mx,v,cv,lm
|
| 输入
|
| V0/V1/V2/IR
| 向量V0,V1,V2或者[IR1,IR2,IR3]
|
|
| R/LLM/LCM
| 旋转、光或者颜色矩阵
| 1,3,12
|
| TR/BK
| 平移或者背景颜色向量
|
|
| 输出
|
| [IR1,IR2,IR3]
| 短向量
|
|
| [MAC1,MAC2,MAC3]
| 长向量
|
|
| 计算
|
MX=mx指定的矩阵
V =v 指定的矩阵
CV=cv指定的矩阵
MAC1=A1[CV1 + MX11*V1 +
MX12*V2 + MX13*V3]
MAC2=A2[CV2 + MX21*V1 + MX22*V2 + MX23*V3]
MAC3=A3[CV3 + MX31*V1 + MX32*V2 + MX33*V3]
IR1=Lm_B1[MAC1]
IR2=Lm_B2[MAC2]
IR3=Lm_B3[MAC3]
注,cv字段允许选择远颜色向量,但是GTE不能正确加这个向量
|
| 名称
| 周期
| 命令
| 描述
|
| DPCL
| 8
| cop2 0x0680029
| 深度化颜色光源
|
| 字段
| 无
|
| 输入
|
| RGB
| 主颜色。 R,G,B,CODE
| 0,8,0
|
| IR0
| 插值值
| 1,3,12
|
| [IR1,IR2,IR3]
| 本地颜色向量
| 1,3,12
|
| CODE
| 由RGB得到的颜色值 CODE
| 0,8,0
|
| FC
| 远颜色
| 1,27,4
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算
|
| 1,27,4
| MAC1=A1[R*IR1 + IR0*(Lm_B1[RFC
- R * IR1])]
| 1,27,16
|
| 1,27,4
| MAC2=A2[G*IR2 + IR0*(Lm_B1[GFC
- G * IR2])]
| 1,27,16
|
| 1,27,4
| MAC3=A3[B*IR3 + IR0*(Lm_B1[BFC - B * IR3])]
| 1,27,16
|
| 1,11,4
| IR1= Lm_B1[MAC1]
| 1,27,4
|
| 1,11,4
| IR2= Lm_B2[MAC2]
| 1,27,4
|
| 1,11,4
| IR3= Lm_B3[MAC3]
| 1,27,4
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| DPCS
| 8
| cop2 0x0780010
| 深度化
|
| 字段
| 无
|
| 输入
|
| IR0
| 插值值
| 1,3,12
|
| RGB
| 颜色。 R,G,B,CODE
| 0,8,0
|
| FC
| 远颜色 RFC,GFC,BFC
| 1,27,4
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算
|
| 1,27,4
| MAC1=A1[(R + IR0*(Lm_B1[RFC -
R])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC2=A2[(G + IR0*(Lm_B1[GFC -
G])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC3=A3[(B + IR0*(Lm_B1[BFC -
B])]
| 1,27,16 lm=0
|
| 1,11,4
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=0
|
| 1,11,4
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=0
|
| 1,11,4
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=0
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| DPCT
| 17
| cop2 0x0F8002A
| 深度化颜色RGB0,RGB1,RGB2
|
| 字段
| 无
|
| 输入
|
| IR0
| 插值值
| 1,3,12
|
| RGB0,RGB1,RGB2
| RGB FIFO中的颜色。 Rn,Gn,Bn,CDn
| 0,8,0
|
| FC
| 远颜色 RFC,GFC,BFC
| 1,27,4
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算
|
| 1,27,4
| MAC1=A1[R0+ IR0*(Lm_B1[RFC -
R0])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC2=A2[G0+ IR0*(Lm_B1[GFC -
G0])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC3=A3[B0+ IR0*(Lm_B1[BFC -
B0])]
| 1,27,16 lm=0
|
| 1,11,4
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=0
|
| 1,11,4
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=0
|
| 1,11,4
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=0
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 执行这个计算3次,所有3个RGB颜色都被深度化RGB颜色替换
|
| 名称
| 周期
| 命令
| 描述
|
| INTPL
| 8
| cop2 0x0980011
| 向量和远颜色插值
|
| 字段
| 无
|
| 输入
|
| [IR1,IR2,IR3]
| 向量
| 1,3,12
|
| IR0
| 插值值
| 1,3,12
|
| CODE
| 由RGB得到的颜色。 CODE
| 0,8,0
|
| FC
| 远颜色 RFC,GFC,BFC
| 1,27,4
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算
|
| 1,27,4
| MAC1=A1[IR1 + IR0*(Lm_B1[RFC -
IR1])]
| 1,27,16
|
| 1,27,4
| MAC2=A2[IR2 + IR0*(Lm_B1[GFC -
IR2])]
| 1,27,16
|
| 1,27,4
| MAC3=A3[IR3 + IR0*(Lm_B1[BFC -
IR3])]
| 1,27,16
|
| 1,11,4
| IR1= Lm_B1[MAC1]
| 1,27,4
|
| 1,11,4
| IR2= Lm_B2[MAC2]
| 1,27,4
|
| 1,11,4
| IR3= Lm_B3[MAC3]
| 1,27,4
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| SQR
| 5
| cop2 0x0A00428
| 向量平方
|
| 字段
| sf
|
| 输入
|
| [IR1,IR2,IR3]
| 向量
| 1,15,0或者1,3,12
|
| 输出
|
| [IR1,IR2,IR3]
| 向量^2
| 1,15,0或者1,3,12
|
| [MAC1,MAC2,MAC3]
| 向量^2
| 1,15,0或者1,3,12
|
| 计算:左边格式sf=0,右边格式sf=1
|
| 1,31,0或者1,19,12
| MAC1=A1[IR1*IR1]
| 1,43,0或者1,31,12
|
| 1,31,0或者1,19,12
| MAC2=A2[IR2*IR2]
| 1,43,0或者1,31,12
|
| 1,31,0或者1,19,12
| MAC3=A3[IR3*IR3]
| 1,43,0或者1,31,12
|
| 1,15,0或者1,3,12
| IR1= Lm_B1[MAC1]
| 1,31,0或者1,19,12
lm=1
|
| 1,15,0或者1,3,12
| IR2= Lm_B2[MAC2]
| 1,31,0或者1,19,12
lm=1
|
| 1,15,0或者1,3,12
| IR3= Lm_B3[MAC3]
| 1,31,0或者1,19,12
lm=1
|
| 名称
| 周期
| 命令
| 描述
|
| NCS
| 14
| cop2 0x0C8041E
| 法颜色V0
|
| 字段
| 无
|
| 输入
|
| V0
| 法颜色
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| CODE
| 由RGB得到的颜色值 CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算:
|
| 1,19,12
| MAC1=A1[L11*VX0 + L12*VY0 +
L13*VZ0]
| 1,19,24
|
| 1,19,12
| MAC2=A2[L21*VX0 + L22*VY0 +
L23*VZ0]
| 1,19,24
|
| 1,19,12
| MAC3=A3[L31*VX0 + L32*VY0 +
L33*VZ0]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,19,12
| MAC1=A1[RBK + LR1*IR1 +
LR2*IR2 + LR3*IR3]
| 1,19,24
|
| 1,19,12
| MAC2=A2[GBK + LG1*IR1 +
LG2*IR2 + LG3*IR3]
| 1,19,24
|
| 1,19,12
| MAC3=A3[BBK + LB1*IR1 +
LB2*IR2 + LB3*IR3]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCT
| 30
| cop2 0x0D80420
| 法颜色V0,V1,V2
|
| 字段
| 无
|
| 输入
|
| V0,V1,V2
| 法向量
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| CODE
| 由RGB得到的颜色值 CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCDS
| 19
| cop2 0x0E80413
| 法颜色深度化
|
| 字段
| 无
|
| 输入
|
| V0
| 法颜色
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| IR0
| 插值值
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算:
|
| 1,19,12
| MAC1=A1[L11*VX0 + L12*VY0 +
L13*VZ0]
| 1,19,24
|
| 1,19,12
| MAC2=A2[L21*VX0 + L22*VY0 +
L23*VZ0]
| 1,19,24
|
| 1,19,12
| MAC3=A3[L31*VX0 + L32*VY0 +
L33*VZ0]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,19,12
| MAC1=A1[RBK + LR1*IR1 +
LR2*IR2 + LR3*IR3]
| 1,19,24
|
| 1,19,12
| MAC2=A2[GBK + LG1*IR1 +
LG2*IR2 + LG3*IR3]
| 1,19,24
|
| 1,19,12
| MAC3=A3[BBK + LB1*IR1 +
LB2*IR2 + LB3*IR3]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,27,4
| MAC1=A1[R*IR1 +
IR0*(Lm_B1[RFC-R*IR1])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC2=A1[G*IR2 +
IR0*(Lm_B2[GFC-G*IR2])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC3=A1[B*IR3 +
IR0*(Lm_B3[BFC-B*IR3])]
| 1,27,16 lm=0
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=1
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCDT
| 44
| cop2 0x0F80416
| 法颜色深度化V0,V1,V2
|
| 字段
| 无
|
| 输入
|
| V0
| 法颜色
| 1,3,12
|
| V1
| 法颜色
| 1,3,12
|
| V2
| 法颜色
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| FC
| 远颜色 RFC,GFC,RFC
| 1,27,4
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| IR0
| 插值值
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCCS
| 17
| cop2 0x108041B
| 带颜色的法颜色
|
| 字段
| 无
|
| 输入
|
| V0
| 法颜色
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算:
|
| 1,19,12
| MAC1=A1[L11*VX0 + L12*VY0 +
L13*VZ0]
| 1,19,24
|
| 1,19,12
| MAC2=A2[L21*VX0 + L22*VY0 +
L23*VZ0]
| 1,19,24
|
| 1,19,12
| MAC3=A3[L31*VX0 + L32*VY0 +
L33*VZ0]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,19,12
| MAC1=A1[RBK + LR1*IR1 +
LR2*IR2 + LR3*IR3]
| 1,19,24
|
| 1,19,12
| MAC2=A2[GBK + LG1*IR1 +
LG2*IR2 + LG3*IR3]
| 1,19,24
|
| 1,19,12
| MAC3=A3[BBK + LB1*IR1 +
LB2*IR2 + LB3*IR3]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,27,4
| MAC1=A1[R*IR1]
| 1,27,16
|
| 1,27,4
| MAC2=A2[G*IR2]
| 1,27,16
|
| 1,27,4
| MAC3=A3[B*IR3]
| 1,27,16
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=1
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCCT
| 39
| cop2 0x118043F
| 带颜色的法颜色V0,V1,V2
|
| 字段
| 无
|
| 输入
|
| V0
| 法向量
| 1,3,12
|
| V1
| 法向量
| 1,3,12
|
| V2
| 法向量
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| LLM
| 光源矩阵
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| CDP
| 13
| cop2 0x1280414
| 颜色深度查询
|
| 字段
| 无
|
| 输入
|
| [IR1,IR2,IR3]
| 向量
| 1,3,12
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| IR0
| 插值值
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| LCM
| 颜色矩阵
| 1,3,12
|
| FC
| 远颜色 RFC,GFC,RFC
| 1,27,4
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算:
|
| 1,19,12
| MAC1=A1[RBK + LR1*IR1 +
LR2*IR2 + LR3*IR3]
| 1,19,24
|
| 1,19,12
| MAC2=A2[GBK + LG1*IR1 +
LG2*IR2 + LG3*IR3]
| 1,19,24
|
| 1,19,12
| MAC3=A3[BBK + LB1*IR1 +
LB2*IR2 + LB3*IR3]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,27,4
| MAC1=A1[R*IR1 +
IR0*(Lm_B1[RFC-R*IR1])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC2=A2[G*IR2 + IR0*(Lm_B2[GFC-G*IR2])]
| 1,27,16 lm=0
|
| 1,27,4
| MAC3=A3[B*IR3 +
IR0*(Lm_B3[BFC-B*IR3])]
| 1,27,16 lm=0
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=1
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| CC
| 11
| cop2 0x138041C
| 从光源向量和一个基本颜色计算一个颜色
|
| 字段
| 无
|
| 输入
|
| [IR1,IR2,IR3]
| 向量
| 1,3,12
|
| BK
| 背景颜色 RGB,GBK,RBK
| 1,19,12
|
| RGB
| 主颜色 R,G,B,CODE
| 0,8,0
|
| LCM
| 颜色矩阵
| 1,3,12
|
| 输出
|
| RGBn
| RGB FIFO Rn,Gn,Bn,CDn
| 0,8,0
|
| [IR1,IR2,IR3]
| 颜色向量
| 1,11,4
|
| [MAC1,MAC2,MAC3]
| 颜色向量
| 1,27,4
|
| 计算:
|
| 1,19,12
| MAC1=A1[RBK + LR1*IR1 +
LR2*IR2 + LR3*IR3]
| 1,19,24
|
| 1,19,12
| MAC2=A2[GBK + LG1*IR1 +
LG2*IR2 + LG3*IR3]
| 1,19,24
|
| 1,19,12
| MAC3=A3[BBK + LB1*IR1 +
LB2*IR2 + LB3*IR3]
| 1,19,24
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,19,12
lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,19,12
lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,19,12
lm=1
|
| 1,27,4
| MAC1=A1[R*IR1]
| 1,27,16
|
| 1,27,4
| MAC2=A2[G*IR2]
| 1,27,16
|
| 1,27,4
| MAC3=A3[B*IR3]
| 1,27,16
|
| 1,3,12
| IR1= Lm_B1[MAC1]
| 1,27,4 lm=1
|
| 1,3,12
| IR2= Lm_B2[MAC2]
| 1,27,4 lm=1
|
| 1,3,12
| IR3= Lm_B3[MAC3]
| 1,27,4 lm=1
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
| 1,27,4
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
| 1,27,4
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
| 1,27,4
|
| 名称
| 周期
| 命令
| 描述
|
| NCLIP
| 8
| cop2 0x1400006
| 法向剪切
|
| 字段
| 无
|
| 输入
|
| SXY0,SXY1,SXY2
| 屏幕坐标
| 1,15,0
|
| 输出
|
| MAC0
| SXY1和SXY2的外积,SXY0保持原状
| 1,31,0
|
| 计算:
|
| 1,31,0
| MAC0 =
F[SX0*SY1+SX1*SY2+SX2*SY0-SX0*SY2-SX1*SY0-SX2*SY1]
| 1,43,0
|
| 名称
| 周期
| 命令
| 描述
|
| AVSZ3
| 5
| cop2 0x158002D
| 3个Z值平均
|
| 字段
| 无
|
| 输入
|
| SZ1,SZ2,SZ3
| Z值
| 0,16,0
|
| ZSF3
| 除数
| 1,3,12
|
| 输出
|
| OTZ
| 平均
| 0,16,0
|
| MAC0
| 平均
| 1,31,0
|
| 计算:
|
| 1,31,0
| MAC0=F[ZSF3*SZ1 + ZSF3*SZ2 +
ZSF3*SZ3]
| 1,31,12
|
| 0,16,0
| OTZ=Lm_D[MAC0]
| 1,31,0
|
| 名称
| 周期
| 命令
| 描述
|
| AVSZ4
| 6
| cop2 0x168002E
| 4个Z值平均
|
| 字段
| 无
|
| 输入
|
| SZ1,SZ2,SZ3,SZ4
| Z值
| 0,16,0
|
| ZSF4
| 除数
| 1,3,12
|
| 输出
|
| OTZ
| 平均
| 0,16,0
|
| MAC0
| 平均
| 1,31,0
|
| 计算:
|
| 1,31,0
| MAC0=F[ZSF4*SZ0 + ZSF4*SZ1 +
ZSF4*SZ2 + ZSF4*SZ3]
| 1,31,12
|
| 0,16,0
| OTZ=Lm_D[MAC0]
| 1,31,0
|
| 名称
| 周期
| 命令
| 描述
|
| OP
| 6
| cop2 0x170000C
| 外积
|
| 字段
| sf
|
| 输入
|
| [R11R12,R22R23,R33]
| 向量1
|
|
| [IR1,IR2,IR3]
| 向量2
|
|
| 输出
|
| [IR1,IR2,IR3]
| 外积
|
|
| [MAC1,MAC2,MAC3]
| 外积
|
|
| 计算:(D1=R11R12,D2=R22R23,D3=R33)
|
|
| MAC1=A1[D2*IR3 - D3*IR2]
|
|
|
| MAC2=A2[D3*IR1 - D1*IR3]
|
|
|
| MAC3=A3[D1*IR2 - D2*IR1]
|
|
|
| IR1=Lm_B1[MAC1]
|
|
|
| IR2=Lm_B2[MAC2]
|
|
|
| IR3=Lm_B3[MAC3]
|
|
| 名称
| 周期
| 命令
| 描述
|
| GPF
| 6
| cop2 0x190003D
| 通用目的插值
|
| 字段
| sf
|
| 输入
|
| IR0
| 缩放因子
|
|
| CODE
| RGB代码段
|
|
| [IR1,IR2,IR3]
| 向量
|
|
| 输出
|
| [IR1,IR2,IR3]
| 向量
|
|
| [MAC1,MAC2,MAC3]
| 向量
|
|
| RGB2
| RGB信息
|
|
| 计算:
|
|
| MAC1=A1[IR0 * IR1]
|
|
|
| MAC2=A2[IR0 * IR2]
|
|
|
| MAC3=A3[IR0 * IR3]
|
|
|
| IR1=Lm_B1[MAC1]
|
|
|
| IR2=Lm_B2[MAC2]
|
|
|
| IR3=Lm_B3[MAC3]
|
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
|
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
|
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
|
|
| 名称
| 周期
| 命令
| 描述
|
| GPL
| 5
| cop2 0x1A0003E
| 通用目的插值
|
| 字段
| sf
|
| 输入
|
| IR0
| 缩放因子
|
|
| CODE
| RGB代码段
|
|
| [IR1,IR2,IR3]
| 向量
|
|
| [MAC1,MAC2,MAC3]
| 向量
|
|
| 输出
|
| [IR1,IR2,IR3]
| 向量
|
|
| [MAC1,MAC2,MAC3]
| 向量
|
|
| RGB2
| RGB信息
|
|
| 计算:
|
|
| MAC1=A1[MAC1 + IR0 * IR1]
|
|
|
| MAC2=A2[MAC2 + IR0 * IR2]
|
|
|
| MAC3=A3[MAC3 + IR0 * IR3]
|
|
|
| IR1=Lm_B1[MAC1]
|
|
|
| IR2=Lm_B2[MAC2]
|
|
|
| IR3=Lm_B3[MAC3]
|
|
| 0,8,0
| Cd0<-Cd1<-Cd2<- CODE
|
|
| 0,8,0
| R0<-R1<-R2<- Lm_C1[MAC1]
|
|
| 0,8,0
| G0<-G1<-G2<-
Lm_C2[MAC2]
|
|
| 0,8,0
| B0<-B1<-B2<-
Lm_C3[MAC3]
|
|
字段描述
| 24 20
| 19
| 18 17
| 16 15
| 14 13
| 12 11
| 10
| 9 0
|
|
| sf
| mx
| v
| cv
|
| lm
|
|
| sf
| 0
| 向量格式(1,31,0)
|
| 1
| 向量格式(1,19,12)
|
| mx
| 0
| 乘以旋转矩阵
|
| 1
| 乘以光源矩阵
|
| 2
| 乘以颜色矩阵
|
| 3
| 未知
|
| v
| 0
| V0 源矩阵(短)
|
| 1
| V1 源矩阵(短)
|
| 2
| V2 源矩阵(短)
|
| 3
| IR 源矩阵(长)
|
| cv
| 0
| 加平移向量
|
| 1
| 加背景颜色向量
|
| 2
| 未知
|
| 3
| 不加向量
|
通用MVMVA指令列表
|
名称
|
周期数
|
命令
|
描述
|
|
rtv0
|
-
|
cop2
0x0486012
|
v0×旋转矩阵
|
|
rtv1
|
-
|
cop2
0x048E012
|
v1×旋转矩阵
|
|
rtv2
|
-
|
cop2
0x0496012
|
v2×旋转矩阵
|
|
rtir12
|
-
|
cop2
0x049E012
|
ir×旋转矩阵
|
|
rtir0
|
-
|
cop2
0x041E012
|
ir×旋转矩阵
|
|
rtv0tr
|
-
|
cop2
0x0480012
|
v0×旋转矩阵+平移向量
|
|
rtv1tr
|
-
|
cop2
0x0488012
|
v1×旋转矩阵+平移向量
|
|
rtv2tr
|
-
|
cop2
0x0490012
|
v2×旋转矩阵+平移向量
|
|
rtirtr
|
-
|
cop2
0x0498012
|
ir×旋转矩阵+平移向量
|
|
rtv0bk
|
-
|
cop2
0x0482012
|
v0×旋转矩阵+背景向量
|
|
rtv1bk
|
-
|
cop2
0x048A012
|
v1×旋转矩阵+背景向量
|
|
rtv2bk
|
-
|
cop2
0x0492012
|
v2×旋转矩阵+背景向量
|
|
rtirbk
|
-
|
cop2
0x049A012
|
ir×旋转矩阵+背景向量
|
|
ll
|
-
|
cop2
0x04A6412
|
v0×光源矩阵。下限为0
|
|
llv0
|
-
|
cop2
0x04A6012
|
v0×光源矩阵
|
|
llv1
|
-
|
cop2
0x04AE012
|
v1×光源矩阵
|
|
llv2
|
-
|
cop2
0x04B6012
|
v2×光源矩阵
|
|
llvir
|
-
|
cop2
0x04BE012
|
ir×光源矩阵
|
|
llv0tr
|
-
|
cop2
0x04A0012
|
v0×光源矩阵+平移矩阵
|
|
llv1tr
|
-
|
cop2
0x04A8012
|
v1×光源矩阵+平移矩阵
|
|
llv2tr
|
-
|
cop2
0x04B0012
|
v2×光源矩阵+平移矩阵
|
|
llirtr
|
-
|
cop2
0x04B8012
|
ir×光源矩阵+平移矩阵
|
|
llv0bk
|
-
|
cop2
0x04A2012
|
v0×光源矩阵+背景向量
|
|
llv1bk
|
-
|
cop2
0x04AA012
|
v1×光源矩阵+背景向量
|
|
llv2bk
|
-
|
cop2
0x04B2012
|
v2×光源矩阵+背景向量
|
|
llirbk
|
-
|
cop2
0x04BA012
|
ir×光源矩阵+背景向量
|
|
lc
|
-
|
cop2
0x04DA412
|
v0×颜色矩阵。下限为0
|
|
lcv0
|
-
|
cop2
0x04C6012
|
v0×颜色矩阵
|
|
lcv1
|
-
|
cop2
0x04CE012
|
v1×颜色矩阵
|
|
lcv2
|
-
|
cop2
0x04D6012
|
v2×颜色矩阵
|
|
lcvir
|
-
|
cop2
0x04DE012
|
ir×颜色矩阵
|
|
lcv0tr
|
-
|
cop2
0x04C0012
|
v0×颜色矩阵+平移矩阵
|
|
lcv1tr
|
-
|
cop2
0x04C8012
|
v1×颜色矩阵+平移矩阵
|
|
lcv2tr
|
-
|
cop2
0x04D0012
|
v2×颜色矩阵+平移矩阵
|
|
lcirtr
|
-
|
cop2
0x04D8012
|
ir×颜色矩阵+平移矩阵
|
|
lev0bk
|
-
|
cop2
0x04C2012
|
v0×颜色矩阵+平移矩阵
|
|
lev1bk
|
-
|
cop2
0x04CA012
|
v1×颜色矩阵+平移矩阵
|
|
lev2bk
|
-
|
cop2
0x04D2012
|
v2×颜色矩阵+平移矩阵
|
|
leirbk
|
-
|
cop2
0x04DA012
|
ir×颜色矩阵+平移矩阵
|
其他指令
|
名称
|
周期数
|
命令
|
描述
|
格式
|
|
sqr12
|
-
|
cop2
0x0A80428
|
ir平方
|
1,19,12
|
|
sqr0
|
-
|
cop2
0x0A80428
|
ir平方
|
1,31, 0
|
|
op12
|
-
|
cop2
0x178000C
|
外积
|
1,19,12
|
|
op0
|
-
|
cop2
0x170000C
|
外积
|
1,31, 0
|
|
gpf12
|
-
|
cop2
0x198003D
|
通用目的插值
|
1,19,12
|
|
gpf0
|
-
|
cop2
0x190003D
|
通用目的插值
|
1,31, 0
|
|
gpl12
|
-
|
cop2
0x1A8003E
|
通用目的插值
|
1,19,12
|
|
gpl0
|
-
|
cop2
0x1A0003E
|
通用目的插值
|
1,31, 0
|