diff --git a/configure.py b/configure.py index 2eaa7aed0..8c9136158 100644 --- a/configure.py +++ b/configure.py @@ -507,7 +507,7 @@ config.libs = [ Object(Matching, "SSystem/SComponent/c_API.cpp"), Object(Matching, "SSystem/SComponent/c_API_graphic.cpp"), Object(NonMatching, "SSystem/SComponent/c_cc_d.cpp"), - Object(NonMatching, "SSystem/SComponent/c_cc_s.cpp"), + Object(Matching, "SSystem/SComponent/c_cc_s.cpp"), Object(Matching, "SSystem/SComponent/c_counter.cpp"), Object(Matching, "SSystem/SComponent/c_list.cpp"), Object(Matching, "SSystem/SComponent/c_list_iter.cpp"), diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 87d14f9d8..06026acc2 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -52,6 +52,22 @@ enum cCcD_ObjAtType { /* 0xFFFFFFFF */ AT_TYPE_ALL = ~0, }; +enum AtSPrm_e { + AT_SPRM_SET = 1, + AT_SPRM_NO_TG_HIT_INF_SET = 0x10, +}; + +enum TgSPrm_e { + TG_SPRM_SET = 1, + TG_SPRM_NO_AT_HIT_INF_SET = 0x10, +}; + +enum CoSPrm_e { + CO_SPRM_SET = 1, + CO_SPRM_NO_CRR = 0x100, + CO_SPRM_NO_CO_HIT_INF_SET = 0x200, +}; + class cCcD_ShapeAttr { public: /* 0x00 */ cM3dGAab mAab; @@ -345,7 +361,7 @@ public: } void PlusDmg(int dmg) { mDmg = dmg; } u8 GetDmg() { return mDmg; } - f32 GetWeightF() const; + f32 GetWeightF() const { return (s32)mWeight; } virtual void ClrAt() {} virtual void ClrTg() { mDmg = 0; } @@ -369,13 +385,6 @@ protected: /* 0x08 */ cCcD_Obj* mHitObj; /* 0x0C vtable */ public: - enum CoSPrm_e { - CO_SPRM_SET = 1, - CO_SPRM_NO_CRR = 0x100, - CO_SPRM_NO_CO_HIT_INF_SET = 0x200, - CO_SPRM_SAME_ACTOR_HIT = 0x400, - }; - cCcD_ObjCommonBase() { ct(); } virtual ~cCcD_ObjCommonBase() {} void ct(); @@ -390,6 +399,7 @@ public: void OnSPrmBit(u32 flag) { mSPrm |= flag; } void OffSPrmBit(u32 flag) { mSPrm &= ~flag; } void ClrRPrm(u32 flag) { mRPrm &= ~flag; } + void SetHitObj(cCcD_Obj* obj) { mHitObj = obj; } void Set(cCcD_SrcObjCommonBase const& src) { mSPrm = src.mSPrm; @@ -402,7 +412,10 @@ class cCcD_ObjAt : public cCcD_ObjCommonBase { public: cCcD_ObjAt() { mType = 0; } virtual ~cCcD_ObjAt() {} - void SetHit(cCcD_Obj*); + void SetHit(cCcD_Obj* obj) { + SetRPrm(1); + SetHitObj(obj); + } void Set(cCcD_SrcObjAt const& src) { cCcD_ObjCommonBase::Set(src.mBase); mType = src.mType; @@ -410,13 +423,13 @@ public: } void ClrHit() { ClrRPrm(1); ClrObj(); } int GetType() const { return mType; } - u32 GetGrp() const { return MskSPrm(0x1E); } - bool ChkSet() const { return MskSPrm(1); } + u32 GetGrp() const { return MskSPrm(0xE); } + bool ChkSet() const { return MskSPrm(AT_SPRM_SET); } u8 GetAtp() const { return mAtp; } u32 MskType(u32 msk) const { return mType & msk; } void SetType(u32 type) { mType = type; } void SetAtp(int atp) { mAtp = atp; } - void ClrSet() { OffSPrmBit(1); } + void ClrSet() { OffSPrmBit(AT_SPRM_SET); } void OnHitBit() { SetRPrm(1); } void OffHitBit() { ClrRPrm(1); } u32 ChkHit() { return MskRPrm(1); } @@ -438,12 +451,15 @@ public: } void SetGrp(u32); void ClrHit() { ClrRPrm(1); ClrObj(); } - void SetHit(cCcD_Obj*); + void SetHit(cCcD_Obj* obj) { + SetRPrm(1); + SetHitObj(obj); + } int GetType() const { return mType; } void SetType(u32 type) { mType = type; } - u32 GetGrp() const { return MskSPrm(0x1E); } - bool ChkSet() const { return MskSPrm(1); } - void ClrSet() { OffSPrmBit(1); } + u32 GetGrp() const { return MskSPrm(0xE); } + bool ChkSet() const { return MskSPrm(TG_SPRM_SET); } + void ClrSet() { OffSPrmBit(TG_SPRM_SET); } u32 ChkHit() { return MskRPrm(1); } private: @@ -455,17 +471,20 @@ STATIC_ASSERT(0x14 == sizeof(cCcD_ObjTg)); class cCcD_ObjCo : public cCcD_ObjCommonBase { public: virtual ~cCcD_ObjCo() {} - void SetHit(cCcD_Obj*); + void SetHit(cCcD_Obj* obj) { + SetRPrm(1); + SetHitObj(obj); + } void ClrHit() { ClrRPrm(1); ClrObj(); } void SetIGrp(u32); void SetVsGrp(u32); u32 GetGrp() const { return MskSPrm(0x1E); } - bool ChkSet() const { return MskSPrm(1); } + bool ChkSet() const { return MskSPrm(CO_SPRM_SET); } u32 GetVsGrp() const { return MskSPrm(0x70); } u32 GetIGrp() const { return MskSPrm(0xE); } - u32 ChkNoCrr() const { return MskSPrm(0x100); } + u32 ChkNoCrr() const { return MskSPrm(CO_SPRM_NO_CRR); } u32 ChkSph3DCrr() const { return MskSPrm(0x80); } - void ClrSet() { OffSPrmBit(1); } + void ClrSet() { OffSPrmBit(CO_SPRM_SET); } u32 ChkHit() { return MskRPrm(1); } void Set(cCcD_SrcObjCo const& src) { @@ -495,14 +514,12 @@ public: bool ChkTgSet() const { return mObjTg.ChkSet(); } bool ChkAtSet() const { return mObjAt.ChkSet(); } bool ChkCoSet() const { return mObjCo.ChkSet(); } - u32 ChkCoSameActorHit() const { return mObjCo.MskSPrm(0x400); } u32 GetCoVsGrp() const { return mObjCo.GetVsGrp(); } u32 GetCoIGrp() const { return mObjCo.GetIGrp(); } u8 GetAtAtp() const { return mObjAt.GetAtp(); } - u32 ChkAtNoTgHitInfSet() const { return mObjAt.MskSPrm(0x20); } - u32 ChkTgNoAtHitInfSet() const { return mObjTg.MskSPrm(0x20); } - u32 ChkCoNoCoHitInfSet() const { return mObjCo.MskSPrm(0x200); } - bool ChkTgNoSlingHitInfSet() const { return mObjTg.MskSPrm(0x40); } + u32 ChkAtNoTgHitInfSet() const { return mObjAt.MskSPrm(AT_SPRM_NO_TG_HIT_INF_SET); } + u32 ChkTgNoAtHitInfSet() const { return mObjTg.MskSPrm(TG_SPRM_NO_AT_HIT_INF_SET); } + u32 ChkCoNoCoHitInfSet() const { return mObjCo.MskSPrm(CO_SPRM_NO_CO_HIT_INF_SET); } void SetAtHit(cCcD_Obj* obj) { mObjAt.SetHit(obj); } void SetTgHit(cCcD_Obj* obj) { mObjTg.SetHit(obj); } void SetCoHit(cCcD_Obj* obj) { mObjCo.SetHit(obj); } @@ -513,7 +530,7 @@ public: void OffAtSPrmBit(u32 flag) { mObjAt.OffSPrmBit(flag); } void OffCoSPrmBit(u32 flag) { mObjCo.OffSPrmBit(flag); } void SetAtType(u32 type) { mObjAt.SetType(type); } - void OnAtSetBit() { mObjAt.OnSPrmBit(1); } + void OnAtSetBit() { mObjAt.OnSPrmBit(AT_SPRM_SET); } void SetAtAtp(int atp) { mObjAt.SetAtp(atp); } void OffCoSetBit() { mObjCo.ClrSet(); } void SetTgType(u32 type) { mObjTg.SetType(type); } @@ -522,9 +539,9 @@ public: void OffAtSetBit() { mObjAt.ClrSet(); } void OnAtHitBit() { mObjAt.OnHitBit(); } void OffAtHitBit() { mObjAt.OffHitBit(); } - void OnTgSetBit() { mObjTg.OnSPrmBit(1); } + void OnTgSetBit() { mObjTg.OnSPrmBit(TG_SPRM_SET); } void OffTgSetBit() { mObjTg.ClrSet(); } - void OnCoSetBit() { mObjCo.OnSPrmBit(1); } + void OnCoSetBit() { mObjCo.OnSPrmBit(CO_SPRM_SET); } void OffAtVsPlayerBit() { mObjAt.OffSPrmBit(0xC); } void OnAtVsPlayerBit() { mObjAt.OnSPrmBit(0xC); } void OnCoSPrmBit(u32 flag) { mObjCo.OnSPrmBit(flag); } @@ -559,7 +576,7 @@ public: cCcD_Stts* GetStts() { return mStts; } void SetStts(cCcD_Stts* stts) { mStts = stts; } - fopAc_ac_c* GetAc() { return GetStts() != NULL ? GetStts()->GetActor() : NULL; } + fopAc_ac_c* GetAc() { return GetStts() == NULL ? NULL : GetStts()->GetActor(); } cCcD_DivideInfo& GetDivideInfo() { return mDivideInfo; } cCcD_DivideInfo* GetPDivideInfo() { return &mDivideInfo; } int ChkBsRevHit() const { return mFlags & 2; } diff --git a/include/SSystem/SComponent/c_cc_s.h b/include/SSystem/SComponent/c_cc_s.h index dc54cd75c..a81c87d7f 100644 --- a/include/SSystem/SComponent/c_cc_s.h +++ b/include/SSystem/SComponent/c_cc_s.h @@ -26,7 +26,15 @@ public: cCcS(); void Ct(); void Dt(); - WeightType GetWt(u8) const; + WeightType GetWt(u8 weight) const { + if (weight == 0xFF) { + return WeightType_0; + } + if (weight == 0xFE) { + return WeightType_1; + } + return WeightType_2; + } void Set(cCcD_Obj*); void ClrCoHitInf(); void ClrTgHitInf(); diff --git a/include/SSystem/SComponent/c_m3d_g_aab.h b/include/SSystem/SComponent/c_m3d_g_aab.h index 812649689..a330273d7 100644 --- a/include/SSystem/SComponent/c_m3d_g_aab.h +++ b/include/SSystem/SComponent/c_m3d_g_aab.h @@ -38,6 +38,18 @@ public: bool Cross(const cM3dGSph *param_1) { return cM3d_Cross_AabSph(this, param_1); } + void CalcCenter(cXyz* pOut) const { + VECAdd(&mMin, &mMax, pOut); + VECScale(pOut, pOut, 0.5f); + } + void ClearForMinMax() { + mMin.z = 1000000000.0f; + mMin.y = 1000000000.0f; + mMin.x = 1000000000.0f; + mMax.z = -1000000000.0f; + mMax.y = -1000000000.0f; + mMax.x = -1000000000.0f; + } }; // Size = 0x1C STATIC_ASSERT(0x1C == sizeof(cM3dGAab)); diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index f2660581e..f92abb8e3 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -305,11 +305,7 @@ public: u8 GetTgMtrl() { return mGObjTg.GetMtrl(); } fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); } void SetTgShieldFrontRangeYAngle(s16* angle) { mGObjTg.SetShieldFrontRangeYAngle(angle); } - void OffTgWolfSpNoDamage() { mGObjTg.OffSPrm(0x800); } - void OnTgWolfSpNoDamage() { mGObjTg.OnSPrm(0x800); } void SetTgHitMark(CcG_Tg_HitMark mark) { mGObjTg.SetHitMark(mark); } - void OnTgSpShield() { mGObjTg.OnSPrm(0x40); } - void OffTgSpShield() { mGObjTg.OffSPrm(0x40); } void OnTgShield() { mGObjTg.OnSPrm(0x1); } void OffTgShield() { mGObjTg.OffSPrm(0x1); } void OnTgShieldFrontRange() { mGObjTg.OnSPrm(0x8); } @@ -324,7 +320,8 @@ public: bool ChkAtStopNoConHit() { return mGObjAt.ChkSPrm(0x4); } bool ChkTgNoConHit() { return mGObjTg.ChkSPrm(2); } bool ChkTgStopNoConHit() { return mGObjTg.ChkSPrm(0x2000); } - bool ChkCoNoCamHit() { return mGObjCo.ChkSPrm(2); } + bool ChkCoAtLasso() { return mGObjCo.ChkSPrm(1); } + bool ChkCoTgLasso() { return mGObjCo.ChkSPrm(2); } dCcD_HitCallback GetCoHitCallback() { return mGObjCo.GetHitCallback(); } dCcD_HitCallback GetAtHitCallback() { return mGObjAt.GetHitCallback(); } dCcD_HitCallback GetTgHitCallback() { return mGObjTg.GetHitCallback(); } diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h index 9041929a2..d004362bb 100644 --- a/include/d/d_cc_s.h +++ b/include/d/d_cc_s.h @@ -13,14 +13,14 @@ public: dCcS() {} void Ct(); void Dt(); - bool ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*, int, cXyz const*); - bool ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cXyz const*); + bool ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*); + bool ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*); void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*); int GetRank(u8); void ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*, - dCcD_GStts*, cXyz*, bool); - bool ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*); + dCcD_GStts*, cXyz*); + bool ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*); bool chkCameraPoint(cXyz const&, cCcD_ShapeAttr::Shape*, fopAc_ac_c*, fopAc_ac_c*); void DrawAfter(); diff --git a/src/SSystem/SComponent/c_cc_s.cpp b/src/SSystem/SComponent/c_cc_s.cpp index 68b02de71..224998229 100644 --- a/src/SSystem/SComponent/c_cc_s.cpp +++ b/src/SSystem/SComponent/c_cc_s.cpp @@ -4,11 +4,15 @@ // #include "SSystem/SComponent/c_cc_s.h" -#include "dolphin/types.h" +#include "JSystem/JUtility/JUTAssert.h" + +#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1)); +#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f); +#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f) +#define CHECK_PVEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v->x && v->x < 1.0e32f && -1.0e32f < v->y && v->y < 1.0e32f && -1.0e32f < v->z && v->z < 1.0e32f) /* 80242C28-80242C50 .text __ct__4cCcSFv */ cCcS::cCcS() { - /* Nonmatching */ } /* 80242C50-80242CE4 .text Ct__4cCcSFv */ @@ -93,29 +97,102 @@ void cCcS::ClrAtHitInf() { /* 80242F94-802430BC .text ChkNoHitAtTg__4cCcSFP8cCcD_ObjP8cCcD_Obj */ bool cCcS::ChkNoHitAtTg(cCcD_Obj* at, cCcD_Obj* tg) { - /* Nonmatching - more complicated conditional */ fopAc_ac_c * ac_at = at->GetAc(); fopAc_ac_c * ac_tg = tg->GetAc(); - if ((ac_at == NULL || ac_tg == NULL || ac_at != ac_tg) && (at->GetAtGrp() & tg->GetTgGrp()) != 0) { - return ChkNoHitGAtTg(at->GetGObjInf(), tg->GetGObjInf(), at->GetStts()->GetGStts(), tg->GetStts()->GetGStts()); + if ((ac_at != NULL && ac_tg != NULL && ac_at == ac_tg) || + (at->GetAtGrp() & tg->GetTgGrp()) == 0 || + (at->GetAtType() & tg->GetTgType()) == 0) + { + return true; } - return true; + return ChkNoHitGAtTg(at->GetGObjInf(), tg->GetGObjInf(), at->GetStts()->GetGStts(), tg->GetStts()->GetGStts()); } /* 802430BC-802432F8 .text ChkAtTg__4cCcSFv */ void cCcS::ChkAtTg() { - /* Nonmatching */ + cCcD_Obj** objTgEnd = mpObjTg + mObjTgCount; + ClrAtHitInf(); + ClrTgHitInf(); + for (cCcD_Obj** pObjAt = mpObjAt; pObjAt < mpObjAt + mObjAtCount; ++pObjAt) { + if (*pObjAt == NULL || !(*pObjAt)->ChkAtSet()) + continue; + cCcD_ShapeAttr* atShapeAttr = (*pObjAt)->GetShapeAttr(); + if (atShapeAttr == NULL) + continue; + for (cCcD_Obj** pObjTg = mpObjTg; pObjTg < objTgEnd; ++pObjTg) { + if (*pObjTg == NULL || !(*pObjTg)->ChkTgSet()) + continue; + if (!(*pObjAt)->GetDivideInfo().Chk((*pObjTg)->GetDivideInfo())) + continue; + if (ChkNoHitAtTg(*pObjAt, *pObjTg)) + continue; + cCcD_ShapeAttr* tgShapeAttr = (*pObjTg)->GetShapeAttr(); + if (tgShapeAttr == NULL) + continue; + static cXyz cross; + bool didCross = atShapeAttr->CrossAtTg(*tgShapeAttr, &cross); + bool anyBsRevHit = (*pObjAt)->ChkBsRevHit() || (*pObjTg)->ChkBsRevHit(); + if (!anyBsRevHit && didCross) { + SetAtTgCommonHitInf(*pObjAt, *pObjTg, &cross); + } else if (anyBsRevHit && !didCross) { + cCcD_ShapeAttr* atShape2 = (*pObjAt)->GetShapeAttr(); + if (atShape2 == NULL) { + cross.set(0.0f, 0.0f, 0.0f); + } else { + atShape2->GetWorkAab().CalcCenter(&cross); + } + SetAtTgCommonHitInf(*pObjAt, *pObjTg, &cross); + } + } + } } /* 802432F8-802433A8 .text ChkNoHitCo__4cCcSFP8cCcD_ObjP8cCcD_Obj */ -bool cCcS::ChkNoHitCo(cCcD_Obj*, cCcD_Obj*) { - /* Nonmatching */ +bool cCcS::ChkNoHitCo(cCcD_Obj* obj1, cCcD_Obj* obj2) { + fopAc_ac_c* ac1 = obj1->GetAc(); + fopAc_ac_c* ac2 = obj2->GetAc(); + if (!( + ((ac1 == NULL || ac2 == NULL) || ac1 != ac2) && + (obj1->GetCoIGrp() & (obj2->GetCoVsGrp() >> 3)) && + ((obj1->GetCoVsGrp() >> 3) & obj2->GetCoIGrp() && !ChkNoHitGCo(obj1, obj2)) + )) { + return true; + } else { + return false; + } } /* 802433A8-8024352C .text ChkCo__4cCcSFv */ void cCcS::ChkCo() { - /* Nonmatching */ + ClrCoHitInf(); + if (mObjCoCount <= 1) + return; + cCcD_Obj** objCoEnd = mpObjCo + mObjCoCount; + for (cCcD_Obj** objCo1 = mpObjCo; objCo1 < objCoEnd - 1; ++objCo1) { + if (*objCo1 == NULL || !(*objCo1)->ChkCoSet()) + continue; + cCcD_ShapeAttr* co1ShapeAttr = (*objCo1)->GetShapeAttr(); + if (co1ShapeAttr == NULL) + continue; + for (cCcD_Obj** objCo2 = objCo1 + 1; objCo2 < objCoEnd; ++objCo2) { + if (*objCo2 == NULL || !(*objCo2)->ChkCoSet()) + continue; + if (!(*objCo1)->GetDivideInfo().Chk((*objCo2)->GetDivideInfo())) + continue; + if (ChkNoHitCo(*objCo1, *objCo2)) + continue; + cCcD_ShapeAttr* co2ShapeAttr = (*objCo2)->GetShapeAttr(); + if (objCo2 == NULL) + continue; + f32 cross_len = 0.0f; + if (co1ShapeAttr->CrossCo(*co2ShapeAttr, &cross_len)) { + cXyz& obj2CoCP = co2ShapeAttr->GetCoCP(); + cXyz& obj1CoCP = co1ShapeAttr->GetCoCP(); + SetCoCommonHitInf(*objCo1, &obj1CoCP, *objCo2, &obj2CoCP, cross_len); + } + } + } } /* 8024352C-80243544 .text CalcTgPlusDmg__4cCcSFP8cCcD_ObjP8cCcD_ObjP9cCcD_SttsP9cCcD_Stts */ @@ -127,23 +204,215 @@ void cCcS::CalcTgPlusDmg(cCcD_Obj* at, cCcD_Obj* tg, cCcD_Stts* at_stts, cCcD_St } /* 80243544-80243740 .text SetAtTgCommonHitInf__4cCcSFP8cCcD_ObjP8cCcD_ObjP4cXyz */ -void cCcS::SetAtTgCommonHitInf(cCcD_Obj*, cCcD_Obj*, cXyz*) { - /* Nonmatching */ +void cCcS::SetAtTgCommonHitInf(cCcD_Obj* obj1, cCcD_Obj* obj2, cXyz* pXyz) { + cCcD_Stts* obj1Stts = obj1->GetStts(); + cCcD_Stts* obj2Stts = obj2->GetStts(); + bool hit = ChkAtTgHitAfterCross( + !obj2->ChkTgNoAtHitInfSet(), !obj1->ChkAtNoTgHitInfSet(), + obj1->GetGObjInf(), obj2->GetGObjInf(), obj1Stts, obj2Stts, + obj1Stts->GetGStts(), obj2Stts->GetGStts() + ); + if (!hit) { + if (!obj2->ChkTgNoAtHitInfSet()) { + obj1->SetAtHit(obj2); + } + if (!obj1->ChkAtNoTgHitInfSet()) { + obj2->SetTgHit(obj1); + CalcTgPlusDmg(obj1, obj2, obj1Stts, obj2Stts); + } + SetAtTgGObjInf( + !obj2->ChkTgNoAtHitInfSet(), !obj1->ChkAtNoTgHitInfSet(), + obj1, obj2, obj1->GetGObjInf(), obj2->GetGObjInf(), + obj1Stts, obj2Stts, obj1Stts->GetGStts(), obj2Stts->GetGStts(), + pXyz + ); + } } /* 80243740-8024388C .text SetCoCommonHitInf__4cCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */ -void cCcS::SetCoCommonHitInf(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) { - /* Nonmatching */ +void cCcS::SetCoCommonHitInf(cCcD_Obj* obj1, cXyz* ppos1, cCcD_Obj* obj2, cXyz* ppos2, f32 cross_len) { + bool obj2CoHitInfSet = !obj2->ChkCoNoCoHitInfSet(); + bool obj1CoHitInfSet = !obj1->ChkCoNoCoHitInfSet(); + if (obj2CoHitInfSet) { + obj1->SetCoHit(obj2); + } + if (obj1CoHitInfSet) { + obj2->SetCoHit(obj1); + } + if (obj2CoHitInfSet && obj1CoHitInfSet) { + SetPosCorrect(obj1, ppos1, obj2, ppos2, cross_len); + } + cCcD_Stts* obj1Stts = obj1->GetStts(); + cCcD_Stts* obj2Stts = obj2->GetStts(); + SetCoGObjInf(obj2CoHitInfSet, obj1CoHitInfSet, obj1->GetGObjInf(), obj2->GetGObjInf(), + obj1Stts, obj2Stts, obj1Stts->GetGStts(), obj2Stts->GetGStts()); } /* 8024388C-80244750 .text SetPosCorrect__4cCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */ -void cCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) { - /* Nonmatching */ +void cCcS::SetPosCorrect(cCcD_Obj* obj1, cXyz* ppos1, cCcD_Obj* obj2, cXyz* ppos2, f32 cross_len) { + CHECK_FLOAT_CLASS(604, cross_len); + CHECK_FLOAT_RANGE(605, cross_len); + + if (obj1->ChkCoNoCrr() || obj2->ChkCoNoCrr()) { + return; + } + if (obj1->GetStts() == NULL || obj2->GetStts() == NULL) { + return; + } + if (obj1->GetStts()->GetAc() != NULL && obj1->GetStts()->GetAc() == obj2->GetStts()->GetAc()) { + return; + } + if (fabsf(cross_len) < (1.0f / 125.0f)) { + return; + } + + SetCoGCorrectProc(obj1, obj2); + + bool correctY = false; + if (obj1->ChkCoSph3DCrr() && obj2->ChkCoSph3DCrr()) { + correctY = true; + } + WeightType obj1WeightType = GetWt(obj1->GetStts()->GetWeightUc()); + WeightType obj2WeightType = GetWt(obj2->GetStts()->GetWeightUc()); + f32 obj1SrcWeight = obj1->GetStts()->GetWeightF(); + f32 obj2SrcWeight = obj2->GetStts()->GetWeightF(); + f32 combinedWeight = obj1SrcWeight + obj2SrcWeight; + + f32 obj2Weight, obj1Weight; + if (cM3d_IsZero(combinedWeight)) { + obj1SrcWeight = 1; + obj2SrcWeight = 1; + combinedWeight = 2; + } + f32 invCombinedWeight = 1 / combinedWeight; + if (obj1WeightType == WeightType_0) { + if (obj2WeightType == WeightType_0) { + return; + } else { + obj2Weight = 0; + obj1Weight = 1; + } + } else if (obj1WeightType == WeightType_1) { + if (obj2WeightType == WeightType_0) { + obj2Weight = 1; + obj1Weight = 0; + } else if (obj2WeightType == WeightType_1) { + obj2Weight = 0.5; + obj1Weight = 0.5; + } else { + obj2Weight = 0; + obj1Weight = 1; + } + } else { + if (obj2WeightType == WeightType_2) { + obj2Weight = obj2SrcWeight * invCombinedWeight; + obj1Weight = obj1SrcWeight * invCombinedWeight; + } else { + obj2Weight = 1; + obj1Weight = 0; + } + } + f32 objDistLen; + Vec vec1; + Vec vec2; + Vec objsDist; + if (correctY) { + objsDist.x = ppos2->x - ppos1->x; + objsDist.y = ppos2->y - ppos1->y; + objsDist.z = ppos2->z - ppos1->z; + objDistLen = sqrtf(objsDist.x*objsDist.x + objsDist.y*objsDist.y + objsDist.z*objsDist.z); + } else { + objsDist.x = ppos2->x - ppos1->x; + objsDist.y = 0.0f; + objsDist.z = ppos2->z - ppos1->z; + objDistLen = sqrtf(objsDist.x*objsDist.x + objsDist.z*objsDist.z); + } + if (!cM3d_IsZero(objDistLen)) { + if (correctY) { + f32 pushFactor = cross_len / objDistLen; + objsDist.x *= pushFactor; + objsDist.y *= pushFactor; + objsDist.z *= pushFactor; + vec1.x = -objsDist.x * obj2Weight; + vec1.y = -objsDist.y * obj2Weight; + vec1.z = -objsDist.z * obj2Weight; + vec2.x = objsDist.x * obj1Weight; + vec2.y = objsDist.y * obj1Weight; + vec2.z = objsDist.z * obj1Weight; + } else { + f32 pushFactor = cross_len / objDistLen; + objsDist.x *= pushFactor; + objsDist.z *= pushFactor; + vec1.x = -objsDist.x * obj2Weight; + vec1.y = 0; + vec1.z = -objsDist.z * obj2Weight; + vec2.x = objsDist.x * obj1Weight; + vec2.y = 0; + vec2.z = objsDist.z * obj1Weight; + } + } else { + vec1.y = 0; + vec1.z = 0; + vec2.y = 0; + vec2.z = 0; + if (!cM3d_IsZero(cross_len)) { + vec1.x = -cross_len * obj2Weight; + vec2.x = cross_len * obj1Weight; + } else { + vec1.x = -obj2Weight; + vec2.x = obj1Weight; + } + } + + CHECK_FLOAT_CLASS(794, vec1.x); + CHECK_FLOAT_CLASS(795, vec1.y); + CHECK_FLOAT_CLASS(796, vec1.z); + CHECK_FLOAT_CLASS(798, vec2.x); + CHECK_FLOAT_CLASS(799, vec2.y); + CHECK_FLOAT_CLASS(800, vec2.z); + CHECK_VEC3_RANGE(804, vec1); + CHECK_VEC3_RANGE(808, vec2); + + obj1->GetStts()->PlusCcMove(vec1.x, vec1.y, vec1.z); + obj2->GetStts()->PlusCcMove(vec2.x, vec2.y, vec2.z); + (*ppos1) += vec1; + (*ppos2) += vec2; + + CHECK_FLOAT_CLASS(817, ppos1->x); + CHECK_FLOAT_CLASS(818, ppos1->y); + CHECK_FLOAT_CLASS(819, ppos1->z); + CHECK_FLOAT_CLASS(821, ppos2->x); + CHECK_FLOAT_CLASS(822, ppos2->y); + CHECK_FLOAT_CLASS(823, ppos2->z); + CHECK_PVEC3_RANGE(827, ppos1); + CHECK_PVEC3_RANGE(831, ppos2); } /* 80244750-80244894 .text CalcArea__4cCcSFv */ void cCcS::CalcArea() { - /* Nonmatching */ + cM3dGAab aab; + aab.ClearForMinMax(); + for (cCcD_Obj** pObj = mpObj; pObj < mpObj + mObjCount; ++pObj) { + if (*pObj == NULL) + continue; + cCcD_ShapeAttr* objShape = (*pObj)->GetShapeAttr(); + if (objShape == NULL) + continue; + objShape->CalcAabBox(); + cM3dGAab& shapeAab = objShape->GetWorkAab(); + aab.SetMinMax(*shapeAab.GetMinP()); + aab.SetMinMax(*shapeAab.GetMaxP()); + } + mDivideArea.SetArea(aab); + for (cCcD_Obj** pObj = mpObj; pObj < mpObj + mObjCount; ++pObj) { + if (*pObj != NULL) { + const cCcD_ShapeAttr* objShape = (*pObj)->GetShapeAttr(); + if (objShape == NULL) + continue; + cCcD_DivideInfo* divideInfo = &(*pObj)->GetDivideInfo(); + mDivideArea.CalcDivideInfo(divideInfo, objShape->GetWorkAab(), (*pObj)->ChkBsRevHit()); + } + } } /* 80244894-802448F8 .text Move__4cCcSFv */ diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp index 4a52db0e8..0802bde02 100644 --- a/src/d/actor/d_a_am.cpp +++ b/src/d/actor/d_a_am.cpp @@ -350,7 +350,7 @@ static BOOL medama_atari_check(am_class* i_this) { if (i_this->mCurrBckIdx == AM_BCK_SLEEP || i_this->mCurrBckIdx == AM_BCK_SLEEP_LOOP) { anm_init(i_this, AM_BCK_OKIRU, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1); i_this->mAttentionInfo.mFlags = fopAc_Attn_LOCKON_ENEMY_e; - i_this->mNeedleCyl.OnAtSPrmBit(1); + i_this->mNeedleCyl.OnAtSPrmBit(AT_SPRM_SET); i_this->mNeedleCyl.OnAtHitBit(); i_this->mAction = ACTION_DOUSA; i_this->mState = 2; @@ -610,7 +610,7 @@ static void action_dousa(am_class* i_this) { // Fall-through case 4: if (i_this->mCountDownTimers[2] == 1) { - i_this->mNeedleCyl.OnAtSPrmBit(1); + i_this->mNeedleCyl.OnAtSPrmBit(AT_SPRM_SET); i_this->mNeedleCyl.OnAtHitBit(); } if (i_this->mCountDownTimers[2] != 0) { diff --git a/src/d/actor/d_a_bomb.cpp b/src/d/actor/d_a_bomb.cpp index 58cae2771..4d79e2fcb 100644 --- a/src/d/actor/d_a_bomb.cpp +++ b/src/d/actor/d_a_bomb.cpp @@ -616,9 +616,9 @@ void daBomb_c::makeWaterEffect() { if(field_0x77D == 0) { fopAcM_seStart(this, JA_SE_OBJ_BOMB_WATER, 0); fopKyM_createWpillar(¤t.pos, 1.0f, 1.0f, 1); - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); + mSph.OnAtSPrmBit(AT_SPRM_SET); mSph.SetR(200.0f); mSph.SetC(current.pos); if(mMassCounter != g_Counter.mCounter0) { @@ -762,7 +762,7 @@ int daBomb_c::procExplode_init() { speed = cXyz::Zero; mGravity = 0.0f; - if(chk_state(STATE_8)) { + if(!chk_state(STATE_8)) { change_state(STATE_0); } @@ -776,9 +776,9 @@ int daBomb_c::procExplode_init() { field_0x6F0 = 0; } - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); + mSph.OnAtSPrmBit(AT_SPRM_SET); mSph.SetR(200.0f); mSph.SetC(current.pos); if(mMassCounter != g_Counter.mCounter0) { @@ -874,7 +874,7 @@ bool daBomb_c::procCarry_init() { speedF = 0.0f; speed.set(cXyz::Zero); mAttentionInfo.mFlags &= ~fopAc_Attn_ACTION_CARRY_e; - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); return true; } @@ -908,7 +908,7 @@ bool daBomb_c::procWait_init() { change_state(STATE_1); } - mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OnCoSPrmBit(CO_SPRM_SET); return true; } diff --git a/src/d/actor/d_a_bomb2.cpp b/src/d/actor/d_a_bomb2.cpp index cfee0d6e1..f812ef418 100644 --- a/src/d/actor/d_a_bomb2.cpp +++ b/src/d/actor/d_a_bomb2.cpp @@ -713,7 +713,7 @@ namespace daBomb2 { void Act_c::mode_wait_init() { field_0x694 = 0; mGravity = L_attr.gravity; - mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OnCoSPrmBit(CO_SPRM_SET); } void Act_c::mode_wait() { @@ -771,7 +771,7 @@ namespace daBomb2 { speedF = 0.0f; speed = cXyz::Zero; off_carry(); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); } void Act_c::mode_carry() { @@ -807,9 +807,9 @@ namespace daBomb2 { speed = cXyz::Zero; mGravity = 0.0f; off_carry(); - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); + mSph.OnAtSPrmBit(AT_SPRM_SET); fopAcM_cancelCarryNow(this); field_0x738 = 0; field_0x73C = 4; @@ -827,9 +827,9 @@ namespace daBomb2 { field_0x694 = 3; speed.y *= 0.8f; speedF *= 0.8f; - mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffAtSPrmBit(AT_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); off_carry(); fopAcM_cancelCarryNow(this); field_0x698 = 4; diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index 8ce2a3a4c..d76cf67ef 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -362,7 +362,7 @@ void daItem_c::execInitNormalDirection() { show(); mCyl.SetTgType(0); - mCyl.OffCoSPrmBit(1); + mCyl.OffCoSetBit(); mPtclSmokeCb.end(); if (mpParticleEmitter) { @@ -775,7 +775,7 @@ void daItem_c::itemGetExecute() { mStatusFlags &= ~0x4; mCyl.SetTgType(0); - mCyl.OffCoSPrmBit(1); + mCyl.OffCoSetBit(); mCyl.ClrTgHit(); mCyl.ClrCoHit(); } diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index 11991a54c..30285bc7a 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -698,7 +698,7 @@ void daRd_c::setCollision() { if (mMode == MODE_DEATH) { mCyl.OffCoSPrmBit(0x10); mCyl.OffCoSPrmBit(0x02); - mCyl.OffTgSPrmBit(0x01); + mCyl.OffTgSPrmBit(TG_SPRM_SET); mCyl.OffTgSPrmBit(0x08); } else if (mMode == MODE_ATTACK || mMode == MODE_CRY || dComIfGp_evmng_startCheck("DEFAULT_RD_CRY")) { mCyl.OffCoSPrmBit(0x10); diff --git a/src/d/d_a_bomb_static.cpp b/src/d/d_a_bomb_static.cpp index d24b93f9e..9ddd0bb26 100644 --- a/src/d/d_a_bomb_static.cpp +++ b/src/d/d_a_bomb_static.cpp @@ -36,10 +36,10 @@ void daBomb_c::setBombFire_ON() { void daBomb_c::setBombNoHit() { _prm_chk_version(); - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); + mSph.OffAtSPrmBit(AT_SPRM_SET); + mSph.OffAtSPrmBit(AT_SPRM_SET); field_0x6F3 = true; } @@ -47,13 +47,13 @@ void daBomb_c::setBombNoHit() { void daBomb_c::setBombOffCoSet() { _prm_chk_version(); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); } void daBomb_c::setBombOnCoSet() { _prm_chk_version(); - mSph.GetObjCo().OnSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OnCoSPrmBit(CO_SPRM_SET); } void daBomb_c::setBombNoEff() { @@ -153,10 +153,10 @@ void daBomb2::Act_c::set_eat() { } void daBomb2::Act_c::set_no_hit() { - mSph.GetObjTg().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjCo().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); - mSph.GetObjAt().OffSPrmBit(cCcD_ObjCommonBase::CO_SPRM_SET); + mSph.OffTgSPrmBit(TG_SPRM_SET); + mSph.OffCoSPrmBit(CO_SPRM_SET); + mSph.OffAtSPrmBit(AT_SPRM_SET); + mSph.OffAtSPrmBit(AT_SPRM_SET); } bool daBomb2::Act_c::chk_explode() { diff --git a/src/d/d_cc_s.cpp b/src/d/d_cc_s.cpp index d0b41d675..36ac3beaa 100644 --- a/src/d/d_cc_s.cpp +++ b/src/d/d_cc_s.cpp @@ -3,26 +3,27 @@ // Translation Unit: d_cc_s.cpp // -#include "d_cc_s.h" -#include "dolphin/types.h" +#include "d/d_cc_s.h" +#include "d/d_cc_d.h" /* 800AD5B0-800AD5E4 .text Ct__4dCcSFv */ void dCcS::Ct() { - /* Nonmatching */ + cCcS::Ct(); + mMass_Mng.Ct(); } /* 800AD5E4-800AD604 .text Dt__4dCcSFv */ void dCcS::Dt() { - /* Nonmatching */ + cCcS::Dt(); } /* 800AD604-800AD748 .text ChkShieldFrontRange__4dCcSFP8cCcD_ObjP8cCcD_Obj */ -void dCcS::ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*) { +bool dCcS::ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*) { /* Nonmatching */ } /* 800AD748-800AD7D0 .text ChkShield__4dCcSFP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInf */ -void dCcS::ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*) { +bool dCcS::ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*) { /* Nonmatching */ } @@ -32,7 +33,7 @@ void dCcS::CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*) { } /* 800AD86C-800AD8EC .text ChkAtTgHitAfterCross__4dCcSFbbPC12cCcD_GObjInfPC12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts */ -void dCcS::ChkAtTgHitAfterCross(bool, bool, const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*) { +bool dCcS::ChkAtTgHitAfterCross(bool, bool, const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*) { /* Nonmatching */ } @@ -42,12 +43,12 @@ void dCcS::SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*, cC } /* 800ADA30-800ADAD4 .text GetRank__4dCcSFUc */ -void dCcS::GetRank(unsigned char) { +int dCcS::GetRank(u8) { /* Nonmatching */ } /* 800ADAD4-800ADEF0 .text SetPosCorrect__4dCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */ -void dCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, float) { +void dCcS::SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32) { /* Nonmatching */ } @@ -67,7 +68,7 @@ void dCcS::SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*, cCcD_ } /* 800AE5AC-800AE814 .text ChkCamera__4dCcSFR4cXyzR4cXyzfP10fopAc_ac_cP10fopAc_ac_c */ -void dCcS::ChkCamera(cXyz&, cXyz&, float, fopAc_ac_c*, fopAc_ac_c*) { +bool dCcS::ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*) { /* Nonmatching */ } @@ -83,26 +84,33 @@ void dCcS::DrawAfter() { /* 800AE81C-800AE83C .text Move__4dCcSFv */ void dCcS::Move() { - /* Nonmatching */ + cCcS::Move(); } /* 800AE83C-800AE878 .text Draw__4dCcSFv */ void dCcS::Draw() { - /* Nonmatching */ + DrawAfter(); + DrawClear(); + mMass_Mng.Clear(); } /* 800AE878-800AE89C .text MassClear__4dCcSFv */ void dCcS::MassClear() { - /* Nonmatching */ + mMass_Mng.Clear(); } /* 800AE89C-800AE930 .text ChkNoHitGCo__4dCcSFP8cCcD_ObjP8cCcD_Obj */ -void dCcS::ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*) { - /* Nonmatching */ +bool dCcS::ChkNoHitGCo(cCcD_Obj* obj1, cCcD_Obj* obj2) { + dCcD_GObjInf* inf1 = (dCcD_GObjInf*)obj1->GetGObjInf(); + dCcD_GObjInf* inf2 = (dCcD_GObjInf*)obj2->GetGObjInf(); + if ((inf1->ChkCoAtLasso() && !inf2->ChkCoTgLasso()) || (inf2->ChkCoAtLasso() && !inf1->ChkCoTgLasso())) { + return true; + } + return false; } /* 800AE930-800AE938 .text ChkNoHitGAtTg__4cCcSFPC12cCcD_GObjInfPC12cCcD_GObjInfP10cCcD_GSttsP10cCcD_GStts */ -void cCcS::ChkNoHitGAtTg(const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_GStts*, cCcD_GStts*) { - /* Nonmatching */ +bool cCcS::ChkNoHitGAtTg(const cCcD_GObjInf*, const cCcD_GObjInf*, cCcD_GStts*, cCcD_GStts*) { + return false; }