More demo work, fix some fakematches in retail

This commit is contained in:
LagoLunatic
2025-05-25 19:20:08 -04:00
parent 0ee416c538
commit c484eb490d
15 changed files with 416 additions and 753 deletions
+109 -28
View File
@@ -50,9 +50,11 @@ JGeometry::TVec3<f32> l_hammer_splash_particle_scale(0.67f, 0.67f, 0.67f);
#include "d/actor/d_a_player_HIO_data.inc"
#if VERSION > VERSION_DEMO
cXyz l_debug_keep_pos;
csXyz l_debug_current_angle;
csXyz l_debug_shape_angle;
#endif
GXColor l_freeze_fade_color = {0xFF, 0xFF, 0xFF, 0xFF};
@@ -1325,9 +1327,10 @@ s32 daPy_lk_c::setItemModel() {
((m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_DASHS ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_DASH))))))
{
dVar16 = mDoMtx_stack_c::now[0][3];
dVar15 = mDoMtx_stack_c::now[1][3];
dVar17 = mDoMtx_stack_c::now[2][3];
MtxP mtx = mDoMtx_stack_c::get();
dVar16 = mtx[0][3];
dVar15 = mtx[1][3];
dVar17 = mtx[2][3];
u16 uVar10 =
cM_rad2s(((6.2831855f * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - 22.0f)) /
mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()));
@@ -1532,7 +1535,11 @@ void daPy_lk_c::drawMirrorLightModel() {
mDoMtx_stack_c::transS(l_ms_light_local_start);
mDoMtx_stack_c::YrotM(-0x8000);
mDoMtx_stack_c::revConcat(mpEquippedShieldModel->getBaseTRMtx());
#if VERSION == VERSION_DEMO
mMirrorPacket.update(mDoMtx_stack_c::get(), 0xFF);
#else
mMirrorPacket.update(mDoMtx_stack_c::get(), 0xFF, 60.0f);
#endif
dComIfGd_getXluList()->entryImm(&mMirrorPacket, 0xFF);
updateDLSetLight(mpYmsls00Model, 0);
}
@@ -1563,37 +1570,55 @@ void daPy_lk_c::drawShadow() {
}
mtl->getShape()->hide();
}
f32 fVar1;
f32 f31;
if (checkModeFlg(ModeFlg_HANG)) {
fVar1 = m35DC;
f31 = m35DC;
} else {
fVar1 = mAcch.GetGroundH();
f31 = mAcch.GetGroundH();
}
f32 dVar9 = fVar1;
if ((!strcmp(dComIfGp_getStartStageName(), "M_DaiB")) ||
(!strcmp(dComIfGp_getStartStageName(), "Xboss2")))
f32 f1;
if (!strcmp(dComIfGp_getStartStageName(), "M_DaiB") ||
!strcmp(dComIfGp_getStartStageName(), "Xboss2"))
{
fVar1 = 1400.0f;
f1 = 1400.0f;
} else {
fVar1 = daPy_HIO_basic_c0::m.field_0x10;
f1 = daPy_HIO_basic_c0::m.field_0x10;
}
int iVar4 = dComIfGd_setShadow(m3614, 0, mpCLModel, &local_30, fVar1, 30.0f, current.pos.y,
dVar9, mAcch.m_gnd, &tevStr, 0, 1.0f,
int iVar4 = dComIfGd_setShadow(m3614, 0, mpCLModel, &local_30, f1, 30.0f, current.pos.y,
f31, mAcch.m_gnd, &tevStr, 0, 1.0f,
&dDlst_shadowControl_c::mSimpleTexObj);
m3614 = iVar4;
if ((u32)m3614 != 0) {
if ((checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES)) && (!checkCaughtShapeHide())) {
dComIfGd_addRealShadow(m3614, mpKatsuraModel);
}
if ((checkSwordEquip()) && (!checkDemoSwordNoDraw(1))) {
if (checkSwordEquip()
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(1)
#else
&& !checkDemoSwordNoDraw(1)
#endif
) {
dComIfGd_addRealShadow(m3614, mpEquippedSwordModel);
}
if (((mpEquipItemModel != NULL) && (!checkDemoSwordNoDraw(0))) &&
if ((mpEquipItemModel != NULL
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(0)
#else
&& !checkDemoSwordNoDraw(0)
#endif
) &&
((!checkBowItem(mEquipItem) || (!checkPlayerGuard()))))
{
dComIfGd_addRealShadow(m3614, mpEquipItemModel);
}
if ((dComIfGs_getSelectEquip(1) != dItem_NONE_e) && (!checkDemoShieldNoDraw())) {
if (dComIfGs_getSelectEquip(1) != dItem_NONE_e
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(1)
#else
&& !checkDemoShieldNoDraw()
#endif
) {
dComIfGd_addRealShadow(m3614, mpEquippedShieldModel);
}
fopAc_ac_c* pfVar10;
@@ -1813,9 +1838,13 @@ BOOL daPy_lk_c::draw() {
} else {
hideHatAndBackle(link_root_joint->getMesh());
}
if ((!checkNormalSwordEquip() && dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) != dStageType_FF1_e) ||
checkCaughtShapeHide() || checkDemoShieldNoDraw())
{
if (
(!checkNormalSwordEquip() && dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) != dStageType_FF1_e)
|| checkCaughtShapeHide()
#if VERSION > VERSION_DEMO
|| checkDemoShieldNoDraw()
#endif
) {
mpCLModelData->getJointNodePointer(0x0D)->getMesh()->getShape()->hide(); // cl_podA joint
} else {
mpCLModelData->getJointNodePointer(0x0D)->getMesh()->getShape()->show(); // cl_podA joint
@@ -1838,7 +1867,11 @@ BOOL daPy_lk_c::draw() {
mpCLModelData->getJointNodePointer(0x29)->getMesh()->getShape()->show(); // cl_back joint
if (!r24) {
entryDLSetLight(mpHandsModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && !checkCaughtShapeHide() && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) {
if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && !checkCaughtShapeHide()
#if VERSION > VERSION_DEMO
&& !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)
#endif
) {
entryDLSetLight(mpKatsuraModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
}
if (checkFreezeState() && checkMaskDraw()) {
@@ -1847,7 +1880,11 @@ BOOL daPy_lk_c::draw() {
if (dComIfGs_getSelectEquip(2) == dItem_POWER_BRACELETS_e) {
entryDLSetLight(mpPringModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
}
if (checkMasterSwordEquip() && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) {
if (checkMasterSwordEquip() && !checkCaughtShapeHide()
#if VERSION > VERSION_DEMO
&& !checkDemoShieldNoDraw()
#endif
) {
updateDLSetLight(mpPodmsModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
}
}
@@ -1880,11 +1917,23 @@ BOOL daPy_lk_c::draw() {
mDoExt_modelUpdateDL(mpSuimenMunyaModel);
}
if (!r24 && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) {
if (checkSwordEquip() && !checkDemoSwordNoDraw(TRUE)) {
if (checkSwordEquip()
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(1)
#else
&& !checkDemoSwordNoDraw(1)
#endif
) {
entryDLSetLight(mpEquippedSwordModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
}
}
if (dComIfGs_getSelectEquip(1) != dItem_NONE_e && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) {
if (dComIfGs_getSelectEquip(1) != dItem_NONE_e && !checkCaughtShapeHide()
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(1)
#else
&& !checkDemoShieldNoDraw()
#endif
) {
entryDLSetLight(mpEquippedShieldModel, checkNoResetFlg1(daPyFlg1_FREEZE_STATE));
}
dComIfGd_setList();
@@ -1894,7 +1943,13 @@ BOOL daPy_lk_c::draw() {
if (mpBottleContentsModel != NULL) {
updateDLSetLight(mpBottleContentsModel, 0);
}
if (mpEquipItemModel && !checkCaughtShapeHide() && !checkDemoSwordNoDraw(FALSE)) {
if (mpEquipItemModel && !checkCaughtShapeHide()
#if VERSION == VERSION_DEMO
&& !checkLastDemoSwordNoDraw(0)
#else
&& !checkDemoSwordNoDraw(0)
#endif
) {
if (!checkBowItem(mEquipItem) || !checkPlayerGuard()) {
if (mEquipItem == dItem_HOOKSHOT_e) {
if (mActorKeepEquip.getActor()) {
@@ -8973,8 +9028,8 @@ void daPy_lk_c::setNeckAngle() {
r28 = true;
} else if (checkModeFlg(ModeFlg_00000080 | ModeFlg_08000000)) {
if ((!dComIfGp_event_runCheck()) || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK39_e)) {
if (dComIfGp_getAttention().getLookTarget() != NULL) {
sp18 = &dComIfGp_getAttention().getLookTarget()->eyePos;
if (dComIfGp_att_getLookTarget() != NULL) {
sp18 = &dComIfGp_att_getLookTarget()->eyePos;
r28 = true;
} else {
if ((((checkAttentionPosAngle(r23_2, &sp18)) ||
@@ -11157,9 +11212,11 @@ void daPy_lk_c::checkRoofRestart() {
/* 80121870-80122D30 .text execute__9daPy_lk_cFv */
BOOL daPy_lk_c::execute() {
/* Nonmatching - regalloc */
#if VERSION > VERSION_DEMO
if (setGetDemo()) {
return TRUE;
}
#endif
if (checkNoResetFlg1(daPyFlg1_UNK200)) {
fopMsgM_demoMsgFlagOn();
@@ -11179,9 +11236,11 @@ BOOL daPy_lk_c::execute() {
dComIfGs_setBottleItemIn(dItem_FOREST_WATER_e, dItem_WATER_BOTTLE_e);
mDemo.setDemoType(5);
m3628 = fpcM_ERROR_PROCESS_ID_e;
#if VERSION > VERSION_DEMO
if (mCurProc == daPyProc_SCOPE_e) {
procWait_init();
}
#endif
}
}
}
@@ -11229,9 +11288,11 @@ BOOL daPy_lk_c::execute() {
}
}
#if VERSION > VERSION_DEMO
current.pos = l_debug_keep_pos;
shape_angle = l_debug_shape_angle;
current.angle = l_debug_current_angle;
#endif
mCameraInfoIdx = dComIfGp_getPlayerCameraID(0);
m3748 = current.pos;
@@ -11503,7 +11564,7 @@ BOOL daPy_lk_c::execute() {
m357C = m3580;
m3580 = -1;
mCurrAttributeCode = dBgS_Attr_UNK1B_e;
roomNo = current.roomNo;
roomNo = fopAcM_GetRoomNo(this);
checkFallCode();
}
@@ -11541,7 +11602,9 @@ BOOL daPy_lk_c::execute() {
mpCLModelData->getJointNodePointer(0x02)->setMtxCalc(m_pbCalc[PART_UPPER_e]); // body_chn joint
mpCLModelData->getJointNodePointer(0x1D)->setMtxCalc(m_pbCalc[PART_UNDER_e]); // wash_chn joint
#if VERSION > VERSION_DEMO
checkOriginalHatAnimation();
#endif
static const Vec nsword_top = {45.0f, -31.0f, 0.0f};
static const Vec msword_top = {57.0f, 48.0f, 0.0f};
@@ -11578,7 +11641,11 @@ BOOL daPy_lk_c::execute() {
m36D0 = mSwordTopPos;
m36DC = m36C4;
if (mEquipItem == daPyItem_BOKO_e && mActorKeepEquip.getActor()) {
if (mEquipItem == daPyItem_BOKO_e
#if VERSION > VERSION_DEMO
&& mActorKeepEquip.getActor()
#endif
) {
daBoko_c* boko = static_cast<daBoko_c*>(mActorKeepEquip.getActor());
boko->getTopPos(&mSwordTopPos);
boko->getBlurRootPos(&m36C4);
@@ -11618,7 +11685,9 @@ BOOL daPy_lk_c::execute() {
eventInfo.onCondition(dEvtCnd_CANTALK_e);
}
}
#if VERSION > VERSION_DEMO
eventInfo.onCondition(dEvtCnd_CANGETITEM_e);
#endif
JPABaseEmitter* emitter = mSmokeEcallBack.getEmitter();
if (emitter) {
@@ -11650,9 +11719,11 @@ BOOL daPy_lk_c::execute() {
if (dComIfGp_getDoStatus() == dActStts_UNK43) {
dComIfGp_setDoStatus(dActStts_JUMP_e);
}
#if VERSION > VERSION_DEMO
if (checkResetFlg0(daPyRFlg0_UNK10000000)) {
dComIfGp_setAStatus(dActStts_BLANK_e);
}
#endif
}
offNoResetFlg1((daPy_FLG1)(daPyFlg1_UNK4 | daPyFlg1_FORCE_VOMIT_JUMP | daPyFlg1_FORCE_VOMIT_JUMP_SHORT | daPyFlg1_UNK10000000));
@@ -11681,9 +11752,11 @@ BOOL daPy_lk_c::execute() {
mWhirlId = fpcM_ERROR_PROCESS_ID_e;
#if VERSION > VERSION_DEMO
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
#endif
return TRUE;
}
@@ -12583,9 +12656,11 @@ cPhs_State daPy_lk_c::makeBgWait() {
if ((dComIfGs_getLastSceneMode() & 0x4000) != 0) {
onNoResetFlg1(daPyFlg1_UNK8000);
}
#if VERSION > VERSION_DEMO
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
#endif
return cPhs_NEXT_e;
}
@@ -12956,9 +13031,11 @@ void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, s16 param_2) {
shape_angle.y = param_2;
current.angle.y = param_2;
m34DE = shape_angle.y;
#if VERSION > VERSION_DEMO
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
#endif
}
/* 80128C10-80128CE4 .text setPlayerPosAndAngle__9daPy_lk_cFP4cXyzP5csXyz */
@@ -12975,9 +13052,11 @@ void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, csXyz* param_2) {
current.angle.y = shape_angle.y;
m34DE = shape_angle.y;
}
#if VERSION > VERSION_DEMO
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
#endif
}
/* 80128CE4-80128DC0 .text setPlayerPosAndAngle__9daPy_lk_cFPA4_f */
@@ -12990,9 +13069,11 @@ void daPy_lk_c::setPlayerPosAndAngle(MtxP param_1) {
mDoMtx_MtxToRot(param_1, &shape_angle);
current.angle.y = shape_angle.y;
m34DE = shape_angle.y;
#if VERSION > VERSION_DEMO
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
#endif
}
}