Misc matches (#1000)

This commit is contained in:
LagoLunatic
2026-05-13 19:03:24 -04:00
committed by GitHub
parent de122df401
commit 766b58a6ee
12 changed files with 272 additions and 232 deletions
+2 -2
View File
@@ -1477,7 +1477,7 @@ config.libs = [
ActorRel(Matching, "d_a_spotbox"),
ActorRel(Matching, "d_a_ssk"),
ActorRel(Matching, "d_a_stone"),
ActorRel(MatchingFor("D44J01"), "d_a_stone2"),
ActorRel(Matching, "d_a_stone2"),
ActorRel(Matching, "d_a_swc00"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_swhit0"),
ActorRel(Matching, "d_a_swtdoor"),
@@ -1528,7 +1528,7 @@ config.libs = [
ActorRel(Matching, "d_a_ks"),
ActorRel(NonMatching, "d_a_kt"), # regalloc
ActorRel(Matching, "d_a_mflft"),
ActorRel(NonMatching, "d_a_npc_cb1"),
ActorRel(MatchingFor("GZLE01", "GZLP01"), "d_a_npc_cb1"),
ActorRel(NonMatching, "d_a_npc_md"),
ActorRel(NonMatching, "d_a_npc_so"),
ActorRel(Matching, "d_a_nzg"),
+2
View File
@@ -19,8 +19,10 @@ public:
void setExecute(BOOL (daLodbg_c::*func)()) { mExecuteFunc = func; }
void deleteModelData();
#if VERSION > VERSION_DEMO
BOOL loadModelData(const char*, J3DModelData*&, JKRSolidHeap*&, unsigned long&);
BOOL createModelData();
#endif
BOOL execCreateWait();
BOOL execReadWait();
BOOL execDeleteWait();
+5 -75
View File
@@ -30,10 +30,11 @@ public:
};
// daPy_py_c virtuals
f32 getBaseAnimeFrame() { return 0.0f; }
f32 getBaseAnimeFrameRate() { return 1.0f; }
MtxP getLeftHandMatrix() { return cullMtx; }
MtxP getRightHandMatrix() { return cullMtx; }
virtual f32 getGroundY() { return mAcch.GetGroundH(); }
virtual MtxP getLeftHandMatrix() { return cullMtx; }
virtual MtxP getRightHandMatrix() { return cullMtx; }
virtual f32 getBaseAnimeFrameRate() { return 1.0f; }
virtual f32 getBaseAnimeFrame() { return 0.0f; }
s16 XyCheckCB(int i_itemBtn) {
if(dComIfGp_getSelectItem(i_itemBtn) == dItem_WIND_WAKER_e && dComIfGs_isEventBit(dSv_event_flag_c::UNK_1880)) {
@@ -49,7 +50,6 @@ public:
s16 getBackbone_y() { return mJntCtrl.getBackbone_y(); }
s16 getHead_y() { return mJntCtrl.getHead_y(); }
cXyz& getEyePos() { return mEyePos; }
f32 getGroundY() { return mAcch.GetGroundH(); }
cXyz& getNusSpeed() { return mNusSpeed; } // not entirely sure about this one
cXyz& getNutPos() { return mNutPos; } // not entirely sure about this one
s16 getWork3() { return m8FA; }
@@ -322,74 +322,4 @@ private:
static mode_entry_t m_evProcTbl[];
};
class daNpc_Cb1_HIO_c : public JORReflexible {
public:
daNpc_Cb1_HIO_c();
virtual ~daNpc_Cb1_HIO_c() {}
void genMessage(JORMContext*) {}
public:
/* 0x04 */ s8 mNo;
/* 0x08 */ dNpc_HIO_c mNpc;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 mPlayerChaseDistance; // distance from the player before Makar starts following him (while called)
/* 0x38 */ f32 mChaseDistScale; // scales the distance to the player to get a target speed
/* 0x3C */ f32 mMaxWalkSpeed;
/* 0x40 */ f32 mMinWalkSpeed;
/* 0x44 */ f32 mForwardAccel;
/* 0x48 */ f32 mDecelScale; // scales speed to get deceleration in daNpc_Cb1_c::breaking()
/* 0x4C */ f32 mMaxDecel;
/* 0x50 */ f32 mDecel;
/* 0x54 */ f32 mWalkAnmSpeedScale;
/* 0x58 */ f32 mMaxWalkAnmSpeed;
/* 0x5C */ f32 mNpcFlyLaunchSpeedF; // forward speed when Makar jumps to start flying
/* 0x60 */ f32 mNpcFlyLaunchSpeedY;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ f32 mHitSpeedScaleF; // scales forward speed when Makar is hit
/* 0x6C */ f32 mHitSpeedScaleY; // scales forward speed to get y recoil speed when Makar is hit
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7C;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 mStickWalkSpeedScale; // scales main stick value to get a target speed
/* 0x8C */ f32 field_0x8C;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ u8 field_0x94[4];
/* 0x98 */ f32 field_0x98;
/* 0x9C */ f32 field_0x9C;
/* 0xA0 */ f32 field_0xA0;
/* 0xA4 */ f32 field_0xA4;
/* 0xA8 */ f32 field_0xA8;
/* 0xAC */ f32 mStickFlySpeedScale;
/* 0xB0 */ f32 field_0xB0;
/* 0xB4 */ f32 field_0xB4;
/* 0xB8 */ f32 field_0xB8;
/* 0xBC */ f32 mFlyLaunchSpeedY;
/* 0xC0 */ f32 field_0xC0;
/* 0xC4 */ f32 field_0xC4;
/* 0xC8 */ s16 field_0xC8;
/* 0xCA */ s16 mPlayerFlyTimer;
/* 0xCC */ s16 field_0xCC;
/* 0xCE */ s16 field_0xCE;
/* 0xD0 */ s16 field_0xD0;
/* 0xD2 */ s16 field_0xD2;
/* 0xD4 */ s16 field_0xD4;
/* 0xD6 */ s16 field_0xD6;
/* 0xD8 */ s16 field_0xD8;
/* 0xDA */ s16 field_0xDA;
/* 0xDC */ s16 mNpcFlyTimer;
/* 0xDE */ s16 field_0xDE;
/* 0xE0 */ s16 field_0xE0;
/* 0xE2 */ s16 field_0xE2;
/* 0xE4 */ s16 field_0xE4;
/* 0xE6 */ s16 field_0xE6;
/* 0xE8 */ s16 field_0xE8;
/* 0xEA */ s16 field_0xEA;
/* 0xEC */ s16 field_0xEC;
/* 0xEE */ u8 mDamageTimer;
/* 0xEF */ u8 field_0xEF;
}; // Size: 0xF0
#endif /* D_A_NPC_CB1_H */
+2 -2
View File
@@ -68,13 +68,13 @@ namespace daStone2 {
virtual ~Act_c() {}
const Attr_c& attr() { return M_attr[m644]; }
s32 prmZ_get_evId() const { return m64C; }
s32 prm_get_cull() const { return daObj::PrmAbstract(this, PRM_CULL_W, PRM_CULL_S); }
s32 prm_get_itemNo() const { return daObj::PrmAbstract(this, PRM_ITEMNO_W, PRM_ITEMNO_S); }
s32 prm_get_itemSave() const { return daObj::PrmAbstract(this, PRM_ITEMSAVE_W, PRM_ITEMSAVE_S); }
bool prm_get_shadow() const { return daObj::PrmAbstract(this, PRM_SHADOW_W, PRM_SHADOW_S); }
s32 prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); }
s32 prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); }
u8 prmZ_get_evId() const { return mPrmZ & 0xFF; }
void prmZ_init();
bool is_switch() const;
@@ -138,7 +138,7 @@ namespace daStone2 {
/* 0x648 */ s32 m648;
/* 0x64C */ s32 m64C;
/* 0x650 */ s16 m650;
/* 0x652 */ u16 m652;
/* 0x652 */ u16 mPrmZ;
/* 0x654 */ s16 m654;
/* 0x656 */ bool m656;
/* 0x657 */ u8 m657;
+11 -1
View File
@@ -130,10 +130,16 @@ public:
void setPitch(f32 pitch) { mVelFade2 = pitch; }
void setMaxSpeed(f32 vel) { mMaxParticleVelocity = vel; }
void setMaxDisSpeed(f32 vel) { mVelSpeed = vel; }
void setAnchor(const cXyz* anchorPos1, const cXyz* anchorPos2) { mCollapsePos[0].set(*anchorPos1); mCollapsePos[1].set(*anchorPos2); }
void setAnchor(const cXyz* anchorPos1, const cXyz* anchorPos2) {
mCollapsePos[0] = *anchorPos1;
mCollapsePos[1] = *anchorPos2;
}
void end() { remove(); }
void stop() { mState = 1; }
virtual ~dPa_waveEcallBack() {}
public:
/* 0x04 */ s16 mState;
/* 0x06 */ s16 mFadeTimer;
/* 0x08 */ f32 mVelFade1;
@@ -157,9 +163,12 @@ public:
JPABaseEmitter* getEmitter() { return mpBaseEmitter; }
void setSpeed (f32 vel) { mScaleTimer = vel; }
void setMaxSpeed (f32 vel) { mMaxScaleTimer = vel; }
void end() { remove(); }
void stop() { mState = 1; }
virtual ~dPa_splashEcallBack() {}
private:
/* 0x04 */ s16 mState;
/* 0x08 */ f32 mScaleTimer;
/* 0x0C */ f32 mMaxScaleTimer;
@@ -186,6 +195,7 @@ public:
virtual ~dPa_trackEcallBack() {}
private:
/* 0x04 */ s16 mState;
/* 0x08 */ f32 mBaseY;
/* 0x0C */ f32 mMinY;
+10
View File
@@ -96,6 +96,7 @@ void daLodbg_c::deleteModelData() {
}
}
#if VERSION > VERSION_DEMO
/* 0000046C-00000738 .text loadModelData__9daLodbg_cFPCcRP12J3DModelDataRP12JKRSolidHeapRUl */
BOOL daLodbg_c::loadModelData(const char* filename, J3DModelData*& mModelData, JKRSolidHeap*& mDataHeap, u32& mDataSize) {
/* Nonmatching - regalloc */
@@ -150,7 +151,9 @@ BOOL daLodbg_c::loadModelData(const char* filename, J3DModelData*& mModelData, J
else
return FALSE;
}
#endif
#if VERSION > VERSION_DEMO
/* 00000738-000008B8 .text createModelData__9daLodbg_cFv */
BOOL daLodbg_c::createModelData() {
static char resPath[32];
@@ -173,6 +176,7 @@ BOOL daLodbg_c::createModelData() {
return TRUE;
}
#endif
/* 000008B8-00000A38 .text createHeap__9daLodbg_cFv */
BOOL daLodbg_c::createHeap() {
@@ -231,25 +235,31 @@ BOOL daLodbg_c::execReadWait() {
if (!mMountCommand->sync())
return TRUE;
#if VERSION > VERSION_DEMO
JUT_ASSERT(VERSION_SELECT(506, 506, 535, 535), mArchive == NULL);
mArchive = mMountCommand->getArchive();
delete mMountCommand;
mMountCommand = NULL;
#endif
if (mArchive == NULL) {
setExecute(&daLodbg_c::execDeleteWait);
return TRUE;
}
#if VERSION > VERSION_DEMO
createModelData();
JUT_ASSERT(VERSION_SELECT(542, 542, 571, 571), mModel == NULL);
JUT_ASSERT(VERSION_SELECT(543, 543, 572, 572), mModel2[0] == NULL);
JUT_ASSERT(VERSION_SELECT(544, 544, 573, 573), mModel2[1] == NULL);
#endif
if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0)) {
#if VERSION > VERSION_DEMO
mModel = NULL;
mModel2[0] = NULL;
mModel2[1] = NULL;
#endif
setExecute(&daLodbg_c::execDeleteWait);
return TRUE;
}
+133 -28
View File
@@ -20,6 +20,76 @@
#include "d/actor/d_a_player_main.h"
#include "d/res/res_cb.h"
class daNpc_Cb1_HIO_c : public JORReflexible {
public:
daNpc_Cb1_HIO_c();
virtual ~daNpc_Cb1_HIO_c() {}
void genMessage(JORMContext*) {}
public:
/* 0x04 */ s8 mNo;
/* 0x08 */ dNpc_HIO_c mNpc;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 mPlayerChaseDistance; // distance from the player before Makar starts following him (while called)
/* 0x38 */ f32 mChaseDistScale; // scales the distance to the player to get a target speed
/* 0x3C */ f32 mMaxWalkSpeed;
/* 0x40 */ f32 mMinWalkSpeed;
/* 0x44 */ f32 mForwardAccel;
/* 0x48 */ f32 mDecelScale; // scales speed to get deceleration in daNpc_Cb1_c::breaking()
/* 0x4C */ f32 mMaxDecel;
/* 0x50 */ f32 mDecel;
/* 0x54 */ f32 mWalkAnmSpeedScale;
/* 0x58 */ f32 mMaxWalkAnmSpeed;
/* 0x5C */ f32 mNpcFlyLaunchSpeedF; // forward speed when Makar jumps to start flying
/* 0x60 */ f32 mNpcFlyLaunchSpeedY;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ f32 mHitSpeedScaleF; // scales forward speed when Makar is hit
/* 0x6C */ f32 mHitSpeedScaleY; // scales forward speed to get y recoil speed when Makar is hit
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7C;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 mStickWalkSpeedScale; // scales main stick value to get a target speed
/* 0x8C */ f32 field_0x8C;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ u8 field_0x94[4];
/* 0x98 */ f32 field_0x98;
/* 0x9C */ f32 field_0x9C;
/* 0xA0 */ f32 field_0xA0;
/* 0xA4 */ f32 field_0xA4;
/* 0xA8 */ f32 field_0xA8;
/* 0xAC */ f32 mStickFlySpeedScale;
/* 0xB0 */ f32 field_0xB0;
/* 0xB4 */ f32 field_0xB4;
/* 0xB8 */ f32 field_0xB8;
/* 0xBC */ f32 mFlyLaunchSpeedY;
/* 0xC0 */ f32 field_0xC0;
/* 0xC4 */ f32 field_0xC4;
/* 0xC8 */ s16 field_0xC8;
/* 0xCA */ s16 mPlayerFlyTimer;
/* 0xCC */ s16 field_0xCC;
/* 0xCE */ s16 field_0xCE;
/* 0xD0 */ s16 field_0xD0;
/* 0xD2 */ s16 field_0xD2;
/* 0xD4 */ s16 field_0xD4;
/* 0xD6 */ s16 field_0xD6;
/* 0xD8 */ s16 field_0xD8;
/* 0xDA */ s16 field_0xDA;
/* 0xDC */ s16 mNpcFlyTimer;
/* 0xDE */ s16 field_0xDE;
/* 0xE0 */ s16 field_0xE0;
/* 0xE2 */ s16 field_0xE2;
/* 0xE4 */ s16 field_0xE4;
/* 0xE6 */ s16 field_0xE6;
/* 0xE8 */ s16 field_0xE8;
/* 0xEA */ s16 field_0xEA;
/* 0xEC */ s16 field_0xEC;
/* 0xEE */ u8 mDamageTimer;
/* 0xEF */ u8 field_0xEF;
}; // Size: 0xF0
daNpc_Cb1_HIO_c l_HIO;
static dCcD_SrcCyl l_cyl_src = {
@@ -245,8 +315,13 @@ cPhs_State daNpc_Cb1_c::create() {
dComIfGs_setRestartOption(&dComIfGs_getPlayerPriestPos(), dComIfGs_getPlayerPriestRotate(), dComIfGs_getPlayerPriestRoomNo(), 1);
}
#if VERSION > VERSION_DEMO
checkRestart(1);
#endif
}
#if VERSION == VERSION_DEMO
checkRestart(1);
#endif
if(dComIfGp_getCb1Player()) {
return cPhs_ERROR_e;
@@ -860,7 +935,7 @@ BOOL daNpc_Cb1_c::isFlyAction() {
/* 00002914-00002A2C .text sowCheck__11daNpc_Cb1_cFv */
BOOL daNpc_Cb1_c::sowCheck() {
#if VERSION > VERSION_DEMO
if(!dComIfGp_event_runCheck() && (m4E4 & 1) == 0)
if(!dComIfGp_event_runCheck() && !isReturnLink())
#endif
{
dAttList_c* list = dComIfGp_getAttention().getActionBtnB();
@@ -992,7 +1067,7 @@ static char* l_cutNameTbl[] = {
/* 00002AD8-00002DC8 .text eventProc__11daNpc_Cb1_cFv */
BOOL daNpc_Cb1_c::eventProc() {
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_JPN
mAcch.ClrWallNone();
#endif
@@ -1005,7 +1080,7 @@ BOOL daNpc_Cb1_c::eventProc() {
mDoAud_seStart(JA_SE_CTRL_NPC_TO_LINK);
}
m4E4 |= 2;
onEventAccept();
m8DD = -1;
}
@@ -1030,20 +1105,20 @@ BOOL daNpc_Cb1_c::eventProc() {
mPlayerAction = NULL;
mNpcAction = NULL;
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_JPN
mAcch.SetWallNone();
#endif
}
if(m4E4 & 2) {
if(isEventAccept()) {
if(dComIfGp_evmng_endCheck(mEventIdx[m8E3])) {
dComIfGp_event_reset();
m4E4 &= ~2;
offEventAccept();
if(m8E3 == 1) {
returnLinkPlayer();
m4E4 &= ~1;
offReturnLink();
}
m8E3 = 0xFF;
@@ -1216,7 +1291,7 @@ BOOL daNpc_Cb1_c::evActWalk(int staffIdx) {
f32* speed_p = dComIfGp_evmng_getMyFloatP(staffIdx, "Speed");
f32* pDist = dComIfGp_evmng_getMyFloatP(staffIdx, "Dist");
JUT_ASSERT(DEMO_SELECT(2042, 2060), speed_p != NULL);
JUT_ASSERT(VERSION_SELECT(2042, 2055, 2060, 2060), speed_p != NULL);
cXyz* pPos = dComIfGp_evmng_getMyXyzP(staffIdx, "Pos");
cXyz temp;
@@ -1230,7 +1305,7 @@ BOOL daNpc_Cb1_c::evActWalk(int staffIdx) {
cXyz* pOffset = dComIfGp_evmng_getMyXyzP(staffIdx, "Offset");
if(pOffset) {
fopAc_ac_c* target = dComIfGp_event_getTalkPartner();
JUT_ASSERT(DEMO_SELECT(2059, 2077), target != NULL);
JUT_ASSERT(VERSION_SELECT(2059, 2072, 2077, 2077), target != NULL);
cLib_offsetPos(&temp, &target->current.pos, fopAcM_searchActorAngleY(this, target), pOffset);
temp4 = target->current.pos;
@@ -1291,7 +1366,7 @@ BOOL daNpc_Cb1_c::evActToLink(int staffIdx) {
f32* speed_p = dComIfGp_evmng_getMyFloatP(staffIdx, "Speed");
f32* dist_p = dComIfGp_evmng_getMyFloatP(staffIdx, "Dist");
JUT_ASSERT(DEMO_SELECT(2131, 2149), speed_p != NULL && dist_p != NULL);
JUT_ASSERT(VERSION_SELECT(2131, 2144, 2149, 2149), speed_p != NULL && dist_p != NULL);
if(fopAcM_searchActorDistanceXZ(this, dComIfGp_getPlayer(0)) < *dist_p) {
setAnm(ANM_00);
@@ -1390,7 +1465,7 @@ BOOL daNpc_Cb1_c::evActTurn(int staffIdx) {
target = dComIfGp_event_getTalkPartner();
}
JUT_ASSERT(DEMO_SELECT(2308, 2326), target != NULL);
JUT_ASSERT(VERSION_SELECT(2308, 2321, 2326, 2326), target != NULL);
angle = fopAcM_searchActorAngleY(this, target);
}
@@ -1415,7 +1490,7 @@ void daNpc_Cb1_c::evInitSow(int staffIdx) {
onNut();
int* timer_p = dComIfGp_evmng_getMyIntegerP(staffIdx, "Timer");
JUT_ASSERT(DEMO_SELECT(2353, 2371), timer_p != NULL);
JUT_ASSERT(VERSION_SELECT(2353, 2366, 2371, 2371), timer_p != NULL);
m8EE = *timer_p;
}
@@ -1462,7 +1537,7 @@ void daNpc_Cb1_c::evInitSetGoal(int staffIdx) {
/* 00003E74-00003E98 .text evActSetGoal__11daNpc_Cb1_cFi */
BOOL daNpc_Cb1_c::evActSetGoal(int param_1) {
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_JPN
evInitSetGoal(param_1);
#endif
@@ -1730,8 +1805,6 @@ BOOL daNpc_Cb1_c::talkNpcAction(void*) {
/* 000047B0-00004B74 .text carryNpcAction__11daNpc_Cb1_cFPv */
BOOL daNpc_Cb1_c::carryNpcAction(void*) {
/* Nonmatching - regswap */
if(m8F0 == 0) {
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
offNpcCallCommand();
@@ -1783,7 +1856,7 @@ BOOL daNpc_Cb1_c::carryNpcAction(void*) {
cLib_chaseF(&m904.z, l_HIO.field_0x7C, 1.0f);
cLib_chaseAngleS(&m8F4, 0, 0x800);
shape_angle.y += m8F4;
shape_angle.y = pPlayer->shape_angle.y + m8F4;
}
if(!fopAcM_checkCarryNow(this)) {
@@ -2076,7 +2149,7 @@ BOOL daNpc_Cb1_c::jumpNpcAction(void* param_1) {
/* 00006518-00006574 .text rescueNpcAction__11daNpc_Cb1_cFPv */
BOOL daNpc_Cb1_c::rescueNpcAction(void*) {
#if VERSION == VERSION_DEMO
#if VERSION <= VERSION_JPN
if(m8F0 == 0) {
setAnm(ANM_00);
fopDwTg_DrawQTo(&draw_tag);
@@ -2297,7 +2370,7 @@ BOOL daNpc_Cb1_c::hitPlayerAction(void*) {
setAnm(ANM_02);
}
else if(m8F0 != -1 && mAcch.ChkGroundHit()) {
m4E4 |= 1;
returnLink();
speedF = 0.0f;
}
@@ -2802,7 +2875,34 @@ BOOL daNpc_Cb1_c::init() {
}
offMusic();
}
#else
#elif VERSION == VERSION_JPN
onNpcNotChange();
if(isTypeKazeBoss() || isTypeForest() || isTypeWaterFall()) {
setNpcAction(&daNpc_Cb1_c::musicNpcAction, NULL);
home.roomNo = -1;
current.roomNo = -1;
gravity = -0.1f;
} else if(isTypeBossDie()) {
daNpc_Cb1_c::ActionFunc_t func =
dComIfGs_isStageBossEnemy(dSv_save_c::STAGE_FW) ?
&daNpc_Cb1_c::waitNpcAction :
&daNpc_Cb1_c::rescueNpcAction;
setNpcAction(func, NULL);
} else if(!isTypeEkaze() && !isTypeKaze() && shipRideCheck()) {
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAF;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAF;
} else {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1610)) {
offNpcNotChange();
}
if(isTypeEkaze()) {
onNpcCallCommand();
}
setNpcAction(&daNpc_Cb1_c::waitNpcAction, NULL);
offMusic();
}
#else // VERSION_USA or VERSION_PAL
static const char* l_eventNameTbl[] = {
"cb_rescue",
"OPTION_CHAR_END",
@@ -2832,7 +2932,7 @@ BOOL daNpc_Cb1_c::init() {
gravity = -0.1f;
}
else if(isTypeBossDie()) {
setNpcAction(dComIfGs_isStageBossEnemy(4) ? &daNpc_Cb1_c::waitNpcAction : &daNpc_Cb1_c::rescueNpcAction, NULL);
setNpcAction(dComIfGs_isStageBossEnemy(dSv_save_c::STAGE_FW) ? &daNpc_Cb1_c::waitNpcAction : &daNpc_Cb1_c::rescueNpcAction, NULL);
}
else if(!isTypeEkaze() && !isTypeKaze() && shipRideCheck()) {
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAF;
@@ -2859,7 +2959,7 @@ BOOL daNpc_Cb1_c::init() {
mWindCyl.Set(l_wind_cyl_src);
mWindCyl.SetStts(&mStts);
#if VERSION == VERSION_DEMO
#if VERSION <= VERSION_JPN
static const char* l_eventNameTbl[] = {
"cb_rescue",
"OPTION_CHAR_END",
@@ -2873,6 +2973,9 @@ BOOL daNpc_Cb1_c::init() {
}
m8E3 = -1;
#if VERSION == VERSION_JPN
m8DD = -1;
#endif
eventInfo.setXyCheckCB(&daNpc_Cb1_XyCheckCB);
eventInfo.setXyEventCB(&daNpc_Cb1_XyEventCB);
@@ -3059,7 +3162,7 @@ BOOL daNpc_Cb1_c::execute() {
f32 temp3 = 3.0f;
if(!fopAcM_checkCarryNow(this) && !isShipRide()) {
if(checkNowPosMove("Cb1") && !(m4E4 & 1)) {
if(checkNowPosMove("Cb1") && !isReturnLink()) {
f32 temp4 = current.pos.y;
fopAcM_posMoveF(this, mStts.GetCCMoveP());
m900 += temp4 - current.pos.y;
@@ -3134,7 +3237,9 @@ BOOL daNpc_Cb1_c::execute() {
if(checkNowPosMove("Cb1")) {
playAnm();
}
#endif
#if VERSION > VERSION_JPN
if(dComIfGp_getPlayer(0) == this) {
dComIfGp_setDoStatus(dActStts_BLANK_e);
dComIfGp_setAStatus(dActStts_HIDDEN_e);
@@ -3167,11 +3272,11 @@ BOOL daNpc_Cb1_c::execute() {
cLib_addCalcPosXZ(&m88C, temp2, 0.5f, temp3, 0.5f);
if(dComIfGp_getPlayer(0) == this) {
#if VERSION == VERSION_DEMO
#if VERSION <= VERSION_JPN
int r4 = dActStts_BLANK_e;
dComIfGp_setDoStatus(r4);
dComIfGp_setAStatus(dActStts_HIDDEN_e);
if(mAcch.ChkGroundHit()) {
if(mAcch.ChkGroundHit() != false) {
r4 = dActStts_RETURN_e;
}
dComIfGp_setRStatusForce(r4);
@@ -3183,25 +3288,25 @@ BOOL daNpc_Cb1_c::execute() {
fopAcM_SetStatusMap(this, 0x12);
if(m4E4 & 1) {
if(isReturnLink()) {
m8DD = 1;
}
else {
if(isNoCarryAction()) {
setPlayerAction(&daNpc_Cb1_c::carryPlayerAction, NULL);
m4E4 |= 1;
returnLink();
}
#if VERSION == VERSION_DEMO
playerAction(NULL);
if(dComIfGp_getRStatusForce() == 7 && !dComIfGp_event_runCheck() && (CPad_CHECK_TRIG_R(0) || CPad_CHECK_TRIG_START(0))) {
m4E4 |= 1;
returnLink();
} else
#else
if(!dComIfGp_event_runCheck() && dComIfGp_getRStatusForce() == 7 && !dComIfGp_event_runCheck() && (CPad_CHECK_TRIG_R(0) || CPad_CHECK_TRIG_START(0))) {
m4E4 |= 1;
returnLink();
}
playerAction(NULL);
+1 -1
View File
@@ -3319,7 +3319,7 @@ void daNpc_Ji1_c::battleSubActionNockBackInit(int param_1) {
/* 0000A5FC-0000A744 .text battleSubActionNockBack__11daNpc_Ji1_cFv */
BOOL daNpc_Ji1_c::battleSubActionNockBack() {
/* Nonmatching - load order */
/* Nonmatching - retail-only load order */
fopAc_ac_c* player = dComIfGp_getPlayer(0); // doing this in the targetAngleY call fixes load order but breaks regalloc
s16 temp = cLib_targetAngleY(&current.pos, &player->current.pos);
if(mpOrcaMorf->checkFrame(1.0f)) {
+23 -21
View File
@@ -238,14 +238,10 @@ void daObj_Ikada_c::setCollision() {
/* 00000AA4-00000DFC .text checkTgHit__13daObj_Ikada_cFv */
bool daObj_Ikada_c::checkTgHit() {
cCcD_Obj* sp64;
cXyz sp58;
cXyz sp4C;
cXyz sp40;
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->checkHammerQuake()) {
sp58 = player->getSwordTopPos();
cXyz sp58 = player->getSwordTopPos();
f32 abs = (sp58 - current.pos).absXZ();
if (abs < 1000.0f && mbIsLinkRiding) {
mLinkRideRockAmpl = 200;
@@ -255,10 +251,14 @@ bool daObj_Ikada_c::checkTgHit() {
}
mStts.Move();
cXyz sp4C;
cXyz sp40;
CcAtInfo atInfo;
if (cLib_calcTimer(&m12E4) == 0) {
cCcD_Obj* pcVar3 = mSph.GetTgHitObj();
sp4C = *mSph.GetTgHitPosP();
sp64 = mSph.GetTgHitObj();
atInfo.mpObj = mSph.GetTgHitObj();
if (pcVar3 == NULL) {
return false;
}
@@ -357,6 +357,7 @@ void daObj_Ikada_c::createWave() {
/* 000012EC-00001528 .text setWave__13daObj_Ikada_cFv */
void daObj_Ikada_c::setWave() {
/* Nonmatching */
f32 fVar2 = l_HIO.mTrackVel;
f32 fVar1 = l_HIO.mWaveVelFade;
f32 target = l_HIO.mSplashScaleMax;
@@ -445,6 +446,7 @@ void daObj_Ikada_c::incRopeCnt(int arg1, int arg2) {
void daObj_Ikada_c::setRopePos() {
static cXyz ripple_scale(0.6f, 0.6f, 0.6f);
int i;
cXyz spBC;
cXyz spB0;
cXyz spA4;
@@ -475,7 +477,7 @@ void daObj_Ikada_c::setRopePos() {
pcVar6--;
pcVar7--;
for (s32 i = m07D8 - 2; i >= 0; i--, pcVar6--, pcVar7--) {
for (i = m07D8 - 2; i >= 0; i--, pcVar6--, pcVar7--) {
*pcVar6 = pcVar6[1] + spB0;
*pcVar7 = cXyz::Zero;
}
@@ -483,7 +485,7 @@ void daObj_Ikada_c::setRopePos() {
pcVar6--;
pcVar7--;
for (s32 i = m07D8 - 2; i >= 0; i--, pcVar6--, pcVar7--) {
for (i = m07D8 - 2; i >= 0; i--, pcVar6--, pcVar7--) {
spBC = *pcVar6;
if (pcVar6->y < dLib_getWaterY(*pcVar6, mObjAcch)) {
*pcVar7 *= 0.6f;
@@ -541,7 +543,7 @@ void daObj_Ikada_c::setRopePos() {
if (fVar1 > pcVar7->y) {
cXyz* ptr = pcVar7;
for (s32 i = m07D8; i > 0; i--, pcVar7++) {
for (i = m07D8; i > 0; i--, pcVar7++) {
if (pcVar7->y <= fVar1) {
ptr = pcVar7;
}
@@ -1156,9 +1158,9 @@ bool daObj_Ikada_c::_execute() {
f32 s = scale.x;
s32 uVar5 = fopAcM_checkCullingBox(mpModel->getBaseTRMtx(), s * -1000.0f, s * -50.0f, s * -1000.0f, s * 1000.0f, s * 1000.0f, s * 1000.0f);
if (speedF <= 2.0f || uVar5 & 0xFF || fopAcM_searchPlayerDistanceXZ(this) > 18000.0f) {
mWaveRCallback.remove();
mWaveLCallback.remove();
mSplashCallBack.remove();
mWaveRCallback.end();
mWaveLCallback.end();
mSplashCallBack.end();
mTrackCallBack.stop();
} else {
setWave();
@@ -1273,18 +1275,18 @@ bool daObj_Ikada_c::_draw() {
/* 00003EE0-00003F34 .text getArg__13daObj_Ikada_cFv */
void daObj_Ikada_c::getArg() {
u32 uVar2 = fopAcM_GetParam(this);
u32 sVar1 = home.angle.x;
u32 param = fopAcM_GetParam(this);
u32 prmX = home.angle.x;
mType = uVar2 & 0xF;
mType = fopAcM_GetParamBit(param, 0, 4);
if (mType != 4) {
m0294 = (uVar2 >> 4) & 0x3F;
m0298 = (uVar2 >> 10) & 0xFF;
m02A0 = (uVar2 >> 18) & 0xFF;
m029C = (sVar1 >> 0) & 0xFF;
mPathId = (sVar1 >> 8) & 0xFF;
m0294 = fopAcM_GetParamBit(param, 4, 6);
m0298 = fopAcM_GetParamBit(param, 10, 8);
m02A0 = fopAcM_GetParamBit(param, 18, 8);
m029C = fopAcM_GetParamBit(prmX, 0, 8);
mPathId = fopAcM_GetParamBit(prmX, 8, 8);
} else {
mPathId = (uVar2 >> 0x10) & 0xFF;
mPathId = fopAcM_GetParamBit(param, 16, 8);
}
}
+75 -92
View File
@@ -249,12 +249,12 @@ static BOOL daShip_headJointCallBack1(J3DNode* node, int calcTiming) {
/* 00000628-00000AD8 .text draw__8daShip_cFv */
BOOL daShip_c::draw() {
static GXColor rope_color = {0xC8, 0x96, 0x32, 0xFF};
J3DModel* model = mpBodyAnm->getModel();
J3DModel* model_00 = mpHeadAnm->getModel();
J3DModel* bodyModel = mpBodyAnm->getModel();
J3DModel* headModel = mpHeadAnm->getModel();
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
g_env_light.setLightTevColorType(model, &tevStr);
g_env_light.setLightTevColorType(model_00, &tevStr);
g_env_light.setLightTevColorType(bodyModel, &tevStr);
g_env_light.setLightTevColorType(headModel, &tevStr);
dComIfGd_setListP1();
@@ -264,6 +264,7 @@ BOOL daShip_c::draw() {
cXyz local_5c(current.pos.x, current.pos.y + m03D8 + 5.0f, current.pos.z);
// Fakematch, causes regalloc for demo
f32 x = local_5c.x;
f32 y = local_5c.y;
f32 z = local_5c.z;
@@ -287,7 +288,7 @@ BOOL daShip_c::draw() {
dComIfGp_getAttention().Lockon() ||
daPy_getPlayerLinkActorClass()->getBodyAngleX() > -0x1000
) {
mDoExt_modelEntryDL(model);
mDoExt_modelEntryDL(bodyModel);
}
if (
@@ -296,7 +297,7 @@ BOOL daShip_c::draw() {
!dComIfGp_checkCameraAttentionStatus(0, dCamAttnStts_SUBJECT_e | dCamAttnStts_00000020_e)
) {
offStateFlg(daSFLG_HEAD_NO_DRAW_e);
mDoExt_modelEntryDL(model_00);
mDoExt_modelEntryDL(headModel);
}
else {
onStateFlg(daSFLG_HEAD_NO_DRAW_e);
@@ -319,12 +320,11 @@ BOOL daShip_c::draw() {
dComIfGd_setList();
mShadowId = dComIfGd_setShadow(mShadowId, 0, model, &current.pos, 1500.0f, 250.0f,
current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd,
&tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
mShadowId = dComIfGd_setShadow(mShadowId, 0, bodyModel, &current.pos, 1500.0f, 250.0f,
current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr);
if (mShadowId != 0) {
dComIfGd_addRealShadow(mShadowId, model_00);
dComIfGd_addRealShadow(mShadowId, headModel);
if (mPart == PART_CANNON_e) {
dComIfGd_addRealShadow(mShadowId, mpCannonModel);
}
@@ -2115,10 +2115,6 @@ BOOL daShip_c::procZevDemo_init() {
/* 00005574-00006310 .text procZevDemo__8daShip_cFv */
BOOL daShip_c::procZevDemo() {
float fVar3;
short sVar5;
short sVar15;
float fVar17;
cXyz local_7c;
cXyz local_70;
cXyz local_64;
@@ -2166,6 +2162,7 @@ BOOL daShip_c::procZevDemo() {
}
if (m0351 == DEMO_INIT_e || m0351 == DEMO_OPEN_e) {
s16 sVar15;
if (angleP) {
sVar15 = (s16)*angleP;
}
@@ -2225,14 +2222,15 @@ BOOL daShip_c::procZevDemo() {
else {
local_70 = current.pos - *posP;
fVar17 = local_70.absXZ();
f32 fVar17 = local_70.absXZ();
if (!dComIfGp_evmng_getMyFloatP(mEvtStaffId, "rad")) {
JUT_ASSERT(DEMO_SELECT(3722, 3741), 0);
}
fVar3 = *dComIfGp_evmng_getMyFloatP(mEvtStaffId, "rad");
f32 fVar3 = *dComIfGp_evmng_getMyFloatP(mEvtStaffId, "rad");
s16 sVar15;
if (fVar17 < 0.1f) {
sVar15 = 0x4000;
local_64.set(posP->x, posP->y, posP->z + fVar3);
@@ -2247,7 +2245,7 @@ BOOL daShip_c::procZevDemo() {
local_7c = local_64 - current.pos;
}
fVar17 = local_7c.absXZ();
f32 fVar17 = local_7c.absXZ();
if (fVar17 < 10.0f) {
speedF = 0.0f;
@@ -2269,6 +2267,7 @@ BOOL daShip_c::procZevDemo() {
}
else {
speedF = fVar17 * 0.2f;
f32 fVar3;
if (speedP) {
fVar3 = *speedP;
}
@@ -2281,11 +2280,11 @@ BOOL daShip_c::procZevDemo() {
}
}
if (fVar17 > 1.0f) {
sVar15 = shape_angle.y;
s16 sVar15 = shape_angle.y;
cLib_addCalcAngleS(&shape_angle.y, cM_atan2s(local_7c.x, local_7c.z), 3, 0x2000, 0x80);
current.angle.y = shape_angle.y;
sVar5 = shape_angle.y - sVar15;
s16 sVar5 = shape_angle.y - sVar15;
if (sVar5 > 0) {
sVar5 = 0x2000;
}
@@ -2335,6 +2334,7 @@ BOOL daShip_c::procZevDemo() {
fileIndex = SHIP_BCK_FN_LOOK_L;
}
f32 fVar17;
if (partP && (s32)*partP == 2) {
fVar17 = -1.0f;
}
@@ -2642,7 +2642,6 @@ BOOL daShip_c::procTornadoUp_init() {
/* 00006DE0-00006FDC .text procTornadoUp__8daShip_cFv */
BOOL daShip_c::procTornadoUp() {
int iVar1;
daTornado_c* tornadoActor = mTornadoActor;
cLib_addCalc(&current.pos.x, tornadoActor->getJointXPos(m037A), 0.5f, 80.0f, 20.0f);
@@ -2668,11 +2667,11 @@ BOOL daShip_c::procTornadoUp() {
if (m03A6 == 0 && current.pos.y > tornadoActor->current.pos.y + 5000.0f) {
m03A6 = 1;
iVar1 = (s32)cM_rndF(8.0f) + 0xC6;
if (iVar1 >= 0xCE) {
iVar1 = 0xCD;
int exitId = (s32)cM_rndF(8.0f) + 0xC6;
if (exitId >= 0xCE) {
exitId = 0xCD;
}
dStage_changeScene(iVar1, 0.0f, 0, 0xFF);
dStage_changeScene(exitId, 0.0f, 0, 0xFF);
}
return TRUE;
@@ -2977,16 +2976,16 @@ void daShip_c::setEffectData(float param_1, short param_2) {
GXColor diff;
if (checkStateFlg(daSFLG_FLY_e) && current.pos.y - 40.0f > param_1) {
mWaveR.mState = 1;
mWaveL.mState = 1;
mSplash.mState = 1;
mTrack.mState = 1;
mWaveR.stop();
mWaveL.stop();
mSplash.stop();
mTrack.stop();
}
else {
if (speedF <= 0.0f) {
mWaveR.mState = 1;
mWaveL.mState = 1;
mSplash.mState = 1;
mWaveR.stop();
mWaveL.stop();
mSplash.stop();
}
}
@@ -3153,21 +3152,9 @@ void daShip_c::incRopeCnt(int lengthChange, int minSegmentLimit) {
/* 0000882C-00009314 .text setRopePos__8daShip_cFv */
void daShip_c::setRopePos() {
/* Nonmatching - regalloc */
float fVar1;
float fVar2;
float fVar17;
cXyz* r4;
int iVar11;
short sVar14;
int sVar12;
JPABaseEmitter* emitter;
cXyz* r3;
int i;
cXyz* ropeSegments;
cXyz* currentRopeSegment;
short currentRopeSegmentIndex;
MtxP pMVar5;
cXyz spF8;
cXyz spEC;
@@ -3180,7 +3167,7 @@ void daShip_c::setRopePos() {
static Vec rope_offset = {160.0f, 0.0f, 0.0f};
static Vec water_drop_scale = {1.5f, 1.0f, 1.5f};
currentRopeSegmentIndex = mRopeCnt;
s16 currentRopeSegmentIndex = mRopeCnt;
if (currentRopeSegmentIndex == 0) {
currentRopeSegment = mRopeLine.getPos(0);
@@ -3207,7 +3194,7 @@ void daShip_c::setRopePos() {
currentRopeSegment--;
ropeSegments--;
for (int i = mRopeCnt + -2; i >= 0; i--, currentRopeSegment--, ropeSegments--) {
for (i = mRopeCnt + -2; i >= 0; i--, currentRopeSegment--, ropeSegments--) {
currentRopeSegment->set(*(currentRopeSegment + 1) + spEC);
ropeSegments->set(cXyz::Zero);
}
@@ -3216,7 +3203,7 @@ void daShip_c::setRopePos() {
currentRopeSegment--;
ropeSegments--;
for (int i = mRopeCnt + -2; i >= 0; i--, currentRopeSegment--, ropeSegments--) {
for (i = mRopeCnt + -2; i >= 0; i--, currentRopeSegment--, ropeSegments--) {
spF8 = *currentRopeSegment;
if (currentRopeSegment->y < m03F4) {
@@ -3232,7 +3219,7 @@ void daShip_c::setRopePos() {
spEC.set(*currentRopeSegment - *(currentRopeSegment + 1));
fVar17 = std::sqrtf(spEC.abs2());
f32 fVar17 = std::sqrtf(spEC.abs2());
if (fVar17 < 0.01f) {
currentRopeSegment->set(*(currentRopeSegment + 1) + l_rope_base_vec);
@@ -3244,7 +3231,7 @@ void daShip_c::setRopePos() {
*ropeSegments += (*currentRopeSegment - spF8) * 0.05f;
}
if (mRopeCnt == 20 && checkStateFlg(daSFLG_UNK10000000_e)) {
r4 = mRopeLine.getPos(0);
cXyz* r4 = mRopeLine.getPos(0);
mDoMtx_multVecZero(mpSalvageArmModel->getAnmMtx(1), &spE0);
spE0 -= *r4;
@@ -3262,7 +3249,7 @@ void daShip_c::setRopePos() {
f2 * cM_scos(shape_angle.y)
);
for (int i = 0; i < 20; i++, currentRopeSegment++) {
for (i = 0; i < 20; i++, currentRopeSegment++) {
*currentRopeSegment += spD0;
spD0 *= 0.95f;
}
@@ -3274,24 +3261,24 @@ void daShip_c::setRopePos() {
currentRopeSegment = mRopeLine.getPos(0);
s16 sVar14;
s16 sVar12;
if (mRopeCnt > 2) {
spC8 = *currentRopeSegment - *(currentRopeSegment + 1);
sVar14 = 0;
sVar12 = 0;
}
else {
pMVar5 = mpSalvageArmModel->getAnmMtx(1);
spC8.set(
currentRopeSegment->x - pMVar5[0][3],
currentRopeSegment->y - pMVar5[1][3],
currentRopeSegment->z - pMVar5[2][3]
currentRopeSegment->x - mpSalvageArmModel->getAnmMtx(1)[0][3],
currentRopeSegment->y - mpSalvageArmModel->getAnmMtx(1)[1][3],
currentRopeSegment->z - mpSalvageArmModel->getAnmMtx(1)[2][3]
);
sVar14 = 0x7fff;
iVar11 = 0x8000 - (m0398 * 2);
sVar12 = iVar11 - (0x8000 - mCraneBaseAngle) * ((float)m0398 / (float)mCraneBaseAngle);
sVar12 = (0x8000 - (m0398 * 2)) - (0x8000 - mCraneBaseAngle) * ((float)m0398 / (float)mCraneBaseAngle);
}
fVar17 = mpLinkModel->getBaseTRMtx()[1][3];
f32 fVar17 = mpLinkModel->getBaseTRMtx()[1][3];
f32 sin = cM_ssin(shape_angle.y);
f32 cos = cM_scos(shape_angle.y);
@@ -3300,11 +3287,11 @@ void daShip_c::setRopePos() {
spBC.z = sin * spC8.x + cos * spC8.z;
mDoMtx_trans(mDoMtx_stack_c::get(), currentRopeSegment->x, currentRopeSegment->y, currentRopeSegment->z);
fVar1 = std::sqrtf(spBC.y * spBC.y + spBC.z * spBC.z);
s16 z = sVar12 + cM_atan2s(-spBC.x, fVar1);
s16 y = shape_angle.y;
s16 x = sVar14 + cM_atan2s(spBC.z, spBC.y);
mDoMtx_stack_c::ZXYrotM(x, y, z);
mDoMtx_stack_c::ZXYrotM(
sVar14 + cM_atan2s(spBC.z, spBC.y),
shape_angle.y,
sVar12 + cM_atan2s(-spBC.x, std::sqrtf(spBC.y * spBC.y + spBC.z * spBC.z))
);
mDoMtx_stack_c::XrotM(-0x4000);
if (m0392 == SHIP_BCK_FN_MAST_ON2) {
@@ -3315,19 +3302,20 @@ void daShip_c::setRopePos() {
mpLinkModel->setBaseTRMtx(mDoMtx_stack_c::get());
fVar1 = currentRopeSegment->y;
f32 fVar1 = currentRopeSegment->y;
getMaxWaterY(currentRopeSegment);
fVar2 = currentRopeSegment->y;
f32 fVar2 = currentRopeSegment->y;
currentRopeSegment->y = fVar1;
if (fVar2 > currentRopeSegment->y) {
ropeSegments = currentRopeSegment;
cXyz* r3;
r3 = currentRopeSegment;
for (int i = 0; i < mRopeCnt; i++, ropeSegments++) {
for (i = 0; i < mRopeCnt; i++, ropeSegments++) {
if (ropeSegments->y <= fVar2) {
r3 = ropeSegments;
}
@@ -3363,7 +3351,7 @@ void daShip_c::setRopePos() {
if (m19AC.getEmitter() == NULL) {
ropeSegments = mRopeLine.getPos(0);
emitter = dComIfGp_particle_setP1(dPa_name::ID_IT_JN_LK_NURE_POTA00, ropeSegments, NULL, NULL, 0xFF, &m19AC);
JPABaseEmitter* emitter = dComIfGp_particle_setP1(dPa_name::ID_IT_JN_LK_NURE_POTA00, ropeSegments, NULL, NULL, 0xFF, &m19AC);
if(emitter) {
emitter->setGlobalParticleScale(1.5f, 1.5f);
@@ -3377,7 +3365,7 @@ void daShip_c::setRopePos() {
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
if (m19C0.getEmitter() == NULL) {
emitter = dComIfGp_particle_setShipTail(dPa_name::ID_AK_JN_HAMON00, &m1074, NULL, &ripple_scale, 0xFF, &m19C0);
JPABaseEmitter* emitter = dComIfGp_particle_setShipTail(dPa_name::ID_AK_JN_HAMON00, &m1074, NULL, &ripple_scale, 0xFF, &m19C0);
if (emitter) {
emitter->setVolumeSize(30);
@@ -3677,7 +3665,7 @@ BOOL daShip_c::execute() {
procCraneUp_init();
}
short sVar26;
s16 sVar26;
sVar26 = m0366;
if (mAnmTransform) {
@@ -3717,7 +3705,7 @@ BOOL daShip_c::execute() {
!dComIfGp_event_runCheck()
) {
if (mTornadoActor) {
short sVar16;
s16 sVar16;
sVar16 = shape_angle.y;
cLib_addCalcAngleS(&shape_angle.y, m040C * 10430.378f + 20480.0f, 5, 0x2000, 0x200);
setControllAngle(getAimControllAngle(sVar16));
@@ -3769,7 +3757,7 @@ BOOL daShip_c::execute() {
cLib_chaseS(&m03B8, 0x4E8, 0x80);
}
float fVar4;
f32 fVar4;
if (mCurMode != 12 && mCurMode != 15) {
if (mCurMode != 7 && mCurMode != MODE_CRANE_UP_e) {
if (
@@ -3868,8 +3856,7 @@ BOOL daShip_c::execute() {
}
if (r23) {
cXyz sp114(current.pos - old.pos);
f32 dVar27;
dVar27 = sp114.absXZ();
f32 dVar27 = sp114.absXZ();
if (dVar27 > 1.0f) {
prev_speedF = speedF / dVar27;
current.pos.x = old.pos.x + sp114.x * prev_speedF;
@@ -3946,8 +3933,8 @@ BOOL daShip_c::execute() {
f32 diff = m03F4 - current.pos.y;
mTrack.mBaseY = m03F4;
mTrack.mMinY = m03F8;
mTrack.setWaterY(m03F4);
mTrack.setWaterFlatY(m03F8);
s16 sp12;
s16 sp10;
@@ -4092,11 +4079,7 @@ BOOL daShip_c::execute() {
grid->m2200 = 1.0f - (spD8.abs() / 265.0f); // No idea why this is generating an extra lwz instruction for loading mpGrid when the instructions above don't
if (mTornadoActor) {
#if VERSION == VERSION_DEMO
mpGrid->force_calc_wind_rel_angle(REG4_S(5));
#else
mpGrid->force_calc_wind_rel_angle(0x3000);
#endif
mpGrid->force_calc_wind_rel_angle(DEMO_SELECT(REG4_S(5), 0x3000));
}
}
@@ -4106,10 +4089,10 @@ BOOL daShip_c::execute() {
iVar6 = abs(iVar23);
iVar23 *= m0366;
if (iVar23 > 0 && (float)iVar6 > 420.00003f) {
if (iVar23 > 0 && (f32)iVar6 > 420.00003f) {
seStart(JA_SE_LK_SHIP_RUDDER_OUT, &mTillerTopPos);
}
else if (iVar23 < 0 && (float)iVar6 > 525.0f) {
else if (iVar23 < 0 && (f32)iVar6 > 525.0f) {
seStart(JA_SE_LK_SHIP_RUDDER_OUT, &mTillerTopPos);
}
@@ -4125,7 +4108,7 @@ BOOL daShip_c::execute() {
}
// This should probably use the mDoMtx_multVecZero inline, but it's not getting inlined
// mDoMtx_multVecZero(mModel2->getAnmMtx(16), &eyePos);
// mDoMtx_multVecZero(model2->getAnmMtx(16), &eyePos);
MtxP jnt_mtx;
jnt_mtx = model2->getAnmMtx(16);
eyePos.x = jnt_mtx[0][3];
@@ -4318,16 +4301,16 @@ BOOL daShip_c::execute() {
mFwdVel += (m1044.x * cM_ssin(current.angle.y) + m1044.z * cM_scos(current.angle.y));
if (std::fabsf(mFwdVel) <= 0.01f || prev_fwdvel * mFwdVel < 0.0f || mFwdVel * speedF < 0.0f) {
mWaveL.mState = 1;
mWaveR.mState = 1;
mSplash.mState = 1;
mTrack.mState = 1;
mWaveL.stop();
mWaveR.stop();
mSplash.stop();
mTrack.stop();
}
setEffectData(m03F4, sp10);
float sin = cM_ssin(shape_angle.y);
float cos = cM_scos(shape_angle.y);
f32 sin = cM_ssin(shape_angle.y);
f32 cos = cM_scos(shape_angle.y);
dCcD_Cyl* cyl = mCyl;
@@ -4771,9 +4754,9 @@ cPhs_State daShip_c::create() {
dComIfGp_setShipActor(this);
mTrack.mMinVel = 3.0f;
mWaveL.mMaxParticleVelocity = 40.0f;
mWaveR.mMaxParticleVelocity = 40.0f;
mTrack.setLimitSpeed(3.0f);
mWaveL.setMaxSpeed(40.0f);
mWaveR.setMaxSpeed(40.0f);
m19C0.mRate = 0.0f;
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_SEA_e) {
+7 -9
View File
@@ -89,7 +89,7 @@ void Act_c::prmZ_init() {
if (m656) {
return;
}
m652 = home.angle.z;
mPrmZ = home.angle.z;
m656 = true;
home.angle.z = 0;
current.angle.z = 0;
@@ -163,7 +163,7 @@ BOOL Act_c::Create() {
m6A9 = 0;
m65A = 2;
mode_wait_init();
m650 = dComIfGp_evmng_getEventIdx(NULL, m652);
m650 = dComIfGp_evmng_getEventIdx(NULL, prmZ_get_evId());
demo_non_init();
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
init_mtx();
@@ -622,7 +622,7 @@ bool Act_c::mode_proc_call() {
}
if (m648 == 3) {
if (prmZ_get_evId() == 0 && m65C.isEnd()) {
if (m64C == 0 && m65C.isEnd()) {
BOOL tmp;
if (m6A8) {
tmp = m688.isEnd();
@@ -650,9 +650,8 @@ void Act_c::demo_non() {
/* 000021AC-00002214 .text demo_req_init__Q28daStone25Act_cFv */
void Act_c::demo_req_init() {
if (prmZ_get_evId() == 0) {
u8 evno = m652;
fopAcM_orderOtherEventId(this, m650, evno);
if (m64C == 0) {
fopAcM_orderOtherEventId(this, m650, prmZ_get_evId());
eventInfo.onCondition(dEvtCmd_INDEMO_e);
m64C = 1;
}
@@ -664,8 +663,7 @@ void Act_c::demo_req() {
if (eventInfo.checkCommandDemoAccrpt()) {
demo_run_init();
} else {
u8 evno = m652;
fopAcM_orderOtherEventId(this, m650, evno);
fopAcM_orderOtherEventId(this, m650, prmZ_get_evId());
eventInfo.onCondition(dEvtCmd_INDEMO_e);
}
} else {
@@ -694,7 +692,7 @@ void Act_c::demo_proc_call() {
&Act_c::demo_req,
&Act_c::demo_run,
};
(this->*demo_proc[prmZ_get_evId()])();
(this->*demo_proc[m64C])();
}
/* 000023BC-00002574 .text Execute__Q28daStone25Act_cFPPA3_A4_f */
+1 -1
View File
@@ -394,7 +394,7 @@ void daWarphr_c::set_end_anim() {
/* 000012F8-0000134C .text get_return_count__10daWarphr_cFv */
s32 daWarphr_c::get_return_count() {
if (!dComIfGs_isStageBossEnemy(2)) {
if (!dComIfGs_isStageBossEnemy(dSv_save_c::STAGE_FF)) {
return 0;
}