d_a_midna mostly done (#2237)

This commit is contained in:
Caroline Madsen
2024-11-06 22:20:22 -05:00
committed by GitHub
parent 305f87ee57
commit ddc1c166e7
18 changed files with 3737 additions and 1674 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ struct J3DGXColor : public GXColor {
/* 8000E538 */ J3DGXColor() {}
J3DGXColor(J3DGXColor const& other) { __memcpy(this, &other, sizeof(J3DGXColor)); }
J3DGXColor(GXColor const& color) : GXColor(color) {}
J3DGXColor& operator=(GXColor color) {
J3DGXColor& operator=(const GXColor& color) {
*(GXColor*)this = color;
return *this;
}
+65 -2
View File
@@ -14,9 +14,72 @@ struct Z2EnemyArea {
};
enum Z2EnemyID {
Z2_ENEMY_ID_0,
/* 0x00 */ Z2_ENEMY_NULL,
/* 0x01 */ Z2_ENEMY_S1,
/* 0x02 */ Z2_ENEMY_YK,
/* 0x03 */ Z2_ENEMY_YR,
/* 0x04 */ Z2_ENEMY_YG,
/* 0x05 */ Z2_ENEMY_YC,
/* 0x06 */ Z2_ENEMY_YD,
/* 0x07 */ Z2_ENEMY_RDY,
/* 0x08 */ Z2_ENEMY_YMB,
/* 0x09 */ Z2_ENEMY_UNK,
/* 0x0A */ Z2_ENEMY_WB,
/* 0x0B */ Z2_ENEMY_RD,
/* 0x0C */ Z2_ENEMY_DN,
/* 0x0D */ Z2_ENEMY_KR,
/* 0x0E */ Z2_ENEMY_ST,
/* 0x0F */ Z2_ENEMY_TK,
/* 0x10 */ Z2_ENEMY_TK2,
/* 0x11 */ Z2_ENEMY_CR,
/* 0x12 */ Z2_ENEMY_DF,
/* 0x13 */ Z2_ENEMY_FS,
/* 0x14 */ Z2_ENEMY_SB,
/* 0x15 */ Z2_ENEMY_PM,
/* 0x16 */ Z2_ENEMY_DB,
/* 0x17 */ Z2_ENEMY_KG,
/* 0x18 */ Z2_ENEMY_SH,
/* 0x19 */ Z2_ENEMY_SF,
/* 0x1A */ Z2_ENEMY_BS,
/* 0x1B */ Z2_ENEMY_SM,
/* 0x1C */ Z2_ENEMY_BA,
/* 0x1D */ Z2_ENEMY_BU,
/* 0x1E */ Z2_ENEMY_HM,
/* 0x1F */ Z2_ENEMY_GE,
/* 0x20 */ Z2_ENEMY_HZ,
/* 0x21 */ Z2_ENEMY_WS,
/* 0x22 */ Z2_ENEMY_OC,
/* 0x23 */ Z2_ENEMY_FZ,
/* 0x24 */ Z2_ENEMY_FB,
/* 0x25 */ Z2_ENEMY_BG,
/* 0x26 */ Z2_ENEMY_MM,
/* 0x27 */ Z2_ENEMY_NZ,
/* 0x28 */ Z2_ENEMY_PO,
/* 0x29 */ Z2_ENEMY_RB,
/* 0x2A */ Z2_ENEMY_SG,
/* 0x2B */ Z2_ENEMY_HB,
/* 0x2C */ Z2_ENEMY_GB,
/* 0x2D */ Z2_ENEMY_MS,
/* 0x2E */ Z2_ENEMY_DD,
/* 0x2F */ Z2_ENEMY_BI,
/* 0x30 */ Z2_ENEMY_TT,
/* 0x31 */ Z2_ENEMY_AI,
/* 0x32 */ Z2_ENEMY_DK,
/* 0x33 */ Z2_ENEMY_WW,
/* 0x34 */ Z2_ENEMY_GI,
/* 0x35 */ Z2_ENEMY_SM2,
/* 0x36 */ Z2_ENEMY_SW,
/* 0x37 */ Z2_ENEMY_RDB,
/* 0x38 */ Z2_ENEMY_KK,
/* 0x39 */ Z2_ENEMY_HP,
/* 0x3A */ Z2_ENEMY_ZH,
/* 0x3B */ Z2_ENEMY_GM,
/* 0x3C */ Z2_ENEMY_GG,
/* 0x3D */ Z2_ENEMY_MF,
/* 0x3E */ Z2_ENEMY_ZM,
/* 0x3F */ Z2_ENEMY_TN,
};
class Z2SoundObjMgr : public JASGlobalInstance<Z2SoundObjMgr>, protected JSUList<Z2CreatureEnemy> {
public:
Z2SoundObjMgr();
+48 -5
View File
@@ -3284,6 +3284,46 @@ public:
u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; }
BOOL checkClimbFall() { return checkLadderFall(); }
bool checkMidnaWolfDashAnime() { return checkNoResetFlg1(FLG1_DASH_MODE); }
bool checkMidnaClingAnime() { return mMidnaAnm == 1; }
bool checkMidnaLowClingAnime() { return mMidnaAnm == 2; }
bool checkMidnaLookAroundAnime() { return mMidnaAnm == 3; }
bool checkMidnaPanicAnime() { return mMidnaAnm == 5; }
bool checkMidnaWolfDeadAnime() { return mMidnaAnm == 6; }
bool checkMidnaWolfSwimDeadAnime() { return mMidnaAnm == 7; }
bool checkMidnaRopeWaitStaggerAnime() { return mMidnaAnm == 8; }
bool checkMidnaRopeMoveStaggerAnime() { return mMidnaAnm == 9; }
bool checkMidnaGanonCatchAnm() { return mMidnaAnm == 10; }
bool checkMidnaGanonThrowLeftAnm() { return mMidnaAnm == 11; }
bool checkMidnaGanonThrowRightAnm() { return mMidnaAnm == 12; }
bool checkMidnaDigInAnime() { return mMidnaAnm == 13; }
void clearMidnaMsgNum() {
mMidnaMsgNum = 0xffff;
mMidnaMsg = NULL;
}
void setEndGanonThrow() { mProcVar3.field_0x300e = 1; }
s16 getProcNeckX() { return field_0x30a0; }
s16 getMidnaProcNeckY() { return field_0x30d4; }
f32 getEyeMoveRateY() { return field_0x33f4; }
f32 getMidnaEyeMoveRateX() { return field_0x33f8; }
J3DModel* getMidnaModel() {
if (mClothesChangeWaitTimer != 0) {
return NULL;
} else {
return mpWlMidnaModel;
}
}
J3DModel* getMidnaMaskModel() { return mpWlMidnaMaskModel; }
J3DModel* getMidnaHandModel() { return mpWlMidnaHandModel; }
J3DModel* getMidnaHairHandModel() { return mpWlMidnaHairModel; }
cXyz* getMidnaHairAtnPos() { return &mMidnaHairAtnPos; }
const daAlink_AnmData* getAnmData(daAlink_ANM anmID) const { return &m_anmDataTable[anmID]; }
const daAlink_FaceTexData* getFaceTexData(daAlink_FTANM i_anmID) const { return &m_faceTexDataTable[i_anmID]; }
@@ -3428,6 +3468,9 @@ public:
BOOL checkCrawlWaterIn() { return mWaterY > current.pos.y + 15.5f; }
MtxP getWolfMidnaMatrix() { return mpLinkModel->getAnmMtx(0x19); }
s16 getIceDamageWaitTimer() const { return mIceDamageWaitTimer; }
const cXyz& getWindSpeed() const { return mWindSpeed; }
const cXyz& getHsChainTopPos() const { return mHookshotTopPos; }
const cXyz& getHsChainRootPos() const { return mHeldItemRootPos; }
@@ -3693,7 +3736,7 @@ public:
/* 0x02F98 */ u8 field_0x2f98;
/* 0x02F99 */ u8 field_0x2f99;
/* 0x02F9A */ s8 mVoiceReverbIntensity;
/* 0x02F9B */ u8 field_0x2f9b;
/* 0x02F9B */ u8 mMidnaAnm;
/* 0x02F9C */ u8 mSelectItemId;
/* 0x02F9D */ u8 field_0x2f9d;
/* 0x02F9E */ u8 mEffProc;
@@ -3777,7 +3820,7 @@ public:
/* 0x03000 */ s16 field_0x3000;
/* 0x03002 */ s16 field_0x3002;
/* 0x03004 */ s16 field_0x3004;
/* 0x03006 */ s16 field_0x3006;
/* 0x03006 */ s16 mIceDamageWaitTimer;
// `mProcVar`'s are variables that are context dependent for each `PROC` action.
// (The exact setup may need to be simplified later)
union {
@@ -3879,7 +3922,7 @@ public:
/* 0x030CE */ u16 mKeepItem;
/* 0x030D0 */ s16 field_0x30d0;
/* 0x030D2 */ s16 field_0x30d2;
/* 0x030D4 */ u16 field_0x30d4;
/* 0x030D4 */ s16 field_0x30d4;
/* 0x030D6 */ s16 field_0x30d6;
/* 0x030D8 */ u8 field_0x30d8[0x14];
/* 0x030EC */ s16 field_0x30ec;
@@ -4059,14 +4102,14 @@ public:
/* 0x03588 */ cXyz field_0x3588;
/* 0x03594 */ cXyz field_0x3594;
/* 0x035A0 */ cXyz field_0x35a0;
/* 0x035AC */ cXyz field_0x35ac;
/* 0x035AC */ cXyz mWindSpeed;
/* 0x035B8 */ cXyz field_0x35b8;
/* 0x035C4 */ cXyz field_0x35c4;
/* 0x035D0 */ cXyz field_0x35d0;
/* 0x035DC */ cXyz field_0x35dc;
/* 0x035E8 */ cXyz field_0x35e8;
/* 0x035F4 */ cXyz mMidnaAtnPos;
/* 0x03600 */ cXyz field_0x3600;
/* 0x03600 */ cXyz mMidnaHairAtnPos;
/* 0x0360C */ cXyz mKandelaarFlamePos;
/* 0x03618 */ cXyz field_0x3618;
/* 0x03624 */ cXyz field_0x3624;
+4 -1
View File
@@ -100,9 +100,12 @@ public:
}
MtxP getLegR3Mtx() { return mLegR3Mtx; }
MtxP getMidnaLocaterMtx() { return mpMorf->getModel()->getAnmMtx(4); }
private:
/* 0x568 */ u8 field_0x568[0x620 - 0x568];
/* 0x568 */ u8 field_0x568[8];
/* 0x570 */ mDoExt_McaMorfSO* mpMorf;
/* 0x574 */ u8 field_0x574[0x620 - 0x574];
/* 0x620 */ Mtx mLegR3Mtx;
/* 0x650 */ u8 field_0x650[0x6E1 - 0x650];
/* 0x6E1 */ u8 field_0x6e1;
+328 -172
View File
@@ -2,11 +2,82 @@
#define D_A_MIDNA_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "Z2AudioLib/Z2Creature.h"
#include "f_op/f_op_actor.h"
#include "d/d_bg_s_lin_chk.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_player.h"
#include "d/d_msg_flow.h"
#include "dolphin/types.h"
#include "d/actor/d_a_player.h"
class daKago_c;
class daMidna_matAnm_c : public J3DMaterialAnm {
public:
/* 804BC218 */ void init();
/* 804BC248 */ void calc(J3DMaterial*) const;
/* 804C63E0 */ ~daMidna_matAnm_c() {}
daMidna_matAnm_c() { init(); }
f32* getNowOffsetXP() { return &mNowOffsetX; }
f32* getNowOffsetYP() { return &mNowOffsetY; }
void setNowOffsetX(f32 offsetX) { mNowOffsetX = offsetX; }
void setNowOffsetY(f32 offsetY) { mNowOffsetY = offsetY; }
static bool getEyeMoveFlg() { return sEyeMoveFlg; }
static void offEyeMoveFlg() { sEyeMoveFlg = false; }
static void onEyeMoveFlg() { sEyeMoveFlg = true; }
static void setMorfFrame(u8 frame) { sMorfFrame = frame; }
static void decMorfFrame() { cLib_calcTimer(&sMorfFrame); }
static u8 getMorfFrame() { return sMorfFrame; }
/* 0x0F4 */ f32 mOldTransX;
/* 0x0F8 */ f32 mOldTransY;
/* 0x0FC */ f32 mNowOffsetX;
/* 0x100 */ f32 mNowOffsetY;
static bool sEyeMoveFlg;
static u8 sMorfFrame;
};
STATIC_ASSERT(sizeof(daMidna_matAnm_c) == 0x104);
class daMidna_hio_c0 {
public:
struct param {
/* 0x00 */ u8 field_0x00[0x14];
/* 0x14 */ f32 mScale;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
};
static param const m;
};
STATIC_ASSERT(sizeof(daMidna_hio_c0::param) == 0x20);
class daMidna_McaMorfCB1_c : public mDoExt_McaMorfCallBack1_c {
public:
/* 804BC36C */ int execute(u16, J3DTransformInfo*);
/* 804C6398 */ virtual ~daMidna_McaMorfCB1_c() {}
void setScale(cXyz* i_scale) { mpScale = i_scale; }
/* 0x4 */ cXyz* mpScale;
};
struct daMidna_anmData_s {
/* 0x0 */ u16 mResID;
/* 0x2 */ u16 mTexID;
/* 0x4 */ f32 mSoundFrame;
/* 0x8 */ u32 mSoundID;
};
struct daMidna_texData_s {
/* 0x0 */ u16 mBtpID;
/* 0x2 */ u16 mBtkID;
};
class daMidna_c;
typedef int (daMidna_c::*daMidna_func)();
@@ -22,35 +93,124 @@ typedef int (daMidna_c::*daMidna_func)();
class daMidna_c : public fopAc_ac_c {
public:
enum daMidna_ERFLG0 {
ERFLG0_UNK_100 = 0x100,
ERFLG0_NO_SERVICE_WAIT = 0x80,
ERFLG0_UNK_40 = 0x40,
ERFLG0_UNK_20 = 0x20,
ERFLG0_FORCE_MORF_CANCEL = 0x10,
ERFLG0_FORCE_PANIC = 8,
ERFLG0_UNK_2 = 2,
ERFLG0_UNK_1 = 1,
};
enum daMidna_FLG0 {
FLG0_UNK_80000000 = 0x80000000,
FLG0_NO_HAIR_LEAD = 0x80000000,
FLG0_UNK_40000000 = 0x40000000,
FLG0_NO_HAIR_SCALE = 0x20000000,
FLG0_UNK_10000000 = 0x10000000,
FLG0_PORTAL_OBJ_CALL = 0x8000000,
FLG0_UNK_4000000 = 0x4000000,
FLG0_UNK_2000000 = 0x2000000,
FLG0_UNK_1000000 = 0x1000000,
FLG0_UNK_800000 = 0x800000,
FLG0_UNK_400000 = 0x400000,
FLG0_UNK_200000 = 0x200000,
FLG0_NPC_NEAR = 0x100000,
FLG0_UNK_80000 = 0x80000,
FLG0_NPC_FAR = 0x40000,
FLG0_UNK_20000 = 0x20000,
FLG0_FORCE_NECK_AIM = 0x20000,
FLG0_UNK_10000 = 0x10000,
FLG0_UNK_8000 = 0x8000,
FLG0_NO_INPUT = 0x4000,
FLG0_NO_DRAW = 0x2000,
FLG0_UNK_400 = 0x400,
FLG0_UNK_800 = 0x800,
FLG0_UNK_1000 = 0x1000,
FLG0_WOLF_NO_POS = 0x800,
FLG0_TAG_WAIT = 0x400,
FLG0_UNK_200 = 0x200,
FLG0_UNK_100 = 0x100,
FLG0_UNK_80 = 0x80,
FLG0_UNK_40 = 0x40,
FLG0_UNK_20 = 0x20,
FLG0_UNK_10 = 0x10,
FLG0_UNK_8 = 8,
FLG0_UNK_4 = 4,
FLG0_UNK_2 = 2,
FLG0_UNK_1 = 1,
};
enum daMidna_FLG1 {
FLG1_SHADOW_NO_DRAW = 0x1000,
FLG1_UNK_100 = 0x100,
FLG1_UNK_800 = 0x800,
FLG1_UNK_400 = 0x400,
FLG1_UNK_200 = 0x200,
FLG1_SIDE_WARP = 0x100,
FLG1_NO_MASK_DRAW = 0x80,
FLG1_UNK_40 = 0x40,
FLG1_UNK_20 = 0x20,
FLG1_UNK_10 = 0x10,
FLG1_FORCE_NORMAL_COL = 8,
FLG1_FORCE_TIRED_COL = 4,
FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE = 2,
FLG1_UNK_1 = 1,
};
enum daMidna_ANM {};
enum daMidna_ANM {
/* 0x00 */ ANM_WAITA,
/* 0x01 */ ANM_CLING,
/* 0x02 */ ANM_CLINGB,
/* 0x03 */ ANM_WAITB,
/* 0x04 */ ANM_PANIC,
/* 0x05 */ ANM_TALKA,
/* 0x06 */ ANM_LEADST,
/* 0x07 */ ANM_LEADED,
/* 0x08 */ ANM_LEADWAIT,
/* 0x09 */ ANM_LEADTOWAITA,
/* 0x0A */ ANM_LEADSWAIT,
/* 0x0B */ ANM_CLINGST,
/* 0x0C */ ANM_SWAITB,
/* 0x0D */ ANM_SWAITC,
/* 0x0E */ ANM_WLDIEA,
/* 0x0F */ ANM_WLSWIMDIE,
/* 0x10 */ ANM_S_APPEAR,
/* 0x11 */ ANM_S_APPEARBL,
/* 0x12 */ ANM_S_RETURN,
/* 0x13 */ ANM_S_HOLE,
/* 0x14 */ ANM_WARPIN,
/* 0x15 */ ANM_WAITTP,
/* 0x16 */ ANM_ENTRANCE,
/* 0x17 */ ANM_SWAITD,
/* 0x18 */ ANM_HIT,
/* 0x19 */ ANM_LOOKABOUT,
/* 0x1A */ ANM_SWAITA,
/* 0x1B */ ANM_S_MOVE,
/* 0x1C */ ANM_RETURN,
/* 0x1D */ ANM_WAITD,
/* 0x1E */ ANM_CLINGD,
/* 0x1F */ ANM_ROPEWAIT,
/* 0x20 */ ANM_ROPEFALTER,
/* 0x21 */ ANM_DIGIN,
/* 0x22 */ ANM_DOOROPC,
/* 0x23 */ ANM_DOOROPD,
/* 0x24 */ ANM_GRAB,
/* 0x25 */ ANM_GRABED,
/* 0x26 */ ANM_MGNCATCHST,
/* 0x27 */ ANM_MGNCATCHED,
/* 0x28 */ ANM_MGNTHROWLST,
/* 0x29 */ ANM_MGNTHROWLED,
/* 0x2A */ ANM_MGNTHROWRST,
/* 0x2B */ ANM_MGNTHROWRED,
/* 0x2C */ ANM_FTALKA,
/* 0x2D */ ANM_FTALKB,
/* 0x2E */ ANM_FTALKC,
/* 0x2F */ ANM_FTALKC2,
/* 0x30 */ ANM_HAIR,
/* 0x31 */ ANM_S_TAKES,
/* 0x32 */ ANM_S_WAITS,
/* 0x33 */ ANM_S_PACKAWAY,
/* 0x34 */ ANM_GRABST,
/* 0x35 */ ANM_MAX,
/* 0x00 */ ANM_NONE = 0,
};
void onForcePanic();
u32 checkForceNormalColor() const;
@@ -58,57 +218,60 @@ public:
static bool checkMidnaTired();
void onNoServiceWait();
/* 804BC3E0 */ void modelCallBack(int);
/* 804BC5C4 */ void changeUpperBck();
/* 804BC614 */ void changeFaceBck();
/* 804BC670 */ void baseModelCallBack(int);
/* 804BC740 */ void initInvModel(u16, J3DModel**, mDoExt_invisibleModel*, u32);
/* 804BC7D4 */ void initDemoModel(J3DModel**, char const*, u32);
/* 804BC868 */ void createHeap();
/* 804BD274 */ void create();
/* 804BC3E0 */ int modelCallBack(int);
/* 804BC5C4 */ int changeUpperBck();
/* 804BC614 */ int changeFaceBck();
/* 804BC670 */ int baseModelCallBack(int);
/* 804BC740 */ int initInvModel(u16, J3DModel**, mDoExt_invisibleModel*, u32);
/* 804BC7D4 */ int initDemoModel(J3DModel**, char const*, u32);
/* 804BC868 */ int createHeap();
/* 804BD274 */ cPhs__Step create();
/* 804BD93C */ void allAnimePlay();
/* 804BDE04 */ void setMatrix();
/* 804BE470 */ void setBodyPartMatrix();
/* 804BED1C */ void setRoomInfo();
/* 804BEDB8 */ void setBodyPartPos();
/* 804BEFA0 */ void checkAppear();
/* 804BEFA0 */ BOOL checkAppear();
/* 804BF070 */ void checkMidnaPosState();
/* 804BFF80 */ void setUpperAnime(u16, u16);
/* 804C0020 */ void setUpperAnimeAndSe(daMidna_c::daMidna_ANM);
/* 804C0094 */ void setFaceAnime(u16, u16);
/* 804BFF80 */ BOOL setUpperAnime(u16, u16);
/* 804C0020 */ BOOL setUpperAnimeAndSe(daMidna_ANM);
/* 804C0094 */ BOOL setFaceAnime(u16, u16);
/* 804C0134 */ void endHighModel();
/* 804C0238 */ void setDemoAnm();
/* 804C0238 */ BOOL setDemoAnm();
/* 804C0BAC */ void setFaceBtp(u16, int);
/* 804C0C6C */ void setFaceBtk(u16, int);
/* 804C0D2C */ void setLeftHandShape(u16);
/* 804C0E18 */ void setRightHandShape(u16);
/* 804C0F04 */ void checkHairOnlyAnime(int) const;
/* 804C0F04 */ BOOL checkHairOnlyAnime(int) const;
/* 804C0F24 */ void setBckAnime(J3DAnmTransform*, int, f32);
/* 804C103C */ void setAnm();
/* 804C287C */ void getNeckAimAngle(cXyz const*, s16*, s16*, s16*, s16*);
/* 804C287C */ s16 getNeckAimAngle(cXyz const*, s16*, s16*, s16*, s16*);
/* 804C2A68 */ void clearEyeMove();
/* 804C2AB8 */ void setEyeMove(cXyz const*, s16, s16);
/* 804C2EBC */ void setNeckAngle();
/* 804C3168 */ void initHairAngle();
/* 804C3298 */ void setHairAngle();
/* 804C3F04 */ void setDemoData();
/* 804C4394 */ void setSimpleBrk(J3DModelData*, u16);
/* 804C4444 */ void setSimpleBtk(J3DModelData*, u16);
/* 804C4394 */ J3DAnmTevRegKey* setSimpleBrk(J3DModelData*, u16);
/* 804C4444 */ J3DAnmTextureSRTKey* setSimpleBtk(J3DModelData*, u16);
/* 804C44CC */ void initMidnaModel();
/* 804C49B8 */ void setMidnaNoDrawFlg();
/* 804C4AE8 */ void checkMetamorphoseEnableBase();
/* 804C4B68 */ void checkNoDrawState();
/* 804C4AE8 */ int checkMetamorphoseEnableBase();
/* 804C4B68 */ BOOL checkNoDrawState();
/* 804C4BC0 */ void setSound();
/* 804C4FDC */ void execute();
/* 804C5A08 */ void draw();
/* 804C4FDC */ int execute();
/* 804C5A08 */ int draw();
/* 804C61A4 */ ~daMidna_c();
daMidna_c() : mBtpHeap(0x400), mBtkHeap(0x400) {}
void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; }
void onStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 |= i_flag; }
void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
void onStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 |= i_flag; }
void offStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 &= ~i_flag; }
BOOL checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; }
u32 checkEndResetStateFlg0(daMidna_ERFLG0 flag) const { return mEndResetStateFlg0 & flag; }
u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; }
u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; }
void setFaceNum(int num) { mFaceNum = num; }
void setMotionNum(int num) { mMotionNum = num; }
@@ -116,48 +279,46 @@ public:
void changeOriginalDemo() { mDemoType = 3; }
void changeDemoMode(u32 mode) { mDemoMode = mode; }
BOOL checkPortalObjCall() { return checkStateFlg0(FLG0_PORTAL_OBJ_CALL); }
BOOL checkNoHairScale() const { return checkStateFlg0(FLG0_NO_HAIR_SCALE); }
BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); }
BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); }
BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); }
BOOL checkNoInput() const { return checkStateFlg0(FLG0_NO_INPUT); }
BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_UNK_800); }
BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_WOLF_NO_POS); }
int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
u32 checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
void setForceNeckAimPos(const cXyz& i_pos) {
onStateFlg0(FLG0_UNK_20000);
field_0x9c4 = i_pos;
onStateFlg0(FLG0_FORCE_NECK_AIM);
mForceNeckAimPos = i_pos;
}
void onTagWaitPosWarp(const cXyz* param_0) {
field_0x9ac = *param_0;
onStateFlg0(FLG0_UNK_400);
mTagWaitPos = *param_0;
onStateFlg0(FLG0_TAG_WAIT);
onEndResetStateFlg0(ERFLG0_UNK_2);
}
void onTagWaitPos(const cXyz* param_0) {
field_0x9ac = *param_0;
onStateFlg0(FLG0_UNK_400);
mTagWaitPos = *param_0;
onStateFlg0(FLG0_TAG_WAIT);
}
void offTagWaitPos() {
offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_PORTAL_OBJ_CALL | FLG0_UNK_400));
offStateFlg0((daMidna_FLG0)(FLG0_NO_HAIR_LEAD | FLG0_PORTAL_OBJ_CALL | FLG0_TAG_WAIT));
}
void onTagNoHairLead() {
onStateFlg0(FLG0_UNK_80000000);
}
void onTagNoHairLead() { onStateFlg0(FLG0_NO_HAIR_LEAD); }
void onSideWarp() { onStateFlg1(FLG1_SIDE_WARP); }
void onSideWarp() {
onStateFlg1(FLG1_UNK_100);
}
MtxP getMtxHairTop() { return mpShadowModel->getAnmMtx(10); }
MtxP getMtxHairTop() {
return field_0x574->getAnmMtx(10);
bool checkSetAnime(int param_0, daMidna_ANM i_anm) {
return mBckHeap[param_0].getIdx() == m_anmDataTable[i_anm].mResID;
}
bool checkReturnAnime() const {
return field_0x5e4[0].getIdx() == 0x1CA;
return mBckHeap[0].getIdx() == 0x1CA;
}
bool checkShadowModelDrawSmode() const {
@@ -169,7 +330,7 @@ public:
}
bool checkShadowReturnEnd() const {
return field_0x5e4[0].getIdx() == 0x21C && field_0x578->isStop();
return mBckHeap[0].getIdx() == 0x21C && mpMorf->isStop();
}
bool checkShadowModeTalkWait() const {
@@ -178,7 +339,6 @@ public:
void setShadowReturn() { field_0x84e = 4; }
bool checkPortalObjRide() const {
return checkStateFlg0(FLG0_PORTAL_OBJ_CALL) && checkStateFlg0(FLG0_UNK_200);
}
@@ -193,10 +353,8 @@ public:
BOOL checkDemoPortalWarpWait() const { return mDemoMode == 11; }
inline static BOOL checkMidnaRealBody();
inline static BOOL i_checkMidnaRealBody() {
return dKy_darkworld_check() == 1 || dComIfGs_isTransformLV(3);
static BOOL checkMidnaRealBody() {
return dKy_darkworld_check() == true || dComIfGs_isTransformLV(3);
}
static bool i_checkMidnaTired() {
@@ -206,132 +364,130 @@ public:
void resetRatBody() {}
bool checkFlyWaitAnime() {
return field_0x5e4[0].getIdx() == 0x1CB || field_0x5e4[0].getIdx() == 0x1C7
|| field_0x5e4[0].getIdx() == 0x1C8 || field_0x5e4[0].getIdx() == 0x1C9;
return mBckHeap[0].getIdx() == 0x1CB || mBckHeap[0].getIdx() == 0x1C7
|| mBckHeap[0].getIdx() == 0x1C8 || mBckHeap[0].getIdx() == 0x1C9;
}
void onForceMorfCancel() { onEndResetStateFlg0(ERFLG0_FORCE_MORF_CANCEL); }
static u8 const m_texDataTable[84];
static u8 const m_anmDataTable[636];
static daMidna_texData_s const m_texDataTable[21];
static daMidna_anmData_s const m_anmDataTable[53];
private:
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ J3DModel* field_0x570;
/* 0x0574 */ J3DModel* field_0x574;
/* 0x0578 */ mDoExt_McaMorfSO* field_0x578;
/* 0x057C */ mDoExt_McaMorfCallBack1_c* field_0x57c; // this is really daMidna_McaMorfCB1_c. fix later
/* 0x0580 */ cXyz* field_0x580;
/* 0x0584 */ mDoExt_bckAnm field_0x584;
/* 0x05A0 */ mDoExt_bckAnm field_0x5a0;
/* 0x05BC */ J3DAnmTexPattern* field_0x5bc;
/* 0x05C0 */ J3DAnmTextureSRTKey* field_0x5c0;
/* 0x05C4 */ mDoExt_invisibleModel field_0x5c4;
/* 0x05CC */ mDoExt_invisibleModel mInvMaskBmd;
/* 0x05D4 */ mDoExt_invisibleModel mInvHandsBmd;
/* 0x05DC */ mDoExt_invisibleModel mInvHairhandBmd;
/* 0x05E4 */ daPy_anmHeap_c field_0x5e4[3];
/* 0x0620 */ daPy_anmHeap_c field_0x620;
/* 0x0634 */ daPy_anmHeap_c field_0x634;
/* 0x0648 */ J3DAnmTextureSRTKey* field_0x648;
/* 0x064C */ J3DAnmTextureSRTKey* field_0x64c;
/* 0x0650 */ J3DAnmTextureSRTKey* field_0x650;
/* 0x0654 */ J3DAnmTextureSRTKey* field_0x654;
/* 0x0658 */ J3DAnmTevRegKey* field_0x658;
/* 0x065C */ J3DAnmTevRegKey* field_0x65c;
/* 0x0660 */ J3DAnmTevRegKey* field_0x660;
/* 0x0664 */ J3DAnmTevRegKey* field_0x664;
/* 0x0668 */ J3DAnmTevRegKey* field_0x668;
/* 0x066C */ J3DAnmTevRegKey* field_0x66c;
/* 0x0670 */ J3DModel* field_0x670;
/* 0x0674 */ J3DModel* mpMaskBmd;
/* 0x0678 */ J3DModel* field_0x678;
/* 0x067C */ J3DModel* mpHandsBmd;
/* 0x0680 */ J3DModel* field_0x680;
/* 0x0684 */ J3DModel* mpHairhandBmd;
/* 0x0688 */ J3DModel* mpDemoBDTmpBmd;
/* 0x068C */ J3DModel* mpDemoBDMaskBmd;
/* 0x0690 */ J3DModel* mpDemoBDHandsBmd;
/* 0x0694 */ J3DModel* mpDemoBDHairhandBmd;
/* 0x0698 */ J3DModel* mpGokouBmd;
/* 0x069C */ J3DShape* field_0x69c;
/* 0x06A0 */ J3DShape* field_0x6a0;
/* 0x06A4 */ J3DShape* field_0x6a4;
/* 0x06A8 */ J3DShape* field_0x6a8;
/* 0x06AC */ J3DModel* mpDemoFCBlendBmd;
/* 0x06B0 */ J3DModel* mpDemoFCTongueBmd;
/* 0x06B4 */ J3DAnmTextureSRTKey* field_0x6b4;
/* 0x06B8 */ mDoExt_bckAnm* mpDemoFCTmpBck;
/* 0x06BC */ J3DDeformData* mpDemoFCTmpBls;
/* 0x06C0 */ J3DAnmCluster* field_0x6c0;
/* 0x06C4 */ mDoExt_blkAnm* field_0x6c4;
/* 0x06C8 */ J3DModel* mpDemoHLTmpBmd;
/* 0x06CC */ mDoExt_bckAnm* mpDemoHLTmpBck;
/* 0x06D0 */ J3DModel* mpDemoHRTmpBmd;
/* 0x06D4 */ mDoExt_bckAnm* mpDemoHRTmpBck;
/* 0x06D8 */ J3DModel* mpDemoHDTmpBmd;
/* 0x06DC */ mDoExt_bckAnm* mpDemoHDTmpBck;
/* 0x06E0 */ J3DGXColorS10 field_0x6e0;
/* 0x06E8 */ J3DGXColor field_0x6e8;
/* 0x06EC */ u8 field_0x6ec; // this is probably J3DGXColor. fix later
/* 0x06ED */ u8 field_0x6ed;
/* 0x06EE */ u8 field_0x6ee;
/* 0x06EF */ u8 field_0x6ef;
/* 0x06F0 */ void* field_0x6f0;
/* 0x06F4 */ void* field_0x6f4;
/* 0x06F8 */ void* field_0x6f8;
/* 0x06FC */ Z2Creature field_0x6fc;
/* 0x078C */ dMsgFlow_c mMsgFlow;
/* 0x07D8 */ dBgS_LinkLinChk mLinChk;
/* 0x0848 */ u8 mMotionNum;
/* 0x0849 */ u8 mFaceNum;
/* 0x084A */ u8 field_0x84a[4];
/* 0x084E */ u8 field_0x84e;
/* 0x084F */ u8 mDemoType;
/* 0x0850 */ u8 field_0x850[0xA];
/* 0x085A */ s16 field_0x85a;
/* 0x085C */ u8 field_0x85c[0x22];
/* 0x087E */ s16 field_0x87e;
/* 0x0880 */ u8 field_0x880[0xC]; // csXyz in here, fix later
/* 0x088C */ int mStaffID;
/* 0x0890 */ u32 mStateFlg0;
/* 0x0894 */ u32 mStateFlg1;
/* 0x0898 */ u32 mEndResetStateFlg0;
/* 0x089C */ u8 field_0x89c[0x24];
/* 0x08C0 */ u32 mDemoMode;
/* 0x08C4 */ u8 field_0x8c4[4];
/* 0x08C8 */ f32 field_0x8c8;
/* 0x08CC */ u8 field_0x8cc[0x14];
/* 0x08E0 */ cXyz field_0x8e0[5];
/* 0x091C */ cXyz field_0x91c[5];
/* 0x0958 */ u8 field_0x958[0xC]; // cXyz here, fix later
/* 0x0964 */ cXyz field_0x964[5];
/* 0x09A0 */ u8 field_0x9a0[0xC];
/* 0x09AC */ cXyz field_0x9ac;
/* 0x09B8 */ u8 field_0x9b8[0x9C4 - 0x9B8];
/* 0x09C4 */ cXyz field_0x9c4;
/* 0x09D0 */ u8 field_0x9d0[4];
/* 0x09D4 */ daMidna_func mpFunc;
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ J3DModel* mpModel;
/* 0x574 */ J3DModel* mpShadowModel;
/* 0x578 */ mDoExt_McaMorfSO* mpMorf;
/* 0x57C */ daMidna_McaMorfCB1_c mMorfCB;
/* 0x584 */ mDoExt_bckAnm mUpperBck;
/* 0x5A0 */ mDoExt_bckAnm mFaceBck;
/* 0x5BC */ J3DAnmTexPattern* mpFaceBtp;
/* 0x5C0 */ J3DAnmTextureSRTKey* mpFaceBtk;
/* 0x5C4 */ mDoExt_invisibleModel mInvModel;
/* 0x5CC */ mDoExt_invisibleModel mMaskInvModel;
/* 0x5D4 */ mDoExt_invisibleModel mHandsInvModel;
/* 0x5DC */ mDoExt_invisibleModel mHairhandInvModel;
/* 0x5E4 */ daPy_anmHeap_c mBckHeap[3];
/* 0x620 */ daPy_anmHeap_c mBtpHeap;
/* 0x634 */ daPy_anmHeap_c mBtkHeap;
/* 0x648 */ J3DAnmTextureSRTKey* mpMoyaBtk;
/* 0x64C */ J3DAnmTextureSRTKey* mpMaskMoyaBtk;
/* 0x650 */ J3DAnmTextureSRTKey* mpHandsMoyaBtk;
/* 0x654 */ J3DAnmTextureSRTKey* mpHairhandMoyaBtk;
/* 0x658 */ J3DAnmTevRegKey* mpAppearBrk;
/* 0x65C */ J3DAnmTevRegKey* mpMaskAppearBrk;
/* 0x660 */ J3DAnmTevRegKey* mpHairhandAppearBrk;
/* 0x664 */ J3DAnmTevRegKey* mpGokouAppearBrk;
/* 0x668 */ J3DAnmTevRegKey* field_0x668;
/* 0x66C */ J3DAnmTevRegKey* mpDemoFCBlendBrk;
/* 0x670 */ J3DModel* mpMaskBmd;
/* 0x674 */ J3DModel* mpShadowMaskBmd;
/* 0x678 */ J3DModel* mpHandsBmd;
/* 0x67C */ J3DModel* mpShadowHandsBmd;
/* 0x680 */ J3DModel* mpHairhandBmd;
/* 0x684 */ J3DModel* mpShadowHairhandBmd;
/* 0x688 */ J3DModel* mpDemoBDTmpBmd;
/* 0x68C */ J3DModel* mpDemoBDMaskBmd;
/* 0x690 */ J3DModel* mpDemoBDHandsBmd;
/* 0x694 */ J3DModel* mpDemoBDHairhandBmd;
/* 0x698 */ J3DModel* mpGokouBmd;
/* 0x69C */ J3DShape* mpLeftHandShape;
/* 0x6A0 */ J3DShape* mpRightHandShape;
/* 0x6A4 */ J3DShape* mpShadowLeftHandShape;
/* 0x6A8 */ J3DShape* mpShadowRightHandShape;
/* 0x6AC */ J3DModel* mpDemoFCBlendBmd;
/* 0x6B0 */ J3DModel* mpDemoFCTongueBmd;
/* 0x6B4 */ J3DAnmTextureSRTKey* mpDemoFCTongueBtk;
/* 0x6B8 */ mDoExt_bckAnm* mpDemoFCTmpBck;
/* 0x6BC */ J3DDeformData* mpDemoFCTmpBls;
/* 0x6C0 */ J3DAnmCluster* mpDemoFCTmpCluster;
/* 0x6C4 */ mDoExt_blkAnm* mpDemoFCTmpBlk;
/* 0x6C8 */ J3DModel* mpDemoHLTmpBmd;
/* 0x6CC */ mDoExt_bckAnm* mpDemoHLTmpBck;
/* 0x6D0 */ J3DModel* mpDemoHRTmpBmd;
/* 0x6D4 */ mDoExt_bckAnm* mpDemoHRTmpBck;
/* 0x6D8 */ J3DModel* mpDemoHDTmpBmd;
/* 0x6DC */ mDoExt_bckAnm* mpDemoHDTmpBck;
/* 0x6E0 */ J3DGXColorS10 field_0x6e0;
/* 0x6E8 */ J3DGXColor field_0x6e8;
/* 0x6EC */ J3DGXColor field_0x6ec;
/* 0x6F0 */ daMidna_matAnm_c* mpEyeMatAnm[2];
/* 0x6F8 */ daMidna_hio_c0* mpHIO;
/* 0x6FC */ Z2Creature mSound;
/* 0x78C */ dMsgFlow_c mMsgFlow;
/* 0x7D8 */ dBgS_LinkLinChk mLinChk;
/* 0x848 */ u8 mMotionNum;
/* 0x849 */ u8 mFaceNum;
/* 0x84A */ u8 field_0x84a;
/* 0x84B */ u8 mFaceBckTimer;
/* 0x84C */ u8 mEyeMoveTimer;
/* 0x84D */ s8 mReverb;
/* 0x84E */ u8 field_0x84e;
/* 0x84F */ u8 mDemoType;
/* 0x850 */ u8 field_0x850;
/* 0x851 */ u8 field_0x851;
/* 0x852 */ u8 field_0x852[8];
/* 0x85A */ s16 field_0x85a;
/* 0x85C */ s16 mHairAngleZ[5];
/* 0x866 */ s16 mHairAngleY[5];
/* 0x870 */ u8 field_0x870[2];
/* 0x872 */ s16 field_0x872;
/* 0x874 */ s16 mBackboneAngleZ;
/* 0x876 */ s16 field_0x876;
/* 0x878 */ u16 mLeftHandShapeIdx;
/* 0x87A */ u16 mRightHandShapeIdx;
/* 0x87C */ s16 mDemoAngle;
/* 0x87E */ s16 field_0x87e;
/* 0x880 */ csXyz mNeckAngle;
/* 0x886 */ u8 field_0x886[6];
/* 0x88C */ int mStaffID;
/* 0x890 */ u32 mStateFlg0;
/* 0x894 */ u32 mStateFlg1;
/* 0x898 */ u32 mEndResetStateFlg0;
/* 0x89C */ u32 mShadowKey;
/* 0x8A0 */ u32 mParticleKey1;
/* 0x8A4 */ u32 mParticleKey2;
/* 0x8A8 */ u32 mThroughEffectKey[6];
/* 0x8C0 */ u32 mDemoMode;
/* 0x8C4 */ u32 mSoundID;
/* 0x8C8 */ f32 mVoiceFrame;
/* 0x8CC */ f32 mEyeMoveX;
/* 0x8D0 */ f32 mEyeMoveY;
/* 0x8D4 */ f32 field_0x8d4;
/* 0x8D8 */ f32 mDemoSpeed;
/* 0x8DC */ f32 field_0x8dc;
/* 0x8E0 */ cXyz mHairPos[5];
/* 0x91C */ cXyz mHairDir[5];
/* 0x958 */ cXyz mHeadCenterPos;
/* 0x964 */ cXyz mHairScale[5];
/* 0x9A0 */ cXyz field_0x9a0;
/* 0x9AC */ cXyz mTagWaitPos;
/* 0x9B8 */ cXyz mDemoPos;
/* 0x9C4 */ cXyz mForceNeckAimPos;
/* 0x9D0 */ daKago_c* mpKago;
/* 0x9D4 */ daMidna_func mpFunc;
};
STATIC_ASSERT(sizeof(daMidna_c) == 0x9e0);
class daMidna_matAnm_c : public fopAc_ac_c {
public:
/* 804BC218 */ void init();
/* 804BC248 */ void calc(J3DMaterial*) const;
/* 804C63E0 */ ~daMidna_matAnm_c();
};
class daMidna_hio_c0 {
public:
static u8 const m[32];
};
class daMidna_McaMorfCB1_c {
public:
/* 804BC36C */ void execute(u16, J3DTransformInfo*);
/* 804C6398 */ ~daMidna_McaMorfCB1_c();
};
STATIC_ASSERT(sizeof(daMidna_c) == 0x9E0);
#endif /* D_A_MIDNA_H */
+16 -4
View File
@@ -57,8 +57,6 @@ public:
HEAP_TYPE_5,
};
/* 80140DCC */ void __defctor(); // compiler generated due to ctor with default param
daPy_anmHeap_c(u32 param_0 = 0);
~daPy_anmHeap_c();
void initData();
@@ -77,6 +75,7 @@ public:
bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; }
void setBufferSize(u32 size) { mBufferSize = size; }
void setBuffer(u8* buf) { mBuffer = buf; }
u32 getBufferSize() { return mBufferSize; }
u8* getBuffer() { return mBuffer; }
bool checkNoSetIdx() const { return mIdx == 0xFFFF; }
bool checkNoSetPriIdx() const { return mPriIdx == 0xFFFF; }
@@ -263,6 +262,7 @@ public:
FLG1_DASH_MODE = 0x400000,
FLG1_UNK_200000 = 0x200000,
FLG1_UNK_100000 = 0x100000,
FLG1_MIDNA_ATN_POS = 0x80000,
FLG1_UNK_40000 = 0x40000,
FLG1_UNK_10000 = 0x10000,
FLG1_UNK_8000 = 0x8000,
@@ -271,6 +271,7 @@ public:
FLG1_UNK_1000 = 0x1000,
FLG1_UNK_800 = 0x800,
FLG1_UNK_200 = 0x200,
FLG1_MIDNA_HAIR_ATN_POS = 0x100,
FLG1_UNK_80 = 0x80,
FLG1_UNK_40 = 0x40,
FLG1_UNK_20 = 0x20,
@@ -338,7 +339,7 @@ public:
FLG3_UNK_100000 = 0x100000,
FLG3_UNK_80000 = 0x80000,
FLG3_COPY_ROD_THROW_AFTER = 0x40000,
FLG3_UNK_10000 = 0x10000,
FLG3_MIDNA_TALK_POLY_SPEED = 0x10000,
FLG3_UNK_8000 = 0x8000,
FLG3_UNK_4000 = 0x4000,
FLG3_UNK_2000 = 0x2000,
@@ -413,7 +414,7 @@ public:
ERFLG1_WOLF_EYE_KEEP = 0x200,
ERFLG1_UNK_100 = 0x100,
ERFLG1_UNK_80 = 0x80,
ERFLG1_UNK_40 = 0x40,
ERFLG1_MIDNA_RIDE_SHOCK = 0x40,
ERFLG1_UNK_20 = 0x20,
ERFLG1_UNK_10 = 0x10,
ERFLG1_UNK_8 = 8,
@@ -424,6 +425,7 @@ public:
enum daPy_ERFLG2 {
ERFLG2_UNK_100 = 0x100,
ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP = 0x80,
ERFLG2_UNK_40 = 0x40,
ERFLG2_UNK_20 = 0x20,
ERFLG2_UNK_10 = 0x10,
@@ -806,6 +808,8 @@ public:
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
bool checkMidnaAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_ATN_POS); }
bool checkMidnaHairAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_HAIR_ATN_POS); }
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
@@ -814,6 +818,7 @@ public:
void onNotHang() { onEndResetFlg0(ERFLG0_NOT_HANG); }
void onShieldBackBone() { onEndResetFlg1(ERFLG1_GANON_FINISH); }
void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); }
void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); }
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
@@ -829,6 +834,7 @@ public:
mSpecialMode = 0;
}
}
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
void offCargoCarry() {
if (checkCargoCarry()) {
@@ -903,6 +909,9 @@ public:
void offPlayerNoDraw() { offNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
void onPushPullKeep() { onNoResetFlg0(FLG0_PUSH_PULL_KEEP); }
void offPushPullKeep() { offNoResetFlg0(FLG0_PUSH_PULL_KEEP); }
void onMidnaRide() { onNoResetFlg0(FLG0_MIDNA_RIDE); }
void offMidnaRide() { offNoResetFlg0(FLG0_MIDNA_RIDE); }
void onMidnaRideShock() { onEndResetFlg1(ERFLG1_MIDNA_RIDE_SHOCK); }
void onPlayerShadowNoDraw() { onNoResetFlg2(FLG2_PLAYER_SHADOW); }
void offPlayerShadowNoDraw() { offNoResetFlg2(FLG2_PLAYER_SHADOW); }
void onLightSwordGetEffect() { onEndResetFlg2(ERFLG2_UNK_10); }
@@ -935,6 +944,8 @@ public:
void changeDemoMoveAngle(s16 i_angle) { mDemo.setMoveAngle(i_angle); }
void setItemPos(cXyz* i_itemPos) { mItemPos = *i_itemPos; }
static bool checkPeepEndSceneChange() { return getLastSceneMode() == 7; }
static int getLastSceneDamage() { return (dComIfGs_getLastSceneMode() >> 4) & 0x7F; }
@@ -954,6 +965,7 @@ public:
static int checkNowWolfPowerUp() { return checkNowWolfEyeUp(); }
static daMidna_c* getMidnaActor() { return m_midnaActor; }
static void setMidnaActor(fopAc_ac_c* actor) { m_midnaActor = (daMidna_c*)actor; }
// not sure how to define this properly
// static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);}
+4 -8
View File
@@ -3381,23 +3381,19 @@ inline void dComIfGp_event_setTalkPartner(fopAc_ac_c* i_actor) {
}
inline fopAc_ac_c* dComIfGp_event_getTalkPartner() {
u32 t = g_dComIfG_gameInfo.play.getEvent().mPtT;
return g_dComIfG_gameInfo.play.getEvent().convPId(t);
return g_dComIfG_gameInfo.play.getEvent().getPtT();
}
inline fopAc_ac_c* dComIfGp_event_getItemPartner() {
u32 i = g_dComIfG_gameInfo.play.getEvent().mPtI;
return g_dComIfG_gameInfo.play.getEvent().convPId(i);
return g_dComIfG_gameInfo.play.getEvent().getPtI();
}
inline fopAc_ac_c* dComIfGp_event_getPt1() {
u32 pt1 = g_dComIfG_gameInfo.play.getEvent().mPt1;
return g_dComIfG_gameInfo.play.getEvent().convPId(pt1);
return g_dComIfG_gameInfo.play.getEvent().getPt1();
}
inline fopAc_ac_c* dComIfGp_event_getPt2() {
u32 pt2 = g_dComIfG_gameInfo.play.getEvent().mPt2;
return g_dComIfG_gameInfo.play.getEvent().convPId(pt2);
return g_dComIfG_gameInfo.play.getEvent().getPt2();
}
inline BOOL dComIfGp_event_runCheck() {
+6 -5
View File
@@ -159,6 +159,7 @@ public:
fopAc_ac_c* getPt1() { return convPId(mPt1); }
fopAc_ac_c* getPt2() { return convPId(mPt2); }
fopAc_ac_c* getPtT() { return convPId(mPtT); }
fopAc_ac_c* getPtI() { return convPId(mPtI); }
fopAc_ac_c* getPtD() { return convPId(mPtd); }
bool isChangeOK(void* param_0) { return mChangeOK == param_0; }
u8 getPreItemNo() { return mPreItemNo; }
@@ -169,11 +170,11 @@ public:
public:
/* 0x000 */ u8 field_0x0[4];
/* 0x004 */ dEvt_order_c mOrder[8];
/* 0x0C4 */ u32 mPt1;
/* 0x0C8 */ u32 mPt2;
/* 0x0CC */ u32 mPtT;
/* 0x0D0 */ u32 mPtI;
/* 0x0D4 */ u32 mPtd;
/* 0x0C4 */ fpc_ProcID mPt1;
/* 0x0C8 */ fpc_ProcID mPt2;
/* 0x0CC */ fpc_ProcID mPtT;
/* 0x0D0 */ fpc_ProcID mPtI;
/* 0x0D4 */ fpc_ProcID mPtd;
/* 0x0D8 */ u16 mEventFlag;
/* 0x0DA */ u16 mFlag2;
/* 0x0DC */ u16 mHindFlag;
+2
View File
@@ -328,6 +328,8 @@ public:
J3DModel* getModel() { return mpModel; }
void offMorfNone() { mMorfNone = false; }
void onMorfNone() { mMorfNone = true; }
J3DTransformInfo* getOldTransInfo() { return mpTransformInfo; }
Quaternion* getOldQuaternion() { return mpQuat; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
+20 -19
View File
@@ -260,7 +260,7 @@ Z2SoundHandlePool* Z2Creature::startCreatureVoice(JAISoundID i_soundID, s8 param
/* 802C0AF8-802C0B70 2BB438 0078+00 3/0 2/0 0/0 .text
* startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc */
Z2SoundHandlePool* Z2Creature::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) {
if (i_soundID == 0x501f0) {
if (i_soundID == Z2SE_MDN_V_WAITD) {
if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) {
return NULL;
}
@@ -420,7 +420,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32
Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2);
switch (mEnemyID) {
case 0x19:
case Z2_ENEMY_SF:
if (i_soundID == Z2SE_EN_SF_BREAK_DOWN) {
field_0xa3 = 1;
Z2GetSoundObjMgr()->getEnemyList()->remove(this);
@@ -429,7 +429,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32
Z2GetSoundObjMgr()->getEnemyList()->append(this);
}
break;
case 0x23:
case Z2_ENEMY_FZ:
if (handle != NULL && handle->isSoundAttached() && i_soundID == Z2SE_EN_FZ_BOUND) {
f32 volume = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.1f, 1.0f, false);
f32 pitch = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.8f, 1.2f, false);
@@ -437,16 +437,16 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32
(*handle)->getAuxiliary().movePitch(pitch, 0);
}
break;
case 0x2d:
case Z2_ENEMY_MS:
Z2_E_ms_modVol(handle, mSoundObjAnime.field_0x1c);
break;
case 0x36:
case Z2_ENEMY_SW:
Z2_E_sw_modPitch(handle, param_1);
break;
case 0x26:
case Z2_ENEMY_MM:
Z2_E_mm_modPitch(handle, mSoundObjAnime.field_0x1c);
break;
case 0x35:
case Z2_ENEMY_SM2:
if (i_soundID == Z2SE_EN_SM_HIT) {
field_0xa3 = 1;
Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
@@ -485,17 +485,17 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
switch (mEnemyID) {
case 0x23:
case Z2_ENEMY_FZ:
if (handle != NULL && *handle != NULL && i_soundID == Z2SE_EN_FZ_MOVE) {
f32 volume = Z2Calc::getParamByExp(param_1, 1.0f, 50.0f, 0.4f, 0.1f, 1.1f,
Z2Calc::CURVE_SIGN_1);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
break;
case 0x36:
case Z2_ENEMY_SW:
Z2_E_sw_modPitch(handle, param_1);
break;
case 0x29:
case Z2_ENEMY_RB:
if (handle != NULL && *handle != NULL && i_soundID == Z2SE_EN_RB_MOVE) {
f32 volume = Z2Calc::getParamByExp(param_1, 4.0f, 35.0f, 0.6f, 0.7f, 1.0f,
Z2Calc::CURVE_SIGN_1);
@@ -588,25 +588,25 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8
Z2SoundHandlePool* handle = mSoundObjSimple1.startSound(i_soundID, var1, param_1);
switch (mEnemyID) {
case 0x18:
case Z2_ENEMY_SH:
if (i_soundID == Z2SE_EN_SH_V_DEAD) {
field_0xa3 = 1;
Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
}
break;
case 0x1a:
case Z2_ENEMY_BS:
if (i_soundID == Z2SE_EN_BS_V_DEAD) {
field_0xa3 = 1;
Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
}
break;
case 0x2d:
case Z2_ENEMY_MS:
Z2_E_ms_modVol(handle, mSoundObjSimple1.field_0x1c);
break;
case 0x36:
case Z2_ENEMY_SW:
Z2_E_sw_modPitch(handle, mSoundObjSimple1.field_0x1c);
break;
case 0x26:
case Z2_ENEMY_MM:
Z2_E_mm_modPitch(handle, mSoundObjSimple1.field_0x1c);
break;
}
@@ -622,7 +622,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8
* startCreatureVoiceLevel__15Z2CreatureEnemyF10JAISoundIDSc */
Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) {
u32 var1 = 0;
if (mEnemyID == 7) {
if (mEnemyID == Z2_ENEMY_RDY) {
var1 = 1;
}
return mSoundObjSimple1.startLevelSound(i_soundID, var1, param_1);
@@ -646,11 +646,11 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID i_so
Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) {
u8 var1;
switch (mEnemyID) {
case 0x21:
case Z2_ENEMY_WS:
field_0xa3 = 1;
Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL);
case 0x2f:
case Z2_ENEMY_BI:
if (getSupervisor() != NULL) {
Z2GetSoundObjMgr()->removeEnemy(this);
}
@@ -673,7 +673,8 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) {
case 0x24:
field_0xa3 = 1;
var1 = struct_80450869;
if (param_0 - 0x40000 <= 1 || param_0 - 0x40000 == 3) {
if (param_0 == Z2SE_HIT_SWORD || param_0 == Z2SE_HIT_SWORD_STAB
|| param_0 == Z2SE_HIT_WOLFBITE) {
var1 = 0x14;
}
Z2GetSeqMgr()->setBattleLastHit(var1);
+19 -19
View File
@@ -165,36 +165,36 @@ void Z2SoundObjMgr::searchEnemy() {
bool bVar6 = false;
u8 enemyId = this_00->mEnemyID;
switch (enemyId) {
case 0x36:
case Z2_ENEMY_SW:
if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1c)
continue;
break;
case 0x11:
case Z2_ENEMY_CR:
if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e)
continue;
break;
case 0x27:
case 0x28:
case 0x39:
case Z2_ENEMY_NZ:
case Z2_ENEMY_PO:
case Z2_ENEMY_HP:
bVar6 = true;
break;
case 0x37:
case Z2_ENEMY_RDB:
if (iVar16 == 0)
continue;
break;
case 0xa:
case 0xb:
case Z2_ENEMY_WB:
case Z2_ENEMY_RD:
if (iVar16 != 0)
continue;
case 0xc:
case 0x16:
case 0x1f:
case 0x22:
case 0x26:
case 0x29:
case 0x2b:
case 0x30:
case 0x35:
case Z2_ENEMY_DN:
case Z2_ENEMY_DB:
case Z2_ENEMY_GE:
case Z2_ENEMY_OC:
case Z2_ENEMY_MM:
case Z2_ENEMY_RB:
case Z2_ENEMY_HB:
case Z2_ENEMY_TT:
case Z2_ENEMY_SM2:
if (!Z2GetLink()->isRiding())
break;
if (Z2GetLink()->getMoveSpeed() <= 0x26)
@@ -339,14 +339,14 @@ void Z2SoundObjMgr::setGhostEnemyState(u8 p1) {
* getEnemyID__13Z2SoundObjMgrFPCcP26JSULink<15Z2CreatureEnemy> */
u8 Z2SoundObjMgr::getEnemyID(char const* param_0, JSULink<Z2CreatureEnemy>* param_1) {
if (param_0 != NULL) {
for (u8 uVar2 = 0; uVar2 < 0x40; uVar2++) {
for (u8 uVar2 = 0; uVar2 < ARRAY_SIZE(mEnemyInfo); uVar2++) {
if (strcmp(param_0, mEnemyInfo[(u32)uVar2].mName) == 0) {
append(param_1);
return uVar2;
}
}
}
return Z2_ENEMY_ID_0;
return Z2_ENEMY_NULL;
}
/* 802C0100-802C0120 2BAA40 0020+00 1/1 1/1 0/0 .text setBattleInit__13Z2SoundObjMgrFv */
+8 -8
View File
@@ -4725,8 +4725,8 @@ void daAlink_c::setPolygonSpeed() {
offNoResetFlg3(daPy_FLG3(FLG3_UNK_1000 | FLG3_UNK_2000));
if ((!checkEventRun() || checkNoResetFlg0(FLG0_UNK_14000)) && !checkMagneBootsOn()) {
cM3dGPla sp24;
if (checkNoResetFlg3(FLG3_UNK_10000)) {
offNoResetFlg3(FLG3_UNK_10000);
if (checkNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED)) {
offNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED);
field_0x3594 = field_0x35a0;
field_0x35a0 = cXyz::Zero;
}
@@ -7742,8 +7742,8 @@ BOOL daAlink_c::checkAutoJumpAction() {
resetUpperAnime(UPPER_2, -1.0f);
}
f32 var_f31 = field_0x35c4.x + (field_0x35ac.x + (speed.x + field_0x3594.x));
f32 var_f30 = field_0x35c4.z + (field_0x35ac.z + (speed.z + field_0x3594.z));
f32 var_f31 = field_0x35c4.x + (mWindSpeed.x + (speed.x + field_0x3594.x));
f32 var_f30 = field_0x35c4.z + (mWindSpeed.z + (speed.z + field_0x3594.z));
BOOL var_r28 = true;
f32 var_f29 = JMAFastSqrt((var_f31 * var_f31) + (var_f30 * var_f30));
@@ -7889,7 +7889,7 @@ BOOL daAlink_c::checkAutoJumpAction() {
return procFallInit(1, sp24);
}
}
} else if (checkGrabGlide() && field_0x35ac.y > 10.0f) {
} else if (checkGrabGlide() && mWindSpeed.y > 10.0f) {
mLinkAcch.i_ClrGroundHit();
return procAutoJumpInit(1);
} else if (checkEndResetFlg0(ERFLG0_UNK_100) && mLinkAcch.i_ChkGroundHit() && !checkWolf()) {
@@ -9931,10 +9931,10 @@ void daAlink_c::posMove() {
current.pos += field_0x3594;
if (checkModeFlg(2)) {
current.pos += field_0x35ac;
current.pos += mWindSpeed;
} else {
current.pos.x += field_0x35ac.x;
current.pos.z += field_0x35ac.z;
current.pos.x += mWindSpeed.x;
current.pos.z += mWindSpeed.z;
}
} else if (checkNoResetFlg0(FLG0_UNK_14000)) {
current.pos += field_0x3594;
+10 -10
View File
@@ -208,7 +208,7 @@ int daAlink_c::setDamagePoint(int i_dmgAmount, int i_checkZoraMag, int i_setDmgT
setDamageColorTime();
}
field_0x3006 = 0;
mIceDamageWaitTimer = 0;
return 0;
}
@@ -391,8 +391,8 @@ bool daAlink_c::checkLargeAttack(int param_0) const {
/* 800D7C40-800D8F3C 0D2580 12FC+00 1/1 0/0 0/0 .text checkDamageAction__9daAlink_cFv */
BOOL daAlink_c::checkDamageAction() {
s16 spE = field_0x3006;
field_0x3006 = 0;
s16 spE = mIceDamageWaitTimer;
mIceDamageWaitTimer = 0;
u8 spA = field_0x2fca;
field_0x2fca = 0;
@@ -513,17 +513,17 @@ BOOL daAlink_c::checkDamageAction() {
field_0x2fca = spA;
int sp2C = checkPolyDamage();
field_0x2fca = 0;
field_0x3006 = spE;
mIceDamageWaitTimer = spE;
if (sp2C & 0x80) {
field_0x3006++;
if (field_0x3006 < daAlinkHIO_damage_c0::m.mFreezeTime) {
mIceDamageWaitTimer++;
if (mIceDamageWaitTimer < daAlinkHIO_damage_c0::m.mFreezeTime) {
sp2C = 0;
}
} else if (field_0x3006 > 3) {
field_0x3006 -= 3;
} else if (mIceDamageWaitTimer > 3) {
mIceDamageWaitTimer -= 3;
} else {
field_0x3006 = 0;
mIceDamageWaitTimer = 0;
}
if (sp2C != 0) {
@@ -2068,7 +2068,7 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
mUnderFrameCtrl[0].setEnd(3);
mUnderFrameCtrl[0].setAttribute(0);
setFaceBasicTexture(FTANM_UNK_90);
field_0x2f9b = 1;
mMidnaAnm = 1;
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x48;
} else {
setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.field_0x60,
+3 -7
View File
@@ -1548,7 +1548,7 @@ int daAlink_c::procAutoJump() {
field_0x3198 = 0x32;
}
if (checkGrabGlide() && field_0x35ac.y > 0.0f) {
if (checkGrabGlide() && mWindSpeed.y > 0.0f) {
speed.y = 0.0f;
}
@@ -2009,10 +2009,6 @@ int daAlink_c::procCrouch() {
return 1;
}
BOOL daMidna_c::checkMidnaRealBody() {
return dKy_darkworld_check() == 1 || dComIfGs_isTransformLV(3);
}
/* 800C77F4-800C7C64 0C2134 0470+00 4/2 0/0 0/0 .text procCoMetamorphoseInit__9daAlink_cFv */
int daAlink_c::procCoMetamorphoseInit() {
int var_r29 = 0;
@@ -4010,8 +4006,8 @@ int daAlink_c::draw() {
tevStr.field_0x362 = b * var_f2;
var_r31 = 0;
}
} else if (field_0x3006 != 0) {
f32 temp_f4 = 1.0f - (field_0x3006 * (1.0f / daAlinkHIO_damage_c0::m.mFreezeTime));
} else if (mIceDamageWaitTimer != 0) {
f32 temp_f4 = 1.0f - (mIceDamageWaitTimer * (1.0f / daAlinkHIO_damage_c0::m.mFreezeTime));
f32 temp_f3 = 1.0f - temp_f4;
tevStr.mFogColor.r = (temp_f4 * daAlinkHIO_damage_c0::m.mFreezeInitR) +
+5 -5
View File
@@ -1222,9 +1222,9 @@ int daAlink_c::setDoubleAnimeWolf(f32 param_0, f32 param_1, f32 param_2,
setFaceBasicTexture(FTANM_UNK_8B);
if (checkWolfLieCode()) {
field_0x2f9b = 2;
mMidnaAnm = 2;
} else {
field_0x2f9b = m_wlAnmDataTable[param_3].field_0x2;
mMidnaAnm = m_wlAnmDataTable[param_3].field_0x2;
}
daAlink_WANM var_r27;
@@ -1284,9 +1284,9 @@ int daAlink_c::setSingleAnimeWolf(daAlink_c::daAlink_WANM i_anmID, f32 i_speed,
setFaceBasicTexture(FTANM_UNK_8B);
if (checkWolfLieCode()) {
field_0x2f9b = 2;
mMidnaAnm = 2;
} else {
field_0x2f9b = m_wlAnmDataTable[i_anmID].field_0x2;
mMidnaAnm = m_wlAnmDataTable[i_anmID].field_0x2;
}
field_0x215c = mUnderFrameCtrl;
@@ -1385,7 +1385,7 @@ int daAlink_c::checkNextActionWolf(int param_0) {
return 1;
}
if (checkEndResetFlg1(ERFLG1_UNK_40) &&
if (checkEndResetFlg1(ERFLG1_MIDNA_RIDE_SHOCK) &&
(mProcID == PROC_WOLF_WAIT || mProcID == PROC_WOLF_SERVICE_WAIT ||
mProcID == PROC_WOLF_TIRED_WAIT || (!checkInputOnR() && mProcID == PROC_WOLF_MOVE) ||
mProcID == PROC_WOLF_LIE_START || mProcID == PROC_WOLF_LIE_MOVE ||
+1 -1
View File
@@ -257,7 +257,7 @@ void daDoor20_c::setEventPrm() {
}
} else {
if (daPy_py_c::i_checkNowWolf()) {
if (!player->checkMidnaRide() || !daMidna_c::i_checkMidnaRealBody()) {
if (!player->checkMidnaRide() || !daMidna_c::checkMidnaRealBody()) {
return;
}
}
+3196 -1406
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1079,7 +1079,7 @@ u32 dEvt_control_c::getPId(void* actor) {
/* 800432EC-8004331C 03DC2C 0030+00 7/7 13/13 16/16 .text convPId__14dEvt_control_cFUi */
fopAc_ac_c* dEvt_control_c::convPId(fpc_ProcID id) {
return (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeByID, &id);
return fopAcM_SearchByID(id);
}
/* 8004331C-800433F0 03DC5C 00D4+00 0/0 1/1 0/0 .text getStbDemoData__14dEvt_control_cFPc