tww/include/d/actor/d_a_player_main.h

2347 lines
78 KiB
C++

#ifndef D_A_PLAYER_MAIN
#define D_A_PLAYER_MAIN
#include "JAZelAudio/JAIZelBasic.h"
#include "d/d_attention.h"
#include "d/d_bg_s_acch.h"
#include "d/d_bg_s_lin_chk.h"
#include "d/d_com_inf_game.h"
#include "d/d_drawlist.h"
#include "d/d_bg_w.h"
#include "d/actor/d_a_player.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/res/res_link.h" // IWYU pragma: export
#include "d/res/res_lkanm.h"
class mDoExt_MtxCalcOldFrame;
class daPy_anmHeap_c {
public:
/* 0x0 */ u16 mIdx;
/* 0x2 */ u16 field_0x2;
/* 0x4 */ u16 field_0x4;
/* 0x6 */ u16 field_0x6;
/* 0x8 */ void* m_buffer;
/* 0xC */ JKRSolidHeap* mpAnimeHeap;
};
class daPy_sightPacket_c : public dDlst_base_c {
public:
daPy_sightPacket_c() {}
virtual void draw();
virtual ~daPy_sightPacket_c() {}
void setSight();
void setSightImage(ResTIMG*);
bool getDrawFlg() { return mDrawFlag; }
void onDrawFlg() { mDrawFlag = true; }
void offDrawFlg() { mDrawFlag = false; }
bool getLockFlg() { return mLockFlag; }
void onLockFlg() {
mLockFlag = true;
mFrame = 0;
}
void offLockFlg() { mLockFlag = false; }
void setPos(const cXyz* i_pos) { mPos = *i_pos; }
void setSightTex(void* sightTex) { mpSightTex = sightTex; }
void setLockTex(void* lockTex) { mpLockTex = lockTex; }
void setImage(ResTIMG* image) { mpImg = image; }
bool checkSEFrame() {
// This implementation might be incomplete, debug map says it's 0x18 bytes but this line is only 0x10 bytes.
return mFrame == 0;
}
void incFrame() {
mFrame++;
if(mFrame == 26) {
mFrame = 0;
}
}
private:
/* 0x04 */ bool mDrawFlag;
/* 0x05 */ bool mLockFlag;
/* 0x06 */ u8 mFrame;
/* 0x07 */ u8 mLockAlpha;
/* 0x08 */ cXyz mPos;
/* 0x14 */ Mtx mMtx;
/* 0x44 */ ResTIMG* mpImg;
/* 0x48 */ void* mpLockTex;
/* 0x4C */ void* mpSightTex;
};
class daPy_actorKeep_c {
public:
daPy_actorKeep_c() {}
void setActor();
void setData(fopAc_ac_c*);
void clearData();
fpc_ProcID getID() const { return mID; }
fopAc_ac_c* getActor() { return mActor; }
private:
/* 0x0 */ fpc_ProcID mID;
/* 0x4 */ fopAc_ac_c* mActor;
}; // Size: 0x8
class daPy_footEffect_c {
public:
~daPy_footEffect_c() {}
daPy_footEffect_c() {}
dPa_smokeEcallBack* getSmokeCallBack() { return &mSmokeCb; }
dPa_followEcallBack* getOtherCallBack() { return &mFollowCb; }
void setID(s32 id) { mId = id; }
s32 getID() const { return mId; }
void setAngle(csXyz* angle) { mAngle = *angle; }
csXyz& getAngle() { return mAngle; }
void setPos(const cXyz* pos) { mPos = *pos; }
cXyz& getPos() { return mPos; }
private:
/* 0x00 */ dPa_smokeEcallBack mSmokeCb;
/* 0x20 */ dPa_followEcallBack mFollowCb;
/* 0x34 */ cXyz mPos;
/* 0x40 */ csXyz mAngle;
/* 0x48 */ s32 mId;
};
class daPy_fanSwingEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
~daPy_fanSwingEcallBack_c() {}
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) {
emitter->becomeImmortalEmitter();
mpEmitter = emitter;
mAlphaOutFlg = FALSE;
}
void onAlphaOutFlg() { mAlphaOutFlg = TRUE; }
JPABaseEmitter* getEmitter() { return mpEmitter; }
void deleteCallBack() {
if(mpEmitter) {
mpEmitter->quitImmortalEmitter();
mpEmitter->setEmitterCallBackPtr(NULL);
mpEmitter = NULL;
}
}
protected:
/* 0x4 */ BOOL mAlphaOutFlg;
/* 0x8 */ JPABaseEmitter* mpEmitter;
}; // Size: 0xC
class daPy_waterDropPcallBack_c : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
public:
void execute(JPABaseEmitter*, JPABaseParticle*);
~daPy_waterDropPcallBack_c() {}
void offWaterMark() { mbWaterMark = FALSE; }
void onWaterMark() { mbWaterMark = TRUE; }
protected:
/* 0x4 */ BOOL mbWaterMark;
/* 0x8 */ dBgS_ObjGndChk mGndChk;
};
class daPy_swimTailEcallBack_c : public dPa_levelEcallBack {
public:
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void getMaxWaterY(JGeometry::TVec3<f32>*);
void remove();
void execute(JPABaseEmitter*);
void draw(JPABaseEmitter*);
~daPy_swimTailEcallBack_c() {}
daPy_swimTailEcallBack_c() {}
void onEnd() {
mbEnd = true;
field_0x20 = NULL;
}
bool getEnd() { return mbEnd; }
void onRightFlg() { field_0x05 = true; }
JPABaseEmitter* getEmitter() { return mpEmitter; }
cXyz& getPos() { return mPos; }
void setPos(cXyz& pos) { mPos = pos; }
void setSpeedRate(f32 rate) { mSpeedRate = rate; }
void setWaterY(f32 y) { mWaterY = y; }
void setWaterFlatY(f32 y) { mWaterFlatY = y; }
protected:
/* 0x04 */ bool mbEnd;
/* 0x05 */ bool field_0x05;
/* 0x08 */ f32 mSpeedRate;
/* 0x0C */ f32 mWaterY;
/* 0x10 */ f32 mWaterFlatY;
/* 0x14 */ cXyz mPos;
/* 0x20 */ const csXyz* field_0x20;
/* 0x24 */ JPABaseEmitter* mpEmitter;
}; // Size: 0x28
STATIC_ASSERT(sizeof(daPy_swimTailEcallBack_c) == 0x28);
class daPy_followEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void end();
~daPy_followEcallBack_c() {}
JPABaseEmitter* getEmitter() { return mpEmitter; }
cXyz& getPos() { return mPos; }
void setPos(const cXyz* pos) { mPos = *pos; }
void setAngle(s16 x, s16 y, s16 z) { mAngle.set(x, y, z); }
protected:
/* 0x04 */ JPABaseEmitter* mpEmitter;
/* 0x08 */ cXyz mPos;
/* 0x14 */ csXyz mAngle;
}; // Size: 0x1C
class daPy_waterDropEcallBack_c : public daPy_followEcallBack_c {
public:
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void end();
daPy_waterDropEcallBack_c() {}
~daPy_waterDropEcallBack_c() {}
BOOL checkReady() { return field_0x1C; }
void onReady() { field_0x1C = TRUE; }
void offReady() { field_0x1C = FALSE; }
static daPy_waterDropPcallBack_c* getPcallBack() { return &m_pcallback; }
protected:
static daPy_waterDropPcallBack_c m_pcallback;
/* 0x1C */ BOOL field_0x1C;
}; // Size: 0x20
class daPy_dmEcallBack_c : public daPy_mtxFollowEcallBack_c {
public:
void execute(JPABaseEmitter*);
~daPy_dmEcallBack_c() {}
daPy_dmEcallBack_c() {}
static s16 getTimer() { return m_timer; }
static void setTimer(s16 timer) { m_timer = timer; }
static void decTimer() { m_timer--; }
static bool checkFlame() { return m_type == 0; }
static bool checkCurse() { return m_type == 1; }
static bool checkElec() { return m_type == 2; }
static void setType(u16 type) { m_type = type; }
static void setFlame(s16 timer) {
setType(0);
setTimer(timer);
}
static void setCurse(s16 timer) {
setType(1);
setTimer(timer);
}
static void setElec(s16 timer) {
setType(2);
setTimer(timer);
}
private:
static s16 m_timer;
static u16 m_type;
}; // Size: 0x0C
class daPy_mtxPosFollowEcallBack_c : public daPy_mtxFollowEcallBack_c {
public:
void makeEmitterColor(u16, MtxP, const cXyz*, const csXyz*, const GXColor*, const GXColor*);
void execute(JPABaseEmitter*);
daPy_mtxPosFollowEcallBack_c() {}
~daPy_mtxPosFollowEcallBack_c() {}
protected:
/* 0xC */ const csXyz* mpAngle;
}; // Size: 0x10
class daPy_matAnm_c : public J3DMaterialAnm {
public:
daPy_matAnm_c();
virtual ~daPy_matAnm_c() {}
virtual void calc(J3DMaterial*) const;
static u8 m_maba_timer;
static u8 m_maba_flg;
static u8 m_eye_move_flg;
static u8 m_morf_frame;
static void onMabaFlg() { m_maba_flg = 1; }
static void offMabaFlg() {
m_maba_flg = 0;
m_maba_timer = 1;
}
static void decMabaTimer() { cLib_calcTimer(&m_maba_timer); }
static void decMorfFrame() { cLib_calcTimer(&m_morf_frame); }
static u8 getEyeMoveFlg() { return m_eye_move_flg; }
static u8 getMabaFlg() { return m_maba_flg; }
static u8 getMabaTimer() { return m_maba_timer; }
static u8 getMorfFrame() { return m_morf_frame; }
static void offEyeMoveFlg() { m_eye_move_flg = 0; }
static void onEyeMoveFlg() { m_eye_move_flg = 1; }
static void setMabaTimer(u8 timer) { m_maba_timer = timer; }
static void setMorfFrame(u8 frame) { m_morf_frame = frame; }
// TODO:
void getNowOffsetXP() {}
void getNowOffsetYP() {}
void setNowOffsetX(f32 x) { mEyePos.x = x; }
void setNowOffsetY(f32 y) { mEyePos.y = y; }
public:
/* 0x6C */ cXy mEyePosOld;
/* 0x74 */ cXy mEyePos;
}; // Size: 0x7C
class daPy_swBlur_c : public J3DPacket {
public:
enum BlurColorType {
NORMAL_SLASH_BLUR,
ELIXIR_SOUP_SLASH_BLUR,
PARRYING_SLASH_BLUR,
};
void initSwBlur(MtxP, int, f32, int);
void copySwBlur(MtxP, int);
void draw();
~daPy_swBlur_c() {}
public:
/* 0x010 */ ResTIMG* mpTex;
/* 0x014 */ int field_0x014;
/* 0x018 */ int field_0x018;
/* 0x01C */ int mBlurColorType;
/* 0x020 */ f32 mBlurTopRate;
/* 0x024 */ Vec* mpPosBuffer;
/* 0x028 */ cXyz field_0x028;
/* 0x034 */ cXyz field_0x034[60];
/* 0x304 */ cXyz field_0x304[60];
};
class daPy_footData_c {
public:
~daPy_footData_c();
daPy_footData_c();
public:
/* 0x000 */ u8 field_0x000;
/* 0x001 */ u8 field_0x001;
/* 0x002 */ s16 field_0x002;
/* 0x004 */ s16 field_0x004;
/* 0x006 */ s16 field_0x006;
/* 0x008 */ s16 field_0x008;
/* 0x00A */ s16 field_0x00A;
/* 0x00C */ cXyz field_0x00C;
/* 0x018 */ cXyz field_0x018;
/* 0x024 */ cXyz field_0x024;
/* 0x030 */ f32 field_0x030;
/* 0x034 */ dBgS_LinkGndChk field_0x034;
/* 0x088 */ Mtx field_0x088[3];
}; // Size: 0x118
class daPy_aura_c {
public:
void setModel(J3DModel* model) { mpYaura00Model = model; }
J3DModel* getModel() { return mpYaura00Model; }
void setFrame(f32 frame) { mFrame = frame; }
f32 getFrame() { return mFrame; }
private:
/* 0x00 */ J3DModel* mpYaura00Model;
/* 0x04 */ f32 mFrame;
}; // Size: 0x08
class daPy_anmIndex_c {
public:
/* 0x00 */ u16 mUnderBckIdx;
/* 0x02 */ u16 mUpperBckIdx;
};
class daPy_HIO_c {
public:
daPy_HIO_c();
public:
daPy_HIO_basic_c0 mBasic;
daPy_HIO_move_c0 mMove;
daPy_HIO_atnMove_c0 mAtnMove;
daPy_HIO_atnMoveB_c0 mAtnMoveB;
daPy_HIO_turn_c0 mTurn;
daPy_HIO_cut_c0 mCut;
daPy_HIO_roll_c0 mRoll;
daPy_HIO_backJump_c0 mBackJump;
daPy_HIO_slip_c0 mSlip;
daPy_HIO_slide_c0 mSlide;
daPy_HIO_autoJump_c0 mAutoJump;
daPy_HIO_fall_c0 mFall;
daPy_HIO_swim_c0 mSwim;
daPy_HIO_battle_c0 mBattle;
daPy_HIO_wall_c0 mWall;
daPy_HIO_smallJump_c0 mSmallJump;
daPy_HIO_wallCatch_c0 mWallCatch;
daPy_HIO_hang_c0 mHang;
daPy_HIO_guard_c0 mGuard;
daPy_HIO_nockback_c0 mNockback;
daPy_HIO_iceSlip_c0 mIceSlip;
daPy_HIO_dam_c0 mDam;
daPy_HIO_slowJump_c0 mSlowJump;
daPy_HIO_sideStep_c0 mSideStep;
daPy_HIO_grab_c0 mGrab;
daPy_HIO_ladder_c0 mLadder;
daPy_HIO_crouch_c0 mCrouch;
daPy_HIO_pushpull_c0 mPushpull;
daPy_HIO_item_c0 mItem;
daPy_HIO_ship_c0 mShip;
daPy_HIO_restart_c0 mRestart;
daPy_HIO_holdup_c0 mHoldup;
daPy_HIO_vomit_c0 mVomit;
daPy_HIO_warp_c0 mWarp;
u8 pad[0x3F - 0x22];
}; // Size: 0x3F
class daPy_lk_c : public daPy_py_c {
public:
enum daPy_PROC {
daPyProc_SCOPE_e = 0x00,
daPyProc_SUBJECTIVITY_e = 0x01,
daPyProc_CALL_e = 0x02,
daPyProc_CONTROLL_WAIT_e = 0x03,
daPyProc_WAIT_e = 0x04,
daPyProc_FREE_WAIT_e = 0x05,
daPyProc_MOVE_e = 0x06,
daPyProc_ATN_MOVE_e = 0x07,
daPyProc_ATN_ACTOR_WAIT_e = 0x08,
daPyProc_ATN_ACTOR_MOVE_e = 0x09,
daPyProc_SIDE_STEP_e = 0x0A,
daPyProc_SIDE_STEP_LAND_e = 0x0B,
daPyProc_CROUCH_DEFENSE_e = 0x0C,
daPyProc_CROUCH_DEFENSE_SLIP_e = 0x0D,
daPyProc_CROUCH_e = 0x0E,
daPyProc_CRAWL_START_e = 0x0F,
daPyProc_CRAWL_MOVE_e = 0x10,
daPyProc_CRAWL_AUTO_MOVE_e = 0x11,
daPyProc_CRAWL_END_e = 0x12,
daPyProc_WHIDE_READY_e = 0x13,
daPyProc_WHIDE_WAIT_e = 0x14,
daPyProc_WHIDE_MOVE_e = 0x15,
daPyProc_WHIDE_PEEP_e = 0x16,
daPyProc_WAIT_TURN_e = 0x17,
daPyProc_MOVE_TURN_e = 0x18,
daPyProc_SLIP_e = 0x19,
daPyProc_SLIDE_FRONT_e = 0x1A,
daPyProc_SLIDE_BACK_e = 0x1B,
daPyProc_SLIDE_FRONT_LAND_e = 0x1C,
daPyProc_SLIDE_BACK_LAND_e = 0x1D,
daPyProc_FRONT_ROLL_e = 0x1E,
daPyProc_FRONT_ROLL_CRASH_e = 0x1F,
daPyProc_NOCK_BACK_END_e = 0x20,
daPyProc_SIDE_ROLL_e = 0x21,
daPyProc_BACK_JUMP_e = 0x22,
daPyProc_BACK_JUMP_LAND_e = 0x23,
daPyProc_AUTO_JUMP_e = 0x24,
daPyProc_LAND_e = 0x25,
daPyProc_LAND_DAMAGE_e = 0x26,
daPyProc_FALL_e = 0x27,
daPyProc_SLOW_FALL_e = 0x28,
daPyProc_SMALL_JUMP_e = 0x29,
daPyProc_VERTICAL_JUMP_e = 0x2A,
daPyProc_HANG_START_e = 0x2B,
daPyProc_HANG_FALL_START_e = 0x2C,
daPyProc_HANG_UP_e = 0x2D,
daPyProc_HANG_WAIT_e = 0x2E,
daPyProc_HANG_MOVE_e = 0x2F,
daPyProc_HANG_CLIMB_e = 0x30,
daPyProc_HANG_WALL_CATCH_e = 0x31,
daPyProc_PUSH_PULL_WAIT_e = 0x32,
daPyProc_PUSH_MOVE_e = 0x33,
daPyProc_PULL_MOVE_e = 0x34,
daPyProc_SWIM_UP_e = 0x35,
daPyProc_SWIM_WAIT_e = 0x36,
daPyProc_SWIM_MOVE_e = 0x37,
daPyProc_LADDER_UP_START_e = 0x38,
daPyProc_LADDER_UP_END_e = 0x39,
daPyProc_LADDER_DOWN_START_e = 0x3A,
daPyProc_LADDER_DOWN_END_e = 0x3B,
daPyProc_LADDER_MOVE_e = 0x3C,
daPyProc_CLIMB_UP_START_e = 0x3D,
daPyProc_CLIMB_DOWN_START_e = 0x3E,
daPyProc_CLIMB_MOVE_UP_DOWN_e = 0x3F,
daPyProc_CLIMB_MOVE_SIDE_e = 0x40,
daPyProc_CUT_A_e = 0x41,
daPyProc_CUT_F_e = 0x42,
daPyProc_CUT_R_e = 0x43,
daPyProc_CUT_L_e = 0x44,
daPyProc_CUT_EA_e = 0x45,
daPyProc_CUT_EB_e = 0x46,
daPyProc_CUT_EX_A_e = 0x47,
daPyProc_CUT_EX_B_e = 0x48,
daPyProc_CUT_EX_MJ_e = 0x49,
daPyProc_CUT_KESA_e = 0x4A,
daPyProc_WEAPON_NORMAL_SWING_e = 0x4B,
daPyProc_WEAPON_SIDE_SWING_e = 0x4C,
daPyProc_WEAPON_FRONT_SWING_READY_e = 0x4D,
daPyProc_WEAPON_FRONT_SWING_e = 0x4E,
daPyProc_WEAPON_FRONT_SWING_END_e = 0x4F,
daPyProc_WEAPON_THROW_e = 0x50,
daPyProc_HAMMER_SIDE_SWING_e = 0x51,
daPyProc_HAMMER_FRONT_SWING_READY_e = 0x52,
daPyProc_HAMMER_FRONT_SWING_e = 0x53,
daPyProc_HAMMER_FRONT_SWING_END_e = 0x54,
daPyProc_CUT_TURN_e = 0x55,
daPyProc_CUT_ROLL_e = 0x56,
daPyProc_CUT_ROLL_END_e = 0x57,
daPyProc_CUT_TURN_CHARGE_e = 0x58,
daPyProc_CUT_TURN_MOVE_e = 0x59,
daPyProc_CUT_REVERSE_e = 0x5A,
daPyProc_JUMP_CUT_e = 0x5B,
daPyProc_JUMP_CUT_LAND_e = 0x5C,
daPyProc_BT_JUMP_e = 0x5D,
daPyProc_BT_JUMP_CUT_e = 0x5E,
daPyProc_BT_SLIDE_e = 0x5F,
daPyProc_BT_ROLL_e = 0x60,
daPyProc_BT_ROLL_CUT_e = 0x61,
daPyProc_BT_VERTICAL_JUMP_e = 0x62,
daPyProc_BT_VERTICAL_JUMP_CUT_e = 0x63,
daPyProc_BT_VERTICAL_JUMP_LAND_e = 0x64,
daPyProc_GUARD_CRASH_e = 0x65,
daPyProc_DAMAGE_e = 0x66,
daPyProc_POLY_DAMAGE_e = 0x67,
daPyProc_LARGE_DAMAGE_e = 0x68,
daPyProc_LARGE_DAMAGE_UP_e = 0x69,
daPyProc_LARGE_DAMAGE_WALL_e = 0x6A,
daPyProc_LAVA_DAMAGE_e = 0x6B,
daPyProc_ELEC_DAMAGE_e = 0x6C,
daPyProc_GUARD_SLIP_e = 0x6D,
daPyProc_GRAB_READY_e = 0x6E,
daPyProc_GRAB_UP_e = 0x6F,
daPyProc_GRAB_MISS_e = 0x70,
daPyProc_GRAB_THROW_e = 0x71,
daPyProc_GRAB_PUT_e = 0x72,
daPyProc_GRAB_WAIT_e = 0x73,
daPyProc_GRAB_HEAVY_WAIT_e = 0x74,
daPyProc_GRAB_REBOUND_e = 0x75,
daPyProc_ROPE_SUBJECT_e = 0x76,
daPyProc_ROPE_READY_e = 0x77,
daPyProc_ROPE_SWING_e = 0x78,
daPyProc_ROPE_HANG_WAIT_e = 0x79,
daPyProc_ROPE_UP_e = 0x7A,
daPyProc_ROPE_DOWN_e = 0x7B,
daPyProc_ROPE_SWING_START_e = 0x7C,
daPyProc_ROPE_MOVE_e = 0x7D,
daPyProc_ROPE_THROW_CATCH_e = 0x7E,
daPyProc_ROPE_UP_HANG_e = 0x7F,
daPyProc_BOOMERANG_SUBJECT_e = 0x80,
daPyProc_BOOMERANG_MOVE_e = 0x81,
daPyProc_BOOMERANG_CATCH_e = 0x82,
daPyProc_HOOKSHOT_SUBJECT_e = 0x83,
daPyProc_HOOKSHOT_MOVE_e = 0x84,
daPyProc_HOOKSHOT_FLY_e = 0x85,
daPyProc_SHIP_READY_e = 0x86,
daPyProc_SHIP_JUMP_RIDE_e = 0x87,
daPyProc_SHIP_STEER_e = 0x88,
daPyProc_SHIP_PADDLE_e = 0x89,
daPyProc_SHIP_SCOPE_e = 0x8A,
daPyProc_SHIP_BOOMERANG_e = 0x8B,
daPyProc_SHIP_HOOKSHOT_e = 0x8C,
daPyProc_SHIP_BOW_e = 0x8D,
daPyProc_SHIP_CANNON_e = 0x8E,
daPyProc_SHIP_CRANE_e = 0x8F,
daPyProc_SHIP_GET_OFF_e = 0x90,
daPyProc_SHIP_RESTART_e = 0x91,
daPyProc_FAN_SWING_e = 0x92,
daPyProc_FAN_GLIDE_e = 0x93,
daPyProc_BOW_SUBJECT_e = 0x94,
daPyProc_BOW_MOVE_e = 0x95,
daPyProc_VOMIT_READY_e = 0x96,
daPyProc_VOMIT_WAIT_e = 0x97,
daPyProc_VOMIT_JUMP_e = 0x98,
daPyProc_VOMIT_LAND_e = 0x99,
daPyProc_TACT_WAIT_e = 0x9A,
daPyProc_TACT_PLAY_e = 0x9B,
daPyProc_TACT_PLAY_END_e = 0x9C,
daPyProc_TACT_PLAY_ORIGINAL_e = 0x9D,
daPyProc_ICE_SLIP_FALL_e = 0x9E,
daPyProc_ICE_SLIP_FALL_UP_e = 0x9F,
daPyProc_ICE_SLIP_ALMOST_FALL_e = 0xA0,
daPyProc_BOOTS_EQUIP_e = 0xA1,
daPyProc_NOT_USE_e = 0xA2,
daPyProc_BOTTLE_DRINK_e = 0xA3,
daPyProc_BOTTLE_OPEN_e = 0xA4,
daPyProc_BOTTLE_SWING_e = 0xA5,
daPyProc_BOTTLE_GET_e = 0xA6,
daPyProc_FOOD_THROW_e = 0xA7,
daPyProc_FOOD_SET_e = 0xA8,
daPyProc_DEMO_TOOL_e = 0xA9,
daPyProc_DEMO_TALK_e = 0xAA,
daPyProc_DEMO_DAMAGE_e = 0xAB,
daPyProc_DEMO_HOLDUP_e = 0xAC,
daPyProc_DEMO_OPEN_TREASURE_e = 0xAD,
daPyProc_DEMO_GET_ITEM_e = 0xAE,
daPyProc_DEMO_UNEQUIP_e = 0xAF,
daPyProc_DEMO_LAVA_DAMAGE_e = 0xB0,
daPyProc_DEMO_FREEZE_DAMAGE_e = 0xB1,
daPyProc_DEMO_DEAD_e = 0xB2,
daPyProc_DEMO_LOOK_AROUND_e = 0xB3,
daPyProc_DEMO_SALUTE_e = 0xB4,
daPyProc_DEMO_LOOK_AROUND2_e = 0xB5,
daPyProc_DEMO_TALISMAN_PICKUP_e = 0xB6,
daPyProc_DEMO_TALISMAN_WAIT_e = 0xB7,
daPyProc_DEMO_SURPRISED_e = 0xB8,
daPyProc_DEMO_TURN_BACK_e = 0xB9,
daPyProc_DEMO_LOOK_UP_e = 0xBA,
daPyProc_DEMO_QUAKE_WAIT_e = 0xBB,
daPyProc_DEMO_DANCE_e = 0xBC,
daPyProc_DEMO_CAUGHT_e = 0xBD,
daPyProc_DEMO_LOOK_WAIT_e = 0xBE,
daPyProc_DEMO_PUSH_PULL_WAIT_e = 0xBF,
daPyProc_DEMO_PUSH_MOVE_e = 0xC0,
daPyProc_DEMO_DOOR_OPEN_e = 0xC1,
daPyProc_DEMO_NOD_e = 0xC2,
daPyProc_DEMO_PRESENT_e = 0xC3,
daPyProc_DEMO_WIND_CHANGE_e = 0xC4,
daPyProc_DEMO_STAND_ITEM_PUT_e = 0xC5,
daPyProc_DEMO_VORCANO_FAIL_e = 0xC6,
daPyProc_DEMO_SLIGHT_SURPRISED_e = 0xC7,
daPyProc_DEMO_SMILE_e = 0xC8,
daPyProc_DEMO_BOSS_WARP_e = 0xC9,
daPyProc_DEMO_AGB_USE_e = 0xCA,
daPyProc_DEMO_LOOK_TURN_e = 0xCB,
daPyProc_DEMO_LETTER_OPEN_e = 0xCC,
daPyProc_DEMO_LETTER_READ_e = 0xCD,
daPyProc_DEMO_REDEAD_STOP_e = 0xCE,
daPyProc_DEMO_REDEAD_CATCH_e = 0xCF,
daPyProc_DEMO_GET_DANCE_e = 0xD0,
daPyProc_DEMO_BOTTLE_OPEN_FAIRY_e = 0xD1,
daPyProc_DEMO_WARP_SHORT_e = 0xD2,
daPyProc_DEMO_OPEN_SALVAGE_TREASURE_e = 0xD3,
daPyProc_DEMO_SURPRISED_WAIT_e = 0xD4,
daPyProc_DEMO_POWER_UP_WAIT_e = 0xD5,
daPyProc_DEMO_POWER_UP_e = 0xD6,
daPyProc_DEMO_SHIP_SIT_e = 0xD7,
daPyProc_DEMO_LAST_COMBO_e = 0xD8,
daPyProc_DEMO_HAND_UP_e = 0xD9,
daPyProc_DEMO_ICE_SLIP_e = 0xDA,
};
enum daPy_ANM {
ANM_WAITS = 0x00,
ANM_WALK = 0x01,
ANM_DASH = 0x02,
ANM_DASHKAZE = 0x03,
ANM_WALKHBOOTS = 0x04,
ANM_WALKHBOOTSKAZE = 0x05,
ANM_WALKSLOPE = 0x06,
ANM_ATNLS = 0x07,
ANM_ATNRS = 0x08,
ANM_ATNWLS = 0x09,
ANM_ATNWRS = 0x0A,
ANM_ATNDLS = 0x0B,
ANM_ATNDRS = 0x0C,
ANM_JMPEDS = 0x0D,
ANM_ATNWB = 0x0E,
ANM_ATNDB = 0x0F,
ANM_ATNJL = 0x10,
ANM_ATNJR = 0x11,
ANM_ATNJLLAND = 0x12,
ANM_ATNJRLAND = 0x13,
ANM_ROT = 0x14,
ANM_CUTREL = 0x15,
ANM_DIFENCE = 0x16,
ANM_DIFENCEA = 0x17,
ANM_CUTTURNP = 0x18,
ANM_CUTTURNPWFB = 0x19,
ANM_CUTTURNPWLR = 0x1A,
ANM_TALKA = 0x1B,
ANM_WAITB = 0x1C,
ANM_WAITATOB = 0x1D,
ANM_CUTA = 0x1E,
ANM_CUTF = 0x1F,
ANM_CUTR = 0x20,
ANM_CUTL = 0x21,
ANM_CUTEA = 0x22,
ANM_CUTEB = 0x23,
ANM_EXCA1 = 0x24,
ANM_EXCB1 = 0x25,
ANM_CUTBOKO = 0x26,
ANM_CUTRER = 0x27,
ANM_CUTTURN = 0x28,
ANM_CUTTURNC = 0x29,
ANM_CUTTURNB = 0x2A,
ANM_JATTACK = 0x2B,
ANM_JATTCKP = 0x2C,
ANM_JATTCKCUT = 0x2D,
ANM_JATTCKCUTHAM = 0x2E,
ANM_JATTACKLAND = 0x2F,
ANM_LANDDAMA = 0x30,
ANM_LANDDAMAST = 0x31,
ANM_ROLLF = 0x32,
ANM_ROLLFMIS = 0x33,
ANM_SLIP = 0x34,
ANM_SLIDEF = 0x35,
ANM_SLIDEFLAND = 0x36,
ANM_SLIDEB = 0x37,
ANM_SLIDEBLAND = 0x38,
ANM_ATNGAL = 0x39,
ANM_ATNGAR = 0x3A,
ANM_ATNGAHAM = 0x3B,
ANM_JMPST = 0x3C,
ANM_ROLLB = 0x3D,
ANM_ROLLBLAND = 0x3E,
ANM_CROUCH = 0x3F,
ANM_LIE = 0x40,
ANM_LIEFORWARD = 0x41,
ANM_WALL = 0x42,
ANM_WALLDW = 0x43,
ANM_WALLWL = 0x44,
ANM_WALLWR = 0x45,
ANM_WALLWLDW = 0x46,
ANM_WALLWRDW = 0x47,
ANM_WALLPL = 0x48,
ANM_WALLPR = 0x49,
ANM_WALLPLDW = 0x4A,
ANM_WALLPRDW = 0x4B,
ANM_VJMP = 0x4C,
ANM_VJMPCHA = 0x4D,
ANM_VJMPCHB = 0x4E,
ANM_VJMPCL = 0x4F,
ANM_HANGING = 0x50,
ANM_HANGUP = 0x51,
ANM_HANGMOVEL = 0x52,
ANM_HANGMOVER = 0x53,
ANM_DAM = 0x54,
ANM_DAML = 0x55,
ANM_DAMR = 0x56,
ANM_DAMF = 0x57,
ANM_DAMB = 0x58,
ANM_DAMFL = 0x59,
ANM_DAMFR = 0x5A,
ANM_DAMFF = 0x5B,
ANM_DAMFB = 0x5C,
ANM_DAMFLUP = 0x5D,
ANM_DAMFRUP = 0x5E,
ANM_DAMFFUP = 0x5F,
ANM_DAMFBUP = 0x60,
ANM_LAVADAM = 0x61,
ANM_DIELONG = 0x62,
ANM_SHIPDIE = 0x63,
ANM_SWIMDIE = 0x64,
ANM_GRABP = 0x65,
ANM_GRABUP = 0x66,
ANM_GRABNG = 0x67,
ANM_GRABWAIT = 0x68,
ANM_GRABWAITB = 0x69,
ANM_GRABTHROW = 0x6A,
ANM_GRABRE = 0x6B,
ANM_MJMP = 0x6C,
ANM_MJMPC = 0x6D,
ANM_MROLLL = 0x6E,
ANM_MROLLR = 0x6F,
ANM_MROLLLC = 0x70,
ANM_MROLLRC = 0x71,
ANM_MSTEPOVER = 0x72,
ANM_MSTEPOVERA = 0x73,
ANM_MSTEPOVERLAND = 0x74,
ANM_ROPECATCH = 0x75,
ANM_ROPESWINGF = 0x76,
ANM_ROPESWINGB = 0x77,
ANM_ROPEWAIT = 0x78,
ANM_ROPECLIMB = 0x79,
ANM_ROPEDOWN = 0x7A,
ANM_ROPETHROWCATCH = 0x7B,
ANM_BOOMCATCH = 0x7C,
ANM_VOYAGE1 = 0x7D,
ANM_WAITPUSHPULL = 0x7E,
ANM_WALKPUSH = 0x7F,
ANM_WALKPULL = 0x80,
ANM_SWIMP = 0x81,
ANM_SWIMWAIT = 0x82,
ANM_SWIMING = 0x83,
ANM_LADDERUPST = 0x84,
ANM_LADDERUPEDR = 0x85,
ANM_LADDERUPEDL = 0x86,
ANM_LADDERDWST = 0x87,
ANM_LADDERDWEDR = 0x88,
ANM_LADDERDWEDL = 0x89,
ANM_LADDERRTOL = 0x8A,
ANM_LADDERLTOR = 0x8B,
ANM_FCLIMBSLIDELUP = 0x8C,
ANM_FCLIMBSLIDERUP = 0x8D,
ANM_BOXOPENLINK = 0x8E,
ANM_BOXOPENSHORTLINK = 0x8F,
ANM_ITEMGET = 0x90,
ANM_HOLDUP = 0x91,
ANM_WALLHOLDUP = 0x92,
ANM_WALLHOLDUPDW = 0x93,
ANM_COMEOUT = 0x94,
ANM_WALKBARREL = 0x95,
ANM_SALTATION = 0x96,
ANM_WHO = 0x97,
ANM_PICKUP = 0x98,
ANM_WAITPICKUP = 0x99,
ANM_SURPRISED = 0x9A,
ANM_TURNBACK = 0x9B,
ANM_LOOKUP = 0x9C,
ANM_WAITQ = 0x9D,
ANM_GLAD = 0x9E,
ANM_SHIP_JUMP1 = 0x9F,
ANM_SHIP_JUMP2 = 0xA0,
ANM_USEFANA = 0xA1,
ANM_USEFANB = 0xA2,
ANM_USEFANB2 = 0xA3,
ANM_MOGAKU1 = 0xA4,
ANM_FM_BATA = 0xA5,
ANM_HOOKSHOTJMP = 0xA6,
ANM_VOMITJMP = 0xA7,
ANM_WAITTAKT = 0xA8,
ANM_SLIPICE = 0xA9,
ANM_HAMSWINGA = 0xAA,
ANM_HAMSWINGBPRE = 0xAB,
ANM_HAMSWINGBHIT = 0xAC,
ANM_HAMSWINGBEND = 0xAD,
ANM_SETBOOTS = 0xAE,
ANM_DOOROPENALINK = 0xAF,
ANM_DOOROPENBLINK = 0xB0,
ANM_SEYYES = 0xB1,
ANM_PRESENTATIONA = 0xB2,
ANM_WINDL = 0xB3,
ANM_WINDR = 0xB4,
ANM_PRESENTATIONB = 0xB5,
ANM_BINDRINKPRE = 0xB6,
ANM_BINDRINKING = 0xB7,
ANM_BINDRINKAFTER = 0xB8,
ANM_BINOPENPRE = 0xB9,
ANM_BINOPENA = 0xBA,
ANM_BINOPENB = 0xBB,
ANM_BINSWINGS = 0xBC,
ANM_BINSWINGU = 0xBD,
ANM_BINGET = 0xBE,
ANM_SURPRISEDB = 0xBF,
ANM_RISE = 0xC0,
ANM_USETCEIVER = 0xC1,
ANM_YOBU = 0xC2,
ANM_NENRIKI = 0xC3,
ANM_ESAMAKI = 0xC4,
ANM_SETHYOINOMI = 0xC5,
ANM_GETLETTER = 0xC6,
ANM_WAITLETTER = 0xC7,
ANM_LINK_FREEZ = 0xC8,
ANM_LINK_MOGAKI = 0xC9,
ANM_TAKTDGE = 0xCA,
ANM_DAMBIRI = 0xCB,
ANM_SALVLR = 0xCC,
ANM_SALVRWAIT = 0xCD,
ANM_SALVLWAIT = 0xCE,
ANM_SALVRBAD = 0xCF,
ANM_SALVLBAD = 0xD0,
ANM_SALVRGOOD = 0xD1,
ANM_SALVLGOOD = 0xD2,
ANM_MSTEPOVER_JMPED = 0xD3,
ANM_BOXOPENSLINK = 0xD4,
ANM_SEARESET = 0xD5,
ANM_WARPIN = 0xD6,
ANM_WARPOUT = 0xD7,
ANM_SURPRISEDWAIT = 0xD8,
ANM_PRESENTATIONAWAIT = 0xD9,
ANM_POWUPWAIT = 0xDA,
ANM_POWUP = 0xDB,
ANM_KOSHIKAKE = 0xDC,
ANM_COMBO_LINK = 0xDD,
ANM_CUTKESA = 0xDE,
ANM_WARPOUTFIRST = 0xDF,
ANM_WAITAUCTION = 0xE0,
ANM_FREEA = 0xE1,
ANM_FREEB = 0xE2,
ANM_FREED = 0xE3,
ANM_TAKTKAZE = 0xE4,
ANM_TAKTSIPPU = 0xE5,
ANM_TAKTCHUYA = 0xE6,
ANM_TAKTFUJIN = 0xE7,
ANM_TAKTAYATSURI = 0xE8,
ANM_TAKTCHISIN = 0xE9,
};
enum daPy_HEAP_TYPE {
HEAP_TYPE_UNDER_UPPER_e = 0,
HEAP_TYPE_TEXTURE_ANIME_e = 1,
HEAP_TYPE_TEXTURE_SCROLL_e = 2,
HEAP_TYPE_ITEM_ANIME_e = 3,
};
enum daPy_UNDER {
UNDER_MOVE0_e = 0,
UNDER_MOVE1_e = 1,
};
enum daPy_UPPER {
UPPER_MOVE0_e = 0,
UPPER_MOVE1_e = 1,
UPPER_MOVE2_e = 2,
};
enum {
PART_UNDER_e = 0,
PART_UPPER_e = 1,
};
enum {
ModeFlg_00000001 = 0x00000001,
ModeFlg_MIDAIR = 0x00000002,
ModeFlg_00000004 = 0x00000004,
ModeFlg_DAMAGE = 0x00000008,
ModeFlg_WHIDE = 0x00000010,
ModeFlg_HANG = 0x00000020,
ModeFlg_00000040 = 0x00000040,
ModeFlg_00000080 = 0x00000080,
ModeFlg_00000100 = 0x00000100,
ModeFlg_HOOKSHOT = 0x00000200,
ModeFlg_00000400 = 0x00000400,
ModeFlg_ROPE = 0x00000800,
ModeFlg_00001000 = 0x00001000,
ModeFlg_IN_SHIP = 0x00002000,
ModeFlg_00004000 = 0x00004000,
ModeFlg_00008000 = 0x00008000,
ModeFlg_CLIMB = 0x00010000,
ModeFlg_00020000 = 0x00020000,
ModeFlg_SWIM = 0x00040000,
ModeFlg_00080000 = 0x00080000,
ModeFlg_GRAB = 0x00100000,
ModeFlg_PUSHPULL = 0x00200000,
ModeFlg_LADDER = 0x00400000,
ModeFlg_CROUCH = 0x00800000,
ModeFlg_CRAWL = 0x01000000,
ModeFlg_02000000 = 0x02000000,
ModeFlg_04000000 = 0x04000000,
ModeFlg_08000000 = 0x08000000,
ModeFlg_CAUGHT = 0x10000000,
ModeFlg_SUBJECT = 0x20000000,
ModeFlg_40000000 = 0x40000000,
ModeFlg_PARRY = 0x80000000,
};
enum {
daPyItem_NONE_e = 0x100,
daPyItem_BOKO_e = 0x101,
daPyItem_UNK102_e = 0x102,
daPyItem_SWORD_e = 0x103,
daPyItem_UNK104_e = 0x104,
daPyItem_DRINK_BOTTLE_e = 0x105,
daPyItem_OPEN_BOTTLE_e = 0x106,
daPyItem_ESA_e = 0x107,
daPyItem_BOW_e = 0x108,
daPyItem_PHOTOBOX_e = 0x109,
daPyItem_UNK10A_e = 0x10A,
daPyItem_UNK10B_e = 0x10B,
};
enum daPy_lk_ITEM_BTN {
/* 0x01 */ BTN_A = (1 << 0),
/* 0x02 */ BTN_B = (1 << 1),
/* 0x04 */ BTN_X = (1 << 2),
/* 0x08 */ BTN_Y = (1 << 3),
/* 0x10 */ BTN_Z = (1 << 4),
/* 0x20 */ BTN_L = (1 << 5),
/* 0x40 */ BTN_R = (1 << 6),
};
/**
* Moving direction calculated from an angle
*/
enum daPy_lk_DIR {
/* 0x0 */ DIR_FORWARD,
/* 0x1 */ DIR_BACKWARD,
/* 0x2 */ DIR_LEFT,
/* 0x3 */ DIR_RIGHT,
/* 0x4 */ DIR_NONE,
};
typedef BOOL (daPy_lk_c::*ProcFunc)();
void seStartOnlyReverb(u32);
void seStartMapInfo(u32);
void seStartSwordCut(u32);
BOOL itemButton() const;
BOOL itemTrigger() const;
int getReadyItem();
BOOL checkGroupItem(int, int);
BOOL checkSetItemTrigger(int, int);
BOOL auraJointCB0(int);
BOOL jointBeforeCB(int, J3DTransformInfo*, Quaternion*);
BOOL jointAfterCB(int, J3DTransformInfo*, Quaternion*);
BOOL jointCB0(int);
BOOL jointCB1();
JKRHeap* setAnimeHeap(JKRSolidHeap*);
JKRHeap* setItemHeap();
void setBlurPosResource(u16);
J3DAnmTransform* getItemAnimeResource(u16);
J3DAnmTransform* getAnimeResource(daPy_anmHeap_c*, u16, u32);
void getUnderUpperAnime(daPy_anmIndex_c const*, J3DAnmTransform**, J3DAnmTransform**, int, u32);
void setTextureAnimeResource(J3DAnmTexPattern*, int);
J3DAnmTexPattern* loadTextureAnimeResource(u32, BOOL);
BOOL checkBossBgm();
BOOL checkMabaAnimeBtp(int);
u16 checkNormalFace();
void setTextureAnime(u16, int);
void setPriTextureAnime(u16, int);
void resetPriTextureAnime();
void setDemoTextureAnime(u16, u16, int, u16);
void resetDemoTextureAnime();
void setTextureScrollResource(J3DAnmTextureSRTKey*, int);
J3DAnmTextureSRTKey* loadTextureScrollResource(u32, BOOL);
void playTextureAnime();
BOOL checkSightLine(f32, cXyz*);
void setBootsModel(J3DModel**);
s32 setItemModel();
BOOL checkUpperReadyAnime() const;
BOOL checkUpperReadyThrowAnime() const;
BOOL checkNoCollisionCorret();
s32 setDrawHandModel();
void entryDLSetLight(J3DModel*, u32);
void updateDLSetLight(J3DModel*, u32);
void hideHatAndBackle(J3DMaterial*);
void drawMirrorLightModel();
void drawShadow();
void offBodyEffect();
void onBodyEffect();
BOOL draw();
void setAtnList();
void setActorPointer();
BOOL setTalkStatus();
int setHintActor();
void setDoStatusBasic();
void setDoStatus();
int getDirectionFromAngle(s16);
int getDirectionFromShapeAngle();
int getDirectionFromCurrentAngle();
void setNormalSpeedF(f32, f32, f32, f32);
void posMoveFromFootPos();
void posMove();
void setShapeAngleToAtnActor();
BOOL cancelItemUpperReadyAnime();
s16 checkBodyAngleX(s16);
BOOL setBodyAngleToCamera();
void setBodyAngleXReadyAnime();
void setSpeedAndAngleNormal(s16);
void setSpeedAndAngleAtn();
void setSpeedAndAngleAtnBack();
void setSpeedAndAngleAtnActor();
void setFrameCtrl(J3DFrameCtrl*, u8, s16, s16, f32, f32);
BOOL checkAtnWaitAnime();
void setBlendMoveAnime(f32);
void setBlendAtnBackMoveAnime(f32);
void setBlendAtnMoveAnime(f32);
void setAnimeEquipSword(BOOL);
void setAnimeEquipSingleItem(u16);
void setAnimeEquipItem();
void setAnimeUnequipSword();
void setAnimeUnequipItem(u16);
void setAnimeUnequip();
BOOL checkBossGomaStage();
BOOL checkSingleItemEquipAnime() const;
BOOL checkItemEquipAnime() const;
BOOL checkEquipAnime() const;
void deleteEquipItem(BOOL);
void setFallVoice();
void keepItemData();
void returnKeepItemData();
void makeItemType();
void setScopeModel();
void setPhotoBoxModel();
BOOL changeDragonShield(int);
BOOL checkNewItemChange(u8);
BOOL checkItemChangeFromButton();
void checkItemAction();
cM3dGPla* getSlidePolygon();
BOOL checkJumpCutFromButton();
int orderTalk();
BOOL checkNextActionFromButton();
void setShieldGuard();
BOOL checkItemModeActorPointer();
void checkNextActionItemFly();
BOOL checkNextMode(int);
BOOL checkIceSlipFall();
void setFrontWallType();
BOOL changeFrontWallTypeProc();
int changeSlideProc();
BOOL changeWaitProc();
BOOL changeLandProc(f32);
BOOL setDamagePoint(f32);
BOOL checkNormalDamage(int);
void setDashDamage();
BOOL checkAtHitEnemy(dCcD_GObjInf*);
BOOL checkElecReturnDamage(dCcD_GObjInf*, cXyz*);
s32 checkWallAtributeDamage(dBgS_AcchCir*);
BOOL changeDamageProc();
BOOL changeAutoJumpProc();
BOOL changeDemoProc();
BOOL changeDeadProc();
cXyz* getDamageVec(dCcD_GObjInf*);
void setOldRootQuaternion(s16, s16, s16);
BOOL checkRestHPAnime();
BOOL checkHeavyStateOn();
BOOL checkBottleItem(int) const;
BOOL checkDrinkBottleItem(int) const;
BOOL checkOpenBottleItem(int) const;
BOOL checkBowItem(int) const;
BOOL checkPhotoBoxItem(int) const;
BOOL checkScopeEnd();
void setSubjectMode();
BOOL checkMaskDraw();
BOOL checkSubjectEnd(BOOL);
BOOL checkGuardAccept();
void cancelNoDamageMode();
BOOL commonProcInit(daPy_PROC proc);
BOOL procScope_init(int);
BOOL procScope();
BOOL procSubjectivity_init(BOOL);
BOOL procSubjectivity();
BOOL procCall_init();
BOOL procCall();
BOOL procControllWait_init();
BOOL procControllWait();
BOOL procWait_init();
BOOL procWait();
BOOL procFreeWait_init();
BOOL procFreeWait();
BOOL procMove_init();
BOOL procMove();
BOOL procAtnMove_init();
BOOL procAtnMove();
BOOL procAtnActorWait_init();
BOOL procAtnActorWait();
BOOL procAtnActorMove_init();
BOOL procAtnActorMove();
BOOL procSideStep_init(int);
BOOL procSideStep();
BOOL procSideStepLand_init();
BOOL procSideStepLand();
BOOL procCrouchDefense_init();
BOOL procCrouchDefense();
BOOL procCrouchDefenseSlip_init();
BOOL procCrouchDefenseSlip();
BOOL procCrouch_init();
BOOL procCrouch();
BOOL procWaitTurn_init();
BOOL procWaitTurn();
BOOL procMoveTurn_init(int);
BOOL procMoveTurn();
BOOL procSlip_init();
BOOL procSlip();
BOOL procSlideFront_init(s16);
BOOL procSlideFront();
BOOL procSlideBack_init(s16);
BOOL procSlideBack();
BOOL procSlideFrontLand_init();
BOOL procSlideFrontLand();
BOOL procSlideBackLand_init();
BOOL procSlideBackLand();
BOOL procFrontRoll_init(f32);
BOOL procFrontRoll();
BOOL procFrontRollCrash_init();
BOOL procFrontRollCrash();
BOOL procNockBackEnd_init();
BOOL procNockBackEnd();
BOOL procSideRoll_init();
BOOL procSideRoll();
BOOL procBackJump_init();
BOOL procBackJump();
BOOL procBackJumpLand_init();
BOOL procBackJumpLand();
int checkAutoJumpFlying() const;
BOOL procAutoJump_init();
BOOL procAutoJump();
BOOL procLand_init(f32, int);
BOOL procLand();
BOOL procLandDamage_init(int);
BOOL procLandDamage();
BOOL procFall_init(int, f32);
BOOL procFall();
BOOL procSlowFall_init();
BOOL procSlowFall();
BOOL procSmallJump_init(int);
BOOL procSmallJump();
BOOL procVerticalJump_init();
BOOL procVerticalJump();
BOOL procGuardCrash();
BOOL procDamage_init();
BOOL procDamage();
BOOL procPolyDamage_init();
BOOL procPolyDamage();
BOOL procLargeDamage_init(int, int, s16, s16);
BOOL procLargeDamage();
BOOL procLargeDamageUp_init(int, int, s16, s16);
BOOL procLargeDamageUp();
BOOL procLargeDamageWall_init(int, int, s16, s16);
BOOL procLargeDamageWall();
BOOL procLavaDamage_init();
BOOL procLavaDamage();
BOOL procElecDamage_init(cXyz const*);
BOOL procElecDamage();
BOOL procGuardSlip_init();
BOOL procGuardSlip();
BOOL procIceSlipFall_init();
BOOL procIceSlipFall();
BOOL procIceSlipFallUp_init(int, s16, s16);
BOOL procIceSlipFallUp();
BOOL procIceSlipAlmostFall_init();
BOOL procIceSlipAlmostFall();
BOOL procBootsEquip_init(u16);
BOOL procBootsEquip();
BOOL procNotUse_init(int);
BOOL procNotUse();
s16 getGroundAngle(cBgS_PolyInfo*, s16);
int setLegAngle(f32, int, s16*, s16*);
void footBgCheck();
void setWaterY();
void autoGroundHit();
BOOL checkAttentionPosAngle(fopAc_ac_c*, cXyz**);
void setNeckAngle();
void checkOriginalHatAnimation();
void setHatAngle();
void setMoveSlantAngle();
void setWaistAngle();
void setWorldMatrix();
void setAtParam(u32, int, dCcG_At_Spl, u8, u8, u8, f32);
void resetCurse();
void checkLightHit();
void setSwordAtCollision();
f32 getBlurTopRate();
void setCollision();
void setAttentionPos();
int setRoomInfo();
void setDemoData();
void setStickData();
void setBgCheckParam();
u32 setParamData(int, int, int, int);
BOOL checkLavaFace(cXyz*, int);
void checkFallCode();
BOOL startRestartRoom(u32, int, f32, int);
BOOL checkSuccessGuard(int);
void setShapeAngleOnGround();
void setStepsOffset();
void setBeltConveyerPower();
void setWindAtPower();
void checkRoofRestart();
BOOL execute();
BOOL playerDelete();
void initTextureAnime();
void initTextureScroll();
BOOL createHeap();
void createAnimeHeap(JKRSolidHeap**, daPy_HEAP_TYPE);
J3DModelData* initModel(J3DModel**, int, u32);
J3DAnmTextureSRTKey* entryBtk(J3DModelData*, int);
J3DAnmTevRegKey* entryBrk(J3DModelData*, int);
void playerInit();
daPy_lk_c();
int makeBgWait();
void setSeAnime(daPy_anmHeap_c const*, J3DFrameCtrl*);
void initSeAnime();
void resetSeAnime();
int setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32);
BOOL setSingleMoveAnime(daPy_ANM, f32, f32, s16, f32);
BOOL setActAnimeUpper(u16, daPy_UPPER, f32, f32, s16, f32);
BOOL resetActAnimeUpper(daPy_UPPER, f32);
void animeUpdate();
void simpleAnmPlay(J3DAnmBase*);
void setHandModel(daPy_ANM);
const daPy_anmIndex_c* getAnmData(daPy_ANM) const;
BOOL checkGrabWeapon(int);
void endDemoMode();
void setAuraEffect();
void setWaterRipple();
void setFootEffectType(int, cXyz*, int, int);
void setFootMark(cXyz*);
void setFootEffect();
void resetFootEffect();
void setSwimTail();
void setCutWaterSplash();
void setSwimWaterDrop(daPy_waterDropEcallBack_c*);
void setWaterDrop();
void setDamageFlameEmitter();
void setDamageCurseEmitter();
void setDamageElecEmitter();
void setDamageEmitter();
void endFlameDamageEmitter();
void endDamageEmitter();
static u32 setItemWaterEffect(fopAc_ac_c*, int, int);
fopAc_ac_c* getDemoLookActor();
void setTinkleCeiverModel();
void setTalismanModel();
void setLetterModel();
BOOL checkCaughtShapeHide();
void setShapeAngleToTalkActor();
BOOL checkEndMessage(u32);
int setTalkStartBack();
BOOL dProcTool_init();
BOOL dProcTool();
BOOL dProcTalk_init();
BOOL dProcTalk();
BOOL dProcDamage_init();
BOOL dProcDamage();
BOOL dProcHoldup_init();
BOOL dProcHoldup();
BOOL dProcOpenTreasure_init();
BOOL dProcOpenTreasure();
void setGetItemSound(u16, int);
#if VERSION > VERSION_DEMO
BOOL setGetDemo();
#endif
BOOL dProcGetItem_init();
BOOL dProcGetItem();
BOOL dProcUnequip_init();
BOOL dProcUnequip();
void dProcLavaDamage_init_sub();
BOOL dProcLavaDamage_init();
BOOL dProcLavaDamage();
void dProcFreezeDamage_init_sub(int);
BOOL dProcFreezeDamage_init();
BOOL dProcFreezeDamage();
void dProcDead_init_sub();
void dProcDead_init_sub2();
BOOL checkGameOverStart();
BOOL dProcDead_init();
BOOL dProcDead();
BOOL dProcLookAround_init();
BOOL dProcLookAround();
BOOL dProcSalute_init();
BOOL dProcSalute();
BOOL dProcLookAround2_init();
BOOL dProcLookAround2();
BOOL dProcTalismanPickup_init();
BOOL dProcTalismanPickup();
BOOL dProcTalismanWait_init();
BOOL dProcTalismanWait();
BOOL dProcSurprised_init();
BOOL dProcSurprised();
BOOL dProcTurnBack_init();
BOOL dProcTurnBack();
BOOL dProcLookUp_init();
BOOL dProcLookUp();
BOOL dProcQuakeWait_init();
BOOL dProcQuakeWait();
BOOL dProcDance_init();
BOOL dProcDance();
BOOL dProcCaught_init();
BOOL dProcCaught();
BOOL dProcLookWait_init();
BOOL dProcLookWait();
BOOL dProcPushPullWait_init();
BOOL dProcPushPullWait();
BOOL dProcPushMove_init();
BOOL dProcPushMove();
BOOL dProcDoorOpen_init();
BOOL dProcDoorOpen();
BOOL dProcNod_init();
BOOL dProcNod();
void dProcPresent_init_sub();
BOOL dProcPresent_init();
BOOL dProcPresent();
BOOL dProcWindChange_init();
BOOL dProcWindChange();
BOOL dProcStandItemPut_init();
BOOL dProcStandItemPut();
BOOL dProcVorcanoFail_init();
BOOL dProcVorcanoFail();
BOOL dProcSlightSurprised_init();
BOOL dProcSlightSurprised();
BOOL dProcSmile_init();
BOOL dProcSmile();
BOOL dProcBossWarp_init();
BOOL dProcBossWarp();
BOOL dProcAgbUse_init();
BOOL dProcAgbUse();
BOOL dProcLookTurn_init();
BOOL dProcLookTurn();
BOOL dProcLetterOpen_init();
BOOL dProcLetterOpen();
BOOL dProcLetterRead_init();
BOOL dProcLetterRead();
BOOL dProcRedeadStop_init();
BOOL dProcRedeadStop();
BOOL dProcRedeadCatch_init();
BOOL dProcRedeadCatch();
BOOL dProcGetDance_init();
BOOL dProcGetDance();
BOOL dProcBottleOpenFairy_init();
BOOL dProcBottleOpenFairy();
BOOL dProcWarpShort_init();
BOOL dProcWarpShort();
BOOL dProcOpenSalvageTreasure_init();
BOOL dProcOpenSalvageTreasure();
BOOL dProcSurprisedWait_init();
BOOL dProcSurprisedWait();
BOOL dProcPowerUpWait_init();
BOOL dProcPowerUp_init();
BOOL dProcPowerUp();
BOOL dProcShipSit_init();
BOOL dProcShipSit();
BOOL dProcLastCombo_init();
BOOL dProcLastCombo();
BOOL dProcHandUp_init();
BOOL dProcHandUp();
BOOL dProcIceSlip_init();
BOOL dProcIceSlip();
f32 getLadderMoveAnmSpeed();
void setLadderFootSe();
int changeLadderMoveProc(int);
int setMoveBGLadderCorrect();
void procLadderUpStart_init_sub();
BOOL procLadderUpStart_init();
BOOL procLadderUpStart();
BOOL procLadderUpEnd_init(int);
BOOL procLadderUpEnd();
void procLadderDownStart_init_sub();
BOOL procLadderDownStart_init();
BOOL procLadderDownStart();
BOOL procLadderDownEnd_init(int);
BOOL procLadderDownEnd();
BOOL procLadderMove_init(int, int, cXyz*);
BOOL procLadderMove();
f32 getHangMoveAnmSpeed();
int getHangDirectionFromAngle();
BOOL changeHangMoveProc(int);
int changeHangEndProc(int);
void setHangShapeOffset();
BOOL procHangStart_init();
BOOL procHangStart();
BOOL procHangFallStart_init(cM3dGPla*);
BOOL procHangFallStart();
BOOL procHangUp_init(int);
BOOL procHangUp();
BOOL procHangWait_init();
BOOL procHangWait();
BOOL procHangMove_init(int);
BOOL procHangMove();
BOOL procHangClimb_init(f32);
BOOL procHangClimb();
BOOL procHangWallCatch_init();
BOOL procHangWallCatch();
f32 getClimbMoveAnmSpeed();
void setClimbShapeOffset();
int getClimbDirectionFromAngle();
void changeClimbMoveProc(int);
BOOL setMoveBGCorrectClimb();
void checkBgCorrectClimbMove(cXyz*, cXyz*);
void checkBgClimbMove();
void procClimbUpStart_init_sub();
BOOL procClimbUpStart_init();
BOOL procClimbUpStart();
BOOL procClimbDownStart_init(s16);
BOOL procClimbDownStart();
BOOL procClimbMoveUpDown_init(int);
BOOL procClimbMoveUpDown();
BOOL procClimbMoveSide_init(int);
BOOL procClimbMoveSide();
void setBlendWHideMoveAnime(f32);
cM3dGPla* getWHideModePolygon(cXyz*, cXyz*, cXyz*, int);
void getWHideBasePos(cXyz*);
void getWHideNextPos(cXyz*, cXyz*);
BOOL checkWHideBackWall(cXyz*);
BOOL checkWHideFrontFloor(cXyz*);
int checkWHideModeChange(cXyz*);
int changeWHideEndProc(cXyz*);
BOOL procWHideReady_init(cM3dGPla*, cXyz*);
BOOL procWHideReady();
BOOL procWHideWait_init();
BOOL procWHideWait();
BOOL procWHideMove_init();
BOOL procWHideMove();
BOOL procWHidePeep_init();
BOOL procWHidePeep();
f32 getCrawlMoveAnmSpeed();
f32 getCrawlMoveSpeed();
void setCrawlMoveDirectionArrow();
BOOL changeCrawlAutoMoveProc(cXyz*);
int getCrawlMoveVec(cXyz*, cXyz*, cXyz*);
void crawlBgCheck(cXyz*, cXyz*);
BOOL checkCrawlSideWall(cXyz*, cXyz*, cXyz*, cXyz*, s16*, s16*);
void setDoStatusCrawl();
BOOL procCrawlStart_init();
BOOL procCrawlStart();
BOOL checkNotCrawlStand(cXyz*);
BOOL checkNotCrawlStand(cXyz*, cXyz*);
BOOL procCrawlMove_init(s16, s16);
BOOL procCrawlMove();
BOOL procCrawlAutoMove_init(int, cXyz*);
BOOL procCrawlAutoMove();
BOOL procCrawlEnd_init(int, s16, s16);
BOOL procCrawlEnd();
BOOL checkGrabSpecialHeavyState();
void setWeaponBlur();
BOOL checkGrabBarrelSearch(int);
void setGrabItemPos();
void freeGrabItem();
BOOL checkNextActionGrab();
void initGrabNextMode();
BOOL procGrabReady_init();
BOOL procGrabReady();
BOOL procGrabUp_init();
BOOL procGrabUp();
BOOL procGrabMiss_init();
BOOL procGrabMiss();
BOOL procGrabThrow_init(int);
BOOL procGrabThrow();
BOOL procGrabPut_init();
BOOL procGrabPut();
BOOL procGrabWait_init();
BOOL procGrabWait();
BOOL procGrabHeavyWait_init();
BOOL procGrabHeavyWait();
BOOL procGrabRebound_init();
BOOL procGrabRebound();
void setSpeedAndAngleSwim();
BOOL checkNextModeSwim();
BOOL changeSwimProc();
BOOL changeSwimUpProc();
void swimOutAfter(BOOL);
BOOL checkSwimFallCheck();
BOOL changeSwimOutProc();
void setSwimMoveAnime(daPy_ANM);
f32 getSwimTimerRate();
void setSwimTimerStartStop();
BOOL procSwimUp_init(BOOL);
BOOL procSwimUp();
BOOL procSwimWait_init(BOOL);
BOOL procSwimWait();
BOOL procSwimMove_init(BOOL);
BOOL procSwimMove();
void setSpecialBattle(BOOL);
BOOL changeSpecialBattle();
BOOL procBtJump_init(fopEn_enemy_c*);
BOOL procBtJump();
BOOL procBtJumpCut_init(cXyz*);
BOOL procBtJumpCut();
BOOL procBtSlide();
BOOL procBtRoll_init(fopEn_enemy_c*);
BOOL procBtRoll();
BOOL procBtRollCut_init(cXyz*);
BOOL procBtRollCut();
BOOL procBtVerticalJump_init(fopEn_enemy_c*);
BOOL procBtVerticalJump();
BOOL procBtVerticalJumpCut_init();
BOOL procBtVerticalJumpCut();
BOOL procBtVerticalJumpLand_init();
BOOL procBtVerticalJumpLand();
BOOL shipSpecialDemoStart();
BOOL checkJumpRideShip();
BOOL checkShipNotNormalMode();
void setShipRideArmAngle(int, J3DTransformInfo*);
int checkShipRideUseItem(int);
void initShipRideUseItem(int, int);
void setShipRidePosUseItem();
void setShipRidePos(int);
void setShipAttentionAnmSpeed(f32);
void setShipAttnetionBodyAngle();
BOOL changeShipEndProc();
void initShipBaseAnime();
void initShipCraneAnime();
BOOL procShipReady_init();
BOOL procShipReady();
BOOL procShipJumpRide_init();
BOOL procShipJumpRide();
BOOL procShipSteer_init();
BOOL procShipSteer();
BOOL procShipPaddle_init();
BOOL procShipPaddle();
BOOL procShipScope_init(int);
BOOL procShipScope();
BOOL procShipBoomerang_init();
BOOL procShipBoomerang();
BOOL procShipHookshot_init();
BOOL procShipHookshot();
BOOL procShipBow_init();
BOOL procShipBow();
BOOL procShipCannon_init();
BOOL procShipCannon();
BOOL procShipCrane_init();
BOOL procShipCrane();
BOOL procShipGetOff_init();
BOOL procShipGetOff();
BOOL procShipRestart_init();
BOOL procShipRestart();
BOOL checkRopeAnime() const;
void freeRopeItem();
f32 checkRopeRoofHit(s16);
int changeRopeSwingProc();
int changeRopeEndProc(int);
BOOL checkSpecialRope();
int changeRopeToHangProc();
BOOL checkRopeSwingWall(cXyz*, cXyz*, s16*, f32*);
void setBlendRopeMoveAnime(int);
int throwRope();
BOOL checkNextActionRopeReady();
BOOL checkNextRopeMode();
BOOL checkHangRopeActorNull();
BOOL procRopeSubject_init();
BOOL procRopeSubject();
BOOL procRopeReady_init();
BOOL procRopeReady();
BOOL procRopeSwing_init(fopAc_ac_c*, s16);
BOOL procRopeSwing();
BOOL procRopeHangWait_init(int);
BOOL procRopeHangWait();
int specialRopeHangUp();
BOOL procRopeUp_init();
BOOL procRopeUp();
BOOL procRopeDown_init();
BOOL procRopeDown();
BOOL procRopeSwingStart_init();
BOOL procRopeSwingStart();
BOOL procRopeMove_init();
BOOL procRopeMove();
BOOL procRopeThrowCatch_init();
BOOL procRopeThrowCatch();
BOOL procRopeUpHang_init();
BOOL procRopeUpHang();
BOOL checkBoomerangAnime() const;
void throwBoomerang();
int returnBoomerang();
BOOL checkNextActionBoomerangReady();
void checkNextActionBoomerangFly();
BOOL checkNextBoomerangMode();
BOOL changeBoomerangCatchProc();
BOOL procBoomerangSubject_init();
BOOL procBoomerangSubject();
BOOL procBoomerangMove_init();
BOOL procBoomerangMove();
BOOL procBoomerangCatch_init();
BOOL procBoomerangCatch();
BOOL bowJointCB(int);
BOOL bowButton() const;
BOOL checkBowReadyAnime() const;
BOOL checkBowAnime() const;
void makeArrow();
void deleteArrow();
void setBowReadyAnime();
void setBowReloadAnime();
BOOL checkNextActionBowReady();
void checkNextActionBowFly();
BOOL checkNextBowMode();
void setBowModel();
BOOL procBowSubject_init();
BOOL procBowSubject();
BOOL procBowMove_init();
BOOL procBowMove();
BOOL checkHookshotReturn();
void setHookshotModel();
void setHookshotSight();
void freeHookshotItem();
BOOL checkNextActionHookshotReady();
BOOL checkNextHookshotMode();
BOOL procHookshotSubject_init();
BOOL procHookshotSubject();
BOOL procHookshotMove_init();
BOOL procHookshotMove();
BOOL procHookshotFly_init();
BOOL procHookshotFly();
BOOL fanWindEffectDraw();
BOOL fanWindCrashEffectDraw();
BOOL fanJointCB(int);
BOOL parachuteJointCB(int);
int setShapeFanLeaf();
BOOL checkFanGlideProc(int);
void setFanModel();
void setSmallFanModel();
void setParachuteFanModel(f32);
BOOL procFanSwing_init();
BOOL procFanSwing();
BOOL procFanGlide_init(int);
BOOL procFanGlide();
u32 getDayNightParamData();
void setTactModel();
BOOL checkNpcStatus();
u16 getTactPlayRightArmAnm(s32);
u16 getTactPlayLeftArmAnm(s32);
BOOL checkEndTactMusic() const;
f32 getTactMetronomeRate();
BOOL checkTactLastInput();
BOOL getTactTopPos(cXyz*);
BOOL getTactNormalWait() const;
BOOL checkTactPlayMelody();
void resetTactCount();
BOOL procTactWait_init(int);
BOOL procTactWait();
BOOL procTactPlay_init(s32, int, int);
BOOL procTactPlay();
BOOL procTactPlayEnd_init(int);
BOOL procTactPlayEnd();
BOOL procTactPlayOriginal_init();
BOOL procTactPlayOriginal();
BOOL checkJumpFlower();
BOOL procVomitReady_init(s16, f32);
BOOL procVomitReady();
BOOL procVomitWait_init();
BOOL procVomitWait();
BOOL procVomitJump_init(int);
BOOL procVomitJump();
BOOL procVomitLand_init();
BOOL procVomitLand();
void setHammerModel();
void setHammerQuake(cBgS_PolyInfo*, cXyz const*, int);
void setHammerWaterSplash();
BOOL procHammerSideSwing_init();
BOOL procHammerSideSwing();
BOOL procHammerFrontSwingReady_init();
BOOL procHammerFrontSwingReady();
BOOL procHammerFrontSwing_init();
BOOL procHammerFrontSwing();
BOOL procHammerFrontSwingEnd_init();
BOOL procHammerFrontSwingEnd();
BOOL setPushPullKeepData(dBgW::PushPullLabel);
BOOL procPushPullWait_init(int);
BOOL procPushPullWait();
BOOL procPushMove_init();
BOOL procPushMove();
BOOL procPullMove_init();
BOOL procPullMove();
int changeBottleDrinkFace(int);
void setBottleModel(u16);
fopAc_ac_c* makeFairy(cXyz*, u32);
BOOL procBottleDrink_init(u16);
BOOL procBottleDrink();
BOOL procBottleOpen_init(u16);
BOOL procBottleOpen();
BOOL procBottleSwing_init(int);
BOOL procBottleSwing();
BOOL procBottleGet_init();
BOOL procBottleGet();
void setEnemyWeaponAtParam(BOOL);
BOOL procWeaponNormalSwing_init();
BOOL procWeaponNormalSwing();
BOOL procWeaponSideSwing_init();
BOOL procWeaponSideSwing();
BOOL procWeaponFrontSwingReady_init();
BOOL procWeaponFrontSwingReady();
BOOL procWeaponFrontSwing_init();
BOOL procWeaponFrontSwing();
BOOL procWeaponFrontSwingEnd_init();
BOOL procWeaponFrontSwingEnd();
BOOL procWeaponThrow_init();
BOOL procWeaponThrow();
void setHyoiModel();
BOOL procFoodThrow_init();
BOOL procFoodThrow();
BOOL procFoodSet_init();
BOOL procFoodSet();
#if VERSION == VERSION_DEMO
void setSwordModel();
#else
void setSwordModel(BOOL);
#endif
void setLightSaver();
#if VERSION == VERSION_DEMO
BOOL checkLastDemoSwordNoDraw(int);
#else
BOOL checkDemoShieldNoDraw();
BOOL checkDemoSwordNoDraw(BOOL);
#endif
BOOL checkChanceMode();
BOOL checkCutRollChange() const;
int getSwordBlurColor();
void setNormalCutAtParam(u8);
void setFinishCutAtParam(u8);
void setExtraCutAtParam(u8);
void setExtraFinishCutAtParam(u8);
void setJumpCutAtParam();
int getCutDirection();
int changeCutProc();
int changeCutReverseProc(daPy_ANM);
BOOL procCutA_init(s16);
BOOL procCutA();
BOOL procCutF_init(s16);
BOOL procCutF();
BOOL procCutR_init(s16);
BOOL procCutR();
BOOL procCutL_init(s16);
BOOL procCutL();
BOOL procCutEA_init();
BOOL procCutEA();
BOOL procCutEB_init();
BOOL procCutEB();
BOOL procCutExA_init();
BOOL procCutExA();
BOOL procCutExB_init();
BOOL procCutExB();
BOOL procCutTurn_init(int);
BOOL procCutTurn();
BOOL procCutRoll_init();
BOOL procCutRoll();
BOOL procCutRollEnd_init();
BOOL procCutRollEnd();
BOOL procCutTurnCharge_init();
BOOL procCutTurnCharge();
BOOL procCutTurnMove_init();
BOOL procCutTurnMove();
BOOL procCutReverse_init(daPy_ANM);
BOOL procCutReverse();
BOOL procJumpCut_init(int);
BOOL procJumpCut();
BOOL procJumpCutLand_init();
BOOL procJumpCutLand();
BOOL procCutExMJ_init(int);
BOOL procCutExMJ();
BOOL procCutKesa_init();
BOOL procCutKesa();
J3DAnmTevRegKey* getBombBrk() { return mpBombBrk; }
J3DAnmTextureSRTKey* getIceArrowBtk() { return mpIceArrowBtk; }
J3DAnmTextureSRTKey* getLightArrowBtk() { return mpLightArrowBtk; }
BOOL checkUpperAnime(u16 i_idx) const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == i_idx; }
BOOL checkNoUpperAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xFFFF; }
BOOL checkGrabAnime() const { return checkGrabAnimeLight() || checkGrabAnimeHeavy(); };
BOOL checkGrabAnimeLight() const { return checkUpperAnime(LKANM_BCK_GRABWAIT); };
BOOL checkGrabAnimeHeavy() const { return checkUpperAnime(LKANM_BCK_GRABWAITB); };
BOOL checkBoomerangCatchAnime() const { return checkUpperAnime(LKANM_BCK_BOOMCATCH); };
BOOL checkBoomerangThrowAnime() const { return checkUpperAnime(LKANM_BCK_BOOMTHROW); };
BOOL checkBoomerangReadyAnime() const { return checkUpperAnime(LKANM_BCK_BOOMWAIT); };
BOOL checkHookshotReadyAnime() const { return checkUpperAnime(LKANM_BCK_HOOKSHOTWAIT); }
BOOL checkDashDamageAnime() const { return checkUpperAnime(LKANM_BCK_DAMDASH); }
BOOL checkBowReloadAnime() const { return checkUpperAnime(LKANM_BCK_ARROWRELORD); }
BOOL checkBowShootAnime() const { return checkUpperAnime(LKANM_BCK_ARROWSHOOT); }
BOOL checkBowWaitAnime() const { return checkUpperAnime(LKANM_BCK_BOWWAIT); }
BOOL checkGuardSlip() const {
return mCurProc == daPyProc_GUARD_SLIP_e ||
mCurProc == daPyProc_CROUCH_DEFENSE_SLIP_e;
}
BOOL checkUpperGuardAnime() const {
return checkUpperAnime(LKANM_BCK_ATNG) ||
checkUpperAnime(LKANM_BCK_ATNGHAM);
}
s16 checkTinkleShield() const { return mTinkleShieldTimer; }
void setTinkleShield(s16 time) { mTinkleShieldTimer = time; }
BOOL checkNoDamageMode() const { return checkEquipDragonShield() || checkTinkleShield() != 0; }
s16 checkTinkleHover() const { return mTinkleHoverTimer; }
void setHoverBoots(s16 time) {
onNoResetFlg0(daPyFlg0_HOVER_BOOTS);
mTinkleHoverTimer = time;
}
void onShipTact() { onNoResetFlg1(daPyFlg1_SHIP_TACT); }
void offShipTact() { offNoResetFlg1(daPyFlg1_SHIP_TACT); }
BOOL checkShipGetOff() { return mCurProc == daPyProc_SHIP_GET_OFF_e; }
void onShipDrop(s16 param_1) {
onNoResetFlg0(daPyFlg0_SHIP_DROP);
m3550 = param_1;
}
BOOL checkCarryActionNow() const {
return mCurProc == daPyProc_GRAB_PUT_e ||
mCurProc == daPyProc_GRAB_UP_e ||
mCurProc == daPyProc_GRAB_THROW_e;
}
BOOL checkNoControll() const { return dComIfGp_getPlayer(0) != this; }
void exchangeGrabActor(fopAc_ac_c* actor) { mActorKeepGrab.setData(actor); }
void getDekuLeafWindPos() const {}
void getBoomerangCatchPos() const {}
void getLineTopPos() {}
cXyz getHookshotRootPos() const { return mHookshotRootPos; }
void getIceParticleBtk() {}
void getIceWaterParticleBtk() {}
void getShadowID() const {}
void npcStartRestartRoom() { startRestartRoom(5, 0xC9, -1.0f, 0); }
void setDaiokutaEnd() {}
void setWhirlId(fpc_ProcID id) { mWhirlId = id; }
void decrementBombCnt() {
if (mActivePlayerBombs != 0) {
mActivePlayerBombs--;
}
}
BOOL checkSwordEquip() const {
return dComIfGs_getSelectEquip(0) != dItem_NONE_e || checkSwordMiniGame();
}
int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
int getStartMode() { return (fopAcM_GetParam(this) >> 0x0C) & 0xF; }
static int getStartModeFromParam(u32 param) { return (param >> 0x0C) & 0xF; }
int getStartEvent() { return (fopAcM_GetParam(this) >> 0x18) & 0xFF; }
void onModeFlg(u32 flag) { mModeFlg |= flag; }
void offModeFlg(u32 flag) { mModeFlg &= ~flag; }
u32 checkModeFlg(u32 flag) const { return mModeFlg & flag; }
void clearDamageWait() { offModeFlg(ModeFlg_DAMAGE); }
request_of_phase_process_class* getPhase() { return &mPhase; }
J3DAnmTransform* getNowAnmPackUnder(daPy_UNDER idx) { return mAnmRatioUnder[idx].getAnmTransform(); }
J3DAnmTransform* getNowAnmPackUpper(daPy_UPPER idx) { return mAnmRatioUpper[idx].getAnmTransform(); }
BOOL doButton() const { return mItemButton & BTN_A; }
BOOL swordButton() const { return mItemButton & BTN_B; }
BOOL itemButtonX() const { return mItemButton & BTN_X; }
BOOL itemButtonY() const { return mItemButton & BTN_Y; }
BOOL itemButtonZ() const { return mItemButton & BTN_Z; }
BOOL spActionButton() const { return mItemButton & BTN_R; }
BOOL doTrigger() const { return mItemTrigger & BTN_A; }
BOOL talkTrigger() const { return mItemTrigger & BTN_A; }
BOOL spBattleTrigger() const {return mItemTrigger & BTN_A; }
BOOL swordTrigger() const { return mItemTrigger & BTN_B; }
BOOL cancelTrigger() const { return mItemTrigger & BTN_B; }
BOOL itemTriggerX() const { return mItemTrigger & BTN_X; }
BOOL itemTriggerY() const { return mItemTrigger & BTN_Y; }
BOOL itemTriggerZ() const { return mItemTrigger & BTN_Z; }
BOOL spLTrigger() const { return mItemTrigger & BTN_L; }
BOOL spActionTrigger() const { return mItemTrigger & BTN_R; }
BOOL allTrigger() const { return mItemTrigger & (BTN_A | BTN_B | BTN_X | BTN_Y | BTN_Z); }
void otherWeaponTrigger() const {}
BOOL checkPlayerDemoMode() const { return mDemo.getDemoType() != 0; }
void checkSpecialDemoMode() const {}
f32 getAnmSpeedStickRate(f32 param_0, f32 param_1) {
return param_0 + (mStickDistance * (param_1 - param_0));
}
void seStartSystem(u32 i_seNum) { mDoAud_seStart(i_seNum); }
BOOL checkAttentionLock() { return mpAttention->Lockon(); }
void checkBoomerangRock() {}
void checkBothItemEquipAnime() const {}
void checkCrawlWaterIn() {}
void checkDoubleItemEquipAnime() const {}
void checkFaceTypeNot() const {}
void checkIsland() const {}
void checkMirrorShieldEquip() const {}
void checkPowerGloveEquip() const {}
void checkRopeThrowAnime() const {}
void checkShieldEquip() const {}
void checkSwordEquipAnime() const {}
void getBombWaterPillarBrk() {} // mpGwp00BrkData?
void getBombWaterPillarBtk() {} // mpGwp00BtkData?
void getTactLeftHandPos() const {}
void setFootEffectPosType(u8) {}
void setSpeedAndAngleBoomerang() {}
void setSpeedAndAngleBow() {}
void setSpeedAndAngleHookshot() {}
void setSpeedAndAngleRope() {}
virtual void setPlayerPosAndAngle(cXyz*, s16);
virtual void setPlayerPosAndAngle(cXyz*, csXyz*);
virtual void setPlayerPosAndAngle(MtxP);
virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int);
virtual void changeTextureAnime(u16, u16, int);
virtual f32 getGroundY() { return mAcch.GetGroundH(); }
virtual MtxP getLeftHandMatrix() { return mpCLModel->getAnmMtx(0x08); } // cl_LhandA joint
virtual MtxP getRightHandMatrix() { return mpCLModel->getAnmMtx(0x0C); } // cl_RhandA joint
virtual s32 getTactMusic() const;
virtual int getTactTimerCancel() const;
virtual BOOL checkPlayerGuard() const;
virtual fopAc_ac_c* getGrabMissActor();
virtual u32 checkPlayerFly() const {
// Note: These flags combine into 0x10452822.
return checkModeFlg(
ModeFlg_MIDAIR |
ModeFlg_HANG |
ModeFlg_ROPE |
ModeFlg_IN_SHIP |
ModeFlg_CLIMB |
ModeFlg_SWIM |
ModeFlg_LADDER |
ModeFlg_CAUGHT
);
}
virtual BOOL checkFrontRoll() const { return mCurProc == daPyProc_FRONT_ROLL_e; }
virtual BOOL checkBottleSwing() const { return mCurProc == daPyProc_BOTTLE_SWING_e; }
virtual BOOL checkCutCharge() const { return mCurProc == daPyProc_CUT_TURN_MOVE_e; }
virtual BOOL getBokoFlamePos(cXyz*);
virtual BOOL checkTactWait() const { return mCurProc == daPyProc_TACT_WAIT_e; }
virtual void setTactZev(fpc_ProcID, int, char*);
virtual void onDekuSpReturnFlg(u8 i_point);
virtual f32 getBaseAnimeFrameRate() { return mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); }
virtual f32 getBaseAnimeFrame() { return mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); }
virtual fpc_ProcID getItemID() const { return mActorKeepEquip.getID(); }
virtual fpc_ProcID getThrowBoomerangID() const { return mActorKeepThrow.getID(); }
virtual fpc_ProcID getGrabActorID() const { return mActorKeepGrab.getID(); }
virtual BOOL checkGrabBarrel() { return checkGrabBarrelSearch(1); }
virtual u32 checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 2) || checkNoResetFlg0(daPyFlg0_NO_DRAW); }
virtual BOOL checkRopeTag() { return mActorKeepEquip.getActor() == NULL; }
virtual BOOL checkRopeReadyAnime() const { return checkUpperAnime(LKANM_BCK_ROPETHROWWAIT); }
virtual void voiceStart(u32);
virtual void setOutPower(f32, s16, int);
virtual void onFrollCrashFlg(u32 param_1) { m3620 = param_1; onNoResetFlg0(daPyFlg0_UNK8); }
virtual MtxP getModelJointMtx(u16 idx) { return mpCLModel->getAnmMtx(idx); }
virtual f32 getOldSpeedY() { return mOldSpeed.y; }
virtual BOOL setHookshotCarryOffset(fpc_ProcID, const cXyz*);
virtual BOOL checkComboCutTurn() const { return mCurProc == daPyProc_CUT_TURN_e && mProcVar0.m3570 != 0; }
virtual void cancelChangeTextureAnime() { resetDemoTextureAnime(); }
public:
/* 0x0320 */ request_of_phase_process_class mPhase;
/* 0x0328 */ J3DModelData* mpCLModelData;
/* 0x032C */ J3DModel* mpCLModel;
/* 0x0330 */ J3DModel* mpKatsuraModel;
/* 0x0334 */ J3DModel* mpYamuModel;
/* 0x0338 */ ResTIMG* mpCurrLinktex;
/* 0x033C */ ResTIMG mOtherLinktex;
/* 0x035C */ J3DAnmTexPattern* mpAnmTexPatternData;
/* 0x0360 */ J3DTexNoAnm* m_texNoAnms;
/* 0x0364 */ J3DAnmTextureSRTKey* mpTexScrollResData;
/* 0x0368 */ J3DTexMtxAnm* m_texMtxAnm;
/* 0x036C */ daPy_matAnm_c* m_tex_eye_scroll[2];
/* 0x0374 */ J3DShape* mpZOffBlendShape[4];
/* 0x0384 */ J3DShape* mpZOffNoneShape[4];
/* 0x0394 */ J3DShape* mpZOnShape[4];
/* 0x03A4 */ J3DShape* mpLhandShape;
/* 0x03A8 */ J3DShape* mpRhandShape;
/* 0x03AC */ dBgS_AcchCir mAcchCir[3];
/* 0x046C */ dBgS_LinkAcch mAcch;
/* 0x0630 */ dBgS_LinkLinChk mLinkLinChk;
/* 0x069C */ dBgS_RopeLinChk mRopeLinChk;
/* 0x0708 */ dBgS_BoomerangLinChk mBoomerangLinChk;
/* 0x0774 */ dBgS_LinkGndChk mGndChk;
/* 0x07C8 */ dBgS_LinkRoofChk mRoofChk;
/* 0x0814 */ dBgS_ArrowLinChk mArrowLinChk;
/* 0x0880 */ dBgS_MirLightLinChk mMirLightLinChk;
/* 0x08EC */ dBgS_ObjGndChk_Spl mLavaGndChk;
/* 0x0940 */ cBgS_PolyInfo mPolyInfo;
/* 0x0950 */ daPy_HIO_c* m_HIO;
/* 0x0954 */ J3DModel* mpHandsModel;
/* 0x0958 */ J3DModel* mpEquippedSwordModel;
/* 0x095C */ J3DModel* mpSwgripaModel;
/* 0x0960 */ J3DModel* mpSwgripmsModel;
/* 0x0964 */ mDoExt_bckAnm mSwgripmsabBckAnim;
/* 0x0974 */ J3DAnmTevRegKey* mpTswgripmsabBrk;
/* 0x0978 */ J3DAnmTextureSRTKey* mpTswgripmsBtk;
/* 0x097C */ J3DModel* mpPodmsModel;
/* 0x0980 */ J3DModel* mpEquippedShieldModel;
/* 0x0984 */ J3DModel* mpShaModel;
/* 0x0988 */ J3DModel* mpShmsModel;
/* 0x098C */ mDoExt_bckAnm mAtngshaBck;
/* 0x099C */ J3DAnmTextureSRTKey* mpTshmsBtk;
/* 0x09A0 */ dDlst_mirrorPacket mMirrorPacket;
/* 0x2E7C */ J3DModel* mpYmsls00Model;
/* 0x2E80 */ J3DAnmTextureSRTKey* mpYmsls00Btk;
/* 0x2E84 */ J3DModel* mpHbootsModels[2];
/* 0x2E8C */ J3DModel* mpPringModel;
/* 0x2E90 */ JKRSolidHeap* mpItemHeaps[2];
/* 0x2E98 */ J3DModel* mpEquipItemModel;
/* 0x2E9C */ mDoExt_bckAnm mSwordAnim;
/* 0x2EAC */ mDoExt_McaMorf* mpParachuteFanMorf;
/* 0x2EB0 */ J3DAnmTevRegKey* mpBombBrk;
/* 0x2EB4 */ J3DAnmTevRegKey* mpGwp00BrkData;
/* 0x2EB8 */ J3DAnmTextureSRTKey* mpGwp00BtkData;
/* 0x2EBC */ J3DAnmTextureSRTKey* mpGicer00Btk;
/* 0x2EC0 */ J3DAnmTextureSRTKey* mpIceArrowBtk;
/* 0x2EC4 */ J3DAnmTextureSRTKey* mpLightArrowBtk;
/* 0x2EC8 */ J3DAnmTextureSRTKey* mpGicer01Btk;
/* 0x2ECC */ JKRSolidHeap* mpItemAnimeHeap;
/* 0x2ED0 */ void* m_item_bck_buffer;
/* 0x2ED4 */ J3DAnmTextureSRTKey* mpEquipItemBtk;
/* 0x2ED8 */ J3DAnmTextureSRTKey* mpSwordBtk;
/* 0x2EDC */ J3DAnmTevRegKey* mpEquipItemBrk;
/* 0x2EE0 */ J3DModel* mpBottleContentsModel;
/* 0x2EE4 */ J3DModel* mpBottleCapModel;
/* 0x2EE8 */ J3DModel* mpSwordModel1;
/* 0x2EEC */ J3DModel* mpSwordTipStabModel;
/* 0x2EF0 */ J3DAnmColor* mpCutfBpk;
/* 0x2EF4 */ J3DAnmTextureSRTKey* mpCutfBtk;
/* 0x2EF8 */ J3DAnmTevRegKey* mpCutfBrk;
/* 0x2EFC */ mDoExt_brkAnm m2EFC;
/* 0x2F14 */ J3DModel* mpSuimenMunyaModel;
/* 0x2F18 */ J3DAnmTextureSRTKey* mpSuimenMunyaBtk;
/* 0x2F1C */ J3DModel* mpYuchw00Model;
/* 0x2F20 */ mDoExt_bckAnm mYuchw00Bck;
/* 0x2F30 */ J3DAnmTextureSRTKey* mpYuchw00Btk;
/* 0x2F34 */ J3DAnmTevRegKey* mpYuchw00Brk;
/* 0x2F38 */ J3DModel* mpYbafo00Model;
/* 0x2F3C */ J3DAnmTextureSRTKey* mpYbafo00Btk;
/* 0x2F40 */ daPy_aura_c mMagicArmorAuraEntries[6];
/* 0x2F70 */ mDoExt_brkAnm mYaura00rBrk;
/* 0x2F88 */ J3DAnmTextureSRTKey* mpYaura00Btk;
/* 0x2F8C */ J3DModel* mpYmgcs00Model;
/* 0x2F90 */ mDoExt_brkAnm mYmgcs00Brk;
/* 0x2FA8 */ J3DAnmTextureSRTKey* mpYmgcs00Btk;
/* 0x2FAC */ mDoExt_MtxCalcAnmBlendTblOld* m_pbCalc[2];
/* 0x2FB4 */ mDoExt_AnmRatioPack mAnmRatioUnder[2];
/* 0x2FC4 */ mDoExt_AnmRatioPack mAnmRatioUpper[3];
/* 0x2FDC */ daPy_anmHeap_c m_anm_heap_under[2];
/* 0x2FFC */ daPy_anmHeap_c m_anm_heap_upper[3];
/* 0x302C */ J3DFrameCtrl mFrameCtrlUnder[2];
/* 0x3054 */ J3DFrameCtrl mFrameCtrlUpper[3];
/* 0x3090 */ daPy_sightPacket_c mSightPacket;
/* 0x30E0 */ JAIZelAnime mJAIZelAnime;
/* 0x3178 */ void* m_sanm_buffer;
/* 0x317C */ daPy_actorKeep_c mActorKeepEquip;
/* 0x3184 */ daPy_actorKeep_c mActorKeepThrow;
/* 0x318C */ daPy_actorKeep_c mActorKeepGrab;
/* 0x3194 */ daPy_actorKeep_c mActorKeepRope;
/* 0x319C */ fopAc_ac_c* mpAttnActorLockOn;
/* 0x31A0 */ fopAc_ac_c* mpAttnActorAction;
/* 0x31A4 */ fopAc_ac_c* mpAttnActorA;
/* 0x31A8 */ fopAc_ac_c* mpAttnActorX;
/* 0x31AC */ fopAc_ac_c* mpAttnActorY;
/* 0x31B0 */ fopAc_ac_c* mpAttnActorZ;
/* 0x31B4 */ mDoExt_MtxCalcOldFrame* m_old_fdata;
/* 0x31B8 */ daPy_anmHeap_c m_tex_anm_heap;
/* 0x31C8 */ daPy_anmHeap_c m_tex_scroll_heap;
/* 0x31D8 */ int mCurProc;
/* 0x31DC */ ProcFunc mCurProcFunc;
/* 0x31E8 */ daPy_footEffect_c mFootEffect[2];
/* 0x3280 */ dPa_rippleEcallBack m3280;
/* 0x3294 */ daPy_swimTailEcallBack_c mSwimTailEcallBack[2];
/* 0x32E4 */ daPy_mtxFollowEcallBack_c m32E4;
/* 0x32F0 */ daPy_mtxFollowEcallBack_c m32F0;
/* 0x32FC */ dPa_smokeEcallBack mSmokeEcallBack;
/* 0x331C */ dPa_cutTurnEcallBack_c m331C;
/* 0x332C */ dPa_cutTurnEcallBack_c m332C;
/* 0x333C */ dPa_cutTurnEcallBack_c m333C;
/* 0x334C */ daPy_waterDropEcallBack_c m334C;
/* 0x336C */ daPy_waterDropEcallBack_c m336C;
/* 0x338C */ daPy_followEcallBack_c m338C;
/* 0x33A8 */ daPy_mtxPosFollowEcallBack_c m33A8;
/* 0x33B8 */ daPy_dmEcallBack_c mDmEcallBack[4];
/* 0x33E8 */ daPy_mtxFollowEcallBack_c m33E8;
/* 0x33F4 */ daPy_fanSwingEcallBack_c mFanSwingCb;
/* 0x3400 */ daPy_mtxPosFollowEcallBack_c m3400;
/* 0x3410 */ daPy_followEcallBack_c m3410;
/* 0x342C */ daPy_mtxFollowEcallBack_c m342C;
/* 0x3438 */ daPy_followEcallBack_c m3438;
/* 0x3454 */ daPy_mtxFollowEcallBack_c m3454;
/* 0x3460 */ daPy_mtxPosFollowEcallBack_c m3460[2];
/* 0x3480 */ dAttention_c* mpAttention;
/* 0x3484 */ dAttList_c* mpAttnEntryA;
/* 0x3488 */ dAttList_c* mpAttnEntryX;
/* 0x348C */ dAttList_c* mpAttnEntryY;
/* 0x3490 */ dAttList_c* mpAttnEntryZ;
/* 0x3494 */ char* m3494;
/* 0x3498 */ LIGHT_INFLUENCE mLightInfluence;
/* 0x34B8 */ u8 mDirection;
/* 0x34B9 */ u8 mFrontWallType;
/* 0x34BA */ u8 m34BA;
/* 0x34BB */ u8 mCurrItemHeapIdx;
/* 0x34BC */ u8 m34BC;
/* 0x34BD */ u8 mReadyItemBtn; // Which of the three item buttons the player last used.
/* 0x34BE */ u8 m34BE;
/* 0x34BF */ s8 mReverb;
/* 0x34C0 */ u8 mLeftHandIdx;
/* 0x34C1 */ u8 mRightHandIdx;
/* 0x34C2 */ u8 m34C2;
/* 0x34C3 */ u8 m34C3;
/* 0x34C4 */ u8 m34C4;
/* 0x34C5 */ u8 m34C5;
/* 0x34C6 */ u8 m34C6;
/* 0x34C7 */ u8 mActivePlayerBombs;
/* 0x34C8 */ u8 mItemTrigger;
/* 0x34C9 */ u8 mItemButton;
/* 0x34CA */ u8 m34CA;
/* 0x34CB */ u8 mDekuSpRestartPoint;
/* 0x34CC */ u8 m34CC;
/* 0x34CD */ u8 m34CD;
/* 0x34CE */ u8 m34CE;
/* 0x34D0 */ s16 m34D0;
/* 0x34D2 */ s16 m34D2;
/* 0x34D4 */ s16 m34D4;
/* 0x34D6 */ s16 m34D6;
/* 0x34D8 */ s16 m34D8;
/* 0x34DA */ s16 m34DA;
/* 0x34DC */ s16 m34DC;
/* 0x34DE */ s16 m34DE;
/* 0x34E0 */ s16 m34E0;
/* 0x34E2 */ s16 m34E2;
/* 0x34E4 */ s16 m34E4;
/* 0x34E6 */ s16 m34E6;
/* 0x34E8 */ s16 m34E8;
/* 0x34EA */ s16 m34EA;
/* 0x34EC */ s16 m34EC;
/* 0x34EE */ u16 mSeAnmIdx;
/* 0x34F0 */ u16 m34F0;
/* 0x34F2 */ s16 m34F2;
/* 0x34F4 */ s16 m34F4;
/* 0x34F6 */ s16 m34F6;
/* 0x34F8 */ s16 m34F8;
/* 0x34FA */ s16 m34FA;
/* 0x34FC */ s16 m34FC;
/* 0x34FE */ s16 m34FE;
/* 0x3500 */ s16 m3500;
/* 0x3502 */ s16 m3502;
/* 0x3504 */ s16 m3504;
/* 0x3506 */ s16 m3506;
/* 0x3508 */ s16 m3508;
/* 0x350A */ s16 m350A;
/* 0x350C */ s16 m350C;
/* 0x350E */ s16 m350E;
/* 0x3510 */ s16 m3510;
/* 0x3512 */ s16 m3512;
/* 0x3514 */ s16 m3514;
/* 0x3516 */ s16 m3516;
/* 0x3518 */ s16 m3518;
/* 0x351A */ s16 m351A;
/* 0x351C */ s16 m351C;
/* 0x351E */ s16 m351E;
/* 0x3520 */ u8 m3520[0x3522 - 0x3520];
/* 0x3522 */ s16 m3522;
/* 0x3524 */ s16 m3524;
/* 0x3526 */ s16 m3526;
/* 0x3528 */ s16 m3528;
/* 0x352A */ s16 m352A;
/* 0x352C */ s16 m352C;
/* 0x352E */ s16 m352E;
/* 0x3530 */ u16 m3530;
/* 0x3532 */ u16 m3532;
/* 0x3534 */ s16 m3534;
/* 0x3536 */ s16 m3536;
/* 0x3538 */ s16 m3538;
/* 0x353A */ s16 m353A;
/* 0x353C */ s16 m353C;
/* 0x353E */ s16 m353E;
/* 0x3540 */ s16 m3540;
/* 0x3542 */ s16 m3542;
/* 0x3544 */ s16 m3544;
/* 0x3546 */ s16 mShieldFrontRangeYAngle;
/* 0x3548 */ s16 m3548;
/* 0x354A */ u8 m354A[0x354C - 0x354A];
/* 0x354C */ s16 mTinkleHoverTimer;
/* 0x354E */ s16 mTinkleShieldTimer;
/* 0x3550 */ s16 m3550;
/* 0x3552 */ u16 mKeepItem; // The item Link was previously holding in his hand, and is now temporarily put away.
/* 0x3554 */ s16 m3554;
/* 0x3556 */ u8 m3556[0x3558 - 0x3556];
/* 0x3558 */ s16 m3558;
/* 0x355A */ s16 m355A;
/* 0x355C */ s16 m355C;
/* 0x355E */ s16 m355E;
/* 0x3560 */ u16 mEquipItem; // The item Link is currently holding in his hand.
/* 0x3562 */ u16 m3562;
/* 0x3564 */ s16 m3564;
/* 0x3566 */ s16 m3566;
/* 0x3568 */ s16 m3568;
/* 0x356C */ int mCameraInfoIdx;
// `mProcVar`'s are variables that are context dependent for each `PROC` action.
// (The exact setup may need to be simplified later)
union {
s32 m3570;
daPy_ANM mDamageAnm;
int mBottleItem;
} /* 0x3570 */ mProcVar0;
/* 0x3574 */ s32 m3574;
/* 0x3578 */ int m3578;
/* 0x357C */ int m357C;
/* 0x3580 */ int m3580;
/* 0x3584 */ int mCurrAttributeCode;
/* 0x3588 */ int m3588;
/* 0x358C */ int mStaffIdx;
/* 0x3590 */ int mEventIdx;
/* 0x3594 */ int mRestartPoint;
/* 0x3598 */ f32 m3598;
/* 0x359C */ f32 m359C;
/* 0x35A0 */ f32 m35A0;
/* 0x35A4 */ f32 m35A4;
/* 0x35A8 */ f32 m35A8;
/* 0x35AC */ f32 m35AC;
/* 0x35B0 */ f32 mStickDistance;
/* 0x35B4 */ f32 m35B4;
/* 0x35B8 */ f32 m35B8;
/* 0x35BC */ f32 mVelocity;
/* 0x35C0 */ u8 m35C0[0x35C4 - 0x35C0];
/* 0x35C4 */ f32 m35C4;
/* 0x35C8 */ f32 m35C8;
/* 0x35CC */ f32 m35CC;
/* 0x35D0 */ f32 m35D0;
/* 0x35D4 */ f32 m35D4;
/* 0x35D8 */ f32 m35D8;
/* 0x35DC */ f32 m35DC;
/* 0x35E0 */ f32 m35E0;
/* 0x35E4 */ f32 m35E4;
/* 0x35E8 */ f32 m35E8;
/* 0x35EC */ f32 m35EC;
/* 0x35F0 */ f32 m35F0;
/* 0x35F4 */ f32 m35F4;
/* 0x35F8 */ f32 m35F8;
/* 0x35FC */ f32 m35FC;
/* 0x3600 */ f32 m3600;
/* 0x3604 */ f32 m3604;
/* 0x3608 */ f32 m3608;
/* 0x360C */ f32 mSeAnmRate;
/* 0x3610 */ f32 m3610;
/* 0x3614 */ int m3614;
/* 0x3618 */ u32 mModeFlg;
/* 0x361C */ u32 mMtrlSndId;
/* 0x3620 */ u32 m3620;
/* 0x3624 */ u32 m3624;
/* 0x3628 */ fpc_ProcID m3628;
/* 0x362C */ fpc_ProcID mTactZevPartnerId;
/* 0x3630 */ fpc_ProcID m3630;
/* 0x3634 */ fpc_ProcID mWhirlId;
#if VERSION > VERSION_DEMO
/* 0x3638 */ fpc_ProcID mMsgId;
#endif
/* 0x363C */ J3DFrameCtrl* mpSeAnmFrameCtrl;
/* 0x3640 */ s16 m3640;
/* 0x3644 */ f32 m3644;
/* 0x3648 */ Quaternion m3648;
/* 0x3658 */ Quaternion m3658;
/* 0x3668 */ J3DTransformInfo m3668;
/* 0x3688 */ cXyz m3688;
/* 0x3694 */ cXyz mOldSpeed;
/* 0x36A0 */ cXyz m36A0;
/* 0x36AC */ cXyz m36AC;
/* 0x36B8 */ cXyz m36B8;
/* 0x36C4 */ cXyz m36C4;
/* 0x36D0 */ cXyz m36D0;
/* 0x36DC */ cXyz m36DC;
/* 0x36E8 */ cXyz mHookshotRootPos;
/* 0x36F4 */ cXyz m36F4;
/* 0x3700 */ cXyz m3700;
/* 0x370C */ cXyz m370C;
/* 0x3718 */ cXyz m3718;
/* 0x3724 */ cXyz m3724;
/* 0x3730 */ cXyz m3730;
/* 0x373C */ cXyz m373C;
/* 0x3748 */ cXyz m3748;
/* 0x3754 */ u8 m3754[0x37B4 - 0x3754];
/* 0x37B4 */ Mtx m37B4;
/* 0x37E4 */ daPy_swBlur_c mSwBlur;
/* 0x3DB8 */ daPy_footData_c mFootData[2];
/* 0x3FE8 */ dCcD_Stts mStts;
/* 0x4024 */ dCcD_Cyl mCyl;
/* 0x4154 */ dCcD_Cyl mWindCyl;
/* 0x4284 */ dCcD_Cyl mAtCyl;
/* 0x43B4 */ dCcD_Cyl mLightCyl;
/* 0x44E4 */ dCcD_Cps mAtCps[3];
/* 0x488C */ dCcD_Cps mFanWindCps;
/* 0x49C4 */ dCcD_Sph mFanWindSph;
/* 0x4AF0 */ dCcD_Cps mFanLightCps;
struct ProcInitTableEntry {
/* 0x00 */ ProcFunc mProcFunc;
/* 0x0C */ u32 mProcFlags;
}; // Size: 0x10
static ProcInitTableEntry mProcInitTable[];
static ProcFunc mDemoProcInitFuncTable[];
struct TexAnmTableEntry {
/* 0x00 */ u16 mBtpIdx;
/* 0x02 */ u16 mBtkIdx;
}; // Size: 0x04
static const TexAnmTableEntry mTexAnmIndexTable[];
static const daPy_anmIndex_c mSwordAnmIndexTable[];
static const daPy_anmIndex_c mBokoAnmIndexTable[];
static const daPy_anmIndex_c mHammerAnmIndexTable[];
struct AnmDataTableEntry {
/* 0x00 */ daPy_anmIndex_c mAnmIdx;
/* 0x04 */ u8 mLeftHandIdx;
/* 0x05 */ u8 mRightHandIdx;
/* 0x06 */ u16 mTexAnmIdx;
}; // Size: 0x08
static const AnmDataTableEntry mAnmDataTable[];
}; // Size: 0x4C28
#endif /* D_A_PLAYER_MAIN */