diff options
| author | LagoLunatic <LagoLunatic@users.noreply.github.com> | 2025-06-04 16:50:49 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-04 16:50:49 -0400 |
| commit | e24cbed36724b9ae422875a6da46b8c10d69ca19 (patch) | |
| tree | 144d0841819533767ff69dc541bd655f7adeaab4 /src/d/actor/d_a_ship.cpp | |
| parent | 08571c4865fed64bb39c422ae0b973f977af93b4 (diff) | |
Demo work (#786)
* Demo work
* Fix PAL
* Fix d_door weak func order and link it
* Fix d_door for demo
* JKernel OK on demo + misc
* tag_attention 100% on demo
* More demo work and fix some retail fakematches
Diffstat (limited to 'src/d/actor/d_a_ship.cpp')
| -rw-r--r-- | src/d/actor/d_a_ship.cpp | 80 |
1 files changed, 50 insertions, 30 deletions
diff --git a/src/d/actor/d_a_ship.cpp b/src/d/actor/d_a_ship.cpp index 13830969..d0a08511 100644 --- a/src/d/actor/d_a_ship.cpp +++ b/src/d/actor/d_a_ship.cpp @@ -341,9 +341,11 @@ void daShip_c::setInitMessage() { else if (checkForceMessage()) { return; } +#if VERSION > VERSION_DEMO else if (dComIfGs_isEventBit(0x2110) && !dComIfGs_checkGetItem(dItem_BOMB_BAG_e)) { mNextMessageNo = 0x623; } +#endif else if (checkStateFlg(daSFLG_UNK800000_e)) { mNextMessageNo = 0x636; } @@ -612,7 +614,9 @@ BOOL daShip_c::setNextMessage(msg_class* msg) { } else if (currMessageNo == 0x1682) { dComIfGs_onEventBit(0x3d04); +#if VERSION > VERSION_DEMO mNextMessageNo = 0; +#endif } else if (currMessageNo == 0x1688) { dComIfGs_onEventBit(0x3f80); @@ -826,7 +830,7 @@ void daShip_c::setWaveAngle(short* param1, short* param2) { /* 00002314-000023E0 .text getWaterY__8daShip_cFv */ f32 daShip_c::getWaterY() { - float waterY; + f32 waterY; BOOL waterHit = mAcch.ChkWaterHit(); if (waterHit) { m03F8 = mAcch.m_wtr.GetHeight(); @@ -844,6 +848,9 @@ f32 daShip_c::getWaterY() { waterY = m03F8; } else { +#if VERSION == VERSION_DEMO + waterY = m03F4; +#else daPy_lk_c* link = daPy_getPlayerLinkActorClass(); if (link && link->mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e ) { waterY = 0.0f; @@ -851,6 +858,7 @@ f32 daShip_c::getWaterY() { else { waterY = m03F4; } +#endif } return waterY; } @@ -1087,32 +1095,23 @@ s16 daShip_c::getAimControllAngle(short referenceAngle) { /* 00002D90-00002EE0 .text setMoveAngle__8daShip_cFs */ void daShip_c::setMoveAngle(short moveAngle) { - float turnRate; - float maxTurnRate; - float minTurnRate; - short initialAngle; - bool cannotMove = FALSE; - if (mTornadoActor || mWhirlActor != 0) { - cannotMove = TRUE; - } - if (!cannotMove) { - initialAngle = shape_angle.y; - turnRate = 4.0f - std::abs(speedF) / 55.0f * 3.0f; - maxTurnRate = 3.6f; - minTurnRate = 0.1f; - if (turnRate > maxTurnRate) { - turnRate = maxTurnRate; - } - else if (turnRate < minTurnRate) { - turnRate = minTurnRate; + if (!checkForceMove()) { + s16 initialAngle = shape_angle.y; + f32 turnRate = 4.0f - std::abs(speedF) / 55.0f * 3.0f; + if (turnRate > 3.6f) { + turnRate = 3.6f; + } + else if (turnRate < 0.1f) { + turnRate = 0.1f; } if (m0388 >= 0xF) { - turnRate = maxTurnRate; + turnRate = 3.6f; } else { turnRate += ((3.6f - turnRate) * m0388) / 15.0f; } - shape_angle.y += (s32)(-turnRate * (moveAngle >> 6)); + s16 temp = -turnRate * (moveAngle >> 6); + shape_angle.y += temp; setControllAngle(getAimControllAngle(initialAngle)); current.angle.y = shape_angle.y; } @@ -1958,7 +1957,10 @@ BOOL daShip_c::procCraneUp_init() { dComIfGp_getVibration().StartShock(7, -0x31, cXyz(0.0f, 1.0f, 0.0f)); dComIfGp_getVibration().StartQuake(4, 1, cXyz(0.0f, 1.0f, 0.0f)); +#if VERSION > VERSION_DEMO speedF = 0.0f; +#endif + return TRUE; } @@ -2180,7 +2182,7 @@ BOOL daShip_c::procZevDemo() { fVar17 = local_70.absXZ(); if (!dComIfGp_evmng_getMyFloatP(mEvtStaffId, "rad")) { - JUT_ASSERT(0xE9D, 0); + JUT_ASSERT(VERSION_SELECT(3722, 3741, 3741, 3741), 0); } fVar3 = *dComIfGp_evmng_getMyFloatP(mEvtStaffId, "rad"); @@ -3449,7 +3451,10 @@ void daShip_c::setHeadAnm() { mCurMode == 9) { newFileIndex = SHIP_BCK_KYAKKAN1; } - else if ((!dComIfGs_isEventBit(0x3910) || dComIfGs_isEventBit(0x2D02)) && + else if ( +#if VERSION > VERSION_DEMO + (!dComIfGs_isEventBit(0x3910) || dComIfGs_isEventBit(0x2D02)) && +#endif (mSph.ChkTgHit() || mCyl[0].ChkTgHit() || mCyl[1].ChkTgHit() || mCyl[2].ChkTgHit())) { m03B4 = SHIP_BCK_FN_LOOK_L; @@ -3460,7 +3465,10 @@ void daShip_c::setHeadAnm() { } } else { - if ((!dComIfGs_isEventBit(0x3910) || dComIfGs_isEventBit(0x2D02)) && + if ( +#if VERSION > VERSION_DEMO + (!dComIfGs_isEventBit(0x3910) || dComIfGs_isEventBit(0x2D02)) && +#endif (mSph.ChkTgHit() || mCyl[0].ChkTgHit() || mCyl[1].ChkTgHit() || mCyl[2].ChkTgHit())) { m03B4 = SHIP_BCK_FN_LOOK_L; @@ -3474,7 +3482,9 @@ void daShip_c::setHeadAnm() { else if ((m03B4 == SHIP_BCK_FN_LOOK_L || m03B4 == SHIP_BCK_FN_LOOK_R) && std::fabsf(mpHeadAnm->getPlaySpeed()) < 0.01f && cM_rnd() < 0.4f && (g_Counter.mTimer & 0x1FF) == 0x1FF && +#if VERSION > VERSION_DEMO (!dComIfGs_isEventBit(0x3910) || dComIfGs_isEventBit(0x2D02)) && +#endif !checkStateFlg(daSFLG_UNK40000000_e)) { newFileIndex = SHIP_BCK_AKIBI1; } @@ -4373,7 +4383,7 @@ BOOL daShip_c::createHeap() { m0392 = SHIP_BCK_FN_MAST_OFF2; } modelData = (J3DModelData *)dComIfG_getObjectRes(l_arcName, SHIP_BDL_FN_BODY); - JUT_ASSERT(0x1B5C, modelData != 0); + JUT_ASSERT(VERSION_SELECT(6969, 7004, 7004, 7004), modelData != 0); mpBodyAnm = new mDoExt_McaMorf( modelData, NULL, NULL, @@ -4398,7 +4408,7 @@ BOOL daShip_c::createHeap() { } modelData = (J3DModelData *)dComIfG_getObjectRes(l_arcName, SHIP_BDL_VFNCN); - JUT_ASSERT(0x1B81, modelData != 0); + JUT_ASSERT(VERSION_SELECT(7006, 7041, 7041, 7041), modelData != 0); mpCannonModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002); if (mpCannonModel == NULL) { @@ -4406,7 +4416,7 @@ BOOL daShip_c::createHeap() { } modelData = (J3DModelData *)dComIfG_getObjectRes(l_arcName, SHIP_BDL_VFNCR); - JUT_ASSERT(0x1B8E, modelData != 0); + JUT_ASSERT(VERSION_SELECT(7019, 7054, 7054, 7054), modelData != 0); mpSalvageArmModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002); if (mpSalvageArmModel == NULL) { @@ -4414,7 +4424,7 @@ BOOL daShip_c::createHeap() { } modelData = (J3DModelData *)dComIfG_getObjectRes("Link", LINK_BDL_ROPEEND); - JUT_ASSERT(0x1B9B, modelData != 0); + JUT_ASSERT(VERSION_SELECT(7032, 7067, 7067, 7067), modelData != 0); mpLinkModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002); if (mpLinkModel == NULL) { @@ -4422,7 +4432,7 @@ BOOL daShip_c::createHeap() { } modelData = (J3DModelData *)dComIfG_getObjectRes(l_arcName, SHIP_BDL_FN_HEAD_H); - JUT_ASSERT(0x1BA8, modelData != 0); + JUT_ASSERT(VERSION_SELECT(7045, 7080, 7080, 7080), modelData != 0); m03B4 = SHIP_BCK_FN_LOOK_L; @@ -4602,9 +4612,13 @@ cPhs_State daShip_c::create() { mWhirlID = fpcM_ERROR_PROCESS_ID_e; mWhirlActor = NULL; +#if VERSION == VERSION_DEMO + mTactWarpID = fpcM_ERROR_PROCESS_ID_e; +#else if (mNextMode != MODE_START_MODE_WARP_e) { mTactWarpID = fpcM_ERROR_PROCESS_ID_e; } +#endif if (checkStateFlg(daSFLG_SAIL_ON_e) != 0) { mPart = PART_STEER_e; @@ -4625,7 +4639,13 @@ cPhs_State daShip_c::create() { } } - if ((dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_SEA_e) || !strcmp(dComIfGp_getStartStageName(), "Hyrule") || !strcmp(dComIfGp_getStartStageName(), "Ocean")) { + if ( + (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_SEA_e) + || !strcmp(dComIfGp_getStartStageName(), "Hyrule") +#if VERSION > VERSION_DEMO + || !strcmp(dComIfGp_getStartStageName(), "Ocean") +#endif + ) { m03CC = 4; } else { |
