SkelAnime "Skeleton" Documentation Pass (#497)

* Darkmeiro decompilation

Bg_Gnd_Darkmeiro decompiled, matched, and documented.

* give this a shot

* fix conflict

* one more try

* could be useful

* whoops

* ZAP2 stuff

* ZAP why

* ZAP again

* spooky scary skeletons

* there's a skeleton inside of you

* formatting

* types

* a matched function even

* undo change

* lol anime

* ok how did I forget the .s

* array fix

* would you like to ride the bone train?

* stuff

* more renames

* renames and cleanup

* names suck

* idea

* using void** for now

* stuff

* look more type fixes

Co-authored-by: fig <fig02srl@gmail.com>
This commit is contained in:
petrie911
2020-12-01 21:19:56 -06:00
committed by GitHub
parent 629d1c8968
commit 4876610c75
268 changed files with 1941 additions and 2045 deletions
+65 -63
View File
@@ -55,8 +55,8 @@ void StackCheck_Cleanup(StackEntry* entry);
StackStatus StackCheck_GetState(StackEntry* entry);
u32 StackCheck_CheckAll();
u32 StackCheck_Check(StackEntry* entry);
f32 LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, f32 var1, const char* var2Name,
f32 var2, const char* var3Name, f32 var3);
f32 LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, f32 var1, const char* var2Name, f32 var2,
const char* var3Name, f32 var3);
s32 LogUtils_CheckIntRange(const char* exp, s32 arg1, const char* var1Name, s32 var1, const char* var2Name, s32 var2,
const char* var3Name, s32 var3);
void LogUtils_LogHexDump(void* ptr, s32 size0);
@@ -500,10 +500,10 @@ s32 func_800343CC(GlobalContext* globalCtx, Actor* actor, s16* arg2, f32 arg3, u
s16 (*unkFunc2)(GlobalContext*, Actor*));
s16 func_800347E8(s16 arg0);
void func_80034A14(Actor* actor, struct_80034A14_arg1* arg1, s16 arg2, s16 arg3);
void func_80034BA0(GlobalContext* globalCtx, SkelAnime* skelAnime, OverrideLimbDraw2 overrideLimbDraw,
PostLimbDraw2 postLimbDraw, Actor* actor, s16 alpha);
void func_80034CC4(GlobalContext* globalCtx, SkelAnime* skelAnime, OverrideLimbDraw2 overrideLimbDraw,
PostLimbDraw2 postLimbDraw, Actor* actor, s16 alpha);
void func_80034BA0(GlobalContext* globalCtx, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw,
PostLimbDraw postLimbDraw, Actor* actor, s16 alpha);
void func_80034CC4(GlobalContext* globalCtx, SkelAnime* skelAnime, OverrideLimbDraw overrideLimbDraw,
PostLimbDraw postLimbDraw, Actor* actor, s16 alpha);
s16 func_80034DD4(Actor* actor, GlobalContext* globalCtx, s16 arg2, f32 arg3);
void func_80034EC0(SkelAnime* skelAnime, struct_80034EC0_Entry* arg1, s32 arg2);
void func_80034F54(GlobalContext* globalCtx, s16* arg1, s16* arg2, s32 arg3);
@@ -602,7 +602,7 @@ s32 func_8003DE84(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u3
s32 func_8003DF10(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*);
s32 func_8003DFA0(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*, f32);
// ? func_8003E0FC(?);
// ? func_8003E188(?);
s32 func_8003E188(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, f32*);
// ? func_8003E214(?);
s32 func_8003E30C(CollisionContext* colCtx, Vec3f* center, f32 radius);
// ? func_8003E398(?);
@@ -665,10 +665,11 @@ UNK_TYPE func_80041D4C(CollisionContext*, CollisionPoly*, CollisionPoly*);
u16 func_80041F34(CollisionContext*, CollisionPoly*, u32);
s32 func_80041FA0(CollisionContext*, CollisionPoly*, u32);
s32 func_80042048(CollisionContext*, CollisionPoly*, s32);
// ? func_80042108(?);
s32 func_80042108(CollisionContext*, CollisionPoly*, u32);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, UNK_PTR);
s32 func_8004239C(GlobalContext* globalCtx, CollisionContext* colCtx, Vec3f* arg2, f32 arg3, WaterBox** arg4);
s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
WaterBox** outWaterBox);
// ? func_80042538(?);
// ? func_80042548(?);
// ? func_8004259C(?);
@@ -959,7 +960,7 @@ void SkelCurve_SetAnim(SkelAnimeCurve* skelCurve, TransformUpdateIndex* transUpd
f32 animCurFrame, f32 animSpeed);
s32 SkelCurve_Update(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve);
void SkelCurve_Draw(Actor* actor, GlobalContext* globalCtx, SkelAnimeCurve* skelCurve,
OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* actor2);
OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, void* data);
// ? func_8006CFC0(?);
// ? func_8006D074(?);
// ? func_8006D0AC(?);
@@ -1200,20 +1201,19 @@ s32 Player_ActionToExplosive(Player* player, s32 actionParam);
s32 Player_GetExplosiveHeld(Player* player);
s32 func_8008F2BC(Player* player, s32 actionParam);
s32 func_8008F2F8(GlobalContext* globalCtx);
void func_8008F470(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount, s32 lod,
s32 tunic, s32 boots, s32 face, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw,
void* arg);
s32 func_8008FCC8(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
s32 func_80090014(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
void func_80090D20(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor);
s32 func_800902F0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
s32 func_80090440(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, s32 lod, s32 tunic,
s32 boots, s32 face, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* this);
s32 func_8008FCC8(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* data);
s32 func_80090014(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* data);
s32 func_800902F0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* data);
s32 func_80090440(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* data);
u8 func_80090480(GlobalContext* globalCtx, ColliderQuad* collider, WeaponInfo* weaponDim, Vec3f* newTip,
Vec3f* newBase);
void Player_DrawGetItem(GlobalContext* globalCtx, Player* player);
void func_80090D20(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void* data);
u32 func_80091738(GlobalContext* globalCtx, u8* segment, SkelAnime* skelAnime);
void func_8009214C(GlobalContext* globalCtx, u8* segment, struct_80091A24_arg3* arg2, Vec3f* pos, Vec3s* rot, f32 scale,
s32 sword, s32 tunic, s32 shield, s32 boots);
void func_8009214C(GlobalContext* globalCtx, u8* segment, SkelAnime* arg2, Vec3f* pos, Vec3s* rot, f32 scale, s32 sword,
s32 tunic, s32 shield, s32 boots);
void PreNMI_Init(GameState* thisx);
Vec3f* Quake_AddVec(Vec3f* dst, Vec3f* arg1, VecSph* arg2);
void Quake_UpdateShakeInfo(QuakeRequest* req, ShakeInfo* shake, f32 y, f32 x);
@@ -1301,65 +1301,66 @@ s32 Scene_ExecuteCommands(GlobalContext* globalCtx, SceneCmd* sceneCmd);
void func_80098CBC(GlobalContext* globalCtx, u8* nbTransitionActors);
void func_800994A0(GlobalContext* globalCtx);
void Scene_Draw(GlobalContext* globalCtx);
void SkelAnime_LodDraw(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex);
void SkelAnime_LodDrawSV(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex);
void SkelAnime_Draw(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor);
void SkelAnime_DrawSV(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor);
s16 SkelAnime_GetFrameCount(GenericAnimationHeader* animationSeg);
Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
Gfx* SkelAnime_DrawSV2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx);
void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable,
OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* arg, s32 dListIndex);
void SkelAnime_DrawFlexLod(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* arg,
s32 dListIndex);
void SkelAnime_DrawOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable,
OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* arg);
void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* arg);
s16 SkelAnime_GetTotalFrames(void* animationSeg);
s16 SkelAnime_GetFrameCount(void* animationSeg);
s16 func_800A2DBC(void* animationSeg);
s16 SkelAnime_GetTotalFrames2(void* animationSeg);
s16 SkelAnime_GetFrameCount2(void* animationSeg);
Gfx* SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw,
PostLimbDraw postLimbDraw, void* arg, Gfx* gfx);
Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount,
OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* arg, Gfx* gfx);
void SkelAnime_InterpolateVec3s(s32, Vec3s*, Vec3s*, Vec3s*, f32);
void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx);
void func_800A32F4(GlobalContext* globalCtx);
void func_800A3310(GlobalContext* globalCtx);
void SkelAnime_LoadLinkAnimetion(GlobalContext* globalCtx, LinkAnimetionEntry* linkAnimetionSeg, s32 frame,
s32 limbCount, void* ram);
void SkelAnime_LoadLinkAnimation(GlobalContext* globalCtx, LinkAnimationHeader* animation, s32 frame, s32 limbCount,
Vec3s* drawTbl);
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 func_800A390C(GlobalContext* globalCtx, AnimationContext* animationCtx);
void SkelAnime_InitLinkAnimetion(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
LinkAnimetionEntry* linkAnimetionEntrySeg, s32 flags, Vec3s* limbDrawTable,
void SkelAnime_InitLinkAnimation(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
LinkAnimationHeader* segment, s32 flags, Vec3s* limbDrawTable,
Vec3s* transitionDrawTbl, s32 limbBufCount);
void func_800A3B8C(SkelAnime* skelAnime);
s32 func_800A3BC0(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_800A3C9C(GlobalContext* globalCtx, SkelAnime* skelAnime);
void SkelAnime_SetTransition(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 transitionRate);
void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment,
f32 playbackSpeed, f32 frame, f32 frameCount, u8 arg6, f32 transitionRate);
void SkelAnime_ChangeLinkAnimDefaultStop(GlobalContext* globalCtx, SkelAnime* skelAnime,
LinkAnimetionEntry* linkAnimetionEntrySeg);
void SkelAnime_ChangeLinkAnimPlaybackStop(GlobalContext* globalCtx, SkelAnime* skelAnime,
LinkAnimetionEntry* linkAnimetionEntrySeg, f32 playbackSpeed);
void SkelAnime_ChangeLinkAnimDefaultStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment);
void SkelAnime_ChangeLinkAnimPlaybackStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment,
f32 playbackSpeed);
void SkelAnime_ChangeLinkAnimDefaultRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime,
LinkAnimetionEntry* linkAnimetionEntrySeg);
LinkAnimationHeader* segment);
void SkelAnime_ChangeLinkAnimPlaybackRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime,
LinkAnimetionEntry* linkAnimetionEntrySeg, f32 playbackSpeed);
LinkAnimationHeader* segment, f32 playbackSpeed);
void func_800A41FC(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_800A425C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 frame);
void func_800A42A0(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 frame);
void func_800A422C(GlobalContext* globalCtx, SkelAnime* skelAnime);
void func_800A425C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 frame);
void func_800A42A0(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 frame);
void func_800A42E4(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 frame);
void func_800A431C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 transitionFrame, LinkAnimetionEntry* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate,
Vec3s* limbDrawTable);
void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimetionEntry* linkAnimetionEntrySeg,
f32 transitionFrame, LinkAnimetionEntry* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate,
Vec3s* arg7);
void func_800A431C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 transitionFrame,
LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* limbDrawTable);
void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 transitionFrame,
LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* arg7);
s32 func_800A4530(SkelAnime* skelAnime, f32 arg1);
void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
void SkelAnime_InitSV(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
void SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg);
s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime);
@@ -1416,7 +1417,8 @@ void Sram_Write16Bytes(SramContext* sramCtx);
void Sram_InitSram(GameState* gameState, SramContext* sramCtx);
void Sram_Alloc(GameState* gameState, SramContext* sramCtx);
void Sram_Init(GlobalContext* globalCtx, SramContext* sramCtx);
void SsSram_Init(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, u8 handlePulse, u32 handleSpeed);
void SsSram_Init(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration,
u8 handlePulse, u32 handleSpeed);
void SsSram_Dma(void* dramAddr, size_t size, s32 direction);
void SsSram_ReadWrite(u32 addr, void* dramAddr, size_t size, s32 direction);
void func_800A9F30(PadMgr*, s32);
@@ -1636,7 +1638,7 @@ void func_800C2118(PreRenderContext* this, Gfx** gfxp);
void func_800C213C(PreRenderContext* this, Gfx** gfxp);
void func_800C24BC(PreRenderContext* this, Gfx** gfxp);
void func_800C24E0(PreRenderContext* this, Gfx** gfxp);
void func_800C2500(PreRenderContext *this, s32 x, s32 y);
void func_800C2500(PreRenderContext* this, s32 x, s32 y);
void func_800C2FE4(PreRenderContext* this);
void PreRender_Calc(PreRenderContext* this);
void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size);
@@ -2027,7 +2029,7 @@ void func_800DE238(void* mem, u32 size);
void* func_800DE258(SoundAllocPool* pool, u32 size);
void* func_800DE2B0(SoundAllocPool* pool, u32 size);
void* Audio_AllocDmaMemory(SoundAllocPool* pool, u32 size);
void* Audio_AllocDmaMemoryZeroed(SoundAllocPool *pool, u32 size);
void* Audio_AllocDmaMemoryZeroed(SoundAllocPool* pool, u32 size);
void* Audio_AllocZeroed(SoundAllocPool* pool, u32 size);
void* Audio_Alloc(SoundAllocPool* pool, u32 size);
void Audio_SoundAllocPoolInit(SoundAllocPool* pool, void* memAddr, u32 size);
@@ -2527,7 +2529,8 @@ void guMtxIdentF(f32 mf[4][4]);
void guLookAtF(f32 mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
void guLookAt(Mtx*, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
s32 osPfsAllocateFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32 length, s32* fileNo);
s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared, s32* finalPage);
s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared,
s32* finalPage);
s32 osStopTimer(OSTimer* timer);
u16 __osSumcalc(u8* ptr, s32 length);
s32 __osIdCheckSum(u16* ptr, u16* csum, u16* icsum);
@@ -2542,9 +2545,8 @@ s32 osAfterPreNMI(void);
s32 osContStartQuery(OSMesgQueue* mq);
void osContGetQuery(OSContStatus* data);
void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt,
f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1,
f32 xl2, f32 yl2, f32 zl2,
s32 hiliteWidth, s32 hiliteHeight);
f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth,
s32 hiliteHeight);
void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp,
f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth,
s32 hiliteHeight);
+2 -2
View File
@@ -32,7 +32,7 @@ extern Vec3s D_040020D0[];
extern Vec3s D_04002160[];
extern Vec3s D_040021F0[];
extern Vec3s D_04002280[];
extern LinkAnimetionEntry D_04003238;
extern LinkAnimationHeader D_04003238;
extern u32 D_04004298;
extern u8 D_04006020[];
extern Gfx D_0400C820[];
@@ -409,7 +409,7 @@ extern s16 D_80120130;
extern MapData gMapDataTable;
extern s16 gSpoilingItems[3];
extern s16 gSpoilingItemReverts[3];
extern SkeletonHeader* gPlayerSkelHeaders[2];
extern FlexSkeletonHeader* gPlayerSkelHeaders[2];
extern u8 gPlayerModelTypes[][5];
extern Gfx* D_80125D68[];
extern Gfx* D_80125DE8[];
-9
View File
@@ -1949,13 +1949,4 @@ typedef struct {
/* 0x04 */ const char* name;
} FlagSetEntry; // size = 0x08
typedef struct {
/* 0x00 */ u8 limbCount;
/* 0x01 */ char unk_01[0x01];
/* 0x02 */ u8 dListCount;
/* 0x04 */ Skeleton* skeleton;
/* 0x08 */ char unk_08[0x18];
/* 0x20 */ Vec3s* limbDrawTable;
} struct_80091A24_arg3; // size >= 0x24
#endif
+102 -95
View File
@@ -5,57 +5,90 @@
#include "z64dma.h"
#include "z64math.h"
#define LINK_ANIMETION_OFFSET(addr,offset) (((u32)&_link_animetionSegmentRomStart)+((u32)addr)-((u32)&link_animetion_segment)+((u32)offset))
#define LIMB_DONE 0xFF
#define ANIMATION_ENTRY_MAX 50
#define ANIM_FLAG_UPDATEXZ 0x02
#define ANIM_FLAG_UPDATEY 0x10
extern u32 link_animetion_segment;
struct GlobalContext;
struct Actor;
typedef struct SkelAnime SkelAnime;
struct SkelAnime;
#define LINK_ANIMATION_OFFSET(addr, offset) \
(((u32)&_link_animetionSegmentRomStart) + ((u32)addr) - ((u32)&link_animetion_segment) + ((u32)offset))
#define LIMB_DONE 0xFF
#define ANIMATION_ENTRY_MAX 50
#define ANIM_FLAG_UPDATEXZ (1 << 1)
#define ANIM_FLAG_UPDATEY (1 << 4)
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
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ Gfx* dList;
} StandardLimb; // size = 0xC
typedef struct {
/* 0x000 */ SkelLimbEntry* limbs[1]; // One ore more limbs, index 0 is the root limb.
} Skeleton; // Size >= 4
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ Gfx* dLists[2]; // Near and far
} LodLimb; // size = 0x10
typedef struct {
/* 0x000 */ Skeleton* skeletonSeg; // Segment address of SkelLimbIndex.
/* 0x004 */ u8 limbCount; // Number of limbs in the model.
/* 0x005 */ char unk_05[3]; // unknown, maybe padding?
/* 0x008 */ u8 dListCount; // Number of display lists in the model.
} SkeletonHeader; // Size = 0xC
typedef s16 AnimationRotationValue;
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ s32 unk_08; // Type of data contained in segment
/* 0x0C */ UNK_PTR segment; // Segment address of data. Currently unclear what.
} SkinLimb; // size = 0x10
// Model has limbs with only rigid meshes
typedef struct {
/* 0x000 */ u16 x;
/* 0x002 */ u16 y;
/* 0x004 */ u16 z;
} AnimationRotationIndex; // size = 0x06
/* 0x00 */ void** segment;
/* 0x04 */ u8 limbCount;
} SkeletonHeader; // size = 0x8
// Model has limbs with flexible meshes
typedef struct {
/* 0x00 */ SkeletonHeader sh;
/* 0x08 */ u8 dListCount;
} FlexSkeletonHeader; // size = 0xC
typedef struct {
s16 frameCount;
s16 unk_02;
} GenericAnimationHeader;
} GenericAnimationHeader; // size = 0x4
typedef struct {
/* 0x000 */ GenericAnimationHeader genericHeader;
/* 0x004 */ u32 rotationValueSeg; // referenced as tbl
/* 0x008 */ u32 rotationIndexSeg; // referenced as ref_tbl
/* 0x00C */ u16 limit;
/* 0x00 */ GenericAnimationHeader genericHeader;
/* 0x04 */ u32 rotationValueSeg; // "tbl"
/* 0x08 */ u32 rotationIndexSeg; // "ref_tbl"
/* 0x0C */ u16 limit;
} AnimationHeader; // size = 0x10
typedef struct {
GenericAnimationHeader genericHeader;
u32 segment;
} LinkAnimationHeader; // size = 0x8
typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
void*);
typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void*);
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
void*, Gfx** gfx);
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void*,
Gfx** gfx);
typedef s16 AnimationRotationValue;
typedef struct {
/* 0x00 */ u16 x;
/* 0x02 */ u16 y;
/* 0x04 */ u16 z;
} AnimationRotationIndex; // size = 0x06
typedef enum {
ANIMATION_LINKANIMETION,
ANIMATION_LINK,
ANIMATION_TYPE1,
ANIMATION_TYPE2,
ANIMATION_TYPE3,
@@ -103,28 +136,29 @@ typedef struct {
typedef struct {
/* 0x000 */ struct Actor* actor;
/* 0x004 */ SkelAnime* skelAnime;
/* 0x004 */ struct SkelAnime* skelAnime;
/* 0x008 */ f32 unk_08;
} AnimationEntryType5;
typedef struct {
/* 0x000 */ u8 raw[0x3C];
/* 0x004 */ char raw[0x3C];
} AnimationEntryRaw;
typedef union {
AnimationEntryRaw raw;
AnimationEntryRaw data;
AnimationEntryType0 type0;
AnimationEntryType1 type1;
AnimationEntryType2 type2;
AnimationEntryType3 type3;
AnimationEntryType4 type4;
AnimationEntryType5 type5;
} AnimationEntryType;
} AnimationEntryData;
typedef struct {
/* 0x000 */ u8 type;
/* 0x001 */ u8 unk_01;
/* 0x004 */ AnimationEntryType types;
/* 0x00 */ u8 type;
/* 0x01 */ u8 unk_01;
/* 0x02 */ char unk_02[2];
/* 0x04 */ AnimationEntryData data;
} AnimationEntry; // size = 0x40
typedef struct AnimationContext {
@@ -133,59 +167,7 @@ typedef struct AnimationContext {
AnimationEntry entries[ANIMATION_ENTRY_MAX];
} AnimationContext;
typedef struct {
GenericAnimationHeader genericHeader;
u32 animationSegAddress;
} LinkAnimetionEntry;
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 unk_03;
/* 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 unk_3E;
}; // 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 void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryType*);
extern u32 link_animetion_segment;
typedef void (*AnimationEntryCallback)(struct GlobalContext* globalCtx, AnimationEntryData* data);
// fcurve_skelanime structs
typedef struct {
@@ -196,7 +178,6 @@ typedef struct {
/* 0x0008 */ f32 unk_08;
} TransformData; // size = 0xC
typedef struct {
/* 0x0000 */ u8* refIndex;
/* 0x0004 */ TransformData* transformData;
@@ -233,7 +214,33 @@ typedef struct {
/* 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);
typedef s32 (*OverrideCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex, void*);
typedef void (*PostCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex, void*);
typedef s32 (*AnimationUpdateFunc)();
typedef struct SkelAnime {
/* 0x00 */ u8 limbCount; // "joint_Num"
/* 0x01 */ u8 mode; // 0/1 repeat animation, 2/3 stop animation, >= 4 starts on frame 0 and plays once
/* 0x02 */ u8 dListCount;
/* 0x03 */ s8 unk_03;
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb or SkinLimb.
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
/* 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 */ AnimationUpdateFunc update;
/* 0x34 */ s8 initFlags;
/* 0x35 */ u8 flags;
/* 0x36 */ s16 prevFrameRot;
/* 0x38 */ Vec3s prevFramePos;
/* 0x3E */ Vec3s unk_3E;
} SkelAnime; // size = 0x44
#endif
+1 -1
View File
@@ -32,7 +32,7 @@ typedef struct {
/* 0x2 */ LightParams params;
} LightInfo; // size = 0xE
typedef struct Lights{
typedef struct Lights {
/* 0x00 */ u8 numLights;
/* 0x08 */ Lightsn l;
} Lights; // size = 0x80
+9 -9
View File
@@ -176,15 +176,15 @@ typedef struct {
/* 0x86 */ Vec3s unk_86[2];
/* 0x92 */ u16 unk_92;
/* 0x94 */ u16 unk_94;
/* 0x98 */ LinkAnimetionEntry* unk_98;
/* 0x9C */ LinkAnimetionEntry* unk_9C;
/* 0xA0 */ LinkAnimetionEntry* unk_A0;
/* 0xA4 */ LinkAnimetionEntry* unk_A4;
/* 0xA8 */ LinkAnimetionEntry* unk_A8;
/* 0xAC */ LinkAnimetionEntry* unk_AC[4];
/* 0xBC */ LinkAnimetionEntry* unk_BC[2];
/* 0xC4 */ LinkAnimetionEntry* unk_C4[2];
/* 0xCC */ LinkAnimetionEntry* unk_CC[2];
/* 0x98 */ LinkAnimationHeader* unk_98;
/* 0x9C */ LinkAnimationHeader* unk_9C;
/* 0xA0 */ LinkAnimationHeader* unk_A0;
/* 0xA4 */ LinkAnimationHeader* unk_A4;
/* 0xA8 */ LinkAnimationHeader* unk_A8;
/* 0xAC */ LinkAnimationHeader* unk_AC[4];
/* 0xBC */ LinkAnimationHeader* unk_BC[2];
/* 0xC4 */ LinkAnimationHeader* unk_C4[2];
/* 0xCC */ LinkAnimationHeader* unk_CC[2];
} PlayerAgeProperties; // size = 0xD4
typedef struct {