summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-10-19 00:38:01 -0700
committerGitHub <noreply@github.com>2022-10-19 00:38:01 -0700
commitf03b959831d308b63ba72d79f7814faaa6818481 (patch)
treee5b31e52e6755877e7402cd81f8f490565b1855c /include
parent4913395dbd1a33d794028ceb82579b4baffe954d (diff)
parentc3a6d117295705a486bbd67cc0c84991b4d139c3 (diff)
Merge pull request #211 from TakaRikka/work1
d_attention / d_a_player / d_demo + misc
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DJoint.h4
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DJointTree.h1
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DModelData.h1
-rw-r--r--include/JSystem/J3DGraphBase/J3DDrawBuffer.h39
-rw-r--r--include/JSystem/J3DGraphBase/J3DPacket.h20
-rw-r--r--include/JSystem/J3DGraphBase/J3DShape.h16
-rw-r--r--include/JSystem/J3DGraphBase/J3DShapeMtx.h36
-rw-r--r--include/JSystem/J3DGraphBase/J3DSys.h3
-rw-r--r--include/JSystem/J3DGraphBase/J3DTransform.h7
-rw-r--r--include/JSystem/J3DGraphLoader/J3DJointFactory.h45
-rw-r--r--include/JSystem/J3DGraphLoader/J3DShapeFactory.h74
-rw-r--r--include/JSystem/JGeometry.h26
-rw-r--r--include/JSystem/JStudio/JStudio/jstudio-object.h30
-rw-r--r--include/JSystem/JStudio/JStudio/stb-data-parse.h2
-rw-r--r--include/JSystem/JStudio/JStudio/stb.h40
-rw-r--r--include/JSystem/JSupport/JSupport.h2
-rw-r--r--include/MSL_C/MSL_Common/Src/wchar_io.h2
-rw-r--r--include/Z2AudioLib/Z2SeqMgr.h22
-rw-r--r--include/d/a/d_a_alink.h20
-rw-r--r--include/d/a/d_a_player.h24
-rw-r--r--include/d/bg/d_bg_s_acch.h2
-rw-r--r--include/d/com/d_com_inf_game.h75
-rw-r--r--include/d/com/d_com_static.h28
-rw-r--r--include/d/d_attention.h159
-rw-r--r--include/d/d_demo.h28
-rw-r--r--include/d/d_drawlist.h4
-rw-r--r--include/d/d_lib.h8
-rw-r--r--include/d/event/d_event.h2
-rw-r--r--include/d/msg/d_msg_object.h4
-rw-r--r--include/d/particle/d_particle.h23
-rw-r--r--include/dolphin/base/PPCArch.h8
-rw-r--r--include/f_op/f_op_actor.h23
-rw-r--r--include/m_Do/m_Do_audio.h16
-rw-r--r--include/m_Do/m_Do_ext.h90
-rw-r--r--include/m_Do/m_Do_graphic.h1
-rw-r--r--include/m_Do/m_Do_mtx.h2
-rw-r--r--include/rel/d/a/d_a_boomerang/d_a_boomerang.h4
-rw-r--r--include/rel/d/a/d_a_movie_player/d_a_movie_player.h24
-rw-r--r--include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h144
39 files changed, 812 insertions, 247 deletions
diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h
index 0474f4eb5a..94ce45c74d 100644
--- a/include/JSystem/J3DGraphAnimator/J3DJoint.h
+++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h
@@ -68,13 +68,15 @@ public:
static J3DMtxCalc* mCurrentMtxCalc;
private:
+ friend struct J3DJointFactory;
+
/* 0x00 */ void* mCallBackUserData;
/* 0x04 */ J3DJointCallBack mCallBack;
/* 0x08 */ void* field_0x8;
/* 0x0C */ J3DJoint* mChild;
/* 0x10 */ J3DJoint* mYounger;
/* 0x14 */ u16 mJntNo;
- /* 0x16 */ u8 mMtxType;
+ /* 0x16 */ u8 mKind;
/* 0x17 */ u8 mScaleCompensate;
/* 0x18 */ J3DTransformInfo mTransformInfo;
/* 0x38 */ f32 mBoundingSphereRadius;
diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h
index b8e8267339..4937fdae32 100644
--- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h
+++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h
@@ -34,6 +34,7 @@ public:
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
u16 getJointNum() const { return mJointNum; }
u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; }
+ JUTNameTab* getJointName() const { return mJointName; }
J3DJoint* getRootNode() { return mRootNode; }
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h
index 5371f8113a..bc4c2ba9a6 100644
--- a/include/JSystem/J3DGraphAnimator/J3DModelData.h
+++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h
@@ -33,6 +33,7 @@ public:
J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); }
J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); }
J3DJointTree& getJointTree() { return mJointTree; }
+ JUTNameTab* getJointName() const { return mJointTree.getJointName(); }
Mtx& getInvJointMtx(s32 idx) const { return mJointTree.getInvJointMtx(idx); }
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
index 38cc0e08c2..b937d16387 100644
--- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
+++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
@@ -11,22 +11,37 @@ class J3DDrawPacket;
class J3DMatPacket;
class J3DShapePacket;
-typedef void (*J3DDrawBuffer_DrawFunc)(const J3DDrawBuffer* this_);
+typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*);
+typedef void (J3DDrawBuffer::*drawFunc)() const;
class J3DDrawBuffer {
public:
+ enum EDrawType {
+ DRAW_HEAD,
+ DRAW_TAIL,
+ };
+
+ enum ESortType {
+ SORT_MAT,
+ SORT_MAT_ANM,
+ SORT_Z,
+ SORT_MODEL,
+ SORT_INVALID,
+ SORT_NON,
+ };
+
J3DDrawBuffer() { initialize(); }
~J3DDrawBuffer();
void initialize();
J3DError allocBuffer(u32);
void frameInit();
- void entryMatSort(J3DMatPacket*);
- void entryMatAnmSort(J3DMatPacket*);
- void entryZSort(J3DMatPacket*);
- void entryModelSort(J3DMatPacket*);
- void entryInvalidSort(J3DMatPacket*);
- bool entryNonSort(J3DMatPacket*);
- bool entryImm(J3DPacket* pPacket, u16 index);
+ int entryMatSort(J3DMatPacket*);
+ int entryMatAnmSort(J3DMatPacket*);
+ int entryZSort(J3DMatPacket*);
+ int entryModelSort(J3DMatPacket*);
+ int entryInvalidSort(J3DMatPacket*);
+ int entryNonSort(J3DMatPacket*);
+ int entryImm(J3DPacket* pPacket, u16 index);
void draw() const;
void drawHead() const;
void drawTail() const;
@@ -43,12 +58,12 @@ public:
/* 0x10 */ f32 mZNear;
/* 0x14 */ f32 mZFar;
/* 0x18 */ f32 mZRatio;
- /* 0x1C */ Mtx* mpZMtx;
+ /* 0x1C */ MtxP mpZMtx;
/* 0x20 */ J3DPacket* mpCallBackPacket;
- static u8 sortFuncTable[72];
- static u8 drawFuncTable[24];
- static u8 entryNum[4 + 4 /* padding */];
+ static sortFunc sortFuncTable[6];
+ static drawFunc drawFuncTable[2];
+ static int entryNum;
};
#endif /* J3DDRAWBUFFER_H */
diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h
index 6552c461af..232db283d3 100644
--- a/include/JSystem/J3DGraphBase/J3DPacket.h
+++ b/include/JSystem/J3DGraphBase/J3DPacket.h
@@ -51,27 +51,29 @@ public:
class J3DPacket {
public:
J3DPacket() {
- mpNextSibling = NULL;
+ mpNextPacket = NULL;
mpFirstChild = NULL;
mpUserData = NULL;
}
void addChildPacket(J3DPacket*);
- J3DPacket* getNextPacket() const { return mpNextSibling; }
+
+ J3DPacket* getNextPacket() const { return mpNextPacket; }
+ void setNextPacket(J3DPacket* i_packet) { mpNextPacket = i_packet; }
- inline void clear() {
- mpNextSibling = NULL;
+ void drawClear() {
+ mpNextPacket = NULL;
mpFirstChild = NULL;
}
void setUserArea(u32 area) { mpUserData = (void*)area; }
- virtual bool entry(J3DDrawBuffer*);
+ virtual int entry(J3DDrawBuffer*);
virtual void draw();
virtual ~J3DPacket() {}
public:
- /* 0x04 */ J3DPacket* mpNextSibling;
+ /* 0x04 */ J3DPacket* mpNextPacket;
/* 0x08 */ J3DPacket* mpFirstChild;
/* 0x0C */ void* mpUserData;
}; // Size: 0x10
@@ -143,19 +145,21 @@ public:
void endDiff();
bool isSame(J3DMatPacket*) const;
+ J3DMaterial* getMaterial() const { return mpMaterial; }
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
+ bool isChanged() const { return mDiffFlag < 0; }
virtual ~J3DMatPacket();
- virtual bool entry(J3DDrawBuffer*);
+ virtual int entry(J3DDrawBuffer*);
virtual void draw();
public:
/* 0x28 */ J3DShapePacket* mpInitShapePacket;
/* 0x2C */ J3DShapePacket* mpShapePacket;
/* 0x30 */ J3DMaterial* mpMaterial;
- /* 0x34 */ u32 mSortFlags;
+ /* 0x34 */ u32 mDiffFlag;
/* 0x38 */ J3DTexture* mpTexture;
/* 0x3C */ J3DMaterialAnm* mpMaterialAnm;
}; // Size: 0x40
diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h
index f18551d7ed..85cf0da8e9 100644
--- a/include/JSystem/J3DGraphBase/J3DShape.h
+++ b/include/JSystem/J3DGraphBase/J3DShape.h
@@ -27,6 +27,11 @@ static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
class J3DCurrentMtx : public J3DCurrentMtxInfo {
public:
+ J3DCurrentMtx() {
+ mMtxIdxRegA = 0x3cf3cf00;
+ mMtxIdxRegB = 0x00f3cf3c;
+ }
+
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
@@ -54,6 +59,14 @@ enum J3DShpFlag {
class J3DShape {
public:
+ J3DShape() {
+ initialize();
+ }
+
+ enum {
+ kVcdVatDLSize = 0xC0,
+ };
+
/* 80314B48 */ void initialize();
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
@@ -93,11 +106,14 @@ public:
inline u32 getMtxGroupNum() const { return mMtxGroupNum; }
inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
+
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
static void* sOldVcdVatCmd;
private:
+ friend struct J3DShapeFactory;
+
/* 0x04 */ J3DMaterial* mMaterial;
/* 0x08 */ u16 mIndex;
/* 0x0A */ u16 mMtxGroupNum;
diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h
index 0a346b2068..1b745e5fc1 100644
--- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h
+++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h
@@ -24,6 +24,10 @@ extern u8 struct_804515B0[4];
class J3DShapeMtx {
public:
+ J3DShapeMtx(u16 useMtxIndex)
+ : mUseMtxIndex(useMtxIndex)
+ {}
+
/* 803130A8 */ void resetMtxLoadCache();
/* 803130E4 */ void loadMtxIndx_PNGP(int, u16) const;
/* 80313128 */ void loadMtxIndx_PCPU(int, u16) const;
@@ -54,6 +58,10 @@ private:
class J3DShapeMtxConcatView : public J3DShapeMtx {
public:
+ J3DShapeMtxConcatView(u16 useMtxIndex)
+ : J3DShapeMtx(useMtxIndex)
+ {}
+
/* 80314730 */ virtual ~J3DShapeMtxConcatView();
/* 803147E0 */ virtual u32 getType() const;
/* 80313C54 */ virtual void load() const;
@@ -73,6 +81,10 @@ public:
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
public:
+ J3DShapeMtxYBBoardConcatView(u16 useMtxIndex)
+ : J3DShapeMtxConcatView(useMtxIndex)
+ {}
+
/* 80314520 */ virtual ~J3DShapeMtxYBBoardConcatView();
/* 803147E0 */ virtual u32 getType() const;
/* 803143E4 */ virtual void load() const;
@@ -80,6 +92,10 @@ public:
class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView {
public:
+ J3DShapeMtxBBoardConcatView(u16 useMtxIndex)
+ : J3DShapeMtxConcatView(useMtxIndex)
+ {}
+
/* 803145A4 */ virtual ~J3DShapeMtxBBoardConcatView();
/* 803147E0 */ virtual u32 getType() const;
/* 803142D4 */ virtual void load() const;
@@ -87,6 +103,12 @@ public:
class J3DShapeMtxMulti : public J3DShapeMtx {
public:
+ J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
+ : J3DShapeMtx(useMtxIndex)
+ , mUseMtxNum(useMtxNum)
+ , mUseMtxIndexTable(useMtxIndexTable)
+ {}
+
/* 803146B0 */ virtual ~J3DShapeMtxMulti();
/* 803147E0 */ virtual u32 getType() const;
/* 80273E08 */ virtual u32 getUseMtxNum() const;
@@ -96,11 +118,17 @@ public:
private:
/* 0x6 */ u16 mUseMtxNum;
- /* 0x8 */ u16* mUseMtxIndex;
+ /* 0x8 */ u16* mUseMtxIndexTable;
};
-class J3DShapeMtxMultiConcatView : public J3DShapeMtx {
+class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView {
public:
+ J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
+ : J3DShapeMtxConcatView(useMtxIndex)
+ , mUseMtxNum(useMtxNum)
+ , mUseMtxIndexTable(useMtxIndexTable)
+ {}
+
/* 8031461C */ virtual ~J3DShapeMtxMultiConcatView();
/* 803147E0 */ virtual u32 getType() const;
/* 80273E08 */ virtual u32 getUseMtxNum() const;
@@ -111,7 +139,7 @@ public:
private:
/* 0x6 */ u16 mUseMtxNum;
- /* 0x8 */ u16* mUseMtxIndex;
+ /* 0x8 */ u16* mUseMtxIndexTable;
};
-#endif /* J3DSHAPEMTX_H */
+#endif /* J3DSHAPEMTX_H */ \ No newline at end of file
diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h
index fd75fc48f7..01f882e3f4 100644
--- a/include/JSystem/J3DGraphBase/J3DSys.h
+++ b/include/JSystem/J3DGraphBase/J3DSys.h
@@ -93,6 +93,9 @@ struct J3DSys {
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
void setTexture(J3DTexture* pTex) { mTexture = pTex; }
+ J3DTexture* getTexture() { return mTexture; }
+
+ void setNBTScale(Vec* scale) { mNBTScale = scale; }
void onFlag(u32 flag) { mFlags |= flag; }
diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h
index 1bdc7ebb88..a162bd5b7c 100644
--- a/include/JSystem/J3DGraphBase/J3DTransform.h
+++ b/include/JSystem/J3DGraphBase/J3DTransform.h
@@ -1,13 +1,14 @@
#ifndef J3DTRANSFORM_H
#define J3DTRANSFORM_H
+#include "JSystem/JGeometry.h"
#include "dolphin/mtx/mtxvec.h"
#include "dolphin/types.h"
struct J3DTransformInfo {
- /* 0x00 */ Vec mScale;
- /* 0x0C */ SVec mRotation;
- /* 0x14 */ Vec mTranslate;
+ /* 0x00 */ JGeometry::TVec3<f32> mScale;
+ /* 0x0C */ JGeometry::TVec3<s16> mRotation;
+ /* 0x14 */ JGeometry::TVec3<f32> mTranslate;
}; // Size: 0x20
extern J3DTransformInfo const j3dDefaultTransformInfo;
diff --git a/include/JSystem/J3DGraphLoader/J3DJointFactory.h b/include/JSystem/J3DGraphLoader/J3DJointFactory.h
index 2e992b48f3..98409802a7 100644
--- a/include/JSystem/J3DGraphLoader/J3DJointFactory.h
+++ b/include/JSystem/J3DGraphLoader/J3DJointFactory.h
@@ -1,6 +1,49 @@
#ifndef J3DJOINTFACTORY_H
#define J3DJOINTFACTORY_H
+#include "JSystem/J3DGraphBase/J3DTransform.h"
+#include "JSystem/JGeometry.h"
#include "dolphin/types.h"
-#endif /* J3DJOINTFACTORY_H */
+struct J3DJoint;
+struct ResNTAB;
+
+struct J3DJointInitData {
+ /* 0x00 */ u16 mKind;
+ /* 0x02 */ bool mScaleCompensate;
+ /* 0x04 */ J3DTransformInfo mTransformInfo;
+ /* 0x24 */ f32 mRadius;
+ /* 0x28 */ Vec mMin;
+ /* 0x2C */ Vec mMax;
+}; // Size: 0x30
+
+struct J3DJointBlock {
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u16 mJointNum;
+ /* 0x0A */ u16 _pad;
+
+ /* 0x0C */ J3DJointInitData* mJointInitData;
+ /* 0x10 */ u16* mIndexTable;
+ /* 0x14 */ ResNTAB* mNameTable;
+};
+
+struct J3DJointFactory {
+ /* 80337178 */ J3DJointFactory(J3DJointBlock const&);
+ /* 803371D0 */ J3DJoint* create(int);
+
+ J3DJointInitData* mJointInitData;
+ u16* mIndexTable;
+
+ u16 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; }
+ u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; }
+ const J3DTransformInfo& getTransformInfo(int no) const {
+ return mJointInitData[mIndexTable[no]].mTransformInfo;
+ }
+ f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; }
+ Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; }
+ Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; }
+};
+
+#endif /* J3DJOINTFACTORY_H */ \ No newline at end of file
diff --git a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
index 6f1f64ce13..385a217e25 100644
--- a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
+++ b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
@@ -1,6 +1,78 @@
#ifndef J3DSHAPEFACTORY_H
#define J3DSHAPEFACTORY_H
+#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
-#endif /* J3DSHAPEFACTORY_H */
+struct J3DShape;
+struct J3DShapeMtx;
+struct J3DShapeDraw;
+struct ResNTAB;
+
+struct J3DShapeInitData {
+ /* 0x00 */ u8 mShapeMtxType;
+ /* 0x02 */ u16 mMtxGroupNum;
+ /* 0x04 */ u16 mVtxDescListIndex;
+ /* 0x06 */ u16 mMtxInitDataIndex;
+ /* 0x08 */ u16 mDrawInitDataIndex;
+ /* 0x0C */ f32 mRadius;
+ /* 0x10 */ Vec mMin;
+ /* 0x1C */ Vec mMax;
+};
+
+struct J3DShapeMtxInitData {
+ /* 0x00 */ u16 mUseMtxIndex;
+ /* 0x02 */ u16 mUseMtxCount;
+ /* 0x04 */ u32 mFirstUseMtxIndex;
+};
+
+struct J3DShapeDrawInitData {
+ /* 0x00 */ u32 mDisplayListSize;
+ /* 0x04 */ u32 mDisplayListIndex;
+};
+
+struct J3DShapeBlock {
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u16 mShapeNum;
+ /* 0x0A */ u16 _pad;
+
+ /* 0x0C */ J3DShapeInitData* mShapeInitData;
+ /* 0x10 */ u16* mIndexTable;
+ /* 0x14 */ ResNTAB* mNameTable;
+ /* 0x18 */ GXVtxDescList* mVtxDescList;
+ /* 0x1C */ u16* mMtxTable;
+ /* 0x20 */ u8* mDisplayListData;
+ /* 0x24 */ J3DShapeMtxInitData* mMtxInitData;
+ /* 0x28 */ J3DShapeDrawInitData* mDrawInitData;
+};
+
+struct J3DShapeFactory {
+ /* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
+ /* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*);
+ /* 803375BC */ J3DShapeMtx* newShapeMtx(u32, int, int) const;
+ /* 8033784C */ J3DShapeDraw* newShapeDraw(int, int) const;
+ /* 803378D8 */ void allocVcdVatCmdBuffer(u32);
+ /* 80337944 */ s32 calcSize(int, u32);
+ /* 803379D8 */ s32 calcSizeVcdVatCmdBuffer(u32);
+ /* 803379E8 */ s32 calcSizeShapeMtx(u32, int, int) const;
+
+ /* 0x00 */ J3DShapeInitData* mShapeInitData;
+ /* 0x04 */ u16* mIndexTable;
+ /* 0x08 */ GXVtxDescList* mVtxDescList;
+ /* 0x0C */ u16* mMtxTable;
+ /* 0x10 */ u8* mDisplayListData;
+ /* 0x14 */ J3DShapeMtxInitData* mMtxInitData;
+ /* 0x18 */ J3DShapeDrawInitData* mDrawInitData;
+ /* 0x1C */ u8* mVcdVatCmdBuffer;
+
+ u32 getMtxGroupNum(int no) const { return mShapeInitData[mIndexTable[no]].mMtxGroupNum; }
+ GXVtxDescList* getVtxDescList(int no) const { return (GXVtxDescList*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); }
+ f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; }
+ Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
+ Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
+};
+
+
+#endif /* J3DSHAPEFACTORY_H */ \ No newline at end of file
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h
index 42e505a7b5..6eb88b0279 100644
--- a/include/JSystem/JGeometry.h
+++ b/include/JSystem/JGeometry.h
@@ -20,6 +20,18 @@ struct TVec3 {
};
template <>
+struct TVec3<s16> {
+ s16 x, y, z;
+
+ TVec3& operator=(const TVec3& b) {
+ // Force copies to use lwz/lha
+ *((s32*)this) = *((s32*)&b);
+ z = b.z;
+ return *this;
+ }
+};
+
+template <>
struct TVec3<f32> {
f32 x;
f32 y;
@@ -47,6 +59,20 @@ struct TVec3<f32> {
y = a.y * b.y;
z = a.z * b.z;
}
+
+ inline TVec3<f32>& operator=(const TVec3<f32>& b) {
+ register f32* dst = &x;
+ const register f32* src = &b.x;
+ register f32 x_y;
+ register f32 z;
+ asm {
+ psq_l x_y, 0(src), 0, 0
+ psq_st x_y, 0(dst), 0, 0
+ lfs z, 8(src)
+ stfs z, 8(dst)
+ };
+ return *this;
+ }
};
template <typename T>
diff --git a/include/JSystem/JStudio/JStudio/jstudio-object.h b/include/JSystem/JStudio/JStudio/jstudio-object.h
index 9f78474e13..b0da5a2045 100644
--- a/include/JSystem/JStudio/JStudio/jstudio-object.h
+++ b/include/JSystem/JStudio/JStudio/jstudio-object.h
@@ -9,7 +9,9 @@
namespace JStudio {
namespace data {
- struct TEOperationData {};
+ enum TEOperationData {
+ UNK_0x19 = 0x19,
+ };
};
struct TAdaptor;
@@ -50,6 +52,26 @@ public:
/* 8028680C */ virtual void do_wait(u32);
/* 8028682C */ virtual void do_data(void const*, u32, void const*, u32);
+ void prepareAdaptor() {
+ if (mpAdaptor != NULL) {
+ // mpAdaptor->adaptor_setObject_(this);
+ // mpAdaptor->adaptor_do_begin();
+ }
+ }
+
+ template<class T>
+ T* createFromAdaptor(const stb::data::TParse_TBlock_object& param_0, T* param_1) {
+ T* n = new T(param_0, param_1);
+
+ if (n == NULL) {
+ return NULL;
+ }
+
+ n->prepareAdaptor();
+
+ return n;
+ }
+
/* 0x34 */ TAdaptor* mpAdaptor;
};
@@ -86,7 +108,11 @@ struct TAdaptor {
/* 80286648 */ void adaptor_setVariableValue_FVR_INDEX_(JStudio::TAdaptor*, JStudio::TControl*,
u32, void const*, u32);
- /* 0x4 */ TObject* pObject_;
+ void adaptor_setObject_(const TObject* pObject) {
+ pObject_ = pObject;
+ }
+
+ /* 0x4 */ const TObject* pObject_;
/* 0x8 */ TVariableValue* pValue_;
/* 0xC */ u32 u;
};
diff --git a/include/JSystem/JStudio/JStudio/stb-data-parse.h b/include/JSystem/JStudio/JStudio/stb-data-parse.h
index ef96a0d35f..b21486fcfb 100644
--- a/include/JSystem/JStudio/JStudio/stb-data-parse.h
+++ b/include/JSystem/JStudio/JStudio/stb-data-parse.h
@@ -73,7 +73,7 @@ struct TParse_TParagraph_data : public TParseData_aligned<4> {
};
TParse_TParagraph_data(const void* content) : TParseData_aligned<4>(content) {}
- /* 80289A80 */ void getData(TData*) const;
+ /* 80289A80 */ void getData(TData* pData) const;
};
// Parses a TObject ("demo object")
diff --git a/include/JSystem/JStudio/JStudio/stb.h b/include/JSystem/JStudio/JStudio/stb.h
index e54ddb4b83..ec5dfbb2e8 100644
--- a/include/JSystem/JStudio/JStudio/stb.h
+++ b/include/JSystem/JStudio/JStudio/stb.h
@@ -152,6 +152,46 @@ private:
/* 0x54 */ s32 _54;
};
+template <int T>
+struct TParseData {
+ TParseData(const void* pContent) {
+ data::TParse_TParagraph_data data(pContent);
+ set(data);
+ }
+
+ void set(const data::TParse_TParagraph_data& data) {
+ //data::TParse_TParagraph_data::TData* p = (data::TParse_TParagraph_data::TData*)this;
+ data.getData(m_data);
+ }
+
+ bool isEnd() const {
+ return m_data->_0 == 0;
+ }
+
+ bool empty() const {
+ return m_data->_c == NULL;
+ }
+
+ bool isValid() const {
+ return !empty() && m_data->_0 == 50;
+ }
+
+ data::TParse_TParagraph_data::TData* m_data;
+};
+
+template <int T>
+struct TParseData_fixed : public TParseData<T> {
+ TParseData_fixed(const void* pContent) : TParseData(pContent) {}
+
+ const void* getNext() const {
+ return m_data->_c;
+ }
+
+ bool isValid() const {
+ return TParseData::isValid() && getNext() != NULL;
+ }
+};
+
} // namespace stb
} // namespace JStudio
diff --git a/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h
index 7c1d91058a..e98dee1f98 100644
--- a/include/JSystem/JSupport/JSupport.h
+++ b/include/JSystem/JSupport/JSupport.h
@@ -3,7 +3,7 @@
template <typename T>
T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) {
- if (ptr == NULL) {
+ if (offset == NULL) {
return NULL;
} else {
return (T*)((s32)ptr + (s32)offset);
diff --git a/include/MSL_C/MSL_Common/Src/wchar_io.h b/include/MSL_C/MSL_Common/Src/wchar_io.h
index ba643b03fa..fc8d3d4332 100644
--- a/include/MSL_C/MSL_Common/Src/wchar_io.h
+++ b/include/MSL_C/MSL_Common/Src/wchar_io.h
@@ -3,4 +3,6 @@
#include "dolphin/types.h"
+typedef unsigned short wchar_t;
+
#endif /* MSL_COMMON_SRC_WCHAR_IO_H */
diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h
index 5a1ec56f38..3dedde1115 100644
--- a/include/Z2AudioLib/Z2SeqMgr.h
+++ b/include/Z2AudioLib/Z2SeqMgr.h
@@ -25,8 +25,8 @@ class Z2SeqMgr {
public:
Z2SeqMgr();
- void bgmStart(u32, u32, s32);
- void bgmStop(u32, s32);
+ void bgmStart(u32 i_bgmID, u32, s32);
+ void bgmStop(u32 i_bgmID, s32);
void subBgmStart(u32);
void subBgmStop();
void subBgmStopInner();
@@ -79,12 +79,12 @@ public:
void i_setTwilightGateVol(f32 vol) { mTwilightGateVol = vol; }
- void i_setWindStoneVol(f32 vol, u32 count) { field_0x94.move(vol, count); }
+ void i_setWindStoneVol(f32 vol, u32 count) { mWindStone.move(vol, count); }
- void i_bgmAllUnMute(u32 count) { field_0x74.move(1.0f, count); }
+ void i_bgmAllUnMute(u32 count) { mAllBgmMaster.move(1.0f, count); }
void i_unMuteSceneBgm(u32 count) {
- field_0x34.move(1.0f, 0);
+ mBgmPause.move(1.0f, 0);
field_0x44.move(1.0f, count);
}
@@ -94,15 +94,15 @@ private:
/* 0x08 */ JAISoundHandle field_0x08;
/* 0x0C */ JAISoundHandle field_0x0c;
/* 0x10 */ JAISoundID field_0x10;
- /* 0x14 */ Z2SoundFader field_0x14;
- /* 0x24 */ Z2SoundFader field_0x24;
- /* 0x34 */ Z2SoundFader field_0x34;
+ /* 0x14 */ Z2SoundFader mMainBgmMaster;
+ /* 0x24 */ Z2SoundFader mSubBgmMaster;
+ /* 0x34 */ Z2SoundFader mBgmPause;
/* 0x44 */ Z2SoundFader field_0x44;
- /* 0x54 */ Z2SoundFader field_0x54;
+ /* 0x54 */ Z2SoundFader mFanfareMute;
/* 0x64 */ Z2SoundFader field_0x64;
- /* 0x74 */ Z2SoundFader field_0x74;
+ /* 0x74 */ Z2SoundFader mAllBgmMaster;
/* 0x84 */ Z2SoundFader field_0x84;
- /* 0x94 */ Z2SoundFader field_0x94;
+ /* 0x94 */ Z2SoundFader mWindStone;
/* 0xA4 */ Z2SoundFader field_0xa4;
/* 0xB4 */ f32 mTwilightGateVol;
/* 0xB8 */ u16 field_0xb8;
diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h
index 7df6f5c7a6..f0caef5526 100644
--- a/include/d/a/d_a_alink.h
+++ b/include/d/a/d_a_alink.h
@@ -1430,7 +1430,7 @@ public:
/* 800E01CC */ void cancelBoomerangLock(fopAc_ac_c*);
/* 800E0210 */ fopAc_ac_c* getBoomerangActor();
/* 800E0244 */ bool checkBoomerangChargeEnd();
- /* 800E02B8 */ void checkBoomerangCarry(fopAc_ac_c*);
+ /* 800E02B8 */ BOOL checkBoomerangCarry(fopAc_ac_c*);
/* 800E03D0 */ void initBoomerangUpperAnimeSpeed(int);
/* 800E0440 */ BOOL checkBoomerangAnime() const;
/* 800E04AC */ BOOL checkBoomerangThrowAnime() const;
@@ -5596,17 +5596,17 @@ class daAlinkHIO_boom_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c mThrowAnm;
/* 0x14 */ daAlinkHIO_anm_c mCatchAnm;
- /* 0x28 */ s16 field_0x28;
+ /* 0x28 */ s16 field_0x28; // return time?
/* 0x2A */ s16 mBgThroughTime;
- /* 0x2C */ f32 field_0x2c;
- /* 0x30 */ f32 field_0x30;
- /* 0x34 */ f32 field_0x34;
- /* 0x38 */ f32 field_0x38;
- /* 0x3C */ f32 field_0x3c;
- /* 0x40 */ f32 field_0x40;
- /* 0x44 */ f32 field_0x44;
+ /* 0x2C */ f32 mIdleAnmSpeed;
+ /* 0x30 */ f32 mStartInterpolation;
+ /* 0x34 */ f32 mFlySpeed;
+ /* 0x38 */ f32 mFlySpeed2; // return speed?
+ /* 0x3C */ f32 mFlyDistMax;
+ /* 0x40 */ f32 mHorsebackFlyDistMax;
+ /* 0x44 */ f32 mLockDistMax;
/* 0x48 */ f32 mCatchSpeed;
-}; // Size: 0x4c
+}; // Size: 0x4C
class daAlinkHIO_boom_c0 {
public:
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 1e5e9c7604..f026d1bfa8 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -34,12 +34,15 @@ private:
class daPy_boomerangMove_c {
public:
/* 8015E5B0 */ void initOffset(cXyz const*);
- /* 8015E654 */ void posMove(cXyz*, s16*, fopAc_ac_c*, s16);
+ /* 8015E654 */ int posMove(cXyz*, s16*, fopAc_ac_c*, s16);
/* 8015E87C */ void bgCheckAfterOffset(cXyz const*);
+ static s16 m_dropAngleY;
+ static s16 m_eventKeepFlg;
+
private:
/* 0x0 */ u8 field_0x0;
- /* 0x2 */ u16 field_0x2;
+ /* 0x2 */ s16 field_0x2;
/* 0x4 */ f32 field_0x4;
/* 0x8 */ f32 field_0x8;
}; // Size: 0xC
@@ -213,7 +216,15 @@ public:
HEAVY_STATE_BOOTS = FLG0_UNK_40000000 | EQUIP_HEAVY_BOOTS | FLG0_UNK_20000,
};
- enum daPy_FLG1 { IS_WOLF = 0x2000000, FLG1_UNK_10000 = 0x10000, THROW_DAMAGE = 0x4000, FLG1_UNK_4 = 4, };
+
+ enum daPy_FLG1 {
+ IS_WOLF = 0x2000000,
+ FLG1_UNK_10000 = 0x10000,
+ THROW_DAMAGE = 0x4000,
+ FLG1_UNK_4 = 4,
+ FLG1_UNK_2 = 2,
+ };
+
enum daPy_FLG2 {
FLG2_UNK_20000000 = 0x20000000,
FLG2_UNK_4080000 = 0x4080000,
@@ -227,12 +238,14 @@ public:
UNK_FLG2_2 = 2,
UNK_DAPY_FLG2_1 = 1
};
+
enum daPy_FLG3 {
FLG3_UNK_2000000 = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
FLG3_UNK_100000 = 0x100000,
COPY_ROD_THROW_AFTER = 0x40000
};
+
enum daPy_ERFLG0 {
ERFLG0_UNK_8000000 = 0x8000000,
ERFLG0_UNK_1000000 = 0x1000000,
@@ -243,15 +256,18 @@ public:
ERFLG0_UNK_2 = 2,
ERFLG0_UNK_1 = 1,
};
+
enum daPy_ERFLG1 {
GANON_FINISH = 0x80000000,
UNK_FORCE_PUT_POS = 0x2000,
ERFLG1_UNK_2 = 2,
ERFLG1_UNK_1 = 1,
};
+
enum daPy_ERFLG2 {
ERFLG2_UNK_100 = 0x100,
};
+
enum daPy_RFLG0 {
RFLG0_UNK_8000000 = 0x8000000,
RFLG0_UNK_4000 = 0x4000,
@@ -321,7 +337,7 @@ public:
static u32 checkCarryStartLightBallA();
static u32 checkCarryStartLightBallB();
float getSpinnerRideSpeed() const;
- void checkSpinnerReflectEffect();
+ bool checkSpinnerReflectEffect();
static bool checkBoomerangCharge();
bool checkBoomerangChargeTime();
static daBoomerang_c* getThrowBoomerangActor();
diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h
index 0754ceb3ec..7a56b4d3d6 100644
--- a/include/d/bg/d_bg_s_acch.h
+++ b/include/d/bg/d_bg_s_acch.h
@@ -47,7 +47,7 @@ public:
bool ChkWallHit() { return m_flags & WALL_HIT; }
void SetCir(cXyz& pos) { m_cir.Set(pos.x, pos.z, pos.y + GetWallH(), m_wall_r); }
-};
+}; // Size: 0x40
class dBgS;
class dBgS_Acch : public cBgS_Chk, public dBgS_Chk {
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index 0d0a803c88..687eaf1aef 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -364,7 +364,10 @@ public:
void setPlayerPtr(int i, fopAc_ac_c* ptr) { mPlayerPtr[i] = ptr; }
void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; }
- void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) { mPlayer[i] = (daAlink_c*)ptr; mPlayerCameraID[camIdx] = 0; }
+ void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) {
+ mPlayer[i] = (daAlink_c*)ptr;
+ mPlayerCameraID[camIdx] = 0;
+ }
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; }
void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; }
bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; }
@@ -377,6 +380,8 @@ public:
return mCameraInfo[i].mCameraAttentionStatus & flag;
}
void setCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus = flag; }
+ void onCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus |= flag; }
+ void offCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus &= ~flag; }
void setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) {
mCameraInfo[camIdx].mCamera = p_cam;
mCameraInfo[camIdx].field_0x4 = param_2;
@@ -397,6 +402,7 @@ public:
int getMessageCountNumber() { return mMessageCountNum; }
void setWindowNum(u8 num) { mWindowNum = num; }
+ int getWindowNum() { return mWindowNum; }
dDlst_window_c* getWindow(int i) { return &mWindow[i]; }
void setWindow(int i, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5,
f32 param_6, int camID, int mode) {
@@ -1059,6 +1065,10 @@ inline u8 dComIfGs_getOptVibration() {
return g_dComIfG_gameInfo.info.getPlayer().getConfig().getVibration();
}
+inline u8 dComIfGs_getOptAttentionType() {
+ return g_dComIfG_gameInfo.info.getPlayer().getConfig().getAttentionType();
+}
+
inline BOOL dComIfGs_isTbox(int i_no) {
return g_dComIfG_gameInfo.info.getMemory().getBit().isTbox(i_no);
}
@@ -1397,7 +1407,7 @@ inline void dComIfGs_setTmpReg(u16 reg, u8 flag) {
g_dComIfG_gameInfo.info.getTmp().setEventReg(reg, flag);
}
-inline u8 dComIfGs_getTmpReg(u16 reg) {
+inline int dComIfGs_getTmpReg(u16 reg) {
return g_dComIfG_gameInfo.info.getTmp().getEventReg(reg);
}
@@ -1477,7 +1487,6 @@ inline void dComIfGs_setMemoryToCard(u8* p_saveData, int dataNum) {
g_dComIfG_gameInfo.info.memory_to_card((char*)p_saveData, dataNum);
}
-
void dComIfGp_setSelectItem(int index);
s32 dComIfGp_offHeapLockFlag(int flag);
void dComIfGp_createSubExpHeap2D();
@@ -2024,7 +2033,16 @@ inline BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag) {
return g_dComIfG_gameInfo.play.checkCameraAttentionStatus(i, flag);
}
-inline void dComIfGp_setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) {
+inline void dComIfGp_onCameraAttentionStatus(int i, u32 flag) {
+ g_dComIfG_gameInfo.play.onCameraAttentionStatus(i, flag);
+}
+
+inline void dComIfGp_offCameraAttentionStatus(int i, u32 flag) {
+ g_dComIfG_gameInfo.play.offCameraAttentionStatus(i, flag);
+}
+
+inline void dComIfGp_setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3,
+ int param_4) {
g_dComIfG_gameInfo.play.setCameraInfo(camIdx, p_cam, param_2, param_3, param_4);
}
@@ -2168,6 +2186,10 @@ inline void dComIfGp_setWindowNum(int num) {
g_dComIfG_gameInfo.play.setWindowNum(num);
}
+inline int dComIfGp_getWindowNum() {
+ return g_dComIfG_gameInfo.play.getWindowNum();
+}
+
inline dDlst_window_c* dComIfGp_getWindow(int i) {
return g_dComIfG_gameInfo.play.getWindow(i);
}
@@ -2288,7 +2310,8 @@ inline int dComIfGp_event_moveApproval(void* actor) {
inline int dComIfGp_event_order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4,
void* param_5, s16 eventID, u8 infoIdx) {
- return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, param_3, param_4, param_5, eventID, infoIdx);
+ return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, param_3, param_4,
+ param_5, eventID, infoIdx);
}
inline void dComIfGp_event_setGtItm(int i_itemNo) {
@@ -2436,10 +2459,10 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2,
param_10, param_11, 1.0f);
}
-inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3,
- const cXyz* param_4, u8 param_5, dPa_levelEcallBack* param_6,
- s8 param_7, const GXColor* param_8, const GXColor* param_9,
- const cXyz* param_10) {
+inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2,
+ const csXyz* param_3, const cXyz* param_4, u8 param_5,
+ dPa_levelEcallBack* param_6, s8 param_7, const GXColor* param_8,
+ const GXColor* param_9, const cXyz* param_10) {
return g_dComIfG_gameInfo.play.getParticle()->setNormal(
param_0, param_1, param_2, NULL, param_3, param_4, param_5, param_6, param_7, param_8,
param_9, param_10, 1.0f);
@@ -2454,20 +2477,29 @@ inline u32 dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const dKy_tev
param_9, param_10, param_11, 1.0f);
}
+inline u32 dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const csXyz* param_3,
+ const cXyz* param_4, u8 param_5, dPa_levelEcallBack* param_6,
+ s8 param_7, const GXColor* param_8, const GXColor* param_9,
+ const cXyz* param_10) {
+ return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, NULL, param_3,
+ param_4, param_5, param_6, param_7,
+ param_8, param_9, param_10, 1.0f);
+}
+
inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* param_2,
const cXyz* param_3) {
return dComIfGp_particle_set(param_0, param_1, NULL, param_2, param_3, 0xFF, NULL, -1, NULL,
NULL, NULL);
}
-inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const dKy_tevstr_c* param_2, const csXyz* param_3,
- const cXyz* param_4) {
+inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const dKy_tevstr_c* param_2,
+ const csXyz* param_3, const cXyz* param_4) {
return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL,
NULL, NULL);
}
-inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3,
- const cXyz* param_4) {
+inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2,
+ const csXyz* param_3, const cXyz* param_4) {
return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL,
NULL, NULL);
}
@@ -2496,7 +2528,6 @@ int dComIfGd_setShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3
f32 param_5, f32 param_6, f32 param_7, cBgS_PolyInfo& param_8,
dKy_tevstr_c* param_9, s16 param_10, f32 param_11, _GXTexObj* param_12);
-
inline int dComIfGd_setRealShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3,
f32 param_4, f32 param_5, dKy_tevstr_c* param_6) {
return g_dComIfG_gameInfo.drawlist.setRealShadow(param_0, param_1, param_2, param_3, param_4,
@@ -2522,6 +2553,10 @@ inline void dComIfGd_set2DOpa(dDlst_base_c* dlst) {
g_dComIfG_gameInfo.drawlist.set2DOpa(dlst);
}
+inline void dComIfGd_set2DXlu(dDlst_base_c* dlst) {
+ g_dComIfG_gameInfo.drawlist.set2DXlu(dlst);
+}
+
inline void dComIfGd_set2DOpaTop(dDlst_base_c* dlst) {
g_dComIfG_gameInfo.drawlist.set2DOpaTop(dlst);
}
@@ -2530,6 +2565,13 @@ inline view_class* dComIfGd_getView() {
return g_dComIfG_gameInfo.drawlist.getView();
}
+inline MtxP dComIfGd_getViewRotMtx() {
+ return ((camera_process_class*)g_dComIfG_gameInfo.drawlist.getView())->mViewMtxNoTrans;
+}
+inline MtxP dComIfGd_getViewMtx() {
+ return ((camera_process_class*)g_dComIfG_gameInfo.drawlist.getView())->mViewMtx;
+}
+
inline J3DDrawBuffer* dComIfGd_getListFilter() {
return g_dComIfG_gameInfo.drawlist.getOpaListFilter();
}
@@ -2562,6 +2604,11 @@ inline void dComIfGd_setListItem3D() {
g_dComIfG_gameInfo.drawlist.setXluListItem3D();
}
+inline void dComIfGd_setList3Dlast() {
+ g_dComIfG_gameInfo.drawlist.setOpaList3Dlast();
+ g_dComIfG_gameInfo.drawlist.setXluList3Dlast();
+}
+
inline void dComIfGd_setXluList2DScreen() {
g_dComIfG_gameInfo.drawlist.setXluList2DScreen();
}
diff --git a/include/d/com/d_com_static.h b/include/d/com/d_com_static.h
index 2268d3081a..9f15a06498 100644
--- a/include/d/com/d_com_static.h
+++ b/include/d/com/d_com_static.h
@@ -11,21 +11,36 @@ public:
class data_c {
public:
/* 80030F14 */ void set(s8, cXyz const&, cXyz const&, u8, u8, u8);
- /* 80030FBC */ void reset();
- /* 80030FCC */ void isSwitch();
- /* 800310C8 */ void check(fopAc_ac_c*);
- /* 80031038 */ void check(cXyz const&);
+ /* 80030FBC */ data_c* reset();
+ /* 80030FCC */ u8 isSwitch();
+ /* 800310C8 */ u8 check(fopAc_ac_c*);
+ /* 80031038 */ bool check(cXyz const&);
/* 80031150 */ void execute();
/* 80031F28 */ ~data_c();
/* 80031F64 */ data_c();
- };
+
+ void setNext(data_c* i_next) { mpNext = i_next; }
+ data_c* getNext() { return mpNext; }
+ u8 getType() { return mType; }
+
+ /* 0x00 */ s8 mRoomNo;
+ /* 0x01 */ bool field_0x1;
+ /* 0x02 */ u8 field_0x2;
+ /* 0x03 */ u8 field_0x3;
+ /* 0x04 */ u8 mType;
+ /* 0x08 */ cXyz field_0x8;
+ /* 0x14 */ cXyz field_0x14;
+ /* 0x20 */ data_c* mpNext;
+ }; // Size: 0x24
class room_c {
public:
/* 80031190 */ void add(daSus_c::data_c*);
/* 800311FC */ void reset();
/* 80031EE4 */ room_c();
- };
+
+ /* 0x0 */ data_c* mpData;
+ }; // Size: 0x4
/* 80031248 */ void newData(s8, cXyz const&, cXyz const&, u8, u8, u8);
/* 800313BC */ void reset();
@@ -35,6 +50,7 @@ public:
static u8 mData[1152];
static u8 mRoom[256];
+ static s16 mSetTop;
};
#endif /* D_COM_D_COM_STATIC_H */
diff --git a/include/d/d_attention.h b/include/d/d_attention.h
index d0c674f904..b214b991cd 100644
--- a/include/d/d_attention.h
+++ b/include/d/d_attention.h
@@ -10,32 +10,32 @@
class dAttHint_c {
public:
dAttHint_c() {}
- /* 800738B4 */ void getPId(void*);
- /* 800738CC */ void convPId(unsigned int);
- /* 800738FC */ void request(fopAc_ac_c*, int);
+ /* 800738B4 */ u32 getPId(void*);
+ /* 800738CC */ fopAc_ac_c* convPId(unsigned int);
+ /* 800738FC */ int request(fopAc_ac_c*, int);
/* 80073958 */ void init();
/* 80073970 */ void proc();
private:
/* 0x0 */ u32 mHintActorID;
- /* 0x4 */ u32 mPriority;
+ /* 0x4 */ int mPriority;
/* 0x8 */ u32 field_0x8;
};
class dAttCatch_c {
public:
dAttCatch_c() {}
- s32 convPId(unsigned int);
+ fopAc_ac_c* convPId(unsigned int);
void init();
void proc();
void request(fopAc_ac_c*, u8, f32, f32, f32, s16, int);
- s32 getCatghTarget() { return convPId(mCatghTargetID); }
+ fopAc_ac_c* getCatghTarget() { return convPId(mCatghTargetID); }
u8 getChangeItem() { return mChangeItem; }
private:
- /* 0x00 */ void* field_0x0;
- /* 0x04 */ f32 field_0x4;
+ /* 0x00 */ u32 field_0x0;
+ /* 0x04 */ int field_0x4;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ u8 field_0xc;
/* 0x0D */ u8 field_0xd;
@@ -47,11 +47,7 @@ private:
class dAttParam_c {
public:
- dAttParam_c() {}
- /* 80070038 */ dAttParam_c(s32);
-
-private:
- /* 0x00 */ u16 field_0x0;
+ /* 0x00 */ u16 mFlags;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 field_0xc;
@@ -66,21 +62,23 @@ private:
/* 0x30 */ f32 mAttnCursorOffsetY;
/* 0x34 */ u8 mAttnCursorAppearFrames;
/* 0x35 */ u8 mAttnCursorDisappearFrames;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3c;
public:
+ dAttParam_c() {}
+ /* 80070038 */ dAttParam_c(s32);
+
/* 80070110 */ virtual ~dAttParam_c();
- /* 0x38 vtable */
-private:
- /* 0x3C */ f32 mSelCursorAnmSpeed;
- /* 0x40 */ f32 mAttnCursorAnmSpeed;
- /* 0x44 */ u32 mDispPosX;
- /* 0x48 */ u32 mDispPosY;
-}; // Size = 0x4C
+ bool CheckFlag(u16 flag) { return mFlags & flag; }
+
+ /* 0x40 vtable */
+}; // Size: 0x44
class dAttLook_c {
public:
- /* 80073CA4 */ void convPId(unsigned int);
+ /* 80073CA4 */ fopAc_ac_c* convPId(unsigned int);
/* 80073CD4 */ void init();
/* 80073CEC */ void proc();
/* 80073D08 */ void request(fopAc_ac_c*, f32, f32, f32, s16, int);
@@ -96,10 +94,11 @@ class dAttList_c {
public:
/* 800304D0 */ ~dAttList_c() {}
/* 8003050C */ dAttList_c() {}
- /* 80073864 */ void getActor();
+ /* 80073864 */ fopAc_ac_c* getActor();
/* 80073898 */ void setActor(fopAc_ac_c*);
-private:
+ u32 getPid() { return mActorID; }
+
/* 0x00 */ f32 mWeight;
/* 0x04 */ f32 mDistance;
/* 0x08 */ cSAngle mAngle;
@@ -117,15 +116,15 @@ public:
/* 800732B0 */ void draw(cXyz&, f32 (*)[4]);
/* 0x000 */ J3DModel* mModel[2];
- /* 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;
+ /* 0x008 */ mDoExt_bckAnm mNoticeCursorBck[2];
+ /* 0x040 */ mDoExt_bpkAnm mNoticeCursorBpk[2];
+ /* 0x070 */ mDoExt_brkAnm mNoticeCursorBrk[2];
+ /* 0x0A0 */ mDoExt_brkAnm mNoticeCursor02Brk[2];
+ /* 0x0D0 */ mDoExt_btkAnm mNoticeCursorBtk[2];
+ /* 0x100 */ mDoExt_bckAnm mImpactBck;
+ /* 0x11C */ mDoExt_bpkAnm mImpactBpk;
+ /* 0x134 */ mDoExt_brkAnm mImpactBrk;
+ /* 0x14C */ mDoExt_btkAnm mImpactBtk;
/* 0x164 */ cXyz field_0x164;
/* 0x170 */ u8 field_0x170;
/* 0x171 */ u8 field_0x171;
@@ -152,45 +151,56 @@ struct dist_entry {
u32 field_0x18;
}; // Size: 0x1C
+struct type_tbl_entry {
+ s16 field_0x0;
+ u16 field_0x2;
+};
+
class dAttention_c {
public:
+ enum EState {
+ ST_NONE,
+ ST_LOCK,
+ ST_RELEASE,
+ };
+
dAttention_c() {}
/* 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*);
+ /* 80070844 */ dAttList_c* GetLockonList(s32);
+ /* 80070880 */ dAttList_c* getActionBtnB();
+ /* 80070974 */ dAttList_c* getActionBtnXY();
+ /* 80070A70 */ int chkAttMask(u32, u32);
+ /* 80070E90 */ f32 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();
+ /* 800713CC */ int makeList();
/* 80071424 */ void setOwnerAttentionPos();
- /* 80071488 */ void SelectAttention(fopAc_ac_c*);
+ /* 80071488 */ int 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*);
+ /* 80071960 */ fopAc_ac_c* nextAttention();
+ /* 80071A68 */ int freeAttention();
+ /* 80071A98 */ bool chaseAttention();
+ /* 80071CC0 */ f32 EnemyDistance(fopAc_ac_c*);
/* 80071DEC */ void runSoundProc();
/* 80071E84 */ void runDrawProc();
/* 800720F4 */ void runDebugDisp();
/* 800720F8 */ void checkButton();
- /* 800722A0 */ void triggerProc();
- /* 800722EC */ void lostCheck();
+ /* 800722A0 */ bool triggerProc();
+ /* 800722EC */ int lostCheck();
/* 80072344 */ void judgementStatus4Hold();
/* 800725F0 */ void judgementStatus4Switch();
- /* 80072924 */ void Run();
+ /* 80072924 */ int 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);
+ /* 8007353C */ fopAc_ac_c* LockonTarget(s32);
+ /* 800735DC */ f32 LockonReleaseDistanse();
+ /* 800736CC */ u32 LockonTargetPId(s32);
+ /* 80073734 */ fopAc_ac_c* ActionTarget(s32);
+ /* 8007378C */ fopAc_ac_c* CheckObjectTarget(s32);
/* 800737E4 */ bool LockonTruth();
- /* 80073838 */ void checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32);
+ /* 80073838 */ int checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32);
/* 8016E424 */ void LockEdge();
/* 80182994 */ void GetCheckObjectCount();
/* 80182AD0 */ void keepLock(int);
@@ -199,6 +209,8 @@ public:
dAttCatch_c& getCatghTarget() { return mCatghTarget; }
u8 getCatchChgItem() { return mCatghTarget.getChangeItem(); }
BOOL chkFlag(u32 flag) { return mFlags & flag; }
+ void setFlag(u32 flag) { mFlags |= flag; }
+ void clrFlag(u32 flag) { mFlags &= ~flag; }
s8 Lockon() {
/* s32 chk = true;
if (!LockonTruth() && !chkFlag(0x20000000)) {
@@ -209,28 +221,28 @@ public:
return !LockonTruth() && !chkFlag(0x20000000);
}
- static u8 loc_type_tbl[12];
- static u8 act_type_tbl[20];
+ static type_tbl_entry loc_type_tbl[3];
+ static type_tbl_entry act_type_tbl[5];
static dist_entry dist_table[234];
- static u32 loc_type_num;
- static u32 act_type_num;
- static u32 chk_type_tbl;
- static u32 chk_type_num;
+ static int loc_type_num;
+ static int act_type_num;
+ static type_tbl_entry chk_type_tbl[1];
+ static int chk_type_num;
public:
/* 0x000 */ fopAc_ac_c* mpPlayer;
/* 0x004 */ u32 mLockTargetID;
/* 0x008 */ dAttDraw_CallBack_c mpDrawCallback;
- /* 0x00C */ u32 field_0xc;
+ /* 0x00C */ u32 mPadNo;
/* 0x010 */ u32 field_0x10;
/* 0x014 */ u8 field_0x14[4];
/* 0x018 */ JKRSolidHeap* heap;
- /* 0x01C */ cXyz field_0x1c;
+ /* 0x01C */ cXyz mDrawAttnPos;
/* 0x028 */ dAttDraw_c draw[2];
- /* 0x318 */ int field_0x318;
- /* 0x31C */ cXyz field_0x31c;
- /* 0x328 */ u8 field_0x328;
- /* 0x329 */ u8 field_0x329;
+ /* 0x318 */ u32 mTargetActorID;
+ /* 0x31C */ cXyz mOwnerAttnPos;
+ /* 0x328 */ s8 field_0x328;
+ /* 0x329 */ u8 mAttnStatus;
/* 0x32A */ u8 field_0x32a;
/* 0x32B */ u8 field_0x32b;
/* 0x32C */ u8 field_0x32c;
@@ -248,22 +260,17 @@ public:
/* 0x3E0 */ dAttList_c mActionList[4];
/* 0x430 */ int mActionCount;
/* 0x434 */ int mActionOffset;
- /* 0x438 */ dAttList_c field_0x438[4];
+ /* 0x438 */ dAttList_c mCheckObjectList[4];
/* 0x488 */ int mCheckObjectCount;
- /* 0x48C */ int field_0x48c;
+ /* 0x48C */ int mCheckObjectOffset;
/* 0x490 */ dAttHint_c mZHintTarget;
/* 0x49C */ dAttCatch_c mCatghTarget;
/* 0x4B4 */ dAttLook_c mLookTarget;
- /* 0x4C4 */ int field_0x4c4;
- /* 0x4C8 */ u8 field_0x4c8;
- /* 0x4C9 */ u8 field_0x4c9;
- /* 0x4CA */ u8 field_0x4ca;
- /* 0x4CB */ u8 field_0x4cb;
- /* 0x4CC */ u8 field_0x4cc;
- /* 0x4CD */ u8 field_0x4cd;
- /* 0x4CE */ u8 field_0x4ce;
- /* 0x4CF */ u8 field_0x4cf;
- /* 0x4D0 */ dAttParam_c mAttParam;
+ /* 0x4C4 */ int mAttnBlockTimer;
+ /* 0x4C8 */ dAttParam_c mAttParam;
+ /* 0x50C */ u8 field_0x50c[0x514 - 0x50c];
+ /* 0x514 */ u32 mEnemyActorID;
+ /* 0x518 */ f32 mEnemyDist;
}; // Size: 0x51C
STATIC_ASSERT(sizeof(dAttention_c) == 0x51C);
diff --git a/include/d/d_demo.h b/include/d/d_demo.h
index 584e24cc85..15d09fb5cd 100644
--- a/include/d/d_demo.h
+++ b/include/d/d_demo.h
@@ -52,15 +52,15 @@ public:
class dDemo_actor_c : public JStage::TActor {
public:
/* 80038020 */ dDemo_actor_c();
- /* 80038128 */ void getActor();
+ /* 80038128 */ fopAc_ac_c* getActor();
/* 8003815C */ void setActor(fopAc_ac_c*);
- /* 8003819C */ void getPrm_Morf();
+ /* 8003819C */ f32 getPrm_Morf();
/* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*);
/* 80038098 */ virtual ~dDemo_actor_c();
/* 800387EC */ virtual void JSGSetData(u32, void const*, u32);
- /* 8003A05C */ virtual void JSGFindNodeID(char const*) const;
- /* 8003A088 */ virtual void JSGGetNodeTransformation(u32, f32 (*)[4]) const;
+ /* 8003A05C */ virtual s32 JSGFindNodeID(char const*) const;
+ /* 8003A088 */ virtual int JSGGetNodeTransformation(u32, f32 (*)[4]) const;
/* 8003A0D8 */ virtual void JSGGetTranslation(Vec*) const;
/* 80038920 */ virtual void JSGSetTranslation(Vec const&);
/* 8003A0F4 */ virtual void JSGGetScaling(Vec*) const;
@@ -77,6 +77,16 @@ public:
/* 8003A0D0 */ virtual f32 JSGGetTextureAnimationFrameMax() const;
void setModel(J3DModel* p_model) { mModel = p_model; }
+ u8 checkEnable(u16 flag) { return mFlags & flag; }
+ void onEnable(u16 flag) { mFlags |= flag; }
+ cXyz& getTrans() { return mTrans; }
+ cXyz& getScale() { return mScale; }
+ csXyz& getRatate() { return mRotate; }
+ u32 getAnmId() { return mAnmId; }
+ u32 getOldAnmId() { return mOldAnmId; }
+ void setOldAnmId(u32 id) { mOldAnmId = id; }
+ void setAnmFrameMax(f32 max) { mAnmFrameMax = max; }
+ f32 getAnmFrame() { return mAnmFrame; }
private:
/* 0x04 */ u16 mFlags;
@@ -136,6 +146,8 @@ public:
/* 80038EA8 */ virtual void JSGSetAngleAttenuation(f32, GXSpotFn);
/* 80038EC0 */ virtual void JSGSetDirection(Vec const&);
+ void onEnable(u8 flag) { mFlags |= flag; }
+
private:
/* 0x04 */ u8 mFlags;
/* 0x08 */ JStage::TELight mLightType;
@@ -161,6 +173,8 @@ public:
/* 80038F10 */ virtual void JSGSetEndZ(f32);
/* 80038F24 */ virtual void JSGSetColor(GXColor);
+ void onEnable(u8 flag) { mFlags |= flag; }
+
private:
/* 0x04 */ u8 mFlags;
/* 0x05 */ u8 mFogType;
@@ -193,6 +207,8 @@ public:
/* 80038D84 */ virtual f32 JSGGetViewRoll() const;
/* 80038DDC */ virtual void JSGSetViewRoll(f32);
+ void onEnable(u8 flag) { mFlags |= flag; }
+
private:
/* 0x04 */ u8 mFlags;
/* 0x08 */ f32 mProjNear;
@@ -214,6 +230,8 @@ public:
/* 800394C8 */ virtual ~dDemo_ambient_c();
/* 80038DF0 */ virtual void JSGSetColor(GXColor);
+ void onEnable(u8 flag) { mFlags |= flag; }
+
private:
/* 0x04 */ u8 mFlags;
/* 0x05 */ GXColor mColor;
@@ -255,6 +273,8 @@ public:
static s32 getMode() { return m_mode; }
static JStudio::stb::TControl* getControl() { return m_control; }
static bool isStatus(u32 status) { return m_status & status; }
+ static void onStatus(u32 status) { m_status |= status; }
+ static void offStatus(u32 status) { m_status &= ~status; }
static void setBranchData(const u8* p_data) { m_branchData = p_data; }
static s16 m_branchId;
diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h
index 4a4abb8f91..423383e051 100644
--- a/include/d/d_drawlist.h
+++ b/include/d/d_drawlist.h
@@ -226,6 +226,7 @@ public:
/* 80051ADC */ void setScissor(f32, f32, f32, f32);
void setCameraID(int id) { mCameraID = id; }
+ s8 getCameraID() { return mCameraID; }
void setMode(int mode) { mMode = mode; }
f32 getViewPort() { return mXOrig; }
@@ -284,6 +285,7 @@ public:
void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaSet[0], mp2DOpaSet[1], dlst); }
void set2DOpaTop(dDlst_base_c* dlst) { set(mp2DOpaTopSet[0], mp2DOpaTopSet[1], dlst); }
+ void set2DXlu(dDlst_base_c* dlst) { set(mp2DXluSet[0], mp2DXluSet[1], dlst); }
view_class* getView() { return mView; }
void setView(view_class* view) { mView = view; }
void setWindow(dDlst_window_c* window) { mWindow = window; }
@@ -303,6 +305,8 @@ public:
void setXluListItem3D() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_ITEM3D]); }
void setXluListBG() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_BG]); }
void setOpaListBG() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_BG]); }
+ void setOpaList3Dlast() { setOpaDrawList(mDrawBuffers[DB_LIST_3D_LAST]); }
+ void setXluList3Dlast() { setXluDrawList(mDrawBuffers[DB_LIST_3D_LAST]); }
void setXluList2DScreen() { setXluDrawList(mDrawBuffers[DB_LIST_2D_SCREEN]); }
void peekZdata() { mPeekZ.peekData(); }
diff --git a/include/d/d_lib.h b/include/d/d_lib.h
index 121bff182e..0f87597d27 100644
--- a/include/d/d_lib.h
+++ b/include/d/d_lib.h
@@ -2,6 +2,7 @@
#define D_D_LIB_H
#include "dolphin/types.h"
+#include "dolphin/os/OS.h"
struct JKRAramArchive;
u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* arc, char const* resName);
@@ -71,12 +72,13 @@ struct CSTControl : public STControl {
};
struct dLib_time_c {
- /* 80032804 */ void getTime();
+ /* 80032804 */ static OSTime getTime();
/* 80032880 */ static void stopTime();
/* 800328BC */ static void startTime();
- static u8 m_diffTime[4];
- static u8 m_stopTime[4];
+ static OSTime m_diffTime;
+ static OSTime m_stopTime;
+ static bool m_timeStopped;
};
#endif /* D_D_LIB_H */
diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h
index 04a9a610cb..8da3453ea6 100644
--- a/include/d/event/d_event.h
+++ b/include/d/event/d_event.h
@@ -104,6 +104,8 @@ public:
void setPtD(void* ptr);
void setGtItm(u8 itemNo);
void isOrderOK();
+ /* 807DFAD8 */ void checkSkipEdge();
+ /* 807E2908 */ void startCheckSkipEdge(void*);
u16 chkFlag2(u16 flag) { return flag & mFlag2; }
bool runCheck() { return mEventStatus != 0; }
diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h
index dbf173e88b..b42daaa3bb 100644
--- a/include/d/msg/d_msg_object.h
+++ b/include/d/msg/d_msg_object.h
@@ -273,6 +273,10 @@ inline void dMsgObject_readMessageGroup(mDoDvdThd_mountXArchive_c** param_0) {
dMsgObject_getMsgObjectClass()->readMessageGroup(param_0);
}
+inline void dMsgObject_setDemoMessage(u32 param_0) {
+ dMsgObject_getMsgObjectClass()->setDemoMessage(param_0);
+}
+
inline void dMsgObject_setShopWaitTimer(u8 timer) {
dMsgObject_c::setShopWaitTimer(timer);
}
diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h
index d4a8cc965d..270c1347d0 100644
--- a/include/d/particle/d_particle.h
+++ b/include/d/particle/d_particle.h
@@ -2,9 +2,9 @@
#define D_PARTICLE_D_PARTICLE_H
#include "JSystem/JParticle/JPAParticle.h"
+#include "d/particle/d_particle_name.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
-#include "d/particle/d_particle_name.h"
class dPa_levelEcallBack : public JPAEmitterCallBack {
public:
@@ -138,8 +138,8 @@ public:
/* 8004AB1C */ void create(u8);
/* 8004ABC4 */ void remove();
- /* 8004AC00 */ void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, void*, u8,
- u8);
+ /* 8004AC00 */ static void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8,
+ void*, u8, u8);
/* 8004AC90 */ void resetModel(JPABaseEmitter*);
/* 8004ACC0 */ void setupModel(JPABaseEmitter*);
/* 8004ACEC */ void drawModel(JPABaseEmitter*, f32 (*)[4]);
@@ -152,7 +152,15 @@ public:
/* 80050014 */ virtual void drawAfter(JPABaseEmitter*);
/* 8004AAA8 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
- static u8 mEcallback[4];
+ static void setModel(JPABaseEmitter* param_0, J3DModelData* param_1,
+ const dKy_tevstr_c& param_2, u8 param_3, J3DAnmTexPattern* param_4,
+ u8 param_5) {
+ setModel(param_0, param_1, param_2, param_3, param_4, param_5);
+ }
+
+ static dPa_modelEcallBack* getEcallback() { return mEcallback; }
+
+ static dPa_modelEcallBack* mEcallback;
static u8 mPcallback[4];
static J3DModel* mModel;
};
@@ -207,7 +215,6 @@ public:
/* 8004FE6C */ virtual ~dPa_fsenthPcallBack();
/* 8004DCA0 */ virtual void execute(JPABaseEmitter*, JPABaseParticle*);
/* 8004DD0C */ virtual void draw(JPABaseEmitter*, JPABaseParticle*);
-
};
class dPa_simpleData_c {
@@ -244,7 +251,7 @@ public:
void offActive() { mStatus &= ~1; }
bool isActive() { return mStatus & 1; }
-
+
private:
/* 0x00 */ u32 mId;
/* 0x04 */ u16 mNameId;
@@ -341,6 +348,10 @@ public:
static void offStatus(u8 status) { mStatus &= ~status; }
static bool isStatus(u8 status) { return mStatus & status; }
+ static dPa_selectTexEcallBack* getTsuboSelectTexEcallBack(int idx) {
+ return ((dPa_selectTexEcallBack*)mTsubo) + idx;
+ }
+
static u8 mTsubo[64];
static u8 mLifeBall[24];
static Mtx mWindViewMatrix;
diff --git a/include/dolphin/base/PPCArch.h b/include/dolphin/base/PPCArch.h
index 4af0a94b33..d721eb225c 100644
--- a/include/dolphin/base/PPCArch.h
+++ b/include/dolphin/base/PPCArch.h
@@ -3,4 +3,12 @@
#include "dolphin/types.h"
+union FpscrUnion {
+ f64 f;
+ struct {
+ u32 fpscr_pad;
+ u32 fpscr;
+ } u;
+};
+
#endif /* PPCARCH_H */
diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h
index e85f70bf2c..a7fe695e1d 100644
--- a/include/f_op/f_op_actor.h
+++ b/include/f_op/f_op_actor.h
@@ -26,6 +26,7 @@ public:
void setMapToolId(u8 id) { mMapToolId = id; }
void setEventId(s16 id) { mEventId = id; }
void setCondition(u16 condition) { mCondition = condition; }
+ u16 getCondition() { return mCondition; }
void setArchiveName(char* name) { mArchiveName = name; }
u8 getMapToolId() { return mMapToolId; }
s16 getEventId() { return mEventId; }
@@ -134,6 +135,28 @@ public:
s8 getRoomNo() const { return current.mRoomNo; }
}; // Size: 0x568
+class fopEn_enemy_c : public fopAc_ac_c {
+public:
+ /* 80019404 */ void initBallModel();
+ /* 800194FC */ void checkBallModelDraw();
+ /* 80019520 */ void setBallModelEffect(dKy_tevstr_c*);
+ /* 800196A0 */ void drawBallModel(dKy_tevstr_c*);
+
+ /* 0x568 */ cXyz mDownPos;
+ /* 0x574 */ cXyz mHeadLockPos;
+ /* 0x580 */ J3DModel* mBallModel;
+ /* 0x584 */ J3DAnmTextureSRTKey* mBtk;
+ /* 0x588 */ J3DAnmTevRegKey* mBrk;
+ /* 0x58C */ u8 field_0x58c;
+ /* 0x58D */ u8 mThrowMode;
+ /* 0x58E */ u16 mFlags;
+ /* 0x590 */ f32 field_0x590;
+ /* 0x594 */ u32 mEffectID1;
+ /* 0x598 */ u32 mEffectID2;
+ /* 0x59C */ u32 mMidnaBindID[3];
+ /* 0x5A8 */ u8 field_0x5a8;
+}; // Size: 0x5AC
+
s32 fopAc_IsActor(void* actor);
#endif
diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h
index fe95da6259..8e2f27af0e 100644
--- a/include/m_Do/m_Do_audio.h
+++ b/include/m_Do/m_Do_audio.h
@@ -47,8 +47,12 @@ inline void mDoAud_bgmSetSwordUsing(s32 id) {
Z2AudioMgr::getInterface()->mSeqMgr.bgmSetSwordUsing(id);
}
-inline void mDoAud_bgmStart(u32 id) {
- Z2AudioMgr::getInterface()->mSeqMgr.bgmStart(id, 0, 0);
+inline void mDoAud_bgmStart(u32 i_bgmID) {
+ Z2AudioMgr::getInterface()->mSeqMgr.bgmStart(i_bgmID, 0, 0);
+}
+
+inline void mDoAud_bgmNowBattle(f32 param_0) {
+ Z2AudioMgr::getInterface()->mSeqMgr.bgmNowBattle(param_0);
}
inline void mDoAud_bgmStreamPrepare(u32 param_0) {
@@ -75,13 +79,13 @@ inline void mDoAud_setInDarkness(bool state) {
Z2AudioMgr::getInterface()->mSceneMgr.setInDarkness(state);
}
-inline void mDoAud_seStart(u32 sfx_id, const Vec* param_1, u32 param_2, s8 param_3) {
- Z2AudioMgr::getInterface()->mSeMgr.seStart(sfx_id, param_1, param_2, param_3, 1.0f, 1.0f, -1.0f,
+inline void mDoAud_seStart(u32 i_sfxID, const Vec* i_sePos, u32 param_2, s8 i_reverb) {
+ Z2AudioMgr::getInterface()->mSeMgr.seStart(i_sfxID, i_sePos, param_2, i_reverb, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
}
-inline void i_mDoAud_seStartLevel(u32 sfx_id, const Vec* param_1, u32 param_2, s8 param_3) {
- Z2AudioMgr::getInterface()->mSeMgr.seStartLevel(sfx_id, param_1, param_2, param_3, 1.0f, 1.0f,
+inline void i_mDoAud_seStartLevel(u32 i_sfxID, const Vec* i_sePos, u32 param_2, s8 i_reverb) {
+ Z2AudioMgr::getInterface()->mSeMgr.seStartLevel(i_sfxID, i_sePos, param_2, i_reverb, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
}
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index ab055c090c..7af5266ac0 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -46,17 +46,21 @@ private:
class mDoExt_btkAnm : public mDoExt_baseAnm {
public:
mDoExt_btkAnm() { mpAnm = 0; }
- /* 8000D63C */ int init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16);
- /* 8000D6D8 */ void entry(J3DMaterialTable*, f32);
-
- void entry(J3DModelData* data) { entry(data, getFrame()); }
- void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); }
- int init(J3DModelData* data, J3DAnmTextureSRTKey* key, int param_2, int param_3, f32 param_4,
- s16 param_5, s16 param_6) {
- return init(&data->getMaterialTable(), key, param_2, param_3, param_4, param_5, param_6);
+ /* 8000D63C */ int init(J3DMaterialTable* i_matTable, J3DAnmTextureSRTKey* i_btk, int i_anmPlay,
+ int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
+ /* 8000D6D8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame);
+
+ void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
+ void entry(J3DModelData* i_modelData, f32 i_frame) {
+ entry(&i_modelData->getMaterialTable(), i_frame);
+ }
+ int init(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk, int i_anmPlay, int i_attribute,
+ f32 i_rate, s16 i_start, s16 param_6) {
+ return init(&i_modelData->getMaterialTable(), i_btk, i_anmPlay, i_attribute, i_rate,
+ i_start, param_6);
}
- int remove(J3DModelData* data) { return data->removeTexMtxAnimator(mpAnm); }
+ int remove(J3DModelData* i_modelData) { return i_modelData->removeTexMtxAnimator(mpAnm); }
private:
/* 0x14 */ J3DAnmTextureSRTKey* mpAnm;
@@ -67,18 +71,22 @@ STATIC_ASSERT(sizeof(mDoExt_btkAnm) == 0x18);
class mDoExt_brkAnm : public mDoExt_baseAnm {
public:
mDoExt_brkAnm() { mpAnm = 0; }
- /* 8000D70C */ int init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
- /* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
+ /* 8000D70C */ int init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, int i_anmPlay,
+ int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
+ /* 8000D7A8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame);
- void entry(J3DModelData* data) { entry(data, getFrame()); }
- void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); }
+ void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
+ void entry(J3DModelData* i_modelData, f32 i_frame) {
+ entry(&i_modelData->getMaterialTable(), i_frame);
+ }
- int init(J3DModelData* data, J3DAnmTevRegKey* anmKey, int param_2, int param_3, f32 param_4,
- s16 param_5, s16 param_6) {
- return init(&data->getMaterialTable(), anmKey, param_2, param_3, param_4, param_5, param_6);
+ int init(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay, int i_attribute,
+ f32 i_rate, s16 i_start, s16 param_6) {
+ return init(&i_modelData->getMaterialTable(), i_brk, i_anmPlay, i_attribute, i_rate,
+ i_start, param_6);
}
- int remove(J3DModelData* data) { return data->removeTevRegAnimator(mpAnm); }
+ int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); }
private:
/* 0x14 */ J3DAnmTevRegKey* mpAnm;
@@ -93,16 +101,18 @@ public:
int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
/* 8000D518 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame);
- void entry(J3DModelData* data) { entry(data, getFrame()); }
- void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); }
+ void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
+ void entry(J3DModelData* i_modelData, f32 i_frame) {
+ entry(&i_modelData->getMaterialTable(), i_frame);
+ }
- int init(J3DModelData* data, J3DAnmColor* anmColor, int param_2, int param_3, f32 param_4,
- s16 param_5, s16 param_6) {
- return init(&data->getMaterialTable(), anmColor, param_2, param_3, param_4, param_5,
- param_6);
+ int init(J3DModelData* i_modelData, J3DAnmColor* i_bpk, int i_anmPlay, int i_attribute,
+ f32 i_rate, s16 i_start, s16 param_6) {
+ return init(&i_modelData->getMaterialTable(), i_bpk, i_anmPlay, i_attribute, i_rate,
+ i_start, param_6);
}
- int remove(J3DModelData* data) { return data->removeMatColorAnimator(mpAnm); }
+ int remove(J3DModelData* i_modelData) { return i_modelData->removeMatColorAnimator(mpAnm); }
private:
/* 0x14 */ J3DAnmColor* mpAnm;
@@ -115,11 +125,11 @@ public:
mDoExt_bckAnm() { mpMtxCalc = NULL; }
/* 8000D7DC */ int init(J3DAnmTransform* i_bck, int i_play, int i_attr, f32 i_rate,
s16 i_startF, s16 i_endF, bool i_modify);
- /* 8000D990 */ void changeBckOnly(J3DAnmTransform*);
- /* 8000D9CC */ void entry(J3DModelData*, f32);
- /* 8000D9E8 */ void entryJoint(J3DModelData*, u16, f32);
+ /* 8000D990 */ void changeBckOnly(J3DAnmTransform* i_bck);
+ /* 8000D9CC */ void entry(J3DModelData* i_modelData, f32 i_frame);
+ /* 8000D9E8 */ void entryJoint(J3DModelData* i_modelData, u16 i_jntNo, f32 i_frame);
- void entry(J3DModelData* data) { entry(data, getFrame()); }
+ void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
J3DAnmTransform* getBckAnm() { return mAnm; }
private:
@@ -136,16 +146,18 @@ public:
int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
/* 8000D5E8 */ void entry(J3DMaterialTable* i_matTable, s16 i_frame);
- void entry(J3DModelData* data) { entry(data, getFrame()); }
- void entry(J3DModelData* data, s16 frame) { entry(&data->getMaterialTable(), frame); }
+ void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
+ void entry(J3DModelData* i_modelData, s16 i_frame) {
+ entry(&i_modelData->getMaterialTable(), i_frame);
+ }
- int init(J3DModelData* data, J3DAnmTexPattern* anmPattern, int param_2, int param_3,
- f32 param_4, s16 param_5, s16 param_6) {
- return init(&data->getMaterialTable(), anmPattern, param_2, param_3, param_4, param_5,
- param_6);
+ int init(J3DModelData* i_modelData, J3DAnmTexPattern* i_btk, int i_anmPlay, int i_attribute,
+ f32 i_rate, s16 i_start, s16 param_6) {
+ return init(&i_modelData->getMaterialTable(), i_btk, i_anmPlay, i_attribute, i_rate,
+ i_start, param_6);
}
- int remove(J3DModelData* data) { return data->removeTexNoAnimator(mpAnm); }
+ int remove(J3DModelData* i_modelData) { return i_modelData->removeTexNoAnimator(mpAnm); }
private:
/* 0x14 */ J3DAnmTexPattern* mpAnm;
@@ -197,7 +209,7 @@ private:
class mDoExt_invisibleModel {
public:
- /* 8000E53C */ int create(J3DModel*, u8);
+ /* 8000E53C */ int create(J3DModel* i_model, u8 param_1);
/* 8000E6C8 */ void entryJoint(cXyz*);
/* 8000E7C0 */ void entryDL(cXyz*);
@@ -219,15 +231,17 @@ class mDoExt_morf_c {
// inheritance causing issues, fix later
public:
/* 8000F950 */ mDoExt_morf_c();
- /* 8000FB7C */ void setMorf(f32);
+ /* 8000FB7C */ void setMorf(f32 i_morf);
/* 8000FBC0 */ void frameUpdate();
/* 8000FAE8 */ virtual ~mDoExt_morf_c();
void setPlaySpeed(f32 speed) { mFrameCtrl.setRate(speed); }
+ void setFrame(f32 frame) { mFrameCtrl.setFrame((s16)frame); }
f32 getPlaySpeed() { return mFrameCtrl.getRate(); }
f32 getFrame() { return mFrameCtrl.getFrame(); }
+ f32 getEndFrame() { return mFrameCtrl.getEnd(); }
bool isStop() {
bool stopped = true;
@@ -297,6 +311,8 @@ public:
/* 8000FD10 */ virtual ~mDoExt_McaMorf();
/* 80010074 */ virtual void calc();
+ J3DModel* getModel() { return mpModel; }
+
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h
index 32b4acb8e8..d989cefe34 100644
--- a/include/m_Do/m_Do_graphic.h
+++ b/include/m_Do/m_Do_graphic.h
@@ -36,6 +36,7 @@ public:
/* 80007F90 */ static void beginRender();
/* 800080D0 */ static void fadeOut(f32);
/* 80007FD8 */ static void fadeOut(f32, _GXColor&);
+ /* 807DFAB4 */ static void fadeIn(f32, _GXColor&);
/* 80008028 */ static void fadeOut_f(f32, _GXColor&);
/* 800080A0 */ static void onBlure(const Mtx);
/* 80008078 */ static void onBlure();
diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h
index 123a7d17b8..a4a5e1b8c0 100644
--- a/include/m_Do/m_Do_mtx.h
+++ b/include/m_Do/m_Do_mtx.h
@@ -54,7 +54,7 @@ public:
static void XrotM(s16 x) { mDoMtx_XrotM(now, x); }
static void inverse() { PSMTXInverse(now, now); }
static void concat(const Mtx m) { PSMTXConcat(now, m, now); }
- static void copy(const Mtx m) { PSMTXCopy(m, now); }
+ static void copy(Mtx m) { PSMTXCopy(now, m); }
static Mtx now;
static Mtx buffer[16];
diff --git a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h
index cd39bb9e4f..e3f802d51b 100644
--- a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h
+++ b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h
@@ -90,6 +90,8 @@ public:
void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; }
void onWindCatch() { onStateFlg0(WIND_CATCH); }
+ bool checkForceDelete() const { return mForceDelete; }
+ bool checkCharge() const { return true; }
private:
/* 0x568 */ daMirror_c* field_0x568;
@@ -114,7 +116,7 @@ private:
/* 0x953 */ u8 field_0x953;
/* 0x954 */ u8 field_0x954;
/* 0x955 */ u8 field_0x955;
- /* 0x956 */ u8 field_0x956;
+ /* 0x956 */ bool mForceDelete;
/* 0x957 */ u8 field_0x957;
/* 0x958 */ s16 field_0x958;
/* 0x95A */ s16 field_0x95a;
diff --git a/include/rel/d/a/d_a_movie_player/d_a_movie_player.h b/include/rel/d/a/d_a_movie_player/d_a_movie_player.h
index 848f6787a1..8461581f8b 100644
--- a/include/rel/d/a/d_a_movie_player/d_a_movie_player.h
+++ b/include/rel/d/a/d_a_movie_player/d_a_movie_player.h
@@ -4,14 +4,12 @@
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
-typedef void (*daMP_Func)();
-
class daMP_c : public fopAc_ac_c {
public:
- /* 80031AD0 */ static void daMP_c_THPPlayerPlay();
- /* 80031B24 */ void daMP_c_THPPlayerPause();
- /* 80031A78 */ void daMP_c_Get_MovieRestFrame();
- /* 80031AA4 */ void daMP_c_Set_PercentMovieVolume(f32);
+ /* 80031AD0 */ static int daMP_c_THPPlayerPlay();
+ /* 80031B24 */ static void daMP_c_THPPlayerPause();
+ /* 80031A78 */ static int daMP_c_Get_MovieRestFrame();
+ /* 80031AA4 */ static void daMP_c_Set_PercentMovieVolume(f32);
/* 80878BB8 */ void daMP_c_Get_arg_demoNo();
/* 80878C04 */ void daMP_c_Get_arg_movieNo();
/* 80878C28 */ void daMP_c_Init();
@@ -24,15 +22,15 @@ public:
/* 80878F38 */ void daMP_c_Callback_Main(daMP_c*);
/* 80878F70 */ void daMP_c_Callback_Draw(daMP_c*);
- static u8 m_myObj[4];
+ static daMP_c* m_myObj;
private:
- /* 0x568 */ daMP_Func mpGetMovieRestFrame;
- /* 0x56C */ daMP_Func mpSetPercentMovieVol;
- /* 0x570 */ daMP_Func mpTHPGetTotalFrame;
- /* 0x574 */ daMP_Func mpTHPPlay;
- /* 0x578 */ daMP_Func mpTHPStop;
- /* 0x57C */ daMP_Func mpTHPPause;
+ /* 0x568 */ int (*mpGetMovieRestFrame)(void);
+ /* 0x56C */ void (*mpSetPercentMovieVol)(f32);
+ /* 0x570 */ int (*mpTHPGetTotalFrame)(void);
+ /* 0x574 */ int (*mpTHPPlay)(void);
+ /* 0x578 */ void (*mpTHPStop)(void);
+ /* 0x57C */ int (*mpTHPPause)(void);
}; // Size: 0x580
#endif /* D_A_MOVIE_PLAYER_H */
diff --git a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h
index 0f5478c59d..e752b8586a 100644
--- a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h
+++ b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h
@@ -4,8 +4,17 @@
#include "Z2AudioLib/Z2Creature.h"
#include "dolphin/types.h"
#include "rel/d/a/d_a_horse/d_a_horse.h"
+#include "SSystem/SComponent/c_phase.h"
+#include "d/cc/d_cc_uty.h"
-class e_wb_class : public fopAc_ac_c {
+enum daE_wb_ACT {
+ /* 0x00 */ ACT_WAIT,
+ /* 0x15 */ ACT_S_DAMAGE = 0x15,
+ /* 0x65 */ ACT_PL_RIDE = 0x65,
+ /* 0x67 */ ACT_PL_RIDE_NOW = 0x67,
+};
+
+class e_wb_class : public fopEn_enemy_c {
public:
BOOL checkWait();
void setPlayerRideNow();
@@ -16,38 +25,133 @@ public:
void setRunRideMode();
private:
- /* 0x0568 */ u8 field_0x568[0x4C];
+ /* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 field_0x5b4;
- /* 0x05B6 */ u8 unk1462[9];
+ /* 0x05B8 */ char* mResName;
+ /* 0x05BC */ u8 field_0x5bc;
+ /* 0x05BD */ u8 field_0x5bd;
+ /* 0x05BE */ u8 field_0x5be;
/* 0x05BF */ bool field_0x5bf;
- /* 0x05C0 */ u8 field_0x5c0[0x20];
- /* 0x05E0 */ void* field_0x5e0;
- /* 0x05E4 */ u8 field_0x5e4[8];
+ /* 0x05C0 */ u8 field_0x5c0;
+ /* 0x05C4 */ cXyz field_0x5c4;
+ /* 0x05D0 */ cXyz field_0x5d0;
+ /* 0x05DC */ s16 field_0x5dc;
+ /* 0x05DE */ s16 field_0x5de;
+ /* 0x05E0 */ mDoExt_McaMorfSO* field_0x5e0;
+ /* 0x05E4 */ f32 field_0x5e4;
+ /* 0x05E8 */ int mAnmID;
/* 0x05EC */ Z2CreatureRide mZ2Ride;
- /* 0x0688 */ u8 unk1673[6];
+ /* 0x0688 */ u8 field_0x688[4];
+ /* 0x068C */ s8 field_0x68c;
/* 0x068E */ s16 field_0x68e;
- /* 0x0690 */ s16 field_0x690;
+ /* 0x0690 */ s16 mActionID;
/* 0x0692 */ u16 field_0x692;
- /* 0x0694 */ u8 unk1684[0xc];
+ /* 0x0694 */ u32 field_0x694;
+ /* 0x0698 */ s16 field_0x698[4];
/* 0x06A0 */ s16 field_0x6a0;
- /* 0x06A2 */ u8 field_0x6a2[0xc];
+ /* 0x06A2 */ u8 field_0x6a2[0x6ae - 0x6a2];
/* 0x06AE */ s16 field_0x6ae;
/* 0x06B0 */ s16 field_0x6b0;
- /* 0x06B2 */ u8 field_0x6b2[0xc];
+ /* 0x06B2 */ s16 field_0x6b2;
+ /* 0x06B4 */ u8 field_0x6b4[0x6b6 - 0x6b4];
+ /* 0x06B6 */ s16 field_0x6b6;
+ /* 0x06B8 */ u8 field_0x6b8[0x6ba - 0x6b8];
+ /* 0x06BA */ s16 field_0x6ba;
+ /* 0x06BC */ u8 field_0x6bc;
+ /* 0x06BD */ u8 field_0x6bd;
/* 0x06BE */ u16 field_0x6be;
- /* 0x06C0 */ u8 field_0x6c0[0xdd];
- /* 0x079D */ u8 field_0x79d;
- /* 0x079E */ u8 field_0x79e[0x4e];
+ /* 0x06C0 */ s8 field_0x6c0;
+ /* 0x06C4 */ cXyz field_0x6c4;
+ /* 0x06D0 */ s16 field_0x6d0;
+ /* 0x06D2 */ s16 field_0x6d2;
+ /* 0x06D4 */ s16 field_0x6d4;
+ /* 0x06D6 */ s16 field_0x6d6;
+ /* 0x06D8 */ u8 field_0x6d8[0x6da - 0x6d8];
+ /* 0x06DA */ s16 field_0x6da;
+ /* 0x06DC */ s16 field_0x6dc;
+ /* 0x06DE */ u8 field_0x6de[0x6e4 - 0x6de];
+ /* 0x06E4 */ u8 field_0x6e4;
+ /* 0x06E5 */ u8 field_0x6e5[0x79a - 0x6e5];
+ /* 0x079A */ s16 field_0x79a;
+ /* 0x079C */ u8 field_0x79c;
+ /* 0x079D */ s8 field_0x79d;
+ /* 0x079E */ s8 field_0x79e;
+ /* 0x079F */ s8 field_0x79f;
+ /* 0x07A0 */ s16 field_0x7a0;
+ /* 0x07A2 */ s8 field_0x7a2;
+ /* 0x07A4 */ s16 field_0x7a4;
+ /* 0x07A6 */ s8 field_0x7a6;
+ /* 0x07A7 */ s8 field_0x7a7;
+ /* 0x07A8 */ f32 field_0x7a8;
+ /* 0x07AC */ dBgS_AcchCir field_0x7ac;
/* 0x07EC */ dBgS_Acch field_0x7ec;
- /* 0x09C4 */ cXyz field_0x9c4;
- /* 0x09D0 */ u8 field_0x9d0[0xa5f];
- /* 0x142F */ u8 field_0x142f;
- /* 0x1430 */ u8 field_0x1430;
+ /* 0x09C4 */ dCcD_Stts field_0x9c4;
+ /* 0x0A00 */ dCcD_Sph field_0xa00[7];
+ /* 0x1288 */ dCcD_Sph field_0x1288;
+ /* 0x13C0 */ dCcU_AtInfo field_0x13c0;
+ /* 0x13E4 */ u8 field_0x13e4;
+ /* 0x13E8 */ u32 field_0x13e8;
+ /* 0x13EC */ u32 field_0x13ec;
+ /* 0x13F0 */ u32 field_0x13f0;
+ /* 0x13F4 */ u32 field_0x13f4;
+ /* 0x13F8 */ u32 field_0x13f8;
+ /* 0x13FC */ u32 field_0x13fc;
+ /* 0x1400 */ u32 field_0x1400;
+ /* 0x1404 */ u32 field_0x1404;
+ /* 0x1408 */ u32 field_0x1408;
+ /* 0x140C */ u32 field_0x140c;
+ /* 0x1410 */ u32 field_0x1410;
+ /* 0x1414 */ u32 field_0x1414;
+ /* 0x1418 */ u32 field_0x1418;
+ /* 0x141C */ u32 field_0x141c;
+ /* 0x1420 */ u32 field_0x1420[3];
+ /* 0x142C */ u8 field_0x142c;
+ /* 0x142D */ u8 field_0x142d;
+ /* 0x142E */ u8 field_0x142e;
+ /* 0x142F */ s8 field_0x142f;
+ /* 0x1430 */ s8 field_0x1430;
/* 0x1432 */ s16 field_0x1432;
- /* 0x1434 */ u8 field_0x1434[0x250];
+ /* 0x1434 */ u32 field_0x1434; // Some actor ID
+ /* 0x1438 */ cXyz field_0x1438;
+ /* 0x1444 */ cXyz field_0x1444;
+ /* 0x1450 */ u8 field_0x1450[0x15d0 - 0x1450];
+ /* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0;
+ /* 0x160C */ mDoExt_3DlineMat1_c field_0x160c;
+ /* 0x1648 */ mDoExt_3DlineMat1_c field_0x1648;
/* 0x1684 */ f32 field_0x1684;
- /* 0x1688 */ u8 field_0x1688[0x16];
+ /* 0x1688 */ u8 field_0x1688;
+ /* 0x168A */ u16 field_0x168a;
+ /* 0x168C */ f32 field_0x168c;
+ /* 0x1690 */ f32 field_0x1690;
+ /* 0x1694 */ u8 field_0x1694[0x169e - 0x1694];
/* 0x169E */ s16 field_0x169e;
+ /* 0x16A0 */ s16 field_0x16a0;
+ /* 0x16A4 */ cXyz field_0x16a4;
+ /* 0x16B0 */ cXyz field_0x16b0;
+ /* 0x16BC */ cXyz field_0x16bc;
+ /* 0x16C8 */ cXyz field_0x16c8;
+ /* 0x16D4 */ cXyz field_0x16d4;
+ /* 0x16E0 */ cXyz field_0x16e0;
+ /* 0x16EC */ cXyz field_0x16ec;
+ /* 0x16F8 */ cXyz field_0x16f8;
+ /* 0x1704 */ s16 field_0x1704;
+ /* 0x1708 */ f32 field_0x1708;
+ /* 0x170C */ f32 field_0x170c;
+ /* 0x1710 */ f32 field_0x1710;
+ /* 0x1714 */ f32 field_0x1714;
+ /* 0x1718 */ f32 field_0x1718;
+ /* 0x171C */ u8 field_0x171c[0x1720 - 0x171c];
+ /* 0x1720 */ s8 field_0x1720;
+ /* 0x1721 */ s8 field_0x1721;
+ /* 0x1722 */ s8 field_0x1722;
+ /* 0x1723 */ u8 field_0x1723[0x17c4 - 0x1723];
+ /* 0x17C4 */ u32 field_0x17c4;
+ /* 0x17D0 */ u32 field_0x17d0[4];
+ /* 0x17E0 */ u8 field_0x17e0;
+ /* 0x17E1 */ u8 field_0x17e1;
+ /* 0x17E2 */ s16 mWaitRollAngle;
+ /* 0x17E4 */ u8 field_0x17e4[0x17e8 - 0x17e4];
+ /* 0x17E8 */ f32 mSpeedRate;
};
#endif /* D_A_E_WB_H */