Files
tp/include/d/actor/d_a_player.h
T

996 lines
38 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef D_A_D_A_PLAYER_H
#define D_A_D_A_PLAYER_H
#include "d/d_drawlist.h"
#include "f_op/f_op_actor.h"
2023-05-12 12:10:14 -07:00
struct ResTIMG;
2021-10-11 09:38:53 -07:00
class daPy_sightPacket_c : public dDlst_base_c {
2021-12-04 05:10:59 -08:00
public:
2022-06-01 03:49:32 -07:00
daPy_sightPacket_c() {}
/* 8015F1A0 */ virtual void draw();
/* 80140CDC */ virtual ~daPy_sightPacket_c() {}
2021-10-11 09:38:53 -07:00
/* 8015F2FC */ void setSight();
/* 8015F384 */ void setSightImage(ResTIMG*);
2021-12-04 05:10:59 -08:00
bool getDrawFlg() { return mDrawFlag; }
2022-12-19 11:06:32 -08:00
void onDrawFlg() { mDrawFlag = true; }
void offDrawFlg() { mDrawFlag = false; }
void setPos(const cXyz* i_pos) { mPos = *i_pos; }
2024-11-09 02:09:36 -08:00
cXyz* getPosP() { return &mPos; }
2021-12-04 05:10:59 -08:00
/* 0x04 */ bool mDrawFlag;
/* 0x05 */ u8 field_0x5[3];
/* 0x08 */ cXyz mPos;
/* 0x14 */ Mtx field_0x14;
2021-12-21 06:06:57 -08:00
/* 0x44 */ ResTIMG* mpImg;
/* 0x48 */ u8* mpData;
};
2021-11-10 23:54:31 -08:00
class daPy_boomerangMove_c {
public:
/* 8015E5B0 */ void initOffset(cXyz const*);
2022-10-04 17:29:53 -07:00
/* 8015E654 */ int posMove(cXyz*, s16*, fopAc_ac_c*, s16);
/* 8015E87C */ void bgCheckAfterOffset(cXyz const*);
2021-11-10 23:54:31 -08:00
2022-12-19 11:06:32 -08:00
static void initDropAngleY() { m_dropAngleY = 0x4000; }
static void offEventKeepFlg() { m_eventKeepFlg = 0; }
2022-10-04 17:29:53 -07:00
static s16 m_dropAngleY;
static s16 m_eventKeepFlg;
2021-11-10 23:54:31 -08:00
private:
/* 0x0 */ u8 field_0x0;
2022-10-04 17:29:53 -07:00
/* 0x2 */ s16 field_0x2;
2021-11-10 23:54:31 -08:00
/* 0x4 */ f32 field_0x4;
/* 0x8 */ f32 field_0x8;
}; // Size: 0xC
class daPy_anmHeap_c {
public:
enum daAlinkHEAP_TYPE {
HEAP_TYPE_1 = 1,
HEAP_TYPE_2,
HEAP_TYPE_3,
HEAP_TYPE_4,
HEAP_TYPE_5,
};
daPy_anmHeap_c(u32 param_0 = 0);
~daPy_anmHeap_c();
void initData();
void* mallocBuffer();
void createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE);
2021-12-21 06:06:57 -08:00
void* loadData(u16);
void* loadDataIdx(u16);
void* loadDataPriIdx(u16);
void* loadDataDemoRID(u16, u16);
2021-12-04 05:10:59 -08:00
JKRHeap* setAnimeHeap();
u16 getIdx() const { return mIdx; }
void resetIdx() { mIdx = 0xffff; }
void resetPriIdx() { mPriIdx = 0xffff; }
void resetArcNo() { mArcNo = 0xffff; }
2021-12-04 05:10:59 -08:00
bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; }
2021-12-27 05:15:35 -08:00
void setBufferSize(u32 size) { mBufferSize = size; }
void setBuffer(u8* buf) { mBuffer = buf; }
2024-11-06 22:20:22 -05:00
u32 getBufferSize() { return mBufferSize; }
u8* getBuffer() { return mBuffer; }
bool checkNoSetIdx() const { return mIdx == 0xFFFF; }
2023-03-07 10:44:25 -08:00
bool checkNoSetPriIdx() const { return mPriIdx == 0xFFFF; }
2024-11-09 02:09:36 -08:00
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;
}; // Size = 0x14
class daPy_actorKeep_c {
public:
2023-12-17 15:24:36 -08:00
daPy_actorKeep_c() { clearData(); }
2023-02-05 07:09:29 -08:00
2021-11-10 23:54:31 -08:00
void setActor();
void setData(fopAc_ac_c*);
2021-11-10 23:54:31 -08:00
void clearData();
2024-07-07 11:31:29 -07:00
fpc_ProcID getID() const { return mID; }
void setID(fpc_ProcID id) { mID = id; }
2021-11-10 23:54:31 -08:00
fopAc_ac_c* getActor() const { return mActor; }
fopAc_ac_c* getActorConst() const { return mActor; }
private:
2024-07-07 11:31:29 -07:00
/* 0x0 */ fpc_ProcID mID;
2021-12-04 05:10:59 -08:00
/* 0x4 */ fopAc_ac_c* mActor;
}; // Size: 0x8
class daPy_frameCtrl_c : public J3DFrameCtrl {
public:
/* 80140D24 */ ~daPy_frameCtrl_c();
/* 80140D80 */ daPy_frameCtrl_c();
2021-11-10 23:54:31 -08:00
bool checkAnmEnd();
void updateFrame();
void setFrameCtrl(u8, short, short, f32, f32);
u16 getEndFlg() { return mEndFlg; }
u16 getNowSetFlg() { return mNowSetFlg; }
void onEndFlg() { mEndFlg = 1; }
void onNowSetFlg() { mNowSetFlg = 1; }
void offNowSetFlg() { mNowSetFlg = 0; }
void offEndFlg() {
mEndFlg = 0;
mNowSetFlg = 0;
}
private:
/* 0x14 */ u16 mEndFlg;
/* 0x16 */ u16 mNowSetFlg;
};
2021-11-10 23:54:31 -08:00
class Z2WolfHowlMgr;
class daBoomerang_c;
class daPy_demo_c {
public:
2023-11-17 20:02:04 -08:00
enum {
DEMO_LAST_e = 0x5F,
DEMO_NEW_ANM0_e = 0x200,
};
void setDemoType(u16 pType) { mDemoType = pType; }
2022-12-19 11:06:32 -08:00
int getDemoType() const { return mDemoType; }
2021-11-10 23:54:31 -08:00
void setDemoMode(u32 mode) { mDemoMode = mode; }
u32 getDemoMode() const { return mDemoMode; }
2021-12-21 06:06:57 -08:00
int getParam1() const { return mParam1; }
2023-11-17 20:02:04 -08:00
s16 getParam2() const { return mParam2; }
void setOriginalDemoType() { setDemoType(3); }
2024-03-19 04:31:53 -07:00
void setSpecialDemoType() { setDemoType(5); }
2022-12-19 11:06:32 -08:00
void setSystemDemoType() { setDemoType(2); }
void setStick(f32 stick) { mStick = stick; }
void setMoveAngle(s16 angle) { mDemoMoveAngle = angle; }
s16 getMoveAngle() const { return mDemoMoveAngle; }
2022-12-19 11:06:32 -08:00
f32 getStick() { return mStick; }
int getParam0() const { return mParam0; }
2023-12-17 15:24:36 -08:00
void setParam0(int value) { mParam0 = value; }
void setParam1(int value) { mParam1 = value; }
void setParam2(int value) { mParam2 = value; }
void setPos0(const cXyz* pos) { mDemoPos0 = *pos; }
2023-11-17 20:02:04 -08:00
void setToolDemoType() { setDemoType(1); }
s16 getTimer() const { return mTimer; }
void decTimer() { mTimer--; }
void setTimer(s16 i_timer) { mTimer = i_timer; }
cXyz* getPos0() { return &mDemoPos0; }
void resetDemoType() { setDemoType(0); }
2024-10-10 07:29:58 -07:00
void setStartDemoType() { setDemoType(4); }
private:
/* 0x00 */ u16 mDemoType;
/* 0x02 */ s16 mDemoMoveAngle;
/* 0x04 */ s16 mTimer;
/* 0x06 */ s16 mParam2;
/* 0x08 */ int mParam0;
/* 0x0C */ int mParam1;
2021-11-10 23:54:31 -08:00
/* 0x10 */ u32 mDemoMode;
2022-12-19 11:06:32 -08:00
/* 0x14 */ f32 mStick;
/* 0x18 */ cXyz mDemoPos0;
2021-11-10 23:54:31 -08:00
}; // Size: 0x24
2021-12-04 05:10:59 -08:00
class daMidna_c;
2024-03-17 18:53:08 -04:00
class daSpinner_c;
2022-07-02 01:29:13 +02:00
class daPy_py_c;
inline daPy_py_c* dComIfGp_getLinkPlayer();
2024-03-19 04:31:53 -07:00
inline BOOL dComIfGs_isEventBit(const u16);
2024-10-10 07:29:58 -07:00
inline u32 dComIfGs_getLastSceneMode();
2021-12-04 05:10:59 -08:00
class daPy_py_c : public fopAc_ac_c {
public:
2021-11-10 23:54:31 -08:00
/* 0x0568 */ u8 mCutType;
/* 0x0569 */ u8 mComboCutCount;
/* 0x056A */ u8 mSpecialMode; // maybe needs better name
/* 0x056B */ u8 field_0x56b;
/* 0x056C */ s16 mDamageTimer;
2021-12-04 05:10:59 -08:00
/* 0x056E */ u16 mSwordUpTimer;
2021-11-10 23:54:31 -08:00
/* 0x0570 */ u32 mNoResetFlg0;
/* 0x0574 */ u32 mNoResetFlg1;
/* 0x0578 */ u32 mNoResetFlg2;
/* 0x057C */ u32 mNoResetFlg3;
/* 0x0580 */ u32 mResetFlg0;
/* 0x0584 */ u32 mResetFlg1;
/* 0x0588 */ u32 mEndResetFlg0;
/* 0x058C */ u32 mEndResetFlg1;
/* 0x0590 */ u32 mEndResetFlg2;
/* 0x0594 */ f32 field_0x594;
/* 0x0598 */ f32 field_0x598;
/* 0x059C */ csXyz mBodyAngle;
/* 0x05A4 */ cXyz mHeadTopPos;
/* 0x05B0 */ cXyz mItemPos;
/* 0x05BC */ cXyz mSwordTopPos;
/* 0x05C8 */ cXyz mLeftHandPos;
/* 0x05D4 */ cXyz mRightHandPos;
2022-12-19 11:06:32 -08:00
/* 0x05E0 */ cXyz mLeftFootPos;
/* 0x05EC */ cXyz mRightFootPos;
2024-11-09 02:09:36 -08:00
/* 0x05F8 */ cXyz field_0x5f8;
/* 0x0604 */ daPy_demo_c mDemo;
public:
enum daPy_FLG0 {
2021-12-04 05:10:59 -08:00
FLG0_UNK_40000000 = 0x40000000,
FLG0_EQUIP_HVY_BOOTS = 0x2000000,
FLG0_PLAYER_NO_DRAW = 0x8000000,
FLG0_UNK_10000000 = 0x10000000,
2021-11-10 23:54:31 -08:00
FLG0_UNK_1000000 = 0x1000000,
FLG0_UNDERWATER = 0x800000,
2024-10-10 07:29:58 -07:00
FLG0_UNK_400000 = 0x400000,
2023-11-17 20:02:04 -08:00
FLG0_UNK_200000 = 0x200000,
FLG0_UNK_100000 = 0x100000,
2021-11-10 23:54:31 -08:00
FLG0_UNK_80000 = 0x80000,
FLG0_UNK_40000 = 0x40000,
2021-12-04 05:10:59 -08:00
FLG0_UNK_20000 = 0x20000,
2024-03-19 04:31:53 -07:00
FLG0_UNK_10000 = 0x10000,
2021-11-10 23:54:31 -08:00
FLG0_UNK_8000 = 0x8000,
FLG0_UNK_4000 = 0x4000,
FLG0_UNK_2000 = 0x2000,
FLG0_MAGNE_BOOTS_ON = 0x1000,
2023-10-10 22:43:24 +02:00
FLG0_PUSH_PULL_KEEP = 0x800,
2023-11-17 20:02:04 -08:00
FLG0_UNK_400 = 0x400,
2024-03-30 13:04:34 -04:00
FLG0_SWIM_UP = 0x100,
2021-12-04 05:10:59 -08:00
FLG0_UNK_80 = 0x80,
2021-11-10 23:54:31 -08:00
FLG0_UNK_40 = 0x40,
2021-12-04 05:10:59 -08:00
FLG0_UNK_20 = 0x20,
FLG0_UNK_10 = 0x10,
FLG0_UNK_8 = 0x8,
FLG0_MIDNA_RIDE = 4,
FLG0_UNK_2 = 2,
2021-12-04 05:10:59 -08:00
FLG0_HVY_STATE = FLG0_UNK_40000000 | FLG0_EQUIP_HVY_BOOTS | FLG0_UNK_20000,
2022-12-19 11:06:32 -08:00
FLG0_UNK_14000 = 0x14000,
2023-11-17 20:02:04 -08:00
FLG0_UNK_10400 = 0x10400,
FLG0_UNK_18 = FLG0_UNK_10 | FLG0_UNK_8,
};
2022-10-04 17:29:53 -07:00
enum daPy_FLG1 {
2024-10-12 15:11:17 -07:00
FLG1_ICE_FREEZE = 0x40000000,
FLG1_UNK_20000000 = 0x20000000,
FLG1_UNK_10000000 = 0x10000000,
2022-12-19 11:06:32 -08:00
FLG1_UNK_4000000 = 0x4000000,
FLG1_IS_WOLF = 0x2000000,
2024-11-09 02:09:36 -08:00
FLG1_UNK_1000000 = 0x1000000,
FLG1_UNK_800000 = 0x800000,
2022-12-19 11:06:32 -08:00
FLG1_DASH_MODE = 0x400000,
2024-10-10 07:29:58 -07:00
FLG1_UNK_200000 = 0x200000,
2024-03-19 04:31:53 -07:00
FLG1_UNK_100000 = 0x100000,
2024-11-06 22:20:22 -05:00
FLG1_MIDNA_ATN_POS = 0x80000,
2024-10-10 07:29:58 -07:00
FLG1_UNK_40000 = 0x40000,
2024-11-09 02:09:36 -08:00
FLG1_UNK_20000 = 0x20000,
2022-10-04 17:29:53 -07:00
FLG1_UNK_10000 = 0x10000,
2022-12-19 11:06:32 -08:00
FLG1_UNK_8000 = 0x8000,
FLG1_THROW_DAMAGE = 0x4000,
2023-03-07 10:44:25 -08:00
FLG1_UNK_2000 = 0x2000,
FLG1_UNK_1000 = 0x1000,
FLG1_UNK_800 = 0x800,
2023-11-17 20:02:04 -08:00
FLG1_UNK_200 = 0x200,
2024-11-06 22:20:22 -05:00
FLG1_MIDNA_HAIR_ATN_POS = 0x100,
2022-12-19 11:06:32 -08:00
FLG1_UNK_80 = 0x80,
FLG1_UNK_40 = 0x40,
FLG1_UNK_20 = 0x20,
FLG1_UNK_10 = 0x10,
2024-11-09 02:09:36 -08:00
FLG1_UNK_8 = 8,
2022-10-04 17:29:53 -07:00
FLG1_UNK_4 = 4,
FLG1_UNK_2 = 2,
2022-12-19 11:06:32 -08:00
FLG1_UNK_1 = 1,
FLG1_UNK_1800 = 0x1800,
2024-03-19 04:31:53 -07:00
FLG1_UNK_10100000 = FLG1_UNK_10000000 | FLG1_UNK_100000,
2022-10-04 17:29:53 -07:00
};
2021-12-04 05:57:01 -08:00
enum daPy_FLG2 {
2024-10-10 07:29:58 -07:00
FLG2_HORSE_ZELDA = 0x40000000,
FLG2_UNK_20000000 = 0x20000000,
2022-12-19 11:06:32 -08:00
FLG2_UNK_10000000 = 0x10000000,
2021-12-04 05:57:01 -08:00
FLG2_UNK_4080000 = 0x4080000,
2024-10-28 04:00:15 -07:00
FLG2_UNK_4000000 = 0x4000000,
2021-12-04 05:57:01 -08:00
FLG2_UNK_2080000 = 0x2080000,
2024-10-28 04:00:15 -07:00
FLG2_UNK_2000000 = 0x2000000,
2022-12-19 11:06:32 -08:00
FLG2_UNK_8000000 = 0x8000000,
FLG2_UNK_1000000 = 0x1000000,
2024-10-30 15:41:08 -07:00
FLG2_BOAR_SINGLE_BATTLE = 0x800000,
FLG2_STATUS_WINDOW_DRAW = 0x400000,
FLG2_UNK_280000 = 0x280000,
FLG2_UNK_200000 = 0x200000,
FLG2_UNK_100000 = 0x100000,
FLG2_UNK_80000 = 0x80000,
2024-04-21 05:27:47 -07:00
FLG2_FORCE_GAMEOVER = 0x40000,
FLG2_UNK_20000 = 0x20000,
2024-05-05 19:13:52 +03:00
FLG2_WOLF_DASH_AUTO_JUMP = 0x10000,
FLG2_SCN_CHG_START = 0x8000,
FLG2_UNK_4000 = 0x4000,
2023-03-01 03:20:07 -08:00
FLG2_UNK_2000 = 0x2000,
2022-12-19 11:06:32 -08:00
FLG2_UNK_1000 = 0x1000,
2024-10-30 15:41:08 -07:00
FLG2_UNK_800 = 0x800,
2024-04-12 09:00:55 +03:00
FLG2_PLAYER_SHADOW = 0x400,
2022-12-19 11:06:32 -08:00
FLG2_UNK_200 = 0x200,
2024-10-30 15:41:08 -07:00
FLG2_UNK_100 = 0x100,
FLG2_UNK_80 = 0x80,
2024-05-01 02:16:22 -04:00
FLG2_WOLF_ENEMY_HANG_BITE = 0x40,
2023-02-25 21:25:55 -07:00
FLG2_WOLF_ENEMY_LEFT_THROW = 0x20,
FLG2_UNK_10 = 0x10,
FLG2_UNK_8 = 8,
2024-10-10 07:29:58 -07:00
FLG2_UNK_4 = 4,
FLG2_UNK_2 = 2,
FLG2_UNK_1 = 1,
2024-05-01 02:16:22 -04:00
FLG2_UNK_58 = FLG2_WOLF_ENEMY_HANG_BITE | FLG2_UNK_10 | FLG2_UNK_8,
2024-03-19 04:31:53 -07:00
FLG2_UNK_10000001 = FLG2_UNK_10000000 | FLG2_UNK_1,
2021-12-04 05:57:01 -08:00
};
2022-10-04 17:29:53 -07:00
2021-12-04 05:57:01 -08:00
enum daPy_FLG3 {
FLG3_UNK_80000000 = 0x80000000,
FLG3_UNK_40000000 = 0x40000000,
2022-12-19 11:06:32 -08:00
FLG3_UNK_20000000 = 0x20000000,
2024-10-27 00:35:25 -04:00
FLG3_COPY_ROD_ATN_KEEP = 0x10000000,
FLG3_BOOMERANG_ATN_KEEP = 0x8000000,
2022-12-19 11:06:32 -08:00
FLG3_UNK_4000000 = 0x4000000,
2021-12-04 05:57:01 -08:00
FLG3_UNK_2000000 = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
FLG3_UNK_800000 = 0x800000,
2023-03-01 03:20:07 -08:00
FLG3_UNK_400000 = 0x400000,
FLG3_UNK_200000 = 0x200000,
2021-12-04 05:57:01 -08:00
FLG3_UNK_100000 = 0x100000,
FLG3_UNK_80000 = 0x80000,
FLG3_COPY_ROD_THROW_AFTER = 0x40000,
2024-11-06 22:20:22 -05:00
FLG3_MIDNA_TALK_POLY_SPEED = 0x10000,
2024-10-10 07:29:58 -07:00
FLG3_UNK_8000 = 0x8000,
FLG3_UNK_4000 = 0x4000,
2024-10-10 07:29:58 -07:00
FLG3_UNK_2000 = 0x2000,
FLG3_UNK_1000 = 0x1000,
2024-10-28 04:00:15 -07:00
FLG3_UNK_800 = 0x800,
FLG3_UNK_400 = 0x400,
2022-12-19 11:06:32 -08:00
FLG3_UNK_200 = 0x200,
FLG3_UNK_100 = 0x100,
FLG3_UNK_80 = 0x80,
2022-12-19 11:06:32 -08:00
FLG3_UNK_40 = 0x40,
FLG3_UNK_20 = 0x20,
FLG3_UNK_10 = 0x10,
2024-10-10 07:29:58 -07:00
FLG3_UNK_8 = 8,
2022-12-19 11:06:32 -08:00
FLG3_UNK_4 = 4,
2024-10-28 04:00:15 -07:00
FLG3_UNK_1 = 1,
2021-12-04 05:57:01 -08:00
};
2022-10-04 17:29:53 -07:00
2021-12-04 05:57:01 -08:00
enum daPy_ERFLG0 {
2024-10-15 14:03:04 -07:00
ERFLG0_UNK_80000000 = 0x80000000,
2022-12-19 11:06:32 -08:00
ERFLG0_UNK_40000000 = 0x40000000,
ERFLG0_UNK_20000000 = 0x20000000,
2022-12-19 11:06:32 -08:00
ERFLG0_UNK_10000000 = 0x10000000,
2021-12-04 05:57:01 -08:00
ERFLG0_UNK_8000000 = 0x8000000,
2024-10-15 14:03:04 -07:00
ERFLG0_UNK_4000000 = 0x4000000,
2024-03-17 18:53:08 -04:00
ERFLG0_BOSS_ROOM_WAIT = 0x2000000,
2021-12-04 05:57:01 -08:00
ERFLG0_UNK_1000000 = 0x1000000,
2021-12-27 05:15:35 -08:00
ERFLG0_UNK_800000 = 0x800000,
2024-03-30 13:04:34 -04:00
ERFLG0_BEE_FOLLOW = 0x400000,
ERFLG0_UNK_200000 = 0x200000,
2021-12-04 05:57:01 -08:00
ERFLG0_UNK_100000 = 0x100000,
2024-10-30 15:41:08 -07:00
ERFLG0_UNK_80000 = 0x80000,
2024-10-15 14:03:04 -07:00
ERFLG0_UNK_40000 = 0x40000,
ERFLG0_UNK_20000 = 0x20000,
ERFLG0_UNK_10000 = 0x10000,
2024-11-09 02:09:36 -08:00
ERFLG0_UNK_4000 = 0x4000,
ERFLG0_UNK_2000 = 0x2000,
2022-12-19 11:06:32 -08:00
ERFLG0_UNK_1000 = 0x1000,
ERFLG0_UNK_400 = 0x400,
ERFLG0_FORCE_AUTO_JUMP = 0x200,
ERFLG0_UNK_100 = 0x100,
2022-12-19 11:06:32 -08:00
ERFLG0_UNK_80 = 0x80,
ERFLG0_UNK_40 = 0x40,
ERFLG0_NOT_AUTO_JUMP = 0x20,
ERFLG0_NOT_HANG = 0x10,
2022-12-19 11:06:32 -08:00
ERFLG0_UNK_8 = 8,
ERFLG0_UNK_4 = 4,
2021-12-21 06:06:57 -08:00
ERFLG0_UNK_2 = 2,
2021-12-04 05:57:01 -08:00
ERFLG0_UNK_1 = 1,
};
2022-10-04 17:29:53 -07:00
2021-12-04 05:57:01 -08:00
enum daPy_ERFLG1 {
ERFLG1_GANON_FINISH = 0x80000000,
2022-12-19 11:06:32 -08:00
ERFLG1_UNK_40000000 = 0x40000000,
2023-03-07 10:44:25 -08:00
ERFLG1_UNK_20000000 = 0x20000000,
ERFLG1_UNK_10000000 = 0x10000000,
2024-11-03 03:47:23 -08:00
ERFLG1_UNK_8000000 = 0x8000000,
ERFLG1_UNK_4000000 = 0x4000000,
ERFLG1_UNK_2000000 = 0x2000000,
2024-10-10 07:29:58 -07:00
ERFLG1_UNK_1000000 = 0x1000000,
2024-10-28 04:00:15 -07:00
ERFLG1_UNK_400000 = 0x400000,
ERFLG1_UNK_200000 = 0x200000,
2023-11-17 20:02:04 -08:00
ERFLG1_UNK_100000 = 0x100000,
2024-10-28 04:00:15 -07:00
ERFLG1_UNK_80000 = 0x80000,
ERFLG1_UNK_40000 = 0x40000,
2024-10-28 04:00:15 -07:00
ERFLG1_UNK_20000 = 0x20000,
ERFLG1_UNK_10000 = 0x10000,
2024-10-12 15:11:17 -07:00
ERFLG1_UNK_8000 = 0x8000,
ERFLG1_UNK_4000 = 0x4000,
ERFLG1_UNK_2000 = 0x2000,
2024-10-10 07:29:58 -07:00
ERFLG1_UNK_1000 = 0x1000,
2022-12-19 11:06:32 -08:00
ERFLG1_UNK_800 = 0x800,
ERFLG1_UNK_400 = 0x400,
ERFLG1_WOLF_EYE_KEEP = 0x200,
2022-12-19 11:06:32 -08:00
ERFLG1_UNK_100 = 0x100,
ERFLG1_UNK_80 = 0x80,
2024-11-06 22:20:22 -05:00
ERFLG1_MIDNA_RIDE_SHOCK = 0x40,
2022-12-19 11:06:32 -08:00
ERFLG1_UNK_20 = 0x20,
ERFLG1_UNK_10 = 0x10,
2022-12-19 11:06:32 -08:00
ERFLG1_UNK_8 = 8,
ERFLG1_UNK_4 = 4,
ERFLG1_UNK_2 = 2,
2021-12-04 05:57:01 -08:00
ERFLG1_UNK_1 = 1,
};
2022-10-04 17:29:53 -07:00
2021-12-27 05:15:35 -08:00
enum daPy_ERFLG2 {
ERFLG2_UNK_100 = 0x100,
2024-11-06 22:20:22 -05:00
ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP = 0x80,
2022-12-19 11:06:32 -08:00
ERFLG2_UNK_40 = 0x40,
ERFLG2_UNK_20 = 0x20,
2024-03-19 04:31:53 -07:00
ERFLG2_UNK_10 = 0x10,
2024-11-03 03:47:23 -08:00
ERFLG2_UNK_8 = 8,
ERFLG2_UNK_2 = 2,
2024-10-15 14:03:04 -07:00
ERFLG2_UNK_1 = 1,
2021-12-27 05:15:35 -08:00
};
2022-10-04 17:29:53 -07:00
2021-11-10 23:54:31 -08:00
enum daPy_RFLG0 {
RFLG0_WOLF_BARK = 0x80000000,
RFLG0_UNK_40000000 = 0x40000000,
RFLG0_UNK_20000000 = 0x20000000,
2024-10-15 14:03:04 -07:00
RFLG0_UNK_10000000 = 0x10000000,
2021-11-10 23:54:31 -08:00
RFLG0_UNK_8000000 = 0x8000000,
2022-12-19 11:06:32 -08:00
RFLG0_UNK_4000000 = 0x4000000,
2024-11-09 02:09:36 -08:00
RFLG0_UNK_2000000 = 0x2000000,
2024-01-19 19:57:56 -05:00
RFLG0_GRAB_PUT_START = 0x400000,
RFLG0_WOLF_GROWL = 0x200000,
2024-10-15 14:03:04 -07:00
RFLG0_UNK_80000 = 0x80000,
2024-07-06 07:33:37 -07:00
RFLG0_UNK_40000 = 0x40000,
2023-11-17 20:02:04 -08:00
RFLG0_UNK_20000 = 0x20000,
2024-03-01 14:41:50 -08:00
RFLG0_UNK_10000 = 0x10000,
RFLG0_UNK_8000 = 0x8000,
2021-12-27 05:15:35 -08:00
RFLG0_UNK_4000 = 0x4000,
RFLG0_FRONT_ROLL_CRASH = 0x2000,
RFLG0_ENEMY_ATTN_LOCK = 0x1000,
RFLG0_UNK_400 = 0x400,
RFLG0_UNK_200 = 0x200,
RFLG0_UNK_100 = 0x100,
2021-11-10 23:54:31 -08:00
RFLG0_UNK_80 = 0x80,
RFLG0_UNK_40 = 0x40,
2023-12-17 15:24:36 -08:00
RFLG0_GRAB_UP_END = 0x20,
RFLG0_UNK_10 = 0x10,
2023-11-17 20:02:04 -08:00
RFLG0_UNK_8 = 0x8,
2024-10-27 00:35:25 -04:00
RFLG0_GRAB_THROW = 0x4,
2021-11-10 23:54:31 -08:00
RFLG0_UNK_2 = 0x2,
2024-02-15 23:51:12 -08:00
RFLG0_UNK_1 = 0x1,
2021-11-10 23:54:31 -08:00
};
2022-12-19 11:06:32 -08:00
enum daPy_RFLG1 {
2024-10-12 15:11:17 -07:00
RFLG1_UNK_400 = 0x400,
2024-10-10 07:29:58 -07:00
RFLG1_UNK_200 = 0x200,
2023-11-17 20:02:04 -08:00
RFLG1_UNK_100 = 0x100,
2024-10-10 07:29:58 -07:00
RFLG1_UNK_80 = 0x80,
2024-03-19 04:31:53 -07:00
RFLG1_UNK_40 = 0x40,
2022-12-19 11:06:32 -08:00
RFLG1_UNK_30 = 0x30,
2024-10-28 04:00:15 -07:00
RFLG1_UNK_20 = 0x20,
RFLG1_UNK_10 = 0x10,
RFLG1_UNK_8 = 0x8,
RFLG1_UNK_4 = 0x4,
2022-12-19 11:06:32 -08:00
RFLG1_UNK_2 = 0x2,
RFLG1_WOLF_ATTACK_REVERSE = 0x1,
RFLG1_UNK_C = 0xC,
2022-12-19 11:06:32 -08:00
};
2021-11-10 23:54:31 -08:00
enum {
/* 0x01 */ SMODE_SUMO_READY = 1,
/* 0x25 */ SMODE_SUMO_LOSE = 37,
2021-12-04 05:10:59 -08:00
/* 0x27 */ SMODE_WOLF_PUZZLE = 39,
2021-11-10 23:54:31 -08:00
/* 0x2A */ SMODE_GOAT_STOP = 42,
/* 0x2B */ SMODE_GORON_THROW,
/* 0x2C */ SMODE_CARGO_CARRY,
};
enum CutType {
2022-12-19 11:06:32 -08:00
/* 0x01 */ CUT_TYPE_NM_VERTICAL = 1,
/* 0x02 */ CUT_TYPE_NM_STAB,
/* 0x03 */ CUT_TYPE_NM_RIGHT,
/* 0x04 */ CUT_TYPE_NM_LEFT,
/* 0x05 */ CUT_TYPE_HEAD_JUMP, // Helm Splitter
/* 0x06 */ CUT_TYPE_FINISH_LEFT,
/* 0x07 */ CUT_TYPE_FINISH_VERTICAL,
/* 0x08 */ CUT_TYPE_TURN_RIGHT,
2024-05-24 19:47:15 -07:00
/* 0x09 */ CUT_TYPE_UNK_9,
/* 0x0A */ CUT_TYPE_JUMP,
2022-12-19 11:06:32 -08:00
/* 0x0B */ CUT_TYPE_DASH_UNK_B,
/* 0x0C */ CUT_TYPE_DASH_UNK_C,
/* 0x0D */ CUT_TYPE_DASH_UNK_D,
2024-05-24 19:47:15 -07:00
/* 0x0E */ CUT_TYPE_UNK_E,
/* 0x0F */ CUT_TYPE_UNK_F,
/* 0x10 */ CUT_TYPE_AIR,
2022-12-19 11:06:32 -08:00
/* 0x11 */ CUT_TYPE_DASH_UNK_11,
/* 0x12 */ CUT_TYPE_LARGE_JUMP_INIT,
/* 0x13 */ CUT_TYPE_LARGE_JUMP,
/* 0x14 */ CUT_TYPE_LARGE_JUMP_FINISH,
/* 0x15 */ CUT_TYPE_FINISH_RIGHT,
/* 0x16 */ CUT_TYPE_TURN_LEFT,
/* 0x17 */ CUT_TYPE_LARGE_TURN_LEFT,
/* 0x18 */ CUT_TYPE_LARGE_TURN_RIGHT,
2024-05-24 19:47:15 -07:00
/* 0x19 */ CUT_TYPE_UNK_19,
/* 0x1A */ CUT_TYPE_MORTAL_DRAW_A,
/* 0x1B */ CUT_TYPE_UNK_1B,
/* 0x1C */ CUT_TYPE_UNK_1C,
/* 0x1D */ CUT_TYPE_UNK_1D,
/* 0x1E */ CUT_TYPE_TWIRL, // Back Slice
2022-12-19 11:06:32 -08:00
/* 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,
2024-05-24 19:47:15 -07:00
/* 0x24 */ CUT_TYPE_UNK_24,
/* 0x25 */ CUT_TYPE_DASH_UNK_25,
/* 0x26 */ CUT_TYPE_DASH_UNK_26,
2022-12-19 11:06:32 -08:00
/* 0x27 */ CUT_TYPE_DOWN,
2024-05-24 19:47:15 -07:00
/* 0x28 */ CUT_TYPE_UNK_28,
/* 0x29 */ CUT_TYPE_GUARD_ATTACK,
2022-12-19 11:06:32 -08:00
/* 0x2A */ CUT_TYPE_HORSE_UNK_2A,
/* 0x2B */ CUT_TYPE_HORSE_TURN,
/* 0x2C */ CUT_TYPE_WOLF_B_LEFT,
/* 0x2D */ CUT_TYPE_WOLF_B_RIGHT,
/* 0x2E */ CUT_TYPE_WOLF_B_FRONT,
/* 0x2F */ CUT_TYPE_WOLF_B_BACK,
2024-05-24 19:47:15 -07:00
/* 0x30 */ CUT_TYPE_WOLF_UNK_30,
/* 0x31 */ CUT_TYPE_WOLF_JUMP_S,
/* 0x32 */ CUT_TYPE_WOLF_JUMP_S_FINISH,
2022-12-19 11:06:32 -08:00
/* 0x33 */ CUT_TYPE_WOLF_TURN_LEFT,
/* 0x34 */ CUT_TYPE_WOLF_TURN_RIGHT,
2024-05-24 19:47:15 -07:00
/* 0x35 */ CUT_TYPE_WOLF_UNK_35,
/* 0x36 */ CUT_TYPE_WOLF_LOCK,
/* 0x37 */ CUT_TYPE_WOLF_UNK_37,
/* 0x38 */ CUT_TYPE_DASH_UNK_38,
/* 0x39 */ CUT_TYPE_WOLF_JUMP,
2021-11-10 23:54:31 -08:00
};
2021-12-04 05:10:59 -08:00
static u32 setParamData(int, int, int, int);
2021-12-21 06:06:57 -08:00
static BOOL checkFishingRodItem(int);
2021-11-10 23:54:31 -08:00
static BOOL checkBombItem(int);
static BOOL checkBottleItem(int);
2021-12-21 06:06:57 -08:00
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);
2021-11-10 23:54:31 -08:00
static BOOL checkMasterSwordEquip();
2022-12-19 11:06:32 -08:00
static BOOL checkWoodShieldEquip();
2022-10-15 15:32:34 -06:00
static f32 getAttentionOffsetY();
static int checkNowWolfEyeUp();
2021-12-21 06:06:57 -08:00
static void forceRestartRoom(int, u32, int);
static void setFmChainPos(fopAc_ac_c*, cXyz*, int);
static void cancelFmChainGrab();
static void setLookPos(cXyz*);
static void setPlayerSe(u32);
static bool linkGrabSubjectNoDraw(fopAc_ac_c*);
2022-12-21 15:55:44 -07:00
static bool wolfGrabSubjectNoDraw(fopAc_ac_c*);
2021-12-21 06:06:57 -08:00
static bool checkRoomRestartStart();
2021-11-10 23:54:31 -08:00
static u32 checkCarryStartLightBallA();
static u32 checkCarryStartLightBallB();
f32 getSpinnerRideSpeed() const;
2022-10-04 17:29:53 -07:00
bool checkSpinnerReflectEffect();
2021-12-21 06:06:57 -08:00
static bool checkBoomerangCharge();
int checkBoomerangChargeTime();
2021-11-10 23:54:31 -08:00
static daBoomerang_c* getThrowBoomerangActor();
2021-12-21 06:06:57 -08:00
static void cancelBoomerangLockActor(fopAc_ac_c*);
static void setPlayerDamage(int, int);
static void setMidnaMotionNum(int);
static void setMidnaFaceNum(int);
2024-10-12 15:11:17 -07:00
static BOOL checkShieldGet();
static BOOL checkSwordGet();
2021-12-27 05:15:35 -08:00
void changeDemoParam2(s16);
2024-10-17 17:24:29 -04:00
cXyz getHeadTopPos() const { return mHeadTopPos; }
2024-03-19 04:31:53 -07:00
BOOL checkThrowDamage() const { return checkNoResetFlg1(FLG1_THROW_DAMAGE); }
BOOL checkGoronSideMove() const { return mSpecialMode == 0x2B; }
cXyz* getRightFootPosP() { return &mRightFootPos; }
cXyz* getLeftFootPosP() { return &mLeftFootPos; }
BOOL checkCopyRodThrowAfter() const { return checkNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); }
BOOL checkRide() const { return checkHorseRide() || checkBoarRide() || checkSpinnerRide() || checkCanoeRide() || checkBoardRide(); }
const cXyz& getRightHandPos() const { return mRightHandPos; }
2024-05-07 21:21:07 -07:00
const cXyz getLeftHandPos() const { return mLeftHandPos; }
2024-04-28 22:33:32 -04:00
const cXyz getItemPos() const { return mItemPos; }
2021-11-10 23:54:31 -08:00
virtual cXyz* getMidnaAtnPos() const;
virtual void setMidnaMsgNum(fopAc_ac_c*, u16);
2021-11-10 23:54:31 -08:00
virtual MtxP getModelMtx();
virtual MtxP getInvMtx();
virtual cXyz* getShadowTalkAtnPos();
virtual f32 getGroundY();
virtual MtxP getLeftItemMatrix();
virtual MtxP getRightItemMatrix();
virtual MtxP getLeftHandMatrix();
virtual MtxP getRightHandMatrix();
virtual MtxP getLinkBackBone1Matrix();
virtual MtxP getWolfMouthMatrix();
virtual MtxP getWolfBackbone2Matrix();
virtual MtxP getBottleMtx();
virtual BOOL checkPlayerGuard() const;
2024-01-29 07:39:51 -08:00
virtual u32 checkPlayerFly() const { return 0; }
2024-10-27 00:35:25 -04:00
virtual BOOL checkFrontRoll() const { return FALSE; }
virtual BOOL checkWolfDash() const { return FALSE; }
2021-11-10 23:54:31 -08:00
virtual BOOL checkAutoJump() const;
virtual bool checkSideStep() const;
virtual bool checkWolfTriggerJump() const;
virtual BOOL checkGuardBreakMode() const;
virtual bool checkLv3Slide() const;
virtual bool checkWolfHowlDemoMode() const;
virtual bool checkChainBlockPushPull();
virtual BOOL checkElecDamage() const;
virtual BOOL checkEmptyBottleSwing() const;
virtual BOOL checkBottleSwingMode() const;
virtual BOOL checkHawkWait() const;
virtual BOOL checkGoatThrow() const;
virtual BOOL checkGoatThrowAfter() const;
virtual BOOL checkWolfTagLockJump() const;
virtual BOOL checkWolfTagLockJumpLand() const;
2022-12-19 11:06:32 -08:00
virtual BOOL checkWolfRope();
2021-11-10 23:54:31 -08:00
virtual BOOL checkWolfRopeHang() const;
virtual BOOL checkRollJump() const;
virtual BOOL checkGoronRideWait() const;
virtual BOOL checkWolfChain() const;
virtual BOOL checkWolfWait() const;
virtual BOOL checkWolfJumpAttack() const;
virtual BOOL checkWolfRSit() const;
virtual bool checkBubbleFly() const;
virtual BOOL checkBottleDrinkEnd() const;
virtual BOOL checkWolfDig() const;
virtual BOOL checkCutCharge() const;
virtual BOOL checkCutTurnCharge() const;
virtual BOOL checkCutLargeJumpCharge() const;
virtual bool getBokoFlamePos(cXyz*);
2021-11-10 23:54:31 -08:00
virtual BOOL checkComboCutTurn() const;
virtual BOOL checkClimbMove() const;
virtual BOOL checkGrassWhistle() const;
virtual BOOL checkBoarRun() const;
virtual bool checkFmChainPut() const;
virtual bool checkHorseElecDamage() const;
virtual f32 getBaseAnimeFrameRate() const;
virtual f32 getBaseAnimeFrame() const;
virtual void setAnimeFrame(f32);
2024-03-17 18:53:08 -04:00
virtual BOOL checkWolfLock(fopAc_ac_c*) const;
virtual bool cancelWolfLock(fopAc_ac_c*);
2024-01-29 07:39:51 -08:00
virtual s32 getAtnActorID() const { return -1; }
2021-11-10 23:54:31 -08:00
virtual s32 getItemID() const;
2024-10-27 00:35:25 -04:00
virtual s32 getGrabActorID() const { return -1; }
2024-05-29 06:44:15 -07:00
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
virtual u32 checkPlayerNoDraw();
2021-11-10 23:54:31 -08:00
virtual bool checkRopeTag();
virtual void voiceStart(u32);
virtual void seStartOnlyReverb(u32);
virtual void seStartOnlyReverbLevel(u32);
virtual void setOutPower(f32, short, int);
virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*);
virtual void onMagneGrab(f32, f32);
2024-10-27 00:35:25 -04:00
virtual void onFrollCrashFlg(u8, int) {}
2021-11-10 23:54:31 -08:00
virtual MtxP getModelJointMtx(u16);
virtual MtxP getHeadMtx();
2024-10-12 15:11:17 -07:00
virtual bool setHookshotCarryOffset(fpc_ProcID, cXyz const*);
2024-01-29 07:39:51 -08:00
virtual BOOL checkCutJumpCancelTurn() const { return FALSE; }
2021-11-10 23:54:31 -08:00
virtual bool checkIronBallReturn() const;
virtual bool checkIronBallGroundStop() const;
virtual BOOL checkSingleBoarBattleSecondBowReady() const;
virtual bool checkPointSubWindowMode() const;
virtual void setClothesChange(int);
virtual void setPlayerPosAndAngle(cXyz const*, short, int);
2022-03-15 02:25:25 -07:00
virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*);
virtual void setPlayerPosAndAngle(f32 (*)[4]);
virtual bool setThrowDamage(short, f32, f32, int, int, int);
virtual bool checkSetNpcTks(cXyz*, int, int);
virtual int setRollJump(f32, f32, short);
virtual void playerStartCollisionSE(u32, u32);
virtual void changeTextureAnime(u16, u16, int);
2021-11-10 23:54:31 -08:00
virtual void cancelChangeTextureAnime();
virtual void cancelDungeonWarpReadyNeck();
virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*);
virtual void onSceneChangeAreaJump(u8, u8, fopAc_ac_c*);
virtual void onSceneChangeDead(u8, int);
2024-01-29 07:39:51 -08:00
virtual u32 checkHorseRide() const { return false; }
virtual u32 checkBoarRide() const { return 0; }
virtual u32 checkCanoeRide() const { return 0; }
virtual u32 checkBoardRide() const { return 0; }
virtual u32 checkSpinnerRide() const { return 0; }
2024-03-17 18:53:08 -04:00
virtual daSpinner_c* getSpinnerActor();
2021-11-10 23:54:31 -08:00
virtual BOOL checkHorseRideNotReady() const;
virtual bool checkArrowChargeEnd() const;
virtual f32 getSearchBallScale() const;
2024-10-27 00:35:25 -04:00
virtual int checkFastShotTime();
2021-11-10 23:54:31 -08:00
virtual bool checkNoEquipItem() const;
virtual bool checkFireMaterial() const;
virtual bool checkKandelaarSwing(int) const;
2021-11-10 23:54:31 -08:00
virtual s16 getBoardCutTurnOffsetAngleY() const;
virtual cXyz* getMagneHitPos();
virtual cXyz* getMagneBootsTopVec();
2022-12-19 11:06:32 -08:00
virtual cXyz* getKandelaarFlamePos();
virtual bool checkUseKandelaar(int);
virtual void setDkCaught(fopAc_ac_c*);
virtual void onPressedDamage(cXyz const&, short);
virtual bool checkPriActorOwn(fopAc_ac_c const*) const;
virtual bool onWolfEnemyBiteAll(fopAc_ac_c*, daPy_FLG2);
virtual bool checkWolfEnemyBiteAllOwn(fopAc_ac_c const*) const;
virtual void setWolfEnemyHangBiteAngle(short);
virtual void setKandelaarMtx(f32 (*)[4], int, int);
virtual bool getStickAngleFromPlayerShape(short*) const;
2021-11-10 23:54:31 -08:00
virtual bool checkSpinnerPathMove();
virtual bool checkSpinnerTriggerAttack();
virtual void onSpinnerPathForceRemove();
virtual int getIronBallBgHit() const;
2022-12-19 11:06:32 -08:00
virtual cXyz* getIronBallCenterPos();
2021-11-10 23:54:31 -08:00
virtual bool checkCanoeFishingGetLeft() const;
virtual bool checkCanoeFishingGetRight() const;
virtual u8 checkBeeChildDrink() const;
virtual void skipPortalObjWarp();
2023-11-17 20:02:04 -08:00
virtual BOOL checkTreasureRupeeReturn(int) const;
virtual void setSumouReady(fopAc_ac_c*);
virtual bool checkAcceptDungeonWarpAlink(int);
2021-11-10 23:54:31 -08:00
virtual s16 getSumouCounter() const;
virtual s16 checkSumouWithstand() const;
virtual void cancelGoronThrowEvent();
virtual void setSumouGraspCancelCount(int);
virtual void setSumouPushBackDirection(short);
2021-11-10 23:54:31 -08:00
virtual void setSumouLoseHeadUp();
virtual s16 getGiantPuzzleAimAngle() const;
virtual void setGoronSideMove(fopAc_ac_c*);
virtual void setCargoCarry(fopAc_ac_c*);
2021-11-10 23:54:31 -08:00
virtual bool getDpdFarFlg() const;
2022-06-01 03:49:32 -07:00
virtual cXyz* getHookshotTopPos();
2021-11-10 23:54:31 -08:00
virtual bool checkHookshotReturnMode() const;
virtual bool checkHookshotShootReturnMode() const;
virtual bool checkOctaIealHang() const;
virtual void cancelOctaIealHang();
virtual void cancelDragonHangBackJump();
virtual void setOctaIealWildHang();
virtual bool checkDragonHangRide() const;
virtual void changeDragonActor(fopAc_ac_c*);
2021-11-10 23:54:31 -08:00
virtual u8 getClothesChangeWaitTimer() const;
virtual u8 getShieldChangeWaitTimer() const;
virtual u8 getSwordChangeWaitTimer() const;
virtual BOOL checkMetamorphose() const;
virtual BOOL checkWolfDownAttackPullOut() const;
virtual BOOL checkBootsOrArmorHeavy() const;
virtual s32 getBottleOpenAppearItem() const;
virtual bool checkItemSwordEquip() const;
virtual f32 getSinkShapeOffset() const;
2021-11-10 23:54:31 -08:00
virtual BOOL checkSinkDead() const;
virtual BOOL checkHorseStart();
virtual Z2WolfHowlMgr* getWolfHowlMgrP();
virtual BOOL checkWolfHowlSuccessAnime() const;
2021-12-04 05:10:59 -08:00
virtual BOOL checkCopyRodTopUse();
2021-11-10 23:54:31 -08:00
virtual bool checkCopyRodEquip() const;
virtual BOOL checkCutJumpMode() const;
f32 getSpeedF() const { return speedF; }
bool getSumouCameraMode() const {
bool sumouCameraMode = false;
if (mSpecialMode != 0 && mSpecialMode < 0x26) {
sumouCameraMode = true;
}
return sumouCameraMode;
}
2021-12-27 06:17:37 -08:00
2024-03-19 04:31:53 -07:00
bool getSumouMode() const { return getSumouCameraMode(); }
void cancelOriginalDemo() {
2022-12-19 11:06:32 -08:00
mDemo.setSystemDemoType();
mDemo.setDemoMode(1);
}
2024-03-27 23:49:59 -07:00
u8 getCutCount() const { return mComboCutCount; }
2024-03-19 04:31:53 -07:00
bool checkStatusWindowDraw() { return checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); }
2021-12-04 05:10:59 -08:00
bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; }
2024-03-19 04:31:53 -07:00
bool getHeavyStateAndBoots() { return checkNoResetFlg0(FLG0_HVY_STATE); }
bool checkEnemyAttentionLock() const { return checkResetFlg0(RFLG0_ENEMY_ATTN_LOCK); }
bool checkCanoeSlider() const { return mSpecialMode == 0x2D; }
2022-12-19 11:06:32 -08:00
bool checkGoatStopGame() const { return mSpecialMode == 0x2A; }
u8 getCutType() const { return mCutType; }
u16 getSwordAtUpTime() const { return mSwordUpTimer; }
2024-03-17 18:53:08 -04:00
s16 getDamageWaitTimer() const { return mDamageTimer; }
2024-03-19 04:31:53 -07:00
bool checkWaterInMove() const { return checkNoResetFlg0(FLG0_UNDERWATER); }
bool checkSceneChangeAreaStart() const { return checkNoResetFlg2(FLG2_SCN_CHG_START); }
bool checkFrontRollCrash() const { return checkResetFlg0(RFLG0_FRONT_ROLL_CRASH); }
bool checkWolfAttackReverse() const { return checkResetFlg1(RFLG1_WOLF_ATTACK_REVERSE); }
2024-10-12 15:11:17 -07:00
bool checkFreezeDamage() const { return checkNoResetFlg1(FLG1_ICE_FREEZE); }
2024-03-19 04:31:53 -07:00
bool checkWolfTagLockJumpReady() const { return checkResetFlg0(RFLG0_UNK_20000); }
bool getGrabUpEnd() const { return checkResetFlg0(RFLG0_GRAB_UP_END); }
bool getGrabPutStart() const { return checkResetFlg0(RFLG0_GRAB_PUT_START); }
2024-03-30 13:04:34 -04:00
bool checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); }
2024-10-10 07:29:58 -07:00
BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); }
2024-10-30 15:41:08 -07:00
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
2024-10-27 00:35:25 -04:00
bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
2024-11-06 22:20:22 -05:00
bool checkMidnaAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_ATN_POS); }
bool checkMidnaHairAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_HAIR_ATN_POS); }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
2024-03-30 13:04:34 -04:00
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
2024-03-19 04:31:53 -07:00
void onForceAutoJump() { onEndResetFlg0(ERFLG0_FORCE_AUTO_JUMP); }
void onNotAutoJump() { onEndResetFlg0(ERFLG0_NOT_AUTO_JUMP); }
void onNotHang() { onEndResetFlg0(ERFLG0_NOT_HANG); }
void onShieldBackBone() { onEndResetFlg1(ERFLG1_GANON_FINISH); }
void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); }
2024-11-06 22:20:22 -05:00
void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); }
2024-03-19 04:31:53 -07:00
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
2024-10-28 04:00:15 -07:00
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
2024-10-30 15:41:08 -07:00
u32 checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }
2023-12-17 15:24:36 -08:00
2024-05-01 02:16:22 -04:00
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
2024-05-24 19:47:15 -07:00
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
2024-05-01 02:16:22 -04:00
void setCanoeSlider() { mSpecialMode = 0x2D; }
void offCanoeSlider() {
if (checkCanoeSlider()) {
mSpecialMode = 0;
}
}
2024-11-06 22:20:22 -05:00
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
void offCargoCarry() {
if (checkCargoCarry()) {
mSpecialMode = 0;
}
}
2024-05-05 12:34:52 -04:00
bool onWolfEnemyCatch(fopAc_ac_c* i_actor) { return onWolfEnemyBiteAll(i_actor, FLG2_UNK_8); }
2022-12-19 11:06:32 -08:00
void offGoronSideMove() {
2024-03-19 04:31:53 -07:00
if (checkGoronSideMove()) {
2022-12-19 11:06:32 -08:00
mSpecialMode = 0;
}
}
2021-11-10 23:54:31 -08:00
s16 getBodyAngleX() const { return mBodyAngle.x; }
s16 getBodyAngleY() const { return mBodyAngle.y; }
2023-02-05 07:09:29 -08:00
2024-06-25 07:34:59 -07:00
f32 getHeight() const { return field_0x598; }
2023-07-07 01:16:47 -07:00
BOOL checkMidnaWarp() const { return 0; }
2024-03-19 04:31:53 -07:00
u32 checkNoResetFlg0(daPy_FLG0 i_flag) const { return mNoResetFlg0 & i_flag; }
u32 checkNoResetFlg1(daPy_FLG1 i_flag) const { return mNoResetFlg1 & i_flag; }
u32 checkNoResetFlg2(daPy_FLG2 i_flag) const { return mNoResetFlg2 & i_flag; }
u32 checkNoResetFlg3(daPy_FLG3 i_flag) const { return mNoResetFlg3 & i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
void onNoResetFlg0(daPy_FLG0 i_flag) { mNoResetFlg0 |= i_flag; }
void onNoResetFlg1(daPy_FLG1 i_flag) { mNoResetFlg1 |= i_flag; }
void onNoResetFlg2(daPy_FLG2 i_flag) { mNoResetFlg2 |= i_flag; }
void onNoResetFlg3(daPy_FLG3 i_flag) { mNoResetFlg3 |= i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
void offNoResetFlg0(daPy_FLG0 i_flag) { mNoResetFlg0 &= ~i_flag; }
void offNoResetFlg1(daPy_FLG1 i_flag) { mNoResetFlg1 &= ~i_flag; }
void offNoResetFlg2(daPy_FLG2 i_flag) { mNoResetFlg2 &= ~i_flag; }
void offNoResetFlg3(daPy_FLG3 i_flag) { mNoResetFlg3 &= ~i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
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; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
void onEndResetFlg0(daPy_ERFLG0 i_flag) { mEndResetFlg0 |= i_flag; }
void onEndResetFlg2(daPy_ERFLG2 i_flag) { mEndResetFlg2 |= i_flag; }
void offEndResetFlg2(daPy_ERFLG2 i_flag) { mEndResetFlg2 &= ~i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
u32 checkResetFlg0(daPy_RFLG0 i_flag) const { return mResetFlg0 & i_flag; }
u32 checkResetFlg1(daPy_RFLG1 i_flag) const { return mResetFlg1 & i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
u32 checkEndResetFlg0(daPy_ERFLG0 i_flag) const { return mEndResetFlg0 & i_flag; }
u32 checkEndResetFlg1(daPy_ERFLG1 i_flag) const { return mEndResetFlg1 & i_flag; }
u32 checkEndResetFlg2(daPy_ERFLG2 i_flag) const { return mEndResetFlg2 & i_flag; }
2023-12-17 15:24:36 -08:00
2024-03-19 04:31:53 -07:00
void onEndResetFlg1(daPy_ERFLG1 i_flag) { mEndResetFlg1 |= i_flag; }
2023-12-17 15:24:36 -08:00
cXyz* getLeftHandPosP() { return &mLeftHandPos; }
cXyz* getRightHandPosP() { return &mRightHandPos; }
2024-10-28 04:00:15 -07:00
cXyz* getHeadTopPosP() { return &mHeadTopPos; }
2024-03-19 04:31:53 -07:00
u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); }
2024-10-12 15:11:17 -07:00
u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
2024-03-27 23:49:59 -07:00
BOOL checkFastSwordCut() const { return checkNoResetFlg0(FLG0_UNK_80000); }
2024-10-12 15:11:17 -07:00
u32 checkMidnaRide() const { return checkNoResetFlg0(FLG0_MIDNA_RIDE); }
BOOL checkWolfGrowl() const { return checkResetFlg0(RFLG0_WOLF_GROWL); }
BOOL checkWolfThreat() const { return checkWolfGrowl(); }
BOOL checkWolfBark() const { return checkResetFlg0(RFLG0_WOLF_BARK); }
2024-10-27 00:35:25 -04:00
u32 checkBoomerangAtnKeep() const { return checkNoResetFlg3(FLG3_BOOMERANG_ATN_KEEP); }
u32 checkCopyRodAtnKeep() const { return checkNoResetFlg3(FLG3_COPY_ROD_ATN_KEEP); }
2024-03-19 04:31:53 -07:00
void onPlayerNoDraw() { onNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
void offPlayerNoDraw() { offNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
void onPushPullKeep() { onNoResetFlg0(FLG0_PUSH_PULL_KEEP); }
void offPushPullKeep() { offNoResetFlg0(FLG0_PUSH_PULL_KEEP); }
2024-11-06 22:20:22 -05:00
void onMidnaRide() { onNoResetFlg0(FLG0_MIDNA_RIDE); }
void offMidnaRide() { offNoResetFlg0(FLG0_MIDNA_RIDE); }
void onMidnaRideShock() { onEndResetFlg1(ERFLG1_MIDNA_RIDE_SHOCK); }
2024-04-12 09:00:55 +03:00
void onPlayerShadowNoDraw() { onNoResetFlg2(FLG2_PLAYER_SHADOW); }
void offPlayerShadowNoDraw() { offNoResetFlg2(FLG2_PLAYER_SHADOW); }
2024-03-19 04:31:53 -07:00
void onLightSwordGetEffect() { onEndResetFlg2(ERFLG2_UNK_10); }
2024-04-21 05:27:47 -07:00
void onForceGameOver() { onNoResetFlg2(FLG2_FORCE_GAMEOVER); }
2024-05-05 09:34:37 -07:00
void onForceWolfChange() { onEndResetFlg0(ERFLG0_UNK_2); }
2024-07-07 11:31:29 -07:00
void onDoPutEmphasys() { onEndResetFlg1(ERFLG1_UNK_10000000); }
void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); }
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); }
2023-10-10 22:43:24 +02:00
2024-10-30 15:41:08 -07:00
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
2024-05-05 19:13:52 +03:00
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
2022-12-19 11:06:32 -08:00
2024-03-19 04:31:53 -07:00
void changeOriginalDemo() {
2023-03-07 18:03:46 -07:00
mDemo.setOriginalDemoType();
mDemo.setParam0(0);
}
2024-03-19 04:31:53 -07:00
void changeDemoMode(u32 i_demoMode, int i_param0, int i_param1, s16 i_param2) {
2023-03-07 18:03:46 -07:00
mDemo.setDemoMode(i_demoMode);
mDemo.setParam0(i_param0);
mDemo.setParam1(i_param1);
mDemo.setParam2(i_param2);
}
2024-04-14 07:01:24 -04:00
void i_changeDemoParam2(s16 i_param2) {
mDemo.setParam2(i_param2);
}
2024-03-19 04:31:53 -07:00
void changeDemoPos0(const cXyz* i_posP) { mDemo.setPos0(i_posP); }
2023-03-07 18:03:46 -07:00
2023-11-02 18:42:44 +01:00
void changeDemoMoveAngle(s16 i_angle) { mDemo.setMoveAngle(i_angle); }
2024-11-06 22:20:22 -05:00
void setItemPos(cXyz* i_itemPos) { mItemPos = *i_itemPos; }
2024-06-25 07:34:59 -07:00
static bool checkPeepEndSceneChange() { return getLastSceneMode() == 7; }
2024-10-10 07:29:58 -07:00
static int getLastSceneDamage() { return (dComIfGs_getLastSceneMode() >> 4) & 0x7F; }
static u8 getLastSceneSwordAtUpTime() { return (dComIfGs_getLastSceneMode() >> 11) & 0xFF; }
inline static u32 i_getLastSceneMode();
2021-12-21 06:06:57 -08:00
inline static u32 getLastSceneMode();
inline static bool checkWoodSwordEquip();
2022-12-19 11:06:32 -08:00
inline static bool checkLightMasterSwordEquip();
2021-11-10 23:54:31 -08:00
inline BOOL i_checkSwordGet();
inline bool i_checkShieldGet() const;
inline static BOOL checkNowWolf();
2024-10-31 20:36:11 -04:00
inline static u32 i_checkNowWolf() { return ((daPy_py_c*)dComIfGp_getLinkPlayer())->checkWolf(); }
2021-11-10 23:54:31 -08:00
inline bool checkZoraWearFlg() const;
inline bool checkMagicArmorWearFlg() const;
2024-03-19 04:31:53 -07:00
inline static BOOL i_checkFirstMidnaDemo() { return dComIfGs_isEventBit(0xc10); }
2023-08-11 05:04:50 +03:00
static int checkNowWolfPowerUp() { return checkNowWolfEyeUp(); }
2021-12-21 06:06:57 -08:00
static daMidna_c* getMidnaActor() { return m_midnaActor; }
2024-11-06 22:20:22 -05:00
static void setMidnaActor(fopAc_ac_c* actor) { m_midnaActor = (daMidna_c*)actor; }
2021-12-21 06:06:57 -08:00
2023-02-25 21:25:55 -07:00
// not sure how to define this properly
// static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);}
bool checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); }
2024-05-24 19:47:15 -07:00
bool checkWolfEnemyHangBiteOwn(fopAc_ac_c* i_actorP) const { return checkWolfEnemyBiteAllOwn(i_actorP); }
2024-03-19 04:31:53 -07:00
bool checkWolfEnemyLeftThrow() const { return checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); }
2023-02-25 21:25:55 -07:00
void onWolfLightDropGet() {
onEndResetFlg0(ERFLG0_UNK_20000000);
onNoResetFlg3(FLG3_UNK_200000);
}
2021-12-04 05:10:59 -08:00
static daMidna_c* m_midnaActor;
};
2021-03-28 22:49:05 +02:00
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);
2021-03-28 22:49:05 +02:00
#endif /* D_A_D_A_PLAYER_H */