d_a_alink cleanup / debug work (#3045)

* start d_a_alink debug cleanup

* d_a_alink_damage debug

* d_a_alink_guard debug

* d_a_alink_bow debug

* d_a_alink_boom debug

* d_a_alink_copyrod debug

* d_a_alink_hvyboots debug

* d_a_alink_grab debug

* d_a_alink_sumou debug

* d_a_alink_horse debug

* d_a_alink_canoe debug

* d_a_alink_crawl / d_a_alink_hang debug

* d_a_alink_swim debug

* d_a_alink_hook / d_a_alink_iceleaf debug

* d_a_alink_bottle debug

* d_a_alink_whistle / d_a_alink_kandelaar / d_a_alink_ironball debug

* d_a_alink_demo debug

* d_a_alink_effect debug

* d_a_alink_wolf debug

* d_a_alink debug / cleanup

* cleanup button status enums
This commit is contained in:
TakaRikka
2026-01-17 05:44:37 -08:00
committed by GitHub
parent 43eac24e2e
commit ccdb3fbd2a
85 changed files with 11833 additions and 10199 deletions
+1 -1
View File
@@ -221,7 +221,7 @@ public:
u32 MskRPrm(u32 mask) const { return mRPrm & mask; }
void OnSPrmBit(u32 flag) { mSPrm |= flag; }
void OffSPrmBit(u32 flag) { mSPrm &= ~flag; }
u32 ChkSPrm(u32 prm) const { return MskSPrm(prm); }
u32 ChkSPrm(u32 prm) const { return MskSPrm(prm) != 0; }
void Set(cCcD_SrcObjCommonBase const& src) { mSPrm = src.mSPrm; }
};
+2 -1
View File
@@ -58,6 +58,7 @@ public:
void setMarkState(u8 state) { mMarkState = state; }
static Z2CreatureLink* mLinkPtr;
static Z2CreatureLink* getLink() { return mLinkPtr; }
friend class Z2LinkSoundStarter;
friend class Z2RideSoundStarter;
@@ -96,7 +97,7 @@ private:
}; // Size: 0xD0
inline Z2CreatureLink* Z2GetLink() {
return Z2CreatureLink::mLinkPtr;
return Z2CreatureLink::getLink();
}
class Z2CreatureRide;
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -79,8 +79,8 @@ public:
MtxP getMtx() { return mpModelMorf->getModel()->getAnmMtx(15); }
void onTarget() { mTarget = true; }
bool isBack() { return arg0; }
u8 onTarget() { return mTarget = true; }
u8 isBack() { return arg0; }
private:
/* 0x05AC */ request_of_phase_process_class mPhase;
+1 -1
View File
@@ -116,7 +116,7 @@ public:
void offStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 &= ~flag; }
u32 getReturnFlg() const { return checkStateFlg0(FLG0_1); }
void onWindCatch() { onStateFlg0(WIND_CATCH); }
bool checkForceDelete() const { return m_forceDelete; }
u8 checkForceDelete() const { return m_forceDelete; }
void onForceDelete() { m_forceDelete = true; }
bool checkCharge() const { return true; }
void setThrow() { fopAcM_SetParam(this, 1); }
+1 -1
View File
@@ -34,7 +34,7 @@ public:
J3DModel* getModel() { return mpModel; }
MtxP getModelMtx() { return mpModel->getBaseTRMtx(); }
bool checkTandem() { return fopAcM_GetParam(this) == 2; }
bool checkJumpRideFlg() { return mJumpRideFlg; }
u8 checkJumpRideFlg() const { return mJumpRideFlg; }
void incShapeOffsetY(f32 offset) { mShapeOffsetY += offset; }
void incShapeAngleZ(s16 incZ) { shape_angle.z += incZ; }
void onRodID(fpc_ProcID i_rodID) { mRodID = i_rodID; }
+10 -10
View File
@@ -194,16 +194,16 @@ public:
daCow_c* getCowP() { return mCowP; }
// cLib_onBit<u16>(mFlags, (mask))
void setCrazyBeforeCatch() { mFlags |= Flag_CrazyBeforeCatch; }
void setCrazyCatch() { mFlags |= Flag_CrazyCatch; }
void setCrazyDash() { mFlags |= Flag_CrazyDash; }
void setCrazyThrowLeft() { mFlags |= Flag_CrazyThrowLeft; }
void setCrazyThrowRight() { mFlags |= Flag_CrazyThrowRight; }
void setCrazyReady() { mFlags |= Flag_CrazyReady; }
void setCrazyGo() { mFlags |= Flag_CrazyGo; }
void setNaderu() { mFlags |= Flag_Naderu; }
void setNaderuFinish() { mFlags |= Flag_NaderuFinish; }
void setCrazyReadyDrawOn() { mFlags |= Flag_CrazyReadyDrawOn; }
void setCrazyBeforeCatch() { mFlags |= (u16)Flag_CrazyBeforeCatch; }
void setCrazyCatch() { mFlags |= (u16)Flag_CrazyCatch; }
void setCrazyDash() { mFlags |= (u16)Flag_CrazyDash; }
void setCrazyThrowLeft() { mFlags |= (u16)Flag_CrazyThrowLeft; }
void setCrazyThrowRight() { mFlags |= (u16)Flag_CrazyThrowRight; }
void setCrazyReady() { mFlags |= (u16)Flag_CrazyReady; }
void setCrazyGo() { mFlags |= (u16)Flag_CrazyGo; }
void setNaderu() { mFlags |= (u16)Flag_Naderu; }
void setNaderuFinish() { mFlags |= (u16)Flag_NaderuFinish; }
void setCrazyReadyDrawOn() { mFlags |= (u16)Flag_CrazyReadyDrawOn; }
u8 getCowIn() { return mCowIn; }
u8 getNoNearCheckTimer() { return mNoNearCheckTimer; }
+1 -2
View File
@@ -152,8 +152,7 @@ public:
BOOL speakTo() {
if (mType == 4) {
if (current.pos.absXZ(daPy_getPlayerActorClass()->current.pos) < 1100.0f && strlen(mpEvtData[5].eventName) != 0) {
u32 len = strlen(mpArcNames[mpEvtData[5].num]);
if (len != 0) {
if (strlen(mpArcNames[mpEvtData[5].num]) != 0) {
eventInfo.setArchiveName(mpArcNames[mpEvtData[5].num]);
dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName());
}
+2
View File
@@ -217,6 +217,8 @@ public:
s8 getActionMode() { return mActionMode; }
void setTalkFlag(u8 i_flag) { field_0x15bd = i_flag; }
bool checkBattleMode() { return true; }
int create();
int CreateHeap();
+1 -2
View File
@@ -146,8 +146,7 @@ public:
}
if (strlen(mpEvtData[var_r29].eventName) != 0) {
u32 len = strlen(mpArcNames[mpEvtData[var_r29].num]);
if (len != 0) {
if (strlen(mpArcNames[mpEvtData[var_r29].num]) != 0) {
eventInfo.setArchiveName(mpArcNames[mpEvtData[var_r29].num]);
dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName());
}
+5 -5
View File
@@ -228,11 +228,11 @@ public:
cXyz getAttentionPos(fopAc_ac_c*);
int standWaitJump(void*);
bool checkNpcObjGra() { return mMode == 1; }
void setCrazyDash() { field_0xa48 |= 4; }
void setCrazyCatch() { field_0xa48 |= 2; }
void setCrazyThrowLeft() { field_0xa48 |= 8; }
void setCrazyThrowRight() { field_0xa48 |= 0x10; }
u8 checkNpcObjGra() { return mMode == 1; }
void setCrazyDash() { field_0xa48 |= (u16)4; }
void setCrazyCatch() { field_0xa48 |= (u16)2; }
void setCrazyThrowLeft() { field_0xa48 |= (u16)8; }
void setCrazyThrowRight() { field_0xa48 |= (u16)0x10; }
static MotionFunc mBaseMotionList[22];
static MotionFunc mFaceMotionList[14];
+14 -25
View File
@@ -229,45 +229,34 @@ public:
}
u8 getType() {
int prm = fopAcM_GetParam(this) >> 0x1C;
int prm = (fopAcM_GetParam(this) & 0xF0000000) >> 28;
u8 type;
switch (argument) {
case 0:
switch (prm) {
case 1:
type = 2;
break;
return 2;
case 2:
type = 4;
break;
return 4;
case 3:
type = 6;
break;
return 6;
default:
type = 0;
break;
return 0;
}
break;
case 1:
switch (prm) {
case 1:
type = 3;
break;
return 3;
case 2:
type = 5;
break;
return 5;
default:
type = 1;
break;
return 1;
}
break;
default:
type = 0;
break;
return 0;
}
return type;
}
u8 getBitSW() { return fopAcM_GetParam(this) & 0xff; }
@@ -304,11 +293,11 @@ public:
/* 0x1124 */ daNpcT_Path_c mPath;
/* 0x114C */ cXyz mCXyzJump;
/* 0x1158 */ int mLatencyTime;
/* 0x115C */ float mJumpHeight;
/* 0x1160 */ float mJumpSpeed;
/* 0x1164 */ float mColsetBlend;
/* 0x1168 */ float mGoalStatueTurnSpeed;
/* 0x116C */ float mGoalStatueAngle;
/* 0x115C */ f32 mJumpHeight;
/* 0x1160 */ f32 mJumpSpeed;
/* 0x1164 */ f32 mColsetBlend;
/* 0x1168 */ f32 mGoalStatueTurnSpeed;
/* 0x116C */ f32 mGoalStatueAngle;
/* 0x1170 */ s16 mPlayerDirection;
/* 0x1172 */ u8 mReset;
/* 0x1173 */ u8 mSetWolfHowling;
+2 -1
View File
@@ -65,7 +65,7 @@ public:
cXyz getHangPos() { return mHangPos; }
void setHangPlayer() { mHangPlayer = 1; }
u8 getType() { return mType; }
int getType() { return mType; }
u8 getType_private() { return fopAcM_GetParamBit(this, 28, 4); }
u8 checkType() { return fopAcM_GetParamBit(this, 25, 1); }
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
@@ -76,6 +76,7 @@ public:
void clrFlag() { mFlags = 0; }
void onFlag(u16 flag) { mFlags |= flag; }
u16 checkFlag(u16 flag) { return mFlags & flag; }
s16 getAngleY() { return shape_angle.y; }
private:
/* 0x5B0 */ request_of_phase_process_class mPhase;
+10 -6
View File
@@ -37,21 +37,25 @@ public:
cXyz& getJumpAimPos() { return eyePos; }
cXyz& getTopPos() { return mTopPos; }
cXyz& getRoofPos() { return mRoofPos; }
f32 getPullLength() { return mPullLength; }
f32 getPullLength() const { return mPullLength; }
void setPullLength(f32 i_length) { mPullLength = i_length; }
f32 getInitOutLength() { return mInitOutLength; }
f32 getInitOutLength() const { return mInitOutLength; }
f32 getRealRoofY() { return mRealRoofY; }
f32 getMoveDisRate() { return mPullLength * 0.01f; }
f32 getLastOffset() { return 6.0f; }
f32 getDownOffset() { return 100.0f; }
f32 getSwitchOffset() { return 94.0f; }
static f32 getLastOffset() { return 6.0f; }
static f32 getDownOffset() { return 100.0f; }
static f32 getSwitchOffset() { return 94.0f; }
u8 getSwitchNum() { return mSw; }
void onRide() { mRide = true; }
void offRide() { mRide = false; }
bool checkRideFlg() { return mRide; }
void onEndFlg() { mEnd = true; }
bool getEndFlg() { return mEnd; }
void onNowSwitchFlg() { mDown = mNowSwitch = true; }
void onNowSwitchFlg() {
mNowSwitch = true;
mDown = true;
}
private:
/* 0x568 */ request_of_phase_process_class mPhaseReq;
+1 -1
View File
@@ -31,7 +31,7 @@ public:
u8 getGoldWolfIdx();
s8 getTuneId() { return fopAcM_GetParamBit(this, 4, 4); }
int getNextSceneId() { return fopAcM_GetParamBit(this, 0, 4); }
s8 getNextSceneId() { return fopAcM_GetParamBit(this, 0, 4); }
u32 getSwBit1() { return home.angle.x & 0xff; }
u32 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); }
u32 getDelEveFlgId() { return fopAcM_GetParamBit(this, 0x10, 0x10); }
+4 -1
View File
@@ -82,7 +82,10 @@ public:
const attributes* attr() const { return &M_attr; }
int getType() { return argument & 0x7F; }
u8 getPathID() { return fopAcM_GetParam(this); }
bool isPlayerCorrect() { return (s8)(u8)(fopAcM_GetParam(this) >> 8) > 0; }
bool isPlayerCorrect() {
s8 var_r31 = (fopAcM_GetParam(this) >> 8) & 0xFF;
return var_r31 > 0;
}
private:
/* 0x568 */ J3DModel* mpActiveModel;
+253 -257
View File
@@ -14,28 +14,27 @@ public:
virtual ~daPy_sightPacket_c() {}
void setSight();
void setSightImage(ResTIMG*);
void setSightImage(ResTIMG* i_img);
bool getDrawFlg() { return mDrawFlag; }
u8 getDrawFlg() { return mDrawFlag; }
void onDrawFlg() { mDrawFlag = true; }
void offDrawFlg() { mDrawFlag = false; }
void setPos(const cXyz* i_pos) { mPos = *i_pos; }
cXyz* getPosP() { return &mPos; }
/* 0x04 */ bool mDrawFlag;
/* 0x05 */ u8 field_0x5[3];
/* 0x04 */ u8 mDrawFlag;
/* 0x08 */ cXyz mPos;
/* 0x14 */ Mtx field_0x14;
/* 0x14 */ Mtx mProjMtx;
/* 0x44 */ ResTIMG* mpImg;
/* 0x48 */ u8* mpData;
};
class daPy_boomerangMove_c {
public:
void initOffset(cXyz const*);
void initOffset(cXyz const* xyz, dCcD_GObjInf const*) { initOffset(xyz); }
int posMove(cXyz*, s16*, fopAc_ac_c*, s16);
void bgCheckAfterOffset(cXyz const*);
void initOffset(const cXyz* i_pos);
void initOffset(const cXyz* i_pos, const dCcD_GObjInf*) { initOffset(i_pos); }
int posMove(cXyz* o_pos, s16* o_rotY, fopAc_ac_c* i_objActor, s16 i_rotStep);
void bgCheckAfterOffset(const cXyz* i_pos);
static void initDropAngleY() { m_dropAngleY = 0x4000; }
static void offEventKeepFlg() { m_eventKeepFlg = 0; }
@@ -47,8 +46,8 @@ public:
private:
/* 0x0 */ u8 field_0x0;
/* 0x2 */ s16 field_0x2;
/* 0x4 */ f32 field_0x4;
/* 0x8 */ f32 field_0x8;
/* 0x4 */ f32 m_offsetY;
/* 0x8 */ f32 m_offsetXZ;
}; // Size: 0xC
class daPy_anmHeap_c {
@@ -61,24 +60,24 @@ public:
HEAP_TYPE_5,
};
daPy_anmHeap_c(u32 param_0 = 0);
daPy_anmHeap_c(u32 i_bufferSize = 0);
~daPy_anmHeap_c();
void initData();
void* mallocBuffer();
void createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE);
void* loadData(u16);
void* loadDataIdx(u16);
void* loadDataPriIdx(u16);
void* loadDataDemoRID(u16, u16);
void createHeap(daAlinkHEAP_TYPE i_heapType);
void* loadData(u16 i_resId);
void* loadDataIdx(u16 i_resId);
void* loadDataPriIdx(u16 i_resId);
void* loadDataDemoRID(u16 i_resID, u16 i_arcNo);
JKRHeap* setAnimeHeap();
u16 getIdx() const { return mIdx; }
void resetIdx() { mIdx = 0xffff; }
void resetPriIdx() { mPriIdx = 0xffff; }
void resetArcNo() { mArcNo = 0xffff; }
void resetIdx() { mIdx = 0xFFFF; }
void resetPriIdx() { mPriIdx = 0xFFFF; }
void resetArcNo() { mArcNo = 0xFFFF; }
bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; }
void setBufferSize(u32 size) { mBufferSize = size; }
void setBuffer(u8* buf) { mBuffer = buf; }
void setBufferSize(u32 i_size) { mBufferSize = i_size; }
void setBuffer(u8* i_buffer) { mBuffer = i_buffer; }
u32 getBufferSize() { return mBufferSize; }
u8* getBuffer() { return mBuffer; }
bool checkNoSetIdx() const { return mIdx == 0xFFFF; }
@@ -86,11 +85,9 @@ public:
u16 getArcNo() const { return mArcNo; }
void setIdx(u16 i_idx) { mIdx = i_idx; }
private:
/* 0x00 */ u16 mIdx;
/* 0x02 */ u16 mPriIdx;
/* 0x04 */ u16 mArcNo;
/* 0x06 */ u16 field_0x06;
/* 0x08 */ u32 mBufferSize;
/* 0x0C */ u8* mBuffer;
/* 0x10 */ JKRSolidHeap* mAnimeHeap;
@@ -101,11 +98,11 @@ public:
daPy_actorKeep_c() { clearData(); }
void setActor();
void setData(fopAc_ac_c*);
void setData(fopAc_ac_c* i_actor);
void clearData();
fpc_ProcID getID() const { return mID; }
void setID(fpc_ProcID id) { mID = id; }
void setID(fpc_ProcID i_id) { mID = i_id; }
fopAc_ac_c* getActor() const { return mActor; }
fopAc_ac_c* getActorConst() const { return mActor; }
@@ -120,10 +117,10 @@ public:
daPy_frameCtrl_c() {}
bool checkAnmEnd();
void updateFrame();
void setFrameCtrl(u8, short, short, f32, f32);
void setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, f32 i_frame);
u16 getEndFlg() { return mEndFlg; }
u16 getNowSetFlg() { return mNowSetFlg; }
u16 getEndFlg() const { return mEndFlg; }
u16 getNowSetFlg() const { return mNowSetFlg; }
void onEndFlg() { mEndFlg = 1; }
void onNowSetFlg() { mNowSetFlg = 1; }
void offNowSetFlg() { mNowSetFlg = 0; }
@@ -300,8 +297,7 @@ class daPy_py_c : public fopAc_ac_c {
public:
/* 0x0568 */ u8 mCutType;
/* 0x0569 */ u8 mComboCutCount;
/* 0x056A */ u8 mSpecialMode; // maybe needs better name
/* 0x056B */ u8 field_0x56b;
/* 0x056A */ u8 mMode;
/* 0x056C */ s16 mDamageTimer;
/* 0x056E */ u16 mSwordUpTimer;
/* 0x0570 */ u32 mNoResetFlg0;
@@ -313,8 +309,8 @@ public:
/* 0x0588 */ u32 mEndResetFlg0;
/* 0x058C */ u32 mEndResetFlg1;
/* 0x0590 */ u32 mEndResetFlg2;
/* 0x0594 */ f32 field_0x594;
/* 0x0598 */ f32 field_0x598;
/* 0x0594 */ f32 mMaxSpeed;
/* 0x0598 */ f32 mHeight;
/* 0x059C */ csXyz mBodyAngle;
/* 0x05A4 */ cXyz mHeadTopPos;
/* 0x05B0 */ cXyz mItemPos;
@@ -323,23 +319,23 @@ public:
/* 0x05D4 */ cXyz mRightHandPos;
/* 0x05E0 */ cXyz mLeftFootPos;
/* 0x05EC */ cXyz mRightFootPos;
/* 0x05F8 */ cXyz field_0x5f8;
/* 0x05F8 */ cXyz mViewerCurrentPos;
/* 0x0604 */ daPy_demo_c mDemo;
public:
enum daPy_FLG0 {
FLG0_UNK_40000000 = 0x40000000,
FLG0_HEAVY_STATE = 0x40000000,
FLG0_EQUIP_HVY_BOOTS = 0x2000000,
FLG0_PLAYER_NO_DRAW = 0x8000000,
FLG0_UNK_10000000 = 0x10000000,
FLG0_UNK_1000000 = 0x1000000,
FLG0_UNDERWATER = 0x800000,
FLG0_WATER_IN_MOVE = 0x800000,
FLG0_UNK_400000 = 0x400000,
FLG0_UNK_200000 = 0x200000,
FLG0_GORON_UP_STOP_CANCEL = 0x200000,
FLG0_UNK_100000 = 0x100000,
FLG0_UNK_80000 = 0x80000,
FLG0_FAST_SWORD_CUT = 0x80000,
FLG0_UNK_40000 = 0x40000,
FLG0_DK_CAUGHT = 0x20000,
FLG0_DK_CAUGHT2 = 0x20000,
FLG0_UNK_10000 = 0x10000,
FLG0_UNK_8000 = 0x8000,
FLG0_UNK_4000 = 0x4000,
@@ -349,24 +345,20 @@ public:
FLG0_UNK_400 = 0x400,
FLG0_SWIM_UP = 0x100,
FLG0_UNK_80 = 0x80,
FLG0_UNK_40 = 0x40,
FLG0_CUT_AT_FLG = 0x40,
FLG0_UNK_20 = 0x20,
FLG0_UNK_10 = 0x10,
FLG0_UNK_8 = 0x8,
FLG0_MIDNA_RIDE = 4,
FLG0_UNK_2 = 2,
FLG0_HVY_STATE = FLG0_UNK_40000000 | FLG0_EQUIP_HVY_BOOTS | FLG0_DK_CAUGHT,
FLG0_UNK_14000 = 0x14000,
FLG0_UNK_10400 = 0x10400,
FLG0_UNK_18 = FLG0_UNK_10 | FLG0_UNK_8,
};
enum daPy_FLG1 {
FLG1_UNK_80000000 = 0x80000000,
FLG1_ICE_FREEZE = 0x40000000,
FLG1_FREEZE_DAMAGE = 0x40000000,
FLG1_UNK_20000000 = 0x20000000,
FLG1_UNK_10000000 = 0x10000000,
FLG1_UNK_8000000 = 0x8000000,
FLG1_UNK_4000000 = 0x4000000,
FLG1_IS_WOLF = 0x2000000,
FLG1_UNK_1000000 = 0x1000000,
@@ -378,7 +370,7 @@ public:
FLG1_UNK_40000 = 0x40000,
FLG1_UNK_20000 = 0x20000,
FLG1_UNK_10000 = 0x10000,
FLG1_UNK_8000 = 0x8000,
FLG1_FISHING_ROD_CASTING_END = 0x8000,
FLG1_THROW_DAMAGE = 0x4000,
FLG1_UNK_2000 = 0x2000,
FLG1_UNK_1000 = 0x1000,
@@ -393,22 +385,19 @@ public:
FLG1_UNK_4 = 4,
FLG1_UNK_2 = 2,
FLG1_DK_CAUGHT = 1,
FLG1_UNK_1800 = 0x1800,
FLG1_UNK_10100000 = FLG1_UNK_10000000 | FLG1_UNK_100000,
};
enum daPy_FLG2 {
FLG2_HORSE_ZELDA = 0x40000000,
FLG2_UNK_20000000 = 0x20000000,
FLG2_UNK_10000000 = 0x10000000,
FLG2_FISHING_CAST_WAIT = 0x20000000,
FLG2_KANDELAAR_LIGHT_OFF = 0x10000000,
FLG2_UNK_4080000 = 0x4080000,
FLG2_UNK_4000000 = 0x4000000,
FLG2_UNK_2080000 = 0x2080000,
FLG2_UNK_2000000 = 0x2000000,
FLG2_UNK_8000000 = 0x8000000,
FLG2_UNK_1000000 = 0x1000000,
FLG2_BOAR_SINGLE_BATTLE = 0x800000,
FLG2_BOAR_SINGLE_BATTLE_2ND = 0x1000000,
FLG2_BOAR_SINGLE_BATTLE_1ST = 0x800000,
FLG2_STATUS_WINDOW_DRAW = 0x400000,
FLG2_UNK_280000 = 0x280000,
FLG2_UNK_200000 = 0x200000,
@@ -417,12 +406,12 @@ public:
FLG2_FORCE_GAMEOVER = 0x40000,
FLG2_UNK_20000 = 0x20000,
FLG2_WOLF_DASH_AUTO_JUMP = 0x10000,
FLG2_SCN_CHG_START = 0x8000,
FLG2_UNK_4000 = 0x4000,
FLG2_SCENE_CHANGE_START = 0x8000,
FLG2_FOG_FADE = 0x4000,
FLG2_UNK_2000 = 0x2000,
FLG2_PRESSED_DAMAGE = 0x1000,
FLG2_UNK_800 = 0x800,
FLG2_PLAYER_SHADOW = 0x400,
FLG2_PLAYER_SHADOW_NO_DRAW = 0x400,
FLG2_UNK_200 = 0x200,
FLG2_UNK_100 = 0x100,
FLG2_UNK_80 = 0x80,
@@ -431,11 +420,8 @@ public:
FLG2_UNK_10 = 0x10,
FLG2_UNK_8 = 8,
FLG2_UNK_4 = 4,
FLG2_UNK_2 = 2,
FLG2_COMBO_RESERB = 2,
FLG2_UNK_1 = 1,
FLG2_UNK_58 = FLG2_WOLF_ENEMY_HANG_BITE | FLG2_UNK_10 | FLG2_UNK_8,
FLG2_UNK_10000001 = FLG2_UNK_10000000 | FLG2_UNK_1,
};
enum daPy_FLG3 {
@@ -460,13 +446,13 @@ public:
FLG3_UNK_1000 = 0x1000,
FLG3_UNK_800 = 0x800,
FLG3_UNK_400 = 0x400,
FLG3_UNK_200 = 0x200,
FLG3_UNK_100 = 0x100,
FLG3_UNK_80 = 0x80,
FLG3_UNK_40 = 0x40,
FL3_TRANING_CUT_BACK = 0x20,
FLG3_UNK_10 = 0x10,
FLG3_UNK_8 = 8,
FLG3_TRANING_CUT_LARGE_JUMP = 0x200,
FLG3_TRANING_CUT_LARGE_TURN = 0x100,
FLG3_TRANING_CUT_FAST = 0x80,
FLG3_TRANING_CUT_HEAD = 0x40,
FLG3_TRANING_CUT_BACK = 0x20,
FLG3_TRANING_CUT_DOWN = 0x10,
FLG3_TRANING_SHIELD_ATTACK = 8,
FLG3_UNK_4 = 4,
FLG3_UNK_1 = 1,
};
@@ -477,21 +463,21 @@ public:
ERFLG0_UNK_20000000 = 0x20000000,
ERFLG0_WOLF_FCHAIN_PULL = 0x10000000,
ERFLG0_UNK_8000000 = 0x8000000,
ERFLG0_UNK_4000000 = 0x4000000,
ERFLG0_FISHING_RELEASE = 0x4000000,
ERFLG0_BOSS_ROOM_WAIT = 0x2000000,
ERFLG0_ENEMY_DEAD = 0x1000000,
ERFLG0_UNK_800000 = 0x800000,
ERFLG0_BEE_FOLLOW = 0x400000,
ERFLG0_UNK_200000 = 0x200000,
ERFLG0_LEAF_SE = 0x200000,
ERFLG0_UNK_100000 = 0x100000,
ERFLG0_SINGLE_BOAR_AVOID = 0x80000,
ERFLG0_FISHING_ROD_GET_FISH = 0x40000,
ERFLG0_UNK_20000 = 0x20000,
ERFLG0_UNK_10000 = 0x10000,
ERFLG0_FISHING_ROD_REEL_END = 0x20000,
ERFLG0_FISHING_HIT = 0x10000,
ERFLG0_UNK_4000 = 0x4000,
ERFLG0_UNK_2000 = 0x2000,
ERFLG0_UNK_1000 = 0x1000,
ERFLG0_UNK_400 = 0x400,
ERFLG0_NECK_SEARCH_WIDE = 0x400,
ERFLG0_FORCE_AUTO_JUMP = 0x200,
ERFLG0_UNK_100 = 0x100,
ERFLG0_UNK_80 = 0x80,
@@ -500,31 +486,31 @@ public:
ERFLG0_NOT_HANG = 0x10,
ERFLG0_UNK_8 = 8,
ERFLG0_UNK_4 = 4,
ERFLG0_UNK_2 = 2,
ERFLG0_FORCE_WOLF_CHANGE = 2,
ERFLG0_UNK_1 = 1,
};
enum daPy_ERFLG1 {
ERFLG1_GANON_FINISH = 0x80000000,
ERFLG1_UNK_40000000 = 0x40000000,
ERFLG1_UNK_20000000 = 0x20000000,
ERFLG1_UNK_10000000 = 0x10000000,
ERFLG1_SHIELD_BACKBONE = 0x80000000,
ERFLG1_SWORD_TRIGGER_NON = 0x40000000,
ERFLG1_CANOE_ITEM_CANCEL = 0x20000000,
ERFLG1_DO_PUT_EMPHASYS = 0x10000000,
ERFLG1_LARGE_DAMAGE_UP_STOP = 0x8000000,
ERFLG1_UNK_4000000 = 0x4000000,
ERFLG1_UNK_2000000 = 0x2000000,
ERFLG1_UNK_1000000 = 0x1000000,
ERFLG1_DO_EXCHANGE_PUT_IN = 0x4000000,
ERFLG1_CHAIN_PULL_END = 0x2000000,
ERFLG1_CHAIN_FORCE_PULL = 0x1000000,
ERFLG1_UNK_400000 = 0x400000,
ERFLG1_UNK_200000 = 0x200000,
ERFLG1_UNK_100000 = 0x100000,
ERFLG1_UNK_80000 = 0x80000,
ERFLG1_UNK_40000 = 0x40000,
ERFLG1_UNK_20000 = 0x20000,
ERFLG1_WATER_DROP = 0x20000,
ERFLG1_UNK_10000 = 0x10000,
ERFLG1_UNK_8000 = 0x8000,
ERFLG1_UNK_4000 = 0x4000,
ERFLG1_UNK_2000 = 0x2000,
ERFLG1_UNK_1000 = 0x1000,
ERFLG1_UNK_800 = 0x800,
ERFLG1_WATERFALL_FRONT_HIT = 0x800,
ERFLG1_UNK_400 = 0x400,
ERFLG1_WOLF_EYE_KEEP = 0x200,
ERFLG1_UNK_100 = 0x100,
@@ -535,7 +521,7 @@ public:
ERFLG1_UNK_8 = 8,
ERFLG1_UNK_4 = 4,
ERFLG1_UNK_2 = 2,
ERFLG1_UNK_1 = 1,
ERFLG1_NS_SCREAM = 1,
};
enum daPy_ERFLG2 {
@@ -543,10 +529,10 @@ public:
ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP = 0x80,
ERFLG2_UNK_40 = 0x40,
ERFLG2_UNK_20 = 0x20,
ERFLG2_UNK_10 = 0x10,
ERFLG2_UNK_8 = 8,
ERFLG2_UNK_2 = 2,
ERFLG2_UNK_1 = 1,
ERFLG2_LIGHT_SWORD_GET_EFFECT = 0x10,
ERFLG2_FORCE_GRAB_REBOUND = 8,
ERFLG2_FORCE_HORSE_GETOFF = 2,
ERFLG2_FISHING_KEEP = 1,
};
enum daPy_RFLG0 {
@@ -556,20 +542,20 @@ public:
RFLG0_UNK_10000000 = 0x10000000,
RFLG0_UNK_8000000 = 0x8000000,
RFLG0_UNK_4000000 = 0x4000000,
RFLG0_UNK_2000000 = 0x2000000,
RFLG0_ITEM_SIGHT_BG_HIT = 0x2000000,
RFLG0_GRAB_PUT_START = 0x400000,
RFLG0_WOLF_GROWL = 0x200000,
RFLG0_UNK_80000 = 0x80000,
RFLG0_UNK_40000 = 0x40000,
RFLG0_UNK_20000 = 0x20000,
RFLG0_UNK_10000 = 0x10000,
RFLG0_UNK_8000 = 0x8000,
RFLG0_CLIMB_END_HANG = 0x40000,
RFLG0_WOLF_TAG_LOCK_JUMP_READY = 0x20000,
RFLG0_ATTENTION_LOCK = 0x10000,
RFLG0_GRAB_UP_START = 0x8000,
RFLG0_UNK_4000 = 0x4000,
RFLG0_FRONT_ROLL_CRASH = 0x2000,
RFLG0_ENEMY_ATTN_LOCK = 0x1000,
RFLG0_UNK_400 = 0x400,
RFLG0_COW_GAME_LEASH = 0x200,
RFLG0_UNK_100 = 0x100,
RFLG0_AUTO_JUMP_START = 0x100,
RFLG0_UNK_80 = 0x80,
RFLG0_UNK_40 = 0x40,
RFLG0_GRAB_UP_END = 0x20,
@@ -577,15 +563,15 @@ public:
RFLG0_UNK_8 = 0x8,
RFLG0_GRAB_THROW = 0x4,
RFLG0_UNK_2 = 0x2,
RFLG0_UNK_1 = 0x1,
RFLG0_STICK_ARROW_RESET = 0x1,
};
enum daPy_RFLG1 {
RFLG1_DAMAGE_IMPACT = 0x400,
RFLG1_UNK_200 = 0x200,
RFLG1_UNK_100 = 0x100,
RFLG1_UNK_80 = 0x80,
RFLG1_UNK_40 = 0x40,
RFLG0_FISHINGROD_USE_ACCEPT = 0x200,
RFLG1_INSECT_RELEASE = 0x100,
RFLG0_FISHINGROD_USE_START = 0x80,
RFLG1_BOARD_NO_FOOT_ANGLE = 0x40,
RFLG1_UNK_30 = 0x30,
RFLG1_UNK_20 = 0x20,
RFLG1_UNK_10 = 0x10,
@@ -593,11 +579,9 @@ public:
RFLG1_UNK_4 = 0x4,
RFLG1_UNK_2 = 0x2,
RFLG1_WOLF_ATTACK_REVERSE = 0x1,
RFLG1_UNK_C = 0xC,
};
enum {
enum daPy_MODE {
/* 0x01 */ SMODE_SUMO_READY = 1,
/* 0x25 */ SMODE_SUMO_LOSE = 37,
/* 0x27 */ SMODE_WOLF_PUZZLE = 39,
@@ -606,7 +590,7 @@ public:
/* 0x2C */ SMODE_CARGO_CARRY,
};
enum CutType {
enum daPy_CUT_TYPE {
/* 0x00 */ CUT_TYPE_NONE,
/* 0x01 */ CUT_TYPE_NM_VERTICAL,
/* 0x02 */ CUT_TYPE_NM_STAB,
@@ -618,13 +602,13 @@ public:
/* 0x08 */ CUT_TYPE_TURN_RIGHT,
/* 0x09 */ CUT_TYPE_UNK_9,
/* 0x0A */ CUT_TYPE_JUMP,
/* 0x0B */ CUT_TYPE_DASH_UNK_B,
/* 0x0C */ CUT_TYPE_DASH_UNK_C,
/* 0x0D */ CUT_TYPE_DASH_UNK_D,
/* 0x0B */ CUT_TYPE_DASH_LEFT_BOARD,
/* 0x0C */ CUT_TYPE_DASH_RIGHT_BOARD,
/* 0x0D */ CUT_TYPE_DASH_CHARGE_BOARD,
/* 0x0E */ CUT_TYPE_UNK_E,
/* 0x0F */ CUT_TYPE_UNK_F,
/* 0x10 */ CUT_TYPE_AIR,
/* 0x11 */ CUT_TYPE_DASH_UNK_11,
/* 0x10 */ CUT_TYPE_DASH_LEFT_SIDESTEP,
/* 0x11 */ CUT_TYPE_DASH_RIGHT_SIDESTEP,
/* 0x12 */ CUT_TYPE_LARGE_JUMP_INIT,
/* 0x13 */ CUT_TYPE_LARGE_JUMP,
/* 0x14 */ CUT_TYPE_LARGE_JUMP_FINISH,
@@ -641,15 +625,15 @@ public:
/* 0x1F */ CUT_TYPE_MORTAL_DRAW_B,
/* 0x20 */ CUT_TYPE_FINISH_STAB,
/* 0x21 */ CUT_TYPE_COMBO_STAB,
/* 0x22 */ CUT_TYPE_HORSE_UNK_22,
/* 0x23 */ CUT_TYPE_HORSE_UNK_23,
/* 0x22 */ CUT_TYPE_HORSE_LEFT_A,
/* 0x23 */ CUT_TYPE_HORSE_LEFT_B,
/* 0x24 */ CUT_TYPE_UNK_24,
/* 0x25 */ CUT_TYPE_DASH_UNK_25,
/* 0x26 */ CUT_TYPE_DASH_UNK_26,
/* 0x25 */ CUT_TYPE_DASH_LEFT,
/* 0x26 */ CUT_TYPE_DASH_RIGHT,
/* 0x27 */ CUT_TYPE_DOWN,
/* 0x28 */ CUT_TYPE_UNK_28,
/* 0x29 */ CUT_TYPE_GUARD_ATTACK,
/* 0x2A */ CUT_TYPE_HORSE_UNK_2A,
/* 0x2A */ CUT_TYPE_HORSE_RIGHT_A,
/* 0x2B */ CUT_TYPE_HORSE_TURN,
/* 0x2C */ CUT_TYPE_WOLF_B_LEFT,
/* 0x2D */ CUT_TYPE_WOLF_B_RIGHT,
@@ -663,32 +647,32 @@ public:
/* 0x35 */ CUT_TYPE_WOLF_UNK_35,
/* 0x36 */ CUT_TYPE_WOLF_LOCK,
/* 0x37 */ CUT_TYPE_WOLF_UNK_37,
/* 0x38 */ CUT_TYPE_DASH_UNK_38,
/* 0x38 */ CUT_TYPE_DASH_CHARGE,
/* 0x39 */ CUT_TYPE_WOLF_JUMP,
};
static u32 setParamData(int, int, int, int);
static BOOL checkFishingRodItem(int);
static BOOL checkBombItem(int);
static BOOL checkBottleItem(int);
static BOOL checkDrinkBottleItem(int);
static BOOL checkOilBottleItem(int);
static BOOL checkOpenBottleItem(int);
static BOOL checkBowItem(int);
static BOOL checkHookshotItem(int);
static BOOL checkTradeItem(int);
static BOOL checkDungeonWarpItem(int);
static u32 setParamData(int i_roomNo, int i_mode, int, int);
static BOOL checkFishingRodItem(int i_itemNo);
static BOOL checkBombItem(int i_itemNo);
static BOOL checkBottleItem(int i_itemNo);
static BOOL checkDrinkBottleItem(int i_itemNo);
static BOOL checkOilBottleItem(int i_itemNo);
static BOOL checkOpenBottleItem(int i_itemNo);
static BOOL checkBowItem(int i_itemNo);
static BOOL checkHookshotItem(int i_itemNo);
static BOOL checkTradeItem(int i_itemNo);
static BOOL checkDungeonWarpItem(int i_itemNo);
static BOOL checkMasterSwordEquip();
static BOOL checkWoodShieldEquip();
static f32 getAttentionOffsetY();
static int checkNowWolfEyeUp();
static void forceRestartRoom(int, u32, int);
static void forceRestartRoom(int i_dmgAmount, u32 i_mode, int);
static BOOL setFmChainPos(fopAc_ac_c*, cXyz*, int);
static void cancelFmChainGrab();
static void setLookPos(cXyz*);
static void setPlayerSe(u32);
static bool linkGrabSubjectNoDraw(fopAc_ac_c*);
static bool wolfGrabSubjectNoDraw(fopAc_ac_c*);
static void setLookPos(cXyz* i_pos);
static void setPlayerSe(u32 i_soundID);
static bool linkGrabSubjectNoDraw(fopAc_ac_c* i_actor);
static bool wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor);
static bool checkRoomRestartStart();
static u32 checkCarryStartLightBallA();
static u32 checkCarryStartLightBallB();
@@ -697,16 +681,18 @@ public:
static bool checkBoomerangCharge();
static bool checkBoomerangChargeTime();
static daBoomerang_c* getThrowBoomerangActor();
static void cancelBoomerangLockActor(fopAc_ac_c*);
static void setPlayerDamage(int, int);
static void setMidnaMotionNum(int);
static void setMidnaFaceNum(int);
static void cancelBoomerangLockActor(fopAc_ac_c* i_actor);
static void setPlayerDamage(int i_dmgAmount, BOOL i_setDmgTimer);
static BOOL checkAcceptDungeonWarp();
static void setMidnaMotionNum(int i_motionNum);
static void setMidnaFaceNum(int i_faceNum);
static BOOL checkShieldGet() { return dComIfGs_getSelectEquipShield() != fpcNm_ITEM_NONE; }
static BOOL checkSwordGet() { return dComIfGs_getSelectEquipSword() != fpcNm_ITEM_NONE; }
cXyz getHeadTopPos() const { return mHeadTopPos; }
u32 checkThrowDamage() const { return checkNoResetFlg1(FLG1_THROW_DAMAGE); }
bool checkGoronSideMove() const { return mSpecialMode == 0x2B; }
bool checkGoronSideMove() const { return mMode == 0x2B; }
cXyz* getRightFootPosP() { return &mRightFootPos; }
cXyz* getLeftFootPosP() { return &mLeftFootPos; }
cXyz getLeftFootPos() const { return mLeftFootPos; }
@@ -717,7 +703,7 @@ public:
const cXyz getLeftHandPos() const { return mLeftHandPos; }
const cXyz getItemPos() const { return mItemPos; }
BOOL getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); }
BOOL getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); }
BOOL getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT2); }
BOOL getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); }
/* vt 0X008 */ virtual cXyz* getMidnaAtnPos() const { return NULL; }
@@ -790,7 +776,7 @@ public:
/* vt 0X114 */ virtual void voiceStart(u32) {}
/* vt 0X118 */ virtual void seStartOnlyReverb(u32) {}
/* vt 0X11C */ virtual void seStartOnlyReverbLevel(u32) {}
/* vt 0X120 */ virtual void setOutPower(f32, short, int) {}
/* vt 0X120 */ virtual void setOutPower(f32, s16, int) {}
/* vt 0X124 */ virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*) {}
/* vt 0X128 */ virtual void onMagneGrab(f32, f32) {}
/* vt 0X12C */ virtual void onFrollCrashFlg(u8, int) {}
@@ -803,12 +789,12 @@ public:
/* vt 0X148 */ virtual BOOL checkSingleBoarBattleSecondBowReady() const { return FALSE; }
/* vt 0X14C */ virtual bool checkPointSubWindowMode() const { return FALSE; }
/* vt 0X150 */ virtual void setClothesChange(int) {}
/* vt 0X154 */ virtual void setPlayerPosAndAngle(cXyz const*, short, int) {}
/* vt 0X154 */ virtual void setPlayerPosAndAngle(cXyz const*, s16, int) {}
/* vt 0X158 */ virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*) {}
/* vt 0X15C */ virtual void setPlayerPosAndAngle(f32 (*)[4]) {}
/* vt 0X160 */ virtual bool setThrowDamage(short, f32, f32, int, int, int) { return FALSE; }
/* vt 0X160 */ virtual bool setThrowDamage(s16, f32, f32, int, int, int) { return FALSE; }
/* vt 0X164 */ virtual bool checkSetNpcTks(cXyz*, int, int) { return FALSE; }
/* vt 0X168 */ virtual int setRollJump(f32, f32, short) { return FALSE; }
/* vt 0X168 */ virtual int setRollJump(f32, f32, s16) { return FALSE; }
/* vt 0X16C */ virtual void playerStartCollisionSE(u32, u32) {}
/* vt 0X170 */ virtual void changeTextureAnime(u16, u16, int) {}
/* vt 0X174 */ virtual void cancelChangeTextureAnime() {}
@@ -835,13 +821,13 @@ public:
/* vt 0X1C8 */ virtual cXyz* getKandelaarFlamePos() { return NULL; }
/* vt 0X1CC */ virtual bool checkUseKandelaar(int) { return FALSE; }
/* vt 0X1D0 */ virtual void setDkCaught(fopAc_ac_c*) {}
/* vt 0X1D4 */ virtual void onPressedDamage(cXyz const&, short) {}
/* vt 0X1D4 */ virtual void onPressedDamage(cXyz const&, s16) {}
/* vt 0X1D8 */ virtual bool checkPriActorOwn(fopAc_ac_c const*) const { return FALSE; }
/* vt 0X1DC */ virtual bool onWolfEnemyBiteAll(fopAc_ac_c*, daPy_FLG2) { return FALSE; }
/* vt 0X1E0 */ virtual bool checkWolfEnemyBiteAllOwn(fopAc_ac_c const*) const { return FALSE; }
/* vt 0X1E4 */ virtual void setWolfEnemyHangBiteAngle(short) {}
/* vt 0X1E4 */ virtual void setWolfEnemyHangBiteAngle(s16) {}
/* vt 0X1E8 */ virtual void setKandelaarMtx(f32 (*)[4], int, int) {}
/* vt 0X1EC */ virtual bool getStickAngleFromPlayerShape(short*) const { return FALSE; }
/* vt 0X1EC */ virtual bool getStickAngleFromPlayerShape(s16*) const { return FALSE; }
/* vt 0X1F0 */ virtual bool checkSpinnerPathMove() { return FALSE; }
/* vt 0X1F4 */ virtual bool checkSpinnerTriggerAttack() { return FALSE; }
/* vt 0X1F8 */ virtual void onSpinnerPathForceRemove() {}
@@ -858,7 +844,7 @@ public:
/* vt 0X224 */ virtual s16 checkSumouWithstand() const { return 0; }
/* vt 0X228 */ virtual void cancelGoronThrowEvent() {}
/* vt 0X22C */ virtual void setSumouGraspCancelCount(int) {}
/* vt 0X230 */ virtual void setSumouPushBackDirection(short) {}
/* vt 0X230 */ virtual void setSumouPushBackDirection(s16) {}
/* vt 0X234 */ virtual void setSumouLoseHeadUp() {}
/* vt 0X238 */ virtual s16 getGiantPuzzleAimAngle() const { return shape_angle.y; }
/* vt 0X23C */ virtual void setGoronSideMove(fopAc_ac_c*) {}
@@ -894,7 +880,7 @@ public:
bool getSumouCameraMode() const {
bool sumouCameraMode = false;
if (mSpecialMode != 0 && mSpecialMode < 0x26) {
if (mMode != 0 && mMode < 0x26) {
sumouCameraMode = true;
}
return sumouCameraMode;
@@ -903,7 +889,7 @@ public:
bool getSumouMode() const { return getSumouCameraMode(); }
void cancelOriginalDemo() {
mDemo.setSystemDemoType();
mDemo.setDemoMode(1);
mDemo.setDemoMode(daPy_demo_c::DEMO_UNK_1_e);
}
u32 getDemoMode() const { return mDemo.getDemoMode(); }
@@ -911,80 +897,80 @@ public:
u8 getCutCount() const { return mComboCutCount; }
BOOL checkStatusWindowDraw() const { return checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); }
bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; }
BOOL getHeavyStateAndBoots() { return checkNoResetFlg0(FLG0_HVY_STATE); }
bool checkCargoCarry() const { return mMode == SMODE_CARGO_CARRY; }
BOOL getHeavyStateAndBoots() { return checkNoResetFlg0(daPy_FLG0(FLG0_HEAVY_STATE | FLG0_EQUIP_HVY_BOOTS | FLG0_DK_CAUGHT2)); }
BOOL checkEnemyAttentionLock() const { return checkResetFlg0(RFLG0_ENEMY_ATTN_LOCK); }
BOOL getGrabUpStart() const { return checkResetFlg0(RFLG0_UNK_8000); }
bool checkCanoeSlider() const { return mSpecialMode == 0x2D; }
bool checkGoatStopGame() const { return mSpecialMode == 0x2A; }
void onGoatStopGame() { mSpecialMode = 0x2A; }
BOOL getGrabUpStart() const { return checkResetFlg0(RFLG0_GRAB_UP_START); }
bool checkCanoeSlider() const { return mMode == 0x2D; }
bool checkGoatStopGame() const { return mMode == 0x2A; }
void onGoatStopGame() { mMode = 0x2A; }
u8 getCutType() const { return mCutType; }
u16 getSwordAtUpTime() const { return mSwordUpTimer; }
s16 getDamageWaitTimer() const { return mDamageTimer; }
BOOL checkWaterInMove() const { return checkNoResetFlg0(FLG0_UNDERWATER); }
BOOL checkSceneChangeAreaStart() const { return checkNoResetFlg2(FLG2_SCN_CHG_START); }
BOOL checkWaterInMove() const { return checkNoResetFlg0(FLG0_WATER_IN_MOVE); }
BOOL checkSceneChangeAreaStart() const { return checkNoResetFlg2(FLG2_SCENE_CHANGE_START); }
BOOL checkFrontRollCrash() const { return checkResetFlg0(RFLG0_FRONT_ROLL_CRASH); }
BOOL checkWolfAttackReverse() const { return checkResetFlg1(RFLG1_WOLF_ATTACK_REVERSE); }
BOOL checkFreezeDamage() const { return checkNoResetFlg1(FLG1_ICE_FREEZE); }
BOOL checkWolfTagLockJumpReady() const { return checkResetFlg0(RFLG0_UNK_20000); }
BOOL checkFreezeDamage() const { return checkNoResetFlg1(FLG1_FREEZE_DAMAGE); }
BOOL checkWolfTagLockJumpReady() const { return checkResetFlg0(RFLG0_WOLF_TAG_LOCK_JUMP_READY); }
BOOL checkDamageImpact() const { return checkResetFlg1(RFLG1_DAMAGE_IMPACT); }
BOOL getGrabUpEnd() const { return checkResetFlg0(RFLG0_GRAB_UP_END); }
BOOL getGrabPutStart() const { return checkResetFlg0(RFLG0_GRAB_PUT_START); }
BOOL checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); }
BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); }
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_BOAR_SINGLE_BATTLE_2ND | FLG2_BOAR_SINGLE_BATTLE_1ST)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE); }
BOOL checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
BOOL checkMidnaAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_ATN_POS); }
BOOL checkMidnaHairAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_HAIR_ATN_POS); }
BOOL checkAttentionLock() const { return checkResetFlg0(RFLG0_UNK_10000); }
BOOL checkFishingRodUseStart() const { return checkResetFlg1(RFLG1_UNK_80); }
BOOL checkFishingRodUseAccept() const { return checkResetFlg1(RFLG1_UNK_200); }
BOOL checkAttentionLock() const { return checkResetFlg0(RFLG0_ATTENTION_LOCK); }
BOOL checkFishingRodUseStart() const { return checkResetFlg1(RFLG0_FISHINGROD_USE_START); }
BOOL checkFishingRodUseAccept() const { return checkResetFlg1(RFLG0_FISHINGROD_USE_ACCEPT); }
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
void onForceAutoJump() { onEndResetFlg0(ERFLG0_FORCE_AUTO_JUMP); }
void onNotAutoJump() { onEndResetFlg0(ERFLG0_NOT_AUTO_JUMP); }
void onNotHang() { onEndResetFlg0(ERFLG0_NOT_HANG); }
void onLeafSe() { onEndResetFlg0(ERFLG0_UNK_200000); }
void onLeafSe() { onEndResetFlg0(ERFLG0_LEAF_SE); }
void onWolfFchainPull() { onEndResetFlg0(ERFLG0_WOLF_FCHAIN_PULL); }
void onFishingRodGetFish() { onEndResetFlg0(ERFLG0_FISHING_ROD_GET_FISH); }
void onSingleBoarAvoid() { onEndResetFlg0(ERFLG0_SINGLE_BOAR_AVOID); }
void onShieldBackBone() { onEndResetFlg1(ERFLG1_GANON_FINISH); }
void onShieldBackBone() { onEndResetFlg1(ERFLG1_SHIELD_BACKBONE); }
void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); }
void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); }
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
void onDkCaught2() { onNoResetFlg0(FLG0_DK_CAUGHT); }
void onFishingRodCastingEnd() { onNoResetFlg1(FLG1_UNK_8000); }
void onFishingRodReelEnd() { onEndResetFlg0(ERFLG0_UNK_20000); }
void onFishingHit() { onEndResetFlg0(ERFLG0_UNK_10000); }
void onFishingKeep() { onEndResetFlg2(ERFLG2_UNK_1); }
void onTraningCutHead() { onNoResetFlg3(FLG3_UNK_40); }
void onTraningCutFast() { onNoResetFlg3(FLG3_UNK_80); }
void onTraningCutLargeJump() { onNoResetFlg3(FLG3_UNK_200); }
void onTraningCutLargeTurn() { onNoResetFlg3(FLG3_UNK_100); }
void onTraningCutDown() { onNoResetFlg3(FLG3_UNK_10); }
void onTraningShieldAttack() { onNoResetFlg3(FLG3_UNK_8); }
void onFogFade() { onNoResetFlg2(FLG2_FOG_FADE); }
void onDkCaught2() { onNoResetFlg0(FLG0_DK_CAUGHT2); }
void onFishingRodCastingEnd() { onNoResetFlg1(FLG1_FISHING_ROD_CASTING_END); }
void onFishingRodReelEnd() { onEndResetFlg0(ERFLG0_FISHING_ROD_REEL_END); }
void onFishingHit() { onEndResetFlg0(ERFLG0_FISHING_HIT); }
void onFishingKeep() { onEndResetFlg2(ERFLG2_FISHING_KEEP); }
void onTraningCutHead() { onNoResetFlg3(FLG3_TRANING_CUT_HEAD); }
void onTraningCutFast() { onNoResetFlg3(FLG3_TRANING_CUT_FAST); }
void onTraningCutLargeJump() { onNoResetFlg3(FLG3_TRANING_CUT_LARGE_JUMP); }
void onTraningCutLargeTurn() { onNoResetFlg3(FLG3_TRANING_CUT_LARGE_TURN); }
void onTraningCutDown() { onNoResetFlg3(FLG3_TRANING_CUT_DOWN); }
void onTraningShieldAttack() { onNoResetFlg3(FLG3_TRANING_SHIELD_ATTACK); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
BOOL getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
BOOL checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }
BOOL checkBoarSingleBattleSecond() const { return checkNoResetFlg2(FLG2_UNK_1000000); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_STICK_ARROW_RESET); }
BOOL getCutAtFlg() const { return checkNoResetFlg0(FLG0_CUT_AT_FLG); }
BOOL checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE_1ST); }
BOOL checkBoarSingleBattleSecond() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE_2ND); }
BOOL getFootOnGround() const { return checkResetFlg1(daPy_RFLG1(RFLG1_UNK_10 | RFLG1_UNK_20)); }
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
bool onWolfEnemyHangBite(fopAc_ac_c* i_enemy) { return onWolfEnemyBiteAll(i_enemy, FLG2_WOLF_ENEMY_HANG_BITE); }
void offHorseZelda() { offNoResetFlg2(FLG2_HORSE_ZELDA); }
void onHorseZelda() { onNoResetFlg2(FLG2_HORSE_ZELDA); }
BOOL checkItemSightBgHit() const { return checkResetFlg0(RFLG0_UNK_2000000); }
BOOL checkItemSightBgHit() const { return checkResetFlg0(RFLG0_ITEM_SIGHT_BG_HIT); }
void setCanoeSlider() { mSpecialMode = 0x2D; }
void setCanoeSlider() { mMode = 0x2D; }
void offCanoeSlider() {
if (checkCanoeSlider()) {
mSpecialMode = 0;
mMode = 0;
}
}
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
@@ -992,28 +978,28 @@ public:
void offCargoCarry() {
if (checkCargoCarry()) {
mSpecialMode = 0;
mMode = 0;
}
}
bool onWolfEnemyCatch(fopAc_ac_c* i_actor) { return onWolfEnemyBiteAll(i_actor, FLG2_UNK_8); }
bool onWolfEnemyCatch(fopAc_ac_c* i_enemy) { return onWolfEnemyBiteAll(i_enemy, FLG2_UNK_8); }
void offGoronSideMove() {
if (checkGoronSideMove()) {
mSpecialMode = 0;
mMode = 0;
}
}
void offGoronUpStopCancel() {
offNoResetFlg0(FLG0_UNK_200000);
offNoResetFlg0(FLG0_GORON_UP_STOP_CANCEL);
}
s16 getBodyAngleX() const { return mBodyAngle.x; }
s16 getBodyAngleY() const { return mBodyAngle.y; }
f32 getHeight() const { return field_0x598; }
f32 getHeight() const { return mHeight; }
BOOL checkMidnaWarp() const { return 0; }
BOOL checkMidnaWarp() const { return FALSE; }
u32 checkNoResetFlg0(daPy_FLG0 i_flag) const { return mNoResetFlg0 & i_flag; }
u32 checkNoResetFlg1(daPy_FLG1 i_flag) const { return mNoResetFlg1 & i_flag; }
@@ -1030,10 +1016,10 @@ public:
void offNoResetFlg2(daPy_FLG2 i_flag) { mNoResetFlg2 &= ~i_flag; }
void offNoResetFlg3(daPy_FLG3 i_flag) { mNoResetFlg3 &= ~i_flag; }
void offResetFlg0(daPy_RFLG0 flag) { mResetFlg0 &= ~flag; }
void offResetFlg1(daPy_RFLG1 flag) { mResetFlg1 &= ~flag; }
void onResetFlg0(daPy_RFLG0 flag) { mResetFlg0 |= flag; }
void onResetFlg1(daPy_RFLG1 flag) { mResetFlg1 |= flag; }
void offResetFlg0(daPy_RFLG0 i_flag) { mResetFlg0 &= ~i_flag; }
void offResetFlg1(daPy_RFLG1 i_flag) { mResetFlg1 &= ~i_flag; }
void onResetFlg0(daPy_RFLG0 i_flag) { mResetFlg0 |= i_flag; }
void onResetFlg1(daPy_RFLG1 i_flag) { mResetFlg1 |= i_flag; }
void onEndResetFlg0(daPy_ERFLG0 i_flag) { mEndResetFlg0 |= i_flag; }
void onEndResetFlg2(daPy_ERFLG2 i_flag) { mEndResetFlg2 |= i_flag; }
@@ -1057,7 +1043,7 @@ public:
u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); }
u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
BOOL checkFastSwordCut() const { return checkNoResetFlg0(FLG0_UNK_80000); }
BOOL checkFastSwordCut() const { return checkNoResetFlg0(FLG0_FAST_SWORD_CUT); }
u32 checkMidnaRide() const { return checkNoResetFlg0(FLG0_MIDNA_RIDE); }
BOOL checkWolfGrowl() const { return checkResetFlg0(RFLG0_WOLF_GROWL); }
BOOL checkWolfThreat() const { return checkWolfGrowl(); }
@@ -1072,28 +1058,28 @@ public:
void onMidnaRide() { onNoResetFlg0(FLG0_MIDNA_RIDE); }
void offMidnaRide() { offNoResetFlg0(FLG0_MIDNA_RIDE); }
void onMidnaRideShock() { onEndResetFlg1(ERFLG1_MIDNA_RIDE_SHOCK); }
void onPlayerShadowNoDraw() { onNoResetFlg2(FLG2_PLAYER_SHADOW); }
void offPlayerShadowNoDraw() { offNoResetFlg2(FLG2_PLAYER_SHADOW); }
void onLightSwordGetEffect() { onEndResetFlg2(ERFLG2_UNK_10); }
void onPlayerShadowNoDraw() { onNoResetFlg2(FLG2_PLAYER_SHADOW_NO_DRAW); }
void offPlayerShadowNoDraw() { offNoResetFlg2(FLG2_PLAYER_SHADOW_NO_DRAW); }
void onLightSwordGetEffect() { onEndResetFlg2(ERFLG2_LIGHT_SWORD_GET_EFFECT); }
void onForceGameOver() { onNoResetFlg2(FLG2_FORCE_GAMEOVER); }
void onForceWolfChange() { onEndResetFlg0(ERFLG0_UNK_2); }
void onDoPutEmphasys() { onEndResetFlg1(ERFLG1_UNK_10000000); }
void onDoExchangePutIn() { onEndResetFlg1(ERFLG1_UNK_4000000); }
void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); }
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); }
void onForceWolfChange() { onEndResetFlg0(ERFLG0_FORCE_WOLF_CHANGE); }
void onDoPutEmphasys() { onEndResetFlg1(ERFLG1_DO_PUT_EMPHASYS); }
void onDoExchangePutIn() { onEndResetFlg1(ERFLG1_DO_EXCHANGE_PUT_IN); }
void onNsScream() { onEndResetFlg1(ERFLG1_NS_SCREAM); }
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_NS_SCREAM | ERFLG1_UNK_2)); }
void onLargeDamageUpStop() { onEndResetFlg1(ERFLG1_LARGE_DAMAGE_UP_STOP); }
void onTraningCutBack() { onNoResetFlg3(FL3_TRANING_CUT_BACK); }
void onNeckSearchWide() { onEndResetFlg0(ERFLG0_UNK_400); }
void onTraningCutBack() { onNoResetFlg3(FLG3_TRANING_CUT_BACK); }
void onNeckSearchWide() { onEndResetFlg0(ERFLG0_NECK_SEARCH_WIDE); }
void offPressedDamage() { offNoResetFlg2(FLG2_PRESSED_DAMAGE); }
void onForceSubjectCancel() { onEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL); }
void onEnemyDead() { onEndResetFlg0(ERFLG0_ENEMY_DEAD); }
void offDkCaught() { offNoResetFlg1(FLG1_DK_CAUGHT); }
void offDkCaught2() { offNoResetFlg0(FLG0_DK_CAUGHT); }
void onWaterFallFrontHit() { onEndResetFlg1(ERFLG1_UNK_800); }
void onCanoeItemCancel() { onEndResetFlg1(ERFLG1_UNK_20000000); }
void onSwordTriggerNon() { onEndResetFlg1(ERFLG1_UNK_40000000); }
void offDkCaught2() { offNoResetFlg0(FLG0_DK_CAUGHT2); }
void onWaterFallFrontHit() { onEndResetFlg1(ERFLG1_WATERFALL_FRONT_HIT); }
void onCanoeItemCancel() { onEndResetFlg1(ERFLG1_CANOE_ITEM_CANCEL); }
void onSwordTriggerNon() { onEndResetFlg1(ERFLG1_SWORD_TRIGGER_NON); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_BOAR_SINGLE_BATTLE_2ND | FLG2_BOAR_SINGLE_BATTLE_1ST)); }
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
void changeOriginalDemo() {
@@ -1108,8 +1094,8 @@ public:
mDemo.setParam2(i_param2);
}
void changeDemoParam0(int i_param1) {
mDemo.setParam0(i_param1);
void changeDemoParam0(int i_param0) {
mDemo.setParam0(i_param0);
}
void changeDemoParam1(int i_param1) {
@@ -1126,7 +1112,7 @@ public:
void setItemPos(cXyz* i_itemPos) { mItemPos = *i_itemPos; }
cXyz* getViewerCurrentPosP() { return &field_0x5f8; }
cXyz* getViewerCurrentPosP() { return &mViewerCurrentPos; }
static bool checkPeepEndSceneChange() { return getLastSceneMode() == 7; }
@@ -1163,8 +1149,17 @@ public:
return dComIfGs_getSelectEquipClothes() == fpcNm_ITEM_ARMOR;
}
/* dSv_event_flag_c::M_067 - Main Event - Midna riding / not riding (ON == riding) */
static BOOL checkFirstMidnaDemo() { return dComIfGs_isEventBit(0xc10); }
static bool checkCarvingWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_WOOD_SHIELD;
}
static bool checkShopWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_SHIELD;
}
static BOOL checkPowerGloveGet() { return false; }
static BOOL checkFirstMidnaDemo() { return dComIfGs_isEventBit(dSv_event_flag_c::M_067); }
static int checkNowWolfPowerUp() { return checkNowWolfEyeUp(); }
static daMidna_c* getMidnaActor() { return m_midnaActor; }
@@ -1180,10 +1175,10 @@ public:
}
BOOL checkCowGameLash() const { return checkResetFlg0(RFLG0_COW_GAME_LEASH); }
BOOL checkClimbEndHang() { return checkResetFlg0(RFLG0_UNK_40000); }
BOOL checkClimbEndHang() { return checkResetFlg0(RFLG0_CLIMB_END_HANG); }
void onForceHorseGetOff() {
onEndResetFlg2(ERFLG2_UNK_2);
onEndResetFlg2(ERFLG2_FORCE_HORSE_GETOFF);
}
s16 getFishingRodAngleY() const {
@@ -1191,71 +1186,72 @@ public:
}
void onFishingRelease() {
onEndResetFlg0(ERFLG0_UNK_4000000);
onEndResetFlg0(ERFLG0_FISHING_RELEASE);
}
static daMidna_c* m_midnaActor;
void setGiantPuzzle() { mSpecialMode = SMODE_WOLF_PUZZLE; }
void setGiantPuzzleEnd() { mSpecialMode = 0; }
void setGiantPuzzle() { mMode = SMODE_WOLF_PUZZLE; }
void setGiantPuzzleEnd() { mMode = 0; }
BOOL checkAutoJumpStart() const { return checkResetFlg0(RFLG0_UNK_100); }
BOOL checkAutoJumpStart() const { return checkResetFlg0(RFLG0_AUTO_JUMP_START); }
void onForceGrabRebound() {
onEndResetFlg2(ERFLG2_UNK_8);
onEndResetFlg2(ERFLG2_FORCE_GRAB_REBOUND);
}
void setSumouReadyAcceptButton() { mSpecialMode = 2; }
void setSumouForceStand() { mSpecialMode = 3; }
void setSumouPushFrontStop() { mSpecialMode = 9; }
void setSumouPunchWinEnd() { mSpecialMode = 0xB; }
void setSumouPunchLoseEnd() { mSpecialMode = 0xC; }
void setSumouMoveWinEnd() { mSpecialMode = 0xD; }
void setSumouMoveLoseEnd() { mSpecialMode = 0xE; }
void setSumouReadyAcceptButton() { mMode = 2; }
void setSumouForceStand() { mMode = 3; }
void setSumouPushFrontStop() { mMode = 9; }
void setSumouPunchWinEnd() { mMode = 0xB; }
void setSumouPunchLoseEnd() { mMode = 0xC; }
void setSumouMoveWinEnd() { mMode = 0xD; }
void setSumouMoveLoseEnd() { mMode = 0xE; }
void setSumouForcePunch() {
if (mSpecialMode == 0x1F) {
mSpecialMode = 0x21;
if (mMode == 0x1F) {
mMode = 0x21;
} else {
mSpecialMode = 0x1C;
mMode = 0x1C;
}
}
void setSumouForceTackle() { mSpecialMode = 0x1B; }
void setSumouForceGraspCancel() { mSpecialMode = 0x24; }
void setSumouForceTackle() { mMode = 0x1B; }
void setSumouForceGraspCancel() { mMode = 0x24; }
bool checkSumouPushFront() const { return mSpecialMode == 7; }
bool checkSumouPushBack() const { return mSpecialMode == 8; }
bool checkSumouTackleSuccess() const { return mSpecialMode == 0xF; }
bool checkSumouTackleSuccessPunch() const { return mSpecialMode == 0x10; }
bool checkSumouTackleMiss() const { return mSpecialMode == 0x11; }
bool checkSumouTackleDraw() const { return mSpecialMode == 0x12; }
bool checkSumouPunchSuccess() const { return mSpecialMode == 0x13; }
bool checkSumouPunchMiss() const { return mSpecialMode == 0x14; }
bool checkSumouPunchDraw() const { return mSpecialMode == 0x15; }
bool checkSumouWait() const { return mSpecialMode == 0x16; }
bool checkSumouLeftMove() const { return mSpecialMode == 0x17; }
bool checkSumouRightMove() const { return mSpecialMode == 0x18; }
bool checkSumouSlideLeft() const { return mSpecialMode == 0x19; }
bool checkSumouSlideRight() const { return mSpecialMode == 0x1A; }
bool checkSumouPunchStagger() const { return mSpecialMode == 0x1F; }
bool checkSumouTackleStagger() const { return mSpecialMode == 0x20; }
bool checkSumouGraspRelease() const { return mSpecialMode == 0x23; }
bool checkSumouPushFront() const { return mMode == 7; }
bool checkSumouPushBack() const { return mMode == 8; }
bool checkSumouTackleSuccess() const { return mMode == 0xF; }
bool checkSumouTackleSuccessPunch() const { return mMode == 0x10; }
bool checkSumouTackleMiss() const { return mMode == 0x11; }
bool checkSumouTackleDraw() const { return mMode == 0x12; }
bool checkSumouPunchSuccess() const { return mMode == 0x13; }
bool checkSumouPunchMiss() const { return mMode == 0x14; }
bool checkSumouPunchDraw() const { return mMode == 0x15; }
bool checkSumouWait() const { return mMode == 0x16; }
bool checkSumouLeftMove() const { return mMode == 0x17; }
bool checkSumouRightMove() const { return mMode == 0x18; }
bool checkSumouSlideLeft() const { return mMode == 0x19; }
bool checkSumouSlideRight() const { return mMode == 0x1A; }
bool checkSumouPunchStagger() const { return mMode == 0x1F; }
bool checkSumouTackleStagger() const { return mMode == 0x20; }
bool checkSumouGraspRelease() const { return mMode == 0x23; }
void onHeavyState() { onNoResetFlg0(FLG0_UNK_40000000); }
void onHeavyState() { onNoResetFlg0(FLG0_HEAVY_STATE); }
void onHeavyStateMidnaPanic() {
onHeavyState();
onEndResetFlg1(ERFLG1_UNK_40000);
}
BOOL checkInsectRelease() { return checkResetFlg1(RFLG1_UNK_100); }
BOOL checkInsectRelease() { return checkResetFlg1(RFLG1_INSECT_RELEASE); }
void onChainForcePull() { onEndResetFlg1(ERFLG1_UNK_1000000); }
void onChainPullEnd() { onEndResetFlg1(ERFLG1_UNK_2000000); }
void onChainForcePull() { onEndResetFlg1(ERFLG1_CHAIN_FORCE_PULL); }
void onChainPullEnd() { onEndResetFlg1(ERFLG1_CHAIN_PULL_END); }
void onWaterDrop() { onEndResetFlg1(ERFLG1_UNK_20000); }
void forceKandelaarLightOff() { onNoResetFlg2(FLG2_UNK_10000000); }
void onWaterDrop() { onEndResetFlg1(ERFLG1_WATER_DROP); }
void forceKandelaarLightOff() { onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF); }
};
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);
void daPy_aramBufferCheck(void* i_buffer, u32 i_size);
int daPy_addCalcShort(s16* i_value, s16 i_target, s16 i_scale, s16 i_maxStep, s16 i_minStep);
inline daPy_py_c* daPy_getPlayerActorClass() {
return (daPy_py_c*)dComIfGp_getPlayer(0);
+1
View File
@@ -48,6 +48,7 @@ public:
dPath* checkPathMoveNow() { return mpPathMove; }
static u32 getWaitArg() { return 0; }
static int getWaterSinkLimit() { return 50; }
BOOL getDeleteFlg() const { return mDeleteFlg; }
+2 -2
View File
@@ -45,9 +45,9 @@ public:
}
int getType() {
int param = fopAcM_GetParam(this) >> 0x18;
int type;
u32 param = (fopAcM_GetParam(this) & 0xFF000000) >> 0x18;
int type;
if (param == 0xFF) {
type = 0;
} else {
+2 -2
View File
@@ -1092,8 +1092,8 @@ public:
i_info->field_0x1e = param_1;
}
void EventFlag(int i_flag) {
mEventData.field_0x24 = i_flag;
int EventFlag(int i_flag) {
return mEventData.field_0x24 = i_flag;
}
void Att() {
+5 -5
View File
@@ -146,7 +146,7 @@ public:
u32 GetRPrm() const { return mRPrm; }
u32 MskSPrm(u32 mask) const { return mGFlag & mask; }
u32 MskRPrm(u32 mask) const { return mRPrm & mask; }
bool ChkSPrm(u32 mask) const { return MskSPrm(mask); }
bool ChkSPrm(u32 mask) { return MskSPrm(mask); }
void OnSPrm(u32 flag) { mGFlag |= flag; }
void OnRPrm(u32 flag) { mRPrm |= flag; }
void OffSPrm(u32 flag) { mGFlag &= ~flag; }
@@ -169,7 +169,7 @@ public:
void SetHitMark(u8 mark) { mHitMark = mark; }
void SetSe(u8 se) { mSe = se; }
void SetMtrl(u8 mtrl) { mMtrl = mtrl; }
void SetAtSpl(dCcG_At_Spl spl) { mSpl = spl; }
void SetSpl(dCcG_At_Spl spl) { mSpl = spl; }
u8 GetSe() { return mSe; }
dCcG_At_Spl GetSpl() { return (dCcG_At_Spl)mSpl; }
u8 GetMtrl() { return mMtrl; }
@@ -311,7 +311,7 @@ public:
void SetAtVec(cXyz& vec) { mGObjAt.SetVec(vec); }
void SetTgVec(cXyz& vec) { mGObjTg.SetVec(vec); }
bool ChkAtNoMass() const { return mGObjAt.ChkSPrm(8); }
bool ChkAtNoMass() { return mGObjAt.ChkSPrm(8); }
void OnAtNoHitMark() { mGObjAt.OnSPrm(2); }
void OffAtNoHitMark() { mGObjAt.OffSPrm(2); }
void OnTgNoHitMark() { mGObjTg.OnSPrm(4); }
@@ -331,7 +331,7 @@ public:
bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); }
cXyz* GetAtVecP() { return mGObjAt.GetVecP(); }
cXyz* GetTgVecP() { return mGObjTg.GetVecP(); }
void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); }
void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetSpl(spl); }
void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); }
void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); }
void SetCoHitCallback(dCcD_HitCallback callback) { mGObjCo.SetHitCallback(callback); }
@@ -415,7 +415,7 @@ public:
void SetTgHitPos(cXyz& pos) { mGObjTg.SetHitPos(pos); }
void SetAtHitPos(cXyz& pos) { mGObjAt.SetHitPos(pos); }
u8 GetTgSe() { return mGObjTg.GetSe(); }
u32 GetTgHitObjHitSeID(int i_soundID) { return getHitSeID(GetTgHitObjSe(),i_soundID); }
u32 GetTgHitObjHitSeID(BOOL i_isRebound) { return getHitSeID(GetTgHitObjSe(), i_isRebound); }
cXyz* GetAtHitPosP() { return mGObjAt.GetHitPosP(); }
cXyz* GetTgHitPosP() { return mGObjTg.GetHitPosP(); }
cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); }
+163
View File
@@ -16,6 +16,169 @@
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_graphic.h"
enum dComIfG_ButtonStatus {
/* 0x00 */ BUTTON_STATUS_NONE,
/* 0x01 */ BUTTON_STATUS_LET_GO,
/* 0x02 */ BUTTON_STATUS_PEEK,
/* 0x03 */ BUTTON_STATUS_ATTACK,
/* 0x04 */ BUTTON_STATUS_PUT_AWAY,
/* 0x05 */ BUTTON_STATUS_HOWL,
/* 0x06 */ BUTTON_STATUS_OPEN,
/* 0x07 */ BUTTON_STATUS_ENTER,
/* 0x08 */ BUTTON_STATUS_CHECK,
/* 0x09 */ BUTTON_STATUS_DASH,
/* 0x0A */ BUTTON_STATUS_CROUCH,
/* 0x0B */ BUTTON_STATUS_DEFEND,
/* 0x0C */ BUTTON_STATUS_PICK_UP,
/* 0x0D */ BUTTON_STATUS_DIG,
/* 0x0E */ BUTTON_STATUS_EAT,
/* 0x0F */ BUTTON_STATUS_SELECT,
/* 0x10 */ BUTTON_STATUS_LOCK,
/* 0x11 */ BUTTON_STATUS_SWITCH,
/* 0x12 */ BUTTON_STATUS_BACK,
/* 0x13 */ BUTTON_STATUS_THROW,
/* 0x14 */ BUTTON_STATUS_PLACE,
/* 0x15 */ BUTTON_STATUS_GRAB,
/* 0x16 */ BUTTON_STATUS_GET_OFF,
/* 0x17 */ BUTTON_STATUS_GET_ON,
/* 0x18 */ BUTTON_STATUS_PADDLE,
/* 0x19 */ BUTTON_STATUS_JUMP,
/* 0x1A */ BUTTON_STATUS_READ,
/* 0x1B */ BUTTON_STATUS_LOOK,
/* 0x1C */ BUTTON_STATUS_SPEAK,
/* 0x1D */ BUTTON_STATUS_LIFT,
/* 0x1E */ BUTTON_STATUS_SWING,
/* 0x1F */ BUTTON_STATUS_UNK_31,
/* 0x20 */ BUTTON_STATUS_UNK_32,
/* 0x21 */ BUTTON_STATUS_UNK_33,
/* 0x22 */ BUTTON_STATUS_CONFIRM,
/* 0x23 */ BUTTON_STATUS_NEXT,
/* 0x24 */ BUTTON_STATUS_INFO,
/* 0x25 */ BUTTON_STATUS_UNK_37,
/* 0x26 */ BUTTON_STATUS_UNK_38,
/* 0x27 */ BUTTON_STATUS_UNK_39,
/* 0x28 */ BUTTON_STATUS_WHOOP,
/* 0x29 */ BUTTON_STATUS_ZOOM,
/* 0x2A */ BUTTON_STATUS_QUIT,
/* 0x2B */ BUTTON_STATUS_PICK,
/* 0x2C */ BUTTON_STATUS_BLOW,
/* 0x2D */ BUTTON_STATUS_DODGE,
/* 0x2E */ BUTTON_STATUS_CUT,
/* 0x2F */ BUTTON_STATUS_HINT,
/* 0x30 */ BUTTON_STATUS_FINISH,
/* 0x31 */ BUTTON_STATUS_SET_FREE,
/* 0x32 */ BUTTON_STATUS_DISMOUNT,
/* 0x33 */ BUTTON_STATUS_DROP_DOWN,
/* 0x34 */ BUTTON_STATUS_UNK_52,
/* 0x35 */ BUTTON_STATUS_TAKE,
/* 0x36 */ BUTTON_STATUS_HURRY,
/* 0x37 */ BUTTON_STATUS_PULL_DOWN,
/* 0x38 */ BUTTON_STATUS_PET,
/* 0x39 */ BUTTON_STATUS_UNK_57,
/* 0x3A */ BUTTON_STATUS_SHIELD_ATTACK,
/* 0x3B */ BUTTON_STATUS_LISTEN,
/* 0x3C */ BUTTON_STATUS_DRINK,
/* 0x3D */ BUTTON_STATUS_UNK_61,
/* 0x3E */ BUTTON_STATUS_COVER,
/* 0x3F */ BUTTON_STATUS_PUSH,
/* 0x40 */ BUTTON_STATUS_RESIST,
/* 0x41 */ BUTTON_STATUS_DIVE,
/* 0x42 */ BUTTON_STATUS_PUT_TOGETHER,
/* 0x43 */ BUTTON_STATUS_SKIP,
/* 0x44 */ BUTTON_STATUS_SLAP,
/* 0x45 */ BUTTON_STATUS_SNIFF,
/* 0x46 */ BUTTON_STATUS_BITE,
/* 0x47 */ BUTTON_STATUS_ROLL,
/* 0x48 */ BUTTON_STATUS_FASTEN,
/* 0x49 */ BUTTON_STATUS_GET_DOWN,
/* 0x4A */ BUTTON_STATUS_HAWKEYE_OFF,
/* 0x4B */ BUTTON_STATUS_UNK_75,
/* 0x4C */ BUTTON_STATUS_SWIM,
/* 0x4D */ BUTTON_STATUS_CANT_SKIP,
/* 0x4E */ BUTTON_STATUS_SENSE,
/* 0x4F */ BUTTON_STATUS_UNK_79,
/* 0x50 */ BUTTON_STATUS_UNK_80,
/* 0x51 */ BUTTON_STATUS_LAND,
/* 0x52 */ BUTTON_STATUS_HOOK,
/* 0x53 */ BUTTON_STATUS_CHANGE_LOCKS,
/* 0x54 */ BUTTON_STATUS_EQUIP,
/* 0x55 */ BUTTON_STATUS_PULL,
/* 0x56 */ BUTTON_STATUS_REEL,
/* 0x57 */ BUTTON_STATUS_EXTRACT,
/* 0x58 */ BUTTON_STATUS_SPIN,
/* 0x59 */ BUTTON_STATUS_UNK_89,
/* 0x5A */ BUTTON_STATUS_SPIN_ATTACK,
/* 0x5B */ BUTTON_STATUS_REEL_FAST,
/* 0x5C */ BUTTON_STATUS_RAISE,
/* 0x5D */ BUTTON_STATUS_RELEASE,
/* 0x5E */ BUTTON_STATUS_UNK_94,
/* 0x5F */ BUTTON_STATUS_MAP,
/* 0x60 */ BUTTON_STATUS_ITEMS,
/* 0x61 */ BUTTON_STATUS_INSERT,
/* 0x62 */ BUTTON_STATUS_DRAW,
/* 0x63 */ BUTTON_STATUS_STRIKE,
/* 0x64 */ BUTTON_STATUS_BLANK,
/* 0x65 */ BUTTON_STATUS_UNK_101,
/* 0x66 */ BUTTON_STATUS_POINT_WII_REMOTE,
/* 0x67 */ BUTTON_STATUS_FLIP,
/* 0x68 */ BUTTON_STATUS_CHANGE_VIEW,
/* 0x69 */ BUTTON_STATUS_UNK_105,
/* 0x6A */ BUTTON_STATUS_UNK_106,
/* 0x6B */ BUTTON_STATUS_CHANCE,
/* 0x6C */ BUTTON_STATUS_SCOOP,
/* 0x6D */ BUTTON_STATUS_SURVEY,
/* 0x6E */ BUTTON_STATUS_CANCEL,
/* 0x6F */ BUTTON_STATUS_SEIZE,
/* 0x70 */ BUTTON_STATUS_COLLECTION,
/* 0x71 */ BUTTON_STATUS_AREA_MAP,
/* 0x72 */ BUTTON_STATUS_ACTION,
/* 0x73 */ BUTTON_STATUS_SET_HOOK,
/* 0x74 */ BUTTON_STATUS_TILT,
/* 0x75 */ BUTTON_STATUS_THRUST,
/* 0x76 */ BUTTON_STATUS_ROTATE,
/* 0x77 */ BUTTON_STATUS_HELM_SPLITTER,
/* 0x78 */ BUTTON_STATUS_MOVE,
/* 0x79 */ BUTTON_STATUS_UNK_121,
/* 0x7A */ BUTTON_STATUS_HOLD_ON,
/* 0x7B */ BUTTON_STATUS_UNK_123,
/* 0x7C */ BUTTON_STATUS_HELP,
/* 0x7D */ BUTTON_STATUS_ZOOM_IN,
/* 0x7E */ BUTTON_STATUS_ZOOM_OUT,
/* 0x7F */ BUTTON_STATUS_MOVE_CLOSER_TV,
/* 0x80 */ BUTTON_STATUS_UNK_128,
/* 0x81 */ BUTTON_STATUS_UNK_129,
/* 0x82 */ BUTTON_STATUS_UNK_130,
/* 0x83 */ BUTTON_STATUS_UNK_131,
/* 0x84 */ BUTTON_STATUS_UNK_132,
/* 0x85 */ BUTTON_STATUS_UNK_133,
/* 0x86 */ BUTTON_STATUS_UNK_134,
/* 0x87 */ BUTTON_STATUS_UNK_135,
/* 0x88 */ BUTTON_STATUS_UNK_136,
/* 0x89 */ BUTTON_STATUS_UNK_137,
/* 0x8A */ BUTTON_STATUS_UNK_138,
/* 0x8B */ BUTTON_STATUS_UNK_139,
/* 0x8C */ BUTTON_STATUS_UNK_140,
/* 0x8D */ BUTTON_STATUS_UNK_141,
/* 0x8E */ BUTTON_STATUS_UNK_142,
/* 0x8F */ BUTTON_STATUS_UNK_143,
/* 0x90 */ BUTTON_STATUS_UNK_144,
/* 0x91 */ BUTTON_STATUS_UNK_145,
/* 0x92 */ BUTTON_STATUS_UNK_146,
/* 0x93 */ BUTTON_STATUS_UNK_147,
/* 0x94 */ BUTTON_STATUS_UNK_148,
/* 0x95 */ BUTTON_STATUS_UNK_149,
/* 0x96 */ BUTTON_STATUS_UNK_150,
/* 0x97 */ BUTTON_STATUS_UNK_151,
/* 0x98 */ BUTTON_STATUS_UNK_152,
/* 0x99 */ BUTTON_STATUS_UNK_153,
};
enum dComIfG_ButtonStatusFlag {
/* 0x0 */ BUTTON_STATUS_FLAG_NONE,
/* 0x2 */ BUTTON_STATUS_FLAG_EMPHASIS = 2,
/* 0x4 */ BUTTON_STATUS_FLAG_CONTINUATION = 4,
};
class JKRAramArchive;
class dSmplMdl_draw_c;
class dTimer_c;
+6 -2
View File
@@ -84,7 +84,7 @@ public:
fopAc_ac_c* getActor();
void setActor(fopAc_ac_c*);
f32 getPrm_Morf();
int getDemoIDData(int*, int*, int*, u16*, u8*);
int getDemoIDData(int* o_arg0, int* o_arg1, int* o_arg2, u16* o_resID, u8*);
virtual ~dDemo_actor_c();
virtual void JSGSetData(u32, void const*, u32);
@@ -381,13 +381,17 @@ public:
static s16 getBranchNum() { return m_branchNum; }
static jmessage_tControl* getMesgControl() { return m_mesgControl; }
static void setBranchNum(u16 num) {
m_branchNum = num;
}
static dDemo_camera_c* getCamera() {
JUT_ASSERT(0, m_object != NULL);
return m_object->getActiveCamera();
}
static s16 m_branchId;
static s16 m_branchNum;
static u16 m_branchNum;
static dDemo_system_c* m_system;
static JStudio::TControl* m_control;
static JStudio_JStage::TCreateObject* m_stage;
+1 -1
View File
@@ -26,7 +26,7 @@ public:
int getHitmarkPosAndAngle(cXyz const*, csXyz const*, cXyz*, csXyz*, int) const;
void setArrowPosAndAngle(cXyz const*, cXyz const*, int, cXyz*, csXyz*);
bool checkPassNum(int bit) { return field_0xc & (1 << bit); }
BOOL checkPassNum(int bit) { return field_0xc & (1 << bit); }
void onPassNum(int num) { field_0xc |= (1 << num); }
void offPassNum(int num) { field_0xc &= ~(1 << num); }
bool checkShieldType(int i) { return getType(i) == 3; }
-138
View File
@@ -10,144 +10,6 @@ class J2DAnmTransformKey;
class JKRExpHeap;
class JKRHeap;
enum dMeter2Draw_actionFlag {
/* 0x0 */ ACTION_FLG_DEFAULT,
/* 0x2 */ ACTION_FLG_EMPHASIS = 2,
/* 0x4 */ ACTION_FLG_CONTINUATION = 4,
};
enum dMeter2Draw_actionID {
/* 0x00 */ ACTION_STR_NONE,
/* 0x01 */ ACTION_STR_LET_GO,
/* 0x02 */ ACTION_STR_PEEK,
/* 0x03 */ ACTION_STR_ATTACK,
/* 0x04 */ ACTION_STR_PUT_AWAY,
/* 0x05 */ ACTION_STR_HOWL,
/* 0x06 */ ACTION_STR_OPEN,
/* 0x07 */ ACTION_STR_ENTER,
/* 0x08 */ ACTION_STR_CHECK,
/* 0x09 */ ACTION_STR_DASH,
/* 0x0A */ ACTION_STR_CROUCH,
/* 0x0B */ ACTION_STR_DEFEND,
/* 0x0C */ ACTION_STR_PICK_UP,
/* 0x0D */ ACTION_STR_DIG,
/* 0x0E */ ACTION_STR_EAT,
/* 0x0F */ ACTION_STR_SELECT,
/* 0x10 */ ACTION_STR_LOCK,
/* 0x11 */ ACTION_STR_SWITCH,
/* 0x12 */ ACTION_STR_BACK,
/* 0x13 */ ACTION_STR_THROW,
/* 0x14 */ ACTION_STR_PLACE,
/* 0x15 */ ACTION_STR_GRAB,
/* 0x16 */ ACTION_STR_GET_OFF,
/* 0x17 */ ACTION_STR_GET_ON,
/* 0x18 */ ACTION_STR_PADDLE,
/* 0x19 */ ACTION_STR_JUMP,
/* 0x1A */ ACTION_STR_READ,
/* 0x1B */ ACTION_STR_LOOK,
/* 0x1C */ ACTION_STR_SPEAK,
/* 0x1D */ ACTION_STR_LIFT,
/* 0x1E */ ACTION_STR_SWING,
/* 0x1F */ ACTION_STR_PICK_UP2,
/* 0x20 */ ACTION_STR_GET_ON2,
/* 0x21 */ ACTION_STR_GET_OFF2,
/* 0x22 */ ACTION_STR_CONFIRM,
/* 0x23 */ ACTION_STR_NEXT,
/* 0x24 */ ACTION_STR_INFO,
/* 0x25 */ ACTION_STR_NONE2,
/* 0x26 */ ACTION_STR_NONE3,
/* 0x27 */ ACTION_STR_NONE4,
/* 0x28 */ ACTION_STR_WHOOP,
/* 0x29 */ ACTION_STR_ZOOM,
/* 0x2A */ ACTION_STR_QUIT,
/* 0x2B */ ACTION_STR_PICK,
/* 0x2C */ ACTION_STR_BLOW,
/* 0x2D */ ACTION_STR_DODGE,
/* 0x2E */ ACTION_STR_CUT,
/* 0x2F */ ACTION_STR_HINT,
/* 0x30 */ ACTION_STR_FINISH,
/* 0x31 */ ACTION_STR_SET_FREE,
/* 0x32 */ ACTION_STR_DISMOUNT,
/* 0x33 */ ACTION_STR_DROP_DOWN,
/* 0x34 */ ACTION_STR_PICK_UP3,
/* 0x35 */ ACTION_STR_TAKE,
/* 0x36 */ ACTION_STR_HURRY,
/* 0x37 */ ACTION_STR_PULL_DOWN,
/* 0x38 */ ACTION_STR_PET,
/* 0x39 */ ACTION_STR_PICK_UP4,
/* 0x3A */ ACTION_STR_SHIELD_ATTACK,
/* 0x3B */ ACTION_STR_LISTEN,
/* 0x3C */ ACTION_STR_DRINK,
/* 0x3D */ ACTION_STR_ZOOM2,
/* 0x3E */ ACTION_STR_COVER,
/* 0x3F */ ACTION_STR_PUSH,
/* 0x40 */ ACTION_STR_RESIST,
/* 0x41 */ ACTION_STR_DIVE,
/* 0x42 */ ACTION_STR_PUT_TOGETHER,
/* 0x43 */ ACTION_STR_SKIP,
/* 0x44 */ ACTION_STR_SLAP,
/* 0x45 */ ACTION_STR_SNIFF,
/* 0x46 */ ACTION_STR_BITE,
/* 0x47 */ ACTION_STR_ROLL,
/* 0x48 */ ACTION_STR_FASTEN,
/* 0x49 */ ACTION_STR_GET_DOWN,
/* 0x4A */ ACTION_STR_HAWKEYE_OFF,
/* 0x4B */ ACTION_STR_DASH2,
/* 0x4C */ ACTION_STR_SWIM,
/* 0x4D */ ACTION_STR_CANT_SKIP,
/* 0x4E */ ACTION_STR_SENSE,
/* 0x4F */ ACTION_STR_NONE5,
/* 0x50 */ ACTION_STR_THROW2,
/* 0x51 */ ACTION_STR_LAND,
/* 0x52 */ ACTION_STR_HOOK,
/* 0x53 */ ACTION_STR_CHANGE_LOCKS,
/* 0x54 */ ACTION_STR_EQUIP,
/* 0x55 */ ACTION_STR_PULL,
/* 0x56 */ ACTION_STR_REEL,
/* 0x57 */ ACTION_STR_EXTRACT,
/* 0x58 */ ACTION_STR_SPIN,
/* 0x59 */ ACTION_STR_SWITCH2,
/* 0x5A */ ACTION_STR_SPIN_ATTACK,
/* 0x5B */ ACTION_STR_REEL_FAST,
/* 0x5C */ ACTION_STR_RAISE,
/* 0x5D */ ACTION_STR_RELEASE,
/* 0x5E */ ACTION_STR_CHECK2,
/* 0x5F */ ACTION_STR_MAP,
/* 0x60 */ ACTION_STR_ITEMS,
/* 0x61 */ ACTION_STR_INSERT,
/* 0x62 */ ACTION_STR_DRAW,
/* 0x63 */ ACTION_STR_STRIKE,
/* 0x64 */ ACTION_STR_BLANK,
/* 0x65 */ ACTION_STR_JUMP2,
/* 0x66 */ ACTION_STR_POINT_WII_REMOTE,
/* 0x67 */ ACTION_STR_FLIP,
/* 0x68 */ ACTION_STR_CHANGE_VIEW,
/* 0x69 */ ACTION_STR_ZOOM3,
/* 0x6A */ ACTION_STR_BACK2,
/* 0x6B */ ACTION_STR_CHANCE,
/* 0x6C */ ACTION_STR_SCOOP,
/* 0x6D */ ACTION_STR_SURVEY,
/* 0x6E */ ACTION_STR_CANCEL,
/* 0x6F */ ACTION_STR_SEIZE,
/* 0x70 */ ACTION_STR_COLLECTION,
/* 0x71 */ ACTION_STR_AREA_MAP,
/* 0x72 */ ACTION_STR_ACTION,
/* 0x73 */ ACTION_STR_SET_HOOK,
/* 0x74 */ ACTION_STR_TILT,
/* 0x75 */ ACTION_STR_THRUST,
/* 0x76 */ ACTION_STR_ROTATE,
/* 0x77 */ ACTION_STR_HELM_SPLITTER,
/* 0x78 */ ACTION_STR_MOVE,
/* 0x79 */ ACTION_STR_ROLL2,
/* 0x7A */ ACTION_STR_HOLD_ON,
/* 0x7B */ ACTION_STR_BITE2,
/* 0x7C */ ACTION_STR_HELP,
/* 0x7D */ ACTION_STR_ZOOM_IN,
/* 0x7E */ ACTION_STR_ZOOM_OUT,
/* 0x7F */ ACTION_STR_MOVE_CLOSER_TV,
/* 0x80 */ ACTION_STR_CHECK3,
};
class dKantera_icon_c;
class dMeter2Draw_c : public dDlst_base_c {
+14 -2
View File
@@ -33,6 +33,18 @@ enum dMeter2Info_warpStatus {
/* 0x3 */ WARP_STATUS_DECIDED_e = 3,
};
enum dMeter2Info_UseButton {
METER2_USEBUTTON_A = 0x1,
METER2_USEBUTTON_B = 0x2,
METER2_USEBUTTON_X = 0x4,
METER2_USEBUTTON_Y = 0x8,
METER2_USEBUTTON_C = 0x10,
METER2_USEBUTTON_R = 0x40,
METER2_USEBUTTON_Z = 0x800,
};
class dMeter2Info_c {
public:
class WarpInfo_c {
@@ -169,7 +181,7 @@ public:
void resetDirectUseItem() { mDirectUseItem = 0; }
u16 getFloatingFlowID() { return mFloatingFlowID; }
bool isFloatingMessageWakuVisible() { return mFloatingMessageWakuVisible; }
void onBlinkButton(int i_flag) { mBlinkButton |= i_flag; }
void onBlinkButton(int i_flag) { mBlinkButton |= (u16)i_flag; }
bool isBlinkButton(int i_flag) { return (mBlinkButton & (u16)i_flag) != 0 ? true : false; }
void resetBlinkButton() { mBlinkButton = 0; }
s16 getFloatingMessageTimer() { return mFloatingMessageTimer; }
@@ -193,7 +205,7 @@ public:
void set2DHeight(f32 i_height) { m2DHeight = i_height; }
void set2DPosH(f32 i_posH) { m2DPosH = i_posH; }
void set2DPosV(f32 i_posV) { m2DPosV = i_posV; }
void onUseButton(int i_button) { mUseButton |= i_button; }
void onUseButton(int i_button) { mUseButton |= (u16)i_button; }
f32 get2DWidth() { return m2DWidth; }
f32 get2DHeight() { return m2DHeight; }
u8 getTableMapRegionNo() { return mTableMapRegionNo; }
+3 -3
View File
@@ -356,7 +356,7 @@ inline void dMsgObject_demoMessageGroup() {
}
inline bool dMsgObject_isTalkNowCheck() {
return dMsgObject_getMsgObjectClass()->getStatus() != 1 ? true : false;
return dMsgObject_getMsgObjectClass()->getStatus() == 1 ? false : true;
}
inline bool dMsgObject_isKillMessageFlag() {
@@ -449,7 +449,7 @@ inline void dMsgObject_endFlowGroup() {
}
inline void dMsgObject_setSmellType(u8 type) {
dMsgObject_c::setSmellType(type);
dMsgObject_getMsgObjectClass()->setSmellType(type);
}
inline u8 dMsgObject_getSelectCursorPos() {
@@ -485,7 +485,7 @@ inline void dMsgObject_setEquipBombInfo() {
}
inline bool dMsgObject_isHowlHearingMode() {
return dMsgObject_c::isHowlHearingMode();
return dMsgObject_getMsgObjectClass()->isHowlHearingMode();
}
inline void dMsgObject_onMsgSend() {
+28 -1
View File
@@ -1266,6 +1266,33 @@ struct FuncTable {
dStage_Func function;
};
enum dStage_SaveTbl {
dStage_SaveTbl_ORDON,
dStage_SaveTbl_PRISON,
dStage_SaveTbl_FARON,
dStage_SaveTbl_ELDIN,
dStage_SaveTbl_LANAYRU,
dStage_SaveTbl_FIELD = 6,
dStage_SaveTbl_GROVE,
dStage_SaveTbl_SNOWPEAK,
dStage_SaveTbl_CASTLE_TOWN,
dStage_SaveTbl_DESERT,
dStage_SaveTbl_FISHING_POND,
dStage_SaveTbl_LV1 = 16,
dStage_SaveTbl_LV2,
dStage_SaveTbl_LV3,
dStage_SaveTbl_LV4,
dStage_SaveTbl_LV5,
dStage_SaveTbl_LV6,
dStage_SaveTbl_LV7,
dStage_SaveTbl_LV8,
dStage_SaveTbl_LV9,
dStage_SaveTbl_CAVE1,
dStage_SaveTbl_CAVE2,
dStage_SaveTbl_GROTTO,
};
const char* dStage_getName2(s16, s8);
dStage_objectNameInf* dStage_searchName(const char*);
static int dStage_stageKeepTresureInit(dStage_dt_c*, void*, int, void*);
@@ -1417,7 +1444,7 @@ inline u32 dStage_stagInfo_ChkKeyDisp(stage_stag_info_class* pstag) {
return pstag->field_0x09 & 1;
}
inline u8 dStage_stagInfo_GetWolfDashType(stage_stag_info_class* pstag) {
inline int dStage_stagInfo_GetWolfDashType(stage_stag_info_class* pstag) {
return (pstag->field_0x09 >> 6) & 3;
}
+9 -8
View File
@@ -164,6 +164,7 @@ enum dEvt_Condition_e {
dEvtCnd_CANDEMO_e = 0x0002,
dEvtCnd_CANDOOR_e = 0x0004,
dEvtCnd_CANGETITEM_e = 0x0008,
dEvtCnd_10_e = 0x0010,
dEvtCnd_CANTALKITEM_e = 0x0020,
dEvtCnd_40_e = 0x0040,
dEvtCnd_DUMMY = 0x8000,
@@ -337,10 +338,10 @@ public:
cXyz& getDownPos() { return mDownPos; }
cXyz& getHeadLockPos() { return mHeadLockPos; }
void onCutDownHitFlg() { mFlags |= fopEn_flag_CutDownHit; }
void onWolfBiteDamage() { mFlags |= fopEn_flag_WolfBiteDamage; }
void onWolfDownStartFlg() { mFlags |= (fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); }
void onWolfDownPullEndFlg() { mFlags |= fopEn_flag_WolfDownPullEnd; }
void onCutDownHitFlg() { mFlags |= (u16)fopEn_flag_CutDownHit; }
void onWolfBiteDamage() { mFlags |= (u16)fopEn_flag_WolfBiteDamage; }
void onWolfDownStartFlg() { mFlags |= (u16)(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); }
void onWolfDownPullEndFlg() { mFlags |= (u16)fopEn_flag_WolfDownPullEnd; }
void onWolfNoLock() { mFlags |= (u16)fopEn_flag_WolfNoLock; }
void onDownFlg() { mFlags |= (u16)fopEn_flag_Down; }
void onHeadLockFlg() { mFlags |= (u16)fopEn_flag_HeadLock; }
@@ -365,10 +366,10 @@ public:
void setMidnaBindMode(u8 i_bindMode) { mMidnaBindMode = i_bindMode; }
void setMidnaBindID(u8 i_idx, u32 i_bindID) { mMidnaBindID[i_idx] = i_bindID; }
void setThrowModeCatch() { mThrowMode |= fopEn_throwMode_Catch; }
void setThrowModeDash() { mThrowMode |= fopEn_throwMode_Dash; }
void setThrowModeThrowRight() { mThrowMode |= fopEn_throwMode_ThrowRight; }
void setThrowModeThrowLeft() { mThrowMode |= fopEn_throwMode_ThrowLeft; }
void setThrowModeCatch() { mThrowMode |= (u8)fopEn_throwMode_Catch; }
void setThrowModeDash() { mThrowMode |= (u8)fopEn_throwMode_Dash; }
void setThrowModeThrowRight() { mThrowMode |= (u8)fopEn_throwMode_ThrowRight; }
void setThrowModeThrowLeft() { mThrowMode |= (u8)fopEn_throwMode_ThrowLeft; }
void setDownPos(const cXyz* i_pos) { mDownPos = *i_pos; }
void setHeadLockPos(const cXyz* i_pos) { mHeadLockPos = *i_pos; }
+2
View File
@@ -297,6 +297,8 @@ struct mDoExt_MtxCalcAnmBlendTbl
mDoExt_MtxCalcAnmBlendTbl(int num, mDoExt_AnmRatioPack* anmRatio) {
mNum = num;
mAnmRatio = anmRatio;
f32 var_f31 = 0.0f;
for (int i = 0; i < mNum; i++) {
if (!mAnmRatio[i].getAnmTransform()) {
mAnmRatio[i].setRatio(0.0f);
+1 -1
View File
@@ -91,7 +91,7 @@ inline void cMtx_multVec(const Mtx mtx, const Vec* src, Vec* dst) {
mDoMtx_multVec(mtx, src, dst);
}
inline void cMtx_multVecSR(Mtx mtx, const Vec* src, Vec* dst) {
inline void cMtx_multVecSR(const Mtx mtx, const Vec* src, Vec* dst) {
mDoMtx_multVecSR(mtx, src, dst);
}
+4132 -3411
View File
File diff suppressed because it is too large Load Diff
+155 -135
View File
@@ -12,124 +12,132 @@
static void daAlinkHIO_setAnmGenMessage(daAlinkHIO_anm_c* i_anmP, JORMContext* ctx, char* param_3,
f32 param_4, int param_5) {
size_t sVar1;
char acStack_94[100];
char labelbuf[100];
sVar1 = strlen(param_3);
sprintf(acStack_94, param_3);
sprintf(labelbuf, param_3);
// A Speed
sprintf(acStack_94 + sVar1, "A速度");
ctx->genSlider(acStack_94, &i_anmP->mSpeed, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
sprintf(labelbuf + sVar1, "A速度");
ctx->genSlider(labelbuf, &i_anmP->mSpeed, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Starting F
sprintf(acStack_94 + sVar1, "開始F");
ctx->genSlider(acStack_94, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "開始F");
ctx->genSlider(labelbuf, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
// Ending F
sprintf(acStack_94 + sVar1, "終了F");
ctx->genSlider(acStack_94, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "終了F");
ctx->genSlider(labelbuf, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
if (param_5 != 0) {
sprintf(acStack_94 + sVar1, "CF");
ctx->genSlider(acStack_94, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
sprintf(labelbuf + sVar1, "CF");
ctx->genSlider(labelbuf, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
0xffff, 0x200, 0x18);
}
// Interpolation
sprintf(acStack_94 + sVar1, "補間");
ctx->genSlider(acStack_94, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "補間");
ctx->genSlider(labelbuf, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
}
static void daAlinkHIO_setReverseAnmGenMessage(daAlinkHIO_anm_c* i_anmP, JORMContext* ctx,
char* param_3, f32 param_4, int param_5) {
size_t sVar1;
char acStack_94[100];
char labelbuf[100];
sVar1 = strlen(param_3);
sprintf(acStack_94, param_3);
sprintf(labelbuf, param_3);
// A Speed
sprintf(acStack_94 + sVar1, "A速度");
ctx->genSlider(acStack_94, &i_anmP->mSpeed, -10.0f, 0.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
sprintf(labelbuf + sVar1, "A速度");
ctx->genSlider(labelbuf, &i_anmP->mSpeed, -10.0f, 0.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Starting F
sprintf(acStack_94 + sVar1, "開始F");
ctx->genSlider(acStack_94, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "開始F");
ctx->genSlider(labelbuf, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
// Ending F
sprintf(acStack_94 + sVar1, "終了F");
ctx->genSlider(acStack_94, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "終了F");
ctx->genSlider(labelbuf, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
if (param_5 != 0) {
sprintf(acStack_94 + sVar1, "CF");
ctx->genSlider(acStack_94, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
sprintf(labelbuf + sVar1, "CF");
ctx->genSlider(labelbuf, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
0xffff, 0x200, 0x18);
}
// Interpolation
sprintf(acStack_94 + sVar1, "補間");
ctx->genSlider(acStack_94, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
sprintf(labelbuf + sVar1, "補間");
ctx->genSlider(labelbuf, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
}
// DEBUG NONMATCHING - regalloc + extra mr instruction
void daAlinkHIO_data_c::setStructData(char* param_1) {
u8* pfVar2;
u8* pfVar4;
void daAlinkHIO_data_c::setStructData(char* o_data) {
int i, j;
s16* ps16data;
f32* pf32data;
daAlinkHIO_anm_c* panmdata;
u8* pu8data;
sprintf(param_1 + strlen(param_1), m_name_string);
pfVar2 = (u8*)mp_data;
// open struct data string
sprintf(o_data + strlen(o_data), m_name_string);
panmdata = (daAlinkHIO_anm_c*)mp_data;
for (int i = 0; i < m_anm_num; i++) {
sprintf(param_1 + strlen(param_1), "\t{\n");
pfVar4 = pfVar2;
// create daAlinkHIO_anm_c data string
for (i = 0; i < m_anm_num; i++) {
sprintf(o_data + strlen(o_data), "\t{\n");
for (int i = 0; i < 2; i++) {
sprintf(param_1 + strlen(param_1), "\t\t%d,\n", *(s16*)pfVar4);
pfVar4 += 2;
ps16data = (s16*)panmdata;
for (j = 0; j < 2; j++) {
sprintf(o_data + strlen(o_data), "\t\t%d,\n", *ps16data);
ps16data++;
}
pfVar4 = pfVar2;
for (int i = 0; i < 4; i++) {
sprintf(param_1 + strlen(param_1), "\t\t%ff,\n", *(f32*)pfVar4);
pfVar4 += 4;
pf32data = (f32*)ps16data;
for (j = 0; j < 4; j++) {
sprintf(o_data + strlen(o_data), "\t\t%ff,\n", *pf32data);
pf32data++;
}
pfVar2 += 0x14;
sprintf(param_1 + strlen(param_1), "\t},\n");
panmdata++;
sprintf(o_data + strlen(o_data), "\t},\n");
}
pfVar4 = pfVar2;
for (int i = 0; i < m_u8_num; i++) {
sprintf(param_1 + strlen(param_1), "\t%d,\n", *(u8*)pfVar2);
pfVar2++;
// create u8 data string
pu8data = (u8*)panmdata;
for (i = 0; i < m_u8_num; i++) {
sprintf(o_data + strlen(o_data), "\t%d,\n", *pu8data);
pu8data++;
}
for (int i = 0; i < m_s16_num; i++) {
sprintf(param_1 + strlen(param_1), "\t%d,\n", *(s16*)pfVar2);
pfVar2 += 2;
// create s16 data string
ps16data = (s16*)pu8data;
for (i = 0; i < m_s16_num; i++) {
sprintf(o_data + strlen(o_data), "\t%d,\n", *ps16data);
ps16data++;
}
for (int i = 0; i < m_f32_num; i++) {
sprintf(param_1 + strlen(param_1), "\t%ff,\n", *(f32*)pfVar2);
pfVar2 += 4;
// create f32 data string
pf32data = (f32*)ps16data;
for (i = 0; i < m_f32_num; i++) {
sprintf(o_data + strlen(o_data), "\t%ff,\n", *pf32data);
pf32data++;
}
sprintf(param_1 + strlen(param_1), "};\n\n");
// close struct data string
sprintf(o_data + strlen(o_data), "};\n\n");
}
daAlinkHIO_data_c* l_HIO_before;
daAlinkHIO_data_c* l_HIO_top;
void daAlinkHIO_data_c::checkDataSize() {
u32 dataSize = (m_u8_num + m_anm_num * 0x14) + (m_s16_num * 2) + (m_f32_num * 4);
u32 dataSize = (m_u8_num + m_anm_num * sizeof(daAlinkHIO_anm_c)) + (m_s16_num * sizeof(s16)) + (m_f32_num * sizeof(f32));
JUT_ASSERT(188, dataSize == m_len);
if (l_HIO_before != NULL) {
@@ -146,49 +154,65 @@ void daAlinkHIO_data_c::baseCopy() {
cLib_memCpy(mp_data, mp_src_data, m_len);
}
// DEBUG NONMATCHING
void daAlinkHIO_data_c::update() {
int i, j;
s16* ps16data;
u8* pu8data;
f32* pf32data;
daAlinkHIO_anm_c* panmdata;
baseCopy();
JORMContext* ctx = attachJORMContext(8);
ctx->startUpdateNode(this);
u8* local_20 = (u8*)mp_data;
for (int i = 0; i < m_anm_num; i++) {
ctx->updateSlider(2, (s16*)local_20, 0, 0, 0);
panmdata = (daAlinkHIO_anm_c*)mp_data;
for (i = 0; i < m_anm_num; i++) {
ps16data = (s16*)panmdata;
ctx->updateSlider(2, ps16data, 0, 0, 0);
ps16data++;
ps16data++;
for (int j = 0; j < 4; local_20 += 4, j++) {
ctx->updateSlider(2, (f32*)local_20, 0.0f, 0.0f, 0);
pf32data = (f32*)ps16data;
for (j = 0; j < 4; j++) {
ctx->updateSlider(2, pf32data, 0.0f, 0.0f, 0);
pf32data++;
}
panmdata++;
}
for (int i = 0; i < f14; i++) {
ctx->updateCheckBox(2, local_20, 1, 0);
pu8data = (u8*)panmdata;
for (i = 0; i < f14; i++) {
ctx->updateCheckBox(2, pu8data, 1, 0);
pu8data++;
}
for (int i = 0; i < f18; i++) {
ctx->updateComboBox(2, local_20, 0);
// local_20++;
for (i = 0; i < f18; i++) {
ctx->updateComboBox(2, pu8data, 0);
pu8data++;
}
for (int i = 0; i < (m_u8_num - f14 + f18); i++) {
// local_20++;
int spC = m_u8_num - (f14 + f18);
for (i = 0; i < spC; i++) {
pu8data++;
}
int iVar1 = f1c;
int iVar3 = m_s16_num;
for (int i = 0; i < iVar3 - iVar1; i++) {
ctx->updateSlider(2, (s16*)local_20, 0, 0, 0);
// local_20 += 2;
ps16data = (s16*)pu8data;
int sp8 = m_s16_num - f1c;
for (i = 0; i < sp8; i++) {
ctx->updateSlider(2, ps16data, 0, 0, 0);
ps16data++;
}
for (int i = 0; i < f1c; i++) {
// local_20 += 2;
for (i = 0; i < f1c; i++) {
ps16data++;
}
for (int i = 0; i < m_f32_num; i++) {
ctx->updateSlider(2, (f32*)local_20, 0.0f, 0.0f, 0);
// local_20 += 4;
pf32data = (f32*)ps16data;
for (i = 0; i < m_f32_num; i++) {
ctx->updateSlider(2, pf32data, 0.0f, 0.0f, 0);
pf32data++;
}
ctx->endUpdateNode();
@@ -5812,9 +5836,9 @@ void daAlinkHIO_c::jumpStateUpdate(const cXyz* param_0, const cXyz* param_1, f32
JORMContext* ctx = attachJORMContext(8);
ctx->startUpdateNode(this);
sprintf(buf, "水平距離 %-8.3f", JMAFastSqrt(xDiff * xDiff + zDiff * zDiff));
ctx->updateLabel(2, 0x4000006, buf);
ctx->updateLabel(2, PROPERTY_JUMP_HDIST_DISP_e, buf);
sprintf(buf, "最頂点 %-8.3f", param_2);
ctx->updateLabel(2, 0x4000007, buf);
ctx->updateLabel(2, PROPERTY_JUMP_VDIST_DISP_e, buf);
ctx->endUpdateNode();
releaseJORMContext(ctx);
}
@@ -5823,15 +5847,15 @@ void daAlinkHIO_c::genMessage(JORMContext* ctx) {
// ------ Info Display ------
ctx->genLabel("------情報表示------", 0x4000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Horizontal Distance
ctx->genLabel("水平距離", 0x4000006, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel("水平距離", PROPERTY_JUMP_HDIST_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Vertical Distance
ctx->genLabel("最頂点", 0x4000007, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Reset
ctx->genButton("位置", 0x4000002, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel("最頂点", PROPERTY_JUMP_VDIST_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Position
ctx->genButton("位置", PROPERTY_POS_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Save to File
ctx->genButton("ファイルに保存", 0x4000004, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genButton("ファイルに保存", PROPERTY_SAVE_FILE_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Load File
ctx->genButton("ファイル読込", 0x4000005, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genButton("ファイル読込", PROPERTY_LOAD_FILE_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
// Basic
ctx->genNode("基本", &mBasic, 0, 0);
// Move
@@ -5880,51 +5904,49 @@ void daAlinkHIO_c::genMessage(JORMContext* ctx) {
ctx->genNode("", &mWolf, 0, 0);
}
void daAlinkHIO_c::readFileData(char* param_0) {
int src;
void daAlinkHIO_c::readFileData(char* o_fileData) {
int position;
daAlinkHIO_data_c* top;
src = 0;
position = 0;
for (top = l_HIO_top; top != NULL; top = top->mpNext) {
cLib_memCpy(top->mp_src_data, param_0 + src, top->m_len);
cLib_memCpy(top->mp_src_data, o_fileData + position, top->m_len);
top->update();
src += top->m_len;
position += top->m_len;
}
}
size_t daAlinkHIO_c::makeFileOutData(char* param_0, char* param_1) {
size_t sVar1;
int iVar2;
size_t daAlinkHIO_c::makeFileOutData(char* o_fileData, char* o_structData) {
int position;
daAlinkHIO_data_c* top;
iVar2 = 0;
position = 0;
for (top = l_HIO_top; top != NULL; top = top->mpNext) {
cLib_memCpy(param_0 + iVar2, top->mp_data, top->m_len);
iVar2 += top->m_len;
cLib_memCpy(o_fileData + position, top->mp_data, top->m_len);
position += top->m_len;
}
param_0[iVar2] = 10;
iVar2++;
o_fileData[position] = '\n';
position++;
top = l_HIO_top;
*param_1 = 0;
*o_structData = 0;
for (; top != NULL; top = top->mpNext) {
top->setStructData(param_1);
top->setStructData(o_structData);
}
cLib_memCpy(param_0 + iVar2, param_1, strlen(param_1));
return iVar2 + strlen(param_1);
cLib_memCpy(o_fileData + position, o_structData, strlen(o_structData));
return position + strlen(o_structData);
}
void daAlinkHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
fopAc_ac_c* player = dComIfGp_getPlayer(0);
JORReflexible::listenPropertyEvent(event);
JORFile aJStack_168;
JORFile file;
switch ((u32)event->id) {
case 0x4000002: {
OS_REPORT("X = %f, Y = %f, Z = %f,\n", player->current.pos.x, player->current.pos.y,
player->current.pos.z);
case PROPERTY_POS_DISP_e: {
OS_REPORT("X = %f, Y = %f, Z = %f,\n", player->current.pos.x, player->current.pos.y, player->current.pos.z);
OS_REPORT("SHAPE_ANGLE = %x, %d\n", player->shape_angle.y, player->shape_angle.y);
OS_REPORT("CURRENT_ANGLE = %x, %d\n", player->current.angle.y, player->current.angle.y);
@@ -5934,60 +5956,58 @@ void daAlinkHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
dComIfG_play_c::getLayerNo(0));
break;
}
case 0x4000004: {
if (aJStack_168.open(6, "すべてのファイル(*.*)\0*.*\0", 0, 0, 0) != 0) {
char* buffer1 = new (0x20) char[0x10000];
char* buffer2 = new (0x20) char[0x10000];
case PROPERTY_SAVE_FILE_e: {
if (file.open(6, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL)) {
char* fileData = new (0x20) char[0x10000];
char* structData = new (0x20) char[0x10000];
if (buffer1 != NULL && buffer2 != NULL) {
size_t uVar5 = makeFileOutData(buffer1, buffer2);
aJStack_168.writeData(buffer1, uVar5);
if (fileData != NULL && structData != NULL) {
size_t dataSize = makeFileOutData(fileData, structData);
file.writeData(fileData, dataSize);
// Write area %x\n
OS_REPORT("書き込み領域%x\n", uVar5);
OS_REPORT("書き込み領域%x\n", dataSize);
if (uVar5 > 0x20000) {
if (dataSize > 0x20000) {
// Memory corruption has occurred!!!!!
OS_REPORT("メモリ破壊が起こりました!!!!!\n");
}
delete[] buffer1;
delete[] buffer2;
delete[] fileData;
delete[] structData;
} else {
if (buffer1 != NULL) {
delete[] buffer1;
if (fileData != NULL) {
delete[] fileData;
}
if (buffer2 != NULL) {
delete[] buffer2;
if (structData != NULL) {
delete[] structData;
}
// Could not secure the write area
OS_REPORT("書き込み用領域確保できませんでした\n");
}
aJStack_168.close();
file.close();
} else {
// Cannot open file
OS_REPORT("ファイルが開けません\n");
}
break;
}
case 0x4000005: {
if (aJStack_168.open(1, "すべてのファイル(*.*)\0*.*\0", (char*)0x0, (char*)0x0, (char*)0x0) != 0) {
char* buffer1 = new (0x20) char[0x10000];
case PROPERTY_LOAD_FILE_e: {
if (file.open(1, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL)) {
char* fileData = new (0x20) char[0x10000];
if (buffer1 != NULL) {
aJStack_168.readData(buffer1, 0);
readFileData(buffer1);
delete[] buffer1;
if (fileData != NULL) {
file.readData(fileData, 0);
readFileData(fileData);
delete[] fileData;
} else {
// Could not secure the read area
OS_REPORT("読み込み用領域確保できませんでした\n");
}
aJStack_168.close();
file.close();
} else {
// The file cannot be opened
OS_REPORT("ファイルが開けません\n");
+42 -34
View File
@@ -94,9 +94,12 @@ bool daAlink_c::checkBoomerangChargeEnd() {
}
BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
if (checkNoResetFlg0(FLG0_UNK_20) && !checkEventRun() && !checkWolf() &&
checkModeFlg(0x10000000) &&
(checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime())) {
if (checkNoResetFlg0(FLG0_UNK_20)
&& !checkEventRun()
&& !checkWolf()
&& checkModeFlg(0x10000000)
&& (checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime()))
{
deleteEquipItem(FALSE, FALSE);
seStartOnlyReverb(JA_SE_LK_BOOM_CATCH);
offNoResetFlg0(FLG0_UNK_20);
@@ -110,13 +113,12 @@ BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
return 0;
}
void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) {
void daAlink_c::initBoomerangUpperAnimeSpeed(BOOL param_0) {
if (!checkBoomerangThrowAnime()) {
if (param_0 != 0) {
f32 tmp = 0.0f;
mUpperFrameCtrl[2].setRate(tmp);
mUpperFrameCtrl[2].setFrame(tmp);
getNowAnmPackUpper(UPPER_2)->setFrame(tmp);
if (param_0) {
mUpperFrameCtrl[2].setRate(0.0f);
mUpperFrameCtrl[2].setFrame(0.0f);
getNowAnmPackUpper(UPPER_2)->setFrame(0.0f);
} else {
mUpperFrameCtrl[2].setRate(mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed);
}
@@ -129,37 +131,36 @@ BOOL daAlink_c::checkBoomerangAnime() const {
BOOL daAlink_c::checkBoomerangThrowAnime() const {
return (mEquipItem == fpcNm_ITEM_BOOMERANG || checkNoResetFlg1(FLG1_UNK_2) || mEquipItem == 0x102) &&
checkUpperAnime(0x53);
checkUpperAnime(dRes_ID_ALANM_BCK_BOOMTHROW_e);
}
void daAlink_c::setBoomerangReadyQuake() {
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
onNoResetFlg3(FLG3_UNK_4);
mItemVar0.field_0x3018 = mpHIO->mItem.mBoomerang.m.mChargeTime;
}
void daAlink_c::setBoomerangReadyAnime() {
f32 var_f31;
if (checkAttentionLock()) {
var_f31 = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
f32 anm_speed;
if (!checkAttentionLock()) {
anm_speed = 0.0f;
} else {
var_f31 = 0.0f;
anm_speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
}
setUpperAnimeBaseSpeed(0x54, var_f31, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, anm_speed, 3.0f);
setBoomerangReadyQuake();
}
void daAlink_c::setThrowBoomerangAnime() {
setUpperAnimeParam(0x53, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMTHROW_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
cancelItemUseQuake(0);
}
void daAlink_c::setBoomerangCatchAnime() {
setUpperAnimeParam(0x52, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
setFacePriBck(0xE8);
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMCATCH_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f97 = 254;
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
@@ -234,12 +235,20 @@ void daAlink_c::throwBoomerang() {
int daAlink_c::returnBoomerang(int param_0) {
dComIfGp_clearPlayerStatus0(0, 0x400000);
if (mEquipItem == fpcNm_ITEM_NONE && !checkMagneBootsOn() && mItemAcKeep.getActor() == NULL &&
!checkBoardRide() && !checkBoarRide() && !checkWolf() &&
(mProcID != PROC_HANG_READY || field_0x3198 != 3) && (!checkEventRun() || param_0 != 0) &&
(checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
checkDashDamageAnime() || checkBoomerangAnime()) &&
!checkModeFlg(0x1BD0810)) {
if (mEquipItem == fpcNm_ITEM_NONE
&& !checkMagneBootsOn()
&& mItemAcKeep.getActor() == NULL
#if !PLATFORM_SHIELD
&& !checkBoardRide()
&& !checkBoarRide()
#endif
&& !checkWolf()
&& (mProcID != PROC_HANG_READY || field_0x3198 != 3)
&& (!checkEventRun() || param_0 != 0)
&& (checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
checkDashDamageAnime() || checkBoomerangAnime())
&& !checkModeFlg(0x1BD0810))
{
mItemAcKeep = mThrowBoomerangAcKeep;
mThrowBoomerangAcKeep.clearData();
@@ -247,8 +256,7 @@ int daAlink_c::returnBoomerang(int param_0) {
field_0x2f94 = 2;
onNoResetFlg0(FLG0_UNK_20);
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
return 1;
}
@@ -349,7 +357,7 @@ void daAlink_c::setBoomerangSight() {
daBoomerang_c* boomerang = (daBoomerang_c*)mItemAcKeep.getActor();
if (boomerang->getLockReserve() || (check_line && !boomerang->getLockCntMax())) {
setItemActionButtonStatus(0x10);
setItemActionButtonStatus(BUTTON_STATUS_LOCK);
itemActionTrigger();
}
}
@@ -376,7 +384,7 @@ int daAlink_c::procBoomerangSubject() {
}
if (checkBoomerangReadyAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -414,14 +422,14 @@ int daAlink_c::procBoomerangMove() {
}
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
@@ -432,7 +440,7 @@ int daAlink_c::procBoomerangMove() {
}
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
@@ -459,7 +467,7 @@ int daAlink_c::procBoomerangCatch() {
onModeFlg(4);
}
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
resetUpperAnime(UPPER_2, -1.0f);
checkNextAction(0);
} else {
+71 -83
View File
@@ -12,7 +12,7 @@ static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1);
int daAlink_c::bottleModelCallBack() {
if (mItemMode != 0) {
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(field_0x30c2));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mRightItemJntNo));
mDoMtx_stack_c::transM(-3.0f, -1.0f, 0.3f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(102.0f), cM_deg2s(-0.5f), cM_deg2s(-122.0f));
mDoMtx_copy(mDoMtx_stack_c::get(), mHeldItemModel->getAnmMtx(1));
@@ -22,6 +22,8 @@ int daAlink_c::bottleModelCallBack() {
}
static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
@@ -46,36 +48,36 @@ BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) {
void daAlink_c::setBottleModel(u16 i_itemNo) {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModelEnv(loadAramBmd(0x310, 0x5C00), 0x1020200);
field_0x072c = loadAramItemBtp(0x3AE, mHeldItemModel);
field_0x0724 = loadAramItemBrk(0x322, mHeldItemModel);
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOTTLE_e, 0x5C00), 0x1020200);
field_0x072c = loadAramItemBtp(dRes_ID_ALANM_BTP_AL_BOTTLE_e, mHeldItemModel);
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_BOTTLE_e, mHeldItemModel);
if (checkDrinkBottleItem(i_itemNo) || checkOilBottleItemNotGet(i_itemNo)) {
field_0x071c = loadAramItemBtk(0x328, mHeldItemModel);
field_0x0720 = loadAramItemBtk(0x327, mHeldItemModel);
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_YURE_e, mHeldItemModel);
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_NOMU_e, mHeldItemModel);
} else {
field_0x071c = loadAramItemBtk(0x32A, mHeldItemModel);
field_0x0720 = loadAramItemBtk(0x329, mHeldItemModel);
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_NUKU_e, mHeldItemModel);
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_DASU_e, mHeldItemModel);
}
field_0x0718 = loadAramItemBtk(0x32B, mHeldItemModel);
field_0x0718 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_YURE_e, mHeldItemModel);
if (i_itemNo == fpcNm_ITEM_FAIRY) {
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E8, 0xC00);
mpHookTipModel = initModel(loadAramBmd(0x31D, 0x1400), 0);
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_NV_e, 0xC00);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_NV_e, 0x1400), 0);
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(142, FALSE);
}
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
} else if (i_itemNo == fpcNm_ITEM_WORM) {
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E9, 0xC00);
mpHookTipModel = initModel(loadAramBmd(0x31E, 0x2400), 0);
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_WORM_e, 0xC00);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_WORM_e, 0x2400), 0);
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(151, FALSE);
}
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
} else if (i_itemNo == fpcNm_ITEM_BEE_CHILD) {
mpHookTipModel = initModel(loadAramBmd(0x31C, 0x1000), 0);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_HK_e, 0x1000), 0);
}
mDoExt_setCurrentHeap(prev_heap);
@@ -139,14 +141,13 @@ void daAlink_c::setBottleModel(u16 i_itemNo) {
}
}
int daAlink_c::commonBottleDrink(int param_0) {
int daAlink_c::commonBottleDrink(BOOL param_0) {
simpleAnmPlay(field_0x0718);
simpleAnmPlay(field_0x071c);
daPy_frameCtrl_c* frameCtrl_p;
u16 current_anm;
if (param_0 || mUpperAnmHeap[2].getIdx() == 0x247) {
if (param_0 || mUpperAnmHeap[2].getIdx() == dRes_ID_ALANM_BCK_TAKEL_e) {
frameCtrl_p = &mUpperFrameCtrl[2];
current_anm = mUpperAnmHeap[2].getIdx();
} else {
@@ -222,18 +223,14 @@ int daAlink_c::commonBottleDrink(int param_0) {
if (dComIfGs_getLife() <= 2) {
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
} else if (dComIfGs_getLife() <= 4) {
mItemVar0.mBottleItemHealAmount =
(dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() ||
cM_rnd() < 0.5f)
{
mItemVar0.mBottleItemHealAmount = (dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() || cM_rnd() < 0.5f) {
mItemVar0.mBottleItemHealAmount = -4;
} else {
mItemVar0.mBottleItemHealAmount = 4;
}
} else if (mEquipItem == fpcNm_ITEM_CHUCHU_PURPLE) {
f32 rnd = cM_rndF(6.0f);
if (rnd < 1.0f) {
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
} else if (rnd < 2.0f) {
@@ -329,7 +326,6 @@ int daAlink_c::commonBottleDrink(int param_0) {
return 0;
}
fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
cXyz fairy_pos;
@@ -345,11 +341,8 @@ fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
i_pos = &fairy_pos;
}
fopAc_ac_c* fairy_actor =
(fopAc_ac_c*)fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
&shape_angle, NULL, -1, NULL, NULL);
field_0x285c.setData(fairy_actor);
field_0x285c.setData(fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
&shape_angle, NULL, -1, NULL, NULL));
onResetFlg0(RFLG0_UNK_400);
if (checkEventRun() && field_0x285c.getActor() != NULL) {
@@ -365,7 +358,7 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
return 1;
}
} else {
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
return 0;
}
@@ -401,8 +394,8 @@ int daAlink_c::procBottleDrink() {
return 1;
}
int daAlink_c::procBottleOpenInit(u16 param_0) {
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
int daAlink_c::procBottleOpenInit(u16 i_itemNo) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
return 0;
}
@@ -414,7 +407,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
setSingleAnimeParam(ANM_BOTTLE_OPEN, &mpHIO->mItem.mBottle.m.mOpenBottleAnm);
keepItemData();
setBottleModel(param_0);
setBottleModel(i_itemNo);
dComIfGp_setPlayerStatus1(0, 0x4000);
mProcVar1.field_0x300a = 0;
field_0x32cc = -1;
@@ -435,21 +428,19 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
mProcVar3.field_0x300e = 0;
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
mProcVar2.field_0x300c = 0;
field_0x27c8.initialize(current.pos.y + field_0x598);
field_0x27c8.initialize(current.pos.y + mHeight);
if (param_0 == 0x67) {
setCylAtParam(0x200, dCcG_At_Spl_UNK_0, 0, 0, 0, 30.0f, 30.0f);
if (i_itemNo == fpcNm_ITEM_WATER_BOTTLE) {
setCylAtParam(AT_TYPE_LANTERN_SWING, dCcG_At_Spl_UNK_0, 0, dCcD_SE_NONE, 0, 30.0f, 30.0f);
}
mProcVar4.field_0x3010 = 0;
mProcVar4.field_0x3010 = 0;
return 1;
}
int daAlink_c::procBottleOpen() {
static Vec const bottleTop = {0.0f, 25.0f, 0.0f};
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
@@ -486,17 +477,17 @@ int daAlink_c::procBottleOpen() {
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
if (mEquipItem == fpcNm_ITEM_FAIRY) {
cXyz spC;
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &spC);
cXyz fairyPos;
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &fairyPos);
if (makeFairy(&spC, 0)) {
if (makeFairy(&fairyPos, 0)) {
onModeFlg(0x8000000);
mpHookTipModel = NULL;
resetFairyEffect();
}
}
} else if (frameCtrl_p->getFrame() >= 18.0f) {
field_0x2f93 = 5;
mRightHandIndex = 5;
}
} else {
if (checkAnmEnd(frameCtrl_p) && mProcVar0.field_0x3008 != 0) {
@@ -534,14 +525,12 @@ int daAlink_c::procBottleOpen() {
return 1;
}
int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
fopAc_ac_c* var_r31 = param_0;
if (var_r31 != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
int daAlink_c::procBottleSwingInit(fopAc_ac_c* i_catchActor, int param_1) {
if (i_catchActor != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
return procPreActionUnequipInit(PROC_BOTTLE_SWING, NULL);
}
if (var_r31 == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
if (i_catchActor == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
return checkWaitAction();
}
@@ -551,22 +540,24 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
field_0x2f98 = 4;
mProcVar4.field_0x3010 = param_1;
if (var_r31 != NULL) {
field_0x280c.setData(var_r31);
fopAc_ac_c* catchActor;
if (i_catchActor != NULL) {
catchActor = i_catchActor;
field_0x280c.setData(i_catchActor);
} else {
var_r31 = dComIfGp_att_getCatghTarget();
catchActor = dComIfGp_att_getCatghTarget();
}
BOOL temp_r3;
s16 temp_r30;
if (var_r31 != NULL) {
if (var_r31->attention_info.position.y > field_0x3834.y - 30.0f) {
s16 catchActorName;
if (catchActor != NULL) {
if (catchActor->attention_info.position.y > field_0x3834.y - 30.0f) {
temp_r3 = false;
} else {
temp_r3 = true;
}
temp_r30 = fopAcM_GetName(var_r31);
catchActorName = fopAcM_GetName(catchActor);
} else {
if (field_0x2fbc != 11 && field_0x2fbc != 6 && mWaterY > current.pos.y + 10.0f) {
temp_r3 = true;
@@ -574,16 +565,16 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
temp_r3 = false;
}
temp_r30 = PROC_ALINK;
catchActorName = PROC_ALINK;
}
if (temp_r30 == PROC_OBJ_OILTUBO || temp_r30 == PROC_TAG_SSDRINK ||
temp_r30 == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
if (catchActorName == PROC_OBJ_OILTUBO || catchActorName == PROC_TAG_SSDRINK ||
catchActorName == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
{
setSingleAnimeParam(ANM_BOTTLE_SCOOP, &mpHIO->mItem.mBottle.m.mScoopAnm);
if (mEquipItem == fpcNm_ITEM_KANTERA) {
onNoResetFlg2(FLG2_UNK_10000000);
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
JPABaseEmitter* emitter_p = dComIfGp_particle_getEmitter(field_0x31c4);
if (emitter_p != NULL) {
@@ -594,15 +585,15 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
field_0x3478 = mpHIO->mItem.mBottle.m.mScoopAnm.mCancelFrame;
field_0x347c = 14.0f;
if (var_r31 != NULL) {
shape_angle.y = cLib_targetAngleY(&current.pos, &var_r31->current.pos);
if (catchActor != NULL) {
shape_angle.y = cLib_targetAngleY(&current.pos, &catchActor->current.pos);
current.angle.y = shape_angle.y;
current.pos.x = var_r31->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
current.pos.z = var_r31->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
current.pos.x = catchActor->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
current.pos.z = catchActor->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
}
if (temp_r30 == PROC_OBJ_OILTUBO) {
if (catchActorName == PROC_OBJ_OILTUBO) {
onModeFlg(0x2000);
}
} else if (temp_r3) {
@@ -622,7 +613,6 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
return 1;
}
int daAlink_c::procBottleSwing() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
@@ -702,9 +692,8 @@ int daAlink_c::procBottleSwing() {
return 1;
}
int daAlink_c::procBottleGetInit(int param_0) {
BOOL proc_pickup = mProcID == PROC_PICK_UP;
int daAlink_c::procBottleGetInit(BOOL param_0) {
BOOL isPrevPickUp = mProcID == PROC_PICK_UP;
commonProcInit(PROC_BOTTLE_GET);
int var_r30;
@@ -712,19 +701,19 @@ int daAlink_c::procBottleGetInit(int param_0) {
setSingleAnime(ANM_BOTTLE_GET, mpHIO->mItem.mBottle.m.mGetAnm.mSpeed, 40.0f,
mpHIO->mItem.mBottle.m.mGetAnm.mEndFrame,
mpHIO->mItem.mBottle.m.mGetAnm.mInterpolation);
field_0x2f93 = 0xFE;
mRightHandIndex = 0xFE;
if (proc_pickup) {
if (isPrevPickUp) {
execItemGet(fpcNm_ITEM_KANTERA);
var_r30 = 0xF8;
var_r30 = fpcNm_ITEM_KANTERA2;
dComIfGp_setItemOilCount(-dComIfGs_getMaxOil());
} else {
dComIfGp_setItemOilCount(dComIfGs_getMaxOil());
if (param_0) {
var_r30 = 0x9C;
var_r30 = fpcNm_ITEM_CHUCHU_YELLOW2;
} else {
var_r30 = 0x6E;
var_r30 = fpcNm_ITEM_OIL2;
}
}
@@ -751,15 +740,14 @@ int daAlink_c::procBottleGetInit(int param_0) {
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
if (mEquipItem == fpcNm_ITEM_FAIRY_DROP || mEquipItem == fpcNm_ITEM_CHUCHU_RARE || mEquipItem == fpcNm_ITEM_WORM) {
setFaceBasicTexture(FTANM_UNK_48);
setFaceBasicBck(0x143);
setFaceBasicTexture(FTANM_I_BINGET);
setFaceBasicBck(dRes_ID_ALANM_BCK_FI_e);
} else if (mEquipItem == fpcNm_ITEM_UGLY_SOUP) {
setFaceBasicBck(0x146);
setFaceBasicBck(dRes_ID_ALANM_BCK_FJ_e);
}
// event flag 0x4A40: Ordon Day 1 completed
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(0x4A40)) {
dComIfGs_onEventBit(0x4C80); // event flag 0x4C80: Collected Bee Larva on Ordon Day 2
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(dSv_event_flag_c::F_0700)) {
dComIfGs_onEventBit(dSv_event_flag_c::F_0618);
}
return 1;
@@ -770,7 +758,7 @@ int daAlink_c::procBottleGet() {
simpleAnmPlay(field_0x0718);
if (frameCtrl->checkAnmEnd() && checkEndMessage(field_0x32cc)) {
if (checkAnmEnd(frameCtrl) && checkEndMessage(field_0x32cc)) {
resetFairyEffect();
if (mEquipItem != fpcNm_ITEM_KANTERA) {
deleteEquipItem(FALSE, FALSE);
@@ -778,12 +766,12 @@ int daAlink_c::procBottleGet() {
resetSpecialEvent();
} else if (frameCtrl->getFrame() >= 37.0f) {
field_0x2f93 = 0xFE;
mRightHandIndex = 0xFE;
} else if (frameCtrl->getFrame() >= 15.0f) {
mItemMode = 0;
} else if (frameCtrl->getFrame() >= 5.0f) {
mHeldItemModel->getModelData()->getMaterialNodePointer(0)->getShape()->show();
field_0x2f93 = 5;
mRightHandIndex = 5;
mItemMode = 1;
}
+71 -65
View File
@@ -8,7 +8,7 @@
#include "d/actor/d_a_arrow.h"
#include "d/actor/d_a_horse.h"
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, int i_forceCharge) const {
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, BOOL i_forceCharge) const {
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
*o_distance = mpHIO->mItem.mBow.m.mSlingshotDistance;
*o_speed = mpHIO->mItem.mBow.m.mSlingshotSpeed;
@@ -53,43 +53,45 @@ BOOL daAlink_c::checkBowAndSlingItem(int i_itemNo) {
}
void daAlink_c::setSlingModel() {
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x1F9);
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_PWAIT_e);
JKRHeap* prev_heap = setItemHeap();
J3DModelData* model_data = loadAramBmd(0x319, 0x2C00);
mHeldItemModel = initModel(model_data, 0);
mItemBck.init(bck, 0, 2, 1.0f, 0, -1, false);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PACHI_e, 0x2C00), 0);
if (!mItemBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(108, 0);
}
mDoExt_setCurrentHeap(prev_heap);
field_0x2f95 = 5;
field_0x2f94 = 103;
}
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* param_0, s16* param_1) {
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* o_angleX, s16* o_angleY) {
if (!checkBowAnime() || mEquipItem == fpcNm_ITEM_PACHINKO) {
return NULL;
}
s16 var_28;
s16 angle_y;
if (checkHorseRide() && checkBoarSingleBattle() && dComIfGp_getHorseActor() != NULL) {
var_28 = dComIfGp_getHorseActor()->shape_angle.y;
angle_y = dComIfGp_getHorseActor()->shape_angle.y;
} else if (checkMagneBootsOn()) {
var_28 = field_0x3118;
angle_y = field_0x3118;
} else {
var_28 = shape_angle.y;
angle_y = shape_angle.y;
}
var_28 += mBodyAngle.y;
angle_y += mBodyAngle.y;
mDoMtx_stack_c::transS(field_0x3834);
concatMagneBootMtx();
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, var_28, 0);
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, angle_y, 0);
static Vec const localPos = {3.45f, 45.32f, -7.0f};
static const Vec localPos = {3.45f, 45.32f, -7.0f};
mDoMtx_stack_c::multVec(&localPos, &mHeldItemRootPos);
*param_0 = mBodyAngle.x;
*param_1 = var_28;
*o_angleX = mBodyAngle.x;
*o_angleY = angle_y;
return &mHeldItemRootPos;
}
@@ -111,8 +113,13 @@ void daAlink_c::makeArrow() {
field_0x301e = 0;
}
fopAc_ac_c* arrow_p = daArrow_c::makeArrow(this, field_0x301e);
mItemAcKeep.setData(arrow_p);
mItemAcKeep.setData(daArrow_c::makeArrow(this, field_0x301e));
if (mItemAcKeep.getActor() == NULL) {
// "Not enough memory to create item!!"
OS_REPORT("メモリが足りなくてアイテム発生できません!!\n");
JUT_ASSERT(221, 0);
}
}
mItemVar0.field_0x3018 = 0;
@@ -152,7 +159,7 @@ void daAlink_c::changeArrowType() {
return;
}
setItemActionButtonStatus(0x11);
setItemActionButtonStatus(BUTTON_STATUS_SWITCH);
if (arrowChangeTrigger()) {
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
@@ -179,14 +186,13 @@ void daAlink_c::changeArrowType() {
}
}
BOOL daAlink_c::cancelBowMoveRideNotAtn() {
return checkModeFlg(0x400) && checkAttentionLock() && mTargetedActor == NULL;
}
BOOL daAlink_c::cancelBowMove() {
if (mTargetedActor == NULL && !checkAttentionLock() && mFastShotTime == 0 &&
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
!checkBowReadyAnime() && (!checkBowShootAnime() || checkAnmEnd(&mUpperFrameCtrl[2])))
{
resetUpperAnime(UPPER_2, -1.0f);
return true;
@@ -208,7 +214,7 @@ void daAlink_c::setBowReadyAnime() {
}
}
setUpperAnimeBase(0xD);
setUpperAnimeBase(dRes_ID_ALANM_BCK_ASHOOTWAIT_e);
if (checkResetFlg0(RFLG0_UNK_80)) {
mItemMode = 0;
@@ -220,23 +226,23 @@ void daAlink_c::setBowReadyAnime() {
field_0x2f96 = 4;
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F1, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_PSHOOT_e, -1.0f);
} else {
changeItemBck(0x43, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_BASHOOT_e, -1.0f);
}
}
void daAlink_c::setBowReloadAnime() {
setUpperAnimeParam(9, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
setFacePriTexture(FTANM_UNK_8);
setFacePriBck(0xE5);
setUpperAnimeParam(dRes_ID_ALANM_BCK_ARELORD_e, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
setFacePriTexture(FTANM_FINISHA);
setFacePriBck(dRes_ID_ALANM_BCK_FARELORD_e);
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F0, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
changeItemBck(dRes_ID_ALANM_BCK_PRELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
field_0x2f97 = 5;
seStartOnlyReverb(Z2SE_AL_PACHINKO_DRAW);
} else {
changeItemBck(0x41, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
changeItemBck(dRes_ID_ALANM_BCK_BARELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
field_0x2f97 = 7;
seStartOnlyReverb(Z2SE_AL_DRAW_BOW);
}
@@ -249,7 +255,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
daPy_frameCtrl_c* frameCtrl_p = &mUpperFrameCtrl[2];
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
static Vec const slingLocalPos = {10.0f, 10.0f, 0.0f};
static const Vec slingLocalPos = {10.0f, 10.0f, 0.0f};
mDoMtx_multVec(getLeftItemMatrix(), &slingLocalPos, &mHeldItemRootPos);
}
@@ -273,29 +279,29 @@ BOOL daAlink_c::checkUpperItemActionBow() {
if (checkReadyItem()) {
if (mItemVar0.field_0x3018 != 0) {
setUpperAnimeParam(0xC, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
setFacePriBck(0xE8);
setUpperAnimeParam(dRes_ID_ALANM_BCK_ASHOOT_e, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f96 = 0;
u16 var_r29;
u16 bck_res_id;
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
var_r29 = 0x1F1;
bck_res_id = dRes_ID_ALANM_BCK_PSHOOT_e;
if (dComIfGs_getPachinkoNum() != 0 &&
daArrow_c::makeSlingStone(this, &mHeldItemRootPos) != NULL)
{
dComIfGp_setItemPachinkoNumCount(-1);
}
} else if (field_0x301c != 0) {
var_r29 = 0x43;
bck_res_id = dRes_ID_ALANM_BCK_BASHOOT_e;
} else {
var_r29 = 0x44;
bck_res_id = dRes_ID_ALANM_BCK_BASHOOTTAME_e;
}
changeItemBck(var_r29, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
changeItemBck(bck_res_id, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
mItemVar0.field_0x3018 = 0;
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
if (!itemButton()) {
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
seStartOnlyReverb(Z2SE_AL_PACHINKO_SHOT);
mItemVar0.field_0x3018 = 1;
resetFacePriAnime();
@@ -303,11 +309,11 @@ BOOL daAlink_c::checkUpperItemActionBow() {
} else if (!itemButton()) {
if (arrow_p != NULL) {
u32 sound;
int shock_strength;
int vibmode;
if (field_0x301c != 0) {
arrow_p->setShoot();
shock_strength = 1;
vibmode = VIBMODE_S_POWER1;
if (arrow_p->checkBombArrow()) {
sound = Z2SE_OBJ_ARROWBOMB_SHOT;
@@ -316,7 +322,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
} else {
arrow_p->setChargeShoot();
shock_strength = 2;
vibmode = VIBMODE_S_POWER2;
if (arrow_p->checkBombArrow()) {
sound = Z2SE_OBJ_ARROWBOMB_SHOTGAIN;
@@ -325,7 +331,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
}
dComIfGp_getVibration().StartShock(shock_strength, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(vibmode, 1, cXyz(0.0f, 1.0f, 0.0f));
seStartOnlyReverb(sound);
if (field_0x301e == 1) {
@@ -352,13 +358,13 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
} else if (checkBowReloadAnime()) {
if (checkAnmEnd(frameCtrl_p)) {
setUpperAnimeBaseSpeed(10, 0.0f, -1.0f);
setFacePriTexture(FTANM_UNK_9);
setFacePriBck(0xE6);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_ARELORDTAME_e, 0.0f, -1.0f);
setFacePriTexture(FTANM_ARELORD);
setFacePriBck(dRes_ID_ALANM_BCK_FARELORDTAME_e);
if (mEquipItem != fpcNm_ITEM_PACHINKO) {
changeItemBck(0x42, 0.0f);
dComIfGp_getVibration().StartQuake(1, 1, cXyz(0.0f, 1.0f, 0.0f));
changeItemBck(dRes_ID_ALANM_BCK_BARELORDTAME_e, 0.0f);
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
onNoResetFlg3(FLG3_UNK_4);
}
}
@@ -423,7 +429,6 @@ BOOL daAlink_c::checkUpperItemActionBow() {
return cancelUpperItemReadyAnime(0);
}
void daAlink_c::checkUpperItemActionBowFly() {
if (checkBowAnime()) {
checkUpperItemActionBow();
@@ -439,7 +444,7 @@ int daAlink_c::checkNextActionBow() {
mFastShotTime--;
}
BOOL var_r31 = false;
BOOL is_hawk_arrow = false;
if (!checkBowAnime()) {
setBowReadyAnime();
setFastShotTimer();
@@ -452,7 +457,7 @@ int daAlink_c::checkNextActionBow() {
mItemVar0.field_0x3018 = 1;
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
var_r31 = true;
is_hawk_arrow = true;
mFastShotTime = 0;
}
@@ -471,7 +476,7 @@ int daAlink_c::checkNextActionBow() {
}
}
BOOL rt;
BOOL rt = FALSE;
if (!checkAttentionLock() && mFastShotTime == 0) {
if (checkModeFlg(0x400)) {
if (checkCanoeRide()) {
@@ -494,7 +499,7 @@ int daAlink_c::checkNextActionBow() {
}
}
if (rt && var_r31) {
if (rt && is_hawk_arrow) {
dComIfGp_setPlayerStatus0(0, 0x200000);
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
}
@@ -502,36 +507,37 @@ int daAlink_c::checkNextActionBow() {
return rt;
}
void daAlink_c::setBowModel() {
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x59);
JKRHeap* old_heap = setItemHeap();
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_BVJMPCL_e);
JKRHeap* heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOW_e, 0x4C00), 0);
if (!mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false)) {
JUT_ASSERT(894, 0);
}
mDoExt_setCurrentHeap(old_heap);
mDoExt_setCurrentHeap(heap);
field_0x33dc = mItemBck.getBckAnm()->getFrameMax() - 0.001f;
field_0x2f95 = 5;
field_0x2f94 = 0x67;
}
bool daAlink_c::checkBowGrabLeftHand() const {
return checkReinRide() && !checkBowAnime();
}
void daAlink_c::setBowHangAnime() {
if (checkBowItem(mEquipItem)) {
changeItemBck(0x58, 0.0f);
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCH_e, 0.0f);
}
}
void daAlink_c::setBowNormalAnime() {
if (checkBowItem(mEquipItem)) {
changeItemBck(0x59, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCL_e, -1.0f);
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F9, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_PWAIT_e, -1.0f);
}
}
@@ -563,7 +569,7 @@ int daAlink_c::procBowSubjectInit() {
}
int daAlink_c::procBowSubject() {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
if (!checkNextAction(0) && setBodyAngleToCamera()) {
setBowSight();
}
@@ -597,21 +603,21 @@ int daAlink_c::procBowMove() {
onEndResetFlg0(ERFLG0_UNK_8000000);
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
current.angle.y = shape_angle.y - 0x4000;
} else {
offModeFlg(1);
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
File diff suppressed because it is too large Load Diff
+35 -39
View File
@@ -43,7 +43,7 @@ fopAc_ac_c* daAlink_c::getCopyRodCameraActor() {
return NULL;
}
void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
void daAlink_c::initCopyRodUpperAnimeSpeed(BOOL param_0) {
if (!checkCopyRodThrowAnime()) {
if (param_0) {
mUpperFrameCtrl[2].setRate(0.0f);
@@ -60,11 +60,9 @@ BOOL daAlink_c::checkForestOldCentury() {
}
BOOL daAlink_c::checkCopyRodTopUse() {
// Event flag 0x2580: Dominion Rod power restored
return (dComIfGs_isEventBit(0x2580) &&
!(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0)) ||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
checkForestOldCentury();
return (dComIfGs_isEventBit(dSv_event_flag_c::F_0302) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0))
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) == dStage_SaveTbl_LV6
|| checkForestOldCentury();
}
BOOL daAlink_c::checkCopyRodAnime() const {
@@ -73,7 +71,7 @@ BOOL daAlink_c::checkCopyRodAnime() const {
void daAlink_c::setCopyRodControllAnime() {
if (checkNoUpperAnime() && getCopyRodControllActor()) {
setUpperAnimeBaseSpeed(0x202, 0.0f, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_RODD_e, 0.0f, 3.0f);
field_0x2f96 = 2;
field_0x2f97 = 5;
field_0x33e8 = 0.0f;
@@ -81,26 +79,26 @@ void daAlink_c::setCopyRodControllAnime() {
}
void daAlink_c::setCopyRodControllUpperSpeedRate() {
f32 var_f31;
f32 max_speed;
if (checkAttentionLock()) {
var_f31 = 1.0f;
max_speed = 1.0f;
} else {
if (mProcID == PROC_STEP_MOVE) {
var_f31 = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
max_speed = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
} else {
var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
max_speed = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
}
if (checkHeavyStateOn(1, 1)) {
var_f31 *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
if (checkHeavyStateOn(TRUE, TRUE)) {
max_speed *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
}
}
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
if (max_speed > 1.0f) {
max_speed = 1.0f;
}
cLib_chaseF(&field_0x33e8, var_f31, 0.15f);
cLib_chaseF(&field_0x33e8, max_speed, 0.15f);
daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
frame_ctrl->setFrame(field_0x33e8 * frame_ctrl->getEnd());
@@ -109,9 +107,8 @@ void daAlink_c::setCopyRodControllUpperSpeedRate() {
void daAlink_c::setCopyRodModel() {
JKRHeap* heap = setItemHeap();
J3DModelData* mdl_data = loadAramBmd(0x315, 0x5400);
mHeldItemModel = initModel(mdl_data, 0x80000, 0x1000000);
field_0x0724 = loadAramItemBrk(0x323, mHeldItemModel);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_CROD_e, 0x5400), 0x1000000);
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_CROD_CHANGE_COLOR_e, mHeldItemModel);
mDoExt_setCurrentHeap(heap);
field_0x0724->setFrame(0.0f);
@@ -119,25 +116,25 @@ void daAlink_c::setCopyRodModel() {
mAtCps[0].SetAtSpl(dCcG_At_Spl_UNK_0);
mAtCps[0].SetAtAtp(0);
mAtCps[0].SetAtSe(20);
mAtCps[0].SetAtSe(dCcD_SE_COPYROD);
mAtCps[0].SetAtHitMark(1);
mAtCps[0].OnAtSetBit();
mAtCps[0].SetAtHitCallback(NULL);
mAtCps[0].SetAtMtrl(dCcD_MTRL_NONE);
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(field_0x30c0));
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(mLeftItemJntNo));
mHeldItemModel->calc();
}
void daAlink_c::setCopyRodReadyAnime() {
f32 speed;
if (checkAttentionLock()) {
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
} else {
if (!checkAttentionLock()) {
speed = 0.0f;
} else {
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
}
setUpperAnimeBaseSpeed(0x54, speed, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, speed, 3.0f);
if (checkCopyRodTopUse()) {
seStartSwordCut(Z2SE_AL_COPYROD_READY);
@@ -160,6 +157,7 @@ void daAlink_c::throwCopyRod() {
onNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
mItemAcKeep.clearData();
}
dComIfGp_clearPlayerStatus0(0, 0x80);
mFastShotTime = -1;
voiceStart(Z2SE_AL_V_ATTACK_S);
@@ -179,20 +177,19 @@ void daAlink_c::throwCopyRod() {
int daAlink_c::returnCopyRod() {
offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
int var_r31;
BOOL rt;
if (mEquipItem == fpcNm_ITEM_COPY_ROD) {
mItemAcKeep = mCopyRodAcKeep;
onNoResetFlg0(FLG0_UNK_20);
var_r31 = 1;
rt = TRUE;
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
} else {
var_r31 = 0;
rt = FALSE;
}
mCopyRodAcKeep.clearData();
return var_r31;
return rt;
}
BOOL daAlink_c::checkUpperItemActionCopyRod() {
@@ -255,7 +252,6 @@ int daAlink_c::checkNextActionCopyRod() {
void daAlink_c::setCopyRodSight() {
if (mItemAcKeep.getActor() && !checkCopyRodThrowAnime()) {
cXyz sight_pos;
checkSightLine(getCopyRodBallDisMax(), &sight_pos);
mSight.setPos(&sight_pos);
mSight.onDrawFlg();
@@ -288,7 +284,7 @@ int daAlink_c::procCopyRodSubject() {
}
if (checkCopyRodReadyAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -326,20 +322,20 @@ int daAlink_c::procCopyRodMove() {
}
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
@@ -383,7 +379,7 @@ int daAlink_c::procCopyRodSwing() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
mProcVar2.field_0x300c = 0;
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
setCopyRodControllAnime();
checkNextAction(0);
} else if (frameCtrl->getFrame() > field_0x3480 && checkNextAction(1)) {
@@ -413,7 +409,7 @@ int daAlink_c::procCopyRodReviveInit() {
if (mDemo.getParam0() == 0) {
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
mEquipItem = fpcNm_ITEM_COPY_ROD;
setCopyRodModel();
}
@@ -428,7 +424,7 @@ int daAlink_c::procCopyRodReviveInit() {
int daAlink_c::procCopyRodRevive() {
simpleAnmPlay(field_0x0724);
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(&mUnderFrameCtrl[0])) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
+144 -120
View File
@@ -28,8 +28,13 @@ void daAlink_c::setCrawlMoveDirectionArrow() {
static const u8 data_80452F39 = 4;
u8 direction = 0;
camera_class* camera = (camera_class*)dComIfGp_getCamera(field_0x317c);
BOOL bvar = cLib_distanceAngleS(fopCamM_GetAngleY(camera), shape_angle.y) > 0x4000;
BOOL bvar;
if (cLib_distanceAngleS(fopCamM_GetAngleY(dComIfGp_getCamera(field_0x317c)), shape_angle.y) > 0x4000) {
bvar = TRUE;
} else {
bvar = FALSE;
}
if (field_0x3198 & 4) {
if (!bvar) {
@@ -140,9 +145,20 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
var_r29 |= 8;
}
}
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x), 0.5f * (sp34.z + sp28.z), sp70.x, sp70.z, param_0->x - (95.0f * temp_f31), param_0->z - (95.0f * temp_f30), &sp64.x, &sp64.z, &spC)) {
f32 var_f27 = param_0->x - (95.0f * temp_f31);
f32 var_f26 = param_0->z - (95.0f * temp_f30);
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x),
0.5f * (sp34.z + sp28.z),
sp70.x,
sp70.z,
var_f27,
var_f26,
&sp64.x,
&sp64.z,
&spC))
{
sp64.y = current.pos.y;
if (checkWolf()) {
return procWolfLieAutoMoveInit(var_r29, &sp64);
@@ -155,15 +171,15 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
}
int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
int param_4, u8* param_5) {
int param_4, u8* param_5) {
if (commonLineCheck(param_0, param_1) && ((param_4 == 0 && (!checkWolf() || !dComIfGp_checkPlayerStatus0(0, 0x08000000))) || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 6) && (!checkWolf() || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7)) {
cM3dGPla sp3C;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp3C);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
int temp_r27 = dComIfG_Bgsp().GetSpecialCode(mLinkLinChk);
if (cBgW_CheckBWall(sp3C.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(sp3C.mNormal.y))) {
if (cBgW_CheckBWall(tripla.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(tripla.mNormal.y))) {
cXyz sp1C = *param_1 - mLinkLinChk.GetCross();
s16 temp_r26 = sp3C.mNormal.atan2sX_Z();
s16 temp_r26 = tripla.mNormal.atan2sX_Z();
s16 temp_r3 = sp1C.atan2sX_Z();
if (abs((s16)((temp_r3 + 0x8000) - temp_r26)) > 0x3000) {
@@ -172,34 +188,34 @@ int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int
f32 temp_f31 = -sp1C.absXZ() * cM_scos(((temp_r3 - temp_r26) - 0x8000));
param_2->x = temp_f31 * sp3C.mNormal.x;
param_2->x = temp_f31 * tripla.mNormal.x;
if (param_3 != 1) {
param_2->y = 0.0f;
} else {
param_2->y = sp1C.y;
}
param_2->z = temp_f31 * sp3C.mNormal.z;
param_2->z = temp_f31 * tripla.mNormal.z;
if (param_5 != NULL && (dKy_pol_argument_get(&mLinkLinChk) & 0x60)) {
*param_5 = 3;
cM3dGPla sp28;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp28);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
field_0x311e = sp28.mNormal.atan2sX_Z();
field_0x311e = tripla.mNormal.atan2sX_Z();
if (checkIcePolygonDamage(&mLinkLinChk)) {
*param_5 |= 0x80;
*param_5 |= (u8)0x80;
}
if (dKy_pol_argument_get(&mLinkLinChk) & 0x20) {
*param_5 |= 0x40;
*param_5 |= (u8)0x40;
}
}
return 1;
}
if (param_3 == 1 && (temp_r27 == 1 || (sp3C.mNormal.y < field_0x3470 && temp_r27 == 2))) {
if (param_3 == 1 && (temp_r27 == 1 || (tripla.mNormal.y < field_0x3470 && temp_r27 == 2))) {
*param_2 = *param_1 - mLinkLinChk.GetCross();
return 1;
}
@@ -233,24 +249,24 @@ void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
}
BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2, cXyz* param_3,
s16* param_4, s16* param_5) {
s16* param_4, s16* param_5) {
cXyz sp58;
cXyz sp4C;
if (commonLineCheck(param_0, param_1)) {
cM3dGPla sp64;
cM3dGPla tripla;
*param_2 = mLinkLinChk.GetCross();
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
*param_4 = sp64.mNormal.atan2sX_Z();
*param_4 = tripla.mNormal.atan2sX_Z();
sp4C = *param_2 + (sp64.mNormal * 95.0f);
sp4C = *param_2 + (tripla.mNormal * 95.0f);
sp58 = (sp4C + *param_2) * 0.5f;
if (commonLineCheck(&sp58, &sp4C)) {
*param_3 = mLinkLinChk.GetCross();
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
*param_5 = sp64.mNormal.atan2sX_Z();
*param_5 = tripla.mNormal.atan2sX_Z();
cXyz sp40 = *param_2 - *param_3;
f32 temp_f31 = sp40.abs2XZ();
@@ -265,25 +281,25 @@ BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2,
void daAlink_c::decideCrawlDoStatus() {
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x80)) {
if (checkSubjectEnd(1) || mWaterY > current.pos.y) {
if (checkSubjectEnd(TRUE) || mWaterY > current.pos.y) {
dComIfGp_clearPlayerStatus0(0, 0x2000);
}
} else {
dCamera_c* camera = dCam_getBody();
} else if (dCam_getBody()->ChangeModeOK(4) && mWaterY <= current.pos.y) {
onResetFlg0(RFLG0_UNK_4000000);
if (camera->ChangeModeOK(4) && mWaterY <= current.pos.y) {
onResetFlg0(RFLG0_UNK_4000000);
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
setSubjectMode();
}
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
setSubjectMode();
}
}
}
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) {
mLinkRoofChk.SetPos(*param_0);
return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598;
if (dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= mHeight) {
return TRUE;
}
return FALSE;
}
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
@@ -303,6 +319,8 @@ BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
}
BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
UNUSED(param_3);
cXyz spC0;
cXyz spB4;
cXyz spA8;
@@ -325,7 +343,9 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
*param_2 += sp90;
spB4 = (*param_2 * 2.0f) - spC0;
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) || checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16)) {
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) ||
checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16))
{
field_0x3198 = 1;
field_0x37c8 = ((spA8 + sp9C) * 0.5f) - sp90;
mProcVar2.field_0x300c = sp16 + 0x4000;
@@ -336,9 +356,7 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
}
void daAlink_c::setCrawlMoveHoll() {
f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
if (frame_ctrl_rate) {
if (mUnderFrameCtrl[0].getRate()) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 5, 0x1000, 0x800);
current.angle.y = shape_angle.y;
}
@@ -357,7 +375,7 @@ void daAlink_c::setCrawlMoveAngle() {
cXyz sp2C;
cXyz sp38;
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mCrouch.m.mCrawlTurnRate,
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mCrouch.m.mCrawlTurnRate,
mpHIO->mCrouch.m.mCrawlTurnMax,
mpHIO->mCrouch.m.mCrawlTurnMin);
@@ -386,14 +404,14 @@ void daAlink_c::setCrawlMoveAngle() {
}
}
void daAlink_c::stopHalfMoveAnime(f32 param_0) {
void daAlink_c::stopHalfMoveAnime(f32 i_frame) {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
f32 frame;
if (frame_ctrl->checkPass(0.0f)) {
frame = 0.0f;
} else {
frame = param_0;
frame = i_frame;
}
frame_ctrl->setRate(0.0f);
@@ -402,11 +420,11 @@ void daAlink_c::stopHalfMoveAnime(f32 param_0) {
}
void daAlink_c::setCrawlAutoMoveAimPos() {
int temp_r30 = getDirectionFromShapeAngle();
int direction = getDirectionFromShapeAngle();
f32 temp_f31 = cM_ssin(shape_angle.y);
f32 temp_f30 = cM_scos(shape_angle.y);
if (temp_r30 == 2 && (field_0x3198 & 4)) {
if (direction == DIR_LEFT && (field_0x3198 & 4)) {
field_0x37c8.x += 1.5f * (95.0f * temp_f30);
field_0x37c8.z -= 1.5f * (95.0f * temp_f31);
@@ -419,7 +437,7 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
}
mProcVar0.field_0x3008 = -1;
} else if (temp_r30 == 3 && (field_0x3198 & 8)) {
} else if (direction == DIR_RIGHT && (field_0x3198 & 8)) {
field_0x37c8.x -= 1.5f * (95.0f * temp_f30);
field_0x37c8.z += 1.5f * (95.0f * temp_f31);
@@ -432,14 +450,14 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
}
mProcVar0.field_0x3008 = -1;
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && temp_r30 == 0) || (shape_angle.y != current.angle.y && temp_r30 == 1))) {
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && direction == DIR_FORWARD) || (shape_angle.y != current.angle.y && direction == DIR_BACKWARD))) {
field_0x37c8.x += 1.5f * (95.0f * cM_ssin(current.angle.y));
field_0x37c8.z += 1.5f * (95.0f * cM_scos(current.angle.y));
mProcVar2.field_0x300c = shape_angle.y;
mProcVar3.field_0x300e = 0;
mProcVar0.field_0x3008 = -1;
} else if ((shape_angle.y == current.angle.y && temp_r30 == 1) || (shape_angle.y != current.angle.y && temp_r30 == 0)) {
} else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) || (shape_angle.y != current.angle.y && direction == DIR_FORWARD)) {
current.angle.y += 0x8000;
field_0x37c8.x -= 1.5f * (95.0f * cM_ssin(current.angle.y));
field_0x37c8.z -= 1.5f * (95.0f * cM_scos(current.angle.y));
@@ -503,50 +521,50 @@ int daAlink_c::procCrawlStart() {
return 1;
}
int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
int daAlink_c::procCrawlMoveInit(s16 i_angleX, s16 i_angleZ) {
BOOL var_r29;
BOOL var_r28 = 0;
BOOL var_r28 = FALSE;
if (mProcID == PROC_CRAWL_AUTO_MOVE) {
var_r29 = 0;
var_r29 = FALSE;
} else {
var_r29 = 1;
var_r29 = TRUE;
if (mProcID == PROC_CRAWL_START) {
var_r28 = 1;
var_r28 = TRUE;
}
}
BOOL var_r27;
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
var_r27 = 1;
var_r27 = TRUE;
} else {
var_r27 = 0;
var_r27 = FALSE;
}
commonProcInit(PROC_CRAWL_MOVE);
mProcVar3.field_0x300e = 0;
if (var_r29 != 0) {
f32 var_f31 = getCrawlMoveAnmSpeed();
if (var_r28 != 0) {
if (var_r29) {
f32 anm_speed = getCrawlMoveAnmSpeed();
if (var_r28) {
mProcVar3.field_0x300e = 1;
} else if (getDirectionFromShapeAngle() == 1) {
var_f31 *= -1.0f;
} else if (getDirectionFromShapeAngle() == DIR_BACKWARD) {
anm_speed *= -1.0f;
}
current.angle.y = shape_angle.y;
setSingleAnimeBaseSpeed(ANM_CRAWL, var_f31, mpHIO->mCrouch.m.mCrawlInterpolation);
setSingleAnimeBaseSpeed(ANM_CRAWL, anm_speed, mpHIO->mCrouch.m.mCrawlInterpolation);
}
field_0x3198 = var_r29 ^ 1;
shape_angle.x = param_0;
shape_angle.z = param_1;
shape_angle.x = i_angleX;
shape_angle.z = i_angleZ;
field_0x33cc = 1.0f;
field_0x2f99 = 0xC;
dComIfGp_setPlayerStatus0(0, 0x08000000);
if (var_r27 != 0) {
if (var_r27) {
dComIfGp_setPlayerStatus0(0, 0x2000);
}
@@ -554,7 +572,7 @@ int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
}
int daAlink_c::procCrawlMove() {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
cXyz sp54;
cXyz sp48;
cXyz sp3C;
@@ -587,33 +605,33 @@ int daAlink_c::procCrawlMove() {
if ((var_r27 != 0 && mProcVar3.field_0x300e == 0) || getSlidePolygon(&sp60) || checkCrawlWaterIn()) {
procCrawlEndInit(1, shape_angle.x, shape_angle.z);
} else {
BOOL var_r26 = 0;
BOOL var_r26 = FALSE;
f32 temp_f31 = getCrawlMoveAnmSpeed();
if (temp_r29->getRate() > 0.0f) {
setWaterInAnmRate(temp_r29, temp_f31);
} else if (temp_r29->getRate() < 0.0f) {
setWaterInAnmRate(temp_r29, -temp_f31);
if (framectrl->getRate() > 0.0f) {
setWaterInAnmRate(framectrl, temp_f31);
} else if (framectrl->getRate() < 0.0f) {
setWaterInAnmRate(framectrl, -temp_f31);
} else {
var_r26 = 1;
var_r26 = TRUE;
}
if (var_r26 == 1 || temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
if (var_r26 == TRUE || framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
if (mProcVar3.field_0x300e != 0) {
mProcVar3.field_0x300e--;
setWaterInAnmRate(temp_r29, temp_f31);
temp_r29->setLoop(0);
setWaterInAnmRate(framectrl, temp_f31);
framectrl->setLoop(0);
} else if (checkInputOnR()) {
if (getDirectionFromShapeAngle() != 1) {
setWaterInAnmRate(temp_r29, temp_f31);
temp_r29->setLoop(0);
if (getDirectionFromShapeAngle() != DIR_BACKWARD) {
setWaterInAnmRate(framectrl, temp_f31);
framectrl->setLoop(0);
} else {
setWaterInAnmRate(temp_r29, -temp_f31);
temp_r29->setLoop(temp_r29->getEnd());
setWaterInAnmRate(framectrl, -temp_f31);
framectrl->setLoop(framectrl->getEnd());
}
initBasAnime();
} else if (var_r26 == 0) {
} else if (var_r26 == FALSE) {
stopHalfMoveAnime(17.0f);
}
}
@@ -624,9 +642,9 @@ int daAlink_c::procCrawlMove() {
if (checkCrawlInHoll(&sp54, &sp3C, &sp18, var_r27)) {
setCrawlMoveHoll();
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && var_r27 == 0 && changeCrawlAutoMoveProc(&sp18) ) {
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && !var_r27 && changeCrawlAutoMoveProc(&sp18) ) {
return 1;
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && temp_r29->getRate() > 0.0f) {
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && framectrl->getRate() > 0.0f) {
setCrawlMoveAngle();
}
@@ -648,7 +666,13 @@ int daAlink_c::procCrawlMove() {
}
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000) != 0 ? TRUE : FALSE;
BOOL var_r30;
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
var_r30 = TRUE;
} else {
var_r30 = FALSE;
}
commonProcInit(PROC_CRAWL_AUTO_MOVE);
field_0x37c8 = *param_1;
field_0x33cc = 1.0f;
@@ -671,24 +695,24 @@ int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
int daAlink_c::procCrawlAutoMove() {
field_0x2f99 = 0xC;
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
s16 temp_r27 = shape_angle.y;
s16 temp_r26 = current.angle.y;
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
s16 prev_shapeangle = shape_angle.y;
s16 prev_angle = current.angle.y;
if (mProcVar0.field_0x3008 > 0) {
if (temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
if (framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
stopHalfMoveAnime(17.0f);
mNormalSpeed = 0.0f;
} else if (checkAnmEnd(temp_r29)) {
} else if (checkAnmEnd(framectrl)) {
mNormalSpeed = 0.0f;
mProcVar0.field_0x3008 -= 1;
mProcVar0.field_0x3008--;
}
setCrawlMoveDirectionArrow();
decideCrawlDoStatus();
shape_angle.y = temp_r27;
current.angle.y = temp_r26;
shape_angle.y = prev_shapeangle;
current.angle.y = prev_angle;
} else if (mProcVar0.field_0x3008 == 0) {
setCrawlMoveDirectionArrow();
if (checkInputOnR()) {
@@ -698,19 +722,19 @@ int daAlink_c::procCrawlAutoMove() {
dComIfGp_setAdvanceDirection(0);
if (shape_angle.y == current.angle.y) {
setWaterInAnmRate(temp_r29, 2.0f);
temp_r29->setLoop(0);
setWaterInAnmRate(framectrl, 2.0f);
framectrl->setLoop(0);
} else {
setWaterInAnmRate(temp_r29, -2.0f);
temp_r29->setLoop(temp_r29->getEnd());
setWaterInAnmRate(framectrl, -2.0f);
framectrl->setLoop(framectrl->getEnd());
}
initBasAnime();
}
} else {
decideCrawlDoStatus();
shape_angle.y = temp_r27;
current.angle.y = temp_r26;
shape_angle.y = prev_shapeangle;
current.angle.y = prev_angle;
}
} else {
int var_r28 = 1;
@@ -754,55 +778,55 @@ int daAlink_c::procCrawlAutoMove() {
return 1;
}
int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
f32 var_f31 = temp_r29->getFrame();
int daAlink_c::procCrawlEndInit(int param_0, s16 i_angleX, s16 i_angleZ) {
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
f32 frame = framectrl->getFrame();
commonProcInit(PROC_CRAWL_END);
current.angle.y = shape_angle.y;
field_0x2f99 = 0xC;
const daAlinkHIO_anm_c* temp_r30 = &mpHIO->mCrouch.m.mCrawlEndAnm;
const daAlinkHIO_anm_c* anmParams = &mpHIO->mCrouch.m.mCrawlEndAnm;
f32 var_f30;
f32 morf;
if (param_0 != 0) {
var_f30 = temp_r30->mInterpolation;
morf = anmParams->mInterpolation;
} else {
var_f30 = -1.0f;
morf = -1.0f;
}
setSingleAnime(ANM_CRAWL_START, temp_r30->mSpeed, temp_r30->mStartFrame, temp_r30->mEndFrame, var_f30);
setSingleAnime(ANM_CRAWL_START, anmParams->mSpeed, anmParams->mStartFrame, anmParams->mEndFrame, morf);
if (param_0 == 0) {
if (temp_r30->mStartFrame > var_f31) {
var_f31 = temp_r30->mStartFrame;
} else if (temp_r30->mEndFrame <= var_f31) {
var_f31 = temp_r30->mEndFrame;
if (anmParams->mStartFrame > frame) {
frame = anmParams->mStartFrame;
} else if (anmParams->mEndFrame <= frame) {
frame = anmParams->mEndFrame;
}
temp_r29->setFrame(var_f31);
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
framectrl->setFrame(frame);
getNowAnmPackUnder(UNDER_0)->setFrame(frame);
}
J3DTransformInfo sp10;
getNowAnmPackUnder(UNDER_0)->getTransform(0, &sp10);
J3DTransformInfo transinfo;
getNowAnmPackUnder(UNDER_0)->getTransform(0, &transinfo);
field_0x34d4.x = sp10.mTranslate.x;
field_0x34d4.y = sp10.mTranslate.y;
field_0x34d4.z = sp10.mTranslate.z;
field_0x34d4.x = transinfo.mTranslate.x;
field_0x34d4.y = transinfo.mTranslate.y;
field_0x34d4.z = transinfo.mTranslate.z;
mNormalSpeed = 0.0f;
shape_angle.x = param_1;
shape_angle.z = param_2;
shape_angle.x = i_angleX;
shape_angle.z = i_angleZ;
if (temp_r30->mCancelFrame > temp_r30->mStartFrame) {
field_0x347c = temp_r30->mCancelFrame;
if (anmParams->mCancelFrame > anmParams->mStartFrame) {
field_0x347c = anmParams->mCancelFrame;
} else {
field_0x347c = temp_r30->mStartFrame;
field_0x347c = anmParams->mStartFrame;
}
field_0x3478 = 1.0f / (temp_r30->mEndFrame - field_0x347c);
field_0x3478 = 1.0f / (anmParams->mEndFrame - field_0x347c);
field_0x3588 = l_waitBaseAnime;
return 1;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+115 -101
View File
@@ -6,24 +6,19 @@
#include "d/actor/d_a_alink.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_obj_gra2.h"
#include "d/actor/d_a_npc_kn.h"
BOOL daAlink_c::checkEnemyGroup(fopAc_ac_c* i_actor) {
return i_actor != NULL && (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e ||
fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
return i_actor != NULL
&& (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e || fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
}
// properly setup later
class daNpc_Kn_c : public fopAc_ac_c {
public:
bool checkBattleMode() { return true; }
};
BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* i_actor) {
s16 name = fopAcM_GetName(i_actor);
return ((name == PROC_NPC_KAKASHI || name == PROC_NPC_KN) &&
static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
return name == PROC_NPC_KAKASHI ||
(name == PROC_NPC_KN && static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
}
BOOL daAlink_c::checkShieldAttackEmphasys() {
@@ -56,20 +51,29 @@ void daAlink_c::stickArrowIncrement(int param_0) {
}
if (arrow_num != 0) {
if (checkShieldGet() && checkItemGet(fpcNm_ITEM_BOW, true)) {
int arrow_type = arrow_num == 1 ? fpcNm_ITEM_ARROW_1 : fpcNm_ITEM_ARROW_10;
if (checkShieldGet()
#if !PLATFORM_SHIELD
&& checkItemGet(fpcNm_ITEM_BOW, true)
#endif
)
{
int arrow_type;
if (arrow_num == 1) {
arrow_type = fpcNm_ITEM_ARROW_1;
} else {
arrow_type = fpcNm_ITEM_ARROW_10;
}
dComIfGp_setItemArrowNumCount(arrow_num);
fopAcM_createItemForSimpleDemo(&current.pos, arrow_type, -1, NULL, NULL, 0.0f,
0.0f);
}
onResetFlg0(RFLG0_UNK_1);
onResetFlg0(RFLG0_STICK_ARROW_RESET);
}
}
}
void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
fpc_ProcID new_arrow_id = fopAcM_GetID(i_actor);
@@ -106,12 +110,11 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
}
}
BOOL daAlink_c::checkWoodShieldEquipNotIronBall() const {
return checkWoodShieldEquip() && !checkIronBallEquip();
}
void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1, cXyz* param_2,
void daAlink_c::getArrowShieldOffset(const cXyz* param_0, const csXyz* param_1, cXyz* param_2,
cXyz* param_3) const {
cXyz sp54;
mDoMtx_stack_c::ZXYrotS(param_1->x + cM_rndFX(0x1000), param_1->y + cM_rndFX(0x1000), 0);
@@ -120,7 +123,7 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
mDoMtx_stack_c::inverse();
mDoMtx_stack_c::multVecSR(&sp54, param_3);
static Vec const localCenter = {-15.0f, 0.0f, 18.0f};
static const Vec localCenter = {-15.0f, 0.0f, 18.0f};
cXyz sp60;
mDoMtx_multVec(getShieldMtx(), &localCenter, &sp60);
@@ -140,9 +143,8 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
mDoMtx_stack_c::multVec(&sp6C, param_2);
}
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* param_2,
cXyz const* param_3) const {
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, const cXyz* param_2,
const cXyz* param_3) const {
cXyz sp1C;
mDoMtx_multVecSR(getShieldMtx(), param_3, &sp1C);
@@ -153,9 +155,12 @@ void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* par
}
BOOL daAlink_c::checkUpperGuardAnime() const {
return checkNoResetFlg2(FLG2_UNK_8000000) && !checkEventRun() &&
!checkNoResetFlg0(FLG0_UNK_2) && mProcID != PROC_GUARD_BREAK &&
mProcID != PROC_CUT_REVERSE && mProcID != PROC_GUARD_ATTACK;
return checkNoResetFlg2(FLG2_UNK_8000000) &&
!checkEventRun() &&
!checkNoResetFlg0(FLG0_UNK_2) &&
mProcID != PROC_GUARD_BREAK &&
mProcID != PROC_CUT_REVERSE &&
mProcID != PROC_GUARD_ATTACK;
}
BOOL daAlink_c::checkPlayerGuard() const {
@@ -168,15 +173,20 @@ BOOL daAlink_c::checkPlayerGuardAndAttack() const {
}
BOOL daAlink_c::checkGuardAccept() {
return checkModeFlg(0x80) && checkShieldGet() && !checkFmChainGrabAnime() &&
return checkModeFlg(0x80) &&
checkShieldGet() &&
!checkFmChainGrabAnime() &&
!checkNotBattleStage();
}
void daAlink_c::setUpperGuardAnime(f32) {
void daAlink_c::setUpperGuardAnime(f32 param_0) {
UNUSED(param_0);
onNoResetFlg2(FLG2_UNK_8000000);
}
void daAlink_c::setShieldGuard() {
f32 var_f31 = mNowAnmPackUpper[2].getRatio();
if ((mProcID == PROC_GUARD_SLIP && mEquipItem != fpcNm_ITEM_IRONBALL) || checkSmallUpperGuardAnime() ||
(checkGuardAccept() && !checkGrabAnime() && !checkUpperReadyThrowAnime() &&
!checkDkCaught2Anime() && !checkKandelaarSwingAnime() && !checkCutDashAnime() &&
@@ -191,28 +201,28 @@ void daAlink_c::setShieldGuard() {
void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
int var_r31;
int var_r30;
BOOL isRebound;
if (checkWoodShieldEquipNotIronBall() && !checkMagicArmorNoDamage()) {
var_r31 = 0x29;
var_r30 = 0;
isRebound = FALSE;
} else {
var_r31 = 0x28;
var_r30 = 1;
isRebound = TRUE;
}
u32 hit_se;
if (i_objinf->GetTgHitGObj() != NULL && i_objinf->GetTgHitGObj()->GetAtType() == AT_TYPE_BOMB) {
hit_se = Z2SE_HIT_METAL_WEAPON;
} else {
hit_se = i_objinf->GetTgHitObjHitSeID(var_r30);
hit_se = i_objinf->GetTgHitObjHitSeID(isRebound);
}
mZ2Link.startCollisionSE(hit_se, var_r31);
}
void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
setUpperAnimeBase(0x16);
setUpperAnimeBase(dRes_ID_ALANM_BCK_ATDEFS_e);
cXyz* dmg_vec = getDamageVec(i_objinf);
mBodyAngle.y = (dmg_vec->atan2sX_Z() + 0x8000) - shape_angle.y;
@@ -227,7 +237,7 @@ void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
mBodyAngle.x = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mSmallGuardFBAngleMax, mpHIO->mGuard.m.mSmallGuardFBAngleMax);
}
int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
int daAlink_c::procGuardSlipInit(int i_atSpl, dCcD_GObjInf* i_objinf) {
if (mProcID == PROC_GUARD_SLIP) {
return 0;
}
@@ -241,9 +251,11 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
commonProcInit(PROC_GUARD_SLIP);
field_0x2fd4 = 3;
cXyz* temp_r3 = getDamageVec(param_1);
current.angle.y = temp_r3->atan2sX_Z();
cXyz* dmg_vec = getDamageVec(i_objinf);
current.angle.y = dmg_vec->atan2sX_Z();
const daAlinkHIO_anm_c* anmParams;
daAlink_ANM anm;
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
setSingleAnimeBase(ANM_IRONBALL_DEF);
setIronBallWaitUpperAnime(1);
@@ -253,15 +265,14 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
} else {
const daAlinkHIO_anm_c* var_r27 = &mpHIO->mGuard.m.mGuardHitAnm;
daAlink_ANM var_r28;
anmParams = &mpHIO->mGuard.m.mGuardHitAnm;
if (field_0x2f98 == 2) {
var_r28 = ANM_GUARD_LEFT;
anm = ANM_GUARD_LEFT;
} else {
var_r28 = ANM_GUARD_RIGHT;
anm = ANM_GUARD_RIGHT;
}
setSingleAnimeParam(var_r28, var_r27);
setSingleAnimeParam(anm, anmParams);
setUpperGuardAnime(-1.0f);
mProcVar2.field_0x300c = (current.angle.y + 0x8000) - shape_angle.y;
@@ -271,7 +282,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar2.field_0x300c = cLib_minMaxLimit<s16>((s16)mProcVar2.field_0x300c, -mpHIO->mGuard.m.mGuardLRAngleMax, mpHIO->mGuard.m.mGuardLRAngleMax);
}
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
mProcVar1.field_0x300a = mpHIO->mGuard.m.mGuardBodyInterpolation + 1;
mProcVar2.field_0x300c = (mProcVar2.field_0x300c - mBodyAngle.y) / mProcVar1.field_0x300a;
mProcVar3.field_0x300e = (mProcVar3.field_0x300e - mBodyAngle.x) / mProcVar1.field_0x300a;
@@ -284,7 +295,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar4.field_0x3010 = 0;
mProcVar5.field_0x3012 = 0;
if (param_1 != NULL && param_1->GetTgHitAc() != NULL && fopAcM_GetName(param_1->GetTgHitAc()) == PROC_E_MM_MT && param_1->GetTgHitAc()->argument == 1) {
if (i_objinf != NULL && i_objinf->GetTgHitAc() != NULL && fopAcM_GetName(i_objinf->GetTgHitAc()) == PROC_E_MM_MT && i_objinf->GetTgHitAc()->argument == 1) {
if (checkBootsOrArmorHeavy()) {
mNormalSpeed = mpHIO->mGuard.m.mMagneHvyGuardSpeed;
mProcVar5.field_0x3012 = 1;
@@ -294,13 +305,13 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
}
mProcVar4.field_0x3010 = 1;
} else if (checkHugeAttack(param_0)) {
} else if (checkHugeAttack(i_atSpl)) {
if ((!checkBootsOrArmorHeavy() && checkMiddleBossGoronRoom()) || checkStageName("D_MN07B")) {
mNormalSpeed = 40.0f;
} else {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedHuge;
}
} else if (checkLargeAttack(param_0)) {
} else if (checkLargeAttack(i_atSpl)) {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedLarge;
} else {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedNormal;
@@ -319,7 +330,7 @@ int daAlink_c::procGuardSlip() {
setShapeAngleToAtnActor(0);
if (mProcVar1.field_0x300a != 0) {
mProcVar1.field_0x300a -= 1;
mProcVar1.field_0x300a -= (s16)1;
mBodyAngle.y += mProcVar2.field_0x300c;
mBodyAngle.x += mProcVar3.field_0x300e;
}
@@ -328,19 +339,19 @@ int daAlink_c::procGuardSlip() {
field_0x2f9d = 0x60;
}
f32 var_f31;
f32 speed_step;
if (checkBootsOrArmorHeavy() && mProcVar4.field_0x3010 == 0) {
var_f31 = 2.5f;
speed_step = 2.5f;
} else {
var_f31 = 1.25f;
speed_step = 1.25f;
}
if (mProcVar4.field_0x3010 != 0 && mProcVar5.field_0x3012 != checkBootsOrArmorHeavy()) {
mNormalSpeed = 0.0f;
}
if (cLib_chaseF(&mNormalSpeed, 0.0f, var_f31) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
field_0x814.SetTgApid(0);
if (cLib_chaseF(&mNormalSpeed, 0.0f, speed_step) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
mCcStts.SetTgApid(0);
if (!checkGuardActionChange()) {
onEndResetFlg1(ERFLG1_UNK_20);
@@ -357,41 +368,44 @@ int daAlink_c::procGuardSlip() {
}
int daAlink_c::procGuardAttackInit() {
if (mDemo.getDemoMode() == 0x4B && mProcID == PROC_GUARD_ATTACK) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e && mProcID == PROC_GUARD_ATTACK) {
return 1;
}
commonProcInit(PROC_GUARD_ATTACK);
const daAlinkHIO_guardAttack_c1* temp_r30 = &mpHIO->mGuard.mAtPush.m;
daAlink_ANM anm = ANM_SHIELD_ATTACK;
const daAlinkHIO_guardAttack_c1* params = &mpHIO->mGuard.mAtPush.m;
field_0x2f98 = 3;
field_0x34d4 = l_rWaitBaseAnime;
field_0x3588 = l_rWaitBaseAnime;
setCutType(0x29);
setSingleAnimeParam(ANM_SHIELD_ATTACK, &temp_r30->mAttackAnm);
setCutType(CUT_TYPE_GUARD_ATTACK);
u8 atSe = dCcD_SE_SHIELD_ATTACK;
field_0x3478 = temp_r30->mAttackStartFrame;
field_0x347c = temp_r30->mAttackEndFrame;
field_0x3480 = temp_r30->mSpeed;
setSingleAnimeParam(anm, &params->mAttackAnm);
if (checkHeavyStateOn(1, 1) != 0) {
field_0x3478 = params->mAttackStartFrame;
field_0x347c = params->mAttackEndFrame;
field_0x3480 = params->mSpeed;
if (checkHeavyStateOn(TRUE, TRUE)) {
field_0x3480 *= mHeavySpeedMultiplier;
}
if (mDemo.getDemoMode() == 0x4B) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
field_0x3484 = 1000.0f;
field_0x3488 = 1000.0f;
} else {
field_0x3484 = temp_r30->mAttackAnm.mCancelFrame;
field_0x3488 = temp_r30->mSlashCheckFrame;
field_0x3484 = params->mAttackAnm.mCancelFrame;
field_0x3488 = params->mSlashCheckFrame;
}
mNormalSpeed = 0.0f;
setSwordVoiceSe(Z2SE_AL_V_TATE_OSHI);
mGuardAtCps.ResetAtHit();
mGuardAtCps.SetAtSe(2);
mGuardAtCps.SetAtSe(atSe);
mGuardAtCps.SetR(mpHIO->mGuard.m.mAttackRadius);
current.angle.y = shape_angle.y;
@@ -405,7 +419,7 @@ int daAlink_c::procGuardAttackInit() {
}
int daAlink_c::procGuardAttack() {
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
setUpperGuardAnime(-1.0f);
field_0x2f99 = 4;
@@ -419,17 +433,17 @@ int daAlink_c::procGuardAttack() {
BOOL var_r29;
if (mEquipItem == 0x103 && !checkMagneBootsOn()) {
var_r29 = 1;
var_r29 = TRUE;
if (doTrigger()) {
mProcVar3.field_0x300e = 1;
}
} else {
var_r29 = 0;
var_r29 = FALSE;
}
if (mProcVar0.field_0x3008 == 0 && mGuardAtCps.ChkAtHit()) {
mProcVar0.field_0x3008 = 1;
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER3, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (mProcVar5.field_0x3012 != 0 && commonLineCheck(&field_0x3834, &mRightHandPos) && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7) {
@@ -439,20 +453,20 @@ int daAlink_c::procGuardAttack() {
if (var_r29) {
if (checkCutHeadState()) {
setDoStatusEmphasys(0x77);
setDoStatusEmphasys(BUTTON_STATUS_HELM_SPLITTER);
} else {
setDoStatus(0x86);
setDoStatus(BUTTON_STATUS_UNK_134);
}
}
if (checkAnmEnd(temp_r30)) {
if (mDemo.getDemoMode() == 0x4B) {
if (checkAnmEnd(framectrl)) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
} else {
if (temp_r30->getFrame() > field_0x3488) {
if (framectrl->getFrame() > field_0x3488) {
if (mProcVar3.field_0x300e != 0) {
return checkDoCutAction();
}
@@ -462,10 +476,10 @@ int daAlink_c::procGuardAttack() {
}
}
if (temp_r30->getFrame() > field_0x3484) {
if (framectrl->getFrame() > field_0x3484) {
onModeFlg(4);
checkNextAction(1);
} else if (temp_r30->getFrame() >= field_0x3478 && temp_r30->getFrame() < field_0x347c) {
} else if (framectrl->getFrame() >= field_0x3478 && framectrl->getFrame() < field_0x347c) {
if (mProcVar5.field_0x3012 == 0) {
mNormalSpeed = field_0x3480;
}
@@ -483,29 +497,29 @@ int daAlink_c::procGuardBreakInit() {
setSingleAnimeParam(ANM_GUARD_BREAK, &mpHIO->mGuard.m.mGuardBreakAnm);
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
}
mNormalSpeed = 0.0f;
field_0x3588 = l_halfAtnWaitBaseAnime;
dComIfGp_getVibration().StartShock(5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
voiceStart(Z2SE_AL_V_GUARD_BROKEN);
return 1;
}
int daAlink_c::procGuardBreak() {
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
setUpperGuardAnime(-1.0f);
onEndResetFlg0(ERFLG0_UNK_8000000);
field_0x2f99 = 4;
if (checkAnmEnd(temp_r30)) {
if (checkAnmEnd(framectrl)) {
if (checkGuardActionChange() == 0) {
onEndResetFlg1(ERFLG1_UNK_20);
}
checkNextAction(0);
} else if (temp_r30->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
} else if (framectrl->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
if (!checkGuardActionChange()) {
onEndResetFlg1(ERFLG1_UNK_20);
}
@@ -518,37 +532,37 @@ int daAlink_c::procGuardBreak() {
}
int daAlink_c::procTurnMoveInit(int param_0) {
BOOL temp_r27 = checkUpperGuardAnime();
fopAc_ac_c* temp_r28 = mTargetedActor;
BOOL isUpperGuardAnime = checkUpperGuardAnime();
fopAc_ac_c* targetedActor = mTargetedActor;
commonProcInit(PROC_TURN_MOVE);
mNormalSpeed = 0.0f;
daAlink_ANM var_r29;
daAlink_ANM anm;
if (param_0 == 2) {
var_r29 = ANM_SIDE_ROLL_LEFT;
anm = ANM_SIDE_ROLL_LEFT;
} else if (param_0 == 3) {
var_r29 = ANM_SIDE_ROLL_RIGHT;
anm = ANM_SIDE_ROLL_RIGHT;
} else if (checkInputOnR()) {
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
var_r29 = ANM_SIDE_ROLL_LEFT;
if ((s16)(mMoveAngle - shape_angle.y) >= 0) {
anm = ANM_SIDE_ROLL_LEFT;
} else {
var_r29 = ANM_SIDE_ROLL_RIGHT;
anm = ANM_SIDE_ROLL_RIGHT;
}
} else {
var_r29 = ANM_SIDE_ROLL_LEFT;
anm = ANM_SIDE_ROLL_LEFT;
}
f32 temp_f31 = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
f32 anm_speed = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
mProcVar1.field_0x300a = mpHIO->mGuard.mTurnMove.m.mMaxTurnSpeed;
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
mProcVar1.field_0x300a = mProcVar1.field_0x300a * mpHIO->mItem.mIronBoots.m.mWaterVelocityX;
}
setSingleAnime(var_r29, temp_f31, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
setSingleAnime(anm, anm_speed, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
if (var_r29 == ANM_SIDE_ROLL_LEFT) {
if (anm == ANM_SIDE_ROLL_LEFT) {
mProcVar2.field_0x300c = -0x7FF0;
field_0x2f98 = 2;
} else {
@@ -556,9 +570,9 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x2f98 = 3;
}
if (temp_r28 != NULL) {
cXyz sp8 = current.pos - temp_r28->current.pos;
shape_angle.y = fopAcM_searchActorAngleY(this, temp_r28);
if (targetedActor != NULL) {
cXyz sp8 = current.pos - targetedActor->current.pos;
shape_angle.y = fopAcM_searchActorAngleY(this, targetedActor);
field_0x3478 = sp8.absXZ();
mProcVar3.field_0x300e = sp8.atan2sX_Z();
} else {
@@ -569,7 +583,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x347c = (field_0x3478 - 150.0f) / mProcVar2.field_0x300c;
voiceStart(Z2SE_AL_V_SOTOMO_ROLL);
if (mDemo.getDemoMode() == 0x52) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_82_e) {
mProcVar0.field_0x3008 = 1;
} else {
mProcVar0.field_0x3008 = 0;
@@ -579,7 +593,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x2f9d = 4;
dComIfGp_setPlayerStatus0(0, 4);
if (temp_r27 != 0) {
if (isUpperGuardAnime) {
onNoResetFlg0(FLG0_UNK_2);
}
@@ -611,22 +625,22 @@ int daAlink_c::procTurnMove() {
shape_angle.y = mProcVar3.field_0x300e + 0x8000;
mProcVar0.field_0x3008 |= checkCutFinishJumpUp();
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (checkNoResetFlg0(FLG0_UNK_2)) {
setUpperGuardAnime(-1.0f);
}
if (checkAnmEnd(temp_r30)) {
if (checkAnmEnd(framectrl)) {
if (!checkAttentionLock()) {
offNoResetFlg2(FLG2_UNK_8000000);
}
checkNextAction(0);
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
procCutFinishJumpUpInit();
dComIfGp_setPlayerStatus0(0, 4);
} else {
if (temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
if (framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
onModeFlg(4);
if (checkNextAction(1)) {
@@ -634,8 +648,8 @@ int daAlink_c::procTurnMove() {
}
}
if (temp_r30->checkPass(19.0f)) {
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
if (framectrl->checkPass(19.0f)) {
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (abs(temp_r29) > 0x100) {
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+29 -28
View File
@@ -18,9 +18,9 @@ void daAlink_c::concatMagneBootInvMtx() {
}
}
void daAlink_c::multVecMagneBootInvMtx(cXyz* vec) {
void daAlink_c::multVecMagneBootInvMtx(cXyz* o_dst) {
if (checkMagneBootsOn()) {
mDoMtx_multVecSR(mMagneBootInvMtx, vec, vec);
mDoMtx_multVecSR(mMagneBootInvMtx, o_dst, o_dst);
}
}
@@ -35,7 +35,7 @@ bool daAlink_c::commonMagneLineCheck(cXyz* i_start, cXyz* i_end) {
}
BOOL daAlink_c::checkBootsMoveAnime(int param_0) {
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) ||
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_WATER_IN_MOVE)) ||
checkDkCaught2Anime();
}
@@ -56,7 +56,7 @@ int daAlink_c::setHeavyBoots(int param_0) {
deleteEquipItem(TRUE, FALSE);
}
if (checkNoResetFlg0(FLG0_UNDERWATER) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
return procSwimWaitInit(0);
}
@@ -92,7 +92,6 @@ int daAlink_c::setHeavyBoots(int param_0) {
return 0;
}
s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
if (param_1 == 1 || (param_1 != 2 && field_0x3114 <= 0x4000 && field_0x3114 != -0x8000)) {
return param_0;
@@ -107,12 +106,12 @@ s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
return vec.atan2sX_Z();
}
void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
cM3dGPla poly;
dComIfG_Bgsp().GetTriPla(*i_polyinfo, &poly);
s16 var_r28 = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
s16 var_r26 = field_0x3116;
int temp_r3_2 = abs(var_r28);
if (temp_r3_2 < 500) {
var_r28 = 0;
@@ -145,16 +144,14 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
cXyz sp44 = mMagneBootsTopVec.outprod(poly.mNormal);
sp44.normalizeZP();
f32 var_f1_2 = JMAFastSqrt(1.0f - temp_f1 * temp_f1);
f32 temp_f1_2 = cM_atan2f(var_f1_2, temp_f1);
f32 temp_f1_2 = cM_atan2f(JMAFastSqrt(1.0f - temp_f1 * temp_f1), temp_f1);
f32 var_f2 = temp_f1_2 * 0.2f;
if (var_f2 > 0.4f) {
var_f2 = 0.4f;
} else if (var_f2 < 0.025f) {
var_f2 = 0.025f;
if (0.025f > temp_f1_2) {
if (var_f2 > temp_f1_2) {
var_f2 = temp_f1_2;
}
}
@@ -167,10 +164,10 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
field_0x3114 = cM_atan2s(sp40.absXZ(), sp40.y);
int temp_r3_4 = abs(field_0x3114);
if (temp_r3_4 < 500) {
temp_r3_2 = abs(field_0x3114);
if (temp_r3_2 < 500) {
field_0x3114 = 0;
} else if (temp_r3_4 > 0x7E0B) {
} else if (temp_r3_2 > 0x7E0B) {
field_0x3114 = -0x8000;
}
@@ -189,7 +186,7 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
s16 angle = sp40.atan2sX_Z();
shape_angle.y += angle;
current.angle.y += angle;
field_0x2fe6 += angle;
mPrevAngleY += angle;
field_0x310c += angle;
}
}
@@ -201,7 +198,6 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
mDoMtx_multVec(mMagneBootMtx, &cXyz::BaseY, &mMagneBootsTopVec);
}
int daAlink_c::cancelMagneBootsOn() {
offNoResetFlg0(FLG0_MAGNE_BOOTS_ON);
mZ2Link.setMagnetized(false);
@@ -221,10 +217,10 @@ int daAlink_c::cancelMagneBootsOn() {
current.pos += mMagneBootsTopVec * 100.0f;
mLinkGndChk.SetPos(&current.pos);
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
f32 ground_y = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
current.pos.y -= 100.0f;
if (gnd_cross > current.pos.y) {
current.pos.y = gnd_cross;
if (ground_y > current.pos.y) {
current.pos.y = ground_y;
}
old.pos = current.pos;
@@ -242,7 +238,6 @@ int daAlink_c::cancelMagneBootsOn() {
return 0;
}
int daAlink_c::checkMagneBootsFly() {
if (field_0x2fb8 != 0 && checkEquipHeavyBoots() && !checkDeadHP() &&
mProcID != PROC_MAGNE_BOOTS_FLY && !checkEventRun())
@@ -291,14 +286,13 @@ int daAlink_c::procBootsEquip() {
onModeFlg(4);
checkNextAction(1);
} else if (frameCtrl_p->getFrame() >= 5.0f) {
field_0x2f92 = 1;
field_0x2f93 = 6;
mLeftHandIndex = 1;
mRightHandIndex = 6;
}
return 1;
}
int daAlink_c::procMagneBootsFlyInit() {
cXyz sp44 = field_0x369c.normZP();
cM3dGPla sp50(&sp44, -sp44.inprod(field_0x3834));
@@ -338,20 +332,27 @@ int daAlink_c::procMagneBootsFlyInit() {
}
field_0x3478 = 0.0f;
field_0x594 = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
mMaxSpeed = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
mProcVar2.field_0x300c = 0;
voiceStart(Z2SE_AL_V_MAGNET_CAUGHT);
return 1;
}
int daAlink_c::procMagneBootsFly() {
field_0x3478 += mpHIO->mItem.mIronBoots.m.mMagneFlyAccelRate;
if (field_0x3478 > field_0x594) {
field_0x3478 = field_0x594;
if (field_0x3478 > mMaxSpeed) {
field_0x3478 = mMaxSpeed;
}
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2) && checkEquipHeavyBoots()) {
/* !@bug - If iron boots are unequipped mid-flight, player will still stick to magnetic poly
* Fixed in GCN and Wii KOR versions by adding a checkEquipHeavyBoots check
*/
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)
#if PLATFORM_GCN || VERSION == VERSION_WII_KOR
&& checkEquipHeavyBoots()
#endif
)
{
if (dComIfG_Bgsp().ChkMoveBG(mPolyInfo2)) {
cXyz old_37c8(field_0x37c8);
dComIfG_Bgsp().MoveBgTransPos(mPolyInfo2, true, &field_0x37c8, NULL, NULL);
@@ -377,7 +378,7 @@ int daAlink_c::procMagneBootsFly() {
cLib_addCalcAngleS(&shape_angle.x, sp24.atan2sY_XZ() + -0x4000, 5, 0x1000, 0x100);
cLib_addCalcAngleS(&shape_angle.y, sp24.atan2sX_Z(), 5, 0x1000, 0x100);
mProcVar2.field_0x300c += 0x1C00;
mProcVar2.field_0x300c += (s16)0x1C00;
}
return 1;
+57 -54
View File
@@ -8,6 +8,8 @@
#include "SSystem/SComponent/c_math.h"
static fopAc_ac_c* daAlink_searchIceLeaf(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_Obj_IceLeaf) {
return i_actor;
}
@@ -19,8 +21,8 @@ bool daAlink_c::checkSnowCode() const {
return mGndPolySpecialCode == dBgW_SPCODE_HEAVY_SNOW || mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW;
}
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_poly) {
int code = dComIfG_Bgsp().GetSpecialCode(i_poly);
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_polyinfo) {
int code = dComIfG_Bgsp().GetSpecialCode(i_polyinfo);
return code == dBgW_SPCODE_HEAVY_SNOW || code == dBgW_SPCODE_LIGHT_SNOW;
}
@@ -47,7 +49,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
for (int i = 0; i < 3; i++) {
if (mAcchCir[i].ChkWallHit() && cLib_distanceAngleS(sp8, mAcchCir[i].GetWallAngleY()) <= 0x2000 && mNormalSpeed > 30.0f) {
setJumpMode();
return procCoLargeDamageInit(-4, 1, 0, 0, NULL, 0);
return procCoLargeDamageInit(-4, TRUE, 0, 0, NULL, 0);
}
}
}
@@ -66,14 +68,14 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
s16 var_r27;
if (mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) {
cM3dGPla poly;
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &tripla);
mProcVar3.field_0x300e = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
mProcVar3.field_0x300e = cM_atan2s(tripla.mNormal.absXZ(), tripla.mNormal.y);
if (mProcVar3.field_0x300e == 0) {
var_r27 = shape_angle.y;
} else {
var_r27 = poly.mNormal.atan2sX_Z();
var_r27 = tripla.mNormal.atan2sX_Z();
}
} else {
mProcVar3.field_0x300e = 0;
@@ -82,7 +84,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
if (mProcVar0.field_0x3008 != 0) {
mProcVar0.field_0x3008--;
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
}
f32 var_f30 = 0.0f;
@@ -90,10 +92,10 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
s16 var_r24;
if (checkInputOnR() && i_canMove) {
var_r24 = 1024.0f * field_0x33ac * cM_ssin(mStickAngle);
var_r24 = 1024.0f * mMoveValue * cM_ssin(mStickAngle);
if (temp_r26 > 0x6000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT) {
f32 temp_f29 = field_0x33ac * cM_scos((0x8000 - temp_r26) * 2);
f32 temp_f29 = mMoveValue * cM_scos((0x8000 - temp_r26) * 2);
f32 speed_step = temp_f29;
if (speed_step < 0.15f) {
@@ -178,8 +180,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
f32 temp_f26 = (var_f31 * cM_scos(var_r27)) + (mNormalSpeed * cM_scos(shape_angle.y));
mNormalSpeed = JMAFastSqrt((temp_f27 * temp_f27) + (temp_f26 * temp_f26));
if (mNormalSpeed > field_0x594) {
mNormalSpeed = field_0x594;
if (mNormalSpeed > mMaxSpeed) {
mNormalSpeed = mMaxSpeed;
}
if (mNormalSpeed > 0.1f) {
@@ -203,8 +205,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
setCommonBoardAnime(FALSE);
}
if (mNormalSpeed > (0.7f * field_0x594)) {
cLib_chaseF(&mNormalSpeed, 0.7f * field_0x594, 1.5f);
if (mNormalSpeed > (0.7f * mMaxSpeed)) {
cLib_chaseF(&mNormalSpeed, 0.7f * mMaxSpeed, 1.5f);
}
}
@@ -227,19 +229,27 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
return 0;
}
void daAlink_c::setCommonBoardAnime(BOOL i_is_ride_front) {
void daAlink_c::setCommonBoardAnime(BOOL i_isRideFront) {
// Fakematch, retail should use mpHIO->mItem.mBoard.m.mStandAnmSpeed and mpHIO->mItem.mBoard.m.mStandInterpolation
#if DEBUG
setDoubleAnime(
0.0f,
mpHIO->mItem.mBoard.m.mStandAnmSpeed,
1.0f,
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
11,
mpHIO->mItem.mBoard.m.mStandInterpolation
);
#else
setDoubleAnime(
0.0f,
// Fakematch, should be
// mpHIO->mItem.mBoard.m.mStandAnmSpeed,
daAlinkHIO_board_c0::m.mStandAnmSpeed,
1.0f,
i_is_ride_front ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
11,
// Fakematch, should be
// mpHIO->mItem.mBoard.m.mStandInterpolation
daAlinkHIO_board_c0::m.mStandInterpolation
);
#endif
}
int daAlink_c::checkNextActionBoard() {
@@ -296,7 +306,7 @@ int daAlink_c::procBoardRideInit() {
setHeavyBoots(0);
if (mEquipItem != 0x103) {
deleteEquipItem(1, 1);
deleteEquipItem(TRUE, TRUE);
} else {
offKandelaarModel();
}
@@ -335,7 +345,8 @@ int daAlink_c::procBoardRide() {
return 1;
}
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_boardActor) {
#if PLATFORM_GCN
if (mEquipItem != 0x103) {
deleteEquipItem(TRUE, TRUE);
} else {
@@ -347,23 +358,24 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
if (!checkBoardRide()) {
resetUpperAnime(UPPER_2, -1.0f);
}
#endif
if (checkModeFlg(2) && i_board == NULL) {
if (checkModeFlg(2) && i_boardActor == NULL) {
return procBoardJumpInit(0.0f, TRUE);
}
BOOL prev_ride = mProcID == PROC_BOARD_RIDE;
BOOL is_prev_boardRide = mProcID == PROC_BOARD_RIDE;
if (!commonProcInitNotSameProc(PROC_BOARD_WAIT)) {
return 0;
}
current.angle.y = shape_angle.y;
if (i_board != NULL) {
mRideAcKeep.setData(i_board);
((daObjIceLeaf_c*)i_board)->onRide();
if (i_boardActor != NULL) {
mRideAcKeep.setData(i_boardActor);
((daObjIceLeaf_c*)i_boardActor)->onRide();
if (prev_ride) {
if (is_prev_boardRide) {
f32 speed_ratio = mNormalSpeed / mpHIO->mMove.m.mMaxSpeed;
if (speed_ratio > 1.0f) {
speed_ratio = 1.0f;
@@ -374,13 +386,13 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
mNormalSpeed = 0.0f;
}
field_0x594 = mpHIO->mItem.mBoard.m.mMaxSpeed;
mMaxSpeed = mpHIO->mItem.mBoard.m.mMaxSpeed;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
setCommonBoardAnime(FALSE);
}
mRideStatus = 4;
mRideStatus = RIDETYPE_BOARD;
mProcVar5.field_0x3012 = 0;
mProcVar1.field_0x300a = 0;
return 1;
@@ -423,7 +435,7 @@ int daAlink_c::procBoardWait() {
return procBoardCutInit();
} else if (mProcVar5.field_0x3012 == 0) {
if (!checkModeFlg(2) && mProcID != PROC_BOARD_ROW) {
setDoStatus(0xA);
setDoStatus(BUTTON_STATUS_CROUCH);
if (doButton()) {
f32 blend_ratio;
@@ -440,7 +452,7 @@ int daAlink_c::procBoardWait() {
}
} else if (mProcVar5.field_0x3012 != 0) {
if (mNormalSpeed > 15.0f) {
setDoStatus(0x19);
setDoStatus(BUTTON_STATUS_JUMP);
}
if (!doButton()) {
@@ -463,7 +475,7 @@ int daAlink_c::procBoardWait() {
int daAlink_c::procBoardRowInit() {
commonProcInit(PROC_BOARD_ROW);
setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), mpHIO->mItem.mBoard.m.mPushInterpolation);
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
mProcVar0.field_0x3008 = 4;
mProcVar4.field_0x3010 = 1;
mProcVar5.field_0x3012 = 0;
@@ -476,7 +488,7 @@ int daAlink_c::procBoardRow() {
}
if (mProcVar4.field_0x3010 != 0) {
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
mProcVar0.field_0x3008 = 4;
}
@@ -492,7 +504,6 @@ int daAlink_c::procBoardRow() {
}
} else if (frame_ctrl->checkPass(7.0f)) {
mNormalSpeed += mpHIO->mItem.mBoard.m.mPushAccel;
if (mNormalSpeed > mpHIO->mItem.mBoard.m.mMaxPushSpeed) {
mNormalSpeed = mpHIO->mItem.mBoard.m.mMaxPushSpeed;
}
@@ -530,7 +541,7 @@ int daAlink_c::procBoardTurn() {
mProcVar1.field_0x300a = 1;
}
} else {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 0x1B58, 0x7D0);
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 7000, 2000);
current.angle.y = shape_angle.y;
if (!checkModeFlg(2)) {
@@ -544,7 +555,7 @@ int daAlink_c::procBoardTurn() {
return 1;
}
int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
int daAlink_c::procBoardJumpInit(f32 i_jumpSpeed, BOOL i_isNoSpeed) {
commonProcInit(PROC_BOARD_JUMP);
mProcVar0.field_0x3008 = 0;
mProcVar5.field_0x3012 = 1;
@@ -554,8 +565,8 @@ int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame,
mpHIO->mItem.mBoard.m.mAirborneAnm.mInterpolation);
if (!i_no_speed_set) {
speed.y = cLib_minMaxLimit(i_jump_speed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
if (!i_isNoSpeed) {
speed.y = cLib_minMaxLimit(i_jumpSpeed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
}
mProcVar4.field_0x3010 = 0;
@@ -588,7 +599,6 @@ int daAlink_c::procBoardSubjectivityInit() {
commonProcBoardInit(PROC_BOARD_SUBJECTIVITY);
setSubjectMode();
setCommonBoardAnime(FALSE);
return 1;
}
@@ -603,7 +613,7 @@ int daAlink_c::procBoardSubjectivity() {
shape_angle.y = old_shape_angle;
if (checkSubjectEnd(1)) {
if (checkSubjectEnd(TRUE)) {
procBoardWaitInit(NULL);
} else {
setRideSubjectAngle(old_angle);
@@ -615,17 +625,10 @@ int daAlink_c::procBoardSubjectivity() {
int daAlink_c::procBoardCutInit() {
commonProcBoardInit(PROC_BOARD_CUT);
bool cut_charge = false;
if (checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE)) {
if (mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration) {
cut_charge = true;
}
}
bool isCutCharge = checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE) && mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration;
setCommonBoardAnime(FALSE);
setCutDash(1, cut_charge);
setCutDash(1, isCutCharge);
mProcVar5.field_0x3012 = 0;
return 1;
}
@@ -660,7 +663,7 @@ int daAlink_c::procBoardCutTurnInit() {
}
mProcVar5.field_0x3012 = 0;
resetCombo(1);
resetCombo(TRUE);
field_0x3478 = mpHIO->mCut.mCutTurn.m.mAttackRadius;
field_0x347c = 0.5f * field_0x3478;
@@ -680,14 +683,14 @@ int daAlink_c::procBoardCutTurn() {
daPy_frameCtrl_c* frame_ctrl = &mUnderFrameCtrl[0];
if (frame_ctrl->getFrame() >= 4.0f && frame_ctrl->getFrame() < 14.0f) {
if (!checkNoResetFlg0(FLG0_UNK_40)) {
if (!checkNoResetFlg0(FLG0_CUT_AT_FLG)) {
seStartSwordCut(Z2SE_AL_KAITENGIRI);
}
onResetFlg0(RFLG0_UNK_2);
cLib_chaseF(&field_0x347c, field_0x3478, 20.0f);
field_0xFB8.SetR(field_0x347c);
onResetFlg1(RFLG1_UNK_40);
mAtSph.SetR(field_0x347c);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
} else {
mProcVar5.field_0x3012 = 0;
}
+51 -50
View File
@@ -42,10 +42,11 @@ bool daAlink_c::checkIronBallGroundStop() const {
void daAlink_c::setIronBallWaitUpperAnime(int param_0) {
if (!checkIronBallWaitAnime() && !checkIronBallPreSwingAnime() &&
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) {
setUpperAnimeBaseSpeed(0x19C, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime()))
{
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBWAIT_e, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
mpHIO->mBasic.m.mBasicInterpolation);
setFacePriBck(0xE8);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f96 = 254;
field_0x2f97 = 5;
mItemVar0.field_0x3018 = 0;
@@ -66,7 +67,7 @@ void daAlink_c::checkIronBallDelete() {
}
}
void daAlink_c::setIronBallReturn(int param_0) {
void daAlink_c::setIronBallReturn(BOOL param_0) {
if (param_0 && field_0x301e != 0) {
field_0x301e--;
} else if (mItemVar0.field_0x3018 != 7) {
@@ -89,8 +90,8 @@ void daAlink_c::setIronBallBgCheckPos() {
void daAlink_c::setIronBallModel() {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModelEnv(loadAramBmd(0x311, 0x2800), 0);
mpItemModelData = loadAramBmd(0x317, 0x1000);
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_IB_e, 0x2800), 0);
mpItemModelData = loadAramBmd(dRes_ID_ALANM_BMD_AL_HS_KUSARI_e, 0x1000);
mpHookChain = new hsChainShape_c();
mIronBallChainPos = new cXyz[102];
@@ -113,12 +114,12 @@ void daAlink_c::setIronBallModel() {
mpHookChain->setUserArea((uintptr_t)this);
field_0xFB8.SetAtType(AT_TYPE_IRON_BALL);
field_0xFB8.SetAtHitMark(3);
field_0xFB8.SetAtSe(dCcD_SE_HAMMER);
field_0xFB8.SetAtAtp(2);
field_0xFB8.SetAtMtrl(dCcD_MTRL_NONE);
field_0xFB8.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
mAtSph.SetAtType(AT_TYPE_IRON_BALL);
mAtSph.SetAtHitMark(3);
mAtSph.SetAtSe(dCcD_SE_HAMMER);
mAtSph.SetAtAtp(2);
mAtSph.SetAtMtrl(dCcD_MTRL_NONE);
mAtSph.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
csXyz* var_r28 = mIronBallChainAngle;
for (int i = 0; i < 102; i++, var_r28++) {
@@ -158,7 +159,7 @@ void daAlink_c::setIronBallModel() {
field_0x3024 = 0;
field_0x3026 = 0;
field_0x173c.Init(0xDC, 0xFF, this);
field_0x173c.Init(220, 0xFF, this);
field_0x1778.Set(l_sphSrc);
field_0x1778.SetStts(&field_0x173c);
field_0x1778.OffTgSetBit();
@@ -289,11 +290,11 @@ void daAlink_c::setIronBallChainPos() {
*var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate;
}
} else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) {
daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (mItemVar0.field_0x3018 == 1) {
f32 temp_f25 = sp30->getEnd() - 13.0f;
f32 temp_f29 = (sp30->getFrame() - 13.0f) / temp_f25;
f32 temp_f25 = framectrl->getEnd() - 13.0f;
f32 temp_f29 = (framectrl->getFrame() - 13.0f) / temp_f25;
s16 sp12 = -16384.0f - (14336.0f * temp_f29);
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
@@ -310,7 +311,7 @@ void daAlink_c::setIronBallChainPos() {
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp268, &sp298);
sp38 = 2.0f * (1.0f + sp30->getFrame());
sp38 = 2.0f * (1.0f + framectrl->getFrame());
} else {
sp38 = -1;
}
@@ -448,8 +449,9 @@ BOOL daAlink_c::checkIronBallReturnChange() {
if (mProcID != PROC_IRON_BALL_THROW ||
(!(mBodyAngle.x > 0x400) && mIronBallBgChkPos.y < (current.pos.y - 200.0f)) ||
(mBodyAngle.x > 0x400 && mItemMode == 0x64) ||
(field_0xFB8.ChkAtHit() && field_0xFB8.GetAtHitGObj() != NULL &&
static_cast<dCcD_GObjInf*>(field_0xFB8.GetAtHitGObj())->ChkTgIronBallRebound())) {
(mAtSph.ChkAtHit() && mAtSph.GetAtHitGObj() != NULL &&
static_cast<dCcD_GObjInf*>(mAtSph.GetAtHitGObj())->ChkTgIronBallRebound()))
{
setIronBallReturn(0);
return true;
}
@@ -465,7 +467,7 @@ void daAlink_c::setIronBallPos() {
cXyz spDC;
cXyz spD0(mIronBallCenterPos);
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xF));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(15));
mDoMtx_stack_c::transM(-1.0f, -6.0f, -3.6f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(150.0f), cM_deg2s(-81.0f), cM_deg2s(111.0f));
@@ -478,7 +480,7 @@ void daAlink_c::setIronBallPos() {
mDoMtx_stack_c::multVecZero(&mHeldItemRootPos);
mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x316c);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(9), &sp10C);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(0xE), &sp100);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(14), &sp100);
spE8 = (sp10C + sp100) * 0.5f;
@@ -494,12 +496,12 @@ void daAlink_c::setIronBallPos() {
cXyz spC4;
cXyz spB8;
if (field_0xFB8.ChkAtHit()) {
if (mAtSph.ChkAtHit()) {
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (mItemVar0.field_0x3018 == 0) {
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xA));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(10));
mDoMtx_stack_c::transM(-35.3f, -9.5f, -16.0f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(61.5f), cM_deg2s(-2.5f), cM_deg2s(50.3f));
mDoMtx_stack_c::multVecZero(mIronBallChainPos);
@@ -513,8 +515,8 @@ void daAlink_c::setIronBallPos() {
mItemMode = 6;
} else if (mItemVar0.field_0x3018 != 1) {
if (mItemVar0.field_0x3018 == 2) {
daPy_frameCtrl_c* temp_r24 = &mUpperFrameCtrl[2];
s16 sp10 = 32768.0f - (65536.0f * (temp_r24->getFrame() / temp_r24->getEnd()));
daPy_frameCtrl_c* framectrl = &mUpperFrameCtrl[2];
s16 sp10 = 32768.0f - (65536.0f * (framectrl->getFrame() / framectrl->getEnd()));
mItemMode = 3;
@@ -570,13 +572,13 @@ void daAlink_c::setIronBallPos() {
spF4 = *mIronBallChainPos - mHookshotTopPos;
f32 temp_f1 = spF4.abs();
BOOL var_r26 = 0;
BOOL var_r26 = FALSE;
if (temp_f1 > 1000.0f) {
spF4 *= 1000.0f / temp_f1;
*mIronBallChainPos = mHookshotTopPos + spF4;
if (field_0x3848->abs2() < 1.0f) {
var_r26 = 1;
var_r26 = TRUE;
} else {
field_0x3848->x = 0.0f;
field_0x3848->z = 0.0f;
@@ -811,14 +813,14 @@ BOOL daAlink_c::checkIronBallAnime() const {
void daAlink_c::setIronBallReadyAnime() {
resetUpperAnime(UPPER_2, -1.0f);
setSingleAnime(ANM_IRONBALL_ATTACK, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, 0.0f,
0x15, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
setUpperAnimeBaseSpeed(0x19A, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
21, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBTHROW_e, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
mNowAnmPackUpper[2].setRatio(0.0f);
voiceStart(Z2SE_AL_V_SWING_IB);
field_0xFB8.OffAtSetBit();
field_0xFB8.ResetAtHit();
field_0xFB8.SetAtAtp(2);
mAtSph.OffAtSetBit();
mAtSph.ResetAtHit();
mAtSph.SetAtAtp(2);
field_0x301e = 10;
field_0x3020 = 0;
@@ -845,13 +847,12 @@ BOOL daAlink_c::checkUpperItemActionIronBall() {
return procIronBallThrowInit();
}
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
if (checkModeFlg(1)) {
setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
}
u16 upperId = getMainBckData(ANM_IRONBALL_TURN)->m_upperID;
setUpperAnimeBaseSpeed(upperId, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
setUpperAnimeBaseSpeed(getMainBckData(ANM_IRONBALL_TURN)->m_upperID, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
mItemVar0.field_0x3018 = 2;
seStartOnlyReverb(Z2SE_AL_IB_SWING);
return 1;
@@ -912,7 +913,7 @@ int daAlink_c::procIronBallSubjectInit() {
int daAlink_c::procIronBallSubject() {
if (checkIronBallAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -943,13 +944,13 @@ int daAlink_c::procIronBallMoveInit() {
int daAlink_c::procIronBallMove() {
if (checkIronBallAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkIronBallPreSwingAnime()) {
mNormalSpeed = 0.0f;
@@ -960,7 +961,7 @@ int daAlink_c::procIronBallMove() {
if (field_0x2f98 != 2) {
field_0x2f98 = 2;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
@@ -969,7 +970,7 @@ int daAlink_c::procIronBallMove() {
if (checkModeFlg(1)) {
setIronBallBaseAnime();
} else {
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
}
setBodyAngleXReadyAnime(0);
@@ -992,12 +993,12 @@ int daAlink_c::procIronBallThrowInit() {
voiceStart(Z2SE_AL_V_THROW_IB);
seStartOnlyReverb(Z2SE_AL_IB_THROW);
field_0xFB8.SetAtAtp(3);
mAtSph.SetAtAtp(3);
return 1;
}
int daAlink_c::procIronBallThrow() {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (mEquipItem != fpcNm_ITEM_IRONBALL) {
return checkWaitAction();
@@ -1009,16 +1010,16 @@ int daAlink_c::procIronBallThrow() {
return procIronBallReturnInit();
}
if (mItemVar0.field_0x3018 == 4 && temp_r29->checkPass(6.0f)) {
if (mItemVar0.field_0x3018 == 4 && framectrl->checkPass(6.0f)) {
mItemVar0.field_0x3018 = 5;
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
Vec sp8 = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
mDoMtx_stack_c::multVec(&sp8, field_0x3848);
Vec throwVec = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
mDoMtx_stack_c::multVec(&throwVec, field_0x3848);
field_0x3022 = 0;
}
if (checkAnmEnd(temp_r29)) {
if (checkAnmEnd(framectrl)) {
if (mProcVar2.field_0x300c == 0) {
mProcVar2.field_0x300c = 1;
setSingleAnimeBaseSpeed(ANM_IRONBALL_THROW, mpHIO->mItem.mIronBall.m.mThrowAnmSpeed, mpHIO->mItem.mIronBall.m.mThrowInterpolation);
@@ -1028,9 +1029,9 @@ int daAlink_c::procIronBallThrow() {
procIronBallReturnInit();
}
} else if (mProcVar2.field_0x300c != 0) {
if (temp_r29->getFrame() >= 5.0f) {
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
if (framectrl->getFrame() >= 5.0f) {
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
}
@@ -1070,7 +1071,7 @@ int daAlink_c::procIronBallReturn() {
seStartOnlyReverb(Z2SE_AL_IB_CATCH);
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
} else if (frameCtrl->checkAnmEnd()) {
} else if (checkAnmEnd(frameCtrl)) {
if (mItemVar0.field_0x3018 == 8) {
mItemVar0.field_0x3018 = 0;
setIronBallWaitUpperAnime(1);
+34 -33
View File
@@ -11,6 +11,8 @@
#include "SSystem/SComponent/c_math.h"
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_TAG_LANTERN) {
return i_actor;
}
@@ -19,10 +21,11 @@ static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data)
}
static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
daAlink_c* player_p = daAlink_getAlinkActorClass();
if (fopAcM_GetName(i_actor) == PROC_Tag_KtOnFire &&
i_actor->current.pos.abs2(player_p->current.pos) < 22500.0f &&
i_actor->current.pos.abs2(player_p->current.pos) < SQUARE(150.0f) &&
fopAcM_seenActorAngleY(player_p, i_actor) < 0x3000)
{
return i_actor;
@@ -34,7 +37,7 @@ static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data)
void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
if (mpKanteraModel != NULL) {
if (checkNoResetFlg2(FLG2_UNK_1)) {
deleteEquipItem(0, 1);
deleteEquipItem(FALSE, TRUE);
}
onEndResetFlg1(ERFLG1_UNK_4);
@@ -51,7 +54,6 @@ void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
}
BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
f32 tmp_65 = 65.0f; // tmp can be removed with literals
f32 base_y_pos;
if (checkModeFlg(0x40)) {
base_y_pos = mRightFootPos.y;
@@ -59,7 +61,7 @@ BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
base_y_pos = current.pos.y;
}
return param_0 > tmp_65 + base_y_pos;
return param_0 > 65.0f + base_y_pos;
}
void daAlink_c::checkWaterInKandelaar(f32 param_0) {
@@ -74,7 +76,7 @@ void daAlink_c::checkWaterInKandelaar(f32 param_0) {
}
void daAlink_c::offKandelaarModel() {
offNoResetFlg2(FLG2_UNK_10000001);
offNoResetFlg2(daPy_FLG2(FLG2_KANDELAAR_LIGHT_OFF | FLG2_UNK_1));
mZ2Link.setKanteraState(0);
}
@@ -111,7 +113,7 @@ int daAlink_c::kandelaarModelCallBack() {
mDoMtx_stack_c::multVec(&sp38, &sp38);
s16 var_r28 = cLib_minMaxLimit<s16>(cM_atan2s(-sp38.z, -sp38.y), -0x1800, 0x1800);
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt((sp38.y * sp38.y) + (sp38.z * sp38.z))), -0x1800, 0x1800);
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt(SQUARE(sp38.y) + SQUARE(sp38.z))), -0x1800, 0x1800);
mDoMtx_stack_c::transS(sp44);
if (mProcID != PROC_OPEN_TREASURE && (mProcID != PROC_GET_ITEM || mProcVar4.field_0x3010 == 0)) {
@@ -124,10 +126,10 @@ int daAlink_c::kandelaarModelCallBack() {
field_0x3618 = (mKandelaarFlamePos - field_0x3624) * 0.9f;
if (!checkEndResetFlg1(ERFLG1_UNK_8)) {
f32 temp_f31 = JMAFastSqrt((J3DSys::mCurrentMtx[0][0] * J3DSys::mCurrentMtx[0][0]) + (J3DSys::mCurrentMtx[1][0] * J3DSys::mCurrentMtx[1][0]) + (J3DSys::mCurrentMtx[2][0] * J3DSys::mCurrentMtx[2][0]));
f32 scale = JMAFastSqrt(SQUARE(J3DSys::mCurrentMtx[0][0]) + SQUARE(J3DSys::mCurrentMtx[1][0]) + SQUARE(J3DSys::mCurrentMtx[2][0]));
mDoMtx_stack_c::transS(J3DSys::mCurrentMtx[0][3], J3DSys::mCurrentMtx[1][3], J3DSys::mCurrentMtx[2][3]);
mDoMtx_stack_c::ZXYrotM(var_r28, var_r29, var_r27);
mDoMtx_stack_c::scaleM(temp_f31, temp_f31, temp_f31);
mDoMtx_stack_c::scaleM(scale, scale, scale);
mpKanteraModel->setAnmMtx(1, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
@@ -136,7 +138,9 @@ int daAlink_c::kandelaarModelCallBack() {
return 1;
}
static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
static int daAlink_kandelaarModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
@@ -147,7 +151,7 @@ static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
}
cXyz* daAlink_c::getKandelaarFlamePos() {
if ((!checkNoResetFlg2((daPy_FLG2)0x20001) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
if ((!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_20000 | FLG2_UNK_1)) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
checkWolf() || !checkNoResetFlg1(FLG1_UNK_80))
{
return NULL;
@@ -157,7 +161,7 @@ cXyz* daAlink_c::getKandelaarFlamePos() {
}
BOOL daAlink_c::checkKandelaarEquipAnime() const {
return checkUpperAnime(0x264) || checkUpperAnime(0x268);
return checkUpperAnime(dRes_ID_ALANM_BCK_WAITHK_e) || checkUpperAnime(dRes_ID_ALANM_BCK_WAITK_e);
}
void daAlink_c::preKandelaarDraw() {
@@ -179,14 +183,14 @@ void daAlink_c::preKandelaarDraw() {
mDoLib_project(&mKandelaarFlamePos, &proj);
camera_class* camera_p = dComIfGp_getCamera(0);
f32 var_f3;
f32 trimHeight;
if (camera_p != NULL) {
var_f3 = camera_p->mCamera.TrimHeight();
trimHeight = camera_p->mCamera.TrimHeight();
} else {
var_f3 = 0.0f;
trimHeight = 0.0f;
}
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > var_f3 && proj.y < FB_HEIGHT - var_f3) {
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > trimHeight && proj.y < FB_HEIGHT - trimHeight) {
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
} else {
field_0x32c8 = 0;
@@ -210,7 +214,7 @@ void daAlink_c::setKandelaarModel() {
if (!checkNoResetFlg2(FLG2_UNK_1)) {
onNoResetFlg2(FLG2_UNK_1);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(field_0x30c0), &mKandelaarFlamePos);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(mLeftItemJntNo), &mKandelaarFlamePos);
mKandelaarFlamePos.y -= 30.0f;
field_0x3630 = field_0x3624;
@@ -227,7 +231,6 @@ void daAlink_c::setKandelaarModel() {
mZ2Link.setKanteraState(1);
}
void daAlink_c::resetOilBottleModel() {
deleteEquipItem(FALSE, TRUE);
@@ -270,7 +273,7 @@ int daAlink_c::commonKandelaarPour(int param_0) {
current_anm = mUnderAnmHeap[0].getIdx();
}
onNoResetFlg2(FLG2_UNK_10000000);
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
if (current_anm == getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_underID) {
if (checkAnmEnd(frameCtrl_p)) {
@@ -310,14 +313,13 @@ int daAlink_c::commonKandelaarPour(int param_0) {
resetOilBottleModel();
resetSpecialEvent();
offNoResetFlg2(FLG2_UNK_10000000);
offNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
return 1;
}
return 0;
}
void daAlink_c::initKandelaarSwing() {
if (mEquipItem == fpcNm_ITEM_KANTERA) {
if (dComIfGs_getOil() != 0) {
@@ -328,19 +330,19 @@ void daAlink_c::initKandelaarSwing() {
}
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
field_0xFB8.ResetAtHit();
mAtSph.ResetAtHit();
if (!checkEventRun()) {
dComIfGp_setItemOilCount(-mpHIO->mItem.mLantern.m.mShakeOilLoss);
}
field_0xFB8.OffAtSetBit();
field_0xFB8.SetR(50.0f);
field_0xFB8.SetAtType(AT_TYPE_LANTERN_SWING);
field_0xFB8.SetAtHitMark(0);
field_0xFB8.SetAtSe(dCcD_SE_NONE);
field_0xFB8.SetAtAtp(0);
field_0xFB8.SetAtMtrl(dCcD_MTRL_FIRE);
mAtSph.OffAtSetBit();
mAtSph.SetR(50.0f);
mAtSph.SetAtType(AT_TYPE_LANTERN_SWING);
mAtSph.SetAtHitMark(0);
mAtSph.SetAtSe(dCcD_SE_NONE);
mAtSph.SetAtAtp(0);
mAtSph.SetAtMtrl(dCcD_MTRL_FIRE);
}
int daAlink_c::procKandelaarSwingInit() {
@@ -383,17 +385,16 @@ int daAlink_c::procKandelaarSwingInit() {
return 1;
}
int daAlink_c::procKandelaarSwing() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x27) {
if (checkAnmEnd(frameCtrl_p)) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != 0x27) {
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
onModeFlg(4);
checkNextAction(1);
}
@@ -402,7 +403,7 @@ int daAlink_c::procKandelaarSwing() {
}
int daAlink_c::procKandelaarPourInit() {
if (!dComIfGp_event_compulsory(this, 0, 0xFBFF)) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFBFF)) {
return 0;
}
+45 -38
View File
@@ -63,38 +63,39 @@ int daAlink_c::checkSubjectAction() {
return 0;
}
s16 daAlink_c::checkBodyAngleX(s16 param_0) {
s16 daAlink_c::checkBodyAngleX(s16 i_angle) {
if (checkWolf() || mProcID == PROC_PEEP_SUBJECTIVITY || mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
return param_0;
return i_angle;
}
Vec sp2C = { 0.0f, 0.0f, 0.0f };
sp2C.y = 0.5f * field_0x598;
f32 var_f31 = 0.5f * mHeight;
sp2C.y = var_f31;
cXyz sp20;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp20);
cXyz sp14;
cXyz backbone1_pos;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &backbone1_pos);
cXyz check_pos;
if (param_0 >= 0) {
if (i_angle >= 0) {
sp2C.z = 25.0f;
} else {
sp2C.z = -25.0f;
}
mDoMtx_stack_c::transS(sp20);
mDoMtx_stack_c::transS(backbone1_pos);
concatMagneBootMtx();
mDoMtx_stack_c::ZXYrotM(param_0, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp2C, &sp14);
mDoMtx_stack_c::ZXYrotM(i_angle, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp2C, &check_pos);
if (commonLineCheck(&sp20, &sp14)) {
cXyz sp8 = sp14 - mLinkLinChk.GetCross();
multVecMagneBootInvMtx(&sp8);
if (commonLineCheck(&backbone1_pos, &check_pos)) {
cXyz dist = check_pos - mLinkLinChk.GetCross();
multVecMagneBootInvMtx(&dist);
current.pos.x -= sp8.x;
current.pos.z -= sp8.z;
current.pos.x -= dist.x;
current.pos.z -= dist.z;
}
return param_0;
return i_angle;
}
BOOL daAlink_c::setBodyAngleToCamera() {
@@ -105,7 +106,7 @@ BOOL daAlink_c::setBodyAngleToCamera() {
s16 sp8;
if (checkInputOnR()) {
f32 var_f31 = 512.0f * field_0x33ac * field_0x33ac;
f32 var_f31 = 512.0f * mMoveValue * mMoveValue;
if (checkWolfEyeUp()) {
var_f31 *= 0.6f;
}
@@ -160,11 +161,11 @@ BOOL daAlink_c::subjectCancelTrigger() {
return false;
}
int daAlink_c::checkSubjectEnd(BOOL i_playSound) {
setDoStatus(0x12);
BOOL daAlink_c::checkSubjectEnd(BOOL i_isPlaySe) {
setDoStatus(BUTTON_STATUS_BACK);
if (checkEventRun() || checkEquipAnime() || doTrigger() || checkSetItemTrigger(fpcNm_ITEM_HAWK_EYE) || subjectCancelTrigger() || checkEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL) || dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x2000)) {
if (i_playSound) {
if (i_isPlaySe) {
seStartSystem(Z2SE_SUBJ_VIEW_OUT);
}
@@ -180,7 +181,8 @@ void daAlink_c::searchPeepObj(fopAc_ac_c* i_actor, void* i_data) {
f32 var_f31 = current.pos.abs2(i_actor->current.pos);
if (var_f31 < field_0x3478) {
field_0x3478 = var_f31;
*(fopAc_ac_c**)i_data = i_actor;
fopAc_ac_c** var_r29 = (fopAc_ac_c**)i_data;
*var_r29 = i_actor;
}
}
}
@@ -195,7 +197,7 @@ int daAlink_c::procCoSubjectivityInit() {
mNormalSpeed = 0.0f;
setSubjectMode();
field_0x2fe6 = shape_angle.y;
mPrevAngleY = shape_angle.y;
if (checkWolf()) {
setSingleAnimeWolfBaseSpeed(WANM_WAIT, 0.0f, 3.0f);
@@ -310,7 +312,7 @@ int daAlink_c::procCoPeepSubjectivity() {
mPeepExitID = peep->getSceneListID();
}
if (dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
if (dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
startPeepChange();
}
}
@@ -319,45 +321,45 @@ int daAlink_c::procCoPeepSubjectivity() {
}
u32 daAlink_c::checkBoardRide() const {
return mRideStatus == 4;
return mRideStatus == RIDETYPE_BOARD;
}
u32 daAlink_c::checkCanoeRide() const {
return mRideStatus == 3;
return mRideStatus == RIDETYPE_CANOE;
}
u32 daAlink_c::checkHorseRide() const {
return mRideStatus == 1;
return mRideStatus == RIDETYPE_HORSE;
}
MtxP daAlink_c::getLeftItemMatrix() {
return mpLinkModel->getAnmMtx(field_0x30c0);
return mpLinkModel->getAnmMtx(mLeftItemJntNo);
}
u32 daAlink_c::checkBoarRide() const {
return mRideStatus == 2;
return mRideStatus == RIDETYPE_BOAR;
}
u32 daAlink_c::checkSpinnerRide() const {
return mRideStatus == 5;
return mRideStatus == RIDETYPE_SPINNER;
}
MtxP daAlink_c::getLeftHandMatrix() {
return mpLinkModel->getAnmMtx(field_0x30b8);
return mpLinkModel->getAnmMtx(mLeftHandJntNo);
}
MtxP daAlink_c::getRightHandMatrix() {
return mpLinkModel->getAnmMtx(field_0x30ba);
return mpLinkModel->getAnmMtx(mRightHandJntNo);
}
void daAlink_c::onSceneChangeArea(u8 exitID, u8 exitDirection, fopAc_ac_c* scexAc) {
mExitID = exitID;
mExitDirection = exitDirection;
mpScnChg = (daScex_c*)scexAc;
void daAlink_c::onSceneChangeArea(u8 i_exitID, u8 i_exitDirection, fopAc_ac_c* i_scexAc) {
mExitID = i_exitID;
mExitDirection = i_exitDirection;
mpScnChg = (daScex_c*)i_scexAc;
}
MtxP daAlink_c::getRightItemMatrix() {
return mpLinkModel->getAnmMtx(field_0x30c2);
return mpLinkModel->getAnmMtx(mRightItemJntNo);
}
u32 daAlink_c::checkPlayerNoDraw() {
@@ -366,5 +368,10 @@ u32 daAlink_c::checkPlayerNoDraw() {
}
daAlink_c::daAlink_c()
: mAnmHeap3(0), mAnmHeap4(0), mFaceBtpHeap(0x800), mFaceBtkHeap(0x400), mFaceBckHeap(0xC00),
mAnmHeap9(0x800) {}
: mAnmHeap3(0),
mAnmHeap4(0),
mFaceBtpHeap(0x800),
mFaceBtkHeap(0x400),
mFaceBckHeap(0xC00),
mAnmHeap9(0x800)
{}
+12 -13
View File
@@ -84,7 +84,6 @@ bool daAlink_c::checkSpinnerTriggerAttack() {
return false;
}
void daAlink_c::setSpinnerSyncPos() {
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
@@ -150,8 +149,8 @@ int daAlink_c::procSpinnerReady() {
return 1;
}
void daAlink_c::setSpinnerStatus(u8 status, u8 flag) {
dComIfGp_setDoStatus(status, flag);
void daAlink_c::setSpinnerStatus(u8 i_status, u8 i_flag) {
dComIfGp_setDoStatus(i_status, i_flag);
}
int daAlink_c::procSpinnerWaitInit() {
@@ -159,7 +158,7 @@ int daAlink_c::procSpinnerWaitInit() {
return 0;
}
mRideStatus = 5;
mRideStatus = RIDETYPE_SPINNER;
setBgCheckParam();
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, 4.0f);
speed.y = 0.0f;
@@ -177,12 +176,12 @@ int daAlink_c::procSpinnerWaitInit() {
return 1;
}
int daAlink_c::procSpinnerWait() {
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
if (spinner == NULL || spinner->getDeleteFlg() || checkWindSpeedOnXZ() ||
checkEndResetFlg1(ERFLG1_UNK_1) || checkEndResetFlg0(ERFLG0_UNK_2)) {
checkEndResetFlg1(ERFLG1_NS_SCREAM) || checkEndResetFlg0(ERFLG0_FORCE_WOLF_CHANGE))
{
mNormalSpeed = 0.0f;
setJumpMode();
return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation);
@@ -200,7 +199,7 @@ int daAlink_c::procSpinnerWait() {
spinner->setMove(mNormalSpeed, getSpinnerRideMoveTime());
} else if (checkInputOnR()) {
int direction = getDirectionFromAngle(mStickAngle);
s16 angle = field_0x33ac * 384.0f * field_0x33ac;
s16 angle = mMoveValue * 384.0f * mMoveValue;
if (direction == DIR_LEFT) {
shape_angle.y += angle;
@@ -226,10 +225,10 @@ int daAlink_c::procSpinnerWait() {
if (spinner->checkPathMoveNow() == NULL) {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RIDE);
setSpinnerStatus(ACTION_STR_ATTACK, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_ATTACK, BUTTON_STATUS_FLAG_NONE);
} else {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RAIL);
setSpinnerStatus(ACTION_STR_JUMP2, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_UNK_101, BUTTON_STATUS_FLAG_NONE);
}
mNormalSpeed = spinner->speedF;
@@ -237,7 +236,7 @@ int daAlink_c::procSpinnerWait() {
if (spinner->checkSpinnerTagIntoIncRot()) {
mProcVar5.field_0x3012 = 1;
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
@@ -247,9 +246,9 @@ int daAlink_c::procSpinnerWait() {
}
} else if (spinner->checkSpinnerTagInto()) {
if (mProcVar5.field_0x3012 != 0) {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
} else {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_NONE);
}
if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) ||
@@ -276,7 +275,7 @@ int daAlink_c::procSpinnerWait() {
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f);
mProcVar4.field_0x3010 = 1;
}
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && checkAnmEnd(frameCtrl)) ||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
mpHIO->mItem.mBoard.m.mSitInterpolation);
+149 -142
View File
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkSumouVsActor() {
return false;
}
if (mSpecialMode == 0xD || mSpecialMode == 0xB || mSpecialMode == 0xC || mSpecialMode == 0xE) {
if (mMode == 0xD || mMode == 0xB || mMode == 0xC || mMode == 0xE) {
procSumouWinLoseInit();
return false;
}
@@ -27,15 +27,15 @@ BOOL daAlink_c::checkSumouVsActor() {
void daAlink_c::cancelSumouMode() {
mCargoCarryAcKeep.clearData();
mSpecialMode = 0;
mMode = 0;
}
BOOL daAlink_c::sumouPunchTrigger() {
return itemTriggerCheck(BTN_B);
return swordTrigger();
}
void daAlink_c::setSumouPunchStatus() {
setBStatus(ACTION_STR_SLAP);
setBStatus(BUTTON_STATUS_SLAP);
}
int daAlink_c::procSumouReadyInit() {
@@ -49,7 +49,7 @@ int daAlink_c::procSumouReadyInit() {
field_0x3588 = l_waitBaseAnime;
field_0x34d4 = field_0x3588;
field_0x2f99 = 4;
mSpecialMode = 1;
mMode = 1;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
deleteEquipItem(FALSE, TRUE);
@@ -68,9 +68,9 @@ int daAlink_c::procSumouReady() {
return 1;
}
if (mSpecialMode == 2 || mSpecialMode == 3 || mSpecialMode == 4) {
if (mMode == 2 || mMode == 3 || mMode == 4) {
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
if (doTrigger()) {
@@ -85,20 +85,20 @@ int daAlink_c::procSumouReady() {
if (mUnderAnmHeap[0].getIdx() == getMainBckData(ANM_SUMOU_HAKEYOI)->m_underID &&
mUnderFrameCtrl[0].checkPass(7.0f))
{
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
if (mSpecialMode == 3) {
if (mMode == 3) {
setSingleAnimeBase(ANM_SUMOU_HAKEYOI);
field_0x2f99 = 12;
mSpecialMode = 4;
mMode = 4;
dComIfGp_clearPlayerStatus0(0, 0x2000);
} else if (checkAnmEnd(mUnderFrameCtrl)) {
if (checkInputOnR()) {
s16 temp_r29 = (s16)(field_0x2fe2 - shape_angle.y);
s16 temp_r29 = (s16)(mMoveAngle - shape_angle.y);
int var_r30 = abs(temp_r29);
cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
cLib_distanceAngleS(mMoveAngle, shape_angle.y);
if (var_r30 > 0x800 && var_r30 < 0x7800) {
mNormalSpeed = 1.0f;
@@ -111,10 +111,9 @@ int daAlink_c::procSumouReady() {
}
}
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || mProcVar2.field_0x300c != 0 ||
if (mMode == 0x1C || mMode == 0x1B || mProcVar2.field_0x300c != 0 ||
mProcVar3.field_0x300e != 0 ||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() ==
3 &&
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
!checkZeroSpeedF()))
{
procSumouActionInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e, 0);
@@ -126,7 +125,6 @@ int daAlink_c::procSumouReady() {
return 1;
}
int daAlink_c::procSumouMoveInit() {
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
commonProcInit(PROC_SUMOU_MOVE);
@@ -135,30 +133,36 @@ int daAlink_c::procSumouMoveInit() {
field_0x3478 = 1000.0f;
daAlink_ANM anm;
if (mSpecialMode == 15 || mSpecialMode == 16) {
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
} else {
if (mMode == 15 || mMode == 16) {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE_WAIT;
} else {
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_WAIT_GORON : ANM_SUMOU_TACKLE_WAIT;
#endif
setSingleAnimeBase(anm);
mSpeedModifier = 1.0f;
mSpecialMode = 7;
mMode = 7;
mProcVar2.field_0x300c = 0xFFFF;
mProcVar0.field_0x3008 = 10;
field_0x3478 = 5.0f;
field_0x32cc = Z2SE_AL_V_SUMO_PUSH;
} else {
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE_STAGGER;
} else {
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_STAGGER_GORON : ANM_SUMOU_TACKLE_STAGGER;
#endif
setSingleAnimeBase(anm);
mSpeedModifier = -1.0f;
mSpecialMode = 8;
mMode = 8;
mProcVar2.field_0x300c = 10;
mProcVar0.field_0x3008 = 15;
field_0x2f9d = 0x60;
@@ -174,7 +178,6 @@ int daAlink_c::procSumouMoveInit() {
return 1;
}
int daAlink_c::procSumouMove() {
field_0x2f99 = 4;
@@ -190,7 +193,7 @@ int daAlink_c::procSumouMove() {
voiceStart(field_0x32cc);
}
if (mSpecialMode == 9 || mSpecialMode == 10) {
if (mMode == 9 || mMode == 10) {
if (mProcVar1.field_0x300a != 0) {
mProcVar1.field_0x300a--;
}
@@ -202,7 +205,7 @@ int daAlink_c::procSumouMove() {
}
f32 var_f1;
if (mSpecialMode == 10 && mProcVar1.field_0x300a == 0) {
if (mMode == 10 && mProcVar1.field_0x300a == 0) {
var_f1 = 1.5f;
} else {
var_f1 = 0.2f;
@@ -210,11 +213,11 @@ int daAlink_c::procSumouMove() {
cLib_chaseF(&sp8, var_f1, 0.3f);
frameCtrl_p->setRate(sp8);
} else if (mSpecialMode == 9) {
} else if (mMode == 9) {
cLib_chaseF(&sp8, 1.5f, 0.3f);
} else {
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
mSpecialMode = 0x23;
mMode = 0x23;
mSpeedModifier = 0.0f;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
@@ -240,26 +243,30 @@ int daAlink_c::procSumouMove() {
dMeter2Info_onBlinkButton(1);
if (mSpecialMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
if (mMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
mProcVar3.field_0x300e = 1;
field_0x2f99 = 12;
if (mSpeedModifier > 0.0f) {
daAlink_ANM anm;
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_PULL_BACK_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_PULL_BACK;
} else {
anm = ANM_SUMOU_PULL_BACK_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_PULL_BACK_GORON : ANM_SUMOU_PULL_BACK;
#endif
setSingleAnimeBase(anm);
mSpecialMode = 0x24;
mMode = 0x24;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_PUSHED_BACK;
field_0x3198 = anm;
} else {
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
mSpecialMode = 0x23;
mMode = 0x23;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
field_0x3198 = ANM_SUMOU_PUSH_BACK;
@@ -272,7 +279,7 @@ int daAlink_c::procSumouMove() {
if (mSpeedModifier > 0.0f && checkInputOnR()) {
int direction = getDirectionFromAngle(mStickAngle);
if (direction == DIR_LEFT || direction == DIR_RIGHT) {
var_r31 = field_0x33ac * (mpHIO->mPushpull.m.mSumoRotationAngle * field_0x33ac);
var_r31 = mMoveValue * (mpHIO->mPushpull.m.mSumoRotationAngle * mMoveValue);
if (direction == DIR_RIGHT) {
var_r31 = -var_r31;
@@ -311,18 +318,17 @@ int daAlink_c::procSumouMove() {
return 1;
}
int daAlink_c::procSumouSideMoveInit() {
commonProcInit(PROC_SUMOU_SIDE_MOVE);
mSpecialMode = 0x16;
mMode = 0x16;
field_0x2f98 = 3;
current.angle.y = shape_angle.y + -0x4000;
field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed;
mMaxSpeed = mpHIO->mAtnMove.m.mMaxSpeed;
setSingleAnimeBase(ANM_SUMOU_FIGHT_WAIT);
field_0x3198 = 0x141;
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
field_0x2f99 = 12;
@@ -353,8 +359,8 @@ int daAlink_c::procSumouSideMove() {
current.angle.y = shape_angle.y + 0x4000;
}
int temp_r30_2 = cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
int temp_r30_2 = cLib_distanceAngleS(mMoveAngle, shape_angle.y);
if (mMode == 0x1C || mMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
!checkZeroSpeedF()))
{
@@ -362,12 +368,12 @@ int daAlink_c::procSumouSideMove() {
}
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
f32 var_f1;
if (checkInputOnR() && temp_r30_2 > 0x800 && temp_r30_2 < 0x7800) {
if (abs((s16)(field_0x2fe2 - current.angle.y)) > 0x4000) {
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
current.angle.y += 0x8000;
mNormalSpeed *= -1.0f;
@@ -378,8 +384,8 @@ int daAlink_c::procSumouSideMove() {
}
}
if (field_0x33ac > (1.0f - fabsf(mNormalSpeed / field_0x594)) * 0.3f) {
var_f1 = mpHIO->mAtnMove.m.mAcceleration * field_0x33ac;
if (mMoveValue > (1.0f - fabsf(mNormalSpeed / mMaxSpeed)) * 0.3f) {
var_f1 = mpHIO->mAtnMove.m.mAcceleration * mMoveValue;
} else {
var_f1 = 0.0f;
}
@@ -391,7 +397,7 @@ int daAlink_c::procSumouSideMove() {
if (checkZeroSpeedF()) {
onModeFlg(1);
mSpecialMode = 0x16;
mMode = 0x16;
field_0x2f98 = 3;
current.angle.y = shape_angle.y - 0x4000;
@@ -417,13 +423,15 @@ int daAlink_c::procSumouSideMove() {
mSpeedModifier = 1.0f;
}
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
if (field_0x2f98 == 3) {
mSpecialMode = 0x18;
mMode = 0x18;
} else {
mSpecialMode = 0x17;
mMode = 0x17;
}
mUnderFrameCtrl[0].setRate(mNormalSpeed / field_0x594);
framectrl->setRate(mNormalSpeed / mMaxSpeed);
initBasAnime();
field_0x2f9d = 0x60;
}
@@ -431,8 +439,8 @@ int daAlink_c::procSumouSideMove() {
return 1;
}
int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int unused) {
int daAlink_c::procSumouActionInit(BOOL i_isDoTrigger, BOOL i_isPunchTrigger, int unused) {
UNUSED(unused);
commonProcInit(PROC_SUMOU_ACTION);
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
@@ -440,100 +448,94 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
mProcVar5.field_0x3012 = 0;
daAlink_ANM anm;
if (mSpecialMode == 0x21) {
mSpecialMode = 0x22;
if (mMode == 0x21) {
mMode = 0x22;
anm = ANM_SUMOU_PUNCH_SHOCK;
} else if (mSpecialMode == 0x1C) {
i_doTrigger = FALSE;
i_punchTrigger = FALSE;
mSpecialMode = 0x1E;
} else if (mMode == 0x1C) {
i_isDoTrigger = FALSE;
i_isPunchTrigger = FALSE;
mMode = 0x1E;
if (!checkZeroSpeedF()) {
daAlink_ANM var_r0;
if (field_0x2f98 == 2) {
var_r0 = ANM_SUMOU_FIGHT_STEP_LEFT;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
} else {
var_r0 = ANM_SUMOU_FIGHT_STEP_RIGHT;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
}
anm = var_r0;
mProcVar5.field_0x3012 = 1;
} else {
anm = ANM_SUMOU_PUNCH_SHOCK;
}
} else if (mSpecialMode == 0x1B) {
i_doTrigger = FALSE;
i_punchTrigger = FALSE;
mSpecialMode = 0x1D;
} else if (mMode == 0x1B) {
i_isDoTrigger = FALSE;
i_isPunchTrigger = FALSE;
mMode = 0x1D;
anm = ANM_SUMOU_TACKLE_SHOCK;
} else if (wrestler_action == 2) {
if (i_doTrigger) {
mSpecialMode = 0x10;
if (i_isDoTrigger) {
mMode = 0x10;
anm = ANM_SUMOU_DODGE_TACKLE;
} else if (i_punchTrigger) {
mSpecialMode = 0x15;
} else if (i_isPunchTrigger) {
mMode = 0x15;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
} else {
mSpecialMode = 0x1E;
mMode = 0x1E;
if (!checkZeroSpeedF()) {
daAlink_ANM var_r0_2;
if (field_0x2f98 == 2) {
var_r0_2 = ANM_SUMOU_FIGHT_STEP_LEFT;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
} else {
var_r0_2 = ANM_SUMOU_FIGHT_STEP_RIGHT;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
}
anm = var_r0_2;
mProcVar5.field_0x3012 = 1;
} else {
anm = ANM_SUMOU_PUNCH_SHOCK;
}
}
} else if (wrestler_action == 3) {
if (i_doTrigger) {
mSpecialMode = 0x12;
if (i_isDoTrigger) {
mMode = 0x12;
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
} else if (i_punchTrigger) {
mSpecialMode = 0x14;
} else if (i_isPunchTrigger) {
mMode = 0x14;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK;
} else if (!checkZeroSpeedF()) {
if (field_0x2f98 == 3) {
mSpecialMode = 0x1A;
mMode = 0x1A;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
} else {
mSpecialMode = 0x19;
mMode = 0x19;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
}
} else {
mSpecialMode = 0x1D;
mMode = 0x1D;
anm = ANM_SUMOU_TACKLE_SHOCK;
}
} else if (wrestler_action == 1) {
if (i_doTrigger) {
mSpecialMode = 0x11;
if (i_isDoTrigger) {
mMode = 0x11;
anm = ANM_SUMOU_TACKLE_MISS;
} else {
mSpecialMode = 0x13;
mMode = 0x13;
anm = ANM_SUMOU_PUNCH;
}
} else if (wrestler_p->getWrestlerType() != 0 && !checkEquipHeavyBoots()) {
if (i_doTrigger) {
mSpecialMode = 0x12;
if (i_isDoTrigger) {
mMode = 0x12;
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
} else {
mSpecialMode = 0x15;
mMode = 0x15;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
}
} else if (i_doTrigger) {
mSpecialMode = 0xF;
} else if (i_isDoTrigger) {
mMode = 0xF;
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE;
} else {
anm = ANM_SUMOU_TACKLE_GORON;
}
} else {
mSpecialMode = 0x13;
mMode = 0x13;
anm = ANM_SUMOU_PUNCH;
}
@@ -541,19 +543,19 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
mDoMtx_stack_c::YrotM(shape_angle.y);
mProcVar3.field_0x300e = 0x82;
if (mSpecialMode == 0x19) {
if (mMode == 0x19) {
dComIfGp_setAdvanceDirection(1);
mProcVar4.field_0x3010 = shape_angle.y - 0x2800;
field_0x2f98 = 2;
} else if (mSpecialMode == 0x1A) {
} else if (mMode == 0x1A) {
field_0x2f98 = 3;
dComIfGp_setAdvanceDirection(4);
mProcVar4.field_0x3010 = shape_angle.y + 0x2800;
} else if (i_doTrigger) {
setDoStatusEmphasys(0x15);
} else if (i_isDoTrigger) {
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
mProcVar3.field_0x300e = 0x15;
field_0x2f98 = 4;
} else if (i_punchTrigger) {
} else if (i_isPunchTrigger) {
setSumouPunchStatus();
mProcVar3.field_0x300e = 0x44;
field_0x2f98 = 4;
@@ -567,13 +569,13 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
field_0x2f98 = 4;
}
f32 var_f31;
f32 anm_frame;
if ((anm == ANM_SUMOU_FIGHT_STEP_RIGHT || anm == ANM_SUMOU_FIGHT_STEP_LEFT) &&
mUnderAnmHeap[0].getIdx() != (getMainBckData(anm)->m_underID & 0xFFF))
{
var_f31 = mUnderFrameCtrl[0].getFrame();
anm_frame = mUnderFrameCtrl[0].getFrame();
} else {
var_f31 = 0.0f;
anm_frame = 0.0f;
}
mProcVar2.field_0x300c = 0;
@@ -587,8 +589,8 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
}
setSingleAnime(anm, 1.0f, 0.0f, end_frame, 3.0f);
mUnderFrameCtrl[0].setFrame(var_f31);
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
mUnderFrameCtrl[0].setFrame(anm_frame);
getNowAnmPackUnder(UNDER_0)->setFrame(anm_frame);
cLib_addCalcAngleS(&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos),
@@ -634,7 +636,6 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
return 1;
}
int daAlink_c::procSumouAction() {
field_0x2f99 = 4;
@@ -650,11 +651,11 @@ int daAlink_c::procSumouAction() {
mProcVar2.field_0x300c++;
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B) {
if (mMode == 0x1C || mMode == 0x1B) {
return procSumouActionInit(FALSE, FALSE, 0);
}
if (mSpecialMode == 0x19 || mSpecialMode == 0x1A) {
if (mMode == 0x19 || mMode == 0x1A) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
current.angle.y = shape_angle.y;
@@ -664,20 +665,20 @@ int daAlink_c::procSumouAction() {
procSumouSideMoveInit();
}
} else {
if (mSpecialMode == 0x13) {
if (mMode == 0x13) {
cLib_addCalcAngleS(
&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
0x2000, 0x800);
current.angle.y = shape_angle.y;
} else if (mSpecialMode == 0x1E && mProcVar5.field_0x3012 != 0) {
} else if (mMode == 0x1E && mProcVar5.field_0x3012 != 0) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
current.angle.y = shape_angle.y;
current.pos.set(field_0x37c8.x - field_0x3478 * cM_ssin(current.angle.y),
field_0x37c8.y,
field_0x37c8.z - field_0x3478 * cM_scos(current.angle.y));
} else if (mSpecialMode == 0x1E || mSpecialMode == 0x1D) {
} else if (mMode == 0x1E || mMode == 0x1D) {
cLib_addCalcAngleS(
&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
@@ -686,18 +687,18 @@ int daAlink_c::procSumouAction() {
}
if (mProcVar3.field_0x300e == 0x15) {
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
} else if (mProcVar3.field_0x300e == 0x44) {
setSumouPunchStatus();
}
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (checkAnmEnd(frameCtrl_p)) {
if (mSpecialMode == 0x1E) {
if (mMode == 0x1E) {
procSumouStaggerInit();
} else if (mSpecialMode == 0x12 || mSpecialMode == 0x22 || mSpecialMode == 0x13 ||
mSpecialMode == 0x1A || mSpecialMode == 0x19 || mSpecialMode == 0x11 ||
mSpecialMode == 0x15)
} else if (mMode == 0x12 || mMode == 0x22 || mMode == 0x13 ||
mMode == 0x1A || mMode == 0x19 || mMode == 0x11 ||
mMode == 0x15)
{
procSumouSideMoveInit();
} else {
@@ -725,14 +726,13 @@ int daAlink_c::procSumouAction() {
return 1;
}
int daAlink_c::procSumouStaggerInit() {
commonProcInit(PROC_SUMOU_STAGGER);
if (mSpecialMode == 0x11) {
mSpecialMode = 0x20;
if (mMode == 0x11) {
mMode = 0x20;
} else {
mSpecialMode = 0x1F;
mMode = 0x1F;
}
setSingleAnimeBase(ANM_SUMOU_STAGGER);
@@ -750,8 +750,8 @@ int daAlink_c::procSumouStagger() {
}
mProcVar0.field_0x3008--;
if (mSpecialMode == 0x1C || mSpecialMode == 0x21 || mSpecialMode == 0x1B) {
procSumouActionInit(0, 0, 0);
if (mMode == 0x1C || mMode == 0x21 || mMode == 0x1B) {
procSumouActionInit(FALSE, FALSE, 0);
} else if (mProcVar0.field_0x3008 == 0) {
procSumouSideMoveInit();
}
@@ -760,7 +760,7 @@ int daAlink_c::procSumouStagger() {
}
int daAlink_c::procSumouWinLoseInit() {
if (mSpecialMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
if (mMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
cancelSumouMode();
return procWaitInit();
}
@@ -770,15 +770,20 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x3478 = 1000.0f;
daAlink_ANM anm = ANM_WAIT;
if (mSpecialMode == 0xB) {
if (mMode == 0xB) {
mProcVar2.field_0x300c = 1;
} else if (mSpecialMode == 0xD) {
} else if (mMode == 0xD) {
field_0x2f99 = 12;
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_WIN_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_WIN;
} else {
anm = ANM_SUMOU_WIN_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_WIN_GORON : ANM_SUMOU_WIN;
#endif
setSingleAnimeBase(anm);
mProcVar2.field_0x300c = 1;
@@ -787,7 +792,7 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x3198 = 13;
} else {
f32 start_frame;
if (mSpecialMode == 12) {
if (mMode == 12) {
start_frame = 24.0f;
voiceStart(Z2SE_AL_V_SUMO_FALL_LOSE);
} else {
@@ -796,11 +801,15 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x32cc = Z2SE_AL_V_SUMO_FALL_LOSE;
}
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_LOSE_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_LOSE;
} else {
anm = ANM_SUMOU_LOSE_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_LOSE_GORON : ANM_SUMOU_LOSE;
#endif
setSingleAnime(anm, 1.0f, start_frame, -1, 3.0f);
field_0x2f99 = 15;
@@ -818,7 +827,6 @@ int daAlink_c::procSumouWinLoseInit() {
return 1;
}
int daAlink_c::procSumouWinLose() {
if (mProcVar3.field_0x300e == 0) {
if (mProcVar2.field_0x300c != 0) {
@@ -844,7 +852,7 @@ int daAlink_c::procSumouWinLose() {
field_0x3478 = 1000.0f;
field_0x3198 = ANM_SUMOU_KNOCKED_DOWN;
}
} else if (mProcVar3.field_0x300e == 0 && mSpecialMode == 0x25) {
} else if (mProcVar3.field_0x300e == 0 && mMode == 0x25) {
setSingleAnimeBase(ANM_SUMOU_GET_UP);
mProcVar3.field_0x300e = 1;
field_0x3478 = 1000.0f;
@@ -860,7 +868,6 @@ int daAlink_c::procSumouWinLose() {
return 1;
}
int daAlink_c::procSumouShikoInit() {
if (!commonProcInitNotSameProc(PROC_SUMOU_SHIKO)) {
return 0;
@@ -872,10 +879,10 @@ int daAlink_c::procSumouShikoInit() {
field_0x34d4 = field_0x3588;
field_0x2f99 = 12;
mProcVar2.field_0x300c = 0;
mSpecialMode = 0;
mMode = 0;
setFootEffectProcType(5);
deleteEquipItem(0, 1);
deleteEquipItem(FALSE, TRUE);
return 1;
}
@@ -885,7 +892,7 @@ int daAlink_c::procSumouShiko() {
field_0x2f99 = 4;
}
if (mSpecialMode == 1) {
if (mMode == 1) {
return procSumouReadyInit();
}
@@ -899,8 +906,8 @@ int daAlink_c::procSumouShiko() {
} else if (frameCtrl_p->checkPass(65.0f)) {
voiceStart(Z2SE_AL_V_SUMO_SHIKO);
} else if (frameCtrl_p->checkPass(9.0f)) {
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
} else {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
+183 -177
View File
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkAcceptUseItemInWater(u16 i_itemNo) const {
void daAlink_c::swimDeleteItem() {
if (!checkHookshotItem(mEquipItem) && (mEquipItem != 0x103 || !checkBootsOrArmorHeavy())) {
deleteEquipItem(1, 1);
deleteEquipItem(TRUE, TRUE);
}
if (checkNoResetFlg2(FLG2_UNK_1)) {
@@ -54,23 +54,21 @@ f32 daAlink_c::getSwimMaxFallSpeed() const {
}
void daAlink_c::checkOxygenTimer() {
BOOL hide_timer;
BOOL is_hide_timer;
if (!checkNoResetFlg0(FLG0_SWIM_UP) ||
(checkModeFlg(MODE_SWIMMING) && mWaterY > 5.0f + current.pos.y))
{
hide_timer = false;
is_hide_timer = false;
} else {
hide_timer = true;
is_hide_timer = true;
}
if (dComIfGp_getOxygenShowFlag()) {
if (checkZoraWearAbility()) {
offOxygenTimer();
} else if (hide_timer) {
s32 max = dComIfGp_getMaxOxygen();
dComIfGp_setOxygenCount(max);
} else if (is_hide_timer) {
dComIfGp_setOxygenCount(dComIfGp_getMaxOxygen());
if (field_0x2fbe < 90) {
field_0x2fbe++;
} else {
@@ -79,7 +77,7 @@ void daAlink_c::checkOxygenTimer() {
} else if (!checkEventRun()) {
dComIfGp_setOxygenCount(-1);
}
} else if (!hide_timer && !checkZoraWearAbility()) {
} else if (!is_hide_timer && !checkZoraWearAbility()) {
if (field_0x2fbe != 0) {
field_0x2fbe--;
} else {
@@ -91,19 +89,19 @@ void daAlink_c::checkOxygenTimer() {
void daAlink_c::offOxygenTimer() {
dComIfGp_offOxygenShowFlag();
s32 max = dComIfGp_getMaxOxygen();
dComIfGp_setOxygen(max);
dComIfGp_setOxygen(dComIfGp_getMaxOxygen());
field_0x2fbe = 90;
}
BOOL daAlink_c::checkPossibleWaterInMode() const {
return checkModeFlg(MODE_VINE_CLIMB) || dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
return checkModeFlg(MODE_VINE_CLIMB) ||
dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
mProcID == PROC_HOOKSHOT_FLY;
}
void daAlink_c::setWaterInAnmRate(daPy_frameCtrl_c* i_frameCtrl, f32 i_rate) {
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
if (checkZoraWearAbility()) {
i_rate *= mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed;
} else {
@@ -121,24 +119,24 @@ void daAlink_c::swimBgCheck(f32 param_0) {
return;
}
cXyz start_pos(current.pos);
cXyz end_pos;
cXyz linechk_start(current.pos);
cXyz linechk_end;
s16 var_r29;
if (getZoraSwim()) {
var_r29 = field_0x3080;
} else {
var_r29 = mProcVar2.field_0x300c;
start_pos.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
linechk_start.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
}
f32 var_f28 = param_0 * cM_scos(var_r29);
end_pos.set(start_pos.x + (var_f28 * cM_ssin(shape_angle.y)),
start_pos.y - param_0 * cM_ssin(var_r29),
start_pos.z + (var_f28 * cM_scos(shape_angle.y)));
linechk_end.set(linechk_start.x + (var_f28 * cM_ssin(shape_angle.y)),
linechk_start.y - param_0 * cM_ssin(var_r29),
linechk_start.z + (var_f28 * cM_scos(shape_angle.y)));
if (!commonLineCheck(&start_pos, &end_pos)) {
if (!commonLineCheck(&linechk_start, &linechk_end)) {
return;
}
@@ -148,12 +146,9 @@ void daAlink_c::swimBgCheck(f32 param_0) {
if (cBgW_CheckBWall(tri.mNormal.y) &&
(mProcID != PROC_METAMORPHOSE || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7))
{
cXyz sp14 = end_pos - mLinkLinChk.GetCross();
f32 temp_f1 = sp14.absXZ();
cXyz sp14 = linechk_end - mLinkLinChk.GetCross();
s16 var_r28 = sp14.atan2sX_Z();
f32 var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
f32 var_f29 = -temp_f1 * var_f26;
f32 var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
f32 var_f31 = var_f29 * tri.mNormal.x;
f32 var_f30 = var_f29 * tri.mNormal.z;
@@ -165,21 +160,18 @@ void daAlink_c::swimBgCheck(f32 param_0) {
onNoResetFlg1(FLG1_UNK_20000000);
}
start_pos.x -= var_f31;
start_pos.z -= var_f30;
end_pos.x -= var_f31;
end_pos.z -= var_f30;
linechk_start.x -= var_f31;
linechk_start.z -= var_f30;
linechk_end.x -= var_f31;
linechk_end.z -= var_f30;
if (commonLineCheck(&start_pos, &end_pos)) {
if (commonLineCheck(&linechk_start, &linechk_end)) {
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tri);
if (cBgW_CheckBWall(tri.mNormal.y)) {
sp14 = end_pos - mLinkLinChk.GetCross();
temp_f1 = sp14.absXZ();
sp14 = linechk_end - mLinkLinChk.GetCross();
var_r28 = sp14.atan2sX_Z();
var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
var_f29 = -temp_f1 * var_f26;
var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
var_f31 += var_f29 * tri.mNormal.x;
var_f30 += var_f29 * tri.mNormal.z;
@@ -193,35 +185,36 @@ void daAlink_c::swimBgCheck(f32 param_0) {
}
void daAlink_c::setSpeedAndAngleSwim() {
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == 0 && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == BUTTON_STATUS_NONE && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
if (checkZoraWearAbility()) {
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
if (field_0x2fcd == 0) {
setDoStatus(0x41);
setDoStatus(BUTTON_STATUS_DIVE);
}
} else {
setDoStatus(0x4C);
setDoStatus(BUTTON_STATUS_SWIM);
}
} else if (!checkNoResetFlg0(FLG0_SWIM_UP)) {
setDoStatus(0x97);
setDoStatus(BUTTON_STATUS_UNK_151);
} else if (mProcID == PROC_SWIM_MOVE && checkUnderMove0BckNoArc(ANM_SWIM_A) && field_0x30d0 == 0 && field_0x30d2 == 0) {
setDoStatus(9);
setDoStatus(BUTTON_STATUS_DASH);
}
}
f32 var_f31;
f32 var_f30;
s16 temp_r29;
if (mProcID == PROC_SWIM_HOOKSHOT_MOVE && !checkHookshotWait()) {
var_f30 = 0.0f;
} else if (checkZoraSwimMove()) {
s16 temp_r29 = shape_angle.y;
temp_r29 = shape_angle.y;
if (mTargetedActor != NULL && current.pos.abs2XZ(mTargetedActor->eyePos) > 22500.0f) {
setShapeAngleToAtnActor(0);
} else if (checkInputOnR()) {
s16 var_r28;
if (checkEventRun()) {
var_r28 = field_0x2fe2;
var_r28 = mMoveAngle;
} else {
var_r28 = shape_angle.y + (16384.0f * cM_ssin(mStickAngle));
}
@@ -230,24 +223,24 @@ void daAlink_c::setSpeedAndAngleSwim() {
}
current.angle.y = shape_angle.y;
var_f30 = 3.0f * cM_scos((shape_angle.y - temp_r29));
var_f30 = 3.0f * cM_scos(shape_angle.y - temp_r29);
} else if (!checkAttentionLock()) {
if (checkInputOnR()) {
s16 temp_r29_2 = shape_angle.y;
temp_r29 = shape_angle.y;
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
} else {
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
}
f32 var_f29;
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
var_f29 = 1.0f;
} else {
var_f29 = field_0x33a8;
var_f29 = mStickValue;
}
var_f30 = 3.0f * var_f29 * cM_scos((shape_angle.y - temp_r29_2));
var_f30 = 3.0f * var_f29 * cM_scos(shape_angle.y - temp_r29);
cLib_addCalcAngleS(&current.angle.y, shape_angle.y, 2, 0x2000, 0x1000);
} else {
var_f30 = 0.0f;
@@ -266,17 +259,17 @@ void daAlink_c::setSpeedAndAngleSwim() {
}
if (checkZeroSpeedF()) {
current.angle.y = field_0x2fe2;
current.angle.y = mMoveAngle;
}
s16 temp_r29_3 = current.angle.y;
temp_r29 = current.angle.y;
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
cLib_addCalcAngleS(&current.angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
cLib_addCalcAngleS(&current.angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
} else {
cLib_addCalcAngleS(&current.angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
cLib_addCalcAngleS(&current.angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
}
var_f30 = mpHIO->mSwim.m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3));
var_f30 = mpHIO->mSwim.m.mAcceleration * mStickValue * cM_scos((s16)(current.angle.y - temp_r29));
} else {
var_f30 = 0.0f;
}
@@ -322,7 +315,7 @@ int daAlink_c::checkNextActionSwim() {
field_0x3000 = 30;
}
if ((checkZoraWearAbility() && !checkHeavyStateOn(1, 1)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
if ((checkZoraWearAbility() && !checkHeavyStateOn(TRUE, TRUE)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
setTalkStatus();
}
@@ -333,7 +326,7 @@ int daAlink_c::checkNextActionSwim() {
if (mAttList != NULL && mAttList->mType == fopAc_attn_ETC_e && checkNoResetFlg0(FLG0_SWIM_UP) &&
fopAcM_GetName(field_0x27f4) == PROC_CANOE)
{
setDoStatus(0x17);
setDoStatus(BUTTON_STATUS_GET_ON);
if (doTrigger()) {
return procCanoeRideInit();
@@ -362,9 +355,15 @@ int daAlink_c::checkSwimAction(int param_0) {
var_f31 = mpHIO->mSwim.m.mStartHeight;
}
if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && !checkModeFlg(0x40000) && mProcID != PROC_MAGNE_BOOTS_FLY && ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0) && mDemo.getDemoMode() != 0x11) {
f32 var_f28;
if (checkNoResetFlg0(FLG0_UNK_80)
&& !checkNoResetFlg0(FLG0_WATER_IN_MOVE)
&& !checkModeFlg(0x40000)
&& mProcID != PROC_MAGNE_BOOTS_FLY
&& ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0)
&& mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK_17_e)
{
f32 var_f29;
f32 var_f28;
f32 var_f30;
if (checkWolf()) {
@@ -393,14 +392,14 @@ int daAlink_c::checkSwimAction(int param_0) {
offNoResetFlg0(FLG0_SWIM_UP);
mZ2Link.setInWater(true);
field_0x594 = var_f29;
mMaxSpeed = var_f29;
if (!param_0) {
mNormalSpeed *= 0.75f;
}
if (mNormalSpeed >= field_0x594) {
mNormalSpeed = field_0x594;
if (mNormalSpeed >= mMaxSpeed) {
mNormalSpeed = mMaxSpeed;
}
swimDeleteItem();
@@ -421,7 +420,7 @@ int daAlink_c::checkSwimAction(int param_0) {
}
if (checkModeFlg(2) && !checkPossibleWaterInMode()) {
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f));
current.pos.y = var_f30 + var_f31;
speed.y = 0.75f * field_0x3528.y;
@@ -433,15 +432,15 @@ int daAlink_c::checkSwimAction(int param_0) {
if (checkWolf()) {
if (checkNoResetFlg2(FLG2_UNK_8)) {
daAlink_WANM var_r29;
daAlink_WANM anm;
if (cM_rnd() < 0.5f) {
var_r29 = WANM_FLING_LEFT;
anm = WANM_FLING_LEFT;
onNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
} else {
var_r29 = WANM_FLING_RIGHT;
anm = WANM_FLING_RIGHT;
offNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
}
setWolfEnemyThrowUpperAnime(var_r29, 0.0f);
setWolfEnemyThrowUpperAnime(anm, 0.0f);
}
return procWolfSwimWaitInit(1);
@@ -460,7 +459,7 @@ int daAlink_c::checkSwimAction(int param_0) {
}
if (checkBootsOrArmorHeavy() || checkPossibleWaterInMode()) {
onNoResetFlg0(FLG0_UNDERWATER);
onNoResetFlg0(FLG0_WATER_IN_MOVE);
return 0;
}
@@ -541,7 +540,7 @@ int daAlink_c::checkSwimUpAction() {
} else {
current.pos.y = mLinkAcch.GetGroundH();
mLinkAcch.SetGroundHit();
onNoResetFlg0(FLG0_UNDERWATER);
onNoResetFlg0(FLG0_WATER_IN_MOVE);
procLandInit(0.0f);
field_0x2f99 = 0x90;
return 1;
@@ -559,12 +558,14 @@ int daAlink_c::checkSwimUpAction() {
}
void daAlink_c::swimOutAfter(int param_0) {
UNUSED(param_0);
onNoResetFlg0(FLG0_SWIM_UP);
onEndResetFlg1(ERFLG1_UNK_100);
mZ2Link.setInWater(false);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
} else {
field_0x2b98 = 0.0f;
field_0x2f98 = 4;
@@ -630,12 +631,11 @@ int daAlink_c::checkSwimOutAction() {
}
void daAlink_c::setSwimMoveAnime() {
daPy_frameCtrl_c* temp_r28 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* temp_r27 = &mUpperFrameCtrl[2];
daPy_frameCtrl_c* framectrl_under0 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl_upper2 = &mUpperFrameCtrl[2];
f32 var_f31;
f32 temp_f25 = temp_r28->getEnd();
f32 var_f26 = temp_r28->getFrame() * temp_f25;
f32 var_f26 = framectrl_under0->getFrame() * framectrl_under0->getEnd();
if (field_0x3000 != 0 && !checkHookshotAnime()) {
field_0x2f98 = 4;
@@ -650,9 +650,9 @@ void daAlink_c::setSwimMoveAnime() {
field_0x2f98 = 0;
}
daAlink_ANM var_r29;
BOOL var_r26 = 1;
BOOL var_r25 = 0;
daAlink_ANM anm = (daAlink_ANM)field_0x3198;
BOOL var_r26 = TRUE;
BOOL var_r25 = FALSE;
if (field_0x2f98 == 4) {
f32 temp_f29 = mpHIO->mSwim.m.mUnderwaterMaxSpeed + mpHIO->mSwim.m.mUnderwaterButtonAdditionalSpeed;
@@ -660,12 +660,12 @@ void daAlink_c::setSwimMoveAnime() {
field_0x3478 = mpHIO->mSwim.m.mUnderwaterMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed;
if (field_0x594 < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
field_0x594 = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
if (mMaxSpeed < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
} else if (doTrigger()) {
field_0x594 += 0.75f;
if (field_0x594 > temp_f29) {
field_0x594 = temp_f29;
mMaxSpeed += 0.75f;
if (mMaxSpeed > temp_f29) {
mMaxSpeed = temp_f29;
}
if (!checkSwimMoveHandAnime() && !checkZoraSwimDamageAnime()) {
@@ -679,77 +679,77 @@ void daAlink_c::setSwimMoveAnime() {
setUpperAnime(0x23F, UPPER_2, 1.0f, 0.0f, 0x28, var_f28);
mProcVar5.field_0x3012 = 0;
var_r25 = 1;
} else if (temp_r27->getFrame() > 25.0f) {
} else if (framectrl_upper2->getFrame() > 25.0f) {
mProcVar5.field_0x3012 = 1;
}
} else if (!checkSwimMoveHandAnime()) {
cLib_chaseF(&field_0x594, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
cLib_chaseF(&mMaxSpeed, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
}
var_f31 = 1.0f / mpHIO->mSwim.m.mUnderwaterMaxSpeed;
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(temp_r28)))) {
var_r29 = ANM_SWIM_ZORA_START;
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(framectrl_under0)))) {
anm = ANM_SWIM_ZORA_START;
} else {
var_r29 = ANM_SWIM_C;
anm = ANM_SWIM_C;
if (field_0x3198 == ANM_SWIM_ZORA_START) {
var_r26 = 0;
var_r26 = FALSE;
if (mProcVar4.field_0x3010 == 1) {
mProcVar4.field_0x3010 = 0;
}
}
}
} else if (field_0x2f98 == 0) {
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(temp_r28)) {
var_r29 = ANM_SWIM_DASH;
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(framectrl_under0)) {
anm = ANM_SWIM_DASH;
} else if (mNormalSpeed < 3.0f || checkHookshotAnime()) {
var_r29 = ANM_SWIM_WAIT;
anm = ANM_SWIM_WAIT;
field_0x30d0 = 0;
} else {
var_r29 = ANM_SWIM_A;
anm = ANM_SWIM_A;
}
if (checkSwimDashMode()) {
field_0x3478 = mpHIO->mSwim.m.mDashMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mDashMaxAnmSpeed;
field_0x594 = mpHIO->mSwim.m.mDashMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mDashMaxSpeed;
} else {
field_0x3478 = mpHIO->mSwim.m.mForwardMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mForwardMaxAnmSpeed;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
} else if (field_0x2f98 == 1) {
var_r29 = ANM_ATN_SWIM_BACK;
anm = ANM_ATN_SWIM_BACK;
field_0x3478 = mpHIO->mSwim.m.mBackwardMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mBackwardMaxAnmSpeed;
if (checkZoraWearAbility()) {
field_0x594 = 10.0f;
mMaxSpeed = 10.0f;
} else {
field_0x594 = mpHIO->mSwim.m.mBackwardMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mBackwardMaxSpeed;
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
} else {
if (field_0x2f98 == 2) {
var_r29 = ANM_ATN_SWIM_LEFT;
anm = ANM_ATN_SWIM_LEFT;
} else {
var_r29 = ANM_ATN_SWIM_RIGHT;
anm = ANM_ATN_SWIM_RIGHT;
}
field_0x3478 = mpHIO->mSwim.m.mStrafeMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mStrafeMaxAnmSpeed;
if (checkZoraWearAbility()) {
field_0x594 = 12.0f;
mMaxSpeed = 12.0f;
} else {
field_0x594 = mpHIO->mSwim.m.mStrafeMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mStrafeMaxSpeed;
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
}
field_0x347c -= field_0x3478;
@@ -759,55 +759,55 @@ void daAlink_c::setSwimMoveAnime() {
}
if (checkBootsOrArmorHeavy()) {
var_r29 = ANM_SWIM_WAIT;
field_0x594 = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
anm = ANM_SWIM_WAIT;
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
if (mEquipItem != fpcNm_ITEM_NONE && !checkHookshotAnime()) {
setDoStatus(4);
setDoStatus(BUTTON_STATUS_PUT_AWAY);
}
}
if (var_r29 != field_0x3198) {
if (anm != field_0x3198) {
if (field_0x3198 == ANM_SWIM_ZORA_START) {
speed.y = 0.0f;
}
field_0x3198 = var_r29;
field_0x3198 = anm;
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
field_0x30d2 = mpHIO->mSwim.m.field_0x5e;
}
if (var_r29 == ANM_SWIM_WAIT) {
if (anm == ANM_SWIM_WAIT) {
setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, mpHIO->mSwim.m.mWaitInterpolation);
} else {
f32 var_f27;
if (var_r26 != 0) {
var_f27 = mpHIO->mSwim.m.mMoveInterpolation;
f32 morf;
if (var_r26) {
morf = mpHIO->mSwim.m.mMoveInterpolation;
} else {
var_f27 = 0.0f;
morf = 0.0f;
}
setSingleAnimeBaseMorf(var_r29, var_f27);
setSingleAnimeBaseMorf(anm, morf);
}
}
if (var_r29 != ANM_SWIM_WAIT && var_r29 != ANM_SWIM_DASH) {
if (anm != ANM_SWIM_WAIT && anm != ANM_SWIM_DASH) {
f32 temp_f30 = var_f31 * fabsf(mNormalSpeed);
if (temp_f30 > 1.0f && field_0x2f98 == 4) {
temp_r28->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
framectrl_under0->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
} else {
temp_r28->setRate(field_0x3478 + (field_0x347c * temp_f30));
framectrl_under0->setRate(field_0x3478 + (field_0x347c * temp_f30));
}
}
if (checkSwimMoveHandAnime()) {
if (temp_r27->checkPass(17.0f)) {
if (framectrl_upper2->checkPass(17.0f)) {
seStartOnlyReverb(Z2SE_AL_WATER_STROKE_L);
}
if (var_r29 == ANM_SWIM_C) {
temp_r27->setRate(temp_r28->getRate());
if (anm == ANM_SWIM_C) {
framectrl_upper2->setRate(framectrl_under0->getRate());
if (var_r25 == 0 && temp_r27->checkPass(0.0f)) {
if (!var_r25 && framectrl_upper2->checkPass(0.0f)) {
if (mProcVar5.field_0x3012 != 0) {
mProcVar5.field_0x3012 = 0;
} else {
@@ -821,7 +821,7 @@ void daAlink_c::setSwimMoveAnime() {
maxFallSpeed = getSwimMaxFallSpeed();
if (var_r29 == ANM_SWIM_C || var_r29 == ANM_SWIM_ZORA_START) {
if (anm == ANM_SWIM_C || anm == ANM_SWIM_ZORA_START) {
if (!checkZoraWearAbility()) {
if (field_0x3080 != -0x3800) {
setOldRootQuaternion(0x4000, 0, 0);
@@ -854,11 +854,11 @@ void daAlink_c::setSwimMoveAnime() {
}
bool daAlink_c::checkSwimButtonAccept() {
return dComIfGp_getDoStatus() == 0x41 || dComIfGp_getDoStatus() == 0x4C;
return dComIfGp_getDoStatus() == BUTTON_STATUS_DIVE || dComIfGp_getDoStatus() == BUTTON_STATUS_SWIM;
}
bool daAlink_c::checkUpSwimButtonAccept() {
return dComIfGp_getDoStatus() == 0x97;
return dComIfGp_getDoStatus() == BUTTON_STATUS_UNK_151;
}
BOOL daAlink_c::checkSwimButtonMove() {
@@ -879,7 +879,7 @@ void daAlink_c::setSwimUpDownOffset() {
f32 var_f1;
if (checkWolf()) {
if (checkHeavyStateOn(1, 1)) {
if (checkHeavyStateOn(TRUE, TRUE)) {
var_f1 = mpHIO->mWolf.mWlSwim.m.mHeavyIdleUpDownSwayAmount;
} else {
var_f1 = mpHIO->mWolf.mWlSwim.m.mIdleUpDownSwayAmount;
@@ -946,10 +946,10 @@ int daAlink_c::procSwimUp() {
int daAlink_c::procSwimWaitInit(int param_0) {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
u32 mode_40000 = checkModeFlg(0x40000);
u32 is_mode40000 = checkModeFlg(0x40000);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
current.pos.y += mpHIO->mSwim.m.mStartHeight;
}
@@ -959,7 +959,7 @@ int daAlink_c::procSwimWaitInit(int param_0) {
seStartMapInfo(Z2SE_AL_INTO_WATER);
mProcVar4.field_0x3010 = 0;
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
} else if (!mode_40000) {
} else if (!is_mode40000) {
mProcVar4.field_0x3010 = 0;
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
}
@@ -991,18 +991,18 @@ int daAlink_c::procSwimWaitInit(int param_0) {
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
return 1;
}
int daAlink_c::procSwimWait() {
if (mDemo.getDemoMode() == 6 || mDemo.getDemoMode() == 8) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_6_e || mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_8_e) {
setShapeAngleToTalkActor();
current.angle.y = shape_angle.y;
}
maxFallSpeed = getSwimMaxFallSpeed();
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
setSpeedAndAngleSwim();
@@ -1015,7 +1015,7 @@ int daAlink_c::procSwimWait() {
setSwimUpDownOffset();
if (checkEquipHeavyBoots() && mEquipItem != fpcNm_ITEM_NONE) {
setDoStatus(0x4);
setDoStatus(BUTTON_STATUS_PUT_AWAY);
}
if (checkSwimUpAction()) {
@@ -1047,25 +1047,25 @@ int daAlink_c::procSwimWait() {
}
int daAlink_c::procSwimMoveInit() {
u32 mode_40000 = checkModeFlg(0x40000);
bool proc_dive_jump = mProcID == PROC_DIVE_JUMP;
bool proc_swim_dive = mProcID == PROC_SWIM_DIVE;
u32 is_mode40000 = checkModeFlg(0x40000);
bool is_prev_dive_jump = mProcID == PROC_DIVE_JUMP;
bool is_prev_swim_dive = mProcID == PROC_SWIM_DIVE;
commonProcInit(PROC_SWIM_MOVE);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
}
if (!mode_40000) {
if (!is_mode40000) {
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
mProcVar4.field_0x3010 = 0;
}
if (proc_swim_dive || proc_dive_jump) {
if (is_prev_swim_dive || is_prev_dive_jump) {
field_0x3198 = 199;
if (proc_dive_jump) {
if (is_prev_dive_jump) {
field_0x3080 = 0x2800;
mProcVar3.field_0x300e = field_0x3080;
mProcVar4.field_0x3010 = 1;
@@ -1092,6 +1092,8 @@ int daAlink_c::procSwimMoveInit() {
int daAlink_c::procSwimMove() {
setSpeedAndAngleSwim();
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
if (checkUpSwimButtonAccept() && doButton()) {
field_0x3000 = 30;
}
@@ -1113,7 +1115,7 @@ int daAlink_c::procSwimMove() {
if (checkSwimButtonAccept() && doTrigger() && !getZoraSwim()) {
procSwimDiveInit();
} else if (dComIfGp_getDoStatus() == 9 && doTrigger()) {
} else if (dComIfGp_getDoStatus() == BUTTON_STATUS_DASH && doTrigger()) {
onNoResetFlg1(FLG1_DASH_MODE);
field_0x30d0 = mpHIO->mSwim.m.field_0x5c;
setSingleAnimeParam(ANM_SWIM_DASH, &mpHIO->mSwim.m.mDashAnm);
@@ -1153,12 +1155,11 @@ int daAlink_c::procSwimDiveInit() {
return 1;
}
int daAlink_c::procSwimDive() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (mProcVar2.field_0x300c == 0) {
setDoStatus(0x4C);
setDoStatus(BUTTON_STATUS_SWIM);
} else if (checkNoResetFlg0(FLG0_SWIM_UP) && frame_ctrl->getFrame() > 20.0f) {
offNoResetFlg0(FLG0_SWIM_UP);
mZ2Link.setInWater(true);
@@ -1178,8 +1179,8 @@ int daAlink_c::procSwimDive() {
fopKyM_createWpillar(&pos, 0.7f, 0);
}
if (mLinkAcch.GetGroundH() > current.pos.y - field_0x598 * 0.5f) {
current.pos.y = field_0x598 * 0.5f + mLinkAcch.GetGroundH();
if (mLinkAcch.GetGroundH() > current.pos.y - mHeight * 0.5f) {
current.pos.y = mHeight * 0.5f + mLinkAcch.GetGroundH();
}
if (checkAnmEnd(frame_ctrl)) {
@@ -1198,7 +1199,6 @@ int daAlink_c::procSwimDive() {
return 1;
}
int daAlink_c::procSwimHookshotSubjectInit() {
if (!commonProcInitNotSameProc(PROC_SWIM_HOOKSHOT_SUBJECT)) {
return 0;
@@ -1226,23 +1226,26 @@ int daAlink_c::procSwimHookshotSubjectInit() {
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
mProcVar4.field_0x3010 = 0;
field_0x30d0 = 0;
#if PLATFORM_GCN
setHookshotReadyMaterial();
#endif
dComIfGp_setPlayerStatus0(0, 0x104000);
return 1;
}
int daAlink_c::procSwimHookshotSubject() {
maxFallSpeed = getSwimMaxFallSpeed();
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
if (checkHookshotWait()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -1316,7 +1319,7 @@ int daAlink_c::procSwimHookshotMove() {
cancelHookshotMove();
if (checkHookshotWait() && !checkZoraWearAbility()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
if (mItemVar0.field_0x3018 == 0) {
@@ -1364,48 +1367,50 @@ int daAlink_c::procSwimHookshotMove() {
return 1;
}
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* i_hitObj) {
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 31, cXyz(0.0f, 1.0f, 0.0f));
BOOL bvar4 =
checkNoResetFlg0(FLG0_SWIM_UP) || ((param_0 != NULL && param_0->GetTgHitAc() != NULL) &&
fopAcM_GetName(param_0->GetTgHitAc()) == PROC_E_SG);
BOOL bvar4 = checkNoResetFlg0(FLG0_SWIM_UP)
|| ((i_hitObj != NULL && i_hitObj->GetTgHitAc() != NULL)
&& fopAcM_GetName(i_hitObj->GetTgHitAc()) == PROC_E_SG);
if (!getZoraSwim() && bvar4 && mProcID != PROC_SWIM_WAIT) {
return 1;
}
cXyz* temp_r30;
cXyz sp30;
cXyz* dmg_vec;
cXyz work;
if (param_0 != NULL) {
temp_r30 = (cXyz*)getDamageVec(param_0);
if (i_hitObj != NULL) {
dmg_vec = (cXyz*)getDamageVec(i_hitObj);
} else {
sp30.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
temp_r30 = &sp30;
work.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
dmg_vec = &work;
}
f32 scale =
temp_r30->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
f32 scale = dmg_vec->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
if (scale > mpHIO->mDamage.mDamSwim.m.mMaxSpeed) {
scale = mpHIO->mDamage.mDamSwim.m.mMaxSpeed;
}
field_0x3750 = temp_r30->normZP();
field_0x3750 = dmg_vec->normZP();
field_0x3750 *= scale;
if (getZoraSwim()) {
setUpperAnimeParam(0xBF, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
setFacePriBck(0xEA);
setFacePriTexture(FTANM_UNK_27);
setUpperAnimeParam(dRes_ID_ALANM_BCK_DAMSW_e, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FB_e);
setFacePriTexture(FTANM_B_A);
return 1;
}
commonProcInit(PROC_SWIM_DAMAGE);
cXyz sp24(temp_r30->z * -cM_ssin(shape_angle.y) + temp_r30->x * cM_scos(shape_angle.y),
temp_r30->y,
temp_r30->z * cM_scos(shape_angle.y) + temp_r30->x * cM_ssin(shape_angle.y));
f32 var_f30 = cM_ssin(shape_angle.y);
f32 var_f29 = cM_scos(shape_angle.y);
cXyz sp24(dmg_vec->z * -var_f30 + dmg_vec->x * var_f29,
dmg_vec->y,
dmg_vec->z * var_f29 + dmg_vec->x * var_f30);
mProcVar0.field_0x3008 =
cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle,
@@ -1436,7 +1441,9 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
}
mNormalSpeed = 0.0f;
field_0x347c = M_PI / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart());
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
field_0x347c = M_PI / (framectrl->getEnd() - framectrl->getStart());
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
current.angle.y = shape_angle.y;
@@ -1470,13 +1477,12 @@ int daAlink_c::procSwimDamage() {
return 1;
}
int daAlink_c::procOctaIealSpitInit() {
u32 temp_r30 = checkModeFlg(MODE_SWIMMING);
commonProcInit(PROC_OCTAIEAL_SPIT);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
}
setSingleAnimeBase(ANM_MORPHEEL_SPIT_OUT);
@@ -1519,14 +1525,14 @@ static f32 dummyFloat() {
}
int daAlink_c::procOctaIealSpit() {
if (mDemo.getDemoMode() == 0x2E) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_CAUGHT_e) {
cancelOriginalDemo();
}
cLib_addCalc(&mNormalSpeed, 0.0f, 0.5f, field_0x3478, 0.1f);
field_0x2f99 = 7;
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(mUnderFrameCtrl)) {
procSwimWaitInit(0);
}
+44 -44
View File
@@ -5,8 +5,9 @@
#include "d/actor/d_a_alink.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1);
static int daAlink_modelCallBack(J3DJoint* i_joint, int param_1);
static int daAlink_headModelCallBack(J3DJoint* i_joint, int param_1);
static int daAlink_wolfModelCallBack(J3DJoint* i_joint, int param_1);
@@ -24,14 +25,6 @@ void daAlink_c::setArcName(BOOL i_isWolf) {
}
}
inline bool checkCarvingWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_WOOD_SHIELD;
}
inline bool checkShopWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_SHIELD;
}
void daAlink_c::setShieldArcName() {
if (checkCarvingWoodShieldEquip() || !checkShieldGet()) {
mShieldArcName = l_cWShdArcName;
@@ -44,8 +37,13 @@ void daAlink_c::setShieldArcName() {
void daAlink_c::setOriginalHeap(JKRExpHeap** i_ppheap, u32 i_size) {
if (*i_ppheap == NULL) {
*i_ppheap =
JKRExpHeap::create(ROUND(i_size, 0x10) + 0xA0, mDoExt_getGameHeap(), true);
u32 var_r29 = 0x90;
u32 var_r28 = 0x10;
u32 size = ROUND(i_size, 16);
JKRHeap* parent = mDoExt_getGameHeap();
JKRExpHeap* heap = JKRExpHeap::create(size + (var_r29 + var_r28), parent, true);
*i_ppheap = heap;
}
}
@@ -91,7 +89,8 @@ int daAlink_c::loadModelDVD() {
mClothesChangeWaitTimer = 0;
changeLink(1);
} else {
if (dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap) == cPhs_COMPLEATE_e) {
int phase_state = dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap);
if (phase_state == cPhs_COMPLEATE_e) {
mClothesChangeWaitTimer = 0;
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
@@ -134,8 +133,8 @@ int daAlink_c::loadShieldModelDVD() {
mpShieldArcHeap->freeAll();
setShieldArcName();
} else if (mShieldChangeWaitTimer == 1) {
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap) == cPhs_COMPLEATE_e)
{
int phase_state = dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap);
if (phase_state == cPhs_COMPLEATE_e) {
mShieldChangeWaitTimer = 0;
setShieldModel();
} else {
@@ -151,6 +150,7 @@ int daAlink_c::loadShieldModelDVD() {
void daAlink_c::changeModelDataDirect(int param_0) {
u16 i;
J3DModelData* modelData;
field_0x064C = mpLinkModel->getModelData();
field_0x06c0 = mpLinkFaceModel->getModelData();
@@ -164,14 +164,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
field_0x064C->getJointNodePointer(i)->setCallBack(daAlink_modelCallBack);
}
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
for (i = 1; i < head_modelData->getJointNum(); i++) {
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
modelData = mpLinkHatModel->getModelData();
for (i = 1; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
}
if (param_0) {
if (field_0x2154 != NULL) {
field_0x06c0->entryTexNoAnimator(field_0x2154);
if (mpFaceBtp != NULL) {
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
}
if (mpFaceBtk != NULL) {
@@ -188,14 +188,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
field_0x064C->getJointNodePointer(i)->setCallBack(NULL);
}
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
for (i = 1; i < head_modelData->getJointNum(); i++) {
head_modelData->getJointNodePointer(i)->setCallBack(NULL);
modelData = mpLinkHatModel->getModelData();
for (i = 1; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(NULL);
}
if (!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_100000 | FLG2_UNK_80000))) {
for (i = 6; i < 8; i++) {
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
}
}
}
@@ -217,8 +217,8 @@ void daAlink_c::changeModelDataDirectWolf(int param_0) {
}
if (param_0) {
if (field_0x2154 != NULL) {
field_0x06c0->entryTexNoAnimator(field_0x2154);
if (mpFaceBtp != NULL) {
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
}
if (mpFaceBtk != NULL) {
@@ -240,61 +240,61 @@ void daAlink_c::initStatusWindow() {
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
void* tmpBuffer = new (0x20) void*[0x500];
JUT_ASSERT(0x18A, tmpBuffer);
JUT_ASSERT(394, tmpBuffer);
u16 var_r28, var_r31, var_r30;
u16 bckResIdx, btpResIdx, btkResIdx;
if (checkWolf()) {
var_r28 = 0x2FF;
var_r31 = 0x408;
var_r30 = 0x3A7;
bckResIdx = dRes_ID_ALANM_BCK_WL_WAITA_e;
btpResIdx = dRes_ID_ALANM_BTP_WL_FA_e;
btkResIdx = dRes_ID_ALANM_BTK_WL_FA_e;
changeModelDataDirectWolf(0);
} else {
var_r28 = 0x26A;
var_r31 = 0x3AF;
var_r30 = 0x32C;
bckResIdx = dRes_ID_ALANM_BCK_WAITS_e;
btpResIdx = dRes_ID_ALANM_BTP_FA_e;
btkResIdx = dRes_ID_ALANM_BTK_FA_e;
if (checkZoraWearAbility() && !checkZoraWearMaskDraw()) {
field_0x06f0->hide();
}
changeModelDataDirect(0);
}
JKRReadIdxResource(tmpBuffer, 0x1400, var_r28, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x1400, bckResIdx, dComIfGp_getAnmArchive());
m_sWindowBck = new mDoExt_bckAnm();
JUT_ASSERT(0x1AC, m_sWindowBck);
JUT_ASSERT(428, m_sWindowBck);
J3DAnmTransform* bck = (J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
if (!m_sWindowBck->init(bck, 1, 2, 1.0f, 0, -1, false)) {
if (!m_sWindowBck->init((J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer), TRUE, 2, 1.0f, 0, -1, false)) {
JUT_ASSERT(433, FALSE);
}
tmpBuffer = new (0x20) void*[0x100];
JUT_ASSERT(0x1B5, tmpBuffer);
JUT_ASSERT(437, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, var_r31, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x400, btpResIdx, dComIfGp_getAnmArchive());
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btp->setFrame(0.0f);
btp->searchUpdateMaterialID(field_0x06c0);
field_0x06c0->entryTexNoAnimator(btp);
tmpBuffer = new (0x20) void*[0x100];
JUT_ASSERT(0x1C1, tmpBuffer);
JUT_ASSERT(449, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, var_r30, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x400, btkResIdx, dComIfGp_getAnmArchive());
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btk->setFrame(0.0f);
btk->searchUpdateMaterialID(field_0x06c0);
field_0x06c0->entryTexMtxAnimator(btk);
}
void daAlink_c::statusWindowExecute(const cXyz* i_pos, s16 i_angle) {
if (loadModelDVD()) {
if (mSwordChangeWaitTimer != 0) {
mSwordChangeWaitTimer--;
}
loadShieldModelDVD();
setSelectEquipItem(1);
setSelectEquipItem(TRUE);
if (mSwordChangeWaitTimer >= 30) {
mSwordChangeWaitTimer = 0;
@@ -367,7 +367,7 @@ void daAlink_c::resetStatusWindow() {
setMatrix();
mpLinkModel->calc();
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
setSelectEquipItem(0);
setSelectEquipItem(FALSE);
if (checkWolf()) {
setWolfItemMatrix();
+24 -22
View File
@@ -11,6 +11,8 @@
#include "d/actor/d_a_obj_yobikusa.h"
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(i_actor)) {
return i_actor;
}
@@ -19,6 +21,8 @@ static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
}
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_NPC_TK) {
return i_actor;
}
@@ -26,7 +30,7 @@ static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
return NULL;
}
void daAlink_c::setGrassWhistleModel(int modelType) {
void daAlink_c::setGrassWhistleModel(int i_modelType) {
static const char* grassWhistleArcName[] = {
"J_Tobi",
"J_Umak",
@@ -38,8 +42,8 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
JKRHeap* prev_heap = setItemHeap();
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[modelType],
grassWhistleIdx[modelType]);
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[i_modelType],
grassWhistleIdx[i_modelType]);
mHeldItemModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
mDoExt_setCurrentHeap(prev_heap);
@@ -50,7 +54,7 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
void daAlink_c::setHorseWhistleModel() {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x31A, 0x3000), 0);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PEND_e, 0x3000), 0);
mDoExt_setCurrentHeap(prev_heap);
mEquipItem = fpcNm_ITEM_HORSE_FLUTE;
@@ -68,7 +72,7 @@ int daAlink_c::procGrassWhistleGetInit() {
field_0x2f98 = 4;
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm);
field_0x2f92 = 0xFE;
mLeftHandIndex = 0xFE;
field_0x280c.setData(field_0x27f4);
daObjYobikusa_c* yobikusa_p = (daObjYobikusa_c*)field_0x27f4;
@@ -83,11 +87,10 @@ int daAlink_c::procGrassWhistleGetInit() {
return 1;
}
int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl_p)) {
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e,
mProcVar4.field_0x3010, mProcVar5.field_0x3012, &field_0x37c8);
} else if (mEquipItem == fpcNm_ITEM_NONE && frameCtrl_p->getFrame() >= 9.0f) {
@@ -104,14 +107,14 @@ int daAlink_c::procGrassWhistleGet() {
int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s16 param_3,
cXyz* param_4) {
u16 var_r6;
u16 hindFlag;
if (param_0 == 3) {
var_r6 = 0xFFFF;
hindFlag = 0xFFFF;
} else {
var_r6 = 0xFFF9;
hindFlag = 0xFFF9;
}
if (!dComIfGp_event_compulsory(this, NULL, var_r6)) {
if (!dComIfGp_event_compulsory(this, NULL, hindFlag)) {
return checkNextAction(0);
}
@@ -167,7 +170,6 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s
return 1;
}
int daAlink_c::procGrassWhistleWait() {
if (mProcVar5.field_0x3012 != 0) {
if (checkEndMessage(field_0x32cc)) {
@@ -216,16 +218,16 @@ int daAlink_c::procGrassWhistleWait() {
return procWaitInit();
}
setFaceBasicTexture(FTANM_UNK_0);
setFaceBasicTexture(FTANM_0);
mProcVar5.field_0x3012 = 1;
return 1;
}
}
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
} else if (checkAnmEnd(&mUpperFrameCtrl[2])) {
setGrassCancelStatus(0x12);
setDoStatus(0x2C);
setGrassCancelStatus(BUTTON_STATUS_BACK);
setDoStatus(BUTTON_STATUS_BLOW);
if (mProcVar2.field_0x300c == 3 || doTrigger()) {
setSingleAnimeBaseMorf(ANM_GRASS_WHISTLE_PLAY, 0.0f);
@@ -256,7 +258,7 @@ int daAlink_c::procGrassWhistleWait() {
}
} else {
#if VERSION != VERSION_SHIELD_DEBUG
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
#endif
}
@@ -280,13 +282,13 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f);
}
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
dComIfGp_setPlayerStatus1(0, 0x4000000);
return 1;
}
int daAlink_c::procCoHorseCallWait() {
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
mProcVar4.field_0x3010--;
if (mProcVar4.field_0x3010 > 2 && dComIfGp_getHorseActor() != NULL) {
@@ -322,7 +324,7 @@ int daAlink_c::procHawkCatchInit() {
}
int daAlink_c::procHawkCatch() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(mUnderFrameCtrl)) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
procHawkSubjectInit();
}
@@ -360,8 +362,8 @@ int daAlink_c::procHawkSubject() {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
fopAc_ac_c* temp_r29 = field_0x280c.getActor();
setGrassCancelStatus(0x12);
setDoStatus(0x31);
setGrassCancelStatus(BUTTON_STATUS_BACK);
setDoStatus(BUTTON_STATUS_SET_FREE);
if (doTrigger()) {
mProcVar2.field_0x300c = 2;
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2306,7 +2306,7 @@ static int daB_BQ_Execute(b_bq_class* i_this) {
dComIfG_Ccsp()->Set(&i_this->mCcCoreSph);
sp50 = a_this->eyePos;
if (daPy_getPlayerActorClass()->getCutType() != 0x27 && i_this->mAction >= ACTION_DAMAGE) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->mAction >= ACTION_DAMAGE) {
sp50.y = player->current.pos.y + 70.0f + KREG_F(7);
} else {
sp50.x -= 20000.0f;
+1 -1
View File
@@ -1813,7 +1813,7 @@ void daB_DR_c::executeWeekHit() {
dComIfGp_particle_set(0x8999, &sp50, NULL, NULL);
dComIfGp_particle_set(0x899A, &sp50, NULL, NULL);
if (health <= 0 || player->getCutType() == 0x20) {
if (health <= 0 || player->getCutType() == daPy_py_c::CUT_TYPE_FINISH_STAB) {
health = 0;
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x20);
+2 -2
View File
@@ -3300,8 +3300,8 @@ static void demo_camera(b_gnd_class* i_this) {
sp114.y = 0.0f;
sp114.z = 135.0f;
MtxPosition(&sp114, &sp108);
a_this->current.pos.x = sp108.x + player->field_0x5f8.x;
a_this->current.pos.z = sp108.z + player->field_0x5f8.z;
a_this->current.pos.x = sp108.x + player->mViewerCurrentPos.x;
a_this->current.pos.z = sp108.z + player->mViewerCurrentPos.z;
a_this->current.angle.y = player->shape_angle.y + 0x8000;
spF0 = a_this->current.pos + ((*player->getViewerCurrentPosP() - a_this->current.pos) * 0.5f);
+2 -2
View File
@@ -1115,8 +1115,8 @@ void daB_MGN_c::damage_check() {
dComIfGs_onOneZoneSwitch(6, fopAcM_GetRoomNo(this));
}
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != 44 &&
player->getCutType() != 45 && player->onWolfEnemyHangBite(this))
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT &&
player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && player->onWolfEnemyHangBite(this))
{
setActionMode(ACTION_DOWN_BITE_DAMAGE_e, 0);
return;
+6 -6
View File
@@ -1121,7 +1121,7 @@ u32 daB_TN_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return rv | 0x12;
case daPy_py_c::CUT_TYPE_NM_STAB:
@@ -1129,7 +1129,7 @@ u32 daB_TN_c::getCutType() {
return rv | 0x02;
case daPy_py_c::CUT_TYPE_NM_LEFT:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
return rv | 0x21;
case daPy_py_c::CUT_TYPE_COMBO_STAB:
@@ -1344,8 +1344,8 @@ void daB_TN_c::damage_check() {
if (cut_type == daPy_py_c::CUT_TYPE_LARGE_JUMP_FINISH) {
return;
} else if (mActionMode1 < 8) {
if (cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26 ||
if (cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT ||
mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK))
{
setShieldEffect(&dStack_160);
@@ -1403,8 +1403,8 @@ void daB_TN_c::damage_check() {
if (mTimer10 != 0 ||
abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) < 0x3000 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26)
cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT)
{
field_0xaa8 = false;
setShieldEffect(&dStack_160);
+1 -1
View File
@@ -176,7 +176,7 @@ static void damage_check(e_bu_class* i_this) {
if (i_this->atInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) {
actor->speedF = 0.0f;
i_this->head_rot_y = i_this->atInfo.mHitDirection.y;
} else if (player->getCutType() == 10 && player->checkCutJumpCancelTurn()) {
} else if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) {
i_this->invulnerabilityTimer = NREG_S(7) + 3;
actor->speedF = 0.0f;
} else {
+1 -1
View File
@@ -1301,7 +1301,7 @@ int daE_HM_c::Execute() {
cXyz bindEffectSize(1.0f, 1.0f, 1.0f);
u32 cutType = daPy_getPlayerActorClass()->getCutType();
if (cutType == 0x36 && mSph.ChkAtSet() != 0) {
if (cutType == daPy_py_c::CUT_TYPE_WOLF_LOCK && mSph.ChkAtSet() != 0) {
mSph.OffAtSetBit();
field_0x5ac = 1;
} else if (field_0x5ac != 0) {
+4 -4
View File
@@ -595,10 +595,10 @@ static void action(e_mm_mt_class* i_this) {
fopAc_ac_c* local_a4 = at_power_check(&i_this->m_atInfo);
if (i_this->m_atInfo.mHitType == 1) {
if (daPy_getPlayerActorClass()->getCutType() == 8 ||
daPy_getPlayerActorClass()->getCutType() == 9 ||
daPy_getPlayerActorClass()->getCutType() == 23 ||
daPy_getPlayerActorClass()->getCutType() == 24) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_UNK_9 ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) {
actor->speedF = cM_rndF(10.0f) + 40.0f + TREG_F(16);
i_this->m_spin = (s16)(cM_rndF(2000.0f) + 5500.0f);
i_this->field_0x69C = (s16)(cM_rndF(1000.0f) + 5000.0f);
+4 -4
View File
@@ -613,13 +613,13 @@ int daE_OC_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_STAB:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
return 0;
case daPy_py_c::CUT_TYPE_COMBO_STAB:
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
case daPy_py_c::CUT_TYPE_NM_LEFT:
return 1;
default:
+1 -1
View File
@@ -684,7 +684,7 @@ void daE_OctBg_c::damage_check() {
field_0x9f8.ChkAtHit())
{
if (field_0x9f8.ChkAtShieldHit()) {
if (daPy_getPlayerActorClass()->getCutType() == 41) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
setAction(&daE_OctBg_c::damage);
return;
}
+4 -4
View File
@@ -265,14 +265,14 @@ u8 daE_PZ_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return 1;
case daPy_py_c::CUT_TYPE_NM_LEFT:
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
case daPy_py_c::CUT_TYPE_COMBO_STAB:
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
return 2;
default:
return 3;
+1 -1
View File
@@ -607,7 +607,7 @@ void daE_SB_c::ActionCheck() {
if ( (s16) (shape_angle.y - tgt_ang) > -0x3000 && (s16) (shape_angle.y - tgt_ang) < 0x3000) {
if (temp_r27 > 1U) {
Hit();
} else if (temp_r29 == 1 || temp_r29 == 10 || temp_r29 == 0x29 || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
} else if (temp_r29 == daPy_py_c::CUT_TYPE_NM_VERTICAL || temp_r29 == daPy_py_c::CUT_TYPE_JUMP || temp_r29 == daPy_py_c::CUT_TYPE_GUARD_ATTACK || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
Hanekaeri();
} else {
Hit();
+1 -1
View File
@@ -171,7 +171,7 @@ int daE_TT_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return 0;
default:
+2 -2
View File
@@ -2759,7 +2759,7 @@ void daE_VA_c::executeOpaciDown() {
break;
}
if (player->getCutCount() > 1 || player->getCutType() == 10) {
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
if (mFadeAwayTimer < 30) {
mFadeAwayTimer = 30;
}
@@ -2773,7 +2773,7 @@ void daE_VA_c::executeOpaciDown() {
void daE_VA_c::executeOpaciDownDamage() {
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->getCutCount() > 1 || player->getCutType() == 10) {
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
if (mFadeAwayTimer < 30) {
mFadeAwayTimer = 30;
}
+1 -1
View File
@@ -2994,7 +2994,7 @@ void daE_YM_c::checkFrinedSamePos() {
void daE_YM_c::action() {
int reg_r27 = 0; // set but not used
if (daPy_getPlayerActorClass()->getCutType() == 0x36) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_WOLF_LOCK) {
reg_r27 = 1;
field_0x700 = 0;
}
+1 -1
View File
@@ -30,7 +30,7 @@ static BOOL d_kytag12_cut_normal_check() {
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
BOOL var_r3 = true;
if (player != NULL &&
(player->getCutType() == 0x28 || player->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK))
(player->getCutType() == daPy_py_c::CUT_TYPE_UNK_28 || player->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK))
{
var_r3 = false;
}
+2 -2
View File
@@ -332,7 +332,7 @@ int daObj_Kanban2_c::getKanbanCutType() {
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
if (angle_to_player < 0x3800) {
return DAMAGE_TLBR_DIAGONAL;
}
@@ -351,7 +351,7 @@ int daObj_Kanban2_c::getKanbanCutType() {
}
return DAMAGE_HORIZONTAL_SPLIT;
case daPy_py_c::CUT_TYPE_NM_LEFT:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
return DAMAGE_HORIZONTAL_SPLIT;
case daPy_py_c::CUT_TYPE_TURN_RIGHT:
case daPy_py_c::CUT_TYPE_LARGE_JUMP_INIT:
+126 -111
View File
@@ -33,8 +33,7 @@ void daPy_frameCtrl_c::updateFrame() {
offNowSetFlg();
}
void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate,
f32 i_frame) {
void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, f32 i_frame) {
setAttribute(i_attribute);
setEnd(i_end);
setRate(i_rate);
@@ -50,15 +49,15 @@ void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32
offEndFlg();
}
void daPy_boomerangMove_c::initOffset(cXyz const* i_offset) {
void daPy_boomerangMove_c::initOffset(const cXyz* i_pos) {
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
if (boomerang_p != NULL) {
bgCheckAfterOffset(i_offset);
bgCheckAfterOffset(i_pos);
boomerang_p->onWindCatch();
} else {
field_0x4 = cM_rndF(70.0f) + 30.0f;
field_0x8 = cM_rndF(50.0f) + 50.0f;
m_offsetY = cM_rndF(70.0f) + 30.0f;
m_offsetXZ = cM_rndF(50.0f) + 50.0f;
field_0x2 = cM_rndF(65536.0f);
}
@@ -71,20 +70,20 @@ s16 daPy_boomerangMove_c::m_dropAngleY;
s16 daPy_boomerangMove_c::m_eventKeepFlg;
int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2, s16 param_3) {
int daPy_boomerangMove_c::posMove(cXyz* o_pos, s16* o_rotY, fopAc_ac_c* i_objActor, s16 i_rotStep) {
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
field_0x2 -= param_3;
*param_1 -= param_3;
field_0x2 -= i_rotStep;
*o_rotY -= i_rotStep;
if (field_0x8 > 300.0f) {
field_0x8 = 300.0f;
if (m_offsetXZ > 300.0f) {
m_offsetXZ = 300.0f;
}
if (field_0x4 < -700.0f) {
field_0x4 = -700.0f;
} else if (field_0x4 > 50.0f) {
field_0x4 = 50.0f;
if (m_offsetY < -700.0f) {
m_offsetY = -700.0f;
} else if (m_offsetY > 50.0f) {
m_offsetY = 50.0f;
}
if (boomerang_p != NULL) {
@@ -98,39 +97,39 @@ int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param
return 0;
}
param_0->set(boomerang_p->current.pos.x + field_0x8 * cM_ssin(field_0x2),
boomerang_p->current.pos.y + field_0x4,
boomerang_p->current.pos.z + field_0x8 * cM_scos(field_0x2));
o_pos->set(boomerang_p->current.pos.x + m_offsetXZ * cM_ssin(field_0x2),
boomerang_p->current.pos.y + m_offsetY,
boomerang_p->current.pos.z + m_offsetXZ * cM_scos(field_0x2));
boomerang_p->onWindCatch();
return 1;
}
daAlink_c* player_p = daAlink_getAlinkActorClass();
if ((param_2 == NULL || !player_p->checkBoomerangCarry(param_2)) &&
if ((i_objActor == NULL || !player_p->checkBoomerangCarry(i_objActor)) &&
(m_eventKeepFlg == 0 || field_0x0 != 0))
{
s16 tmp = (m_dropAngleY + player_p->shape_angle.y) + cM_rndF(2048.0f);
param_0->x = player_p->current.pos.x + field_0x8 * cM_ssin(tmp);
param_0->z = player_p->current.pos.z + field_0x8 * cM_scos(tmp);
o_pos->x = player_p->current.pos.x + m_offsetXZ * cM_ssin(tmp);
o_pos->z = player_p->current.pos.z + m_offsetXZ * cM_scos(tmp);
m_dropAngleY += 0x2000;
}
return 0;
}
void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* i_offset) {
void daPy_boomerangMove_c::bgCheckAfterOffset(const cXyz* i_pos) {
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
if (boomerang_p != NULL) {
field_0x4 = i_offset->y - boomerang_p->current.pos.y;
field_0x8 = boomerang_p->current.pos.absXZ(*i_offset);
field_0x2 = cM_atan2s(i_offset->x - boomerang_p->current.pos.x,
i_offset->z - boomerang_p->current.pos.z);
m_offsetY = i_pos->y - boomerang_p->current.pos.y;
m_offsetXZ = boomerang_p->current.pos.absXZ(*i_pos);
field_0x2 = cM_atan2s(i_pos->x - boomerang_p->current.pos.x,
i_pos->z - boomerang_p->current.pos.z);
}
}
u32 daPy_py_c::setParamData(int param_0, int param_1, int param_2, int param_3) {
return param_3 | (param_0 & 0x3F | (param_1 & 0x1F) << 0xC | param_2 << 0x18);
u32 daPy_py_c::setParamData(int i_roomNo, int i_mode, int param_2, int param_3) {
return (i_roomNo & 0x3F) | (i_mode & 0x1F) << 0xC | ((param_2 & 0xFF) << 0x18) | param_3;
}
BOOL daPy_py_c::checkFishingRodItem(int i_itemNo) {
@@ -142,16 +141,23 @@ BOOL daPy_py_c::checkBombItem(int i_itemNo) {
}
BOOL daPy_py_c::checkBottleItem(int i_itemNo) {
return (i_itemNo >= fpcNm_ITEM_EMPTY_BOTTLE && i_itemNo <= fpcNm_ITEM_FAIRY) || i_itemNo == fpcNm_ITEM_BEE_CHILD ||
i_itemNo == fpcNm_ITEM_WORM || i_itemNo == fpcNm_ITEM_FAIRY_DROP || i_itemNo == fpcNm_ITEM_CHUCHU_BLACK ||
(i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
return (i_itemNo >= fpcNm_ITEM_EMPTY_BOTTLE && i_itemNo <= fpcNm_ITEM_FAIRY)
|| i_itemNo == fpcNm_ITEM_BEE_CHILD
|| i_itemNo == fpcNm_ITEM_WORM
|| i_itemNo == fpcNm_ITEM_FAIRY_DROP
|| i_itemNo == fpcNm_ITEM_CHUCHU_BLACK
|| (i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
}
BOOL daPy_py_c::checkDrinkBottleItem(int i_itemNo) {
return (i_itemNo >= fpcNm_ITEM_RED_BOTTLE && i_itemNo <= fpcNm_ITEM_HALF_MILK_BOTTLE) || i_itemNo == fpcNm_ITEM_RED_BOTTLE_2 ||
i_itemNo == fpcNm_ITEM_UGLY_SOUP || i_itemNo == fpcNm_ITEM_HOT_SPRING || i_itemNo == fpcNm_ITEM_BEE_CHILD ||
i_itemNo == fpcNm_ITEM_CHUCHU_BLACK || i_itemNo == fpcNm_ITEM_FAIRY_DROP ||
(i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo != fpcNm_ITEM_CHUCHU_YELLOW && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
return (i_itemNo >= fpcNm_ITEM_RED_BOTTLE && i_itemNo <= fpcNm_ITEM_HALF_MILK_BOTTLE)
|| i_itemNo == fpcNm_ITEM_RED_BOTTLE_2
|| i_itemNo == fpcNm_ITEM_UGLY_SOUP
|| i_itemNo == fpcNm_ITEM_HOT_SPRING
|| i_itemNo == fpcNm_ITEM_BEE_CHILD
|| i_itemNo == fpcNm_ITEM_CHUCHU_BLACK
|| i_itemNo == fpcNm_ITEM_FAIRY_DROP
|| (i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo != fpcNm_ITEM_CHUCHU_YELLOW && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
}
BOOL daPy_py_c::checkOilBottleItem(int i_itemNo) {
@@ -171,9 +177,13 @@ BOOL daPy_py_c::checkHookshotItem(int i_itemNo) {
}
BOOL daPy_py_c::checkTradeItem(int i_itemNo) {
return (i_itemNo >= fpcNm_ITEM_LETTER && i_itemNo <= fpcNm_ITEM_IRIAS_PENDANT) || i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT ||
i_itemNo == fpcNm_ITEM_AIR_LETTER || i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT2 || i_itemNo == fpcNm_ITEM_RAFRELS_MEMO ||
i_itemNo == fpcNm_ITEM_TKS_LETTER || i_itemNo == fpcNm_ITEM_ASHS_SCRIBBLING;
return (i_itemNo >= fpcNm_ITEM_LETTER && i_itemNo <= fpcNm_ITEM_IRIAS_PENDANT)
|| i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT
|| i_itemNo == fpcNm_ITEM_AIR_LETTER
|| i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT2
|| i_itemNo == fpcNm_ITEM_RAFRELS_MEMO
|| i_itemNo == fpcNm_ITEM_TKS_LETTER
|| i_itemNo == fpcNm_ITEM_ASHS_SCRIBBLING;
}
BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) {
@@ -181,11 +191,10 @@ BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) {
}
void daPy_actorKeep_c::setActor() {
if (mID != -1) {
if (mID != fpcM_ERROR_PROCESS_ID_e) {
mActor = fopAcM_SearchByID(mID);
if (mActor == NULL) {
mID = -1;
mID = fpcM_ERROR_PROCESS_ID_e;
}
} else {
mActor = NULL;
@@ -202,7 +211,7 @@ void daPy_actorKeep_c::setData(fopAc_ac_c* i_actor) {
}
void daPy_actorKeep_c::clearData() {
mID = 0xffffffff;
mID = fpcM_ERROR_PROCESS_ID_e;
mActor = NULL;
}
@@ -243,25 +252,44 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
size = 0xA0;
}
char* tmpWork;
mDoExt_transAnmBas* tmpTransBas;
J3DAnmTransformKey* tmpTrans;
J3DAnmTexPattern* tmpTp;
J3DAnmTextureSRTKey* tmpTk;
JKRHeap* tmp;
mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20);
if (i_heapType == 4) {
char* tmpWork = new char[size];
tmpWork = new char[size];
JUT_ASSERT(669, tmpWork != NULL);
} else if (i_heapType == 3) {
mDoExt_transAnmBas* tmpTransBas = new mDoExt_transAnmBas(NULL);
tmpTransBas = new mDoExt_transAnmBas(NULL);
JUT_ASSERT(672, tmpTransBas != NULL);
} else if (i_heapType == 0) {
J3DAnmTransformKey* tmpTrans = new J3DAnmTransformKey();
tmpTrans = new J3DAnmTransformKey();
JUT_ASSERT(675, tmpTrans != NULL);
} else if (i_heapType == 1) {
J3DAnmTexPattern* tmpTp = new J3DAnmTexPattern();
tmpTp = new J3DAnmTexPattern();
JUT_ASSERT(678, tmpTp != NULL);
} else {
J3DAnmTextureSRTKey* tmpTk = new J3DAnmTextureSRTKey();
tmpTk = new J3DAnmTextureSRTKey();
JUT_ASSERT(681, tmpTk != NULL);
}
mDoExt_setCurrentHeap(tmp);
mDoExt_adjustSolidHeap(mAnimeHeap);
}
void daPy_aramBufferCheck(void* i_buffer, u32 i_size) {
daPy_anmHeap_c* heap = (daPy_anmHeap_c*)i_buffer;
if (heap->mBufferSize > i_size) {
OS_REPORT("%x, %x\n", heap->mBufferSize, i_size);
JUT_ASSERT(699, FALSE);
}
}
void* daPy_anmHeap_c::loadData(u16 i_resId) {
static const char twglArcName[] = "TWGate_Lk";
static const char twgwArcName[] = "TWGate_Wf";
@@ -278,7 +306,11 @@ void* daPy_anmHeap_c::loadData(u16 i_resId) {
};
if (mArcNo == 0xFFFF) {
dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, i_resId);
JKRReadIdxResource(mBuffer, mBufferSize, i_resId, dComIfGp_getAnmArchive());
#if DEBUG
daPy_aramBufferCheck(mBuffer, mBufferSize);
#endif
JKRHeap* heap = setAnimeHeap();
void* data = J3DAnmLoaderDataBase::load(mBuffer, J3DLOADER_UNK_FLAG0);
mDoExt_setCurrentHeap(heap);
@@ -293,48 +325,36 @@ void* daPy_anmHeap_c::loadData(u16 i_resId) {
}
void* daPy_anmHeap_c::loadDataIdx(u16 i_resID) {
void* data;
if (i_resID == mIdx && mArcNo == 0xFFFF) {
data = NULL;
} else {
mIdx = i_resID;
mArcNo = 0xFFFF;
if (mPriIdx == 0xFFFF) {
data = loadData(i_resID);
} else {
data = NULL;
}
return NULL;
}
return data;
mIdx = i_resID;
mArcNo = 0xFFFF;
if (mPriIdx == 0xFFFF) {
return loadData(i_resID);
}
return NULL;
}
void* daPy_anmHeap_c::loadDataPriIdx(u16 i_resID) {
void* data;
if (i_resID == mPriIdx || mArcNo != 0xFFFF) {
data = NULL;
} else {
mPriIdx = i_resID;
data = loadData(i_resID);
return NULL;
}
return data;
mPriIdx = i_resID;
return loadData(i_resID);
}
void* daPy_anmHeap_c::loadDataDemoRID(u16 i_resID, u16 i_arcNo) {
void* data;
if (i_resID == mIdx && i_arcNo == mArcNo) {
data = NULL;
} else {
mIdx = i_resID;
mArcNo = i_arcNo;
data = loadData(i_resID);
return NULL;
}
return data;
mIdx = i_resID;
mArcNo = i_arcNo;
return loadData(i_resID);
}
JKRHeap* daPy_anmHeap_c::setAnimeHeap() {
@@ -370,13 +390,11 @@ void daPy_sightPacket_c::draw() {
GXSetTevColor(GX_TEVREG0, reg0);
GXSetTevColor(GX_TEVREG1, reg1);
u8 tmp2 = mpImg->mipmapCount;
tmp2 = tmp2 > 1;
GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format,
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, (GXBool)(tmp2));
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, mpImg->mipmapCount > 1 ? GX_ENABLE : GX_DISABLE);
GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&texObj, GX_TEXMAP0);
GXLoadPosMtxImm(field_0x14, GX_PNMTX0);
GXLoadPosMtxImm(mProjMtx, GX_PNMTX0);
GXSetCurrentMtx(0);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXCallDisplayList(l_sightDL, 0x80);
@@ -389,7 +407,7 @@ void daPy_sightPacket_c::setSight() {
mDoLib_project(&mPos, &proj);
mDoMtx_stack_c::transS(proj.x, proj.y, proj.z);
mDoMtx_stack_c::scaleM(32.0f, 32.0f, 32.0f);
mDoMtx_copy(mDoMtx_stack_c::get(), field_0x14);
mDoMtx_copy(mDoMtx_stack_c::get(), mProjMtx);
dComIfGd_set2DXlu(this);
}
@@ -399,19 +417,12 @@ void daPy_sightPacket_c::setSightImage(ResTIMG* i_img) {
}
BOOL daPy_py_c::checkMasterSwordEquip() {
u32 equipSword = dComIfGs_getSelectEquipSword();
bool isMasterSword = false;
if (equipSword == fpcNm_ITEM_MASTER_SWORD || equipSword == fpcNm_ITEM_LIGHT_SWORD) {
isMasterSword = true;
}
return isMasterSword;
u16 equipSword = dComIfGs_getSelectEquipSword();
return equipSword == fpcNm_ITEM_MASTER_SWORD || equipSword == fpcNm_ITEM_LIGHT_SWORD;
}
BOOL daPy_py_c::checkWoodShieldEquip() {
u16 equipShield = dComIfGs_getSelectEquipShield();
return equipShield == fpcNm_ITEM_WOOD_SHIELD || equipShield == fpcNm_ITEM_SHIELD;
}
@@ -427,13 +438,12 @@ int daPy_py_c::checkNowWolfEyeUp() {
return daAlink_getAlinkActorClass()->checkWolfEyeUp();
}
void daAlink_c::startRestartRoomFromOut(int param_0, u32 param_1, int param_2) {
startRestartRoom(param_1, param_2, param_0, dComIfGp_event_runCheck());
void daAlink_c::startRestartRoomFromOut(int i_dmgAmount, u32 i_mode, int param_2) {
startRestartRoom(i_mode, param_2, i_dmgAmount, dComIfGp_event_runCheck());
}
void daPy_py_c::forceRestartRoom(int param_0, u32 param_1, int param_2) {
daAlink_getAlinkActorClass()->startRestartRoomFromOut(param_0, param_1, param_2);
void daPy_py_c::forceRestartRoom(int i_dmgAmount, u32 i_mode, int param_2) {
daAlink_getAlinkActorClass()->startRestartRoomFromOut(i_dmgAmount, i_mode, param_2);
}
BOOL daPy_py_c::setFmChainPos(fopAc_ac_c* param_0, cXyz* param_1, int param_2) {
@@ -448,14 +458,13 @@ void daPy_py_c::setLookPos(cXyz* i_pos) {
daAlink_getAlinkActorClass()->setLookPosFromOut(i_pos);
}
void daPy_py_c::setPlayerSe(u32 i_sfxID) {
daAlink_getAlinkActorClass()->seStartOnlyReverb(i_sfxID);
void daPy_py_c::setPlayerSe(u32 i_soundID) {
daAlink_getAlinkActorClass()->seStartOnlyReverb(i_soundID);
}
bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
return (fopAcM_checkCarryNow(i_actor) &&
daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(i_actor)) &&
dComIfGp_checkCameraAttentionStatus(dComIfGp_getPlayerCameraID(0), 2);
return (fopAcM_checkCarryNow(i_actor) && daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(i_actor))
&& dComIfGp_checkCameraAttentionStatus(dComIfGp_getPlayerCameraID(0), 2);
}
bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
@@ -463,7 +472,7 @@ bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
}
bool daPy_py_c::checkRoomRestartStart() {
u8 mode = getLastSceneMode();
u32 mode = getLastSceneMode();
if (mode == 4 || mode == 8 || mode == 5) {
return true;
}
@@ -472,9 +481,10 @@ bool daPy_py_c::checkRoomRestartStart() {
}
u32 daPy_py_c::checkCarryStartLightBallA() {
if (checkRoomRestartStart() || !dComIfGp_getStage() ||
!dComIfGp_getStage()->getStagInfo() ||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x17)
if (checkRoomRestartStart()
|| !dComIfGp_getStage()
|| !dComIfGp_getStage()->getStagInfo()
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != dStage_SaveTbl_LV8)
{
return FALSE;
}
@@ -483,9 +493,10 @@ u32 daPy_py_c::checkCarryStartLightBallA() {
}
u32 daPy_py_c::checkCarryStartLightBallB() {
if (checkRoomRestartStart() || !dComIfGp_getStage() ||
!dComIfGp_getStage()->getStagInfo() ||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x17)
if (checkRoomRestartStart()
|| !dComIfGp_getStage()
|| !dComIfGp_getStage()->getStagInfo()
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != dStage_SaveTbl_LV8)
{
return FALSE;
}
@@ -516,22 +527,25 @@ bool daPy_py_c::checkBoomerangCharge() {
}
bool daPy_py_c::checkBoomerangChargeTime() {
return 0;
return daAlink_getAlinkActorClass()->checkBoomerangChargeNow();
}
daBoomerang_c* daPy_py_c::getThrowBoomerangActor() {
return static_cast<daBoomerang_c*>(
daAlink_getAlinkActorClass()->getThrowBoomerangAcKeep()->getActor());
return static_cast<daBoomerang_c*>(daAlink_getAlinkActorClass()->getThrowBoomerangAcKeep()->getActor());
}
void daPy_py_c::cancelBoomerangLockActor(fopAc_ac_c* i_actor) {
daAlink_getAlinkActorClass()->cancelBoomerangLock(i_actor);
}
void daPy_py_c::setPlayerDamage(int i_dmgAmount, int i_setDmgTimer) {
void daPy_py_c::setPlayerDamage(int i_dmgAmount, BOOL i_setDmgTimer) {
daAlink_getAlinkActorClass()->setDamagePoint(i_dmgAmount, FALSE, i_setDmgTimer, 0);
}
BOOL daPy_py_c::checkAcceptDungeonWarp() {
return daAlink_getAlinkActorClass()->checkAcceptDungeonWarpAlink(1);
}
void daPy_py_c::setMidnaMotionNum(int i_motionNum) {
if (m_midnaActor != NULL) {
m_midnaActor->setMotionNum(i_motionNum);
@@ -563,5 +577,6 @@ int daPy_addCalcShort(s16* i_value, s16 i_target, s16 i_scale, s16 i_maxStep, s1
}
}
}
return i_target - *i_value;
}
+1 -1
View File
@@ -68,7 +68,7 @@ int daSpinner_c::create() {
mAcchCir[0].SetWall(50.01f, 58.0f);
mAcchCir[1].SetWall(129.99f, 35.0f);
mAcchCir[2].SetWall(player->field_0x598, 35.0f);
mAcchCir[2].SetWall(player->mHeight, 35.0f);
mPaPo.init(&mAcch, 85.0f, 85.0f);
+1 -1
View File
@@ -188,7 +188,7 @@ void daTagKagoFall_c::actionWaitFall() {
if (dComIfGs_getLife() == 0) {
player->onSceneChangeAreaJump(mExitID, -1, NULL);
if (player->checkNoResetFlg2(daPy_py_c::FLG2_SCN_CHG_START) && !mPlayedSceneChangeSfx)
if (player->checkNoResetFlg2(daPy_py_c::FLG2_SCENE_CHANGE_START) && !mPlayedSceneChangeSfx)
{
Z2GetAudioMgr()->seStart(Z2SE_FORCE_BACK, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
player->voiceStart(Z2SE_WL_V_FALL_TO_RESTART);
+1 -1
View File
@@ -365,7 +365,7 @@ void dFlower_data_c::WorkAt(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo,
}
}
if ((daPy_getPlayerActorClass()->getCutType() >= 3) && (daPy_getPlayerActorClass()->getCutType() <= 7)) {
if ((daPy_getPlayerActorClass()->getCutType() >= daPy_py_c::CUT_TYPE_NM_RIGHT) && (daPy_getPlayerActorClass()->getCutType() <= daPy_py_c::CUT_TYPE_FINISH_VERTICAL)) {
if (m_pos.abs(temp_r26->current.pos) > 128.0f) {
if (m_pos.abs(temp_r26->current.pos) < 200.0f) {
WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p);
+1 -1
View File
@@ -102,7 +102,7 @@ u16 cc_pl_cut_bit_get() {
} else if (player_p->getCutType() == daPy_py_c::CUT_TYPE_FINISH_VERTICAL) {
bit = 0x40;
} else if (player_p->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
player_p->getCutType() == 9 || player_p->getCutType() == daPy_py_c::CUT_TYPE_HORSE_TURN ||
player_p->getCutType() == daPy_py_c::CUT_TYPE_UNK_9 || player_p->getCutType() == daPy_py_c::CUT_TYPE_HORSE_TURN ||
player_p->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT)
{
bit = 0x80;
+7 -7
View File
@@ -193,8 +193,8 @@ u16 dDemo_c::m_branchType;
const u8* dDemo_c::m_branchData;
int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3,
u8* param_4) {
int dDemo_actor_c::getDemoIDData(int* o_arg0, int* o_arg1, int* o_arg2, u16* o_resID,
u8* param_4) {
JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > data(getPrm()->getData());
static JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > dummy;
@@ -210,10 +210,10 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
}
u32 var_r31 = *it;
*param_0 = var_r31 >> 0x1E;
*param_1 = (var_r31 >> 0x18) & 0xF;
*param_2 = (var_r31 >> 0x10) & 0xF;
*param_3 = var_r31 & 0xFFFF;
*o_arg0 = var_r31 >> 0x1E;
*o_arg1 = (var_r31 >> 0x18) & 0xF;
*o_arg2 = (var_r31 >> 0x10) & 0xF;
*o_resID = var_r31 & 0xFFFF;
if (param_4 != NULL) {
*param_4 = (var_r31 >> 0x17) & 1;
@@ -224,7 +224,7 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
}
#if DEBUG
s16 dDemo_c::m_branchNum = 0;
u16 dDemo_c::m_branchNum = 0;
#endif
static void* dDemo_getJaiPointer(char const* arcName, u32 anmID, int param_2, u16* param_3) {
+4 -4
View File
@@ -1144,9 +1144,9 @@ void dMenu_Dmap_c::screenInit() {
field_0x88[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map000', 3, NULL);
field_0x88[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con000', 3, NULL);
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'i_key_n', 3, NULL);
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'lv5_k_n', 3, NULL);
} else {
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'nor_k_n', 3, NULL);
@@ -1156,7 +1156,7 @@ void dMenu_Dmap_c::screenInit() {
field_0x88[i]->scale(0.9f, 0.9f);
}
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
mpDrawBg->mBaseScreen->search('lv5_k_n')->hide();
mpDrawBg->mBaseScreen->search('nor_k_n')->hide();
@@ -1195,7 +1195,7 @@ void dMenu_Dmap_c::screenInit() {
((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1_s'))->changeTexture(tex, 0);
((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1'))->changeTexture(tex, 0);
}
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
mpDrawBg->mBaseScreen->search('i_key_n')->hide();
mpDrawBg->mBaseScreen->search('nor_k_n')->hide();
mpDrawBg->mBaseScreen->search('key_n_n')->hide();
+1 -1
View File
@@ -1020,7 +1020,7 @@ void dMenu_Fmap_c::portal_warp_map_proc() {
}
} else if (mPortalNo == 3) {
if ((dMeter2Info_getMapStatus() == 3
&& dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 2
&& dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_FARON
&& dComIfGs_isOneZoneSwitch(0xf, -1))
/* dSv_event_flag_c::M_018 - Main Event - Brought Kakariko bridge back to original location */
|| dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[0x33]))
+4 -4
View File
@@ -360,7 +360,7 @@ void dMenu_ItemExplain_c::open_init() {
u8 itemNo = field_0xe1;
s32 iVar = -1;
if (itemNo == 0x26) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
s32 itemsObtained = 0;
for (int i = 0; i < 3; i++) {
if (checkItemGet(i + fpcNm_ITEM_L2_KEY_PIECES1, 1) != 0) {
@@ -377,7 +377,7 @@ void dMenu_ItemExplain_c::open_init() {
itemNo = 0xfd;
}
} else {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
itemNo = 0xf6;
}
}
@@ -622,7 +622,7 @@ u8 dMenu_ItemExplain_c::openExplainDmap(u8 param_0, u8 param_1, u8 param_2, bool
u8 ret = 0;
s32 itemsObtained = 0;
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11 && param_0 == 0x26) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2 && param_0 == 0x26) {
for (int i = 0; i < 3; i++) {
if (checkItemGet(i + fpcNm_ITEM_L2_KEY_PIECES1, 1) != 0) {
itemsObtained++;
@@ -644,7 +644,7 @@ u8 dMenu_ItemExplain_c::openExplainDmap(u8 param_0, u8 param_1, u8 param_2, bool
mStatus = 1;
field_0xe1 = param_0;
field_0xcc = itemNo + 0x165;
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14 && itemNo == 0x23) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5 && itemNo == 0x23) {
field_0xcc = 0x5bf;
}
if (itemNo == 0x25 && dComIfGs_isDungeonItemWarp(0x16)) {