From 30176a68364a933678d4700dc1351b294ba7eaab Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 21 Feb 2022 18:48:38 +1000 Subject: [PATCH] Decompile quaternionSlerp --- src/game/bondbike.c | 4 +- src/game/bondgun.c | 10 +- src/game/bondmove.c | 2 +- src/game/game_096ca0.c | 199 ++++++--------------------------- src/game/menu.c | 8 +- src/game/player.c | 2 +- src/game/propobj.c | 6 +- src/include/game/game_096ca0.h | 2 +- src/lib/model.c | 6 +- 9 files changed, 55 insertions(+), 184 deletions(-) diff --git a/src/game/bondbike.c b/src/game/bondbike.c index 3f7f9e373..5943277e0 100644 --- a/src/game/bondbike.c +++ b/src/game/bondbike.c @@ -1699,7 +1699,7 @@ void bbikeTick(void) quaternion0f097044(&spe4, spd4); quaternion0f097044(&sp124, spc4); quaternion0f0976c0(spc4, spd4); - func0f0972b8(spd4, spc4, 0.8f, spb4); + quaternionSlerp(spd4, spc4, 0.8f, spb4); quaternionToMtx(spb4, &sp124); mtx4MultMtx4InPlace(&sp124, &sp164); @@ -1730,7 +1730,7 @@ void bbikeTick(void) quaternion0f097044(&g_Vars.currentplayer->bondentermtx, spa4); quaternion0f097044(&sp164, sp94); quaternion0f0976c0(sp94, spa4); - func0f0972b8(spa4, sp94, 1.0f - g_Vars.currentplayer->bondentert2, sp84); + quaternionSlerp(spa4, sp94, 1.0f - g_Vars.currentplayer->bondentert2, sp84); quaternionToMtx(sp84, &sp164); } diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 285dae7d6..877c93c14 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -11377,7 +11377,7 @@ glabel var7f1ac72c /* f09f4ec: 46000087 */ neg.s $f2,$f0 /* f09f4f0: 44061000 */ mfc1 $a2,$f2 .L0f09f4f4: -/* f09f4f4: 0fc25cae */ jal func0f0972b8 +/* f09f4f4: 0fc25cae */ jal quaternionSlerp /* f09f4f8: 27a70048 */ addiu $a3,$sp,0x48 /* f09f4fc: 27a40048 */ addiu $a0,$sp,0x48 /* f09f500: 0fc25bb5 */ jal quaternionToMtx @@ -11893,7 +11893,7 @@ glabel var7f1ac72c /* f09f4ec: 46000087 */ neg.s $f2,$f0 /* f09f4f0: 44061000 */ mfc1 $a2,$f2 .L0f09f4f4: -/* f09f4f4: 0fc25cae */ jal func0f0972b8 +/* f09f4f4: 0fc25cae */ jal quaternionSlerp /* f09f4f8: 27a70048 */ addiu $a3,$sp,0x48 /* f09f4fc: 27a40048 */ addiu $a0,$sp,0x48 /* f09f500: 0fc25bb5 */ jal quaternionToMtx @@ -12419,7 +12419,7 @@ glabel var7f1ac740 /* f0a00ac: 46000307 */ neg.s $f12,$f0 /* f0a00b0: 44066000 */ mfc1 $a2,$f12 .PF0f0a00b4: -/* f0a00b4: 0fc25c76 */ jal func0f0972b8 +/* f0a00b4: 0fc25c76 */ jal quaternionSlerp /* f0a00b8: 27a700c4 */ addiu $a3,$sp,0xc4 /* f0a00bc: 27a400c4 */ addiu $a0,$sp,0xc4 /* f0a00c0: 0fc25b7d */ jal quaternionToMtx @@ -13054,7 +13054,7 @@ glabel var7f1ac740 /* f09fda8: 46000307 */ neg.s $f12,$f0 /* f09fdac: 44066000 */ mfc1 $a2,$f12 .L0f09fdb0: -/* f09fdb0: 0fc25cae */ jal func0f0972b8 +/* f09fdb0: 0fc25cae */ jal quaternionSlerp /* f09fdb4: 27a700c4 */ addiu $a3,$sp,0xc4 /* f09fdb8: 27a400c4 */ addiu $a0,$sp,0xc4 /* f09fdbc: 0fc25bb5 */ jal quaternionToMtx @@ -13680,7 +13680,7 @@ glabel var7f1ac740 /* f09dc1c: 46000307 */ neg.s $f12,$f0 /* f09dc20: 44066000 */ mfc1 $a2,$f12 .NB0f09dc24: -/* f09dc24: 0fc25492 */ jal func0f0972b8 +/* f09dc24: 0fc25492 */ jal quaternionSlerp /* f09dc28: 27a700c4 */ addiu $a3,$sp,0xc4 /* f09dc2c: 27a400c4 */ addiu $a0,$sp,0xc4 /* f09dc30: 0fc25399 */ jal quaternionToMtx diff --git a/src/game/bondmove.c b/src/game/bondmove.c index 64dfb320d..89b5b892d 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -2107,7 +2107,7 @@ void bmoveUpdateHead(f32 arg0, f32 arg1, f32 arg2, Mtxf *arg3, f32 arg4) quaternion0f097044(&sp180, sp100); quaternion0f097044(arg3, sp84); quaternion0f0976c0(sp100, sp84); - func0f0972b8(sp100, sp84, arg4, sp68); + quaternionSlerp(sp100, sp84, arg4, sp68); quaternionToMtx(sp68, &sp180); } diff --git a/src/game/game_096ca0.c b/src/game/game_096ca0.c index 0708c0b57..958ec5b49 100644 --- a/src/game/game_096ca0.c +++ b/src/game/game_096ca0.c @@ -142,170 +142,41 @@ void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *mtx) mtx->m[3][2] = pos->z; } -GLOBAL_ASM( -glabel func0f0972b8 -.late_rodata -glabel var7f1ab874 -.word 0xbf7fff58 -glabel var7f1ab878 -.word 0x3f7fff58 -.text -/* f0972b8: 27bdffd0 */ addiu $sp,$sp,-48 -/* f0972bc: afbf0014 */ sw $ra,0x14($sp) -/* f0972c0: c4a60004 */ lwc1 $f6,0x4($a1) -/* f0972c4: c4840004 */ lwc1 $f4,0x4($a0) -/* f0972c8: c4b00000 */ lwc1 $f16,0x0($a1) -/* f0972cc: c4820000 */ lwc1 $f2,0x0($a0) -/* f0972d0: 46062202 */ mul.s $f8,$f4,$f6 -/* f0972d4: c4a60008 */ lwc1 $f6,0x8($a1) -/* f0972d8: c4840008 */ lwc1 $f4,0x8($a0) -/* f0972dc: 46101282 */ mul.s $f10,$f2,$f16 -/* f0972e0: 3c017f1b */ lui $at,%hi(var7f1ab874) -/* f0972e4: 44867000 */ mtc1 $a2,$f14 -/* f0972e8: 46085480 */ add.s $f18,$f10,$f8 -/* f0972ec: 46062282 */ mul.s $f10,$f4,$f6 -/* f0972f0: c486000c */ lwc1 $f6,0xc($a0) -/* f0972f4: c4a4000c */ lwc1 $f4,0xc($a1) -/* f0972f8: 460a9200 */ add.s $f8,$f18,$f10 -/* f0972fc: 46062482 */ mul.s $f18,$f4,$f6 -/* f097300: c42ab874 */ lwc1 $f10,%lo(var7f1ab874)($at) -/* f097304: 3c017f1b */ lui $at,%hi(var7f1ab878) -/* f097308: 46089300 */ add.s $f12,$f18,$f8 -/* f09730c: 460a603c */ c.lt.s $f12,$f10 -/* f097310: 00000000 */ nop -/* f097314: 45000020 */ bc1f .L0f097398 -/* f097318: 00000000 */ nop -/* f09731c: 3c013f80 */ lui $at,0x3f80 -/* f097320: 44812000 */ mtc1 $at,$f4 -/* f097324: 00000000 */ nop -/* f097328: 460e2001 */ sub.s $f0,$f4,$f14 -/* f09732c: 46020182 */ mul.s $f6,$f0,$f2 -/* f097330: 00000000 */ nop -/* f097334: 460e8482 */ mul.s $f18,$f16,$f14 -/* f097338: 46123201 */ sub.s $f8,$f6,$f18 -/* f09733c: e4e80000 */ swc1 $f8,0x0($a3) -/* f097340: c48a0004 */ lwc1 $f10,0x4($a0) -/* f097344: c4a60004 */ lwc1 $f6,0x4($a1) -/* f097348: 460a0102 */ mul.s $f4,$f0,$f10 -/* f09734c: 00000000 */ nop -/* f097350: 460e3482 */ mul.s $f18,$f6,$f14 -/* f097354: 46122201 */ sub.s $f8,$f4,$f18 -/* f097358: e4e80004 */ swc1 $f8,0x4($a3) -/* f09735c: c48a0008 */ lwc1 $f10,0x8($a0) -/* f097360: c4a40008 */ lwc1 $f4,0x8($a1) -/* f097364: 460a0182 */ mul.s $f6,$f0,$f10 -/* f097368: 00000000 */ nop -/* f09736c: 460e2482 */ mul.s $f18,$f4,$f14 -/* f097370: 46123201 */ sub.s $f8,$f6,$f18 -/* f097374: e4e80008 */ swc1 $f8,0x8($a3) -/* f097378: c48a000c */ lwc1 $f10,0xc($a0) -/* f09737c: c4a6000c */ lwc1 $f6,0xc($a1) -/* f097380: 460a0102 */ mul.s $f4,$f0,$f10 -/* f097384: 00000000 */ nop -/* f097388: 460e3482 */ mul.s $f18,$f6,$f14 -/* f09738c: 46122201 */ sub.s $f8,$f4,$f18 -/* f097390: 1000005d */ b .L0f097508 -/* f097394: e4e8000c */ swc1 $f8,0xc($a3) -.L0f097398: -/* f097398: c42ab878 */ lwc1 $f10,%lo(var7f1ab878)($at) -/* f09739c: 3c013f80 */ lui $at,0x3f80 -/* f0973a0: 460a603e */ c.le.s $f12,$f10 -/* f0973a4: 00000000 */ nop -/* f0973a8: 4502003d */ bc1fl .L0f0974a0 -/* f0973ac: 44812000 */ mtc1 $at,$f4 -/* f0973b0: afa40030 */ sw $a0,0x30($sp) -/* f0973b4: afa50034 */ sw $a1,0x34($sp) -/* f0973b8: afa7003c */ sw $a3,0x3c($sp) -/* f0973bc: 0fc25a74 */ jal acosf -/* f0973c0: e7ae0038 */ swc1 $f14,0x38($sp) -/* f0973c4: 3c013f80 */ lui $at,0x3f80 -/* f0973c8: c7ae0038 */ lwc1 $f14,0x38($sp) -/* f0973cc: 44813000 */ mtc1 $at,$f6 -/* f0973d0: 46000306 */ mov.s $f12,$f0 -/* f0973d4: 460e3101 */ sub.s $f4,$f6,$f14 -/* f0973d8: 46002482 */ mul.s $f18,$f4,$f0 -/* f0973dc: 00000000 */ nop -/* f0973e0: 46007202 */ mul.s $f8,$f14,$f0 -/* f0973e4: e7b20024 */ swc1 $f18,0x24($sp) -/* f0973e8: 0c0068f7 */ jal sinf -/* f0973ec: e7a80020 */ swc1 $f8,0x20($sp) -/* f0973f0: e7a0001c */ swc1 $f0,0x1c($sp) -/* f0973f4: 0c0068f7 */ jal sinf -/* f0973f8: c7ac0024 */ lwc1 $f12,0x24($sp) -/* f0973fc: c7aa001c */ lwc1 $f10,0x1c($sp) -/* f097400: c7ac0020 */ lwc1 $f12,0x20($sp) -/* f097404: 460a0383 */ div.s $f14,$f0,$f10 -/* f097408: 0c0068f7 */ jal sinf -/* f09740c: e7ae0018 */ swc1 $f14,0x18($sp) -/* f097410: c7a6001c */ lwc1 $f6,0x1c($sp) -/* f097414: 8fa50034 */ lw $a1,0x34($sp) -/* f097418: 8fa40030 */ lw $a0,0x30($sp) -/* f09741c: 46060083 */ div.s $f2,$f0,$f6 -/* f097420: c4a40000 */ lwc1 $f4,0x0($a1) -/* f097424: c7ae0018 */ lwc1 $f14,0x18($sp) -/* f097428: c4880000 */ lwc1 $f8,0x0($a0) -/* f09742c: 8fa7003c */ lw $a3,0x3c($sp) -/* f097430: 46022482 */ mul.s $f18,$f4,$f2 -/* f097434: 00000000 */ nop -/* f097438: 46087282 */ mul.s $f10,$f14,$f8 -/* f09743c: 460a9180 */ add.s $f6,$f18,$f10 -/* f097440: e4e60000 */ swc1 $f6,0x0($a3) -/* f097444: c4a40004 */ lwc1 $f4,0x4($a1) -/* f097448: c4920004 */ lwc1 $f18,0x4($a0) -/* f09744c: 46022202 */ mul.s $f8,$f4,$f2 -/* f097450: 00000000 */ nop -/* f097454: 46127282 */ mul.s $f10,$f14,$f18 -/* f097458: 460a4180 */ add.s $f6,$f8,$f10 -/* f09745c: e4e60004 */ swc1 $f6,0x4($a3) -/* f097460: c4a40008 */ lwc1 $f4,0x8($a1) -/* f097464: c4880008 */ lwc1 $f8,0x8($a0) -/* f097468: 46022482 */ mul.s $f18,$f4,$f2 -/* f09746c: 00000000 */ nop -/* f097470: 46087282 */ mul.s $f10,$f14,$f8 -/* f097474: 460a9180 */ add.s $f6,$f18,$f10 -/* f097478: e4e60008 */ swc1 $f6,0x8($a3) -/* f09747c: c4a4000c */ lwc1 $f4,0xc($a1) -/* f097480: c492000c */ lwc1 $f18,0xc($a0) -/* f097484: 46022202 */ mul.s $f8,$f4,$f2 -/* f097488: 00000000 */ nop -/* f09748c: 46127282 */ mul.s $f10,$f14,$f18 -/* f097490: 460a4180 */ add.s $f6,$f8,$f10 -/* f097494: 1000001c */ b .L0f097508 -/* f097498: e4e6000c */ swc1 $f6,0xc($a3) -/* f09749c: 44812000 */ mtc1 $at,$f4 -.L0f0974a0: -/* f0974a0: 460e8482 */ mul.s $f18,$f16,$f14 -/* f0974a4: 460e2001 */ sub.s $f0,$f4,$f14 -/* f0974a8: 46020202 */ mul.s $f8,$f0,$f2 -/* f0974ac: 46089280 */ add.s $f10,$f18,$f8 -/* f0974b0: e4ea0000 */ swc1 $f10,0x0($a3) -/* f0974b4: c4a60004 */ lwc1 $f6,0x4($a1) -/* f0974b8: c4920004 */ lwc1 $f18,0x4($a0) -/* f0974bc: 460e3102 */ mul.s $f4,$f6,$f14 -/* f0974c0: 00000000 */ nop -/* f0974c4: 46120202 */ mul.s $f8,$f0,$f18 -/* f0974c8: 46082280 */ add.s $f10,$f4,$f8 -/* f0974cc: e4ea0004 */ swc1 $f10,0x4($a3) -/* f0974d0: c4a60008 */ lwc1 $f6,0x8($a1) -/* f0974d4: c4840008 */ lwc1 $f4,0x8($a0) -/* f0974d8: 460e3482 */ mul.s $f18,$f6,$f14 -/* f0974dc: 00000000 */ nop -/* f0974e0: 46040202 */ mul.s $f8,$f0,$f4 -/* f0974e4: 46089280 */ add.s $f10,$f18,$f8 -/* f0974e8: e4ea0008 */ swc1 $f10,0x8($a3) -/* f0974ec: c4a6000c */ lwc1 $f6,0xc($a1) -/* f0974f0: c492000c */ lwc1 $f18,0xc($a0) -/* f0974f4: 460e3102 */ mul.s $f4,$f6,$f14 -/* f0974f8: 00000000 */ nop -/* f0974fc: 46120202 */ mul.s $f8,$f0,$f18 -/* f097500: 46082280 */ add.s $f10,$f4,$f8 -/* f097504: e4ea000c */ swc1 $f10,0xc($a3) -.L0f097508: -/* f097508: 8fbf0014 */ lw $ra,0x14($sp) -/* f09750c: 27bd0030 */ addiu $sp,$sp,0x30 -/* f097510: 03e00008 */ jr $ra -/* f097514: 00000000 */ nop -); +#define EPSILON 0.00001001f + +void quaternionSlerp(f32 q1[4], f32 q2[4], f32 t, f32 result[4]) +{ + f32 dot = q1[0] * q2[0] + q1[1] * q2[1] + q1[2] * q2[2] + q1[3] * q2[3]; + f32 theta; + f32 theta_q1; + f32 theta_q2; + f32 sine; + f32 coeff_q1; + f32 coeff_q2; + + if (dot < -1.0f + EPSILON) { + result[0] = (1.0f - t) * q1[0] - q2[0] * t; + result[1] = (1.0f - t) * q1[1] - q2[1] * t; + result[2] = (1.0f - t) * q1[2] - q2[2] * t; + result[3] = (1.0f - t) * q1[3] - q2[3] * t; + } else if (dot <= 1.0f - EPSILON) { + theta = acosf(dot); + theta_q1 = (1.0f - t) * theta; + theta_q2 = t * theta; + sine = sinf(theta); + coeff_q1 = sinf(theta_q1) / sine; + coeff_q2 = sinf(theta_q2) / sine; + result[0] = coeff_q1 * q1[0] + q2[0] * coeff_q2; + result[1] = coeff_q1 * q1[1] + q2[1] * coeff_q2; + result[2] = coeff_q1 * q1[2] + q2[2] * coeff_q2; + result[3] = coeff_q1 * q1[3] + q2[3] * coeff_q2; + } else { + result[0] = (1.0f - t) * q1[0] + q2[0] * t; + result[1] = (1.0f - t) * q1[1] + q2[1] * t; + result[2] = (1.0f - t) * q1[2] + q2[2] * t; + result[3] = (1.0f - t) * q1[3] + q2[3] * t; + } +} GLOBAL_ASM( glabel func0f097518 diff --git a/src/game/menu.c b/src/game/menu.c index 6ab8a27e1..30b77b40b 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -3882,7 +3882,7 @@ glabel var7f1b3c40pf /* f0f4ac0: 02203825 */ move $a3,$s1 /* f0f4ac4: 44067000 */ mfc1 $a2,$f14 /* f0f4ac8: 27a402bc */ addiu $a0,$sp,0x2bc -/* f0f4acc: 0fc25c76 */ jal func0f0972b8 +/* f0f4acc: 0fc25c76 */ jal quaternionSlerp /* f0f4ad0: 27a502ac */ addiu $a1,$sp,0x2ac /* f0f4ad4: 02202025 */ move $a0,$s1 /* f0f4ad8: 0fc25b7d */ jal quaternionToMtx @@ -5491,7 +5491,7 @@ glabel var7f1b2948 /* f0f4384: 02203825 */ or $a3,$s1,$zero /* f0f4388: 44067000 */ mfc1 $a2,$f14 /* f0f438c: 27a402bc */ addiu $a0,$sp,0x2bc -/* f0f4390: 0fc25cae */ jal func0f0972b8 +/* f0f4390: 0fc25cae */ jal quaternionSlerp /* f0f4394: 27a502ac */ addiu $a1,$sp,0x2ac /* f0f4398: 02202025 */ or $a0,$s1,$zero /* f0f439c: 0fc25bb5 */ jal quaternionToMtx @@ -7100,7 +7100,7 @@ glabel var7f1b2948 /* f0f0ec8: 02003825 */ or $a3,$s0,$zero /* f0f0ecc: 44067000 */ mfc1 $a2,$f14 /* f0f0ed0: 27a402e4 */ addiu $a0,$sp,0x2e4 -/* f0f0ed4: 0fc25492 */ jal func0f0972b8 +/* f0f0ed4: 0fc25492 */ jal quaternionSlerp /* f0f0ed8: 27a502d4 */ addiu $a1,$sp,0x2d4 /* f0f0edc: 02002025 */ or $a0,$s0,$zero /* f0f0ee0: 0fc25399 */ jal quaternionToMtx @@ -8287,7 +8287,7 @@ glabel var7f1b2948 // sp290.z = thing->unk550; // // quaternion0f096ca0(&sp290, &sp2ac); -// func0f0972b8(sp2bc, &sp2ac, sp2d0, &sp29c); +// quaternionSlerp(sp2bc, &sp2ac, sp2d0, &sp29c); // quaternionToMtx(&sp29c, &sp350); // } else { // sp398.x = thing->unk520 = thing->unk548; diff --git a/src/game/player.c b/src/game/player.c index 0b63c92a9..c8b6fec86 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -2210,7 +2210,7 @@ void playerTickCutscene(bool arg0) quaternion0f097044(&spc4, sp74); quaternion0f097044(&sp84, sp64); quaternion0f0976c0(sp64, sp74); - func0f0972b8(sp74, sp64, sp104, sp54); + quaternionSlerp(sp74, sp64, sp104, sp54); quaternionToMtx(sp54, &sp11c); up.x = sp11c.m[1][0]; diff --git a/src/game/propobj.c b/src/game/propobj.c index 8b35a336a..842ed828b 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -25873,7 +25873,7 @@ glabel var7f1ab6dcpf /* f076d60: c6000060 */ lwc1 $f0,0x60($s0) /* f076d64: 44060000 */ mfc1 $a2,$f0 .PF0f076d68: -/* f076d68: 0fc25c76 */ jal func0f0972b8 +/* f076d68: 0fc25c76 */ jal quaternionSlerp /* f076d6c: 27a700ec */ addiu $a3,$sp,0xec /* f076d70: 27a400ec */ addiu $a0,$sp,0xec /* f076d74: 0fc25b7d */ jal quaternionToMtx @@ -29411,7 +29411,7 @@ glabel var7f1aa438 /* f076adc: c6000060 */ lwc1 $f0,0x60($s0) /* f076ae0: 44060000 */ mfc1 $a2,$f0 .L0f076ae4: -/* f076ae4: 0fc25cae */ jal func0f0972b8 +/* f076ae4: 0fc25cae */ jal quaternionSlerp /* f076ae8: 27a700ec */ addiu $a3,$sp,0xec /* f076aec: 27a400ec */ addiu $a0,$sp,0xec /* f076af0: 0fc25bb5 */ jal quaternionToMtx @@ -32849,7 +32849,7 @@ glabel var7f1aa438 /* f075714: c6000060 */ lwc1 $f0,0x60($s0) /* f075718: 44060000 */ mfc1 $a2,$f0 .NB0f07571c: -/* f07571c: 0fc25492 */ jal func0f0972b8 +/* f07571c: 0fc25492 */ jal quaternionSlerp /* f075720: 27a700ec */ addiu $a3,$sp,0xec /* f075724: 27a400ec */ addiu $a0,$sp,0xec /* f075728: 0fc25399 */ jal quaternionToMtx diff --git a/src/include/game/game_096ca0.h b/src/include/game/game_096ca0.h index f23f39925..c467e76e2 100644 --- a/src/include/game/game_096ca0.h +++ b/src/include/game/game_096ca0.h @@ -8,7 +8,7 @@ void quaternion0f096ca0(struct coord *arg0, f32 quat[4]); void quaternionToMtx(f32 *arg0, Mtxf *arg1); void quaternion0f097044(Mtxf *matrix, f32 arg1[4]); void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *matrix); -void func0f0972b8(f32 arg0[4], f32 arg1[4], f32 arg2, f32 *arg3); +void quaternionSlerp(f32 q1[4], f32 q2[4], f32 t, f32 result[4]); u32 func0f097518(void); void quaternion0f0976c0(f32 q1[4], f32 q2[4]); void quaternionMultQuaternion(f32 a[4], f32 b[4], f32 result[4]); diff --git a/src/lib/model.c b/src/lib/model.c index 3f64ff8ca..6e11696dc 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -735,7 +735,7 @@ void model0001b400(struct modelrenderdata *arg0, struct model *model, struct mod quaternion0f096ca0(&sp230, spfc); quaternion0f0976c0(spfc, spec); - func0f0972b8(spfc, spec, anim->fracmerge, &spdc); + quaternionSlerp(spfc, spec, anim->fracmerge, &spdc); quaternionToMtx(&spdc, &sp1d8); } else { mtx4LoadRotation(&sp230, &sp1d8); @@ -1516,7 +1516,7 @@ glabel var70053fc0pf /* 1bff0: 27a70068 */ addiu $a3,$sp,0x68 /* 1bff4: 27a40088 */ addiu $a0,$sp,0x88 /* 1bff8: 27a50078 */ addiu $a1,$sp,0x78 -/* 1bffc: 0fc25c76 */ jal func0f0972b8 +/* 1bffc: 0fc25c76 */ jal quaternionSlerp /* 1c000: 8e060054 */ lw $a2,0x54($s0) /* 1c004: 44804000 */ mtc1 $zero,$f8 /* 1c008: c7aa0138 */ lwc1 $f10,0x138($sp) @@ -1931,7 +1931,7 @@ glabel model0001bfa8 /* 1c234: 27a70068 */ addiu $a3,$sp,0x68 /* 1c238: 27a40088 */ addiu $a0,$sp,0x88 /* 1c23c: 27a50078 */ addiu $a1,$sp,0x78 -/* 1c240: 0fc25cae */ jal func0f0972b8 +/* 1c240: 0fc25cae */ jal quaternionSlerp /* 1c244: 8e060054 */ lw $a2,0x54($s0) /* 1c248: 44802000 */ mtc1 $zero,$f4 /* 1c24c: c7a60138 */ lwc1 $f6,0x138($sp)