Decompile quaternionMultQuaternion

This commit is contained in:
Ryan Dwyer
2022-02-21 18:09:33 +10:00
parent 1ae44785fb
commit 4c90846d88
4 changed files with 14 additions and 75 deletions
+8 -69
View File
@@ -540,81 +540,20 @@ void quaternion0f0976c0(f32 q1[4], f32 q2[4])
}
}
GLOBAL_ASM(
glabel func0f097738
/* f097738: c4840000 */ lwc1 $f4,0x0($a0)
/* f09773c: c4a60000 */ lwc1 $f6,0x0($a1)
/* f097740: c48a0004 */ lwc1 $f10,0x4($a0)
/* f097744: c4b00004 */ lwc1 $f16,0x4($a1)
/* f097748: 46062202 */ mul.s $f8,$f4,$f6
/* f09774c: c4860008 */ lwc1 $f6,0x8($a0)
/* f097750: 46105482 */ mul.s $f18,$f10,$f16
/* f097754: c4aa0008 */ lwc1 $f10,0x8($a1)
/* f097758: 460a3402 */ mul.s $f16,$f6,$f10
/* f09775c: c486000c */ lwc1 $f6,0xc($a0)
/* f097760: 46124101 */ sub.s $f4,$f8,$f18
/* f097764: c4b2000c */ lwc1 $f18,0xc($a1)
/* f097768: 46069282 */ mul.s $f10,$f18,$f6
/* f09776c: 46102201 */ sub.s $f8,$f4,$f16
/* f097770: 460a4101 */ sub.s $f4,$f8,$f10
/* f097774: e4c40000 */ swc1 $f4,0x0($a2)
/* f097778: c4b20004 */ lwc1 $f18,0x4($a1)
/* f09777c: c4900000 */ lwc1 $f16,0x0($a0)
/* f097780: c48a0004 */ lwc1 $f10,0x4($a0)
/* f097784: c4a80000 */ lwc1 $f8,0x0($a1)
/* f097788: 46128182 */ mul.s $f6,$f16,$f18
/* f09778c: c4920008 */ lwc1 $f18,0x8($a0)
/* f097790: 460a4102 */ mul.s $f4,$f8,$f10
/* f097794: c4a8000c */ lwc1 $f8,0xc($a1)
/* f097798: 46089282 */ mul.s $f10,$f18,$f8
/* f09779c: c492000c */ lwc1 $f18,0xc($a0)
/* f0977a0: 46043400 */ add.s $f16,$f6,$f4
/* f0977a4: c4a40008 */ lwc1 $f4,0x8($a1)
/* f0977a8: 46122202 */ mul.s $f8,$f4,$f18
/* f0977ac: 460a8180 */ add.s $f6,$f16,$f10
/* f0977b0: 46083401 */ sub.s $f16,$f6,$f8
/* f0977b4: e4d00004 */ swc1 $f16,0x4($a2)
/* f0977b8: c4a40008 */ lwc1 $f4,0x8($a1)
/* f0977bc: c48a0000 */ lwc1 $f10,0x0($a0)
/* f0977c0: c4880008 */ lwc1 $f8,0x8($a0)
/* f0977c4: c4a60000 */ lwc1 $f6,0x0($a1)
/* f0977c8: 46045482 */ mul.s $f18,$f10,$f4
/* f0977cc: c484000c */ lwc1 $f4,0xc($a0)
/* f0977d0: 46083402 */ mul.s $f16,$f6,$f8
/* f0977d4: c4a60004 */ lwc1 $f6,0x4($a1)
/* f0977d8: 46062202 */ mul.s $f8,$f4,$f6
/* f0977dc: c4840004 */ lwc1 $f4,0x4($a0)
/* f0977e0: 46109280 */ add.s $f10,$f18,$f16
/* f0977e4: c4b0000c */ lwc1 $f16,0xc($a1)
/* f0977e8: 46048182 */ mul.s $f6,$f16,$f4
/* f0977ec: 46085480 */ add.s $f18,$f10,$f8
/* f0977f0: 46069281 */ sub.s $f10,$f18,$f6
/* f0977f4: e4ca0008 */ swc1 $f10,0x8($a2)
/* f0977f8: c4b0000c */ lwc1 $f16,0xc($a1)
/* f0977fc: c4880000 */ lwc1 $f8,0x0($a0)
/* f097800: c486000c */ lwc1 $f6,0xc($a0)
/* f097804: c4b20000 */ lwc1 $f18,0x0($a1)
/* f097808: 46104102 */ mul.s $f4,$f8,$f16
/* f09780c: c4900004 */ lwc1 $f16,0x4($a0)
/* f097810: 46069282 */ mul.s $f10,$f18,$f6
/* f097814: c4b20008 */ lwc1 $f18,0x8($a1)
/* f097818: 46128182 */ mul.s $f6,$f16,$f18
/* f09781c: c4900008 */ lwc1 $f16,0x8($a0)
/* f097820: 460a2200 */ add.s $f8,$f4,$f10
/* f097824: c4aa0004 */ lwc1 $f10,0x4($a1)
/* f097828: 46105482 */ mul.s $f18,$f10,$f16
/* f09782c: 46064100 */ add.s $f4,$f8,$f6
/* f097830: 46122201 */ sub.s $f8,$f4,$f18
/* f097834: 03e00008 */ jr $ra
/* f097838: e4c8000c */ swc1 $f8,0xc($a2)
);
void quaternionMultQuaternion(f32 a[4], f32 b[4], f32 result[4])
{
result[0] = a[0] * b[0] - a[1] * b[1] - a[2] * b[2] - a[3] * b[3];
result[1] = a[0] * b[1] + b[0] * a[1] + a[2] * b[3] - a[3] * b[2];
result[2] = a[0] * b[2] + b[0] * a[2] + a[3] * b[1] - a[1] * b[3];
result[3] = a[0] * b[3] + b[0] * a[3] + a[1] * b[2] - a[2] * b[1];
}
GLOBAL_ASM(
glabel func0f09783c
/* f09783c: 27bdffd8 */ addiu $sp,$sp,-40
/* f097840: afbf0014 */ sw $ra,0x14($sp)
/* f097844: 27a60018 */ addiu $a2,$sp,0x18
/* f097848: 0fc25dce */ jal func0f097738
/* f097848: 0fc25dce */ jal quaternionMultQuaternion
/* f09784c: afa5002c */ sw $a1,0x2c($sp)
/* f097850: 8fa5002c */ lw $a1,0x2c($sp)
/* f097854: c7a40018 */ lwc1 $f4,0x18($sp)
+2 -2
View File
@@ -4094,7 +4094,7 @@ void playerTick(bool arg0)
sp15c[2] = sp2b8[1][1] >= 0 ? f20 : -f20;
sp15c[3] = 0;
func0f097738(sp15c, sp14c, sp13c);
quaternionMultQuaternion(sp15c, sp14c, sp13c);
quaternionToMtx(sp13c, &sp1fc);
mtx4RotateVecInPlace(&sp1fc, &projectile->speed);
@@ -4153,7 +4153,7 @@ void playerTick(bool arg0)
mtx3ToMtx4(sp2b8, &sp1bc);
func0f097044(&sp1bc, sp12c);
func0f097738(sp13c, sp12c, sp11c);
quaternionMultQuaternion(sp13c, sp12c, sp11c);
quaternionToMtx(sp11c, &sp17c);
mtx4ToMtx3(&sp17c, sp2b8);
+3 -3
View File
@@ -24134,7 +24134,7 @@ glabel var7f1ab6dcpf
/* f075438: 27a50270 */ addiu $a1,$sp,0x270
/* f07543c: 27a40270 */ addiu $a0,$sp,0x270
/* f075440: 27a50260 */ addiu $a1,$sp,0x260
/* f075444: 0fc25d96 */ jal func0f097738
/* f075444: 0fc25d96 */ jal quaternionMultQuaternion
/* f075448: 27a60250 */ addiu $a2,$sp,0x250
/* f07544c: 27a40250 */ addiu $a0,$sp,0x250
/* f075450: 0fc25b7d */ jal quaternionToMtx
@@ -27672,7 +27672,7 @@ glabel var7f1aa438
/* f0751b4: 27a50270 */ addiu $a1,$sp,0x270
/* f0751b8: 27a40270 */ addiu $a0,$sp,0x270
/* f0751bc: 27a50260 */ addiu $a1,$sp,0x260
/* f0751c0: 0fc25dce */ jal func0f097738
/* f0751c0: 0fc25dce */ jal quaternionMultQuaternion
/* f0751c4: 27a60250 */ addiu $a2,$sp,0x250
/* f0751c8: 27a40250 */ addiu $a0,$sp,0x250
/* f0751cc: 0fc25bb5 */ jal quaternionToMtx
@@ -31197,7 +31197,7 @@ glabel var7f1aa438
/* f073f30: 27a50270 */ addiu $a1,$sp,0x270
/* f073f34: 27a40270 */ addiu $a0,$sp,0x270
/* f073f38: 27a50260 */ addiu $a1,$sp,0x260
/* f073f3c: 0fc255b2 */ jal func0f097738
/* f073f3c: 0fc255b2 */ jal quaternionMultQuaternion
/* f073f40: 27a60250 */ addiu $a2,$sp,0x250
/* f073f44: 27a40250 */ addiu $a0,$sp,0x250
/* f073f48: 0fc25399 */ jal quaternionToMtx
+1 -1
View File
@@ -11,6 +11,6 @@ void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *matrix);
void func0f0972b8(f32 arg0[4], f32 arg1[4], f32 arg2, f32 *arg3);
u32 func0f097518(void);
void quaternion0f0976c0(f32 q1[4], f32 q2[4]);
void func0f097738(f32 *arg0, f32 *arg1, f32 *arg2);
void quaternionMultQuaternion(f32 a[4], f32 b[4], f32 result[4]);
#endif