Match `SkelAnime_GetFrameDataLegacy` (#392)

* Properly rename SkelAnime_GetFrameDataLegacy

* Match
This commit is contained in:
Anghelo Carvajal 2021-11-03 12:23:37 -03:00 committed by GitHub
parent 60b9cd789e
commit 5e7c19ce29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 46 deletions

View File

@ -2570,7 +2570,7 @@ Gfx* SkelAnime_DrawFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skel
Mtx** mtx, Gfx* gfx); Mtx** mtx, Gfx* gfx);
Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx); OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
s16 SkelAnime_GetFrameData2(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable); s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable);
s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation); s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation);
s16 Animation_GetLength2(LegacyAnimationHeader* animation); s16 Animation_GetLength2(LegacyAnimationHeader* animation);
s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation); s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation);

View File

@ -869,8 +869,6 @@ Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointT
* Unpacks frame data for the animation at the given frame into frameTable * Unpacks frame data for the animation at the given frame into frameTable
* Used by the legacy animation format * Used by the legacy animation format
*/ */
#ifdef NON_MATCHING
// equivalent, minor reordering
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) { s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) {
LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation);
s16 limbCount = animHeader->limbCount; s16 limbCount = animHeader->limbCount;
@ -880,59 +878,21 @@ s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Ve
s16* dynamicData = &frameData[frame]; s16* dynamicData = &frameData[frame];
s32 i; s32 i;
/**
*Equivalent to the following, but the compiler optimizes the loop in a way I can't replicate
*/
/*
for(i = 0, frameTable++, key++; i < limbCount + 1; i++, key++, frameTable++) {
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
}
*/
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
i = 1;
frameTable++; frameTable++;
key++; key++;
if (limbCount & 1) {} for (i = 1; i <= limbCount; i++, key++, frameTable++) {
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
if (limbCount > 0) { frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
if (limbCount & 1) { frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
i++;
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
key++;
frameTable++;
if (limbCount + 1 == i) {
goto ret;
}
}
do {
i += 2;
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
key++;
frameTable++;
frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x];
frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y];
frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z];
key++;
frameTable++;
} while (i != limbCount + 1);
} }
ret:
return limbCount; return limbCount;
} }
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameData2.s")
#endif
/** /**
* Used by legacy animation format * Used by legacy animation format

View File

@ -2536,7 +2536,7 @@
0x80134990:("SkelAnime_Draw",), 0x80134990:("SkelAnime_Draw",),
0x80134B54:("SkelAnime_DrawFlexLimb",), 0x80134B54:("SkelAnime_DrawFlexLimb",),
0x80134DBC:("SkelAnime_DrawFlex",), 0x80134DBC:("SkelAnime_DrawFlex",),
0x80134FFC:("SkelAnime_GetFrameData2",), 0x80134FFC:("SkelAnime_GetFrameDataLegacy",),
0x801353D4:("Animation_GetLimbCount2",), 0x801353D4:("Animation_GetLimbCount2",),
0x801353F8:("Animation_GetLength2",), 0x801353F8:("Animation_GetLength2",),
0x8013541C:("Animation_GetLastFrame2",), 0x8013541C:("Animation_GetLastFrame2",),