fopEn_enemy / fix e_wb

This commit is contained in:
TakaRikka
2022-10-04 17:29:53 -07:00
parent 179d4e8df2
commit 31ef090a50
36 changed files with 1057 additions and 836 deletions
+27 -12
View File
@@ -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 */
+3 -1
View File
@@ -57,9 +57,11 @@ public:
}
void addChildPacket(J3DPacket*);
J3DPacket* getNextPacket() const { return mpNextSibling; }
void setNextPacket(J3DPacket* i_packet) { mpNextSibling = i_packet; }
inline void clear() {
void drawClear() {
mpNextSibling = NULL;
mpFirstChild = NULL;
}
+16
View File
@@ -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;
+32 -4
View File
@@ -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 */
@@ -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 */
+1 -1
View File
@@ -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);
+10 -10
View File
@@ -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:
+20 -4
View File
@@ -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();
+1 -1
View File
@@ -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 {
+29 -13
View File
@@ -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]; }
@@ -1477,7 +1480,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 +2026,8 @@ 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_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);
}
@@ -2288,7 +2291,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 +2440,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 +2458,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 +2509,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 +2534,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);
}
+1
View File
@@ -284,6 +284,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; }
+2
View File
@@ -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; }
+17 -6
View File
@@ -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;
+22
View File
@@ -134,6 +134,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
+51 -39
View File
@@ -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);
/* 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* 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);
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); }
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);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void entry(J3DModelData* i_modelData, f32 i_frame) {
entry(&i_modelData->getMaterialTable(), i_frame);
}
int remove(J3DModelData* data) { return data->removeTevRegAnimator(mpAnm); }
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* 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); }
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);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void entry(J3DModelData* i_modelData, f32 i_frame) {
entry(&i_modelData->getMaterialTable(), i_frame);
}
int remove(J3DModelData* data) { return data->removeMatColorAnimator(mpAnm); }
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* 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); }
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);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void entry(J3DModelData* i_modelData, s16 i_frame) {
entry(&i_modelData->getMaterialTable(), i_frame);
}
int remove(J3DModelData* data) { return data->removeTexNoAnimator(mpAnm); }
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* 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,7 +231,7 @@ 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();
+1
View File
@@ -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();
+1 -1
View File
@@ -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];
@@ -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;
+124 -20
View File
@@ -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 */