mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-22 22:44:17 -04:00
Misc matches (#1000)
This commit is contained in:
+2
-2
@@ -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"),
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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(¤t.pos, &player->current.pos);
|
||||
if(mpOrcaMorf->checkFrame(1.0f)) {
|
||||
|
||||
@@ -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
@@ -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, ¤t.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, ¤t.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, ¤t.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(¤t.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) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user