From 1e12ccbeda9555f5c3fa974c5908c4378903eb3a Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 18 Oct 2020 20:13:18 +1000 Subject: [PATCH] Decompile func000161b0 --- src/include/lib/lib_16110.h | 2 +- src/lib/lib_16110.c | 44 +++++++++++-------------------------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/src/include/lib/lib_16110.h b/src/include/lib/lib_16110.h index 70c513d23..fdc2e88c4 100644 --- a/src/include/lib/lib_16110.h +++ b/src/include/lib/lib_16110.h @@ -6,7 +6,7 @@ u8 *ailistFindById(s32 ailistid); void func00016110(f32 *matrix1, f32 *matrix2); u32 func00016140(void); -void func000161b0(f32 *matrix, struct coord *src, struct coord *dest); +void func000161b0(f32 *matrix, f32 src[3], f32 dest[3]); void func00016208(f32 *matrix, struct coord *coord); void func00016248(struct coord *coord, f32 angle, f32 *matrix); void func000162e8(f32 angle, f32 *matrix); diff --git a/src/lib/lib_16110.c b/src/lib/lib_16110.c index c34908042..03c4450ff 100644 --- a/src/lib/lib_16110.c +++ b/src/lib/lib_16110.c @@ -101,42 +101,24 @@ glabel func00016140 /* 161ac: 00000000 */ nop ); -GLOBAL_ASM( -glabel func000161b0 -/* 161b0: 00803825 */ or $a3,$a0,$zero -/* 161b4: 24040003 */ addiu $a0,$zero,0x3 -/* 161b8: 00001025 */ or $v0,$zero,$zero -/* 161bc: 00c01825 */ or $v1,$a2,$zero -.L000161c0: -/* 161c0: c4f20000 */ lwc1 $f18,0x0($a3) -/* 161c4: c4b00000 */ lwc1 $f16,0x0($a1) -/* 161c8: c4ee000c */ lwc1 $f14,0xc($a3) -/* 161cc: c4ac0004 */ lwc1 $f12,0x4($a1) -/* 161d0: 46109402 */ mul.s $f16,$f18,$f16 -/* 161d4: c4b20008 */ lwc1 $f18,0x8($a1) -/* 161d8: c4ea0018 */ lwc1 $f10,0x18($a3) -/* 161dc: 460c7302 */ mul.s $f12,$f14,$f12 -/* 161e0: 24420001 */ addiu $v0,$v0,0x1 -/* 161e4: 24630004 */ addiu $v1,$v1,0x4 -/* 161e8: 460a9282 */ mul.s $f10,$f18,$f10 -/* 161ec: 24e70004 */ addiu $a3,$a3,0x4 -/* 161f0: 460c8300 */ add.s $f12,$f16,$f12 -/* 161f4: 460c5300 */ add.s $f12,$f10,$f12 -/* 161f8: 1444fff1 */ bne $v0,$a0,.L000161c0 -/* 161fc: e46cfffc */ swc1 $f12,-0x4($v1) -/* 16200: 03e00008 */ jr $ra -/* 16204: 00000000 */ nop -); +void func000161b0(f32 *matrix, f32 src[3], f32 dest[3]) +{ + s32 i; + + for (i = 0; i < 3; i++) { + dest[i] = matrix[i] * src[0] + matrix[3 + i] * src[1] + matrix[6 + i] * src[2]; + } +} void func00016208(f32 *matrix, struct coord *coord) { - struct coord tmp; + f32 tmp[3]; - func000161b0(matrix, coord, &tmp); + func000161b0(matrix, (f32 *)coord, tmp); - coord->x = tmp.x; - coord->y = tmp.y; - coord->z = tmp.z; + coord->x = tmp[0]; + coord->y = tmp[1]; + coord->z = tmp[2]; } void func00016248(struct coord *coord, f32 angle, f32 *matrix)