From 54add2b5743c11a37b05d4ba4f70346b176f8af0 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 6 Nov 2021 13:45:26 +1000 Subject: [PATCH] Decompile mtx0001719c --- src/include/lib/mtx.h | 2 +- src/lib/mtx.c | 110 +++++++++--------------------------------- 2 files changed, 23 insertions(+), 89 deletions(-) diff --git a/src/include/lib/mtx.h b/src/include/lib/mtx.h index 250b1a1ff..3a4584692 100644 --- a/src/include/lib/mtx.h +++ b/src/include/lib/mtx.h @@ -56,7 +56,7 @@ u32 mtx00016e98(void); void mtx4Align(f32 mtx[4][4], f32 radians, f32 x, f32 y, f32 z); void mtx4LoadRotationFrom(f32 src[4][4], f32 dst[4][4]); u32 mtx000170e4(void); -u32 mtx0001719c(void); +void mtx0001719c(f32 arg0[4][4], f32 arg1[4][4]); u32 mtx000172f0(void); void mtx00017588(f32 arg0[4][4], f32 arg1[4][4]); void mtx00017614(f32 arg0[4][4], f32 arg1[4][4]); diff --git a/src/lib/mtx.c b/src/lib/mtx.c index 00dcce033..66bed5f7f 100644 --- a/src/lib/mtx.c +++ b/src/lib/mtx.c @@ -913,94 +913,28 @@ glabel mtx000170e4 /* 17198: e4a40028 */ swc1 $f4,0x28($a1) ); -GLOBAL_ASM( -glabel mtx0001719c -/* 1719c: c48c0000 */ lwc1 $f12,0x0($a0) -/* 171a0: c48e0010 */ lwc1 $f14,0x10($a0) -/* 171a4: c4820020 */ lwc1 $f2,0x20($a0) -/* 171a8: 460c6102 */ mul.s $f4,$f12,$f12 -/* 171ac: 3c013f80 */ lui $at,0x3f80 -/* 171b0: 44818000 */ mtc1 $at,$f16 -/* 171b4: 460e7182 */ mul.s $f6,$f14,$f14 -/* 171b8: 46062200 */ add.s $f8,$f4,$f6 -/* 171bc: 46021282 */ mul.s $f10,$f2,$f2 -/* 171c0: 46085000 */ add.s $f0,$f10,$f8 -/* 171c4: 46008003 */ div.s $f0,$f16,$f0 -/* 171c8: 46006482 */ mul.s $f18,$f12,$f0 -/* 171cc: e4b20000 */ swc1 $f18,0x0($a1) -/* 171d0: c4840010 */ lwc1 $f4,0x10($a0) -/* 171d4: 46002182 */ mul.s $f6,$f4,$f0 -/* 171d8: e4a60004 */ swc1 $f6,0x4($a1) -/* 171dc: c48a0020 */ lwc1 $f10,0x20($a0) -/* 171e0: 46005202 */ mul.s $f8,$f10,$f0 -/* 171e4: e4a80008 */ swc1 $f8,0x8($a1) -/* 171e8: c4920004 */ lwc1 $f18,0x4($a0) -/* 171ec: 46009102 */ mul.s $f4,$f18,$f0 -/* 171f0: e4a40010 */ swc1 $f4,0x10($a1) -/* 171f4: c4860014 */ lwc1 $f6,0x14($a0) -/* 171f8: 46003282 */ mul.s $f10,$f6,$f0 -/* 171fc: e4aa0014 */ swc1 $f10,0x14($a1) -/* 17200: c4880024 */ lwc1 $f8,0x24($a0) -/* 17204: 46004482 */ mul.s $f18,$f8,$f0 -/* 17208: e4b20018 */ swc1 $f18,0x18($a1) -/* 1720c: c4840008 */ lwc1 $f4,0x8($a0) -/* 17210: 46002182 */ mul.s $f6,$f4,$f0 -/* 17214: e4a60020 */ swc1 $f6,0x20($a1) -/* 17218: c48a0018 */ lwc1 $f10,0x18($a0) -/* 1721c: c4a60000 */ lwc1 $f6,0x0($a1) -/* 17220: 46005202 */ mul.s $f8,$f10,$f0 -/* 17224: e4a80024 */ swc1 $f8,0x24($a1) -/* 17228: c4920028 */ lwc1 $f18,0x28($a0) -/* 1722c: 46009102 */ mul.s $f4,$f18,$f0 -/* 17230: c4b20010 */ lwc1 $f18,0x10($a1) -/* 17234: 44800000 */ mtc1 $zero,$f0 -/* 17238: e4a40028 */ swc1 $f4,0x28($a1) -/* 1723c: c48a0030 */ lwc1 $f10,0x30($a0) -/* 17240: c4840034 */ lwc1 $f4,0x34($a0) -/* 17244: 460a3202 */ mul.s $f8,$f6,$f10 -/* 17248: 00000000 */ nop -/* 1724c: 46049182 */ mul.s $f6,$f18,$f4 -/* 17250: c4a40020 */ lwc1 $f4,0x20($a1) -/* 17254: c4920038 */ lwc1 $f18,0x38($a0) -/* 17258: 46064280 */ add.s $f10,$f8,$f6 -/* 1725c: 46049202 */ mul.s $f8,$f18,$f4 -/* 17260: c4a40004 */ lwc1 $f4,0x4($a1) -/* 17264: 460a4180 */ add.s $f6,$f8,$f10 -/* 17268: 46003487 */ neg.s $f18,$f6 -/* 1726c: c4a60014 */ lwc1 $f6,0x14($a1) -/* 17270: e4b20030 */ swc1 $f18,0x30($a1) -/* 17274: c4880030 */ lwc1 $f8,0x30($a0) -/* 17278: c4920034 */ lwc1 $f18,0x34($a0) -/* 1727c: 46082282 */ mul.s $f10,$f4,$f8 -/* 17280: 00000000 */ nop -/* 17284: 46123102 */ mul.s $f4,$f6,$f18 -/* 17288: c4b20024 */ lwc1 $f18,0x24($a1) -/* 1728c: c4860038 */ lwc1 $f6,0x38($a0) -/* 17290: 46045200 */ add.s $f8,$f10,$f4 -/* 17294: 46123282 */ mul.s $f10,$f6,$f18 -/* 17298: c4b20008 */ lwc1 $f18,0x8($a1) -/* 1729c: 46085100 */ add.s $f4,$f10,$f8 -/* 172a0: 46002187 */ neg.s $f6,$f4 -/* 172a4: c4a40018 */ lwc1 $f4,0x18($a1) -/* 172a8: e4a60034 */ swc1 $f6,0x34($a1) -/* 172ac: c48a0030 */ lwc1 $f10,0x30($a0) -/* 172b0: c4860034 */ lwc1 $f6,0x34($a0) -/* 172b4: 460a9202 */ mul.s $f8,$f18,$f10 -/* 172b8: 00000000 */ nop -/* 172bc: 46062482 */ mul.s $f18,$f4,$f6 -/* 172c0: c4a60028 */ lwc1 $f6,0x28($a1) -/* 172c4: c4840038 */ lwc1 $f4,0x38($a0) -/* 172c8: e4b0003c */ swc1 $f16,0x3c($a1) -/* 172cc: e4a0000c */ swc1 $f0,0xc($a1) -/* 172d0: e4a0001c */ swc1 $f0,0x1c($a1) -/* 172d4: e4a0002c */ swc1 $f0,0x2c($a1) -/* 172d8: 46124280 */ add.s $f10,$f8,$f18 -/* 172dc: 46062202 */ mul.s $f8,$f4,$f6 -/* 172e0: 460a4480 */ add.s $f18,$f8,$f10 -/* 172e4: 46009107 */ neg.s $f4,$f18 -/* 172e8: 03e00008 */ jr $ra -/* 172ec: e4a40038 */ swc1 $f4,0x38($a1) -); +void mtx0001719c(f32 arg0[4][4], f32 arg1[4][4]) +{ + f32 tmp = arg0[0][0] * arg0[0][0] + arg0[1][0] * arg0[1][0] + arg0[2][0] * arg0[2][0]; + tmp = 1 / tmp; + + arg1[0][0] = arg0[0][0] * tmp; + arg1[0][1] = arg0[1][0] * tmp; + arg1[0][2] = arg0[2][0] * tmp; + arg1[1][0] = arg0[0][1] * tmp; + arg1[1][1] = arg0[1][1] * tmp; + arg1[1][2] = arg0[2][1] * tmp; + arg1[2][0] = arg0[0][2] * tmp; + arg1[2][1] = arg0[1][2] * tmp; + arg1[2][2] = arg0[2][2] * tmp; + arg1[3][0] = -(arg1[0][0] * arg0[3][0] + arg1[1][0] * arg0[3][1] + arg1[2][0] * arg0[3][2]); + arg1[3][1] = -(arg1[0][1] * arg0[3][0] + arg1[1][1] * arg0[3][1] + arg1[2][1] * arg0[3][2]); + arg1[3][2] = -(arg1[0][2] * arg0[3][0] + arg1[1][2] * arg0[3][1] + arg1[2][2] * arg0[3][2]); + arg1[0][3] = 0; + arg1[1][3] = 0; + arg1[2][3] = 0; + arg1[3][3] = 1; +} GLOBAL_ASM( glabel mtx000172f0