diff --git a/include/functions.h b/include/functions.h index 6a9ebcf60f..307dc43651 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 9fa3ef7bcf..193c2d90dd 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 6b54474b60..7924066b6a 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 7cdf40e31e..1886d3519b 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 641a060b42..6d9ff59be5 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 3051f2c6ea..e08a477e6e 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 238939f747..44751f385b 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 e5032584c2..403ffa5461 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 c5551edc7b..87dc80764c 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 e01baa4253..c83630cbf1 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -4,6 +4,15 @@ #include "ultra64.h" #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, @@ -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 5505f08e31..55c959b31a 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 { @@ -459,6 +462,16 @@ typedef struct { /* 0x8 */ u8* textureIndexList; } 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; @@ -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 0000000000..b841f8326c --- /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 0000000000..c0baba84f3 --- /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 diff --git a/src/boot_O2_g3/boot_main.c b/src/boot_O2_g3/boot_main.c index 6a561992b3..ed16c34e09 100644 --- a/src/boot_O2_g3/boot_main.c +++ b/src/boot_O2_g3/boot_main.c @@ -2,6 +2,7 @@ #include "global.h" #include "stack.h" #include "stackcheck.h" +#include "z64thread.h" StackEntry sBootStackInfo; OSThread sIdleThread; diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c index 6c63e2a706..f7c847449b 100644 --- a/src/boot_O2_g3/idle.c +++ b/src/boot_O2_g3/idle.c @@ -3,6 +3,7 @@ #include "stack.h" #include "buffers.h" #include "stackcheck.h" +#include "z64thread.h" u8 D_80096B20 = 1; vu8 gViConfigUseDefault = 1; @@ -94,10 +95,12 @@ void Idle_InitVideo(void) { D_8009B290 = 2; gViConfigMode = osViModeNtscLan1; break; + case OS_TV_MPAL: D_8009B290 = 30; gViConfigMode = osViModeMpalLan1; break; + case OS_TV_PAL: D_8009B290 = 44; gViConfigMode = osViModeFpalLan1; diff --git a/src/boot_O2_g3/irqmgr.c b/src/boot_O2_g3/irqmgr.c index 1f1e94ab40..9a773f2795 100644 --- a/src/boot_O2_g3/irqmgr.c +++ b/src/boot_O2_g3/irqmgr.c @@ -1,5 +1,6 @@ #include "global.h" #include "stackcheck.h" +#include "z64thread.h" vs32 gIrqMgrResetStatus = 0; volatile OSTime sIrqMgrResetTime = 0; diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index 00d894f74a..71b7ae8460 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -2,6 +2,7 @@ #include "global.h" #include "stack.h" #include "stackcheck.h" +#include "z64thread.h" u32 sDmaMgrDmaBuffSize = 0x2000; diff --git a/src/code/flg_set.c b/src/code/flg_set.c index bb25818a60..f7c8c261e2 100644 --- a/src/code/flg_set.c +++ b/src/code/flg_set.c @@ -12,6 +12,11 @@ #include "global.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +typedef struct FlagSetEntry { + /* 0x0 */ u8* value; + /* 0x4 */ const char* name; +} FlagSetEntry; // size = 0x8 + static FlagSetEntry sFlagEntries[] = { { &gSaveContext.save.saveInfo.weekEventReg[0], "week_event_reg[0]" }, { &gSaveContext.save.saveInfo.weekEventReg[1], "week_event_reg[1]" }, diff --git a/src/code/main.c b/src/code/main.c index 1862404899..3da3d25d77 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -9,6 +9,7 @@ #include "stack.h" #include "stackcheck.h" #include "system_heap.h" +#include "z64thread.h" extern OSMesgQueue sSiIntMsgQ; extern OSMesg sSiIntMsgBuf[1]; diff --git a/src/code/sched.c b/src/code/sched.c index c06eb41ba9..29c558ea75 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -1,6 +1,7 @@ #include "prevent_bss_reordering.h" #include "global.h" #include "stackcheck.h" +#include "z64thread.h" #define RSP_DONE_MSG 667 #define RDP_DONE_MSG 668 diff --git a/src/code/sys_flashrom.c b/src/code/sys_flashrom.c index c2665741ee..f2424b8501 100644 --- a/src/code/sys_flashrom.c +++ b/src/code/sys_flashrom.c @@ -3,6 +3,7 @@ #include "stack.h" #include "stackcheck.h" #include "system_malloc.h" +#include "z64thread.h" OSMesgQueue sFlashromMesgQueue; OSMesg sFlashromMesg[1]; diff --git a/src/code/sys_slowly.c b/src/code/sys_slowly.c index 754c5d4729..47170db629 100644 --- a/src/code/sys_slowly.c +++ b/src/code/sys_slowly.c @@ -8,9 +8,11 @@ * * @note: `argCount` must be set manually, as this file implements no way to configure it. */ + #include "slowly.h" #include "global.h" #include "stackcheck.h" +#include "z64thread.h" void Slowly_Main(SlowlyMgr* slowly) { slowly->status |= SLOWLY_STATUS_STARTED; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index b7f07d14d4..f3f4043ddc 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -1,4 +1,11 @@ #include "global.h" +#include "z64collision_check.h" + +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*); Vec3f D_801EDE00; Vec3f D_801EDE10; diff --git a/src/code/z_nmi_buff.c b/src/code/z_nmi_buff.c index 205bd8d0f3..eacfc5f469 100644 --- a/src/code/z_nmi_buff.c +++ b/src/code/z_nmi_buff.c @@ -3,6 +3,13 @@ #define COLD_RESET 0 #define NMI 1 +typedef struct { + /* 0x00 */ u32 resetting; + /* 0x04 */ u32 resetCount; + /* 0x08 */ OSTime duration; + /* 0x10 */ OSTime resetTime; +} NmiBuff; // size >= 0x18 + NmiBuff* gNMIBuffer; void Nmi_Init(void) { diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 368b4509e2..529458f83c 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -526,7 +526,7 @@ void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd) { // SceneTableEntry Header Command 0x1A: Material Animations void Scene_CommandAnimatedMaterials(PlayState* play, SceneCmd* cmd) { - play->sceneMaterialAnims = (AnimatedMaterial*)Lib_SegmentedToVirtual(cmd->textureAnimations.segment); + play->sceneMaterialAnims = Lib_SegmentedToVirtual(cmd->textureAnimations.segment); } /** @@ -536,38 +536,38 @@ void Scene_SetExitFade(PlayState* play) { play->transitionType = Entrance_GetTransitionFlags(play->nextEntrance) & 0x7F; } -void (*sSceneCmdHandlers[])(PlayState*, SceneCmd*) = { - Scene_CommandSpawnList, - Scene_CommandActorList, - Scene_CommandActorCutsceneCamList, - Scene_CommandCollisionHeader, - Scene_CommandRoomList, - Scene_CommandWindSettings, - Scene_CommandEntranceList, - Scene_CommandSpecialFiles, - Scene_CommandRoomBehavior, - Scene_Command09, - Scene_CommandMesh, - Scene_CommandObjectList, - Scene_CommandLightList, - Scene_CommandPathList, - Scene_CommandTransiActorList, - Scene_CommandEnvLightSettings, - Scene_CommandTimeSettings, - Scene_CommandSkyboxSettings, - Scene_CommandSkyboxDisables, - Scene_CommandExitList, - NULL, - Scene_CommandSoundSettings, - Scene_CommandEchoSetting, - Scene_CommandCutsceneScriptList, - Scene_CommandAltHeaderList, - Scene_CommandSetRegionVisitedFlag, - Scene_CommandAnimatedMaterials, - Scene_CommandCutsceneList, - Scene_CommandMiniMap, - Scene_Command1D, - Scene_CommandMiniMapCompassInfo, +void (*sSceneCmdHandlers[SCENE_CMD_MAX])(PlayState*, SceneCmd*) = { + Scene_CommandSpawnList, // SCENE_CMD_ID_SPAWN_LIST + Scene_CommandActorList, // SCENE_CMD_ID_ACTOR_LIST + Scene_CommandActorCutsceneCamList, // SCENE_CMD_ID_ACTOR_CUTSCENE_CAM_LIST + Scene_CommandCollisionHeader, // SCENE_CMD_ID_COL_HEADER + Scene_CommandRoomList, // SCENE_CMD_ID_ROOM_LIST + Scene_CommandWindSettings, // SCENE_CMD_ID_WIND_SETTINGS + Scene_CommandEntranceList, // SCENE_CMD_ID_ENTRANCE_LIST + Scene_CommandSpecialFiles, // SCENE_CMD_ID_SPECIAL_FILES + Scene_CommandRoomBehavior, // SCENE_CMD_ID_ROOM_BEHAVIOR + Scene_Command09, // SCENE_CMD_ID_UNK_09 + Scene_CommandMesh, // SCENE_CMD_ID_ROOM_SHAPE + Scene_CommandObjectList, // SCENE_CMD_ID_OBJECT_LIST + Scene_CommandLightList, // SCENE_CMD_ID_LIGHT_LIST + Scene_CommandPathList, // SCENE_CMD_ID_PATH_LIST + Scene_CommandTransiActorList, // SCENE_CMD_ID_TRANSI_ACTOR_LIST + Scene_CommandEnvLightSettings, // SCENE_CMD_ID_ENV_LIGHT_SETTINGS + Scene_CommandTimeSettings, // SCENE_CMD_ID_TIME_SETTINGS + Scene_CommandSkyboxSettings, // SCENE_CMD_ID_SKYBOX_SETTINGS + Scene_CommandSkyboxDisables, // SCENE_CMD_ID_SKYBOX_DISABLES + Scene_CommandExitList, // SCENE_CMD_ID_EXIT_LIST + NULL, // SCENE_CMD_ID_END + Scene_CommandSoundSettings, // SCENE_CMD_ID_SOUND_SETTINGS + Scene_CommandEchoSetting, // SCENE_CMD_ID_ECHO_SETTINGS + Scene_CommandCutsceneScriptList, // SCENE_CMD_ID_CUTSCENE_SCRIPT_LIST + Scene_CommandAltHeaderList, // SCENE_CMD_ID_ALTERNATE_HEADER_LIST + Scene_CommandSetRegionVisitedFlag, // SCENE_CMD_ID_SET_REGION_VISITED + Scene_CommandAnimatedMaterials, // SCENE_CMD_ID_ANIMATED_MATERIAL_LIST + Scene_CommandCutsceneList, // SCENE_CMD_ID_ACTOR_CUTSCENE_LIST + Scene_CommandMiniMap, // SCENE_CMD_ID_MINIMAP_INFO + Scene_Command1D, // SCENE_CMD_ID_UNUSED_1D + Scene_CommandMiniMapCompassInfo, // SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO }; /** diff --git a/src/code/z_sound_source.c b/src/code/z_sound_source.c index 15ebd018a1..4962f70723 100644 --- a/src/code/z_sound_source.c +++ b/src/code/z_sound_source.c @@ -1,11 +1,12 @@ #include "global.h" +#include "z64sound_source.h" void SoundSource_InitAll(PlayState* play) { SoundSource* sources = &play->soundSources[0]; s32 i; // clang-format off - for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) { sources[i].countdown = 0; } + for (i = 0; i < SOUND_SOURCE_COUNT; i++) { sources[i].countdown = 0; } // clang-format on } @@ -13,7 +14,7 @@ void SoundSource_UpdateAll(PlayState* play) { SoundSource* source = &play->soundSources[0]; s32 i; - for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) { + for (i = 0; i < SOUND_SOURCE_COUNT; i++) { if (source->countdown != 0) { if (DECR(source->countdown) == 0) { AudioSfx_StopByPos(&source->projectedPos); @@ -37,7 +38,7 @@ void SoundSource_Add(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId, s32 i; source = &play->soundSources[0]; - for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) { + for (i = 0; i < SOUND_SOURCE_COUNT; i++) { if (source->countdown == 0) { break; } @@ -52,7 +53,7 @@ void SoundSource_Add(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId, } // If no sound source is available, replace the sound source with the smallest remaining countdown - if (i >= ARRAY_COUNT(play->soundSources)) { + if (i >= SOUND_SOURCE_COUNT) { source = backupSource; AudioSfx_StopByPos(&source->projectedPos); } diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index bce95ca116..9e51ef3d61 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -903,11 +903,11 @@ 0x801BB050:("sDebugDisplayLight1","Lights1","",0x24), 0x801BB068:("D_801BB068","UNK_TYPE2","",0x2), 0x801BB08C:("D_801BB08C","UNK_TYPE1","",0x1), - 0x801BB090:("D_801BB090","UNK_TYPE4","",0x4), - 0x801BB094:("D_801BB094","UNK_TYPE1","",0x1), - 0x801BB0DC:("D_801BB0DC","UNK_TYPE1","",0x1), - 0x801BB0FC:("D_801BB0FC","UNK_TYPE2","",0x2), - 0x801BB100:("D_801BB100","UNK_TYPE1","",0x1), + 0x801BB090:("sDebugTextDrawFlags","UNK_TYPE4","",0x4), + 0x801BB094:("sDebugTextBuffer","UNK_TYPE1","",0x1), + 0x801BB0DC:("sDebugTextColors","UNK_TYPE1","",0x1), + 0x801BB0FC:("sDebugCamTextEntryCount","UNK_TYPE2","",0x2), + 0x801BB100:("sDebugCamTextColors","UNK_TYPE1","",0x1), 0x801BB124:("sCurTextId","UNK_TYPE2","",0x2), 0x801BB128:("sCurOcarinaAction","UNK_TYPE2","",0x2), 0x801BB12C:("gOpeningEntranceIndex","UNK_TYPE1","",0x1), @@ -1328,13 +1328,13 @@ 0x801C212C:("gSceneIdsPerRegion","SceneIdList","[]",0x252), 0x801C2380:("sSceneIdsPerTingleMap","u16","[]",0x90), 0x801C2410:("gPlayerFormItemRestrictions","UNK_TYPE1","",0x1), - 0x801C2650:("tatlMessageFiles","RomFile","[2]",0x10), + 0x801C2650:("naviQuestHintFiles","RomFile","[2]",0x10), 0x801C2660:("sceneTextureFiles","RomFile","[9]",0x48), - 0x801C26A8:("sceneHeaderFuncTable","scene_header_func","[31]",0x7c), + 0x801C26A8:("sSceneCmdHandlers","scene_header_func","[31]",0x7c), 0x801C2730:("gPlayerFormObjectIndices","s16","[5]",0xA), 0x801C273C:("gObjectTableSize","ObjectId","",0x4), 0x801C2740:("gObjectTable","RomFile","[643]",0x1418), - 0x801C3B60:("sSceneDrawDefaultDl","Gfx","[11]",0x58), + 0x801C3B60:("sSceneDrawDefaultDL","Gfx","[11]",0x58), 0x801C3BB8:("gSceneProcSceneDrawFuncs","SceneDrawConfigFunc","[8]",0x20), 0x801C3BD8:("gSceneProcDrawFuncs","scene_proc_draw_func","[6]",0x18), 0x801C3BF0:("D_801C3BF0","Gfx","[4]",0x20),