From aa61bbfb0158af4c17c75730c0480c22a8e67d99 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 6 Nov 2021 14:03:41 +1000 Subject: [PATCH] Decompile mtx000170e4 --- src/include/lib/mtx.h | 2 +- src/lib/mtx.c | 75 +++++++++++++++---------------------------- 2 files changed, 27 insertions(+), 50 deletions(-) diff --git a/src/include/lib/mtx.h b/src/include/lib/mtx.h index 3a4584692..160d2c610 100644 --- a/src/include/lib/mtx.h +++ b/src/include/lib/mtx.h @@ -55,7 +55,7 @@ u32 mtx00016dcc(f32 arg0, f32 arg1); 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); +void mtx000170e4(f32 src[4][4], f32 dst[4][4]); void mtx0001719c(f32 arg0[4][4], f32 arg1[4][4]); u32 mtx000172f0(void); void mtx00017588(f32 arg0[4][4], f32 arg1[4][4]); diff --git a/src/lib/mtx.c b/src/lib/mtx.c index 66bed5f7f..987109f75 100644 --- a/src/lib/mtx.c +++ b/src/lib/mtx.c @@ -863,55 +863,32 @@ void mtx4LoadRotationFrom(f32 src[4][4], f32 dst[4][4]) dst[3][3] = 1; } -GLOBAL_ASM( -glabel mtx000170e4 -/* 170e4: c48c0000 */ lwc1 $f12,0x0($a0) -/* 170e8: c48e0010 */ lwc1 $f14,0x10($a0) -/* 170ec: c4820020 */ lwc1 $f2,0x20($a0) -/* 170f0: 460c6102 */ mul.s $f4,$f12,$f12 -/* 170f4: 3c013f80 */ lui $at,0x3f80 -/* 170f8: 44818000 */ mtc1 $at,$f16 -/* 170fc: 460e7182 */ mul.s $f6,$f14,$f14 -/* 17100: 46062200 */ add.s $f8,$f4,$f6 -/* 17104: 46021282 */ mul.s $f10,$f2,$f2 -/* 17108: 44801000 */ mtc1 $zero,$f2 -/* 1710c: 46085000 */ add.s $f0,$f10,$f8 -/* 17110: 46008003 */ div.s $f0,$f16,$f0 -/* 17114: 46006482 */ mul.s $f18,$f12,$f0 -/* 17118: e4b20000 */ swc1 $f18,0x0($a1) -/* 1711c: c4840010 */ lwc1 $f4,0x10($a0) -/* 17120: 46002182 */ mul.s $f6,$f4,$f0 -/* 17124: e4a60004 */ swc1 $f6,0x4($a1) -/* 17128: c48a0020 */ lwc1 $f10,0x20($a0) -/* 1712c: 46005202 */ mul.s $f8,$f10,$f0 -/* 17130: e4a80008 */ swc1 $f8,0x8($a1) -/* 17134: c4920004 */ lwc1 $f18,0x4($a0) -/* 17138: 46009102 */ mul.s $f4,$f18,$f0 -/* 1713c: e4a40010 */ swc1 $f4,0x10($a1) -/* 17140: c4860014 */ lwc1 $f6,0x14($a0) -/* 17144: 46003282 */ mul.s $f10,$f6,$f0 -/* 17148: e4aa0014 */ swc1 $f10,0x14($a1) -/* 1714c: c4880024 */ lwc1 $f8,0x24($a0) -/* 17150: 46004482 */ mul.s $f18,$f8,$f0 -/* 17154: e4b20018 */ swc1 $f18,0x18($a1) -/* 17158: c4840008 */ lwc1 $f4,0x8($a0) -/* 1715c: 46002182 */ mul.s $f6,$f4,$f0 -/* 17160: e4a60020 */ swc1 $f6,0x20($a1) -/* 17164: c48a0018 */ lwc1 $f10,0x18($a0) -/* 17168: 46005202 */ mul.s $f8,$f10,$f0 -/* 1716c: e4a80024 */ swc1 $f8,0x24($a1) -/* 17170: c4920028 */ lwc1 $f18,0x28($a0) -/* 17174: e4b0003c */ swc1 $f16,0x3c($a1) -/* 17178: e4a20030 */ swc1 $f2,0x30($a1) -/* 1717c: 46009102 */ mul.s $f4,$f18,$f0 -/* 17180: e4a20034 */ swc1 $f2,0x34($a1) -/* 17184: e4a20038 */ swc1 $f2,0x38($a1) -/* 17188: e4a2000c */ swc1 $f2,0xc($a1) -/* 1718c: e4a2001c */ swc1 $f2,0x1c($a1) -/* 17190: e4a2002c */ swc1 $f2,0x2c($a1) -/* 17194: 03e00008 */ jr $ra -/* 17198: e4a40028 */ swc1 $f4,0x28($a1) -); +void mtx000170e4(f32 src[4][4], f32 dst[4][4]) +{ + f32 tmp = (src[0][0] * src[0][0] + src[1][0] * src[1][0] + src[2][0] * src[2][0]); + tmp = 1 / tmp; + + dst[0][0] = src[0][0] * tmp; + dst[0][1] = src[1][0] * tmp; + dst[0][2] = src[2][0] * tmp; + + dst[1][0] = src[0][1] * tmp; + dst[1][1] = src[1][1] * tmp; + dst[1][2] = src[2][1] * tmp; + + dst[2][0] = src[0][2] * tmp; + dst[2][1] = src[1][2] * tmp; + dst[2][2] = src[2][2] * tmp; + + dst[3][0] = 0; + dst[3][1] = 0; + dst[3][2] = 0; + + dst[0][3] = 0; + dst[1][3] = 0; + dst[2][3] = 0; + dst[3][3] = 1; +} void mtx0001719c(f32 arg0[4][4], f32 arg1[4][4]) {