diff --git a/configure.py b/configure.py index 5828be150a6..9147a3d5684 100755 --- a/configure.py +++ b/configure.py @@ -2181,7 +2181,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swBallB"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swBallC"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swLight"), - ActorRel(NonMatching, "d_a_obj_swchain"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swchain"), ActorRel(Equivalent, "d_a_obj_swhang"), # vtable order ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_sword"), ActorRel(NonMatching, "d_a_obj_swpush2"), diff --git a/include/d/actor/d_a_obj_swchain.h b/include/d/actor/d_a_obj_swchain.h index 1e1eec06c2e..ec2e569e10b 100644 --- a/include/d/actor/d_a_obj_swchain.h +++ b/include/d/actor/d_a_obj_swchain.h @@ -13,14 +13,11 @@ * * @details * - */ +*/ + class daObjSwChain_c : public fopAc_ac_c { public: struct chain_s { - public: - /* 80CF8B00 */ ~chain_s(); - /* 80CF8B3C */ chain_s(); - /* 0x00 */ dMdl_obj_c mModel; /* 0x34 */ cXyz field_0x34; /* 0x40 */ csXyz field_0x40; @@ -40,7 +37,7 @@ public: /* 80CFA4A8 */ void chain_count_control(); /* 80CFAD50 */ void setTension(); /* 80CFB450 */ int getTopChainNo(); - /* 80CFB464 */ void checkPlayerPull(); + /* 80CFB464 */ BOOL checkPlayerPull(); /* 80CFB53C */ int draw(); /* 80CFB5E8 */ int _delete(); @@ -50,30 +47,30 @@ public: u8 getOutNum() { return fopAcM_GetParamBit(this, 16, 8); } u8 getChainID() { return fopAcM_GetParamBit(this, 28, 4); } u8 getHookShotLength() { return mHookshotLength; } - int getCurrentChainNum() { return field_0xa64; } + int getCurrentChainNum() { return mOutNum; } f32 getCurrentChainLength() { - chain_s* chain_p = &field_0xa74[field_0xa65 - field_0xa64 + 1]; + chain_s* chain_p = &mChains[mChainNum - mOutNum + 1]; return (getCurrentChainNum() - 1) * 35.0f + - field_0xa74[0].field_0x34.abs(chain_p->field_0x34); + mChains[0].field_0x34.abs(chain_p->field_0x34); } BOOL checkDispEmphasis() { return fopAcM_isSwitch(this, getSwbit()) == FALSE; } bool checkCarry() { return mCarry == 1; } void setRatioForChandelier(f32 ratio) { mRatio = ratio; } /* 80C665A4 */ BOOL checkTight() { - if (mCarry != 0 && (home.roomNo == 4 || home.roomNo == 6) && field_0xa64 >= field_0xa69 && + if (mCarry != 0 && (home.roomNo == 4 || home.roomNo == 6) && mOutNum >= field_0xa69 && field_0xa9c == 0) { daPy_py_c* player = daPy_getPlayerActorClass(); - chain_s* swChain = &field_0xa74[field_0xa65] - field_0xa64 + 1; + chain_s* swChain = &mChains[mChainNum] - mOutNum + 1; cXyz cStack_54; cXyz cStack_60; cStack_54 = swChain->field_0x34; - cStack_60 = field_0xa74[field_0xa65].field_0x34; + cStack_60 = mChains[mChainNum].field_0x34; f32 dVar10 = cStack_60.abs(cStack_54); f32 dVar13 = (field_0xa67 - 2) * 35.0f; cXyz local_6c; - cXyz cStack_78 = field_0xa74[0].field_0x34 - field_0xa74[field_0xa65].field_0x34; + cXyz cStack_78 = mChains[0].field_0x34 - mChains[mChainNum].field_0x34; local_6c.x = player->getSpeedF() * cM_ssin(player->current.angle.y); local_6c.z = player->getSpeedF() * cM_scos(player->current.angle.y); if (cStack_78.inprodXZ(local_6c) < 0.0f && dVar10 > dVar13 - 35.0f) { @@ -91,33 +88,37 @@ private: /* 0x598 */ dCcD_Stts mStts; /* 0x5D4 */ dCcD_Sph mSph1; /* 0x70C */ dCcD_Sph mSph2; - /* 0x844 */ dBgS_ObjAcch mAcch; + /* 0x844 */ dBgS_ObjAcch mBgc; /* 0xA1C */ dBgS_AcchCir mAcchCir; /* 0xA5C */ u16 mHookshotLength; /* 0xA5E */ u16 field_0xa5e; /* 0xA60 */ u8 field_0xa60; /* 0xA60 */ u8 field_0xa61; /* 0xA62 */ u8 mCarry; - /* 0xA63 */ u8 field_0xa63; - /* 0xA64 */ u8 field_0xa64; - /* 0xA65 */ u8 field_0xa65; - /* 0xA66 */ u8 field_0xa66; + /* 0xA63 */ u8 mChainID; + /* 0xA64 */ u8 mOutNum; + /* 0xA65 */ u8 mChainNum; + /* 0xA66 */ u8 mHookShotLength; /* 0xA67 */ u8 field_0xa67; /* 0xA68 */ u8 field_0xa68; /* 0xA69 */ u8 field_0xa69; /* 0xA6A */ u8 field_0xa6a; /* 0xA6A */ u8 field_0xa6b; /* 0xA6C */ u8 field_0xa6c; - /* 0xA6D */ u8 field_0xa6d[0xa74 - 0xa6d]; - /* 0xA74 */ chain_s* field_0xa74; - /* 0xA78 */ u8 field_0xa78[0xa98 - 0xa78]; + /* 0xA6D */ u8 field_0xa6d; + /* 0xA6E */ s16 field_0xa6e; + /* 0xA70 */ s16 field_0xa70; + /* 0xA74 */ chain_s* mChains; + /* 0xA78 */ cXyz field_0xa78; + /* 0xA84 */ u8 field_0xa84[0xa90 - 0xa84]; + /* 0xA90 */ f32 pow; + /* 0xA94 */ f32 field_0xa94; /* 0xA98 */ f32 mRatio; /* 0xA9C */ u8 field_0xa9c; /* 0xA9D */ u8 field_0xa9d; /* 0xA9E */ u8 field_0xa9e; - /* 0xA9F */ u8 field_0xa9f[0xaa0 - 0xa9f]; #ifdef DEBUG - /* 0xAA0 */ u8 field_0xaa0[0xc]; + /* 0xAA0 */ cXyz field_0xac0; #endif }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 14398e88a80..e4b42f3b081 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -1248,6 +1248,9 @@ public: } BOOL checkInsectRelease() { return checkResetFlg1(RFLG1_UNK_100); } + + void onChainForcePull() { onEndResetFlg1(ERFLG1_UNK_1000000); } + void onChainPullEnd() { onEndResetFlg1(ERFLG1_UNK_2000000); } }; int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4); diff --git a/include/d/d_model.h b/include/d/d_model.h index 4640324f9f0..c261226945a 100644 --- a/include/d/d_model.h +++ b/include/d/d_model.h @@ -21,7 +21,10 @@ class dMdl_c : public J3DPacket { public: /* 8009C650 */ void create(J3DModelData*, u16, dKy_tevstr_c*); /* 8009C668 */ void entryObj(dMdl_obj_c*); - /* 8009C930 */ dMdl_c(); + /* 8009C930 */ dMdl_c() { + mpModelData = NULL; + mMaterialId = 0; + } /* 8009C4FC */ virtual void draw(); /* 8009C808 */ virtual ~dMdl_c(); diff --git a/src/d/actor/d_a_obj_swchain.cpp b/src/d/actor/d_a_obj_swchain.cpp index b36b17794a4..3dc5a53ea90 100644 --- a/src/d/actor/d_a_obj_swchain.cpp +++ b/src/d/actor/d_a_obj_swchain.cpp @@ -1,7 +1,7 @@ /** * @file d_a_obj_swchain.cpp * - */ +*/ #include "d/dolzel_rel.h" // IWYU pragma: keep @@ -10,7 +10,7 @@ #endif #include "d/actor/d_a_obj_swchain.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "d/d_s_play.h" #ifdef DEBUG class daObjSwChain_HIO_c : public mDoHIO_entry_c { @@ -20,7 +20,7 @@ public: /* 0x06 */ u8 field_0x06; /* 0x08 */ f32 mGravity; - /* 0x0C */ f32 field_0x0c; + /* 0x0C */ f32 field_0xc; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; /* 0x18 */ f32 field_0x18; @@ -44,7 +44,7 @@ public: daObjSwChain_HIO_c::daObjSwChain_HIO_c() { mGravity = -6.0f; - field_0x0c = 35.0f; + field_0xc = 35.0f; field_0x10 = 35.0f; field_0x14 = 8.0f; field_0x18 = 0.0f; @@ -109,7 +109,6 @@ void daObjSwChain_HIO_c::genMessage(JORMContext* ctx) { } static daObjSwChain_HIO_c l_HIO; - #endif /* 80CF86B8-80CF86D8 000078 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ @@ -168,9 +167,9 @@ int daObjSwChain_c::Create() { mSph2.Set(l_sph_srcCo); mSph2.SetStts(&mStts); mAcchCir.SetWall(0.0f, 40.0f); - mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + mBgc.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), ¤t.angle, &shape_angle); - fopAcM_setCullSizeSphere(this, home.pos.x, home.pos.y, home.pos.z, (field_0xa65 + 1) * 35.0f); + fopAcM_setCullSizeSphere(this, home.pos.x, home.pos.y, home.pos.z, (mChainNum + 1) * 35.0f); cXyz cStack_3c(0.0f, 0.0f, 50.0f); cXyz cStack_48; cXyz cStack_54; @@ -178,12 +177,12 @@ int daObjSwChain_c::Create() { mDoMtx_stack_c::YrotS(shape_angle.y); mDoMtx_stack_c::multVec(&cStack_3c, &cStack_48); - getChainBasePos(&field_0xa74->field_0x34); - cStack_54 = field_0xa74->field_0x34; + getChainBasePos(&mChains->field_0x34); + cStack_54 = mChains->field_0x34; - chain_s* p_chain = field_0xa74; + chain_s* p_chain = mChains; - for (int i = 0; i < field_0xa65 + 1; i++) { + for (int i = 0; i < mChainNum + 1; i++) { if (i < getTopChainNo()) { p_chain->field_0x34 = home.pos; cStack_54 = p_chain->field_0x34; @@ -211,14 +210,14 @@ int daObjSwChain_c::Create() { /* 80CF89C0-80CF8B00 000380 0140+00 1/1 0/0 0/0 .text CreateHeap__14daObjSwChain_cFv */ int daObjSwChain_c::CreateHeap() { - field_0xa74 = new chain_s[field_0xa65 + 1]; + mChains = new chain_s[mChainNum + 1]; - if (field_0xa74 == NULL) { + if (mChains == NULL) { return 0; } - chain_s* p_chain = field_0xa74; - for (int i = 0; i < field_0xa65 + 1; i++, p_chain++) { + chain_s* p_chain = mChains; + for (int i = 0; i < mChainNum + 1; i++, p_chain++) { p_chain->field_0x34.setall(0.0f); p_chain->field_0x40.setall(0); p_chain->field_0x48 = 0.0f; @@ -239,16 +238,7 @@ int daObjSwChain_c::CreateHeap() { return 1; } -/* 80CF8B00-80CF8B3C 0004C0 003C+00 1/1 0/0 0/0 .text __dt__Q214daObjSwChain_c7chain_sFv - */ -daObjSwChain_c::chain_s::~chain_s() {} - -/* 80CF8B3C-80CF8B48 0004FC 000C+00 1/1 0/0 0/0 .text __ct__Q214daObjSwChain_c7chain_sFv - */ -daObjSwChain_c::chain_s::chain_s() {} - /* 80CF8B48-80CF8DD0 000508 0288+00 1/1 0/0 0/0 .text create1st__14daObjSwChain_cFv */ -// NONMATCHING int daObjSwChain_c::create1st() { fopAcM_SetupActor(this, daObjSwChain_c); @@ -261,23 +251,29 @@ int daObjSwChain_c::create1st() { field_0xa60 = 1; } - // missing instructions - field_0xa65 = getChainNum() & 1 ? getChainNum() : getChainNum() + 1; + u32 uVar1 = getChainNum(); + u8 uVar2 = (uVar1 >> 31); + if (((uVar1 & 1) ^ uVar2) - uVar2 != 0) { + uVar1 = getChainNum(); + } else { + uVar1 = getChainNum() + 1; + } + mChainNum = uVar1; - field_0xa66 = getHookShotLength(); - field_0xa64 = getOutNum(); - field_0xa63 = getChainID(); + mHookShotLength = getHookShotLength(); + mOutNum = getOutNum(); + mChainID = getChainID(); #ifdef DEBUG - if (field_0xa63 != 0 && field_0xa63 != 1 && field_0xa63 != 2 && field_0xa63 != 3) { + if (mChainID != 0 && mChainID != 1 && mChainID != 2 && mChainID != 3) { // Chain Switch: Chain ID value is abnormal <%d> - OS_REPORT_ERROR("チェーンスイッチ:鎖の番号が異常値です<%d>\n", field_0xa63); + OS_REPORT_ERROR("チェーンスイッチ:鎖の番号が異常値です<%d>\n", mChainID); return cPhs_ERROR_e; } #endif #ifdef DEBUG - if (field_0xa64 > field_0xa65) { + if (mOutNum > mChainNum) { // Chain Switch: Argument 2 > Argument 1 ! OS_REPORT_ERROR("チェーンスイッチ:引数2>引数1になっています!\n"); return cPhs_ERROR_e; @@ -285,7 +281,7 @@ int daObjSwChain_c::create1st() { #endif #ifdef DEBUG - if (field_0xa66 > field_0xa65) { + if (mHookShotLength > mChainNum) { // Chain Switch: Argument 3 > Argument 1 ! OS_REPORT_ERROR("チェーンスイッチ:引数3>引数1になっています!\n"); return cPhs_ERROR_e; @@ -314,7 +310,6 @@ int daObjSwChain_c::create1st() { } /* 80CF8ED0-80CF94E4 000890 0614+00 1/1 0/0 0/0 .text execute__14daObjSwChain_cFv */ -// NONMATCHING - regalloc / instruction ordering int daObjSwChain_c::execute() { #ifdef DEBUG if (l_HIO.mProcessStop) { @@ -331,16 +326,16 @@ int daObjSwChain_c::execute() { } chain_count_control(); - chain_s* unused = field_0xa74; + chain_s* unused = mChains; chain_control(); - chain_s* iVar1 = &field_0xa74[field_0xa65]; + chain_s* chains_p = &mChains[mChainNum]; - if (!field_0xa6c && daPy_py_c::setFmChainPos(this, &iVar1->field_0x34, field_0xa63)) { + if (!field_0xa6c && daPy_py_c::setFmChainPos(this, &chains_p->field_0x34, mChainID)) { mCarry = 1; eyePos = home.pos; } else { mCarry = 0; - eyePos = iVar1->field_0x34; + eyePos = chains_p->field_0x34; } if (field_0xa9d == 0 && mCarry != 0 || field_0xa9d != 0 && mCarry == 0) { @@ -349,72 +344,71 @@ int daObjSwChain_c::execute() { if (fopAcM_checkHookCarryNow(this)) { field_0xa61 = 1; - if (field_0xa64 >= field_0xa66 && field_0xa9e == 0) { + if (mOutNum >= mHookShotLength && field_0xa9e == 0) { fopAcM_cancelHookCarryNow(this); } } else { field_0xa61 = 0; - current.pos = iVar1->field_0x34; + current.pos = chains_p->field_0x34; } chain_control2(); setTension(); setChainMtx(); field_0xa6b = 0; - cXyz cStack_68(field_0xa74[getTopChainNo()].field_0x34); - cXyz cStack_74(field_0xa74[field_0xa65].field_0x34); + cXyz cStack_68(mChains[getTopChainNo()].field_0x34); + cXyz cStack_74(mChains[mChainNum].field_0x34); f32 fVar15 = cStack_74.abs(cStack_68); #ifdef DEBUG - if (fVar15 < (l_HIO.field_0x0c * (field_0xa64 - 2)) || mCarry == 0) + if (fVar15 < (l_HIO.field_0xc * (mOutNum - 2)) || mCarry == 0) #else - if (fVar15 < (35.0f * (field_0xa64 - 2)) || mCarry == 0) + if (fVar15 < (35.0f * (mOutNum - 2)) || mCarry == 0) #endif - if (field_0xa64 > getOutNum() && mRatio != 0.0f) { - cXyz cStack_80(field_0xa74[0].field_0x34); - cXyz cStack_8c; - cStack_8c = cStack_80 - field_0xa74[getTopChainNo()].field_0x34; + if (mOutNum > getOutNum() && mRatio != 0.0f) { + cXyz cStack_80(mChains[0].field_0x34); + chains_p = &mChains[getTopChainNo()]; + cXyz cStack_8c = cStack_80 - chains_p->field_0x34; cStack_8c.normalizeZP(); switch (fopAcM_GetRoomNo(this)) { case 4: case 6: - if (field_0xa64 > field_0xa69) { + if (mOutNum > field_0xa69) { #ifdef DEBUG - iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeedHigh; + chains_p->field_0x34 += cStack_8c * l_HIO.mReturnSpeedHigh; #else - iVar1->field_0x34 += cStack_8c * 30.0f; + chains_p->field_0x34 += cStack_8c * 30.0f; #endif // mistake? field_0xa6b = 1; field_0xa6b = 1; } else { #ifdef DEBUG - iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeedLow; + chains_p->field_0x34 += cStack_8c * l_HIO.mReturnSpeedLow; #else - iVar1->field_0x34 += cStack_8c * 15.0f; + chains_p->field_0x34 += cStack_8c * 15.0f; #endif } break; default: #ifdef DEBUG - iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeed; + chains_p->field_0x34 += cStack_8c * l_HIO.mReturnSpeed; #else - iVar1->field_0x34 += cStack_8c * 2.0f; + chains_p->field_0x34 += cStack_8c * 2.0f; #endif } } if (field_0xa6c == 0) { - daPy_py_c* player = daPy_getPlayerActorClass(); - cXyz pos = (player->current.pos - home.pos); + cXyz pos = (daPy_getPlayerActorClass()->current.pos - home.pos); s16 abs_tmp = pos.atan2sX_Z() - shape_angle.y; #ifdef DEBUG if (abs(abs_tmp) < l_HIO.mReactionAngle) { #else if (abs(abs_tmp) < 0xe74) { #endif - chain_s* chain_p2 = &field_0xa74[field_0xa65]; - mSph1.SetC(chain_p2->field_0x34); + chains_p = &mChains[mChainNum]; + mSph1.SetC(chains_p->field_0x34); dComIfG_Ccsp()->Set(&mSph1); } } @@ -422,7 +416,7 @@ int daObjSwChain_c::execute() { if (mCarry != 0) { cXyz local_a4; cXyz cStack_b0(current.pos); - mAcch.CrrPos(dComIfG_Bgsp()); + mBgc.CrrPos(dComIfG_Bgsp()); local_a4 = current.pos - cStack_b0; current.pos = cStack_b0; @@ -461,58 +455,731 @@ int daObjSwChain_c::execute() { return 1; } -/* 80CF94E4-80CF9500 000EA4 001C+00 1/1 0/0 0/0 .text getChainBasePos__14daObjSwChain_cFP4cXyz */ +/* 80CF94E4-80CF9500 000EA4 001C+00 1/1 0/0 0/0 .text getChainBasePos__14daObjSwChain_cFP4cXyz */ void daObjSwChain_c::getChainBasePos(cXyz* param_0) { *param_0 = home.pos; } -/* 80CF9500-80CF99C0 000EC0 04C0+00 1/1 0/0 0/0 .text chain_control__14daObjSwChain_cFv - */ +/* 80CF9500-80CF99C0 000EC0 04C0+00 1/1 0/0 0/0 .text chain_control__14daObjSwChain_cFv */ void daObjSwChain_c::chain_control() { - // NONMATCHING + f32 fVar1; + chain_s* chains_p2 = mChains; + chain_s* chains_p1 = chains_p2; + cXyz* pcVar2; + cXyz* pcVar1 = &chains_p1->field_0x34; + pcVar2 = pcVar1; + f32 fVar2 = + #ifdef DEBUG + l_HIO.mGravity; + #else + -6.0f; + #endif + + if (mCarry != 0) { + if (daPy_getPlayerActorClass()->checkBootsOrArmorHeavy()) { + if (pow > KREG_F(1) + 0.5f) { + fVar2 *= KREG_F(2) + 0.099999994f; + } else { + fVar2 = + #ifdef DEBUG + l_HIO.mGravity; + #else + -6.0f; + #endif + } + } else if (pow > KREG_F(1) + 5.0f) { + fVar2 *= KREG_F(2) + 0.099999994f; + } else { + fVar2 = + #ifdef DEBUG + l_HIO.mGravity; + #else + -6.0f; + #endif + } + } + + cLib_addCalc(&field_0xa94, fVar2, 0.1f, 1.0f, 0.1f); + gravity = field_0xa94; + chains_p1 += getTopChainNo(); + + for (int topChainNo = getTopChainNo(); topChainNo < mChainNum + 1; chains_p1++, topChainNo++, pcVar1 = pcVar2) { + pcVar2 = &chains_p1->field_0x34; + chains_p1->field_0x48 = field_0xa94; + fVar2 = chains_p1->field_0x34.y; + chains_p1->field_0x34.y += chains_p1->field_0x48; + cXyz pos(*pcVar2); + pos.y += 100.0f; + chains_p1->field_0x4c = 0; + + if (fopAcM_gc_c::gndCheck(&pos) && GetActorName(*fopAcM_gc_c::getGroundCheck()) != PROC_Obj_Lv4DigSand) { + fVar1 = fopAcM_gc_c::getGroundY() + 15.0f; + if (fVar1 > pcVar2->y) { + pcVar2->y = fVar1; + chains_p1->field_0x48 = 0.0f; + chains_p1->field_0x4c = 1; + } + } else { + pcVar2->y = fVar2; + chains_p1->field_0x48 = 0.0f; + chains_p1->field_0x4c = 1; + } + + if (chains_p1->field_0x4c == 0) { + if (topChainNo != getTopChainNo() && chains_p1[-1].field_0x4c != 0 && pcVar1->y >= pcVar2->y) { + pcVar2->y = fVar2; + } + + chain_s* chains_p3 = chains_p1; + for (int i = topChainNo; i < mChainNum; i++) { + chains_p3++; + if (chains_p3->field_0x4c != 0 && chains_p3->field_0x34.y >= pcVar2->y) { + pcVar2->y = fVar2; + break; + } + } + } + + cXyz sp94 = *pcVar2 - *pcVar1; + fVar1 = sp94.abs(); + sp94.normalizeZP(); + + f32 fVar3 = + #ifdef DEBUG + l_HIO.field_0xc; + #else + 35.0f; + #endif + + if (topChainNo == mChainNum - 1) { + fVar3 = + #ifdef DEBUG + l_HIO.field_0x10; + #else + 35.0f; + #endif + } + + if (fVar1 <= fVar3 - + #ifdef DEBUG + l_HIO.field_0x14 + #else + 8.0f + #endif + ) + { + fVar1 = fVar3 - + #ifdef DEBUG + l_HIO.field_0x14; + #else + 8.0f; + #endif + } + + if (fVar1 > fVar3) { + fVar1 = fVar3; + } + + sp94 = sp94 * fVar1; + if (topChainNo != getTopChainNo()) { + *pcVar2 = *pcVar1 + sp94; + } else { + pcVar2->y = fVar2; + } + + chains_p1->field_0x34 = *pcVar2; + fVar1 = std::fabs(chains_p1->field_0x48); + fVar2 = std::fabs(fVar2 - pcVar2->y); + if (fVar2 < fVar1) { + chains_p1->field_0x48 = 0.0f; + } + } } -/* 80CF99C0-80CFA05C 001380 069C+00 1/1 0/0 0/0 .text chain_control2__14daObjSwChain_cFv - */ +/* 80CF99C0-80CFA05C 001380 069C+00 1/1 0/0 0/0 .text chain_control2__14daObjSwChain_cFv */ void daObjSwChain_c::chain_control2() { - // NONMATCHING + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); + chain_s* chains_p = &mChains[mChainNum]; + cXyz* pcVar2 = &chains_p->field_0x34; + cXyz* pcVar1 = pcVar2; + + if (mCarry != 0 || field_0xa61 != 0) { + cXyz sp78, sp84; + + if (mCarry != 0) { + if (daPy_py_c::checkNowWolf()) { + mDoMtx_stack_c::copy(player->getWolfMouthMatrix()); + mDoMtx_stack_c::multVecZero(&sp78); + cXyz sp90(KREG_F(14) + 12.0f, KREG_F(15) + 7.0f, 0.0f); + mDoMtx_stack_c::get()[0][3] = 0.0f; + mDoMtx_stack_c::get()[1][3] = 0.0f; + mDoMtx_stack_c::get()[2][3] = 0.0f; + mDoMtx_stack_c::multVec(&sp90, &sp90); + sp78 += sp90; + #ifdef DEBUG + field_0xac0 = sp78; + #endif + + cXyz sp9c(0.0f, 0.0f, KREG_F(13) + 60.0f); + mDoMtx_stack_c::YrotS(player->shape_angle.y); + mDoMtx_stack_c::XrotM(field_0xa6e); + mDoMtx_stack_c::multVec(&sp9c, &sp9c); + *pcVar1 = sp9c + sp78; + field_0xa78 = *pcVar1; + sp78.set(0.0f, 0.0f, KREG_F(10) + -10.0f); + } else { + sp78 = player->getRightHandPos(); + cXyz spa8(KREG_F(10) + 25.0f, KREG_F(11) + 15.0f, KREG_F(12) + 60.0f); + mDoMtx_stack_c::YrotS(player->shape_angle.y); + mDoMtx_stack_c::XrotM(field_0xa6e); + mDoMtx_stack_c::multVec(&spa8, &spa8); + spa8 += sp78; + *pcVar1 = spa8; + field_0xa78 = *pcVar1; + sp78.set(0.0f, 0.0f, KREG_F(10) + -10.0f); + } + + mDoMtx_stack_c::YrotS(player->shape_angle.y + 0x7FFF); + mDoMtx_stack_c::XrotM(-field_0xa6e); + mDoMtx_stack_c::multVec(&sp78, &sp84); + sp84 += field_0xa78; + #ifdef DEBUG + field_0xac0 = sp84; + #endif + *pcVar1 = sp84; + } else if (field_0xa61 != 0) { + *pcVar1 = current.pos; + } + + for (int i = mChainNum - 1; i >= getTopChainNo(); chains_p->field_0x34 = *pcVar2, i--) { + pcVar1 = pcVar2; + pcVar2 = &chains_p[-1].field_0x34; + f32 fVar1 = chains_p[-1].field_0x34.y; + chains_p--; + cXyz spb4(*pcVar1 - *pcVar2); + spb4.z = 0.0f; + spb4.x = 0.0f; + spb4.y *= + #ifdef DEBUG + l_HIO.field_0x18; + #else + 0.0f; + #endif + pcVar2->y += std::fabs(spb4.y); + cXyz spc0(*pcVar2); + spc0.y += 100.0f; + + if (fopAcM_gc_c::gndCheck(&spc0) && GetActorName(*fopAcM_gc_c::getGroundCheck()) != PROC_Obj_Lv4DigSand) { + f32 fVar2 = fopAcM_gc_c::getGroundY() + 15.0f; + if (fVar2 > pcVar2->y) { + pcVar2->y = fVar2; + chains_p->field_0x48 = 0.0f; + } + } else { + pcVar2->y = fVar1; + chains_p->field_0x48 = 0.0f; + chains_p->field_0x4c = 1; + } + + if (chains_p->field_0x4c == 0) { + if (i != getTopChainNo() && chains_p[-1].field_0x4c != 0 && pcVar1->y >= pcVar2->y) { + pcVar2->y = fVar1; + } + + if (i < mChainNum && chains_p[1].field_0x4c != 0 && chains_p[1].field_0x34.y >= pcVar2->y) { + pcVar2->y = fVar1; + } + } + + cXyz spcc(*pcVar2 - *pcVar1); + fVar1 = spcc.abs(); + spcc.normalizeZP(); + + f32 fVar3 = + #ifdef DEBUG + l_HIO.field_0xc; + #else + 35.0f; + #endif + + if (i == mChainNum - 1) { + fVar3 = + #ifdef DEBUG + l_HIO.field_0x10; + #else + 35.0f; + #endif + } + + if (fVar1 <= fVar3 - + #ifdef DEBUG + l_HIO.field_0x14 + #else + 8.0f + #endif + ) + { + fVar1 = fVar3 - + #ifdef DEBUG + l_HIO.field_0x14; + #else + 8.0f; + #endif + } + + if (fVar1 > fVar3) { + fVar1 = fVar3; + } + + spcc = spcc * fVar1; + *pcVar2 = *pcVar1 + spcc; + } + } } /* 80CFA05C-80CFA124 001A1C 00C8+00 1/1 0/0 0/0 .text initChainMtx__14daObjSwChain_cFv */ void daObjSwChain_c::initChainMtx() { - // NONMATCHING + int iVar1 = 0; + for (int i = 0; i < mChainNum + 1; i++) { + iVar1 += (int)(cM_rndFX(0.0f) + 16384.0f); + + if (i == mChainNum) { + mChains[i].field_0x40.z = 0; + } else { + mChains[i].field_0x40.z = iVar1; + } + } + + setChainMtx(); } /* 80CFA124-80CFA4A8 001AE4 0384+00 2/2 0/0 0/0 .text setChainMtx__14daObjSwChain_cFv */ void daObjSwChain_c::setChainMtx() { - // NONMATCHING + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); + chain_s* chains_p1; + if (mCarry != 0) { + chains_p1 = &mChains[mChainNum]; + } else { + chains_p1 = &mChains[getTopChainNo()]; + } + + for (int topChainNo = getTopChainNo(); topChainNo < mChainNum + 1; topChainNo++) { + chain_s* chains_p2 = chains_p1; + if (mCarry != 0) { + if (topChainNo != getTopChainNo()) { + chains_p2 = chains_p1 + 1; + } + } else { + chains_p2 = chains_p1 - 1; + } + + cXyz sp30(chains_p1->field_0x34 - chains_p2->field_0x34); + cXyz sp3c; + sp3c = (chains_p1->field_0x34 + chains_p2->field_0x34) * 0.5f; + s16 sVar1 = -cM_atan2s(sp30.y, sp30.absXZ()); + s16 sVar2 = cM_atan2s(sp30.x, sp30.z); + mDoMtx_stack_c::transS(sp3c); + mDoMtx_stack_c::ZXYrotM(sVar1, sVar2, chains_p1->field_0x40.z); + + if (topChainNo == getTopChainNo() && mCarry != 0) { + int iVar1 = (s16)(player->shape_angle.y + 0x7FFF); + mDoMtx_stack_c::transS(field_0xa78); + mDoMtx_stack_c::YrotM(iVar1); + mDoMtx_stack_c::XrotM(KREG_S(4) - field_0xa6e); + mDoMtx_stack_c::ZrotM(0); + } + + if (mCarry != 0) { + if (topChainNo == getTopChainNo()) { + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } else { + chains_p1->mModel.setMtx(mDoMtx_stack_c::get()); + } + + chains_p1--; + } else { + if (topChainNo == mChainNum) { + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } else { + chains_p1->mModel.setMtx(mDoMtx_stack_c::get()); + } + + chains_p1++; + } + } + + cLib_addCalcAngleS2(&field_0xa6e, field_0xa70, 5, 800); } -/* 80CFA4A8-80CFAD50 001E68 08A8+00 1/1 0/0 0/0 .text chain_count_control__14daObjSwChain_cFv */ +/* 80CFA4A8-80CFAD50 001E68 08A8+00 1/1 0/0 0/0 .text chain_count_control__14daObjSwChain_cFv */ void daObjSwChain_c::chain_count_control() { - // NONMATCHING + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); + chain_s* chains_p = &mChains[getTopChainNo()]; + int iVar1; + cXyz sp60(mChains->field_0x34); + int roomNo = fopAcM_GetRoomNo(this); + f32 fVar1 = sp60.abs(chains_p->field_0x34); + f32 fVar2 = + #ifdef DEBUG + l_HIO.field_0xc + #else + 35.0f + #endif + * (KREG_F(16) + 3.0f); + + if (fVar1 > fVar2) { + if (mOutNum < mChainNum || ((roomNo == 4 || roomNo == 6) && mOutNum < field_0xa67)) { + u32 iVar1 = 1; + int iVar2 = iVar1; + if (roomNo != 4 && roomNo != 6) { + for (fVar1 -= fVar2; fVar1 > 0.0f;) { + fVar1 -= + #ifdef DEBUG + l_HIO.field_0xc; + #else + 35.0f; + #endif + + iVar2++; + } + + if (mOutNum + iVar2 >= mChainNum) { + iVar2 = mChainNum - mOutNum; + } + } + mOutNum += iVar2; + + if (mOutNum >= mHookShotLength) { + field_0xa9e = 1; + } + + if (field_0xa6a == 0) { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_PULL, &home.pos, 0, 0); + } else { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_PULLHEAVY, &home.pos, 0, 0); + } + + chain_s* chains_p2 = &mChains[getTopChainNo()]; + chains_p2->field_0x34.x = (chains_p->field_0x34.x + sp60.x) * 0.5f; + chains_p2->field_0x34.y = (chains_p->field_0x34.y + sp60.y) * 0.5f; + chains_p2->field_0x34.z = (chains_p->field_0x34.z + sp60.z) * 0.5f; + } + } else if (fVar1 < + #ifdef DEBUG + l_HIO.field_0xc + #else + 35.0f + #endif + * (KREG_F(17) + 0.5f) && + pow == 0.0f && mOutNum > getOutNum() && (roomNo == 4 || roomNo == 6) + ) { + mOutNum--; + + if (field_0xa61 == 0) { + if (field_0xa6b == 0) { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_BACK, &home.pos, 0, 0); + } else { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_BACKFAST, &home.pos, 0, 0); + } + } + + if (roomNo == 4 || roomNo == 6) { + if (mOutNum < field_0xa69) { + field_0xa67 = field_0xa69; + } else { + field_0xa67 = mOutNum + 1; + } + } + } + + u32 bVar1 = daPy_getPlayerActorClass()->checkBootsOrArmorHeavy(); + if ((roomNo == 4 || roomNo == 6) && mOutNum == field_0xa67) { + chain_s* topChain_p = &mChains[getTopChainNo()]; + topChain_p->field_0x34 = mChains->field_0x34; + if ( + (!bVar1 && pow > + #ifdef DEBUG + l_HIO.mSwitchOnTension + #else + 10.0f + #endif + ) || (bVar1 && pow > + #ifdef DEBUG + l_HIO.field_0x2c + #else + 1.5f + #endif + ) + ) { + field_0xa68++; + if (field_0xa68 > KREG_S(7) + 15 && player->getBaseAnimeFrame() > 6.0f && player->getBaseAnimeFrame() < 8.0f) { + if (field_0xa67 < mChainNum) { + field_0xa67 += KREG_S(8) + 1; + } + + field_0xa68 = 0; + } + } else { + if (pow != 0.0f && std::fabs(player->getSpeedF()) < 10.0f) { + field_0xa9c = 1; + } + + field_0xa68 = 0; + } + } else if (mOutNum == mChainNum) { + chain_s* topChain_p = &mChains[getTopChainNo()]; + topChain_p->field_0x34 = mChains->field_0x34; + if ( + (!daPy_getPlayerActorClass()->checkBootsOrArmorHeavy() && pow > + #ifdef DEBUG + l_HIO.mSwitchOnTension + #else + 10.0f + #endif + ) || (daPy_getPlayerActorClass()->checkBootsOrArmorHeavy() && pow > + #ifdef DEBUG + l_HIO.field_0x2c + #else + 1.5f + #endif + ) + ) { + field_0xa68++; + + if (getSwbit() != 0xFF) { + if (!fopAcM_isSwitch(this, getSwbit()) && field_0xa68 > + #ifdef DEBUG + l_HIO.mSwitchOnTime + #else + 0 + #endif + ) { + if (daPy_py_c::checkNowWolf()) { + if (player->getBaseAnimeFrame() > 9.0f && player->getBaseAnimeFrame() < 13.0f) { + fopAcM_onSwitch(this, getSwbit()); + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + + if (fopAcM_GetRoomNo(this) == 0 || fopAcM_GetRoomNo(this) == 2 || fopAcM_GetRoomNo(this) == 5 || + fopAcM_GetRoomNo(this) == 9 || fopAcM_GetRoomNo(this) == 13) { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_ON, &home.pos, 0, 0); + } + } + } else if (player->getBaseAnimeFrame() < 20.0f) { + player->onChainForcePull(); + field_0xa6d = KREG_S(0) + 30; + } + } + } + } else if (field_0xa6d != 0 && !daPy_py_c::checkNowWolf()) { + if (cLib_calcTimer(&field_0xa6d) == 0) { + fopAcM_onSwitch(this, getSwbit()); + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + + if (fopAcM_GetRoomNo(this) == 0 || fopAcM_GetRoomNo(this) == 2 || fopAcM_GetRoomNo(this) == 5 + || fopAcM_GetRoomNo(this) == 9 || fopAcM_GetRoomNo(this) == 13) { + mDoAud_seStart(Z2SE_OBJ_CHAINSW_ON, &home.pos, 0, 0); + } + } + } else { + field_0xa68 = 0; + field_0xa6d = 0; + if (fopAcM_GetRoomNo(this) == 4 || fopAcM_GetRoomNo(this) == 6) { + fopAcM_offSwitch(this, getSwbit()); + } + } + } } /* 80CFAD50-80CFB450 002710 0700+00 1/1 0/0 0/0 .text setTension__14daObjSwChain_cFv */ void daObjSwChain_c::setTension() { - // NONMATCHING + f32 fVar1 = pow; + field_0xa6a = 0; + pow = 0.0f; + + if (mCarry == 0 && field_0xa61 == 0) { + field_0xa6e = field_0xa70 = 0; + } else { + int roomNo = fopAcM_GetRoomNo(this); + daPy_py_c* player = daPy_getPlayerActorClass(); + getTopChainNo(); + cXyz spbc, spc8; + spbc = home.pos; + spc8 = mChains[mChainNum].field_0x34; + f32 len = spc8.abs(spbc); + + f32 max = + #ifdef DEBUG + l_HIO.field_0xc + #else + 35.0f + #endif + * (mChainNum - 2); + + if (roomNo == 4 || roomNo == 6) { + max = (field_0xa67 + AREG_S(0) + -1) * + #ifdef DEBUG + l_HIO.field_0xc; + #else + 35.0f; + #endif + } + + if (field_0xa61 != 0) { + if (len > max) { + fopAcM_cancelHookCarryNow(this); + } + } else { + if (mOutNum == mChainNum || (roomNo == 4 || roomNo == 6) && mOutNum == field_0xa67) { + if ((fVar1 == 0.0f && len > max + 20.0f + KREG_F(3)) || (fVar1 != 0.0f && len > max + KREG_F(3))) { + cXyz spd4; + f32 fVar4 = player->getSpeedF(); + spd4.x = fVar4 * cM_ssin(player->current.angle.y); + f32 fVar5 = fVar4 * cM_scos(player->current.angle.y); + spd4.x *= KREG_F(6) + 1.0f; + spd4.z = fVar5 * (KREG_F(6) + 1.0f); + pow = std::sqrt(spd4.x * spd4.x + spd4.z * spd4.z); + + if (checkPlayerPull() && (roomNo != 4 && roomNo != 6 && mOutNum == mChainNum || (roomNo == 4 || roomNo == 6) && field_0xa67 == mChainNum)) { + player->onChainPullEnd(); + } + } else { + pow = 0.0f; + } + + cXyz spe0(mChains->field_0x34 - mChains[mChainNum].field_0x34); + player->setOutPower(pow, cM_atan2s(spe0.x, spe0.z), 0); + #ifdef DEBUG + if (l_HIO.field_0x41 != 0) { + dDbVw_Report(40, 260, "len<%.2f>max<%.2f>pow<%.2f>pl_spd<%.2f>", len, max, pow, player->getSpeedF()); + } + #endif + } else if ((roomNo == 4 || roomNo == 6) && mOutNum >= field_0xa69 - 1 && checkPlayerPull() && (fVar1 != 0.0f || len > max)) { + cXyz spec; + spec.x = player->getSpeedF() * cM_ssin(player->current.angle.y); + spec.z = player->getSpeedF() * cM_scos(player->current.angle.y); + spec.x *= (KREG_F(4) + 0.70000005f); + spec.z *= (KREG_F(4) + 0.70000005f); + pow = std::sqrt(spec.x * spec.x + spec.z * spec.z); + player->setOutPower(pow, player->current.angle.y + 0x7FFF, 0); + field_0xa6a = 1; + } + + if (daPy_py_c::checkNowWolf()) { + fVar1 = + #ifdef DEBUG + l_HIO.mTensionWolf; + #else + 13.0f; + #endif + } else { + f32 fVar7; + if (daPy_getPlayerActorClass()->checkBootsOrArmorHeavy()) { + fVar7 = + #ifdef DEBUG + l_HIO.mTensionBootsEquipped; + #else + 2.1f; + #endif + } else { + fVar7 = + #ifdef DEBUG + l_HIO.mTension; + #else + 15.0f; + #endif + } + fVar1 = fVar7; + } + + fVar1 = 1.0f - std::fabs(pow / fVar1); + if (fVar1 < 0.1f) { + fVar1 = 0.1f; + } + + field_0xa70 = fVar1 * (KREG_S(1) + 7000); + } + } } -/* 80CFB450-80CFB464 002E10 0014+00 8/8 0/0 0/0 .text getTopChainNo__14daObjSwChain_cFv - */ +/* 80CFB450-80CFB464 002E10 0014+00 8/8 0/0 0/0 .text getTopChainNo__14daObjSwChain_cFv */ int daObjSwChain_c::getTopChainNo() { - // NONMATCHING + return mChainNum - mOutNum + 1; } -/* 80CFB464-80CFB53C 002E24 00D8+00 1/1 0/0 0/0 .text checkPlayerPull__14daObjSwChain_cFv - */ -void daObjSwChain_c::checkPlayerPull() { - // NONMATCHING +/* 80CFB464-80CFB53C 002E24 00D8+00 1/1 0/0 0/0 .text checkPlayerPull__14daObjSwChain_cFv */ +BOOL daObjSwChain_c::checkPlayerPull() { + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); + cXyz sp2c; + cXyz sp38(mChains->field_0x34 - mChains[mChainNum].field_0x34); + + sp2c.x = player->getSpeedF() * cM_ssin(player->current.angle.y); + sp2c.z = player->getSpeedF() * cM_scos(player->current.angle.y); + + if (mCarry != 0 && sp38.inprodXZ(sp2c) < 0.0f) { + return TRUE; + } + + return FALSE; } /* 80CFB53C-80CFB5E8 002EFC 00AC+00 1/1 0/0 0/0 .text draw__14daObjSwChain_cFv */ int daObjSwChain_c::draw() { - // NONMATCHING + g_env_light.settingTevStruct(0, &home.pos, &tevStr); + + chain_s* chains_p = &mChains[getTopChainNo()]; + for (int i = 0; i < mOutNum - 1; i++, chains_p++) { + mModel.entryObj(&chains_p->mModel); + } + + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + mDoExt_modelUpdateDL(mpModel); + + #ifdef DEBUG + if (l_HIO.field_0x41 != 0) { + cXyz sp2c; + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&cXyz::BaseZ, &sp2c); + sp2c *= 200.0f; + sp2c += home.pos; + sp2c.y += 10.0f; + dDbVw_drawArrowOpa(home.pos, sp2c, (GXColor) {0, 0xFF, 0, 0xFF}, 1, 12); + + int iVar1 = l_HIO.field_0x3e; + if (iVar1 >= 0) { + if (iVar1 > mChainNum) { + iVar1 = mChainNum; + } + + cXyz& i_pos = mChains[iVar1].field_0x34; + dDbVw_drawSphereOpa(i_pos, 30.0f, (GXColor) {0xFF, 0xFF, 0xFF, 0xFF}, 1); + } else if (iVar1 == -2) { + chains_p = mChains; + for (int i = 0; i < mChainNum; i++, chains_p++) { + dDbVw_drawSphereOpa(chains_p[1].field_0x34, 10.0f, (GXColor) {0xFF, 0xFF, 0xFF, 0xFF}, 1); + } + } + + dDbVw_drawCircleOpa(home.pos, l_HIO.field_0xc * (mChainNum - 2), (GXColor) {0xFF, 0xFF, 0xFF, 0xFF}, 1, 12); + } + + cXyz i_start, i_end; + if (l_HIO.mReactionAngleDisplay != 0) { + i_start = home.pos; + i_end.set(0.0f, 0.0f, KREG_F(19) + 1000.0f); + mDoMtx_stack_c::transS(home.pos); + mDoMtx_stack_c::YrotM(shape_angle.y + l_HIO.mReactionAngle); + mDoMtx_stack_c::multVec(&i_end, &i_end); + dDbVw_drawLineOpa(i_start, i_end, (GXColor) {0xFF, 0, 0, 0xFF}, 1, 12); + + i_end.set(0.0f, 0.0f, KREG_F(19) + 1000.0f); + mDoMtx_stack_c::transS(home.pos); + mDoMtx_stack_c::YrotM(shape_angle.y - l_HIO.mReactionAngle); + mDoMtx_stack_c::multVec(&i_end, &i_end); + dDbVw_drawLineOpa(i_start, i_end, (GXColor) {0xFF, 0, 0, 0xFF}, 1, 12); + } + #endif + + return 1; } /* 80CFB5E8-80CFB61C 002FA8 0034+00 1/1 0/0 0/0 .text _delete__14daObjSwChain_cFv */ @@ -524,31 +1191,29 @@ int daObjSwChain_c::_delete() { return 1; } -/* 80CFB61C-80CFB63C 002FDC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Draw__FP14daObjSwChain_c */ +/* 80CFB61C-80CFB63C 002FDC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Draw__FP14daObjSwChain_c */ static int daObjSwChain_Draw(daObjSwChain_c* i_this) { return i_this->draw(); } -/* 80CFB63C-80CFB65C 002FFC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Execute__FP14daObjSwChain_c */ +/* 80CFB63C-80CFB65C 002FFC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Execute__FP14daObjSwChain_c */ static int daObjSwChain_Execute(daObjSwChain_c* i_this) { return i_this->execute(); } -/* 80CFB65C-80CFB67C 00301C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Delete__FP14daObjSwChain_c */ +/* 80CFB65C-80CFB67C 00301C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Delete__FP14daObjSwChain_c */ static int daObjSwChain_Delete(daObjSwChain_c* i_this) { fpc_ProcID unused = fopAcM_GetID(i_this); return i_this->_delete(); } -/* 80CFB67C-80CFB69C 00303C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Create__FP10fopAc_ac_c - */ +/* 80CFB67C-80CFB69C 00303C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Create__FP10fopAc_ac_c */ static int daObjSwChain_Create(fopAc_ac_c* a_this) { daObjSwChain_c* i_this = (daObjSwChain_c*)a_this; fpc_ProcID unused = fopAcM_GetID(a_this); - return i_this->Create(); + return i_this->create1st(); } -/* ############################################################################################## */ /* 80CFB81C-80CFB83C -00001 0020+00 1/0 0/0 0/0 .data l_daObjSwChain_Method */ static actor_method_class l_daObjSwChain_Method = { (process_method_func)daObjSwChain_Create, (process_method_func)daObjSwChain_Delete, diff --git a/src/d/d_model.cpp b/src/d/d_model.cpp index a356b841431..9afd0f9b70b 100644 --- a/src/d/d_model.cpp +++ b/src/d/d_model.cpp @@ -130,9 +130,3 @@ dMdl_c* dMdl_mng_c::entry(J3DModelData* i_modelData, u16 i_materialId, int i_roo dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(i_roomNo); return m_myObj->entry(i_modelData, i_materialId, tevstr); } - -/* 8009C930-8009C964 097270 0034+00 1/1 0/0 0/0 .text __ct__6dMdl_cFv */ -dMdl_c::dMdl_c() { - mpModelData = NULL; - mMaterialId = 0; -}