summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-12-04 05:10:59 -0800
committerTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-12-04 05:10:59 -0800
commitfd9c4cafc4d9aa3df4b2f43ee33f15152482fce9 (patch)
tree9cbded0544c03c997411dc658e7b8b4ae9e59277 /include
parent70eabb12bd5e9327ccd01b1f9367fca109d4fbfa (diff)
wip
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/J2DGraph/J2DAnmLoader.h2
-rw-r--r--include/JSystem/J2DGraph/J2DPane.h3
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DJoint.h8
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DModel.h1
-rw-r--r--include/SSystem/SComponent/c_m3d_g_cps.h1
-rw-r--r--include/d/a/d_a_alink.h1510
-rw-r--r--include/d/a/d_a_player.h45
-rw-r--r--include/d/bg/d_bg_s_acch.h2
-rw-r--r--include/d/cc/d_cc_d.h20
-rw-r--r--include/d/com/d_com_inf_game.h103
-rw-r--r--include/d/d_attention.h12
-rw-r--r--include/d/d_resorce.h4
-rw-r--r--include/d/d_stage.h35
-rw-r--r--include/d/event/d_event.h3
-rw-r--r--include/d/event/d_event_data.h164
-rw-r--r--include/d/event/d_event_manager.h12
-rw-r--r--include/d/kankyo/d_kankyo.h2
-rw-r--r--include/d/meter/d_meter2_info.h25
-rw-r--r--include/d/particle/d_particle.h168
-rw-r--r--include/d/save/d_save.h3
-rw-r--r--include/f_op/f_op_actor_mng.h6
-rw-r--r--include/f_pc/f_pc_manager.h4
-rw-r--r--include/m_Do/m_Do_ext.h104
-rw-r--r--include/m_Do/m_Do_mtx.h6
-rw-r--r--include/rel/d/a/d_a_crod/d_a_crod.h31
-rw-r--r--include/rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h9
26 files changed, 2013 insertions, 270 deletions
diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h
index 0c2f69d007..b6867363da 100644
--- a/include/JSystem/J2DGraph/J2DAnmLoader.h
+++ b/include/JSystem/J2DGraph/J2DAnmLoader.h
@@ -6,7 +6,7 @@
#include "dolphin/types.h"
struct J2DAnmLoaderDataBase {
- /* 80308A6C */ static void load(void const*);
+ /* 80308A6C */ static void* load(void const*);
};
class J2DAnmLoader {
diff --git a/include/JSystem/J2DGraph/J2DPane.h b/include/JSystem/J2DGraph/J2DPane.h
index d73d42d169..d6bb45c8ec 100644
--- a/include/JSystem/J2DGraph/J2DPane.h
+++ b/include/JSystem/J2DGraph/J2DPane.h
@@ -128,6 +128,9 @@ public:
void* getPointer(JSURandomInputStream* stream, u32 size, JKRArchive* archive);
void animationTransform();
void updateTransform(const J2DAnmTransform* transform);
+ void setUserInfo(u64 info) {
+ mUserInfoTag = info;
+ }
static f32 static_mBounds[4];
diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h
index 9cbf745d43..25a21bad57 100644
--- a/include/JSystem/J3DGraphAnimator/J3DJoint.h
+++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h
@@ -29,6 +29,14 @@ public:
static J3DJoint* mJoint;
}; // Size: 0x4
+class J3DMtxCalcNoAnmBase : public J3DMtxCalc {
+public:
+ /* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase();
+};
+
+template <typename A, typename B>
+class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase, public A, public B {};
+
class J3DJoint;
typedef int (*J3DJointCallBack)(J3DJoint*, int);
diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h
index 16bf6deacd..02c71511b1 100644
--- a/include/JSystem/J3DGraphAnimator/J3DModel.h
+++ b/include/JSystem/J3DGraphAnimator/J3DModel.h
@@ -49,6 +49,7 @@ public:
void offFlag(u32 flag) { mFlags &= ~flag; }
bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; }
Mtx& getBaseTRMtx() { return mBaseTransformMtx; }
+ void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mBaseTransformMtx); }
// is there a better way to handle inlines with same name as non-inlines?
MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); }
diff --git a/include/SSystem/SComponent/c_m3d_g_cps.h b/include/SSystem/SComponent/c_m3d_g_cps.h
index 47acd885af..14315a9fc3 100644
--- a/include/SSystem/SComponent/c_m3d_g_cps.h
+++ b/include/SSystem/SComponent/c_m3d_g_cps.h
@@ -26,6 +26,7 @@ public:
}
bool Cross(cM3dGCyl const* cyl, cXyz* xyz) const { return cM3d_Cross_CpsCyl(*this, *cyl, xyz); }
bool Cross(cM3dGSph const* sph, cXyz* xyz) const { return cM3d_Cross_CpsSph(*this, *sph, xyz); }
+ void SetR(f32 r) { mRadius = r; }
}; // Size = 0x20
diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h
index 22e01aed97..e723b67db0 100644
--- a/include/d/a/d_a_alink.h
+++ b/include/d/a/d_a_alink.h
@@ -19,6 +19,7 @@
#include "d/particle/d_particle.h"
#include "d/particle/d_particle_copoly.h"
#include "rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h"
+#include "rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h"
#include "dolphin/types.h"
class fopEn_enemy_c;
@@ -32,23 +33,29 @@ class J2DAnmBase;
class daAlink_lockCursor_c : public dDlst_base_c {
public:
- /* 80125F14 */ void create();
+ /* 80125F14 */ BOOL create();
/* 80126358 */ void update();
/* 80126424 */ virtual void draw();
/* 800CFE68 */ virtual ~daAlink_lockCursor_c();
+ void initFrame() {
+ field_0x4 = false;
+ field_0x2c = 4.0f;
+ field_0x30 = 0.0f;
+ }
+
private:
/* 0x04 */ bool field_0x4;
/* 0x05 */ u8 field_0x5[3];
- /* 0x08 */ J2DScreen* field_0x8;
+ /* 0x08 */ J2DScreen* mScrn;
/* 0x0C */ J2DPane* field_0xc;
- /* 0x10 */ J2DPane* field_0x10;
- /* 0x14 */ J2DPane* field_0x14;
- /* 0x18 */ J2DPane* field_0x18;
- /* 0x1C */ J2DAnmBase* field_0x1c;
- /* 0x20 */ J2DAnmBase* field_0x20;
- /* 0x24 */ J2DAnmBase* field_0x24;
- /* 0x28 */ J2DAnmBase* field_0x28;
+ /* 0x10 */ J2DPane* mCursor0;
+ /* 0x14 */ J2DPane* mCursor1;
+ /* 0x18 */ J2DPane* mCursor2;
+ /* 0x1C */ J2DAnmTevRegKey* field_0x1c;
+ /* 0x20 */ J2DAnmTevRegKey* field_0x20;
+ /* 0x24 */ J2DAnmColorKey* field_0x24;
+ /* 0x28 */ J2DAnmTransformKey* field_0x28;
/* 0x2C */ float field_0x2c;
/* 0x30 */ float field_0x30;
/* 0x34 */ float field_0x34;
@@ -57,7 +64,7 @@ private:
class daAlink_sight_c : public daPy_sightPacket_c {
public:
- /* 80126650 */ void create();
+ /* 80126650 */ bool create();
/* 80126710 */ void onLockFlg();
/* 801266C0 */ virtual void draw();
@@ -66,7 +73,7 @@ public:
private:
/* 0x4C */ bool mLockFlag;
/* 0x4D */ u8 field_0x4d[3];
- /* 0x50 */ daAlink_lockCursor_c field_0x50;
+ /* 0x50 */ daAlink_lockCursor_c mLockCursor;
};
class daAlink_blur_c : public J3DPacket {
@@ -84,7 +91,7 @@ private:
/* 0x018 */ u8 field_0x18[4];
/* 0x01C */ int field_0x1c;
/* 0x020 */ u8 field_0x20[4];
- /* 0x024 */ float field_0x24;
+ /* 0x024 */ f32 field_0x24;
/* 0x028 */ u8 field_0x28[4];
/* 0x02C */ cXyz field_0x2c;
/* 0x038 */ cXyz field_0x38[0x3C];
@@ -134,6 +141,25 @@ private:
/* 0x104 */ int mSetFlag;
};
+struct daAlink_AnmData {
+ /* 0x0 */ u16 field_0x0;
+ /* 0x2 */ u16 field_0x2;
+ /* 0x4 */ u8 field_0x4;
+ /* 0x5 */ u8 field_0x5;
+ /* 0x6 */ u16 field_0x6;
+ /* 0x8 */ u16 field_0x8;
+ /* 0xA */ u16 field_0xa;
+}; // Size: 0xC
+
+struct daAlink_WlAnmData {
+ /* 0x0 */ u16 field_0x0;
+ /* 0x2 */ u8 field_0x2;
+ /* 0x3 */ u8 field_0x3;
+ /* 0x4 */ u16 field_0x4;
+ /* 0x6 */ u8 field_0x6;
+ /* 0x7 */ u8 field_0x7;
+}; // Size: 0x8
+
class daAlink_c : public daPy_py_c {
public:
enum daAlink_ANM {
@@ -157,6 +183,8 @@ public:
/* 0xBE */ ANM_BACKWARD_SLIDE,
/* 0xBF */ ANM_BACKWARD_SLIDE_LAND,
/* 0xC0 */ ANM_FORWARD_SLIDE_LAND,
+
+ /* 0x18D */ ANM_CUT_JUMP_LARGE = 0x18D, // verify
ANM_GANON_FINISH = 408 // name probably wrong, fix later
};
@@ -202,6 +230,7 @@ public:
/* 0x10000000 */ MODE_UNK_10000000 = 0x10000000, // catch boomerang?
/* 0x20000000 */ MODE_UNK_20000000 = 0x20000000,
/* 0x40000000 */ MODE_UNK_40000000 = 0x40000000,
+ MODE_PLAYER_FLY = 0x70C52,
};
enum daAlink_PROC {
@@ -335,7 +364,11 @@ public:
/* 0x0F2 */ WOLF_MOVE,
/* 0x0F3 */ WOLF_DASH,
/* 0x0F4 */ WOLF_KNOCKBACK,
- /* 0x0F7 */ WOLF_SIDESTEP = 247,
+ /* 0x0F6 */ WOLF_ATN_WAIT = 246,
+ /* 0x0F7 */ WOLF_SIDESTEP,
+ /* 0x0F8 */ WOLF_SIDESTEP_LAND,
+ /* 0x0F9 */ WOLF_BACKFLIP,
+ /* 0x0FA */ WOLF_BACKFLIP_LAND,
/* 0x0FC */ WOLF_AUTOJUMP = 252,
/* 0x0FF */ WOLF_RSIT = 255,
/* 0x107 */ WOLF_DAMAGE = 263,
@@ -356,7 +389,8 @@ public:
/* 0x144 */ PUSH_MOVE,
/* 0x148 */ TRESURE_STAND = 328,
/* 0x14D */ METAMORPHOSE = 333,
- /* 0x150 */ DEAD = 336,
+ /* 0x14F */ WARP = 335,
+ /* 0x150 */ DEAD,
/* 0x159 */ LARGE_DAMAGE = 345,
/* 0x15A */ LARGE_DAMAGE_WALL,
};
@@ -371,9 +405,12 @@ public:
};
class firePointEff_c {
+ public:
/* 800CFC3C */ ~firePointEff_c();
/* 800CFC78 */ firePointEff_c();
- /* 0x00 */ u8 field_0x0[0xc];
+ /* 0x00 */ u8 field_0x0;
+ /* 0x04 */ u32 field_0x4;
+ /* 0x08 */ u32 field_0x8;
/* 0x0C */ cXyz field_0xc;
/* 0x18 */ cXyz field_0x18;
/* 0x24 */ cXyz field_0x24;
@@ -388,14 +425,14 @@ public:
/* 8009D87C */ bool getE3Zhint();
/* 8009D884 */ char* getAlinkArcName();
/* 8009DA60 */ static bool checkStageName(char const*);
- /* 8009DA98 */ static void tgHitCallback(fopAc_ac_c*, dCcD_GObjInf*, dCcD_GObjInf*);
+ /* 8009DA98 */ void tgHitCallback(fopAc_ac_c*, dCcD_GObjInf*, dCcD_GObjInf*);
/* 8009DB64 */ void coHitCallback(fopAc_ac_c*, dCcD_GObjInf*);
/* 8009DC6C */ void setMatrixWorldAxisRot(f32 (*)[4], s16, s16, s16, int, cXyz const*);
/* 8009DD90 */ void jointControll(int);
/* 8009E7B8 */ void setUpperFront();
/* 8009E91C */ void changeBlendRate(int);
/* 8009EB18 */ void resetRootMtx();
- /* 8009EB58 */ void modelCallBack(int);
+ /* 8009EB58 */ bool modelCallBack(int);
/* 8009ECA0 */ void headModelCallBack(int);
/* 8009EF7C */ void wolfModelCallBack(int);
/* 8009F034 */ void setHatAngle();
@@ -418,10 +455,10 @@ public:
/* 800A2CE0 */ void setLegAngle(f32, daAlink_footData_c*, s16*, s16*, int);
/* 800A3430 */ void footBgCheck();
/* 800A39B8 */ void handBgCheck();
- /* 800A3C8C */ void setItemHeap();
+ /* 800A3C8C */ JKRHeap* setItemHeap();
/* 800A3CE4 */ void setIdxMask(u16*, u16*);
/* 800A3D0C */ void getAnimeResource(daPy_anmHeap_c*, u16, u32);
- /* 800A3D7C */ void initModel(J3DModelData*, u32, u32);
+ /* 800A3D7C */ J3DModel* initModel(J3DModelData*, u32, u32);
/* 800A3E30 */ void initModel(u16, u32);
/* 800A3E98 */ void initModelEnv(u16, u32);
/* 800A3F00 */ void initDemoModel(J3DModel**, char const*, u32);
@@ -519,17 +556,17 @@ public:
/* 800B0150 */ void getRoofAngle(cBgS_PolyInfo*, s16);
/* 800B01FC */ void getWallEdgePos(cXyz const&, cM3dGPla*, cM3dGPla*, cXyz*, int);
/* 800B02BC */ void setFrontWallType();
- /* 800B1488 */ void checkWaterPolygonUnder();
+ /* 800B1488 */ BOOL checkWaterPolygonUnder();
/* 800B14B4 */ void setWaterY();
/* 800B154C */ void setHangWaterY();
/* 800B172C */ void setSandDownBgCheckWallH();
/* 800B1770 */ void setBgCheckParam();
- /* 800B1B28 */ void checkNotJumpSinkLimit();
- /* 800B1B68 */ void checkNotItemSinkLimit();
+ /* 800B1B28 */ BOOL checkNotJumpSinkLimit();
+ /* 800B1B68 */ BOOL checkNotItemSinkLimit();
/* 800B1BAC */ void setSandShapeOffset();
/* 800B1FB8 */ bool checkLv2MiddleBossBgRide(s16);
/* 800B1FD8 */ void getSlidePolygon(cM3dGPla*);
- /* 800B21EC */ void checkSlope() const;
+ /* 800B21EC */ BOOL checkSlope() const;
/* 800B25CC */ BOOL itemTriggerCheck(u8);
/* 800B25E8 */ BOOL itemButtonCheck(u8);
/* 800B2604 */ void itemButton();
@@ -556,7 +593,7 @@ public:
/* 800B3630 */ void getShapeAngleYAtnActor();
/* 800B3734 */ void setShapeAngleToAtnActor(int);
/* 800B3844 */ void initServiceWaitTime();
- /* 800B3904 */ void checkZeroSpeedF() const;
+ /* 800B3904 */ bool checkZeroSpeedF() const;
/* 800B3924 */ void setNormalSpeedF(f32, f32);
/* 800B3F2C */ void getStickAngleDistanceRate();
/* 800B3FD4 */ void setSpeedAndAngleNormal();
@@ -578,7 +615,7 @@ public:
/* 800B5C34 */ void setLandPassiveData();
/* 800B5C64 */ void setStepLandVibration();
/* 800B5CCC */ void checkLandAction(int);
- /* 800B5F6C */ void checkSlideAction();
+ /* 800B5F6C */ BOOL checkSlideAction();
/* 800B607C */ void checkAutoJumpAction();
/* 800B69CC */ bool checkCutJumpInFly();
/* 800B6A30 */ BOOL checkFrontWallTypeAction();
@@ -659,9 +696,9 @@ public:
/* 800BFD74 */ void makeItemType();
/* 800BFDB0 */ BOOL checkZoraWearAbility() const;
/* 800BFDFC */ BOOL checkMagicArmorWearAbility() const;
- /* 800BFE48 */ void loadAramBmd(u16, u32);
+ /* 800BFE48 */ J3DModelData* loadAramBmd(u16, u32);
/* 800BFF04 */ void loadAram(u16, u32);
- /* 800BFF70 */ void loadAramItemBrk(u16, J3DModel*);
+ /* 800BFF70 */ J3DAnmTevRegKey* loadAramItemBrk(u16, J3DModel*);
/* 800BFFCC */ void loadAramItemBtk(u16, J3DModel*);
/* 800C0028 */ void loadAramItemBtp(u16, J3DModel*);
/* 800C0084 */ void changeItemBck(u16, f32);
@@ -723,7 +760,7 @@ public:
/* 800C4FFC */ void procFrontRollCrash();
/* 800C5160 */ void procFrontRollSuccessInit();
/* 800C5240 */ void procFrontRollSuccess();
- /* 800C5328 */ void procSideRollInit(int);
+ /* 800C5328 */ bool procSideRollInit(int);
/* 800C5484 */ void procSideRoll();
/* 800C5700 */ void backJumpSpeedDec();
/* 800C57A4 */ bool procBackJumpInit(int);
@@ -748,7 +785,7 @@ public:
/* 800C755C */ void procStepMove();
/* 800C7690 */ void procCrouchInit();
/* 800C76F8 */ void procCrouch();
- /* 800C77F4 */ void procCoMetamorphoseInit();
+ /* 800C77F4 */ bool procCoMetamorphoseInit();
/* 800C7C64 */ void procCoMetamorphose();
/* 800C82E8 */ void procCoMetamorphoseOnlyInit();
/* 800C83A0 */ void procCoMetamorphoseOnly();
@@ -874,7 +911,7 @@ public:
/* 800D6238 */ void procCutLargeJumpChargeInit();
/* 800D62A0 */ void procCutLargeJumpCharge();
/* 800D6374 */ void procCutLargeJumpInit();
- /* 800D6484 */ void procCutLargeJump();
+ /* 800D6484 */ bool procCutLargeJump();
/* 800D66C0 */ void procCutLargeJumpLandInit(int);
/* 800D67FC */ void procCutLargeJumpLand();
/* 800D698C */ void procSwordUnequipSpInit();
@@ -950,7 +987,7 @@ public:
/* 800DDBA8 */ void procGuardAttack();
/* 800DDE58 */ void procGuardBreakInit();
/* 800DDF2C */ void procGuardBreak();
- /* 800DE008 */ void procTurnMoveInit(int);
+ /* 800DE008 */ bool procTurnMoveInit(int);
/* 800DE380 */ void procTurnMove();
/* 800DE64C */ void getArrowFlyData(f32*, f32*, int) const;
/* 800DE740 */ void getArrowIncAtR() const;
@@ -982,20 +1019,20 @@ public:
/* 800DFDDC */ void procBowSubject();
/* 800DFE3C */ void procBowMoveInit();
/* 800DFEC0 */ void procBowMove();
- /* 800DFFE0 */ void checkBoomerangLockAccept();
- /* 800E0010 */ void getBoomSpeed();
- /* 800E00B0 */ void getBoomCatchSpeed() const;
- /* 800E00C0 */ void getBoomFlyMax() const;
- /* 800E011C */ void getBoomLockMax();
- /* 800E0190 */ void getBoomBgThroughTime() const;
- /* 800E01A0 */ void checkBossBabaRoom();
+ /* 800DFFE0 */ BOOL checkBoomerangLockAccept();
+ /* 800E0010 */ f32 getBoomSpeed();
+ /* 800E00B0 */ f32 getBoomCatchSpeed() const;
+ /* 800E00C0 */ f32 getBoomFlyMax() const;
+ /* 800E011C */ f32 getBoomLockMax();
+ /* 800E0190 */ s16 getBoomBgThroughTime() const;
+ /* 800E01A0 */ bool checkBossBabaRoom();
/* 800E01CC */ void cancelBoomerangLock(fopAc_ac_c*);
- /* 800E0210 */ void getBoomerangActor();
+ /* 800E0210 */ fopAc_ac_c* getBoomerangActor();
/* 800E0244 */ void checkBoomerangChargeEnd();
/* 800E02B8 */ void checkBoomerangCarry(fopAc_ac_c*);
/* 800E03D0 */ void initBoomerangUpperAnimeSpeed(int);
- /* 800E0440 */ void checkBoomerangAnime() const;
- /* 800E04AC */ void checkBoomerangThrowAnime() const;
+ /* 800E0440 */ BOOL checkBoomerangAnime() const;
+ /* 800E04AC */ BOOL checkBoomerangThrowAnime() const;
/* 800E04E8 */ void setBoomerangReadyQuake();
/* 800E055C */ void setBoomerangReadyAnime();
/* 800E05E8 */ void setThrowBoomerangAnime();
@@ -1013,14 +1050,14 @@ public:
/* 800E10F4 */ void procBoomerangMove();
/* 800E11D8 */ void procBoomerangCatchInit();
/* 800E1248 */ void procBoomerangCatch();
- /* 800E12E0 */ void checkLv6BossRoom();
- /* 800E1310 */ void getCopyRodBallSpeed() const;
- /* 800E1320 */ void getCopyRodBallReturnSpeed() const;
- /* 800E1330 */ void getCopyRodBallDisMax() const;
- /* 800E1374 */ void getCopyRodControllActor();
- /* 800E1390 */ void getCopyRodCameraActor();
+ /* 800E12E0 */ static BOOL checkLv6BossRoom();
+ /* 800E1310 */ f32 getCopyRodBallSpeed() const;
+ /* 800E1320 */ f32 getCopyRodBallReturnSpeed() const;
+ /* 800E1330 */ f32 getCopyRodBallDisMax() const;
+ /* 800E1374 */ fopAc_ac_c* getCopyRodControllActor();
+ /* 800E1390 */ fopAc_ac_c* getCopyRodCameraActor();
/* 800E13AC */ void initCopyRodUpperAnimeSpeed(int);
- /* 800E1408 */ void checkForestOldCentury();
+ /* 800E1408 */ BOOL checkForestOldCentury();
/* 800E1530 */ void checkCopyRodAnime() const;
/* 800E158C */ void setCopyRodControllAnime();
/* 800E15FC */ void setCopyRodControllUpperSpeedRate();
@@ -1281,7 +1318,7 @@ public:
/* 800F3EB8 */ void checkCanoePaddleGrab(fopAc_ac_c*) const;
/* 800F3F38 */ void checkCanoeFishingRodGrabOrPut() const;
/* 800F3FC4 */ void initCanoeRide();
- /* 800F4008 */ void checkCanoeJumpRide();
+ /* 800F4008 */ BOOL checkCanoeJumpRide();
/* 800F40E4 */ void setArmReelAnime();
/* 800F4140 */ void setFishingWaitAction();
/* 800F4490 */ void setFishGetFace();
@@ -1643,7 +1680,7 @@ public:
/* 80112E7C */ void setIronBallChainPos();
/* 80113CA0 */ void checkIronBallReturnChange();
/* 80113D58 */ void setIronBallPos();
- /* 801150E4 */ void checkIronBallAnime() const;
+ /* 801150E4 */ BOOL checkIronBallAnime() const;
/* 8011510C */ void setIronBallReadyAnime();
/* 801151E0 */ void setIronBallBaseAnime();
/* 80115254 */ void checkUpperItemActionIronBall();
@@ -1837,14 +1874,14 @@ public:
/* 80126F3C */ void changeLink(int);
/* 80127C54 */ void onWolfEyeUp();
/* 80127CAC */ void offWolfEyeUp();
- /* 80127CF0 */ void wolfSenseTrigger();
+ /* 80127CF0 */ BOOL wolfSenseTrigger();
/* 80127D14 */ void setWolfSenceStatus(u8);
/* 80127D2C */ void wolfClawTrigger();
/* 80127D50 */ void setWolfDigStatus(u8);
/* 80127D68 */ BOOL checkWolfShapeReverse() const;
- /* 80127DC4 */ void checkWolfSideStep() const;
+ /* 80127DC4 */ BOOL checkWolfSideStep() const;
/* 80127E08 */ void setWolfTailAngle();
- /* 80127F20 */ void checkWolfSlowDash();
+ /* 80127F20 */ BOOL checkWolfSlowDash();
/* 80127F50 */ void setSpeedAndAngleWolf();
/* 80128478 */ void setSpeedAndAngleWolfAtn();
/* 80128798 */ void checkWolfAtnWait();
@@ -1862,9 +1899,9 @@ public:
/* 80129704 */ void setSingleAnimeWolf(daAlink_c::daAlink_WANM, f32, f32, s16, f32);
/* 80129848 */ void setSingleAnimeWolfParam(daAlink_c::daAlink_WANM, daAlinkHIO_anm_c const*);
/* 8012987C */ void checkWolfLandAction(int);
- /* 80129958 */ void checkMidnaUseAbility() const;
+ /* 80129958 */ BOOL checkMidnaUseAbility() const;
/* 801299A8 */ void checkWolfUseAbility();
- /* 80129A80 */ void checkWolfGroundSpecialMode();
+ /* 80129A80 */ bool checkWolfGroundSpecialMode();
/* 80129B44 */ void checkNextActionWolf(int);
/* 8012A02C */ void wolfSideBgCheck(s16);
/* 8012A228 */ void checkWolfAttackReverse(int);
@@ -1955,12 +1992,12 @@ public:
/* 8013384C */ void procWolfRopeSubjectivityInit();
/* 80133930 */ void procWolfRopeSubjectivity();
/* 80133D6C */ void getWolfTagJumpTime() const;
- /* 80133EF0 */ void checkMidnaLockJumpPoint() const;
+ /* 80133EF0 */ cXyz* checkMidnaLockJumpPoint() const;
/* 80134000 */ void procWolfTagJumpInit(fopAc_ac_c*);
/* 80134838 */ void procWolfTagJump();
/* 80134DB8 */ void procWolfTagJumpLandInit(fopAc_ac_c*);
/* 80134EBC */ void procWolfTagJumpLand();
- /* 80135160 */ void procWolfGiantPuzzleInit();
+ /* 80135160 */ bool procWolfGiantPuzzleInit();
/* 801351F8 */ void procWolfGiantPuzzle();
/* 80135458 */ void setWolfHangGroundY();
/* 801354C8 */ void changeWolfHangEndProc();
@@ -1978,7 +2015,7 @@ public:
/* 80136C18 */ void procWolfLandDamageInit(int);
/* 80136DE4 */ void procWolfLandDamage();
/* 80136EC4 */ void setWolfScreamWaitAnime();
- /* 80136F54 */ void procWolfScreamWaitInit();
+ /* 80136F54 */ bool procWolfScreamWaitInit();
/* 80136FF8 */ void procWolfScreamWait();
/* 801370E4 */ void getWolfLieMoveAnmSpeed();
/* 8013712C */ void getWolfLieMoveSpeed();
@@ -2058,7 +2095,7 @@ public:
/* 8013D86C */ void procWolfGrabThrow();
/* 8013D930 */ void procWolfPushInit();
/* 8013DA8C */ void procWolfPush();
- /* 8013DB6C */ void procWolfCargoCarryInit();
+ /* 8013DB6C */ bool procWolfCargoCarryInit();
/* 8013DC5C */ void procWolfCargoCarry();
/* 8013DDF8 */ void procWolfChainUpInit();
/* 8013DE70 */ void procWolfChainUp();
@@ -2243,7 +2280,7 @@ public:
virtual BOOL checkHorseStart();
virtual Z2WolfHowlMgr* getWolfHowlMgrP();
virtual BOOL checkWolfHowlSuccessAnime() const;
- virtual bool checkCopyRodTopUse();
+ virtual BOOL checkCopyRodTopUse();
virtual bool checkCopyRodEquip() const;
virtual BOOL checkCutJumpMode() const;
@@ -2251,32 +2288,42 @@ public:
u32 i_checkModeFlg(u32 pFlag) const { return mModeFlg & pFlag; }
bool i_checkSmallUpperGuardAnime() const { return checkUpperAnime(0x16); }
bool i_checkFmChainGrabAnime() const { return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); }
- bool i_checkAttentionLock() { return mAttention->Lockon(); }
+ BOOL i_checkAttentionLock() { return mAttention->Lockon(); }
bool checkUpperAnime(u16 pIdx) const { return mUpperAnime[UPPER_NOW].getIdx() == pIdx; }
bool checkIronBallWaitAnime() const { return checkUpperAnime(0x19C); }
- s16 checkWolfEyeUp() const { return mWolfEyeUp; }
- void onModeFlg(u32 flag) { mModeFlg |= flag; }
- void offModeFlg(u32 flag) { mModeFlg &= ~flag; }
bool checkHorseTurnLAnime() const { return checkUpperAnime(0x24C); }
bool checkHorseTurnRAnime() const { return checkUpperAnime(0x24D); }
bool checkHorseTurnAnime() const { return checkHorseTurnLAnime() || checkHorseTurnRAnime(); }
bool checkHookshotShootAnime() const { return checkUpperAnime(0x18C); }
bool checkHookshotReadyAnime() const { return checkUpperAnime(0x18D); }
bool checkHookshotAnime() const { return checkHookshotReadyAnime() || checkHookshotShootAnime(); }
+ BOOL checkBoomerangReadyAnime() const { return (mEquipItem == BOOMERANG || mEquipItem == 0x102) && checkUpperAnime(0x54); }
+
+ s16 checkWolfEyeUp() const { return mWolfEyeUp; }
+ void onModeFlg(u32 flag) { mModeFlg |= flag; }
+ void offModeFlg(u32 flag) { mModeFlg &= ~flag; }
bool swordButton() { return itemButtonCheck(8); }
daPy_actorKeep_c* getThrowBoomerangAcKeep() { return &mThrowBoomerangActor; }
s32 getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
bool checkFisingRodLure() const { return mEquipItem == 0x105; }
bool doTrigger() const { return mItemTrigger & 0x10; }
u32 getStartMode() { return (fopAcM_GetParam(this) >> 0xC) & 0x1F; }
+ bool checkInputOnR() const { return field_0x33ac <= 0.05f; }
+ static int getSightBti() { return 0x5B; }
+ bool checkBoomerangChargeEndWait() const { return mEquipItem != 0x102 && checkBoomerangAnime(); }
+ J3DAnmTransform* getNowAnmPackUpper(daAlink_UPPER param_0) { return mNowAnmPack[param_0].getAnmTransform(); }
+ void setFacePriBck(u16 param_0) { setFaceBck(param_0, 1, 0xFFFF); }
+
BOOL i_checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; }
+ inline u16 getReadyItem();
+
static u8 const m_mainBckShield[80];
static u8 const m_mainBckSword[20];
static u8 const m_mainBckFishing[112];
- static u8 const m_anmDataTable[4968];
- static void* const m_wlAnmDataTable[294];
+ static daAlink_AnmData const m_anmDataTable[414];
+ static daAlink_WlAnmData const m_wlAnmDataTable[147];
static u8 const m_faceTexDataTable[652];
static u8 const m_handLeftOutSidePos[12];
static u8 const m_handRightOutSidePos[12];
@@ -2313,7 +2360,7 @@ private:
/* 0x00688 */ J3DModel* field_0x0688;
/* 0x0068C */ J3DAnmBase* field_0x068c;
/* 0x00690 */ mDoExt_baseAnm** field_0x0690;
- /* 0x00694 */ void* field_0x0694; // J3DDeformData
+ /* 0x00694 */ J3DDeformData* field_0x0694;
/* 0x00698 */ void* field_0x0698;
/* 0x0069C */ void* field_0x069c;
/* 0x006A0 */ J3DModel* field_0x06a0;
@@ -2349,7 +2396,7 @@ private:
/* 0x00718 */ J3DAnmBase* field_0x0718;
/* 0x0071C */ J3DAnmBase* field_0x071c;
/* 0x00720 */ J3DAnmBase* field_0x0720;
- /* 0x00724 */ J3DAnmBase* field_0x0724;
+ /* 0x00724 */ J3DAnmTevRegKey* field_0x0724;
/* 0x00728 */ J3DAnmBase* field_0x0728;
/* 0x0072C */ J3DAnmBase* field_0x072c;
/* 0x00730 */ mDoExt_bckAnm field_0x730;
@@ -2382,12 +2429,12 @@ private:
/* 0x01ECC */ dBgS_ObjGndChk mObjGndChk;
/* 0x01F20 */ u8 field_0x1f20[8];
/* 0x01F28 */ mDoExt_AnmRatioPack field_0x1f28[3];
- /* 0x01F40 */ mDoExt_AnmRatioPack field_0x1f40[3];
+ /* 0x01F40 */ mDoExt_AnmRatioPack mNowAnmPack[3];
/* 0x01F58 */ daPy_anmHeap_c mUnderAnime[3];
/* 0x01F94 */ daPy_anmHeap_c mUpperAnime[3];
/* 0x01FD0 */ daPy_frameCtrl_c mFrameCtrl1[3];
/* 0x02018 */ daPy_frameCtrl_c mFrameCtrl2[3];
- /* 0x02060 */ void* field_0x2060; // mDoExt_MtxCalcOldFrame*
+ /* 0x02060 */ mDoExt_MtxCalcOldFrame* field_0x2060;
/* 0x02064 */ daAlink_sight_c mSight;
/* 0x020F0 */ daPy_anmHeap_c mAnmHeap3;
/* 0x02104 */ daPy_anmHeap_c mAnmHeap4;
@@ -2408,7 +2455,7 @@ private:
/* 0x027E8 */ dAttList_c* mAttList2;
/* 0x027EC */ fopAc_ac_c* mTargetedActor;
/* 0x027F0 */ fopAc_ac_c* field_0x27f0;
- /* 0x027F4 */ fopAc_ac_c* field_0x27f4;
+ /* 0x027F4 */ kytag05_class* field_0x27f4;
/* 0x027F8 */ fopAc_ac_c* field_0x27f8;
/* 0x027FC */ fopAc_ac_c* field_0x27fc;
/* 0x02800 */ daTagMmsg_c* mMidnaMsg;
@@ -2420,7 +2467,7 @@ private:
/* 0x02824 */ daPy_actorKeep_c mItemActor; // name might be wrong
/* 0x0282C */ daPy_actorKeep_c mGrabItemActor;
/* 0x02834 */ daPy_actorKeep_c mThrowBoomerangActor;
- /* 0x0283C */ daPy_actorKeep_c field_0x283c;
+ /* 0x0283C */ daPy_actorKeep_c mCopyRodAcKeep;
/* 0x02844 */ daPy_actorKeep_c field_0x2844;
/* 0x0284C */ daPy_actorKeep_c field_0x284c;
/* 0x02854 */ daPy_actorKeep_c mCargoCarryActor;
@@ -2443,7 +2490,7 @@ private:
/* 0x02BAC */ cXyz field_0x2bac;
/* 0x02BB8 */ Mtx mInvMtx;
/* 0x02BE8 */ Mtx field_0x2be8;
- /* 0x02C18 */ Mtx field_0x2c18;
+ /* 0x02C18 */ Mtx mRootMtx;
/* 0x02C48 */ Mtx field_0x2c48;
/* 0x02C78 */ Mtx field_0x2c78;
/* 0x02CA8 */ Z2CreatureLink mZ2Link;
@@ -2568,7 +2615,7 @@ private:
/* 0x0300E */ s16 field_0x300e;
/* 0x03010 */ s16 field_0x3010;
/* 0x03012 */ s16 field_0x3012;
- /* 0x03014 */ s16 field_0x3014;
+ /* 0x03014 */ s16 mFallVoiceInit;
/* 0x03016 */ u8 field_0x3016[2];
/* 0x03018 */ s16 field_0x3018;
/* 0x0301A */ s16 field_0x301a;
@@ -2765,11 +2812,11 @@ private:
/* 0x033A8 */ float field_0x33a8;
/* 0x033AC */ float field_0x33ac;
/* 0x033B0 */ float field_0x33b0;
- /* 0x033B4 */ float field_0x33b4;
+ /* 0x033B4 */ float mWaterY;
/* 0x033B8 */ float field_0x33b8;
/* 0x033BC */ float field_0x33bc;
/* 0x033C0 */ float field_0x33c0;
- /* 0x033C4 */ float field_0x33c4;
+ /* 0x033C4 */ float mFallHeight;
/* 0x033C8 */ float field_0x33c8;
/* 0x033CC */ float field_0x33cc;
/* 0x033D0 */ float field_0x33d0;
@@ -2813,7 +2860,7 @@ private:
/* 0x03468 */ float field_0x3468;
/* 0x0346C */ float field_0x346c;
/* 0x03470 */ float field_0x3470;
- /* 0x03474 */ float field_0x3474;
+ /* 0x03474 */ float mSwordUpColorIntensity;
/* 0x03478 */ float field_0x3478;
/* 0x0347C */ float field_0x347c;
/* 0x03480 */ float field_0x3480;
@@ -2830,7 +2877,7 @@ private:
/* 0x034D4 */ cXyz field_0x34d4;
/* 0x034E0 */ cXyz field_0x34e0;
/* 0x034EC */ cXyz field_0x34ec;
- /* 0x034F8 */ cXyz field_0x34f8;
+ /* 0x034F8 */ cXyz mLastJumpPos;
/* 0x03504 */ cXyz field_0x3504;
/* 0x03510 */ cXyz field_0x3510;
/* 0x0351C */ cXyz field_0x351c;
@@ -2935,6 +2982,21 @@ public:
static daAlinkHIO_basic_c1 const m;
};
+class daAlinkHIO_backJump_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+}; // Size: 0x38
+
+class daAlinkHIO_backJump_c0 {
+public:
+ static daAlinkHIO_backJump_c1 const m;
+};
+
class daAlinkHIO_autoJump_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c mJump;
@@ -2975,89 +3037,6 @@ public:
static daAlinkHIO_autoJump_c1 const m;
};
-class daAlinkHIO_wlAutoJump_c1 {
-public:
- /* 0x00 */ daAlinkHIO_anm_c field_0x00;
- /* 0x14 */ daAlinkHIO_anm_c field_0x14;
- /* 0x28 */ daAlinkHIO_anm_c field_0x28;
- /* 0x3C */ u8 field_0x3c;
- /* 0x3E */ s16 field_0x3e;
- /* 0x40 */ s16 field_0x40;
- /* 0x42 */ s16 field_0x42;
- /* 0x44 */ f32 field_0x44;
- /* 0x48 */ f32 field_0x48;
- /* 0x4C */ f32 field_0x4c;
- /* 0x50 */ f32 field_0x50;
- /* 0x54 */ f32 field_0x54;
- /* 0x58 */ f32 field_0x58;
- /* 0x5C */ f32 field_0x5c;
- /* 0x60 */ f32 field_0x60;
- /* 0x64 */ f32 field_0x64;
- /* 0x68 */ f32 field_0x68;
- /* 0x6C */ f32 field_0x6c;
- /* 0x70 */ f32 field_0x70;
- /* 0x74 */ f32 field_0x74;
- /* 0x78 */ f32 field_0x78;
-}; // size = 0x7C
-
-class daAlinkHIO_wlAutoJump_c0 {
-public:
- static daAlinkHIO_wlAutoJump_c1 const m;
-};
-
-class daAlinkHIO_bomb_c1 {
-public:
- /* 0x00 */ s16 mExplodeTime;
- /* 0x02 */ s16 mEnemyBombColorR;
- /* 0x04 */ s16 mBombInsectLimitAngle;
- /* 0x08 */ f32 mGravity;
- /* 0x0C */ f32 mMaxFallSpeed;
- /* 0x10 */ f32 mBoundRate;
- /* 0x14 */ f32 mStopSpeedY;
- /* 0x18 */ f32 mMaxSpeedY;
- /* 0x1C */ f32 mEffScale;
- /* 0x20 */ f32 mAtRadius;
- /* 0x24 */ f32 mPokeBombTrackRate;
- /* 0x28 */ f32 mWaterGravity;
- /* 0x2C */ f32 mWaterMaxFallSpeed;
- /* 0x30 */ f32 mThrowSpeedH;
- /* 0x34 */ f32 mThrowSpeedV;
- /* 0x38 */ f32 mWaterThrowSpeedH;
- /* 0x3C */ f32 mWaterThrowSpeedV;
- /* 0x40 */ f32 mWolfThrowSpeedH;
- /* 0x44 */ f32 mWolfThrowSpeedV;
- /* 0x48 */ f32 mExplodeWaterEffectLimit;
-}; // Size: 0x4C
-
-class daAlinkHIO_bomb_c0 {
-public:
- static daAlinkHIO_bomb_c1 const m;
-};
-
-class daAlinkHIO_magneBoots_c1 {
-public:
- /* 0x00 */ daAlinkHIO_anm_c mEquipAnm;
- /* 0x14 */ f32 mInputFactor;
- /* 0x18 */ f32 mFeetPositionRatio;
- /* 0x1C */ f32 mWalkAnmSpeedMax;
- /* 0x20 */ f32 mWalkAnmSpeedMin;
- /* 0x24 */ f32 mWaterInputFactor;
- /* 0x28 */ f32 mWaterStartWalkAnmRate;
- /* 0x2C */ f32 mWaterWalkAnmRate;
- /* 0x30 */ f32 mMaxMagneFlySpeed;
- /* 0x34 */ f32 mMagneFlyAccelRate;
- /* 0x38 */ f32 mWaterVelocityY;
- /* 0x3C */ f32 mWaterVelocityX;
- /* 0x40 */ f32 mWaterVelRateSword;
- /* 0x44 */ f32 mZoraWaterInputFactor;
- /* 0x48 */ f32 mZoraWaterAnmSpeed;
-}; // Size: 0x4C
-
-class daAlinkHIO_magneBoots_c0 {
-public:
- static daAlinkHIO_magneBoots_c1 const m;
-};
-
class daAlinkHIO_cut_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c mEquipAnm;
@@ -3113,6 +3092,28 @@ public:
static daAlinkHIO_cutJump_c1 const m;
};
+class daAlinkHIO_cutLargeJump_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mChargeAnm; // ?
+ /* 0x14 */ daAlinkHIO_anm_c mChargeMoveAnm; // ?
+ /* 0x28 */ daAlinkHIO_anm_c mCutAnm;
+ /* 0x3C */ daAlinkHIO_anm_c mLandAnm;
+ /* 0x50 */ f32 mCutSpeedH;
+ /* 0x54 */ f32 mCutSpeedV;
+ /* 0x58 */ f32 mJumpAttackStartF;
+ /* 0x5C */ f32 mJumpAttackEndF;
+ /* 0x60 */ f32 mCutInitF;
+ /* 0x64 */ f32 mLandAttackInitF;
+ /* 0x68 */ f32 mLandAttackEndF;
+ /* 0x6C */ f32 mLandAttackRadius;
+ /* 0x70 */ f32 mSpinSlashUnkCF;
+}; // Size: 0x74
+
+class daAlinkHIO_cutLargeJump_c0 {
+public:
+ static daAlinkHIO_cutLargeJump_c1 const m;
+};
+
class daAlinkHIO_move_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c mSlideAnm;
@@ -3274,6 +3275,460 @@ public:
static daAlinkHIO_frontRoll_c1 const m;
};
+class daAlinkHIO_swim_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mResurfaceAnm;
+ /* 0x14 */ daAlinkHIO_anm_c mDiveAnm;
+ /* 0x28 */ daAlinkHIO_anm_c mUnderwaterDiveAnm;
+ /* 0x3C */ daAlinkHIO_anm_c mDashAnm;
+ /* 0x50 */ s16 mTurnRate;
+ /* 0x52 */ s16 mTurnMin;
+ /* 0x54 */ s16 mTurnMax;
+ /* 0x56 */ s16 mUnderwaterTurnRate;
+ /* 0x58 */ s16 mUnderwaterTurnMin;
+ /* 0x5A */ s16 mUnderwaterTurnMax;
+ /* 0x5C */ s16 val1a; // related to dash
+ /* 0x5E */ s16 val1a_; // related to dash
+ /* 0x60 */ f32 mInitHeight;
+ /* 0x64 */ f32 mResurfaceHeight;
+ /* 0x68 */ f32 mMaxForwardSpeed;
+ /* 0x6C */ f32 mMaxStrafeSpeed;
+ /* 0x70 */ f32 mMaxBackwardSpeed;
+ /* 0x74 */ f32 mMaxUnderwaterSpeed;
+ /* 0x78 */ f32 mUnderwaterMaxSinkSpeed;
+ /* 0x7C */ f32 mAcceleration;
+ /* 0x80 */ f32 mDeceleration;
+ /* 0x84 */ f32 mMaxSinkSpeed;
+ /* 0x88 */ f32 mMaxFloatUpSpeed;
+ /* 0x8C */ f32 mBuoyancy; // ?
+ /* 0x90 */ f32 mWaitAnmSpeed;
+ /* 0x94 */ f32 mWaitInterpolation;
+ /* 0x98 */ f32 mWaitVibrationIntensity;
+ /* 0x9C */ f32 mForwardMinAnmSpeed;
+ /* 0xA0 */ f32 mForwardMaxAnmSpeed;
+ /* 0xA4 */ f32 mStrafeMinAnmSpeed;
+ /* 0xA8 */ f32 mStrafeMaxAnmSpeed;
+ /* 0xAC */ f32 mBackwardMinAnmSpeed;
+ /* 0xB0 */ f32 mBackwardMaxAnmSpeed;
+ /* 0xB4 */ f32 mUnderwaterMinAnmSpeed;
+ /* 0xB8 */ f32 mUnderwaterMaxAnmSpeed;
+ /* 0xBC */ f32 mMoveInterpolation;
+ /* 0xC0 */ f32 mClimbHeight;
+ /* 0xC4 */ f32 mUnderwaterClimbHeight;
+ /* 0xC8 */ f32 mForwardMinSpeed;
+ /* 0xCC */ f32 mInitMaxSinkSpeed;
+ /* 0xD0 */ f32 mBootsMaxSinkSpeed;
+ /* 0xD4 */ f32 mNormalFloatDepth;
+ /* 0xD8 */ f32 mZoraFloatDepth;
+ /* 0xDC */ f32 mUnderwaterButtonSpeed;
+ /* 0xE0 */ f32 mUnderwaterButtonAnmSpeed; // ?
+ /* 0xE4 */ f32 mBootsGravity;
+ /* 0xE8 */ f32 mSurfaceSwimSpeedRate;
+ /* 0xEC */ f32 mDMaxSpeed; // ?
+ /* 0xF0 */ f32 mDDeceleration;
+ /* 0xF4 */ f32 mDMinAnmSpeed;
+ /* 0xF8 */ f32 mDMaxAnmSpeed;
+}; // Size: 0xFC
+
+class daAlinkHIO_swim_c0 {
+public:
+ static daAlinkHIO_swim_c1 const m;
+};
+
+class daAlinkHIO_ladder_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3C;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+}; // Size: 0x70
+
+class daAlinkHIO_ladder_c0 {
+public:
+ static daAlinkHIO_ladder_c1 const m;
+};
+
+class daAlinkHIO_horse_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ s16 field_0x50;
+ /* 0x52 */ s16 field_0x52;
+ /* 0x54 */ s16 field_0x54;
+ /* 0x56 */ s16 field_0x56;
+ /* 0x58 */ s16 field_0x58;
+ /* 0x5A */ s16 field_0x5A;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+}; // Size: 0x6C
+
+class daAlinkHIO_horse_c0 {
+public:
+ static daAlinkHIO_horse_c1 const m;
+};
+
+class daAlinkHIO_wolf_c1 {
+public:
+ /* 0x00 */ s16 mMaxNeckTurnH;
+ /* 0x02 */ s16 mMaxNeckTurnUp;
+ /* 0x04 */ s16 mMaxNeckTurnDown;
+ /* 0x06 */ s16 mMaxTiredNeckTurnH;
+ /* 0x08 */ s16 mMaxTiredNeckTurnUp;
+ /* 0x0A */ s16 mMaxTiredNeckTurnDown;
+ /* 0x0C */ s16 mSensesLingerTime; // ?
+ /* 0x0E */ s16 mLightDropR;
+ /* 0x10 */ s16 mLightDropG;
+ /* 0x12 */ s16 mLightDropB;
+ /* 0x14 */ f32 mSwampInputRate; // ?
+}; // Size: 0x18
+
+class daAlinkHIO_wolf_c0 {
+public:
+ static daAlinkHIO_wolf_c1 const m;
+};
+
+class daAlinkHIO_wlMove_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ s16 field_0x50;
+ /* 0x52 */ s16 field_0x52;
+ /* 0x54 */ s16 field_0x54;
+ /* 0x56 */ s16 field_0x56;
+ /* 0x58 */ s16 field_0x58;
+ /* 0x5A */ s16 field_0x5A;
+ /* 0x5C */ s16 field_0x5C;
+ /* 0x5E */ s16 field_0x5E;
+ /* 0x60 */ s16 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7C;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ f32 field_0x8C;
+ /* 0x90 */ f32 field_0x90;
+ /* 0x94 */ f32 field_0x94;
+ /* 0x98 */ f32 field_0x98;
+ /* 0x9C */ f32 field_0x9C;
+ /* 0xA0 */ f32 field_0xA0;
+ /* 0xA4 */ f32 field_0xA4;
+ /* 0xA8 */ f32 field_0xA8;
+ /* 0xAC */ f32 field_0xAC;
+ /* 0xB0 */ f32 field_0xB0;
+ /* 0xB4 */ f32 field_0xB4;
+ /* 0xB8 */ f32 field_0xB8;
+ /* 0xBC */ f32 field_0xBC;
+ /* 0xC0 */ f32 field_0xC0;
+ /* 0xC4 */ f32 field_0xC4;
+ /* 0xC8 */ f32 field_0xC8;
+ /* 0xCC */ f32 field_0xCC;
+ /* 0xD0 */ f32 field_0xD0;
+ /* 0xD4 */ f32 field_0xD4;
+ /* 0xD8 */ f32 field_0xD8;
+ /* 0xDC */ f32 field_0xDC;
+ /* 0xE0 */ f32 field_0xE0;
+ /* 0xE4 */ f32 field_0xE4;
+ /* 0xE8 */ f32 field_0xE8;
+ /* 0xEC */ f32 field_0xEC;
+ /* 0xF0 */ f32 field_0xF0;
+ /* 0xF4 */ f32 field_0xF4;
+ /* 0xF8 */ f32 field_0xF8;
+ /* 0xFC */ f32 field_0xFC;
+}; // Size: 0x100
+
+class daAlinkHIO_wlMove_c0 {
+public:
+ static daAlinkHIO_wlMove_c1 const m;
+};
+
+class daAlinkHIO_wlMoveNoP_c1 {
+public:
+ /* 0x00 */ s16 field_0x0;
+ /* 0x02 */ s16 field_0x2;
+ /* 0x04 */ s16 field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xC;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3C;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+}; // Size: 0x48
+
+class daAlinkHIO_wlMoveNoP_c0 {
+public:
+ static daAlinkHIO_wlMoveNoP_c1 const m;
+};
+
+class daAlinkHIO_wlAtnMove_c1 {
+public:
+ /* 0x00 */ s16 field_0x0;
+ /* 0x02 */ s16 field_0x2;
+ /* 0x04 */ s16 field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xC;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+}; // Size: 0x38
+
+class daAlinkHIO_wlAtnMove_c0 {
+public:
+ static daAlinkHIO_wlAtnMove_c1 const m;
+};
+
+class daAlinkHIO_wlAutoJump_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x00;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ u8 field_0x3c;
+ /* 0x3E */ s16 field_0x3e;
+ /* 0x40 */ s16 field_0x40;
+ /* 0x42 */ s16 field_0x42;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4c;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5c;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6c;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+}; // size = 0x7C
+
+class daAlinkHIO_wlAutoJump_c0 {
+public:
+ static daAlinkHIO_wlAutoJump_c1 const m;
+};
+
+class daAlinkHIO_wlSlide_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ s16 field_0x50;
+ /* 0x52 */ s16 field_0x52;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+}; // Size: 0x7C
+
+class daAlinkHIO_wlSlide_c0 {
+public:
+ static daAlinkHIO_wlSlide_c1 const m;
+};
+
+class daAlinkHIO_wlSideStep_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+}; // Size: 0x68
+
+class daAlinkHIO_wlSideStep_c0 {
+public:
+ static daAlinkHIO_wlSideStep_c1 const m;
+};
+
+class daAlinkHIO_wlBackJump_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+}; // Size: 0x38
+
+class daAlinkHIO_wlBackJump_c0 {
+public:
+ static daAlinkHIO_wlBackJump_c1 const m;
+};
+
+class daAlinkHIO_wlRope_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ s16 field_0x14;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+}; // Size: 0x38
+
+class daAlinkHIO_wlRope_c0 {
+public:
+ static daAlinkHIO_wlRope_c1 const m;
+};
+
+class daAlinkHIO_wlPush_c1 {
+public:
+ /* 0x00 */ f32 field_0x0;
+ /* 0x04 */ f32 field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xC;
+ /* 0x10 */ f32 field_0x10;
+}; // Size: 0x14
+
+class daAlinkHIO_wlPush_c0 {
+public:
+ static daAlinkHIO_wlPush_c1 const m;
+};
+
+class daAlinkHIO_wlPoint_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ daAlinkHIO_anm_c field_0x50;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+}; // Size: 0x7C
+
+class daAlinkHIO_wlPoint_c0 {
+public:
+ static daAlinkHIO_wlPoint_c1 const m;
+};
+
+class daAlinkHIO_wlWallHang_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ daAlinkHIO_anm_c field_0x50;
+ /* 0x64 */ daAlinkHIO_anm_c field_0x64;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7C;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ f32 field_0x8C;
+ /* 0x90 */ f32 field_0x90;
+ /* 0x94 */ f32 field_0x94;
+ /* 0x98 */ f32 field_0x98;
+}; // Size: 0x9C
+
+class daAlinkHIO_wlWallHang_c0 {
+public:
+ static daAlinkHIO_wlWallHang_c1 const m;
+};
+
+class daAlinkHIO_wlSwim_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ s16 field_0x3C;
+ /* 0x3E */ s16 field_0x3E;
+ /* 0x40 */ s16 field_0x40;
+ /* 0x42 */ s16 field_0x42;
+ /* 0x44 */ s16 field_0x44;
+ /* 0x46 */ s16 field_0x46;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7C;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ f32 field_0x8C;
+ /* 0x90 */ f32 field_0x90;
+ /* 0x94 */ f32 field_0x94;
+ /* 0x98 */ f32 field_0x98;
+ /* 0x9C */ f32 field_0x9C;
+ /* 0xA0 */ f32 field_0xA0;
+ /* 0xA4 */ f32 field_0xA4;
+}; // Size: 0xA8
+
+class daAlinkHIO_wlSwim_c0 {
+public:
+ static daAlinkHIO_wlSwim_c1 const m;
+};
+
class daAlinkHIO_wlAttack_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c mLandAnm;
@@ -3294,6 +3749,595 @@ public:
static daAlinkHIO_wlAttack_c1 const m;
};
+class daAlinkHIO_wlHowl_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+}; // Size: 0x60
+
+class daAlinkHIO_wlHowl_c0 {
+public:
+ static daAlinkHIO_wlHowl_c1 const m;
+};
+
+class daAlinkHIO_wlGrab_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ daAlinkHIO_anm_c field_0x50;
+}; // Size: 0x64
+
+class daAlinkHIO_wlGrab_c0 {
+public:
+ static daAlinkHIO_wlGrab_c1 const m;
+};
+
+class daAlinkHIO_wlChain_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ s16 field_0x3C;
+ /* 0x3E */ s16 field_0x3E;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+}; // Size: 0x5C
+
+class daAlinkHIO_wlChain_c0 {
+public:
+ static daAlinkHIO_wlChain_c1 const m;
+};
+
+class daAlinkHIO_wlBall_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ s16 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+}; // Size: 0x38
+
+class daAlinkHIO_wlBall_c0 {
+public:
+ static daAlinkHIO_wlBall_c1 const m;
+};
+
+class daAlinkHIO_wlLie_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ s16 field_0x28;
+ /* 0x2A */ s16 field_0x2A;
+ /* 0x2C */ s16 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3C;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+}; // Size: 0x4C
+
+class daAlinkHIO_wlLie_c0 {
+public:
+ static daAlinkHIO_wlLie_c1 const m;
+};
+
+class daAlinkHIO_wlLight_c1 {
+public:
+ /* 0x00 */ s16 field_0x0;
+ /* 0x02 */ s16 field_0x2;
+ /* 0x04 */ s16 field_0x4;
+ /* 0x06 */ s16 field_0x6;
+ /* 0x08 */ s16 field_0x8;
+ /* 0x0A */ s16 field_0xA;
+ /* 0x0C */ f32 field_0xC;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+}; // Size: 0x1C
+
+class daAlinkHIO_wlLight_c0 {
+public:
+ static daAlinkHIO_wlLight_c1 const m;
+};
+
+class daAlinkHIO_wlAtWaTl_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ s16 field_0x14;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+}; // Size: 0x3C
+
+class daAlinkHIO_wlAtWaTl_c0 {
+public:
+ static daAlinkHIO_wlAtWaTl_c1 const m;
+};
+
+class daAlinkHIO_wlAtWaSc_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ s16 field_0x14;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+}; // Size: 0x3C
+
+class daAlinkHIO_wlAtWaSc_c0 {
+public:
+ static daAlinkHIO_wlAtWaSc_c1 const m;
+};
+
+class daAlinkHIO_wlAtWaLr_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ s16 field_0x14;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+}; // Size: 0x3C
+
+class daAlinkHIO_wlAtWaLr_c0 {
+public:
+ static daAlinkHIO_wlAtWaLr_c1 const m;
+};
+
+class daAlinkHIO_wlAtRoll_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+}; // Size: 0x20
+
+class daAlinkHIO_wlAtRoll_c0 {
+public:
+ static daAlinkHIO_wlAtRoll_c1 const m;
+};
+
+class daAlinkHIO_wlAtNjump_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+}; // Size: 0x3C
+
+class daAlinkHIO_wlAtNjump_c0 {
+public:
+ static daAlinkHIO_wlAtNjump_c1 const m;
+};
+
+class daAlinkHIO_wlAtLock_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ f32 field_0x3C;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4C;
+ /* 0x50 */ f32 field_0x50;
+}; // Size: 0x54
+
+class daAlinkHIO_wlAtLock_c0 {
+public:
+ static daAlinkHIO_wlAtLock_c1 const m;
+};
+
+class daAlinkHIO_wlAtLand_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ f32 field_0x3C;
+}; // Size: 0x40
+
+class daAlinkHIO_wlAtLand_c0 {
+public:
+ static daAlinkHIO_wlAtLand_c1 const m;
+};
+
+class daAlinkHIO_wlDamage_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ f32 field_0x28;
+}; // Size: 0x2C
+
+class daAlinkHIO_wlDamage_c0 {
+public:
+ static daAlinkHIO_wlDamage_c1 const m;
+};
+
+class daAlinkHIO_wlDamNormal_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+}; // Size: 0x60
+
+class daAlinkHIO_wlDamNormal_c0 {
+public:
+ static daAlinkHIO_wlDamNormal_c1 const m;
+};
+
+class daAlinkHIO_wlDamLarge_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ s16 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+}; // Size: 0x6C
+
+class daAlinkHIO_wlDamLarge_c0 {
+public:
+ static daAlinkHIO_wlDamLarge_c1 const m;
+};
+
+class daAlinkHIO_wlDamHuge_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ s16 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+}; // Size: 0x6C
+
+class daAlinkHIO_wlDamHuge_c0 {
+public:
+ static daAlinkHIO_wlDamHuge_c1 const m;
+};
+
+class daAlinkHIO_wlDamFall_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ s16 field_0x28;
+ /* 0x2A */ s16 field_0x2A;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3C;
+}; // Size: 0x40
+
+class daAlinkHIO_wlDamFall_c0 {
+public:
+ static daAlinkHIO_wlDamFall_c1 const m;
+};
+
+class daAlinkHIO_wlDamCaught_c1 {
+public:
+ /* 0x00 */ s16 field_0x0;
+ /* 0x02 */ s16 field_0x2;
+ /* 0x04 */ f32 field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xC;
+}; // Size: 0x10
+
+class daAlinkHIO_wlDamCaught_c0 {
+public:
+ static daAlinkHIO_wlDamCaught_c1 const m;
+};
+
+class daAlinkHIO_zwLight_c1 { // may be wrong
+public:
+ /* 0x00 */ s16 field_0x0;
+ /* 0x02 */ s16 field_0x2;
+ /* 0x04 */ s16 field_0x4;
+ /* 0x06 */ s16 field_0x6;
+ /* 0x08 */ s16 field_0x8;
+ /* 0x0A */ s16 field_0xA;
+ /* 0x0C */ f32 field_0xC;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+}; // Size: 0x1C
+
+class daAlinkHIO_zwLight_c0 {
+public:
+ static daAlinkHIO_zwLight_c1 const m;
+};
+
+class daAlinkHIO_board_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7C;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ f32 field_0x8C;
+ /* 0x90 */ f32 field_0x90;
+ /* 0x94 */ f32 field_0x94;
+ /* 0x98 */ f32 field_0x98;
+}; // Size: 0x9C
+
+class daAlinkHIO_board_c0 {
+public:
+ static daAlinkHIO_board_c1 const m;
+};
+
+class daAlinkHIO_item_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mOneHandEquipAnm;
+ /* 0x14 */ daAlinkHIO_anm_c mTwoHandEquipAnm;
+ /* 0x28 */ s16 mItemFPTransitionTimer;
+ /* 0x2A */ s16 mItemFPMaxUnk;
+ /* 0x2C */ s16 mItemFPUpMaxUnk;
+ /* 0x2E */ s16 mWiiItemFPDownMaxUnk;
+ /* 0x30 */ s16 mWiiItemFPUpMaxUnk;
+ /* 0x34 */ f32 mOneHandReleaseAnmSpeed;
+ /* 0x38 */ f32 mTwoHandReleaseAnmSpeed;
+}; // Size: 0x3C
+
+class daAlinkHIO_item_c0 {
+public:
+ static daAlinkHIO_item_c1 const m;
+};
+
+class daAlinkHIO_bottle_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ daAlinkHIO_anm_c field_0x3C;
+ /* 0x50 */ daAlinkHIO_anm_c field_0x50;
+ /* 0x64 */ daAlinkHIO_anm_c field_0x64;
+ /* 0x78 */ daAlinkHIO_anm_c field_0x78;
+ /* 0x8C */ daAlinkHIO_anm_c field_0x8C;
+ /* 0xA0 */ daAlinkHIO_anm_c field_0xA0;
+}; // Size: 0xB4
+
+class daAlinkHIO_bottle_c0 {
+public:
+ static daAlinkHIO_bottle_c1 const m;
+};
+
+class daAlinkHIO_boom_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mThrowAnm;
+ /* 0x14 */ daAlinkHIO_anm_c mCatchAnm;
+ /* 0x28 */ s16 field_0x28;
+ /* 0x2A */ s16 mBgThroughTime;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3c;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 mCatchSpeed;
+}; // Size: 0x4c
+
+class daAlinkHIO_boom_c0 {
+public:
+ static daAlinkHIO_boom_c1 const m;
+};
+
+class daAlinkHIO_bow_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c val0;
+ /* 0x14 */ daAlinkHIO_anm_c val5;
+ /* 0x28 */ s16 vala;
+ /* 0x2A */ s16 valb;
+ /* 0x2C */ s16 valc;
+ /* 0x30 */ f32 vale;
+ /* 0x34 */ f32 valf;
+ /* 0x38 */ f32 val10;
+ /* 0x3C */ f32 val11;
+ /* 0x40 */ f32 val12;
+ /* 0x44 */ f32 val13;
+ /* 0x48 */ f32 val14;
+ /* 0x4C */ f32 val15;
+ /* 0x50 */ f32 val16;
+ /* 0x54 */ f32 val17;
+ /* 0x58 */ f32 val18;
+ /* 0x5C */ f32 val19;
+ /* 0x60 */ f32 val1a;
+ /* 0x64 */ f32 val1b;
+ /* 0x68 */ f32 val1c;
+ /* 0x6C */ f32 val1d;
+}; // Size: 0x70
+
+class daAlinkHIO_bow_c0 {
+public:
+ static daAlinkHIO_bow_c1 const m;
+};
+
+class daAlinkHIO_copyRod_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mSwingAnm;
+ /* 0x14 */ daAlinkHIO_anm_c mBigSwingAnm;
+ /* 0x28 */ f32 mBallSpeed;
+ /* 0x2c */ f32 mBallMaxDistance;
+ /* 0x30 */ f32 mBallReturnSpeed;
+ /* 0x34 */ f32 mBossBallMaxDistance;
+}; // Size: 0x38
+
+class daAlinkHIO_copyRod_c0 {
+public:
+ static daAlinkHIO_copyRod_c1 const m;
+};
+
+class daAlinkHIO_bomb_c1 {
+public:
+ /* 0x00 */ s16 mExplodeTime;
+ /* 0x02 */ s16 mEnemyBombColorR;
+ /* 0x04 */ s16 mBombInsectLimitAngle;
+ /* 0x08 */ f32 mGravity;
+ /* 0x0C */ f32 mMaxFallSpeed;
+ /* 0x10 */ f32 mBoundRate;
+ /* 0x14 */ f32 mStopSpeedY;
+ /* 0x18 */ f32 mMaxSpeedY;
+ /* 0x1C */ f32 mEffScale;
+ /* 0x20 */ f32 mAtRadius;
+ /* 0x24 */ f32 mPokeBombTrackRate;
+ /* 0x28 */ f32 mWaterGravity;
+ /* 0x2C */ f32 mWaterMaxFallSpeed;
+ /* 0x30 */ f32 mThrowSpeedH;
+ /* 0x34 */ f32 mThrowSpeedV;
+ /* 0x38 */ f32 mWaterThrowSpeedH;
+ /* 0x3C */ f32 mWaterThrowSpeedV;
+ /* 0x40 */ f32 mWolfThrowSpeedH;
+ /* 0x44 */ f32 mWolfThrowSpeedV;
+ /* 0x48 */ f32 mExplodeWaterEffectLimit;
+}; // Size: 0x4C
+
+class daAlinkHIO_bomb_c0 {
+public:
+ static daAlinkHIO_bomb_c1 const m;
+};
+
+class daAlinkHIO_magneBoots_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c mEquipAnm;
+ /* 0x14 */ f32 mInputFactor;
+ /* 0x18 */ f32 mFeetPositionRatio;
+ /* 0x1C */ f32 mWalkAnmSpeedMax;
+ /* 0x20 */ f32 mWalkAnmSpeedMin;
+ /* 0x24 */ f32 mWaterInputFactor;
+ /* 0x28 */ f32 mWaterStartWalkAnmRate;
+ /* 0x2C */ f32 mWaterWalkAnmRate;
+ /* 0x30 */ f32 mMaxMagneFlySpeed;
+ /* 0x34 */ f32 mMagneFlyAccelRate;
+ /* 0x38 */ f32 mWaterVelocityY;
+ /* 0x3C */ f32 mWaterVelocityX;
+ /* 0x40 */ f32 mWaterVelRateSword;
+ /* 0x44 */ f32 mZoraWaterInputFactor;
+ /* 0x48 */ f32 mZoraWaterAnmSpeed;
+}; // Size: 0x4C
+
+class daAlinkHIO_magneBoots_c0 {
+public:
+ static daAlinkHIO_magneBoots_c1 const m;
+};
+
+class daAlinkHIO_spinner_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ s16 field_0x14;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ s16 field_0x18;
+ /* 0x1A */ s16 field_0x1A;
+ /* 0x1C */ s16 field_0x1C;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2C;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3C;
+}; // Size: 0x40
+
+class daAlinkHIO_spinner_c0 {
+public:
+ static daAlinkHIO_spinner_c1 const m;
+};
+
+class daAlinkHIO_hookshot_c1 {
+public:
+ /* 0x00 */ daAlinkHIO_anm_c field_0x0;
+ /* 0x14 */ daAlinkHIO_anm_c field_0x14;
+ /* 0x28 */ daAlinkHIO_anm_c field_0x28;
+ /* 0x3C */ f32 field_0x3C;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4C;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5C;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6C;
+}; // Size: 0x70
+
+class daAlinkHIO_hookshot_c0 {
+public:
+ static daAlinkHIO_hookshot_c1 const m;
+};
+
class daHorseRein_c {
private:
/* 0x00 */ cXyz* field_0x0[2];
@@ -3402,31 +4446,169 @@ private:
/* 0x17C4 */ cXyz mDemoPos0;
};
-class daMidna_c {
+class mDoExt_morf_c;
+
+class daMidna_c : public fopAc_ac_c {
public:
enum daMidna_ERFLG0 {
NO_SERVICE_WAIT = 128,
FORCE_PANIC = 8,
};
+
enum daMidna_FLG1 {
FORCE_NORMAL_COLOR = 8,
FORCE_TIRED_COLOR = 4
};
+ enum daMidna_ANM {};
+
void onForcePanic();
u32 checkForceNormalColor() const;
u32 checkForceTiredColor() const;
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();
+ /* 804BD93C */ void allAnimePlay();
+ /* 804BDE04 */ void setMatrix();
+ /* 804BE470 */ void setBodyPartMatrix();
+ /* 804BED1C */ void setRoomInfo();
+ /* 804BEDB8 */ void setBodyPartPos();
+ /* 804BEFA0 */ void checkAppear();
+ /* 804BF070 */ void checkMidnaPosState();
+ /* 804BFF80 */ void setUpperAnime(u16, u16);
+ /* 804C0020 */ void setUpperAnimeAndSe(daMidna_c::daMidna_ANM);
+ /* 804C0094 */ void setFaceAnime(u16, u16);
+ /* 804C0134 */ void endHighModel();
+ /* 804C0238 */ void setDemoAnm();
+ /* 804C0BAC */ void setFaceBtp(u16, int);
+ /* 804C0C6C */ void setFaceBtk(u16, int);
+ /* 804C0D2C */ void setLeftHandShape(u16);
+ /* 804C0E18 */ void setRightHandShape(u16);
+ /* 804C0F04 */ void checkHairOnlyAnime(int) const;
+ /* 804C0F24 */ void setBckAnime(J3DAnmTransform*, int, f32);
+ /* 804C103C */ void setAnm();
+ /* 804C287C */ void 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);
+ /* 804C44CC */ void initMidnaModel();
+ /* 804C49B8 */ void setMidnaNoDrawFlg();
+ /* 804C4AE8 */ void checkMetamorphoseEnableBase();
+ /* 804C4B68 */ void checkNoDrawState();
+ /* 804C4BC0 */ void setSound();
+ /* 804C4FDC */ void execute();
+ /* 804C5A08 */ void draw();
+ /* 804C61A4 */ ~daMidna_c();
void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; }
u32 checkStateFlg1(daMidna_FLG1 pFlg) const { return mStateFlg1 & pFlg; }
+ static u8 const m_texDataTable[84];
+ static u8 const m_anmDataTable[636];
+
private:
- /* 0x0000 */ fopAc_ac_c mActor;
- /* 0x0568 */ u8 field_0x568[0x32C];
+ /* 0x0568 */ request_of_phase_process_class* field_0x568;
+ /* 0x056C */ u8 field_0x56c[4];
+ /* 0x0570 */ J3DModel* field_0x570;
+ /* 0x0574 */ J3DModel* field_0x574;
+ /* 0x0578 */ mDoExt_morf_c* field_0x578;
+ /* 0x057C */ mDoExt_McaMorfCallBack1_c* field_0x57c;
+ /* 0x0580 */ cXyz* field_0x580;
+ /* 0x0584 */ mDoExt_bckAnm field_0x584;
+ /* 0x05A0 */ mDoExt_bckAnm field_0x5a0;
+ /* 0x05BC */ u8 field_0x5bc[8];
+ /* 0x05C4 */ mDoExt_invisibleModel field_0x5c4;
+ /* 0x05CC */ mDoExt_invisibleModel field_0x5cc;
+ /* 0x05D4 */ mDoExt_invisibleModel field_0x5d4;
+ /* 0x05DC */ mDoExt_invisibleModel field_0x5dc;
+ /* 0x05E4 */ daPy_anmHeap_c field_0x5e4[3];
+ /* 0x0620 */ daPy_anmHeap_c field_0x620;
+ /* 0x0634 */ daPy_anmHeap_c field_0x634;
+ /* 0x0648 */ J3DAnmBase* field_0x648;
+ /* 0x064C */ J3DAnmBase* field_0x64c;
+ /* 0x0650 */ J3DAnmBase* field_0x650;
+ /* 0x0654 */ J3DAnmBase* field_0x654;
+ /* 0x0658 */ u8 field_0x658[0x10];
+ /* 0x0668 */ J3DAnmBase* field_0x668;
+ /* 0x066C */ J3DAnmBase* field_0x66c;
+ /* 0x0670 */ u8 field_0x670[4];
+ /* 0x0674 */ J3DModel* field_0x674;
+ /* 0x0678 */ u8 field_0x678[4];
+ /* 0x067C */ J3DModel* field_0x67c;
+ /* 0x0680 */ u8 field_0x680[4];
+ /* 0x0684 */ J3DModel* field_0x684;
+ /* 0x0688 */ J3DModel* field_0x688;
+ /* 0x068C */ J3DModel* field_0x68c;
+ /* 0x0690 */ J3DModel* field_0x690;
+ /* 0x0694 */ J3DModel* field_0x694;
+ /* 0x0698 */ J3DModel* field_0x698;
+ /* 0x069C */ u8 field_0x98c[0x10];
+ /* 0x06AC */ J3DModel* field_0x6ac;
+ /* 0x06B0 */ J3DModel* field_0x6b0;
+ /* 0x06B4 */ u8 field_0x6b4[4];
+ /* 0x06B8 */ mDoExt_bckAnm* field_0x6b8;
+ /* 0x06BC */ J3DDeformData* field_0x6bc;
+ /* 0x06C0 */ u8 field_0x6c0[4];
+ /* 0x06C4 */ J3DFrameCtrl* field_0x6c4;
+ /* 0x06C8 */ J3DModel* field_0x6c8;
+ /* 0x06CC */ mDoExt_bckAnm* field_0x6cc;
+ /* 0x06D0 */ J3DModel* field_0x6d0;
+ /* 0x06D4 */ mDoExt_bckAnm* field_0x6d4;
+ /* 0x06D8 */ J3DModel* field_0x6d8;
+ /* 0x06DC */ mDoExt_bckAnm* field_0x6dc;
+ /* 0x06E0 */ s16 field_0x6e0;
+ /* 0x06E2 */ s16 field_0x6e2;
+ /* 0x06E4 */ s16 field_0x6e4;
+ /* 0x06E6 */ s16 field_0x6e6;
+ /* 0x06E8 */ u8 field_0x6e8;
+ /* 0x06E9 */ u8 field_0x6e9;
+ /* 0x06EA */ u8 field_0x6ea;
+ /* 0x06EB */ u8 field_0x6eb;
+ /* 0x06EC */ u8 field_0x6ec;
+ /* 0x06ED */ u8 field_0x6ed;
+ /* 0x06EE */ u8 field_0x6ee;
+ /* 0x06EF */ u8 field_0x6ef;
+ /* 0x06F0 */ u8 field_0x6f0[8];
+ /* 0x06F8 */ void* field_0x6f8;
+ /* 0x06FC */ Z2Creature field_0x6fc;
+ /* 0x078C */ dMsgFlow_c field_0x78c;
+ /* 0x07D8 */ dBgS_LinkLinChk field_0x7d8;
+ /* 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[0x10];
+ /* 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];
+ /* 0x0964 */ cXyz field_0x964[5];
+ /* 0x09A0 */ u8 field_0x9a0[0x14];
+ /* 0x09C4 */ cXyz field_0x9c4;
};
#endif /* D_A_D_A_ALINK_H */ \ No newline at end of file
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 786338348d..a2028b64e7 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -12,12 +12,15 @@
#include "f_op/f_op_actor.h"
class daPy_sightPacket_c : public dDlst_base_c {
+public:
/* 8015F1A0 */ virtual void draw();
/* 80140CDC */ virtual ~daPy_sightPacket_c();
/* 8015F2FC */ void setSight();
/* 8015F384 */ void setSightImage(ResTIMG*);
+ bool getDrawFlg() { return mDrawFlag; }
+
private:
/* 0x04 */ bool mDrawFlag;
/* 0x05 */ u8 field_0x5[3];
@@ -54,12 +57,13 @@ public:
J3DAnmBase* loadDataIdx(u16);
J3DAnmBase* loadDataPriIdx(u16);
J3DAnmBase* loadDataDemoRID(u16, u16);
- void setAnimeHeap();
+ JKRHeap* setAnimeHeap();
u16 getIdx() const { return mIdx; }
void resetIdx() { mIdx = 0xffff; }
void resetPriIdx() { mPriIdx = 0xffff; }
void resetArcNo() { mArcNo = 0xffff; }
+ bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; }
private:
/* 0x00 */ u16 mIdx;
@@ -84,9 +88,9 @@ public:
fopAc_ac_c* getActorConst() const { return mActor; }
private:
- u32 mID;
- fopAc_ac_c* mActor;
-};
+ /* 0x0 */ u32 mID;
+ /* 0x4 */ fopAc_ac_c* mActor;
+}; // Size: 0x8
class daPy_frameCtrl_c : public J3DFrameCtrl {
public:
@@ -122,6 +126,7 @@ public:
u16 getDemoType() const { return mDemoType; }
void setDemoMode(u32 mode) { mDemoMode = mode; }
u32 getDemoMode() const { return mDemoMode; }
+ void i_setSpecialDemoType() { setDemoType(5); }
private:
/* 0x00 */ u16 mDemoType;
@@ -135,6 +140,8 @@ private:
/* 0x18 */ cXyz mDemoPos0;
}; // Size: 0x24
+class daMidna_c;
+
class daPy_py_c : public fopAc_ac_c {
public:
/* 0x0568 */ u8 mCutType;
@@ -142,7 +149,7 @@ public:
/* 0x056A */ u8 mSpecialMode; // maybe needs better name
/* 0x056B */ u8 field_0x56b;
/* 0x056C */ s16 mDamageTimer;
- /* 0x056E */ u8 field_0x56e[2];
+ /* 0x056E */ u16 mSwordUpTimer;
/* 0x0570 */ u32 mNoResetFlg0;
/* 0x0574 */ u32 mNoResetFlg1;
/* 0x0578 */ u32 mNoResetFlg2;
@@ -168,22 +175,29 @@ public:
public:
enum daPy_FLG0 {
+ FLG0_UNK_40000000 = 0x40000000,
EQUIP_HEAVY_BOOTS = 0x2000000,
FLG0_UNK_8000000 = 0x8000000,
FLG0_UNK_1000000 = 0x1000000,
UNDER_WATER_MOVEMENT = 0x800000,
FLG0_UNK_80000 = 0x80000,
+ FLG0_UNK_20000 = 0x20000,
FLG0_UNK_8000 = 0x8000,
MAGNE_BOOTS_ON = 0x1000,
+ FLG0_UNK_80 = 0x80,
FLG0_UNK_40 = 0x40,
+ FLG0_UNK_20 = 0x20,
UNK_F_ROLL_CRASH_2 = 0x10,
- UNK_F_ROLL_CRASH_1 = 0x8
+ UNK_F_ROLL_CRASH_1 = 0x8,
+ FLG0_UNK_4 = 4,
+
+ HEAVY_STATE_BOOTS = FLG0_UNK_40000000 | EQUIP_HEAVY_BOOTS | FLG0_UNK_20000,
};
- enum daPy_FLG1 { IS_WOLF = 0x2000000, THROW_DAMAGE = 0x4000 };
+ enum daPy_FLG1 { IS_WOLF = 0x2000000, FLG1_UNK_10000 = 0x10000, THROW_DAMAGE = 0x4000 };
enum daPy_FLG2 { FLG2_UNK_4080000 = 0x4080000, FLG2_UNK_2080000 = 0x2080000, BOAR_SINGLE_BATTLE = 0x1800000, STATUS_WINDOW_DRAW = 0x400000, UNK_ARMOR = 0x80000, UNK_FLG2_2 = 2, UNK_DAPY_FLG2_1 = 1 };
- enum daPy_FLG3 { FLG3_UNK_100000 = 0x100000, COPY_ROD_THROW_AFTER = 0x40000 };
- enum daPy_ERFLG0 { ERFLG0_UNK_8000000 = 0x8000000, ERFLG0_UNK_1000000 = 0x1000000, ERFLG0_UNK_100000 = 0x100000, };
- enum daPy_ERFLG1 { GANON_FINISH = 0x80000000, UNK_FORCE_PUT_POS = 0x2000 };
+ enum daPy_FLG3 { FLG3_UNK_2000000 = 0x2000000, FLG3_UNK_100000 = 0x100000, COPY_ROD_THROW_AFTER = 0x40000 };
+ enum daPy_ERFLG0 { ERFLG0_UNK_8000000 = 0x8000000, ERFLG0_UNK_1000000 = 0x1000000, ERFLG0_UNK_100000 = 0x100000, ERFLG0_UNK_1 = 1, };
+ enum daPy_ERFLG1 { GANON_FINISH = 0x80000000, UNK_FORCE_PUT_POS = 0x2000, ERFLG1_UNK_1 = 1, };
enum daPy_ERFLG2 {};
enum daPy_RFLG0 {
RFLG0_UNK_8000000 = 0x8000000,
@@ -195,6 +209,7 @@ public:
enum {
/* 0x01 */ SMODE_SUMO_READY = 1,
/* 0x25 */ SMODE_SUMO_LOSE = 37,
+ /* 0x27 */ SMODE_WOLF_PUZZLE = 39,
/* 0x2A */ SMODE_GOAT_STOP = 42,
/* 0x2B */ SMODE_GORON_THROW,
/* 0x2C */ SMODE_CARGO_CARRY,
@@ -225,7 +240,7 @@ public:
/* 0x21 */ TYPE_CUT_STAB_COMBO,
};
- void setParamData(int, int, int, int);
+ static u32 setParamData(int, int, int, int);
int checkFishingRodItem(int);
static BOOL checkBombItem(int);
static BOOL checkBottleItem(int);
@@ -445,7 +460,7 @@ public:
virtual BOOL checkHorseStart();
virtual Z2WolfHowlMgr* getWolfHowlMgrP();
virtual BOOL checkWolfHowlSuccessAnime() const;
- virtual bool checkCopyRodTopUse();
+ virtual BOOL checkCopyRodTopUse();
virtual bool checkCopyRodEquip() const;
virtual BOOL checkCutJumpMode() const;
@@ -458,6 +473,8 @@ public:
}
bool checkStatusWindowDraw() { return i_checkNoResetFlg2(STATUS_WINDOW_DRAW); }
+ bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; }
+ bool getHeavyStateAndBoots() { return i_checkNoResetFlg0(HEAVY_STATE_BOOTS); }
// some functions use these function as an inline
// is there a better way to handle this?
@@ -477,10 +494,12 @@ public:
void i_onEndResetFlg0(int flag) { mEndResetFlg0 |= flag; }
int i_checkResetFlg0(daPy_py_c::daPy_RFLG0 flag) const { return mResetFlg0 & flag; }
int i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 flag) const { return mEndResetFlg0 & flag; }
+ int i_checkEndResetFlg1(daPy_py_c::daPy_ERFLG1 flag) const { return mEndResetFlg1 & flag; }
void i_onEndResetFlg1(daPy_ERFLG1 pFlg) { mEndResetFlg1 |= pFlg; }
int i_checkWolf() const { return i_checkNoResetFlg1(IS_WOLF); }
BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(EQUIP_HEAVY_BOOTS); }
BOOL i_checkMagneBootsOn() const { return i_checkNoResetFlg0(MAGNE_BOOTS_ON); }
+ bool i_checkMidnaRide() const { return i_checkNoResetFlg0(FLG0_UNK_4); }
inline u32 getLastSceneMode();
inline bool checkWoodSwordEquip();
@@ -489,7 +508,7 @@ public:
inline BOOL checkNowWolf();
inline bool checkZoraWearFlg() const;
- static u8 m_midnaActor[4];
+ static daMidna_c* m_midnaActor;
};
#endif /* D_A_D_A_PLAYER_H */
diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h
index a1d6f5dc10..13c2371255 100644
--- a/include/d/bg/d_bg_s_acch.h
+++ b/include/d/bg/d_bg_s_acch.h
@@ -137,6 +137,8 @@ public:
void SetGroundHit() { m_flags |= GROUND_HIT; }
void SetGroundLanding() { m_flags |= GROUND_LANDING; }
void SetGroundAway() { m_flags |= GROUND_AWAY; }
+ u32 MaskWaterHit() { return m_flags & WATER_HIT; }
+ bool ChkWaterHit() { return MaskWaterHit(); }
// inline dupe
void i_ClrGroundHit() { m_flags &= ~GROUND_HIT; }
diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h
index 447f8bee02..011835eb3b 100644
--- a/include/d/cc/d_cc_d.h
+++ b/include/d/cc/d_cc_d.h
@@ -83,11 +83,19 @@ public:
}; // Size = 0x3C
+enum dCcG_At_Spl {
+ /* 0x0 */ dCcG_At_Spl_UNK_0,
+ /* 0x1 */ dCcG_At_Spl_UNK_01,
+};
+
+class dCcD_GObjInf;
+typedef void (*dCcD_AtHitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
+
class dCcD_GAtTgCoCommonBase {
public:
/* 0x00 */ u32 mGFlag;
/* 0x04 */ u32 mRPrm;
- /* 0x08 */ u32 field_0x08;
+ /* 0x08 */ dCcD_AtHitCallback mHitCallback;
/* 0x0C */ u32 mApid;
/* 0x10 */ fopAc_ac_c* mAc;
/* 0x14 */ s8 mEffCounter;
@@ -114,6 +122,7 @@ public:
void OnSPrm(u32 flag) { mGFlag |= flag; }
void OffSPrm(u32 flag) { mGFlag &= ~flag; }
bool ChkRPrm(u32 flag) const { return MskRPrm(flag); }
+ void SetHitCallback(dCcD_AtHitCallback callback) { mHitCallback = callback; }
}; // Size = 0x1C
class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase {
@@ -122,9 +131,11 @@ public:
/* 80083C44 */ virtual ~dCcD_GObjAt() {}
void SetVec(cXyz& vec) { mVec = vec; }
cXyz& GetVec() { return mVec; }
+ cXyz* GetVecP() { return &mVec; }
void SetHitMark(u8 mark) { mHitMark = mark; }
void SetSe(u8 se) { mSe = se; }
void SetMtrl(u8 mtrl) { mMtrl = mtrl; }
+ void SetAtSpl(dCcG_At_Spl spl) { mSpl = spl; }
// private:
/* 0x1C */ u8 mSe;
@@ -193,6 +204,9 @@ public:
void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); }
fopAc_ac_c* GetAtHitAc() { return mGObjAt.GetAc(); }
bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); }
+ cXyz* GetAtVecP() { return mGObjAt.GetVecP(); }
+ void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); }
+ void SetAtHitCallback(dCcD_AtHitCallback callback) { mGObjAt.SetHitCallback(callback); }
static u32 const m_hitSeID[24];
@@ -241,10 +255,6 @@ public:
dCcD_Tri() {}
};
-enum dCcG_At_Spl {
- /* 0x1 */ dCcG_At_Spl_UNK_01 = 1,
-};
-
dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* param_0);
#endif /* D_CC_D_CC_D_H */
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index 83b3fd5380..dbf41c1ad1 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -138,6 +138,14 @@ public:
mAStatus = status;
mASetFlag = flag;
}
+ void setXStatus(u8 status, u8 flag) {
+ mXStatus = status;
+ mXSetFlag = flag;
+ }
+ void setYStatus(u8 status, u8 flag) {
+ mYStatus = status;
+ mYSetFlag = flag;
+ }
void setBottleStatus(u8 status, u8 flag) {
mBottleStatus = status;
mBottleSetFlag = flag;
@@ -178,8 +186,11 @@ public:
J2DGrafContext* getCurrentGrafPort() { return mCurrentGrafPort; }
dVibration_c& getVibration() { return mVibration; }
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; }
+ void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; }
+ bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; }
BOOL checkCameraAttentionStatus(int i, u32 flag) { return mCameraInfo[i].mCameraAttentionStatus & flag; }
s8 getPlayerCameraID(int i) { return mPlayerCameraID[i]; }
+ dPa_control_c* getParticle() { return mParticle; }
void set3DStatus(u8 status, u8 direction, u8 flag) {
m3DStatus = status;
m3DDirection = direction;
@@ -224,7 +235,7 @@ public:
/* 0x04DBC */ JKRArchive* mMsgDtArchive[15];
/* 0x04DF8 */ JKRArchive* mMain2DArchive;
/* 0x04DFC */ void* field_0x4dfc[2];
- /* 0x04E04 */ void* mParticle;
+ /* 0x04E04 */ dPa_control_c* mParticle;
/* 0x04E08 */ void* mSimpleModel;
/* 0x04E0C */ u8 mWindowNum;
/* 0x04E0D */ u8 mLayerOld;
@@ -326,7 +337,7 @@ public:
/* 0x04F23 */ u8 mZSetFlagForce;
/* 0x04F24 */ u8 mXStatus;
/* 0x04F25 */ u8 mXStatusForce;
- /* 0x04F26 */ u8 field_0x4fbe; // related to XStatus
+ /* 0x04F26 */ u8 mXSetFlag;
/* 0x04F27 */ u8 mXSetFlagForce;
/* 0x04F28 */ u8 mYStatus;
/* 0x04F29 */ u8 mYStatusForce;
@@ -462,6 +473,16 @@ void* dComIfG_getStageRes(char const*);
void dComLbG_PhaseHandler(request_of_phase_process_class*, int (**param_1)(void*), void*);
void dComIfGp_addSelectItemNum(int, s16);
BOOL dComIfGs_isOneZoneSwitch(int, int);
+u8 dComIfGp_getSelectItem(int);
+u8 dComIfGp_TargetWarpPt_get();
+void dComIfGp_TargetWarpPt_set(u8);
+BOOL dComIfGp_TransportWarp_check();
+void dComIfGp_setNextStage(char const*, s16, s8, s8, f32, u32, int, s8, s16, int, int);
+cXyz& dComIfGs_getWarpPlayerPos();
+const char* dComIfGs_getWarpStageName();
+s16 dComIfGs_getWarpPlayerAngleY();
+s8 dComIfGs_getWarpRoomNo();
+char* dComIfG_getRoomArcName(int);
inline void dComIfGp_setRStatus(u8 status, u8 flag) {
g_dComIfG_gameInfo.play.setRStatus(status, flag);
@@ -716,7 +737,7 @@ inline s16 dComIfGs_getLastWarpMarkPlayerAngleY() {
return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getAngleY();
}
-inline s8 dComIfGs_getLastWarpMarkRoomNo() {
+inline u8 dComIfGs_getLastWarpMarkRoomNo() {
return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getRoomNo();
}
@@ -776,6 +797,10 @@ inline s8 dComIfGp_getStartStageLayer() {
return g_dComIfG_gameInfo.play.getStartStageLayer();
}
+/* inline dStage_stageDt_c& dComIfGp_getStage() {
+ return g_dComIfG_gameInfo.play.getStage();
+} */
+
inline roomRead_class* dComIfGp_getStageRoom() {
return g_dComIfG_gameInfo.play.getStage().getRoom();
}
@@ -1066,4 +1091,76 @@ inline u8 dComIfGs_getLastSceneMode() {
return g_dComIfG_gameInfo.info.getRestart().getLastMode();
}
+inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7, s8 param_8, const GXColor* param_9, const GXColor* param_10, const cXyz* param_11) {
+ return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10, param_11, 1.0f);
+}
+
+inline void dComIfGp_particle_levelEmitterOnEventMove(u32 param_0) {
+ g_dComIfG_gameInfo.play.getParticle()->forceOnEventMove(param_0);
+}
+
+inline dPa_control_c::level_c::emitter_c* dComIfGp_particle_getEmitter(u32 param_0) {
+ return g_dComIfG_gameInfo.play.getParticle()->getEmitter(param_0);
+}
+
+inline u32 dComIfGp_particle_setPolyColor(u32 param_0, u16 param_1, cBgS_PolyInfo& param_2, const cXyz* param_3, const dKy_tevstr_c* param_4, const csXyz* param_5, const cXyz* param_6, int param_7, dPa_levelEcallBack* param_8, s8 param_9, const cXyz* param_10) {
+ return g_dComIfG_gameInfo.play.getParticle()->setPoly(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10);
+}
+
+inline dRes_info_c* dComIfG_getObjectResInfo(const char* arc_name) {
+ return g_dComIfG_gameInfo.mResControl.getObjectResInfo(arc_name);
+}
+
+inline void dComIfGp_setXStatus(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setXStatus(status, flag);
+}
+
+inline void dComIfGp_setYStatus(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setYStatus(status, flag);
+}
+
+inline BOOL dComIfGp_event_compulsory(void* param_0, const char* param_1, u16 param_2) {
+ return g_dComIfG_gameInfo.play.getEvent().compulsory(param_0, param_1, param_2);
+}
+
+inline void dComIfGs_setTurnRestart(const cXyz& param_0, s16 param_1, s8 param_2, u32 param_3) {
+ g_dComIfG_gameInfo.info.getTurnRestart().set(param_0, param_1, param_2, param_3);
+}
+
+inline void dComIfGs_setRestartRoom(const cXyz& param_0, s16 param_1, s8 param_2) {
+ g_dComIfG_gameInfo.info.getRestart().setRoom(param_0, param_1, param_2);
+}
+
+inline s8 dComIfGs_getRestartRoomNo() {
+ return g_dComIfG_gameInfo.info.getRestart().getRoomNo();
+}
+
+inline void dComIfGs_setRestartRoomParam(u32 param) {
+ g_dComIfG_gameInfo.info.getRestart().setRoomParam(param);
+}
+
+inline void dComIfGp_clearPlayerStatus0(int param_0, u32 flag) {
+ g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 0, flag);
+}
+
+inline int* dComIfGp_evmng_getMyIntegerP(int index, char* name) {
+ return (int*)dComIfGp_getPEvtManager()->getMySubstanceP(index, name, dEvDtData_c::TYPE_INT);
+}
+
+inline char* dComIfGp_evmng_getMyStringP(int index, char* name) {
+ return (char*)dComIfGp_getPEvtManager()->getMySubstanceP(index, name, dEvDtData_c::TYPE_STRING);
+}
+
+inline f32* dComIfGp_evmng_getMyFloatP(int index, char* name) {
+ return (f32*)dComIfGp_getPEvtManager()->getMySubstanceP(index, name, dEvDtData_c::TYPE_FLOAT);
+}
+
+inline stage_scls_info_dummy_class* dComIfGp_getStageSclsInfo() {
+ return g_dComIfG_gameInfo.play.getStage().getSclsInfo();
+}
+
+inline dStage_roomStatus_c* dComIfGp_roomControl_getStatusRoomDt(int room_no) {
+ return g_dComIfG_gameInfo.play.getRoomControl()->getStatusRoomDt(room_no);
+}
+
#endif /* D_COM_D_COM_INF_GAME_H */
diff --git a/include/d/d_attention.h b/include/d/d_attention.h
index ad270ddfb0..a281c1e780 100644
--- a/include/d/d_attention.h
+++ b/include/d/d_attention.h
@@ -200,12 +200,16 @@ public:
dAttCatch_c& getCatghTarget() { return mCatghTarget; }
bool chkFlag(u32 flag) { return mFlags & flag; }
- bool Lockon() {
+ BOOL Lockon() {
bool chk = true;
- if (!LockonTruth() && !chkFlag(0x20000000)) {
- chk = false;
- }
+ if (!LockonTruth()) {
+ if (!chkFlag(0x20000000)) {
+ chk = false;
+ }
+ }
return chk;
+
+ //return !LockonTruth() && !chkFlag(0x20000000);
}
static u8 loc_type_tbl[12];
diff --git a/include/d/d_resorce.h b/include/d/d_resorce.h
index 8c038fcdfb..67e81da529 100644
--- a/include/d/d_resorce.h
+++ b/include/d/d_resorce.h
@@ -91,6 +91,10 @@ public:
return getRes(arcName, resName, &mStageInfo[0], ARRAY_SIZE(mStageInfo));
}
+ dRes_info_c* getObjectResInfo(const char* arcName) {
+ return getResInfo(arcName, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
+ }
+
/* 0x0000 */ dRes_info_c mObjectInfo[0x80];
/* 0x1200 */ dRes_info_c mStageInfo[0x40];
}; // Size: 0x1B00
diff --git a/include/d/d_stage.h b/include/d/d_stage.h
index dffffcdc5b..56de78bac7 100644
--- a/include/d/d_stage.h
+++ b/include/d/d_stage.h
@@ -45,7 +45,19 @@ struct stage_stag_info_class {
/* 0x2A */ u16 mStageTitleNo;
}; // Size: Unknown
-struct stage_scls_info_dummy_class {};
+struct stage_scls_info_class {
+ /* 0x0 */ char mStage[8];
+ /* 0x8 */ u8 mStart;
+ /* 0x9 */ s8 mRoom;
+ /* 0xA */ s8 field_0xa;
+ /* 0xB */ s8 field_0xb;
+ /* 0xC */ s8 mWipe;
+}; // Size: 0xD
+
+struct stage_scls_info_dummy_class {
+ /* 0x00 */ int numEntries;
+ /* 0x04 */ stage_scls_info_class* mEntries;
+};
struct stage_pure_lightvec_info_class {};
@@ -647,6 +659,7 @@ static int dStage_fieldMapFiliInfo2Init(dStage_dt_c*, void*, int, void*);
static int dStage_fieldMapMapPathInit(dStage_dt_c*, void*, int, void*);
u8 dStage_roomRead_dt_c_GetReverbStage(roomRead_class&, int);
+void dStage_changeScene(int, f32, u32, s8, s16, int);
inline u8 dStage_roomRead_dt_c_GetLoadRoomIndex(u8 param_0) {
return param_0 & 0x3f;
@@ -656,4 +669,24 @@ inline u32 dStage_stagInfo_GetSTType(stage_stag_info_class* pstag) {
return pstag->field_0x0c >> 0x10 & 7;
}
+inline u32 dStage_stagInfo_GetEscapeWarp(stage_stag_info_class* pstag) {
+ return pstag->field_0x10 >> 0x18;
+}
+
+inline s8 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
+ return p_info->field_0xb & 0xF;
+}
+
+inline s8 dStage_sclsInfo_getWipe(stage_scls_info_class* p_info) {
+ return p_info->mWipe;
+}
+
+inline s8 dStage_sclsInfo_getWipeTime(stage_scls_info_class* p_info) {
+ return p_info->field_0xb >> 5;
+}
+
+inline s8 dStage_sclsInfo_getTimeH(stage_scls_info_class* p_info) {
+ return (p_info->field_0xa >> 4) | (p_info->field_0xb & 16);
+}
+
#endif /* D_D_STAGE_H */
diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h
index b541927041..6fdb8b79a4 100644
--- a/include/d/event/d_event.h
+++ b/include/d/event/d_event.h
@@ -60,7 +60,7 @@ public:
void skipper();
void Step();
void moveApproval(void*);
- bool compulsory(void*, char const*, u16);
+ BOOL compulsory(void*, char const*, u16);
void remove();
void* getStageEventDt(); // ret type probably wrong, fix later
void sceneChange(int);
@@ -82,6 +82,7 @@ public:
u16 chkFlag2(u16 flag) { return flag & mFlag2; }
bool runCheck() { return field_0xe5 != 0; }
u16 chkEventFlag(u16 flag) { return flag & mEventFlag; }
+ u8 getMode() const { return mMode; }
public:
/* 0x000 */ u8 field_0x0[4];
diff --git a/include/d/event/d_event_data.h b/include/d/event/d_event_data.h
index 49f4aeea78..b1517d7bfa 100644
--- a/include/d/event/d_event_data.h
+++ b/include/d/event/d_event_data.h
@@ -5,25 +5,80 @@
#include "d/save/d_save.h"
#include "dolphin/types.h"
-struct event_binary_data_header {};
-
-struct dEvDtData_c {};
+struct event_binary_data_header {
+ /* 0x00 */ u32 eventTop; // offset to Event chunk
+ /* 0x04 */ s32 eventNum;
+ /* 0x08 */ u32 staffTop; // offset to Staff chunk
+ /* 0x0C */ s32 staffNum;
+ /* 0x10 */ u32 cutTop; // offset to Cut chunk
+ /* 0x14 */ s32 cutNum;
+ /* 0x18 */ u32 dataTop; // offset to Data chunk
+ /* 0x1C */ s32 dataNum;
+ /* 0x20 */ u32 fDataTop; // offset to FData chunk
+ /* 0x24 */ s32 fDataNum;
+ /* 0x28 */ u32 iDataTop; // offset to IData chunk
+ /* 0x2C */ s32 iDataNum;
+ /* 0x30 */ u32 sDataTop; // offset to SData chunk
+ /* 0x34 */ s32 sDataNum;
+ /* 0x38 */ u8 unk[8];
+}; // Size: 0x40
+
+class dEvDtData_c {
+public:
+ enum DataType {
+ /* 0x0 */ TYPE_FLOAT,
+ /* 0x1 */ TYPE_VEC,
+ /* 0x3 */ TYPE_INT = 3,
+ /* 0x4 */ TYPE_STRING
+ };
+
+ int getIndex() { return mDataIndex; }
+ int getNumber() { return mNumber; }
+ int getType() { return mType; }
+ int getNext() { return mNext; }
+ char* getName() { return mName; }
+
+ /* 0x00 */ char mName[32];
+ /* 0x20 */ u32 mIndex;
+ /* 0x24 */ int mType;
+ /* 0x28 */ int mDataIndex;
+ /* 0x2C */ int mNumber;
+ /* 0x30 */ int mNext;
+ /* 0x34 */ u8 field_0x34[12];
+}; // Size: 0x40
class dEvDtCut_c {
public:
void startCheck();
+ int getDataTop() { return mDataTop; }
+
private:
- /* 0x00 */ u8 field_0x0[0x20];
+ /* 0x00 */ char mName[32];
/* 0x20 */ u32 mTagID;
- /* 0x28 */ int field_0x28[3];
+ /* 0x24 */ u32 mIndex;
+ /* 0x28 */ int mFlags[3];
/* 0x34 */ u32 mFlagId;
- /* 0x38 */ u32 mDataTop;
- /* 0x3C */ u32 mNext;
-};
+ /* 0x38 */ int mDataTop;
+ /* 0x3C */ int mNext;
+ /* 0x40 */ u8 field_0x40[0x10];
+}; // Size: 0x50
class dEvDtStaff_c {
public:
+ enum StaffType {
+ /* 0x0 */ TYPE_DEFAULT,
+ /* 0x1 */ TYPE_ALL,
+ /* 0x2 */ TYPE_CAMERA,
+ /* 0x4 */ TYPE_TIMEKEEPER = 4,
+ /* 0x6 */ TYPE_DIRECTOR = 6,
+ /* 0x7 */ TYPE_MESSAGE,
+ /* 0x8 */ TYPE_SOUND,
+ /* 0x9 */ TYPE_LIGHT,
+ /* 0xB */ TYPE_PACKAGE = 11,
+ /* 0xC */ TYPE_CREATE,
+ };
+
void specialProc_WaitStart(int);
void specialProc_WaitProc(int);
void specialProc();
@@ -38,40 +93,52 @@ public:
void specialProcTimekeeper();
void specialProcEffect();
+ int getType() { return mType; }
+ char* getName() { return mName; }
+ int getCurrentCut() { return mCurrentCut; }
+ int getStartCut() { return mStartCut; }
+
private:
- /* 0x00 */ u8 field_0x00[4];
- /* 0x04 */ void* field_0x04;
- /* 0x08 */ u32 field_0x08;
- /* 0x0C */ int field_0x0c;
- /* 0x10 */ u32 field_0x10;
- /* 0x14 */ u8 field_0x14[0xC];
+ /* 0x00 */ char mName[32];
/* 0x20 */ u32 mTagID;
- /* 0x24 */ u32 field_0x24;
- /* 0x28 */ u8 field_0x28[4];
+ /* 0x24 */ u32 mIndex;
+ /* 0x28 */ u32 mFlagID;
/* 0x2C */ int mType;
- /* 0x30 */ u32 mStartCut;
+ /* 0x30 */ int mStartCut;
/* 0x34 */ u8 field_0x34[2];
/* 0x36 */ s16 field_0x36;
/* 0x38 */ int mCurrentCut;
/* 0x3C */ u32 field_0x3c;
- /* 0x40 */ u8 field_0x40;
- /* 0x41 */ u8 field_0x41;
+ /* 0x40 */ bool field_0x40;
+ /* 0x41 */ bool field_0x41;
/* 0x42 */ s16 field_0x42;
/* 0x44 */ s16 mSoundWait;
- /* 0x46 */ u8 field_0x46[4];
- /* 0x4A */ int field_0x4a;
-};
+ /* 0x46 */ u8 field_0x46[10];
+}; // Size: 0x50
class dEvDtEvent_c {
public:
void finishCheck();
void forceFinish();
void specialStaffProc(dEvDtStaff_c*);
-
- /* 0x00 */ s32 mEventNum;
- /* 0x04 */ u8 field_0x4[0xA0];
- /* 0xA4 */ int field_0xa4;
-};
+ int getNStaff() { return mNStaff; }
+ int getStaff(int idx) { return mStaff[idx]; }
+
+ /* 0x00 */ char mName[32];
+ /* 0x20 */ u32 mIndex;
+ /* 0x24 */ int field_0x24;
+ /* 0x28 */ int mPriority;
+ /* 0x2C */ int mStaff[20];
+ /* 0x7C */ int mNStaff;
+ /* 0x80 */ u8 field_0x80[4];
+ /* 0x84 */ int field_0x84;
+ /* 0x88 */ int field_0x88[2];
+ /* 0x90 */ int field_0x90;
+ /* 0x94 */ bool mPlaySound;
+ /* 0x95 */ u8 field_0x95[0xF];
+ /* 0xA4 */ int mEventState;
+ /* 0xA8 */ u8 field_0xa8[8];
+}; // Size: 0xB0
class dEvDtFlag_c {
public:
@@ -91,23 +158,56 @@ class dEvDtBase_c {
public:
dEvDtBase_c();
~dEvDtBase_c() {}
- void init();
- void init(char*, int);
+ int init();
+ int init(char*, int);
void advanceCut(dEvDtEvent_c*);
void advanceCutLocal(dEvDtStaff_c*);
event_binary_data_header* getHeaderP() { return mHeaderP; }
- s32 getEventNum() { return mEventP->mEventNum; }
+ dEvDtStaff_c* getStaffP(int i) { return &mStaffP[i]; }
+ dEvDtEvent_c* getEventP(int i) { return &mEventP[i]; }
+ dEvDtData_c* getDataP(int i) { return &mDataP[i]; }
+ dEvDtCut_c* getCutP(int i) { return &mCutP[i]; }
+ int getStaffCurrentCut(int i) { return mStaffP[i].getCurrentCut(); }
+ dEvDtCut_c* getCutStaffCurrentCutP(int i) { return getCutP(getStaffCurrentCut(i)); }
+ int getStaffStartCut(int i) { return mStaffP[i].getStartCut(); }
+ dEvDtCut_c* getCutStaffStartCutP(int i) { return getCutP(getStaffStartCut(i)); }
+ int* getIDataP(int i) { return &mIDataP[i]; }
+ f32* getFDataP(int i) { return &mFDataP[i]; }
+ char* getSDataP(int i) { return &mSDataP[i]; }
+ u32 getEventTop() { return mHeaderP->eventTop; }
+ s32 getEventNum() { return mHeaderP->eventNum; }
+ u32 getStaffTop() { return mHeaderP->staffTop; }
+ s32 getStaffNum() { return mHeaderP->staffNum; }
+ u32 getCutTop() { return mHeaderP->cutTop; }
+ s32 getCutNum() { return mHeaderP->cutNum; }
+ u32 getDataTop() { return mHeaderP->dataTop; }
+ s32 getDataNum() { return mHeaderP->dataNum; }
+ u32 getFDataTop() { return mHeaderP->fDataTop; }
+ s32 getFDataNum() { return mHeaderP->fDataNum; }
+ u32 getIDataTop() { return mHeaderP->iDataTop; }
+ s32 getIDataNum() { return mHeaderP->iDataNum; }
+ u32 getSDataTop() { return mHeaderP->sDataTop; }
+ s32 getSDataNum() { return mHeaderP->sDataNum; }
s32 roomNo() { return mRoomNo; }
+ void setHeaderP(event_binary_data_header* p_header) { mHeaderP = p_header; }
+ void setEventP(dEvDtEvent_c* p_event) { mEventP = p_event; }
+ void setStaffP(dEvDtStaff_c* p_staff) { mStaffP = p_staff; }
+ void setCutP(dEvDtCut_c* p_cut) { mCutP = p_cut; }
+ void setDataP(dEvDtData_c* p_data) { mDataP = p_data; }
+ void setFDataP(f32* p_fdata) { mFDataP = p_fdata; }
+ void setIDataP(int* p_idata) { mIDataP = p_idata; }
+ void setSDataP(char* p_sdata) { mSDataP = p_sdata; }
+
private:
/* 0x00 */ event_binary_data_header* mHeaderP;
/* 0x04 */ dEvDtEvent_c* mEventP;
/* 0x08 */ dEvDtStaff_c* mStaffP;
/* 0x0C */ dEvDtCut_c* mCutP;
/* 0x10 */ dEvDtData_c* mDataP;
- /* 0x14 */ float* mFDataP;
- /* 0x18 */ s32* mIDataP;
+ /* 0x14 */ f32* mFDataP;
+ /* 0x18 */ int* mIDataP;
/* 0x1C */ char* mSDataP;
/* 0x20 */ s32 mRoomNo;
}; // Size = 0x24
diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h
index 3e68b3a741..7427c80c4d 100644
--- a/include/d/event/d_event_manager.h
+++ b/include/d/event/d_event_manager.h
@@ -22,7 +22,7 @@ private:
class dEvent_manager_c {
public:
- void getSubstance(dEvDtData_c*, int);
+ void* getSubstance(dEvDtData_c*, int);
dEvent_manager_c();
~dEvent_manager_c() {}
int create();
@@ -52,8 +52,8 @@ public:
void getIsAddvance(int);
void getMyActIdx(int, char const* const*, int, int, int);
void getMyNowCutName(int);
- void getMyDataP(int, char const*, int);
- void getMySubstanceP(int, char const*, int);
+ dEvDtData_c* getMyDataP(int, char const*, int);
+ void* getMySubstanceP(int, char const*, int);
void getMySubstanceNum(int, char const*);
void cutEnd(int);
void getEventPrio(fopAc_ac_c*, s16);
@@ -63,11 +63,13 @@ public:
void getGoal();
void getRunEventName();
void specialCast_Shutter(s16, int);
- void specialCast(char const*, int);
+ fopAc_ac_c* specialCast(char const*, int);
void ChkPresentEnd();
void checkStartDemo();
void setStartDemo(int param_0) { mEventException.setStartDemo(param_0); }
+ void setCameraPlay(int status) { mCameraPlay = status; }
+ dEvDtBase_c& getBase() { return mEventList[field_0x1b4]; }
private:
/* 0x0000 */ dEvDtBase_c mEventList[11];
@@ -77,7 +79,7 @@ private:
/* 0x01A8 */ u8 field_0x1a8[2];
/* 0x01AA */ s16 field_0x1aa;
/* 0x01AC */ u8 field_0x1ac[4];
- /* 0x01B0 */ u32 field_0x1b0;
+ /* 0x01B0 */ int mRoomNo;
/* 0x01B4 */ u32 field_0x1b4;
/* 0x01B8 */ u32 field_0x1b8;
/* 0x01BC */ dEvDtFlag_c mFlags;
diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h
index 42c1e9ead2..1c747881a2 100644
--- a/include/d/kankyo/d_kankyo.h
+++ b/include/d/kankyo/d_kankyo.h
@@ -12,6 +12,7 @@
#include "m_Do/m_Do_ext.h"
void dKankyo_DayProc();
+void dKy_set_nexttime(f32);
struct LIGHT_INFLUENCE {
/* 800CFC7C */ ~LIGHT_INFLUENCE();
@@ -663,5 +664,6 @@ public:
STATIC_ASSERT(sizeof(dScnKy_env_light_c) == 4880);
bool dKy_darkworld_stage_check(char const*, int);
+BOOL dKy_withwarp_capture_check();
#endif /* D_KANKYO_D_KANKYO_H */
diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h
index 1a4884dec7..95ca9ab707 100644
--- a/include/d/meter/d_meter2_info.h
+++ b/include/d/meter/d_meter2_info.h
@@ -132,6 +132,11 @@ public:
dMw_c* getMenuWindowClass() { return mMenuWindowClass; }
void offUseButton(int pButton) { mUseButton &= ~(u16)pButton; }
u16 getOilGaugeBackUp() { return mOilGaugeBackUp; }
+ u8 getWarpStatus() { return mWarpStatus; }
+ u8 getWarpRoomNo() { return mWarpInfo.mRoomNo; }
+ u8 getWarpPlayerNo() { return mWarpInfo.mWarpPlayerNo; }
+ cXyz& getWarpPos() { return mWarpInfo.mPosition; }
+ const char* getWarpStageName() { return mWarpInfo.mStageName; }
private:
/* 0x04 */ u8 unk4[4];
@@ -252,4 +257,24 @@ inline void dMeter2Info_setSaveStageName(const char* name) {
g_meter2_info.setSaveStageName(name);
}
+inline u8 dMeter2Info_getWarpStatus() {
+ return g_meter2_info.getWarpStatus();
+}
+
+inline u8 dMeter2Info_getWarpRoomNo() {
+ return g_meter2_info.getWarpRoomNo();
+}
+
+inline u8 dMeter2Info_getWarpPlayerNo() {
+ return g_meter2_info.getWarpPlayerNo();
+}
+
+inline cXyz& dMeter2Info_getWarpPos() {
+ return g_meter2_info.getWarpPos();
+}
+
+inline const char* dMeter2Info_getWarpStageName() {
+ return g_meter2_info.getWarpStageName();
+}
+
#endif /* D_METER_D_METER2_INFO_H */
diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h
index 5bb102e092..f6b5efdeb1 100644
--- a/include/d/particle/d_particle.h
+++ b/include/d/particle/d_particle.h
@@ -7,33 +7,177 @@
class JPAEmitterCallBack {
public:
- /* 80050368 */ void execute(JPABaseEmitter*);
- /* 8005036C */ void draw(JPABaseEmitter*);
- /* 80050370 */ void drawAfter(JPABaseEmitter*);
- /* 80050374 */ void executeAfter(JPABaseEmitter*);
- /* 8027E6A4 */ ~JPAEmitterCallBack();
+ /* 8027E6A4 */ virtual ~JPAEmitterCallBack() = 0;
+ /* 80050368 */ virtual void execute(JPABaseEmitter*);
+ /* 80050374 */ virtual void executeAfter(JPABaseEmitter*);
+ /* 8005036C */ virtual void draw(JPABaseEmitter*);
+ /* 80050370 */ virtual void drawAfter(JPABaseEmitter*);
+};
+
+struct JPAResourceManager {
+ /* 80273E10 */ JPAResourceManager(void const*, JKRHeap*);
+ /* 80273EA8 */ void checkUserIndexDuplication(u16) const;
+ /* 80273EEC */ void swapTexture(ResTIMG const*, char const*);
+ /* 80273FCC */ void getResUserWork(u16) const;
};
class dPa_levelEcallBack : public JPAEmitterCallBack {
public:
- /* 8004FB18 */ ~dPa_levelEcallBack();
- /* 8004FB8C */ void cleanup();
+ /* 8004FB18 */ virtual ~dPa_levelEcallBack();
+ /* 8004FB8C */ virtual void cleanup();
};
class dPa_hermiteEcallBack_c : public dPa_levelEcallBack {
public:
/* 8004F6B8 */ void setOldPosP(cXyz const*, cXyz const*);
- /* 8004F6C4 */ void executeAfter(JPABaseEmitter*);
- /* 8004FABC */ void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
- /* 8004FCC8 */ ~dPa_hermiteEcallBack_c();
+
+ /* 8004FCC8 */ virtual ~dPa_hermiteEcallBack_c();
+ /* 8004F6C4 */ virtual void executeAfter(JPABaseEmitter*);
+ /* 8004FABC */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
private:
- /* 0x00 */ void* vtable;
- /* 0x04 */ float mRate;
+ /* 0x04 */ f32 mRate;
/* 0x08 */ int mMaxCnt;
/* 0x0C */ cXyz* field_0xc;
/* 0x10 */ cXyz* field_0x10;
/* 0x14 */ cXyz* field_0x14;
};
+class mDoDvdThd_toMainRam_c;
+class cBgS_PolyInfo;
+class JPAEmitterManager;
+struct JPADrawInfo;
+
+class dPa_simpleEcallBack : public JPAEmitterCallBack {
+public:
+ /* 8004ADF4 */ dPa_simpleEcallBack();
+ /* 8004AF98 */ void create(JPAEmitterManager*, u16, u8);
+ /* 8004B064 */ void createEmitter(JPAEmitterManager*);
+ /* 8004B168 */ void set(cXyz const*, dKy_tevstr_c const*, u8, _GXColor const&, _GXColor const&,
+ int, f32);
+
+ /* 8004FC08 */ virtual ~dPa_simpleEcallBack();
+ /* 8004AE1C */ virtual void executeAfter(JPABaseEmitter*);
+ /* 8004AF94 */ virtual void draw(JPABaseEmitter*);
+
+ /* 0x04 */ JPABaseEmitter* mEmitter;
+ /* 0x08 */ u16 mID;
+ /* 0x0A */ u8 field_0xa;
+ /* 0x0C */ s16 field_0xc;
+ /* 0x10 */ void* mData;
+}; // Size: 0x14
+
+class dPa_control_c {
+public:
+ class level_c {
+ public:
+ class emitter_c {
+ public:
+ /* 8004B504 */ void onActive();
+ /* 8004B544 */ void entry(u32, u16, JPABaseEmitter*, dPa_levelEcallBack*);
+ /* 8004B5AC */ void cleanup();
+ /* 8004FBFC */ emitter_c();
+
+ private:
+ /* 0x00 */ u32 mId;
+ /* 0x04 */ u16 mNameId;
+ /* 0x06 */ u8 mStatus;
+ /* 0x08 */ JPABaseEmitter* mEmitter;
+ /* 0x0C */ dPa_levelEcallBack* mCallback;
+ /* 0x10 */ emitter_c* mPre;
+ /* 0x14 */ emitter_c* mNext;
+ }; // Size: 0x18
+
+ /* 8004B688 */ level_c();
+ /* 8004B7A8 */ void execute();
+ /* 8004B6F8 */ void execute(dPa_control_c::level_c::emitter_c*);
+ /* 8004B808 */ void cleanup();
+ /* 8004B874 */ void get(u32);
+ /* 8004B8B4 */ void forceOnEventMove(u32);
+ /* 8004B8E8 */ void allForceOnEventMove();
+ /* 8004B918 */ emitter_c* getEmitter(u32);
+ /* 8004B94C */ void entry(u16, JPABaseEmitter*, dPa_levelEcallBack*);
+ /* 8004BA40 */ void addTable(dPa_control_c::level_c::emitter_c*);
+ /* 8004BA74 */ void cutTable(dPa_control_c::level_c::emitter_c*);
+
+ /* 0x000 */ u32 field_0x0;
+ /* 0x004 */ u8 field_0x4;
+ /* 0x005 */ u8 field_0x5;
+ /* 0x006 */ u8 field_0x6;
+ /* 0x008 */ emitter_c mEmitter[0x80];
+ /* 0xC08 */
+ };
+
+ /* 8004BACC */ dPa_control_c();
+ /* 8004BB70 */ void getRM_ID(u16);
+ /* 8004BB78 */ void createCommon(void const*);
+ /* 8004BCDC */ void createRoomScene();
+ /* 8004BDFC */ void readScene(u8, mDoDvdThd_toMainRam_c**);
+ /* 8004BEB0 */ void createScene(void const*);
+ /* 8004BF3C */ void removeRoomScene(bool);
+ /* 8004BFD4 */ void removeScene(bool);
+ /* 8004C054 */ void cleanup();
+ /* 8004C078 */ void calc3D();
+ /* 8004C0EC */ void calc2D();
+ /* 8004C134 */ void calcMenu();
+ /* 8004C188 */ void draw(JPADrawInfo*, u8);
+ /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
+ /* 8004C838 */ void setWaterRipple(u32*, cBgS_PolyInfo&, cXyz const*, f32, dKy_tevstr_c const*,
+ cXyz const*, s8);
+ /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
+ u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
+ cXyz const*, f32);
+ /* 8004D4CC */ u32 set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
+ cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
+ _GXColor const*, cXyz const*, f32);
+ /* 8004CF90 */ void getPolyColor(cBgS_PolyInfo&, int, _GXColor*, _GXColor*, u8*, f32*);
+ /* 8004D6A4 */ u32 setPoly(u32, u16, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*,
+ csXyz const*, cXyz const*, int, dPa_levelEcallBack*, s8,
+ cXyz const*);
+ /* 8004D068 */ void setPoly(u16, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*, csXyz const*,
+ cXyz const*, int, dPa_levelEcallBack*, s8, cXyz const*);
+ /* 8004D128 */ void newSimple(u16, u8, u32*);
+ /* 8004D1B8 */ void setSimple(u16, cXyz const*, dKy_tevstr_c const*, u8, _GXColor const&,
+ _GXColor const&, int, f32);
+ /* 8004D23C */ void getSimple(u16);
+ /* 8004D770 */ void setStopContinue(u32);
+ /* 8004D7C4 */ void setSimpleFoot(u32, u32*, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*,
+ int, csXyz const*, cXyz const*, dPa_levelEcallBack*, s8,
+ cXyz const*);
+ /* 8004D988 */ void setCommonPoly(u32*, cBgS_PolyInfo*, cXyz const*, cXyz const*,
+ dKy_tevstr_c const*, u32, u32, csXyz const*, cXyz const*, s8);
+
+ void forceOnEventMove(u32 param_0) { field_0x210.forceOnEventMove(param_0); }
+ level_c::emitter_c* getEmitter(u32 param_0) { return field_0x210.getEmitter(param_0); }
+ u32 setNormal(u32 param_0, u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7, s8 param_8, const GXColor* param_9, const GXColor* param_10, const cXyz* param_11, f32 param_12) {
+ return set(param_0, 0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10, param_11, param_12);
+ }
+
+ static u8 mTsubo[64];
+ static u8 mLifeBall[24];
+ static u8 mWindViewMatrix[48];
+ static u8 mEmitterMng[4];
+ static u8 mWaterBubblePcallBack[4];
+ static u8 mFsenthPcallBack[4];
+ static u8 mLight8EcallBack[4];
+ static u8 mLight8PcallBack[4];
+ static u8 m_b_Light8EcallBack[4];
+ static u8 m_b_Light8PcallBack[4];
+ static u8 m_d_Light8EcallBack[4];
+ static u8 m_d_Light8PcallBack[4];
+ static u8 mParticleTracePCB[4 + 4 /* padding */];
+
+private:
+ /* 0x000 */ JKRSolidHeap* mHeap;
+ /* 0x004 */ JPAResourceManager* mCommonResMng;
+ /* 0x008 */ JKRExpHeap* m_resHeap;
+ /* 0x00C */ JKRSolidHeap* m_sceneHeap;
+ /* 0x010 */ void* m_sceneRes;
+ /* 0x014 */ JPAResourceManager* mSceneResMng;
+ /* 0x018 */ u8 field_0x18;
+ /* 0x019 */ u8 field_0x19;
+ /* 0x01C */ dPa_simpleEcallBack field_0x1c[25];
+ /* 0x210 */ level_c field_0x210;
+};
+
#endif /* D_PARTICLE_D_PARTICLE_H */
diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h
index 91977e0be3..217ba4c419 100644
--- a/include/d/save/d_save.h
+++ b/include/d/save/d_save.h
@@ -919,8 +919,10 @@ class dSv_restart_c {
public:
void setRoom(const cXyz&, s16, s8);
+ void setRoomParam(u32 param) { mRoomParam = param; }
s16 getStartPoint() const { return mStartPoint; }
u32 getLastMode() const { return mLastMode; }
+ s8 getRoomNo() const { return mRoomNo; }
private:
/* 0x00 */ s8 mRoomNo;
@@ -1007,6 +1009,7 @@ public:
dSv_player_c& getPlayer() { return mSavedata.getPlayer(); }
dSv_event_c& getTmp() { return mTmp; }
dSv_restart_c& getRestart() { return mRestart; }
+ dSv_turnRestart_c& getTurnRestart() { return mTurnRestart; }
dSv_event_c& getEvent() { return mSavedata.getEvent(); }
s64 getStartTime() { return mStartTime; }
s64 getSaveTotalTime() { return mSaveTotalTime; }
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index 92a42a42dc..dc72b471b2 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -102,6 +102,10 @@ inline u32 fopAcM_GetParam(const void* pActor) {
return fpcM_GetParam(pActor);
}
+inline void fopAcM_SetParam(void* p_actor, u32 param) {
+ fpcM_SetParam(p_actor, param);
+}
+
inline u8 fopAcM_GetGroup(const fopAc_ac_c* p_actor) {
return p_actor->mGroup;
}
@@ -244,7 +248,7 @@ static const char* fopAcM_getProcNameString(const fopAc_ac_c*);
// s32 fopAcM_findObjectCB(const fopAc_ac_c*, void*);
s32 fopAcM_searchFromName(const char*, u32, u32);
s32 fopAcM_findObject4EventCB(fopAc_ac_c*, void*);
-s32 fopAcM_searchFromName4Event(const char*, s16);
+fopAc_ac_c* fopAcM_searchFromName4Event(const char*, s16);
s32 fopAcM_getWaterY(const cXyz*, f32*);
void fpoAcM_relativePos(const fopAc_ac_c*, const cXyz*, cXyz*);
s32 fopAcM_getWaterStream(const cXyz*, const cBgS_PolyInfo&, cXyz*, int*, int);
diff --git a/include/f_pc/f_pc_manager.h b/include/f_pc/f_pc_manager.h
index 1d13f495d3..772db2e504 100644
--- a/include/f_pc/f_pc_manager.h
+++ b/include/f_pc/f_pc_manager.h
@@ -22,6 +22,10 @@ inline u32 fpcM_GetParam(const void* pActor) {
return ((base_process_class*)pActor)->mParameters;
}
+inline void fpcM_SetParam(void* p_actor, u32 param) {
+ ((base_process_class*)p_actor)->mParameters = param;
+}
+
void fpcM_Draw(void* pProc);
s32 fpcM_DrawIterater(fpcM_DrawIteraterFunc pFunc);
void fpcM_Execute(void* pProc);
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index efb15dbf7a..504b3349ec 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -15,61 +15,57 @@ public:
/* 8000D428 */ void play();
private:
- J3DFrameCtrl frame_control;
-};
+ /* 0x0 */ J3DFrameCtrl mFrameCtrl;
+}; // Size: 0x14
-class mDoExt_btkAnm {
+class mDoExt_btkAnm : public mDoExt_baseAnm {
public:
- mDoExt_btkAnm(void) { field_0x14 = 0; }
+ mDoExt_btkAnm(void) { mBtkAnm = 0; }
/* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16);
/* 8000D6D8 */ void entry(J3DMaterialTable*, f32);
private:
- mDoExt_baseAnm base_anm;
- u32 field_0x14;
-};
+ /* 0x14 */ u32 mBtkAnm;
+}; // Size: 0x18
STATIC_ASSERT(sizeof(mDoExt_btkAnm) == 0x18);
-class mDoExt_brkAnm {
+class mDoExt_brkAnm : public mDoExt_baseAnm {
public:
- mDoExt_brkAnm(void) { field_0x14 = 0; }
+ mDoExt_brkAnm(void) { mBrkAnm = 0; }
/* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
/* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
private:
- mDoExt_baseAnm mDoExt_baseAnm;
- u32 field_0x14;
-};
+ /* 0x14 */ u32 mBrkAnm;
+}; // Size: 0x18
STATIC_ASSERT(sizeof(mDoExt_brkAnm) == 0x18);
-class mDoExt_bpkAnm {
+class mDoExt_bpkAnm : public mDoExt_baseAnm {
public:
- mDoExt_bpkAnm(void) { field_0x14 = 0; }
+ mDoExt_bpkAnm(void) { mBpkAnm = 0; }
/* 8000D47C */ void init(J3DMaterialTable*, J3DAnmColor*, int, int, f32, s16, s16);
/* 8000D518 */ void entry(J3DMaterialTable*, f32);
private:
- mDoExt_baseAnm mDoExt_baseAnm;
- u32 field_0x14;
-};
+ /* 0x14 */ u32 mBpkAnm;
+}; // Size: 0x18
STATIC_ASSERT(sizeof(mDoExt_bpkAnm) == 0x18);
-class mDoExt_bckAnm {
+class mDoExt_bckAnm : public mDoExt_baseAnm {
public:
- mDoExt_bckAnm(void) { field_0x18 = 0; }
+ mDoExt_bckAnm(void) { mAnm = 0; }
/* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool);
/* 8000D990 */ void changeBckOnly(J3DAnmTransform*);
/* 8000D9CC */ void entry(J3DModelData*, f32);
/* 8000D9E8 */ void entryJoint(J3DModelData*, u16, f32);
private:
- mDoExt_baseAnm base_anm;
- u8 field_0x14[4];
- u32 field_0x18;
-}; // Size = 0x1C
+ /* 0x14 */ u32 mBckAnm;
+ /* 0x18 */ u32 mAnm;
+}; // Size: 0x1C
STATIC_ASSERT(sizeof(mDoExt_bckAnm) == 0x1C);
@@ -77,8 +73,6 @@ class J3DTransformInfo;
class mDoExt_McaMorfCallBack1_c {
public:
-private:
- /*void* vtable;*/
virtual void execute(u16, J3DTransformInfo*) = 0;
};
@@ -88,11 +82,69 @@ public:
/* 80140E2C */ mDoExt_AnmRatioPack();
void setRatio(f32 ratio) { mRatio = ratio; }
+ J3DAnmTransform* getAnmTransform() { return mAnmTransform; }
private:
/* 0x0 */ f32 mRatio;
/* 0x4 */ J3DAnmTransform* mAnmTransform;
-}; // Size = 0x8
+}; // Size: 0x8
+
+class mDoExt_invJntPacket : public J3DPacket {
+public:
+ /* 8000E654 */ mDoExt_invJntPacket();
+
+ /* 80012220 */ virtual void draw();
+ /* 8000E5F8 */ virtual ~mDoExt_invJntPacket();
+
+private:
+ /* 0x10 */ J3DModel* field_0x10;
+ /* 0x14 */ u16 field_0x14;
+ /* 0x16 */ u8 field_0x16;
+}; // Size: 0x18
+
+class mDoExt_invisibleModel {
+public:
+ /* 8000E53C */ void create(J3DModel*, u8);
+ /* 8000E6C8 */ void entryJoint(cXyz*);
+ /* 8000E7C0 */ void entryDL(cXyz*);
+
+ /* 0x0 */ J3DModel* mModel;
+ /* 0x4 */ mDoExt_invJntPacket* field_0x4;
+};
+
+class mDoExt_morf_c : public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> {
+public:
+ /* 8000F950 */ mDoExt_morf_c();
+ /* 8000FB7C */ void setMorf(f32);
+ /* 8000FBC0 */ void frameUpdate();
+
+ /* 8000FAE8 */ virtual ~mDoExt_morf_c();
+
+private:
+ /* 0x04 */ u32 field_0x4;
+ /* 0x08 */ u32 mAnm;
+ /* 0x0C */ J3DFrameCtrl mFrameCtrl;
+ /* 0x20 */ u32 field_0x20;
+ /* 0x24 */ u32 field_0x24;
+};
+
+class mDoExt_MtxCalcOldFrame {
+public:
+ /* 8000F848 */ void initOldFrameMorf(f32, u16, u16);
+ /* 8000F8CC */ void decOldFrameMorfCounter();
+
+private:
+ /* 0x00 */ bool mOldFrameFlg;
+ /* 0x04 */ f32 mOldFrameMorfCounter;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 mOldFrameRate;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ u16 mOldFrameStartJoint;
+ /* 0x1A */ u16 mOldFrameEndJoint;
+ /* 0x1C */ J3DTransformInfo* mOldFrameTransInfo;
+ /* 0x20 */ Quaternion* mOldFrameQuaternion;
+}; // Size: 0x24
JKRSolidHeap* mDoExt_createSolidHeapFromGame(u32, u32);
void mDoExt_destroySolidHeap(JKRSolidHeap*);
diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h
index 7eaa3aa2e2..79c09b2fbf 100644
--- a/include/m_Do/m_Do_mtx.h
+++ b/include/m_Do/m_Do_mtx.h
@@ -61,4 +61,10 @@ public:
/* 0x118 */ mDoMtx_quatStack_c* field_0x118;
}; // Size: 0x11C
+inline void mDoMtx_multVecZero(MtxP param_0, Vec* param_1) {
+ param_1->x = param_0[0][3];
+ param_1->y = param_0[1][3];
+ param_1->z = param_0[2][3];
+}
+
#endif /* M_DO_M_DO_MTX_H */
diff --git a/include/rel/d/a/d_a_crod/d_a_crod.h b/include/rel/d/a/d_a_crod/d_a_crod.h
index 4ef24817a3..47f72e02a4 100644
--- a/include/rel/d/a/d_a_crod/d_a_crod.h
+++ b/include/rel/d/a/d_a_crod/d_a_crod.h
@@ -3,9 +3,11 @@
#include "f_op/f_op_actor.h"
#include "f_op/f_op_actor_mng.h"
+#include "d/cc/d_cc_d.h"
+#include "d/a/d_a_player.h"
#include "dolphin/types.h"
-class daCrod_c {
+class daCrod_c : public fopAc_ac_c {
public:
/* 80141A94 */ void setControllActorData();
/* 804A2E38 */ void createHeap();
@@ -23,6 +25,31 @@ public:
static fopAc_ac_c* makeIronBallDummy(fopAc_ac_c* p_actor) {
return (fopAc_ac_c*)fopAcM_fastCreate(0x2F4, 6, &p_actor->mCurrent.mPosition, fopAcM_GetRoomNo(p_actor), NULL, NULL, -1, NULL, NULL);
}
-};
+
+ fopAc_ac_c* getControllActor() {
+ return mControllActor.getActor();
+ }
+
+ fopAc_ac_c* getCameraActor() {
+ return mCameraActor.getActor();
+ }
+
+ void setThrow() { fopAcM_SetParam(this, 2); }
+
+private:
+ /* 0x568 */ J3DModel* field_568;
+ /* 0x56C */ mDoExt_bckAnm field_0x56c;
+ /* 0x588 */ J3DAnmTevRegKey* field_0x588;
+ /* 0x58C */ J3DAnmTextureSRTKey* field_0x58c;
+ /* 0x590 */ dCcD_Stts field_0x590;
+ /* 0x5CC */ dCcD_Cps field_0x5cc;
+ /* 0x710 */ LIGHT_INFLUENCE field_0x710;
+ /* 0x730 */ u8 field_0x730;
+ /* 0x731 */ u8 field_0x731;
+ /* 0x732 */ u8 field_0x732;
+ /* 0x734 */ cXyz field_0x734;
+ /* 0x740 */ daPy_actorKeep_c mControllActor;
+ /* 0x748 */ daPy_actorKeep_c mCameraActor;
+}; // Size: 0x750
#endif /* D_A_CROD_H */
diff --git a/include/rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h b/include/rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h
index 25408550ad..49c654ce50 100644
--- a/include/rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h
+++ b/include/rel/d/a/kytag/d_a_kytag05/d_a_kytag05.h
@@ -2,5 +2,14 @@
#define D_A_KYTAG05_H
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+class kytag05_class : public fopAc_ac_c {
+public:
+ u8 getSceneListID() const { return mSceneListID; }
+
+ /* 0x568 */ u8 field_0x568[5];
+ /* 0x56D */ u8 mSceneListID;
+};
#endif /* D_A_KYTAG05_H */