z_skelanime OK (#34)

* initial skelanime commit

* Skelanime OK

* Forgot to add z64animation.h and skelanime.c
This commit is contained in:
fullgrowngaming 2020-10-11 10:31:06 -07:00 committed by GitHub
parent 96d05d4e7d
commit 1c4a3047de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 2186 additions and 151 deletions

View File

@ -2529,95 +2529,126 @@ void func_80132E9C(void); // func_80132E9C
void func_80132FDC(void); // func_80132FDC
void func_80133000(void); // func_80133000
void func_80133038(void); // func_80133038
void func_801330E0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_801330E0
void func_801332F0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_801332F0
void func_801334A0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); // func_801334A0
void func_80133710(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_80133710
void func_80133948(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_80133948
void func_80133B3C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_80133B3C
void func_80133CDC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_80133CDC
void func_80133F28(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_80133F28
void func_80134148(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); // func_80134148
void func_801343C0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_801343C0
void func_80134600(void); // func_80134600
void func_80134724(void); // func_80134724
void func_80134748(void); // func_80134748
void func_80134774(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_80134774
void func_80134990(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_80134990
void func_80134B54(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); // func_80134B54
void func_80134DBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_80134DBC
void func_80134FFC(void); // func_80134FFC
void func_801353D4(void); // func_801353D4
void func_801353F8(void); // func_801353F8
void func_8013541C(void); // func_8013541C
void func_80135448(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80135448
void func_801358C8(UNK_PTR param_1); // func_801358C8
void func_801358D4(void); // func_801358D4
void func_801358F4(void); // func_801358F4
void func_8013591C(void); // func_8013591C
void func_80135954(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80135954
void func_80135A28(void); // func_80135A28
void func_80135A90(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80135A90
void func_80135B00(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80135B00
void func_80135B70(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80135B70
void func_80135BE0(void); // func_80135BE0
void func_80135C3C(void); // func_80135C3C
void func_80135C6C(void); // func_80135C6C
void func_80135CDC(void); // func_80135CDC
void func_80135D38(void); // func_80135D38
void func_80135DB8(void); // func_80135DB8
void func_80135E3C(void); // func_80135E3C
void func_80135EE8(void); // func_80135EE8
void func_80135F88(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_80135F88
void func_801360A8(void); // func_801360A8
void func_801360E0(void); // func_801360E0
void func_80136104(void); // func_80136104
void func_801361BC(void); // func_801361BC
void func_80136288(void); // func_80136288
void func_8013631C(void); // func_8013631C
void func_801363F0(void); // func_801363F0
void func_80136414(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE1 param_7, UNK_TYPE4 param_8); // func_80136414
void func_8013658C(void); // func_8013658C
void func_801365EC(void); // func_801365EC
void func_80136650(void); // func_80136650
void func_801366AC(void); // func_801366AC
void func_8013670C(void); // func_8013670C
void func_8013673C(void); // func_8013673C
void func_8013676C(void); // func_8013676C
void func_801367B0(void); // func_801367B0
void func_801367F4(void); // func_801367F4
void func_8013682C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_8013682C
void func_801368CC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); // func_801368CC
void func_8013696C(void); // func_8013696C
void func_80136990(void); // func_80136990
void func_80136A48(void); // func_80136A48
void func_80136A7C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_80136A7C
void func_80136B30(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_80136B30
void func_80136BEC(void); // func_80136BEC
void func_80136C84(void); // func_80136C84
void func_80136CD0(void); // func_80136CD0
void func_80136CF4(void); // func_80136CF4
void func_80136D98(void); // func_80136D98
void func_80136F04(void); // func_80136F04
void func_8013702C(void); // func_8013702C
void func_801370B0(void); // func_801370B0
void func_8013713C(void); // func_8013713C
void func_8013722C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8); // func_8013722C
void func_801373E8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7); // func_801373E8
void func_80137430(void); // func_80137430
void func_80137488(void); // func_80137488
void func_801374E4(void); // func_801374E4
void func_80137540(void); // func_80137540
void func_80137594(void); // func_80137594
void func_801375CC(void); // func_801375CC
void func_80137624(void); // func_80137624
void func_80137650(void); // func_80137650
void func_80137674(void); // func_80137674
void func_801376DC(void); // func_801376DC
void func_80137748(void); // func_80137748
void func_801378B8(void); // func_801378B8
void func_801378E0(void); // func_801378E0
void func_8013792C(void); // func_8013792C
void SkelAnime_LodDrawLimb(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex);
void SkelAnime_LodDraw(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex);
void SkelAnime_LodDrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, s32 dListIndex,
RSPMatrix** mtx);
void SkelAnime_LodDrawSV(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, s32 dListIndex);
void SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor);
void SkelAnime_Draw(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor);
void SkelAnime_DrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor,
RSPMatrix** limbMatricies);
void SkelAnime_DrawSV(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor);
void func_80134148(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor,
RSPMatrix** mtx);
void func_801343C0(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor);
void SkelAnime_AnimateFrame(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst);
s16 SkelAnime_GetTotalFrames(GenericAnimationHeader *animationSeg);
s16 SkelAnime_GetFrameCount(GenericAnimationHeader* animationSeg);
Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
Gfx* SkelAnime_DrawLimbSV2(GlobalContext* globalCtx, s32 limbIndex, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, RSPMatrix** mtx,
Gfx* gfx);
Gfx* SkelAnime_DrawSV2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
s32 func_80134FFC(s32 arg0, s32 arg1, Vec3s* dst);
s16 func_801353D4(GenericAnimationHeader* animationSeg);
s16 SkelAnime_GetTotalFrames2(GenericAnimationHeader* animationSeg);
s16 SkelAnime_GetFrameCount2(GenericAnimationHeader* animationSeg);
void SkelAnime_InterpolateVec3s(s32 limbCount, Vec3s* dst, Vec3s* vec2, Vec3s* vec3, f32 unkf);
void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx);
void func_801358D4(GlobalContext *globalCtx);
void func_801358F4(GlobalContext *globalCtx);
AnimationEntry* SkelAnime_NextEntry(AnimationContext* animationCtx, AnimationType type);
void SkelAnime_LoadLinkAnimetion(GlobalContext* globalCtx, LinkAnimetionEntry* linkAnimetionSeg, s32 frame,
s32 limbCount, void* ram);
void SkelAnime_LoadAnimationType1(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src);
void SkelAnime_LoadAnimationType2(GlobalContext* globalCtx, s32 limbCount, Vec3s* arg2, Vec3s* arg3, f32 arg4);
void SkelAnime_LoadAnimationType3(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index);
void SkelAnime_LoadAnimationType4(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index);
void SkelAnime_LoadAnimationType5(GlobalContext* globalCtx, Actor* actor, SkelAnime* skelAnime, f32 arg3);
void SkelAnime_LinkAnimetionLoaded(GlobalContext* globalCtx, AnimationEntryType0* entry);
void SkelAnime_AnimationType1Loaded(GlobalContext* globalCtx, AnimationEntryType1* entry);
void SkelAnime_AnimationType2Loaded(GlobalContext* globalCtx, AnimationEntryType2* entry);
void SkelAnime_AnimationType3Loaded(GlobalContext* globalCtx, AnimationEntryType3* entry);
void SkelAnime_AnimationType4Loaded(GlobalContext* globalCtx, AnimationEntryType4* entry);
void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType5* entry);
void func_80135EE8(GlobalContext* globalCtx, AnimationContext* animationCtx);
void SkelAnime_InitLinkAnimetion(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
LinkAnimetionEntry* linkAnimetionEntrySeg, s32 flags, Vec3s* limbDrawTbl,
Vec3s* transitionDrawTbl, s32 limbBufCount);
void func_801360A8(SkelAnime* skelAnime);
s32 func_801360E0(GlobalContext* globalCtx, SkelAnime* skelAnime);
s32 func_80136104(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_801361BC(GlobalContext* globalCtx, SkelAnime* skelAnime);
s32 func_80136288(GlobalContext* globalCtx, SkelAnime* skelAnime);
s32 func_8013631C(GlobalContext* globalCtx, SkelAnime* skelAnime);
void SkelAnime_SetTransition(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 transitionRate);
void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationMode, f32 transitionRate);
void SkelAnime_ChangeLinkAnimDefaultStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg);
void SkelAnime_ChangeLinkAnimPlaybackStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg, f32 playbackSpeed);
void SkelAnime_ChangeLinkAnimDefaultRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg);
void SkelAnime_ChangeLinkAnimPlaybackRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg, f32 playbackSpeed);
void func_8013670C(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_8013673C(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_8013676C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg, f32 frame);
void func_801367B0(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg, f32 frame);
void func_801367F4(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 frame);
void func_8013682C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 transitionFrame, LinkAnimetionEntry* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate,
Vec3s* limbDrawTbl);
void func_801368CC(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 transitionFrame, LinkAnimetionEntry* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate,
Vec3s* limbDrawTbl);
void SkelAnime_SetModeStop(SkelAnime* skelAnime);
s32 func_80136990(SkelAnime* skelAnime, f32 arg1, f32 updateRate);
s32 func_80136A48(SkelAnime* skelAnime, f32 arg1);
void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount);
void SkelAnime_InitSV(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount);
void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationSeg);
void func_80136C84(SkelAnime* skelAnime);
s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime);
s32 func_80136CF4(SkelAnime* skelAnime);
s32 func_80136D98(SkelAnime* skelAnime);
void func_80136F04(SkelAnime* skelAnime);
s32 func_8013702C(SkelAnime* skelAnime);
s32 func_801370B0(SkelAnime* skelAnime);
s32 func_8013713C(SkelAnime* skelAnime);
void SkelAnime_ChangeAnimImpl(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame,
f32 frameCount, u8 animationType, f32 transitionRate, s8 unk2);
void SkelAnime_ChangeAnim(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame,
f32 frameCount, u8 mode, f32 transitionRate);
void SkelAnime_ChangeAnimDefaultStop(SkelAnime* skelAnime, AnimationHeader* animationSeg);
void SkelAnime_ChangeAnimTransitionStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate);
void SkelAnime_ChangeAnimPlaybackStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed);
void SkelAnime_ChangeAnimDefaultRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg);
void SkelAnime_ChangeAnimTransitionRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate);
void SkelAnime_ChangeAnimPlaybackRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed);
void SkelAnime_AnimSetStop(SkelAnime* skelAnime);
void SkelAnime_AnimReverse(SkelAnime* skelAnime);
void func_80137674(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* index);
void func_801376DC(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* arg3);
void func_80137748(SkelAnime* skelAnime, Vec3f* pos, s16 angle);
s32 func_801378B8(SkelAnime* skelAnime, f32 arg1);
void SkelAnime_Free(SkelAnime* skelAnime, GlobalContext* globalCtx);
void SkelAnime_CopyVec3s(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src);
void func_80137970(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80137970
void func_80137B34(void); // func_80137B34
void func_80137EBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80137EBC

View File

@ -21,4 +21,19 @@
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
(curState)->nextGameStateSize = sizeof(newStruct);
extern GraphicsContext* oGfxCtx;
#define OPEN_DISPS(gfxCtx, file, line) \
{ \
GraphicsContext* oGfxCtx; \
Gfx* dispRefs[4]; \
oGfxCtx = gfxCtx; \
#define CLOSE_DISPS(gfxCtx, file, line) \
} \
(void)0
#define GRAPH_ALLOC(gfxCtx, size) \
((gfxCtx)->polyOpa.d = (Gfx*)((u8*)(gfxCtx)->polyOpa.d - (size)))
#endif // _MACROS_H_

View File

@ -4043,8 +4043,8 @@ extern Quake2Context sQuake2Context; // D_801F5A90
extern s32 gSceneProcStep; // D_801F5AA0
extern u32 gSceneProcFlags; // D_801F5AA4
extern f32 gSceneProcFlashingAlpha; // D_801F5AA8
extern UNK_TYPE1 D_801F5AB0; // D_801F5AB0
extern UNK_TYPE1 D_801F5AB4; // D_801F5AB4
extern s32 D_801F5AB0; // D_801F5AB0
extern s32 D_801F5AB4; // D_801F5AB4
extern UNK_TYPE1 D_801F5AC0; // D_801F5AC0
extern UNK_TYPE1 D_801F69D0; // D_801F69D0
extern UNK_TYPE1 D_801F6A10; // D_801F6A10

View File

@ -17,6 +17,7 @@
#include <ichain.h>
#include <z64actor.h>
#include <z64animation.h>
#include <z64collision_check.h>
#include <z64cutscene.h>
#include <z64dma.h>
@ -1615,7 +1616,8 @@ struct GlobalContext {
/* 0x17000 */ u16 unk17000;
/* 0x17002 */ UNK_TYPE1 pad17002[0x2];
/* 0x17004 */ KankyoContext kankyoContext;
/* 0x170F8 */ UNK_TYPE1 pad170F8[0xC90];
/* 0x170F8 */ UNK_TYPE1 pad170F8[0xC];
/* 0x17104 */ AnimationContext animationCtx;
/* 0x17D88 */ SceneContext sceneContext;
/* 0x186E0 */ RoomContext roomContext;
/* 0x18760 */ u8 transitionActorCount;

251
include/z64animation.h Normal file
View File

@ -0,0 +1,251 @@
#ifndef _Z64_ANIMATION_H
#define _Z64_ANIMATION_H
#include <PR/ultratypes.h>
#include <PR/gbi.h>
#include <z64dma.h>
#include <z64math.h>
#define LINK_ANIMETION_OFFSET(addr, offset) \
(((u32)&_link_animetionSegmentRomStart) + ((u32)addr & 0xFFFFFF) + ((u32)offset))
#define LIMB_DONE 0xFF
#define ANIMATION_ENTRY_MAX 50
#define ANIM_FLAG_UPDATEXZ 0x02
#define ANIM_FLAG_UPDATEY 0x10
struct GlobalContext;
struct Actor;
typedef struct SkelAnime SkelAnime;
typedef struct {
/* 0x000 */ Vec3s translation; // Translation relative to parent limb. root limb is a tranlation for entire model.
/* 0x006 */ u8 firstChildIndex; // The first child's index into the limb table.
/* 0x007 */ u8 nextLimbIndex; // The parent limb's next limb index into the limb table.
/* 0x008 */ Gfx* displayLists[1]; // Display lists for the limb. Index 0 is the normal display list, index 1 is the
// far model display list.
} SkelLimbEntry; // Size = 0xC or 0x10
typedef struct {
/* 0x000 */ SkelLimbEntry* limbs[1]; // One or more limbs, index 0 is the root limb.
} Skeleton; // Size >= 4
typedef struct {
/* 0x000 */ Skeleton* skeletonSeg; // Segment address of SkelLimbIndex.
/* 0x004 */ u8 limbCount; // Number of limbs in the model.
/* 0x005 */ char unk05[3]; // unknown, maybe padding?
/* 0x008 */ u8 dListCount; // Number of display lists in the model.
} SkeletonHeader; // Size = 0xC
typedef s16 AnimationRotationValue;
typedef struct {
/* 0x000 */ u16 x;
/* 0x002 */ u16 y;
/* 0x004 */ u16 z;
} AnimationRotationIndex; // size = 0x06
typedef struct {
/* 0x000 */ s16 frameCount;
/* 0x002 */ s16 unk02;
} GenericAnimationHeader; // size = 0x4
typedef struct {
/* 0x000 */ GenericAnimationHeader genericHeader;
/* 0x004 */ u32 rotationValueSeg; // referenced as tbl
/* 0x008 */ u32 rotationIndexSeg; // referenced as ref_tbl
/* 0x00C */ u16 limit;
} AnimationHeader; // size = 0x10
typedef enum {
ANIMATION_LINKANIMETION,
ANIMATION_TYPE1,
ANIMATION_TYPE2,
ANIMATION_TYPE3,
ANIMATION_TYPE4,
ANIMATION_TYPE5
} AnimationType;
typedef struct {
/* 0x000 */ DmaRequest req;
/* 0x020 */ OSMesgQueue msgQueue;
/* 0x038 */ OSMesg msg;
} AnimationEntryType0; // size = 0x3C
typedef struct {
/* 0x000 */ u8 unk00;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
} AnimationEntryType1; // size = 0xC
typedef struct {
/* 0x000 */ u8 unk00;
/* 0x001 */ u8 limbCount;
/* 0x004 */ Vec3s* unk04;
/* 0x008 */ Vec3s* unk08;
/* 0x00C */ f32 unk0C;
} AnimationEntryType2; // size = 0x10
typedef struct {
/* 0x000 */ u8 unk00;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
/* 0x00C */ u8* index;
} AnimationEntryType3; // size = 0x10
typedef struct {
/* 0x000 */ u8 unk00;
/* 0x001 */ u8 vecCount;
/* 0x002 */ char unk02[0x2];
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
/* 0x00C */ u8* index;
} AnimationEntryType4; // size = 0x10
typedef struct {
/* 0x000 */ struct Actor* actor;
/* 0x004 */ SkelAnime* skelAnime;
/* 0x008 */ f32 unk08;
} AnimationEntryType5; // size = 0xC
typedef struct {
/* 0x000 */ u8 raw[0x3C];
} AnimationEntryRaw; // size = 0x3C
typedef union {
AnimationEntryRaw raw;
AnimationEntryType0 type0;
AnimationEntryType1 type1;
AnimationEntryType2 type2;
AnimationEntryType3 type3;
AnimationEntryType4 type4;
AnimationEntryType5 type5;
} AnimationEntryType; // size = 0x3C
typedef struct {
/* 0x000 */ u8 type;
/* 0x001 */ u8 unk01;
/* 0x004 */ AnimationEntryType types;
} AnimationEntry; // size = 0x40
typedef struct AnimationContext {
/* 0x000 */ s16 animationCount;
/* 0x002 */ char unk02[2];
/* 0x004 */ AnimationEntry entries[ANIMATION_ENTRY_MAX];
} AnimationContext; // size = 0xC84
typedef struct {
/* 0x000 */ GenericAnimationHeader genericHeader;
/* 0x004 */ u32 animationSegAddress;
} LinkAnimetionEntry; // size = 0x8
struct SkelAnime {
/* 0x00 */ u8 limbCount; // joint_Num
/* modes 0 and 1 repeat the animation indefinitely
* modes 2 and 3 play the animaton once then stop
* modes >= 4 play the animation once, and always start at frame 0.
*/
/* 0x01 */ u8 mode;
/* 0x02 */ u8 dListCount;
/* 0x03 */ s8 unk03;
/* 0x04 */ Skeleton* skeleton;
/* 0x08 */
union {
AnimationHeader* animCurrentSeg;
LinkAnimetionEntry* linkAnimetionSeg;
GenericAnimationHeader* genericSeg;
};
/* 0x0C */ f32 initialFrame;
/* 0x10 */ f32 animFrameCount;
/* 0x14 */ f32 totalFrames;
/* 0x18 */ f32 animCurrentFrame;
/* 0x1C */ f32 animPlaybackSpeed;
/* 0x20 */ Vec3s* limbDrawTbl; // now_joint
/* 0x24 */ Vec3s* transitionDrawTbl; // morf_joint
/* 0x28 */ f32 transCurrentFrame;
/* 0x2C */ f32 transitionStep;
/* 0x30 */ s32 (*animUpdate)();
/* 0x34 */ s8 initFlags;
/* 0x35 */ u8 flags;
/* 0x36 */ s16 prevFrameRot;
/* 0x38 */ Vec3s prevFramePos;
/* 0x3E */ Vec3s unk3E;
}; // size = 0x44
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
struct Actor* actor);
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
struct Actor* actor);
typedef s32 (*OverrideLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
struct Actor* actor, Gfx** gfx);
typedef void (*PostLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
struct Actor* actor, Gfx** gfx);
typedef s32 (*OverrideLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
struct Actor* actor);
typedef void (*PostLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot,
struct Actor* actor);
typedef void (*UnkActorDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor);
typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryType*);
extern u32 link_animetion_segment;
// fcurve_skelanime structs
typedef struct {
/* 0x0000 */ u16 unk00; // appears to be flags
/* 0x0002 */ s16 unk02;
/* 0x0004 */ s16 unk04;
/* 0x0006 */ s16 unk06;
/* 0x0008 */ f32 unk08;
} TransformData; // size = 0xC
typedef struct {
/* 0x0000 */ u8* refIndex;
/* 0x0004 */ TransformData* transformData;
/* 0x0008 */ s16* copyValues;
/* 0x000C */ s16 unk0C;
/* 0x000E */ s16 unk10;
} TransformUpdateIndex; // size 0x10
typedef struct {
/* 0x0000 */ u8 firstChildIdx;
/* 0x0001 */ u8 nextLimbIdx;
/* 0x0004 */ Gfx* dList[2];
} SkelCurveLimb; // size >= 0x8
typedef struct {
/* 0x0000 */ SkelCurveLimb** limbs;
/* 0x0004 */ u8 limbCount;
} SkelCurveLimbList; // size = 0x8
typedef struct {
/* 0x0000 */ Vec3s scale;
/* 0x0006 */ Vec3s rot;
/* 0x000C */ Vec3s pos;
} LimbTransform; // size = 0x12
typedef struct {
/* 0x0000 */ u8 limbCount;
/* 0x0004 */ SkelCurveLimb** limbList;
/* 0x0008 */ TransformUpdateIndex* transUpdIdx;
/* 0x000C */ f32 unk0C; // seems to be unused
/* 0x0010 */ f32 animFinalFrame;
/* 0x0014 */ f32 animSpeed;
/* 0x0018 */ f32 animCurFrame;
/* 0x001C */ LimbTransform* transforms;
} SkelAnimeCurve; // size = 0x20
typedef s32 (*OverrideCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex,
struct Actor* actor);
typedef void (*PostCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex,
struct Actor* actor);
#endif

