Created
October 23, 2020 05:29
-
-
Save sajattack/55c3f1f9b19f312d16fc3d54c03b7111 to your computer and use it in GitHub Desktop.
sceVfpu, Sony's static library for the PSP's hardware vector unit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sceVfpuVector2SignFloat: | |
lwc1 f0,0x0(a1) | |
mtc1 zero,f1 | |
c.lt f0,f1 | |
nop | |
bc1f pos_0881A344 | |
lui v1,0x88E | |
lwc1 f0,-0x4560(v1) | |
pos_0881A2FC: | |
swc1 f0,0x0(a0) | |
pos_0881A300: | |
lwc1 f0,0x4(a1) | |
mtc1 zero,f1 | |
c.lt f0,f1 | |
nop | |
bc1f pos_0881A328 | |
lui a1,0x88E | |
lwc1 f0,-0x4560(a1) | |
pos_0881A31C: | |
swc1 f0,0x4(a0) | |
pos_0881A320: | |
jr ra | |
move v0,a0 | |
pos_0881A328: | |
c.lt f1,f0 | |
nop | |
bc1fl pos_0881A320 | |
swc1 f1,0x4(a0) | |
lui a2,0x88E | |
j pos_0881A31C | |
lwc1 f0,-0x455C(a2) | |
pos_0881A344: | |
c.lt f1,f0 | |
nop | |
bc1fl pos_0881A300 | |
swc1 f1,0x0(a0) | |
lui v1,0x88E | |
j pos_0881A2FC | |
lwc1 f0,-0x455C(v1) | |
sceVfpuVector2SignInt: | |
lwc1 f0,0x0(a1) | |
mtc1 zero,f1 | |
c.lt f0,f1 | |
nop | |
bc1f pos_0881A3B8 | |
li v0,-0x1 | |
pos_0881A378: | |
sw v0,0x0(a0) | |
pos_0881A37C: | |
lwc1 f0,0x4(a1) | |
mtc1 zero,f1 | |
c.lt f0,f1 | |
nop | |
bc1f pos_0881A3A0 | |
li v0,-0x1 | |
pos_0881A394: | |
sw v0,0x4(a0) | |
pos_0881A398: | |
jr ra | |
move v0,a0 | |
pos_0881A3A0: | |
c.lt f1,f0 | |
nop | |
bc1fl pos_0881A398 | |
sw zero,0x4(a0) | |
j pos_0881A394 | |
li v0,0x1 | |
pos_0881A3B8: | |
c.lt f1,f0 | |
nop | |
bc1fl pos_0881A37C | |
sw zero,0x0(a0) | |
j pos_0881A378 | |
li v0,0x1 | |
sceVfpuVector2Set: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
jr ra | |
swc1 f13,0x4(a0) | |
sceVfpuVector2Copy: | |
lwc1 f1,0x4(a1) | |
lwc1 f2,0x0(a1) | |
move v0,a0 | |
swc1 f1,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2PositiveZero: | |
move v0,a0 | |
sw zero,0x0(a0) | |
jr ra | |
sw zero,0x4(a0) | |
sceVfpuVector2NegativeZero: | |
lui a1,0x8000 | |
move v0,a0 | |
sw a1,0x4(a0) | |
jr ra | |
sw a1,0x0(a0) | |
sceVfpuVector2Ceil: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vf2id.p C000,C000,0 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Trunc: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vf2iz.p C000,C000,0 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Round: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vf2in.p C000,C000,0 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Floor: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vf2iu.p C000,C000,0 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2FromIVector: | |
lwc1 f1,0x4(a1) | |
lwc1 f2,0x0(a1) | |
move v0,a0 | |
cvt.s.w f3,f1 | |
cvt.s.w f0,f2 | |
swc1 f3,0x4(a0) | |
jr ra | |
swc1 f0,0x0(a0) | |
sceVfpuVector2Add: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
lwc1 f5,0x0(a1) | |
lwc1 f0,0x0(a2) | |
add.s f4,f3,f1 | |
move v0,a0 | |
add.s f2,f5,f0 | |
swc1 f4,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Sub: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
lwc1 f5,0x0(a1) | |
lwc1 f0,0x0(a2) | |
sub.s f4,f3,f1 | |
move v0,a0 | |
sub.s f2,f5,f0 | |
swc1 f4,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Mul: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
lwc1 f5,0x0(a1) | |
lwc1 f0,0x0(a2) | |
mul.s f4,f3,f1 | |
move v0,a0 | |
mul.s f2,f5,f0 | |
swc1 f4,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Div: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
lwc1 f5,0x0(a1) | |
lwc1 f0,0x0(a2) | |
div.s f4,f3,f1 | |
move v0,a0 | |
div.s f2,f5,f0 | |
swc1 f4,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Neg: | |
lwc1 f1,0x4(a1) | |
lwc1 f4,0x0(a1) | |
move v0,a0 | |
neg.s f3,f1 | |
neg.s f2,f4 | |
swc1 f3,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Abs: | |
lwc1 f1,0x4(a1) | |
lwc1 f4,0x0(a1) | |
move v0,a0 | |
abs.s f3,f1 | |
abs.s f2,f4 | |
swc1 f3,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Lerp: | |
lwc1 f5,0x4(a1) | |
lwc1 f4,0x0(a1) | |
lwc1 f9,0x4(a2) | |
lwc1 f8,0x0(a2) | |
move v0,a0 | |
sub.s f7,f9,f5 | |
sub.s f6,f8,f4 | |
mul.s f3,f12,f7 | |
mul.s f2,f12,f6 | |
add.s f1,f5,f3 | |
add.s f0,f4,f2 | |
swc1 f1,0x4(a0) | |
jr ra | |
swc1 f0,0x0(a0) | |
sceVfpuVector2Scale: | |
lwc1 f1,0x4(a1) | |
lwc1 f4,0x0(a1) | |
move v0,a0 | |
mul.s f3,f1,f12 | |
mul.s f2,f4,f12 | |
swc1 f3,0x4(a0) | |
jr ra | |
swc1 f2,0x0(a0) | |
sceVfpuVector2Hermite: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S020,0(t0) | |
lv.s S021,4(t0) | |
lv.s S030,0(a3) | |
lv.s S031,4(a3) | |
lv.s S202,0(sp) | |
vone.s S203 | |
vmul.s S201,S202,S202 | |
vpfxs [2,1,1,-2] | |
vmov.q C100,C100 | |
vpfxs [-3,-2,-1,3] | |
vmov.q C110,C110 | |
vmul.s S200,S201,S202 | |
vpfxs [0,1,0,0] | |
vmov.q C120,C120 | |
vpfxs [1,0,0,0] | |
vmov.q C130,C130 | |
vtfm4.q C210,E100,C200 | |
vtfm4.q C220,E000,C210 | |
sv.s S220,0(a0) | |
sv.s S221,4(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector2Clamp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vpfxt [X,X,Z,W] | |
vmax.p C000,C000,C010 | |
vpfxt [Y,Y,Z,W] | |
vmin.p C000,C000,C010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Max: | |
lwc1 f3,0x0(a1) | |
lwc1 f1,0x0(a2) | |
move v0,a0 | |
c.lt f1,f3 | |
nop | |
bc1t pos_0881A6C4 | |
mov.s f2,f3 | |
mov.s f2,f1 | |
pos_0881A6C4: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
swc1 f2,0x0(v0) | |
c.lt f1,f3 | |
nop | |
bc1t pos_0881A6E4 | |
mov.s f2,f3 | |
mov.s f2,f1 | |
pos_0881A6E4: | |
jr ra | |
swc1 f2,0x4(v0) | |
sceVfpuVector2Min: | |
lwc1 f3,0x0(a1) | |
lwc1 f1,0x0(a2) | |
move v0,a0 | |
c.lt f3,f1 | |
nop | |
bc1t pos_0881A70C | |
mov.s f2,f3 | |
mov.s f2,f1 | |
pos_0881A70C: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x4(a2) | |
swc1 f2,0x0(v0) | |
c.lt f3,f1 | |
nop | |
bc1t pos_0881A72C | |
mov.s f2,f3 | |
mov.s f2,f1 | |
pos_0881A72C: | |
jr ra | |
swc1 f2,0x4(v0) | |
sceVfpuVector2InnerProduct: | |
lwc1 f0,0x0(a1) | |
lwc1 f2,0x4(a0) | |
lwc1 f1,0x4(a1) | |
lwc1 f5,0x0(a0) | |
mul.s f4,f2,f1 | |
mul.s f3,f5,f0 | |
jr ra | |
add.s f0,f3,f4 | |
sceVfpuVector2Funnel: | |
lwc1 f3,0x4(a0) | |
lwc1 f2,0x0(a0) | |
jr ra | |
add.s f0,f2,f3 | |
sceVfpuVector2Average: | |
lwc1 f0,0x4(a0) | |
lwc1 f4,0x0(a0) | |
lui v1,0x88E | |
lwc1 f3,-0x4558(v1) | |
add.s f2,f4,f0 | |
jr ra | |
mul.s f0,f2,f3 | |
sceVfpuVector2IsEqual: | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
li v0,0 | |
vcmp.p EQ,C000,C010 | |
bvtl pos_0881A7A0 (CC[5]) | |
li v0,0x1 | |
pos_0881A7A0: | |
jr ra | |
nop | |
sceVfpuVector2IsZero: | |
lw v0,0x4(a0) | |
lw a1,0x0(a0) | |
or a0,a1,v0 | |
ins a0,zero,0x1F,0x1 | |
jr ra | |
sltiu v0,a0,0x1 | |
sceVfpuVector2Normalize: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vdot.p S010,C000,C000 | |
vzero.s S011 | |
vcmp.s EZ,S010,S010 | |
vrsq.s S010,S010 | |
vcmovt.s S010,S011,CC[0] | |
vpfxd [-1:1,-1:1,M,M] | |
vscl.p C000,C000,S010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Length: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
vdot.p S000,C000,C000 | |
vsqrt.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector2Distance: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
vsub.p C000,C000,C010 | |
vdot.p S000,C000,C000 | |
vsqrt.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector2FaceForward: | |
move v0,a0 | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S020,0(a3) | |
lv.s S021,4(a3) | |
vdot.p S030,C010,C020 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
vpfxt [0,Y,Z,W] | |
vcmp.s LT,S030,S030 | |
vpfxs [-X,-Y,Z,W] | |
vcmovf.p C000,C000,CC[0] | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Reflect: | |
move v0,a0 | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
vdot.p S031,C010,C020 | |
vfim.s S030,-2.000000 | |
vmul.s S032,S030,S031 | |
vscl.p C020,C020,S032 | |
vadd.p C000,C010,C020 | |
vdot.p S033,C000,C000 | |
vcmp.s EZ,S033,S033 | |
vrsq.s S033,S033 | |
vpfxs [0,Y,Z,W] | |
vcmovt.s S033,S033,CC[0] | |
vpfxd [-1:1,-1:1,M,M] | |
vscl.p C000,C000,S033 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuVector2Refract: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
lv.s S030,0(sp) | |
vdot.p S031,C010,C020 | |
vscl.p C010,C010,S030 | |
vmul.s S032,S030,S030 | |
vmul.s S033,S031,S031 | |
vmul.s S031,S031,S030 | |
vocp.s S033,S033 | |
vmul.s S033,S032,S033 | |
vocp.s S033,S033 | |
vsqrt.s S033,S033 | |
vsub.s S031,S031,S032 | |
vscl.p C020,C020,S031 | |
vadd.p C000,C010,C020 | |
vdot.p S033,C000,C000 | |
vcmp.p ES,C000,C000 | |
vrsq.s S033,S033 | |
vpfxd [-1:1,-1:1,M,M] | |
vscl.p C000,C000,S033 | |
vpfxs [0,0,Z,W] | |
vcmovt.p C000,C000,CC[4] | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3Set: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
swc1 f13,0x4(a0) | |
jr ra | |
swc1 f14,0x8(a0) | |
sceVfpuVector3Copy: | |
lwc1 f3,0x8(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
lv.s S022,8(a2) | |
vsub.t C000,C020,C010 | |
vscl.t C000,C000,S030 | |
vadd.t C000,C010,C000 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Hermite: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S012,8(a2) | |
lv.s S020,0(t0) | |
lv.s S021,4(t0) | |
lv.s S022,8(t0) | |
lv.s S030,0(a3) | |
lv.s S031,4(a3) | |
lv.s S032,8(a3) | |
lv.s S202,0(sp) | |
vone.s S203 | |
vmul.s S201,S202,S202 | |
vpfxs [2,1,1,-2] | |
vmov.q C100,C100 | |
vpfxs [-3,-2,-1,3] | |
vmov.q C110,C110 | |
vmul.s S200,S201,S202 | |
vpfxs [0,1,0,0] | |
vmov.q C120,C120 | |
vpfxs [1,0,0,0] | |
vmov.q C130,C130 | |
vtfm4.q C210,E100,C200 | |
vtfm4.q C220,E000,C210 | |
sv.s S220,0(a0) | |
sv.s S221,4(a0) | |
sv.s S222,8(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3Scale: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S010 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vscl.t C000,C000,S010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Clamp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vpfxt [X,X,X,W] | |
vmax.t C000,C000,C010 | |
vpfxt [Y,Y,Y,W] | |
vmin.t C000,C000,C010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Max: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S012,8(a2) | |
vmax.t C000,C000,C010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Min: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S012,8(a2) | |
vmin.t C000,C000,C010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3InnerProduct: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
vdot.t S000,C000,C010 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3OuterProduct: | |
move v0,a0 | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
lv.s S022,8(a2) | |
vcrsp.t C000,C010,C020 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Funnel: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
vfad.t S000,C000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3Average: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
vavg.t S000,C000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3IsEqual: | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
li v0,0 | |
vcmp.t EQ,C000,C010 | |
bvtl pos_0881AE30 (CC[5]) | |
li v0,0x1 | |
pos_0881AE30: | |
jr ra | |
nop | |
sceVfpuVector3IsZero: | |
lw v0,0x4(a0) | |
lw a1,0x0(a0) | |
lw a2,0x8(a0) | |
or a0,a1,v0 | |
or v1,a0,a2 | |
ins v1,zero,0x1F,0x1 | |
jr ra | |
sltiu v0,v1,0x1 | |
sceVfpuVector3SignFloat: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vsgn.t C000,C000 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3SignInt: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vsgn.t C000,C000 | |
vf2iz.t C000,C000,0 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Normalize: | |
move v0,a0 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vdot.t S010,C000,C000 | |
vzero.s S011 | |
vcmp.s EZ,S010,S010 | |
vrsq.s S010,S010 | |
vcmovt.s S010,S011,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S010 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Length: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
vdot.t S000,C000,C000 | |
vsqrt.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3Distance: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S002,8(a0) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
vsub.t C000,C000,C010 | |
vdot.t S000,C000,C000 | |
vsqrt.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector3FaceForward: | |
move v0,a0 | |
lv.s S010,0(a2) | |
lv.s S011,4(a2) | |
lv.s S012,8(a2) | |
lv.s S020,0(a3) | |
lv.s S021,4(a3) | |
lv.s S022,8(a3) | |
vdot.t S030,C010,C020 | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.s S002,8(a1) | |
vpfxt [0,Y,Z,W] | |
vcmp.s LT,S030,S030 | |
vpfxs [-X,-Y,-Z,W] | |
vcmovf.t C000,C000,CC[0] | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Reflect: | |
move v0,a0 | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
lv.s S022,8(a2) | |
vdot.t S031,C010,C020 | |
vfim.s S030,-2.000000 | |
vmul.s S032,S030,S031 | |
vscl.t C020,C020,S032 | |
vadd.t C000,C010,C020 | |
vdot.t S033,C000,C000 | |
vcmp.s EZ,S033,S033 | |
vrsq.s S033,S033 | |
vpfxs [0,Y,Z,W] | |
vcmovt.s S033,S033,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S033 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuVector3Refract: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S010,0(a1) | |
lv.s S011,4(a1) | |
lv.s S012,8(a1) | |
lv.s S020,0(a2) | |
lv.s S021,4(a2) | |
lv.s S022,8(a2) | |
lv.s S030,0(sp) | |
vdot.t S031,C010,C020 | |
vscl.t C010,C010,S030 | |
vmul.s S032,S030,S030 | |
vmul.s S033,S031,S031 | |
vmul.s S031,S031,S030 | |
vocp.s S033,S033 | |
vmul.s S033,S032,S033 | |
vocp.s S033,S033 | |
vsqrt.s S033,S033 | |
vsub.s S031,S031,S032 | |
vscl.t C020,C020,S031 | |
vadd.t C000,C010,C020 | |
vdot.t S033,C000,C000 | |
vcmp.t ES,C000,C000 | |
vrsq.s S033,S033 | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S033 | |
vpfxs [0,0,0,W] | |
vcmovt.t C000,C000,CC[4] | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4Set: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
swc1 f13,0x4(a0) | |
swc1 f14,0x8(a0) | |
jr ra | |
swc1 f15,0xC(a0) | |
sceVfpuVector4SetXYZ: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
swc1 f13,0x4(a0) | |
jr ra | |
swc1 f14,0x8(a0) | |
sceVfpuVector4Copy: | |
lwc1 f4,0xC(a1) | |
lwc1 f1,0x0(a1) | |
lwc1 f2,0x4(a1) | |
lwc1 f3,0x8(a1) | |
move v0,a0 | |
swc1 f1,0x0(a0) | |
swc1 f2,0x4(a0) | |
swc1 f3,0x8(a0) | |
jr ra | |
swc1 f4,0xC(a0) | |
sceVfpuVector4PositiveZero: | |
move v0,a0 | |
sw zero,0x0(a0) | |
sw zero,0x4(a0) | |
sw zero,0x8(a0) | |
jr ra | |
sw zero,0xC(a0) | |
sceVfpuVector4NegativeZero: | |
lui a1,0x8000 | |
move v0,a0 | |
sw a1,0xC(a0) | |
sw a1,0x0(a0) | |
sw a1,0x4(a0) | |
jr ra | |
sw a1,0x8(a0) | |
sceVfpuVector4Ceil: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vf2id.q C000,C000,0 | |
sv.q C000,0(a0) | |
jr ra | |
vpfxs [1,0,0,0] | |
vmov.q C130,C130 | |
vtfm4.q C210,E100,C200 | |
vtfm4.q C220,E000,C210 | |
sv.q C220,0(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4HermiteXYZ: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
lv.q C020,0(t0) | |
lv.q C030,0(a3) | |
lv.s S202,0(sp) | |
vone.s S203 | |
vmul.s S201,S202,S202 | |
vpfxs [2,1,1,-2] | |
vmov.q C100,C100 | |
vpfxs [-3,-2,-1,3] | |
vmov.q C110,C110 | |
vmul.s S200,S201,S202 | |
vpfxs [0,1,0,0] | |
vmov.q C120,C120 | |
vpfxs [1,0,0,0] | |
vmov.q C130,C130 | |
vtfm4.q C210,E100,C200 | |
vtfm4.q C220,E000,C210 | |
vmov.s S223,S003 | |
sv.q C220,0(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4Scale: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S010 | |
lv.q C000,0(a1) | |
vscl.q C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4ScaleXYZ: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S010 | |
lv.q C000,0(a1) | |
vscl.t C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4Clamp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.q C000,0(a1) | |
vpfxt [X,X,X,X] | |
vmax.q C000,C000,C010 | |
vpfxt [Y,Y,Y,Y] | |
vmin.q C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4ClampXYZ: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.q C000,0(a1) | |
vpfxt [X,X,X,W] | |
vmax.t C000,C000,C010 | |
vpfxt [Y,Y,Y,W] | |
vmin.t C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4Max: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
vmax.q C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4Min: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vmin.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4InnerProduct: | |
addiu sp,sp,-0x10 | |
lv.q C010,0(a0) | |
lv.q C020,0(a1) | |
vdot.q S000,C010,C020 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4InnerProductXYZ: | |
addiu sp,sp,-0x10 | |
lv.q C010,0(a0) | |
lv.q C020,0(a1) | |
vdot.t S000,C010,C020 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4OuterProductXYZ: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vzero.s S003 | |
vcrsp.t C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4Funnel: | |
addiu sp,sp,-0x10 | |
lv.q C000,0(a0) | |
vfad.q S000,C000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4Average: | |
addiu sp,sp,-0x10 | |
lv.q C000,0(a0) | |
vavg.q S000,C000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4IsEqual: | |
lv.q C000,0(a0) | |
lv.q C010,0(a1) | |
li v0,0 | |
vcmp.q EQ,C000,C010 | |
bvtl pos_0881B588 (CC[5]) | |
li v0,0x1 | |
pos_0881B588: | |
jr ra | |
nop | |
sceVfpuVector4IsZero: | |
lw v0,0x4(a0) | |
lw a1,0x0(a0) | |
lw t0,0x8(a0) | |
lw a3,0xC(a0) | |
or a2,a1,v0 | |
or a0,a2,t0 | |
or v1,a0,a3 | |
ins v1,zero,0x1F,0x1 | |
jr ra | |
sltiu v0,v1,0x1 | |
sceVfpuVector4SignFloat: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vsgn.q C000,C000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4SignInt: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vsgn.q C000,C000 | |
vf2iz.q C000,C000,0 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4Normalize: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vdot.q S010,C000,C000 | |
vzero.s S011 | |
vcmp.s EZ,S010,S010 | |
vrsq.s S010,S010 | |
vcmovt.s S010,S011,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,-1:1] | |
vscl.q C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4NormalizeXYZ: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vdot.t S010,C000,C000 | |
vzero.s S011 | |
vcmp.s EZ,S010,S010 | |
vrsq.s S010,S010 | |
vcmovt.s S010,S011,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4NormalizePhase: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vcst.q S010,PI | |
vadd.q C020,C000,C010 | |
vcst.s S010,2/PI | |
vscl.q C020,C020,S010 | |
vf2id.q C020,C020,0 | |
vi2f.q C020,C020,0 | |
vcst.s S011,2*PI | |
vscl.q C020,C020,S011 | |
vsub.q C000,C000,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4LengthXYZ: | |
addiu sp,sp,-0x10 | |
lv.q C000,0(a0) | |
vdot.t S010,C000,C000 | |
vsqrt.s S010,S010 | |
sv.s S010,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4DistanceXYZ: | |
addiu sp,sp,-0x10 | |
lv.q C000,0(a0) | |
lv.q C010,0(a1) | |
vsub.t C000,C000,C010 | |
vdot.t S010,C000,C000 | |
vsqrt.s S010,S010 | |
sv.s S010,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuVector4FaceForwardXYZ: | |
move v0,a0 | |
lv.q C010,0(a2) | |
lv.q C020,0(a3) | |
vdot.t S030,C010,C020 | |
lv.q C000,0(a1) | |
vpfxt [0,Y,Z,W] | |
vcmp.s LT,S030,S030 | |
vpfxs [-X,-Y,-Z,W] | |
vcmovf.t C000,C000,CC[0] | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4ReflectXYZ: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C020,0(a2) | |
vdot.t S031,C000,C020 | |
vfim.s S030,-2.000000 | |
vmul.s S032,S030,S031 | |
vscl.t C020,C020,S032 | |
vadd.t C000,C000,C020 | |
vdot.t S033,C000,C000 | |
vcmp.s EZ,S033,S033 | |
vrsq.s S033,S033 | |
vpfxs [0,Y,Z,W] | |
vcmovt.s S033,S033,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S033 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuVector4RefractXYZ: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.q C000,0(a1) | |
lv.q C020,0(a2) | |
lv.s S030,0(sp) | |
vdot.t S031,C000,C020 | |
vscl.t C000,C000,S030 | |
vmul.s S032,S030,S030 | |
vmul.s S033,S031,S031 | |
vmul.s S031,S031,S030 | |
vocp.s S033,S033 | |
vmul.s S033,S032,S033 | |
vocp.s S033,S033 | |
vsqrt.s S033,S033 | |
vsub.s S031,S031,S032 | |
vscl.t C020,C020,S031 | |
vadd.t C000,C000,C020 | |
vdot.t S033,C000,C000 | |
vcmp.t ES,C000,C000 | |
vrsq.s S033,S033 | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t C000,C000,S033 | |
vpfxs [0,0,0,W] | |
vcmovt.t C000,C000,CC[4] | |
sv.q C000,0(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix2Unit: | |
move v0,a0 | |
vmidt.p E000 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S010,8(a0) | |
sv.s S011,12(a0) | |
jr ra | |
nop | |
sceVfpuMatrix2Zero: | |
addiu sp,sp,-0x10 | |
sw s0,0x0(sp) | |
sw ra,0x4(sp) | |
jal sceVfpuVector2PositiveZero | |
move s0,a0 | |
jal sceVfpuVector2PositiveZero | |
addiu a0,s0,0x8 | |
move v0,s0 | |
lw ra,0x4(sp) | |
lw s0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix2Copy: | |
lw a3,0x0(a1) | |
move v0,a0 | |
sw a3,0x0(a0) | |
lw a2,0x4(a1) | |
sw a2,0x4(a0) | |
lw v1,0x8(a1) | |
sw v1,0x8(a0) | |
lw a2,0xC(a1) | |
jr ra | |
sw a2,0xC(a0) | |
sceVfpuMatrix2Transform: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S110,8(a1) | |
lv.s S111,12(a1) | |
lv.s S200,0(a2) | |
lv.s S201,4(a2) | |
vtfm2.p C000,E100,C200 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
jr ra | |
nop | |
sceVfpuMatrix2Mul: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S110,8(a1) | |
lv.s S111,12(a1) | |
lv.s S200,0(a2) | |
lv.s S201,4(a2) | |
lv.s S210,8(a2) | |
lv.s S211,12(a2) | |
vmmul.p E000,E200,E100 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S010,8(a0) | |
sv.s S011,12(a0) | |
jr ra | |
nop | |
sceVfpuMatrix2Scale: | |
addiu sp,sp,-0x20 | |
sw s0,0x0(sp) | |
move s0,a1 | |
sw ra,0x8(sp) | |
sw s1,0x4(sp) | |
move s1,a0 | |
swc1 f20,0x10(sp) | |
jal sceVfpuVector2Scale | |
mov.s f20,f12 | |
addiu v0,s0,0x8 | |
addiu a0,s1,0x8 | |
mov.s f12,f20 | |
jal sceVfpuVector2Scale | |
move a1,v0 | |
move v0,s1 | |
lw ra,0x8(sp) | |
lw s1,0x4(sp) | |
lw s0,0x0(sp) | |
lwc1 f20,0x10(sp) | |
jr ra | |
addiu sp,sp,0x20 | |
sceVfpuMatrix2Transpose: | |
lwc1 f3,0x4(a1) | |
lwc1 f1,0x8(a1) | |
lwc1 f4,0xC(a1) | |
lwc1 f2,0x0(a1) | |
move v0,a0 | |
swc1 f1,0x4(a0) | |
swc1 f2,0x0(a0) | |
swc1 f3,0x8(a0) | |
jr ra | |
swc1 f4,0xC(a0) | |
sceVfpuMatrix2RotZ: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.p C000,S100,[C,S] | |
vrot.p C010,S100,[-S,C] | |
beql a1,zero,pos_0881B954 | |
vmmov.p E200,E000 | |
lv.s S020,0(a1) | |
lv.s S021,4(a1) | |
lv.s S030,8(a1) | |
lv.s S031,12(a1) | |
vmmul.p E200,E100,E000 | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S210,8(a0) | |
sv.s S211,12(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix2IsUnit: | |
lw v1,0x0(a0) | |
lui a2,0x3F80 | |
beq v1,a2,pos_0881B984 | |
li a1,0 | |
pos_0881B97C: | |
jr ra | |
move v0,a1 | |
pos_0881B984: | |
lw a2,0xC(a0) | |
bne a2,v1,pos_0881B97C | |
nop | |
lw a1,0x4(a0) | |
lw v0,0x8(a0) | |
or a0,a1,v0 | |
j pos_0881B97C | |
sltiu a1,a0,0x1 | |
sceVfpuMatrix2Trace: | |
lwc1 f3,0xC(a0) | |
lwc1 f2,0x0(a0) | |
jr ra | |
add.s f0,f2,f3 | |
sceVfpuMatrix2Determinant: | |
addiu sp,sp,-0x10 | |
lv.s S000,0(a0) | |
lv.s S001,4(a0) | |
lv.s S010,8(a0) | |
lv.s S011,12(a0) | |
vdet.p S000,C000,C010 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix2Adjoint: | |
lwc1 f0,0x4(a1) | |
lwc1 f2,0x8(a1) | |
lwc1 f6,0xC(a1) | |
neg.s f3,f0 | |
neg.s f5,f2 | |
lwc1 f4,0x0(a1) | |
move v0,a0 | |
swc1 f6,0x0(a0) | |
swc1 f5,0x4(a0) | |
swc1 f3,0x8(a0) | |
jr ra | |
swc1 f4,0xC(a0) | |
sceVfpuMatrix3Unit: | |
move v0,a0 | |
vmidt.t E000 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Zero: | |
move v0,a0 | |
vmzero.t E000 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Copy: | |
move t1,a0 | |
move a2,a1 | |
move a3,a0 | |
addiu t0,a1,0x20 | |
pos_0881BA84: | |
lw v1,0x0(a2) | |
lw a0,0x4(a2) | |
lw a1,0x8(a2) | |
lw t2,0xC(a2) | |
sw v1,0x0(a3) | |
addiu a2,a2,0x10 | |
addiu a3,a3,0x10 | |
sw a0,-0xC(a3) | |
sw a1,-0x8(a3) | |
bne a2,t0,pos_0881BA84 | |
sw t2,-0x4(a3) | |
lw v0,0x0(a2) | |
sw v0,0x0(a3) | |
jr ra | |
move v0,t1 | |
sceVfpuMatrix3Transform: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
lv.s S200,0(a2) | |
lv.s S201,4(a2) | |
lv.s S202,8(a2) | |
vtfm3.t C000,E100,C200 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Mul: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
lv.s S200,0(a2) | |
lv.s S201,4(a2) | |
lv.s S202,8(a2) | |
lv.s S210,12(a2) | |
lv.s S211,16(a2) | |
lv.s S212,20(a2) | |
lv.s S220,24(a2) | |
lv.s S221,28(a2) | |
lv.s S222,32(a2) | |
vmmul.t E000,E200,E100 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Scale: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S200 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vmscl.t E000,E100,S200 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Transpose: | |
move v0,a0 | |
lw t0,0x0(a1) | |
lw t1,0x4(a1) | |
lw t2,0x8(a1) | |
lw t3,0xC(a1) | |
lw t4,0x10(a1) | |
lw t5,0x14(a1) | |
lw t6,0x18(a1) | |
lw t7,0x1C(a1) | |
lw t8,0x20(a1) | |
sw t0,0x0(a0) | |
sw t3,0x4(a0) | |
sw t6,0x8(a0) | |
sw t1,0xC(a0) | |
sw t4,0x10(a0) | |
sw t7,0x14(a0) | |
sw t2,0x18(a0) | |
sw t5,0x1C(a0) | |
sw t8,0x20(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3RotZ: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.t C000,S100,[C,S,0] | |
vrot.t C010,S100,[-S,C,0] | |
vidt.q C020 | |
beql a1,zero,pos_0881BC90 | |
vmmov.t E200,E000 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vmmul.t E200,E100,E000 | |
pos_0881BC90: | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3RotY: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.t C000,S100,[C,0,-S] | |
vidt.q C010 | |
vrot.t C020,S100,[S,0,C] | |
beql a1,zero,pos_0881BD10 | |
vmmov.t E200,E000 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vmmul.t E200,E100,E000 | |
pos_0881BD10: | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3RotX: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vidt.q C000 | |
vrot.t C010,S100,[0,C,S] | |
vrot.t C020,S100,[0,-S,C] | |
beql a1,zero,pos_0881BD90 | |
vmmov.t E200,E000 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vmmul.t E200,E100,E000 | |
pos_0881BD90: | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3Rot: | |
lwc1 f2,0x8(a2) | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f2,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.t C000,S100,[C,S,0] | |
vrot.t C010,S100,[-S,C,0] | |
vidt.q C020 | |
beql a1,zero,pos_0881BE14 | |
vmmov.t E200,E000 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vmmul.t E200,E100,E000 | |
pos_0881BE14: | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
lwc1 f1,0x4(a2) | |
swc1 f1,0x4(sp) | |
lv.s S100,4(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.t C000,S100,[C,0,-S] | |
vidt.q C010 | |
vrot.t C020,S100,[S,0,C] | |
beql a0,zero,pos_0881BE88 | |
vmmov.t E200,E000 | |
lv.s S100,0(a0) | |
lv.s S101,4(a0) | |
lv.s S102,8(a0) | |
lv.s S110,12(a0) | |
lv.s S111,16(a0) | |
lv.s S112,20(a0) | |
lv.s S120,24(a0) | |
lv.s S121,28(a0) | |
lv.s S122,32(a0) | |
vmmul.t E200,E100,E000 | |
pos_0881BE88: | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
lwc1 f1,0x0(a2) | |
swc1 f1,0x8(sp) | |
lv.s S100,8(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vidt.q C000 | |
vrot.t C010,S100,[0,C,S] | |
vrot.t C020,S100,[0,-S,C] | |
beql a0,zero,pos_0881BEFC | |
vmmov.t E200,E000 | |
lv.s S100,0(a0) | |
lv.s S101,4(a0) | |
lv.s S102,8(a0) | |
lv.s S110,12(a0) | |
lv.s S111,16(a0) | |
lv.s S112,20(a0) | |
lv.s S120,24(a0) | |
lv.s S121,28(a0) | |
lv.s S122,32(a0) | |
vmmul.t E200,E100,E000 | |
sv.s S200,0(a0) | |
sv.s S201,4(a0) | |
sv.s S202,8(a0) | |
sv.s S210,12(a0) | |
sv.s S211,16(a0) | |
sv.s S212,20(a0) | |
sv.s S220,24(a0) | |
sv.s S221,28(a0) | |
sv.s S222,32(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3IsUnit: | |
lw v1,0x0(a0) | |
lui a1,0x3F80 | |
move a3,a0 | |
beq v1,a1,pos_0881BF44 | |
li a0,0 | |
pos_0881BF3C: | |
jr ra | |
move v0,a0 | |
pos_0881BF44: | |
lw a1,0x10(a3) | |
bne a1,v1,pos_0881BF3C | |
nop | |
lw v1,0x20(a3) | |
bne v1,a1,pos_0881BF3C | |
nop | |
lw t5,0x4(a3) | |
lw v0,0x8(a3) | |
lw t4,0xC(a3) | |
lw t3,0x14(a3) | |
lw t1,0x18(a3) | |
or a2,t5,v0 | |
lw t0,0x1C(a3) | |
or t2,a2,t4 | |
or a3,t2,t3 | |
or a0,a3,t1 | |
or a1,a0,t0 | |
j pos_0881BF3C | |
sltiu a0,a1,0x1 | |
sceVfpuMatrix3Trace: | |
lwc1 f0,0x10(a0) | |
lwc1 f2,0x0(a0) | |
lwc1 f4,0x20(a0) | |
add.s f3,f2,f0 | |
jr ra | |
add.s f0,f3,f4 | |
sceVfpuMatrix3Determinant: | |
addiu sp,sp,-0x10 | |
lv.s S100,0(a0) | |
lv.s S101,4(a0) | |
lv.s S102,8(a0) | |
lv.s S110,12(a0) | |
lv.s S111,16(a0) | |
lv.s S112,20(a0) | |
lv.s S120,24(a0) | |
lv.s S121,28(a0) | |
lv.s S122,32(a0) | |
vpfxs [Y,Z,X,W] | |
vpfxt [Z,X,Y,W] | |
vmul.t C000,C110,C120 | |
vpfxs [Z,X,Y,W] | |
vpfxt [Y,Z,X,W] | |
vmul.t C010,C100,C110 | |
vdot.t S000,C100,C000 | |
vdot.t S010,C010,C120 | |
vsub.s S000,S000,S010 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3Adjoint: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vpfxt [0,Z,-Y,W] | |
vdot.t S000,R101,R102 | |
vpfxt [-Z,0,X,W] | |
vdot.t S001,R101,R102 | |
vpfxt [Y,-X,0,W] | |
vdot.t S002,R101,R102 | |
vpfxt [0,-Z,Y,W] | |
vdot.t S010,R100,R102 | |
vpfxt [Z,0,-X,W] | |
vdot.t S011,R100,R102 | |
vpfxt [-Y,X,0,W] | |
vdot.t S012,R100,R102 | |
vpfxt [0,Z,-Y,W] | |
vdot.t S020,R100,R101 | |
vpfxt [-Z,0,X,W] | |
vdot.t S021,R100,R101 | |
vpfxt [Y,-X,0,W] | |
vdot.t S022,R100,R101 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix3Inverse: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
lv.s S100,0(a2) | |
lv.s S101,4(a2) | |
lv.s S102,8(a2) | |
lv.s S110,12(a2) | |
lv.s S111,16(a2) | |
lv.s S112,20(a2) | |
lv.s S120,24(a2) | |
lv.s S121,28(a2) | |
lv.s S122,32(a2) | |
vpfxs [Y,Z,X,W] | |
vpfxt [Z,X,Y,W] | |
vmul.t C000,C110,C120 | |
vpfxs [Z,X,Y,W] | |
vpfxt [Y,Z,X,W] | |
vmul.t C010,C100,C110 | |
vdot.t S000,C100,C000 | |
vdot.t S010,C010,C120 | |
vsub.s S000,S000,S010 | |
vcmp.s EZ,S000,S000 | |
sv.s S000,0(sp) | |
bvtl pos_0881C174 (CC[0]) | |
li v0,0 | |
vrcp.s S030,S000 | |
vpfxt [0,Z,-Y,W] | |
vdot.t S000,R101,R102 | |
vpfxt [-Z,0,X,W] | |
vdot.t S001,R101,R102 | |
vpfxt [Y,-X,0,W] | |
vdot.t S002,R101,R102 | |
vpfxt [0,-Z,Y,W] | |
vdot.t S010,R100,R102 | |
vpfxt [Z,0,-X,W] | |
vdot.t S011,R100,R102 | |
vpfxt [-Y,X,0,W] | |
vdot.t S012,R100,R102 | |
vpfxt [0,Z,-Y,W] | |
vdot.t S020,R100,R101 | |
vpfxt [-Z,0,X,W] | |
vdot.t S021,R100,R101 | |
vpfxt [Y,-X,0,W] | |
vdot.t S022,R100,R101 | |
vmscl.t E000,E000,S030 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
pos_0881C174: | |
beq a1,zero,pos_0881C180 | |
lwc1 f1,0x0(sp) | |
swc1 f1,0x0(a1) | |
pos_0881C180: | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix3Normalize: | |
move v0,a0 | |
lv.s S100,0(a1) | |
lv.s S101,4(a1) | |
lv.s S102,8(a1) | |
lv.s S110,12(a1) | |
lv.s S111,16(a1) | |
lv.s S112,20(a1) | |
lv.s S120,24(a1) | |
lv.s S121,28(a1) | |
lv.s S122,32(a1) | |
vcrsp.t C020,C100,C110 | |
vcrsp.t C000,C110,C020 | |
vdot.t S100,C000,C000 | |
vdot.t S101,C010,C010 | |
vdot.t S102,C020,C020 | |
vrsq.t C110,C100 | |
vscl.t C000,C000,S110 | |
vscl.t C010,C010,S111 | |
vscl.t C020,C020,S112 | |
sv.s S000,0(a0) | |
sv.s S001,4(a0) | |
sv.s S002,8(a0) | |
sv.s S010,12(a0) | |
sv.s S011,16(a0) | |
sv.s S012,20(a0) | |
sv.s S020,24(a0) | |
sv.s S021,28(a0) | |
sv.s S022,32(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Unit: | |
move v0,a0 | |
vmidt.q E000 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Zero: | |
move v0,a0 | |
vmzero.q E000 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Copy: | |
move t1,a0 | |
move a2,a1 | |
move a3,a0 | |
addiu t0,a1,0x40 | |
pos_0881C250: | |
lw v1,0x0(a2) | |
lw a0,0x4(a2) | |
lw a1,0x8(a2) | |
lw t2,0xC(a2) | |
sw v1,0x0(a3) | |
addiu a2,a2,0x10 | |
addiu a3,a3,0x10 | |
sw a0,-0xC(a3) | |
sw a1,-0x8(a3) | |
bne a2,t0,pos_0881C250 | |
sw t2,-0x4(a3) | |
jr ra | |
move v0,t1 | |
sceVfpuMatrix4SetTransfer: | |
lwc1 f4,0xC(a1) | |
lwc1 f1,0x0(a1) | |
lwc1 f2,0x4(a1) | |
lwc1 f3,0x8(a1) | |
move v0,a0 | |
swc1 f1,0x30(a0) | |
swc1 f2,0x34(a0) | |
swc1 f3,0x38(a0) | |
jr ra | |
swc1 f4,0x3C(a0) | |
sceVfpuMatrix4GetTransfer: | |
lwc1 f4,0x3C(a1) | |
lwc1 f1,0x30(a1) | |
lwc1 f2,0x34(a1) | |
lwc1 f3,0x38(a1) | |
move v0,a0 | |
swc1 f1,0x0(a0) | |
swc1 f2,0x4(a0) | |
swc1 f3,0x8(a0) | |
jr ra | |
swc1 f4,0xC(a0) | |
sceVfpuMatrix4Transform: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
lv.q C200,0(a2) | |
vtfm4.q C000,E100,C200 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4TransformXYZ: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C200,0(a2) | |
vmov.s S003,S203 | |
vtfm3.t C000,E100,C200 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4HomogeneousTransform: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
lv.q C200,0(a2) | |
vhtfm3.t C000,E100,C200 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Mul: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
lv.q C200,0(a2) | |
lv.q C210,16(a2) | |
lv.q C220,32(a2) | |
lv.q C230,48(a2) | |
vmmul.q E000,E200,E100 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Scale: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S200 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vmscl.q E000,E100,S200 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Transpose: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,16(a1) | |
lv.q C020,32(a1) | |
lv.q C030,48(a1) | |
sv.q R000,0(a0) | |
sv.q R001,16(a0) | |
sv.q R002,32(a0) | |
sv.q R003,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Inverse: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C000,48(a1) | |
vzero.t C130 | |
vtfm3.t C010,M100,C000 | |
sv.q R100,0(a0) | |
sv.q R101,16(a0) | |
vneg.t C000,C010 | |
sv.q R102,32(a0) | |
sv.q C000,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Transfer: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,16(a1) | |
lv.q C020,32(a1) | |
lv.q C030,48(a1) | |
lv.q C100,0(a2) | |
vadd.t C100,C100,C030 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C100,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4RotZ: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.q C000,S100,[C,S,0,0] | |
vrot.q C010,S100,[-S,C,0,0] | |
vidt.q C020 | |
vidt.q C030 | |
beql a1,zero,pos_0881C4A0 | |
vmmov.q E200,E000 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vmmul.q E200,E100,E000 | |
pos_0881C4A0: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix4RotY: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.q C000,S100,[C,0,-S,0] | |
vidt.q C010 | |
vrot.q C020,S100,[S,0,C,0] | |
vidt.q C030 | |
beql a1,zero,pos_0881C4FC | |
vmmov.q E200,E000 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vmmul.q E200,E100,E000 | |
pos_0881C4FC: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix4RotX: | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f12,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vidt.q C000 | |
vrot.q C010,S100,[0,C,S,0] | |
vrot.q C020,S100,[0,-S,C,0] | |
vidt.q C030 | |
beql a1,zero,pos_0881C558 | |
vmmov.q E200,E000 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vmmul.q E200,E100,E000 | |
pos_0881C558: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix4Rot: | |
lwc1 f2,0x8(a2) | |
addiu sp,sp,-0x10 | |
move v0,a0 | |
swc1 f2,0x0(sp) | |
lv.s S100,0(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.q C000,S100,[C,S,0,0] | |
vrot.q C010,S100,[-S,C,0,0] | |
vidt.q C020 | |
vidt.q C030 | |
beql a1,zero,pos_0881C5B8 | |
vmmov.q E200,E000 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vmmul.q E200,E100,E000 | |
pos_0881C5B8: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
lwc1 f1,0x4(a2) | |
swc1 f1,0x4(sp) | |
lv.s S100,4(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vrot.q C000,S100,[C,0,-S,0] | |
vidt.q C010 | |
vrot.q C020,S100,[S,0,C,0] | |
vidt.q C030 | |
beql a0,zero,pos_0881C608 | |
vmmov.q E200,E000 | |
lv.q C100,0(a0) | |
lv.q C110,16(a0) | |
lv.q C120,32(a0) | |
lv.q C130,48(a0) | |
vmmul.q E200,E100,E000 | |
pos_0881C608: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
lwc1 f1,0x0(a2) | |
swc1 f1,0x8(sp) | |
lv.s S100,8(sp) | |
vcst.s S101,2/PI | |
vmul.s S100,S100,S101 | |
vidt.q C000 | |
vrot.q C010,S100,[0,C,S,0] | |
vrot.q C020,S100,[0,-S,C,0] | |
vidt.q C030 | |
beql a0,zero,pos_0881C658 | |
vmmov.q E200,E000 | |
lv.q C100,0(a0) | |
lv.q C110,16(a0) | |
lv.q C120,32(a0) | |
lv.q C130,48(a0) | |
vmmul.q E200,E100,E000 | |
pos_0881C658: | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix4IsUnit: | |
lw v1,0x0(a0) | |
lui a1,0x3F80 | |
move t0,a0 | |
beq v1,a1,pos_0881C68C | |
li a0,0 | |
pos_0881C684: | |
jr ra | |
move v0,a0 | |
pos_0881C68C: | |
lw v0,0x14(t0) | |
bne v0,v1,pos_0881C684 | |
nop | |
lw v1,0x28(t0) | |
bne v1,v0,pos_0881C684 | |
nop | |
lw a1,0x3C(t0) | |
bne a1,v1,pos_0881C684 | |
nop | |
lw a0,0x4(t0) | |
lw v0,0x8(t0) | |
lw t4,0xC(t0) | |
lw t2,0x10(t0) | |
or t3,a0,v0 | |
lw v1,0x18(t0) | |
or a2,t3,t4 | |
lw a3,0x1C(t0) | |
or t1,a2,t2 | |
lw t9,0x20(t0) | |
or a1,t1,v1 | |
lw t7,0x24(t0) | |
or t8,a1,a3 | |
lw t5,0x2C(t0) | |
or t6,t8,t9 | |
lw t3,0x30(t0) | |
or t4,t6,t7 | |
lw t2,0x34(t0) | |
or a0,t4,t5 | |
lw t1,0x38(t0) | |
or v1,a0,t3 | |
or a3,v1,t2 | |
or a2,a3,t1 | |
j pos_0881C684 | |
sltiu a0,a2,0x1 | |
sceVfpuMatrix4Trace: | |
lwc1 f0,0x14(a0) | |
lwc1 f2,0x0(a0) | |
lwc1 f5,0x28(a0) | |
lwc1 f4,0x3C(a0) | |
add.s f3,f2,f0 | |
add.s f1,f3,f5 | |
jr ra | |
add.s f0,f1,f4 | |
sceVfpuMatrix4Determinant: | |
addiu sp,sp,-0x10 | |
lv.q C000,0(a0) | |
lv.q C010,16(a0) | |
lv.q C020,32(a0) | |
lv.q C030,48(a0) | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C100,C011,C021 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C110,C001,C021 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C120,C001,C011 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C130,C001,C011 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C200,C011,C021 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C210,C001,C021 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C220,C001,C011 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C230,C001,C011 | |
vpfxt [Z,Y,X,W] | |
vdot.t S100,C100,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S110,C110,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S120,C120,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S130,C130,C021 | |
vpfxt [X,Z,Y,W] | |
vdot.t S200,C200,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S210,C210,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S220,C220,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S230,C230,C021 | |
vsub.q R100,R100,R200 | |
vmul.q R101,R000,R100 | |
vpfxs [X,-Y,Z,-W] | |
vfad.q S000,R101 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuMatrix4Adjoint: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,16(a1) | |
lv.q C020,32(a1) | |
lv.q C030,48(a1) | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C100,C020,C030 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C110,C020,C030 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C120,C030,C020 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C130,C030,C020 | |
vsub.q C100,C100,C120 | |
vsub.q C110,C110,C130 | |
vmov.p R122,R100 | |
vmov.p R123,C110 | |
vpfxs [X,-Y,Z,W] | |
vmov.t R110,C101 | |
vpfxs [X,-Y,Z,W] | |
vmov.p R121,C112 | |
vtfm4.q R200,E100,C010 | |
vtfm4.q R201,E100,C000 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C100,C000,C010 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C110,C000,C010 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C120,C010,C000 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C130,C010,C000 | |
vsub.q C100,C100,C120 | |
vsub.q C110,C110,C130 | |
vmov.p R122,R100 | |
vmov.p R123,C110 | |
vpfxs [X,-Y,Z,W] | |
vmov.t R110,C101 | |
vpfxs [X,-Y,Z,W] | |
vmov.p R121,C112 | |
vtfm4.q R202,E100,C030 | |
vtfm4.q R203,E100,C020 | |
vpfxd [M,,M,] | |
vneg.q C200,C200 | |
vpfxd [,M,,M] | |
vneg.q C210,C210 | |
vpfxd [M,,M,] | |
vneg.q C220,C220 | |
vpfxd [,M,,M] | |
vneg.q C230,C230 | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4Inverse2: | |
move v0,a0 | |
lv.q C000,0(a2) | |
lv.q C010,16(a2) | |
lv.q C020,32(a2) | |
lv.q C030,48(a2) | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C100,C011,C021 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C110,C001,C021 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C120,C001,C011 | |
vpfxs [X,Z,Y,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C130,C001,C011 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C200,C011,C021 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C210,C001,C021 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C220,C001,C011 | |
vpfxs [Z,Y,X,W] | |
vpfxt [Y,X,Z,W] | |
vmul.t C230,C001,C011 | |
vpfxt [Z,Y,X,W] | |
vdot.t S100,C100,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S110,C110,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S120,C120,C031 | |
vpfxt [Z,Y,X,W] | |
vdot.t S130,C130,C021 | |
vpfxt [X,Z,Y,W] | |
vdot.t S200,C200,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S210,C210,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S220,C220,C031 | |
vpfxt [X,Z,Y,W] | |
vdot.t S230,C230,C021 | |
vsub.q R100,R100,R200 | |
vmul.q R101,R000,R100 | |
vpfxs [X,-Y,Z,-W] | |
vfad.q S200,R101 | |
vcmp.s EZ,S200,S200 | |
mfv t0,S200 | |
bvt pos_0881CAC4 (CC[0]) | |
nop | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C100,C020,C030 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C110,C020,C030 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C120,C030,C020 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C130,C030,C020 | |
vsub.q C100,C100,C120 | |
vsub.q C110,C110,C130 | |
vmov.p R122,R100 | |
vmov.p R123,C110 | |
vpfxs [X,-Y,Z,W] | |
vmov.t R110,C101 | |
vpfxs [X,-Y,Z,W] | |
vmov.p R121,C112 | |
vtfm4.q R200,E100,C010 | |
vtfm4.q R201,E100,C000 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C100,C000,C010 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C110,C000,C010 | |
vpfxs [0,Z,Y,Y] | |
vpfxt [0,W,W,Z] | |
vmul.q C120,C010,C000 | |
vpfxs [X,0,W,Z] | |
vpfxt [Y,0,X,X] | |
vmul.q C130,C010,C000 | |
vsub.q C100,C100,C120 | |
vsub.q C110,C110,C130 | |
vmov.p R122,R100 | |
vmov.p R123,C110 | |
vpfxs [X,-Y,Z,W] | |
vmov.t R110,C101 | |
vpfxs [X,-Y,Z,W] | |
vmov.p R121,C112 | |
vtfm4.q R202,E100,C030 | |
vtfm4.q R203,E100,C020 | |
vpfxd [M,,M,] | |
vneg.q C200,C200 | |
vpfxd [,M,,M] | |
vneg.q C210,C210 | |
vpfxd [M,,M,] | |
vneg.q C220,C220 | |
vpfxd [,M,,M] | |
vneg.q C230,C230 | |
mtv t0,S000 | |
vrcp.s S000,S000 | |
vmscl.q E200,E200,S000 | |
sv.q C200,0(a0) | |
sv.q C210,16(a0) | |
sv.q C220,32(a0) | |
sv.q C230,48(a0) | |
pos_0881CAC4: | |
bnel a1,zero,pos_0881CACC | |
sw t0,0x0(a1) | |
pos_0881CACC: | |
jr ra | |
nop | |
sceVfpuMatrix4DropShadow: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C200,0(a2) | |
vdot.t S210,C200,C200 | |
vzero.s S211 | |
vcmp.s EZ,S210,S210 | |
vrsq.s S210,S210 | |
vcmovt.s S210,S211,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,-1:1] | |
vscl.q C200,C200,S210 | |
vdot.q S110,C100,C200 | |
vneg.q C210,C200 | |
vscl.q C000,C100,S210 | |
vscl.q C010,C100,S211 | |
vscl.q C020,C100,S212 | |
vscl.q C030,C100,S213 | |
vadd.s S000,S000,S110 | |
vadd.s S011,S011,S110 | |
vadd.s S022,S022,S110 | |
vadd.s S033,S033,S110 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuMatrix4NormalizeXYZ: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C010,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
vzero.t R003 | |
vcrsp.t C020,C100,C010 | |
vcrsp.t C000,C010,C020 | |
vdot.t S100,C000,C000 | |
vdot.t S101,C010,C010 | |
vdot.t S102,C020,C020 | |
vrsq.t C110,C100 | |
vscl.t C000,C000,S110 | |
vscl.t C010,C010,S111 | |
vscl.t C020,C020,S112 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C130,48(a0) | |
jr ra | |
nop | |
sceVfpuScalarAbs: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vabs.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarAcos: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,Sqrt(1/2) | |
vcst.s S002,PI/2 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vmul.s S003,S000,S000 | |
vsgn.s S001,S000 | |
bvtl pos_0881CBF0 (CC[0]) | |
vasin.s S000,S000 | |
vocp.s S003,S003 | |
vsqrt.s S003,S003 | |
vasin.s S003,S003 | |
vocp.s S000,S003 | |
vmul.s S000,S000,S001 | |
pos_0881CBF0: | |
vocp.s S000,S000 | |
vmul.s S000,S000,S002 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarAsin: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,Sqrt(1/2) | |
vcst.s S002,PI/2 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vmul.s S003,S000,S000 | |
vsgn.s S001,S000 | |
bvtl pos_0881CC48 (CC[0]) | |
vasin.s S000,S000 | |
vocp.s S003,S003 | |
vsqrt.s S003,S003 | |
vmul.s S002,S002,S001 | |
vasin.s S003,S003 | |
vocp.s S000,S003 | |
pos_0881CC48: | |
vmul.s S000,S000,S002 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarAtan: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcmp.s EN,S000,S000 | |
vmul.s S001,S000,S000 | |
bvt pos_0881CCCC (CC[0]) | |
vone.s S002 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S002 | |
vadd.s S003,S001,S002 | |
vcst.s S002,PI/2 | |
bvfl pos_0881CCA0 (CC[0]) | |
vrcp.s S003,S003 | |
vrsq.s S003,S003 | |
vmul.s S000,S000,S003 | |
b pos_0881CCC8 | |
vasin.s S000,S000 | |
pos_0881CCA0: | |
vmul.s S003,S001,S003 | |
vsgn.s S001,S000 | |
vcmp.s ES,S003,S003 | |
vsocp.s S012,S003 | |
vsqrt.s S003,S012 | |
vmul.s S002,S002,S001 | |
bvtl pos_0881CCC8 (CC[0]) | |
vone.s S000 | |
vasin.s S003,S003 | |
vocp.s S000,S003 | |
pos_0881CCC8: | |
vmul.s S000,S000,S002 | |
pos_0881CCCC: | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarAtan2: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
swc1 f13,0x8(sp) | |
lv.s S000,4(sp) | |
lv.s S001,8(sp) | |
vcmp.p ES,C000,C000 | |
vcst.s S002,PI/2 | |
bvt pos_0881CD48 (CC[4]) | |
vrcp.s S003,S001 | |
vmul.s S003,S000,S003 | |
vcmp.s EN,S003,S003 | |
bvt pos_0881CDC0 (CC[0]) | |
vmov.s S010,S003 | |
vcmp.s ES,S003,S003 | |
bvtl pos_0881CD90 (CC[0]) | |
vsgn.s S010,S000 | |
vmul.s S011,S003,S003 | |
vone.s S003 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S010,S003 | |
vadd.s S003,S011,S003 | |
bvfl pos_0881CD7C (CC[0]) | |
vrcp.s S003,S003 | |
vrsq.s S003,S003 | |
vmul.s S010,S010,S003 | |
b pos_0881CD90 | |
vasin.s S010,S010 | |
pos_0881CD48: | |
vfim.s S010,-1.000000 | |
bvt pos_0881CDC0 (CC[5]) | |
vrsq.s S010,S010 | |
vcmp.p EN,C000,C000 | |
bvt pos_0881CDC0 (CC[4]) | |
vcmp.p EI,C000,C000 | |
vsgn.s S000,S000 | |
vcst.s S002,PI/4 | |
bvt pos_0881CDB4 (CC[0]) | |
vone.s S010 | |
vsgn.s S011,S001 | |
b pos_0881CDB4 | |
vsub.s S010,S010,S011 | |
pos_0881CD7C: | |
vmul.s S003,S011,S003 | |
vocp.s S003,S003 | |
vsqrt.s S003,S003 | |
vasin.s S003,S003 | |
vocp.s S010,S003 | |
pos_0881CD90: | |
vpfxd [,0:1,M,M] | |
vpfxs [X,-Y,Z,W] | |
vsgn.p C000,C000 | |
vcmp.s EZ,S001,S001 | |
bvt pos_0881CDB4 (CC[0]) | |
nop | |
vpfxs [2,Y,Z,W] | |
vpfxt [|X|,Y,Z,W] | |
vsub.s S010,S010,S010 | |
pos_0881CDB4: | |
vpfxs [|X|,Y,Z,W] | |
vmul.s S010,S010,S000 | |
vmul.s S010,S010,S002 | |
pos_0881CDC0: | |
sv.s S010,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarCeil: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vf2iu.s S000,S000,0 | |
vi2f.s S000,S000,0 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarCos: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,2/PI | |
vmul.s S000,S000,S001 | |
vcos.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarExp: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,Log2(e) | |
vmul.s S000,S000,S001 | |
vexp2.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarFloor: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vf2id.s S000,S000,0 | |
vi2f.s S000,S000,0 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarLog: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vlog2.s S000,S000 | |
vcst.s S001,Log2(e) | |
vdiv.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarLog2: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vlog2.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarLog10: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vlog2.s S000,S000 | |
vcst.s S001,Log2(10) | |
vdiv.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarMax: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
swc1 f13,0x8(sp) | |
lv.s S000,4(sp) | |
lv.s S001,8(sp) | |
vmax.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarMin: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
swc1 f13,0x8(sp) | |
lv.s S000,4(sp) | |
lv.s S001,8(sp) | |
vmin.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarPow: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
swc1 f13,0x8(sp) | |
lv.s S000,4(sp) | |
lv.s S001,8(sp) | |
vlog2.s S000,S000 | |
vmul.s S000,S000,S001 | |
vexp2.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarPow2: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vexp2.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarRound: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vf2in.s S000,S000,0 | |
vi2f.s S000,S000,0 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarRsqrt: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vrsq.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarSin: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,2/PI | |
vmul.s S000,S000,S001 | |
vsin.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarSqrt: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vsqrt.s S000,S000 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarTan: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vcst.s S001,2/PI | |
vmul.s S000,S000,S001 | |
vrot.p C002,S000,[C,S] | |
vdiv.s S000,S003,S002 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuScalarTrunc: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x4(sp) | |
lv.s S000,4(sp) | |
vf2iz.s S000,S000,0 | |
vi2f.s S000,S000,0 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuColorToRGB565: | |
lwc1 f1,0x0(a0) | |
mtc1 zero,f2 | |
c.lt f1,f2 | |
nop | |
bc1t pos_0881D088 | |
li a1,0 | |
lui a1,0x88E | |
lwc1 f3,-0x4554(a1) | |
li a2,0x1F | |
mul.s f2,f1,f3 | |
trunc.w.s f1,f2 | |
mfc1 v1,f1 | |
min a1,v1,a2 | |
pos_0881D088: | |
lwc1 f1,0x4(a0) | |
mtc1 zero,f4 | |
c.lt f1,f4 | |
nop | |
bc1t pos_0881D0BC | |
li v1,0 | |
lui t1,0x88E | |
lwc1 f7,-0x4550(t1) | |
li t0,0x3F | |
mul.s f6,f1,f7 | |
trunc.w.s f5,f6 | |
mfc1 a3,f5 | |
min v1,a3,t0 | |
pos_0881D0BC: | |
lwc1 f1,0x8(a0) | |
mtc1 zero,f8 | |
c.lt f1,f8 | |
nop | |
bc1t pos_0881D0F0 | |
li a0,0 | |
lui a0,0x88E | |
lwc1 f11,-0x4554(a0) | |
li t3,0x1F | |
mul.s f10,f1,f11 | |
trunc.w.s f9,f10 | |
mfc1 t2,f9 | |
min a0,t2,t3 | |
pos_0881D0F0: | |
sll v0,v1,0x5 | |
sll t6,a0,0xB | |
or t5,t6,v0 | |
or t4,t5,a1 | |
jr ra | |
andi v0,t4,0xFFFF | |
sceVfpuColorSet: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
swc1 f13,0x4(a0) | |
swc1 f14,0x8(a0) | |
jr ra | |
swc1 f15,0xC(a0) | |
sceVfpuColorSetRGB: | |
move v0,a0 | |
swc1 f12,0x0(a0) | |
swc1 f13,0x4(a0) | |
jr ra | |
swc1 f14,0x8(a0) | |
sceVfpuColorCopy: | |
lwc1 f4,0xC(a1) | |
lwc1 f1,0x0(a1) | |
lwc1 f2,0x4(a1) | |
lwc1 f3,0x8(a1) | |
move v0,a0 | |
swc1 f1,0x0(a0) | |
swc1 f2,0x4(a0) | |
swc1 f3,0x8(a0) | |
jr ra | |
swc1 f4,0xC(a0) | |
sceVfpuColorZero: | |
move v0,a0 | |
sw zero,0x0(a0) | |
sw zero,0x4(a0) | |
sw zero,0x8(a0) | |
jr ra | |
sw zero,0xC(a0) | |
sceVfpuColorToRGBA8888: | |
lv.q C000,0(a0) | |
vsat0.q C000,C000 | |
viim.s S010,255 | |
vscl.q C000,C000,S010 | |
vf2iz.q C000,C000,23 | |
vi2uc.q S000,C000 | |
mfv v0,S000 | |
jr ra | |
nop | |
sceVfpuColorToRGBA4444: | |
lv.q C000,0(a0) | |
vsat0.q C000,C000 | |
viim.s S010,15 | |
vscl.q C000,C000,S010 | |
vf2iz.q C000,C000,0 | |
mfv v1,S000 | |
mfv t0,S001 | |
mfv t1,S002 | |
mfv t2,S003 | |
ins v1,t0,0x4,0x4 | |
ins v1,t1,0x8,0x4 | |
ins v1,t2,0xC,0x4 | |
jr ra | |
andi v0,v1,0xFFFF | |
sceVfpuColorToRGBA5551: | |
lwc1 f1,0xC(a0) | |
lv.q C000,0(a0) | |
vsat0.q C000,C000 | |
viim.s S010,31 | |
vscl.t C000,C000,S010 | |
vf2iz.t C000,C000,0 | |
mfv v1,S000 | |
mfv t0,S001 | |
mfv t1,S002 | |
c.le f1,f12 | |
ins v1,t0,0x5,0x5 | |
ins v1,t1,0xA,0x5 | |
li t0,0x8000 | |
bc1tl pos_0881D20C | |
li t0,0 | |
pos_0881D20C: | |
or v1,v1,t0 | |
jr ra | |
andi v0,v1,0xFFFF | |
sceVfpuColorFromRGBA8888: | |
move v0,a0 | |
mtv a1,S010 | |
vuc2i.s S000,S010 | |
vi2f.q C000,C000,31 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorFromRGBA4444: | |
andi v1,a1,0xFFFF | |
move v0,a0 | |
ext t0,v1,0x0,0x4 | |
ext t1,v1,0x4,0x4 | |
ext t2,v1,0x8,0x4 | |
ext t3,v1,0xC,0x4 | |
lui at,0x3D88 | |
ori at,at,0x8889 | |
mtv at,S010 | |
mtv t0,S000 | |
mtv t1,S001 | |
mtv t2,S002 | |
mtv t3,S003 | |
vi2f.q C000,C000,0 | |
vscl.q C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorFromRGBA5551: | |
andi v1,a1,0xFFFF | |
move v0,a0 | |
ext t0,v1,0x0,0x5 | |
ext t1,v1,0x5,0x5 | |
ext t2,v1,0xA,0x5 | |
lui at,0x3D04 | |
ori at,at,0x2108 | |
mtv at,S010 | |
mtv t0,S000 | |
mtv t1,S001 | |
mtv t2,S002 | |
vi2f.q C000,C000,0 | |
vscl.q C000,C000,S010 | |
mfc1 t1,f12 | |
andi t0,v1,0x8000 | |
movz t1,zero,t0 | |
sv.q C000,0(a0) | |
sw t1,0xC(a0) | |
jr ra | |
nop | |
sceVfpuColorFromRGB565: | |
andi a2,a1,0xFFFF | |
ext v0,a2,0x1,0x6 | |
srl t0,a2,0xB | |
andi a3,a2,0x1F | |
mtc1 v0,f5 | |
mtc1 t0,f2 | |
mtc1 a3,f9 | |
cvt.s.w f8,f5 | |
cvt.s.w f4,f2 | |
cvt.s.w f7,f9 | |
lui a1,0x88E | |
lui v1,0x88E | |
lwc1 f3,-0x454C(a1) | |
lwc1 f1,-0x4548(v1) | |
move v0,a0 | |
mul.s f6,f4,f3 | |
mul.s f5,f8,f1 | |
mul.s f0,f7,f3 | |
swc1 f12,0xC(a0) | |
swc1 f6,0x8(a0) | |
swc1 f0,0x0(a0) | |
jr ra | |
swc1 f5,0x4(a0) | |
sceVfpuColorAdd: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vadd.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorAddRGB: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
vadd.t C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorSub: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vsub.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorSubRGB: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
vsub.t C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorMul: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vmul.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorMulRGB: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
vmul.t C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorNeg: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vocp.q C000,C000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorNegRGB: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vocp.t C000,C000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorLerp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S030 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vsub.q C000,C020,C010 | |
vscl.q C000,C000,S030 | |
vadd.q C010,C010,C000 | |
sv.q C010,0(a0) | |
jr ra | |
nop | |
sceVfpuColorLerpRGB: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S030 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vsub.t C000,C020,C010 | |
vscl.t C000,C000,S030 | |
vadd.t C010,C010,C000 | |
sv.q C010,0(a0) | |
jr ra | |
nop | |
sceVfpuColorScale: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S020 | |
lv.q C010,0(a1) | |
vscl.q C000,C010,S020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorScaleRGB: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S010 | |
lv.q C000,0(a1) | |
vscl.t C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorClamp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.q C000,0(a1) | |
vpfxt [X,X,X,X] | |
vmax.q C000,C000,C010 | |
vpfxt [Y,Y,Y,Y] | |
vmin.q C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorClampRGB: | |
move v0,a0 | |
mfc1 t0,f12 | |
mfc1 t1,f13 | |
mtv t0,S010 | |
mtv t1,S011 | |
lv.q C000,0(a1) | |
vpfxt [X,X,X,W] | |
vmax.t C000,C000,C010 | |
vpfxt [Y,Y,Y,W] | |
vmin.t C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorMax: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vmax.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorMin: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vmin.q C000,C000,C010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorIsEqual: | |
lv.q C000,0(a0) | |
lv.q C010,0(a1) | |
li v0,0 | |
vcmp.q EQ,C000,C010 | |
bvtl pos_0881D550 (CC[5]) | |
li v0,0x1 | |
pos_0881D550: | |
jr ra | |
nop | |
sceVfpuColorIsZero: | |
lw v0,0x4(a0) | |
lw a1,0x0(a0) | |
lw t0,0x8(a0) | |
lw a3,0xC(a0) | |
or a2,a1,v0 | |
or a0,a2,t0 | |
or v1,a0,a3 | |
ins v1,zero,0x1F,0x1 | |
jr ra | |
sltiu v0,v1,0x1 | |
sceVfpuColorNormalize: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vsrt4.q C010,C000 | |
vzero.s S020 | |
vsrt3.q C010,C010 | |
vcmp.s LE,S011,S020 | |
vrcp.s S010,S010 | |
vcmovt.s S010,S020,CC[0] | |
vpfxd [0:1,0:1,0:1,0:1] | |
vscl.q C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuColorNormalizeRGB: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vzero.s S003 | |
vsrt4.q C010,C000 | |
vzero.s S020 | |
vsrt3.q C010,C010 | |
vcmp.s LE,S010,S020 | |
vrcp.s S010,S010 | |
vcmovt.s S010,S020,CC[0] | |
vpfxd [0:1,0:1,0:1,M] | |
vscl.t C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuRandPeekFloat: | |
addiu sp,sp,-0x40 | |
sw ra,0x30(sp) | |
jal sceVfpuRandSaveContext | |
move a0,sp | |
vrndf1.s S000 | |
sv.s S000,32(sp) | |
jal sceVfpuRandRestoreContext | |
move a0,sp | |
lwc1 f0,0x20(sp) | |
lw ra,0x30(sp) | |
jr ra | |
addiu sp,sp,0x40 | |
sceVfpuRandFloat: | |
addiu sp,sp,-0x10 | |
lui v1,0x88E | |
lwc1 f0,-0x4544(v1) | |
vrndf1.s S000 | |
sv.s S000,0(sp) | |
lwc1 f3,0x0(sp) | |
sub.s f2,f3,f0 | |
mul.s f0,f2,f12 | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuRandPi: | |
addiu sp,sp,-0x10 | |
vrndf1.s S000 | |
vcst.s S001,PI | |
vpfxt [1,Y,Z,W] | |
vsub.s S000,S000,S000 | |
vmul.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuRandTwopi: | |
addiu sp,sp,-0x10 | |
vrndf1.s S000 | |
vcst.s S001,2/PI | |
vpfxt [1,Y,Z,W] | |
vsub.s S000,S000,S000 | |
vmul.s S000,S000,S001 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuRandVector: | |
move v0,a0 | |
vrndf1.q C000 | |
vpfxt [1,1,1,1] | |
vsub.q C000,C000,C000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuRandInt: | |
addiu sp,sp,-0x10 | |
lui v1,0x88E | |
vrndf1.s S000 | |
sv.s S000,0(sp) | |
mtc1 a0,f5 | |
lwc1 f2,0x0(sp) | |
lwc1 f0,-0x4540(v1) | |
cvt.s.w f4,f5 | |
sub.s f3,f2,f0 | |
mul.s f1,f3,f4 | |
trunc.w.s f2,f1 | |
mfc1 v0,f2 | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuDropShadowMatrix: | |
mov.s f16,f12 | |
beq a2,zero,pos_0881D79C | |
mov.s f15,f13 | |
lwc1 f9,0x0(a1) | |
lwc1 f4,0x4(a1) | |
lwc1 f7,0x8(a1) | |
mul.s f5,f12,f9 | |
mul.s f13,f13,f4 | |
mul.s f6,f14,f7 | |
lui v1,0x88E | |
lwc1 f3,-0x453C(v1) | |
add.s f1,f5,f13 | |
neg.s f11,f9 | |
mul.s f8,f15,f9 | |
neg.s f12,f4 | |
add.s f2,f1,f6 | |
neg.s f18,f7 | |
mul.s f1,f14,f9 | |
mul.s f10,f16,f7 | |
sub.s f0,f3,f2 | |
mul.s f9,f16,f4 | |
mul.s f2,f14,f4 | |
mul.s f19,f15,f7 | |
sub.s f17,f0,f3 | |
add.s f3,f5,f0 | |
add.s f5,f13,f0 | |
add.s f13,f6,f0 | |
swc1 f8,0x10(a0) | |
swc1 f3,0x0(a0) | |
swc1 f1,0x20(a0) | |
swc1 f11,0x30(a0) | |
swc1 f9,0x4(a0) | |
swc1 f5,0x14(a0) | |
swc1 f2,0x24(a0) | |
swc1 f12,0x34(a0) | |
swc1 f10,0x8(a0) | |
swc1 f19,0x18(a0) | |
swc1 f13,0x28(a0) | |
swc1 f18,0x38(a0) | |
swc1 f16,0xC(a0) | |
swc1 f15,0x1C(a0) | |
swc1 f14,0x2C(a0) | |
swc1 f17,0x3C(a0) | |
pos_0881D794: | |
jr ra | |
move v0,a0 | |
pos_0881D79C: | |
lwc1 f2,0x0(a1) | |
lwc1 f3,0x4(a1) | |
lwc1 f0,0x8(a1) | |
mul.s f7,f12,f2 | |
mul.s f8,f13,f3 | |
mul.s f19,f14,f0 | |
lui a1,0x88E | |
lwc1 f6,-0x4538(a1) | |
add.s f11,f7,f8 | |
mul.s f17,f12,f0 | |
neg.s f5,f0 | |
neg.s f18,f2 | |
add.s f9,f11,f19 | |
mul.s f11,f15,f0 | |
mul.s f13,f14,f3 | |
neg.s f10,f3 | |
div.s f0,f6,f9 | |
sw zero,0xC(a0) | |
sw zero,0x1C(a0) | |
sw zero,0x2C(a0) | |
sub.s f4,f7,f9 | |
sub.s f12,f8,f9 | |
neg.s f1,f9 | |
sub.s f8,f19,f9 | |
mul.s f19,f15,f2 | |
mul.s f9,f14,f2 | |
mul.s f15,f16,f3 | |
mul.s f6,f0,f4 | |
mul.s f7,f0,f12 | |
mul.s f4,f0,f19 | |
mul.s f2,f0,f9 | |
mul.s f3,f0,f15 | |
mul.s f9,f0,f18 | |
mul.s f14,f0,f1 | |
mul.s f18,f0,f17 | |
mul.s f12,f0,f13 | |
mul.s f19,f0,f10 | |
mul.s f17,f0,f11 | |
mul.s f16,f0,f8 | |
mul.s f15,f0,f5 | |
swc1 f6,0x0(a0) | |
swc1 f4,0x10(a0) | |
swc1 f2,0x20(a0) | |
swc1 f9,0x30(a0) | |
swc1 f3,0x4(a0) | |
swc1 f7,0x14(a0) | |
swc1 f12,0x24(a0) | |
swc1 f19,0x34(a0) | |
swc1 f18,0x8(a0) | |
swc1 f17,0x18(a0) | |
swc1 f16,0x28(a0) | |
swc1 f15,0x38(a0) | |
j pos_0881D794 | |
swc1 f14,0x3C(a0) | |
sceVfpuLookAtMatrix: | |
move v0,a0 | |
lv.q C000,0(a1) | |
lv.q C010,0(a2) | |
lv.q C020,0(a3) | |
vsub.q R102,C000,C010 | |
vdot.t S200,R102,R102 | |
vzero.s S203 | |
vcmp.s EZ,S200,S200 | |
vrsq.s S200,S200 | |
vcmovt.s S200,S203,CC[0] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t R102,R102,S200 | |
vcrsp.t R100,C020,R102 | |
vcrsp.t R101,R102,R100 | |
vdot.t S200,R100,R100 | |
vdot.t S201,R101,R101 | |
vcmp.p EZ,C200,C200 | |
vrsq.p C200,C200 | |
vcmovt.s S200,S203,CC[0] | |
vcmovt.s S201,S203,CC[1] | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t R100,R100,S200 | |
vpfxd [-1:1,-1:1,-1:1,M] | |
vscl.t R101,R101,S201 | |
vidt.q R103 | |
vzero.t C130 | |
vneg.t C000,C000 | |
vhtfm3.t C010,E100,C000 | |
vmov.t C130,C010 | |
sv.q C100,0(a0) | |
sv.q C110,16(a0) | |
sv.q C120,32(a0) | |
sv.q C130,48(a0) | |
jr ra | |
nop | |
sceVfpuPerspectiveMatrix: | |
addiu sp,sp,-0x10 | |
swc1 f12,0x0(sp) | |
move v0,a0 | |
swc1 f13,0x4(sp) | |
swc1 f14,0x8(sp) | |
swc1 f15,0xC(sp) | |
vmzero.q E100 | |
vcst.s S010,1/PI | |
lv.s S000,0(sp) | |
lv.s S001,4(sp) | |
lv.s S002,8(sp) | |
lv.s S003,12(sp) | |
vmul.s S000,S000,S010 | |
vrcp.s S001,S001 | |
vsub.s S010,S002,S003 | |
vadd.s S011,S002,S003 | |
vmul.s S012,S002,S003 | |
vrot.p C020,S000,[C,S] | |
vrcp.s S021,S021 | |
vrcp.s S010,S010 | |
vmul.s S122,S010,S011 | |
vmul.s S013,S012,S010 | |
vadd.s S132,S013,S013 | |
vmul.s S111,S020,S021 | |
vmul.s S100,S111,S001 | |
vfim.s S123,-1.000000 | |
vzero.s S133 | |
sv.q C100,0(a0) | |
sv.q C110,16(a0) | |
sv.q C120,32(a0) | |
sv.q C130,48(a0) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuOrthoMatrix: | |
addiu sp,sp,-0x20 | |
swc1 f12,0x0(sp) | |
move v0,a0 | |
swc1 f13,0x4(sp) | |
swc1 f14,0x8(sp) | |
swc1 f15,0xC(sp) | |
swc1 f16,0x10(sp) | |
swc1 f17,0x14(sp) | |
vmidt.q E100 | |
lv.s S000,0(sp) | |
lv.s S001,4(sp) | |
lv.s S002,8(sp) | |
lv.s S003,12(sp) | |
lv.s S010,16(sp) | |
lv.s S011,20(sp) | |
vfim.s S012,2.000000 | |
vbfy1.q C000,C000 | |
vbfy1.p C010,C010 | |
vrcp.s S001,S001 | |
vrcp.s S003,S003 | |
vrcp.s S011,S011 | |
vpfxs [-X,Y,Z,W] | |
vmul.s S100,S012,S001 | |
vpfxs [-X,Y,Z,W] | |
vmul.s S111,S012,S003 | |
vmul.s S122,S012,S011 | |
vmul.s S130,S000,S001 | |
vmul.s S131,S002,S003 | |
vmul.s S132,S010,S011 | |
sv.q C100,0(a0) | |
sv.q C110,16(a0) | |
sv.q C120,32(a0) | |
sv.q C130,48(a0) | |
jr ra | |
addiu sp,sp,0x20 | |
sceVfpuFrustumMatrix: | |
addiu sp,sp,-0x20 | |
swc1 f12,0x0(sp) | |
move v0,a0 | |
swc1 f13,0x4(sp) | |
swc1 f14,0x8(sp) | |
swc1 f15,0xC(sp) | |
swc1 f16,0x10(sp) | |
swc1 f17,0x14(sp) | |
vmzero.q E100 | |
lv.s S000,4(sp) | |
lv.s S001,0(sp) | |
lv.s S002,12(sp) | |
lv.s S003,8(sp) | |
lv.s S010,16(sp) | |
lv.s S011,20(sp) | |
vadd.s S012,S010,S010 | |
vmul.s S013,S010,S011 | |
vbfy1.q C000,C000 | |
vbfy1.p C010,C010 | |
vadd.s S013,S013,S013 | |
vrcp.s S001,S001 | |
vrcp.s S003,S003 | |
vrcp.s S011,S011 | |
vmul.s S100,S012,S001 | |
vmul.s S111,S012,S003 | |
vmul.s S120,S000,S001 | |
vmul.s S121,S002,S003 | |
vmul.s S122,S010,S011 | |
vfim.s S123,-1.000000 | |
vmul.s S132,S013,S011 | |
sv.q C100,0(a0) | |
sv.q C110,16(a0) | |
sv.q C120,32(a0) | |
sv.q C130,48(a0) | |
jr ra | |
addiu sp,sp,0x20 | |
sceVfpuCameraMatrix: | |
addiu sp,sp,-0x70 | |
sw s3,0x5C(sp) | |
move s3,a0 | |
move a0,sp | |
sw s2,0x58(sp) | |
move s2,a2 | |
sw s1,0x54(sp) | |
addiu s1,sp,0x40 | |
sw s0,0x50(sp) | |
move s0,a3 | |
sw ra,0x64(sp) | |
sw s4,0x60(sp) | |
jal sceVfpuMatrix4Unit | |
move s4,a1 | |
move a2,s2 | |
move a1,s0 | |
jal sceVfpuVector4OuterProductXYZ | |
move a0,s1 | |
move a0,sp | |
move a1,s1 | |
jal sceVfpuVector4NormalizeXYZ | |
addiu s1,sp,0x20 | |
move a1,s2 | |
jal sceVfpuVector4NormalizeXYZ | |
move a0,s1 | |
addiu a0,sp,0x10 | |
move a1,s1 | |
jal sceVfpuVector4OuterProductXYZ | |
move a2,sp | |
move a2,s4 | |
move a0,sp | |
jal sceVfpuMatrix4Transfer | |
move a1,sp | |
move a0,s3 | |
jal sceVfpuMatrix4Inverse | |
move a1,sp | |
move v0,s3 | |
lw ra,0x64(sp) | |
lw s4,0x60(sp) | |
lw s3,0x5C(sp) | |
lw s2,0x58(sp) | |
lw s1,0x54(sp) | |
lw s0,0x50(sp) | |
jr ra | |
addiu sp,sp,0x70 | |
sceVfpuViewScreenMatrix: | |
addiu sp,sp,-0x70 | |
lwc1 f8,0x70(sp) | |
sub.s f7,f18,f17 | |
mul.s f5,f18,f19 | |
mul.s f6,f8,f19 | |
mul.s f4,f17,f8 | |
sub.s f2,f8,f19 | |
swc1 f21,0x54(sp) | |
mul.s f3,f6,f7 | |
sub.s f1,f4,f5 | |
swc1 f20,0x50(sp) | |
div.s f21,f3,f2 | |
sw ra,0x44(sp) | |
sw s0,0x40(sp) | |
move s0,a0 | |
swc1 f26,0x68(sp) | |
mov.s f26,f16 | |
swc1 f25,0x64(sp) | |
mov.s f25,f15 | |
swc1 f24,0x60(sp) | |
mov.s f24,f13 | |
swc1 f23,0x5C(sp) | |
mov.s f23,f14 | |
swc1 f22,0x58(sp) | |
mov.s f22,f12 | |
jal sceVfpuMatrix4Unit | |
div.s f20,f1,f2 | |
lui v0,0x88E | |
lwc1 f1,-0x4534(v0) | |
swc1 f22,0x14(s0) | |
move a0,sp | |
swc1 f1,0x2C(s0) | |
swc1 f1,0x38(s0) | |
swc1 f22,0x0(s0) | |
sw zero,0x28(s0) | |
jal sceVfpuMatrix4Unit | |
sw zero,0x3C(s0) | |
move a0,s0 | |
move a2,s0 | |
move a1,sp | |
swc1 f24,0x0(sp) | |
swc1 f23,0x14(sp) | |
swc1 f21,0x28(sp) | |
swc1 f25,0x30(sp) | |
swc1 f26,0x34(sp) | |
jal sceVfpuMatrix4Mul | |
swc1 f20,0x38(sp) | |
move v0,s0 | |
lw ra,0x44(sp) | |
lw s0,0x40(sp) | |
lwc1 f26,0x68(sp) | |
lwc1 f25,0x64(sp) | |
lwc1 f24,0x60(sp) | |
lwc1 f23,0x5C(sp) | |
lwc1 f22,0x58(sp) | |
lwc1 f21,0x54(sp) | |
lwc1 f20,0x50(sp) | |
jr ra | |
addiu sp,sp,0x70 | |
sceVfpuRotTransPers: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C110,16(a1) | |
lv.q C120,32(a1) | |
lv.q C130,48(a1) | |
lv.q C200,0(a2) | |
vtfm4.q C000,E100,C200 | |
vrcp.s S003,S003 | |
vscl.t C000,C000,S003 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuRotTransPersN: | |
move v1,t0 | |
lv.q C000,0(a2) | |
lv.q C010,16(a2) | |
lv.q C020,32(a2) | |
lv.q C030,48(a2) | |
pos_0881DC84: | |
lv.q C100,0(a3) | |
addiu a3,a3,0x10 | |
vtfm4.q C200,E000,C100 | |
vrcp.s S203,S203 | |
vscl.t C200,C200,S203 | |
vf2in.t C200,C200,4 | |
mfv t0,S200 | |
mfv t1,S201 | |
mfv t2,S202 | |
addiu v1,v1,-0x1 | |
sh t0,0x0(a0) | |
sh t1,0x2(a0) | |
sh t2,0x4(a0) | |
bne zero,v1,pos_0881DC84 | |
addu a0,a0,a1 | |
jr ra | |
li v0,0 | |
sceVfpuQuaternionFromMatrix: | |
addiu sp,sp,-0x10 | |
sw s1,0x4(sp) | |
lui v1,0x88E | |
sw s0,0x0(sp) | |
move s0,a1 | |
sw ra,0x8(sp) | |
lwc1 f2,0x0(a1) | |
lwc1 f3,0x14(a1) | |
lwc1 f1,0x28(a1) | |
lui a1,0x88E | |
add.s f6,f2,f3 | |
lwc1 f4,-0x4530(a1) | |
add.s f5,f6,f1 | |
add.s f12,f5,f4 | |
lwc1 f5,-0x452C(v1) | |
c.lt f5,f12 | |
nop | |
bc1f pos_0881DDA8 | |
move s1,a0 | |
sqrt.s f1,f12 | |
c.eq f1,f1 | |
nop | |
bc1f pos_0881DD98 | |
nop | |
pos_0881DD28: | |
lui a2,0x88E | |
lwc1 f14,-0x4528(a2) | |
lui a0,0x88E | |
lwc1 f13,-0x4524(a0) | |
mul.s f7,f1,f14 | |
lwc1 f10,0x10(s0) | |
lwc1 f9,0x4(s0) | |
lwc1 f12,0x18(s0) | |
div.s f11,f13,f7 | |
lwc1 f2,0x24(s0) | |
lwc1 f0,0x20(s0) | |
lwc1 f1,0x8(s0) | |
sub.s f3,f9,f10 | |
sub.s f8,f12,f2 | |
sub.s f4,f0,f1 | |
mul.s f10,f8,f11 | |
mul.s f9,f4,f11 | |
mul.s f8,f3,f11 | |
pos_0881DD70: | |
move v0,s1 | |
swc1 f10,0x0(s1) | |
swc1 f9,0x4(s1) | |
swc1 f8,0x8(s1) | |
swc1 f7,0xC(s1) | |
lw ra,0x8(sp) | |
lw s1,0x4(sp) | |
lw s0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
pos_0881DD98: | |
jal sqrtf | |
nop | |
j pos_0881DD28 | |
mov.s f1,f0 | |
pos_0881DDA8: | |
c.lt f3,f2 | |
nop | |
bc1f pos_0881DEB8 | |
nop | |
c.lt f1,f2 | |
nop | |
bc1fl pos_0881DE44 | |
add.s f17,f1,f4 | |
add.s f15,f2,f4 | |
sub.s f7,f15,f3 | |
sub.s f12,f7,f1 | |
sqrt.s f2,f12 | |
c.eq f2,f2 | |
nop | |
bc1f pos_0881DE34 | |
nop | |
pos_0881DDE8: | |
lui t0,0x88E | |
lwc1 f6,-0x4528(t0) | |
lui a3,0x88E | |
lwc1 f4,-0x4524(a3) | |
mul.s f10,f2,f6 | |
lwc1 f11,0x10(s0) | |
lwc1 f3,0x4(s0) | |
lwc1 f18,0x24(s0) | |
div.s f6,f4,f10 | |
lwc1 f19,0x20(s0) | |
lwc1 f5,0x8(s0) | |
lwc1 f17,0x18(s0) | |
add.s f16,f11,f3 | |
add.s f1,f19,f5 | |
sub.s f0,f17,f18 | |
mul.s f9,f16,f6 | |
mul.s f8,f1,f6 | |
pos_0881DE2C: | |
j pos_0881DD70 | |
mul.s f7,f0,f6 | |
pos_0881DE34: | |
jal sqrtf | |
nop | |
j pos_0881DDE8 | |
mov.s f2,f0 | |
pos_0881DE44: | |
sub.s f16,f17,f2 | |
sub.s f12,f16,f3 | |
sqrt.s f1,f12 | |
c.eq f1,f1 | |
nop | |
bc1f pos_0881DEA8 | |
nop | |
pos_0881DE60: | |
lui t4,0x88E | |
lwc1 f6,-0x4528(t4) | |
lui t3,0x88E | |
lwc1 f4,-0x4524(t3) | |
mul.s f8,f1,f6 | |
lwc1 f10,0x8(s0) | |
lwc1 f3,0x20(s0) | |
lwc1 f5,0x24(s0) | |
div.s f6,f4,f8 | |
lwc1 f12,0x18(s0) | |
lwc1 f9,0x10(s0) | |
lwc1 f11,0x4(s0) | |
add.s f19,f3,f10 | |
add.s f18,f5,f12 | |
sub.s f0,f11,f9 | |
mul.s f10,f19,f6 | |
j pos_0881DE2C | |
mul.s f9,f18,f6 | |
pos_0881DEA8: | |
jal sqrtf | |
nop | |
j pos_0881DE60 | |
mov.s f1,f0 | |
pos_0881DEB8: | |
c.lt f1,f3 | |
nop | |
bc1fl pos_0881DE44 | |
add.s f17,f1,f4 | |
add.s f9,f3,f4 | |
sub.s f8,f9,f1 | |
sub.s f12,f8,f2 | |
sqrt.s f1,f12 | |
c.eq f1,f1 | |
nop | |
bc1f pos_0881DF2C | |
nop | |
pos_0881DEE8: | |
lui t2,0x88E | |
lwc1 f15,-0x4528(t2) | |
lui t1,0x88E | |
lwc1 f7,-0x4524(t1) | |
mul.s f9,f1,f15 | |
lwc1 f2,0x4(s0) | |
lwc1 f1,0x10(s0) | |
lwc1 f0,0x24(s0) | |
div.s f6,f7,f9 | |
lwc1 f10,0x20(s0) | |
lwc1 f13,0x8(s0) | |
lwc1 f14,0x18(s0) | |
add.s f12,f1,f2 | |
add.s f1,f0,f14 | |
sub.s f0,f10,f13 | |
j pos_0881DE28 | |
mul.s f10,f12,f6 | |
jal sqrtf | |
nop | |
j pos_0881DEE8 | |
mov.s f1,f0 | |
sceVfpuQuaternionToRotZYX: | |
addiu sp,sp,-0x20 | |
sw s0,0x0(sp) | |
lui v1,0x88E | |
swc1 f22,0x18(sp) | |
sw ra,0x4(sp) | |
swc1 f23,0x1C(sp) | |
swc1 f21,0x14(sp) | |
swc1 f20,0x10(sp) | |
lwc1 f1,0xC(a1) | |
lwc1 f8,0x8(a1) | |
lwc1 f6,0x0(a1) | |
add.s f9,f1,f1 | |
add.s f3,f8,f8 | |
lwc1 f7,0x4(a1) | |
lwc1 f1,-0x4520(v1) | |
mul.s f4,f3,f6 | |
mul.s f0,f9,f7 | |
sub.s f2,f4,f0 | |
neg.s f22,f2 | |
c.le f22,f1 | |
nop | |
bc1f pos_0881DFB0 | |
move s0,a0 | |
lui a0,0x88E | |
lwc1 f5,-0x451C(a0) | |
c.le f5,f22 | |
nop | |
bc1tl pos_0881E02C | |
add.s f12,f6,f6 | |
pos_0881DFB0: | |
add.s f2,f7,f7 | |
add.s f0,f6,f6 | |
mul.s f4,f9,f6 | |
lui a2,0x88E | |
mul.s f23,f2,f8 | |
mul.s f21,f0,f6 | |
lwc1 f20,-0x4518(a2) | |
mul.s f7,f3,f8 | |
sub.s f19,f23,f4 | |
sub.s f18,f20,f21 | |
neg.s f12,f19 | |
jal atan2f | |
sub.s f13,f18,f7 | |
mov.s f12,f22 | |
jal asinf | |
mov.s f23,f0 | |
mov.s f22,f0 | |
mtc1 zero,f0 | |
swc1 f23,0x0(s0) | |
pos_0881DFFC: | |
move v0,s0 | |
swc1 f22,0x4(s0) | |
swc1 f0,0x8(s0) | |
sw zero,0xC(s0) | |
lw ra,0x4(sp) | |
lw s0,0x0(sp) | |
lwc1 f23,0x1C(sp) | |
lwc1 f22,0x18(sp) | |
lwc1 f21,0x14(sp) | |
lwc1 f20,0x10(sp) | |
jr ra | |
addiu sp,sp,0x20 | |
pos_0881E02C: | |
add.s f17,f7,f7 | |
lui a1,0x88E | |
lwc1 f13,-0x4518(a1) | |
mul.s f16,f12,f6 | |
mul.s f10,f3,f8 | |
mul.s f3,f17,f7 | |
mul.s f14,f9,f6 | |
mul.s f11,f9,f8 | |
mul.s f15,f17,f8 | |
sub.s f9,f13,f16 | |
mul.s f8,f12,f7 | |
sub.s f6,f13,f3 | |
add.s f12,f15,f14 | |
sub.s f13,f9,f3 | |
add.s f21,f8,f11 | |
jal atan2f | |
sub.s f20,f6,f10 | |
mov.s f12,f22 | |
jal asinf | |
mov.s f23,f0 | |
mov.s f12,f21 | |
mov.s f13,f20 | |
jal atan2f | |
mov.s f22,f0 | |
j pos_0881DFFC | |
swc1 f23,0x0(s0) | |
sceVfpuQuaternionToRotXYZ: | |
addiu sp,sp,-0x20 | |
sw s0,0x0(sp) | |
lui v1,0x88E | |
swc1 f22,0x18(sp) | |
sw ra,0x4(sp) | |
swc1 f23,0x1C(sp) | |
swc1 f21,0x14(sp) | |
swc1 f20,0x10(sp) | |
lwc1 f1,0xC(a1) | |
lwc1 f5,0x8(a1) | |
lwc1 f6,0x0(a1) | |
add.s f8,f1,f1 | |
add.s f9,f5,f5 | |
lwc1 f7,0x4(a1) | |
lwc1 f1,-0x4514(v1) | |
mul.s f0,f9,f6 | |
mul.s f2,f8,f7 | |
add.s f22,f0,f2 | |
c.le f22,f1 | |
nop | |
bc1f pos_0881E104 | |
move s0,a0 | |
lui a0,0x88E | |
lwc1 f3,-0x4510(a0) | |
c.le f3,f22 | |
nop | |
bc1tl pos_0881E17C | |
add.s f17,f7,f7 | |
pos_0881E104: | |
add.s f3,f6,f6 | |
add.s f1,f7,f7 | |
lui a2,0x88E | |
lwc1 f20,-0x450C(a2) | |
mul.s f21,f3,f6 | |
mul.s f19,f9,f5 | |
mul.s f23,f8,f6 | |
mul.s f2,f1,f5 | |
sub.s f5,f20,f21 | |
add.s f12,f2,f23 | |
jal atan2f | |
sub.s f13,f5,f19 | |
mov.s f12,f22 | |
jal asinf | |
mov.s f23,f0 | |
mov.s f22,f0 | |
mtc1 zero,f0 | |
swc1 f23,0x0(s0) | |
pos_0881E14C: | |
move v0,s0 | |
swc1 f22,0x4(s0) | |
swc1 f0,0x8(s0) | |
sw zero,0xC(s0) | |
lw ra,0x4(sp) | |
lw s0,0x0(sp) | |
lwc1 f23,0x1C(sp) | |
lwc1 f22,0x18(sp) | |
lwc1 f21,0x14(sp) | |
lwc1 f20,0x10(sp) | |
jr ra | |
addiu sp,sp,0x20 | |
pos_0881E17C: | |
add.s f18,f6,f6 | |
mul.s f16,f8,f6 | |
lui a1,0x88E | |
mul.s f15,f17,f5 | |
mul.s f14,f18,f6 | |
mul.s f13,f8,f5 | |
lwc1 f11,-0x450C(a1) | |
mul.s f8,f17,f7 | |
mul.s f12,f18,f7 | |
mul.s f6,f9,f5 | |
sub.s f10,f15,f16 | |
sub.s f9,f11,f14 | |
sub.s f7,f12,f13 | |
sub.s f4,f11,f8 | |
neg.s f12,f10 | |
sub.s f13,f9,f8 | |
neg.s f20,f7 | |
jal atan2f | |
sub.s f21,f4,f6 | |
mov.s f12,f22 | |
jal asinf | |
mov.s f23,f0 | |
mov.s f12,f20 | |
mov.s f13,f21 | |
jal atan2f | |
mov.s f22,f0 | |
j pos_0881E14C | |
swc1 f23,0x0(s0) | |
sceVfpuQuaternionToRotYXZ: | |
addiu sp,sp,-0x30 | |
sw s0,0x0(sp) | |
lui v1,0x88E | |
move s0,a0 | |
sw ra,0x4(sp) | |
swc1 f24,0x20(sp) | |
swc1 f23,0x1C(sp) | |
swc1 f22,0x18(sp) | |
swc1 f21,0x14(sp) | |
swc1 f20,0x10(sp) | |
lwc1 f1,0xC(a1) | |
lwc1 f4,0x4(a1) | |
lwc1 f6,0x8(a1) | |
add.s f8,f1,f1 | |
add.s f2,f4,f4 | |
lwc1 f9,0x0(a1) | |
lwc1 f1,-0x4508(v1) | |
mul.s f5,f2,f6 | |
mul.s f0,f8,f9 | |
sub.s f3,f5,f0 | |
neg.s f7,f3 | |
c.le f7,f1 | |
nop | |
bc1f pos_0881E268 | |
mov.s f12,f7 | |
lui a0,0x88E | |
lwc1 f10,-0x4504(a0) | |
c.le f10,f7 | |
nop | |
bc1tl pos_0881E2E8 | |
add.s f17,f9,f9 | |
pos_0881E268: | |
add.s f24,f6,f6 | |
mul.s f5,f2,f4 | |
mul.s f19,f8,f4 | |
lui a2,0x88E | |
mul.s f18,f24,f9 | |
lwc1 f3,-0x4500(a2) | |
mul.s f22,f24,f6 | |
sub.s f23,f3,f5 | |
sub.s f9,f18,f19 | |
sub.s f20,f23,f22 | |
jal asinf | |
neg.s f21,f9 | |
mov.s f24,f0 | |
mov.s f13,f20 | |
jal atan2f | |
mov.s f12,f21 | |
mov.s f22,f0 | |
mtc1 zero,f0 | |
swc1 f24,0x0(s0) | |
pos_0881E2B4: | |
move v0,s0 | |
swc1 f22,0x4(s0) | |
swc1 f0,0x8(s0) | |
sw zero,0xC(s0) | |
lw ra,0x4(sp) | |
lw s0,0x0(sp) | |
lwc1 f24,0x20(sp) | |
lwc1 f23,0x1C(sp) | |
lwc1 f22,0x18(sp) | |
lwc1 f21,0x14(sp) | |
lwc1 f20,0x10(sp) | |
jr ra | |
addiu sp,sp,0x30 | |
pos_0881E2E8: | |
add.s f16,f6,f6 | |
mul.s f15,f8,f6 | |
mul.s f13,f8,f4 | |
lui a1,0x88E | |
mul.s f8,f17,f9 | |
mul.s f7,f16,f6 | |
lwc1 f6,-0x4500(a1) | |
mul.s f11,f2,f4 | |
mul.s f14,f17,f4 | |
sub.s f2,f6,f8 | |
mul.s f4,f16,f9 | |
add.s f21,f14,f15 | |
sub.s f23,f2,f11 | |
add.s f22,f4,f13 | |
jal asinf | |
sub.s f20,f2,f7 | |
mov.s f13,f23 | |
mov.s f12,f22 | |
jal atan2f | |
mov.s f24,f0 | |
mov.s f12,f21 | |
mov.s f13,f20 | |
jal atan2f | |
mov.s f22,f0 | |
j pos_0881E2B4 | |
swc1 f24,0x0(s0) | |
sceVfpuQuaternionUnit: | |
move v0,a0 | |
vidt.q C030 | |
sv.q C030,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionCopy: | |
lw a3,0x0(a1) | |
move v0,a0 | |
sw a3,0x0(a0) | |
lw a2,0x4(a1) | |
sw a2,0x4(a0) | |
lw v1,0x8(a1) | |
sw v1,0x8(a0) | |
lw a2,0xC(a1) | |
jr ra | |
sw a2,0xC(a0) | |
sceVfpuQuaternionToMatrix: | |
move v0,a0 | |
lv.q C130,0(a1) | |
vpfxs [W,Z,-Y,-X] | |
vmov.q C100,C130 | |
vpfxs [-Z,W,X,-Y] | |
vmov.q C110,C130 | |
vpfxs [Y,-X,W,-Z] | |
vmov.q C120,C130 | |
vpfxs [W,Z,-Y,X] | |
vmov.q C200,C130 | |
vpfxs [-Z,W,X,Y] | |
vmov.q C210,C130 | |
vpfxs [Y,-X,W,Z] | |
vmov.q C220,C130 | |
vpfxs [-X,-Y,-Z,W] | |
vmov.q C230,C130 | |
vmmul.q E000,E200,E100 | |
vidt.q R003 | |
vidt.q C030 | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionTransform: | |
move v0,a0 | |
lv.q C100,0(a1) | |
lv.q C200,0(a2) | |
vpfxs [-X,-Y,-Z,W] | |
vmov.q C110,C100 | |
vqmul.q C120,C100,C200 | |
vqmul.q C000,C120,C110 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionAdd: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vadd.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionSub: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vsub.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionMul: | |
move v0,a0 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vqmul.q C000,C010,C020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionInnerProduct: | |
addiu sp,sp,-0x10 | |
lv.q C010,0(a0) | |
lv.q C020,0(a1) | |
vdot.q S000,C010,C020 | |
sv.s S000,0(sp) | |
lwc1 f0,0x0(sp) | |
jr ra | |
addiu sp,sp,0x10 | |
sceVfpuQuaternionSlerp: | |
move v0,a0 | |
mfc1 t0,f12 | |
mtv t0,S031 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vcst.s S001,Sqrt(1/2) | |
vpfxd [-1:1,M,M,M] | |
vdot.q S000,C010,C020 | |
vfim.s S002,0.998047 | |
vcmp.s GE,S000,S002 | |
bvt pos_0881E51C (CC[0]) | |
vocp.s S030,S031 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vpfxs [|X|,Y,Z,W] | |
vasin.s S032,S000 | |
bvtl pos_0881E4E4 (CC[0]) | |
vocp.s S032,S032 | |
vmul.s S001,S000,S000 | |
vocp.s S001,S001 | |
vsqrt.s S001,S001 | |
vasin.s S032,S001 | |
pos_0881E4E4: | |
vzero.s S001 | |
lui at,0x3851 | |
ori at,at,0xB717 | |
mtv at,S002 | |
vscl.p C030,C030,S032 | |
vcmp.s LT,S000,S001 | |
vsin.t C030,C030 | |
vpfxs [-X,-Y,-Z,-W] | |
vcmovt.q C020,C020,CC[0] | |
vcmp.s LT,S032,S002 | |
vrcp.s S032,S032 | |
vscl.p C030,C030,S032 | |
bvtl pos_0881E528 (CC[0]) | |
vmov.q C000,C010 | |
pos_0881E51C: | |
vscl.q C000,C010,S030 | |
vscl.q C030,C020,S031 | |
vadd.q C000,C000,C030 | |
pos_0881E528: | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionSquad: | |
lui v1,0x88E | |
lwc1 f2,-0x44FC(v1) | |
add.s f3,f12,f12 | |
addiu sp,sp,-0x20 | |
sub.s f1,f2,f12 | |
move v0,a0 | |
move a0,t0 | |
mfc1 t0,f12 | |
mtv t0,S031 | |
lv.q C010,0(a1) | |
lv.q C020,0(a2) | |
vcst.s S001,Sqrt(1/2) | |
vpfxd [-1:1,M,M,M] | |
vdot.q S000,C010,C020 | |
vfim.s S002,0.998047 | |
vcmp.s GE,S000,S002 | |
bvt pos_0881E5DC (CC[0]) | |
vocp.s S030,S031 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vpfxs [|X|,Y,Z,W] | |
vasin.s S032,S000 | |
bvtl pos_0881E5A4 (CC[0]) | |
vocp.s S032,S032 | |
vmul.s S001,S000,S000 | |
vocp.s S001,S001 | |
vsqrt.s S001,S001 | |
vasin.s S032,S001 | |
pos_0881E5A4: | |
vzero.s S001 | |
lui at,0x3851 | |
ori at,at,0xB717 | |
mtv at,S002 | |
vscl.p C030,C030,S032 | |
vcmp.s LT,S000,S001 | |
vsin.t C030,C030 | |
vpfxs [-X,-Y,-Z,-W] | |
vcmovt.q C020,C020,CC[0] | |
vcmp.s LT,S032,S002 | |
vrcp.s S032,S032 | |
vscl.p C030,C030,S032 | |
bvtl pos_0881E5E8 (CC[0]) | |
vmov.q C000,C010 | |
pos_0881E5DC: | |
vscl.q C000,C010,S030 | |
vscl.q C030,C020,S031 | |
vadd.q C000,C000,C030 | |
pos_0881E5E8: | |
sv.q C000,0(sp) | |
mul.s f2,f3,f1 | |
mfc1 t0,f12 | |
mtv t0,S031 | |
lv.q C010,0(a3) | |
lv.q C020,0(a0) | |
vcst.s S001,Sqrt(1/2) | |
vpfxd [-1:1,M,M,M] | |
vdot.q S000,C010,C020 | |
vfim.s S002,0.998047 | |
vcmp.s GE,S000,S002 | |
bvt pos_0881E67C (CC[0]) | |
vocp.s S030,S031 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vpfxs [|X|,Y,Z,W] | |
vasin.s S032,S000 | |
bvtl pos_0881E644 (CC[0]) | |
vocp.s S032,S032 | |
vmul.s S001,S000,S000 | |
vocp.s S001,S001 | |
vsqrt.s S001,S001 | |
vasin.s S032,S001 | |
pos_0881E644: | |
vzero.s S001 | |
lui at,0x3851 | |
ori at,at,0xB717 | |
mtv at,S002 | |
vscl.p C030,C030,S032 | |
vcmp.s LT,S000,S001 | |
vsin.t C030,C030 | |
vpfxs [-X,-Y,-Z,-W] | |
vcmovt.q C020,C020,CC[0] | |
vcmp.s LT,S032,S002 | |
vrcp.s S032,S032 | |
vscl.p C030,C030,S032 | |
bvtl pos_0881E688 (CC[0]) | |
vmov.q C000,C010 | |
pos_0881E67C: | |
vscl.q C000,C010,S030 | |
vscl.q C030,C020,S031 | |
vadd.q C000,C000,C030 | |
pos_0881E688: | |
sv.q C000,16(sp) | |
mfc1 t0,f2 | |
mtv t0,S031 | |
lv.q C010,0(sp) | |
lv.q C020,16(sp) | |
vcst.s S001,Sqrt(1/2) | |
vpfxd [-1:1,M,M,M] | |
vdot.q S000,C010,C020 | |
vfim.s S002,0.998047 | |
vcmp.s GE,S000,S002 | |
bvt pos_0881E718 (CC[0]) | |
vocp.s S030,S031 | |
vpfxs [|X|,Y,Z,W] | |
vcmp.s LT,S000,S001 | |
vpfxs [|X|,Y,Z,W] | |
vasin.s S032,S000 | |
bvtl pos_0881E6E0 (CC[0]) | |
vocp.s S032,S032 | |
vmul.s S001,S000,S000 | |
vocp.s S001,S001 | |
vsqrt.s S001,S001 | |
vasin.s S032,S001 | |
pos_0881E6E0: | |
vzero.s S001 | |
lui at,0x3851 | |
ori at,at,0xB717 | |
mtv at,S002 | |
vscl.p C030,C030,S032 | |
vcmp.s LT,S000,S001 | |
vsin.t C030,C030 | |
vpfxs [-X,-Y,-Z,-W] | |
vcmovt.q C020,C020,CC[0] | |
vcmp.s LT,S032,S002 | |
vrcp.s S032,S032 | |
vscl.p C030,C030,S032 | |
bvtl pos_0881E724 (CC[0]) | |
vmov.q C000,C010 | |
pos_0881E718: | |
vscl.q C000,C010,S030 | |
vscl.q C030,C020,S031 | |
vadd.q C000,C000,C030 | |
pos_0881E724: | |
sv.q C000,0(v0) | |
jr ra | |
addiu sp,sp,0x20 | |
sceVfpuQuaternionNormalize: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vdot.q S010,C000,C000 | |
vrsq.s S010,S010 | |
vscl.q C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionConj: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vneg.t C000,C000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionInverse: | |
move v0,a0 | |
lv.q C010,0(a1) | |
vdot.q S020,C010,C010 | |
vrcp.s S020,S020 | |
vpfxs [-X,-Y,-Z,W] | |
vscl.q C000,C010,S020 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionLn: | |
move v0,a0 | |
lv.q C010,0(a1) | |
vdot.t S000,C010,C010 | |
vsqrt.s S000,S000 | |
vcmp.s EZ,S000,S000 | |
bvtl pos_0881E7E0 (CC[0]) | |
vone.s S000 | |
vrcp.s S000,S000 | |
vmul.s S001,S013,S000 | |
vcst.s S002,Sqrt(1/2) | |
vcmp.s LT,S001,S002 | |
vasin.s S002,S001 | |
vmul.s S003,S001,S001 | |
vcst.s S001,PI/2 | |
vmul.s S000,S000,S001 | |
bvtl pos_0881E7DC (CC[0]) | |
vocp.s S003,S002 | |
vocp.s S003,S003 | |
vsqrt.s S003,S003 | |
vasin.s S003,S003 | |
pos_0881E7DC: | |
vmul.s S000,S003,S000 | |
pos_0881E7E0: | |
vzero.s S003 | |
vscl.t C000,C010,S000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionExp: | |
move v0,a0 | |
lv.q C010,0(a1) | |
vdot.t S000,C010,C010 | |
vsqrt.s S000,S000 | |
vcst.s S001,2/PI | |
vcmp.s EZ,S000,S000 | |
vrcp.s S002,S000 | |
vmul.s S000,S000,S001 | |
vsin.s S001,S000 | |
vcos.s S003,S000 | |
vmul.s S000,S001,S002 | |
vzero.s S001 | |
vcmovt.s S000,S001,CC[0] | |
vscl.t C000,C010,S000 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionFromRotZYX: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vcst.s S010,1/PI | |
vscl.t C000,C000,S010 | |
vcos.t C010,C000 | |
vsin.t C000,C000 | |
vcrs.t C020,C010,C010 | |
vcrs.t C030,C000,C000 | |
vmul.s S003,S020,S010 | |
vmul.s S013,S030,S000 | |
vmul.t C020,C020,C000 | |
vmul.t C030,C030,C010 | |
vadd.s S003,S003,S013 | |
vpfxt [-X,Y,-Z,W] | |
vadd.t C000,C020,C030 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionFromRotXYZ: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vcst.s S010,1/PI | |
vscl.t C000,C000,S010 | |
vcos.t C010,C000 | |
vsin.t C000,C000 | |
vcrs.t C020,C010,C010 | |
vcrs.t C030,C000,C000 | |
vmul.s S003,S020,S010 | |
vmul.s S013,S030,S000 | |
vmul.t C020,C020,C000 | |
vmul.t C030,C030,C010 | |
vsub.s S003,S003,S013 | |
vpfxt [X,-Y,Z,W] | |
vadd.t C000,C020,C030 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionFromRotYXZ: | |
move v0,a0 | |
lv.q C000,0(a1) | |
vcst.s S010,1/PI | |
vscl.t C000,C000,S010 | |
vcos.t C010,C000 | |
vsin.t C000,C000 | |
vcrs.t C020,C010,C010 | |
vcrs.t C030,C000,C000 | |
vmul.s S003,S020,S010 | |
vmul.s S013,S030,S000 | |
vmul.t C020,C020,C000 | |
vmul.t C030,C030,C010 | |
vadd.s S003,S003,S013 | |
vpfxt [X,-Y,-Z,W] | |
vadd.t C000,C020,C030 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuQuaternionFromRotate: | |
move v0,a0 | |
lv.q C000,0(a1) | |
mfc1 t0,f12 | |
vdot.q S010,C000,C000 | |
vcst.s S020,1/PI | |
mtv t0,S021 | |
vmul.s S020,S020,S021 | |
vcos.s S003,S020 | |
vsin.s S020,S020 | |
vrsq.s S010,S010 | |
vmul.s S010,S010,S020 | |
vscl.t C000,C000,S010 | |
sv.q C000,0(a0) | |
jr ra | |
nop | |
sceVfpuMemcpy: | |
beq a2,zero,pos_0881EA4C | |
move a3,a0 | |
andi v1,a0,0x3F | |
beq v1,zero,pos_0881E984 | |
nop | |
lbu v1,0x0(a1) | |
pos_0881E964: | |
addiu a2,a2,-0x1 | |
addiu a1,a1,0x1 | |
sb v1,0x0(a3) | |
addiu a3,a3,0x1 | |
beq a2,zero,pos_0881EA4C | |
andi v0,a3,0x3F | |
bnel v0,zero,pos_0881E964 | |
lbu v1,0x0(a1) | |
pos_0881E984: | |
beq a2,zero,pos_0881EA4C | |
nop | |
sltiu t0,a2,0x40 | |
bne t0,zero,pos_0881EA34 | |
lui t1,0x4000 | |
andi t0,a1,0xF | |
li v0,0x4 | |
move t2,t1 | |
ins t2,a3,0x0,0x1D | |
beq t0,v0,pos_0881EC00 | |
sltiu t3,t0,0x5 | |
beq t3,zero,pos_0881EB18 | |
li t4,0x8 | |
beq t0,zero,pos_0881EA54 | |
nop | |
cache func=27,a3(0x0) | |
addiu a3,a3,0x40 | |
addiu a2,a2,-0x40 | |
sync ---unknown--- | |
lwr t0,0x0(a1) | |
sv.q C000,0(t2),wb | |
sv.q C010,16(t2),wb | |
sv.q C020,32(t2),wb | |
sv.q C030,48(t2),wb | |
sv.q C100,64(t2),wb | |
sv.q C110,80(t2),wb | |
sv.q C120,96(t2),wb | |
sv.q C130,112(t2),wb | |
addiu t2,t2,0x80 | |
bne t0,zero,pos_0881EA60 | |
vflush | |
srl t0,a2,0x6 | |
beq t0,zero,pos_0881EB08 | |
nop | |
cache func=27,a3(0x0) | |
lv.q C000,0(a1) | |
lv.q C010,16(a1) | |
lv.q C020,32(a1) | |
lv.q C030,48(a1) | |
addiu a3,a3,0x40 | |
addiu a1,a1,0x40 | |
addiu a2,a2,-0x40 | |
sync ---unknown--- | |
sv.q C000,0(t2),wb | |
sv.q C010,16(t2),wb | |
sv.q C020,32(t2),wb | |
sv.q C030,48(t2),wb | |
pos_0881EB08: | |
vflush | |
vflush | |
j pos_0881EA2C | |
nop | |
beq t0,t4,pos_0881EB8C | |
li t5,0xC | |
bne t0,t5,pos_0881E9C0 | |
nop | |
pos_0881EB28: | |
cache func=27,a3(0x0) | |
lv.s S000,0(a1) | |
lv.q C100,4(a1) | |
lv.q C110,20(a1) | |
lv.q C120,36(a1) | |
lv.q C130,52(a1) | |
vmmov.t E001,E100 | |
vmov.t R010,R103 | |
vmov.t C031,C130 | |
addiu a3,a3,0x40 | |
addiu a1,a1,0x40 | |
addiu a2,a2,-0x40 | |
srl t0,a2,0x6 | |
sync ---unknown--- | |
sv.q C000,0(t2),wb | |
sv.q C010,16(t2),wb | |
sv.q C020,32(t2),wb | |
sv.q C030,48(t2),wb | |
addiu t2,t2,0x40 | |
bne t0,zero,pos_0881EB28 | |
vflush | |
vflush | |
vflush | |
j pos_0881EA2C | |
nop | |
pos_0881EB8C: | |
cache func=27,a3(0x0) | |
lv.s S000,0(a1) | |
lv.s S001,4(a1) | |
lv.q C100,8(a1) | |
lv.q C110,24(a1) | |
lv.q C120,40(a1) | |
lv.q C130,56(a1) | |
vmmov.p E002,E100 | |
vmov.p C010,C102 | |
vmov.p C020,C112 | |
vmov.p C022,C120 | |
vmov.p C030,C122 | |
vmov.p C032,C130 | |
addiu a3,a3,0x40 | |
addiu a1,a1,0x40 | |
addiu a2,a2,-0x40 | |
srl t0,a2,0x6 | |
sync ---unknown--- | |
sv.q C000,0(t2),wb | |
sv.q C010,16(t2),wb | |
sv.q C020,32(t2),wb | |
sv.q C030,48(t2),wb | |
addiu t2,t2,0x40 | |
bne t0,zero,pos_0881EB8C | |
vflush | |
vflush | |
vflush | |
j pos_0881EA2C | |
nop | |
pos_0881EC00: | |
addiu a2,a2,-0x40 | |
cache func=27,a3(0x0) | |
lv.q C100,-4(a1) | |
lv.q C110,12(a1) | |
lv.q C120,28(a1) | |
lv.q C130,44(a1) | |
lv.s S033,60(a1) | |
vmmov.t E000,E101 | |
vmov.t R003,R110 | |
vmov.t C030,C131 | |
addiu a3,a3,0x40 | |
addiu a1,a1,0x40 | |
srl t0,a2,0x6 | |
sync ---unknown--- | |
sv.q C000,0(t2),wb | |
sv.q C010,16(t2),wb | |
sv.q C020,32(t2),wb | |
sv.q C030,48(t2),wb | |
addiu t2,t2,0x40 | |
bne t0,zero,pos_0881EC00 | |
vflush | |
vflush | |
vflush | |
j pos_0881EA2C | |
nop | |
sceVfpuInit: | |
addiu sp,sp,-0x240 | |
lui v0,0x7F80 | |
ori a0,v0,0x1 | |
move t1,sp | |
move v0,sp | |
li v1,0x1F | |
pos_0881EC7C: | |
addiu v1,v1,-0x1 | |
sw a0,0x0(v0) | |
sw a0,0x4(v0) | |
sw a0,0x8(v0) | |
sw a0,0xC(v0) | |
bgez v1,pos_0881EC7C | |
addiu v0,v0,0x10 | |
lui a1,0x3F80 | |
lui a2,0x3F80 | |
lui a3,0x3F80 | |
lui t8,0x3F80 | |
addiu t2,t1,0x220 | |
lui t3,0x3F80 | |
li t6,0xE4 | |
ori t7,a1,0x1 | |
ori t5,a2,0x2 | |
ori t4,a3,0x4 | |
ori a0,t8,0x8 | |
li t0,0x3F | |
sw t7,0x220(t1) | |
sw t6,0x204(t1) | |
sw t0,0x20C(t1) | |
sw t6,0x200(t1) | |
sw zero,0x208(t1) | |
sw zero,0x210(t1) | |
sw t3,0x1C(t2) | |
sw t5,0x4(t2) | |
sw t4,0x8(t2) | |
sw a0,0xC(t2) | |
sw t3,0x10(t2) | |
sw t3,0x14(t2) | |
sw t3,0x18(t2) | |
lv.q C000,0(sp) | |
lv.q C010,16(sp) | |
lv.q C020,32(sp) | |
lv.q C030,48(sp) | |
lv.q C100,64(sp) | |
lv.q C110,80(sp) | |
lv.q C120,96(sp) | |
lv.q C130,112(sp) | |
lv.q C200,128(sp) | |
lv.q C210,144(sp) | |
lv.q C220,160(sp) | |
lv.q C230,176(sp) | |
lv.q C300,192(sp) | |
lv.q C310,208(sp) | |
lv.q C320,224(sp) | |
lv.q C330,240(sp) | |
lv.q C400,256(sp) | |
lv.q C410,272(sp) | |
lv.q C420,288(sp) | |
lv.q C430,304(sp) | |
lv.q C500,320(sp) | |
lv.q C510,336(sp) | |
lv.q C520,352(sp) | |
lv.q C530,368(sp) | |
lv.q C600,384(sp) | |
lv.q C610,400(sp) | |
lv.q C620,416(sp) | |
lv.q C630,432(sp) | |
lv.q C700,448(sp) | |
lv.q C710,464(sp) | |
lv.q C720,480(sp) | |
lv.q C730,496(sp) | |
addiu v1,sp,0x200 | |
lw t0,0x0(v1) | |
lw t1,0x4(v1) | |
lw t2,0x8(v1) | |
lw t3,0xC(v1) | |
mtvc t0,SPFX | |
mtvc t1,TPFX | |
mtvc t2,DPFX | |
mtvc t3,CC | |
lw t0,0x10(v1) | |
mtvc t0,INF4 | |
lw t0,0x220(sp) | |
mtvc t0,RCX0 | |
lw t0,0x224(sp) | |
mtvc t0,RCX1 | |
lw t0,0x228(sp) | |
mtvc t0,RCX2 | |
lw t0,0x22C(sp) | |
mtvc t0,RCX3 | |
lw t0,0x230(sp) | |
mtvc t0,RCX4 | |
lw t0,0x234(sp) | |
mtvc t0,RCX5 | |
lw t0,0x238(sp) | |
mtvc t0,RCX6 | |
lw t0,0x23C(sp) | |
mtvc t0,RCX7 | |
li v0,0 | |
jr ra | |
addiu sp,sp,0x240 | |
sceVfpuInitializeContext: | |
lui v0,0x7F80 | |
move t2,a0 | |
ori v1,v0,0x1 | |
move v0,a0 | |
li a0,0x1F | |
pos_0881EE08: | |
addiu a0,a0,-0x1 | |
sw v1,0x0(v0) | |
sw v1,0x4(v0) | |
sw v1,0x8(v0) | |
sw v1,0xC(v0) | |
bgez a0,pos_0881EE08 | |
addiu v0,v0,0x10 | |
lui a2,0x3F80 | |
lui a3,0x3F80 | |
lui t0,0x3F80 | |
lui t7,0x3F80 | |
addiu t3,t2,0x220 | |
lui a0,0x3F80 | |
li t6,0xE4 | |
ori v1,a2,0x1 | |
ori t5,a3,0x2 | |
ori t4,t0,0x4 | |
ori a1,t7,0x8 | |
li t1,0x3F | |
li v0,0 | |
sw v1,0x220(t2) | |
sw t6,0x204(t2) | |
sw t1,0x20C(t2) | |
sw t6,0x200(t2) | |
sw zero,0x208(t2) | |
sw zero,0x210(t2) | |
sw a0,0x1C(t3) | |
sw t5,0x4(t3) | |
sw t4,0x8(t3) | |
sw a1,0xC(t3) | |
sw a0,0x10(t3) | |
sw a0,0x14(t3) | |
jr ra | |
sw a0,0x18(t3) | |
sceVfpuSaveContext: | |
sv.q C000,0(a0) | |
sv.q C010,16(a0) | |
sv.q C020,32(a0) | |
sv.q C030,48(a0) | |
sv.q C100,64(a0) | |
sv.q C110,80(a0) | |
sv.q C120,96(a0) | |
sv.q C130,112(a0) | |
sv.q C200,128(a0) | |
sv.q C210,144(a0) | |
sv.q C220,160(a0) | |
sv.q C230,176(a0) | |
sv.q C300,192(a0) | |
sv.q C310,208(a0) | |
sv.q C320,224(a0) | |
sv.q C330,240(a0) | |
sv.q C400,256(a0) | |
sv.q C410,272(a0) | |
sv.q C420,288(a0) | |
sv.q C430,304(a0) | |
sv.q C500,320(a0) | |
sv.q C510,336(a0) | |
sv.q C520,352(a0) | |
sv.q C530,368(a0) | |
sv.q C600,384(a0) | |
sv.q C610,400(a0) | |
sv.q C620,416(a0) | |
sv.q C630,432(a0) | |
sv.q C700,448(a0) | |
sv.q C710,464(a0) | |
sv.q C720,480(a0) | |
sv.q C730,496(a0) | |
addiu v1,a0,0x200 | |
mfvc t0,SPFX | |
mfvc t1,TPFX | |
mfvc t2,DPFX | |
mfvc t3,CC | |
sw t0,0x0(v1) | |
sw t1,0x4(v1) | |
sw t2,0x8(v1) | |
sw t3,0xC(v1) | |
mfvc t0,INF4 | |
sw t0,0x10(v1) | |
mfvc t0,RCX0 | |
sw t0,0x220(a0) | |
mfvc t0,RCX1 | |
sw t0,0x224(a0) | |
mfvc t0,RCX2 | |
sw t0,0x228(a0) | |
mfvc t0,RCX3 | |
sw t0,0x22C(a0) | |
mfvc t0,RCX4 | |
sw t0,0x230(a0) | |
mfvc t0,RCX5 | |
sw t0,0x234(a0) | |
mfvc t0,RCX6 | |
sw t0,0x238(a0) | |
mfvc t0,RCX7 | |
sw t0,0x23C(a0) | |
jr ra | |
li v0,0 | |
sceVfpuRestoreContext: | |
lv.q C000,0(a0) | |
lv.q C010,16(a0) | |
lv.q C020,32(a0) | |
lv.q C030,48(a0) | |
lv.q C100,64(a0) | |
lv.q C110,80(a0) | |
lv.q C120,96(a0) | |
lv.q C130,112(a0) | |
lv.q C200,128(a0) | |
lv.q C210,144(a0) | |
lv.q C220,160(a0) | |
lv.q C230,176(a0) | |
lv.q C300,192(a0) | |
lv.q C310,208(a0) | |
lv.q C320,224(a0) | |
lv.q C330,240(a0) | |
lv.q C400,256(a0) | |
lv.q C410,272(a0) | |
lv.q C420,288(a0) | |
lv.q C430,304(a0) | |
lv.q C500,320(a0) | |
lv.q C510,336(a0) | |
lv.q C520,352(a0) | |
lv.q C530,368(a0) | |
lv.q C600,384(a0) | |
lv.q C610,400(a0) | |
lv.q C620,416(a0) | |
lv.q C630,432(a0) | |
lv.q C700,448(a0) | |
lv.q C710,464(a0) | |
lv.q C720,480(a0) | |
lv.q C730,496(a0) | |
addiu v1,a0,0x200 | |
lw t0,0x0(v1) | |
lw t1,0x4(v1) | |
lw t2,0x8(v1) | |
lw t3,0xC(v1) | |
mtvc t0,SPFX | |
mtvc t1,TPFX | |
mtvc t2,DPFX | |
mtvc t3,CC | |
lw t0,0x10(v1) | |
mtvc t0,INF4 | |
lw t0,0x220(a0) | |
mtvc t0,RCX0 | |
lw t0,0x224(a0) | |
mtvc t0,RCX1 | |
lw t0,0x228(a0) | |
mtvc t0,RCX2 | |
lw t0,0x22C(a0) | |
mtvc t0,RCX3 | |
lw t0,0x230(a0) | |
mtvc t0,RCX4 | |
lw t0,0x234(a0) | |
mtvc t0,RCX5 | |
lw t0,0x238(a0) | |
mtvc t0,RCX6 | |
lw t0,0x23C(a0) | |
mtvc t0,RCX7 | |
jr ra | |
li v0,0 | |
sceVfpuRandInitializeContext: | |
lui a2,0x3F80 | |
lui a3,0x3F80 | |
lui t0,0x3F80 | |
lui v0,0x3F80 | |
lui t1,0x3F80 | |
ori v1,v0,0x8 | |
ori t4,a2,0x1 | |
ori t3,a3,0x2 | |
ori t2,t0,0x4 | |
li v0,0 | |
sw t1,0x1C(a0) | |
sw t4,0x0(a0) | |
sw t3,0x4(a0) | |
sw t2,0x8(a0) | |
sw v1,0xC(a0) | |
sw t1,0x10(a0) | |
sw t1,0x14(a0) | |
jr ra | |
sw t1,0x18(a0) | |
sceVfpuRandSaveContext: | |
mfvc t0,RCX0 | |
sw t0,0x0(a0) | |
mfvc t0,RCX1 | |
sw t0,0x4(a0) | |
mfvc t0,RCX2 | |
sw t0,0x8(a0) | |
mfvc t0,RCX3 | |
sw t0,0xC(a0) | |
mfvc t0,RCX4 | |
sw t0,0x10(a0) | |
mfvc t0,RCX5 | |
sw t0,0x14(a0) | |
mfvc t0,RCX6 | |
sw t0,0x18(a0) | |
mfvc t0,RCX7 | |
sw t0,0x1C(a0) | |
jr ra | |
li v0,0 | |
sceVfpuRandRestoreContext: | |
lw t0,0x0(a0) | |
mtvc t0,RCX0 | |
lw t0,0x4(a0) | |
mtvc t0,RCX1 | |
lw t0,0x8(a0) | |
mtvc t0,RCX2 | |
lw t0,0xC(a0) | |
mtvc t0,RCX3 | |
lw t0,0x10(a0) | |
mtvc t0,RCX4 | |
lw t0,0x14(a0) | |
mtvc t0,RCX5 | |
lw t0,0x18(a0) | |
mtvc t0,RCX6 | |
lw t0,0x1C(a0) | |
mtvc t0,RCX7 | |
jr ra | |
li v0,0 | |
sceVfpuMemset: | |
lui t0,0x4000 | |
move v0,a0 | |
move v1,t0 | |
ins v1,a0,0x0,0x1D | |
ins a1,a1,0x8,0x8 | |
ins a1,a1,0x10,0x10 | |
mtv a1,S000 | |
vpfxs [X,X,X,X] | |
vmov.q C000,C000 | |
andi t0,a0,0x3F | |
beq t0,zero,pos_0881F19C | |
nop | |
beq a2,zero,pos_0881F1EC | |
addiu a2,a2,-0x1 | |
sb a1,0x0(a0) | |
addiu a0,a0,0x1 | |
j pos_0881F178 | |
addiu v1,v1,0x1 | |
sltiu t0,a2,0x40 | |
bne t0,zero,pos_0881F1D8 | |
nop | |
pos_0881F1A8: | |
cache func=27,a0(0x0) | |
addiu a0,a0,0x40 | |
addiu a2,a2,-0x40 | |
sltiu t0,a2,0x40 | |
sync ---unknown--- | |
sv.q C000,0(v1),wb | |
sv.q C000,16(v1),wb | |
sv.q C000,32(v1),wb | |
sv.q C000,48(v1),wb | |
addiu v1,v1,0x40 | |
beq t0,zero,pos_0881F1A8 | |
vflush | |
pos_0881F1D8: | |
beq a2,zero,pos_0881F1EC | |
pos_0881F1DC: | |
addiu a2,a2,-0x1 | |
sb a1,0x0(a0) | |
bne a2,zero,pos_0881F1DC | |
addiu a0,a0,0x1 | |
pos_0881F1EC: | |
vflush | |
vflush | |
jr ra | |
nop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment