Decompile quaternion0f097518

This commit is contained in:
Ryan Dwyer
2022-02-21 18:53:46 +10:00
parent 30176a6836
commit 34197b1907
3 changed files with 43 additions and 122 deletions
+40 -119
View File
@@ -178,125 +178,46 @@ void quaternionSlerp(f32 q1[4], f32 q2[4], f32 t, f32 result[4])
}
}
GLOBAL_ASM(
glabel func0f097518
.late_rodata
glabel var7f1ab87c
.word 0xbf7fff58
glabel var7f1ab880
.word 0x3f7fff58
.text
/* f097518: 27bdffc8 */ addiu $sp,$sp,-56
/* f09751c: afbf0014 */ sw $ra,0x14($sp)
/* f097520: c4800000 */ lwc1 $f0,0x0($a0)
/* f097524: 44802000 */ mtc1 $zero,$f4
/* f097528: 3c013f80 */ lui $at,0x3f80
/* f09752c: 44811000 */ mtc1 $at,$f2
/* f097530: 4604003c */ c.lt.s $f0,$f4
/* f097534: 44857000 */ mtc1 $a1,$f14
/* f097538: 3c017f1b */ lui $at,%hi(var7f1ab87c)
/* f09753c: 46000306 */ mov.s $f12,$f0
/* f097540: 45000003 */ bc1f .L0f097550
/* f097544: 46001406 */ mov.s $f16,$f2
/* f097548: 46006307 */ neg.s $f12,$f12
/* f09754c: 46001407 */ neg.s $f16,$f2
.L0f097550:
/* f097550: c426b87c */ lwc1 $f6,%lo(var7f1ab87c)($at)
/* f097554: 3c017f1b */ lui $at,%hi(var7f1ab880)
/* f097558: 4606603c */ c.lt.s $f12,$f6
/* f09755c: 00000000 */ nop
/* f097560: 45000011 */ bc1f .L0f0975a8
/* f097564: 00000000 */ nop
/* f097568: 460e1281 */ sub.s $f10,$f2,$f14
/* f09756c: 460e0202 */ mul.s $f8,$f0,$f14
/* f097570: 00000000 */ nop
/* f097574: 46105482 */ mul.s $f18,$f10,$f16
/* f097578: 46124101 */ sub.s $f4,$f8,$f18
/* f09757c: e4c40000 */ swc1 $f4,0x0($a2)
/* f097580: c4860004 */ lwc1 $f6,0x4($a0)
/* f097584: 460e3282 */ mul.s $f10,$f6,$f14
/* f097588: e4ca0004 */ swc1 $f10,0x4($a2)
/* f09758c: c4880008 */ lwc1 $f8,0x8($a0)
/* f097590: 460e4482 */ mul.s $f18,$f8,$f14
/* f097594: e4d20008 */ swc1 $f18,0x8($a2)
/* f097598: c484000c */ lwc1 $f4,0xc($a0)
/* f09759c: 460e2182 */ mul.s $f6,$f4,$f14
/* f0975a0: 10000043 */ b .L0f0976b0
/* f0975a4: e4c6000c */ swc1 $f6,0xc($a2)
.L0f0975a8:
/* f0975a8: c42ab880 */ lwc1 $f10,%lo(var7f1ab880)($at)
/* f0975ac: 460a603e */ c.le.s $f12,$f10
/* f0975b0: 00000000 */ nop
/* f0975b4: 45020030 */ bc1fl .L0f097678
/* f0975b8: 460e1201 */ sub.s $f8,$f2,$f14
/* f0975bc: afa40038 */ sw $a0,0x38($sp)
/* f0975c0: afa60040 */ sw $a2,0x40($sp)
/* f0975c4: e7ae003c */ swc1 $f14,0x3c($sp)
/* f0975c8: 0fc25a74 */ jal acosf
/* f0975cc: e7b00030 */ swc1 $f16,0x30($sp)
/* f0975d0: 3c013f80 */ lui $at,0x3f80
/* f0975d4: 44811000 */ mtc1 $at,$f2
/* f0975d8: c7ae003c */ lwc1 $f14,0x3c($sp)
/* f0975dc: 46000306 */ mov.s $f12,$f0
/* f0975e0: 460e1481 */ sub.s $f18,$f2,$f14
/* f0975e4: 46007202 */ mul.s $f8,$f14,$f0
/* f0975e8: 00000000 */ nop
/* f0975ec: 46009102 */ mul.s $f4,$f18,$f0
/* f0975f0: e7a80028 */ swc1 $f8,0x28($sp)
/* f0975f4: 0c0068f7 */ jal sinf
/* f0975f8: e7a40024 */ swc1 $f4,0x24($sp)
/* f0975fc: e7a00020 */ swc1 $f0,0x20($sp)
/* f097600: 0c0068f7 */ jal sinf
/* f097604: c7ac0028 */ lwc1 $f12,0x28($sp)
/* f097608: c7a60020 */ lwc1 $f6,0x20($sp)
/* f09760c: c7ac0024 */ lwc1 $f12,0x24($sp)
/* f097610: 46060083 */ div.s $f2,$f0,$f6
/* f097614: 0c0068f7 */ jal sinf
/* f097618: e7a2001c */ swc1 $f2,0x1c($sp)
/* f09761c: c7b20020 */ lwc1 $f18,0x20($sp)
/* f097620: 8fa40038 */ lw $a0,0x38($sp)
/* f097624: c7a2001c */ lwc1 $f2,0x1c($sp)
/* f097628: 46120103 */ div.s $f4,$f0,$f18
/* f09762c: c48a0000 */ lwc1 $f10,0x0($a0)
/* f097630: c7b00030 */ lwc1 $f16,0x30($sp)
/* f097634: 8fa60040 */ lw $a2,0x40($sp)
/* f097638: 46025202 */ mul.s $f8,$f10,$f2
/* f09763c: 00000000 */ nop
/* f097640: 46102182 */ mul.s $f6,$f4,$f16
/* f097644: 46064280 */ add.s $f10,$f8,$f6
/* f097648: e4ca0000 */ swc1 $f10,0x0($a2)
/* f09764c: c4920004 */ lwc1 $f18,0x4($a0)
/* f097650: 46029102 */ mul.s $f4,$f18,$f2
/* f097654: e4c40004 */ swc1 $f4,0x4($a2)
/* f097658: c4880008 */ lwc1 $f8,0x8($a0)
/* f09765c: 46024182 */ mul.s $f6,$f8,$f2
/* f097660: e4c60008 */ swc1 $f6,0x8($a2)
/* f097664: c48a000c */ lwc1 $f10,0xc($a0)
/* f097668: 46025482 */ mul.s $f18,$f10,$f2
/* f09766c: 10000010 */ b .L0f0976b0
/* f097670: e4d2000c */ swc1 $f18,0xc($a2)
/* f097674: 460e1201 */ sub.s $f8,$f2,$f14
.L0f097678:
/* f097678: 460e0102 */ mul.s $f4,$f0,$f14
/* f09767c: 00000000 */ nop
/* f097680: 46104182 */ mul.s $f6,$f8,$f16
/* f097684: 46062280 */ add.s $f10,$f4,$f6
/* f097688: e4ca0000 */ swc1 $f10,0x0($a2)
/* f09768c: c4920004 */ lwc1 $f18,0x4($a0)
/* f097690: 460e9202 */ mul.s $f8,$f18,$f14
/* f097694: e4c80004 */ swc1 $f8,0x4($a2)
/* f097698: c4840008 */ lwc1 $f4,0x8($a0)
/* f09769c: 460e2182 */ mul.s $f6,$f4,$f14
/* f0976a0: e4c60008 */ swc1 $f6,0x8($a2)
/* f0976a4: c48a000c */ lwc1 $f10,0xc($a0)
/* f0976a8: 460e5482 */ mul.s $f18,$f10,$f14
/* f0976ac: e4d2000c */ swc1 $f18,0xc($a2)
.L0f0976b0:
/* f0976b0: 8fbf0014 */ lw $ra,0x14($sp)
/* f0976b4: 27bd0038 */ addiu $sp,$sp,0x38
/* f0976b8: 03e00008 */ jr $ra
/* f0976bc: 00000000 */ nop
);
void quaternion0f097518(f32 q[4], f32 t, f32 result[4])
{
f32 sp34 = q[0];
f32 sp30 = 1.0f;
f32 sp2c;
f32 sp28;
f32 sp24;
f32 sp20;
f32 sp1c;
f32 sp18;
if (q[0] < 0.0f) {
sp34 = -sp34;
sp30 = -sp30;
}
if (sp34 < -0.99998999f) {
result[0] = q[0] * t - (1.0f - t) * sp30;
result[1] = q[1] * t;
result[2] = q[2] * t;
result[3] = q[3] * t;
} else if (sp34 <= 0.99998999f) {
sp2c = acosf(sp34);
sp28 = t * sp2c;
sp24 = (1.0f - t) * sp2c;
sp20 = sinf(sp2c);
sp1c = sinf(sp28) / sp20;
sp18 = sinf(sp24) / sp20;
result[0] = q[0] * sp1c + sp18 * sp30;
result[1] = q[1] * sp1c;
result[2] = q[2] * sp1c;
result[3] = q[3] * sp1c;
} else {
result[0] = q[0] * t + (1.0f - t) * sp30;
result[1] = q[1] * t;
result[2] = q[2] * t;
result[3] = q[3] * t;
}
}
void quaternion0f0976c0(f32 q1[4], f32 q2[4])
{
+1 -1
View File
@@ -9,7 +9,7 @@ void quaternionToMtx(f32 *arg0, Mtxf *arg1);
void quaternion0f097044(Mtxf *matrix, f32 arg1[4]);
void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *matrix);
void quaternionSlerp(f32 q1[4], f32 q2[4], f32 t, f32 result[4]);
u32 func0f097518(void);
void quaternion0f097518(f32 q[4], f32 t, f32 result[4]);
void quaternion0f0976c0(f32 q1[4], f32 q2[4]);
void quaternionMultQuaternion(f32 a[4], f32 b[4], f32 result[4]);
+2 -2
View File
@@ -945,7 +945,7 @@ glabel var70054308
/* 1ba68: 27a5003c */ addiu $a1,$sp,0x3c
/* 1ba6c: 27a4003c */ addiu $a0,$sp,0x3c
/* 1ba70: 3c053f00 */ lui $a1,0x3f00
/* 1ba74: 0fc25d46 */ jal func0f097518
/* 1ba74: 0fc25d46 */ jal quaternion0f097518
/* 1ba78: 27a6002c */ addiu $a2,$sp,0x2c
/* 1ba7c: 8fac00ac */ lw $t4,0xac($sp)
/* 1ba80: 8fb80060 */ lw $t8,0x60($sp)
@@ -1210,7 +1210,7 @@ glabel var70054320
/* 1bdf4: 33190100 */ andi $t9,$t8,0x100
/* 1bdf8: 53200019 */ beqzl $t9,.L0001be60
/* 1bdfc: 8faf00a4 */ lw $t7,0xa4($sp)
/* 1be00: 0fc25d46 */ jal func0f097518
/* 1be00: 0fc25d46 */ jal quaternion0f097518
/* 1be04: 27a6002c */ addiu $a2,$sp,0x2c
/* 1be08: 8fa9009c */ lw $t1,0x9c($sp)
/* 1be0c: 8fac0050 */ lw $t4,0x50($sp)