diff options
Diffstat (limited to 'src/d/actor/d_a_kago.cpp')
| -rw-r--r-- | src/d/actor/d_a_kago.cpp | 2038 |
1 files changed, 1014 insertions, 1024 deletions
diff --git a/src/d/actor/d_a_kago.cpp b/src/d/actor/d_a_kago.cpp index 9f4dd6e463..de8cd355c4 100644 --- a/src/d/actor/d_a_kago.cpp +++ b/src/d/actor/d_a_kago.cpp @@ -23,6 +23,16 @@ #include "f_op/f_op_camera_mng.h" #include "f_op/f_op_overlap_mng.h" +#include "res/Object/E_yc.h" +#include "res/Object/E_kc.h" + +#define TYPE_TWILIGHT 0 +#define TYPE_NORMAL 1 + +#define SCENE_TYPE_LAKE_HYLIA 0 +#define SCENE_TYPE_RIVER 1 +#define SCENE_TYPE_BOARD_HOUSE 2 +#define SCENE_TYPE_DEFAULT 3 namespace { static dCcD_SrcSph cc_sph_src = { { @@ -143,44 +153,34 @@ void daKago_HIO_c::genMessage(JORMContext* ctx) { } #endif -int daKago_c::getBckName(int param_0) { - if (field_0x6e7 == 0) { - return param_0; +int daKago_c::getBckName(int i_resIdx) { + if (mType == TYPE_TWILIGHT) { + return i_resIdx; } - switch (param_0) { - case 7: - return 4; - case 8: - return 5; - case 9: - return 6; - case 10: - return 7; - case 11: - return 8; - case 12: - return 9; - case 13: - return 10; - case 14: - return 11; - case 15: - return 12; - case 21: - return 13; - default: - return 6; - } -} - -void daKago_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) { - mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes(field_0x75c, getBckName(param_0)), - param_1, param_2, param_3, 0.0f, -1.0f); -} - -bool daKago_c::checkBck(int param_0) { - if (mpMorf->getAnm() == dComIfG_getObjectRes(field_0x75c, getBckName(param_0))) { + // convert shadow kargorok res idx to normal kargorok res idx + switch (i_resIdx) { + case dRes_ID_E_YC_BCK_YC_CRASH_e: return dRes_ID_E_KC_BCK_KC_CRASH_e; + case dRes_ID_E_YC_BCK_YC_CRASH2_e: return dRes_ID_E_KC_BCK_KC_CRASH2_e; + case dRes_ID_E_YC_BCK_YC_FLY_e: return dRes_ID_E_KC_BCK_KC_FLY_e; + case dRes_ID_E_YC_BCK_YC_FLY_BRAKE_e: return dRes_ID_E_KC_BCK_KC_FLY_BRAKE_e; + case dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_DASH_WL_e; + case dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e: return dRes_ID_E_KC_BCK_KC_FLY_GLIDE_e; + case dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_GLIDE_WL_e; + case dRes_ID_E_YC_BCK_YC_FLY_LIMIT_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_LIMIT_WL_e; + case dRes_ID_E_YC_BCK_YC_FLY_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_WL_e; + case dRes_ID_E_YC_BCK_YC_HOVERING_e: return dRes_ID_E_KC_BCK_KC_HOVERING_e; + default: return dRes_ID_E_KC_BCK_KC_FLY_e; + } +} + +void daKago_c::setBck(int i_anm, u8 i_mode, f32 i_morf, f32 i_speed) { + mAnm_p->setAnm((J3DAnmTransform*)dComIfG_getObjectRes(mArcName, getBckName(i_anm)), + i_mode, i_morf, i_speed, 0.0f, -1.0f); +} + +bool daKago_c::checkBck(int i_anm) { + if (mAnm_p->getAnm() == dComIfG_getObjectRes(mArcName, getBckName(i_anm))) { return true; } else { return false; @@ -193,16 +193,19 @@ int daKago_c::draw() { } g_env_light.settingTevStruct(2, ¤t.pos, &tevStr); - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); g_env_light.setLightTevColorType_MAJI(model, &tevStr); + fopAcM_setEffectMtx(this, model->getModelData()); + dComIfGd_setListDark(); - mpMorf->entryDL(); + mAnm_p->entryDL(); dComIfGd_setList(); + cXyz unkXyz1; unkXyz1.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); - field_0x764 = - dComIfGd_setShadow(field_0x764, 0, model, &unkXyz1, 3500.0f, 0.0f, current.pos.y, + mShadowId = + dComIfGd_setShadow(mShadowId, 0, model, &unkXyz1, 3500.0f, 0.0f, current.pos.y, mObjAcch.GetGroundH(), mObjAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); @@ -216,22 +219,26 @@ static int daKago_Draw(daKago_c* i_this) { int daKago_c::executeBalloonMenu() { dCamera_c* camera = dCam_getBody(); - switch (field_0x6eb) { + switch (mBalloonMenuMode) { case 0: - if (field_0x6e7 == 1 && (mCurrentAction == 0 || mCurrentAction == 5) && - !dComIfGp_event_runCheck() && mDoCPd_c::getTrigB(0)) + if (mType == TYPE_NORMAL && (mAction == ACTION_FLY_e || mAction == ACTION_ATTACK_e) && + !dComIfGp_event_runCheck() && mDoCPd_c::getTrigB(PAD_1)) { - field_0x6eb = 1; + mBalloonMenuMode = 1; return 1; } return 0; case 1: - if (eventInfo.checkCommandDemoAccrpt() == 0) { + if (!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(this, 1, 0xffff, 0); - eventInfo.onCondition(2); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + #if VERSION == VERSION_SHIELD_DEBUG + return 0; + #else break; + #endif } mMsgFlow.init(this, 0x457, 0, NULL); @@ -239,32 +246,29 @@ int daKago_c::executeBalloonMenu() { camera->Stop(); camera->SetTrimSize(3); - field_0x6eb = 0x2; - + mBalloonMenuMode = 2; break; case 2: if (mMsgFlow.doFlow(this, NULL, 0)) { if (dMsgObject_getSelectCursorPos() == 0) { - field_0x6eb = 0; + mBalloonMenuMode = 0; camera->Start(); camera->SetTrimSize(0); dComIfGp_event_reset(); - return 1; } if (dMsgObject_getSelectCursorPos() == 1) { - field_0x6eb = 3; + mBalloonMenuMode = 3; dComIfGp_setNextStage("F_SP112", 0, dComIfGp_roomControl_getStayNo(), dComIfG_play_c::getLayerNo(0), 0.0f, 10, 1, 0, 0, 1, 0); } else { - field_0x6eb = 3; + mBalloonMenuMode = 3; dStage_changeScene(3, 0.0f, 0, fopAcM_GetRoomNo(this), 0, -1); } } - break; } @@ -275,37 +279,35 @@ static u8 hio_set; static daKago_HIO_c l_HIO; f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) { - f32 retVal; - - retVal = mGroundHeight; + f32 gnd_height = mGroundHeight; if (mpPath1 != NULL) { - cXyz pointPos1; - cXyz pointPos2; + cXyz nextPntPos; + cXyz prevPntPos; cXyz cStack_140; - pointPos1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; + nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; - int pointIdx2 = (int)mPathIdx - (int)mPathIdxOffset; - if (pointIdx2 >= mpPath1->m_num || pointIdx2 < 0) { - pointIdx2 = mPathIdx; + int prevPntNo = (int)mPathCurrentPointNo - (int)mPathStep; + if (prevPntNo >= mpPath1->m_num || prevPntNo < 0) { + prevPntNo = mPathCurrentPointNo; } - pointPos2 = dPath_GetPnt(mpPath1, pointIdx2)->m_position; + prevPntPos = dPath_GetPnt(mpPath1, prevPntNo)->m_position; - s16 targetAngleY = cLib_targetAngleY(&pointPos2, &pointPos1); + s16 pntAngle = cLib_targetAngleY(&prevPntPos, &nextPntPos); - mDoMtx_stack_c::YrotS(-targetAngleY); + mDoMtx_stack_c::YrotS(-pntAngle); mDoMtx_stack_c::transM(-i_pos.x, -i_pos.y, -i_pos.z); - mDoMtx_stack_c::multVec(&pointPos2, &cStack_140); + mDoMtx_stack_c::multVec(&prevPntPos, &cStack_140); f32 var_f29 = -cStack_140.z; if (var_f29 < 0.0f) { var_f29 = 0.0f; } - mDoMtx_stack_c::YrotS(-targetAngleY); + mDoMtx_stack_c::YrotS(-pntAngle); mDoMtx_stack_c::transM(-i_pos.x, -i_pos.y, -i_pos.z); - mDoMtx_stack_c::multVec(&pointPos1, &cStack_140); + mDoMtx_stack_c::multVec(&nextPntPos, &cStack_140); f32 var_f28 = cStack_140.z; if (var_f28 < 0.0f) { @@ -313,12 +315,12 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) { } f32 var_f27 = var_f29 / (var_f29 + var_f28); - retVal = pointPos1.y * var_f27 + pointPos2.y * (1.0f - var_f27); + gnd_height = nextPntPos.y * var_f27 + prevPntPos.y * (1.0f - var_f27); if (o_step != NULL) { - f32 pointLatDist = pointPos1.absXZ(pointPos2); - f32 pointVertDist = std::abs(pointPos1.y - pointPos2.y); - *o_step = pointVertDist * l_HIO.mFlightSpeed / pointLatDist + 5.0f; + f32 pntDistXZ = nextPntPos.absXZ(prevPntPos); + f32 pntDistY = std::abs(nextPntPos.y - prevPntPos.y); + *o_step = pntDistY * l_HIO.mFlightSpeed / pntDistXZ + 5.0f; } } @@ -327,19 +329,20 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) { dBgS_GndChk gndChk; cXyz gndChkPos(i_pos.x, i_pos.y + 500.0f, i_pos.z); gndChk.SetPos(&gndChkPos); - field_0x700 = dComIfG_Bgsp().GroundCross(&gndChk); + mGroundFlyHeight = dComIfG_Bgsp().GroundCross(&gndChk); + + mGndSpecialCode = 0; - field_0x738 = 0; + if (mGroundFlyHeight != -G_CM3D_F_INF) { + mGndSpecialCode = dComIfG_Bgsp().GetSpecialCode(gndChk); - if (field_0x700 != -G_CM3D_F_INF) { - field_0x738 = dComIfG_Bgsp().GetSpecialCode(gndChk); - field_0x700 += l_HIO.mFlightGroundAltitude; - if (retVal < field_0x700) { - retVal = field_0x700; - if (current.pos.y < retVal) { + mGroundFlyHeight += l_HIO.mFlightGroundAltitude; + if (gnd_height < mGroundFlyHeight) { + gnd_height = mGroundFlyHeight; + if (current.pos.y < gnd_height) { mGroundHeight = current.pos.y; } else { - mGroundHeight = field_0x700; + mGroundHeight = mGroundFlyHeight; } if (o_step != NULL) { @@ -360,15 +363,15 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) { unkFlag1 = TRUE; } - if (retVal < gndCrossMag) { - field_0x700 = gndCrossMag; - retVal = gndCrossMag; + if (gnd_height < gndCrossMag) { + mGroundFlyHeight = gndCrossMag; + gnd_height = gndCrossMag; field_0x6e0 = 1; if (current.pos.y < gndCrossMag) { mGroundHeight = current.pos.y; } else { - mGroundHeight = field_0x700; + mGroundHeight = mGroundFlyHeight; } if (o_step != NULL) { @@ -382,37 +385,37 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) { field_0x6e6 = 1; } } else { - field_0x71c = 0; + mWaterSplashTimer = 0; field_0x6e6 = 0; } - return retVal; + return gnd_height; } -f32 daKago_c::checkRoofHeight(cXyz param_0) { - f32 roofChkYVal = mRoofHeight; +f32 daKago_c::checkRoofHeight(cXyz i_pos) { + f32 roof_height = mRoofHeight; BOOL unkFlag1 = FALSE; field_0x6e5 = 0; dBgS_RoofChk roofChk; - cXyz unkXyz1(param_0.x, param_0.y - 500.0f, param_0.z); - roofChk.SetPos(unkXyz1); + cXyz chkpos(i_pos.x, i_pos.y - 500.0f, i_pos.z); + roofChk.SetPos(chkpos); - roofChkYVal = dComIfG_Bgsp().RoofChk(&roofChk); - if (roofChkYVal != G_CM3D_F_INF) { - roofChkYVal -= l_HIO.mFlightCeilingAltitude; - if (current.pos.y > roofChkYVal) { + roof_height = dComIfG_Bgsp().RoofChk(&roofChk); + if (roof_height != G_CM3D_F_INF) { + roof_height -= l_HIO.mFlightCeilingAltitude; + if (current.pos.y > roof_height) { mRoofHeight = current.pos.y; } else { - mRoofHeight = roofChkYVal; + mRoofHeight = roof_height; } if (dComIfG_Bgsp().GetSpecialCode(roofChk) == 1) { unkFlag1 = TRUE; } - if (std::abs(current.pos.y - roofChkYVal) < 310.0f) { + if (std::abs(current.pos.y - roof_height) < 310.0f) { fopAc_ac_c* actor = dComIfG_Bgsp().GetActorPointer(roofChk); if (actor != NULL && fopAcM_GetName(actor) == PROC_Obj_RIVERROCK) { if (((daObjRIVERROCK_c*)actor)->mBreakSubAction == daObjRIVERROCK_c::BREAK_MOVE) { @@ -432,7 +435,7 @@ f32 daKago_c::checkRoofHeight(cXyz param_0) { field_0x6e3 = 0; } - return roofChkYVal; + return roof_height; } void daKago_c::checkMoveHeight() { @@ -444,58 +447,61 @@ void daKago_c::checkMoveHeight() { void daKago_c::checkSizeBg() { dBgS_LinChk linChk; - cXyz unkXyz1; - cXyz unkXyz2; + cXyz line_start; + cXyz line_end; cM3dGPla plane; - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); field_0x6d9 = 0; - if (mCurrentAction == 4) { + if (mAction == ACTION_WAIT_e) { return; } - mDoMtx_stack_c::copy(model->getAnmMtx(10)); - mDoMtx_stack_c::multVecZero(&unkXyz1); - mDoMtx_stack_c::copy(model->getAnmMtx(14)); - mDoMtx_stack_c::multVecZero(&unkXyz2); - unkXyz2 = unkXyz1 + (unkXyz2 - unkXyz1) * 0.9f; - linChk.Set(&unkXyz1, &unkXyz2, NULL); + mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_SHOULDERL_1_e)); + mDoMtx_stack_c::multVecZero(&line_start); + mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_HANDL_3_e)); + mDoMtx_stack_c::multVecZero(&line_end); + line_end = line_start + (line_end - line_start) * 0.9f; + linChk.Set(&line_start, &line_end, NULL); + if (dComIfG_Bgsp().LineCross(&linChk)) { dComIfG_Bgsp().GetTriPla(linChk, &plane); if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) { field_0x6d9 |= (u8)1; - field_0x650[0] = linChk.GetCross(); + mWallHitEffPos[0] = linChk.GetCross(); } } - mDoMtx_stack_c::copy(model->getAnmMtx(15)); - mDoMtx_stack_c::multVecZero(&unkXyz1); - mDoMtx_stack_c::copy(model->getAnmMtx(19)); - mDoMtx_stack_c::multVecZero(&unkXyz2); - unkXyz2 = (unkXyz1 + (unkXyz2 - unkXyz1) * 0.9f); - linChk.Set(&unkXyz1, &unkXyz2, NULL); + mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_SHOULDERR_1_e)); + mDoMtx_stack_c::multVecZero(&line_start); + mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_HANDR_3_e)); + mDoMtx_stack_c::multVecZero(&line_end); + line_end = (line_start + (line_end - line_start) * 0.9f); + linChk.Set(&line_start, &line_end, NULL); + if (dComIfG_Bgsp().LineCross(&linChk)) { dComIfG_Bgsp().GetTriPla(linChk, &plane); if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) { field_0x6d9 |= (u8)0x2; - field_0x650[1] = linChk.GetCross(); + mWallHitEffPos[1] = linChk.GetCross(); } } - unkXyz1 = current.pos; - mDoMtx_stack_c::copy(model->getAnmMtx(1)); - mDoMtx_stack_c::multVecZero(&unkXyz1); + line_start = current.pos; + mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_BACKBONE1_e)); + mDoMtx_stack_c::multVecZero(&line_start); mDoMtx_stack_c::transM(300.0f, 0.0f, 0.0f); - mDoMtx_stack_c::multVecZero(&unkXyz2); - linChk.Set(&unkXyz1, &unkXyz2, NULL); + mDoMtx_stack_c::multVecZero(&line_end); + linChk.Set(&line_start, &line_end, NULL); + if (dComIfG_Bgsp().LineCross(&linChk)) { dComIfG_Bgsp().GetTriPla(linChk, &plane); if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) { if (!checkYaguraPos(linChk.GetCross())) { field_0x6d9 |= (u8)4; - this->field_0x650[2] = linChk.GetCross(); + mWallHitEffPos[2] = linChk.GetCross(); } } } @@ -505,12 +511,12 @@ s16 daKago_c::getBeforeGroundHeight(u8 param_0) { return 0; } -void daKago_c::demo_skip(int param_0) { +void daKago_c::demo_skip(int i_parameter) { dCamera_c* camera = dCam_getBody(); - switch (param_0) { + switch (i_parameter) { case 0: - field_0x748 = 2; + mDemoMode = 2; field_0x74c = 0; break; case 1: @@ -521,10 +527,10 @@ void daKago_c::demo_skip(int param_0) { case 2: setMidnaRideOn(); setPlayerRideOn(); - field_0x718 = field_0x71a = 0; + mHeadRotZ = mHeadRotY = 0; /* dSv_event_flag_c::M_051 - Main Event - Shadow Kargorok (?) (Large) event complete (Horse grass appears in various places) */ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[84]); - field_0x748 = 7; + mDemoMode = 7; field_0x74c = 0; break; case 4: @@ -534,10 +540,10 @@ void daKago_c::demo_skip(int param_0) { case 5: case 6: if (setSceneChange(3)) { - if (param_0 == 5) { - field_0x748 = 6; + if (i_parameter == 5) { + mDemoMode = 6; } else { - field_0x748 = 5; + mDemoMode = 5; field_0x6cc = 1.0f; } } @@ -545,14 +551,14 @@ void daKago_c::demo_skip(int param_0) { case 7: setRideOff(); case 8: { - field_0x68c.set(-77875.0f, -18287.0f, 42000.0f); - field_0x698.set(-77275.0f, -18500.0f, 41090.0f); + mDemoCamCenter.set(-77875.0f, -18287.0f, 42000.0f); + mDemoCamEye.set(-77275.0f, -18500.0f, 41090.0f); field_0x6a4.set(-77615.0f, -18640.0f, 41400.0f); daPy_getPlayerActorClass()->setPlayerPosAndAngle(&field_0x6a4, 0, 0); field_0x6de = 0; speed.y = speedF = 0.0f; - setActionMode(4, 0); - camera->Set(field_0x68c, field_0x698, 70.0f, 0); + setActionMode(ACTION_WAIT_e, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, 70.0f, 0); camera->Reset(); camera->Start(); camera->SetTrimSize(0); @@ -563,14 +569,14 @@ void daKago_c::demo_skip(int param_0) { case 9: setRideOff(); case 10: - field_0x68c.set(3703.0f, 337.0f, 863.0f); - field_0x698.set(3726.0f, 272.0f, 1196.0f); + mDemoCamCenter.set(3703.0f, 337.0f, 863.0f); + mDemoCamEye.set(3726.0f, 272.0f, 1196.0f); field_0x6a4.set(3782.0f, 222.0f, 690.0f); daPy_getPlayerActorClass()->setPlayerPosAndAngle(&field_0x6a4, 0, 0); field_0x6de = 0; speed.y = speedF = 0.0f; - setActionMode(4, 0); - camera->Set(field_0x68c, field_0x698, 70.0f, 0); + setActionMode(ACTION_WAIT_e, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, 70.0f, 0); camera->Reset(); camera->Start(); camera->SetTrimSize(0); @@ -579,27 +585,28 @@ void daKago_c::demo_skip(int param_0) { } } -int daKago_c::DemoSkipCallBack(void* param_0, int param_1) { - if (param_0 != NULL) { - ((daKago_c*)param_0)->demo_skip(param_1); - return 1; +int daKago_c::DemoSkipCallBack(void* i_this, int i_parameter) { + if (i_this != NULL) { + ((daKago_c*)i_this)->demo_skip(i_parameter); + return TRUE; } - return 0; + + return FALSE; } -void daKago_c::setActionMode(int param_0, int param_1) { +void daKago_c::setActionMode(int i_action, int i_mode) { mIsFlying = false; - mCurrentAction = param_0; - field_0x744 = param_1; + mAction = i_action; + mMode = i_mode; } void daKago_c::setMidnaTagPos() { - cXyz unkXyz1; + cXyz tagPos; daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor(); if (midna != NULL) { mDoMtx_stack_c::copy(getMidnaLocaterMtx()); - mDoMtx_stack_c::multVecZero(&unkXyz1); - midna->onTagWaitPos(&unkXyz1); + mDoMtx_stack_c::multVecZero(&tagPos); + midna->onTagWaitPos(&tagPos); } } @@ -621,6 +628,7 @@ void daKago_c::setRideOff() { midna->offTagWaitPos(); midna->offCargoActor(); } + daPy_getPlayerActorClass()->offCargoCarry(); } @@ -628,78 +636,75 @@ s8 daKago_c::searchNearPassPoint() { cXyz pointPos; cXyz playerPos(daPy_getPlayerActorClass()->current.pos); - f32 unkFloat1; - f32 unkFloat2 = unkFloat1 = 100000.0f; - int pointIdx1; + f32 prev_nearest_distXZ, nearest_distXZ; + nearest_distXZ = prev_nearest_distXZ = 100000.0f; + int nearest_point_no; + for (int i = 0; i < mpPath1->m_num; i++) { - pointPos = dPath_GetPnt(mpPath1,i)->m_position; + pointPos = dPath_GetPnt(mpPath1, i)->m_position; - f32 playerLatDist = playerPos.absXZ(pointPos); - if (playerLatDist < unkFloat2) { - unkFloat1 = unkFloat2; - unkFloat2 = playerLatDist; - pointIdx1 = i; - } else if (playerLatDist < unkFloat1) { - unkFloat1 = playerLatDist; + f32 player_pnt_distXZ = playerPos.absXZ(pointPos); + if (player_pnt_distXZ < nearest_distXZ) { + prev_nearest_distXZ = nearest_distXZ; + nearest_distXZ = player_pnt_distXZ; + nearest_point_no = i; + } else if (player_pnt_distXZ < prev_nearest_distXZ) { + prev_nearest_distXZ = player_pnt_distXZ; } } - int pointIdx2 = pointIdx1 + mPathIdxOffset; - if (pointIdx2 < 0) { - pointIdx2 = 1; - } else if (pointIdx2 >= mpPath1->m_num) { - pointIdx2 = mpPath1->m_num - 1; + int next_point_no = nearest_point_no + mPathStep; + if (next_point_no < 0) { + next_point_no = 1; + } else if (next_point_no >= mpPath1->m_num) { + next_point_no = mpPath1->m_num - 1; } - return pointIdx2; + return next_point_no; } -int daKago_c::setSceneChange(int param_0) { - int unkInt1 = 0; - switch (param_0) { +int daKago_c::setSceneChange(int i_mode) { + int exitID = 0; + + switch (i_mode) { case 0: - if (field_0x6e7 == 0) { - unkInt1 = 1; + if (mType == TYPE_TWILIGHT) { + exitID = 1; } else { - unkInt1 = 6; + exitID = 6; } - break; case 1: - unkInt1 = 0; - + exitID = 0; endBalloonScore(); - break; case 2: - if (field_0x6e7 == 0) { - unkInt1 = 3; + if (mType == TYPE_TWILIGHT) { + exitID = 3; } else { - unkInt1 = 0; + exitID = 0; } endBalloonScore(); - break; case 3: - unkInt1 = 3; - + exitID = 3; break; } - return dStage_changeScene(unkInt1, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1); + return dStage_changeScene(exitID, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1); } void daKago_c::createBalloonScore() { - if (field_0x6e7 != 0 && mBalloon2DId == fpcM_ERROR_PROCESS_ID_e) { - mBalloon2DId = fopAcM_create(PROC_BALLOON2D, 0, 0, 0xffffffff, 0, 0, -1); + if (mType != TYPE_TWILIGHT && mBalloon2DId == fpcM_ERROR_PROCESS_ID_e) { + mBalloon2DId = fopAcM_create(PROC_BALLOON2D, 0, NULL, -1, NULL, NULL, -1); field_0x6e9 = 1; } } void daKago_c::startBalloonScore() { fopAc_ac_c* balloon_actor; - if (field_0x6e7 != 0 && field_0x6e9 == 1) { + if (mType != TYPE_TWILIGHT && field_0x6e9 == 1) { fopAcM_SearchByID(mBalloon2DId, &balloon_actor); if (balloon_actor != NULL) { ((daBalloon2D_c*)balloon_actor)->show(); @@ -711,9 +716,9 @@ void daKago_c::startBalloonScore() { void daKago_c::endBalloonScore() { fopAc_ac_c* balloon2D; - fopAc_ac_c *balloonObj; + fopAc_ac_c* balloonObj; - if (field_0x6e7 != 0) { + if (mType != TYPE_TWILIGHT) { fopAcM_SearchByID(mBalloon2DId, &balloon2D); if (balloon2D != NULL) { ((daBalloon2D_c*)balloon2D)->hide(); @@ -726,11 +731,11 @@ void daKago_c::endBalloonScore() { } } -f32 daKago_c::checkNextPath(cXyz param_0) { +f32 daKago_c::checkNextPath(cXyz i_pntPos) { cXyz cStack_14; mDoMtx_stack_c::YrotS(-field_0x714); mDoMtx_stack_c::transM(-current.pos.x, -current.pos.y, -current.pos.z); - mDoMtx_stack_c::multVec(¶m_0, &cStack_14); + mDoMtx_stack_c::multVec(&i_pntPos, &cStack_14); return cStack_14.z; } @@ -745,10 +750,11 @@ void daKago_c::checkHeight() { bool daKago_c::checkYaguraPos(cXyz param_0) { cXyz local_18(-22984.0f, 0.0f, 7455.0f); cXyz cStack_24; - s16 temp = -0x770; - mDoMtx_stack_c::YrotS(-temp); + s16 rot_y = -0x770; + mDoMtx_stack_c::YrotS(-rot_y); mDoMtx_stack_c::transM(-local_18.x, -local_18.y, -local_18.z); mDoMtx_stack_c::multVec(¶m_0, &cStack_24); + if (std::abs(cStack_24.z) < 700.0f) { return true; } else { @@ -758,12 +764,12 @@ bool daKago_c::checkYaguraPos(cXyz param_0) { bool daKago_c::checkWallHitFall(int param_0) { if (field_0x6e5 != 0) { - cXyz unkXyz1; - setActionMode(1, 3); - dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - unkXyz1 = current.pos; - unkXyz1.y += 200.0f; - setWallHitEffect(unkXyz1, 0); + cXyz effpos; + setActionMode(ACTION_STAGGER_e, 3); + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER8, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + effpos = current.pos; + effpos.y += 200.0f; + setWallHitEffect(effpos, 0); return true; } @@ -773,37 +779,37 @@ bool daKago_c::checkWallHitFall(int param_0) { if (!checkYaguraPos(current.pos)) { if (abs(unkInt1) > 0x7000) { field_0x6d9 |= (u8)0x4; - field_0x650[2].set(current.pos.x + cM_ssin(shape_angle.y) * 200.0f, current.pos.y, current.pos.z + cM_scos(shape_angle.y) * 200.0f); + mWallHitEffPos[2].set(current.pos.x + cM_ssin(shape_angle.y) * 200.0f, current.pos.y, current.pos.z + cM_scos(shape_angle.y) * 200.0f); } } if (unkInt1 > 0) { field_0x6d9 |= (u8)0x1; - field_0x650[0].set(current.pos.x + cM_ssin(shape_angle.y + 0x4000) * 200.0f, current.pos.y, - current.pos.z + cM_scos(shape_angle.y + 0x4000) * 200.0f); + mWallHitEffPos[0].set(current.pos.x + cM_ssin(shape_angle.y + 0x4000) * 200.0f, current.pos.y, + current.pos.z + cM_scos(shape_angle.y + 0x4000) * 200.0f); } else { field_0x6d9 |= (u8)0x2; - field_0x650[1].set(current.pos.x + cM_ssin(shape_angle.y + -0x4000) * 200.0f, - current.pos.y, - current.pos.z + cM_scos(shape_angle.y + -0x4000) * 200.0f); + mWallHitEffPos[1].set(current.pos.x + cM_ssin(shape_angle.y + -0x4000) * 200.0f, + current.pos.y, + current.pos.z + cM_scos(shape_angle.y + -0x4000) * 200.0f); } } if ((field_0x6d9 & 0x4) != 0) { - setActionMode(1, 0); - dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - setWallHitEffect(field_0x650[2], 0); + setActionMode(ACTION_STAGGER_e, 0); + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER8, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + setWallHitEffect(mWallHitEffPos[2], 0); return true; } - if (param_0 != 0 && field_0x720 == 0 && (field_0x6d9 & 0x3) != 0) { - dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + if (param_0 != 0 && mWallHitInvulnTimer == 0 && (field_0x6d9 & 0x3) != 0) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); if ((field_0x6d9 & 0x1) != 0) { - setActionMode(1, 1); - setWallHitEffect(field_0x650[0], 1); + setActionMode(ACTION_STAGGER_e, 1); + setWallHitEffect(mWallHitEffPos[0], 1); } else { - setActionMode(1, 2); - setWallHitEffect(field_0x650[1], 1); + setActionMode(ACTION_STAGGER_e, 2); + setWallHitEffect(mWallHitEffPos[1], 1); } return true; } @@ -816,8 +822,8 @@ bool daKago_c::checkAttackStart() { return false; } - if (mDoCPd_c::getTrigA(0)) { - setActionMode(5, 0); + if (mDoCPd_c::getTrigA(PAD_1)) { + setActionMode(ACTION_ATTACK_e, 0); mIsFlying = true; return true; } else { @@ -825,11 +831,9 @@ bool daKago_c::checkAttackStart() { } } -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - s16 daKago_c::getValueY(f32 param_0) { - s16 valueY = field_0x6f4 * param_0; + s16 valueY = mStickY * param_0; + f32 var_f31; if (valueY < 0) { if (current.pos.y > mRoofHeight - 200.0f) { @@ -853,11 +857,11 @@ s16 daKago_c::getValueY(f32 param_0) { } s16 daKago_c::getValueX(f32 param_0) { - return -field_0x6f0 * param_0; + return -mStickX * param_0; } s16 daKago_c::getValueAbsX(f32 param_0) { - return std::abs(-field_0x6f0 * param_0); + return std::abs(-mStickX * param_0); } void daKago_c::flySpeedCalcLockOn() { @@ -873,31 +877,31 @@ void daKago_c::flySpeedCalcLockOn() { cLib_addCalcAngleS(¤t.angle.x, angleX, 8, 0x100, 0x10); shape_angle.x = current.angle.x; - s16 angleX2 = current.angle.y; + + s16 prevAngleY = current.angle.y; cLib_addCalcAngleS(¤t.angle.y, angleY, 8, 0x100, 0x10); shape_angle.y = current.angle.y; - cLib_addCalcAngleS(&shape_angle.z, ((angleX2 - current.angle.y) * 0x20), 8, 0x400, 0x10); + cLib_addCalcAngleS(&shape_angle.z, ((prevAngleY - current.angle.y) * 0x20), 8, 0x400, 0x10); if (shape_angle.z > 0x3000) { shape_angle.z = 0x3000; } - if (shape_angle.z < -0x3000) { shape_angle.z = -0x3000; } } -void daKago_c::flySpeedCalc(s16 param_0, int param_1) { +void daKago_c::flySpeedCalc(s16 param_0, int i_calcType) { s16 var_r29; s16 var_r28; s16 var_r27; s16 sp_8; - if (param_1 == 0) { + if (i_calcType == 0) { sp_8 = 0x2000; - } else if (param_1 == 1) { + } else if (i_calcType == 1) { sp_8 = 0x1000; - } else if (param_1 == 2) { + } else if (i_calcType == 2) { sp_8 = 0x2aaa; } @@ -910,7 +914,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { field_0x710 += getValueY(40.0f); var_r29 = 0x200; - if (param_1 == 2) { + if (i_calcType == 2) { var_r29 = 0x400; } if (field_0x710 > var_r29) { @@ -920,7 +924,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { field_0x710 = -var_r29; } - if (field_0x6f4 > 0.0f) { + if (mStickY > 0.0f) { if (current.angle.x < var_r28) { current.angle.x += field_0x710; } else { @@ -952,6 +956,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { } current.angle.x += field_0x710; } + if (current.angle.x > 0x2aaa) { current.angle.x = 0x2aaa; } @@ -961,28 +966,28 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { shape_angle.x = current.angle.x; var_r27 = 0x2000; - if (param_1 == 1) { + if (i_calcType == 1) { var_r27 = 0x1000; - } else if (param_1 == 2) { + } else if (i_calcType == 2) { var_r27 = 0x2aaa; } f32 unkFloat1 = 20.0f; var_r29 = 0x100; - if (param_1 == 2) { + if (i_calcType == 2) { unkFloat1 = 30.0f; var_r29 = 0x200; } var_r28 = param_0 + getValueX(var_r27); if (mpLockActor != NULL) { - var_r28 = cLib_targetAngleY((Vec*)¤t, (Vec*)&mpLockActor->current); + var_r28 = cLib_targetAngleY(¤t.pos, &mpLockActor->current.pos); } int always_zero = 0; if (!always_zero) { if (abs((s16)(current.angle.y - param_0)) < var_r27) { - if (field_0x6f0) { + if (mStickX) { field_0x712 += getValueX(unkFloat1); if (field_0x712 > getValueAbsX(var_r29)) { field_0x712 = getValueAbsX(var_r29); @@ -993,18 +998,20 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { } else { cLib_addCalcAngleS(&field_0x712, 0, 8, 0x20, 0x10); } + current.angle.y += field_0x712; } else { int sp_14 = 0; - if (field_0x6f0 < 0.0f) { + if (mStickX < 0.0f) { if ((s16)(current.angle.y - param_0) < var_r27) { sp_14 = 1; } } else { - if (field_0x6f0 > 0.0f && (s16)(current.angle.y - param_0) > var_r27) { + if (mStickX > 0.0f && (s16)(current.angle.y - param_0) > var_r27) { sp_14 = 1; } } + if (sp_14 != 0) { field_0x712 += getValueX(unkFloat1); if (field_0x712 > getValueAbsX(var_r29)) { @@ -1020,7 +1027,9 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { } } } + shape_angle.y = current.angle.y; + cLib_addCalcAngleS(&shape_angle.z, -field_0x712 * 0x20, 8, 0x400, 0x10); if (shape_angle.z > 0x3000) { shape_angle.z = 0x3000; @@ -1031,7 +1040,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { if (field_0x6e3 == 1) { field_0x6e3 = 2; - if (field_0x6e7 == 1) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -1040,58 +1049,60 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) { if (field_0x6e6 == 1) { field_0x6e6 = 2; - if (mCurrentAction == 5) { - field_0x71c = l_HIO.mSplashGenTimeDuringDash; + if (mAction == ACTION_ATTACK_e) { + mWaterSplashTimer = l_HIO.mSplashGenTimeDuringDash; } else { - field_0x71c = l_HIO.mWaterSplashTime; + mWaterSplashTimer = l_HIO.mWaterSplashTime; } } } bool daKago_c::checkFlySceneChange() { - if ((mPathIdxOffset > 0 && mPathIdx >= mpPath1->m_num - 1 || - mPathIdxOffset < 0 && mPathIdx < 1) && - field_0x73c == 1 && fopOvlpM_IsPeek() == 0) + if (((mPathStep > 0 && mPathCurrentPointNo >= mpPath1->m_num - 1) || (mPathStep < 0 && mPathCurrentPointNo < 1)) + && mSceneType == SCENE_TYPE_RIVER + && !fopOvlpM_IsPeek()) { - setActionMode(0, 4); + setActionMode(ACTION_FLY_e, 4); field_0x728 = 300; - if (checkBck(9) == 0) { - setBck(9, 2, 10.0f, 1.0f); + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f); } - if (mPathIdxOffset > 0) { + if (mPathStep > 0) { setSceneChange(1); } else { setSceneChange(2); } return true; - } else { - return false; } + + return false; } void daKago_c::setFlyAway() { current.angle.y = shape_angle.y; - setActionMode(0, 3); + setActionMode(ACTION_FLY_e, 3); field_0x728 = 90; - if (!checkBck(9)) { - setBck(9, 2, 10.0f, 1.0f); + + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f); } + dComIfGp_getVibration().StopQuake(0x1f); } void daKago_c::setFlyAnime() { if (cM_rnd() < 0.5) { - if (checkBck(15) == 0) { - setBck(15, 2, 10.0f, 1.0f); + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); } else { - setBck(13, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f); } } else { - if (!checkBck(13)) { - setBck(13, 2, 10.0f, 1.0f); + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f); } } @@ -1099,23 +1110,24 @@ void daKago_c::setFlyAnime() { } void daKago_c::executeFly() { - s16 unkInt1; - s16 unkInt2; - f32 unkFloat1; - cXyz unkXyz1; - cXyz unkXyz2; + s16 pntAngleY; + s16 pntAngleX; + f32 targetFlySpeed; + cXyz nextPntPos; + cXyz prevPntPos; cXyz unkXyz3; startBalloonScore(); - if (field_0x744 < 3) { + if (mMode < 3) { if (mDashCooldownTime == 0) { - dComIfGp_setDoStatusForce(0x4b, 0); + dComIfGp_setDoStatusForce(BUTTON_STATUS_UNK_75, 0); } - if (field_0x6e7 == 1) { - dComIfGp_setAStatusForce(0x2a, 0); + + if (mType == TYPE_NORMAL) { + dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0); } else { - dComIfGp_setAStatusForce(0x27, 0); + dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0); } } @@ -1126,7 +1138,7 @@ void daKago_c::executeFly() { checkHeight(); mIsFlying = true; - switch (field_0x744) { + switch (mMode) { case 0: shape_angle.y = current.angle.y; mGroundHeight = checkGroundHeight(current.pos, NULL); @@ -1135,27 +1147,29 @@ void daKago_c::executeFly() { case 1: setFlyAnime(); field_0x710 = field_0x712 = 0; - field_0x744 = 2; + mMode = 2; break; case 2: - unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position; - unkInt1 = cLib_targetAngleY(&unkXyz2, &unkXyz1); - field_0x714 = unkInt1; - flySpeedCalc(unkInt1, 0); - if (checkBck(11)) { - if (mpMorf->isStop()) { + nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position; + pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos); + field_0x714 = pntAngleY; + + flySpeedCalc(pntAngleY, 0); + + if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e)) { + if (mAnm_p->isStop()) { setFlyAnime(); } } else { if (field_0x710 < 0) { - if (!checkBck(15)) { - setBck(15, 2, 10.0f, 1.0f); + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); } field_0x728 = 10; } else if (field_0x710 > 0) { - if (!checkBck(13)) { - setBck(13, 2, 10.0f, 1.0f); + if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) { + setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f); } field_0x728 = 90; } else { @@ -1164,22 +1178,26 @@ void daKago_c::executeFly() { } } } + if (cM_ssin(current.angle.x) > 0.0f) { - unkFloat1 = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x); + targetFlySpeed = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x); } else { - unkFloat1 = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x); + targetFlySpeed = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x); } - if (std::abs(field_0x6f8 - unkFloat1) > 10.0f) { - cLib_chaseF(&field_0x6f8, unkFloat1, 2.0f); + + if (std::abs(mFlySpeed - targetFlySpeed) > 10.0f) { + cLib_chaseF(&mFlySpeed, targetFlySpeed, 2.0f); } else { - cLib_chaseF(&field_0x6f8, unkFloat1, 1.0f); + cLib_chaseF(&mFlySpeed, targetFlySpeed, 1.0f); } - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - unkXyz3.z = checkNextPath(unkXyz1); + + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + + unkXyz3.z = checkNextPath(nextPntPos); if (unkXyz3.z < 0.0f) { - if (abs((s16)(unkInt1 - cLib_targetAngleY(&unkXyz2, ¤t.pos))) < 0x4000) { - mPathIdx += mPathIdxOffset; + if (abs((s16)(pntAngleY - cLib_targetAngleY(&prevPntPos, ¤t.pos))) < 0x4000) { + mPathCurrentPointNo += mPathStep; if (checkFlySceneChange()) { return; } @@ -1188,35 +1206,40 @@ void daKago_c::executeFly() { break; case 3: case 4: - if (mPathIdx >= mpPath1->m_num) { - unkInt1 = current.angle.y; - unkInt2 = 0; + if (mPathCurrentPointNo >= mpPath1->m_num) { + pntAngleY = current.angle.y; + pntAngleX = 0; } else { - unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position; - unkInt1 = cLib_targetAngleY(&unkXyz2, &unkXyz1); - unkInt2 = -cLib_targetAngleX(&unkXyz2, &unkXyz1); + nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position; + pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos); + pntAngleX = -cLib_targetAngleX(&prevPntPos, &nextPntPos); } - if (field_0x744 == 3) { + + if (mMode == 3) { cLib_chaseUC(&field_0x6de, 0, 4); - cLib_addCalcAngleS(¤t.angle.x, -8192, 8, 0x100, 0x10); + cLib_addCalcAngleS(¤t.angle.x, -0x2000, 8, 0x100, 0x10); } else { - cLib_addCalcAngleS(¤t.angle.x, unkInt2, 8, 0x100, 0x10); + cLib_addCalcAngleS(¤t.angle.x, pntAngleX, 8, 0x100, 0x10); } + shape_angle.x = current.angle.x; - cLib_addCalcAngleS(¤t.angle.y, unkInt1, 8, 0x400, 0x10); + cLib_addCalcAngleS(¤t.angle.y, pntAngleY, 8, 0x400, 0x10); shape_angle.y = current.angle.y; cLib_addCalcAngleS(&shape_angle.z, 0, 8, 0x400, 0x10); - unkFloat1 = l_HIO.mFlightSpeed + 20.0f; - if (std::abs(field_0x6f8 - unkFloat1) > 10.0f) { - cLib_chaseF(&field_0x6f8, unkFloat1, 2.0f); + targetFlySpeed = l_HIO.mFlightSpeed + 20.0f; + + if (std::abs(mFlySpeed - targetFlySpeed) > 10.0f) { + cLib_chaseF(&mFlySpeed, targetFlySpeed, 2.0f); } else { - cLib_chaseF(&field_0x6f8, unkFloat1, 1.0f); + cLib_chaseF(&mFlySpeed, targetFlySpeed, 1.0f); } - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + if (field_0x728 == 0) { - setActionMode(4, 0); + setActionMode(ACTION_WAIT_e, 0); } return; } @@ -1229,31 +1252,31 @@ void daKago_c::executeFly() { void daKago_c::executeStagger() { dCamera_c* camera = dCam_getBody(); - cXyz cStack_94 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - cXyz cStack_a0 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position; + cXyz nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + cXyz prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position; - field_0x714 = cLib_targetAngleY(&cStack_a0, &cStack_94); + field_0x714 = cLib_targetAngleY(&prevPntPos, &nextPntPos); - if (field_0x6e7 == 1) { - dComIfGp_setAStatusForce(0x2a, 0); + if (mType == TYPE_NORMAL) { + dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0); } else { - dComIfGp_setAStatusForce(0x27, 0); + dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0); } checkHeight(); mIsFlying = true; - switch (field_0x744) { + switch (mMode) { case 0: mSph.OffAtSetBit(); - daPy_getPlayerActorClass()->setPlayerDamage(0, 1); + daPy_getPlayerActorClass()->setPlayerDamage(0, TRUE); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(6)); + mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_HEAD_e)); mDoMtx_stack_c::multVecZero(&field_0x674); - if (field_0x6e7 == 0) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1); mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1); } else { @@ -1261,12 +1284,12 @@ void daKago_c::executeStagger() { mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1); } - setBck(7, 0, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_CRASH_e, 0, 10.0f, 1.0f); field_0x728 = 60; speedF = 30.0f; - if (current.pos.y < cStack_94.y) { + if (current.pos.y < nextPntPos.y) { speed.y = 30.0f; } else { speed.y = -30.0f; @@ -1274,22 +1297,21 @@ void daKago_c::executeStagger() { current.angle.y = field_0x6da - (s16)(current.angle.y - field_0x6da) + 0x8000; - field_0x744 = 4; - + mMode = 4; break; case 1: case 2: mSph.OffAtSetBit(); - daPy_getPlayerActorClass()->setPlayerDamage(0, 1); + daPy_getPlayerActorClass()->setPlayerDamage(0, TRUE); - setBck(15, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); field_0x728 = 10; - field_0x720 = (int)l_HIO.mWallHitInvulnTime; + mWallHitInvulnTimer = (int)l_HIO.mWallHitInvulnTime; speedF = 40.0f; - if (field_0x744 == 1) { + if (mMode == 1) { shape_angle.z = 0x3000; ANGLE_ADD(current.angle.y, -0x2000); if (abs((s16)(current.angle.y - field_0x714)) > 0x2000) { @@ -1306,18 +1328,17 @@ void daKago_c::executeStagger() { mSound.startCreatureSound(Z2SE_EN_YC_HIT_SIDE, 0, -1); dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - field_0x744 = 5; - + mMode = 5; break; case 3: - daPy_getPlayerActorClass()->setPlayerDamage(2, 1); + daPy_getPlayerActorClass()->setPlayerDamage(2, TRUE); mSph.OffAtSetBit(); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(6)); + mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_HEAD_e)); mDoMtx_stack_c::multVecZero(&field_0x674); - if (field_0x6e7 == 0) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1); mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1); } else { @@ -1325,14 +1346,13 @@ void daKago_c::executeStagger() { mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1); } - setBck(7, 0, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_CRASH_e, 0, 10.0f, 1.0f); - field_0x728 = 0x3c; + field_0x728 = 60; speedF = 30.0f; speed.y = -50.0f; - field_0x744 = 6; - + mMode = 6; break; case 5: cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 8, 0x400, 0x40); @@ -1351,28 +1371,27 @@ void daKago_c::executeStagger() { } shape_angle.y = current.angle.y; - field_0x6f8 = 40.0f; + mFlySpeed = 40.0f; - setActionMode(0, 1); + setActionMode(ACTION_FLY_e, 1); dComIfGp_getVibration().StopQuake(0x1f); - break; case 4: case 6: - if (checkBck(7)) { - cXyz cStack_ac; + if (checkBck(dRes_ID_E_YC_BCK_YC_CRASH_e)) { + cXyz line_end; mDoMtx_stack_c::copy(mLegR3Mtx); - mDoMtx_stack_c::multVecZero(&cStack_ac); - cStack_ac.y -= 20.0f; + mDoMtx_stack_c::multVecZero(&line_end); + line_end.y -= 20.0f; - cXyz cStack_b8 = current.pos; - cStack_b8.y += 50.0f; + cXyz line_start = current.pos; + line_start.y += 50.0f; - dBgS_LinChk dStack_88; - dStack_88.Set(&cStack_b8, &cStack_ac, NULL); + dBgS_LinChk linechk; + linechk.Set(&line_start, &line_end, NULL); - if (dComIfG_Bgsp().LineCross(&dStack_88)) { + if (dComIfG_Bgsp().LineCross(&linechk)) { current.pos.y += 5.0f; } @@ -1380,13 +1399,13 @@ void daKago_c::executeStagger() { field_0x728 = 60; - if (mpMorf->checkFrame(22.0f)) { + if (mAnm_p->checkFrame(22.0f)) { setRideOff(); - setBck(8, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_CRASH2_e, 2, 10.0f, 1.0f); } } - if (field_0x744 == 4) { + if (mMode == 4) { cLib_addCalcAngleS(&shape_angle.y, current.angle.y + 0x8000, 8, 0x100, 0x10); } else { cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 8, 0x100, 0x10); @@ -1401,40 +1420,38 @@ void daKago_c::executeStagger() { if (field_0x728 == 0) { setFlyAway(); - field_0x6f8 = -10.0f; + mFlySpeed = -10.0f; } - break; } } void daKago_c::executeWait() { - daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass()->getMidnaActor(); + daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor(); if (field_0x728 == 0) { cLib_chaseUC(&field_0x6de, 0, 4); } if (field_0x6df == 0) { - if (player->checkWolfCargoCarrySceneChange()) { - if (field_0x73c == 1) { + if (daPy_py_c::checkWolfCargoCarrySceneChange()) { + if (mSceneType == SCENE_TYPE_RIVER) { createBalloonScore(); if (dComIfGp_getStartStagePoint() == 0) { - mPathIdxOffset = 1; - mPathIdx = 0; + mPathStep = 1; + mPathCurrentPointNo = 0; mPathDir = 1; } else { - mPathIdxOffset = -1; - mPathIdx = mpPath1->m_num + -1; + mPathStep = -1; + mPathCurrentPointNo = mpPath1->m_num + -1; mPathDir = -1; } - old.pos = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - current.pos = old.pos; - mPathIdx += mPathIdxOffset; - field_0x6a4 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; + current.pos = old.pos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + mPathCurrentPointNo += mPathStep; + field_0x6a4 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; - current.angle.y = shape_angle.y = cLib_targetAngleY((Vec*)¤t, &field_0x6a4); - if (player != NULL) { + current.angle.y = shape_angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); + if (midna != NULL) { setMidnaRideOn(); setPlayerRideOn(); @@ -1442,16 +1459,16 @@ void daKago_c::executeWait() { field_0x6de = 0xff; field_0x6df = 1; - if (mPathDir == 1 && field_0x6e7 == 0 && dComIfGs_isSaveSwitch(9) == 0) { - setActionMode(9, 0); + if (mPathDir == 1 && mType == TYPE_TWILIGHT && !dComIfGs_isSaveSwitch(9)) { + setActionMode(ACTION_DEMO_FLY_e, 0); } else { - setActionMode(10, 0); + setActionMode(ACTION_DEMO_FLY2_e, 0); } setFlyAnime(); moveDemoFly(); } - } else if (field_0x73c == 0 || field_0x73c == 2) { + } else if (mSceneType == SCENE_TYPE_LAKE_HYLIA || mSceneType == SCENE_TYPE_BOARD_HOUSE) { setMidnaRideOn(); setPlayerRideOn(); @@ -1459,30 +1476,29 @@ void daKago_c::executeWait() { field_0x6de = 0xff; field_0x6df = 1; - setActionMode(8, 0); + setActionMode(ACTION_LANDING_e, 0); executeLanding(); } - } - return; } #if DEBUG mPathDir = 1; - if (mDoCPd_c::getHoldL(0) && mDoCPd_c::getHoldR(0) && - mDoCPd_c::getTrigB(0)) + if (mDoCPd_c::getHoldL(PAD_1) && mDoCPd_c::getHoldR(PAD_1) && + mDoCPd_c::getTrigB(PAD_1)) { - setActionMode(2, 0); + setActionMode(ACTION_EVENT_e, 0); - if (field_0x73c == 2) { + if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { setKagoPath(1); } else { setKagoPath(5); - if (field_0x73c == 1) { + if (mSceneType == SCENE_TYPE_RIVER) { createBalloonScore(); + return; } } } @@ -1490,48 +1506,49 @@ void daKago_c::executeWait() { } bool daKago_c::calcAttackMove(int param_0) { - cXyz acStack_20; - cXyz cStack_2c; + cXyz nextPntPos; + cXyz prevPntPos; cXyz cStack_38; - acStack_20 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - cStack_2c = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position; + nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position; - s16 targetAngleY = cLib_targetAngleY(&cStack_2c, &acStack_20); - field_0x714 = targetAngleY; + s16 pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos); + field_0x714 = pntAngleY; if (mpLockActor != NULL) { flySpeedCalcLockOn(); } else { if (param_0 == 0) { - flySpeedCalc(targetAngleY, 1); + flySpeedCalc(pntAngleY, 1); } else { - flySpeedCalc(targetAngleY, 2); + flySpeedCalc(pntAngleY, 2); } } - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); - cStack_38.z = checkNextPath(acStack_20); + cStack_38.z = checkNextPath(nextPntPos); if (cStack_38.z < 0.0f) { - if (abs((s16)(targetAngleY - cLib_targetAngleY(&cStack_2c, ¤t.pos))) < 0x4000) { - mPathIdx += mPathIdxOffset; + if (abs((s16)(pntAngleY - cLib_targetAngleY(&prevPntPos, ¤t.pos))) < 0x4000) { + mPathCurrentPointNo += mPathStep; if (checkFlySceneChange()) { return true; } } } + return false; } void daKago_c::executeAttack() { - field_0x6dd = 1; + mIsAttack = TRUE; - if (field_0x6e7 == 1) { - dComIfGp_setAStatusForce(0x2a, 0); + if (mType == TYPE_NORMAL) { + dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0); } else { - dComIfGp_setAStatusForce(0x27, 0); + dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0); } checkHeight(); @@ -1543,15 +1560,15 @@ void daKago_c::executeAttack() { setDashSibukiEffect(); } - switch (field_0x744) { + switch (mMode) { case 0: mDashCooldownTime = l_HIO.mDashCooldownTime; mDashTime = l_HIO.mDashTime; - field_0x744 = 1; + mMode = 1; setDashBlurEffect(0); - setBck(11, 0, 5.0f, l_HIO.mDashTimeMultiplier); + setBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e, 0, 5.0f, l_HIO.mDashTimeMultiplier); dComIfGp_getVibration().StartShock(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); @@ -1568,18 +1585,20 @@ void daKago_c::executeAttack() { break; case 1: setDashEffect(); + if (calcAttackMove(0) == 0) { - cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f); - if (mpMorf->checkFrame(9.0f)) { - if (field_0x6e7 == 0) { + cLib_chaseF(&mFlySpeed, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f); + if (mAnm_p->checkFrame(9.0f)) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1); } else { mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1); } } - if (mpMorf->checkFrame(12.0f)) { - field_0x744 = 2; - field_0x728 = 0x14; + + if (mAnm_p->checkFrame(12.0f)) { + mMode = 2; + field_0x728 = 20; dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); @@ -1593,15 +1612,15 @@ void daKago_c::executeAttack() { case 2: setDashEffect(); - if (mpMorf->checkFrame(23.0f)) { + if (mAnm_p->checkFrame(23.0f)) { mSph.OnAtSetBit(); } if (calcAttackMove(1) == 0) { - cLib_chaseF(&field_0x6f8, 100.0f, 5.0f); + cLib_chaseF(&mFlySpeed, 100.0f, 5.0f); if (field_0x728 == 0) { - field_0x744 = 3; + mMode = 3; } if (field_0x728 < 10 && checkWallHitFall(0)) { @@ -1617,8 +1636,9 @@ void daKago_c::executeAttack() { break; case 3: setDashEffect(); + if (calcAttackMove(1) == 0) { - cLib_chaseF(&field_0x6f8, 100.0f, 3.0f); + cLib_chaseF(&mFlySpeed, 100.0f, 3.0f); if (checkWallHitFall(0)) { dComIfGp_getVibration().StopQuake(0x1f); @@ -1626,8 +1646,7 @@ void daKago_c::executeAttack() { } else { mDashTime--; if (mDashTime == 0) { - field_0x744 = 4; - + mMode = 4; dComIfGp_getVibration().StopQuake(0x1f); } } @@ -1637,13 +1656,13 @@ void daKago_c::executeAttack() { setDashEffect(); case 5: if (calcAttackMove(0) == 0) { - cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 5.0f); - if (field_0x6f8 <= l_HIO.mFlightSpeed) { + cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 5.0f); + if (mFlySpeed <= l_HIO.mFlightSpeed) { mpLockActor = NULL; mSph.OffAtSetBit(); - setActionMode(0, 2); + setActionMode(ACTION_FLY_e, 2); field_0x6c8 = 0; field_0x6c4 = 8000.0f; @@ -1655,56 +1674,57 @@ void daKago_c::executeAttack() { } void daKago_c::calcCircleCamera(int param_0) { - cXyz cStack_20; + cXyz targetPos; mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::XrotM(shape_angle.x); mDoMtx_stack_c::transM(0.0f, 0.0f, 1500.0f); - mDoMtx_stack_c::multVecZero(&cStack_20); + mDoMtx_stack_c::multVecZero(&targetPos); if (param_0 == 0) { - field_0x68c = cStack_20; + mDemoCamCenter = targetPos; } else if (param_0 == 1) { - cLib_addCalcPos(&field_0x68c, cStack_20, 0.1f, field_0x6f8 + 100.0f, + cLib_addCalcPos(&mDemoCamCenter, targetPos, 0.1f, mFlySpeed + 100.0f, 10.0f); } else { - cLib_addCalcPos(&field_0x68c, cStack_20, 0.5f, field_0x6f8 + 30.0f, + cLib_addCalcPos(&mDemoCamCenter, targetPos, 0.5f, mFlySpeed + 30.0f, 10.0f); } + mDoMtx_stack_c::transM(0.0f, 0.0f, -1000.0f); - mDoMtx_stack_c::multVecZero(&cStack_20); + mDoMtx_stack_c::multVecZero(&targetPos); if (param_0 == 0) { - field_0x698 = cStack_20; + mDemoCamEye = targetPos; } else if (param_0 == 1) { - cLib_addCalcPos(&field_0x698, cStack_20, 0.1f, field_0x6f8 + 100.0f, + cLib_addCalcPos(&mDemoCamEye, targetPos, 0.1f, mFlySpeed + 100.0f, 10.0f); } else { - cLib_addCalcPos(&field_0x698, cStack_20, 0.5f, field_0x6f8 + 30.0f, 10.0f); + cLib_addCalcPos(&mDemoCamEye, targetPos, 0.5f, mFlySpeed + 30.0f, 10.0f); } - field_0x6d4 = 60.0f; - dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0); + mDemoCamFovy = 60.0f; + dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); } void daKago_c::executeEvent() { dCamera_c* camera = dCam_getBody(); - daPy_py_c* unusedPlayer = daPy_getPlayerActorClass(); + daPy_py_c* player = daPy_getPlayerActorClass(); - if ((field_0x73c == 0) && dComIfG_play_c::getLayerNo(0) == 13 && dComIfGs_isSaveSwitch(0x10)) { - dComIfGs_onSaveSwitch(0x1a); - setActionMode(4, 0); + if (mSceneType == SCENE_TYPE_LAKE_HYLIA && dComIfG_play_c::getLayerNo(0) == 13 && dComIfGs_isSaveSwitch(16)) { + dComIfGs_onSaveSwitch(26); + setActionMode(ACTION_WAIT_e, 0); } else { if (!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(this, 2, 0xffff, 3); - eventInfo.onCondition(2); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); } else { camera->Stop(); camera->SetTrimSize(3); - field_0x748 = 0; + mDemoMode = 0; field_0x74c = 0; - setActionMode(3, 0); + setActionMode(ACTION_PERCH_e, 0); field_0x6dc = 1; field_0x6de = 0xff; dComIfGs_onSaveSwitch(8); @@ -1718,13 +1738,13 @@ void daKago_c::initPerchDemo() { cXyz midnaPos; fopAc_ac_c* midna = daPy_getPlayerActorClass()->getMidnaActor(); - if (midna != 0) { + if (midna != NULL) { midnaPos = midna->current.pos; } - switch (field_0x748) { + switch (mDemoMode) { case 0: { - Z2GetAudioMgr()->setDemoName(field_0x760); + Z2GetAudioMgr()->setDemoName(mDemoName); field_0x771 = 0; current.pos = dPath_GetPnt(mpPath2, field_0x771)->m_position; @@ -1753,46 +1773,44 @@ void daKago_c::initPerchDemo() { speed.y = 0.0f; speedF = 20.0f; - field_0x72c = 0xb4; + field_0x72c = 180; field_0x728 = field_0x72c + 90; field_0x6e8 = 0; - if ((field_0x73c == 0) && dComIfG_play_c::getLayerNo(0) == 13 && (playerPos.x > -90000.0f)) - { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA && dComIfG_play_c::getLayerNo(0) == 13 && playerPos.x > -90000.0f) { field_0x6e8 = 1; } calcCircleCamera(0); field_0x6e4 = 0; - break; } case 1: { field_0x728 = 90; - field_0x6f8 = 20.0f; + mFlySpeed = 20.0f; break; } case 2: { - if (field_0x73c != 0) { - mPathIdx = searchNearPassPoint(); + if (mSceneType != SCENE_TYPE_LAKE_HYLIA) { + mPathCurrentPointNo = searchNearPassPoint(); } field_0x758 = 1; - if (mPathIdxOffset < 0) { + if (mPathStep < 0) { angleY = angleY + 0x8000; daPy_getPlayerActorClass()->setPlayerPosAndAngle(&playerPos, angleY, 0); - field_0x758 = 0xffffffff; + field_0x758 = -1; } mDoMtx_stack_c::transS(midnaPos); mDoMtx_stack_c::YrotM(angleY); mDoMtx_stack_c::transM(0.0f, 1000.0f, -1000.0f); - mDoMtx_stack_c::multVecZero((Vec*)¤t); + mDoMtx_stack_c::multVecZero(¤t.pos); - setBck(0xc, 2, 0.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e, 2, 0.0f, 1.0f); mDoMtx_stack_c::transS(midnaPos); mDoMtx_stack_c::YrotM(angleY); @@ -1801,10 +1819,10 @@ void daKago_c::initPerchDemo() { current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); current.angle.x = -cLib_targetAngleX(¤t.pos, &field_0x6a4); - field_0x6f8 = 20.0f; + mFlySpeed = 20.0f; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); shape_angle.x = current.angle.x; shape_angle.y = current.angle.y; @@ -1813,37 +1831,35 @@ void daKago_c::initPerchDemo() { mDoMtx_stack_c::transS(playerPos); mDoMtx_stack_c::YrotM(angleY); mDoMtx_stack_c::transM(-100.0f, 100.0f, -300.0f); - mDoMtx_stack_c::multVecZero(&field_0x68c); + mDoMtx_stack_c::multVecZero(&mDemoCamCenter); mDoMtx_stack_c::transM(100.0f, -100.0f, 300.0f); mDoMtx_stack_c::transM(100.0f, 30.0f, 300.0f); - mDoMtx_stack_c::multVecZero(&field_0x698); + mDoMtx_stack_c::multVecZero(&mDemoCamEye); - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0); + dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); field_0x728 = 10; - break; } case 3: { - setBck(9, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f); setMidnaTagPos(); speedF = speed.y = 0.0f; field_0x728 = 30; - break; } case 4: { - setBck(0xf, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); - if (field_0x73c == 0) { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA) { field_0x6a4.set(-90000.0f, -16000.0f, 40000.0f); } else { - field_0x6a4 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; + field_0x6a4 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; } setMidnaRideOn(); @@ -1851,15 +1867,14 @@ void daKago_c::initPerchDemo() { dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - field_0x744 = 1; + mMode = 1; field_0x728 = 30; - break; } } field_0x74c = 1; - field_0x744 = 0; + mMode = 0; } bool daKago_c::executePerchDemo() { @@ -1870,17 +1885,17 @@ bool daKago_c::executePerchDemo() { daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor(); s16 midnaYaw; - if (midna != 0) { + if (midna != NULL) { midnaPos = midna->current.pos; midnaYaw = midna->shape_angle.y; } field_0x750++; - switch (field_0x748) { + switch (mDemoMode) { case 0: { calcCircleCamera(1); - if ((field_0x750 & 0x20) != 0) { + if (field_0x750 & 0x20) { cLib_chaseF(&field_0x6fc, 3.0f, 0.3f); } else { cLib_chaseF(&field_0x6fc, -3.0f, 0.3f); @@ -1900,7 +1915,7 @@ bool daKago_c::executePerchDemo() { cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 0x20, 0x100, 0x40); } else { if (field_0x754 == 0) { - if (field_0x6e7 == 1) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -1914,57 +1929,55 @@ bool daKago_c::executePerchDemo() { } if (field_0x728 == 0) { - field_0x748 = 1; + mDemoMode = 1; return true; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 0); - break; } case 1: { calcCircleCamera(2); cLib_addCalcAngleS(&shape_angle.x, -cLib_targetAngleX(¤t.pos, &playerPos), 4, 0x400, 0x40); - cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY((Vec*)¤t, &playerPos), 4, 0x200, 0x40); + cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY(¤t.pos, &playerPos), 4, 0x200, 0x40); current.angle.y = shape_angle.y; current.angle.x = shape_angle.x; - cLib_chaseF(&field_0x6f8, 60.0f, 1.0f); + cLib_chaseF(&mFlySpeed, 60.0f, 1.0f); - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (current.pos.abs(playerPos) < 2000.0f) { - field_0x748 = 2; + mDemoMode = 2; return true; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 0); - break; } case 2: { if (field_0x6e4 == 0) { - if (field_0x73c == 0) { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4); - } else if (field_0x73c == 2) { + } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 5); } } - if (field_0x744 == 0) { + if (mMode == 0) { current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); current.angle.x = -cLib_targetAngleX(¤t.pos, &field_0x6a4); - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 != 0) { shape_angle.x = current.angle.x; if (field_0x728 == 1) { - if (field_0x6e7 == 1) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -1976,9 +1989,9 @@ bool daKago_c::executePerchDemo() { shape_angle.y = current.angle.y; if (field_0x6a4.abs(current.pos) < 300.0f) { - field_0x744 = 1; + mMode = 1; - setBck(0x15, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_HOVERING_e, 2, 10.0f, 1.0f); field_0x728 = 60; @@ -1988,16 +2001,16 @@ bool daKago_c::executePerchDemo() { mDoMtx_stack_c::multVecZero(&field_0x6a4); } } else { - cLib_chaseF(&field_0x6f8, 0.0f, 1.0f); + cLib_chaseF(&mFlySpeed, 0.0f, 1.0f); cLib_addCalcAngleS(¤t.angle.y, cLib_targetAngleY(¤t.pos, &field_0x6a4), 4, 0x400, 0x100); cLib_addCalcAngleS(¤t.angle.x, 0, 4, 0x100, 0x80); cLib_addCalcAngleS(&shape_angle.x, 0, 4, 0x100, 0x80); shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - if (!field_0x6f8 && field_0x728 == 0) { - field_0x748 = 3; + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + if (!mFlySpeed && field_0x728 == 0) { + mDemoMode = 3; return true; } } @@ -2006,23 +2019,22 @@ bool daKago_c::executePerchDemo() { mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(0.0f, 400.0f, -300.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 5.0f, 5.0f); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 5.0f, 5.0f); mDoMtx_stack_c::transS(playerPos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(100.0f, 30.0f, 300.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f); - - dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f); + dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); break; } case 3: { if (field_0x6e4 == 0) { - if (field_0x73c == 0) { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4); - } else if (field_0x73c == 2) { + } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 5); } } @@ -2031,34 +2043,33 @@ bool daKago_c::executePerchDemo() { mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 20.0f, 10.0f); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 20.0f, 10.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(300.0f, 50.0f, 500.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f); - cLib_chaseF(&field_0x6d4, 70.0f, 1.0f); + cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f); - dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0); + dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); cLib_addCalcAngleS(¤t.angle.x, 0, 4, 0x400, 0x100); shape_angle.x = current.angle.x; if (field_0x728 == 0) { - field_0x748 = 4; + mDemoMode = 4; return true; } - break; } case 4: { if (field_0x6e4 == 0) { - if (field_0x73c == 0) { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4); - } else if (field_0x73c == 2) { + } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 6); } } @@ -2066,22 +2077,20 @@ bool daKago_c::executePerchDemo() { if (PerchDemoAwayForward()) { return true; } - break; } case 5: { f32 maxStep = field_0x6cc * 50.0f; f32 minStep = field_0x6cc * 10.0f; cLib_chaseF(&field_0x6cc, 0.0f, 0.05f); - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, maxStep, minStep); + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, maxStep, minStep); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, maxStep, minStep); - cLib_chaseF(&field_0x6d4, 70.0f, 1.0f); - dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0); - + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, maxStep, minStep); + cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f); + dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); break; } case 6: @@ -2092,7 +2101,6 @@ bool daKago_c::executePerchDemo() { } bool daKago_c::PerchDemoAwayForward() { - cXyz playerPos = daPy_getPlayerActorClass()->current.pos; s16 playerYaw = daPy_getPlayerActorClass()->shape_angle.y; @@ -2108,58 +2116,58 @@ bool daKago_c::PerchDemoAwayForward() { midnaYaw = midna->shape_angle.y; } - switch (field_0x744) { + switch (mMode) { case 0: case 1: { f32 unusedFloat1 = 20.0f; f32 unusedFloat2 = 10.0f; - field_0x68c += speed; - field_0x698 += speed; + mDemoCamCenter += speed; + mDemoCamEye += speed; mDoMtx_stack_c::transS(midnaPos); mDoMtx_stack_c::YrotM(playerYaw); - if (field_0x744 == 0) { + if (mMode == 0) { mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f); } else { mDoMtx_stack_c::transM(0.0f, -200.0f, 0.0f); } mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 5.0f); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 5.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); - if (field_0x744 == 0) { + if (mMode == 0) { mDoMtx_stack_c::transM(300.0f, 50.0f, 500.0f); } else { mDoMtx_stack_c::transM(500.0f, 50.0f, 0.0f); } mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 5.0f); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 5.0f); - cLib_chaseF(&field_0x6d4, 70.0f, 1.0f); + cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f); - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); mGroundHeight = checkGroundHeight(current.pos, NULL); mRoofHeight = checkRoofHeight(current.pos); - cLib_chaseF(&field_0x6f8, 30.0f, 1.0f); + cLib_chaseF(&mFlySpeed, 30.0f, 1.0f); cLib_addCalcAngleS(¤t.angle.x, 0, 8, 0x200, 0x80); shape_angle.x = current.angle.x; shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - if (field_0x744 == 0) { + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + if (mMode == 0) { cLib_addCalcAngleS(&shape_angle.x, 0x2000, 8, 0x200, 0x40); } else { cLib_addCalcAngleS(&shape_angle.x, 0, 8, 0x200, 0x40); } - if (field_0x728 == 0x14 && field_0x744 == 0) { - if (field_0x6e7 == 1) { + if (field_0x728 == 20 && mMode == 0) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -2167,90 +2175,89 @@ bool daKago_c::PerchDemoAwayForward() { } if (field_0x728 == 0) { - if (field_0x744 == 0) { - field_0x744 = 1; - field_0x728 = 0x1e; + if (mMode == 0) { + mMode = 1; + field_0x728 = 30; setPlayerRideOn(); dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - } else if (field_0x73c != 0) { + } else if (mSceneType != SCENE_TYPE_LAKE_HYLIA) { field_0x728 = 60; - field_0x744 = 2; + mMode = 2; } else { field_0x728 = 90; - field_0x744 = 3; + mMode = 3; field_0x6cc = 1.0f; } } - break; } case 2: { if (field_0x728 > 10) { - field_0x68c += speed; - field_0x698 += speed; + mDemoCamCenter += speed; + mDemoCamEye += speed; - s16 targetYaw = cLib_targetAngleY(&field_0x698, &field_0x68c); + s16 targetYaw = cLib_targetAngleY(&mDemoCamEye, &mDemoCamCenter); if (abs((s16)(midnaYaw - targetYaw)) < 0x2000) { - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 5.0f, 10.0f); + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 5.0f, 10.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f); } else { - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 5.0f, 10.0f); + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 5.0f, 10.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(300.0f, 50.0f, -500.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f); } } else { - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 50.0f, 10.0f); + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 50.0f, 10.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(playerYaw); mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f); mDoMtx_stack_c::multVecZero(&unkXyz1); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 50.0f, 10.0f); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 50.0f, 10.0f); } - cLib_chaseF(&field_0x6d4, 70.0f, 1.0f); - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); mGroundHeight = checkGroundHeight(current.pos, NULL); mRoofHeight = checkRoofHeight(current.pos); - cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 2.0f); + cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 2.0f); if (field_0x728 < 30) { cLib_addCalcAngleS(¤t.angle.x, 0, 8, 0x100, 0x40); } else { - cLib_addCalcAngleS(¤t.angle.x, -8192, 8, 0x100, 0x40); + cLib_addCalcAngleS(¤t.angle.x, -0x2000, 8, 0x100, 0x40); } shape_angle.x = current.angle.x; shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 == 0) { - if (field_0x73c == 2) { + if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { if (setSceneChange(3)) { - field_0x748 = 5; + mDemoMode = 5; field_0x6cc = 1.0f; } } else { field_0x6dc = 0; - setActionMode(0, 0); + setActionMode(ACTION_FLY_e, 0); - camera->Reset(field_0x68c, field_0x698); + camera->Reset(mDemoCamCenter, mDemoCamEye); camera->Start(); camera->SetTrimSize(0); @@ -2259,37 +2266,35 @@ bool daKago_c::PerchDemoAwayForward() { Z2GetAudioMgr()->setDemoName(NULL); } } - break; } case 3: { cLib_chaseF(&field_0x6cc, 0.0f, 0.1f); - field_0x68c += speed; - field_0x698 += speed * field_0x6cc; + mDemoCamCenter += speed; + mDemoCamEye += speed * field_0x6cc; unkXyz1.set(playerPos.x, playerPos.y + 100.0f, playerPos.z); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f); - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); - cLib_chaseF(&field_0x6f8, 30.0f, 1.0f); + cLib_chaseF(&mFlySpeed, 30.0f, 1.0f); - cLib_addCalcAngleS(¤t.angle.x, -8192, 8, 0x100, 0x40); + cLib_addCalcAngleS(¤t.angle.x, -0x2000, 8, 0x100, 0x40); shape_angle.x = current.angle.x; shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 == 0) { - setActionMode(7, 0); - field_0x748 = 8; + setActionMode(ACTION_PERCH2_e, 0); + mDemoMode = 8; return true; } - break; } } @@ -2310,14 +2315,14 @@ void daKago_c::executePerch() { void daKago_c::executeEvent2() { dCamera_c* camera = dCam_getBody(); if (!eventInfo.checkCommandDemoAccrpt()) { - fopAcM_orderPotentialEvent(this,2,0xffff,3); + fopAcM_orderPotentialEvent(this, 2, 0xffff, 3); eventInfo.onCondition(2); } else { camera->Stop(); camera->SetTrimSize(3); - field_0x748 = 0; + mDemoMode = 0; field_0x74c = 0; - setActionMode(7,0); + setActionMode(ACTION_PERCH2_e, 0); field_0x6dc = 1; field_0x6de = 0xff; } @@ -2327,47 +2332,51 @@ void daKago_c::initFirstDemo() { dCamera_c* camera = dCam_getBody(); cXyz acStack_28; cXyz cStack_34; + daPy_py_c* player = daPy_getPlayerActorClass(); s16 playerYaw = player->shape_angle.y; cXyz playerPos = player->current.pos; + daMidna_c* midna = daPy_py_c::getMidnaActor(); cXyz midnaPos; - if (midna != 0) { + if (midna != NULL) { midnaPos = midna->current.pos; } s16 targetYaw; - switch (field_0x748) { + switch (mDemoMode) { case 0: { - Z2GetAudioMgr()->setDemoName(field_0x760); - field_0x718 = -0x800; + Z2GetAudioMgr()->setDemoName(mDemoName); + mHeadRotZ = -0x800; player->changeOriginalDemo(); - player->changeDemoMode(0x17, 0, 0, 0); + player->changeDemoMode(daPy_demo_c::DEMO_UNK_23_e, 0, 0, 0); + playerPos.set(-103292.0f, -23437.0f, 39925.0f); field_0x6a4.set(-60000.0f, -11000.0f, 28000.0f); shape_angle.y = current.angle.y = cLib_targetAngleY(&playerPos, &field_0x6a4); cStack_34.set(-300.0f, 400.0f, -1000.0f); cLib_offsetPos(¤t.pos, &playerPos, shape_angle.y, &cStack_34); targetYaw = cLib_targetAngleY(&playerPos, ¤t.pos); + player->setPlayerPosAndAngle(&playerPos, targetYaw, 0); if (midna != NULL) { midna->current.pos = playerPos; midnaPos = midna->current.pos; } + field_0x680.set(0.0f, 0.0f, 0.0f); - field_0x68c = current.pos; + mDemoCamCenter = current.pos; field_0x6bc = 0x3000; field_0x6cc = 500.0f; field_0x6d0 = 400.0f; cStack_34.set(0.0f, field_0x6d0, field_0x6cc); - cLib_offsetPos(&field_0x698, ¤t.pos, shape_angle.y + field_0x6bc, - &cStack_34); - field_0x6d4 = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); - field_0x728 = 0xa0; - setBck(15, 2, 10.0f, 1.0f); - field_0x6e4 = 0; + cLib_offsetPos(&mDemoCamEye, ¤t.pos, shape_angle.y + field_0x6bc, &cStack_34); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + field_0x728 = 160; + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); + field_0x6e4 = 0; break; } case 1: { @@ -2375,37 +2384,33 @@ void daKago_c::initFirstDemo() { midna->current.pos = playerPos; midnaPos = midna->current.pos; } - field_0x68c = current.pos; + + mDemoCamCenter = current.pos; field_0x6bc = 0x800; field_0x6cc = 700.0f; cStack_34.set(0.0f, 0.0f, field_0x6cc); - cLib_offsetPos(&field_0x698, ¤t.pos, shape_angle.y + field_0x6bc, - &cStack_34); - field_0x6d4 = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); - field_0x728 = 0x50; - + cLib_offsetPos(&mDemoCamEye, ¤t.pos, shape_angle.y + field_0x6bc, &cStack_34); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + field_0x728 = 80; break; } case 2: { field_0x728 = 60; mMsgFlow.init(this, 0x7d3, 0, NULL); - break; } case 3: { - field_0x718 = cLib_targetAngleX(¤t.pos, &playerPos) / 4; + mHeadRotZ = cLib_targetAngleX(¤t.pos, &playerPos) / 4; targetYaw = cLib_targetAngleY(¤t.pos, &playerPos) - shape_angle.y; - field_0x71a = targetYaw / 4; + mHeadRotY = targetYaw / 4; cStack_34.set(50.0f, 150.0f, -200.0f); - cLib_offsetPos(&field_0x698, &midnaPos, shape_angle.y, &cStack_34); + cLib_offsetPos(&mDemoCamEye, &midnaPos, shape_angle.y, &cStack_34); cStack_34.set(50.0f, 0.0f, 50.0f); - cLib_offsetPos(&field_0x68c, &midnaPos, shape_angle.y, &cStack_34); - field_0x6d4 = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); - targetYaw = cLib_targetAngleY(&playerPos, (Vec*)¤t); - player->setPlayerPosAndAngle(&playerPos, targetYaw, 0); - + cLib_offsetPos(&mDemoCamCenter, &midnaPos, shape_angle.y, &cStack_34); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + player->setPlayerPosAndAngle(&playerPos, cLib_targetAngleY(&playerPos, ¤t.pos), 0); break; } case 4: { @@ -2416,8 +2421,7 @@ void daKago_c::initFirstDemo() { mDoMtx_stack_c::YrotM(field_0x6bc); mDoMtx_stack_c::transM(0.0f, 300.0f, field_0x6cc); mDoMtx_stack_c::multVecZero(&field_0x6a4); - field_0x6f8 = 0.0f; - + mFlySpeed = 0.0f; break; } case 5: { @@ -2426,68 +2430,66 @@ void daKago_c::initFirstDemo() { mDoMtx_stack_c::YrotM(field_0x6bc); mDoMtx_stack_c::transM(0.0f, 300.0f, 200.0f); mDoMtx_stack_c::multVecZero(&field_0x6a4); - break; } case 6: { player->cancelOriginalDemo(); setPlayerRideOn(); dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); - field_0x728 = 0x96; + field_0x728 = 150; field_0x6cc = 1.0f; - break; } case 7: { field_0x6e8 = 0; } case 8: { - setBck(15, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); + if (field_0x6e8 != 0) { - mpMorf->setFrame(0.0f); + mAnm_p->setFrame(0.0f); field_0x6a4.set(-67000.0f, -13000.0f, 28000.0f); current.pos.set(-76600.0f, -15500.0f, 37340.0f); shape_angle.y = current.angle.y = -0x8000; shape_angle.x = current.angle.x = -0x1000; - field_0x6f8 = 50.0f; - field_0x698.set(-75232.0f, -14685.0f, 34417.0f); - field_0x68c.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); - field_0x6d4 = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + mFlySpeed = 50.0f; + mDemoCamEye.set(-75232.0f, -14685.0f, 34417.0f); + mDemoCamCenter.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); field_0x728 = 200; } else { field_0x6a4.set(-60000.0f, -11000.0f, 28000.0f); current.pos.set(-90000.0f, -16000.0f, 40000.0f); shape_angle.y = current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); shape_angle.x = current.angle.x = -0x2000; - field_0x6f8 = 50.0f; + mFlySpeed = 50.0f; cStack_34.set(-500.0f, 1000.0f, 5000.0f); - cLib_offsetPos(&field_0x698, ¤t.pos, shape_angle.y, &cStack_34); - field_0x68c.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); - field_0x6d4 = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + cLib_offsetPos(&mDemoCamEye, ¤t.pos, shape_angle.y, &cStack_34); + mDemoCamCenter.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); field_0x728 = 200; } - break; } } field_0x74c = 1; - field_0x744 = 0; + mMode = 0; } bool daKago_c::executeFirstDemo() { dCamera_c* camera = dCam_getBody(); cXyz unkXyz1; - cXyz unkXyz2; + cXyz offset; cXyz midnaPos; daPy_py_c* player = daPy_getPlayerActorClass(); daMidna_c* midna = daPy_py_c::getMidnaActor(); - if (midna != 0) { + if (midna != NULL) { midnaPos = midna->current.pos; } @@ -2495,8 +2497,8 @@ bool daKago_c::executeFirstDemo() { cXyz playerPos = player->current.pos; int unkFlag1; - int switchVal = field_0x748; - switch (switchVal) { + int mode = mDemoMode; // fakematch + switch (mode) { case 0: dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2); @@ -2504,21 +2506,21 @@ bool daKago_c::executeFirstDemo() { cLib_chaseF(&field_0x6cc, 1250.0f, 6.7f); cLib_chaseF(&field_0x6d0, -400.0f, 7.1f); - unkXyz2.set(0.0f, field_0x6d0, field_0x6cc); - cLib_offsetPos(&field_0x698, ¤t.pos, shape_angle.y + field_0x6bc, &unkXyz2); + offset.set(0.0f, field_0x6d0, field_0x6cc); + cLib_offsetPos(&mDemoCamEye, ¤t.pos, shape_angle.y + field_0x6bc, &offset); unkXyz1.set(0.0f, -200.0f, 400.0f); cLib_chasePos(&field_0x680, unkXyz1, 4.0f); - cLib_offsetPos(&field_0x68c, ¤t.pos, shape_angle.y, &field_0x680); + cLib_offsetPos(&mDemoCamCenter, ¤t.pos, shape_angle.y, &field_0x680); - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); if (field_0x728 < 10) { setMidnaTagPos(); if (field_0x728 == 0) { - field_0x748 = 1; + mDemoMode = 1; return 1; } } @@ -2529,35 +2531,35 @@ bool daKago_c::executeFirstDemo() { cLib_chaseAngleS(&field_0x6bc, 0x1000, 0x20); - unkXyz2.set(0.0f, 0.0f, field_0x6cc); - cLib_offsetPos(&field_0x698, ¤t.pos, shape_angle.y + field_0x6bc, &unkXyz2); + offset.set(0.0f, 0.0f, field_0x6cc); + cLib_offsetPos(&mDemoCamEye, ¤t.pos, shape_angle.y + field_0x6bc, &offset); - if (field_0x728 < 0x46) { - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 10.0f, 10.0f); + if (field_0x728 < 70) { + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 10.0f, 10.0f); } else { - field_0x68c = current.pos; + mDemoCamCenter = current.pos; } - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); setMidnaTagPos(); if (field_0x728 == 30) { - setBck(0x14, 0x02, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_HANGED_WAIT_e, 2, 10.0f, 1.0f); } if (field_0x728 > 30) { cLib_chaseF(&field_0x6cc, 350.0f, 4.0f); - cLib_addCalcAngleS(&field_0x718, -2048, 8, 0x100, 0x10); + cLib_addCalcAngleS(&mHeadRotZ, -0x800, 8, 0x100, 0x10); } else { cLib_chaseF(&field_0x6cc, 350.0f, 6.0f); - cLib_addCalcAngleS(&field_0x718, 0x400, 8, 0x200, 0x10); + cLib_addCalcAngleS(&mHeadRotZ, 0x400, 8, 0x200, 0x10); if (field_0x728 == 30) { setMidnaRideOn(); } - if (field_0x728 == 0x14) { - if (field_0x6e7 == 1) { + if (field_0x728 == 20) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -2565,7 +2567,7 @@ bool daKago_c::executeFirstDemo() { } if (field_0x728 == 0) { - field_0x748 = 2; + mDemoMode = 2; return true; } @@ -2575,25 +2577,24 @@ bool daKago_c::executeFirstDemo() { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 3); setMidnaTagPos(); - cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 10.0f, 10.0f); - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 10.0f, 10.0f); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); mMsgFlow.doFlow(this, NULL, 0); if (field_0x728 != 0) { if (field_0x728 == 1) { - setBck(0xf, 0x02, 20.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 20.0f, 1.0f); } if (mMsgFlow.getNowMsgNo() == 0x1774) { - setBck(0xf, 0x02, 20.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 20.0f, 1.0f); field_0x728 = 0; } } if (mMsgFlow.getNowMsgNo() == 0x1775) { - field_0x748 = 3; - + mDemoMode = 3; return true; } @@ -2603,18 +2604,17 @@ bool daKago_c::executeFirstDemo() { setMidnaTagPos(); cLib_addCalcAngleS( - &field_0x718, cLib_targetAngleX(¤t.pos, &playerPos) / 4, + &mHeadRotZ, cLib_targetAngleX(¤t.pos, &playerPos) / 4, 8, 0x100, 0x10); // adding braces to the switch case for this decl regresses debug match s16 targetYaw = cLib_targetAngleY(¤t.pos, &playerPos) - shape_angle.y; cLib_addCalcAngleS( - &field_0x71a, targetYaw / 4, + &mHeadRotY, targetYaw / 4, 8, 0x100, 0x10); if (mMsgFlow.doFlow(this, NULL, 0)) { - field_0x748 = 4; - + mDemoMode = 4; return true; } @@ -2623,8 +2623,8 @@ bool daKago_c::executeFirstDemo() { case 4: dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2); - cLib_addCalcAngleS(&field_0x718, 0, 8, 0x100, 0x10); - cLib_addCalcAngleS(&field_0x71a, 0, 8, 0x100, 0x10); + cLib_addCalcAngleS(&mHeadRotZ, 0, 8, 0x100, 0x10); + cLib_addCalcAngleS(&mHeadRotY, 0, 8, 0x100, 0x10); cLib_chaseF(&field_0x6cc, -300.0f, 10.0f); @@ -2638,27 +2638,27 @@ bool daKago_c::executeFirstDemo() { shape_angle.y = current.angle.y; shape_angle.x = current.angle.x; - cLib_chaseF(&field_0x6f8, 20.0f, 1.0f); + cLib_chaseF(&mFlySpeed, 20.0f, 1.0f); - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - field_0x68c += speed; - field_0x698 += speed; + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + mDemoCamCenter += speed; + mDemoCamEye += speed; - unkXyz2.set(0.0f, 200.0f, -500.0f); - cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f); - unkXyz2.set(0.0f, 0.0f, 0.0f); + offset.set(0.0f, 200.0f, -500.0f); + cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(0.0f, 0.0f, 0.0f); - cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f); + cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f); - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); if (field_0x6a4.abs(current.pos) < 100.0f) { - field_0x748 = 5; + mDemoMode = 5; return true; } @@ -2671,87 +2671,84 @@ bool daKago_c::executeFirstDemo() { shape_angle.y = current.angle.y; shape_angle.x = current.angle.x; - cLib_chaseF(&field_0x6f8, 20.0f, 1.0f); - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); + cLib_chaseF(&mFlySpeed, 20.0f, 1.0f); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - field_0x68c += speed; - field_0x698 += speed; + speed.y = -mFlySpeed * cM_ssin(current.angle.x); + mDemoCamCenter += speed; + mDemoCamEye += speed; - unkXyz2.set(400.0f, 50.0f, -300.0f); - cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(400.0f, 50.0f, -300.0f); + cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f); - unkXyz2.set(0.0f, 50.0f, 0.0f); - cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(0.0f, 50.0f, 0.0f); + cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f); - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); if (field_0x6a4.abs(current.pos) < 100.0f) { - field_0x748 = 6; - + mDemoMode = 6; return true; } break; case 6: dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2); - cLib_addCalcAngleS(¤t.angle.x, -8192, 8, 0x100, 0x40); + cLib_addCalcAngleS(¤t.angle.x, -0x2000, 8, 0x100, 0x40); shape_angle.x = current.angle.x; shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 > 120) { - field_0x68c += speed; - field_0x698 += speed; + mDemoCamCenter += speed; + mDemoCamEye += speed; - unkXyz2.set(400.0f, 100.0f, -300.0f); - cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(400.0f, 100.0f, -300.0f); + cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f); - unkXyz2.set(0.0f, 100.0f, 0.0f); - cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(0.0f, 100.0f, 0.0f); + cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f); } else { cLib_chaseF(&field_0x6cc, 0.0f, 0.1f); - field_0x68c += speed; - field_0x698 += speed * field_0x6cc; + mDemoCamCenter += speed; + mDemoCamEye += speed * field_0x6cc; - unkXyz2.set(0.0f, 100.0f, 0.0f); - cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &unkXyz2); - cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f); + offset.set(0.0f, 100.0f, 0.0f); + cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &offset); + cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f); } - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); if (field_0x728 == 0) { - field_0x748 = 7; - + mDemoMode = 7; return true; } - break; case 7: case 8: unkFlag1 = 0; - if (switchVal == 7 || field_0x6e8 == 0) { + if (mode == 7 || field_0x6e8 == 0) { if (field_0x728 == 110) { unkFlag1 = 1; } - } else if (switchVal == 8 && field_0x728 == 140) { + } else if (mode == 8 && field_0x728 == 140) { unkFlag1 = 1; } if (unkFlag1 != 0) { - if (field_0x6e7 == 1) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -2761,8 +2758,8 @@ bool daKago_c::executeFirstDemo() { if (field_0x728 != 0) { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 1); } else { - if (field_0x73c == 0 && setSceneChange(0)) { - field_0x748 = 9; + if (mSceneType == SCENE_TYPE_LAKE_HYLIA && setSceneChange(0)) { + mDemoMode = 9; } } case 9: @@ -2771,16 +2768,15 @@ bool daKago_c::executeFirstDemo() { shape_angle.y = current.angle.y; shape_angle.x = current.angle.x; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); - - unkXyz2.set(0.0f, 100.0f, 0.0f); - cLib_offsetPos(&field_0x68c, ¤t.pos, shape_angle.y, &unkXyz2); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); - field_0x6d4 = 70.0f; + offset.set(0.0f, 100.0f, 0.0f); + cLib_offsetPos(&mDemoCamCenter, ¤t.pos, shape_angle.y, &offset); - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + mDemoCamFovy = 70.0f; + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); break; } @@ -2802,13 +2798,13 @@ void daKago_c::executeLandingLakeHairia() { cXyz unkXyz1; cXyz unkXyz2(-700.0f, 0.0f, -300.0f); - switch (field_0x744) { + switch (mMode) { case 0: current.pos.set(-74500.0f, -12775.0f, 31400.0f); if (!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(this, 2, 0xffff, 3); - eventInfo.onCondition(2); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); return; } @@ -2816,38 +2812,37 @@ void daKago_c::executeLandingLakeHairia() { camera->SetTrimSize(3); current.pos.set(-74500.0f, -12775.0f, 31400.0f); - field_0x698.set(-79460.0f, -13000.0f, 34200.0f); - field_0x68c = current.pos; + mDemoCamEye.set(-79460.0f, -13000.0f, 34200.0f); + mDemoCamCenter = current.pos; - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; - current.angle.x = 0; - shape_angle.x = 0; - shape_angle.y = current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x698); + shape_angle.x = current.angle.x = 0; + shape_angle.y = current.angle.y = cLib_targetAngleY(¤t.pos, &mDemoCamEye); field_0x716 = shape_angle.y + 0x2000; field_0x6a4.set(-77615.0f, -18500.0f, 41400.0f); field_0x6a4 += unkXyz2; - field_0x744 = 1; + mMode = 1; field_0x712 = 0; field_0x728 = 150; - field_0x6f8 = 50.0f; + mFlySpeed = 50.0f; break; case 1: - Z2GetAudioMgr()->setDemoName(field_0x760); - field_0x744 = 2; + Z2GetAudioMgr()->setDemoName(mDemoName); + mMode = 2; case 2: - if (field_0x728 == 0x8c) { - if (field_0x6e7 == 0x01) { + if (field_0x728 == 140) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); } } - field_0x68c = current.pos; + mDemoCamCenter = current.pos; cLib_chaseAngleS(&field_0x712, 0x80, 4); @@ -2856,17 +2851,16 @@ void daKago_c::executeLandingLakeHairia() { cLib_chaseAngleS(&shape_angle.x, 0x1000, 0x20); current.angle.x = shape_angle.x; - field_0x6f8 = 50.0f; + mFlySpeed = 50.0f; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 == 0) { - field_0x744 = 3; + mMode = 3; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7); - break; case 3: current.pos.set(-76600.0f, -15500.0f, 37340.0f); @@ -2875,37 +2869,36 @@ void daKago_c::executeLandingLakeHairia() { field_0x6a4.set(-77615.0f, -18500.0f, 41400.0f); field_0x6a4 += unkXyz2; - field_0x698.set(-76900.0f, -18550.0f, 41660.0f); - field_0x698 += unkXyz2; + mDemoCamEye.set(-76900.0f, -18550.0f, 41660.0f); + mDemoCamEye += unkXyz2; - field_0x68c = current.pos; + mDemoCamCenter = current.pos; - field_0x6d4 = 70.0f; + mDemoCamFovy = 70.0f; shape_angle.x = current.angle.x = -cLib_targetAngleX(¤t.pos, &field_0x6a4); shape_angle.y = current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); - field_0x744 = 4; + mMode = 4; field_0x728 = 60; - setBck(13, 2, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f); case 4: - field_0x68c = current.pos; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + mDemoCamCenter = current.pos; + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 == 0) { - field_0x744 = 5; - field_0x728 = 0x28; + mMode = 5; + field_0x728 = 40; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7); - break; case 5: - field_0x68c = current.pos; + mDemoCamCenter = current.pos; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); cLib_chaseAngleS(&shape_angle.x, 0, 0x80); current.angle.x = shape_angle.x; @@ -2913,10 +2906,10 @@ void daKago_c::executeLandingLakeHairia() { if (field_0x728 == 0) { setRideOff(); - field_0x744 = 6; + mMode = 6; field_0x728 = 100; - setBck(0xf, 0x02, 10.0f, 1.0f); + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f); } else { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7); } @@ -2927,28 +2920,29 @@ void daKago_c::executeLandingLakeHairia() { case 6: unkXyz1.set(-77875.0f, -18287.0f, 42000.0f); unkXyz1 += unkXyz2; - cLib_chasePos(&field_0x68c, unkXyz1, field_0x6cc); - if (field_0x68c.abs(unkXyz1) < 500.0f) { + cLib_chasePos(&mDemoCamCenter, unkXyz1, field_0x6cc); + if (mDemoCamCenter.abs(unkXyz1) < 500.0f) { cLib_chaseF(&field_0x6cc, 0.0f, 3.0f); } unkXyz1.set(-77275.0f, -18500.0f, 41090.0f); unkXyz1 += unkXyz2; - cLib_chasePos(&field_0x698, unkXyz1, field_0x6d0); - if (field_0x698.abs(unkXyz1) < 200.0f) { + cLib_chasePos(&mDemoCamEye, unkXyz1, field_0x6d0); + + if (mDemoCamEye.abs(unkXyz1) < 200.0f) { cLib_chaseF(&field_0x6d0, 0.0f, 1.0f); } else { cLib_chaseF(&field_0x6d0, 20.0f, 1.0f); } - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); - cLib_chaseAngleS(&shape_angle.x, -8192, 0x100); + cLib_chaseAngleS(&shape_angle.x, -0x2000, 0x100); current.angle.x = shape_angle.x; if (field_0x728 == 90) { - if (field_0x6e7 == 0x01) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -2956,7 +2950,7 @@ void daKago_c::executeLandingLakeHairia() { } if (field_0x728 == 0) { - setActionMode(4, 0); + setActionMode(ACTION_WAIT_e, 0); camera->Reset(); camera->Start(); @@ -2965,91 +2959,87 @@ void daKago_c::executeLandingLakeHairia() { dComIfGp_event_reset(); Z2GetAudioMgr()->setDemoName(NULL); - return; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 8); } - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); } void daKago_c::executeLandingBoartHouse() { dCamera_c* camera = dCam_getBody(); cXyz unkXyz1; - switch (field_0x744) { + switch (mMode) { case 0: { current.pos.set(5750.0f, 1600.0f, 6100.0f); if (!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(this, 2, 0xffff, 3); eventInfo.onCondition(2); - return; } camera->Stop(); camera->SetTrimSize(3); - field_0x744 = 10; - + mMode = 10; break; } case 10: { - Z2GetAudioMgr()->setDemoName(field_0x760); + Z2GetAudioMgr()->setDemoName(mDemoName); current.pos.set(5750.0f, 1600.0f, 6100.0f); - setBck(0xf, 0x02, 10.0f, 1.0f); - field_0x698.set(2900.0f, 300.0f, 500.0f); - field_0x68c = current.pos; - field_0x6d4 = 70.0f; + setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 0x02, 10.0f, 1.0f); + mDemoCamEye.set(2900.0f, 300.0f, 500.0f); + mDemoCamCenter = current.pos; + mDemoCamFovy = 70.0f; field_0x6a4.set(3630.0f, 300.0f, 600.0f); shape_angle.x = current.angle.x = -cLib_targetAngleX(¤t.pos, &field_0x6a4); shape_angle.y = current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x6a4); - field_0x744 = 1; + mMode = 1; field_0x712 = 0; - field_0x728 = 0x50; - field_0x6f8 = 50.0f; + field_0x728 = 80; + mFlySpeed = 50.0f; } case 1: { - if (field_0x728 == 0x46) { - if (field_0x6e7 == 0x01) { + if (field_0x728 == 70) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); } } - field_0x68c = current.pos; + mDemoCamCenter = current.pos; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); if (field_0x728 == 0) { - field_0x744 = 2; - field_0x728 = 0x28; + mMode = 2; + field_0x728 = 40; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 9); - break; } case 2: { - field_0x68c = current.pos; + mDemoCamCenter = current.pos; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); cLib_chaseAngleS(&shape_angle.x, 0, 0x80); current.angle.x = shape_angle.x; if (field_0x728 == 0) { setRideOff(); - field_0x744 = 3; + mMode = 3; field_0x728 = 90; } else { dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 9); @@ -3057,32 +3047,31 @@ void daKago_c::executeLandingBoartHouse() { field_0x6cc = 40.0f; field_0x6d0 = 15.0f; - break; } case 3: { unkXyz1.set(3440.0f, 500.0f, 400.0f); - cLib_chasePos(&field_0x68c, unkXyz1, field_0x6cc); - if (field_0x68c.abs(unkXyz1) < 500.0f) { + cLib_chasePos(&mDemoCamCenter, unkXyz1, field_0x6cc); + if (mDemoCamCenter.abs(unkXyz1) < 500.0f) { cLib_chaseF(&field_0x6cc, 0.0f, 3.0f); } unkXyz1.set(3584.0f, 270.0f, 1007.0f); - cLib_chasePos(&field_0x698, unkXyz1, field_0x6d0); - if (field_0x698.abs(unkXyz1) < 200.0f) { + cLib_chasePos(&mDemoCamEye, unkXyz1, field_0x6d0); + if (mDemoCamEye.abs(unkXyz1) < 200.0f) { cLib_chaseF(&field_0x6d0, 0.0f, 1.0f); } else { cLib_chaseF(&field_0x6d0, 15.0f, 1.0f); } - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); - cLib_chaseAngleS(&shape_angle.x, -8192, 0x100); + cLib_chaseAngleS(&shape_angle.x, -0x2000, 0x100); current.angle.x = shape_angle.x; - if (field_0x728 == 0x50) { - if (field_0x6e7 == 0x01) { + if (field_0x728 == 80) { + if (mType == TYPE_NORMAL) { mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1); } else { mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1); @@ -3090,10 +3079,10 @@ void daKago_c::executeLandingBoartHouse() { } if (field_0x728 == 0) { - setActionMode(4, 0); + setActionMode(ACTION_WAIT_e, 0); - if (field_0x6e7 == 0x01) { - field_0x728 = 0x78; + if (mType == TYPE_NORMAL) { + field_0x728 = 120; } camera->Reset(); @@ -3103,44 +3092,42 @@ void daKago_c::executeLandingBoartHouse() { dComIfGp_event_reset(); Z2GetAudioMgr()->setDemoName(NULL); - return; } dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 10); - break; } } - camera->Set(field_0x68c, field_0x698, field_0x6d4, 0); + camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); } void daKago_c::executeLanding() { - if (this->field_0x73c == 0) { + if (mSceneType == SCENE_TYPE_LAKE_HYLIA) { executeLandingLakeHairia(); - } else if (this->field_0x73c == 2) { + } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) { executeLandingBoartHouse(); } else { setRideOff(); - setActionMode(4, 0); + setActionMode(ACTION_WAIT_e, 0); } } void daKago_c::moveDemoFly() { - if (field_0x744 == 0) { - cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 2.0f); + if (mMode == 0) { + cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 2.0f); if (!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(this, 2, 0xffff, 3); - eventInfo.onCondition(2); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); } else { setPlayerRideOn(); mDashCooldownTime = (int)l_HIO.mDashCooldownTime; mDashTime = (int)l_HIO.mDashTime; - field_0x744 = 1; + mMode = 1; setDashBlurEffect(0); - setBck(11, 0, 5.0f, l_HIO.mDashTimeMultiplier); + setBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e, 0, 5.0f, l_HIO.mDashTimeMultiplier); dComIfGp_getVibration().StartShock(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); mpLockActor = NULL; @@ -3148,9 +3135,8 @@ void daKago_c::moveDemoFly() { mGroundHeight = checkGroundHeight(current.pos, NULL); mRoofHeight = checkRoofHeight(current.pos); - if (mCurrentAction == 9) { + if (mAction == ACTION_DEMO_FLY_e) { dComIfGs_onSaveSwitch(9); - mMsgFlow.init(this, 0xbbf, 0, NULL); } } @@ -3159,75 +3145,72 @@ void daKago_c::moveDemoFly() { mIsFlying = true; - if (mCurrentAction == 9) { + if (mAction == ACTION_DEMO_FLY_e) { mMsgFlow.doFlow(this, NULL, 0); } - if (field_0x744 < 6) { - setDashEffect(); - field_0x6dd = 0x01; - - dComIfGp_setAStatusForce(0x27, 0); + if (mMode < 6) { + setDashEffect(); + mIsAttack = TRUE; + dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0); } - switch (field_0x744) { + switch (mMode) { case 1: { - Z2GetAudioMgr()->setDemoName(field_0x760); - - field_0x744 = 2; + Z2GetAudioMgr()->setDemoName(mDemoName); + mMode = 2; } case 2: { - cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f); - if (mpMorf->checkFrame(9.0f)) { - if (field_0x6e7 == 0) { + cLib_chaseF(&mFlySpeed, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f); + if (mAnm_p->checkFrame(9.0f)) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1); } else { mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1); } } - if (mpMorf->checkFrame(12.0f)) { - field_0x744 = 3; - field_0x728 = 0x14; + + if (mAnm_p->checkFrame(12.0f)) { + mMode = 3; + field_0x728 = 20; dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); field_0x6e6 = 0; } - break; } case 3: case 4: { - cLib_chaseF(&field_0x6f8, 100.0f, 5.0f); + cLib_chaseF(&mFlySpeed, 100.0f, 5.0f); if (field_0x728 == 0) { - if (field_0x744 == 3) { - field_0x744 = 4; - field_0x728 = 0xf; + if (mMode == 3) { + mMode = 4; + field_0x728 = 15; } else { - field_0x744 = 5; + mMode = 5; dComIfGp_getVibration().StopQuake(0x1f); } } - break; } case 5: { - cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 5.0f); - if (field_0x6f8 <= l_HIO.mFlightSpeed) { + cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 5.0f); + if (mFlySpeed <= l_HIO.mFlightSpeed) { field_0x6c8 = 0; field_0x6c4 = 8000.0f; field_0x710 = field_0x712 = 0; -#if VERSION == VERSION_WII_USA_R0 + #if VERSION == VERSION_WII_USA_R0 field_0x72c = 30; -#else + #else if (dComIfGp_getStartStagePoint() == 0) { field_0x72c = 30; } else { field_0x72c = 60 + nREG_S(1); } -#endif + #endif shape_angle.y = current.angle.y; @@ -3237,9 +3220,8 @@ void daKago_c::moveDemoFly() { setFlyAnime(); field_0x710 = field_0x712 = 0; - field_0x744 = 6; + mMode = 6; } - break; } case 6: { @@ -3249,32 +3231,30 @@ void daKago_c::moveDemoFly() { f32 fVar11 = 0.0f; if (cM_ssin(current.angle.x) > 0.0f) { - fVar11 = - l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x); + fVar11 = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x); } else { fVar11 = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x); } - if (std::abs(field_0x6f8 - fVar11) > 10.0f) { - cLib_chaseF(&field_0x6f8, fVar11, 2.0f); + if (std::abs(mFlySpeed - fVar11) > 10.0f) { + cLib_chaseF(&mFlySpeed, fVar11, 2.0f); } else { - cLib_chaseF(&field_0x6f8, fVar11, 1.0f); + cLib_chaseF(&mFlySpeed, fVar11, 1.0f); } if (field_0x72c == 0) { - setActionMode(0, 0); + setActionMode(ACTION_FLY_e, 0); dComIfGp_event_reset(); Z2GetAudioMgr()->setDemoName(NULL); return; } - break; } } } - cXyz unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position; - cXyz unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position; + cXyz unkXyz1 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position; + cXyz unkXyz2 = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position; s16 targetYaw = field_0x714 = cLib_targetAngleY(&unkXyz2, &unkXyz1); if (dComIfGp_getStartStagePoint() == 0) { @@ -3288,13 +3268,13 @@ void daKago_c::moveDemoFly() { cLib_addCalcAngleS(¤t.angle.y, cLib_targetAngleY(&unkXyz2, &unkXyz1), 8, 0x40, 0x10); shape_angle.y = current.angle.y; - speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x)); - speed.y = -field_0x6f8 * cM_ssin(current.angle.x); + speedF = mFlySpeed * std::abs(cM_scos(current.angle.x)); + speed.y = -mFlySpeed * cM_ssin(current.angle.x); f32 nextPath = checkNextPath(unkXyz1); if (nextPath < 0.0f) { if (abs((s16)(targetYaw - cLib_targetAngleY(&unkXyz2, ¤t.pos))) < 0x4000) { - mPathIdx += this->mPathIdxOffset; + mPathCurrentPointNo += mPathStep; if (checkFlySceneChange()) { return; } @@ -3303,41 +3283,41 @@ void daKago_c::moveDemoFly() { } void daKago_c::setFlyEffect() { - if (field_0x6e7 == 1) { + if (mType == TYPE_NORMAL) { return; } - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); JPABaseEmitter* emitter; - field_0xb30 = dComIfGp_particle_set(field_0xb30, 0x8607, ¤t.pos, &tevStr); + field_0xb30 = dComIfGp_particle_set(field_0xb30, dPa_RM(ID_ZF_S_YCFLY_HANDLR2), ¤t.pos, &tevStr); emitter = dComIfGp_particle_getEmitter(field_0xb30); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(13)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e)); } - field_0xb34 = dComIfGp_particle_set(field_0xb34, 0x8607, ¤t.pos, &tevStr); + field_0xb34 = dComIfGp_particle_set(field_0xb34, dPa_RM(ID_ZF_S_YCFLY_HANDLR2), ¤t.pos, &tevStr); emitter = dComIfGp_particle_getEmitter(field_0xb34); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(18)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e)); } } void daKago_c::setDashEffect() { - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); JPABaseEmitter* emitter; - if (field_0x6e7 == 0) { - field_0xb38 = dComIfGp_particle_set(field_0xb38, 0x8609, ¤t.pos, &tevStr); - emitter = dComIfGp_particle_getEmitter(this->field_0xb38); + if (mType == TYPE_TWILIGHT) { + field_0xb38 = dComIfGp_particle_set(field_0xb38, dPa_RM(ID_ZF_S_YCDASH_HANDL2), ¤t.pos, &tevStr); + emitter = dComIfGp_particle_getEmitter(field_0xb38); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(13)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e)); } - field_0xb3c = dComIfGp_particle_set(field_0xb3c, 0x860a, ¤t.pos, &tevStr); + field_0xb3c = dComIfGp_particle_set(field_0xb3c, dPa_RM(ID_ZF_S_YCDASH_HANDR2), ¤t.pos, &tevStr); emitter = dComIfGp_particle_getEmitter(field_0xb3c); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(18)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e)); } } @@ -3345,25 +3325,27 @@ void daKago_c::setDashEffect() { } void daKago_c::setDamageEffect() { - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); JPABaseEmitter* emitter; - if (field_0x6e7 != 1) { - field_0xb38 = dComIfGp_particle_set(field_0xb38, 0x8603, ¤t.pos, &tevStr); - emitter = dComIfGp_particle_getEmitter(this->field_0xb38); + if (mType != TYPE_NORMAL) { + field_0xb38 = dComIfGp_particle_set(field_0xb38, dPa_RM(ID_ZF_S_YCDAMAGE00_HANDLR2), ¤t.pos, &tevStr); + emitter = dComIfGp_particle_getEmitter(field_0xb38); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(13)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e)); } - field_0xb3c = dComIfGp_particle_set(field_0xb3c, 0x8603, ¤t.pos, &tevStr); + field_0xb3c = dComIfGp_particle_set(field_0xb3c, dPa_RM(ID_ZF_S_YCDAMAGE00_HANDLR2), ¤t.pos, &tevStr); emitter = dComIfGp_particle_getEmitter(field_0xb3c); if (emitter != NULL) { - emitter->setGlobalSRTMatrix(model->getAnmMtx(18)); + emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e)); } } } void daKago_c::setDashBlurEffect(int param_0) { + UNUSED(param_0); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); cXyz cameraEye = dCam_getBody()->Eye(); cXyz cameraEyeOffset; @@ -3381,51 +3363,53 @@ void daKago_c::setDashBlurEffect(int param_0) { cameraEyeOffset = cameraEye + local_78; - local_94.set((s16)cLib_targetAngleX(&field_0x6b0, &cameraEye), (s16)cLib_targetAngleY(&field_0x6b0, &cameraEye), 0); + local_94.set((s16)cLib_targetAngleX(&mPrevCamEye, &cameraEye), (s16)cLib_targetAngleY(&mPrevCamEye, &cameraEye), 0); if (l_HIO.mAngleTrackingMode == 0) { field_0x6be.x = -local_94.x; field_0x6be.y = local_94.y; field_0x6be.z = 0; } else { - field_0x6be.x = shape_angle.x * (0.5f + XREG_F(0x13)); + field_0x6be.x = shape_angle.x * (0.5f + XREG_F(19)); field_0x6be.y = shape_angle.y; field_0x6be.z = 0; } - field_0xb40 = dComIfGp_particle_set(field_0xb40, 0x860f, &cameraEyeOffset, &tevStr, &field_0x6be, 0, 0xff, 0, -1, 0, 0, 0); + + field_0xb40 = dComIfGp_particle_set(field_0xb40, dPa_RM(ID_ZF_S_YCSPEED), &cameraEyeOffset, &tevStr, &field_0x6be, NULL, 0xff, NULL, -1, NULL, NULL, NULL); } -void daKago_c::setWallHitEffect(cXyz param_0, int param_1) { +void daKago_c::setWallHitEffect(cXyz i_pos, int i_effType) { // might be a 2D array? static u16 kago_wall_hit_id[6] = { - 0x8658, - 0x86F9, - 0x86FA, - 0x8659, - 0x86FB, - 0x86FC, + dPa_RM(ID_ZF_S_YCHITA), + dPa_RM(ID_ZF_S_YCHITA_1), + dPa_RM(ID_ZF_S_YCHITA_2), + + dPa_RM(ID_ZF_S_YCHITB), + dPa_RM(ID_ZF_S_YCHITB_1), + dPa_RM(ID_ZF_S_YCHITB_2), }; for (int i = 0; i < 3; i++) { - dComIfGp_particle_set(kago_wall_hit_id[i + param_1 * 3], ¶m_0, &tevStr, 0, 0); + dComIfGp_particle_set(kago_wall_hit_id[i + i_effType * 3], &i_pos, &tevStr, NULL, NULL); } } void daKago_c::setSibukiEffect() { static u16 kago_wave_id[3] = { - 0x865A, - 0x865B, - 0x865C, + dPa_RM(ID_ZF_S_YCWAVE00_WAVE), + dPa_RM(ID_ZF_S_YCWAVE01_SPLASH), + dPa_RM(ID_ZF_S_YCWAVE02_DROP), }; - cXyz acStack_28(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z); - csXyz cStack_30(0, shape_angle.y, 0); + cXyz effpos(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z); + csXyz effrot(0, shape_angle.y, 0); for (int i = 0; i < 3; i++) { - field_0xb44[i] = - dComIfGp_particle_set(field_0xb44[i], kago_wave_id[i], &acStack_28, &tevStr, &cStack_30, - 0, 0xff, 0, -1, 0, 0, 0); + mSibukiEmitterIDs[i] = + dComIfGp_particle_set(mSibukiEmitterIDs[i], kago_wave_id[i], &effpos, &tevStr, &effrot, + NULL, 0xff, NULL, -1, NULL, NULL, NULL); } - if (field_0x6e7 == 0) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1); } else { mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1); @@ -3433,40 +3417,40 @@ void daKago_c::setSibukiEffect() { } void daKago_c::setDashSibukiEffect() { - cXyz acStack_20(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z); - csXyz cStack_28(0, shape_angle.y, 0); - field_0xb50 = dComIfGp_particle_set(field_0xb50, 0x86fe, &acStack_20, &tevStr, &cStack_28, 0, - 0xff, 0, -1, 0, 0, 0); + cXyz effpos(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z); + csXyz effrot(0, shape_angle.y, 0); + mDashSibukiEmitterID = dComIfGp_particle_set(mDashSibukiEmitterID, dPa_RM(ID_ZF_S_YCWAVE03_SPLASH), &effpos, &tevStr, &effrot, NULL, + 0xff, NULL, -1, NULL, NULL, NULL); } void daKago_c::setWaterFallEffect() { static u16 kago_wave_id[2] = { - 0x865B, - 0x865C, + dPa_RM(ID_ZF_S_YCWAVE01_SPLASH), + dPa_RM(ID_ZF_S_YCWAVE02_DROP), }; - cXyz acStack_28(current.pos.x, current.pos.y, current.pos.z); - csXyz cStack_30(0, shape_angle.y, 0); + cXyz effpos(current.pos.x, current.pos.y, current.pos.z); + csXyz effrot(0, shape_angle.y, 0); for (int i = 0; i < 2; i++) { - field_0xb44[i] = - dComIfGp_particle_set(field_0xb44[i], kago_wave_id[i], &acStack_28, &tevStr, &cStack_30, - 0, 0xff, 0, -1, 0, 0, 0); + mSibukiEmitterIDs[i] = + dComIfGp_particle_set(mSibukiEmitterIDs[i], kago_wave_id[i], &effpos, &tevStr, &effrot, + NULL, 0xFF, NULL, -1, NULL, NULL, NULL); } - if (field_0x6e7 == 0) { + + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1); } else { mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1); } } -static void* s_waterfall(void* param_0, void* param_1) { - if (fopAcM_IsActor(param_0) && fopAcM_GetName(param_0) == PROC_Tag_WaterFall) { - if (!fpcM_IsCreating(fopAcM_GetID(param_0))) { - if (((daTagWaterFall_c*)param_0) - ->checkHitWaterFall(((fopAc_ac_c*)param_1)->current.pos)) +static void* s_waterfall(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_Tag_WaterFall) { + if (!fpcM_IsCreating(fopAcM_GetID(i_actor))) { + if (((daTagWaterFall_c*)i_actor)->checkHitWaterFall(((fopAc_ac_c*)i_data)->current.pos)) { - ((daKago_c*)param_1)->onWaterFall(); - return param_0; + ((daKago_c*)i_data)->onWaterFall(); + return i_actor; } } } @@ -3475,44 +3459,46 @@ static void* s_waterfall(void* param_0, void* param_1) { } void daKago_c::setFlySound() { + BOOL isPlayWingSound; + if (field_0x6de != 0) { - BOOL unkFlag1 = FALSE; - if (checkBck(9) || checkBck(15)) { - if (field_0x6e7 == 0) { - if (mpMorf->checkFrame(27.0f)) { - unkFlag1 = TRUE; + isPlayWingSound = FALSE; + if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_e) || checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) { + if (mType == TYPE_TWILIGHT) { + if (mAnm_p->checkFrame(27.0f)) { + isPlayWingSound = TRUE; } } else { - if (mpMorf->checkFrame(29.0f)) { - unkFlag1 = TRUE; + if (mAnm_p->checkFrame(29.0f)) { + isPlayWingSound = TRUE; } } - } else if (checkBck(21)) { - if (mpMorf->checkFrame(10.0f)) { - unkFlag1 = TRUE; + } else if (checkBck(dRes_ID_E_YC_BCK_YC_HOVERING_e)) { + if (mAnm_p->checkFrame(10.0f)) { + isPlayWingSound = TRUE; } - } else if (checkBck(6)) { - if (mpMorf->checkFrame(26.0f)) { - unkFlag1 = TRUE; + } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_START_e)) { + if (mAnm_p->checkFrame(26.0f)) { + isPlayWingSound = TRUE; } - } else if (checkBck(5)) { - if (mpMorf->checkFrame(10.0f)) { - unkFlag1 = TRUE; + } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_MIDDLE_e)) { + if (mAnm_p->checkFrame(10.0f)) { + isPlayWingSound = TRUE; } - } else if (checkBck(4)) { - if (mpMorf->checkFrame(10.0f) || mpMorf->checkFrame(35.0f)) { - unkFlag1 = TRUE; + } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_END_e)) { + if (mAnm_p->checkFrame(10.0f) || mAnm_p->checkFrame(35.0f)) { + isPlayWingSound = TRUE; } - } else if (checkBck(12) || checkBck(13)) { - if (field_0x6e7 == 0) { + } else if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e) || checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSoundLevel(Z2SE_EN_YC_GLIDE, 0, -1); } else { mSound.startCreatureSoundLevel(Z2SE_EN_KC_GLIDE, 0, -1); } } - if (unkFlag1) { - if (field_0x6e7 == 0) { + if (isPlayWingSound) { + if (mType == TYPE_TWILIGHT) { mSound.startCreatureSound(Z2SE_EN_YC_WING, 0, -1); } else { mSound.startCreatureSound(Z2SE_EN_KC_WING, 0, -1); @@ -3526,78 +3512,78 @@ void daKago_c::action() { checkSizeBg(); setFlyEffect(); - field_0x6f0 = mDoCPd_c::getStickX3D(0); - field_0x6f4 = mDoCPd_c::getStickY(0); + mStickX = mDoCPd_c::getStickX3D(PAD_1); + mStickY = mDoCPd_c::getStickY(PAD_1); - u32 unkInt1 = field_0x6ea; - field_0x6ea = 0; + u8 prevIsWaterfall = mIsWaterfall; + mIsWaterfall = FALSE; fpcM_Search(s_waterfall, this); - if (field_0x6ea != 0) { - if (unkInt1 == 0) { + if (mIsWaterfall) { + if (!prevIsWaterfall) { current.angle.x = 0x1000; dComIfGp_getVibration().StartQuake(3, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); } - field_0x6f0 = field_0x6f0 * 0.5f; + mStickX = mStickX * 0.5f; - if (field_0x6f4 < 0.0f) { - field_0x6f4 = field_0x6f4 * 0.5f; + if (mStickY < 0.0f) { + mStickY = mStickY * 0.5f; } else { - field_0x6f4 = field_0x6f4 * 1.5f; + mStickY = mStickY * 1.5f; } setWaterFallEffect(); - } else if (unkInt1 != 0) { + } else if (prevIsWaterfall) { dComIfGp_getVibration().StopQuake(0x1f); } - field_0x6dd = 0; + mIsAttack = FALSE; - switch (mCurrentAction) { - case 0: + switch (mAction) { + case ACTION_FLY_e: executeFly(); break; - case 1: + case ACTION_STAGGER_e: executeStagger(); break; - case 2: + case ACTION_EVENT_e: executeEvent(); break; - case 3: + case ACTION_PERCH_e: executePerch(); break; - case 4: + case ACTION_WAIT_e: executeWait(); break; - case 5: + case ACTION_ATTACK_e: executeAttack(); break; - case 6: + case ACTION_EVENT2_e: executeEvent2(); break; - case 7: + case ACTION_PERCH2_e: executePerch2(); break; - case 8: + case ACTION_LANDING_e: executeLanding(); break; - case 9: + case ACTION_DEMO_FLY_e: moveDemoFly(); break; - case 10: + case ACTION_DEMO_FLY2_e: moveDemoFly(); break; } - if (field_0x6e7 == 1 && (mCurrentAction == 0 || mCurrentAction == 5)) { + if (mType == TYPE_NORMAL && (mAction == ACTION_FLY_e || mAction == ACTION_ATTACK_e)) { mSph.OnAtSetBit(); } setFlySound(); if (daPy_getPlayerActorClass()->checkCargoCarry()) { - if (mCurrentAction == 9 || mCurrentAction == 10) { + if (mAction == ACTION_DEMO_FLY_e || mAction == ACTION_DEMO_FLY2_e) { dCam_getBody()->SetTrimTypeForce(2); } else if (isAttack()) { dCam_getBody()->SetTrimTypeForce(0); @@ -3605,19 +3591,20 @@ void daKago_c::action() { } } - fopAcM_posMoveF(this, 0); + fopAcM_posMoveF(this, NULL); + if (field_0x6dc == 0) { mObjAcch.CrrPos(dComIfG_Bgsp()); } - if (mpMorf != NULL) { - mpMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + if (mAnm_p != NULL) { + mAnm_p->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); } field_0x674 = current.pos; if (cLib_chaseF(&field_0x6c4, 0.0f, 60.0f) == 0) { - field_0x6c8 = field_0x6c8 + 0x800; + ANGLE_ADD(field_0x6c8, 0x800); } field_0x6ca = field_0x6c4 * cM_ssin(field_0x6c8); @@ -3628,11 +3615,11 @@ void daKago_c::mtx_set() { mDoMtx_stack_c::ZXYrotM(shape_angle); mDoMtx_stack_c::scaleM(l_HIO.mBasicSize,l_HIO.mBasicSize,l_HIO.mBasicSize); - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); model->setBaseTRMtx(mDoMtx_stack_c::get()); - mpMorf->modelCalc(); + mAnm_p->modelCalc(); - mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0x1c)); + mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_LEGR_3_e)); mDoMtx_stack_c::ZrotM(field_0x6ca); cMtx_copy(mDoMtx_stack_c::get(), mLegR3Mtx); } @@ -3654,7 +3641,7 @@ void daKago_c::cc_set() { int daKago_c::execute() { if (executeBalloonMenu()) { #if VERSION != VERSION_SHIELD_DEBUG - dComIfGp_setAStatusForce(0x27, 0); + dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0); #endif return 1; } @@ -3667,24 +3654,27 @@ int daKago_c::execute() { field_0x72c--; } - if (field_0x720 != 0) { - field_0x720--; + if (mWallHitInvulnTimer != 0) { + mWallHitInvulnTimer--; } + if (mDashCooldownTime != 0) { mDashCooldownTime--; } - if (field_0x71c != 0) { - field_0x71c--; + + if (mWaterSplashTimer != 0) { + mWaterSplashTimer--; } - if (field_0x6ed != 0) { - field_0x6ed--; + + if (unk_0x6ed != 0) { + unk_0x6ed--; } action(); mtx_set(); cc_set(); - field_0x6b0 = dCam_getBody()->Eye(); + mPrevCamEye = dCam_getBody()->Eye(); return 1; } @@ -3698,9 +3688,9 @@ static int daKago_IsDelete(daKago_c* i_this) { } int daKago_c::_delete() { - dComIfG_resDelete(&mPhase, field_0x75c); + dComIfG_resDelete(&mPhase, mArcName); - if (field_0xb54 != 0) { + if (mIsHioSet != 0) { hio_set = false; mDoHIO_DELETE_CHILD(l_HIO.mChild); } @@ -3717,65 +3707,64 @@ static int daKago_Delete(daKago_c* i_this) { return i_this->_delete(); } -int daKago_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - J3DJoint* joint = param_0; +int daKago_c::ctrlJoint(J3DJoint* i_joint, J3DModel* param_1) { + J3DJoint* joint = i_joint; int jointNo = joint->getJntNo(); mDoMtx_stack_c::copy(param_1->getAnmMtx(jointNo)); - if (jointNo == 3 || jointNo == 5 || jointNo == 6) { - mDoMtx_stack_c::YrotM(field_0x71a); - mDoMtx_stack_c::ZrotM(field_0x718); + if (jointNo == YC_JNT_NECK1_e || jointNo == YC_JNT_NECK2_e || jointNo == YC_JNT_HEAD_e) { + mDoMtx_stack_c::YrotM(mHeadRotY); + mDoMtx_stack_c::ZrotM(mHeadRotZ); } param_1->setAnmMtx(jointNo,mDoMtx_stack_c::get()); cMtx_copy(mDoMtx_stack_c::get(),J3DSys::mCurrentMtx); - return 1; } -int daKago_c::JointCallBack(J3DJoint* param_0, int param_1) { +int daKago_c::JointCallBack(J3DJoint* i_joint, int param_1) { if (param_1 == 0) { J3DModel* model = j3dSys.getModel(); daKago_c* kago = (daKago_c*)model->getUserArea(); if (kago != NULL) { - kago->ctrlJoint(param_0, model); + kago->ctrlJoint(i_joint, model); } } + return 1; } int daKago_c::CreateHeap() { J3DModelData* modelData; - if (field_0x6e7 == 0) { - modelData = (J3DModelData*)dComIfG_getObjectRes(field_0x75c, 0x18); + if (mType == TYPE_TWILIGHT) { + modelData = (J3DModelData*)dComIfG_getObjectRes(mArcName, dRes_ID_E_YC_BMD_YC_e); } else { - modelData = (J3DModelData*)dComIfG_getObjectRes(field_0x75c, 0x10); + modelData = (J3DModelData*)dComIfG_getObjectRes(mArcName, dRes_ID_E_KC_BMD_KC_e); } - JUT_ASSERT(0x139f, modelData != NULL); - - mpMorf = new mDoExt_McaMorfSO( - modelData, NULL, NULL, - (J3DAnmTransform*)dComIfG_getObjectRes(field_0x75c, getBckName(9)), 2, 1.0f, 0, -1, &this->mSound, 0x80000, 0x11000084); + JUT_ASSERT(5023, modelData != NULL); - if (mpMorf == NULL || mpMorf->getModel() == NULL) { + mAnm_p = new mDoExt_McaMorfSO(modelData, NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes(mArcName, getBckName(dRes_ID_E_YC_BCK_YC_FLY_e)), 2, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mAnm_p == NULL || mAnm_p->getModel() == NULL) { return 0; } - J3DModel* model = mpMorf->getModel(); + J3DModel* model = mAnm_p->getModel(); model->setUserArea((uintptr_t)this); for (u16 i = 1; i < model->getModelData()->getJointNum(); i++) { - if (i == 3 || i == 5 || i == 6) { + if (i == YC_JNT_NECK1_e || i == YC_JNT_NECK2_e || i == YC_JNT_HEAD_e) { model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack); } } + return 1; } -static int useHeapInit(fopAc_ac_c* param_0) { - daKago_c* kago = (daKago_c*)param_0; - return kago->CreateHeap(); +static int useHeapInit(fopAc_ac_c* actor) { + daKago_c* i_this = (daKago_c*)actor; + return i_this->CreateHeap(); } int daKago_c::create() { @@ -3786,39 +3775,40 @@ int daKago_c::create() { mpPath1 = dPath_GetRoomPath(param & 0xff, fopAcM_GetRoomNo(this)); if (mpPath1 == NULL) { OS_REPORT("KAGO ......NONONONONONO PATH !!!!\n"); - return 5; + return cPhs_ERROR_e; } } - field_0x6e7 = (fopAcM_GetParam(this) >> 16) & 0xff; - if (field_0x6e7 == 0xff) { - field_0x6e7 = 0; + mType = (fopAcM_GetParam(this) >> 16) & 0xff; + if (mType == 0xFF) { + mType = TYPE_TWILIGHT; } - if (field_0x6e7 == 0) { - field_0x75c = "E_YC"; - field_0x760 = "KAGO_YAMI"; + + if (mType == TYPE_TWILIGHT) { + mArcName = "E_YC"; + mDemoName = "KAGO_YAMI"; } else { - field_0x75c = "E_KC"; - field_0x760 = "KAGO_HIKARI"; + mArcName = "E_KC"; + mDemoName = "KAGO_HIKARI"; } - int phase_state = dComIfG_resLoad(&mPhase, field_0x75c); + int phase_state = dComIfG_resLoad(&mPhase, mArcName); if (phase_state == cPhs_COMPLEATE_e) { OS_REPORT("Kago PARAM %x \n", fopAcM_GetParam(this)); - if (fopAcM_entrySolidHeap(this, useHeapInit, 0x23a0) == 0) { + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x23a0)) { return cPhs_ERROR_e; } - if (hio_set == 0) { - field_0xb54 = 1; - hio_set = 1; - l_HIO.mChild = mDoHIO_CREATE_CHILD("", &l_HIO); + if (!hio_set) { + mIsHioSet = TRUE; + hio_set = TRUE; + l_HIO.mChild = mDoHIO_CREATE_CHILD("カーゴロック(いい奴)", &l_HIO); } attention_info.flags = 0; - fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMtx(this, mAnm_p->getModel()->getBaseTRMtx()); fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f); fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f); @@ -3841,16 +3831,16 @@ int daKago_c::create() { maxFallSpeed = -100.0f; gravity = 0.0f; - mPathIdxOffset = 0x01; + mPathStep = 1; - setActionMode(4, 0); + setActionMode(ACTION_WAIT_e, 0); #if DEBUG - if (mDoCPd_c::getHoldL(0) && mDoCPd_c::getHoldR(0)) { - dComIfGs_offSwitch(0x2d, fopAcM_GetRoomNo(this)); - dComIfGs_offSwitch(0x32, fopAcM_GetRoomNo(this)); + if (mDoCPd_c::getHoldL(PAD_1) && mDoCPd_c::getHoldR(PAD_1)) { + dComIfGs_offSwitch(45, fopAcM_GetRoomNo(this)); + dComIfGs_offSwitch(50, fopAcM_GetRoomNo(this)); - setActionMode(8, 0); + setActionMode(ACTION_LANDING_e, 0); setMidnaRideOn(); setPlayerRideOn(); @@ -3860,19 +3850,19 @@ int daKago_c::create() { } #endif - field_0x73c = 3; + mSceneType = SCENE_TYPE_DEFAULT; if (strcmp("F_SP115", dComIfGp_getStartStageName()) == 0) { if (dComIfGp_getStartStageRoomNo() == 0) { - field_0x73c = 0; + mSceneType = SCENE_TYPE_LAKE_HYLIA; } } else if (strcmp("F_SP112", dComIfGp_getStartStageName()) == 0) { if (dComIfGp_getStartStageRoomNo() == 1) { - field_0x73c = 1; + mSceneType = SCENE_TYPE_RIVER; } } else if (strcmp("F_SP126", dComIfGp_getStartStageName()) == 0 && dComIfGp_getStartStageRoomNo() == 0) { - field_0x73c = 2; + mSceneType = SCENE_TYPE_BOARD_HOUSE; } mBalloon2DId = fpcM_ERROR_PROCESS_ID_e; @@ -3885,8 +3875,8 @@ int daKago_c::create() { return phase_state; } -static int daKago_Create(daKago_c* param_0) { - return param_0->create(); +static int daKago_Create(daKago_c* i_this) { + return i_this->create(); } static actor_method_class l_daKago_Method = { |
