summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-06-18 02:43:47 -0400
committerGitHub <noreply@github.com>2023-06-18 16:43:47 +1000
commit587d12e3cbb2a1ffb6774c0823c54ce0e80a579b (patch)
tree77e25fd29e6bce3b979b7d50ec3851c9d2a9fc1e /include
parent9c40dea7709726bd29fac8253586bc96c9f3ab8a (diff)
Yet another header cleanup (#1284)
* thread, scene and interface * non header stuff * fix missing stuff * z64sound_source.h * collision_check.h * Update include/z64sound_source.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update include/z64scene.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update include/z64thread.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * review * review * Update src/code/z_collision_check.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/code/z_sound_source.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Diffstat (limited to 'include')
-rw-r--r--include/functions.h344
-rw-r--r--include/global.h1
-rw-r--r--include/macros.h1
-rw-r--r--include/variables.h33
-rw-r--r--include/z64.h78
-rw-r--r--include/z64actor.h58
-rw-r--r--include/z64animation_legacy.h4
-rw-r--r--include/z64collision_check.h246
-rw-r--r--include/z64game.h4
-rw-r--r--include/z64interface.h54
-rw-r--r--include/z64scene.h98
-rw-r--r--include/z64sound_source.h24
-rw-r--r--include/z64thread.h24
13 files changed, 455 insertions, 514 deletions
diff --git a/include/functions.h b/include/functions.h
index 6a9ebcf60..307dc4365 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -787,217 +787,6 @@ void Camera_SetTargetActor(Camera* camera, Actor* actor);
f32 Camera_GetWaterYPos(Camera* camera);
void func_800E0348(Camera* camera);
-DamageTable* DamageTable_Get(s32 index);
-void DamageTable_Clear(DamageTable* damageTable);
-f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
-f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderInfo* ac);
-s32 CollisionCheck_GetToucherDamage(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo);
-s32 Collider_InitBase(PlayState* play, Collider* collider);
-s32 Collider_DestroyBase(PlayState* play, Collider* collider);
-s32 Collider_SetBaseToActor(PlayState* play, Collider* collider, ColliderInitToActor* src);
-s32 Collider_SetBaseType1(PlayState* play, Collider* collider, Actor* actor, ColliderInitType1* src);
-s32 Collider_SetBase(PlayState* play, Collider* collider, Actor* actor, ColliderInit* src);
-void Collider_ResetATBase(PlayState* play, Collider* collider);
-void Collider_ResetACBase(PlayState* play, Collider* collider);
-void Collider_ResetOCBase(PlayState* play, Collider* collider);
-s32 Collider_InitTouch(PlayState* play, ColliderTouch* touch);
-s32 Collider_DestroyTouch(PlayState* play, ColliderTouch* touch);
-s32 Collider_SetTouch(PlayState* play, ColliderTouch* touch, ColliderTouchInit* src);
-void Collider_ResetATInfoUnk(PlayState* play, ColliderInfo* info);
-s32 Collider_InitBump(PlayState* play, ColliderBump* bump);
-s32 Collider_DestroyBump(PlayState* play, ColliderBump* bump);
-s32 Collider_SetBump(PlayState* play, ColliderBump* bump, ColliderBumpInit* src);
-s32 Collider_InitInfo(PlayState* play, ColliderInfo* info);
-s32 Collider_DestroyInfo(PlayState* play, ColliderInfo* info);
-s32 Collider_SetInfo(PlayState* play, ColliderInfo* info, ColliderInfoInit* src);
-void Collider_ResetATInfo(PlayState* play, ColliderInfo* info);
-void Collider_ResetACInfo(PlayState* play, ColliderInfo* info);
-void Collider_ResetOCInfo(PlayState* play, ColliderInfo* info);
-s32 Collider_InitJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dim);
-s32 Collider_DestroyJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dim);
-s32 Collider_SetJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
-s32 Collider_InitJntSphElement(PlayState* play, ColliderJntSphElement* element);
-s32 Collider_DestroyJntSphElement(PlayState* play, ColliderJntSphElement* element);
-s32 Collider_SetJntSphElement(PlayState* play, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
-s32 Collider_ResetJntSphElementAT(PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_ResetJntSphElementAC(PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_ResetJntSphElementOC(PlayState* play, ColliderJntSphElement* collider);
-s32 Collider_InitJntSph(PlayState* play, ColliderJntSph* collider);
-s32 Collider_FreeJntSph(PlayState* play, ColliderJntSph* collider);
-s32 Collider_DestroyJntSph(PlayState* play, ColliderJntSph* collider);
-s32 Collider_SetJntSphToActor(PlayState* play, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
-s32 Collider_SetJntSphAllocType1(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInitType1* src);
-s32 Collider_SetJntSph(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
-s32 Collider_InitAndSetJntSph(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
-s32 Collider_ResetJntSphAT(PlayState* play, Collider* collider);
-s32 Collider_ResetJntSphAC(PlayState* play, Collider* collider);
-s32 Collider_ResetJntSphOC(PlayState* play, Collider* collider);
-s32 Collider_InitCylinderDim(PlayState* play, Cylinder16* dim);
-s32 Collider_DestroyCylinderDim(PlayState* play, Cylinder16* dim);
-s32 Collider_SetCylinderDim(PlayState* play, Cylinder16* dim, Cylinder16* src);
-s32 Collider_InitCylinder(PlayState* play, ColliderCylinder* collider);
-s32 Collider_DestroyCylinder(PlayState* play, ColliderCylinder* collider);
-s32 Collider_SetCylinderToActor(PlayState* play, ColliderCylinder* collider, ColliderCylinderInitToActor* src);
-s32 Collider_SetCylinderType1(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInitType1* src);
-s32 Collider_SetCylinder(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
-s32 Collider_InitAndSetCylinder(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
-s32 Collider_ResetCylinderAT(PlayState* play, Collider* collider);
-s32 Collider_ResetCylinderAC(PlayState* play, Collider* collider);
-s32 Collider_ResetCylinderOC(PlayState* play, Collider* collider);
-s32 Collider_InitTrisElementDim(PlayState* play, TriNorm* dim);
-s32 Collider_DestroyTrisElementDim(PlayState* play, TriNorm* dim);
-s32 Collider_SetTrisElementDim(PlayState* play, TriNorm* dim, ColliderTrisElementDimInit* src);
-s32 Collider_InitTrisElement(PlayState* play, ColliderTrisElement* element);
-s32 Collider_DestroyTrisElement(PlayState* play, ColliderTrisElement* element);
-s32 Collider_SetTrisElement(PlayState* play, ColliderTrisElement* element, ColliderTrisElementInit* src);
-s32 Collider_ResetTrisElementAT(PlayState* play, ColliderTrisElement* element);
-s32 Collider_ResetTrisElementAC(PlayState* play, ColliderTrisElement* element);
-s32 Collider_ResetTrisElementOC(PlayState* play, ColliderTrisElement* element);
-s32 Collider_InitTris(PlayState* play, ColliderTris* tris);
-s32 Collider_FreeTris(PlayState* play, ColliderTris* tris);
-s32 Collider_DestroyTris(PlayState* play, ColliderTris* tris);
-s32 Collider_SetTrisAllocType1(PlayState* play, ColliderTris* tris, Actor* actor, ColliderTrisInitType1* src);
-s32 Collider_SetTris(PlayState* play, ColliderTris* triGroup, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* tris);
-s32 Collider_InitAndSetTris(PlayState* play, ColliderTris* tris, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* elements);
-s32 Collider_ResetTrisAT(PlayState* play, Collider* collider);
-s32 Collider_ResetTrisAC(PlayState* play, Collider* collider);
-s32 Collider_ResetTrisOC(PlayState* play, Collider* collider);
-s32 Collider_InitQuadDim(PlayState* play, ColliderQuadDim* dim);
-s32 Collider_DestroyQuadDim(PlayState* play, ColliderQuadDim* dim);
-s32 Collider_ResetQuadACDist(PlayState* play, ColliderQuadDim* dim);
-void Collider_SetQuadMidpoints(ColliderQuadDim* dim);
-s32 Collider_SetQuadDim(PlayState* play, ColliderQuadDim* dim, ColliderQuadDimInit* init);
-s32 Collider_InitQuad(PlayState* play, ColliderQuad* collider);
-s32 Collider_DestroyQuad(PlayState* play, ColliderQuad* collider);
-s32 Collider_SetQuadType1(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInitType1* src);
-s32 Collider_SetQuad(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
-s32 Collider_InitAndSetQuad(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
-s32 Collider_ResetQuadAT(PlayState* play, Collider* collider);
-s32 Collider_ResetQuadAC(PlayState* play, Collider* collider);
-s32 Collider_ResetQuadOC(PlayState* play, Collider* collider);
-s32 Collider_QuadSetNearestAC(PlayState* play, ColliderQuad* quad, Vec3f* hitPos);
-s32 Collider_InitSphere(PlayState* play, ColliderSphere* collider);
-s32 Collider_DestroySphere(PlayState* play, ColliderSphere* collider);
-s32 Collider_SetSphere(PlayState* play, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
-s32 Collider_InitAndSetSphere(PlayState* play, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
-s32 Collider_ResetSphereAT(PlayState* play, Collider* collider);
-s32 Collider_ResetSphereAC(PlayState* play, Collider* collider);
-s32 Collider_ResetSphereOC(PlayState* play, Collider* collider);
-s32 Collider_InitLine(PlayState* play, OcLine* line);
-s32 Collider_DestroyLine(PlayState* play, OcLine* line);
-s32 Collider_SetLinePoints(PlayState* play, OcLine* line, Vec3f* a, Vec3f* b);
-s32 Collider_SetLine(PlayState* play, OcLine* line, OcLine* src);
-s32 Collider_ResetLineOC(PlayState* play, OcLine* line);
-void CollisionCheck_InitContext(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_DestroyContext(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_ClearContext(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_EnableSAC(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_DisableSAC(PlayState* play, CollisionCheckContext* colCtxt);
-s32 CollisionCheck_SetAT(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-s32 CollisionCheck_SetAT_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
-s32 CollisionCheck_SetAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-s32 CollisionCheck_SetAC_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
-s32 CollisionCheck_SetOC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-s32 CollisionCheck_SetOC_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
-s32 CollisionCheck_SetOCLine(PlayState* play, CollisionCheckContext* colCtxt, OcLine* line);
-s32 CollisionCheck_SkipTouch(ColliderInfo* info);
-s32 CollisionCheck_SkipBump(ColliderInfo* info);
-s32 CollisionCheck_NoSharedFlags(ColliderInfo* toucher, ColliderInfo* bumper);
-void CollisionCheck_NoBlood(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_BlueBlood(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_GreenBlood(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_WaterBurst(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_RedBlood(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_RedBloodUnused(PlayState* play, Collider* collider, Vec3f* v);
-void CollisionCheck_HitSolid(PlayState* play, ColliderInfo* info, Collider* collider, Vec3f* hitPos);
-s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo);
-void CollisionCheck_HitEffects(PlayState* play, Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, Vec3f* hitPos);
-void CollisionCheck_SetBounce(Collider* at, Collider* ac);
-s32 CollisionCheck_SetATvsAC(PlayState* play, Collider* at, ColliderInfo* atInfo, Vec3f* atPos, Collider* ac, ColliderInfo* acInfo, Vec3f* acPos, Vec3f* hitPos);
-void CollisionCheck_TrisAvgPoint(ColliderTrisElement* tri, Vec3f* avg);
-void CollisionCheck_QuadAvgPoint(ColliderQuad* quad, Vec3f* avg);
-void CollisionCheck_AC_JntSphVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_JntSphVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_JntSphVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_JntSphVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_JntSphVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_CylVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_CylVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_CylVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_CylVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_CylVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_TrisVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_TrisVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_TrisVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_TrisVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_TrisVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_QuadVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_QuadVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_QuadVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_QuadVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_QuadVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_SphereVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_SphereVsCylinder(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_SphereVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_SphereVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_AC_SphereVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
-void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_SetCylHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_SetTrisHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_SetQuadHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_SetSphereHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_SetHitEffects(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_AC(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT);
-void CollisionCheck_AT(PlayState* play, CollisionCheckContext* colCtxt);
-s32 CollisionCheck_GetMassType(u8 mass);
-void CollisionCheck_SetOCvsOC(PlayState* play, Collider* left, ColliderInfo* leftInfo, Vec3f* leftPos, Collider* right, ColliderInfo* rightInfo, Vec3f* rightPos, f32 overlap);
-void CollisionCheck_OC_JntSphVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_JntSphVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_JntSphVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_CylVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_CylVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_CylVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_SphereVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_SphereVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-void CollisionCheck_OC_SphereVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
-s32 CollisionCheck_SkipOC(Collider* collider);
-s32 CollisionCheck_Incompatible(Collider* left, Collider* right);
-void CollisionCheck_OC(PlayState* play, CollisionCheckContext* colCtxt);
-void CollisionCheck_InitInfo(CollisionCheckInfo* info);
-void CollisionCheck_ResetDamage(CollisionCheckInfo* info);
-void CollisionCheck_SetInfoNoDamageTable(CollisionCheckInfo* info, CollisionCheckInfoInit* init);
-void CollisionCheck_SetInfo(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit* init);
-void CollisionCheck_SetInfo2(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit2* init);
-void CollisionCheck_SetInfoGetDamageTable(CollisionCheckInfo* info, s32 index, CollisionCheckInfoInit2* init);
-void CollisionCheck_ApplyDamage(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, ColliderInfo* info);
-void CollisionCheck_ApplyDamageJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_ApplyDamageCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_ApplyDamageTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_ApplyDamageQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_ApplyDamageSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
-void CollisionCheck_Damage(PlayState* play, CollisionCheckContext* colCtxt);
-s32 CollisionCheck_LineOC_JntSph(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
-s32 CollisionCheck_LineOC_Cyl(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
-s32 CollisionCheck_LineOC_Sphere(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
-s32 CollisionCheck_LineOC(PlayState* play, CollisionCheckContext* colChkCtx, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
-s32 CollisionCheck_LineOCCheckAll(PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b);
-s32 CollisionCheck_LineOCCheck(PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
-void Collider_UpdateCylinder(Actor* actor, ColliderCylinder* collider);
-void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
-void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
-void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
-void Collider_SetTrisDim(PlayState* play, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
-void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
-void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, Actor* actor);
-void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
-void CollisionCheck_SpawnRedBlood(PlayState* play, Vec3f* v);
-void CollisionCheck_SpawnWaterDroplets(PlayState* play, Vec3f* v);
-void CollisionCheck_SpawnShieldParticles(PlayState* play, Vec3f* v);
-void CollisionCheck_SpawnShieldParticlesMetal(PlayState* play, Vec3f* v);
-void CollisionCheck_SpawnShieldParticlesMetalSound(PlayState* play, Vec3f* v, Vec3f* pos);
-void CollisionCheck_SpawnShieldParticlesMetal2(PlayState* play, Vec3f* v);
-void CollisionCheck_SpawnShieldParticlesWood(PlayState* play, Vec3f* v, Vec3f* pos);
-s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2);
void Actor_ContinueText(PlayState* play, Actor* actor, u16 textId);
s32 Flags_GetEventChkInf(s32 flag);
void Flags_SetEventChkInf(s32 flag);
@@ -1011,10 +800,6 @@ void SaveContext_Init(void);
void GetItem_Draw(PlayState* play, s16 drawId);
-void SoundSource_InitAll(PlayState* play);
-void SoundSource_UpdateAll(PlayState* play);
-void SoundSource_PlaySfxAtFixedWorldPos(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
-void SoundSource_PlaySfxEachFrameAtFixedWorldPos(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
u16 QuestHint_GetTatlTextId(PlayState* play);
u16 Text_GetFaceReaction(PlayState* play, u32 reactionSet);
@@ -1355,51 +1140,6 @@ Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b);
void OLib_Vec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
void OLib_Vec3fAdd(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
-Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
-Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
-Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
-Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point);
-Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point);
-
-void Interface_StartTimer(s16 timerId, s16 seconds);
-void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
-void Interface_NewDay(PlayState* play, s32 day);
-void Interface_SetHudVisibility(u16 hudVisibility);
-void Interface_UpdateButtonsPart2(PlayState* play);
-void Interface_SetSceneRestrictions(PlayState* play);
-void Interface_InitMinigame(PlayState* play);
-void Interface_LoadItemIconImpl(PlayState* play, u8 btn);
-void Interface_LoadItemIcon(PlayState* play, u8 btn);
-void Interface_UpdateButtonsAlt(PlayState* play, u16 flag);
-u8 Item_Give(PlayState* play, u8 item);
-u8 Item_CheckObtainability(u8 item);
-void Inventory_DeleteItem(s16 item, s16 slot);
-void Inventory_UnequipItem(s16 item);
-s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem);
-void Inventory_UpdateDeitySwordEquip(PlayState* play) ;
-s32 Inventory_HasEmptyBottle(void);
-s32 Inventory_HasItemInBottle(u8 item);
-void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn);
-s32 Inventory_ConsumeFairy(PlayState* play);
-void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item);
-void func_8011552C(PlayState* play, u16 arg1);
-void func_801155B4(PlayState* play, s16 arg1);
-void func_80115764(PlayState* play, UNK_TYPE arg1);
-void func_80115844(PlayState* play, s16 doAction);
-s32 Health_ChangeBy(PlayState* play, s16 healthChange);
-void Health_GiveHearts(s16 hearts);
-void Rupees_ChangeBy(s16 rupeeChange);
-void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
-void Magic_Add(PlayState* play, s16 magicToAdd);
-void Magic_Reset(PlayState* play);
-s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type);
-void Interface_SetPerfectLetters(PlayState* play, s16 perfectLettersType);
-void Interface_StartMoonCrash(PlayState* play);
-void Interface_Draw(PlayState* play);
-void Interface_Update(PlayState* play);
-void Interface_Destroy(PlayState* play);
-void Interface_Init(PlayState* play);
-
Path* Path_GetByIndex(PlayState* play, s16 index, s16 indexNone);
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
void Path_CopyLastPoint(Path* path, Vec3f* dest);
@@ -1498,90 +1238,6 @@ void Inventory_SaveDekuPlaygroundHighScore(s16 timerId);
void Inventory_IncrementSkullTokenCount(s16 sceneIndex);
s16 Inventory_GetSkullTokenCount(s16 sceneIndex);
void Inventory_SaveLotteryCodeGuess(PlayState* play);
-s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
-void Object_InitBank(GameState* gameState, ObjectContext* objectCtx);
-void Object_UpdateBank(ObjectContext* objectCtx);
-s32 Object_GetIndex(ObjectContext* objectCtx, s16 objectId);
-s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index);
-void Object_LoadAll(ObjectContext* objectCtx);
-void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id);
-void Scene_CommandSpawnList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandActorList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandActorCutsceneCamList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandCollisionHeader(PlayState* play, SceneCmd* cmd);
-void Scene_CommandRoomList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandEntranceList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandSpecialFiles(PlayState* play, SceneCmd* cmd);
-void Scene_CommandRoomBehavior(PlayState* play, SceneCmd* cmd);
-void Scene_CommandMesh(PlayState* play, SceneCmd* cmd);
-void Scene_CommandObjectList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandLightList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandPathList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandTransiActorList(PlayState* play, SceneCmd* cmd);
-void Door_InitContext(GameState* gameState, DoorContext* doorCtx);
-void Scene_CommandEnvLightSettings(PlayState* play, SceneCmd* cmd);
-void Scene_LoadAreaTextures(PlayState* play, s32 fileIndex);
-void Scene_CommandSkyboxSettings(PlayState* play, SceneCmd* cmd);
-void Scene_CommandSkyboxDisables(PlayState* play, SceneCmd* cmd);
-void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd);
-void Scene_CommandWindSettings(PlayState* play, SceneCmd* cmd);
-void Scene_CommandExitList(PlayState* play, SceneCmd* cmd);
-void Scene_Command09(PlayState* play, SceneCmd* cmd);
-void Scene_CommandSoundSettings(PlayState* play, SceneCmd* cmd);
-void Scene_CommandEchoSetting(PlayState* play, SceneCmd* cmd);
-void Scene_CommandAltHeaderList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandCutsceneScriptList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandCutsceneList(PlayState* play, SceneCmd* cmd);
-void Scene_CommandMiniMap(PlayState* play, SceneCmd* cmd);
-void Scene_Command1D(PlayState* play, SceneCmd* cmd);
-void Scene_CommandMiniMapCompassInfo(PlayState* play, SceneCmd* cmd);
-void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd);
-void Scene_CommandAnimatedMaterials(PlayState* play, SceneCmd* cmd);
-void Scene_SetExitFade(PlayState* play);
-s32 Scene_ExecuteCommands(PlayState* play, SceneCmd* sceneCmd);
-u16 Entrance_Create(s32 scene, s32 spawn, s32 layer);
-u16 Entrance_CreateFromSpawn(s32 spawn);
-void Scene_Draw(PlayState* play);
-void Scene_DrawConfigDefault(PlayState* play);
-Gfx* AnimatedMat_TexScroll(PlayState* play, AnimatedMatTexScrollParams* params);
-void AnimatedMat_DrawTexScroll(PlayState* play, s32 segment, void* params);
-Gfx* AnimatedMat_TwoLayerTexScroll(PlayState* play, AnimatedMatTexScrollParams* params);
-void AnimatedMat_DrawTwoTexScroll(PlayState* play, s32 segment, void* params);
-void AnimatedMat_SetColor(PlayState* play, s32 segment, F3DPrimColor* primColorResult, F3DEnvColor* envColor);
-void AnimatedMat_DrawColor(PlayState* play, s32 segment, void* params);
-s32 AnimatedMat_Lerp(s32 min, s32 max, f32 norm);
-void AnimatedMat_DrawColorLerp(PlayState* play, s32 segment, void* params);
-f32 Scene_LagrangeInterp(s32 n, f32 x[], f32 fx[], f32 xp);
-u8 Scene_LagrangeInterpColor(s32 n, f32 x[], f32 fx[], f32 xp);
-void AnimatedMat_DrawColorNonLinearInterp(PlayState* play, s32 segment, void* params);
-void AnimatedMat_DrawTexCycle(PlayState* play, s32 segment, void* params);
-void AnimatedMat_DrawMain(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step, u32 flags);
-void AnimatedMat_Draw(PlayState* play, AnimatedMaterial* matAnim);
-void AnimatedMat_DrawOpa(PlayState* play, AnimatedMaterial* matAnim);
-void AnimatedMat_DrawXlu(PlayState* play, AnimatedMaterial* matAnim);
-void AnimatedMat_DrawAlpha(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
-void AnimatedMat_DrawAlphaOpa(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
-void AnimatedMat_DrawAlphaXlu(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
-void AnimatedMat_DrawStep(PlayState* play, AnimatedMaterial* matAnim, u32 step);
-void AnimatedMat_DrawStepOpa(PlayState* play, AnimatedMaterial* matAnim, u32 step);
-void AnimatedMat_DrawStepXlu(PlayState* play, AnimatedMaterial* matAnim, u32 step);
-void AnimatedMat_DrawAlphaStep(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
-void AnimatedMat_DrawAlphaStepOpa(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
-void AnimatedMat_DrawAlphaStepXlu(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
-void Scene_DrawConfigMatAnim(PlayState* play);
-void Scene_DrawConfig3(PlayState* play);
-void Scene_DrawConfig4(PlayState* play);
-void Scene_DrawConfigDoNothing(PlayState* play);
-void Scene_SetRenderModeXlu(PlayState* play, s32 index, u32 flags);
-void Scene_SetCullFlag(PlayState* play, s32 index, u32 flags);
-void Scene_DrawConfig5(PlayState* play);
-void Scene_DrawConfigMatAnimManualStep(PlayState* play);
-void Scene_DrawConfigGreatBayTemple(PlayState* play);
-EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
-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);
diff --git a/include/global.h b/include/global.h
index 9fa3ef7bc..193c2d90d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -2,7 +2,6 @@
#define GLOBAL_H
#include "z64.h"
-#include "regs.h"
#include "functions.h"
#include "variables.h"
#include "macros.h"
diff --git a/include/macros.h b/include/macros.h
index 6b54474b6..7924066b6 100644
--- a/include/macros.h
+++ b/include/macros.h
@@ -3,7 +3,6 @@
#include "libc/stdint.h"
#include "ultra64/convert.h"
-#include "z64.h"
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
diff --git a/include/variables.h b/include/variables.h
index 7cdf40e31..1886d3519 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -366,7 +366,7 @@ extern UNK_PTR D_801AE260[3];
// extern UNK_TYPE1 D_801AE48C;
// extern UNK_TYPE1 D_801AE490;
extern EffectSsOverlay gParticleOverlayTable[39];
-// extern FlagSetEntry sFlagEntries[];
+
// extern s32 sEntryIndex;
// extern u32 sCurrentBit;
// extern s32 sTimer;
@@ -377,36 +377,6 @@ extern BgCheckSceneSubdivisionEntry sSceneSubdivisionList[];
extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
// extern UNK_TYPE1 D_801B4708;
-extern DamageTable sDamageTablePresets[23];
-extern f32 damageMultipliers[16];
-extern Collider defaultCollider;
-extern ColliderTouch defaultColliderTouch;
-extern ColliderBump defaultColliderBump;
-extern ColliderInfo defaultColliderInfo;
-extern ColliderJntSphElementDim defaultColliderJntSphElementDim;
-extern Cylinder16 defaultColliderCylinderDim;
-extern TriNorm defaultColliderTrisElementDim;
-extern ColliderQuadDim defaultColliderQuadDim;
-extern Vec3f defaultLinePoint;
-extern ColChkResetFunc sATResetFuncs[COLSHAPE_MAX];
-extern ColChkResetFunc sACResetFuncs[COLSHAPE_MAX];
-extern ColChkResetFunc sOCResetFuncs[COLSHAPE_MAX];
-extern ColChkBloodFunc sBloodFuncs[6];
-extern HitInfo sHitInfo[14];
-extern ColChkApplyFunc sColChkApplyFuncs[COLSHAPE_MAX];
-extern ColChkVsFunc sACVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
-extern ColChkVsFunc sOCVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
-extern CollisionCheckInfo defaultColChkInfo;
-extern ColChkApplyFunc sApplyDamageFuncs[COLSHAPE_MAX];
-extern ColChkLineFunc sOCLineCheckFuncs[COLSHAPE_MAX];
-extern EffectShieldParticleInit shieldParticleInitMetal;
-extern EffectShieldParticleInit shieldParticleInitWood;
-// extern UNK_TYPE4 D_801BB090;
-// extern UNK_TYPE1 D_801BB094;
-// extern UNK_TYPE1 D_801BB0DC;
-// extern UNK_TYPE2 D_801BB0FC;
-// extern UNK_TYPE1 D_801BB100;
-
extern u8 gOpeningEntranceIndex;
extern ActorCutscene sGlobalCutsceneList[8];
@@ -2250,7 +2220,6 @@ extern s16 D_801F4E7A;
// extern UNK_TYPE1 D_801F5730;
// extern UNK_TYPE1 D_801F57B4;
// extern UNK_TYPE1 D_801F5834;
-// extern NmiBuff* gNMIBuffer;
// extern UNK_TYPE1 sSkyboxDrawMatrix;
// extern UNK_TYPE1 D_801F6AF0;
diff --git a/include/z64.h b/include/z64.h
index 641a060b4..6d9ff59be 100644
--- a/include/z64.h
+++ b/include/z64.h
@@ -60,67 +60,12 @@
#include "z64schedule.h"
#include "z64skin.h"
#include "z64skybox.h"
+#include "z64sound_source.h"
#include "z64subs.h"
#include "z64transition.h"
#include "z64view.h"
#include "regs.h"
-#define Z_THREAD_ID_IDLE 1
-#define Z_THREAD_ID_SLOWLY 2
-#define Z_THREAD_ID_MAIN 3
-#define Z_THREAD_ID_GRAPH 4
-#define Z_THREAD_ID_SCHED 5
-#define Z_THREAD_ID_FLASHROM 13
-#define Z_THREAD_ID_DMAMGR 18
-#define Z_THREAD_ID_IRQMGR 19
-
-#define Z_PRIORITY_SLOWLY 5
-#define Z_PRIORITY_GRAPH 9
-#define Z_PRIORITY_AUDIOMGR 11
-#define Z_PRIORITY_IDLE 12
-#define Z_PRIORITY_MAIN 12
-#define Z_PRIORITY_FLASHROM 13
-#define Z_PRIORITY_PADMGR 15
-#define Z_PRIORITY_SCHED 16
-#define Z_PRIORITY_DMAMGR 17
-#define Z_PRIORITY_IRQMGR 18
-
-typedef enum {
- /* -1 */ EQUIP_SLOT_NONE = -1,
- /* 0 */ EQUIP_SLOT_B,
- /* 1 */ EQUIP_SLOT_C_LEFT,
- /* 2 */ EQUIP_SLOT_C_DOWN,
- /* 3 */ EQUIP_SLOT_C_RIGHT,
- /* 4 */ EQUIP_SLOT_A
-} EquipSlot;
-
-typedef struct {
- /* 0x0 */ s8 segment;
- /* 0x2 */ s16 type;
- /* 0x4 */ void* params;
-} AnimatedMaterial; // size = 0x8
-
-typedef struct {
- /* 0x0 */ Vec3s pos;
- /* 0x6 */ s16 unk_06;
- /* 0x8 */ Gfx* opa;
- /* 0xC */ Gfx* xlu;
-} PolygonDlist2; // size = 0x10
-
-typedef struct {
- /* 0x0 */ u8 type;
- /* 0x1 */ u8 num; // number of dlist entries
- /* 0x4 */ void* start;
- /* 0x8 */ void* end;
-} PolygonType2; // size = 0xC
-
-typedef struct {
- /* 0x00 */ u32 resetting;
- /* 0x04 */ u32 resetCount;
- /* 0x08 */ OSTime duration;
- /* 0x10 */ OSTime resetTime;
-} NmiBuff; // size >= 0x18
-
typedef struct {
/* 0x00 */ s32 requestType;
/* 0x04 */ OSMesg response;
@@ -162,14 +107,6 @@ typedef struct {
/* 0x38 */ FaultDrawerCallback inputCallback;
} FaultDrawer; // size = 0x3C
-typedef struct {
- /* 0x00 */ u8 countdown;
- /* 0x01 */ u8 playSfxEachFrame;
- /* 0x02 */ u16 sfxId;
- /* 0x04 */ Vec3f worldPos;
- /* 0x10 */ Vec3f projectedPos;
-} SoundSource; // size = 0x1C
-
typedef void(*fault_update_input_func)(Input* input);
typedef struct {
@@ -411,12 +348,6 @@ typedef struct {
struct PlayState;
-typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*);
-typedef void (*ColChkBloodFunc)(struct PlayState*, Collider*, Vec3f*);
-typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Collider*);
-typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*);
-typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
-
typedef struct {
/* 0x000 */ IrqMgr* irqMgr;
/* 0x004 */ SchedContext* sched;
@@ -456,7 +387,7 @@ typedef struct PlayState {
/* 0x00830 */ CollisionContext colCtx;
/* 0x01CA0 */ ActorContext actorCtx;
/* 0x01F24 */ CutsceneContext csCtx;
- /* 0x01F78 */ SoundSource soundSources[16];
+ /* 0x01F78 */ SoundSource soundSources[SOUND_SOURCE_COUNT];
/* 0x02138 */ EffFootmark footprintInfo[100];
/* 0x046B8 */ SramContext sramCtx;
/* 0x046E0 */ SkyboxContext skyboxCtx;
@@ -568,11 +499,6 @@ typedef struct {
/* 0x14 */ Gfx* dList;
} VisMono; // size = 0x18
-typedef struct {
- /* 0x0 */ u8* value;
- /* 0x4 */ const char* name;
-} FlagSetEntry; // size = 0x8
-
// TODO: Dedicated Header?
#define FRAM_BASE_ADDRESS 0x08000000 // FRAM Base Address in Cart Memory
#define FRAM_STATUS_REGISTER FRAM_BASE_ADDRESS // FRAM Base Address in Cart Memory
diff --git a/include/z64actor.h b/include/z64actor.h
index 3051f2c6e..e08a477e6 100644
--- a/include/z64actor.h
+++ b/include/z64actor.h
@@ -25,71 +25,17 @@ typedef void(*ActorFunc)(struct Actor* this, struct PlayState* play);
typedef u16 (*NpcGetTextIdFunc)(struct PlayState*, struct Actor*);
typedef s16 (*NpcUpdateTalkStateFunc)(struct PlayState*, struct Actor*);
-typedef struct {
+typedef struct PosRot {
/* 0x00 */ Vec3f pos;
/* 0x0C */ Vec3s rot;
} PosRot; // size = 0x14
typedef struct {
- /* 0x00 */ u8 attack[32];
-} DamageTable; // size = 0x20
-
-typedef struct {
- /* 0x0 */ u8 health;
- /* 0x2 */ s16 cylRadius;
- /* 0x4 */ s16 cylHeight;
- /* 0x6 */ u8 mass;
-} CollisionCheckInfoInit; // size = 0x8
-
-typedef struct {
- /* 0x0 */ u8 health;
- /* 0x2 */ s16 cylRadius;
- /* 0x4 */ s16 cylHeight;
- /* 0x6 */ s16 cylYShift;
- /* 0x8 */ u8 mass;
-} CollisionCheckInfoInit2; // size = 0xC
-
-typedef struct {
- /* 0x00 */ DamageTable* damageTable;
- /* 0x04 */ Vec3f displacement;
- /* 0x10 */ s16 cylRadius;
- /* 0x12 */ s16 cylHeight;
- /* 0x14 */ s16 cylYShift;
- /* 0x16 */ u8 mass;
- /* 0x17 */ u8 health;
- /* 0x18 */ u8 damage;
- /* 0x19 */ u8 damageEffect;
- /* 0x1A */ u8 atHitEffect;
- /* 0x1B */ u8 acHitEffect;
-} CollisionCheckInfo; // size = 0x1C
-
-typedef struct {
- /* 0x00 */ s32 unk0;
- /* 0x04 */ s32 unk4;
- /* 0x08 */ f32 unk8;
- /* 0x0C */ f32 unkC;
- /* 0x10 */ f32 unk10;
- /* 0x14 */ f32 unk14;
- /* 0x18 */ f32 unk18;
- /* 0x1C */ f32 unk1C;
- /* 0x20 */ f32 unk20;
- /* 0x24 */ f32 unk24;
- /* 0x28 */ f32 unk28;
- /* 0x2C */ f32 unk2C;
- /* 0x30 */ s16 unk30;
- /* 0x32 */ s16 unk32;
- /* 0x34 */ s16 unk34;
- /* 0x36 */ s16 unk36;
- /* 0x38 */ s16 unk38;
- /* 0x3A */ s16 unk3A;
-} ActorEnTest20C; // size = 0x3C
-
-typedef struct {
/* 0x0 */ s16 unk_0; // frame?
/* 0x2 */ Vec3s unk_2; // scale
} struct_80124618; // size = 0x8
-typedef struct {
+typedef struct ActorInit {
/* 0x00 */ s16 id;
/* 0x02 */ u8 type;
/* 0x04 */ u32 flags;
diff --git a/include/z64animation_legacy.h b/include/z64animation_legacy.h
index 238939f74..44751f385 100644
--- a/include/z64animation_legacy.h
+++ b/include/z64animation_legacy.h
@@ -1,5 +1,5 @@
-#ifndef Z64_ANIMATION_LEGACY_H
-#define Z64_ANIMATION_LEGACY_H
+#ifndef Z64ANIMATION_LEGACY_H
+#define Z64ANIMATION_LEGACY_H
#include "ultra64.h"
#include "z64math.h"
diff --git a/include/z64collision_check.h b/include/z64collision_check.h
index e5032584c..403ffa546 100644
--- a/include/z64collision_check.h
+++ b/include/z64collision_check.h
@@ -6,6 +6,7 @@
#include "unk.h"
struct Actor;
+struct PlayState;
typedef struct {
/* 0x00 */ struct Actor* actor; // Attached actor
@@ -427,5 +428,250 @@ typedef enum {
#define DMG_UNK_0x1E (1 << 0x1E)
#define DMG_POWDER_KEG (1 << 0x1F)
+typedef struct DamageTable {
+ /* 0x00 */ u8 attack[32];
+} DamageTable; // size = 0x20
+
+typedef struct CollisionCheckInfoInit {
+ /* 0x0 */ u8 health;
+ /* 0x2 */ s16 cylRadius;
+ /* 0x4 */ s16 cylHeight;
+ /* 0x6 */ u8 mass;
+} CollisionCheckInfoInit; // size = 0x8
+
+typedef struct CollisionCheckInfoInit2 {
+ /* 0x0 */ u8 health;
+ /* 0x2 */ s16 cylRadius;
+ /* 0x4 */ s16 cylHeight;
+ /* 0x6 */ s16 cylYShift;
+ /* 0x8 */ u8 mass;
+} CollisionCheckInfoInit2; // size = 0xC
+
+typedef struct CollisionCheckInfo {
+ /* 0x00 */ DamageTable* damageTable;
+ /* 0x04 */ Vec3f displacement;
+ /* 0x10 */ s16 cylRadius;
+ /* 0x12 */ s16 cylHeight;
+ /* 0x14 */ s16 cylYShift;
+ /* 0x16 */ u8 mass;
+ /* 0x17 */ u8 health;
+ /* 0x18 */ u8 damage;
+ /* 0x19 */ u8 damageEffect;
+ /* 0x1A */ u8 atHitEffect;
+ /* 0x1B */ u8 acHitEffect;
+} CollisionCheckInfo; // size = 0x1C
+
+
+DamageTable* DamageTable_Get(s32 index);
+void DamageTable_Clear(DamageTable* damageTable);
+f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
+f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderInfo* ac);
+s32 CollisionCheck_GetToucherDamage(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo);
+s32 Collider_InitBase(struct PlayState* play, Collider* collider);
+s32 Collider_DestroyBase(struct PlayState* play, Collider* collider);
+s32 Collider_SetBaseToActor(struct PlayState* play, Collider* collider, ColliderInitToActor* src);
+s32 Collider_SetBaseType1(struct PlayState* play, Collider* collider, struct Actor* actor, ColliderInitType1* src);
+s32 Collider_SetBase(struct PlayState* play, Collider* collider, struct Actor* actor, ColliderInit* src);
+void Collider_ResetATBase(struct PlayState* play, Collider* collider);
+void Collider_ResetACBase(struct PlayState* play, Collider* collider);
+void Collider_ResetOCBase(struct PlayState* play, Collider* collider);
+s32 Collider_InitTouch(struct PlayState* play, ColliderTouch* touch);
+s32 Collider_DestroyTouch(struct PlayState* play, ColliderTouch* touch);
+s32 Collider_SetTouch(struct PlayState* play, ColliderTouch* touch, ColliderTouchInit* src);
+void Collider_ResetATInfoUnk(struct PlayState* play, ColliderInfo* info);
+s32 Collider_InitBump(struct PlayState* play, ColliderBump* bump);
+s32 Collider_DestroyBump(struct PlayState* play, ColliderBump* bump);
+s32 Collider_SetBump(struct PlayState* play, ColliderBump* bump, ColliderBumpInit* src);
+s32 Collider_InitInfo(struct PlayState* play, ColliderInfo* info);
+s32 Collider_DestroyInfo(struct PlayState* play, ColliderInfo* info);
+s32 Collider_SetInfo(struct PlayState* play, ColliderInfo* info, ColliderInfoInit* src);
+void Collider_ResetATInfo(struct PlayState* play, ColliderInfo* info);
+void Collider_ResetACInfo(struct PlayState* play, ColliderInfo* info);
+void Collider_ResetOCInfo(struct PlayState* play, ColliderInfo* info);
+s32 Collider_InitJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
+s32 Collider_DestroyJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
+s32 Collider_SetJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
+s32 Collider_InitJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
+s32 Collider_DestroyJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
+s32 Collider_SetJntSphElement(struct PlayState* play, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
+s32 Collider_ResetJntSphElementAT(struct PlayState* play, ColliderJntSphElement* collider);
+s32 Collider_ResetJntSphElementAC(struct PlayState* play, ColliderJntSphElement* collider);
+s32 Collider_ResetJntSphElementOC(struct PlayState* play, ColliderJntSphElement* collider);
+s32 Collider_InitJntSph(struct PlayState* play, ColliderJntSph* collider);
+s32 Collider_FreeJntSph(struct PlayState* play, ColliderJntSph* collider);
+s32 Collider_DestroyJntSph(struct PlayState* play, ColliderJntSph* collider);
+s32 Collider_SetJntSphToActor(struct PlayState* play, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
+s32 Collider_SetJntSphAllocType1(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInitType1* src);
+s32 Collider_SetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
+s32 Collider_InitAndSetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
+s32 Collider_ResetJntSphAT(struct PlayState* play, Collider* collider);
+s32 Collider_ResetJntSphAC(struct PlayState* play, Collider* collider);
+s32 Collider_ResetJntSphOC(struct PlayState* play, Collider* collider);
+s32 Collider_InitCylinderDim(struct PlayState* play, Cylinder16* dim);
+s32 Collider_DestroyCylinderDim(struct PlayState* play, Cylinder16* dim);
+s32 Collider_SetCylinderDim(struct PlayState* play, Cylinder16* dim, Cylinder16* src);
+s32 Collider_InitCylinder(struct PlayState* play, ColliderCylinder* collider);
+s32 Collider_DestroyCylinder(struct PlayState* play, ColliderCylinder* collider);
+s32 Collider_SetCylinderToActor(struct PlayState* play, ColliderCylinder* collider, ColliderCylinderInitToActor* src);
+s32 Collider_SetCylinderType1(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInitType1* src);
+s32 Collider_SetCylinder(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInit* src);
+s32 Collider_InitAndSetCylinder(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInit* src);
+s32 Collider_ResetCylinderAT(struct PlayState* play, Collider* collider);
+s32 Collider_ResetCylinderAC(struct PlayState* play, Collider* collider);
+s32 Collider_ResetCylinderOC(struct PlayState* play, Collider* collider);
+s32 Collider_InitTrisElementDim(struct PlayState* play, TriNorm* dim);
+s32 Collider_DestroyTrisElementDim(struct PlayState* play, TriNorm* dim);
+s32 Collider_SetTrisElementDim(struct PlayState* play, TriNorm* dim, ColliderTrisElementDimInit* src);
+s32 Collider_InitTrisElement(struct PlayState* play, ColliderTrisElement* element);
+s32 Collider_DestroyTrisElement(struct PlayState* play, ColliderTrisElement* element);
+s32 Collider_SetTrisElement(struct PlayState* play, ColliderTrisElement* element, ColliderTrisElementInit* src);
+s32 Collider_ResetTrisElementAT(struct PlayState* play, ColliderTrisElement* element);
+s32 Collider_ResetTrisElementAC(struct PlayState* play, ColliderTrisElement* element);
+s32 Collider_ResetTrisElementOC(struct PlayState* play, ColliderTrisElement* element);
+s32 Collider_InitTris(struct PlayState* play, ColliderTris* tris);
+s32 Collider_FreeTris(struct PlayState* play, ColliderTris* tris);
+s32 Collider_DestroyTris(struct PlayState* play, ColliderTris* tris);
+s32 Collider_SetTrisAllocType1(struct PlayState* play, ColliderTris* tris, struct Actor* actor, ColliderTrisInitType1* src);
+s32 Collider_SetTris(struct PlayState* play, ColliderTris* triGroup, struct Actor* actor, ColliderTrisInit* src, ColliderTrisElement* tris);
+s32 Collider_InitAndSetTris(struct PlayState* play, ColliderTris* tris, struct Actor* actor, ColliderTrisInit* src, ColliderTrisElement* elements);
+s32 Collider_ResetTrisAT(struct PlayState* play, Collider* collider);
+s32 Collider_ResetTrisAC(struct PlayState* play, Collider* collider);
+s32 Collider_ResetTrisOC(struct PlayState* play, Collider* collider);
+s32 Collider_InitQuadDim(struct PlayState* play, ColliderQuadDim* dim);
+s32 Collider_DestroyQuadDim(struct PlayState* play, ColliderQuadDim* dim);
+s32 Collider_ResetQuadACDist(struct PlayState* play, ColliderQuadDim* dim);
+void Collider_SetQuadMidpoints(ColliderQuadDim* dim);
+s32 Collider_SetQuadDim(struct PlayState* play, ColliderQuadDim* dim, ColliderQuadDimInit* init);
+s32 Collider_InitQuad(struct PlayState* play, ColliderQuad* collider);
+s32 Collider_DestroyQuad(struct PlayState* play, ColliderQuad* collider);
+s32 Collider_SetQuadType1(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInitType1* src);
+s32 Collider_SetQuad(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInit* src);
+s32 Collider_InitAndSetQuad(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInit* src);
+s32 Collider_ResetQuadAT(struct PlayState* play, Collider* collider);
+s32 Collider_ResetQuadAC(struct PlayState* play, Collider* collider);
+s32 Collider_ResetQuadOC(struct PlayState* play, Collider* collider);
+s32 Collider_QuadSetNearestAC(struct PlayState* play, ColliderQuad* quad, Vec3f* hitPos);
+s32 Collider_InitSphere(struct PlayState* play, ColliderSphere* collider);
+s32 Collider_DestroySphere(struct PlayState* play, ColliderSphere* collider);
+s32 Collider_SetSphere(struct PlayState* play, ColliderSphere* collider, struct Actor* actor, ColliderSphereInit* src);
+s32 Collider_InitAndSetSphere(struct PlayState* play, ColliderSphere* collider, struct Actor* actor, ColliderSphereInit* src);
+s32 Collider_ResetSphereAT(struct PlayState* play, Collider* collider);
+s32 Collider_ResetSphereAC(struct PlayState* play, Collider* collider);
+s32 Collider_ResetSphereOC(struct PlayState* play, Collider* collider);
+s32 Collider_InitLine(struct PlayState* play, OcLine* line);
+s32 Collider_DestroyLine(struct PlayState* play, OcLine* line);
+s32 Collider_SetLinePoints(struct PlayState* play, OcLine* line, Vec3f* a, Vec3f* b);
+s32 Collider_SetLine(struct PlayState* play, OcLine* line, OcLine* src);
+s32 Collider_ResetLineOC(struct PlayState* play, OcLine* line);
+void CollisionCheck_InitContext(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_DestroyContext(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_ClearContext(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_EnableSAC(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_DisableSAC(struct PlayState* play, CollisionCheckContext* colCtxt);
+s32 CollisionCheck_SetAT(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+s32 CollisionCheck_SetAT_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
+s32 CollisionCheck_SetAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+s32 CollisionCheck_SetAC_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
+s32 CollisionCheck_SetOC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+s32 CollisionCheck_SetOC_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
+s32 CollisionCheck_SetOCLine(struct PlayState* play, CollisionCheckContext* colCtxt, OcLine* line);
+s32 CollisionCheck_SkipTouch(ColliderInfo* info);
+s32 CollisionCheck_SkipBump(ColliderInfo* info);
+s32 CollisionCheck_NoSharedFlags(ColliderInfo* toucher, ColliderInfo* bumper);
+void CollisionCheck_NoBlood(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_BlueBlood(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_GreenBlood(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_WaterBurst(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_RedBlood(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_RedBloodUnused(struct PlayState* play, Collider* collider, Vec3f* v);
+void CollisionCheck_HitSolid(struct PlayState* play, ColliderInfo* info, Collider* collider, Vec3f* hitPos);
+s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo);
+void CollisionCheck_HitEffects(struct PlayState* play, Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, Vec3f* hitPos);
+void CollisionCheck_SetBounce(Collider* at, Collider* ac);
+s32 CollisionCheck_SetATvsAC(struct PlayState* play, Collider* at, ColliderInfo* atInfo, Vec3f* atPos, Collider* ac, ColliderInfo* acInfo, Vec3f* acPos, Vec3f* hitPos);
+void CollisionCheck_TrisAvgPoint(ColliderTrisElement* tri, Vec3f* avg);
+void CollisionCheck_QuadAvgPoint(ColliderQuad* quad, Vec3f* avg);
+void CollisionCheck_AC_JntSphVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_JntSphVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_JntSphVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_JntSphVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_JntSphVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_CylVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_CylVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_CylVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_CylVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_CylVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_TrisVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_TrisVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_TrisVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_TrisVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_TrisVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_QuadVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_QuadVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_QuadVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_QuadVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_QuadVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_SphereVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_SphereVsCylinder(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_SphereVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_SphereVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_AC_SphereVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
+void CollisionCheck_SetJntSphHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_SetCylHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_SetTrisHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_SetQuadHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_SetSphereHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_SetHitEffects(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_AC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT);
+void CollisionCheck_AT(struct PlayState* play, CollisionCheckContext* colCtxt);
+s32 CollisionCheck_GetMassType(u8 mass);
+void CollisionCheck_SetOCvsOC(struct PlayState* play, Collider* left, ColliderInfo* leftInfo, Vec3f* leftPos, Collider* right, ColliderInfo* rightInfo, Vec3f* rightPos, f32 overlap);
+void CollisionCheck_OC_JntSphVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_JntSphVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_JntSphVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_CylVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_CylVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_CylVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_SphereVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_SphereVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+void CollisionCheck_OC_SphereVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
+s32 CollisionCheck_SkipOC(Collider* collider);
+s32 CollisionCheck_Incompatible(Collider* left, Collider* right);
+void CollisionCheck_OC(struct PlayState* play, CollisionCheckContext* colCtxt);
+void CollisionCheck_InitInfo(CollisionCheckInfo* info);
+void CollisionCheck_ResetDamage(CollisionCheckInfo* info);
+void CollisionCheck_SetInfoNoDamageTable(CollisionCheckInfo* info, CollisionCheckInfoInit* init);
+void CollisionCheck_SetInfo(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit* init);
+void CollisionCheck_SetInfo2(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit2* init);
+void CollisionCheck_SetInfoGetDamageTable(CollisionCheckInfo* info, s32 index, CollisionCheckInfoInit2* init);
+void CollisionCheck_ApplyDamage(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, ColliderInfo* info);
+void CollisionCheck_ApplyDamageJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_ApplyDamageCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_ApplyDamageTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_ApplyDamageQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_ApplyDamageSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
+void CollisionCheck_Damage(struct PlayState* play, CollisionCheckContext* colCtxt);
+s32 CollisionCheck_LineOC_JntSph(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
+s32 CollisionCheck_LineOC_Cyl(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
+s32 CollisionCheck_LineOC_Sphere(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
+s32 CollisionCheck_LineOC(struct PlayState* play, CollisionCheckContext* colChkCtx, Vec3f* a, Vec3f* b, struct Actor** exclusions, s32 numExclusions);
+s32 CollisionCheck_LineOCCheckAll(struct PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b);
+s32 CollisionCheck_LineOCCheck(struct PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b, struct Actor** exclusions, s32 numExclusions);
+void Collider_UpdateCylinder(struct Actor* actor, ColliderCylinder* collider);
+void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
+void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
+void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
+void Collider_SetTrisDim(struct PlayState* play, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
+void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
+void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, struct Actor* actor);
+void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
+void CollisionCheck_SpawnRedBlood(struct PlayState* play, Vec3f* v);
+void CollisionCheck_SpawnWaterDroplets(struct PlayState* play, Vec3f* v);
+void CollisionCheck_SpawnShieldParticles(struct PlayState* play, Vec3f* v);
+void CollisionCheck_SpawnShieldParticlesMetal(struct PlayState* play, Vec3f* v);
+void CollisionCheck_SpawnShieldParticlesMetalSound(struct PlayState* play, Vec3f* v, Vec3f* pos);
+void CollisionCheck_SpawnShieldParticlesMetal2(struct PlayState* play, Vec3f* v);
+void CollisionCheck_SpawnShieldParticlesWood(struct PlayState* play, Vec3f* v, Vec3f* pos);
+s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2);
#endif
diff --git a/include/z64game.h b/include/z64game.h
index c5551edc7..87dc80764 100644
--- a/include/z64game.h
+++ b/include/z64game.h
@@ -1,5 +1,5 @@
-#ifndef Z64_GAME_H
-#define Z64_GAME_H
+#ifndef Z64GAME_H
+#define Z64GAME_H
#include "ultra64.h"
#include "libc/stdbool.h"
diff --git a/include/z64interface.h b/include/z64interface.h
index e01baa425..c83630cbf 100644
--- a/include/z64interface.h
+++ b/include/z64interface.h
@@ -5,6 +5,15 @@
#include "z64view.h"
typedef enum {
+ /* -1 */ EQUIP_SLOT_NONE = -1,
+ /* 0 */ EQUIP_SLOT_B,
+ /* 1 */ EQUIP_SLOT_C_LEFT,
+ /* 2 */ EQUIP_SLOT_C_DOWN,
+ /* 3 */ EQUIP_SLOT_C_RIGHT,
+ /* 4 */ EQUIP_SLOT_A
+} EquipSlot;
+
+typedef enum {
/* 0 */ A_BTN_STATE_0,
/* 1 */ A_BTN_STATE_1,
/* 2 */ A_BTN_STATE_2,
@@ -213,4 +222,49 @@ typedef struct {
/* 0x344 */ size_t storySize;
} InterfaceContext; // size = 0x348
+Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
+Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
+Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
+Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point);
+Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point);
+
+void Interface_StartTimer(s16 timerId, s16 seconds);
+void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
+void Interface_NewDay(struct PlayState* play, s32 day);
+void Interface_SetHudVisibility(u16 hudVisibility);
+void Interface_UpdateButtonsPart2(struct PlayState* play);
+void Interface_SetSceneRestrictions(struct PlayState* play);
+void Interface_InitMinigame(struct PlayState* play);
+void Interface_LoadItemIconImpl(struct PlayState* play, u8 btn);
+void Interface_LoadItemIcon(struct PlayState* play, u8 btn);
+void Interface_UpdateButtonsAlt(struct PlayState* play, u16 flag);
+u8 Item_Give(struct PlayState* play, u8 item);
+u8 Item_CheckObtainability(u8 item);
+void Inventory_DeleteItem(s16 item, s16 slot);
+void Inventory_UnequipItem(s16 item);
+s32 Inventory_ReplaceItem(struct PlayState* play, u8 oldItem, u8 newItem);
+void Inventory_UpdateDeitySwordEquip(struct PlayState* play);
+s32 Inventory_HasEmptyBottle(void);
+s32 Inventory_HasItemInBottle(u8 item);
+void Inventory_UpdateBottleItem(struct PlayState* play, u8 item, u8 btn);
+s32 Inventory_ConsumeFairy(struct PlayState* play);
+void Inventory_UpdateItem(struct PlayState* play, s16 slot, s16 item);
+void func_8011552C(struct PlayState* play, u16 arg1);
+void func_801155B4(struct PlayState* play, s16 arg1);
+void func_80115764(struct PlayState* play, UNK_TYPE arg1);
+void func_80115844(struct PlayState* play, s16 doAction);
+s32 Health_ChangeBy(struct PlayState* play, s16 healthChange);
+void Health_GiveHearts(s16 hearts);
+void Rupees_ChangeBy(s16 rupeeChange);
+void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
+void Magic_Add(struct PlayState* play, s16 magicToAdd);
+void Magic_Reset(struct PlayState* play);
+s32 Magic_Consume(struct PlayState* play, s16 magicToConsume, s16 type);
+void Interface_SetPerfectLetters(struct PlayState* play, s16 perfectLettersType);
+void Interface_StartMoonCrash(struct PlayState* play);
+void Interface_Draw(struct PlayState* play);
+void Interface_Update(struct PlayState* play);
+void Interface_Destroy(struct PlayState* play);
+void Interface_Init(struct PlayState* play);
+
#endif
diff --git a/include/z64scene.h b/include/z64scene.h
index 5505f08e3..55c959b31 100644
--- a/include/z64scene.h
+++ b/include/z64scene.h
@@ -6,6 +6,9 @@
#include "z64cutscene.h"
#include "unk.h"
+struct GameState;
+struct PlayState;
+
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
typedef struct {
@@ -460,6 +463,16 @@ typedef struct {
} AnimatedMatTexCycleParams; // size = 0xC
typedef struct {
+ /* 0x0 */ s8 segment;
+ /* 0x2 */ s16 type;
+ /* 0x4 */ void* params;
+} AnimatedMaterial; // size = 0x8
+
+// TODO: ZAPD
+typedef RoomShapeCullableEntry PolygonDlist2;
+typedef RoomShapeCullable PolygonType2;
+
+typedef struct {
/* 0x000 */ void* spaceStart;
/* 0x004 */ void* spaceEnd;
/* 0x008 */ u8 num;
@@ -885,4 +898,89 @@ typedef enum {
#define SCENE_CMD_MISC_SETTINGS SCENE_CMD_SET_REGION_VISITED
#define SCENE_CMD_CUTSCENE_LIST SCENE_CMD_CUTSCENE_SCRIPT_LIST
+s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
+void Object_InitBank(struct GameState* gameState, ObjectContext* objectCtx);
+void Object_UpdateBank(ObjectContext* objectCtx);
+s32 Object_GetIndex(ObjectContext* objectCtx, s16 objectId);
+s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index);
+void Object_LoadAll(ObjectContext* objectCtx);
+void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id);
+void Scene_CommandSpawnList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandActorList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandActorCutsceneCamList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandCollisionHeader(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandRoomList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandEntranceList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandSpecialFiles(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandRoomBehavior(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandMesh(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandObjectList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandLightList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandPathList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandTransiActorList(struct PlayState* play, SceneCmd* cmd);
+void Door_InitContext(struct GameState* gameState, DoorContext* doorCtx);
+void Scene_CommandEnvLightSettings(struct PlayState* play, SceneCmd* cmd);
+void Scene_LoadAreaTextures(struct PlayState* play, s32 fileIndex);
+void Scene_CommandSkyboxSettings(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandSkyboxDisables(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandTimeSettings(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandWindSettings(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandExitList(struct PlayState* play, SceneCmd* cmd);
+void Scene_Command09(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandSoundSettings(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandEchoSetting(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandAltHeaderList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandCutsceneScriptList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandCutsceneList(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandMiniMap(struct PlayState* play, SceneCmd* cmd);
+void Scene_Command1D(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandMiniMapCompassInfo(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandSetRegionVisitedFlag(struct PlayState* play, SceneCmd* cmd);
+void Scene_CommandAnimatedMaterials(struct PlayState* play, SceneCmd* cmd);
+void Scene_SetExitFade(struct PlayState* play);
+s32 Scene_ExecuteCommands(struct PlayState* play, SceneCmd* sceneCmd);
+u16 Entrance_Create(s32 scene, s32 spawn, s32 layer);
+u16 Entrance_CreateFromSpawn(s32 spawn);
+void Scene_Draw(struct PlayState* play);
+void Scene_DrawConfigDefault(struct PlayState* play);
+Gfx* AnimatedMat_TexScroll(struct PlayState* play, AnimatedMatTexScrollParams* params);
+void AnimatedMat_DrawTexScroll(struct PlayState* play, s32 segment, void* params);
+Gfx* AnimatedMat_TwoLayerTexScroll(struct PlayState* play, AnimatedMatTexScrollParams* params);
+void AnimatedMat_DrawTwoTexScroll(struct PlayState* play, s32 segment, void* params);
+void AnimatedMat_SetColor(struct PlayState* play, s32 segment, F3DPrimColor* primColorResult, F3DEnvColor* envColor);
+void AnimatedMat_DrawColor(struct PlayState* play, s32 segment, void* params);
+s32 AnimatedMat_Lerp(s32 min, s32 max, f32 norm);
+void AnimatedMat_DrawColorLerp(struct PlayState* play, s32 segment, void* params);
+f32 Scene_LagrangeInterp(s32 n, f32 x[], f32 fx[], f32 xp);
+u8 Scene_LagrangeInterpColor(s32 n, f32 x[], f32 fx[], f32 xp);
+void AnimatedMat_DrawColorNonLinearInterp(struct PlayState* play, s32 segment, void* params);
+void AnimatedMat_DrawTexCycle(struct PlayState* play, s32 segment, void* params);
+void AnimatedMat_DrawMain(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step, u32 flags);
+void AnimatedMat_Draw(struct PlayState* play, AnimatedMaterial* matAnim);
+void AnimatedMat_DrawOpa(struct PlayState* play, AnimatedMaterial* matAnim);
+void AnimatedMat_DrawXlu(struct PlayState* play, AnimatedMaterial* matAnim);
+void AnimatedMat_DrawAlpha(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
+void AnimatedMat_DrawAlphaOpa(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
+void AnimatedMat_DrawAlphaXlu(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
+void AnimatedMat_DrawStep(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
+void AnimatedMat_DrawStepOpa(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
+void AnimatedMat_DrawStepXlu(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
+void AnimatedMat_DrawAlphaStep(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
+void AnimatedMat_DrawAlphaStepOpa(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
+void AnimatedMat_DrawAlphaStepXlu(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
+void Scene_DrawConfigMatAnim(struct PlayState* play);
+void Scene_DrawConfig3(struct PlayState* play);
+void Scene_DrawConfig4(struct PlayState* play);
+void Scene_DrawConfigDoNothing(struct PlayState* play);
+void Scene_SetRenderModeXlu(struct PlayState* play, s32 index, u32 flags);
+void Scene_SetCullFlag(struct PlayState* play, s32 index, u32 flags);
+void Scene_DrawConfig5(struct PlayState* play);
+void Scene_DrawConfigMatAnimManualStep(struct PlayState* play);
+void Scene_DrawConfigGreatBayTemple(struct PlayState* play);
+EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
+s32 Entrance_GetSceneId(u16 entrance);
+s32 Entrance_GetSceneIdAbsolute(u16 entrance);
+s32 Entrance_GetSpawnNum(u16 entrance);
+s32 Entrance_GetTransitionFlags(u16 entrance);
+
#endif
diff --git a/include/z64sound_source.h b/include/z64sound_source.h
new file mode 100644
index 000000000..b841f8326
--- /dev/null
+++ b/include/z64sound_source.h
@@ -0,0 +1,24 @@
+#ifndef Z64SOUND_SOURCE_H
+#define Z64SOUND_SOURCE_H
+
+#include "ultra64.h"
+#include "z64math.h"
+
+struct PlayState;
+
+typedef struct {
+ /* 0x00 */ u8 countdown;
+ /* 0x01 */ u8 playSfxEachFrame;
+ /* 0x02 */ u16 sfxId;
+ /* 0x04 */ Vec3f worldPos;
+ /* 0x10 */ Vec3f projectedPos;
+} SoundSource; // size = 0x1C
+
+#define SOUND_SOURCE_COUNT 16
+
+void SoundSource_InitAll(struct PlayState* play);
+void SoundSource_UpdateAll(struct PlayState* play);
+void SoundSource_PlaySfxAtFixedWorldPos(struct PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
+void SoundSource_PlaySfxEachFrameAtFixedWorldPos(struct PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
+
+#endif
diff --git a/include/z64thread.h b/include/z64thread.h
new file mode 100644
index 000000000..c0baba84f
--- /dev/null
+++ b/include/z64thread.h
@@ -0,0 +1,24 @@
+#ifndef Z64THREAD_H
+#define Z64THREAD_H
+
+#define Z_THREAD_ID_IDLE 1
+#define Z_THREAD_ID_SLOWLY 2
+#define Z_THREAD_ID_MAIN 3
+#define Z_THREAD_ID_GRAPH 4
+#define Z_THREAD_ID_SCHED 5
+#define Z_THREAD_ID_FLASHROM 13
+#define Z_THREAD_ID_DMAMGR 18
+#define Z_THREAD_ID_IRQMGR 19
+
+#define Z_PRIORITY_SLOWLY 5
+#define Z_PRIORITY_GRAPH 9
+#define Z_PRIORITY_AUDIOMGR 11
+#define Z_PRIORITY_IDLE 12
+#define Z_PRIORITY_MAIN 12
+#define Z_PRIORITY_FLASHROM 13
+#define Z_PRIORITY_PADMGR 15
+#define Z_PRIORITY_SCHED 16
+#define Z_PRIORITY_DMAMGR 17
+#define Z_PRIORITY_IRQMGR 18
+
+#endif