[jak2] combined shadow work PR (#2632)

This PR is a combination of
https://github.com/open-goal/jak-project/pull/2507 and some additional
changes to port Shadow VU1 to OpenGL. As far as I can tell, it's
working.

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
This commit is contained in:
water111
2023-05-07 12:12:21 -04:00
committed by GitHub
parent 40b2e93be7
commit b79f28fe07
39 changed files with 9659 additions and 111 deletions
@@ -0,0 +1,88 @@
nop | sub.xyzw vf05, vf03, vf02
nop | sub.xyzw vf06, vf04, vf02
nop | sub.xyzw vf10, vf08, vf07
nop | sub.xyzw vf11, vf09, vf07
nop | sub.xyzw vf15, vf13, vf12
nop | sub.xyzw vf16, vf14, vf12
nop | sub.xyzw vf20, vf18, vf17
nop | sub.xyzw vf21, vf19, vf17
nop | opmula.xyz ACC, vf05, vf06
nop | opmsub.xyz vf05, vf06, vf05
nop | opmula.xyz ACC, vf10, vf11
nop | opmsub.xyz vf10, vf11, vf10
nop | opmula.xyz ACC, vf15, vf16
nop | opmsub.xyz vf15, vf16, vf15
nop | opmula.xyz ACC, vf20, vf21
nop | opmsub.xyz vf20, vf21, vf20
nop | mul.xyz vf05, vf05, vf01
nop | mul.xyz vf10, vf10, vf01
nop | mul.xyz vf15, vf15, vf01
nop | mul.xyz vf20, vf20, vf01
nop | addx.y vf05, vf05, vf05
nop | addx.y vf10, vf10, vf10
nop | addx.y vf15, vf15, vf15
nop | addx.y vf20, vf20, vf20
nop | addz.y vf22, vf05, vf05
nop | addz.y vf23, vf10, vf10
nop | addz.y vf24, vf15, vf15 :e
nop | addz.y vf25, vf20, vf20
nop | mul.xyzw vf27, vf20, Q
div Q, vf13.x, vf17.x | sub.xyzw vf19, vf01, vf03
move.xyzw vf23, vf07 | sub.xyzw vf20, vf01, vf04
nop | sub.xyzw vf21, vf01, vf05
move.xyzw vf25, vf09 | sub.xyzw vf22, vf01, vf06
move.xyzw vf26, vf10 | sub.xyzw vf24, vf08, vf27
nop | mul.xyzw vf11, vf03, vf02
nop | mul.xyz vf15, vf19, vf02
div Q, vf14.x, vf18.x | mul.xyzw vf12, vf04, vf02
move.xyzw vf07, vf03 | mul.xyzw vf28, vf28, Q
move.xyzw vf08, vf04 | mul.xyz vf16, vf20, vf02
move.xyzw vf09, vf05 | addy.x vf11, vf11, vf11
move.xyzw vf10, vf06 | addy.x vf15, vf15, vf15
nop | sub.xyzw vf25, vf25, vf28
nop | addy.x vf12, vf12, vf12
nop | mul.xyzw vf29, vf29, Q
nop | addy.x vf16, vf16, vf16
nop | addz.x vf11, vf11, vf11
nop | addz.x vf15, vf15, vf15
nop | sub.xyzw vf26, vf26, vf29
nop | addz.x vf12, vf12, vf12
nop | addz.x vf16, vf16, vf16
nop | addw.x vf11, vf11, vf11
nop | mul.xyzw vf13, vf09, vf02
nop | addw.x vf12, vf12, vf12
nop | mul.xyz vf17, vf21, vf02
nop | mul.xyzw vf14, vf10, vf02
div Q, vf11.x, vf15.x | mul.xyz vf18, vf22, vf02
nop | addy.x vf13, vf13, vf13
nop | addy.x vf17, vf17, vf17
nop | addy.x vf14, vf14, vf14
nop | addy.x vf18, vf18, vf18
nop | addz.x vf13, vf13, vf13
nop | addz.x vf17, vf17, vf17
div Q, vf12.x, vf16.x | addz.x vf14, vf14, vf14
nop | mul.xyzw vf19, vf19, Q
move.xyzw vf28, vf21 | addz.x vf18, vf18, vf18
move.xyzw vf29, vf22 | addw.x vf13, vf13, vf13
nop | addw.x vf14, vf14, vf14 :e
nop | sub.xyzw vf07, vf07, vf19
nop | mul.xyzw vf27, vf20, Q
div Q, vf13.x, vf17.x | nop
move.xyzw vf23, vf07 | nop
nop | nop
move.xyzw vf25, vf09 | nop
move.xyzw vf26, vf10 | sub.xyzw vf24, vf08, vf27
nop | nop
nop | nop
div Q, vf14.x, vf18.x | nop
nop | mul.xyzw vf28, vf28, Q
nop | nop
nop | nop
nop | nop
nop | sub.xyzw vf25, vf25, vf28
nop | nop
nop | mul.xyzw vf29, vf29, Q
nop | nop
nop | nop
nop | nop :e
nop | sub.xyzw vf26, vf26, vf29
@@ -0,0 +1,176 @@
.word 0x80000030
.word 0x1e2196c
.word 0x80000030
.word 0x1e221ac
.word 0x80000030
.word 0x1e742ac
.word 0x80000030
.word 0x1e74aec
.word 0x80000030
.word 0x1ec6bec
.word 0x80000030
.word 0x1ec742c
.word 0x80000030
.word 0x1f1952c
.word 0x80000030
.word 0x1f19d6c
.word 0x80000030
.word 0x1c62afe
.word 0x80000030
.word 0x1c5316e
.word 0x80000030
.word 0x1cb52fe
.word 0x80000030
.word 0x1ca5aae
.word 0x80000030
.word 0x1d07afe
.word 0x80000030
.word 0x1cf83ee
.word 0x80000030
.word 0x1d5a2fe
.word 0x80000030
.word 0x1d4ad2e
.word 0x80000030
.word 0x1c1296a
.word 0x80000030
.word 0x1c152aa
.word 0x80000030
.word 0x1c17bea
.word 0x80000030
.word 0x1c1a52a
.word 0x80000030
.word 0x852940
.word 0x80000030
.word 0x8a5280
.word 0x80000030
.word 0x8f7bc0
.word 0x80000030
.word 0x94a500
.word 0x80000030
.word 0x852d82
.word 0x80000030
.word 0x8a55c2
.word 0x80000030
.word 0x408f7e02
.word 0x80000030
.word 0x94a642
.word 0x80000030
.word 0x1e0a6dc
.word 0x80116bbc
.word 0x1e30cec
.word 0x81f73b3c
.word 0x1e40d2c
.word 0x80000030
.word 0x1e50d6c
.word 0x81f94b3c
.word 0x1e60dac
.word 0x81fa533c
.word 0x1fb462c
.word 0x80000030
.word 0x1e21aea
.word 0x80000030
.word 0x1c29bea
.word 0x801273bc
.word 0x1e2232a
.word 0x81e71b3c
.word 0x1e0e71c
.word 0x81e8233c
.word 0x1c2a42a
.word 0x81e92b3c
.word 0x10b5ac1
.word 0x81ea333c
.word 0x10f7bc1
.word 0x80000030
.word 0x1fcce6c
.word 0x80000030
.word 0x10c6301
.word 0x80000030
.word 0x1e0ef5c
.word 0x80000030
.word 0x1108401
.word 0x80000030
.word 0x10b5ac2
.word 0x80000030
.word 0x10f7bc2
.word 0x80000030
.word 0x1fdd6ac
.word 0x80000030
.word 0x10c6302
.word 0x80000030
.word 0x1108402
.word 0x80000030
.word 0x10b5ac3
.word 0x80000030
.word 0x1e24b6a
.word 0x80000030
.word 0x10c6303
.word 0x80000030
.word 0x1c2ac6a
.word 0x80000030
.word 0x1e253aa
.word 0x800f5bbc
.word 0x1c2b4aa
.word 0x80000030
.word 0x10d6b41
.word 0x80000030
.word 0x1118c41
.word 0x80000030
.word 0x10e7381
.word 0x80000030
.word 0x1129481
.word 0x80000030
.word 0x10d6b42
.word 0x80000030
.word 0x1118c42
.word 0x801063bc
.word 0x10e7382
.word 0x80000030
.word 0x1e09cdc
.word 0x81fcab3c
.word 0x1129482
.word 0x81fdb33c
.word 0x10d6b43
.word 0x80000030
.word 0x410e7383
.word 0x80000030
.word 0x1f339ec
.word 0x80000030
.word 0x1e0a6dc
.word 0x80116bbc
.word 0x2ff
.word 0x81f73b3c
.word 0x2ff
.word 0x80000030
.word 0x2ff
.word 0x81f94b3c
.word 0x2ff
.word 0x81fa533c
.word 0x1fb462c
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x2ff
.word 0x801273bc
.word 0x2ff
.word 0x80000030
.word 0x1e0e71c
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x1fcce6c
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x1e0ef5c
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x2ff
.word 0x80000030
.word 0x400002ff
.word 0x80000030
.word 0x1fdd6ac
@@ -0,0 +1,799 @@
b L1 | nop
nop | nop
b L2 | nop
nop | nop
b L13 | nop
nop | nop
b L21 | nop
nop | nop
nop | nop :e
nop | nop
L1:
iaddiu vi01, vi00, 0x358 | nop
iaddiu vi02, vi00, 0x364 | nop
mfir.x vf01, vi01 | nop
mfir.y vf01, vi02 | nop
mfir.z vf01, vi01 | nop
mfir.w vf01, vi02 | nop
lq.xyzw vf02, 880(vi00) | nop
lq.xyzw vf03, 882(vi00) | nop
lq.xyzw vf04, 883(vi00) | nop
lq.xyzw vf05, 884(vi00) | nop
lq.xyzw vf12, 885(vi00) | nop :e
lq.xyzw vf13, 881(vi00) | nop
L2:
iaddiu vi03, vi00, 0x158 | nop
ilwr.x vi08, vi03 | nop
mtir vi02, vf01.x | nop
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
lq.xyzw vf30, 891(vi00) | addw.z vf28, vf00, vf00
lq.xyzw vf06, 0(vi00) | nop
lq.xyzw vf07, 1(vi00) | nop
lq.xyzw vf08, 2(vi00) | nop
lq.xyzw vf09, 3(vi00) | nop
mtir vi01, vf01.y | nop
sq.xyzw vf25, 0(vi02) | nop
sq.xyzw vf29, 1(vi02) | nop
sq.xyzw vf30, 2(vi02) | nop
sq.xyzw vf25, 0(vi01) | nop
sq.xyzw vf29, 1(vi01) | nop
sq.xyzw vf30, 2(vi01) | nop
L3:
lqi.xyzw vf16, vi03 | nop
nop | nop
nop | nop
nop | nop
mtir vi04, vf16.x | nop
mtir vi05, vf16.y | nop
mtir vi06, vf16.z | nop
nop | nop
lq.xyzw vf17, 4(vi04) | nop
lq.xyzw vf18, 4(vi05) | nop
lq.xyzw vf19, 4(vi06) | nop
nop | mulaw.xyzw ACC, vf09, vf00
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
nop | madday.xyzw ACC, vf07, vf17
nop | maddz.xyzw vf17, vf08, vf17
nop | mulaw.xyzw ACC, vf09, vf00
nop | sub.xyzw vf29, vf18, vf15
nop | sub.xyzw vf30, vf19, vf15
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
nop | mul.xyzw vf21, vf17, vf02
nop | madday.xyzw ACC, vf07, vf18
nop | maddz.xyzw vf18, vf08, vf18
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf19
nop | madday.xyzw ACC, vf07, vf19
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
nop | maddz.xyzw vf19, vf08, vf19
nop | mul.xyzw vf22, vf18, vf02
nop | opmula.xyz ACC, vf29, vf30
nop | add.xy vf25, vf17, vf03
nop | mulw.z vf17, vf17, vf12
nop | opmsub.xyz vf29, vf30, vf29
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
nop | mul.xyzw vf23, vf19, vf02
nop | mul.xyz vf29, vf29, vf15
nop | add.xy vf26, vf18, vf03
nop | add.xyzw vf17, vf17, vf05
nop | mulw.z vf18, vf18, vf12
nop | mul.xy vf25, vf25, vf04
nop | mul.xyz vf19, vf19, Q
nop | ftoi4.xyzw vf17, vf17
fcset 0x0 | addy.x vf29, vf29, vf29
nop | add.xyzw vf18, vf18, vf05
nop | clipw.xyz vf21, vf21
nop | mulw.z vf19, vf19, vf12
sq.xyzw vf25, 4(vi02) | mul.xy vf26, vf26, vf04
sq.xyzw vf17, 5(vi02) | addz.x vf29, vf29, vf29
nop | ftoi4.xyzw vf18, vf18
nop | add.xy vf27, vf19, vf03
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
fsand vi01, 0x2 | clipw.xyz vf22, vf22
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
ibeq vi00, vi01, L4 | mul.xy vf27, vf27, vf04
nop | nop
b L5 | nop
lq.xyzw vf31, 887(vi00) | nop
L4:
lq.xyzw vf31, 886(vi00) | nop
L5:
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
ibne vi00, vi01, L11 | nop
iaddi vi08, vi08, -0x1 | nop
sq.xyzw vf27, 8(vi02) | nop
sq.xyzw vf31, 3(vi02) | nop
sq.xyzw vf19, 9(vi02) | nop
xgkick vi02 | nop
mtir vi02, vf01.y | nop
mr32.xyzw vf01, vf01 | nop
L6:
ibgtz vi08, L3 | nop
nop | nop
iaddiu vi03, vi00, 0x158 | nop
ilwr.x vi08, vi03 | nop
ilwr.y vi01, vi03 | nop
iaddi vi03, vi03, 0x1 | nop
L7:
lqi.xyzw vf16, vi03 | nop
nop | nop
nop | nop
mtir vi04, vf16.x | nop
mtir vi05, vf16.y | nop
mtir vi06, vf16.z | nop
nop | nop
lq.xyzw vf17, 174(vi04) | nop
lq.xyzw vf18, 174(vi06) | nop
lq.xyzw vf19, 174(vi05) | nop
nop | mulaw.xyzw ACC, vf09, vf00
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
nop | madday.xyzw ACC, vf07, vf17
nop | maddz.xyzw vf17, vf08, vf17
nop | mulaw.xyzw ACC, vf09, vf00
nop | sub.xyzw vf29, vf18, vf15
nop | sub.xyzw vf30, vf19, vf15
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
nop | mul.xyzw vf21, vf17, vf02
nop | madday.xyzw ACC, vf07, vf18
nop | maddz.xyzw vf18, vf08, vf18
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf19
nop | madday.xyzw ACC, vf07, vf19
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
nop | maddz.xyzw vf19, vf08, vf19
nop | mul.xyzw vf22, vf18, vf02
nop | opmula.xyz ACC, vf29, vf30
nop | add.xy vf25, vf17, vf03
nop | mulw.z vf17, vf17, vf12
nop | opmsub.xyz vf29, vf30, vf29
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
nop | mul.xyzw vf23, vf19, vf02
nop | mul.xyz vf29, vf29, vf15
nop | add.xy vf26, vf18, vf03
nop | add.xyzw vf17, vf17, vf05
nop | mulw.z vf18, vf18, vf12
nop | mul.xy vf25, vf25, vf04
nop | mul.xyz vf19, vf19, Q
nop | ftoi4.xyzw vf17, vf17
fcset 0x0 | addy.x vf29, vf29, vf29
nop | add.xyzw vf18, vf18, vf05
nop | clipw.xyz vf21, vf21
sq.xyzw vf25, 4(vi02) | mulw.z vf19, vf19, vf12
sq.xyzw vf17, 5(vi02) | mul.xy vf26, vf26, vf04
iaddi vi08, vi08, -0x1 | addz.x vf29, vf29, vf29
nop | ftoi4.xyzw vf18, vf18
nop | add.xy vf27, vf19, vf03
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
fsand vi01, 0x2 | clipw.xyz vf22, vf22
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
ibeq vi00, vi01, L8 | mul.xy vf27, vf27, vf04
nop | nop
b L9 | nop
lq.xyzw vf31, 887(vi00) | nop
L8:
lq.xyzw vf31, 886(vi00) | nop
L9:
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
ibne vi00, vi01, L12 | nop
sq.xyzw vf27, 8(vi02) | nop
sq.xyzw vf31, 3(vi02) | nop
sq.xyzw vf19, 9(vi02) | nop
xgkick vi02 | nop
mtir vi02, vf01.y | nop
mr32.xyzw vf01, vf01 | nop
L10:
ibgtz vi08, L7 | nop
nop | nop
nop | nop :e
nop | nop
L11:
sq.xyzw vf21, 1000(vi00) | nop
sq.xyzw vf22, 1003(vi00) | nop
sq.xyzw vf23, 1006(vi00) | nop
sq.xyzw vf31, 942(vi00) | nop
mfir.x vf29, vi02 | nop
mfir.y vf29, vi03 | nop
mfir.z vf29, vi07 | nop
bal vi15, L36 | nop
mfir.w vf29, vi08 | nop
mtir vi08, vf29.w | nop
mtir vi03, vf29.y | nop
mtir vi07, vf29.z | nop
b L6 | nop
mtir vi02, vf29.x | nop
L12:
sq.xyzw vf21, 1000(vi00) | nop
sq.xyzw vf22, 1003(vi00) | nop
sq.xyzw vf23, 1006(vi00) | nop
sq.xyzw vf31, 942(vi00) | nop
mfir.x vf29, vi02 | nop
mfir.y vf29, vi03 | nop
mfir.z vf29, vi07 | nop
bal vi15, L36 | nop
mfir.w vf29, vi08 | nop
mtir vi08, vf29.w | nop
mtir vi03, vf29.y | nop
mtir vi07, vf29.z | nop
b L10 | nop
mtir vi02, vf29.x | nop
L13:
iaddiu vi03, vi00, 0x258 | nop
ilwr.x vi08, vi03 | nop
mtir vi02, vf01.x | nop
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
lq.xyzw vf30, 892(vi00) | nop
lq.xyzw vf06, 0(vi00) | nop
lq.xyzw vf07, 1(vi00) | nop
lq.xyzw vf08, 2(vi00) | nop
lq.xyzw vf09, 3(vi00) | nop
mtir vi01, vf01.y | nop
sq.xyzw vf25, 0(vi02) | nop
sq.xyzw vf29, 1(vi02) | nop
sq.xyzw vf30, 2(vi02) | nop
sq.xyzw vf25, 0(vi01) | nop
sq.xyzw vf29, 1(vi01) | nop
sq.xyzw vf30, 2(vi01) | nop
L14:
lqi.xyzw vf16, vi03 | nop
nop | nop
nop | nop
nop | nop
mtir vi06, vf16.z | nop
mtir vi04, vf16.x | nop
mtir vi05, vf16.y | nop
nop | nop
ibeq vi00, vi06, L15 | nop
nop | nop
lq.xyzw vf17, 4(vi04) | nop
lq.xyzw vf18, 4(vi05) | nop
lq.xyzw vf19, 174(vi05) | nop
b L16 | nop
lq.xyzw vf20, 174(vi04) | nop
L15:
lq.xyzw vf17, 4(vi05) | nop
lq.xyzw vf18, 4(vi04) | nop
lq.xyzw vf19, 174(vi04) | nop
lq.xyzw vf20, 174(vi05) | nop
L16:
move.xyzw vf15, vf17 | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf17
nop | madday.xyzw ACC, vf07, vf17
nop | maddz.xyzw vf17, vf08, vf17
nop | mulaw.xyzw ACC, vf09, vf00
nop | sub.xyzw vf29, vf18, vf15
nop | sub.xyzw vf30, vf19, vf15
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
nop | mul.xyzw vf21, vf17, vf02
nop | madday.xyzw ACC, vf07, vf18
nop | maddz.xyzw vf18, vf08, vf18
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf19
nop | madday.xyzw ACC, vf07, vf19
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
nop | maddz.xyzw vf19, vf08, vf19
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf20
nop | madday.xyzw ACC, vf07, vf20
nop | maddz.xyzw vf20, vf08, vf20
nop | mul.xyzw vf22, vf18, vf02
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
nop | add.xy vf25, vf17, vf03
nop | mulw.z vf17, vf17, vf12
nop | opmula.xyz ACC, vf29, vf30
nop | opmsub.xyz vf29, vf30, vf29
nop | mul.xyzw vf23, vf19, vf02
nop | mul.xyz vf29, vf29, vf15
div Q, vf12.x, vf20.w | mul.xyz vf19, vf19, Q
nop | add.xyzw vf17, vf17, vf05
nop | mul.xyzw vf24, vf20, vf02
nop | mul.xy vf25, vf25, vf04
nop | nop
nop | ftoi4.xyzw vf17, vf17
nop | add.xy vf26, vf18, vf03
nop | mul.xyz vf20, vf20, Q
nop | mulw.z vf18, vf18, vf12
nop | addy.x vf29, vf29, vf29
sq.xyzw vf25, 4(vi02) | nop
sq.xyzw vf17, 5(vi02) | nop
nop | add.xyzw vf18, vf18, vf05
nop | clipw.xyz vf21, vf21
nop | mul.xy vf26, vf26, vf04
nop | addz.x vf29, vf29, vf29
nop | ftoi4.xyzw vf18, vf18
nop | add.xy vf27, vf19, vf03
sq.xyzw vf26, 6(vi02) | mulw.z vf19, vf19, vf12
fsand vi01, 0x2 | clipw.xyz vf22, vf22
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
nop | clipw.xyz vf24, vf24
nop | add.xy vf28, vf20, vf03
nop | mulw.z vf20, vf20, vf12
nop | mul.xy vf27, vf27, vf04
nop | add.xyzw vf19, vf19, vf05
nop | nop
ibeq vi00, vi01, L17 | mul.xy vf28, vf28, vf04
nop | add.xyzw vf20, vf20, vf05
b L18 | nop
lq.xyzw vf31, 887(vi00) | nop
L17:
lq.xyzw vf31, 886(vi00) | nop
L18:
fcand vi01, 0xffffff | ftoi4.xyzw vf19, vf19
ibne vi00, vi01, L20 | nop
iaddi vi08, vi08, -0x1 | nop
sq.xyzw vf27, 8(vi02) | ftoi4.xyzw vf20, vf20
sq.xyzw vf31, 3(vi02) | nop
sq.xyzw vf19, 9(vi02) | nop
sq.xyzw vf28, 10(vi02) | nop
sq.xyzw vf20, 11(vi02) | nop
xgkick vi02 | nop
mtir vi02, vf01.y | nop
mr32.xyzw vf01, vf01 | nop
L19:
ibgtz vi08, L14 | nop
nop | nop
nop | nop :e
nop | nop
L20:
sq.xyzw vf21, 1000(vi00) | nop
sq.xyzw vf22, 1003(vi00) | nop
sq.xyzw vf23, 1006(vi00) | nop
sq.xyzw vf24, 1009(vi00) | nop
sq.xyzw vf31, 942(vi00) | nop
mfir.x vf29, vi02 | nop
mfir.y vf29, vi03 | nop
mfir.z vf29, vi07 | nop
bal vi15, L37 | nop
mfir.w vf29, vi08 | nop
mtir vi08, vf29.w | nop
mtir vi03, vf29.y | nop
mtir vi07, vf29.z | nop
b L19 | nop
mtir vi02, vf29.x | nop
L21:
iaddiu vi03, vi00, 0x158 | nop
ilwr.x vi08, vi03 | nop
mtir vi02, vf01.x | nop
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
lq.xyzw vf30, 891(vi00) | addw.z vf28, vf00, vf00
lq.xyzw vf06, 0(vi00) | nop
lq.xyzw vf07, 1(vi00) | nop
lq.xyzw vf08, 2(vi00) | nop
lq.xyzw vf09, 3(vi00) | nop
mtir vi01, vf01.y | nop
sq.xyzw vf25, 0(vi02) | nop
sq.xyzw vf29, 1(vi02) | nop
sq.xyzw vf30, 2(vi02) | nop
sq.xyzw vf25, 0(vi01) | nop
sq.xyzw vf29, 1(vi01) | nop
sq.xyzw vf30, 2(vi01) | nop
L22:
lqi.xyzw vf16, vi03 | nop
nop | nop
nop | nop
nop | nop
mtir vi01, vf16.w | nop
mtir vi04, vf16.x | nop
mtir vi05, vf16.y | nop
mtir vi06, vf16.z | nop
ibeq vi00, vi01, L23 | nop
lq.xyzw vf17, 4(vi04) | nop
lq.xyzw vf18, 4(vi05) | nop
b L24 | nop
lq.xyzw vf19, 4(vi06) | nop
L23:
lq.xyzw vf19, 4(vi05) | nop
lq.xyzw vf18, 4(vi06) | nop
L24:
nop | mulaw.xyzw ACC, vf09, vf00
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
nop | madday.xyzw ACC, vf07, vf17
nop | sub.xyzw vf29, vf18, vf17
nop | sub.xyzw vf30, vf19, vf17
nop | maddz.xyzw vf17, vf08, vf17
nop | mulaw.xyzw ACC, vf09, vf00
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
nop | madday.xyzw ACC, vf07, vf18
nop | mul.xyzw vf21, vf17, vf02
nop | maddz.xyzw vf18, vf08, vf18
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf19
nop | madday.xyzw ACC, vf07, vf19
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
nop | maddz.xyzw vf19, vf08, vf19
nop | mul.xyzw vf22, vf18, vf02
nop | opmula.xyz ACC, vf29, vf30
nop | opmsub.xyz vf29, vf30, vf29
nop | add.xy vf25, vf17, vf03
nop | mulw.z vf17, vf17, vf12
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
nop | mul.xyzw vf23, vf19, vf02
nop | mul.xyz vf29, vf29, vf15
nop | add.xyzw vf17, vf17, vf05
nop | mul.xy vf25, vf25, vf04
nop | nop
nop | ftoi4.xyzw vf17, vf17
nop | add.xy vf26, vf18, vf03
nop | mulw.z vf18, vf18, vf12
fcset 0x0 | addy.x vf29, vf29, vf29
nop | mul.xyz vf19, vf19, Q
sq.xyzw vf25, 4(vi02) | nop
sq.xyzw vf17, 5(vi02) | add.xyzw vf18, vf18, vf05
nop | clipw.xyz vf21, vf21
nop | mul.xy vf26, vf26, vf04
nop | addz.x vf29, vf29, vf29
nop | ftoi4.xyzw vf18, vf18
nop | add.xy vf27, vf19, vf03
sq.xyzw vf26, 6(vi02) | mulw.z vf19, vf19, vf12
fsand vi01, 0x2 | clipw.xyz vf22, vf22
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
ibeq vi00, vi01, L25 | mul.xy vf27, vf27, vf04
nop | add.xyzw vf19, vf19, vf05
b L26 | nop
lq.xyzw vf31, 887(vi00) | nop
L25:
lq.xyzw vf31, 886(vi00) | nop
L26:
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
ibne vi00, vi01, L34 | nop
iaddi vi08, vi08, -0x1 | nop
sq.xyzw vf27, 8(vi02) | nop
sq.xyzw vf31, 3(vi02) | nop
sq.xyzw vf19, 9(vi02) | nop
xgkick vi02 | nop
mtir vi02, vf01.y | nop
mr32.xyzw vf01, vf01 | nop
L27:
ibgtz vi08, L22 | nop
nop | nop
iaddiu vi03, vi00, 0x158 | nop
ilwr.x vi08, vi03 | nop
ilwr.y vi01, vi03 | nop
iaddi vi03, vi03, 0x1 | nop
L28:
lqi.xyzw vf16, vi03 | nop
nop | nop
nop | nop
mtir vi01, vf16.w | nop
mtir vi04, vf16.x | nop
mtir vi05, vf16.y | nop
mtir vi06, vf16.z | nop
ibne vi00, vi01, L29 | nop
lq.xyzw vf17, 174(vi04) | nop
lq.xyzw vf18, 174(vi05) | nop
b L30 | nop
lq.xyzw vf19, 174(vi06) | nop
L29:
lq.xyzw vf19, 174(vi05) | nop
lq.xyzw vf18, 174(vi06) | nop
L30:
nop | mulaw.xyzw ACC, vf09, vf00
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
nop | madday.xyzw ACC, vf07, vf17
nop | maddz.xyzw vf17, vf08, vf17
nop | mulaw.xyzw ACC, vf09, vf00
nop | sub.xyzw vf29, vf18, vf15
nop | sub.xyzw vf30, vf19, vf15
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
nop | mul.xyzw vf21, vf17, vf02
nop | madday.xyzw ACC, vf07, vf18
nop | maddz.xyzw vf18, vf08, vf18
nop | mulaw.xyzw ACC, vf09, vf00
nop | maddax.xyzw ACC, vf06, vf19
nop | madday.xyzw ACC, vf07, vf19
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
nop | maddz.xyzw vf19, vf08, vf19
nop | mul.xyzw vf22, vf18, vf02
nop | opmula.xyz ACC, vf29, vf30
nop | opmsub.xyz vf29, vf30, vf29
nop | add.xy vf25, vf17, vf03
nop | mulw.z vf17, vf17, vf12
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
nop | mul.xyzw vf23, vf19, vf02
nop | mul.xyz vf29, vf29, vf15
nop | add.xyzw vf17, vf17, vf05
nop | mul.xy vf25, vf25, vf04
nop | nop
nop | add.xy vf26, vf18, vf03
nop | ftoi4.xyzw vf17, vf17
nop | mulw.z vf18, vf18, vf12
fcset 0x0 | addy.x vf29, vf29, vf29
nop | mul.xyz vf19, vf19, Q
sq.xyzw vf25, 4(vi02) | nop
sq.xyzw vf17, 5(vi02) | add.xyzw vf18, vf18, vf05
nop | clipw.xyz vf21, vf21
nop | mul.xy vf26, vf26, vf04
nop | addz.x vf29, vf29, vf29
nop | ftoi4.xyzw vf18, vf18
nop | add.xy vf27, vf19, vf03
sq.xyzw vf26, 6(vi02) | mulw.z vf19, vf19, vf12
fsand vi01, 0x2 | clipw.xyz vf22, vf22
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
ibeq vi00, vi01, L31 | mul.xy vf27, vf27, vf04
nop | add.xyzw vf19, vf19, vf05
b L32 | nop
lq.xyzw vf31, 887(vi00) | nop
L31:
lq.xyzw vf31, 886(vi00) | nop
L32:
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
ibne vi00, vi01, L35 | nop
iaddi vi08, vi08, -0x1 | nop
sq.xyzw vf27, 8(vi02) | nop
sq.xyzw vf31, 3(vi02) | nop
sq.xyzw vf19, 9(vi02) | nop
xgkick vi02 | nop
mtir vi02, vf01.y | nop
mr32.xyzw vf01, vf01 | nop
L33:
ibgtz vi08, L28 | nop
nop | nop
nop | nop :e
nop | nop
L34:
sq.xyzw vf21, 1000(vi00) | nop
sq.xyzw vf22, 1003(vi00) | nop
sq.xyzw vf23, 1006(vi00) | nop
sq.xyzw vf31, 942(vi00) | nop
mfir.x vf29, vi02 | nop
mfir.y vf29, vi03 | nop
mfir.z vf29, vi07 | nop
bal vi15, L36 | nop
mfir.w vf29, vi08 | nop
mtir vi08, vf29.w | nop
mtir vi03, vf29.y | nop
mtir vi07, vf29.z | nop
b L27 | nop
mtir vi02, vf29.x | nop
L35:
sq.xyzw vf21, 1000(vi00) | nop
sq.xyzw vf22, 1003(vi00) | nop
sq.xyzw vf23, 1006(vi00) | nop
sq.xyzw vf31, 942(vi00) | nop
mfir.x vf29, vi02 | nop
mfir.y vf29, vi03 | nop
mfir.z vf29, vi07 | nop
bal vi15, L36 | nop
mfir.w vf29, vi08 | nop
mtir vi08, vf29.w | nop
mtir vi03, vf29.y | nop
mtir vi07, vf29.z | nop
b L33 | nop
mtir vi02, vf29.x | nop
L36:
sq.xyzw vf00, 893(vi00) | nop
sq.xyzw vf00, 900(vi00) | nop
sq.xyzw vf00, 907(vi00) | nop
sq.xyzw vf00, 914(vi00) | nop
sq.xyzw vf00, 921(vi00) | nop
sq.xyzw vf00, 928(vi00) | nop
iaddiu vi01, vi00, 0x2d3 | nop
isw.z vi01, 893(vi00) | nop
iaddiu vi01, vi00, 0x2d5 | nop
isw.z vi01, 900(vi00) | nop
iaddiu vi01, vi00, 0x2d7 | nop
isw.z vi01, 907(vi00) | nop
iaddiu vi01, vi00, 0x2d9 | nop
isw.z vi01, 914(vi00) | nop
iaddiu vi01, vi00, 0x2db | nop
isw.z vi01, 921(vi00) | nop
iaddiu vi01, vi00, 0x2dd | nop
isw.z vi01, 928(vi00) | nop
iaddiu vi03, vi00, 0x3b0 | nop
iaddiu vi04, vi00, 0x3af | nop
mfir.x vf31, vi15 | nop
iaddi vi05, vi00, 0x0 | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3e8 | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3eb | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3ee | nop
b L47 | nop
nop | nop
L37:
sq.xyzw vf00, 893(vi00) | nop
sq.xyzw vf00, 900(vi00) | nop
sq.xyzw vf00, 907(vi00) | nop
sq.xyzw vf00, 914(vi00) | nop
sq.xyzw vf00, 921(vi00) | nop
sq.xyzw vf00, 928(vi00) | nop
iaddiu vi01, vi00, 0x2d3 | nop
isw.z vi01, 893(vi00) | nop
iaddiu vi01, vi00, 0x2d5 | nop
isw.z vi01, 900(vi00) | nop
iaddiu vi01, vi00, 0x2d7 | nop
isw.z vi01, 907(vi00) | nop
iaddiu vi01, vi00, 0x2d9 | nop
isw.z vi01, 914(vi00) | nop
iaddiu vi01, vi00, 0x2db | nop
isw.z vi01, 921(vi00) | nop
iaddiu vi01, vi00, 0x2dd | nop
isw.z vi01, 928(vi00) | nop
iaddiu vi03, vi00, 0x3b0 | nop
iaddiu vi04, vi00, 0x3af | nop
mfir.x vf31, vi15 | nop
iaddi vi05, vi00, 0x0 | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3e8 | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3eb | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3ee | nop
bal vi15, L38 | nop
iaddiu vi07, vi00, 0x3f1 | nop
b L47 | nop
nop | nop
L38:
iaddiu vi09, vi00, 0x37d | nop
L39:
iaddi vi10, vi00, 0x0 | nop
L40:
isubiu vi01, vi09, 0x3a7 | nop
ilwr.y vi08, vi09 | nop
ibgez vi01, L44 | nop
ilwr.z vi06, vi09 | nop
lq.xyzw vf15, 0(vi07) | nop
lq.xyzw vf14, 0(vi08) | nop
ibne vi00, vi08, L41 | nop
iswr.y vi07, vi09 | nop
jalr vi11, vi06 | nop
iswr.x vi07, vi09 | nop
nop | nop
nop | nop
nop | nop
fsand vi02, 0x2 | nop
ibne vi00, vi02, L45 | nop
nop | nop
b L40 | nop
iaddi vi09, vi09, 0x7 | nop
L41:
jalr vi11, vi06 | nop
nop | nop
nop | nop
nop | nop
fsand vi01, 0x2 | nop
fsand vi02, 0x2 | nop
ibne vi00, vi01, L43 | nop
nop | nop
ibne vi00, vi02, L42 | nop
nop | nop
b L40 | nop
iaddi vi09, vi09, 0x7 | nop
L42:
bal vi11, L52 | nop
iaddi vi07, vi09, 0x1 | nop
sq.xyzw vf16, 1(vi09) | nop
b L40 | nop
iaddi vi09, vi09, 0x7 | nop
L43:
ibne vi00, vi02, L45 | nop
nop | nop
bal vi11, L53 | nop
nop | nop
sq.xyzw vf16, 4(vi09) | nop
iaddi vi09, vi09, 0x7 | nop
isw.x vi09, 935(vi10) | nop
isw.y vi07, 935(vi10) | nop
iaddi vi10, vi10, 0x1 | nop
b L40 | nop
iaddi vi07, vi09, -0x3 | nop
L44:
lq.xyzw vf14, 0(vi07) | nop
iaddi vi05, vi05, 0x1 | nop
div Q, vf00.w, vf14.w | nop
nop | mul.xyzw vf14, vf14, vf13
iaddi vi03, vi03, 0x2 | nop
waitq | subw.w vf14, vf00, vf00
nop | mul.xyz vf14, vf14, Q
nop | add.xy vf26, vf14, vf03
nop | mulw.z vf14, vf14, vf12
nop | add.xyzw vf14, vf14, vf05
nop | mul.xy vf26, vf26, vf04
sq.xyzw vf26, -2(vi03) | ftoi4.xyzw vf14, vf14
sq.xyzw vf14, -1(vi03) | nop
L45:
iblez vi10, L46 | nop
nop | nop
ilw.x vi09, 934(vi10) | nop
ilw.y vi07, 934(vi10) | nop
b L40 | nop
iaddi vi10, vi10, -0x1 | nop
L46:
jr vi15 | nop
nop | nop
L47:
iaddiu vi09, vi00, 0x37d | nop
L48:
ilwr.x vi08, vi09 | nop
ilwr.y vi07, vi09 | nop
ilwr.z vi06, vi09 | nop
nop | nop
ibeq vi00, vi08, L50 | nop
lq.xyzw vf14, 0(vi07) | nop
ibeq vi07, vi08, L50 | nop
lq.xyzw vf15, 0(vi08) | nop
jalr vi11, vi06 | nop
nop | nop
nop | nop
nop | nop
fsand vi01, 0x2 | nop
fsand vi02, 0x2 | nop
ibeq vi02, vi01, L50 | nop
nop | nop
ibeq vi00, vi01, L49 | nop
nop | nop
bal vi11, L53 | nop
nop | nop
sq.xyzw vf16, 4(vi09) | nop
iaddi vi07, vi09, 0x4 | nop
ior vi12, vi09, vi00 | nop
bal vi15, L39 | nop
iaddi vi09, vi09, 0x7 | nop
b L50 | nop
ior vi09, vi12, vi00 | nop
L49:
bal vi11, L52 | nop
nop | nop
sq.xyzw vf16, 1(vi09) | nop
iaddi vi07, vi09, 0x1 | nop
ior vi12, vi09, vi00 | nop
bal vi15, L39 | nop
iaddi vi09, vi09, 0x7 | nop
ior vi09, vi12, vi00 | nop
L50:
isubiu vi01, vi09, 0x3a0 | nop
iswr.x vi00, vi09 | nop
iswr.y vi00, vi09 | nop
ibltz vi01, L48 | nop
iaddi vi09, vi09, 0x7 | nop
ibeq vi00, vi05, L51 | nop
mtir vi15, vf31.x | nop
iaddiu vi05, vi05, 0x4000 | nop
iaddiu vi05, vi05, 0x4000 | nop
iswr.x vi05, vi04 | nop
iaddiu vi01, vi00, 0x3ac | nop
xgkick vi01 | nop
lq.xyzw vf30, 888(vi00) | nop
lq.xyzw vf31, 890(vi00) | nop
iaddiu vi01, vi00, 0x3fe | nop
isubiu vi02, vi00, 0x7fff | nop
sq.xyzw vf30, 0(vi01) | nop
iswr.x vi02, vi01 | nop
sq.xyzw vf31, 1(vi01) | nop
nop | nop
xgkick vi01 | nop
L51:
nop | nop
jr vi15 | nop
nop | nop
jr vi11 | addx.w vf30, vf14, vf14
nop | addx.w vf31, vf15, vf15
jr vi11 | subx.w vf30, vf14, vf14
nop | subx.w vf31, vf15, vf15
jr vi11 | addy.w vf30, vf14, vf14
nop | addy.w vf31, vf15, vf15
jr vi11 | suby.w vf30, vf14, vf14
nop | suby.w vf31, vf15, vf15
jr vi11 | addz.w vf30, vf14, vf14
nop | addz.w vf31, vf15, vf15
jr vi11 | subz.w vf30, vf14, vf14
nop | subz.w vf31, vf15, vf15
L52:
nop | subw.w vf31, vf30, vf31
div Q, vf30.w, vf31.w | sub.xyzw vf16, vf15, vf14
waitq | mul.xyzw vf16, vf16, Q
jr vi11 | add.xyzw vf16, vf14, vf16
nop | nop
L53:
nop | subw.w vf30, vf30, vf31
div Q, vf31.w, vf30.w | sub.xyzw vf16, vf14, vf15
waitq | mul.xyzw vf16, vf16, Q
jr vi11 | sub.xyzw vf16, vf15, vf16
nop | nop
lq. vf00, 0(vi00) | addx. vf00, vf00, vf00
File diff suppressed because it is too large Load Diff