diff options
| author | KrimtonZ <krimtonz@gmail.com> | 2020-03-25 14:38:16 -0500 |
|---|---|---|
| committer | KrimtonZ <krimtonz@gmail.com> | 2020-03-25 14:38:16 -0500 |
| commit | 864cb28e272d68deaf1805dc62286531854edb48 (patch) | |
| tree | 0a8aa1cd5518e5804f8d4aee3c7b334ab399ed53 /src/code | |
| parent | 582b32d39c16fa565fd1cda320da2632abba4296 (diff) | |
remove skelanime data files, few extra namings, add non_matching for func_800A2E70
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_skelanime.c | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index bf0a19567..f7eae881a 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -18,7 +18,7 @@ void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType //.data u32 D_8012A480 = 0; -static AnimationEntryCallback D_8012A484[] = { +static AnimationEntryCallback AnimationLoadDone[] = { &SkelAnime_LinkAnimetionLoaded, &SkelAnime_AnimationType1Loaded, &SkelAnime_AnimationType2Loaded, &SkelAnime_AnimationType3Loaded, &SkelAnime_AnimationType4Loaded, &SkelAnime_AnimationType5Loaded, }; @@ -131,7 +131,6 @@ void SkelAnime_LodDraw(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* acto func_800C6B54(gfx, globalCtx->state.gfxCtx, "../z_skelanime.c", 894); } -//#define NON_MATCHING #ifdef NON_MATCHING // regalloc void SkelAnime_LodDrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* actorDrawTable, @@ -776,18 +775,44 @@ s16 func_800A2E2C(GenericAnimationHeader* animationSeg) { return animation->frameCount - 1; } -// Very large update function +#ifdef NON_MATCHING +// Functionally equal, but loop unrolling is way off. +void func_800A2E70(s32 limbCount, Vec3s* vec1, Vec3s* vec2, Vec3s* vec3, f32 unkf) { + Vec3s* pvec1; + Vec3s* pvec2; + Vec3s* pvec3; + s32 iVar3; + + if (unkf < 1.0f) { + for (iVar3 = 0, pvec1 = vec1, pvec2 = vec2, pvec3 = vec3; iVar3 < limbCount; + iVar3++, pvec1++, pvec2++, pvec3++) { + pvec1->x = pvec2->x + ((s16)(pvec3->x - pvec2->x) * unkf); + pvec1->y = pvec2->y + ((s16)(pvec3->y - pvec2->y) * unkf); + pvec1->z = pvec2->z + ((s16)(pvec3->z - pvec2->z) * unkf); + } + } else { + for (iVar3 = 0; iVar3 < limbCount; iVar3++) { + pvec1 = &vec1[iVar3]; + pvec3 = &vec3[iVar3]; + pvec1->x = pvec3->x; + pvec1->y = pvec3->y; + pvec1->z = pvec3->z; + } + } +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_skelanime/func_800A2E70.s") +#endif -void func_800A32EC(u16* arg0) { - *arg0 = 0; +void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx) { + animationCtx->animationCount = 0; } -void func_800A32F4(s32 arg0) { - D_801600B0 *= 2; +void func_800A32F4(GlobalContext* globalCtx) { + D_801600B0 <<= 1; } -void func_800A3310(void* arg0) { +void func_800A3310(GlobalContext* globalCtx) { u32* D_8012A480Ptr = &D_8012A480; *D_8012A480Ptr |= D_801600B0; @@ -954,7 +979,7 @@ void func_800A390C(GlobalContext* globalCtx, AnimationContext* animationCtx) { AnimationEntry* entry; for (entry = animationCtx->entries; animationCtx->animationCount != 0; entry++, animationCtx->animationCount--) { - D_8012A484[entry->type](globalCtx, &entry->types); + AnimationLoadDone[entry->type](globalCtx, &entry->types); } D_801600B0 = 1; |
