#ifndef _GAME_HSFMAN_H #define _GAME_HSFMAN_H #include "common.h" #include "game/memory.h" #include "game/hsfanim.h" #include "game/hsfformat.h" #include "game/sprite.h" typedef struct model_data { u8 unk_00; u8 unk_01; s8 unk_02; s8 unk_03; s8 unk_04; s8 unk_05; s16 unk_06; s16 unk_08; s16 unk_0A; s16 unk_0C; s16 unk_0E; s16 unk_10[4]; char unk_18[0x8]; s16 unk_20; u16 unk_22; s16 unk_24; s16 unk_26; char unk_28[0x10]; s16 unk_38[8]; HsfData *unk_48; HsfData *unk_4C; u32 unk_50; u32 unk_54; Point3d unk_58; f32 unk_64; Point3d unk_68; f32 unk_74; char unk_78[0x1C]; f32 unk_94; char unk_98[0x2C]; HsfData *hsfData; HsfData *unk_C8; f32 unk_CC; f32 unk_D0; f32 unk_D4; f32 unk_D8; f32 unk_DC; f32 unk_E0; f32 unk_E4; f32 unk_E8; f32 unk_EC; Mtx unk_F0; ParticleData *unk_120; } ModelData; typedef struct ThreeDCameraStruct { f32 unk_00; f32 start; f32 end; char unk_04[0x4C]; } ThreeDCameraStruct; typedef struct ThreeDProjectionStruct { s8 unk_00; char unk_01[0x3]; AnimData *unk_04; char unk_08[0xC]; Point3d unk_14; Point3d unk_20; Vec unk_2C; Mtx unk_38; char unk_68[0x30]; } ThreeDProjectionStruct; typedef struct shadow_data { char unk_00[0x2]; u16 unk_02; void*unk_04; char unk_08[0x90]; } ShadowData; typedef struct motion_data { s16 unk_00; s16 unk_02; HsfData *unk_04; } MotionData; typedef struct light_data { char unk_00[0x44]; } LightData; void ClusterMotionExec(ModelData*); /* extern */ void ClusterProc(ModelData*); /* extern */ void EnvelopeProc(HsfData*); /* extern */ void GXWaitDrawDone(); /* extern */ void Hu3DAnimExec(); /* extern */ void Hu3DCameraMotionExec(s16); /* extern */ void Hu3DCameraSet(s16, void*); /* extern */ void Hu3DDraw(ModelData*, f32*, f32*); /* extern */ void Hu3DDrawPost(); /* extern */ void Hu3DDrawPreInit(); /* extern */ void Hu3DMotionNext(s16); /* extern */ void Hu3DShadowExec(); /* extern */ void Hu3DSubMotionExec(s16); /* extern */ void HuPerfBegin(s32); /* extern */ void HuPerfEnd(s32); /* extern */ void HuSprBegin(void); /* extern */ void HuSprDispInit(void); /* extern */ void HuSprExec(s16); /* extern */ void HuSprFinish(void); /* extern */ void InitVtxParm(HsfData*); /* extern */ void ShapeProc(HsfData*); /* extern */ void mtxRot(Mtx, f32, f32, f32); /* extern */ void mtxScaleCat(Mtx, f32, f32, f32); /* extern */ void mtxTransCat(Mtx, f32, f32, f32); void Hu3DAnimInit(void); void Hu3DFogClear(void); void Hu3DLighInit(void); void Hu3DMotionInit(void); void Hu3DParManInit(void); void Hu3DFogSet(f32, f32, u8, u8, u8); /* extern */ void Hu3DMotionClusterSet(s16, s16); /* extern */ void Hu3DMotionExec(s16, s16, f32, s32); f32 Hu3DMotionMaxTimeGet(s16); /* extern */ s16 Hu3DMotionModelCreate(s16); /* extern */ void Hu3DMotionShapeSet(s16, s16); /* extern */ HsfData* LoadHSF(s32); /* extern */ void MakeDisplayList(s16, HsfData*); /* extern */ void ClusterAdjustObject(HsfData*, HsfData*); /* extern */ HsfObject* Hu3DObjDuplicate(HsfData*, u32); /* extern */ void Hu3DAnimModelKill(s16); /* extern */ void Hu3DGLightKill(s16); /* extern */ void Hu3DLLightKill(s16, s16); /* extern */ s32 Hu3DMotionKill(s16); void Hu3DInit(void); void Hu3DPreProc(void); void Hu3DExec(void); void Hu3DAllKill(void); void Hu3DBGColorSet(u8, u8, u8); void Hu3DLayerHookSet(s16, void (*)(s16)); void Hu3DPauseSet(s32); void Hu3DNoSyncSet(s32); s16 Hu3DModelCreate(s32); s16 Hu3DModelLink(s16); s16 Hu3DHookFuncCreate(HsfData*); void Hu3DShadowSizeSet(u16); void Hu3DProjectionKill(s16); void Hu3DProjectionPosSet(s16, Vec, Vec, Vec); void Hu3DProjectionTPLvlSet(s16, f32); void Hu3DMipMapSet(char*, s16, s32, f32); extern MotionData Hu3DMotion[0x100]; extern f32 lbl_801D4AB0; extern f32 lbl_801D4AB4; extern f32 lbl_801D4AB8; extern f32 lbl_801D4AFC; extern GXColor lbl_801D6BE0; extern u32 totalMatCnt; extern u32 totalMatCnted; extern u32 totalPolyCnt; extern u32 totalTexCacheCnt; extern u32 totalTexCacheCnted; extern u32 totalTexCnt; extern u32 totalTexCnted; #endif