summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2021-11-03 12:23:37 -0300
committerGitHub <noreply@github.com>2021-11-03 12:23:37 -0300
commit5e7c19ce295268bffc42e7b037c751e76d0d0f8d (patch)
tree690d5cec1f7aad96cf356cca6e0ff9250b25ae4e /src/code
parent60b9cd789e808ceb9314f6aff3e611a64e9dbfdd (diff)
Match `SkelAnime_GetFrameDataLegacy` (#392)
* Properly rename SkelAnime_GetFrameDataLegacy * Match
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_skelanime.c52
1 files changed, 6 insertions, 46 deletions
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