d_a_midna mostly done (#2237)

This commit is contained in:
Caroline Madsen
2024-11-06 19:20:22 -08:00
committed by GitHub
parent 467b7bffca
commit 98f8e7e741
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;
File diff suppressed because it is too large Load Diff
+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;