mirror of https://github.com/zeldaret/mm.git
Rename `LinkAnimation` to `DmaAnimation` and other `skelanime` misc cleanups (#1147)
* Rename LinkAnimation to PlayerAnimation * remove the remaining link stuff * Move functions out of functions.h * cleanup returns * more cleanups * format * format again * format again again * Remove internal functions from header * legacy * bss * linkAnimSegment * Update src/overlays/actors/ovl_En_Yb/z_en_yb.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * bss * `DmaAnimation` rename * more DMA i missed * Revert "more DMA i missed" This reverts commit6c0ca44f45. * Revert "`DmaAnimation` rename" This reverts commit1d2626514c. * Add LinkAnimationHeader rename to namefixer.py --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
parent
3c107cb148
commit
f9c638117c
|
|
@ -1828,96 +1828,9 @@ s32 Entrance_GetSceneId(u16 entrance);
|
|||
s32 Entrance_GetSceneIdAbsolute(u16 entrance);
|
||||
s32 Entrance_GetSpawnNum(u16 entrance);
|
||||
s32 Entrance_GetTransitionFlags(u16 entrance);
|
||||
|
||||
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output);
|
||||
void SkelAnime_DrawLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawFlexLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod, Mtx** mtx);
|
||||
void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawFlexLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, Mtx** limbMatricies);
|
||||
void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawTransformFlexLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor, Mtx** mtx);
|
||||
void SkelAnime_DrawTransformFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor);
|
||||
void SkelAnime_GetFrameData(AnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
s16 Animation_GetLength(void* animation);
|
||||
s16 Animation_GetLastFrame(void* animation);
|
||||
Gfx* SkelAnime_DrawLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlexLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Mtx** mtx, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable);
|
||||
s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLength2(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation);
|
||||
void SkelAnime_InterpFrameTable(s32 limbCount, Vec3s* dst, Vec3s* start, Vec3s* target, f32 weight);
|
||||
void AnimationContext_Reset(AnimationContext* animationCtx);
|
||||
void AnimationContext_SetNextQueue(PlayState* play);
|
||||
void AnimationContext_DisableQueue(PlayState* play);
|
||||
AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, AnimationType type);
|
||||
void AnimationContext_SetLoadFrame(PlayState* play, LinkAnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
void AnimationContext_SetCopyAll(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src);
|
||||
void AnimationContext_SetInterp(PlayState* play, s32 vecCount, Vec3s* base, Vec3s* mod, f32 weight);
|
||||
void AnimationContext_SetCopyTrue(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetCopyFalse(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetMoveActor(PlayState* play, Actor* actor, SkelAnime* skelAnime, f32 arg3);
|
||||
void AnimationContext_LoadFrame(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyAll(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_Interp(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyTrue(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyFalse(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_MoveActor(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_Update(PlayState* play, AnimationContext* animationCtx);
|
||||
void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, LinkAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount);
|
||||
void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Update(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Morph(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_AnimateFrame(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Loop(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Once(PlayState* play, SkelAnime* skelAnime);
|
||||
void Animation_SetMorph(PlayState* play, SkelAnime* skelAnime, f32 morphFrames);
|
||||
void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void LinkAnimation_PlayOnce(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation);
|
||||
void LinkAnimation_PlayOnceSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed);
|
||||
void LinkAnimation_PlayLoop(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation);
|
||||
void LinkAnimation_PlayLoopSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed);
|
||||
void LinkAnimation_CopyJointToMorph(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_CopyMorphToJoint(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_LoadToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame);
|
||||
void LinkAnimation_LoadToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame);
|
||||
void LinkAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 weight);
|
||||
void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void LinkAnimation_EndLoop(SkelAnime* skelAnime);
|
||||
s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 frame, f32 updateRate);
|
||||
s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitFlex(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitSkin(GameState* gameState, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation);
|
||||
void SkelAnime_SetUpdate(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Update(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Morph(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_MorphTaper(SkelAnime* skelAnime);
|
||||
void SkelAnime_AnimateFrame(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopFull(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopPartial(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Once(SkelAnime* skelAnime);
|
||||
void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames, s8 taper);
|
||||
void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_EndLoop(SkelAnime* skelAnime);
|
||||
void Animation_Reverse(SkelAnime* skelAnime);
|
||||
void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle);
|
||||
s32 Animation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Free(SkelAnime* skelAnime, PlayState* play);
|
||||
void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src);
|
||||
|
||||
void SkinMatrix_Vec3fMtxFMultXYZW(MtxF* mf, Vec3f* src, Vec3f* xyzDest, f32* wDest);
|
||||
void SkinMatrix_Vec3fMtxFMultXYZ(MtxF* mf, Vec3f* src, Vec3f* dest);
|
||||
void SkinMatrix_MtxFMtxFMult(MtxF* mfB, MtxF* mfA, MtxF* dest);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "thga.h"
|
||||
#include "z64actor.h"
|
||||
#include "z64animation.h"
|
||||
#include "z64animation_legacy.h"
|
||||
#include "z64audio.h"
|
||||
#include "z64bgcheck.h"
|
||||
#include "z64camera.h"
|
||||
|
|
@ -645,7 +646,7 @@ typedef struct PlayState {
|
|||
/* 0x1878C */ void (*unk_1878C)(struct PlayState* play);
|
||||
/* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1);
|
||||
/* 0x18794 */ PlayerItemAction (*unk_18794)(struct PlayState* play, Player* player, ItemId itemId);
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, LinkAnimationHeader* talkAnim, s32 animMode);
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, PlayerAnimationHeader* talkAnim, s32 animMode);
|
||||
/* 0x1879C */ s16 playerActorCsIds[10];
|
||||
/* 0x187B0 */ MtxF viewProjectionMtxF;
|
||||
/* 0x187F0 */ Vec3f projectionMtxFDiagonal;
|
||||
|
|
|
|||
|
|
@ -11,10 +11,7 @@ struct Actor;
|
|||
struct SkelAnime;
|
||||
struct PlayerAnimationFrame;
|
||||
|
||||
#define LINK_ANIMETION_OFFSET(addr, offset) \
|
||||
(SEGMENT_ROM_START(link_animetion) + ((uintptr_t)addr & 0xFFFFFF) + ((u32)offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
#define ANIMATION_ENTRY_MAX 50
|
||||
|
||||
#define ANIM_FLAG_1 (1 << 0)
|
||||
#define ANIM_FLAG_UPDATEY (1 << 1)
|
||||
|
|
@ -82,35 +79,19 @@ typedef struct {
|
|||
/* 0xC */ u16 staticIndexMax;
|
||||
} AnimationHeader; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x10 */ s16 z;
|
||||
} JointKey; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 frameCount;
|
||||
/* 0x2 */ s16 limbCount;
|
||||
/* 0x4 */ s16* frameData;
|
||||
/* 0x8 */ JointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
typedef enum {
|
||||
ANIMATION_LINKANIMETION,
|
||||
ANIMENTRY_COPYALL,
|
||||
ANIMENTRY_INTERP,
|
||||
ANIMENTRY_COPYTRUE,
|
||||
ANIMENTRY_COPYFALSE,
|
||||
ANIMENTRY_MOVEACTOR
|
||||
/* 0 */ ANIMATION_LINKANIMETION,
|
||||
/* 1 */ ANIMENTRY_COPYALL,
|
||||
/* 2 */ ANIMENTRY_INTERP,
|
||||
/* 3 */ ANIMENTRY_COPYTRUE,
|
||||
/* 4 */ ANIMENTRY_COPYFALSE,
|
||||
/* 5 */ ANIMENTRY_MOVEACTOR
|
||||
} AnimationType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DmaRequest req;
|
||||
/* 0x20 */ OSMesgQueue msgQueue;
|
||||
/* 0x38 */ OSMesg msg;
|
||||
/* 0x38 */ OSMesg msg[1];
|
||||
} AnimEntryLoadFrame; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -166,16 +147,16 @@ typedef struct {
|
|||
|
||||
typedef struct AnimationContext {
|
||||
/* 0x000 */ s16 animationCount;
|
||||
/* 0x004 */ AnimationEntry entries[ANIMATION_ENTRY_MAX];
|
||||
/* 0x004 */ AnimationEntry entries[50];
|
||||
} AnimationContext; // size = 0xC84
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ AnimationHeaderCommon common;
|
||||
/* 0x4 */ union {
|
||||
void* segmentVoid;
|
||||
struct PlayerAnimationFrame* segment;
|
||||
struct PlayerAnimationFrame* linkAnimSegment;
|
||||
};
|
||||
} LinkAnimationHeader; // size = 0x8
|
||||
} PlayerAnimationHeader; // size = 0x8
|
||||
|
||||
typedef struct SkelAnime {
|
||||
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton
|
||||
|
|
@ -183,7 +164,7 @@ typedef struct SkelAnime {
|
|||
/* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton
|
||||
/* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1.
|
||||
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb.
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or PlayerAnimationHeader.
|
||||
/* 0x0C */ f32 startFrame; // In mode 4, start of partial loop.
|
||||
/* 0x10 */ f32 endFrame; // In mode 2, Update returns true when curFrame is equal to this. In mode 4, end of partial loop.
|
||||
/* 0x14 */ f32 animLength; // Total number of frames in the current animation's file.
|
||||
|
|
@ -195,10 +176,10 @@ typedef struct SkelAnime {
|
|||
/* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph
|
||||
/* 0x30 */ union {
|
||||
s32 (*normal)(struct SkelAnime*);// Can be Loop, Partial loop, Play once, Morph, or Tapered morph
|
||||
s32 (*link)(struct PlayState*, struct SkelAnime*); // Loop, Play once, and Morph
|
||||
s32 (*player)(struct PlayState*, struct SkelAnime*); // Loop, Play once, and Morph
|
||||
} update;
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Player's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace.
|
||||
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation.
|
||||
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation.
|
||||
|
|
@ -228,8 +209,6 @@ typedef void (*TransformLimbDraw)(struct PlayState* play, s32 limbIndex, struct
|
|||
|
||||
typedef void (*AnimationEntryCallback)(struct PlayState*, AnimationEntryData*);
|
||||
|
||||
extern u32 link_animetion_segment;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeader* animation;
|
||||
/* 0x04 */ f32 playSpeed;
|
||||
|
|
@ -324,4 +303,68 @@ typedef s32 (*OverrideKeyframeDrawScaled)(struct PlayState* play, SkeletonInfo*
|
|||
typedef void (*PostKeyframeDrawScaled)(struct PlayState* play, SkeletonInfo* skeleton, s32 limbIndex, Gfx** dList,
|
||||
u8* flags, struct Actor* actor, Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
|
||||
void SkelAnime_DrawLod(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawFlexLod(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, struct Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor);
|
||||
void SkelAnime_DrawFlexOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor);
|
||||
void SkelAnime_DrawTransformFlexOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, struct Actor* actor);
|
||||
s16 Animation_GetLastFrame(void* animation);
|
||||
Gfx* SkelAnime_Draw(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, struct Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlex(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, struct Actor* actor, Gfx* gfx);
|
||||
|
||||
void AnimationContext_Reset(AnimationContext* animationCtx);
|
||||
void AnimationContext_SetNextQueue(struct PlayState* play);
|
||||
void AnimationContext_DisableQueue(struct PlayState* play);
|
||||
void AnimationContext_SetLoadFrame(struct PlayState* play, PlayerAnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
void AnimationContext_SetCopyAll(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src);
|
||||
void AnimationContext_SetInterp(struct PlayState* play, s32 vecCount, Vec3s* base, Vec3s* mod, f32 weight);
|
||||
void AnimationContext_SetCopyTrue(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetCopyFalse(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetMoveActor(struct PlayState* play, struct Actor* actor, SkelAnime* skelAnime, f32 arg3);
|
||||
|
||||
void AnimationContext_Update(struct PlayState* play, AnimationContext* animationCtx);
|
||||
void SkelAnime_InitPlayer(struct PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, PlayerAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount);
|
||||
void PlayerAnimation_SetUpdateFunction(SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_Update(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void Animation_SetMorph(struct PlayState* play, SkelAnime* skelAnime, f32 morphFrames);
|
||||
void PlayerAnimation_Change(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void PlayerAnimation_PlayOnce(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation);
|
||||
void PlayerAnimation_PlayOnceSetSpeed(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed);
|
||||
void PlayerAnimation_PlayLoop(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation);
|
||||
void PlayerAnimation_PlayLoopSetSpeed(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed);
|
||||
void PlayerAnimation_CopyJointToMorph(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void PlayerAnimation_CopyMorphToJoint(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void PlayerAnimation_LoadToMorph(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame);
|
||||
void PlayerAnimation_LoadToJoint(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame);
|
||||
void PlayerAnimation_InterpJointMorph(struct PlayState* play, SkelAnime* skelAnime, f32 weight);
|
||||
void PlayerAnimation_BlendToJoint(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1, PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void PlayerAnimation_BlendToMorph(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1, PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void PlayerAnimation_EndLoop(SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
|
||||
void SkelAnime_Init(struct PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitFlex(struct PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitSkin(struct GameState* gameState, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation);
|
||||
|
||||
s32 SkelAnime_Update(SkelAnime* skelAnime);
|
||||
void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames, s8 taper);
|
||||
void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_EndLoop(SkelAnime* skelAnime);
|
||||
void Animation_Reverse(SkelAnime* skelAnime);
|
||||
void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle);
|
||||
s32 Animation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Free(SkelAnime* skelAnime, struct PlayState* play);
|
||||
|
||||
// ZAPD compatibility typedefs
|
||||
// TODO: Remove when ZAPD adds support for them
|
||||
typedef PlayerAnimationHeader LinkAnimationHeader;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef Z64_ANIMATION_LEGACY_H
|
||||
#define Z64_ANIMATION_LEGACY_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64math.h"
|
||||
|
||||
typedef struct LegacyLimb {
|
||||
/* 0x00 */ Gfx* dList;
|
||||
/* 0x04 */ Vec3f trans;
|
||||
/* 0x10 */ Vec3s rot;
|
||||
/* 0x18 */ struct LegacyLimb* sibling;
|
||||
/* 0x1C */ struct LegacyLimb* child;
|
||||
} LegacyLimb; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x10 */ s16 z;
|
||||
} LegacyJointKey; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 frameCount;
|
||||
/* 0x2 */ s16 limbCount;
|
||||
/* 0x4 */ s16* frameData;
|
||||
/* 0x8 */ LegacyJointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable);
|
||||
s16 Animation_GetLimbCountLegacy(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLengthLegacy(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLastFrameLegacy(LegacyAnimationHeader* animation);
|
||||
|
||||
#endif
|
||||
|
|
@ -399,15 +399,15 @@ typedef struct PlayerAgeProperties {
|
|||
/* 0x94 */ u16 surfaceSfxIdOffset;
|
||||
/* 0x98 */ f32 unk_98;
|
||||
/* 0x9C */ f32 unk_9C;
|
||||
/* 0xA0 */ LinkAnimationHeader* unk_A0;
|
||||
/* 0xA4 */ LinkAnimationHeader* unk_A4;
|
||||
/* 0xA8 */ LinkAnimationHeader* unk_A8;
|
||||
/* 0xAC */ LinkAnimationHeader* unk_AC;
|
||||
/* 0xB0 */ LinkAnimationHeader* unk_B0;
|
||||
/* 0xB4 */ LinkAnimationHeader* unk_B4[4];
|
||||
/* 0xC4 */ LinkAnimationHeader* unk_C4[2];
|
||||
/* 0xCC */ LinkAnimationHeader* unk_CC[2];
|
||||
/* 0xD4 */ LinkAnimationHeader* unk_D4[2];
|
||||
/* 0xA0 */ PlayerAnimationHeader* unk_A0;
|
||||
/* 0xA4 */ PlayerAnimationHeader* unk_A4;
|
||||
/* 0xA8 */ PlayerAnimationHeader* unk_A8;
|
||||
/* 0xAC */ PlayerAnimationHeader* unk_AC;
|
||||
/* 0xB0 */ PlayerAnimationHeader* unk_B0;
|
||||
/* 0xB4 */ PlayerAnimationHeader* unk_B4[4];
|
||||
/* 0xC4 */ PlayerAnimationHeader* unk_C4[2];
|
||||
/* 0xCC */ PlayerAnimationHeader* unk_CC[2];
|
||||
/* 0xD4 */ PlayerAnimationHeader* unk_D4[2];
|
||||
} PlayerAgeProperties; // size = 0xDC
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
|
|
@ -3,17 +3,24 @@
|
|||
|
||||
#define ANIM_INTERP 1
|
||||
|
||||
s32 LinkAnimation_Loop(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Once(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_Loop(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_Once(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopFull(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopPartial(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Once(SkelAnime* skelAnime);
|
||||
void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle);
|
||||
void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed,
|
||||
f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void PlayerAnimation_Change(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed,
|
||||
f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src);
|
||||
|
||||
void AnimationContext_LoadFrame(struct PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyAll(struct PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_Interp(struct PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyTrue(struct PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyFalse(struct PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_MoveActor(struct PlayState* play, AnimationEntryData* data);
|
||||
|
||||
static AnimationEntryCallback sAnimationLoadDone[] = {
|
||||
AnimationContext_LoadFrame, AnimationContext_CopyAll, AnimationContext_Interp,
|
||||
AnimationContext_CopyTrue, AnimationContext_CopyFalse, AnimationContext_MoveActor,
|
||||
|
|
@ -44,7 +51,7 @@ void SkelAnime_DrawLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3
|
|||
pos.z = limb->jointPos.z;
|
||||
|
||||
dList = limb->dLists[lod];
|
||||
if ((overrideLimbDraw == NULL) || (overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, actor) == 0)) {
|
||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, actor)) {
|
||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||
if (dList != NULL) {
|
||||
Gfx* polyTemp = POLY_OPA_DISP;
|
||||
|
|
@ -876,7 +883,7 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32
|
|||
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) {
|
||||
LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation);
|
||||
s16 limbCount = animHeader->limbCount;
|
||||
JointKey* key = Lib_SegmentedToVirtual(animHeader->jointKey);
|
||||
LegacyJointKey* key = Lib_SegmentedToVirtual(animHeader->jointKey);
|
||||
s16* frameData = Lib_SegmentedToVirtual(animHeader->frameData);
|
||||
s16* staticData = &frameData[0];
|
||||
s16* dynamicData = &frameData[frame];
|
||||
|
|
@ -901,7 +908,7 @@ s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Ve
|
|||
/**
|
||||
* Used by legacy animation format
|
||||
*/
|
||||
s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation) {
|
||||
s16 Animation_GetLimbCountLegacy(LegacyAnimationHeader* animation) {
|
||||
LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation);
|
||||
|
||||
return animHeader->limbCount;
|
||||
|
|
@ -910,7 +917,7 @@ s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation) {
|
|||
/**
|
||||
* Used by legacy animation format
|
||||
*/
|
||||
s16 Animation_GetLength2(LegacyAnimationHeader* animation) {
|
||||
s16 Animation_GetLengthLegacy(LegacyAnimationHeader* animation) {
|
||||
LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation);
|
||||
|
||||
return animHeader->frameCount;
|
||||
|
|
@ -919,7 +926,7 @@ s16 Animation_GetLength2(LegacyAnimationHeader* animation) {
|
|||
/**
|
||||
* Used by legacy animation format
|
||||
*/
|
||||
s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation) {
|
||||
s16 Animation_GetLastFrameLegacy(LegacyAnimationHeader* animation) {
|
||||
AnimationHeaderCommon* animHeader = Lib_SegmentedToVirtual(animation);
|
||||
|
||||
return animHeader->frameCount - 1;
|
||||
|
|
@ -979,7 +986,7 @@ AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, Animat
|
|||
AnimationEntry* entry;
|
||||
s16 index = animationCtx->animationCount;
|
||||
|
||||
if (index >= ANIMATION_ENTRY_MAX) {
|
||||
if (index >= ARRAY_COUNT(animationCtx->entries)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -989,21 +996,25 @@ AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, Animat
|
|||
return entry;
|
||||
}
|
||||
|
||||
#define LINK_ANIMETION_OFFSET(addr, offset) \
|
||||
(SEGMENT_ROM_START(link_animetion) + ((uintptr_t)addr & 0xFFFFFF) + ((u32)offset))
|
||||
|
||||
/**
|
||||
* Requests loading frame data from the Link animation into frameTable
|
||||
* Requests loading frame data from the Player animation into frameTable
|
||||
*/
|
||||
void AnimationContext_SetLoadFrame(PlayState* play, LinkAnimationHeader* animation, s32 frame, s32 limbCount,
|
||||
void AnimationContext_SetLoadFrame(PlayState* play, PlayerAnimationHeader* animation, s32 frame, s32 limbCount,
|
||||
Vec3s* frameTable) {
|
||||
AnimationEntry* entry = AnimationContext_AddEntry(&play->animationCtx, ANIMATION_LINKANIMETION);
|
||||
|
||||
if (entry != NULL) {
|
||||
LinkAnimationHeader* linkAnimHeader = Lib_SegmentedToVirtual(animation);
|
||||
uintptr_t ram = frameTable;
|
||||
PlayerAnimationHeader* playerAnimHeader = Lib_SegmentedToVirtual(animation);
|
||||
void* ram = (void*)frameTable;
|
||||
|
||||
osCreateMesgQueue(&entry->data.load.msgQueue, &entry->data.load.msg, 1);
|
||||
DmaMgr_SendRequestImpl(&entry->data.load.req, ram,
|
||||
LINK_ANIMETION_OFFSET(linkAnimHeader->segment, (sizeof(Vec3s) * limbCount + 2) * frame),
|
||||
sizeof(Vec3s) * limbCount + 2, 0, &entry->data.load.msgQueue, NULL);
|
||||
osCreateMesgQueue(&entry->data.load.msgQueue, entry->data.load.msg, ARRAY_COUNT(entry->data.load.msg));
|
||||
DmaMgr_SendRequestImpl(
|
||||
&entry->data.load.req, ram,
|
||||
LINK_ANIMETION_OFFSET(playerAnimHeader->linkAnimSegment, (sizeof(Vec3s) * limbCount + sizeof(s16)) * frame),
|
||||
sizeof(Vec3s) * limbCount + sizeof(s16), 0, &entry->data.load.msgQueue, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1080,7 +1091,7 @@ void AnimationContext_SetMoveActor(PlayState* play, Actor* actor, SkelAnime* ske
|
|||
}
|
||||
|
||||
/**
|
||||
* Receives the request for Link's animation frame data
|
||||
* Receives the request for Player's animation frame data
|
||||
*/
|
||||
void AnimationContext_LoadFrame(PlayState* play, AnimationEntryData* data) {
|
||||
AnimEntryLoadFrame* entry = &data->load;
|
||||
|
|
@ -1185,12 +1196,12 @@ void AnimationContext_Update(PlayState* play, AnimationContext* animationCtx) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Initializes a skeleton to be used with Link animations to a looping animation, dynamically allocating the frame
|
||||
* Initializes a skeleton to be used with Player animations to a looping animation, dynamically allocating the frame
|
||||
* tables if not given.
|
||||
*/
|
||||
void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
|
||||
LinkAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer,
|
||||
s32 limbBufCount) {
|
||||
void SkelAnime_InitPlayer(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
|
||||
PlayerAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer,
|
||||
s32 limbBufCount) {
|
||||
FlexSkeletonHeader* skeletonHeader;
|
||||
s32 headerJointCount;
|
||||
s32 limbCount;
|
||||
|
|
@ -1226,52 +1237,52 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade
|
|||
skelAnime->morphTable = (void*)ALIGN16((uintptr_t)morphTableBuffer);
|
||||
}
|
||||
|
||||
LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f);
|
||||
PlayerAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the update function of a SkelAnime that uses Link animations based on its mode
|
||||
* Sets the update function of a SkelAnime that uses Player animations based on its mode
|
||||
*/
|
||||
void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime) {
|
||||
void PlayerAnimation_SetUpdateFunction(SkelAnime* skelAnime) {
|
||||
if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) {
|
||||
skelAnime->update.link = LinkAnimation_Loop;
|
||||
skelAnime->update.player = PlayerAnimation_Loop;
|
||||
} else {
|
||||
skelAnime->update.link = LinkAnimation_Once;
|
||||
skelAnime->update.player = PlayerAnimation_Once;
|
||||
}
|
||||
skelAnime->morphWeight = 0.0f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Advances the current Link animation and updates all frame tables. If the animation plays once, returns true when it
|
||||
* Advances the current Player animation and updates all frame tables. If the animation plays once, returns true when it
|
||||
* finishes.
|
||||
*/
|
||||
s32 LinkAnimation_Update(PlayState* play, SkelAnime* skelAnime) {
|
||||
return skelAnime->update.link(play, skelAnime);
|
||||
s32 PlayerAnimation_Update(PlayState* play, SkelAnime* skelAnime) {
|
||||
return skelAnime->update.player(play, skelAnime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests an interpolation between the pose in jointTable to the one in morphTable, advancing the morph but not the
|
||||
* animation frame
|
||||
*/
|
||||
s32 LinkAnimation_Morph(PlayState* play, SkelAnime* skelAnime) {
|
||||
s32 PlayerAnimation_Morph(PlayState* play, SkelAnime* skelAnime) {
|
||||
f32 prevMorphWeight = skelAnime->morphWeight;
|
||||
f32 updateRate = (s32)play->state.framerateDivisor * 0.5f;
|
||||
|
||||
skelAnime->morphWeight -= skelAnime->morphRate * updateRate;
|
||||
if (skelAnime->morphWeight <= 0.0f) {
|
||||
LinkAnimation_SetUpdateFunction(skelAnime);
|
||||
PlayerAnimation_SetUpdateFunction(skelAnime);
|
||||
}
|
||||
|
||||
AnimationContext_SetInterp(play, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable,
|
||||
1.0f - (skelAnime->morphWeight / prevMorphWeight));
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests a load of the next frame of a Link animation, advances the morph, and requests an interpolation between
|
||||
* Requests a load of the next frame of a Player animation, advances the morph, and requests an interpolation between
|
||||
* jointTable and morphTable
|
||||
*/
|
||||
void LinkAnimation_AnimateFrame(PlayState* play, SkelAnime* skelAnime) {
|
||||
void PlayerAnimation_AnimateFrame(PlayState* play, SkelAnime* skelAnime) {
|
||||
AnimationContext_SetLoadFrame(play, skelAnime->animation, skelAnime->curFrame, skelAnime->limbCount,
|
||||
skelAnime->jointTable);
|
||||
if (skelAnime->morphWeight != 0) {
|
||||
|
|
@ -1287,9 +1298,9 @@ void LinkAnimation_AnimateFrame(PlayState* play, SkelAnime* skelAnime) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Advances a Link animation that loops over its full length
|
||||
* Advances a Player animation that loops over its full length
|
||||
*/
|
||||
s32 LinkAnimation_Loop(PlayState* play, SkelAnime* skelAnime) {
|
||||
s32 PlayerAnimation_Loop(PlayState* play, SkelAnime* skelAnime) {
|
||||
f32 updateRate = (s32)play->state.framerateDivisor * 0.5f;
|
||||
|
||||
skelAnime->curFrame += skelAnime->playSpeed * updateRate;
|
||||
|
|
@ -1298,19 +1309,19 @@ s32 LinkAnimation_Loop(PlayState* play, SkelAnime* skelAnime) {
|
|||
} else if (skelAnime->animLength <= skelAnime->curFrame) {
|
||||
skelAnime->curFrame -= skelAnime->animLength;
|
||||
}
|
||||
LinkAnimation_AnimateFrame(play, skelAnime);
|
||||
return 0;
|
||||
PlayerAnimation_AnimateFrame(play, skelAnime);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Advances a Link animation that stops at endFrame and returns true when it is reached.
|
||||
* Advances a Player animation that stops at endFrame and returns true when it is reached.
|
||||
*/
|
||||
s32 LinkAnimation_Once(PlayState* play, SkelAnime* skelAnime) {
|
||||
s32 PlayerAnimation_Once(PlayState* play, SkelAnime* skelAnime) {
|
||||
f32 updateRate = (s32)play->state.framerateDivisor * 0.5f;
|
||||
|
||||
if (skelAnime->curFrame == skelAnime->endFrame) {
|
||||
LinkAnimation_AnimateFrame(play, skelAnime);
|
||||
return 1;
|
||||
PlayerAnimation_AnimateFrame(play, skelAnime);
|
||||
return true;
|
||||
}
|
||||
|
||||
skelAnime->curFrame += skelAnime->playSpeed * updateRate;
|
||||
|
|
@ -1324,8 +1335,8 @@ s32 LinkAnimation_Once(PlayState* play, SkelAnime* skelAnime) {
|
|||
skelAnime->curFrame -= skelAnime->animLength;
|
||||
}
|
||||
}
|
||||
LinkAnimation_AnimateFrame(play, skelAnime);
|
||||
return 0;
|
||||
PlayerAnimation_AnimateFrame(play, skelAnime);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1337,28 +1348,28 @@ void Animation_SetMorph(PlayState* play, SkelAnime* skelAnime, f32 morphFrames)
|
|||
}
|
||||
|
||||
/**
|
||||
* General way to set a new Link animation, allowing choice of playback speed, start frame, end frame, play mode, and
|
||||
* General way to set a new Player animation, allowing choice of playback speed, start frame, end frame, play mode, and
|
||||
* number of transition frames. Positive morph frames morph from the current pose to the start pose of the new
|
||||
* animation, then start the new animation. Negative morph frames start the new animation immediately, modified by the
|
||||
* pose immediately before the animation change.
|
||||
*/
|
||||
void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed,
|
||||
f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames) {
|
||||
void PlayerAnimation_Change(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed,
|
||||
f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames) {
|
||||
skelAnime->mode = mode;
|
||||
if ((morphFrames != 0.0f) && ((animation != skelAnime->animation) || (startFrame != skelAnime->curFrame))) {
|
||||
if (morphFrames < 0) {
|
||||
LinkAnimation_SetUpdateFunction(skelAnime);
|
||||
PlayerAnimation_SetUpdateFunction(skelAnime);
|
||||
SkelAnime_CopyFrameTable(skelAnime, skelAnime->morphTable, skelAnime->jointTable);
|
||||
morphFrames = -morphFrames;
|
||||
} else {
|
||||
skelAnime->update.link = LinkAnimation_Morph;
|
||||
skelAnime->update.player = PlayerAnimation_Morph;
|
||||
AnimationContext_SetLoadFrame(play, animation, (s32)startFrame, skelAnime->limbCount,
|
||||
skelAnime->morphTable);
|
||||
}
|
||||
skelAnime->morphWeight = 1.0f;
|
||||
skelAnime->morphRate = 1.0f / morphFrames;
|
||||
} else {
|
||||
LinkAnimation_SetUpdateFunction(skelAnime);
|
||||
PlayerAnimation_SetUpdateFunction(skelAnime);
|
||||
AnimationContext_SetLoadFrame(play, animation, (s32)startFrame, skelAnime->limbCount, skelAnime->jointTable);
|
||||
skelAnime->morphWeight = 0.0f;
|
||||
}
|
||||
|
|
@ -1373,79 +1384,80 @@ void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHe
|
|||
}
|
||||
|
||||
/**
|
||||
* Immediately changes to a Link animation that plays once at the default speed.
|
||||
* Immediately changes to a Player animation that plays once at the default speed.
|
||||
*/
|
||||
void LinkAnimation_PlayOnce(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation) {
|
||||
LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
void PlayerAnimation_PlayOnce(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation) {
|
||||
PlayerAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Immediately changes to a Link animation that plays once at the specified speed.
|
||||
* Immediately changes to a Player animation that plays once at the specified speed.
|
||||
*/
|
||||
void LinkAnimation_PlayOnceSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation,
|
||||
f32 playSpeed) {
|
||||
LinkAnimation_Change(play, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
void PlayerAnimation_PlayOnceSetSpeed(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation,
|
||||
f32 playSpeed) {
|
||||
PlayerAnimation_Change(play, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Immediately changes to a Link animation that loops at the default speed.
|
||||
* Immediately changes to a Player animation that loops at the default speed.
|
||||
*/
|
||||
void LinkAnimation_PlayLoop(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation) {
|
||||
LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_LOOP, 0.0f);
|
||||
void PlayerAnimation_PlayLoop(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation) {
|
||||
PlayerAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_LOOP, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Immediately changes to a Link animation that loops at the specified speed.
|
||||
* Immediately changes to a Player animation that loops at the specified speed.
|
||||
*/
|
||||
void LinkAnimation_PlayLoopSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation,
|
||||
f32 playSpeed) {
|
||||
LinkAnimation_Change(play, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_LOOP, 0.0f);
|
||||
void PlayerAnimation_PlayLoopSetSpeed(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation,
|
||||
f32 playSpeed) {
|
||||
PlayerAnimation_Change(play, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common),
|
||||
ANIMMODE_LOOP, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests copying jointTable to morphTable
|
||||
*/
|
||||
void LinkAnimation_CopyJointToMorph(PlayState* play, SkelAnime* skelAnime) {
|
||||
void PlayerAnimation_CopyJointToMorph(PlayState* play, SkelAnime* skelAnime) {
|
||||
AnimationContext_SetCopyAll(play, skelAnime->limbCount, skelAnime->morphTable, skelAnime->jointTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests copying morphTable to jointTable
|
||||
*/
|
||||
void LinkAnimation_CopyMorphToJoint(PlayState* play, SkelAnime* skelAnime) {
|
||||
void PlayerAnimation_CopyMorphToJoint(PlayState* play, SkelAnime* skelAnime) {
|
||||
AnimationContext_SetCopyAll(play, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests loading frame data from the Link animation into morphTable
|
||||
* Requests loading frame data from the Player animation into morphTable
|
||||
*/
|
||||
void LinkAnimation_LoadToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame) {
|
||||
void PlayerAnimation_LoadToMorph(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame) {
|
||||
AnimationContext_SetLoadFrame(play, animation, (s32)frame, skelAnime->limbCount, skelAnime->morphTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests loading frame data from the Link animation into jointTable
|
||||
* Requests loading frame data from the Player animation into jointTable
|
||||
*/
|
||||
void LinkAnimation_LoadToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame) {
|
||||
void PlayerAnimation_LoadToJoint(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame) {
|
||||
AnimationContext_SetLoadFrame(play, animation, (s32)frame, skelAnime->limbCount, skelAnime->jointTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests interpolating between jointTable and morphTable, placing the result in jointTable
|
||||
*/
|
||||
void LinkAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 weight) {
|
||||
void PlayerAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 weight) {
|
||||
AnimationContext_SetInterp(play, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable, weight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests loading frame data from the Link animations and blending them, placing the result in jointTable
|
||||
* Requests loading frame data from the Player animations and blending them, placing the result in jointTable
|
||||
*/
|
||||
void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1,
|
||||
LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer) {
|
||||
void PlayerAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1,
|
||||
PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight,
|
||||
void* blendTableBuffer) {
|
||||
void* alignedBlendTable;
|
||||
|
||||
AnimationContext_SetLoadFrame(play, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->jointTable);
|
||||
|
|
@ -1457,10 +1469,11 @@ void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnima
|
|||
}
|
||||
|
||||
/**
|
||||
* Requests loading frame data from the Link animations and blending them, placing the result in morphTable
|
||||
* Requests loading frame data from the Player animations and blending them, placing the result in morphTable
|
||||
*/
|
||||
void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1,
|
||||
LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer) {
|
||||
void PlayerAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1,
|
||||
PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight,
|
||||
void* blendTableBuffer) {
|
||||
void* alignedBlendTable;
|
||||
|
||||
AnimationContext_SetLoadFrame(play, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->morphTable);
|
||||
|
|
@ -1474,9 +1487,9 @@ void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnima
|
|||
/**
|
||||
* Changes a looping animation to one that stops at the end.
|
||||
*/
|
||||
void LinkAnimation_EndLoop(SkelAnime* skelAnime) {
|
||||
void PlayerAnimation_EndLoop(SkelAnime* skelAnime) {
|
||||
skelAnime->mode = ANIMMODE_ONCE;
|
||||
LinkAnimation_SetUpdateFunction(skelAnime);
|
||||
PlayerAnimation_SetUpdateFunction(skelAnime);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1507,9 +1520,9 @@ s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 frame, f32 updateRate) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks if the current Link animation has reached the specified frame
|
||||
* Checks if the current Player animation has reached the specified frame
|
||||
*/
|
||||
s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame) {
|
||||
s32 PlayerAnimation_OnFrame(SkelAnime* skelAnime, f32 frame) {
|
||||
f32 updateRate = gFramerateDivisorHalf;
|
||||
|
||||
return Animation_OnFrameImpl(skelAnime, frame, updateRate);
|
||||
|
|
@ -1620,7 +1633,7 @@ s32 SkelAnime_Morph(SkelAnime* skelAnime) {
|
|||
}
|
||||
SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable,
|
||||
skelAnime->morphTable, 1.0f - (skelAnime->morphWeight / prevMorphWeight));
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1654,7 +1667,7 @@ s32 SkelAnime_MorphTaper(SkelAnime* skelAnime) {
|
|||
}
|
||||
SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable,
|
||||
skelAnime->morphTable, 1.0f - curWeight);
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1701,7 +1714,7 @@ s32 SkelAnime_LoopFull(SkelAnime* skelAnime) {
|
|||
}
|
||||
|
||||
SkelAnime_AnimateFrame(skelAnime);
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1718,7 +1731,7 @@ s32 SkelAnime_LoopPartial(SkelAnime* skelAnime) {
|
|||
}
|
||||
|
||||
SkelAnime_AnimateFrame(skelAnime);
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1730,7 +1743,7 @@ s32 SkelAnime_Once(SkelAnime* skelAnime) {
|
|||
if (skelAnime->curFrame == skelAnime->endFrame) {
|
||||
SkelAnime_GetFrameData(skelAnime->animation, skelAnime->curFrame, skelAnime->limbCount, skelAnime->jointTable);
|
||||
SkelAnime_AnimateFrame(skelAnime);
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
skelAnime->curFrame += skelAnime->playSpeed * updateRate;
|
||||
|
|
@ -1746,7 +1759,7 @@ s32 SkelAnime_Once(SkelAnime* skelAnime) {
|
|||
}
|
||||
}
|
||||
SkelAnime_AnimateFrame(skelAnime);
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ void EnRz_ChangeAnim(PlayState* play, EnRz* this, s16 animIndex, u8 animMode, f3
|
|||
&gRosaSistersStandingAnim, &gRosaSistersStandingAnim, &gRosaSistersWalkingAnim, &gRosaSistersSittingAnim,
|
||||
&gRosaSistersApplaudingAnim, &gRosaSistersOnKneesAnim, &gRosaSistersDancingAnim,
|
||||
};
|
||||
static LinkAnimationHeader* sLinkAnimations[] = {
|
||||
static PlayerAnimationHeader* sPlayerAnimations[] = {
|
||||
&gPlayerAnim_link_normal_wait_free,
|
||||
&gPlayerAnim_alink_dance_loop,
|
||||
};
|
||||
|
|
@ -219,13 +219,15 @@ void EnRz_ChangeAnim(PlayState* play, EnRz* this, s16 animIndex, u8 animMode, f3
|
|||
if ((animIndex >= EN_RZ_ANIM_THINKING) && (animIndex < EN_RZ_ANIM_MAX) &&
|
||||
((animIndex != this->animIndex) || (animMode != ANIMMODE_LOOP))) {
|
||||
if (animIndex >= ARRAY_COUNT(sJudoAnimations)) {
|
||||
endFrame = Animation_GetLastFrame(sLinkAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)]);
|
||||
endFrame = Animation_GetLastFrame(sPlayerAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)]);
|
||||
if (animMode == ANIMMODE_LOOP) {
|
||||
LinkAnimation_Change(play, &this->skelAnime, sLinkAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)],
|
||||
2.0f / 3.0f, 0.0f, endFrame, ANIMMODE_LOOP, morphFrames);
|
||||
PlayerAnimation_Change(play, &this->skelAnime,
|
||||
sPlayerAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)], 2.0f / 3.0f, 0.0f,
|
||||
endFrame, ANIMMODE_LOOP, morphFrames);
|
||||
} else {
|
||||
LinkAnimation_Change(play, &this->skelAnime, sLinkAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)],
|
||||
2.0f / 3.0f, 0.0f, endFrame, ANIMMODE_LOOP, morphFrames);
|
||||
PlayerAnimation_Change(play, &this->skelAnime,
|
||||
sPlayerAnimations[animIndex - ARRAY_COUNT(sJudoAnimations)], 2.0f / 3.0f, 0.0f,
|
||||
endFrame, ANIMMODE_LOOP, morphFrames);
|
||||
}
|
||||
} else {
|
||||
Animation_Change(&this->skelAnime, animationPtr[animIndex], 1.0f, 0.0f,
|
||||
|
|
@ -325,7 +327,7 @@ s32 EnRz_UpdateSkelAnime(EnRz* this, PlayState* play) {
|
|||
if (this->animIndex < EN_RZ_ANIM_LINK_NORMAL_WAIT_FREE) {
|
||||
return SkelAnime_Update(&this->skelAnime);
|
||||
} else {
|
||||
return LinkAnimation_Update(play, &this->skelAnime);
|
||||
return PlayerAnimation_Update(play, &this->skelAnime);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ s32 func_80A3E898(EnTest3* this, PlayState* play) {
|
|||
Message_ContinueTextbox(play, textId);
|
||||
}
|
||||
if (textId == 0x296B) {
|
||||
LinkAnimation_PlayOnceSetSpeed(play, &this->player.skelAnime, &gPlayerAnim_al_yareyare, 2.0f / 3.0f);
|
||||
PlayerAnimation_PlayOnceSetSpeed(play, &this->player.skelAnime, &gPlayerAnim_al_yareyare, 2.0f / 3.0f);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,10 @@ static ColliderCylinderInit sCylinderInit = {
|
|||
// assumption: draw uses two different skeleton functions, might be incompatible
|
||||
static AnimationHeader* gYbUnusedAnimations[] = { &object_yb_Anim_000200 };
|
||||
|
||||
static LinkAnimationHeader* gLinkAnimations[] = { &gPlayerAnim_link_normal_wait_free, &gPlayerAnim_alink_dance_loop };
|
||||
static PlayerAnimationHeader* gPlayerAnimations[] = {
|
||||
&gPlayerAnim_link_normal_wait_free,
|
||||
&gPlayerAnim_alink_dance_loop,
|
||||
};
|
||||
|
||||
static Vec3f D_80BFB2E8 = { 0.0f, 0.5f, 0.0f };
|
||||
|
||||
|
|
@ -168,17 +171,17 @@ void EnYb_ActorShadowFunc(Actor* thisx, Lights* mapper, PlayState* play) {
|
|||
|
||||
void EnYb_ChangeAnim(PlayState* play, EnYb* this, s16 animIndex, u8 animMode, f32 morphFrames) {
|
||||
if (animIndex >= 0 && animIndex < 3) {
|
||||
if (animIndex != this->animIndex || animMode != ANIMMODE_LOOP) {
|
||||
if ((animIndex != this->animIndex) || (animMode != ANIMMODE_LOOP)) {
|
||||
if (animIndex > 0) {
|
||||
if (animMode == ANIMMODE_LOOP) {
|
||||
LinkAnimation_Change(play, &this->skelAnime, gLinkAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gLinkAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
morphFrames);
|
||||
PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
morphFrames);
|
||||
} else {
|
||||
// unused case, (only called once with animMode = ANIMMODE_LOOP)
|
||||
LinkAnimation_Change(play, &this->skelAnime, gLinkAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gLinkAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
morphFrames);
|
||||
PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
morphFrames);
|
||||
}
|
||||
} else {
|
||||
// unused case, (only called once with animIndex = 2)
|
||||
|
|
@ -207,7 +210,7 @@ void EnYb_UpdateAnimation(EnYb* this, PlayState* play) {
|
|||
if (this->animIndex <= 0) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
} else {
|
||||
LinkAnimation_Update(play, &this->skelAnime);
|
||||
PlayerAnimation_Update(play, &this->skelAnime);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2537,9 +2537,9 @@
|
|||
0x80134B54:("SkelAnime_DrawFlexLimb",),
|
||||
0x80134DBC:("SkelAnime_DrawFlex",),
|
||||
0x80134FFC:("SkelAnime_GetFrameDataLegacy",),
|
||||
0x801353D4:("Animation_GetLimbCount2",),
|
||||
0x801353F8:("Animation_GetLength2",),
|
||||
0x8013541C:("Animation_GetLastFrame2",),
|
||||
0x801353D4:("Animation_GetLimbCountLegacy",),
|
||||
0x801353F8:("Animation_GetLengthLegacy",),
|
||||
0x8013541C:("Animation_GetLastFrameLegacy",),
|
||||
0x80135448:("SkelAnime_InterpFrameTable",),
|
||||
0x801358C8:("AnimationContext_Reset",),
|
||||
0x801358D4:("AnimationContext_SetNextQueue",),
|
||||
|
|
@ -2558,29 +2558,29 @@
|
|||
0x80135DB8:("AnimationContext_CopyFalse",),
|
||||
0x80135E3C:("AnimationContext_MoveActor",),
|
||||
0x80135EE8:("AnimationContext_Update",),
|
||||
0x80135F88:("SkelAnime_InitLink",),
|
||||
0x801360A8:("LinkAnimation_SetUpdateFunction",),
|
||||
0x801360E0:("LinkAnimation_Update",),
|
||||
0x80136104:("LinkAnimation_Morph",),
|
||||
0x801361BC:("LinkAnimation_AnimateFrame",),
|
||||
0x80136288:("LinkAnimation_Loop",),
|
||||
0x8013631C:("LinkAnimation_Once",),
|
||||
0x80135F88:("SkelAnime_InitPlayer",),
|
||||
0x801360A8:("PlayerAnimation_SetUpdateFunction",),
|
||||
0x801360E0:("PlayerAnimation_Update",),
|
||||
0x80136104:("PlayerAnimation_Morph",),
|
||||
0x801361BC:("PlayerAnimation_AnimateFrame",),
|
||||
0x80136288:("PlayerAnimation_Loop",),
|
||||
0x8013631C:("PlayerAnimation_Once",),
|
||||
0x801363F0:("Animation_SetMorph",),
|
||||
0x80136414:("LinkAnimation_Change",),
|
||||
0x8013658C:("LinkAnimation_PlayOnce",),
|
||||
0x801365EC:("LinkAnimation_PlayOnceSetSpeed",),
|
||||
0x80136650:("LinkAnimation_PlayLoop",),
|
||||
0x801366AC:("LinkAnimation_PlayLoopSetSpeed",),
|
||||
0x8013670C:("LinkAnimation_CopyJointToMorph",),
|
||||
0x8013673C:("LinkAnimation_CopyMorphToJoint",),
|
||||
0x8013676C:("LinkAnimation_LoadToMorph",),
|
||||
0x801367B0:("LinkAnimation_LoadToJoint",),
|
||||
0x801367F4:("LinkAnimation_InterpJointMorph",),
|
||||
0x8013682C:("LinkAnimation_BlendToJoint",),
|
||||
0x801368CC:("LinkAnimation_BlendToMorph",),
|
||||
0x8013696C:("LinkAnimation_EndLoop",),
|
||||
0x80136414:("PlayerAnimation_Change",),
|
||||
0x8013658C:("PlayerAnimation_PlayOnce",),
|
||||
0x801365EC:("PlayerAnimation_PlayOnceSetSpeed",),
|
||||
0x80136650:("PlayerAnimation_PlayLoop",),
|
||||
0x801366AC:("PlayerAnimation_PlayLoopSetSpeed",),
|
||||
0x8013670C:("PlayerAnimation_CopyJointToMorph",),
|
||||
0x8013673C:("PlayerAnimation_CopyMorphToJoint",),
|
||||
0x8013676C:("PlayerAnimation_LoadToMorph",),
|
||||
0x801367B0:("PlayerAnimation_LoadToJoint",),
|
||||
0x801367F4:("PlayerAnimation_InterpJointMorph",),
|
||||
0x8013682C:("PlayerAnimation_BlendToJoint",),
|
||||
0x801368CC:("PlayerAnimation_BlendToMorph",),
|
||||
0x8013696C:("PlayerAnimation_EndLoop",),
|
||||
0x80136990:("Animation_OnFrameImpl",),
|
||||
0x80136A48:("LinkAnimation_OnFrame",),
|
||||
0x80136A48:("PlayerAnimation_OnFrame",),
|
||||
0x80136A7C:("SkelAnime_Init",),
|
||||
0x80136B30:("SkelAnime_InitFlex",),
|
||||
0x80136BEC:("SkelAnime_InitSkin",),
|
||||
|
|
|
|||
|
|
@ -195,72 +195,50 @@ wordReplace = {
|
|||
"func_801A4A28": "Audio_PlayAmbience",
|
||||
"func_801A7328": "AudioSfx_StopByPosAndId",
|
||||
"func_801A75E8": "AudioSfx_StopById",
|
||||
"SkelAnime_LodDrawLimb": "SkelAnime_DrawLimbLod",
|
||||
"SkelAnime_LodDraw": "SkelAnime_DrawLod",
|
||||
"SkelAnime_LodDrawLimbSV": "SkelAnime_DrawFlexLimbLod",
|
||||
"SkelAnime_LodDrawSV": "SkelAnime_DrawFlexLod",
|
||||
# "SkelAnime_DrawLimb": "SkelAnime_DrawLimbOpa", # A different function is called this now
|
||||
# "SkelAnime_Draw": "SkelAnime_DrawOpa", # A different function is called this now
|
||||
"SkelAnime_DrawLimbSV": "SkelAnime_DrawFlexLimbOpa",
|
||||
"SkelAnime_DrawSV": "SkelAnime_DrawFlexOpa",
|
||||
# "SkelAnime_AnimateFrame": "SkelAnime_GetFrameData", # A different function is called this now
|
||||
"SkelAnime_GetTotalFrames": "Animation_GetLength",
|
||||
"SkelAnime_GetFrameCount": "Animation_GetLastFrame",
|
||||
"SkelAnime_Draw2Limb": "SkelAnime_DrawLimb",
|
||||
"SkelAnime_Draw2": "SkelAnime_Draw",
|
||||
"SkelAnime_DrawLimbSV2": "SkelAnime_DrawFlexLimb",
|
||||
"SkelAnime_DrawSV2": "SkelAnime_DrawFlex",
|
||||
"func_80134FFC": "SkelAnime_GetFrameData2",
|
||||
"func_801353D4": "Animation_GetLimbCount2",
|
||||
"SkelAnime_GetTotalFrames2": "Animation_GetLength2",
|
||||
"SkelAnime_GetFrameCount2": "Animation_GetLastFrame2",
|
||||
"SkelAnime_InterpolateVec3s": "SkelAnime_InterpFrameTable",
|
||||
"SkelAnime_AnimationCtxReset": "AnimationContext_Reset",
|
||||
"func_801358D4": "AnimationContext_SetNextQueue",
|
||||
"func_801358F4": "AnimationContext_DisableQueue",
|
||||
"SkelAnime_NextEntry": "AnimationContext_AddEntry",
|
||||
"SkelAnime_LoadLinkAnimetion": "AnimationContext_SetLoadFrame",
|
||||
"SkelAnime_LoadAnimationType1": "AnimationContext_SetCopyAll",
|
||||
"SkelAnime_LoadAnimationType2": "AnimationContext_SetInterp",
|
||||
"SkelAnime_LoadAnimationType3": "AnimationContext_SetCopyTrue",
|
||||
"SkelAnime_LoadAnimationType4": "AnimationContext_SetCopyFalse",
|
||||
"SkelAnime_LoadAnimationType5": "AnimationContext_SetMoveActor",
|
||||
"SkelAnime_LinkAnimetionLoaded": "AnimationContext_LoadFrame",
|
||||
|
||||
"SkelAnime_AnimationType1Loaded": "AnimationContext_CopyAll",
|
||||
"SkelAnime_AnimationType2Loaded": "AnimationContext_CopyInterp",
|
||||
"SkelAnime_AnimationType3Loaded": "AnimationContext_CopyTrue",
|
||||
"SkelAnime_AnimationType4Loaded": "AnimationContext_CopyFalse",
|
||||
"SkelAnime_AnimationType5Loaded": "AnimationContext_MoveActor",
|
||||
"func_80135EE8": "AnimationContext_Update",
|
||||
"SkelAnime_InitLinkAnimetion": "SkelAnime_InitLink",
|
||||
"func_801360A8": "LinkAnimation_SetUpdateFunction",
|
||||
"func_801360E0": "LinkAnimation_Update",
|
||||
"func_80136104": "LinkAnimation_Morph",
|
||||
"func_801361BC": "LinkAnimation_AnimateFrame",
|
||||
"func_80136288": "LinkAnimation_Loop",
|
||||
"func_8013631C": "LinkAnimation_Once",
|
||||
"SkelAnime_InitLink": "SkelAnime_InitPlayer",
|
||||
"LinkAnimation_SetUpdateFunction": "PlayerAnimation_SetUpdateFunction",
|
||||
"LinkAnimation_Update": "PlayerAnimation_Update",
|
||||
"SkelAnime_SetTransition": "Animation_SetMorph",
|
||||
"SkelAnime_ChangeLinkAnim": "LinkAnimation_Change",
|
||||
"SkelAnime_ChangeLinkAnimDefaultStop": "LinkAnimation_PlayOnce",
|
||||
"SkelAnime_ChangeLinkAnimPlaybackStop": "LinkAnimation_PlayOnceSetSpeed",
|
||||
"SkelAnime_ChangeLinkAnimDefaultRepeat": "LinkAnimation_PlayLoop",
|
||||
"SkelAnime_ChangeLinkAnimPlaybackRepeat": "LinkAnimation_PlayLoopSetSpeed",
|
||||
"func_8013670C": "LinkAnimation_CopyJointToMorph",
|
||||
"func_8013673C": "LinkAnimation_CopyMorphToJoint",
|
||||
"func_8013676C": "LinkAnimation_LoadToMorph",
|
||||
"func_801367B0": "LinkAnimation_LoadToJoint",
|
||||
"func_801367F4": "LinkAnimation_InterpJointMorph",
|
||||
"func_8013682C": "LinkAnimation_BlendToJoint",
|
||||
"func_801368CC": "LinkAnimation_BlendToMorph",
|
||||
"SkelAnime_SetModeStop": "LinkAnimation_EndLoop",
|
||||
"func_80136990": "Animation_OnFrameImpl",
|
||||
"func_80136A48": "LinkAnimation_OnFrame",
|
||||
"LinkAnimation_Change": "PlayerAnimation_Change",
|
||||
"LinkAnimation_PlayOnce": "PlayerAnimation_PlayOnce",
|
||||
"LinkAnimation_PlayOnceSetSpeed": "PlayerAnimation_PlayOnceSetSpeed",
|
||||
"LinkAnimation_PlayLoop": "PlayerAnimation_PlayLoop",
|
||||
"LinkAnimation_PlayLoopSetSpeed": "PlayerAnimation_PlayLoopSetSpeed",
|
||||
"LinkAnimation_CopyJointToMorph": "PlayerAnimation_CopyJointToMorph",
|
||||
"LinkAnimation_CopyMorphToJoint": "PlayerAnimation_CopyMorphToJoint",
|
||||
"LinkAnimation_LoadToMorph": "PlayerAnimation_LoadToMorph",
|
||||
"LinkAnimation_LoadToJoint": "PlayerAnimation_LoadToJoint",
|
||||
"LinkAnimation_InterpJointMorph": "PlayerAnimation_InterpJointMorph",
|
||||
"LinkAnimation_BlendToJoint": "PlayerAnimation_BlendToJoint",
|
||||
"LinkAnimation_BlendToMorph": "PlayerAnimation_BlendToMorph",
|
||||
"LinkAnimation_EndLoop": "PlayerAnimation_EndLoop",
|
||||
"LinkAnimation_OnFrame": "PlayerAnimation_OnFrame",
|
||||
|
||||
"SkelAnime_InitSV": "SkelAnime_InitFlex",
|
||||
"func_80136C84": "SkelAnime_SetUpdate",
|
||||
"SkelAnime_FrameUpdateMatrix": "SkelAnime_Update",
|
||||
"func_80136CF4": "SkelAnime_Morph",
|
||||
"func_80136D98": "SkelAnime_MorphTaper",
|
||||
"func_80136F04": "SkelAnime_AnimateFrame",
|
||||
|
||||
"func_8013702C": "SkelAnime_LoopFull",
|
||||
"func_801370B0": "SkelAnime_LoopPartial",
|
||||
"func_8013713C": "SkelAnime_Once",
|
||||
|
|
@ -278,7 +256,7 @@ wordReplace = {
|
|||
"func_801376DC": "SkelAnime_CopyFrameTableFalse",
|
||||
"func_80137748": "SkelAnime_UpdateTranslation",
|
||||
"func_801378B8": "Animation_OnFrame",
|
||||
"SkelAnime_CopyVec3s": "SkelAnime_CopyFrameTable",
|
||||
|
||||
"Actor_SetObjectSegment": "Actor_SetObjectDependency",
|
||||
"func_800B3FC0": "ActorShadow_DrawCircle",
|
||||
"func_800B4024": "ActorShadow_DrawSquare",
|
||||
|
|
@ -625,7 +603,6 @@ wordReplace = {
|
|||
"func_800EE2F4": "Cutscene_IsPlaying",
|
||||
"Cutscene_GetSceneSetupIndex": "Cutscene_GetSceneLayer",
|
||||
"func_801343C0": "SkelAnime_DrawTransformFlexOpa",
|
||||
"func_80134148": "SkelAnime_DrawTransformFlexLimbOpa",
|
||||
"func_80114E90": "Inventory_HasEmptyBottle",
|
||||
"func_80114F2C": "Inventory_HasItemInBottle",
|
||||
"func_80123C90": "Player_SetEquipmentData",
|
||||
|
|
@ -731,6 +708,7 @@ wordReplace = {
|
|||
"globalCtx": "play",
|
||||
"globalCtx2": "play2",
|
||||
"ScheduleResult": "ScheduleOutput",
|
||||
"LinkAnimationHeader": "PlayerAnimationHeader",
|
||||
|
||||
# Struct members
|
||||
"skelAnime.unk03": "skelAnime.taper",
|
||||
|
|
|
|||
|
|
@ -2051,7 +2051,7 @@ asm/non_matchings/code/z_skelanime/SkelAnime_Draw.s,SkelAnime_Draw,0x80134990,0x
|
|||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimbSV2.s,SkelAnime_DrawLimbSV2,0x80134B54,0x9A
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawFlex.s,SkelAnime_DrawFlex,0x80134DBC,0x90
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameData2.s,SkelAnime_GetFrameData2,0x80134FFC,0xF6
|
||||
asm/non_matchings/code/z_skelanime/Animation_GetLimbCount2.s,Animation_GetLimbCount2,0x801353D4,0x9
|
||||
asm/non_matchings/code/z_skelanime/Animation_GetLimbCountLegacy.s,Animation_GetLimbCountLegacy,0x801353D4,0x9
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_GetTotalFrames2.s,SkelAnime_GetTotalFrames2,0x801353F8,0x9
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameCount2.s,SkelAnime_GetFrameCount2,0x8013541C,0xB
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_InterpFrameTable.s,SkelAnime_InterpFrameTable,0x80135448,0x120
|
||||
|
|
@ -2072,29 +2072,29 @@ asm/non_matchings/code/z_skelanime/AnimationContext_CopyTrue.s,AnimationContext_
|
|||
asm/non_matchings/code/z_skelanime/AnimationContext_CopyFalse.s,AnimationContext_CopyFalse,0x80135DB8,0x21
|
||||
asm/non_matchings/code/z_skelanime/AnimationContext_MoveActor.s,AnimationContext_MoveActor,0x80135E3C,0x2B
|
||||
asm/non_matchings/code/z_skelanime/AnimationContext_Update.s,AnimationContext_Update,0x80135EE8,0x28
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_InitLinkAnimetion.s,SkelAnime_InitLinkAnimetion,0x80135F88,0x48
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_SetUpdateFunction.s,LinkAnimation_SetUpdateFunction,0x801360A8,0xE
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_Update.s,LinkAnimation_Update,0x801360E0,0x9
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_Morph.s,LinkAnimation_Morph,0x80136104,0x2E
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_AnimateFrame.s,LinkAnimation_AnimateFrame,0x801361BC,0x33
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_Loop.s,LinkAnimation_Loop,0x80136288,0x25
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_Once.s,LinkAnimation_Once,0x8013631C,0x35
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_InitPlayerAnimetion.s,SkelAnime_InitPlayerAnimetion,0x80135F88,0x48
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_SetUpdateFunction.s,PlayerAnimation_SetUpdateFunction,0x801360A8,0xE
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_Update.s,PlayerAnimation_Update,0x801360E0,0x9
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_Morph.s,PlayerAnimation_Morph,0x80136104,0x2E
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_AnimateFrame.s,PlayerAnimation_AnimateFrame,0x801361BC,0x33
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_Loop.s,PlayerAnimation_Loop,0x80136288,0x25
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_Once.s,PlayerAnimation_Once,0x8013631C,0x35
|
||||
asm/non_matchings/code/z_skelanime/Animation_SetMorph.s,Animation_SetMorph,0x801363F0,0x9
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_Change.s,LinkAnimation_Change,0x80136414,0x5E
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_ChangeDefaultStop.s,LinkAnimation_ChangeDefaultStop,0x8013658C,0x18
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_ChangePlaybackStop.s,LinkAnimation_ChangePlaybackStop,0x801365EC,0x19
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_ChangeDefaultRepeat.s,LinkAnimation_ChangeDefaultRepeat,0x80136650,0x17
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_ChangePlaybackRepeat.s,LinkAnimation_ChangePlaybackRepeat,0x801366AC,0x18
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_CopyJointToMorph.s,LinkAnimation_CopyJointToMorph,0x8013670C,0xC
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_CopyMorphToJoint.s,LinkAnimation_CopyMorphToJoint,0x8013673C,0xC
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_LoadToMorph.s,LinkAnimation_LoadToMorph,0x8013676C,0x11
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_LoadToJoint.s,LinkAnimation_LoadToJoint,0x801367B0,0x11
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_InterpJointMorph.s,LinkAnimation_InterpJointMorph,0x801367F4,0xE
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_BlendToJoint.s,LinkAnimation_BlendToJoint,0x8013682C,0x28
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_BlendToMorph.s,LinkAnimation_BlendToMorph,0x801368CC,0x28
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_EndLoop.s,LinkAnimation_EndLoop,0x8013696C,0x9
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_Change.s,PlayerAnimation_Change,0x80136414,0x5E
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_ChangeDefaultStop.s,PlayerAnimation_ChangeDefaultStop,0x8013658C,0x18
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_ChangePlaybackStop.s,PlayerAnimation_ChangePlaybackStop,0x801365EC,0x19
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_ChangeDefaultRepeat.s,PlayerAnimation_ChangeDefaultRepeat,0x80136650,0x17
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_ChangePlaybackRepeat.s,PlayerAnimation_ChangePlaybackRepeat,0x801366AC,0x18
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_CopyJointToMorph.s,PlayerAnimation_CopyJointToMorph,0x8013670C,0xC
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_CopyMorphToJoint.s,PlayerAnimation_CopyMorphToJoint,0x8013673C,0xC
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_LoadToMorph.s,PlayerAnimation_LoadToMorph,0x8013676C,0x11
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_LoadToJoint.s,PlayerAnimation_LoadToJoint,0x801367B0,0x11
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_InterpJointMorph.s,PlayerAnimation_InterpJointMorph,0x801367F4,0xE
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_BlendToJoint.s,PlayerAnimation_BlendToJoint,0x8013682C,0x28
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_BlendToMorph.s,PlayerAnimation_BlendToMorph,0x801368CC,0x28
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_EndLoop.s,PlayerAnimation_EndLoop,0x8013696C,0x9
|
||||
asm/non_matchings/code/z_skelanime/Animation_OnFrameImpl.s,Animation_OnFrameImpl,0x80136990,0x2E
|
||||
asm/non_matchings/code/z_skelanime/LinkAnimation_OnFrame.s,LinkAnimation_OnFrame,0x80136A48,0xD
|
||||
asm/non_matchings/code/z_skelanime/PlayerAnimation_OnFrame.s,PlayerAnimation_OnFrame,0x80136A48,0xD
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_Init.s,SkelAnime_Init,0x80136A7C,0x2D
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_InitFlex.s,SkelAnime_InitFlex,0x80136B30,0x2F
|
||||
asm/non_matchings/code/z_skelanime/SkelAnime_InitSkin.s,SkelAnime_InitSkin,0x80136BEC,0x26
|
||||
|
|
|
|||
|
Loading…
Reference in New Issue