summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-05-02 10:13:14 -0700
committerGitHub <noreply@github.com>2021-05-02 13:13:14 -0400
commit2f4904dae297e5d3f4df99fd6c34e61c124a230f (patch)
treedde5cb1d3e7733b57b66d89462b4cf4fd0bbc707 /include
parenta9c78b5b0bc85f45e4ed5a3e9f1ddc12c8c47308 (diff)
move d_a_itembase_static / d_a_item_static / Z2StatusMgr (#123)
* move d_a_itembase_static * move d_a_item_static * moved Z2StatusMgr * clang * fixes * clang? * move d_save * move d_meter2_info * some d_meter2_info fixes * move most d_a_player * move d_bg_s stuff * move c_cc_s stuff * move d_cc stuff * move d_attention / d_event / d_stage
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DAnimation.h31
-rw-r--r--include/JSystem/JUtility/JUTFont.h18
-rw-r--r--include/SSystem/SComponent/c_angle.h1
-rw-r--r--include/SSystem/SComponent/c_cc_d.h280
-rw-r--r--include/SSystem/SComponent/c_cc_s.h41
-rw-r--r--include/SSystem/SComponent/c_lib.h2
-rw-r--r--include/SSystem/SComponent/c_m3d_g_cps.h6
-rw-r--r--include/Z2AudioLib/Z2StatusMgr.h39
-rw-r--r--include/d/a/d_a_item_static.h16
-rw-r--r--include/d/a/d_a_itembase.h38
-rw-r--r--include/d/a/d_a_itembase_static.h1
-rw-r--r--include/d/a/d_a_player.h338
-rw-r--r--include/d/bg/d_bg_s.h112
-rw-r--r--include/d/bg/d_bg_s_acch.h107
-rw-r--r--include/d/bg/d_bg_s_chk.h14
-rw-r--r--include/d/bg/d_bg_s_gnd_chk.h16
-rw-r--r--include/d/bg/d_bg_s_grp_pass_chk.h14
-rw-r--r--include/d/bg/d_bg_s_poly_pass_chk.h57
-rw-r--r--include/d/bg/d_bg_s_roof_chk.h21
-rw-r--r--include/d/bg/d_bg_s_spl_grp_chk.h21
-rw-r--r--include/d/bg/d_bg_s_wtr_chk.h9
-rw-r--r--include/d/bg/d_bg_w.h205
-rw-r--r--include/d/cc/d_cc_d.h185
-rw-r--r--include/d/cc/d_cc_mass_s.h35
-rw-r--r--include/d/cc/d_cc_s.h44
-rw-r--r--include/d/d_attention.h238
-rw-r--r--include/d/d_stage.h435
-rw-r--r--include/d/event/d_event.h295
-rw-r--r--include/d/event/d_event_data.h56
-rw-r--r--include/d/event/d_event_manager.h84
-rw-r--r--include/d/meter/d_meter2_info.h198
-rw-r--r--include/d/save/d_save.h925
-rw-r--r--include/dolphin/gx/GXTexture.h21
-rw-r--r--include/dolphin/mtx/vec.h10
-rw-r--r--include/m_Do/m_Do_ext.h112
35 files changed, 4018 insertions, 7 deletions
diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h
index d3b740a15d..184cd1a2d7 100644
--- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h
+++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h
@@ -3,4 +3,35 @@
#include "dolphin/types.h"
+#pragma pack(push, 1)
+class J3DFrameCtrl {
+public:
+ void init(s16);
+ void checkPass(f32);
+ void update();
+ ~J3DFrameCtrl();
+
+ float getRate() { return mRate; }
+ void setAttribute(u8 pAttr) { mAttribute = pAttr; }
+ void setEnd(s16 pEnd) { mEnd = pEnd; }
+ void setRate(float pRate) { mRate = pRate; }
+ void setStart(s16 pStart) {
+ mStart = pStart;
+ mFrame = pStart;
+ }
+ void setFrame(float pFrame) { mFrame = pFrame; }
+ void setLoop(s16 pLoop) { mLoop = pLoop; }
+
+private:
+ void* vtable;
+ u8 mAttribute;
+ bool mState;
+ s16 mStart;
+ s16 mEnd;
+ s16 mLoop;
+ float mRate;
+ float mFrame;
+};
+#pragma pack(pop)
+
#endif /* J3DANIMATION_H */
diff --git a/include/JSystem/JUtility/JUTFont.h b/include/JSystem/JUtility/JUTFont.h
index 9da2015034..8abc640081 100644
--- a/include/JSystem/JUtility/JUTFont.h
+++ b/include/JSystem/JUtility/JUTFont.h
@@ -1,6 +1,24 @@
#ifndef JUTFONT_H
#define JUTFONT_H
+#include "dolphin/gx/GXTexture.h"
#include "dolphin/types.h"
+namespace JUtility {
+
+struct TColor : _GXColor {
+ TColor() { set(-1); }
+
+ TColor(u32 raw) { *(u32*)&r = raw; }
+
+ void set(u32 col) { *(u32*)&r = col; }
+
+ u32 toUInt32() const { return *(u32*)&r; }
+
+ operator u32() const { return toUInt32(); }
+ void operator=(const TColor& rhs) { ((_GXColor*)this)->operator=(rhs); }
+};
+
+} // namespace JUtility
+
#endif /* JUTFONT_H */
diff --git a/include/SSystem/SComponent/c_angle.h b/include/SSystem/SComponent/c_angle.h
index a61c441758..39e0bd0e33 100644
--- a/include/SSystem/SComponent/c_angle.h
+++ b/include/SSystem/SComponent/c_angle.h
@@ -93,6 +93,7 @@ public:
cSGlobe(float, short, short);
cSGlobe(float, const cSAngle&, const cSAngle&);
cSGlobe(const cXyz&);
+ ~cSGlobe();
cSGlobe& Formal(void);
void Val(const cSGlobe&);
void Val(float, short, short);
diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h
index f4149343f2..0297ed5e1f 100644
--- a/include/SSystem/SComponent/c_cc_d.h
+++ b/include/SSystem/SComponent/c_cc_d.h
@@ -1,6 +1,286 @@
#ifndef C_CC_D_H
#define C_CC_D_H
+#include "SSystem/SComponent/c_m3d_g_aab.h"
+#include "SSystem/SComponent/c_m3d_g_cps.h"
+#include "SSystem/SComponent/c_m3d_g_cyl.h"
+#include "SSystem/SComponent/c_m3d_g_sph.h"
+#include "SSystem/SComponent/c_m3d_g_tri.h"
+#include "dolphin/gx/GXTexture.h"
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+class cCcD_ShapeAttr {
+public:
+ struct Shape {};
+
+ /* 8008556C */ virtual ~cCcD_ShapeAttr();
+ /* 802649D8 */ virtual bool CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const;
+ /* 802649E0 */ virtual bool CrossCo(cCcD_ShapeAttr const&, f32*) const;
+ /* 80084E38 */ virtual void GetCoCP() const;
+ /* 80084E2C */ virtual void GetCoCP();
+ /* 80263A64 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const;
+
+ static f32 m_virtual_center[3];
+
+private:
+ /* 0x00 */ cM3dGAab mAab;
+};
+
+class cCcD_SphAttr;
+class cCcD_CylAttr;
+class cCcD_TriAttr;
+class cCcD_PntAttr;
+class cCcD_AabAttr;
+
+class cCcD_CpsAttr : public cCcD_ShapeAttr {
+public:
+ /* 80085450 */ virtual ~cCcD_CpsAttr();
+ /* 80263DC0 */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const;
+ /* 80263E04 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const;
+ /* 80084FE4 */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const;
+ /* 80084FDC */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const;
+ /* 80084FD4 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const;
+ /* 80263D38 */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const;
+ /* 80263D7C */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const;
+ /* 80263F24 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const;
+ /* 80085024 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const;
+ /* 8008502C */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const;
+ /* 8008501C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const;
+ /* 80263ED4 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const;
+ /* 80263F74 */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const;
+ /* 80085034 */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const;
+ /* 80263FC4 */ virtual void CalcAabBox();
+ /* 80264014 */ virtual void GetNVec(cXyz const&, cXyz*) const;
+
+private:
+ /* 0x20 */ cM3dGCps mCps;
+};
+
+class cCcD_SphAttr : public cCcD_ShapeAttr {
+public:
+ /* 8008721C */ virtual ~cCcD_SphAttr();
+ /* 80264538 */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const;
+ /* 802645C0 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const;
+ /* 80084B4C */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const;
+ /* 80084B54 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const;
+ /* 80084B5C */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const;
+ /* 802644EC */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const;
+ /* 8026457C */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const;
+ /* 80264688 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const;
+ /* 80084B94 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const;
+ /* 80084B9C */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const;
+ /* 80084BA4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const;
+ /* 80084BAC */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const;
+ /* 80264644 */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const;
+ /* 802645F8 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const;
+ /* 80084B44 */ virtual void GetCoCP() const;
+ /* 80037A54 */ virtual void GetCoCP();
+ /* 802646E0 */ virtual void CalcAabBox();
+ /* 8026476C */ virtual void GetNVec(cXyz const&, cXyz*) const;
+ /* 80264808 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const;
+
+private:
+ /* 0x20 */ cM3dGSph mSph;
+}; // Size = 0x30
+
+class cCcD_CylAttr : public cCcD_ShapeAttr {
+public:
+ /* 800854E0 */ virtual ~cCcD_CylAttr();
+ /* 8026420C */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const;
+ /* 802641C8 */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const;
+ /* 80084CC8 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const;
+ /* 80264250 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const;
+ /* 80084CD0 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const;
+ /* 80084CD8 */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const;
+ /* 8026417C */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const;
+ /* 80264288 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const;
+ /* 80264310 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const;
+ /* 80084D10 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const;
+ /* 80084D18 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const;
+ /* 80084D20 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const;
+ /* 80084D28 */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const;
+ /* 802642CC */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const;
+ /* 80084CC0 */ virtual void GetCoCP() const;
+ /* 80037A4C */ virtual void GetCoCP();
+ /* 80264368 */ virtual void CalcAabBox();
+ /* 802643D0 */ virtual void GetNVec(cXyz const&, cXyz*) const;
+ /* 802644B8 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const;
+
+private:
+ /* 0x20 */ cM3dGCyl mCyl;
+}; // Size = 0x34
+
+class cCcD_TriAttr {
+ /* 80084E44 */ bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const;
+ /* 80263A88 */ void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const;
+ /* 80263BCC */ void CrossAtTg(cCcD_TriAttr const&, cXyz*) const;
+ /* 80084E4C */ bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const;
+ /* 80263B90 */ void CrossAtTg(cCcD_SphAttr const&, cXyz*) const;
+ /* 80084E54 */ void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const;
+ /* 80263B58 */ void CrossAtTg(cCcD_CylAttr const&, cXyz*) const;
+ /* 80084E9C */ bool CrossCo(cCcD_AabAttr const&, f32*) const;
+ /* 80084EBC */ void CrossCo(cCcD_ShapeAttr const&, f32*) const;
+ /* 80084EA4 */ bool CrossCo(cCcD_TriAttr const&, f32*) const;
+ /* 80084E8C */ bool CrossCo(cCcD_SphAttr const&, f32*) const;
+ /* 80084EAC */ bool CrossCo(cCcD_CpsAttr const&, f32*) const;
+ /* 80084E94 */ bool CrossCo(cCcD_CylAttr const&, f32*) const;
+ /* 80084EB4 */ bool CrossCo(cCcD_PntAttr const&, f32*) const;
+ /* 80263C04 */ void CalcAabBox();
+ /* 80263C9C */ void GetNVec(cXyz const&, cXyz*) const;
+ /* 80264938 */ ~cCcD_TriAttr();
+};
+
+class cCcD_DivideInfo {
+public:
+ /* 80263358 */ void Set(u32, u32, u32);
+ /* 80263368 */ void Chk(cCcD_DivideInfo const&) const;
+
+private:
+ /* 0x00 */ u32 field_0x0;
+ /* 0x04 */ u32 field_0x4;
+ /* 0x08 */ u32 field_0x8;
+ /* 0x0C */ void* vtable;
+};
+
+class cCcD_DivideArea {
+public:
+ /* 802633A8 */ void SetArea(cM3dGAab const&);
+ /* 802634D4 */ void CalcDivideInfo(cCcD_DivideInfo*, cM3dGAab const&, u32);
+ /* 802636A0 */ void CalcDivideInfoOverArea(cCcD_DivideInfo*, cM3dGAab const&);
+
+private:
+ cM3dGAab mAab;
+ void* vtable;
+};
+
+struct cCcD_SrcObjTg {};
+
+struct cCcD_SrcObjHitInf {};
+
+struct cCcD_SrcObjAt {};
+
+struct cCcD_SrcObj {};
+
+class cCcD_GStts {
+public:
+ /* 800837B0 */ ~cCcD_GStts();
+
+private:
+ /* 0x00 */ void* vtable;
+}; // Size = 0x4
+
+class cCcD_Stts {
+public:
+ /* 801410A4 */ ~cCcD_Stts();
+ /* 80263894 */ bool GetGStts() const;
+ /* 8026389C */ bool GetGStts();
+ /* 802638A4 */ void Init(int, int, void*, unsigned int);
+ /* 80263904 */ void Ct();
+ /* 80263934 */ void PlusCcMove(f32, f32, f32);
+ /* 8026395C */ void ClrCcMove();
+ /* 80263970 */ void PlusDmg(int);
+ /* 80263984 */ void GetWeightF() const;
+ /* 802649E8 */ void ClrAt();
+ /* 802649EC */ void ClrTg();
+
+private:
+ /* 0x00 */ cXyz field_0x00;
+ /* 0x0C */ fopAc_ac_c* mActor;
+ /* 0x10 */ int mApid;
+ /* 0x14 */ u8 mWeight;
+ /* 0x15 */ u8 field_0x15;
+ /* 0x16 */ u8 mTg;
+ /* 0x18 */ void* vtable;
+}; // Size = 0x1C
+
+class cCcD_ObjCommonBase {
+public:
+ /* 8008409C */ ~cCcD_ObjCommonBase();
+ /* 802639B0 */ void ct();
+
+private:
+ /* 0x00 */ int mSPrm;
+ /* 0x04 */ int mRPrm;
+ /* 0x08 */ void* mHitObj; // cCcD_Obj* type
+ /* 0x0C */ void* vtable;
+};
+
+class cCcD_Obj;
+#pragma pack(push, 1)
+class cCcD_ObjAt : cCcD_ObjCommonBase {
+public:
+ /* 80084040 */ ~cCcD_ObjAt();
+ /* 8026483C */ void SetHit(cCcD_Obj*);
+ /* 8026484C */ void Set(cCcD_SrcObjAt const&);
+ /* 80264868 */ void ClrHit();
+
+private:
+ /* 0x10 */ int mType;
+ /* 0x14 */ u8 mAtp;
+};
+#pragma pack(pop)
+
+class cCcD_ObjTg : cCcD_ObjCommonBase {
+public:
+ /* 80083FE4 */ ~cCcD_ObjTg();
+ /* 80264880 */ void Set(cCcD_SrcObjTg const&);
+ /* 80264894 */ void SetGrp(u32);
+ /* 802648B0 */ void ClrHit();
+ /* 802648C8 */ void SetHit(cCcD_Obj*);
+
+private:
+ /* 0x10 */ int mType;
+};
+
+class cCcD_ObjCo : cCcD_ObjCommonBase {
+public:
+ /* 80083F88 */ ~cCcD_ObjCo();
+ /* 802648D8 */ void SetHit(cCcD_Obj*);
+ /* 802648E8 */ void ClrHit();
+ /* 80264900 */ void SetIGrp(u32);
+ /* 8026491C */ void SetVsGrp(u32);
+};
+
+class cCcD_ObjHitInf {
+public:
+ /* 80083EC8 */ ~cCcD_ObjHitInf();
+ /* 802639C4 */ void Set(cCcD_SrcObjHitInf const&);
+
+private:
+ /* 0x000 */ cCcD_ObjAt mObjAt;
+ /* 0x015 */ u8 field_0x15[3]; // padding?
+ /* 0x018 */ cCcD_ObjTg mObjTg;
+ /* 0x02C */ cCcD_ObjCo mObjCo;
+ /* 0x03C */ void* vtable;
+}; // Size = 0x40
+
+class cCcD_Obj : cCcD_ObjHitInf {
+public:
+ /* 80083DE0 */ ~cCcD_Obj();
+ /* 800851A4 */ bool GetGObjInf() const;
+ /* 800847C8 */ bool GetGObjInf();
+ /* 80084BE8 */ bool GetShapeAttr() const;
+ /* 80085130 */ bool GetShapeAttr();
+ /* 80084BF0 */ void Draw(_GXColor const&);
+ /* 80263A10 */ void ct();
+ /* 80263A1C */ void Set(cCcD_SrcObj const&);
+ void GetAc();
+
+private:
+ /* 0x040 */ int field_0x40;
+ /* 0x044 */ cCcD_Stts* mStts;
+ /* 0x048 */ cCcD_DivideInfo mDivideInfo;
+}; // Size = 0x58
+
+class cCcD_GObjInf : cCcD_Obj {
+public:
+ /* 80083CE8 */ ~cCcD_GObjInf();
+ /* 800851A0 */ void GetGObjInf();
+ /* 80084BE4 */ void GetGObjInf() const;
+ /* 80085138 */ void ClrAtHit();
+ /* 80085158 */ void ClrTgHit();
+ /* 8008517C */ void ClrCoHit();
+};
#endif /* C_CC_D_H */
diff --git a/include/SSystem/SComponent/c_cc_s.h b/include/SSystem/SComponent/c_cc_s.h
index ebf07aa319..6e8acc2b79 100644
--- a/include/SSystem/SComponent/c_cc_s.h
+++ b/include/SSystem/SComponent/c_cc_s.h
@@ -1,6 +1,47 @@
#ifndef C_CC_S_H
#define C_CC_S_H
+#include "SSystem/SComponent/c_cc_d.h"
#include "dolphin/types.h"
+class cCcS {
+public:
+ /* 80030BDC */ ~cCcS();
+ /* 80264A6C */ cCcS();
+ /* 80264A94 */ void Ct();
+ /* 80264B60 */ void Dt();
+ /* 80264B80 */ void GetWt(u8) const;
+ /* 80264BA8 */ void Set(cCcD_Obj*);
+ /* 80264C5C */ void ClrCoHitInf();
+ /* 80264CF0 */ void ClrTgHitInf();
+ /* 80264D90 */ void ClrAtHitInf();
+ /* 80264E2C */ void ChkNoHitAtTg(cCcD_Obj*, cCcD_Obj*);
+ /* 80264F40 */ void ChkAtTg();
+ /* 8026515C */ void ChkNoHitCo(cCcD_Obj*, cCcD_Obj*);
+ /* 80265230 */ void ChkCo();
+ /* 802653A0 */ void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*);
+ /* 802653C8 */ void SetAtTgCommonHitInf(cCcD_Obj*, cCcD_Obj*, cXyz*);
+ /* 802655E4 */ void SetCoCommonHitInf(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32);
+ /* 80265750 */ void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32);
+ /* 80265BB4 */ void CalcArea();
+ /* 80265CCC */ void Move();
+ /* 80265D30 */ void DrawClear();
+ /* 80265DF4 */ void SetCoGCorrectProc(cCcD_Obj*, cCcD_Obj*);
+ /* 80265DF8 */ void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*,
+ cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
+ /* 80265DFC */ void SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*,
+ cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*,
+ cCcD_GStts*, cXyz*);
+ /* 80265E00 */ bool ChkNoHitGAtTg(cCcD_GObjInf const*, cCcD_GObjInf const*, cCcD_GStts*,
+ cCcD_GStts*);
+ /* 80265E08 */ bool ChkAtTgHitAfterCross(bool, bool, cCcD_GObjInf const*, cCcD_GObjInf const*,
+ cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
+ /* 80265E10 */ bool ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*);
+ /* 80265E18 */ void MoveAfterCheck();
+
+private:
+ u8 field_0x0[10260];
+ cCcD_DivideArea mDivideArea;
+};
+
#endif /* C_CC_S_H */
diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h
index 10a330ff1b..9e0780aca9 100644
--- a/include/SSystem/SComponent/c_lib.h
+++ b/include/SSystem/SComponent/c_lib.h
@@ -48,4 +48,4 @@ void MtxPosition(cXyz*, cXyz*);
void MtxPush(void);
Mtx* MtxPull(void);
-#endif \ No newline at end of file
+#endif
diff --git a/include/SSystem/SComponent/c_m3d_g_cps.h b/include/SSystem/SComponent/c_m3d_g_cps.h
index 6bc09c6462..7bf6132c93 100644
--- a/include/SSystem/SComponent/c_m3d_g_cps.h
+++ b/include/SSystem/SComponent/c_m3d_g_cps.h
@@ -21,12 +21,6 @@ public:
void Set(const cXyz&, const cXyz&, f32);
void Set(const cM3dGCpsS&);
void SetCps(const cM3dGCps&);
- virtual void unk1(void) = 0;
- virtual void unk2(void) = 0;
- virtual void unk3(void) = 0;
- virtual void unk4(void) = 0;
- virtual void unk5(void) = 0;
- virtual void unk6(void) = 0;
};
#endif /* C_M3D_G_CPS_H */
diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h
index 4dae6d2835..1e3a0abea1 100644
--- a/include/Z2AudioLib/Z2StatusMgr.h
+++ b/include/Z2AudioLib/Z2StatusMgr.h
@@ -1,6 +1,45 @@
#ifndef Z2STATUSMGR_H
#define Z2STATUSMGR_H
+#include "dolphin/mtx/vec.h"
#include "dolphin/types.h"
+struct Z2StatusMgr {
+ Z2StatusMgr();
+ void heartGaugeOn();
+ void processHeartGaugeSound();
+ void talkIn();
+ void talkOut();
+ void menuIn();
+ void menuOut();
+ bool isMovieDemo();
+ void setDemoName(char*);
+ void processTime();
+ bool checkDayTime();
+ void setEventBit(void*);
+ void setCameraPolygonPos(Vec*);
+ void setCameraGroupInfo(u8);
+ void setCameraInWaterDepth(float);
+
+ //! @todo there are a number of inlines only called from rels: see CHN_debug
+
+ u8 mHour;
+ u8 mMinute;
+ u8 mWeekday;
+ u8 field_0x03;
+ s16 mTime;
+ u8 field_0x6[2];
+ void* mEventBit;
+ bool mIsMenuIn;
+ u8 field_0xd[3];
+ u32 mCameraMapInfo;
+ u32 field_0x14;
+ float mUnderwaterDepth;
+ float mCameraInWaterDepthRatio;
+ Vec mPolygonPosition;
+ u8 mDemoStatus;
+ u8 mHeartGaugeOn;
+ u8 padding[2];
+};
+
#endif /* Z2STATUSMGR_H */
diff --git a/include/d/a/d_a_item_static.h b/include/d/a/d_a_item_static.h
index 4e728a2f36..5fb0b88a16 100644
--- a/include/d/a/d_a_item_static.h
+++ b/include/d/a/d_a_item_static.h
@@ -1,6 +1,22 @@
#ifndef D_A_D_A_ITEM_STATIC_H
#define D_A_D_A_ITEM_STATIC_H
+#include "SSystem/SComponent/c_lib.h"
#include "dolphin/types.h"
+class daItem_c {
+public:
+ u32 startCtrl();
+ u32 startControl();
+ u32 endControl();
+
+ void setFlag(u8 pFlag) { cLib_onBit(unk2376, pFlag); }
+
+private:
+ u8 unk0[0x948];
+ u8 unk2376;
+ u8 unk2377;
+ u8 unk2378;
+};
+
#endif /* D_A_D_A_ITEM_STATIC_H */
diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h
index b7353ccc07..3cdfec42dd 100644
--- a/include/d/a/d_a_itembase.h
+++ b/include/d/a/d_a_itembase.h
@@ -3,4 +3,42 @@
#include "dolphin/types.h"
+class daItemBase_c {
+public:
+ u8 getItemNo();
+ void hide();
+ void show();
+ void changeDraw();
+ u8 chkDraw();
+ void dead();
+ u8 chkDead();
+ void CreateItemHeap(char const*, s16, s16, s16, s16, s16, s16, s16);
+ void DeleteBase(char const*);
+ bool clothCreate();
+ bool __CreateHeap();
+ void DrawBase();
+ void RotateYBase();
+ void setListStart();
+ void setListEnd();
+ void settingBeforeDraw();
+ void setTevStr();
+ void setShadow();
+ void animEntry();
+ void animPlay(f32, f32, f32, f32, f32, f32);
+ void chkFlag(int);
+ void getTevFrm();
+ void getBtpFrm();
+ void getShadowSize();
+ void getCollisionH();
+ void getCollisionR();
+ void getData();
+
+ static u8 const m_data[56];
+
+private:
+ u8 unk0[0x92a];
+ u8 mItemNo;
+ u8 unk2347;
+};
+
#endif /* D_A_D_A_ITEMBASE_H */
diff --git a/include/d/a/d_a_itembase_static.h b/include/d/a/d_a_itembase_static.h
index 019d5a14fe..bc8924fa93 100644
--- a/include/d/a/d_a_itembase_static.h
+++ b/include/d/a/d_a_itembase_static.h
@@ -1,6 +1,7 @@
#ifndef D_A_D_A_ITEMBASE_STATIC_H
#define D_A_D_A_ITEMBASE_STATIC_H
+#include "d/a/d_a_itembase.h"
#include "dolphin/types.h"
#endif /* D_A_D_A_ITEMBASE_STATIC_H */
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 86a561d5d4..872612d20a 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -1,6 +1,344 @@
#ifndef D_A_D_A_PLAYER_H
#define D_A_D_A_PLAYER_H
+#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
+#include "d/save/d_save.h"
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+// todo: remove after moving JKernel
+struct JKRHeap {
+ /* 802CE5CC */ void freeAll();
+};
+
+class daPy_anmHeap_c {
+public:
+ enum daAlinkHEAP_TYPE {};
+
+ daPy_anmHeap_c(u32);
+ ~daPy_anmHeap_c();
+ void initData();
+ void mallocBuffer();
+ void createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE);
+ void loadData(u16);
+ void loadDataIdx(u16);
+ void loadDataPriIdx(u16);
+ void loadDataDemoRID(u16, u16);
+ void setAnimeHeap();
+
+ u16 getIdx() const { return mIdx; }
+ void resetIdx() { mIdx = 0xffff; }
+ void resetPriIdx() { mPriIdx = 0xffff; }
+ void resetArcNo() { mArcNo = 0xffff; }
+
+private:
+ /* 0x00 */ u16 mIdx;
+ /* 0x02 */ u16 mPriIdx;
+ /* 0x04 */ u16 mArcNo;
+ /* 0x06 */ u16 field_0x06;
+ /* 0x08 */ int mBufferSize;
+ /* 0x0C */ void* mBuffer;
+ /* 0x10 */ JKRHeap* mAnimeHeap;
+}; // Size = 0x14
+
+class daPy_actorKeep_c {
+public:
+ daPy_actorKeep_c(void);
+ void setActor(void);
+ void setData(fopAc_ac_c*);
+ void clearData(void);
+
+ u32 getID(void) const { return mID; }
+ void setID(u32 id) { mID = id; }
+ fopAc_ac_c* getActor(void) const { return mActor; }
+
+private:
+ u32 mID;
+ fopAc_ac_c* mActor;
+};
+
+#pragma pack(push, 1)
+class daPy_frameCtrl_c : public J3DFrameCtrl {
+public:
+ bool checkAnmEnd(void);
+ void updateFrame(void);
+ void setFrameCtrl(u8, short, short, float, float);
+
+ u16 getEndFlg() { return mEndFlg; }
+ u16 getNowSetFlg() { return mNowSetFlg; }
+ void onEndFlg() { mEndFlg = 1; }
+ void onNowSetFlg() { mNowSetFlg = 1; }
+ void offNowSetFlg() { mNowSetFlg = 0; }
+ void offEndFlg() {
+ mEndFlg = 0;
+ mNowSetFlg = 0;
+ }
+
+private:
+ /* 0x14 */ u16 mEndFlg;
+ /* 0x16 */ u16 mNowSetFlg;
+};
+#pragma pack(pop)
+
+class daPy_demo_c {
+public:
+private:
+ /* 0x00 */ u16 mDemoType;
+ /* 0x02 */ s16 mDemoMoveAngle;
+ /* 0x04 */ s16 mTimer;
+ /* 0x06 */ s16 mParam2;
+ /* 0x08 */ int mParam0;
+ /* 0x0C */ int mParam1;
+ /* 0x10 */ int mDemoMode;
+ /* 0x14 */ float mStick;
+ /* 0x18 */ cXyz mDemoPos0;
+}; // Size = 0x24
+
+class daPy_py_c : public fopAc_ac_c {
+private:
+ /* 0x0538 */ u8 field_0x538[0x32];
+ /* 0x056A */ u8 field_0x56a;
+ /* 0x056B */ u8 field_0x56b[5];
+ /* 0x0570 */ int mNoResetFlg0;
+ /* 0x0574 */ int mNoResetFlg1;
+ /* 0x0578 */ int mNoResetFlg2;
+ /* 0x057C */ int mNoResetFlg3;
+ /* 0x0580 */ int mResetFlg0;
+ /* 0x0584 */ int mResetFlg1;
+ /* 0x0588 */ int mEndResetFlg0;
+ /* 0x058C */ int mEndResetFlg1;
+ /* 0x0590 */ int mEndResetFlg2;
+ /* 0x0594 */ u8 field_0x594[0x10];
+ /* 0x05A4 */ cXyz mHeadTopPos;
+ /* 0x05B0 */ cXyz mItemPos;
+ /* 0x05BC */ cXyz mSwordTopPos;
+ /* 0x05C8 */ cXyz mLeftHandPos;
+ /* 0x05D4 */ cXyz mRightHandPos;
+ /* 0x05E0 */ cXyz mLeftFootPosP;
+ /* 0x05EC */ cXyz mRightFootPosP;
+ /* 0x05F8 */ u8 field_0x5f8[0xC];
+ /* 0x0604 */ daPy_demo_c mDemo;
+
+public:
+ enum daPy_FLG0 { EquipHeavyBoots = 0x2000000 };
+ enum daPy_FLG2 {};
+ enum daPy_ERFLG0 {};
+
+ void setParamData(int, int, int, int);
+ void checkFishingRodItem(int);
+ void checkBombItem(int);
+ void checkBottleItem(int);
+ void checkDrinkBottleItem(int);
+ void checkOilBottleItem(int);
+ void checkOpenBottleItem(int);
+ void checkBowItem(int);
+ void checkHookshotItem(int);
+ void checkTradeItem(int);
+ BOOL checkDungeonWarpItem(int);
+ void checkMasterSwordEquip();
+ void checkWoodShieldEquip();
+ void getAttentionOffsetY();
+ void checkNowWolfEyeUp();
+ void forceRestartRoom(int, u32, int);
+ void setFmChainPos(fopAc_ac_c*, cXyz*, int);
+ void cancelFmChainGrab();
+ void setLookPos(cXyz*);
+ void setPlayerSe(u32);
+ void linkGrabSubjectNoDraw(fopAc_ac_c*);
+ void wolfGrabSubjectNoDraw(fopAc_ac_c*);
+ void checkRoomRestartStart();
+ void checkCarryStartLightBallA();
+ void checkCarryStartLightBallB();
+ float getSpinnerRideSpeed() const;
+ void checkSpinnerReflectEffect();
+ void checkBoomerangCharge();
+ bool checkBoomerangChargeTime();
+ void getThrowBoomerangActor();
+ void cancelBoomerangLockActor(fopAc_ac_c*);
+ void setPlayerDamage(int, int);
+ void setMidnaMotionNum(int);
+ void setMidnaFaceNum(int);
+ int checkNoResetFlg0(daPy_FLG0) const;
+ int checkEquipHeavyBoots() const;
+ u32 checkBoarSingleBattle(void) const;
+ u32 checkEndResetFlg0(daPy_ERFLG0) const;
+
+ virtual void unk();
+ virtual bool getMidnaAtnPos(void) const;
+ virtual void setMidnaMsgNum(fopAc_ac_c*, u16);
+ virtual u32 getModelMtx(void);
+ virtual u32 getInvMtx(void);
+ virtual cXyz* getShadowTalkAtnPos(void);
+ virtual float getGroundY();
+ virtual u32 getLeftItemMatrix(void);
+ virtual u32 getRightItemMatrix(void);
+ virtual u32 getLeftHandMatrix(void);
+ virtual u32 getRightHandMatrix(void);
+ virtual u32 getLinkBackBone1Matrix(void);
+ virtual u32 getWolfMouthMatrix(void);
+ virtual u32 getWolfBackbone2Matrix(void);
+ virtual bool getBottleMtx(void);
+ virtual bool checkPlayerGuard(void) const;
+ virtual bool checkPlayerFly() const;
+ virtual bool checkFrontRoll() const;
+ virtual bool checkWolfDash() const;
+ virtual bool checkAutoJump(void) const;
+ virtual bool checkSideStep(void) const;
+ virtual bool checkWolfTriggerJump(void) const;
+ virtual bool checkGuardBreakMode(void) const;
+ virtual bool checkLv3Slide(void) const;
+ virtual bool checkWolfHowlDemoMode(void) const;
+ virtual bool checkChainBlockPushPull(void);
+ virtual bool checkElecDamage(void) const;
+ virtual bool checkEmptyBottleSwing(void) const;
+ virtual bool checkBottleSwingMode(void) const;
+ virtual bool checkHawkWait(void) const;
+ virtual bool checkGoatThrow(void) const;
+ virtual bool checkGoatThrowAfter(void) const;
+ virtual bool checkWolfTagLockJump(void) const;
+ virtual bool checkWolfTagLockJumpLand(void) const;
+ virtual bool checkWolfRope(void);
+ virtual bool checkWolfRopeHang(void) const;
+ virtual bool checkRollJump(void) const;
+ virtual bool checkGoronRideWait(void) const;
+ virtual bool checkWolfChain(void) const;
+ virtual bool checkWolfWait(void) const;
+ virtual bool checkWolfJumpAttack(void) const;
+ virtual bool checkWolfRSit(void) const;
+ virtual bool checkBubbleFly(void) const;
+ virtual bool checkBottleDrinkEnd(void) const;
+ virtual bool checkWolfDig(void) const;
+ virtual bool checkCutCharge(void) const;
+ virtual bool checkCutTurnCharge(void) const;
+ virtual bool checkCutLargeJumpCharge(void) const;
+ virtual bool getBokoFlamePos(cXyz*);
+ virtual bool checkComboCutTurn(void) const;
+ virtual bool checkClimbMove(void) const;
+ virtual bool checkGrassWhistle(void) const;
+ virtual bool checkBoarRun(void) const;
+ virtual bool checkFmChainPut(void) const;
+ virtual bool checkHorseElecDamage(void) const;
+ virtual float getBaseAnimeFrameRate(void) const;
+ virtual float getBaseAnimeFrame(void) const;
+ virtual float setAnimeFrame(float);
+ virtual bool checkWolfLock(fopAc_ac_c*) const;
+ virtual bool cancelWolfLock(fopAc_ac_c*) const;
+ virtual bool getAtnActorID(void) const;
+ virtual bool getItemID(void) const;
+ virtual bool getGrabActorID(void) const;
+ virtual bool exchangeGrabActor(fopAc_ac_c*);
+ virtual bool setForceGrab(fopAc_ac_c*, bool, bool);
+ virtual void setForcePutPos(cXyz const&);
+ virtual bool checkPlayerNoDraw(void);
+ virtual bool checkRopeTag(void);
+ virtual void voiceStart(u32);
+ virtual void seStartOnlyReverb(u32);
+ virtual void seStartOnlyReverbLevel(u32);
+ virtual float setOutPower(float, short, bool);
+ virtual void setGrabCollisionOffset(float, float, void*);
+ virtual void onMagneGrab(float, float);
+ virtual void onFrollCrashFlg(u8, bool);
+ virtual bool getModelJoboolMtx(u16);
+ virtual bool getHeadMtx(void);
+ virtual bool setHookshotCarryOffset(u32, cXyz const*);
+ virtual bool checkIronBallReturn(void) const;
+ virtual bool checkIronBallGroundStop(void) const;
+ virtual bool checkSingleBoarBattleSecondBowReady(void) const;
+ virtual bool checkPoboolSubWindowMode(void) const;
+ virtual void setClothesChange(bool);
+ virtual void setPlayerPosAndAngle(float (*)[4]);
+ virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*);
+ virtual void setPlayerPosAndAngle(cXyz const*, short, bool);
+ virtual bool setThrowDamage(short, float, float, bool, bool, bool);
+ virtual bool checkSetNpcTks(cXyz*, bool, bool);
+ virtual bool setRollJump(float, float, short);
+ virtual void playerStartCollisionSE(u32, u32);
+ virtual void changeTextureAnime(u16, u16, bool);
+ virtual void cancelChangeTextureAnime(void);
+ virtual void cancelDungeonWarpReadyNeck(void);
+ virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*);
+ virtual void onSceneChangeAreaJump(u8, u8, fopAc_ac_c*);
+ virtual void onSceneChangeDead(u8, bool);
+ virtual bool checkHorseRide() const;
+ virtual bool checkBoarRide() const;
+ virtual bool checkCanoeRide() const;
+ virtual bool checkBoardRide() const;
+ virtual u32 checkSpinnerRide() const;
+ virtual bool getSpinnerActor(void);
+ virtual bool checkHorseRideNotReady(void) const;
+ virtual bool checkArrowChargeEnd(void) const;
+ virtual float getSearchBallScale(void) const;
+ virtual bool checkFastShotTime(void);
+ virtual bool checkNoEquipItem(void) const;
+ virtual bool checkFireMaterial(void) const;
+ virtual bool checkKandelaarSwing(bool) const;
+ virtual bool getBoardCutTurnOffsetAngleY(void) const;
+ virtual bool getMagneHitPos(void);
+ virtual bool getMagneBootsTopVec(void);
+ virtual bool getKandelaarFlamePos();
+ virtual bool checkUseKandelaar(bool);
+ virtual void setDkCaught(fopAc_ac_c*);
+ virtual void onPressedDamage(cXyz const&, short);
+ virtual bool checkPriActorOwn(fopAc_ac_c const*) const;
+ virtual bool onWolfEnemyBiteAll(fopAc_ac_c*, daPy_FLG2);
+ virtual bool checkWolfEnemyBiteAllOwn(fopAc_ac_c const*) const;
+ virtual void setWolfEnemyHangBiteAngle(short);
+ virtual void setKandelaarMtx(float (*)[4], bool, bool);
+ virtual bool getStickAngleFromPlayerShape(short*) const;
+ virtual bool checkSpinnerPathMove(void);
+ virtual bool checkSpinnerTriggerAttack(void);
+ virtual void onSpinnerPathForceRemove(void);
+ virtual bool getIronBallBgHit(void) const;
+ virtual bool getIronBallCenterPos(void);
+ virtual bool checkCanoeFishingGetLeft(void) const;
+ virtual bool checkCanoeFishingGetRight(void) const;
+ virtual bool checkBeeChildDrink(void) const;
+ virtual void skipPortalObjWarp(void);
+ virtual bool checkTreasureRupeeReturn(bool) const;
+ virtual void setSumouReady(fopAc_ac_c*);
+ virtual bool checkAcceptDungeonWarpAlink(bool);
+ virtual bool getSumouCounter(void) const;
+ virtual bool checkSumouWithstand(void) const;
+ virtual void cancelGoronThrowEvent(void);
+ virtual void setSumouGraspCancelCount(bool);
+ virtual void setSumouPushBackDirection(short);
+ virtual void setSumouLoseHeadUp(void);
+ virtual s16 getGiantPuzzleAimAngle(void) const;
+ virtual void setGoronSideMove(fopAc_ac_c*);
+ virtual void setCargoCarry(fopAc_ac_c*);
+ virtual bool getDpdFarFlg(void) const;
+ virtual bool getHookshotTopPos(void);
+ virtual bool checkHookshotReturnMode(void) const;
+ virtual bool checkHookshotShootReturnMode(void) const;
+ virtual bool checkOctaIealHang(void) const;
+ virtual void cancelOctaIealHang(void);
+ virtual void cancelDragonHangBackJump(void);
+ virtual void setOctaIealWildHang(void);
+ virtual bool checkDragonHangRide(void) const;
+ virtual void changeDragonActor(fopAc_ac_c*);
+ virtual bool getClothesChangeWaitTimer(void) const;
+ virtual bool getShieldChangeWaitTimer(void) const;
+ virtual bool getSwordChangeWaitTimer(void) const;
+ virtual bool checkMetamorphose(void) const;
+ virtual bool checkWolfDownAttackPullOut(void) const;
+ virtual bool checkBootsOrArmorHeavy(void) const;
+ virtual bool getBottleOpenAppearItem(void) const;
+ virtual bool checkItemSwordEquip(void) const;
+ virtual float getSinkShapeOffset(void) const;
+ virtual bool checkSinkDead(void) const;
+ virtual bool checkHorseStart(void);
+ virtual bool getWolfHowlMgrP(void);
+ virtual bool checkWolfHowlSuccessAnime(void) const;
+ virtual bool checkCopyRodTopUse(void);
+ virtual bool checkCopyRodEquip(void) const;
+ virtual bool checkCutJumpMode(void) const;
+
+ inline void onNoResetFlg0(int pFlg) { mNoResetFlg0 |= pFlg; }
+ inline void onNoResetFlg3(int pFlg) { mNoResetFlg3 |= pFlg; }
+ inline void offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; }
+ // inline fopAc_ac_c& getActor() { return mActor; }
+
+ static u8 m_midnaActor[4];
+};
#endif /* D_A_D_A_PLAYER_H */
diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h
index e7493916ec..fc4b04d1ef 100644
--- a/include/d/bg/d_bg_s.h
+++ b/include/d/bg/d_bg_s.h
@@ -1,6 +1,118 @@
#ifndef D_BG_D_BG_S_H
#define D_BG_D_BG_S_H
+#include "SSystem/SComponent/c_bg_s_gnd_chk.h"
+#include "SSystem/SComponent/c_bg_s_lin_chk.h"
+#include "SSystem/SComponent/c_bg_s_poly_info.h"
+#include "d/bg/d_bg_w.h"
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+struct cBgW_BgId {
+ /* 802681C8 */ void Release();
+ /* 802681D4 */ void ChkUsed() const;
+};
+
+#pragma pack(push, 1)
+class cBgS_ChkElm {
+ cBgS_ChkElm(void);
+ ~cBgS_ChkElm();
+ void Init();
+ void Regist2(dBgW_Base*, unsigned int, void*);
+ void Release();
+
+ /* 0x00 */ dBgW_Base* bgw_base_pointer;
+ /* 0x04 */ u8 used;
+ /* 0x05 */ u8 padding[3];
+ /* 0x08 */ u32 field_0x8;
+ /* 0x0C */ void* actor_pointer;
+ /* 0x10 */ u32 field_0x10;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class cBgS {
+ ~cBgS();
+ void Regist(dBgW_Base*, unsigned int, void*);
+ void Release(dBgW_Base*);
+ void Ct();
+ void Dt();
+ void LineCross(cBgS_LinChk*);
+ void GroundCross(cBgS_GndChk*);
+ void ConvDzb(void*);
+ void GetActorPointer(int) const;
+ void GetBgWBasePointer(cBgS_PolyInfo const&) const;
+ void ChkPolySafe(cBgS_PolyInfo const&);
+ void GetGrpRoomId(cBgS_PolyInfo const&) const;
+ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const;
+ void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const;
+ void ShdwDraw(cBgS_ShdwDraw*);
+ void GetGrpInf(cBgS_PolyInfo const&) const;
+
+ /* 0x0000 */ cBgS_ChkElm cbgs_elements[256];
+};
+#pragma pack(pop)
+
+class dBgS_HIO {
+ /* 0x00 */ u8 vtable[4];
+ /* 0x04 */ u8 field_0x4[2];
+ /* 0x06 */ u16 field_0x6;
+ /* 0x08 */ u16 field_0x8;
+ /* 0x0A */ u8 field_0xa[2];
+ /* 0x0C */ cXyz field_0xc;
+ /* 0x18 */ cXyz field_0x18;
+ /* 0x24 */ cXyz field_0x24;
+ /* 0x30 */ u8 field_0x30[4];
+};
+
+class dBgS_Acch;
+#pragma pack(push, 1)
+class dBgS {
+public:
+ ~dBgS();
+ void Ct();
+ void Dt();
+ void ClrMoveFlag();
+ void Move();
+ void Regist(dBgW_Base*, fopAc_ac_c*);
+ void ChkMoveBG(cBgS_PolyInfo const&);
+ void ChkMoveBG_NoDABg(cBgS_PolyInfo const&);
+ void GetExitId(cBgS_PolyInfo const&);
+ void GetPolyColor(cBgS_PolyInfo const&);
+ void GetHorseNoEntry(cBgS_PolyInfo const&);
+ void GetSpecialCode(cBgS_PolyInfo const&);
+ void GetMagnetCode(cBgS_PolyInfo const&);
+ void GetMonkeyBarsCode(cBgS_PolyInfo const&);
+ void GetUnderwaterRoofCode(cBgS_PolyInfo const&);
+ void GetWallCode(cBgS_PolyInfo const&);
+ void GetPolyAtt0(cBgS_PolyInfo const&);
+ void GetPolyAtt1(cBgS_PolyInfo const&);
+ void GetGroundCode(cBgS_PolyInfo const&);
+ void GetCamMoveBG(cBgS_PolyInfo const&);
+ void GetRoomCamId(cBgS_PolyInfo const&);
+ void GetRoomPathId(cBgS_PolyInfo const&);
+ void GetRoomPathPntNo(cBgS_PolyInfo const&);
+ void GetGrpSoundId(cBgS_PolyInfo const&);
+ void ChkGrpInf(cBgS_PolyInfo const&, u32);
+ void GetRoomId(cBgS_PolyInfo const&);
+ void GetPolyAttackThrough(cBgS_PolyInfo const&);
+ void ChkPolyHSStick(cBgS_PolyInfo const&);
+ void WallCorrect(dBgS_Acch*);
+ void WallCorrectSort(dBgS_Acch*);
+ void RoofChk(dBgS_RoofChk*);
+ void SplGrpChk(dBgS_SplGrpChk*);
+ void SphChk(dBgS_SphChk*, void*);
+ void MoveBgCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*, bool, bool);
+ void MoveBgTransPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
+ void MoveBgMatrixCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
+ void RideCallBack(cBgS_PolyInfo const&, fopAc_ac_c*);
+ void ArrowStickCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, cXyz&);
+ void PushPullCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel);
+
+private:
+ /* 0x0000 */ cBgS cbgs;
+ /* 0x1400 */ void* vtable;
+};
+#pragma pack(pop)
#endif /* D_BG_D_BG_S_H */
diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h
index fac211097a..b47e509e1f 100644
--- a/include/d/bg/d_bg_s_acch.h
+++ b/include/d/bg/d_bg_s_acch.h
@@ -1,6 +1,113 @@
#ifndef D_BG_D_BG_S_ACCH_H
#define D_BG_D_BG_S_ACCH_H
+#include "SSystem/SComponent/c_bg_s_poly_info.h"
+#include "SSystem/SComponent/c_m3d_g_cir.h"
+#include "SSystem/SComponent/c_m3d_g_cyl.h"
+#include "SSystem/SComponent/c_m3d_g_lin.h"
+#include "SSystem/SComponent/c_m3d_g_pla.h"
+#include "d/a/d_a_player.h"
+#include "d/bg/d_bg_s_gnd_chk.h"
+#include "d/bg/d_bg_s_roof_chk.h"
+#include "d/bg/d_bg_s_wtr_chk.h"
#include "dolphin/types.h"
+//#include "d/bg/d_bg_s.h"
+
+class dBgS_AcchCir {
+public:
+ /* 80075EAC */ dBgS_AcchCir();
+ /* 80075F14 */ void ClrWallHit();
+ /* 80075F40 */ void SetWallR(f32);
+ /* 80075F48 */ void CalcWallRR();
+ /* 80075F58 */ void SetWall(f32, f32);
+ /* 80075F80 */ void SetWallHDirect(f32);
+ /* 80077414 */ ~dBgS_AcchCir();
+
+private:
+ /* 0x00 */ cBgS_PolyInfo mPolyInfo;
+ /* 0x10 */ int mWallHit;
+ /* 0x14 */ cM3dGCir m3DGCir;
+ /* 0x28 */ float mWallRR;
+ /* 0x2C */ float field_0x2c;
+ /* 0x30 */ float mWallH;
+ /* 0x34 */ float mWallR;
+ /* 0x38 */ float mWallHDirect;
+ /* 0x3C */ s16 mWallAngleY;
+ /* 0x3E */ u8 padding[2];
+};
+
+class dBgS;
+class dBgS_Acch {
+public:
+ /* 80075F94 */ ~dBgS_Acch();
+ /* 800760A0 */ dBgS_Acch();
+ /* 800761CC */ void Init();
+ /* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*);
+ /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*);
+ /* 800762D8 */ void GroundCheckInit(dBgS&);
+ /* 80076350 */ void GroundCheck(dBgS&);
+ /* 8007654C */ void GroundRoofProc(dBgS&);
+ /* 80076624 */ void LineCheck(dBgS&);
+ /* 80076AAC */ void CrrPos(dBgS&);
+ /* 80076F84 */ void GetWallAllR();
+ /* 80076FC0 */ void SetWallCir();
+ /* 8007703C */ void CalcWallBmdCyl();
+ /* 80077114 */ void SetGroundUpY(f32);
+ /* 80077128 */ void GetWallAllLowH();
+ /* 80077178 */ void GetWallAllLowH_R();
+ /* 800771E4 */ void GetSpeedY();
+ /* 80077200 */ void GetWallAddY(Vec&);
+ /* 80077278 */ void SetNowActorInfo(int, void*, unsigned int);
+ /* 80077288 */ void SetWallPolyIndex(int, int);
+ /* 800772E8 */ void CalcMovePosWork();
+ /* 8007732C */ void CalcWallRR();
+ /* 80077388 */ void SetMoveBGOnly();
+ /* 800773A4 */ void ClrMoveBGOnly();
+ /* 800773C0 */ void SetGndThinCellingOff();
+ /* 800773D0 */ void ClrGndThinCellingOff();
+ /* 800773E0 */ void ChkGndThinCellingOff();
+ /* 800773EC */ void OnWallSort();
+ /* 800773FC */ void ChkWallSort();
+ /* 80077408 */ void ChkLineDown();
+
+private:
+ /* 0x000 */ cBgS_Chk field_0x000;
+ /* 0x014 */ dBgS_Chk field_0x014;
+ /* 0x02C */ int field_0x2c;
+ /* 0x030 */ cXyz* mPos;
+ /* 0x034 */ cXyz* mOldPos;
+ /* 0x038 */ cXyz* mSpeed;
+ /* 0x03C */ csXyz* mAngle;
+ /* 0x040 */ csXyz* mShapeAngle;
+ /* 0x044 */ cM3dGLin field_0x44;
+ /* 0x060 */ cM3dGCyl mWallBmdCyl;
+ /* 0x078 */ int field_0x78;
+ /* 0x07C */ void* field_0x7c;
+ /* 0x080 */ u32 field_0x80;
+ /* 0x084 */ fopAc_ac_c* mMyAc;
+ /* 0x088 */ int m_tbl_size;
+ /* 0x08C */ dBgS_AcchCir* field_0x8c;
+ /* 0x090 */ float field_0x90;
+ /* 0x094 */ float field_0x94;
+ /* 0x098 */ float mGroundH;
+ /* 0x09C */ float field_0x9c;
+ /* 0x0A0 */ cM3dGPla field_0xa0;
+ /* 0x0B4 */ u8 field_0xb4[4];
+ /* 0x0B8 */ float field_0xb8;
+ /* 0x0BC */ float field_0xbc;
+ /* 0x0C0 */ u8 field_0xc0[4];
+ /* 0x0C4 */ float mRoofHeight;
+ /* 0x0C8 */ float mRoofCrrHeight;
+ /* 0x0CC */ float field_0xcc;
+ /* 0x0D0 */ float mWaterCheckOffset;
+ /* 0x0D4 */ int field_0xd4;
+ /* 0x0D8 */ float field_0xd8;
+ /* 0x0DC */ dBgS_GndChk mGndChk;
+ /* 0x130 */ dBgS_RoofChk mRoofChk;
+ /* 0x180 */ dBgS_WtrChk mWtrChk;
+ /* 0x1D4 */ u8 mWtrChkMode;
+};
+
+class dBgS_LinkAcch : public dBgS_Acch {};
#endif /* D_BG_D_BG_S_ACCH_H */
diff --git a/include/d/bg/d_bg_s_chk.h b/include/d/bg/d_bg_s_chk.h
index da72ae282f..549b8c2eed 100644
--- a/include/d/bg/d_bg_s_chk.h
+++ b/include/d/bg/d_bg_s_chk.h
@@ -1,6 +1,20 @@
#ifndef D_BG_D_BG_S_CHK_H
#define D_BG_D_BG_S_CHK_H
+#include "d/bg/d_bg_s_grp_pass_chk.h"
+#include "d/bg/d_bg_s_poly_pass_chk.h"
#include "dolphin/types.h"
+class dBgS_Chk {
+public:
+ /* 8007749C */ dBgS_Chk();
+ /* 800774E8 */ ~dBgS_Chk();
+ /* 80077560 */ void GetPolyPassChkInfo();
+ /* 80077564 */ void GetGrpPassChkInfo();
+
+private:
+ /* 0x000 */ dBgS_PolyPassChk mPolyPassChkInfo;
+ /* 0x010 */ dBgS_GrpPassChk mGrpPassChkInfo;
+}; // Size = 0x18
+
#endif /* D_BG_D_BG_S_CHK_H */
diff --git a/include/d/bg/d_bg_s_gnd_chk.h b/include/d/bg/d_bg_s_gnd_chk.h
index e3e209a144..a979022a31 100644
--- a/include/d/bg/d_bg_s_gnd_chk.h
+++ b/include/d/bg/d_bg_s_gnd_chk.h
@@ -1,6 +1,22 @@
#ifndef D_BG_D_BG_S_GND_CHK_H
#define D_BG_D_BG_S_GND_CHK_H
+#include "SSystem/SComponent/c_bg_s_gnd_chk.h"
+#include "d/bg/d_bg_s_chk.h"
#include "dolphin/types.h"
+class dBgS_GndChk : public cBgS_GndChk {
+public:
+ /* 8007757C */ dBgS_GndChk();
+ virtual void temp(); // temp to build OK
+ /* 800775F0 */ virtual ~dBgS_GndChk();
+
+private:
+ /* 0x3C */ dBgS_Chk mChk;
+}; // Size = 0x54
+
+class dBgS_LinkGndChk : dBgS_GndChk {};
+
+class dBgS_ObjGndChk : dBgS_GndChk {};
+
#endif /* D_BG_D_BG_S_GND_CHK_H */
diff --git a/include/d/bg/d_bg_s_grp_pass_chk.h b/include/d/bg/d_bg_s_grp_pass_chk.h
index fecd68bcb7..09a3435989 100644
--- a/include/d/bg/d_bg_s_grp_pass_chk.h
+++ b/include/d/bg/d_bg_s_grp_pass_chk.h
@@ -3,4 +3,18 @@
#include "dolphin/types.h"
+class cBgS_GrpPassChk {
+public:
+ ~cBgS_GrpPassChk();
+};
+
+class dBgS_GrpPassChk : public cBgS_GrpPassChk {
+public:
+ /* 80077BA0 */ dBgS_GrpPassChk();
+ /* 80077BC4 */ ~dBgS_GrpPassChk();
+
+private:
+ u32 mGrp;
+};
+
#endif /* D_BG_D_BG_S_GRP_PASS_CHK_H */
diff --git a/include/d/bg/d_bg_s_poly_pass_chk.h b/include/d/bg/d_bg_s_poly_pass_chk.h
index baab841276..dc20a4bed4 100644
--- a/include/d/bg/d_bg_s_poly_pass_chk.h
+++ b/include/d/bg/d_bg_s_poly_pass_chk.h
@@ -3,4 +3,61 @@
#include "dolphin/types.h"
+class cBgS_PolyPassChk {
+public:
+ ~cBgS_PolyPassChk();
+};
+
+class dBgS_PolyPassChk : public cBgS_PolyPassChk {
+public:
+ dBgS_PolyPassChk();
+ ~dBgS_PolyPassChk();
+
+ bool ChkArrow() { return mArrow; }
+ bool ChkBomb() { return mBomb; }
+ bool ChkBoomerang() { return mBoomerang; }
+ bool ChkCam() { return mCamera; }
+ bool ChkHorse() { return mHorse; }
+ bool ChkIronBall() { return mIronBall; }
+ bool ChkLink() { return mLink; }
+ bool ChkNoHorse();
+ bool ChkObj() { return mObject; }
+ bool ChkRope() { return mRope; }
+ bool ChkStatue() { return mStatue; }
+ bool ChkUnderwaterRoof() { return mUnderwaterRoof; }
+
+ void ClrBomb();
+ void ClrCam();
+ void ClrIronBall();
+ void ClrLink();
+ void ClrObj();
+ void ClrStatue();
+
+ void SetArrow();
+ void SetBomb();
+ void SetBoomerang();
+ void SetCam();
+ void SetHorse();
+ void SetIronBall();
+ void SetLink();
+ void SetObj();
+ void SetPassChkInfo(dBgS_PolyPassChk& chk);
+ void SetRope();
+ void SetStatue();
+ void SetUnderwaterRoof();
+
+private:
+ bool mObject;
+ bool mCamera;
+ bool mLink;
+ bool mArrow;
+ bool mBomb;
+ bool mBoomerang;
+ bool mRope;
+ bool mUnderwaterRoof;
+ bool mHorse;
+ bool mStatue;
+ bool mIronBall;
+};
+
#endif /* D_BG_D_BG_S_POLY_PASS_CHK_H */
diff --git a/include/d/bg/d_bg_s_roof_chk.h b/include/d/bg/d_bg_s_roof_chk.h
index 718493410a..86f823faa8 100644
--- a/include/d/bg/d_bg_s_roof_chk.h
+++ b/include/d/bg/d_bg_s_roof_chk.h
@@ -1,6 +1,27 @@
#ifndef D_BG_D_BG_S_ROOF_CHK_H
#define D_BG_D_BG_S_ROOF_CHK_H
+#include "SSystem/SComponent/c_bg_s_chk.h"
+#include "SSystem/SComponent/c_bg_s_poly_info.h"
+#include "SSystem/SComponent/c_xyz.h"
+#include "d/bg/d_bg_s_chk.h"
#include "dolphin/types.h"
+class dBgS_RoofChk {
+public:
+ /* 80078FF4 */ dBgS_RoofChk();
+ /* 80079090 */ ~dBgS_RoofChk();
+ /* 80079124 */ void Init();
+
+private:
+ /* 0x00 */ cBgS_PolyInfo field_0x00;
+ /* 0x10 */ cBgS_Chk field_0x10;
+ /* 0x24 */ dBgS_Chk field_0x24;
+ /* 0x3C */ cXyz m_pos;
+ /* 0x48 */ int field_0x48;
+ /* 0x4C */ float mNowY;
+}; // Size = 0x50
+
+class dBgS_LinkRoofChk : dBgS_RoofChk {};
+
#endif /* D_BG_D_BG_S_ROOF_CHK_H */
diff --git a/include/d/bg/d_bg_s_spl_grp_chk.h b/include/d/bg/d_bg_s_spl_grp_chk.h
index 823e0fa4fc..4fb3645b49 100644
--- a/include/d/bg/d_bg_s_spl_grp_chk.h
+++ b/include/d/bg/d_bg_s_spl_grp_chk.h
@@ -1,6 +1,27 @@
#ifndef D_BG_D_BG_S_SPL_GRP_CHK_H
#define D_BG_D_BG_S_SPL_GRP_CHK_H
+#include "SSystem/SComponent/c_bg_s_chk.h"
+#include "SSystem/SComponent/c_bg_s_poly_info.h"
+#include "SSystem/SComponent/c_xyz.h"
+#include "d/bg/d_bg_s_chk.h"
#include "dolphin/types.h"
+class dBgS_SplGrpChk {
+public:
+ /* 80078B90 */ void Set(cXyz&, f32);
+ /* 80078BB0 */ dBgS_SplGrpChk();
+ /* 80078C78 */ ~dBgS_SplGrpChk();
+ /* 80078D0C */ void Init();
+
+private:
+ /* 0x00 */ cBgS_PolyInfo field_0x00;
+ /* 0x10 */ cBgS_Chk field_0x10;
+ /* 0x24 */ dBgS_Chk field_0x24;
+ /* 0x3C */ cXyz m_ground;
+ /* 0x48 */ float mRoof;
+ /* 0x4C */ float mHeight;
+ /* 0x50 */ int field_0x50;
+}; // Size = 0x54
+
#endif /* D_BG_D_BG_S_SPL_GRP_CHK_H */
diff --git a/include/d/bg/d_bg_s_wtr_chk.h b/include/d/bg/d_bg_s_wtr_chk.h
index 1a17cddbfb..79a6806bab 100644
--- a/include/d/bg/d_bg_s_wtr_chk.h
+++ b/include/d/bg/d_bg_s_wtr_chk.h
@@ -1,6 +1,15 @@
#ifndef D_BG_D_BG_S_WTR_CHK_H
#define D_BG_D_BG_S_WTR_CHK_H
+#include "d/bg/d_bg_s_spl_grp_chk.h"
#include "dolphin/types.h"
+class dBgS_WtrChk {
+public:
+ /* 80079164 */ dBgS_WtrChk();
+
+private:
+ /* 0x00 */ dBgS_SplGrpChk mSplGrp;
+}; // Size = 0x54
+
#endif /* D_BG_D_BG_S_WTR_CHK_H */
diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h
index fbbef58825..3d7329acef 100644
--- a/include/d/bg/d_bg_w.h
+++ b/include/d/bg/d_bg_w.h
@@ -1,6 +1,211 @@
#ifndef D_BG_D_BG_W_H
#define D_BG_D_BG_W_H
+#include "SSystem/SComponent/c_bg_s_gnd_chk.h"
+#include "SSystem/SComponent/c_bg_s_lin_chk.h"
+#include "SSystem/SComponent/c_bg_s_poly_info.h"
+#include "d/bg/d_bg_s_acch.h"
+#include "d/bg/d_bg_s_grp_pass_chk.h"
+#include "d/bg/d_bg_s_poly_pass_chk.h"
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+struct dBgS_CaptPoly {};
+
+struct dBgS_SphChk {};
+
+struct cM3dGTri {
+ /* 8007A344 */ ~cM3dGTri();
+ /* 8026F85C */ void setBg(Vec const*, Vec const*, Vec const*, cM3dGPla const*);
+};
+
+struct cM3dGSph {};
+
+struct cM3dGAab {
+ /* 8026EC88 */ void CrossY(cXyz const*) const;
+ /* 8026ECD0 */ void UnderPlaneYUnder(f32) const;
+ /* 8026ECE4 */ void TopPlaneYUnder(f32) const;
+ /* 8026ECF8 */ void ClearForMinMax();
+ /* 8026ED1C */ void SetMinMax(cXyz const&);
+ /* 8026EDA4 */ void SetMin(cXyz const&);
+ /* 8026EDE4 */ void SetMax(cXyz const&);
+};
+
+struct cBgW_TriElm {
+ /* 800796F8 */ ~cBgW_TriElm();
+ /* 80079754 */ cBgW_TriElm();
+};
+
+struct cBgW_RwgElm {
+ /* 800791C4 */ cBgW_RwgElm();
+ /* 800791D4 */ ~cBgW_RwgElm();
+};
+
+struct cBgW_NodeTree {
+ /* 8007921C */ cBgW_NodeTree();
+ /* 80079238 */ ~cBgW_NodeTree();
+};
+
+struct cBgW_GrpElm {
+ /* 8007A184 */ ~cBgW_GrpElm();
+ /* 8007A1E4 */ cBgW_GrpElm();
+};
+
+struct cBgS_ShdwDraw {};
+
+struct cBgD_t {};
+
+struct cBgW {
+ /* 80079294 */ cBgW();
+ /* 8007933C */ ~cBgW();
+ /* 800793A4 */ void FreeArea();
+ /* 800793C4 */ void GlobalVtx();
+ /* 80079484 */ void SetVtx();
+ /* 80079564 */ void CalcPlane();
+ /* 80079668 */ void SetTri();
+ /* 80079770 */ void BlckConnect(u16*, int*, int);
+ /* 800797BC */ void ClassifyPlane();
+ /* 8007998C */ void MakeBlckTransMinMax(cXyz*, cXyz*);
+ /* 800799E0 */ void MakeBlckMinMax(int, cXyz*, cXyz*);
+ /* 80079A68 */ void MakeBlckBnd(int, cXyz*, cXyz*);
+ /* 80079BDC */ void MakeNodeTreeRp(int);
+ /* 80079CC4 */ void MakeNodeTreeGrpRp(int);
+ /* 80079DF0 */ void MakeNodeTree();
+ /* 80079EEC */ void ChkMemoryError();
+ /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
+ /* 8007A200 */ void RwgLineCheck(u16, cBgS_LinChk*);
+ /* 8007A3A0 */ void LineCheckRp(cBgS_LinChk*, int);
+ /* 8007A52C */ void LineCheckGrpRp(cBgS_LinChk*, int, int);
+ /* 8007A658 */ void LineCheck(cBgS_LinChk*);
+ /* 8007A680 */ void RwgGroundCheckCommon(f32, u16, cBgS_GndChk*);
+ /* 8007A774 */ void RwgGroundCheckGnd(u16, cBgS_GndChk*);
+ /* 8007A824 */ void RwgGroundCheckWall(u16, cBgS_GndChk*);
+ /* 8007A8F4 */ void GroundCrossRp(cBgS_GndChk*, int);
+ /* 8007AA50 */ void GroundCrossGrpRp(cBgS_GndChk*, int, int);
+ /* 8007AB9C */ void GroundCross(cBgS_GndChk*);
+ /* 8007ABC4 */ void CopyOldMtx();
+ /* 8007AC10 */ void Move();
+ /* 8007ADF0 */ void RwgShdwDraw(int, cBgS_ShdwDraw*);
+ /* 8007AEA4 */ void ShdwDrawRp(cBgS_ShdwDraw*, int);
+ /* 8007AFC0 */ void ShdwDrawGrpRp(cBgS_ShdwDraw*, int);
+ /* 8007B084 */ void ShdwDraw(cBgS_ShdwDraw*);
+ /* 8007B0A8 */ bool ChkPolyThrough(int, cBgS_PolyPassChk*);
+ /* 8007B0B0 */ void ChkShdwDrawThrough(int, cBgS_PolyPassChk*);
+ /* 8007B0DC */ bool ChkGrpThrough(int, cBgS_GrpPassChk*, int);
+ /* 8007B0E4 */ void GetGrpRoomIndex(cBgS_PolyInfo const&) const;
+ /* 8007B164 */ void GetBnd() const;
+ /* 8007B17C */ void GetTrans(cXyz*) const;
+ /* 8007B1B4 */ void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const;
+ /* 8007B240 */ void GetTopUnder(f32*, f32*) const;
+ /* 8007B270 */ void GetTriPla(cBgS_PolyInfo const&) const;
+ /* 8007B2B0 */ void GetGrpInf(cBgS_PolyInfo const&) const;
+ /* 8007B2F4 */ void GetPolyInfId(int) const;
+ /* 8007B30C */ void GetPolyInf0(int, u32, u32) const;
+ /* 8007B360 */ void GetMaskPolyInf0_NoShift(int, u32) const;
+ /* 8007B654 */ void GetPolyInf1(int, u32, u32) const;
+ /* 8007B78C */ void GetMaskPolyInf1_NoShift(int, u32) const;
+ /* 8007B824 */ void GetPolyInf2(int, u32, u32) const;
+ /* 8007B930 */ void GetTriGrp(int) const;
+ /* 8007B948 */ void ChkNotReady() const;
+ /* 8007B958 */ void ChkLock() const;
+ /* 8007B964 */ void ChkMoveBg() const;
+};
+
+#pragma pack(push, 1)
+class dBgW_Base {
+public:
+ enum PushPullLabel {};
+
+ /* 8007E5A8 */ dBgW_Base();
+ /* 8007E640 */ ~dBgW_Base();
+ /* 8007E6D8 */ void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*);
+ /* 8007E6DC */ void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&);
+ /* 80074AB4 */ void SetOldShapeAngleY(s16);
+ /* 8007E6E0 */ void CalcDiffShapeAngleY(s16);
+
+private:
+ u16 field_0x0;
+ u8 field_0x2[2];
+ void* field_0x4;
+ u8 field_0x8;
+ u8 field_0x9;
+ u8 field_0xa;
+ u8 field_0xb;
+ s16 field_0xc;
+ s16 field_0xe;
+};
+#pragma pack(pop)
+
+class dBgW {
+public:
+ /* 8007B3AC */ void GetExitId(cBgS_PolyInfo const&);
+ /* 8007B3D8 */ void GetPolyColor(cBgS_PolyInfo const&);
+ /* 8007B404 */ void GetHorseNoEntry(cBgS_PolyInfo const&);
+ /* 8007B430 */ void GetSpecialCode(cBgS_PolyInfo const&);
+ /* 8007B460 */ void GetSpecialCode(int);
+ /* 8007B488 */ void GetMagnetCode(cBgS_PolyInfo const&);
+ /* 8007B4B4 */ void GetMonkeyBarsCode(cBgS_PolyInfo const&);
+ /* 8007B4E0 */ void GetPolyObjThrough(int);
+ /* 8007B504 */ void GetPolyCamThrough(int);
+ /* 8007B52C */ void GetPolyLinkThrough(int);
+ /* 8007B550 */ void GetPolyArrowThrough(int);
+ /* 8007B574 */ void GetPolyHSStick(int);
+ /* 8007B598 */ void GetPolyBoomerangThrough(int);
+ /* 8007B5BC */ void GetPolyRopeThrough(int);
+ /* 8007B5E0 */ void GetPolyBombThrough(int);
+ /* 8007B604 */ void GetShdwThrough(int);
+ /* 8007B630 */ void GetUnderwaterRoofCode(int);
+ /* 8007B6AC */ void GetLinkNo(cBgS_PolyInfo const&);
+ /* 8007B6D8 */ void GetWallCode(cBgS_PolyInfo const&);
+ /* 8007B704 */ void GetPolyAtt0(cBgS_PolyInfo const&);
+ /* 8007B734 */ void GetPolyAtt1(cBgS_PolyInfo const&);
+ /* 8007B760 */ void GetGroundCode(cBgS_PolyInfo const&);
+ /* 8007B7DC */ void GetIronBallThrough(int);
+ /* 8007B800 */ void GetAttackThrough(int);
+ /* 8007B87C */ void GetCamMoveBG(cBgS_PolyInfo const&);
+ /* 8007B8A8 */ void GetRoomCamId(cBgS_PolyInfo const&);
+ /* 8007B8D8 */ void GetRoomPathId(cBgS_PolyInfo const&);
+ /* 8007B904 */ void GetRoomPathPntNo(cBgS_PolyInfo const&);
+ /* 8007B970 */ dBgW();
+ /* 8007B9C0 */ void Move();
+ /* 8007B9EC */ void positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz*, f32);
+ /* 8007BA40 */ void RwgWallCorrect(dBgS_Acch*, u16);
+ /* 8007C234 */ void WallCorrectRp(dBgS_Acch*, int);
+ /* 8007C360 */ void WallCorrectGrpRp(dBgS_Acch*, int, int);
+ /* 8007C484 */ void WallCorrect(dBgS_Acch*);
+ /* 8007C4AC */ void RwgWallCorrectSort(dBgS_Acch*, u16);
+ /* 8007C714 */ void WallCorrectRpSort(dBgS_Acch*, int);
+ /* 8007C808 */ void WallCorrectGrpRpSort(dBgS_Acch*, int, int);
+ /* 8007C910 */ void WallCorrectSort(dBgS_Acch*);
+ /* 8007D0DC */ void RwgRoofChk(u16, dBgS_RoofChk*);
+ /* 8007D208 */ void RoofChkRp(dBgS_RoofChk*, int);
+ /* 8007D330 */ void RoofChkGrpRp(dBgS_RoofChk*, int, int);
+ /* 8007D470 */ void RoofChk(dBgS_RoofChk*);
+ /* 8007D498 */ void RwgSplGrpChk(u16, dBgS_SplGrpChk*);
+ /* 8007D5C4 */ void SplGrpChkRp(dBgS_SplGrpChk*, int);
+ /* 8007D6F0 */ void SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int);
+ /* 8007D830 */ void SplGrpChk(dBgS_SplGrpChk*);
+ /* 8007D858 */ void RwgCaptPoly(int, dBgS_CaptPoly&);
+ /* 8007D8E8 */ void CaptPolyRp(dBgS_CaptPoly&, int);
+ /* 8007DA04 */ void CaptPolyGrpRp(dBgS_CaptPoly&, int, int);
+ /* 8007DAF8 */ void CaptPoly(dBgS_CaptPoly&);
+ /* 8007DB20 */ void RwgSphChk(u16, dBgS_SphChk*, void*);
+ /* 8007DC70 */ void SphChkRp(dBgS_SphChk*, void*, int);
+ /* 8007DDE0 */ void SphChkGrpRp(dBgS_SphChk*, void*, int, int);
+ /* 8007DF00 */ void SphChk(dBgS_SphChk*, void*);
+ /* 8007DF28 */ void GetPolyGrpRoomInfId(cBgS_PolyInfo const&);
+ /* 8007DF58 */ void GetGrpSoundId(cBgS_PolyInfo const&);
+ /* 8007DF88 */ void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*);
+ /* 8007DFC4 */ void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*);
+ /* 8007E000 */ void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*);
+ /* 8007E02C */ void ChkPolyThrough(int, cBgS_PolyPassChk*);
+ /* 8007E360 */ void ChkShdwDrawThrough(int, cBgS_PolyPassChk*);
+ /* 8007E3D8 */ void ChkGrpThrough(int, cBgS_GrpPassChk*, int);
+ /* 8007E444 */ void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*);
+ /* 8007E474 */ void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&);
+ /* 8007E4A4 */ void OffMoveFlag();
+ /* 8007E4B4 */ void ChkMoveFlag() const;
+ /* 8007E548 */ ~dBgW();
+};
#endif /* D_BG_D_BG_W_H */
diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h
index 5450b06eca..f861f758d8 100644
--- a/include/d/cc/d_cc_d.h
+++ b/include/d/cc/d_cc_d.h
@@ -1,6 +1,191 @@
#ifndef D_CC_D_CC_D_H
#define D_CC_D_CC_D_H
+#include "SSystem/SComponent/c_cc_d.h"
#include "dolphin/types.h"
+struct dCcD_SrcTri {};
+
+struct dCcD_SrcSph {};
+
+struct dCcD_SrcGObjTg {};
+
+struct dCcD_SrcGObjInf {};
+
+struct dCcD_SrcGObjAt {};
+
+struct dCcD_SrcGAtTgCoCommonBase {};
+
+struct dCcD_SrcCyl {};
+
+struct dCcD_SrcCps {};
+
+class dCcD_GStts : cCcD_GStts {
+public:
+ /* 80083760 */ dCcD_GStts();
+ /* 800837F8 */ void Ct();
+ /* 80083830 */ void Move();
+ /* 8008523C */ ~dCcD_GStts();
+
+private:
+ /* 0x04 */ u8 mAt;
+ /* 0x05 */ u8 mTg;
+ /* 0x06 */ u8 mRoomId;
+ /* 0x08 */ u16 field_0x08;
+ /* 0x0C */ int mAtApid;
+ /* 0x10 */ int mAtOldApid;
+ /* 0x14 */ int mTgApid;
+ /* 0x18 */ int mTgOldApid;
+ /* 0x1C */ int field_0x1C;
+}; // Size = 0x20
+
+class dCcD_Stts : cCcD_Stts {
+public:
+ /* 80083850 */ void GetGStts();
+ /* 80083860 */ void Init(int, int, fopAc_ac_c*);
+ /* 800838F4 */ void Ct();
+ /* 80083928 */ void ClrAt();
+ /* 80083934 */ void ClrTg();
+ /* 800851AC */ ~dCcD_Stts();
+
+private:
+ /* 0x1C */ dCcD_GStts mGStts;
+}; // Size = 0x3C
+
+class dCcD_GAtTgCoCommonBase {
+public:
+ /* 8008364C */ void ClrActorInfo();
+ /* 80083660 */ void ct();
+ /* 80083678 */ void SetHitApid(unsigned int);
+ /* 80083688 */ void GetAc();
+ /* 80083704 */ void Set(dCcD_SrcGAtTgCoCommonBase const&);
+ /* 80083718 */ void SetEffCounterTimer();
+ /* 80083724 */ void SubtractEffCounter();
+ /* 80083748 */ void ChkEffCounter();
+ /* 80083CA0 */ ~dCcD_GAtTgCoCommonBase();
+
+private:
+ /* 0x00 */ void* mBase; // type dCcD_SrcGAtTgCoCommonBase*
+ /* 0x04 */ u32 mRPrm;
+ /* 0x08 */ u32 field_0x08;
+ /* 0x0C */ u32 field_0x0C;
+ /* 0x10 */ fopAc_ac_c* mAc;
+ /* 0x14 */ s8 mEffCounter;
+ /* 0x15 */ u8 field_0x15[3];
+ /* 0x18 */ void* vtable;
+}; // Size = 0x1C
+
+class dCcD_GObjAt : dCcD_GAtTgCoCommonBase {
+public:
+ /* 80083944 */ void Set(dCcD_SrcGObjAt const&);
+ /* 80083C44 */ ~dCcD_GObjAt();
+
+private:
+ /* 0x1C */ u8 mSe;
+ /* 0x1D */ u8 mMtrl;
+ /* 0x1E */ u8 mHitMark;
+ /* 0x1F */ u8 mSpl;
+ /* 0x20 */ cXyz mHitPos;
+ /* 0x2C */ cXyz mVec;
+ /* 0x38 */ cXyz mRVec;
+}; // Size = 0x44
+class dCcD_GObjTg : dCcD_GAtTgCoCommonBase {
+public:
+ /* 800839A0 */ void Set(dCcD_SrcGObjTg const&);
+ /* 80083BE8 */ ~dCcD_GObjTg();
+
+private:
+ /* 0x1C */ u8 mSe;
+ /* 0x1D */ u8 mMtrl;
+ /* 0x1E */ u8 mHitMark;
+ /* 0x1F */ u8 mSpl;
+ /* 0x20 */ cXyz mVec;
+ /* 0x2C */ cXyz mRVec;
+ /* 0x38 */ cXyz mHitPos;
+ /* 0x44 */ s16* mShieldFrontRangeYAngle;
+ /* 0x48 */ s16 mShieldRange;
+}; // Size = 0x4A ?
+class dCcD_GObjCo : dCcD_GAtTgCoCommonBase {
+public:
+ /* 80083B8C */ ~dCcD_GObjCo();
+
+private:
+}; // Size = 0x1C ?
+
+class dCcD_GObjInf : cCcD_GObjInf {
+public:
+ /* 80083A28 */ dCcD_GObjInf();
+ /* 800840E4 */ ~dCcD_GObjInf();
+ /* 80084268 */ void GetGObjInf();
+ /* 8008426C */ void ClrAtHit();
+ /* 800842C0 */ void ChkAtHit();
+ /* 80084318 */ void ResetAtHit();
+ /* 80084358 */ void GetAtHitObj();
+ /* 800843A8 */ void GetAtHitGObj();
+ /* 800843DC */ void ChkAtNoGuard();
+ /* 800843FC */ void ClrTgHit();
+ /* 80084460 */ void ChkTgHit();
+ /* 800844B8 */ void ResetTgHit();
+ /* 800844F8 */ void GetTgHitObj();
+ /* 80084548 */ void GetTgHitGObj();
+ /* 8008457C */ void GetTgHitObjSe();
+ /* 800845B0 */ void getHitSeID(u8, int);
+ /* 8008460C */ void ClrCoHit();
+ /* 80084658 */ void ChkCoHit();
+ /* 800846B0 */ void ResetCoHit();
+ /* 800846F0 */ void GetCoHitObj();
+ /* 80084740 */ void Set(dCcD_SrcGObjInf const&);
+
+ static u8 const m_hitSeID[96];
+
+private:
+ /* 0x058 */ dCcD_GObjAt mGObjAt;
+ /* 0x09C */ dCcD_GObjTg mGObjTg;
+ /* 0x0E8 */ dCcD_GObjCo mGObjCo;
+}; // Size = 0x104
+
+class dCcD_Cyl : dCcD_GObjInf {
+public:
+ /* 800848B4 */ void Set(dCcD_SrcCyl const&);
+ /* 800848F8 */ void GetShapeAttr();
+ /* 80084908 */ void StartCAt(cXyz&);
+ /* 80084954 */ void MoveCAt(cXyz&);
+ /* 800849C4 */ void MoveCTg(cXyz&);
+ /* 80084D60 */ ~dCcD_Cyl();
+
+private:
+ /* 0x104 */ cCcD_CylAttr mCylAttr;
+}; // Size = 0x13C
+
+class dCcD_Sph : dCcD_GObjInf {
+public:
+ /* 80084A34 */ void Set(dCcD_SrcSph const&);
+ /* 80084A78 */ void StartCAt(cXyz&);
+ /* 80084AC4 */ void MoveCAt(cXyz&);
+ /* 80084B34 */ void GetShapeAttr();
+ /* 80084BF4 */ ~dCcD_Sph();
+
+private:
+ /* 0x104 */ cCcD_SphAttr mSphAttr;
+}; // Size = 0x138
+
+class dCcD_Cps : dCcD_GObjInf {
+public:
+ /* 800847D0 */ void Set(dCcD_SrcCps const&);
+ /* 80084814 */ void GetShapeAttr();
+ /* 80084824 */ void CalcAtVec();
+ /* 80084854 */ void CalcTgVec();
+ /* 8008506C */ ~dCcD_Cps();
+
+private:
+ /* 0x104 */ cCcD_CpsAttr mCpsAttr;
+}; // Size = 0x144
+
+class dCcD_Tri {
+public:
+ /* 80084884 */ void Set(dCcD_SrcTri const&);
+ /* 800848A4 */ void GetShapeAttr();
+ /* 80084EF4 */ ~dCcD_Tri();
+};
+
#endif /* D_CC_D_CC_D_H */
diff --git a/include/d/cc/d_cc_mass_s.h b/include/d/cc/d_cc_mass_s.h
index cf8748a101..9a654a13be 100644
--- a/include/d/cc/d_cc_mass_s.h
+++ b/include/d/cc/d_cc_mass_s.h
@@ -1,6 +1,41 @@
#ifndef D_CC_D_CC_MASS_S_H
#define D_CC_D_CC_MASS_S_H
+#include "SSystem/SComponent/c_cc_d.h"
#include "dolphin/types.h"
+class dCcMassS_Obj {
+public:
+private:
+ u8 field_0x0[12];
+ cCcD_DivideInfo cccd_divideinfo;
+ void* vtable;
+};
+
+class dCcMassS_Mng {
+public:
+ dCcMassS_Mng(void);
+
+private:
+ /* 0x0000 */ cCcD_DivideArea cccd_dividearea;
+ /* 0x0020 */ u8 field_0x20[36];
+ /* 0x0044 */ dCcMassS_Obj dccmasss_obj;
+ /* 0x0064 */ u8 field_0x64[292];
+ /* 0x0188 */ dCcMassS_Obj dccmasss_obj2;
+ /* 0x01A8 */ u8 field_0x1a8[32];
+ /* 0x01C8 */ cCcD_CylAttr cccd_cylattr;
+ /* 0x0200 */ u8 field_0x200[2];
+ /* 0x0202 */ u8 field_0x202;
+ /* 0x0203 */ u8 field_0x203;
+ /* 0x0204 */ float cam_x_pos;
+ /* 0x0208 */ float cam_y_pos;
+ /* 0x020C */ float cam_z_pos;
+ /* 0x0210 */ float field_0x210;
+ /* 0x0214 */ float field_0x214;
+ /* 0x0218 */ float field_0x218;
+ /* 0x021C */ u8 field_0x21c[8];
+ /* 0x0224 */ cCcD_CpsAttr cccd_cpsattr;
+ /* 0x0288 */ cCcD_DivideInfo cccd_divideinfo;
+};
+
#endif /* D_CC_D_CC_MASS_S_H */
diff --git a/include/d/cc/d_cc_s.h b/include/d/cc/d_cc_s.h
index 9fb1a51100..66999bff2e 100644
--- a/include/d/cc/d_cc_s.h
+++ b/include/d/cc/d_cc_s.h
@@ -1,6 +1,50 @@
#ifndef D_CC_D_CC_S_H
#define D_CC_D_CC_S_H
+#include "d/cc/d_cc_d.h"
+#include "d/cc/d_cc_mass_s.h"
#include "dolphin/types.h"
+class dCcS {
+public:
+ /* 8002FF40 */ ~dCcS();
+ /* 80085ED4 */ void Ct();
+ /* 80085F08 */ void Dt();
+ /* 80085F28 */ void ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*, int, cXyz const*);
+ /* 800860F8 */ void ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cXyz const*);
+ /* 800861B0 */ void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*);
+ /* 800861B4 */ void ChkAtTgHitAfterCross(bool, bool, cCcD_GObjInf const*, cCcD_GObjInf const*,
+ cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
+ /* 80086240 */ void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*,
+ cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
+ /* 80086360 */ void GetRank(u8);
+ /* 80086404 */ bool ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*);
+ /* 8008640C */ void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32);
+ /* 80086754 */ void CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*);
+ /* 8008685C */ void ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*,
+ dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*,
+ dCcD_GStts*, cXyz*, bool);
+ /* 80086AC0 */ void SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*,
+ cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*,
+ cCcD_GStts*, cXyz*);
+ /* 80086D8C */ void ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*);
+ /* 80086FBC */ void chkCameraPoint(cXyz const&, cCcD_ShapeAttr::Shape*, fopAc_ac_c*,
+ fopAc_ac_c*);
+ /* 800872A8 */ void MoveAfterCheck();
+ /* 800872AC */ void DrawAfter();
+ /* 800872B0 */ void Move();
+ /* 800872D0 */ void Draw();
+ /* 8008730C */ void MassClear();
+ /* 80087330 */ void ChkAtTgMtrlHit(u8, u8);
+ /* 8008734C */ void ChkNoHitGAtTg(cCcD_GObjInf const*, cCcD_GObjInf const*, cCcD_GStts*,
+ cCcD_GStts*);
+
+ static u8 m_mtrl_hit_tbl[64];
+
+private:
+ /* 0x0000 */ cCcS cccs;
+ /* 0x2834 */ u8 field_0x2834[0x18];
+ /* 0x284C */ dCcMassS_Mng dccmass_mng;
+};
+
#endif /* D_CC_D_CC_S_H */
diff --git a/include/d/d_attention.h b/include/d/d_attention.h
index d403982af7..2690ea3a7e 100644
--- a/include/d/d_attention.h
+++ b/include/d/d_attention.h
@@ -1,6 +1,244 @@
#ifndef D_D_ATTENTION_H
#define D_D_ATTENTION_H
+#include "SSystem/SComponent/c_angle.h"
+#include "d/a/d_a_player.h"
+#include "d/save/d_save.h"
#include "dolphin/types.h"
+#include "m_Do/m_Do_ext.h"
+
+struct J3DTransformInfo {};
+
+class dAttHint_c {
+public:
+ /* 800738B4 */ void getPId(void*);
+ /* 800738CC */ void convPId(unsigned int);
+ /* 800738FC */ void request(fopAc_ac_c*, int);
+ /* 80073958 */ void init();
+ /* 80073970 */ void proc();
+
+private:
+ u32 field_0x0;
+ u32 field_0x4;
+ u32 field_0x8;
+};
+
+class dAttCatch_c {
+public:
+ /* 8007398C */ void convPId(unsigned int);
+ /* 800739BC */ void init();
+ /* 800739DC */ void proc();
+ /* 80073A08 */ void request(fopAc_ac_c*, u8, f32, f32, f32, s16, int);
+
+private:
+ void* field_0x0;
+ u32 field_0x4;
+ float field_0x8;
+ u8 field_0xc;
+ u8 field_0xd;
+ u8 field_0xe;
+ u8 field_0xf;
+ void* field_0x10;
+};
+
+class dAttParam_c {
+public:
+ /* 80070038 */ dAttParam_c(s32);
+ /* 80070110 */ ~dAttParam_c();
+
+private:
+ u8 field_0x0;
+ u8 field_0x1;
+ u8 field_0x2;
+ u8 field_0x3;
+ u8 field_0x4;
+ u8 field_0x5;
+ u8 field_0x6;
+ u8 field_0x7;
+ u8 field_0x8;
+ u8 field_0x9;
+ u8 field_0xa;
+ u8 field_0xb;
+ u8 field_0xc;
+ u8 field_0xd;
+ u8 field_0xe;
+ u8 field_0xf;
+ u8 field_0x10;
+ u8 field_0x11;
+ u8 field_0x12;
+};
+
+class dAttLook_c {
+public:
+ /* 80073CA4 */ void convPId(unsigned int);
+ /* 80073CD4 */ void init();
+ /* 80073CEC */ void proc();
+ /* 80073D08 */ void request(fopAc_ac_c*, f32, f32, f32, s16, int);
+
+private:
+ u32 field_0x0;
+ u32 field_0x4;
+ float field_0x8;
+};
+
+#pragma pack(push, 1)
+class dAttList_c {
+public:
+ /* 800304D0 */ ~dAttList_c();
+ /* 8003050C */ dAttList_c();
+ /* 80073864 */ void getActor();
+ /* 80073898 */ void setActor(fopAc_ac_c*);
+
+private:
+ u8 field_0x0[8];
+ cSAngle angle;
+ u8 field_0xa[10];
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class dAttDraw_c {
+public:
+ /* 8003054C */ ~dAttDraw_c();
+ /* 800307F0 */ dAttDraw_c();
+ /* 80072DD8 */ void setAnm(u8, f32);
+ /* 80072FE8 */ void setAlphaAnm(u8, u8);
+ /* 80073004 */ void alphaAnm();
+ /* 800732B0 */ void draw(cXyz&, f32 (*)[4]);
+
+ u8 field_0x0;
+ u8 field_0x1;
+ u8 field_0x2;
+ u8 field_0x3;
+ u8 field_0x4;
+ u8 field_0x5;
+ u8 field_0x6;
+ u8 field_0x7;
+ /* 0x008 */ mDoExt_bckAnm bckAnm[2];
+ /* 0x040 */ mDoExt_bpkAnm bpkAnm[2];
+ /* 0x070 */ mDoExt_brkAnm brkAnm[2];
+ /* 0x0A0 */ mDoExt_brkAnm brkAnm2[2];
+ /* 0x0D0 */ mDoExt_btkAnm btkAnm[2];
+ /* 0x100 */ mDoExt_bckAnm bckAnm2;
+ /* 0x11C */ mDoExt_bpkAnm bpkAnm2;
+ /* 0x134 */ mDoExt_brkAnm brkAnm3;
+ /* 0x14C */ mDoExt_btkAnm btkAnm2;
+ /* 0x164 */ u8 field_0x164[0xC];
+ /* 0x170 */ u8 field_0x170;
+ /* 0x171 */ u8 field_0x171;
+ /* 0x172 */ u8 field_0x172;
+ /* 0x173 */ u8 field_0x173;
+ /* 0x174 */ u8 field_0x174;
+ /* 0x175 */ u8 field_0x175;
+};
+#pragma pack(pop)
+
+class dAttDraw_CallBack_c {
+public:
+ /* 80070178 */ void execute(u16, J3DTransformInfo*);
+
+ mDoExt_McaMorfCallBack1_c mDoExt_McaMorfCallback;
+};
+
+class dAttention_c {
+public:
+ /* 80070198 */ dAttention_c(fopAc_ac_c*, u32);
+ /* 80070774 */ ~dAttention_c();
+ /* 80070844 */ void GetLockonList(s32);
+ /* 80070880 */ void getActionBtnB();
+ /* 80070974 */ void getActionBtnXY();
+ /* 80070A70 */ void chkAttMask(u32, u32);
+ /* 80070E90 */ void calcWeight(int, fopAc_ac_c*, f32, s16, s16, u32*);
+ /* 800710C0 */ void setList(int, fopAc_ac_c*, f32, f32, cSAngle, u32);
+ /* 80071240 */ void initList(u32);
+ /* 800713CC */ void makeList();
+ /* 80071424 */ void setOwnerAttentionPos();
+ /* 80071488 */ void SelectAttention(fopAc_ac_c*);
+ /* 800716B8 */ void sortList();
+ /* 800718A4 */ void stockAttention();
+ /* 80071960 */ void nextAttention();
+ /* 80071A68 */ void freeAttention();
+ /* 80071A98 */ void chaseAttention();
+ /* 80071CC0 */ void EnemyDistance(fopAc_ac_c*);
+ /* 80071DEC */ void runSoundProc();
+ /* 80071E84 */ void runDrawProc();
+ /* 800720F4 */ void runDebugDisp();
+ /* 800720F8 */ void checkButton();
+ /* 800722A0 */ void triggerProc();
+ /* 800722EC */ void lostCheck();
+ /* 80072344 */ void judgementStatus4Hold();
+ /* 800725F0 */ void judgementStatus4Switch();
+ /* 80072924 */ void Run();
+ /* 80072BD4 */ void Draw();
+ /* 80072D80 */ void lockSoundStart(u32);
+ /* 8007353C */ void LockonTarget(s32);
+ /* 800735DC */ void LockonReleaseDistanse();
+ /* 800736CC */ void LockonTargetPId(s32);
+ /* 80073734 */ void ActionTarget(s32);
+ /* 8007378C */ void CheckObjectTarget(s32);
+ /* 800737E4 */ void LockonTruth();
+ /* 80073838 */ void checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32);
+
+ static u8 loc_type_tbl[12];
+ static u8 act_type_tbl[20];
+ static u8 dist_table[6552];
+ static u32 loc_type_num;
+ static u32 act_type_num;
+ static u32 chk_type_tbl;
+ static u32 chk_type_num;
+
+private:
+ u8 field_0x0[4];
+ u32 field_0x4;
+ dAttDraw_CallBack_c dattdraw_callback;
+ u32 field_0xc;
+ u32 field_0x10;
+ u8 field_0x14[8];
+ cXyz field_0x1c;
+ /* 0x028 */ dAttDraw_c attention_draw[2];
+ int field_0x318;
+ cXyz field_0x31c;
+ u8 field_0x328[12];
+ u32 field_0x334;
+ /* 0x0338 */ dAttList_c attention_list1[8];
+ int* field_0x3d8;
+ int* field_0x3dc;
+ /* 0x03E0 */ dAttList_c attention_list2[4];
+ int* field_0x430;
+ int field_0x434;
+ /* 0x0438 */ dAttList_c attention_list3[4];
+ int* field_0x488;
+ int field_0x48c;
+ dAttHint_c attention_hint;
+ dAttCatch_c attention_catch;
+ u8 field_0x4b0[4];
+ dAttLook_c attention_look;
+ u8 field_0x4c0;
+ u8 field_0x4c1;
+ u8 field_0x4c2;
+ u8 field_0x4c3;
+ int* field_0x4c4;
+ u8 field_0x4c8;
+ u8 field_0x4c9;
+ u8 field_0x4ca;
+ u8 field_0x4cb;
+ u8 field_0x4cc;
+ u8 field_0x4cd;
+ u8 field_0x4ce;
+ u8 field_0x4cf;
+ /* 0x04D0 */ dAttParam_c attention_param;
+ u8 field_0x4e3;
+ u8 field_0x4e4;
+ u8 field_0x4e5;
+ int* field_0x4e6;
+ u8 field_0x4ea;
+ u8 field_0x4eb;
+ u8 field_0x4ec;
+ u8 field_0x4ed;
+ u8 field_0x4ee;
+ u8 field_0x4ef;
+ u8 field_0x4f0[0x18];
+ /* 0x0508 */ void* vtable;
+};
#endif /* D_D_ATTENTION_H */
diff --git a/include/d/d_stage.h b/include/d/d_stage.h
index ba38abe7d1..cdf860e997 100644
--- a/include/d/d_stage.h
+++ b/include/d/d_stage.h
@@ -1,6 +1,441 @@
#ifndef D_D_STAGE_H
#define D_D_STAGE_H
+#include "d/save/d_save.h"
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+
+struct stage_vrboxcol_info_class {};
+
+struct stage_vrbox_info_class {};
+
+struct stage_tresure_class {};
+
+struct stage_tgsc_data_class {
+ /* 8002847C */ ~stage_tgsc_data_class();
+ /* 800284B8 */ stage_tgsc_data_class();
+};
+
+struct stage_tgsc_class {};
+
+struct stage_stag_info_class {};
+
+struct stage_scls_info_dummy_class {};
+
+struct stage_pure_lightvec_info_class {};
+
+struct stage_pselect_info_class {};
+
+struct stage_plight_info_class {};
+
+struct stage_palette_info_class {};
+
+struct stage_map_info_dummy_class {};
+
+struct stage_map_info_class {};
+
+struct stage_envr_info_class {};
+
+struct stage_camera_class {};
+
+struct stage_camera2_data_class {};
+
+struct stage_arrow_class {};
+
+struct stage_actor_data_class {};
+
+struct stage_actor_class {};
+
+struct roomRead_class {};
+
+struct dStage_FileList2_dt_c {};
+
+struct dStage_MemoryMap_c {};
+
+struct dStage_dPath_c {};
+
+struct dStage_Multi_c {};
+
+struct dStage_SoundInfo_c {};
+
+struct dStage_FileList_dt_c {};
+
+struct dStage_dPnt_c {};
+
+struct dStage_FloorInfo_c {};
+
+struct dStage_Lbnk_c {};
+
+struct dStage_Elst_c {};
+
+struct dStage_MemoryConfig_c {};
+
+struct dStage_DMap_c {};
+
+struct dStage_MapEventInfo_c {};
+
+class dStage_stageDt_c {
+public:
+ stage_camera_class* getCamera(void) const;
+ stage_arrow_class* getArrow(void) const;
+ stage_actor_class* getPlayer(void) const;
+ roomRead_class* getRoom(void) const;
+ stage_map_info_class* getMapInfo(void) const;
+ stage_map_info_dummy_class* getMapInfoBase(void) const;
+ stage_palette_info_class* getPaletteInfo(void) const;
+ stage_pselect_info_class* getPselectInfo(void) const;
+ stage_envr_info_class* getEnvrInfo(void) const;
+ stage_vrbox_info_class* getVrboxInfo(void) const;
+ stage_vrboxcol_info_class* getVrboxcolInfo(void) const;
+ dStage_FileList2_dt_c* getFileList2Info(void) const;
+ dStage_FileList_dt_c* getFileListInfo(void) const;
+ stage_plight_info_class* getPlightInfo(void) const;
+ dStage_MapEventInfo_c* getMapEventInfo(void) const;
+ int getPaletteNumInfo(void) const;
+ int getPselectNumInfo(void) const;
+ int getEnvrNumInfo(void) const;
+ int getVrboxNumInfo(void) const;
+ int getVrboxcolNumInfo(void) const;
+ int getPlightNumInfo(void) const;
+ u16 getPlayerNum(void) const;
+ int getMapInfo2(int) const;
+ stage_stag_info_class* getStagInfo(void) const;
+ stage_scls_info_dummy_class* getSclsInfo(void) const;
+ dStage_Lbnk_c* getLbnk(void) const;
+ dStage_dPnt_c* getPntInf(void) const;
+ dStage_dPath_c* getPathInf(void) const;
+ dStage_dPnt_c* getPnt2Inf(void) const;
+ dStage_dPath_c* getPath2Inf(void) const;
+ dStage_SoundInfo_c* getSoundInf(void) const;
+ dStage_SoundInfo_c* getSoundInfCL(void) const;
+ dStage_FloorInfo_c* getFloorInfo(void) const;
+ dStage_MemoryConfig_c* getMemoryConfig(void) const;
+ dStage_MemoryMap_c* getMemoryMap(void) const;
+ dStage_Multi_c* getMulti(void) const;
+ dStage_Multi_c* getOldMulti(void) const;
+ stage_tresure_class* getTresure(void) const;
+ dStage_DMap_c* getDMap(void) const;
+ stage_tgsc_class* getDrTg(void) const;
+ stage_tgsc_class* getDoor(void) const;
+ dStage_Elst_c* getElst(void);
+ stage_pure_lightvec_info_class* getLightVecInfo(void) const;
+ int getLightVecInfoNum(void) const;
+ int getMapPath(void);
+
+ void init(void);
+ void resetOldMulti(void);
+
+ void setCamera(stage_camera_class*);
+ void setArrow(stage_arrow_class*);
+ void setPlayer(stage_actor_class*);
+ void setRoom(roomRead_class*);
+ void setMapInfo(stage_map_info_class*);
+ void setMapInfoBase(stage_map_info_dummy_class*);
+ void setPaletteInfo(stage_palette_info_class*);
+ void setPselectInfo(stage_pselect_info_class*);
+ void setEnvrInfo(stage_envr_info_class*);
+ void setVrboxInfo(stage_vrbox_info_class*);
+ void setVrboxcolInfo(stage_vrboxcol_info_class*);
+ void setFileList2Info(dStage_FileList2_dt_c*);
+ void setFileListInfo(dStage_FileList_dt_c*);
+ void setPlightInfo(stage_plight_info_class*);
+ void setMapEventInfo(dStage_MapEventInfo_c*);
+ void setPaletteNumInfo(int);
+ void setPselectNumInfo(int);
+ void setEnvrNumInfo(int);
+ void setVrboxNumInfo(int);
+ void setVrboxcolNumInfo(int);
+ void setPlightNumInfo(int);
+ void setPlayerNum(u16);
+ void setStagInfo(stage_stag_info_class*);
+ void setSclsInfo(stage_scls_info_dummy_class*);
+ void setLbnk(dStage_Lbnk_c*);
+ void setPntInfo(dStage_dPnt_c*);
+ void setPathInfo(dStage_dPath_c*);
+ void setPnt2Info(dStage_dPnt_c*);
+ void setPath2Info(dStage_dPath_c*);
+ void setSoundInf(dStage_SoundInfo_c*);
+ void setSoundInfCL(dStage_SoundInfo_c*);
+ void setFloorInfo(dStage_FloorInfo_c*);
+ void setMemoryConfig(dStage_MemoryConfig_c*);
+ void setMemoryMap(dStage_MemoryMap_c*);
+ void setMulti(dStage_Multi_c*);
+ void setOldMulti(void);
+ void setTreasure(stage_tresure_class*);
+ void setDMap(dStage_DMap_c*);
+ void setDrTg(stage_tgsc_class*);
+ void setDoor(stage_tgsc_class*);
+ void setElst(dStage_Elst_c*);
+ void setLightVecInfo(stage_pure_lightvec_info_class*);
+ void setLightVecInfoNum(int);
+ void setTresure(stage_tresure_class*);
+ void setMapPath(void*);
+
+private:
+ u8 field_0x0[0x8];
+ stage_camera_class* mCamera;
+ stage_arrow_class* mArrow;
+ stage_actor_class* mPlayer;
+ roomRead_class* mRoom;
+ stage_map_info_class* mMapInfo;
+ stage_map_info_dummy_class* mMapInfoBase;
+ stage_palette_info_class* mPaletteInfo;
+ stage_pselect_info_class* mPselectInfo;
+ stage_envr_info_class* mEnvrInfo;
+ stage_vrbox_info_class* mVrboxInfo;
+ stage_vrboxcol_info_class* mVrboxcolInfo;
+ stage_plight_info_class* mPlightInfo;
+ dStage_MapEventInfo_c* mMapEventInfo;
+ u32 mPaletteNumInfo;
+ u32 mPselectNumInfo;
+ u32 mEnvrNumInfo;
+ u32 mVrboxNumInfo;
+ int mVrboxcolNumInfo;
+ u32 mPlightNumInfo;
+ u16 mPlayerNum;
+ u16 field_0x56;
+ u16 field_0x58;
+ u16 field_0x5a;
+ stage_stag_info_class* mStagInfo;
+ stage_scls_info_dummy_class* mSclsInfo;
+ dStage_dPnt_c* mPntInfo;
+ dStage_dPath_c* mPathInfo;
+ dStage_dPnt_c* mPnt2Inf;
+ dStage_dPath_c* mPath2Info;
+ dStage_SoundInfo_c* mSoundInf;
+ dStage_SoundInfo_c* mSoundInfCL;
+ dStage_FloorInfo_c* mFloorInfo;
+ dStage_MemoryConfig_c* mMemoryConfig;
+ dStage_MemoryMap_c* mMemoryMap;
+ dStage_Multi_c* mMulti;
+ dStage_Multi_c* mOldMulti;
+ stage_tresure_class* mTreasure;
+ dStage_DMap_c* mDMap;
+ stage_tgsc_class* mDrTg;
+ stage_tgsc_class* mDoor;
+ dStage_Elst_c* mElst;
+};
+
+class dStage_roomDt_c {
+public:
+ stage_pure_lightvec_info_class* getLightVecInfo(void) const;
+ int getLightVecInfoNum(void) const;
+ stage_map_info_class* getMapInfo(void) const;
+ stage_map_info_dummy_class* getMapInfoBase(void) const;
+ int getMapPath(void);
+ stage_vrbox_info_class* getVrboxInfo(void) const;
+ stage_vrboxcol_info_class* getVrboxcolInfo(void) const;
+ dStage_FileList2_dt_c* getFileList2Info(void) const;
+ dStage_FileList_dt_c* getFileListInfo(void) const;
+ stage_actor_class* getPlayer(void) const;
+ dStage_dPnt_c* getPnt2Inf(void) const;
+ dStage_dPath_c* getPath2Inf(void) const;
+ stage_camera_class* getCamera(void) const;
+ stage_arrow_class* getArrow(void) const;
+ dStage_MapEventInfo_c* getMapEventInfo(void) const;
+ dStage_SoundInfo_c* getSoundInf(void) const;
+ dStage_SoundInfo_c* getSoundInfCL(void) const;
+ stage_scls_info_dummy_class* getSclsInfo(void) const;
+ dStage_Lbnk_c* getLbnk(void) const;
+ stage_tresure_class* getTresure(void) const;
+ stage_tgsc_class* getDrTg(void) const;
+ stage_tgsc_class* getDoor(void) const;
+ dStage_FloorInfo_c* getFloorInfo(void) const;
+ u16 getPlayerNum(void) const;
+ int getEnvrNumInfo(void) const;
+ int getVrboxNumInfo(void) const;
+ int getVrboxcolNumInfo(void) const;
+ int getMapInfo2(int) const;
+ int getPlightNumInfo(void) const;
+ stage_stag_info_class* getStagInfo(void) const;
+ dStage_dPnt_c* getPntInf(void) const;
+ dStage_dPath_c* getPathInf(void) const;
+ dStage_MemoryConfig_c* getMemoryConfig(void) const;
+ dStage_MemoryMap_c* getMemoryMap(void) const;
+ dStage_Multi_c* getMulti(void) const;
+ dStage_Multi_c* getOldMulti(void) const;
+ dStage_DMap_c* getDMap(void) const;
+ dStage_Elst_c* getElst(void);
+ roomRead_class* getRoom(void) const;
+ stage_palette_info_class* getPaletteInfo(void) const;
+ stage_pselect_info_class* getPselectInfo(void) const;
+ stage_envr_info_class* getEnvrInfo(void) const;
+ stage_plight_info_class* getPlightInfo(void) const;
+ int getPaletteNumInfo(void) const;
+ int getPselectNumInfo(void) const;
+
+ void initFileList2(void);
+ void init(void);
+
+ void setLightVecInfo(stage_pure_lightvec_info_class*);
+ void setLightVecInfoNum(int);
+ void setMapInfo(stage_map_info_class*);
+ void setMapInfoBase(stage_map_info_dummy_class*);
+ void setVrboxInfo(stage_vrbox_info_class*);
+ void setVrboxcolInfo(stage_vrboxcol_info_class*);
+ void setFileList2Info(dStage_FileList2_dt_c*);
+ void setFileListInfo(dStage_FileList_dt_c*);
+ void setPlayer(stage_actor_class*);
+ void setPnt2Inf(dStage_dPnt_c*);
+ void setPath2Info(dStage_dPath_c*);
+ void setCamera(stage_camera_class*);
+ void setArrow(stage_arrow_class*);
+ void setMapEventInfo(dStage_MapEventInfo_c*);
+ void setSoundInf(dStage_SoundInfo_c*);
+ void setSoundInfCL(dStage_SoundInfo_c*);
+ void setSclsInfo(stage_scls_info_dummy_class*);
+ void setLbnk(dStage_Lbnk_c*);
+ void setTreasure(stage_tresure_class*);
+ void setDrTg(stage_tgsc_class*);
+ void setDoor(stage_tgsc_class*);
+ void setFloorInfo(dStage_FloorInfo_c*);
+ void setPlayerNum(u16);
+ void setVrboxNumInfo(int);
+ void setVrboxcolNumInfo(int);
+ void setStagInfo(stage_stag_info_class*);
+ void setPntInfo(dStage_dPnt_c*);
+ void setPathInfo(dStage_dPath_c*);
+ void setPnt2Info(dStage_dPnt_c*);
+ void setPlightNumInfo(int);
+ void setMemoryConfig(dStage_MemoryConfig_c*);
+ void setMemoryMap(dStage_MemoryMap_c*);
+ void setMulti(dStage_Multi_c*);
+ void setOldMulti(void);
+ void resetOldMulti(void);
+ void setTresure(stage_tresure_class*);
+ void setDMap(dStage_DMap_c*);
+ void setMapPath(void*);
+ void setElst(dStage_Elst_c*);
+ void setRoom(roomRead_class*);
+ void setPaletteInfo(stage_palette_info_class*);
+ void setPselectInfo(stage_pselect_info_class*);
+ void setEnvrInfo(stage_envr_info_class*);
+ void setPlightInfo(stage_plight_info_class*);
+ void setPaletteNumInfo(int);
+ void setPselectNumInfo(int);
+ void setEnvrNumInfo(int);
+
+private:
+ u8 field_0x0[0x8];
+ stage_pure_lightvec_info_class* mLightVecInfo;
+ int mLightVecInfoNum;
+ stage_map_info_class* mMapInfo;
+ stage_map_info_dummy_class* mMapInfoBase;
+ stage_vrbox_info_class* mVrboxInfo;
+ stage_vrboxcol_info_class* mVrboxcolInfo;
+ dStage_FileList2_dt_c* mFileList2Info;
+ dStage_FileList_dt_c* mFileListInfo;
+ stage_actor_class* mPlayer;
+ dStage_dPnt_c* mPnt2Info;
+ dStage_dPath_c* mPath2Info;
+ stage_camera_class* mCamera;
+ stage_arrow_class* mArrow;
+ dStage_MapEventInfo_c* mMapEventInfo;
+ dStage_SoundInfo_c* mSoundInf;
+ dStage_SoundInfo_c* mSoundInfCL;
+ stage_scls_info_dummy_class* mSclsInfo;
+ dStage_Lbnk_c* mLbnk;
+ stage_tresure_class* mTreasure;
+ stage_tgsc_class* mDrTg;
+ stage_tgsc_class* mDoor;
+ dStage_FloorInfo_c* mFloorInfo;
+ u16 mPlayerNum;
+ u16 field_0x62;
+ int mVrboxNumInfo;
+ int mVrboxcolNumInfo;
+}; // Size: 0x6C
+
+#pragma pack(push, 1)
+class dStage_roomControl_c {
+public:
+ struct roomDzs_c {
+ /* 80024A34 */ void create(u8);
+ /* 80024ABC */ void remove();
+ /* 80024B44 */ void add(u8, u8);
+ };
+
+ void init(void);
+ static int getZoneNo(int room);
+ /* 80024338 */ void initZone();
+ /* 80024384 */ void getStatusRoomDt(int);
+ /* 800243B0 */ void getMemoryBlock(int);
+ /* 800243E8 */ void setStayNo(int);
+ /* 80024424 */ void setNextStayNo(int);
+ /* 800244E8 */ void checkRoomDisp(int) const;
+ /* 8002451C */ void loadRoom(int, u8*, bool);
+ /* 8002471C */ void zoneCountCheck(int) const;
+ /* 80024844 */ void createMemoryBlock(int, u32);
+ /* 800248A8 */ void destroyMemoryBlock();
+ /* 8002490C */ void setArcBank(int, char const*);
+ /* 80024940 */ void getArcBank(int);
+ /* 80024954 */ void resetArchiveBank(int);
+ /* 80024DB0 */ void SetTimePass(int);
+
+ static u8 mMemoryBlock[76];
+ static u8 mArcBank[320];
+ static u8 mStatus[65792];
+ static u8 mDemoArcName[10 + 2 /* padding */];
+ static u8 mProcID[4];
+ static u8 mArcBankName[4];
+ static u8 mArcBankData[4];
+ static u8 m_roomDzs[8];
+
+private:
+ u8 field_0x0[164];
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class dStage_nextStage_c {
+public:
+ void set(const char*, s8, s16, s8, s8, u8);
+
+private:
+ char mStage[8];
+ s16 mPoint;
+ u8 mRoomNo;
+ u8 mLayer;
+ u8 field_0xc;
+ u8 field_0xd;
+ s8 enabled;
+ u8 wipe;
+ u8 wipe_speed;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class dStage_startStage_c {
+public:
+ void set(const char*, s8, s16, s8);
+ inline char* getName() { return mStage; }
+
+private:
+ /* 0x0 */ char mStage[8];
+ /* 0x8 */ s16 mPoint;
+ /* 0xA */ s8 mRoomNo;
+ /* 0xB */ s8 mLayer;
+ /* 0xC */ s8 mDarkArea;
+};
+#pragma pack(pop)
+
+class dStage_roomStatus_c : dStage_roomDt_c {
+private:
+ /* 0x06C */ u8 mJ3DLightInfo[0xA0 - 0x6C];
+ /* 0x0A0 */ u8 unk_A0[0x3F7 - 0xA0];
+ /* 0x3F7 */ s8 mZoneNo;
+ /* 0x3F8 */ u8 unk_3F8[0x404 - 0x3F8];
+
+public:
+ int getZoneNo() const { return mZoneNo; }
+ /* 80028360 */ ~dStage_roomStatus_c();
+ /* 8002839C */ dStage_roomStatus_c();
+}; // Size: 0x404
+
+// unknown name
+struct objectNameInfo {
+ char mName[8];
+ s16 mProcTypeID;
+ s8 unkA;
+}; // Size: 0xC
#endif /* D_D_STAGE_H */
diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h
index 530080ff29..e42af8eceb 100644
--- a/include/d/event/d_event.h
+++ b/include/d/event/d_event.h
@@ -1,6 +1,301 @@
#ifndef D_EVENT_D_EVENT_H
#define D_EVENT_D_EVENT_H
+#include "d/a/d_a_itembase.h"
+#include "d/a/d_a_player.h"
+#include "d/d_stage.h"
+#include "d/save/d_save.h"
#include "dolphin/types.h"
+#pragma pack(push, 1)
+class dEvt_order_c {
+public:
+ /* 80030154 */ ~dEvt_order_c();
+ /* 800415D4 */ dEvt_order_c();
+
+private:
+ u8 field_0x0;
+ u8 field_0x1;
+ u8 field_0x2;
+ u8 field_0x3;
+ u8 field_0x4;
+ u8 field_0x5;
+ u8 field_0x6;
+ u8 field_0x7;
+ u8 field_0x8;
+ u8 field_0x9;
+ u8 field_0xa;
+ u8 field_0xb;
+ u8 field_0xc;
+ u8 field_0xd;
+ u8 field_0xe;
+ u8 field_0xf;
+ u8 field_0x10;
+ u8 field_0x11;
+ u8 field_0x12;
+ u8 field_0x13;
+ u8 field_0x14;
+ u8 field_0x15;
+ u8 field_0x16;
+ u8 field_0x17;
+ u8 field_0x18;
+ u8 field_0x19;
+ u8 field_0x1a;
+ u8 field_0x1b;
+ u8 field_0x1c;
+ u8 field_0x1d;
+ u8 field_0x1e;
+ u8 field_0x1f;
+ u8 field_0x20;
+ u8 field_0x21;
+ u8 field_0x22;
+ u8 field_0x23;
+ u8 field_0x24;
+ u8 field_0x25;
+ u8 field_0x26;
+ u8 field_0x27;
+ u8 field_0x28;
+ u8 field_0x29;
+ u8 field_0x2a;
+ u8 field_0x2b;
+ u8 field_0x2c;
+ u8 field_0x2d;
+ u8 field_0x2e;
+ u8 field_0x2f;
+ u8 field_0x30;
+ u8 field_0x31;
+ u8 field_0x32;
+ u8 field_0x33;
+ u8 field_0x34;
+ u8 field_0x35;
+ u8 field_0x36;
+ u8 field_0x37;
+ u8 field_0x38;
+ u8 field_0x39;
+ u8 field_0x3a;
+ u8 field_0x3b;
+ u8 field_0x3c;
+ u8 field_0x3d;
+ u8 field_0x3e;
+ u8 field_0x3f;
+ u8 field_0x40;
+ u8 field_0x41;
+ u8 field_0x42;
+ u8 field_0x43;
+ u8 field_0x44;
+ u8 field_0x45;
+ u8 field_0x46;
+ u8 field_0x47;
+ u8 field_0x48;
+ u8 field_0x49;
+ u8 field_0x4a;
+ u8 field_0x4b;
+ u8 field_0x4c;
+ u8 field_0x4d;
+ u8 field_0x4e;
+ u8 field_0x4f;
+ u8 field_0x50;
+ u8 field_0x51;
+ u8 field_0x52;
+ u8 field_0x53;
+ u8 field_0x54;
+ u8 field_0x55;
+ u8 field_0x56;
+ u8 field_0x57;
+ u8 field_0x58;
+ u8 field_0x59;
+ u8 field_0x5a;
+ u8 field_0x5b;
+ u8 field_0x5c;
+ u8 field_0x5d;
+ u8 field_0x5e;
+ u8 field_0x5f;
+ u8 field_0x60;
+ u8 field_0x61;
+ u8 field_0x62;
+ u8 field_0x63;
+ u8 field_0x64;
+ u8 field_0x65;
+ u8 field_0x66;
+ u8 field_0x67;
+ u8 field_0x68;
+ u8 field_0x69;
+ u8 field_0x6a;
+ u8 field_0x6b;
+ u8 field_0x6c;
+ u8 field_0x6d;
+ u8 field_0x6e;
+ u8 field_0x6f;
+ u8 field_0x70;
+ u8 field_0x71;
+ u8 field_0x72;
+ u8 field_0x73;
+ u8 field_0x74;
+ u8 field_0x75;
+ u8 field_0x76;
+ u8 field_0x77;
+ u8 field_0x78;
+ u8 field_0x79;
+ u8 field_0x7a;
+ u8 field_0x7b;
+ u8 field_0x7c;
+ u8 field_0x7d;
+ u8 field_0x7e;
+ u8 field_0x7f;
+ u8 field_0x80;
+ u8 field_0x81;
+ u8 field_0x82;
+ u8 field_0x83;
+ u8 field_0x84;
+ u8 field_0x85;
+ u8 field_0x86;
+ u8 field_0x87;
+ u8 field_0x88;
+ u8 field_0x89;
+ u8 field_0x8a;
+ u8 field_0x8b;
+ u8 field_0x8c;
+ u8 field_0x8d;
+ u8 field_0x8e;
+ u8 field_0x8f;
+ u8 field_0x90;
+ u8 field_0x91;
+ u8 field_0x92;
+ u8 field_0x93;
+ u8 field_0x94;
+ u8 field_0x95;
+ u8 field_0x96;
+ u8 field_0x97;
+ u8 field_0x98;
+ u8 field_0x99;
+ u8 field_0x9a;
+ u8 field_0x9b;
+ u8 field_0x9c;
+ u8 field_0x9d;
+ u8 field_0x9e;
+ u8 field_0x9f;
+ u8 field_0xa0;
+ u8 field_0xa1;
+ u8 field_0xa2;
+ u8 field_0xa3;
+ u8 field_0xa4;
+ u8 field_0xa5;
+ u8 field_0xa6;
+ u8 field_0xa7;
+ u8 field_0xa8;
+ u8 field_0xa9;
+ u8 field_0xaa;
+ u8 field_0xab;
+ u8 field_0xac;
+ u8 field_0xad;
+ u8 field_0xae;
+ u8 field_0xaf;
+ u8 field_0xb0;
+ u8 field_0xb1;
+ u8 field_0xb2;
+ u8 field_0xb3;
+ u8 field_0xb4;
+ u8 field_0xb5;
+ u8 field_0xb6;
+ u8 field_0xb7;
+ u8 field_0xb8;
+ u8 field_0xb9;
+ u8 field_0xba;
+ u8 field_0xbb;
+ u8 field_0xbc;
+ u8 field_0xbd;
+ u8 field_0xbe;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class dEvt_control_c {
+public:
+ /* 80041580 */ dEvt_control_c();
+ /* 800415D8 */ void orderOld(u16, u16, u16, u16, void*, void*, void const*);
+ /* 80041668 */ void order(u16, u16, u16, u16, void*, void*, s16, u8);
+ /* 80041804 */ void setParam(dEvt_order_c*);
+ /* 80041934 */ void beforeFlagProc(dEvt_order_c*);
+ /* 80041964 */ void afterFlagProc(dEvt_order_c*);
+ /* 800419A8 */ void commonCheck(dEvt_order_c*, u16, u16);
+ /* 80041A20 */ void talkCheck(dEvt_order_c*);
+ /* 80041B58 */ void talkXyCheck(dEvt_order_c*);
+ /* 80041C90 */ void catchCheck(dEvt_order_c*);
+ /* 80041D34 */ void talkEnd();
+ /* 80041DDC */ void demoCheck(dEvt_order_c*);
+ /* 80041F18 */ void demoEnd();
+ /* 80041FA0 */ void potentialCheck(dEvt_order_c*);
+ /* 80042014 */ void doorCheck(dEvt_order_c*);
+ /* 8004212C */ void itemCheck(dEvt_order_c*);
+ /* 800421C0 */ void endProc();
+ /* 80042254 */ void change();
+ /* 800422C0 */ void entry();
+ /* 80042518 */ void reset(void*);
+ /* 80042468 */ void reset();
+ /* 800425B4 */ void clearSkipSystem();
+ /* 8004290C */ void getSkipEventName();
+ /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int);
+ /* 80042958 */ void setSkipZev(void*, char*);
+ /* 800429A8 */ void onSkipFade();
+ /* 800429B4 */ void offSkipFade();
+ /* 800429D4 */ void skipper();
+ /* 80042BBC */ void Step();
+ /* 80042FA8 */ void moveApproval(void*);
+ /* 8004316C */ void compulsory(void*, char const*, u16);
+ /* 800431E8 */ void remove();
+ /* 80043278 */ void getStageEventDt();
+ /* 80043280 */ void sceneChange(int);
+ /* 800432C8 */ void getPId(void*);
+ /* 800432EC */ void convPId(unsigned int);
+ /* 8004331C */ void getStbDemoData(char*);
+ /* 80043500 */ void searchMapEventData(u8, s32);
+ /* 800434D8 */ void searchMapEventData(u8);
+ /* 8004360C */ void runningEventID(s16);
+ /* 8004362C */ void setPt1(void*);
+ /* 8004365C */ void setPt2(void*);
+ /* 8004368C */ void setPtT(void*);
+ /* 800436BC */ void setPtI(void*);
+ /* 800436EC */ void setPtI_Id(unsigned int);
+ /* 800436F4 */ void setPtD(void*);
+ /* 80043724 */ void setGtItm(u8);
+
+private:
+ /* 0x000 */ u8 field_0x0[4];
+ /* 0x004 */ dEvt_order_c event_order;
+ /* 0x0C4 */ int mPt1;
+ /* 0x0C8 */ int mPt2;
+ /* 0x0CC */ int mPtT;
+ /* 0x0D0 */ int mPtI;
+ /* 0x0D4 */ int mPtd;
+ /* 0x0D8 */ u16 mEventFlag;
+ /* 0x0DA */ u16 mFlag2;
+ /* 0x0DC */ u16 mHindFlag;
+ /* 0x0DE */ u16 field_0xde;
+ /* 0x0E0 */ u16 field_0xe0;
+ /* 0x0E2 */ u8 field_0xe2;
+ /* 0x0E3 */ u8 field_0xe3;
+ /* 0x0E4 */ u8 mMode;
+ /* 0x0E5 */ u8 field_0xe5;
+ /* 0x0E6 */ u8 field_0xe6;
+ /* 0x0E7 */ u8 field_0xe7;
+ /* 0x0E8 */ u8 field_0xe8;
+ /* 0x0E9 */ u8 mDebugStb;
+ /* 0x0EA */ u8 field_0xea;
+ /* 0x0EB */ u8 mMapToolId;
+ /* 0x0EC */ u8 field_0xec;
+ /* 0x0ED */ u8 field_0xed;
+ /* 0x0EE */ u8 mPreItemNo;
+ /* 0x0EF */ u8 mGtItm;
+ /* 0x0F0 */ float mCullRate;
+ /* 0x0F4 */ int mStageEventDt;
+ /* 0x0F8 */ int mChangeOK;
+ /* 0x0FC */ u8 field_0xfc[20];
+ /* 0x110 */ bool mSkipFade;
+ /* 0x114 */ char mSkipEventName[0x14];
+ /* 0x128 */ u8 mCompulsory;
+ /* 0x129 */ u8 field_0x129;
+ /* 0x12C */ int field_0x12c;
+};
+#pragma pack(pop)
+
#endif /* D_EVENT_D_EVENT_H */
diff --git a/include/d/event/d_event_data.h b/include/d/event/d_event_data.h
index 67d70995c2..71383da85f 100644
--- a/include/d/event/d_event_data.h
+++ b/include/d/event/d_event_data.h
@@ -1,6 +1,62 @@
#ifndef D_EVENT_D_EVENT_DATA_H
#define D_EVENT_D_EVENT_DATA_H
+#include "d/d_stage.h"
+#include "d/save/d_save.h"
#include "dolphin/types.h"
+struct dEvDtStaff_c {
+ /* 80043FD8 */ void specialProc_WaitStart(int);
+ /* 8004403C */ void specialProc_WaitProc(int);
+ /* 80044080 */ void specialProc();
+ /* 80044134 */ void init();
+ /* 80044170 */ void advanceCut(int);
+ /* 80044190 */ void specialProcLight();
+ /* 80044324 */ void specialProcMessage();
+ /* 80044A58 */ void specialProcSound();
+ /* 80044CB8 */ void specialProcCreate();
+ /* 80044EE4 */ void specialProcDirector();
+ /* 80045878 */ void specialProcPackage();
+ /* 80045AFC */ void specialProcTimekeeper();
+ /* 80045C34 */ void specialProcEffect();
+};
+
+struct dEvDtEvent_c {
+ /* 80043E78 */ void finishCheck();
+ /* 80043EFC */ void forceFinish();
+ /* 80043F70 */ void specialStaffProc(dEvDtStaff_c*);
+};
+
+class dEvDtFlag_c {
+public:
+ /* 80043D60 */ void flagCheck(int);
+ /* 80043DC8 */ void flagSet(int);
+ /* 80043E30 */ void flagMaxCheck(int);
+ /* 80043E58 */ void init();
+
+private:
+ u8 field_0x0[320];
+};
+#pragma pack(push, 1)
+class dEvDtBase_c {
+public:
+ dEvDtBase_c();
+ /* 80046138 */ void init();
+ /* 8004616C */ void init(char*, int);
+ /* 8004628C */ void advanceCut(dEvDtEvent_c*);
+ /* 800462FC */ void advanceCutLocal(dEvDtStaff_c*);
+
+private:
+ u32 field_0x0;
+ u32 field_0x4;
+ u32 field_0x8;
+ u32 field_0xc;
+ u32 field_0x10;
+ u32 field_0x14;
+ u32 field_0x18;
+ u32 field_0x1c;
+ u32 field_0x20;
+};
+#pragma pack(pop)
+
#endif /* D_EVENT_D_EVENT_DATA_H */
diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h
index db13164478..e9d571a819 100644
--- a/include/d/event/d_event_manager.h
+++ b/include/d/event/d_event_manager.h
@@ -1,6 +1,90 @@
#ifndef D_EVENT_D_EVENT_MANAGER_H
#define D_EVENT_D_EVENT_MANAGER_H
+#include "d/event/d_event_data.h"
#include "dolphin/types.h"
+struct dEvDtData_c {};
+
+#pragma pack(push, 1)
+class dEvent_exception_c {
+public:
+ /* 800463DC */ void init();
+ /* 800463F0 */ void setStartDemo(int);
+ /* 80046480 */ void getEventName();
+
+private:
+ u32 field_0x0;
+ u8 field_0x4;
+ u8 field_0x5;
+ u8 field_0x6;
+ u8 field_0x7;
+ u32 field_0x8;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+struct dEvent_manager_c {
+ /* 800465E8 */ void getSubstance(dEvDtData_c*, int);
+ /* 80046688 */ dEvent_manager_c();
+ /* 80046710 */ void create();
+ /* 80046800 */ void setObjectArchive(char*);
+ /* 80046888 */ void demoInit();
+ /* 80046904 */ void roomInit(int);
+ /* 800469EC */ void roomFinish(int);
+ /* 80046A58 */ void orderStartDemo();
+ /* 80046C0C */ void remove();
+ /* 80046CB8 */ void startProc(dEvDtEvent_c*);
+ /* 80046DA0 */ void closeProc(dEvDtEvent_c*);
+ /* 80046DAC */ void endProc(s16, int);
+ /* 80046E64 */ void Sequencer();
+ /* 800473FC */ void Experts();
+ /* 800474BC */ void getEventData(s16);
+ /* 80047454 */ void getEventData(s16, int);
+ /* 80047514 */ void getEventIdx(char const*, u8, s32);
+ /* 80047698 */ void getEventIdx(fopAc_ac_c*, u8);
+ /* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8);
+ /* 80047930 */ void isMapToolCamera(u8, s32);
+ /* 80047984 */ void order(s16);
+ /* 800479F8 */ void startCheck(s16);
+ /* 80047A38 */ void startCheckOld(char const*);
+ /* 80047A78 */ void endCheck(s16);
+ /* 80047ADC */ void endCheckOld(char const*);
+ /* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int);
+ /* 80047D4C */ void getIsAddvance(int);
+ /* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int);
+ /* 80047F5C */ void getMyNowCutName(int);
+ /* 80047FC8 */ void getMyDataP(int, char const*, int);
+ /* 800480EC */ void getMySubstanceP(int, char const*, int);
+ /* 80048144 */ void getMySubstanceNum(int, char const*);
+ /* 8004817C */ void cutEnd(int);
+ /* 800481F4 */ void getEventPrio(fopAc_ac_c*, s16);
+ /* 800482CC */ void issueStaff(char const*);
+ /* 80048348 */ void cancelStaff(char const*);
+ /* 800483C4 */ void setGoal(cXyz*);
+ /* 800483E0 */ void getGoal();
+ /* 800483E8 */ void getRunEventName();
+ /* 80048520 */ void specialCast_Shutter(s16, int);
+ /* 80048618 */ void specialCast(char const*, int);
+ /* 800487F0 */ void ChkPresentEnd();
+ /* 8004882C */ void checkStartDemo();
+
+ /* 0x0000 */ dEvDtBase_c event_data_base[11];
+ /* 0x018C */ u32 field_0x18c;
+ /* 0x0190 */ u32 field_0x190;
+ /* 0x0194 */ u8 field_0x194[0x8];
+ /* 0x019C */ cXyz goal;
+ /* 0x01A8 */ u8 field_0x1A8[4];
+ /* 0x01AA */ u16 field_0x1aa;
+ /* 0x01AC */ u8 field_0x1ac[0x8];
+ /* 0x01B4 */ dEvent_exception_c event_exception;
+ /* 0x01C0 */ cXyz position;
+ /* 0x01CC */ u8 field_0x1cc[0x14];
+ /* 0x01E0 */ dEvDtFlag_c event_data_flag;
+ /* 0x0320 */ u8 field_0x320[0x35C];
+ /* 0x067C */ void* vtable;
+ /* 0x0680 */ u8 field_0x680[0x3C];
+};
+#pragma pack(pop)
+
#endif /* D_EVENT_D_EVENT_MANAGER_H */
diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h
index bd4295b3d1..485852dcbe 100644
--- a/include/d/meter/d_meter2_info.h
+++ b/include/d/meter/d_meter2_info.h
@@ -2,5 +2,203 @@
#define D_METER_D_METER2_INFO_H
#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
+//#include "JSystem/JUtility/JUTFont.h"
+
+struct dSv_event_flag_c {
+ static u8 saveBitLabels[1644 + 4 /* padding */];
+};
+
+struct dMsgObject_c {
+ /* 802384C4 */ void setLetterNameID(u16);
+};
+
+struct dMsgFlow_c {
+ /* 80249F00 */ dMsgFlow_c();
+ /* 80249F48 */ ~dMsgFlow_c();
+ /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
+ /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
+ /* 8024A538 */ void getMsgNo();
+};
+
+class dMeterMap_c {
+public:
+ /* 8020D900 */ bool isMapOpenCheck();
+};
+
+struct J2DPicture {};
+
+struct JMSMesgEntry_c {};
+
+struct J2DTextBox {
+ /* 8021C7F4 */ void getFont() const;
+};
+
+struct JUTFont {};
+
+struct dMenu_Letter {
+ static u8 letter_data[512];
+};
+
+struct dItem_data {
+ static void* item_resource[1530];
+};
+
+struct CPaneMgr {};
+
+class dMeter2_c {};
+
+class dMw_c {};
+
+struct ResTIMG {};
+
+struct JKRArchive {
+ /* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*);
+ /* 802D5ECC */ void readIdxResource(void*, u32, u32);
+};
+
+class dMeter2Info_c {
+public:
+ class WarpInfo_c {
+ public:
+ /* 0x00 */ char mStageName[8];
+ /* 0x08 */ cXyz mPosition;
+ /* 0x14 */ s16 mAngle;
+ /* 0x16 */ u8 mRoomNo;
+ /* 0x17 */ u8 unk79;
+ /* 0x18 */ u8 mWarpPlayerNo;
+ };
+
+ dMeter2Info_c();
+ virtual ~dMeter2Info_c();
+ void init(void);
+ void setFloatingMessage(u16, s16, bool);
+ void setFloatingFlow(u16, s16, bool);
+ int isFloatingMessageVisible(void);
+ int decFloatingMessageTimer(void);
+ void resetFloatingMessage(void);
+ void decMsgKeyWaitTimer(void);
+ void getString(u32, char*, JMSMesgEntry_c*); // define JMSMesgEntry
+ void getStringKana(u32, char*, JMSMesgEntry_c*);
+ void getStringKanji(u32, char*, JMSMesgEntry_c*);
+ double getStringLength(J2DTextBox*, char*); // define J2DTextBox
+ dMeter2Info_c* getStringLength(JUTFont*, float, float, char*);
+ void onDirectUseItem(int);
+ bool isDirectUseItem(int);
+ int setMeterString(s32);
+ void resetWarpStatus(void);
+ void warpInProc(void);
+ void warpOutProc(void);
+ void resetMeterString(void);
+ void setWarpInfo(const char*, const cXyz&, s16, u8, u8, u8);
+ u8 getItemType(u8);
+ u8 readItemTexture(u8, void*, J2DPicture*, void*, J2DPicture*, void*, J2DPicture*, void*,
+ J2DPicture*, int); // define J2DPicture
+ void setItemColor(u8, J2DPicture*, J2DPicture*, J2DPicture*, J2DPicture*);
+ s8 get2ndTexture(u8);
+ s8 get3rdTexture(u8);
+ s8 get4thTexture(u8);
+ void set1stColor(u8, J2DPicture*);
+ void set2ndColor(u8, J2DPicture*);
+ void set3rdColor(u8, J2DPicture*);
+ void set4thColor(u8, J2DPicture*);
+ void setHotSpringTimer(u8);
+ void decHotSpringTimer(void);
+ void changeWater(u8);
+ void setMiniGameItem(u8);
+ void resetMiniGameItem(bool);
+ void setMiniGameCount(s8);
+ void setSaveStageName(const char*);
+ u8& getDirectUseItem() { return mDirectUseItem; }
+ dMeterMap_c* getMeterMapClass() { return mMeterMap; }
+
+private:
+ /* 0x04 */ u8 unk4[4];
+ /* 0x08 */ u32 unk8;
+ /* 0x0C */ u32 unk12;
+ /* 0x10 */ void* mMsgResource;
+ /* 0x14 */ void* mStageMsgResource;
+ /* 0x18 */ void* mMsgUnitResource;
+ /* 0x1C */ dMeter2_c* mMeterClass;
+ /* 0x20 */ dMeterMap_c* mMeterMap;
+ /* 0x24 */ dMw_c* mMenuWindowClass;
+ /* 0x28 */ CPaneMgr* mMeterItemPanePtr[4];
+ /* 0x38 */ WarpInfo_c mWarpInfo;
+ /* 0x54 */ float unk84;
+ /* 0x58 */ float unk88;
+ /* 0x5C */ float unk92;
+ /* 0x60 */ float unk96;
+ /* 0x64 */ float unk100;
+ /* 0x68 */ float unk104;
+ /* 0x6C */ float unk108;
+ /* 0x70 */ float m2DWidth;
+ /* 0x74 */ float m2DHeight;
+ /* 0x78 */ float m2DPosH;
+ /* 0x7C */ float m2DPosV;
+ /* 0x80 */ float unk128;
+ /* 0x84 */ u32 mTimeMs;
+ /* 0x88 */ u32 mMsgTimeMs;
+ /* 0x8C */ u32 mMeterString;
+ /* 0x90 */ u32 mTempBits;
+ /* 0x94 */ s16 mMsgKeyWaitTimer;
+ /* 0x96 */ u16 mHorseLifeCount;
+ /* 0x98 */ u16 unk152;
+ /* 0x9A */ u16 mHotSpringTimer[4];
+ /* 0xA2 */ u16 mSub2DStatus;
+ /* 0xA4 */ u16 mFloatingFlowID;
+ /* 0xA6 */ u16 mFloatingMessageID;
+ /* 0xA8 */ s16 mFloatingMessageTimer;
+ /* 0xAA */ u16 mMapKeyDirection;
+ /* 0xAC */ u16 mBlinkButton;
+ /* 0xAE */ u16 mUseButton;
+ /* 0xB0 */ u16 mGameStatus;
+ /* 0xB2 */ u16 mTouchKeyCheck;
+ /* 0xB4 */ u16 mWindowAccept;
+ /* 0xB6 */ u16 mOilGaugeBackUp;
+ /* 0xB8 */ u8 mDirectUseItem;
+ /* 0xB9 */ u8 mWindowStatus;
+ /* 0xBA */ u8 unk186;
+ /* 0xBB */ u8 mMaxCount;
+ /* 0xBC */ u8 mNowCount;
+ /* 0xBD */ u8 mShopTalkFlag;
+ /* 0xBE */ u8 unk190;
+ /* 0xBF */ u8 mMapStatus;
+ /* 0xC0 */ u8 mWarpStatus;
+ /* 0xC1 */ u8 mPauseStatus;
+ /* 0xC2 */ u8 mGameOverType;
+ /* 0xC3 */ u8 mInsectSelectType;
+ /* 0xC4 */ u32 unk196;
+ /* 0xC8 */ u32 unk200;
+ /* 0xCC */ u8 unk204;
+ /* 0xCD */ u8 unk205;
+ /* 0xCE */ u8 unk206;
+ /* 0xCF */ u8 unk207;
+ /* 0xD0 */ f64 unk208;
+ /* 0xD8 */ u8 unk216;
+ /* 0xD9 */ u8 unk217;
+ /* 0xDA */ u8 unk218;
+ /* 0xDB */ u8 unk219;
+ /* 0xDC */ u8 mRentalBombBag;
+ /* 0xDD */ u8 mMiniGameItemSetFlag;
+ /* 0xDE */ u8 mMiniGameCount;
+ /* 0xDF */ u8 mCollectCursorPosX;
+ /* 0xE0 */ u8 mCollectCursorPosY;
+ /* 0xE1 */ u8 mTableMapRegionNo;
+ /* 0xE2 */ u8 mGoldWolfMapType;
+ /* 0xE3 */ u8 mLightDropGetFlag[3];
+ /* 0xE6 */ u8 mLifeGaugeSE;
+ /* 0xE7 */ u8 unk231;
+ /* 0xE8 */ u8 mItemExplainWindowStatus;
+ /* 0xE9 */ char mSaveStageName[8];
+ /* 0xF1 */ u8 mFloatingMessageWakuVisible;
+ /* 0xF2 */ u8 mMapDrugFlag;
+ /* 0xF3 */ u8 unk243[5];
+};
+
+extern dMeter2Info_c g_meter2_info;
+
+inline dMeterMap_c* dMeter2Info_getMeterMapClass() {
+ return g_meter2_info.getMeterMapClass();
+}
#endif /* D_METER_D_METER2_INFO_H */
diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h
index e43919d1bc..808ccba9da 100644
--- a/include/d/save/d_save.h
+++ b/include/d/save/d_save.h
@@ -1,6 +1,931 @@
#ifndef D_SAVE_D_SAVE_H
#define D_SAVE_D_SAVE_H
+#include "SSystem/SComponent/c_xyz.h"
#include "dolphin/types.h"
+#define DEFAULT_SELECT_ITEM_INDEX 0
+#define MAX_SELECT_ITEM 3
+#define MAX_EVENTS 256
+#define MAX_ITEM_SLOTS 24
+#define ITEM_XY_MAX_DUMMY 8
+#define LIGHT_DROP_STAGE 4
+#define LETTER_INFO_BIT 64
+#define BOMB_BAG_MAX 3
+#define BOTTLE_MAX 4
+
+enum Wallets { WALLET, BIG_WALLET, GIANT_WALLET };
+
+enum ItemSlots {
+ SLOT_0,
+ SLOT_1,
+ SLOT_2,
+ SLOT_3,
+ SLOT_4,
+ SLOT_5,
+ SLOT_6,
+ SLOT_7,
+ SLOT_8,
+ SLOT_9,
+ SLOT_10,
+ SLOT_11,
+ SLOT_12,
+ SLOT_13,
+ SLOT_14,
+ SLOT_15,
+ SLOT_16,
+ SLOT_17,
+ SLOT_18,
+ SLOT_19,
+ SLOT_20,
+ SLOT_21,
+ SLOT_22,
+ SLOT_23
+};
+
+enum ItemTable {
+ HEART,
+ GREEN_RUPEE,
+ BLUE_RUPEE,
+ YELLOW_RUPEE,
+ RED_RUPEE,
+ PURPLE_RUPEE,
+ ORANGE_RUPEE,
+ SILVER_RUPEE,
+ S_MAGIC,
+ L_MAGIC,
+ BOMB_5,
+ BOMB_10,
+ BOMB_20,
+ BOMB_30,
+ ARROW_10,
+ ARROW_20,
+ ARROW_30,
+ ARROW_1,
+ PACHINKO_SHOT,
+ noentry1,
+ noentry2,
+ noentry3,
+ WATER_BOMB_5,
+ WATER_BOMB_10,
+ WATER_BOMB_20,
+ WATER_BOMB_30,
+ BOMB_INSECT_5,
+ BOMB_INSECT_10,
+ BOMB_INSECT_20,
+ BOMB_INSECT_30,
+ RECOVERY_FAILY,
+ TRIPLE_HEART,
+ SMALL_KEY,
+ KAKERA_HEART,
+ UTAWA_HEART,
+ MAP,
+ COMPUS,
+ DUNGEON_EXIT,
+ BOSS_KEY,
+ DUNGEON_BACK,
+ SWORD,
+ MASTER_SWORD,
+ WOOD_SHIELD,
+ SHIELD,
+ HYLIA_SHIELD,
+ TKS_LETTER,
+ WEARS_CASUAL,
+ WEAR_KOKIRI,
+ ARMOR,
+ WEAR_ZORA,
+ MAGIC_LV1,
+ DUNGEON_EXIT_2,
+ WALLET_LV1,
+ WALLET_LV2,
+ WALLET_LV3,
+ noentry4,
+ noentry5,
+ noentry6,
+ noentry7,
+ noentry8,
+ noentry9,
+ ZORAS_JEWEL,
+ HAWK_EYE,
+ WOOD_STICK,
+ BOOMERANG,
+ SPINNER,
+ IRONBALL,
+ BOW,
+ HOOKSHOT,
+ HVY_BOOTS,
+ COPY_ROD,
+ W_HOOKSHOT,
+ KANTERA,
+ LIGHT_SWORD,
+ FISHING_ROD_1,
+ PACHINKO,
+ COPY_ROD_2,
+ noentry10,
+ noentry11,
+ BOMB_BAG_LV2,
+ BOMB_BAG_LV1,
+ BOMB_IN_BAG,
+ noentry12,
+ LIGHT_ARROW,
+ ARROW_LV1,
+ ARROW_LV2,
+ ARROW_LV3,
+ noentry13,
+ LURE_ROD,
+ BOMB_ARROW,
+ HAWK_ARROW,
+ BEE_ROD,
+ JEWEL_ROD,
+ WORM_ROD,
+ JEWEL_BEE_ROD,
+ JEWEL_WORM_ROD,
+ EMPTY_BOTTLE,
+ RED_BOTTLE,
+ GREEN_BOTTLE,
+ BLUE_BOTTLE,
+ MILK_BOTTLE,
+ HALF_MILK_BOTTLE,
+ OIL_BOTTLE,
+ WATER_BOTTLE,
+ OIL_BOTTLE_2,
+ RED_BOTTLE_2,
+ UGLY_SOUP,
+ HOT_SPRING,
+ FAIRY,
+ HOT_SPRING_2,
+ OIL2,
+ OIL,
+ NORMAL_BOMB,
+ WATER_BOMB,
+ POKE_BOMB,
+ FAIRY_DROP,
+ WORM,
+ DROP_BOTTLE,
+ BEE_CHILD,
+ CHUCHU_RARE,
+ CHUCHU_RED,
+ CHUCHU_BLUE,
+ CHUCHU_GREEN,
+ CHUCHU_YELLOW,
+ CHUCHU_PURPLE,
+ LV1_SOUP,
+ LV2_SOUP,
+ LV3_SOUP,
+ LETTER,
+ BILL,
+ WOOD_STATUE,
+ IRIAS_PENDANT,
+ HORSE_FLUTE,
+ noentry14,
+ noentry15,
+ noentry16,
+ noentry17,
+ noentry18,
+ noentry19,
+ noentry20,
+ noentry21,
+ noentry22,
+ noentry23,
+ noentry24,
+ RAFRELS_MEMO,
+ ASHS_SCRIBBLING,
+ noentry25,
+ noentry26,
+ noentry27,
+ noentry28,
+ noentry29,
+ noentry30,
+ noentry31,
+ noentry32,
+ noentry33,
+ noentry34,
+ CHUCHU_YELLOW2,
+ OIL_BOTTLE3,
+ SHOP_BEE_CHILD,
+ CHUCHU_BLACK,
+ LIGHT_DROP,
+ DROP_CONTAINER,
+ DROP_CONTAINER02,
+ DROP_CONTAINER03,
+ FILLED_CONTAINER,
+ MIRROR_PIECE_2,
+ MIRROR_PIECE_3,
+ MIRROR_PIECE_4,
+ noentry35,
+ noentry36,
+ noentry37,
+ noentry38,
+ noentry39,
+ noentry40,
+ noentry41,
+ noentry42,
+ SMELL_YELIA_POUCH,
+ SMELL_PUMPKIN,
+ SMELL_POH,
+ SMELL_FISH,
+ SMELL_CHILDREN,
+ SMELL_MEDICINE,
+ noentry43,
+ noentry44,
+ noentry45,
+ noentry46,
+ noentry47,
+ noentry48,
+ noentry49,
+ noentry50,
+ noentry51,
+ noentry52,
+ M_BEETLE,
+ F_BEETLE,
+ M_BUTTERFLY,
+ F_BUTTERFLY,
+ M_STAG_BEETLE,
+ F_STAG_BEETLE,
+ M_GRASSHOPPER,
+ F_GRASSHOPPER,
+ M_NANAFUSHI,
+ F_NANAFUSHI,
+ M_DANGOMUSHI,
+ F_DANGOMUSHI,
+ M_MANTIS,
+ F_MANTIS,
+ M_LADYBUG,
+ F_LADYBUG,
+ M_SNAIL,
+ F_SNAIL,
+ M_DRAGONFLY,
+ F_DRAGONFLY,
+ M_ANT,
+ F_ANT,
+ M_MAYFLY,
+ F_MAYFLY,
+ noentry53,
+ noentry54,
+ noentry55,
+ noentry56,
+ noentry57,
+ noentry58,
+ noentry59,
+ noentry60,
+ POU_SPIRIT,
+ noentry61,
+ noentry62,
+ noentry63,
+ noentry64,
+ noentry65,
+ noentry66,
+ noentry67,
+ noentry68,
+ ANCIENT_DOCUMENT,
+ AIR_LETTER,
+ ANCIENT_DOCUMENT2,
+ LV7_DUNGEON_EXIT,
+ LINKS_SAVINGS,
+ SMALL_KEY2,
+ POU_FIRE1,
+ POU_FIRE2,
+ POU_FIRE3,
+ POU_FIRE4,
+ BOSSRIDER_KEY,
+ TOMATO_PUREE,
+ TASTE,
+ LV5_BOSS_KEY,
+ SURFBOARD,
+ KANTERA2,
+ L2_KEY_PIECES1,
+ L2_KEY_PIECES2,
+ L2_KEY_PIECES3,
+ KEY_OF_CARAVAN,
+ LV2_BOSS_KEY,
+ KEY_OF_FILONE,
+ NO_ITEM
+};
+
+enum EquipmentBits { CLOTHING_BITFIELD, SWORD_BITFIELD, SHIELD_BITFIELD };
+
+enum Swords { ORDON_SWORD_FLAG, MASTER_SWORD_FLAG, WOODEN_SWORD_FLAG, LIGHT_SWORD_FLAG };
+
+enum Shields { ORDON_SHIELD_FLAG, HYLIAN_SHIELD_FLAG, WOODEN_SHIELD_FLAG };
+
+enum Armors { KOKIRI_CLOTHES_FLAG };
+
+enum DungeonItem { MAP_FLAG, COMPASS_FLAG, BOSS_KEY_FLAG, OOCCOO_NOTE_FLAG = 6 };
+
+enum AreaVessel { FARON_VESSEL, ELDIN_VESSEL, LANAYRU_VESSEL };
+
+class dSv_player_status_a_c {
+public:
+ void init(void);
+ void setSelectItemIndex(signed int, u8);
+ u8 getSelectItemIndex(signed int) const;
+ void setMixItemIndex(signed int, u8);
+ u8 getMixItemIndex(signed int) const;
+ u16 getRupeeMax(void) const;
+ int isMagicFlag(u8) const;
+
+ u16& getMaxLife() { return mMaxHealth; }
+ u16& getLife() { return mCurrentHealth; }
+ u16& getRupee() { return mCurrentRupees; }
+ u16& getOil() { return mCurrentLanternOil; }
+ u8 getSelectEquip(int item) const { return mEquipment[item]; }
+ void setWalletLV(u8 lv) { mCurrentWallet = lv; }
+ void setOil(u16 oil) { mCurrentLanternOil = oil; }
+ void setMaxOil(u16 max) { mMaxLanternOil = max; }
+ void setWalletSize(u8 size) { mCurrentWallet = size; }
+ void setMagic(u8 magic) { mCurrentMagic = magic; }
+ void setMaxMagic(u8 max) { mMaxMagic = max; }
+ void setRupee(u16 rupees) { mCurrentRupees = rupees; }
+ void setLife(u16 life) { mCurrentHealth = life; }
+ void setMaxLife(u8 max) { mMaxHealth = max; }
+ void setSelectEquip(int item_index, u8 item) { mEquipment[item_index] = item; }
+
+private:
+ u16 mMaxHealth;
+ u16 mCurrentHealth;
+ u16 mCurrentRupees;
+ u16 mMaxLanternOil;
+ u16 mCurrentLanternOil;
+ u8 unk10;
+ u8 mSelectItem[3];
+ u8 mMixItem[3];
+ u8 unk17;
+ u8 unk18;
+ u8 mEquipment[6];
+ u8 mCurrentWallet;
+ u8 mMaxMagic;
+ u8 mCurrentMagic;
+ u8 mMagicFlag;
+ u8 unk29;
+ u8 unk30;
+ u8 unk31[3];
+ u8 padding[6];
+};
+
+class dSv_player_status_b_c {
+public:
+ void init(void);
+ void onDarkClearLV(int);
+ BOOL isDarkClearLV(int) const;
+ void onTransformLV(int);
+ BOOL isTransformLV(int) const;
+
+private:
+ u32 unk0;
+ u32 unk4;
+ u8 mTransformLevelFlag;
+ u8 mDarkClearLevelFlag;
+ u8 unk10;
+ u8 unk11;
+ float mTimeOfDay;
+ u16 unk16;
+ u8 unk18[3];
+ u8 padding[3];
+};
+
+class dSv_horse_place_c {
+public:
+ void init(void);
+ void set(const char*, const cXyz&, s16, s8);
+
+private:
+ cXyz mPosition;
+ u16 mXRotation;
+ char mCurrentStage[8];
+ u8 mSpawnId;
+ u8 mRoomId;
+};
+
+class dSv_player_return_place_c {
+public:
+ void init(void);
+ void set(const char*, s8, u8);
+
+private:
+ char mCurrentStage[8];
+ u8 mSpawnId;
+ u8 mRoomId;
+ u8 unk10;
+ u8 unk11;
+};
+
+class dSv_player_field_last_stay_info_c {
+public:
+ void init(void);
+ BOOL isRegionBit(int unk) const;
+ void onRegionBit(int unk);
+ void set(const char*, const cXyz&, s16, s8, u8);
+
+private:
+ cXyz mLastPosition;
+ s16 mLastAngle;
+ char mLastStage[8];
+ u8 mLastSpawnId;
+ u8 mLastRoomId;
+ u8 unk24;
+ u8 mLastRegion;
+ u8 unk26[2];
+};
+
+class dSv_player_last_mark_info_c {
+public:
+ void init(void);
+ void setWarpItemData(const char*, const cXyz&, s16, s8, u8, u8);
+
+ const char* getName(void) { return mOoccooStage; }
+ cXyz getPos(void) { return mOoccooPosition; }
+ s16 getAngleY(void) { return mOoccooXRotation; }
+ s8 getRoomNo(void) { return mOoccooRoomId; }
+ char getWarpAcceptStage(void) { return mWarpAcceptStage; }
+
+private:
+ cXyz mOoccooPosition;
+ s16 mOoccooXRotation;
+ char mOoccooStage[8];
+ u8 mOoccooSpawnId;
+ s8 mOoccooRoomId;
+ char mWarpAcceptStage;
+ u8 unk25[3];
+};
+
+class dSv_player_item_c {
+public:
+ void init(void);
+ void setItem(int, u8);
+ u8 getItem(int, bool) const;
+ void setLineUpItem(void);
+ u8 getLineUpItem(int) const;
+ void setBottleItemIn(u8, u8);
+ void setEmptyBottleItemIn(u8);
+ void setEmptyBottle(void);
+ void setEmptyBottle(u8);
+ void setEquipBottleItemIn(u8, u8);
+ void setEquipBottleItemEmpty(u8);
+ u8 checkBottle(u8);
+ int checkInsectBottle(void);
+ u8 checkEmptyBottle(void);
+ void setBombBagItemIn(u8, u8, bool);
+ void setBombBagItemIn(u8, u8, u8, bool);
+ void setEmptyBombBagItemIn(u8, bool);
+ void setEmptyBombBagItemIn(u8, u8, bool);
+ void setEmptyBombBag(void);
+ void setEmptyBombBag(u8, u8);
+ u8 checkBombBag(u8);
+ void setWarashibeItem(u8);
+ void setRodTypeLevelUp(void);
+ void setBaitItem(u8);
+
+private:
+ u8 mItems[24];
+ u8 mItemSlots[24];
+};
+
+class dSv_player_get_item_c {
+public:
+ void init(void);
+ void onFirstBit(u8);
+ void offFirstBit(u8);
+ int isFirstBit(u8) const;
+
+private:
+ u32 mPauseMenuBitFields[4];
+ u8 padding[16];
+};
+
+class dSv_player_item_record_c {
+public:
+ void init(void);
+ void setBombNum(u8, u8);
+ u8 getBombNum(u8) const;
+ void setBottleNum(u8, u8);
+ u8 addBottleNum(u8, s16);
+ u8 getBottleNum(u8) const;
+
+ void setArrowNum(u8 amount) { mBow = amount; }
+
+private:
+ u8 mBow;
+ u8 mBombBags[3];
+ u8 mBottles[4];
+ u8 mSlingshot;
+ u8 unk5[3];
+};
+
+class dSv_player_item_max_c {
+public:
+ void init(void);
+ void setBombNum(u8, u8);
+ u8 getBombNum(u8) const;
+
+ void setArrowNum(u8 max) { mItemCapacities[0] = max; }
+ u8 getArrowNum() { return mItemCapacities[0]; }
+
+private:
+ u8 mItemCapacities[8];
+};
+
+class dSv_player_collect_c {
+public:
+ void init(void);
+ void setCollect(int, u8);
+ BOOL isCollect(int, u8) const;
+ void onCollectCrystal(u8);
+ BOOL isCollectCrystal(u8) const;
+ void onCollectMirror(u8);
+ BOOL isCollectMirror(u8) const;
+
+ u8 getPohNum() { return mPoeCount; }
+
+private:
+ u8 unk0[8];
+ u8 unk8;
+ u8 mCrystal;
+ u8 mMirror;
+ u8 unk11;
+ u8 mPoeCount;
+ u8 padding[3];
+};
+
+class dSv_player_wolf_c {
+public:
+ void init(void);
+
+private:
+ u8 unk0[3];
+ u8 unk3;
+};
+
+class dSv_light_drop_c {
+public:
+ void init(void);
+ void setLightDropNum(u8, u8);
+ u8 getLightDropNum(u8) const;
+ void onLightDropGetFlag(u8);
+ BOOL isLightDropGetFlag(u8) const;
+
+private:
+ u8 mLightDropCounts[4];
+ u8 mLightDropGetFlag;
+ u8 unk5[3];
+};
+
+class dSv_letter_info_c {
+public:
+ void init(void);
+ void onLetterGetFlag(int);
+ BOOL isLetterGetFlag(int) const;
+ void onLetterReadFlag(int);
+ int isLetterReadFlag(int) const;
+
+private:
+ u32 mLetterGetBitfields[2];
+ u32 mLetterReadBitfields[2];
+ u8 unk16[64];
+};
+
+class dSv_fishing_info_c {
+public:
+ void init(void);
+ void addFishCount(u8); // merged with init in the assembly
+
+private:
+ u16 mFishCount[16];
+ u8 unk32[16];
+ u8 padding[4];
+};
+
+class dSv_player_info_c {
+public:
+ void init(void);
+ char* getLinkName() { return (char*)link_name; }
+
+private:
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unk12;
+ u16 unk16;
+ u16 unk18;
+ u8 link_name[16];
+ u8 unk36;
+ u8 epona_name[16];
+ u8 unk53;
+ u8 unk54;
+ u8 unk55[5];
+ u8 padding[4];
+};
+
+class dSv_player_config_c {
+public:
+ void init(void);
+ u32 checkVibration(void) const;
+ u8 getSound(void);
+ void setSound(u8);
+ u8 getVibration(void);
+ void setVibration(u8);
+
+private:
+ u8 unk0;
+ u8 mSoundMode;
+ u8 unk2;
+ u8 mVibrationStatus;
+ u8 unk4;
+ u8 unk5;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unk10;
+ u8 unk11;
+ u8 padding[4];
+};
+
+class dSv_player_c {
+public:
+ void init(void);
+ dSv_player_info_c& getPlayerInfo() { return mPlayerInfo; }
+ dSv_player_status_a_c& getPlayerStatusA() { return player_status_a; }
+ dSv_player_item_c& getPlayerItem() { return player_item; }
+ dSv_player_collect_c& getPlayerCollect() { return player_collect; }
+ dSv_player_item_record_c& getPlayerItemRecord() { return player_item_record; }
+ dSv_player_item_max_c& getPlayerItemMax() { return player_item_max; }
+ dSv_player_last_mark_info_c& getPlayerLastMarkInfo() { return player_last_mark; }
+ dSv_light_drop_c& getLightDrop() { return light_drop; }
+ dSv_player_get_item_c& getPlayerGetItem() { return player_get_item; }
+
+ void setPlayerStatusAWalletLV(u8 lv) { player_status_a.setWalletLV(lv); }
+
+private:
+ dSv_player_status_a_c player_status_a;
+ dSv_player_status_b_c player_status_b;
+ dSv_horse_place_c horse_place;
+ dSv_player_return_place_c player_return;
+ dSv_player_field_last_stay_info_c player_last_field;
+ dSv_player_last_mark_info_c player_last_mark;
+ dSv_player_item_c player_item;
+ dSv_player_get_item_c player_get_item;
+ dSv_player_item_record_c player_item_record;
+ dSv_player_item_max_c player_item_max;
+ dSv_player_collect_c player_collect;
+ dSv_player_wolf_c player_wolf;
+ dSv_light_drop_c light_drop;
+ dSv_letter_info_c letter_info;
+ dSv_fishing_info_c fishing_info;
+ dSv_player_info_c mPlayerInfo;
+ dSv_player_config_c player_config;
+};
+
+#pragma pack(push, 1)
+class dSv_memBit_c {
+public:
+ void init(void);
+ void onTbox(int);
+ void offTbox(int);
+ BOOL isTbox(int) const;
+ void onSwitch(int);
+ void offSwitch(int);
+ BOOL isSwitch(int) const;
+ BOOL revSwitch(int);
+ void onItem(int);
+ BOOL isItem(int) const;
+ void onDungeonItem(int);
+ bool isDungeonItem(int) const;
+
+ u8 getKeyNum() { return small_key_flags; }
+ void onDungeonItemMap() { onDungeonItem(MAP_FLAG); }
+ bool isDungeonItemMap() const { return isDungeonItem(MAP_FLAG); }
+ void onDungeonItemCompass() { onDungeonItem(COMPASS_FLAG); }
+ void onDungeonItemWarp() { onDungeonItem(OOCCOO_NOTE_FLAG); }
+ void onDungeonItemBossKey() { onDungeonItem(BOSS_KEY_FLAG); }
+ bool isDungeonItemBossKey() const { return isDungeonItem(BOSS_KEY_FLAG); }
+
+private:
+ u32 area_flags_bitfields1[2];
+ u32 area_flags_bitfields2[4];
+ u32 rupee_flags_bitfields;
+ u8 small_key_flags;
+ u8 dungeons_flags;
+};
+#pragma pack(pop)
+
+class dSv_event_c {
+public:
+ void init(void);
+ void onEventBit(u16);
+ void offEventBit(u16);
+ int isEventBit(u16) const;
+ void setEventReg(u16, u8);
+ u8 getEventReg(u16) const;
+
+private:
+ u8 events[256];
+};
+
+class dSv_MiniGame_c {
+public:
+ void init(void);
+
+private:
+ u8 unk0;
+ u8 unk1[3];
+ u32 unk4;
+ u32 unk8;
+ u32 unk12;
+ u32 unk16;
+ u32 unk20;
+};
+
+class dSv_memory_c {
+public:
+ dSv_memory_c(void); // the assembly for this is in d_com_inf_game.s
+ void init(void);
+ dSv_memBit_c& getTempFlags() { return temp_flags; }
+ const dSv_memBit_c& getTempFlagsConst() const { return temp_flags; }
+
+private:
+ dSv_memBit_c temp_flags;
+ u8 padding30[2];
+};
+
+class dSv_memory2_c {
+public:
+ dSv_memory2_c(void); // the assembly for this is in d_com_inf_game.s
+ void init(void);
+ void onVisitedRoom(int);
+ void offVisitedRoom(int);
+ BOOL isVisitedRoom(int);
+
+private:
+ u32 unk0[2];
+};
+
+class dSv_danBit_c {
+public:
+ bool init(s8);
+ void onSwitch(int);
+ void offSwitch(int);
+ BOOL isSwitch(int) const;
+ BOOL revSwitch(int);
+ void onItem(int);
+ BOOL isItem(int) const;
+
+private:
+ s8 mStageNum;
+ u8 unk1;
+ u8 unk2[2];
+ u32 switch_bitfield[2];
+ u32 item_bitfield[4];
+ s16 unk28[16];
+};
+
+class dSv_zoneBit_c {
+public:
+ void init(void);
+ void clearRoomSwitch(void);
+ void clearRoomItem(void);
+ void onSwitch(int);
+ void offSwitch(int);
+ BOOL isSwitch(int) const;
+ BOOL revSwitch(int);
+ void onOneSwitch(int);
+ void offOneSwitch(int);
+ BOOL isOneSwitch(int) const;
+ BOOL revOneSwitch(int);
+ void onItem(int);
+ BOOL isItem(int) const;
+ void onOneItem(int);
+ BOOL isOneItem(int) const;
+
+private:
+ u16 switch_bitfield[2];
+ u16 room_switch;
+ u16 item_bitfield[2];
+ u16 room_item;
+ u16 unk12;
+};
+
+class dSv_zoneActor_c {
+public:
+ void init(void);
+ void on(int);
+ void off(int);
+ BOOL is(int) const;
+
+ static const int ACTOR_MAX = 0xFFFF;
+
+private:
+ u32 actor_bitfield[4];
+};
+
+class dSv_zone_c {
+public:
+ dSv_zone_c(void); // the assembly for this is in d_com_inf_game.s
+ void init(int);
+ dSv_zoneBit_c& getZoneBit() { return zone_bit; }
+ const dSv_zoneBit_c& getZoneBitConst() const { return zone_bit; }
+ dSv_zoneActor_c& getZoneActor() { return zone_actor; }
+ const dSv_zoneActor_c& getZoneActorConst() const { return zone_actor; }
+
+ s8& getUnk0() { return unk0; }
+
+private:
+ s8 unk0;
+ u8 unk1;
+ dSv_zoneBit_c zone_bit;
+ dSv_zoneActor_c zone_actor;
+};
+
+class dSv_restart_c {
+public:
+ void setRoom(const cXyz&, s16, s8);
+
+private:
+ u8 unk0;
+ u8 unk1[5];
+ s16 mXRotation;
+ cXyz mPosition;
+ u8 padding20[16];
+};
+
+class dSv_turnRestart_c {
+public:
+ void set(const cXyz&, s16, s8, u32);
+
+private:
+ cXyz mPosition;
+ u32 unk12;
+ s16 mXRotation;
+ s8 unk18;
+};
+
+class dSv_reserve_c {
+public:
+private:
+ u8 unk[80];
+};
+
+class dSv_save_c {
+public:
+ void init(void);
+ dSv_memory2_c* getSave2(int);
+ dSv_player_c& getPlayer() { return player; }
+ dSv_player_status_a_c& getPlayerStatusA() { return player.getPlayerStatusA(); }
+ dSv_player_get_item_c& getPlayerGetItem() { return player.getPlayerGetItem(); }
+ dSv_player_item_record_c& getPlayerItemRecord() { return player.getPlayerItemRecord(); }
+ dSv_player_item_max_c& getPlayerItemMax() { return player.getPlayerItemMax(); }
+ dSv_player_last_mark_info_c& getPlayerLastMarkInfo() { return player.getPlayerLastMarkInfo(); }
+ dSv_player_item_c& getPlayerItem() { return player.getPlayerItem(); }
+ dSv_player_collect_c& getPlayerCollect() { return player.getPlayerCollect(); }
+ dSv_light_drop_c& getLightDrop() { return player.getLightDrop(); }
+ dSv_event_c& getEventFlags() { return event_flags; }
+
+ void setPlayerStatusAWallet(u8 lv) { player.setPlayerStatusAWalletLV(lv); }
+
+ static const int STAGE_MAX = 4;
+
+private:
+ dSv_player_c player;
+ dSv_memory_c area_flags[32];
+ dSv_memory2_c unk_flags[64];
+ dSv_event_c event_flags;
+ dSv_reserve_c reserve;
+ dSv_MiniGame_c minigame_flags;
+};
+#pragma pack(push, 1)
+class dSv_info_c {
+public:
+ void init(void);
+ void getSave(int);
+ void putSave(int);
+ void initZone(void);
+ u32 createZone(int);
+ void onSwitch(int, int);
+ void offSwitch(int, int);
+ BOOL isSwitch(int, int) const;
+ BOOL revSwitch(int, int);
+ void onItem(int, int);
+ BOOL isItem(int, int) const;
+ void onActor(int, int);
+ void offActor(int, int);
+ BOOL isActor(int, int) const;
+ void memory_to_card(char*, int);
+ void card_to_memory(char*, int);
+ void initdata_to_card(char*, int);
+
+ dSv_save_c& getSaveFile() { return save_file; }
+ dSv_memory_c& getMemory() { return memory; }
+ dSv_zone_c* getZones() { return zones; }
+ dSv_player_c& getPlayer() { return save_file.getPlayer(); }
+ dSv_event_c& getEvent() { return events; }
+
+private:
+ /* 0x000 */ dSv_save_c save_file;
+ /* 0x958 */ dSv_memory_c memory;
+ /* 0x978 */ dSv_danBit_c dungeon_bit;
+ /* 0x9B4 */ dSv_zone_c zones[32];
+ /* 0xDB4 */ dSv_restart_c restart;
+ /* 0xDD8 */ dSv_event_c events;
+ /* 0xED8 */ dSv_turnRestart_c turn_restart;
+};
+#pragma pack(pop)
+
#endif /* D_SAVE_D_SAVE_H */
diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h
index 2f2bbfb6e0..75bd5ac4aa 100644
--- a/include/dolphin/gx/GXTexture.h
+++ b/include/dolphin/gx/GXTexture.h
@@ -3,4 +3,25 @@
#include "dolphin/types.h"
+struct _GXColor {
+ void operator=(const _GXColor& rhs) {
+ r = rhs.r;
+ g = rhs.g;
+ b = rhs.b;
+ a = rhs.a;
+ }
+
+ u8 r;
+ u8 g;
+ u8 b;
+ u8 a;
+};
+
+struct GXColorS10 {
+ s16 r;
+ s16 g;
+ s16 b;
+ s16 a;
+};
+
#endif /* GXTEXTURE_H */
diff --git a/include/dolphin/mtx/vec.h b/include/dolphin/mtx/vec.h
index 2d959e4bd7..3234768cf8 100644
--- a/include/dolphin/mtx/vec.h
+++ b/include/dolphin/mtx/vec.h
@@ -3,4 +3,14 @@
#include "dolphin/types.h"
+struct Vec {
+ float x, y, z;
+ float GetX() const { return x; }
+ float GetY() const { return y; }
+ float GetZ() const { return z; }
+ float getXDiff(const Vec* other) const { return x - other->x; }
+ float getYDiff(const Vec* other) const { return y - other->y; }
+ float getZDiff(const Vec* other) const { return z - other->z; }
+};
+
#endif /* VEC_H */
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index e6a3b3971a..84640448e0 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -1,6 +1,118 @@
#ifndef M_DO_M_DO_EXT_H
#define M_DO_M_DO_EXT_H
+#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "dolphin/types.h"
+struct J3DModelData {};
+
+struct J3DModel {
+ /* 80327100 */ void initialize();
+ /* 80327184 */ void entryModelData(J3DModelData*, u32, u32);
+ /* 803275FC */ void newDifferedDisplayList(u32);
+ /* 8032767C */ void lock();
+ /* 803276B4 */ void unlock();
+ /* 803279A0 */ void diff();
+};
+
+struct J3DMaterialTable;
+struct J3DAnmTextureSRTKey {
+ /* 8032B0C0 */ void searchUpdateMaterialID(J3DMaterialTable*);
+};
+
+struct J3DAnmTexPattern {
+ /* 8032B004 */ void searchUpdateMaterialID(J3DMaterialTable*);
+};
+
+struct J3DAnmTevRegKey {
+ /* 8032B780 */ void searchUpdateMaterialID(J3DMaterialTable*);
+};
+
+struct J3DAnmColor {
+ /* 8032A8A4 */ void searchUpdateMaterialID(J3DMaterialTable*);
+};
+
+struct J3DMaterialTable {
+ /* 8032FAF4 */ void entryMatColorAnimator(J3DAnmColor*);
+ /* 8032FBC8 */ void entryTexNoAnimator(J3DAnmTexPattern*);
+ /* 8032FCC4 */ void entryTexMtxAnimator(J3DAnmTextureSRTKey*);
+ /* 8032FE70 */ void entryTevRegAnimator(J3DAnmTevRegKey*);
+};
+
+struct J3DAnmTransform {};
+
+#pragma pack(push, 1)
+class mDoExt_baseAnm {
+public:
+ /* 8000D320 */ void initPlay(s16, int, f32, s16, s16);
+ /* 8000D428 */ void play();
+
+private:
+ J3DFrameCtrl frame_control;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class mDoExt_btkAnm {
+public:
+ mDoExt_btkAnm(void);
+ /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16);
+ /* 8000D6D8 */ void entry(J3DMaterialTable*, f32);
+
+private:
+ mDoExt_baseAnm base_anm;
+ u32 field_0x14;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class mDoExt_brkAnm {
+public:
+ mDoExt_brkAnm(void);
+ /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
+ /* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
+
+private:
+ mDoExt_baseAnm mDoExt_baseAnm;
+ u32 field_0x14;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class mDoExt_bpkAnm {
+public:
+ mDoExt_bpkAnm(void);
+ /* 8000D47C */ void init(J3DMaterialTable*, J3DAnmColor*, int, int, f32, s16, s16);
+ /* 8000D518 */ void entry(J3DMaterialTable*, f32);
+
+private:
+ mDoExt_baseAnm mDoExt_baseAnm;
+ u32 field_0x14;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class mDoExt_bckAnm {
+public:
+ mDoExt_bckAnm(void);
+ /* 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
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+class mDoExt_McaMorfCallBack1_c {
+public:
+private:
+ void* vtable;
+};
+#pragma pack(pop)
+
#endif /* M_DO_M_DO_EXT_H */