diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2021-11-03 12:23:37 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-03 12:23:37 -0300 |
| commit | 5e7c19ce295268bffc42e7b037c751e76d0d0f8d (patch) | |
| tree | 690d5cec1f7aad96cf356cca6e0ff9250b25ae4e | |
| parent | 60b9cd789e808ceb9314f6aff3e611a64e9dbfdd (diff) | |
Match `SkelAnime_GetFrameDataLegacy` (#392)
* Properly rename SkelAnime_GetFrameDataLegacy
* Match
| -rw-r--r-- | include/functions.h | 2 | ||||
| -rw-r--r-- | src/code/z_skelanime.c | 52 | ||||
| -rw-r--r-- | tools/disasm/functions.txt | 2 |
3 files changed, 8 insertions, 48 deletions
diff --git a/include/functions.h b/include/functions.h index a575fd6e0..6e8b78e93 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2570,7 +2570,7 @@ Gfx* SkelAnime_DrawFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skel Mtx** mtx, Gfx* gfx); Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, 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_GetLength2(LegacyAnimationHeader* animation); s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation); diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index c8ab534de..e0df1d867 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -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 * Used by the legacy animation format */ -#ifdef NON_MATCHING -// equivalent, minor reordering s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) { LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); s16 limbCount = animHeader->limbCount; @@ -880,59 +878,21 @@ s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Ve s16* dynamicData = &frameData[frame]; 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->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; - i = 1; frameTable++; key++; - if (limbCount & 1) {} - - if (limbCount > 0) { - if (limbCount & 1) { - 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: + for (i = 1; i <= limbCount; 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]; + } + return limbCount; } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameData2.s") -#endif /** * Used by legacy animation format diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index a51d44753..b2e479288 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2536,7 +2536,7 @@ 0x80134990:("SkelAnime_Draw",), 0x80134B54:("SkelAnime_DrawFlexLimb",), 0x80134DBC:("SkelAnime_DrawFlex",), - 0x80134FFC:("SkelAnime_GetFrameData2",), + 0x80134FFC:("SkelAnime_GetFrameDataLegacy",), 0x801353D4:("Animation_GetLimbCount2",), 0x801353F8:("Animation_GetLength2",), 0x8013541C:("Animation_GetLastFrame2",), |
