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
This commit is contained in:
LagoLunatic
2025-06-04 16:50:49 -04:00
committed by GitHub
parent 08571c4865
commit e24cbed367
69 changed files with 1800 additions and 479 deletions
+49 -29
View File
@@ -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;
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 < minTurnRate) {
turnRate = minTurnRate;
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 {