View File

@ -384,7 +384,7 @@ SECTIONS
build/src/code/z_scene_proc.o(.text)
build/asm/z_scene_table.o(.text)
build/asm/code_0x801323D0.o(.text)
build/asm/z_skelanime.o(.text)
build/src/code/z_skelanime.o(.text)
build/asm/z_skin.o(.text)
build/asm/z_skin_awb.o(.text)
build/asm/code_0x80138BA0.o(.text)
@ -503,7 +503,7 @@ SECTIONS
build/asm/code_data_z_scene_proc.o(.data)
build/asm/code_data_z_scene_table.o(.data)
build/asm/code_data_0x801323D0.o(.data)
build/asm/code_data_z_skelanime.o(.data)
build/src/code/z_skelanime.o(.data)
build/asm/code_data_0x80138BA0.o(.data)
build/asm/code_data_z_sub_s.o(.data)
build/asm/code_data_z_vimode.o(.data)

1735
src/code/z_skelanime.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -590,3 +590,4 @@ ovl_Obj_Swprize_0x80C25360
ovl_En_Invisible_Ruppe_0x80C258A0
ovl_Obj_Ending_0x80C25BC0
ovl_En_Rsn_0x80C25D40
z_skelanime

View File

@ -2528,58 +2528,58 @@
0x80132FDC:("func_80132FDC",),
0x80133000:("func_80133000",),
0x80133038:("func_80133038",),
0x801330E0:("func_801330E0",),
0x801332F0:("func_801332F0",),
0x801334A0:("func_801334A0",),
0x80133710:("func_80133710",),
0x80133948:("func_80133948",),
0x80133B3C:("func_80133B3C",),
0x80133CDC:("func_80133CDC",),
0x80133F28:("func_80133F28",),
0x801330E0:("SkelAnime_LodDrawLimb",),
0x801332F0:("SkelAnime_LodDraw",),
0x801334A0:("SkelAnime_LodDrawLimbSV",),
0x80133710:("SkelAnime_LodDrawSV",),
0x80133948:("SkelAnime_DrawLimb",),
0x80133B3C:("SkelAnime_Draw",),
0x80133CDC:("SkelAnime_DrawLimbSV",),
0x80133F28:("SkelAnime_DrawSV",),
0x80134148:("func_80134148",),
0x801343C0:("func_801343C0",),
0x80134600:("func_80134600",),
0x80134724:("func_80134724",),
0x80134748:("func_80134748",),
0x80134774:("func_80134774",),
0x80134990:("func_80134990",),
0x80134B54:("func_80134B54",),
0x80134DBC:("func_80134DBC",),
0x80134600:("SkelAnime_AnimateFrame",),
0x80134724:("SkelAnime_GetTotalFrames",),
0x80134748:("SkelAnime_GetFrameCount",),
0x80134774:("SkelAnime_Draw2Limb",),
0x80134990:("SkelAnime_Draw2",),
0x80134B54:("SkelAnime_DrawLimbSV2",),
0x80134DBC:("SkelAnime_DrawSV2",),
0x80134FFC:("func_80134FFC",),
0x801353D4:("func_801353D4",),
0x801353F8:("func_801353F8",),
0x8013541C:("func_8013541C",),
0x80135448:("func_80135448",),
0x801358C8:("func_801358C8",),
0x801353F8:("SkelAnime_GetTotalFrames2",),
0x8013541C:("SkelAnime_GetFrameCount2",),
0x80135448:("SkelAnime_InterpolateVec3s",),
0x801358C8:("SkelAnime_AnimationCtxReset",),
0x801358D4:("func_801358D4",),
0x801358F4:("func_801358F4",),
0x8013591C:("func_8013591C",),
0x80135954:("func_80135954",),
0x80135A28:("func_80135A28",),
0x80135A90:("func_80135A90",),
0x80135B00:("func_80135B00",),
0x80135B70:("func_80135B70",),
0x80135BE0:("func_80135BE0",),
0x80135C3C:("func_80135C3C",),
0x80135C6C:("func_80135C6C",),
0x80135CDC:("func_80135CDC",),
0x80135D38:("func_80135D38",),
0x80135DB8:("func_80135DB8",),
0x80135E3C:("func_80135E3C",),
0x8013591C:("SkelAnime_NextEntry",),
0x80135954:("SkelAnime_LoadLinkAnimetion",),
0x80135A28:("SkelAnime_LoadAnimationType1",),
0x80135A90:("SkelAnime_LoadAnimationType2",),
0x80135B00:("SkelAnime_LoadAnimationType3",),
0x80135B70:("SkelAnime_LoadAnimationType4",),
0x80135BE0:("SkelAnime_LoadAnimationType5",),
0x80135C3C:("SkelAnime_LinkAnimetionLoaded",),
0x80135C6C:("SkelAnime_AnimationType1Loaded",),
0x80135CDC:("SkelAnime_AnimationType2Loaded",),
0x80135D38:("SkelAnime_AnimationType3Loaded",),
0x80135DB8:("SkelAnime_AnimationType4Loaded",),
0x80135E3C:("SkelAnime_AnimationType5Loaded",),
0x80135EE8:("func_80135EE8",),
0x80135F88:("func_80135F88",),
0x80135F88:("SkelAnime_InitLinkAnimetion",),
0x801360A8:("func_801360A8",),
0x801360E0:("func_801360E0",),
0x80136104:("func_80136104",),
0x801361BC:("func_801361BC",),
0x80136288:("func_80136288",),
0x8013631C:("func_8013631C",),
0x801363F0:("func_801363F0",),
0x80136414:("func_80136414",),
0x8013658C:("func_8013658C",),
0x801365EC:("func_801365EC",),
0x80136650:("func_80136650",),
0x801366AC:("func_801366AC",),
0x801363F0:("SkelAnime_SetTransition",),
0x80136414:("SkelAnime_ChangeLinkAnim",),
0x8013658C:("SkelAnime_ChangeLinkAnimDefaultStop",),
0x801365EC:("SkelAnime_ChangeLinkAnimPlaybackStop",),
0x80136650:("SkelAnime_ChangeLinkAnimDefaultRepeat",),
0x801366AC:("SkelAnime_ChangeLinkAnimPlaybackRepeat",),
0x8013670C:("func_8013670C",),
0x8013673C:("func_8013673C",),
0x8013676C:("func_8013676C",),
@ -2587,36 +2587,36 @@
0x801367F4:("func_801367F4",),
0x8013682C:("func_8013682C",),
0x801368CC:("func_801368CC",),
0x8013696C:("func_8013696C",),
0x8013696C:("SkelAnime_SetModeStop",),
0x80136990:("func_80136990",),
0x80136A48:("func_80136A48",),
0x80136A7C:("func_80136A7C",),
0x80136B30:("func_80136B30",),
0x80136BEC:("func_80136BEC",),
0x80136A7C:("SkelAnime_Init",),
0x80136B30:("SkelAnime_InitSV",),
0x80136BEC:("SkelAnime_InitSkin",),
0x80136C84:("func_80136C84",),
0x80136CD0:("func_80136CD0",),
0x80136CD0:("SkelAnime_FrameUpdateMatrix",),
0x80136CF4:("func_80136CF4",),
0x80136D98:("func_80136D98",),
0x80136F04:("func_80136F04",),
0x8013702C:("func_8013702C",),
0x801370B0:("func_801370B0",),
0x8013713C:("func_8013713C",),
0x8013722C:("func_8013722C",),
0x801373E8:("func_801373E8",),
0x80137430:("func_80137430",),
0x80137488:("func_80137488",),
0x801374E4:("func_801374E4",),
0x80137540:("func_80137540",),
0x80137594:("func_80137594",),
0x801375CC:("func_801375CC",),
0x80137624:("func_80137624",),
0x80137650:("func_80137650",),
0x8013722C:("SkelAnime_ChangeAnimImpl",),
0x801373E8:("SkelAnime_ChangeAnim",),
0x80137430:("SkelAnime_ChangeAnimDefaultStop",),
0x80137488:("SkelAnime_ChangeAnimTransitionStop",),
0x801374E4:("SkelAnime_ChangeAnimPlaybackStop",),
0x80137540:("SkelAnime_ChangeAnimDefaultRepeat",),
0x80137594:("SkelAnime_ChangeAnimTransitionRepeat",),
0x801375CC:("SkelAnime_ChangeAnimPlaybackRepeat",),
0x80137624:("SkelAnime_AnimSetStop",),
0x80137650:("SkelAnime_AnimReverse",),
0x80137674:("func_80137674",),
0x801376DC:("func_801376DC",),
0x80137748:("func_80137748",),
0x801378B8:("func_801378B8",),
0x801378E0:("func_801378E0",),
0x8013792C:("func_8013792C",),
0x801378E0:("SkelAnime_Free",),
0x8013792C:("SkelAnime_CopyVec3s",),
0x80137970:("func_80137970",),
0x80137B34:("func_80137B34",),
0x80137EBC:("func_80137EBC",),

View File

@ -16,7 +16,7 @@ src_dir = root_dir + "src/"
def find_build_command_line(c_file):
rel_c_file = os.path.relpath(c_file, root_dir)
make_cmd = ["make", "--always-make", "--dry-run", "--debug=j", "PERMUTER=1"]
make_cmd = ["make", "rom.z64", "--always-make", "--dry-run", "--debug=j", "PERMUTER=1"]
debug_output = (
subprocess.check_output(make_cmd, cwd=root_dir).decode("utf-8").split("\n")
)