diff --git a/src/lib/mtx.c b/src/lib/mtx.c index 5cbbaa490..45022982e 100644 --- a/src/lib/mtx.c +++ b/src/lib/mtx.c @@ -580,175 +580,34 @@ void mtx0001719c(f32 arg0[4][4], f32 arg1[4][4]) arg1[3][3] = 1; } -GLOBAL_ASM( -glabel mtx000172f0 -/* 172f0: c4820000 */ lwc1 $f2,0x0($a0) -/* 172f4: c48c0014 */ lwc1 $f12,0x14($a0) -/* 172f8: c48e0028 */ lwc1 $f14,0x28($a0) -/* 172fc: c4900004 */ lwc1 $f16,0x4($a0) -/* 17300: 460c1102 */ mul.s $f4,$f2,$f12 -/* 17304: c4920018 */ lwc1 $f18,0x18($a0) -/* 17308: c48a0020 */ lwc1 $f10,0x20($a0) -/* 1730c: 27bdffd0 */ addiu $sp,$sp,-48 -/* 17310: 3c013f80 */ lui $at,0x3f80 -/* 17314: e7aa0010 */ swc1 $f10,0x10($sp) -/* 17318: c7a80010 */ lwc1 $f8,0x10($sp) -/* 1731c: 460e2002 */ mul.s $f0,$f4,$f14 -/* 17320: c48a0008 */ lwc1 $f10,0x8($a0) -/* 17324: 46128182 */ mul.s $f6,$f16,$f18 -/* 17328: e7aa000c */ swc1 $f10,0xc($sp) -/* 1732c: c7aa000c */ lwc1 $f10,0xc($sp) -/* 17330: 46083102 */ mul.s $f4,$f6,$f8 -/* 17334: c4860010 */ lwc1 $f6,0x10($a0) -/* 17338: e7a60008 */ swc1 $f6,0x8($sp) -/* 1733c: c7a60008 */ lwc1 $f6,0x8($sp) -/* 17340: 46040000 */ add.s $f0,$f0,$f4 -/* 17344: c4840024 */ lwc1 $f4,0x24($a0) -/* 17348: e7a80000 */ swc1 $f8,0x0($sp) -/* 1734c: e7a4001c */ swc1 $f4,0x1c($sp) -/* 17350: 46065102 */ mul.s $f4,$f10,$f6 -/* 17354: c7a8001c */ lwc1 $f8,0x1c($sp) -/* 17358: 46082102 */ mul.s $f4,$f4,$f8 -/* 1735c: 46040000 */ add.s $f0,$f0,$f4 -/* 17360: 460c5102 */ mul.s $f4,$f10,$f12 -/* 17364: c7aa0000 */ lwc1 $f10,0x0($sp) -/* 17368: 460a2102 */ mul.s $f4,$f4,$f10 -/* 1736c: 00000000 */ nop -/* 17370: 46068282 */ mul.s $f10,$f16,$f6 -/* 17374: 46040001 */ sub.s $f0,$f0,$f4 -/* 17378: 460e5102 */ mul.s $f4,$f10,$f14 -/* 1737c: 00000000 */ nop -/* 17380: 46121182 */ mul.s $f6,$f2,$f18 -/* 17384: 44811000 */ mtc1 $at,$f2 -/* 17388: 46040001 */ sub.s $f0,$f0,$f4 -/* 1738c: 46083282 */ mul.s $f10,$f6,$f8 -/* 17390: 460a0001 */ sub.s $f0,$f0,$f10 -/* 17394: 460e6102 */ mul.s $f4,$f12,$f14 -/* 17398: 00000000 */ nop -/* 1739c: 46124182 */ mul.s $f6,$f8,$f18 -/* 173a0: 46001003 */ div.s $f0,$f2,$f0 -/* 173a4: 46062281 */ sub.s $f10,$f4,$f6 -/* 173a8: 46005202 */ mul.s $f8,$f10,$f0 -/* 173ac: e4a80000 */ swc1 $f8,0x0($a1) -/* 173b0: c4840018 */ lwc1 $f4,0x18($a0) -/* 173b4: c4860020 */ lwc1 $f6,0x20($a0) -/* 173b8: c4880028 */ lwc1 $f8,0x28($a0) -/* 173bc: 46062282 */ mul.s $f10,$f4,$f6 -/* 173c0: c4840010 */ lwc1 $f4,0x10($a0) -/* 173c4: 46044182 */ mul.s $f6,$f8,$f4 -/* 173c8: 46065201 */ sub.s $f8,$f10,$f6 -/* 173cc: 46004102 */ mul.s $f4,$f8,$f0 -/* 173d0: e4a40010 */ swc1 $f4,0x10($a1) -/* 173d4: c48a0010 */ lwc1 $f10,0x10($a0) -/* 173d8: c4860024 */ lwc1 $f6,0x24($a0) -/* 173dc: c4840020 */ lwc1 $f4,0x20($a0) -/* 173e0: 46065202 */ mul.s $f8,$f10,$f6 -/* 173e4: c48a0014 */ lwc1 $f10,0x14($a0) -/* 173e8: 460a2182 */ mul.s $f6,$f4,$f10 -/* 173ec: 46064101 */ sub.s $f4,$f8,$f6 -/* 173f0: 46002282 */ mul.s $f10,$f4,$f0 -/* 173f4: e4aa0020 */ swc1 $f10,0x20($a1) -/* 173f8: c4880008 */ lwc1 $f8,0x8($a0) -/* 173fc: c4860024 */ lwc1 $f6,0x24($a0) -/* 17400: c48a0028 */ lwc1 $f10,0x28($a0) -/* 17404: 46064102 */ mul.s $f4,$f8,$f6 -/* 17408: c4880004 */ lwc1 $f8,0x4($a0) -/* 1740c: 46085182 */ mul.s $f6,$f10,$f8 -/* 17410: 46062281 */ sub.s $f10,$f4,$f6 -/* 17414: 46005202 */ mul.s $f8,$f10,$f0 -/* 17418: e4a80004 */ swc1 $f8,0x4($a1) -/* 1741c: c4840000 */ lwc1 $f4,0x0($a0) -/* 17420: c4860028 */ lwc1 $f6,0x28($a0) -/* 17424: c4880020 */ lwc1 $f8,0x20($a0) -/* 17428: 46062282 */ mul.s $f10,$f4,$f6 -/* 1742c: c4840008 */ lwc1 $f4,0x8($a0) -/* 17430: 46044182 */ mul.s $f6,$f8,$f4 -/* 17434: 46065201 */ sub.s $f8,$f10,$f6 -/* 17438: 46004102 */ mul.s $f4,$f8,$f0 -/* 1743c: e4a40014 */ swc1 $f4,0x14($a1) -/* 17440: c48a0004 */ lwc1 $f10,0x4($a0) -/* 17444: c4860020 */ lwc1 $f6,0x20($a0) -/* 17448: c4840024 */ lwc1 $f4,0x24($a0) -/* 1744c: 46065202 */ mul.s $f8,$f10,$f6 -/* 17450: c48a0000 */ lwc1 $f10,0x0($a0) -/* 17454: 460a2182 */ mul.s $f6,$f4,$f10 -/* 17458: 46064101 */ sub.s $f4,$f8,$f6 -/* 1745c: 46002282 */ mul.s $f10,$f4,$f0 -/* 17460: e4aa0024 */ swc1 $f10,0x24($a1) -/* 17464: c4880004 */ lwc1 $f8,0x4($a0) -/* 17468: c4860018 */ lwc1 $f6,0x18($a0) -/* 1746c: c48a0014 */ lwc1 $f10,0x14($a0) -/* 17470: 46064102 */ mul.s $f4,$f8,$f6 -/* 17474: c4880008 */ lwc1 $f8,0x8($a0) -/* 17478: 46085182 */ mul.s $f6,$f10,$f8 -/* 1747c: 46062281 */ sub.s $f10,$f4,$f6 -/* 17480: 46005202 */ mul.s $f8,$f10,$f0 -/* 17484: e4a80008 */ swc1 $f8,0x8($a1) -/* 17488: c4860010 */ lwc1 $f6,0x10($a0) -/* 1748c: c4840008 */ lwc1 $f4,0x8($a0) -/* 17490: c4880018 */ lwc1 $f8,0x18($a0) -/* 17494: 46062282 */ mul.s $f10,$f4,$f6 -/* 17498: c4840000 */ lwc1 $f4,0x0($a0) -/* 1749c: 46044182 */ mul.s $f6,$f8,$f4 -/* 174a0: 46065201 */ sub.s $f8,$f10,$f6 -/* 174a4: 46004102 */ mul.s $f4,$f8,$f0 -/* 174a8: e4a40018 */ swc1 $f4,0x18($a1) -/* 174ac: c4860014 */ lwc1 $f6,0x14($a0) -/* 174b0: c48a0000 */ lwc1 $f10,0x0($a0) -/* 174b4: c4840010 */ lwc1 $f4,0x10($a0) -/* 174b8: 46065202 */ mul.s $f8,$f10,$f6 -/* 174bc: c48a0004 */ lwc1 $f10,0x4($a0) -/* 174c0: 460a2182 */ mul.s $f6,$f4,$f10 -/* 174c4: 46064101 */ sub.s $f4,$f8,$f6 -/* 174c8: c4a60000 */ lwc1 $f6,0x0($a1) -/* 174cc: 46002282 */ mul.s $f10,$f4,$f0 -/* 174d0: 44800000 */ mtc1 $zero,$f0 -/* 174d4: e4aa0028 */ swc1 $f10,0x28($a1) -/* 174d8: c4880030 */ lwc1 $f8,0x30($a0) -/* 174dc: c48a0034 */ lwc1 $f10,0x34($a0) -/* 174e0: 46064102 */ mul.s $f4,$f8,$f6 -/* 174e4: c4a80010 */ lwc1 $f8,0x10($a1) -/* 174e8: 46085182 */ mul.s $f6,$f10,$f8 -/* 174ec: c4a80020 */ lwc1 $f8,0x20($a1) -/* 174f0: 46062280 */ add.s $f10,$f4,$f6 -/* 174f4: c4840038 */ lwc1 $f4,0x38($a0) -/* 174f8: 46044182 */ mul.s $f6,$f8,$f4 -/* 174fc: 460a3200 */ add.s $f8,$f6,$f10 -/* 17500: c4aa0004 */ lwc1 $f10,0x4($a1) -/* 17504: 46004107 */ neg.s $f4,$f8 -/* 17508: e4a40030 */ swc1 $f4,0x30($a1) -/* 1750c: c4860030 */ lwc1 $f6,0x30($a0) -/* 17510: c4840034 */ lwc1 $f4,0x34($a0) -/* 17514: 460a3202 */ mul.s $f8,$f6,$f10 -/* 17518: c4a60014 */ lwc1 $f6,0x14($a1) -/* 1751c: 46062282 */ mul.s $f10,$f4,$f6 -/* 17520: c4a60024 */ lwc1 $f6,0x24($a1) -/* 17524: 460a4100 */ add.s $f4,$f8,$f10 -/* 17528: c4880038 */ lwc1 $f8,0x38($a0) -/* 1752c: 46083282 */ mul.s $f10,$f6,$f8 -/* 17530: 46045180 */ add.s $f6,$f10,$f4 -/* 17534: c4a40008 */ lwc1 $f4,0x8($a1) -/* 17538: 46003207 */ neg.s $f8,$f6 -/* 1753c: e4a80034 */ swc1 $f8,0x34($a1) -/* 17540: c48a0030 */ lwc1 $f10,0x30($a0) -/* 17544: c4880034 */ lwc1 $f8,0x34($a0) -/* 17548: 46045182 */ mul.s $f6,$f10,$f4 -/* 1754c: c4aa0018 */ lwc1 $f10,0x18($a1) -/* 17550: 460a4102 */ mul.s $f4,$f8,$f10 -/* 17554: c4aa0028 */ lwc1 $f10,0x28($a1) -/* 17558: 46043200 */ add.s $f8,$f6,$f4 -/* 1755c: c4860038 */ lwc1 $f6,0x38($a0) -/* 17560: 27bd0030 */ addiu $sp,$sp,0x30 -/* 17564: e4a2003c */ swc1 $f2,0x3c($a1) -/* 17568: 46065102 */ mul.s $f4,$f10,$f6 -/* 1756c: e4a0000c */ swc1 $f0,0xc($a1) -/* 17570: e4a0001c */ swc1 $f0,0x1c($a1) -/* 17574: e4a0002c */ swc1 $f0,0x2c($a1) -/* 17578: 46082280 */ add.s $f10,$f4,$f8 -/* 1757c: 46005187 */ neg.s $f6,$f10 -/* 17580: 03e00008 */ jr $ra -/* 17584: e4a60038 */ swc1 $f6,0x38($a1) -); +void mtx000172f0(f32 arg0[4][4], f32 arg1[4][4]) +{ + f32 f0 = 0.0f; + f0 += arg0[0][0] * arg0[1][1] * arg0[2][2]; + f0 += arg0[0][1] * arg0[1][2] * arg0[2][0]; + f0 += arg0[0][2] * arg0[1][0] * arg0[2][1]; + f0 -= arg0[0][2] * arg0[1][1] * arg0[2][0]; + f0 -= arg0[0][1] * arg0[1][0] * arg0[2][2]; + f0 -= arg0[0][0] * arg0[1][2] * arg0[2][1]; + f0 = 1.0f / f0; + + arg1[0][0] = (arg0[1][1] * arg0[2][2] - arg0[1][2] * arg0[2][1]) * f0; + arg1[1][0] = (arg0[1][2] * arg0[2][0] - arg0[1][0] * arg0[2][2]) * f0; + arg1[2][0] = (arg0[1][0] * arg0[2][1] - arg0[1][1] * arg0[2][0]) * f0; + arg1[0][1] = (arg0[0][2] * arg0[2][1] - arg0[0][1] * arg0[2][2]) * f0; + arg1[1][1] = (arg0[0][0] * arg0[2][2] - arg0[0][2] * arg0[2][0]) * f0; + arg1[2][1] = (arg0[0][1] * arg0[2][0] - arg0[0][0] * arg0[2][1]) * f0; + arg1[0][2] = (arg0[0][1] * arg0[1][2] - arg0[0][2] * arg0[1][1]) * f0; + arg1[1][2] = (arg0[0][2] * arg0[1][0] - arg0[0][0] * arg0[1][2]) * f0; + arg1[2][2] = (arg0[0][0] * arg0[1][1] - arg0[0][1] * arg0[1][0]) * f0; + arg1[3][0] = -(arg0[3][0] * arg1[0][0] + arg0[3][1] * arg1[1][0] + arg0[3][2] * arg1[2][0]); + arg1[3][1] = -(arg0[3][0] * arg1[0][1] + arg0[3][1] * arg1[1][1] + arg0[3][2] * arg1[2][1]); + arg1[3][2] = -(arg0[3][0] * arg1[0][2] + arg0[3][1] * arg1[1][2] + arg0[3][2] * arg1[2][2]); + arg1[0][3] = 0.0f; + arg1[1][3] = 0.0f; + arg1[2][3] = 0.0f; + arg1[3][3] = 1.0f; +} void mtx00017588(f32 arg0[4][4], f32 arg1[4][4]) {