diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index d449b0572..140669c89 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -8546,7 +8546,7 @@ glabel var7f1a8da8 /* f0371b8: 8ce40020 */ lw $a0,0x20($a3) /* f0371bc: e7ae0040 */ swc1 $f14,0x40($sp) /* f0371c0: e7ac0044 */ swc1 $f12,0x44($sp) -/* f0371c4: 0c0074a2 */ jal func0001d288 +/* f0371c4: 0c0074a2 */ jal modelGetAbsAnimSpeed /* f0371c8: e7a2001c */ swc1 $f2,0x1c($sp) /* f0371cc: c7a2001c */ lwc1 $f2,0x1c($sp) /* f0371d0: c7ac0044 */ lwc1 $f12,0x44($sp) @@ -8785,7 +8785,7 @@ glabel var7f1a8dac /* f037610: a0800009 */ sb $zero,0x9($a0) /* f037614: 8def9fc8 */ lw $t7,%lo(g_Vars+0x8)($t7) /* f037618: ac8f00d8 */ sw $t7,0xd8($a0) -/* f03761c: 0c0074a2 */ jal func0001d288 +/* f03761c: 0c0074a2 */ jal modelGetAbsAnimSpeed /* f037620: 8c840020 */ lw $a0,0x20($a0) /* f037624: c7a40130 */ lwc1 $f4,0x130($sp) /* f037628: 3c01800a */ lui $at,0x800a @@ -20809,7 +20809,7 @@ void chrTickRunPos(struct chrdata *chr) fVar7 = func0f02dff0(ANIM_SKEDAR_RUNNING); } - chr->act_runpos.unk038 += fVar7 * g_Vars.lvupdate240freal * func0001d288(model); + chr->act_runpos.unk038 += fVar7 * g_Vars.lvupdate240freal * modelGetAbsAnimSpeed(model); } } diff --git a/src/game/game_113220.c b/src/game/game_113220.c index b05bd9a4d..1b3e6bcd9 100644 --- a/src/game/game_113220.c +++ b/src/game/game_113220.c @@ -218,7 +218,7 @@ glabel var7f1b3a74 /* f113944: 50400088 */ beqzl $v0,.L0f113b68 /* f113948: 44800000 */ mtc1 $zero,$f0 /* f11394c: 8e040284 */ lw $a0,0x284($s0) -/* f113950: 0c0074a2 */ jal func0001d288 +/* f113950: 0c0074a2 */ jal modelGetAbsAnimSpeed /* f113954: 2484045c */ addiu $a0,$a0,0x45c /* f113958: 8e020284 */ lw $v0,0x284($s0) /* f11395c: e7a000c0 */ swc1 $f0,0xc0($sp) @@ -758,7 +758,7 @@ f32 func0f11416c(void) { if (g_Vars.currentplayer->unk03ac >= 0) { f32 a = g_Vars.currentplayer->unk0198 * 0.012500001f + 0.004166667f; - f32 b = func0001d288(&g_Vars.currentplayer->model); + f32 b = modelGetAbsAnimSpeed(&g_Vars.currentplayer->model); if (b > 0) { f32 c = b / (var80075c00[g_Vars.currentplayer->unk03ac].unk08 - var80075c00[g_Vars.currentplayer->unk03ac].unk04); diff --git a/src/include/lib/lib_1a500.h b/src/include/lib/lib_1a500.h index 00dd9098b..f8c35fc4d 100644 --- a/src/include/lib/lib_1a500.h +++ b/src/include/lib/lib_1a500.h @@ -56,7 +56,7 @@ f32 modelGetCurAnimFrame(struct model *model); f32 modelGetAnimEndFrame(struct model *model); s32 modelGetNumAnimFrames(struct model *model); f32 modelGetAnimSpeed(struct model *model); -f32 func0001d288(struct model *model); +f32 modelGetAbsAnimSpeed(struct model *model); u32 func0001d320(void); u32 func0001d4fc(void); u32 func0001d62c(void); diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index 891b15f50..8084e79a3 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -3446,50 +3446,47 @@ f32 modelGetAnimSpeed(struct model *model) return 1; } +f32 modelGetAbsAnimSpeed(struct model *model) +{ + f32 speed; + + if (model->anim) { + speed = model->anim->speed; + + if (speed < 0) { + speed = -speed; + } + + return speed; + } + + return 1; +} + GLOBAL_ASM( -glabel func0001d288 -/* 1d288: 8c820020 */ lw $v0,0x20($a0) -/* 1d28c: 3c013f80 */ lui $at,0x3f80 -/* 1d290: 5040000c */ beqzl $v0,.L0001d2c4 -/* 1d294: 44810000 */ mtc1 $at,$f0 -/* 1d298: c442001c */ lwc1 $f2,0x1c($v0) -/* 1d29c: 44802000 */ mtc1 $zero,$f4 -/* 1d2a0: 00000000 */ nop -/* 1d2a4: 4604103c */ c.lt.s $f2,$f4 -/* 1d2a8: 00000000 */ nop -/* 1d2ac: 45000002 */ bc1f .L0001d2b8 -/* 1d2b0: 00000000 */ nop -/* 1d2b4: 46001087 */ neg.s $f2,$f2 -.L0001d2b8: -/* 1d2b8: 03e00008 */ jr $ra -/* 1d2bc: 46001006 */ mov.s $f0,$f2 -/* 1d2c0: 44810000 */ mtc1 $at,$f0 -.L0001d2c4: -/* 1d2c4: 00000000 */ nop -/* 1d2c8: 03e00008 */ jr $ra -/* 1d2cc: 00000000 */ nop -/* 1d2d0: 27bdffe8 */ addiu $sp,$sp,-24 -/* 1d2d4: afbf0014 */ sw $ra,0x14($sp) -/* 1d2d8: 8c8e0020 */ lw $t6,0x20($a0) -/* 1d2dc: 3c013f80 */ lui $at,0x3f80 -/* 1d2e0: 51c0000a */ beqzl $t6,.L0001d30c -/* 1d2e4: 44810000 */ mtc1 $at,$f0 -/* 1d2e8: 0c007498 */ jal modelGetAnimSpeed -/* 1d2ec: afa40018 */ sw $a0,0x18($sp) -/* 1d2f0: 8fa40018 */ lw $a0,0x18($sp) -/* 1d2f4: 8c8f0020 */ lw $t7,0x20($a0) -/* 1d2f8: c5e40074 */ lwc1 $f4,0x74($t7) -/* 1d2fc: 46040002 */ mul.s $f0,$f0,$f4 -/* 1d300: 10000004 */ b .L0001d314 -/* 1d304: 8fbf0014 */ lw $ra,0x14($sp) -/* 1d308: 44810000 */ mtc1 $at,$f0 +glabel func0001d2d0 +/* 1d2d0: 27bdffe8 */ addiu $sp,$sp,-24 +/* 1d2d4: afbf0014 */ sw $ra,0x14($sp) +/* 1d2d8: 8c8e0020 */ lw $t6,0x20($a0) +/* 1d2dc: 3c013f80 */ lui $at,0x3f80 +/* 1d2e0: 51c0000a */ beqzl $t6,.L0001d30c +/* 1d2e4: 44810000 */ mtc1 $at,$f0 +/* 1d2e8: 0c007498 */ jal modelGetAnimSpeed +/* 1d2ec: afa40018 */ sw $a0,0x18($sp) +/* 1d2f0: 8fa40018 */ lw $a0,0x18($sp) +/* 1d2f4: 8c8f0020 */ lw $t7,0x20($a0) +/* 1d2f8: c5e40074 */ lwc1 $f4,0x74($t7) +/* 1d2fc: 46040002 */ mul.s $f0,$f0,$f4 +/* 1d300: 10000004 */ b .L0001d314 +/* 1d304: 8fbf0014 */ lw $ra,0x14($sp) +/* 1d308: 44810000 */ mtc1 $at,$f0 .L0001d30c: -/* 1d30c: 00000000 */ nop -/* 1d310: 8fbf0014 */ lw $ra,0x14($sp) +/* 1d30c: 00000000 */ nop +/* 1d310: 8fbf0014 */ lw $ra,0x14($sp) .L0001d314: -/* 1d314: 27bd0018 */ addiu $sp,$sp,0x18 -/* 1d318: 03e00008 */ jr $ra -/* 1d31c: 00000000 */ nop +/* 1d314: 27bd0018 */ addiu $sp,$sp,0x18 +/* 1d318: 03e00008 */ jr $ra +/* 1d31c: 00000000 */ nop ); GLOBAL_ASM(