From f1e1e6b204633a206be54aabbd2e5f592b3e4c42 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 5 Aug 2023 18:16:16 +1000 Subject: [PATCH] Set names for headanim symbols --- src/game/bondgrab.c | 4 +-- src/game/bondhead.c | 50 ++++++++++++++++++------------------- src/game/bondheadreset.c | 20 ++++++--------- src/game/bondwalk.c | 4 +-- src/game/chr.c | 4 +-- src/game/player.c | 2 +- src/game/playermgr.c | 2 +- src/include/constants.h | 3 +++ src/include/data.h | 2 +- src/include/game/bondhead.h | 2 +- src/include/types.h | 8 +++--- 11 files changed, 49 insertions(+), 52 deletions(-) diff --git a/src/game/bondgrab.c b/src/game/bondgrab.c index a1cec58f0..cfca0b60f 100644 --- a/src/game/bondgrab.c +++ b/src/game/bondgrab.c @@ -1038,7 +1038,7 @@ void bgrab0f0ce924(void) g_Vars.currentplayer->speedforwards += sp70; g_Vars.currentplayer->speedsideways += sp6c; - mult = var80075c00[1].unk0c * 0.5f * g_Vars.lvupdate60freal; + mult = g_HeadAnims[HEADANIM_MOVING].translateperframe * 0.5f * g_Vars.lvupdate60freal; sp88 = mult * g_Vars.currentplayer->speedsideways; speedsideways = g_Vars.currentplayer->speedsideways * 0.8f; @@ -1149,7 +1149,7 @@ void bgrab0f0ce924(void) sp3c = -1.0f; } - if (g_Vars.currentplayer->headanim == 1) { + if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) { breathing *= 1.2f; } diff --git a/src/game/bondhead.c b/src/game/bondhead.c index c574ed8c5..75c2b4b15 100644 --- a/src/game/bondhead.c +++ b/src/game/bondhead.c @@ -11,13 +11,11 @@ #include "data.h" #include "types.h" -struct var80075c00 var80075c00[] = { +struct headanim g_HeadAnims[] = { { ANIM_002B, 9.5, 27, 0, 0, 1.5 }, { ANIM_0029, 7.5, 17, 0, 1.5, 100 }, }; -struct coord var80075c30 = {0, 0, 0}; - void bheadFlipAnimation(void) { g_Vars.currentplayer->model.anim->flip = !g_Vars.currentplayer->model.anim->flip; @@ -96,7 +94,7 @@ void bheadUpdateRot(struct coord *lookvel, struct coord *upvel) g_Vars.currentplayer->headup.z = g_Vars.currentplayer->headupsum.z * (1.0f - g_Vars.currentplayer->headdamp); } -void bheadSetdamp(f32 headdamp) +void bheadSetDamp(f32 headdamp) { if (headdamp != g_Vars.currentplayer->headdamp) { f32 divisor = 1.0f - headdamp; @@ -112,7 +110,7 @@ void bheadSetdamp(f32 headdamp) void bheadUpdate(f32 arg0, f32 arg1) { - struct coord headpos = var80075c30; + struct coord headpos = {0, 0, 0}; struct coord lookvel = {0, 0, 1}; struct coord upvel = {0, 1, 0}; f32 animspeed = 0; @@ -120,7 +118,7 @@ void bheadUpdate(f32 arg0, f32 arg1) if (animHasFrames(g_Vars.currentplayer->model.anim->animnum)) { animspeed = modelGetAbsAnimSpeed(&g_Vars.currentplayer->model); - if (g_Vars.currentplayer->headanim == 0) { + if (g_Vars.currentplayer->headanim == HEADANIM_RESTING) { if (animspeed > 0.69999998807907f) { g_Vars.currentplayer->headamplitude = 1; } else if (animspeed > 0.1f) { @@ -131,7 +129,7 @@ void bheadUpdate(f32 arg0, f32 arg1) g_Vars.currentplayer->sideamplitude = g_Vars.currentplayer->headamplitude; } else { - if (g_Vars.currentplayer->headanim == 1) { + if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) { g_Vars.currentplayer->headamplitude = 0.89999997615814f; g_Vars.currentplayer->sideamplitude = 0.5f; } else { @@ -197,9 +195,9 @@ void bheadUpdate(f32 arg0, f32 arg1) g_Vars.currentplayer->headwalkingtime60 += g_Vars.lvupdate60; if (g_Vars.currentplayer->headwalkingtime60 > TICKS(60)) { - bheadSetdamp(PAL ? 0.9785f : 0.982f); + bheadSetDamp(PAL ? 0.9785f : 0.982f); } else { - bheadSetdamp(PAL ? 0.99699f : 0.99748998880386f); + bheadSetDamp(PAL ? 0.99699f : 0.99748998880386f); } } else { lookvel.x = g_Vars.currentplayer->bondheadmatrices[0].m[2][0]; @@ -210,7 +208,7 @@ void bheadUpdate(f32 arg0, f32 arg1) upvel.y = g_Vars.currentplayer->bondheadmatrices[0].m[1][1]; upvel.z = g_Vars.currentplayer->bondheadmatrices[0].m[1][2]; - bheadSetdamp(PAL ? 0.952f : 0.96f); + bheadSetDamp(PAL ? 0.952f : 0.96f); } } else { g_Vars.currentplayer->headbodyoffset.x = g_Vars.currentplayer->standbodyoffset.x; @@ -222,7 +220,7 @@ void bheadUpdate(f32 arg0, f32 arg1) headpos.z = 0; g_Vars.currentplayer->headwalkingtime60 = 0; - bheadSetdamp(PAL ? 0.99699f : 0.99748998880386f); + bheadSetDamp(PAL ? 0.99699f : 0.99748998880386f); if (bmoveGetCrouchPos() != CROUCHPOS_SQUAT) { g_Vars.currentplayer->standfrac += @@ -261,31 +259,31 @@ void bheadAdjustAnimation(f32 speed) struct chrdata *chr = g_Vars.currentplayer->prop->chr; s32 i; - speed *= var80075c00[1].unk0c; + speed *= g_HeadAnims[HEADANIM_MOVING].translateperframe; - for (i = 0; i < 2; i++) { - if (var80075c00[i].unk14 * var80075c00[i].unk0c >= speed) { - s32 headanim = g_Vars.currentplayer->headanim; + for (i = 0; i < ARRAYCOUNT(g_HeadAnims); i++) { + if (g_HeadAnims[i].maxspeed * g_HeadAnims[i].translateperframe >= speed) { + s32 prevheadanim = g_Vars.currentplayer->headanim; - if (i != headanim) { + if (i != prevheadanim) { f32 startframe = 0.0f; - if (headanim >= 0) { - startframe = (g_Vars.currentplayer->model.anim->frame - var80075c00[headanim].loopframe) - / (var80075c00[headanim].endframe - var80075c00[headanim].loopframe); - startframe = var80075c00[i].loopframe + (var80075c00[i].endframe - var80075c00[i].loopframe) * startframe; + if (prevheadanim >= 0) { + startframe = (g_Vars.currentplayer->model.anim->frame - g_HeadAnims[prevheadanim].loopframe) + / (g_HeadAnims[prevheadanim].endframe - g_HeadAnims[prevheadanim].loopframe); + startframe = g_HeadAnims[i].loopframe + (g_HeadAnims[i].endframe - g_HeadAnims[i].loopframe) * startframe; } - modelSetAnimation(&g_Vars.currentplayer->model, var80075c00[i].animnum, + modelSetAnimation(&g_Vars.currentplayer->model, g_HeadAnims[i].animnum, g_Vars.currentplayer->model.anim->flip, startframe, 0.5f, 12); - modelSetAnimLooping(&g_Vars.currentplayer->model, var80075c00[i].loopframe, false); - modelSetAnimEndFrame(&g_Vars.currentplayer->model, var80075c00[i].endframe); + modelSetAnimLooping(&g_Vars.currentplayer->model, g_HeadAnims[i].loopframe, false); + modelSetAnimEndFrame(&g_Vars.currentplayer->model, g_HeadAnims[i].endframe); modelSetAnimFlipFunction(&g_Vars.currentplayer->model, bheadFlipAnimation); g_Vars.currentplayer->headanim = i; } - speed = speed / var80075c00[i].unk0c; + speed = speed / g_HeadAnims[i].translateperframe; modelSetAnimSpeed(&g_Vars.currentplayer->model, speed * 0.5f, 0); break; @@ -309,11 +307,11 @@ void bheadSetSpeed(f32 speed) f32 bheadGetBreathingValue(void) { if (g_Vars.currentplayer->headanim >= 0) { - f32 a = g_Vars.currentplayer->bondbreathing * 0.012500001f + 0.004166667f; + f32 a = g_Vars.currentplayer->bondbreathing * 0.012500001f + (1.0f / 240.0f); f32 b = modelGetAbsAnimSpeed(&g_Vars.currentplayer->model); if (b > 0) { - f32 c = b / (var80075c00[g_Vars.currentplayer->headanim].endframe - var80075c00[g_Vars.currentplayer->headanim].loopframe); + f32 c = b / (g_HeadAnims[g_Vars.currentplayer->headanim].endframe - g_HeadAnims[g_Vars.currentplayer->headanim].loopframe); if (c < a) { c = a; diff --git a/src/game/bondheadreset.c b/src/game/bondheadreset.c index b313ec01f..2d75461f4 100644 --- a/src/game/bondheadreset.c +++ b/src/game/bondheadreset.c @@ -39,7 +39,7 @@ void bheadReset(void) modelSetScale(&g_Vars.currentplayer->model, 0.1000000089407f); modelSetAnimPlaySpeed(&g_Vars.currentplayer->model, (PAL ? 1.2f : 1), 0); - g_Vars.currentplayer->headanim = 0; + g_Vars.currentplayer->headanim = HEADANIM_RESTING; g_Vars.currentplayer->headdamp = (PAL ? 0.9166f : 0.93f); g_Vars.currentplayer->headwalkingtime60 = 0; g_Vars.currentplayer->headamplitude = 1; @@ -87,10 +87,10 @@ void bheadReset(void) g_Vars.currentplayer->standup[1].z = 0; g_Vars.currentplayer->standcnt = 0; - for (i = 0; i < 2; i++) { + for (i = 0; i < ARRAYCOUNT(g_HeadAnims); i++) { s32 translate[3]; - func0f0125a0(var80075c00[i].animnum, var80075c00[i].loopframe, var80075c00[i].endframe, translate); - var80075c00[i].unk0c = (translate[2] * 0.1000000089407f) / (var80075c00[i].endframe - var80075c00[i].loopframe); + func0f0125a0(g_HeadAnims[i].animnum, g_HeadAnims[i].loopframe, g_HeadAnims[i].endframe, translate); + g_HeadAnims[i].translateperframe = (translate[2] * 0.1000000089407f) / (g_HeadAnims[i].endframe - g_HeadAnims[i].loopframe); } { @@ -112,17 +112,13 @@ void bheadReset(void) g_Vars.currentplayer->standbodyoffset.z = g_Vars.currentplayer->bondheadmatrices[1].m[3][2] - g_Vars.currentplayer->bondheadmatrices[0].m[3][2]; modelSetAnimation(&g_Vars.currentplayer->model, - var80075c00[g_Vars.currentplayer->headanim].animnum, + g_HeadAnims[g_Vars.currentplayer->headanim].animnum, 0, - var80075c00[g_Vars.currentplayer->headanim].loopframe, + g_HeadAnims[g_Vars.currentplayer->headanim].loopframe, 0.5f, 0); - modelSetAnimLooping(&g_Vars.currentplayer->model, - var80075c00[g_Vars.currentplayer->headanim].loopframe, 0); - - modelSetAnimEndFrame(&g_Vars.currentplayer->model, - var80075c00[g_Vars.currentplayer->headanim].endframe); - + modelSetAnimLooping(&g_Vars.currentplayer->model, g_HeadAnims[g_Vars.currentplayer->headanim].loopframe, 0); + modelSetAnimEndFrame(&g_Vars.currentplayer->model, g_HeadAnims[g_Vars.currentplayer->headanim].endframe); modelSetAnimFlipFunction(&g_Vars.currentplayer->model, bheadFlipAnimation); bheadUpdateIdleRoll(); diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index e32d6668b..2e87123ab 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -1543,7 +1543,7 @@ void bwalk0f0c69b8(void) g_Vars.currentplayer->bondbreathing = 1.0f; } - mult = var80075c00[1].unk0c * 0.5f * g_Vars.lvupdate60freal; + mult = g_HeadAnims[HEADANIM_MOVING].translateperframe * 0.5f * g_Vars.lvupdate60freal; spe0 = (g_Vars.currentplayer->speedsideways * spc0 + spc4) * mult; #if VERSION >= VERSION_NTSC_1_0 @@ -1728,7 +1728,7 @@ void bwalk0f0c69b8(void) sp40 = -1.0f; } - if (g_Vars.currentplayer->headanim == 1) { + if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) { breathing *= 1.2f; } diff --git a/src/game/chr.c b/src/game/chr.c index 667d1350a..c91af0795 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -640,8 +640,8 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3 bmove0f0cb904(&chr->aibot->shotspeed); - arg2->x += chr->aibot->shotspeed.x * var80075c00[1].unk0c * VAR(lvupdate60freal) * 0.5f; - arg2->z += chr->aibot->shotspeed.z * var80075c00[1].unk0c * VAR(lvupdate60freal) * 0.5f; + arg2->x += chr->aibot->shotspeed.x * g_HeadAnims[HEADANIM_MOVING].translateperframe * VAR(lvupdate60freal) * 0.5f; + arg2->z += chr->aibot->shotspeed.z * g_HeadAnims[HEADANIM_MOVING].translateperframe * VAR(lvupdate60freal) * 0.5f; } if (chr->actiontype == ACT_DIE && chr->act_die.timeextra > 0.0f) { diff --git a/src/game/player.c b/src/game/player.c index 0e7278e30..76eb9b6bf 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -5589,7 +5589,7 @@ void playerChooseThirdPersonAnimation(struct chrdata *chr, s32 crouchpos, f32 sp } } else if (turnspeed < 0.4f || (chr->prop->type == PROPTYPE_PLAYER - && g_Vars.players[playermgrGetPlayerNumByProp(chr->prop)]->headanim == 0)) { + && g_Vars.players[playermgrGetPlayerNumByProp(chr->prop)]->headanim == HEADANIM_RESTING)) { turnmode = TURNMODE_STAND_SOFTTURN; speed = 2.0f * turnspeed; diff --git a/src/game/playermgr.c b/src/game/playermgr.c index 869d01dcb..01d47c65e 100644 --- a/src/game/playermgr.c +++ b/src/game/playermgr.c @@ -327,7 +327,7 @@ void playermgrAllocatePlayer(s32 index) g_Vars.players[index]->resetheadrot = true; g_Vars.players[index]->resetheadtick = true; - g_Vars.players[index]->headanim = 0; + g_Vars.players[index]->headanim = HEADANIM_RESTING; g_Vars.players[index]->headdamp = (PAL ? 0.9166f : 0.93f); g_Vars.players[index]->headwalkingtime60 = 0; g_Vars.players[index]->headamplitude = 1; diff --git a/src/include/constants.h b/src/include/constants.h index a0b3f3b35..3a8e7ea97 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -1347,6 +1347,9 @@ #define HATTYPE_METAL 3 #define HATTYPE_CLOTH 5 +#define HEADANIM_RESTING 0 +#define HEADANIM_MOVING 1 + #define HEADBODYTYPE_DEFAULT 0 #define HEADBODYTYPE_FEMALE 1 #define HEADBODYTYPE_FEMALEGUARD 2 diff --git a/src/include/data.h b/src/include/data.h index aeb9ae36e..4469516e5 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -302,7 +302,7 @@ extern struct menudialogdef g_MpEditSimulant4MbMenuDialog; extern struct menudialogdef g_AdvancedSetup4MbMenuDialog; extern struct filelist *g_FileLists[MAX_PLAYERS]; extern bool var80075bd0[]; -extern struct var80075c00 var80075c00[]; +extern struct headanim g_HeadAnims[2]; extern s32 var80075d60; extern s32 var80075d64; extern s32 var80075d68; diff --git a/src/include/game/bondhead.h b/src/include/game/bondhead.h index 270cb2dce..a1adcbc62 100644 --- a/src/include/game/bondhead.h +++ b/src/include/game/bondhead.h @@ -10,7 +10,7 @@ void bheadFlipAnimation(void); void bheadUpdateIdleRoll(void); void bheadUpdatePos(struct coord *vel); void bheadUpdateRot(struct coord *lookvel, struct coord *upvel); -void bheadSetdamp(f32 headdamp); +void bheadSetDamp(f32 headdamp); void bheadUpdate(f32 arg0, f32 arg1); void bheadAdjustAnimation(f32 speed); void bheadStartDeathAnimation(s16 animnum, u32 flip, f32 fstarttime, f32 speed); diff --git a/src/include/types.h b/src/include/types.h index cbf2096b5..13d49685e 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4810,13 +4810,13 @@ struct animtable { s32 injuryanimcount; }; -struct var80075c00 { +struct headanim { s16 animnum; f32 loopframe; f32 endframe; - f32 unk0c; - f32 unk10; - f32 unk14; + f32 translateperframe; + f32 minspeed; + f32 maxspeed; }; struct vimode {