mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-09 22:11:35 -04:00
@@ -346,10 +346,12 @@ public:
|
||||
void setRPrm(s32 rprm) { mRPrm = rprm; }
|
||||
s32 getRPrm() const { return mRPrm; }
|
||||
cCcD_Obj* GetHitObj() { return mHitObj; }
|
||||
void ClrObj() { mHitObj = NULL; }
|
||||
u32 MskSPrm(u32 mask) const { return mSPrm & mask; }
|
||||
u32 MskRPrm(u32 mask) { return mRPrm & mask; }
|
||||
void OnSPrmBit(u32 flag) { mSPrm |= flag; }
|
||||
void OffSPrmBit(u32 flag) { mSPrm &= ~flag; }
|
||||
void ClrRPrm(u32 flag) { mRPrm &= ~flag; }
|
||||
|
||||
void Set(cCcD_SrcObjCommonBase const& src) {
|
||||
mSPrm = src.mSPrm;
|
||||
@@ -364,7 +366,7 @@ public:
|
||||
virtual ~cCcD_ObjAt() {}
|
||||
void SetHit(cCcD_Obj*);
|
||||
void Set(cCcD_SrcObjAt const&);
|
||||
void ClrHit();
|
||||
void ClrHit() { ClrObj(); }
|
||||
int GetType() const { return mType; }
|
||||
u32 GetGrp() const { return MskSPrm(0x1E); }
|
||||
bool ChkSet() const { return MskSPrm(1); }
|
||||
@@ -373,6 +375,7 @@ public:
|
||||
void SetType(u32 type) { mType = type; }
|
||||
void SetAtp(int atp) { mAtp = atp; }
|
||||
void ClrSet() { OffSPrmBit(1); }
|
||||
void OffHitBit() { ClrRPrm(1); }
|
||||
u32 ChkHit() { return MskRPrm(1); }
|
||||
|
||||
protected:
|
||||
@@ -470,6 +473,7 @@ public:
|
||||
void SetTgType(u32 type) { mObjTg.SetType(type); }
|
||||
void OnTgSPrmBit(u32 flag) { mObjTg.OnSPrmBit(flag); }
|
||||
void OffAtSetBit() { mObjAt.ClrSet(); }
|
||||
void OffAtHitBit() { mObjAt.OffHitBit(); }
|
||||
void OnTgSetBit() { mObjTg.OnSPrmBit(1); }
|
||||
void OffTgSetBit() { mObjTg.ClrSet(); }
|
||||
void OnCoSetBit() { mObjCo.OnSPrmBit(1); }
|
||||
|
||||
@@ -15,7 +15,10 @@ public:
|
||||
cM3dGLin() {}
|
||||
cM3dGLin(const cXyz&, const cXyz&);
|
||||
virtual ~cM3dGLin() {}
|
||||
void SetStartEnd(const cXyz&, const cXyz&);
|
||||
void SetStartEnd(const cXyz& start, const cXyz& end) {
|
||||
mStart = start;
|
||||
mEnd = end;
|
||||
}
|
||||
void SetStartEnd(const Vec&, const Vec&);
|
||||
void CalcPos(Vec*, f32) const;
|
||||
void CalcVec(Vec* pOut) const { VECSubtract(&this->mEnd, &this->mStart, pOut); }
|
||||
|
||||
+62
-16
@@ -1,3 +1,5 @@
|
||||
#ifndef D_A_ARROW_H
|
||||
#define D_A_ARROW_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_cc_d.h"
|
||||
@@ -6,15 +8,20 @@
|
||||
#include "d/d_particle.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DAnmTextureSRTKey;
|
||||
class J3DMaterial;
|
||||
|
||||
class daArrow_c : fopAc_ac_c {
|
||||
public:
|
||||
enum ArrowType {
|
||||
NORMAL_ARROWS = 0,
|
||||
FIRE_ARROWS = 1,
|
||||
ICE_ARROWS = 2,
|
||||
LIGHT_ARROWS = 3,
|
||||
TYPE_NORMAL = 0,
|
||||
TYPE_FIRE = 1,
|
||||
TYPE_ICE = 2,
|
||||
TYPE_LIGHT = 3,
|
||||
};
|
||||
|
||||
typedef BOOL (daArrow_c::*daArrow_c_ProcFunc)();
|
||||
|
||||
BOOL _createHeap();
|
||||
void _atHit(dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
|
||||
void checkCreater();
|
||||
@@ -33,26 +40,40 @@ public:
|
||||
void setRoomInfo();
|
||||
void setKeepMatrix();
|
||||
void setStopActorMatrix();
|
||||
void procWait();
|
||||
void procMove();
|
||||
void procReturn();
|
||||
void procStop_BG();
|
||||
void procStop_Actor();
|
||||
void procWater();
|
||||
BOOL procWait();
|
||||
BOOL procMove();
|
||||
BOOL procReturn();
|
||||
BOOL procStop_BG();
|
||||
BOOL procStop_Actor();
|
||||
BOOL procWater();
|
||||
void checkRestMp();
|
||||
void setTypeByPlayer();
|
||||
void createInit();
|
||||
BOOL createInit();
|
||||
BOOL _execute();
|
||||
BOOL _draw();
|
||||
s32 _create();
|
||||
daArrow_c();
|
||||
BOOL _delete();
|
||||
|
||||
// TODO inlines
|
||||
// setAtHitPosBuff__9daArrow_cFP4cXyz
|
||||
// setAtHitNormal__9daArrow_cFv
|
||||
// setAtHitNormalActor__9daArrow_cFP10fopAc_ac_c
|
||||
// clrAtHitNormal__9daArrow_cFv
|
||||
// isSetByZelda__9daArrow_cFv
|
||||
// clrAtHitPosBuff__9daArrow_cFP4cXyz
|
||||
// getAtHitPosBuffP__9daArrow_cFv
|
||||
// getAtHitNormalActor__9daArrow_cFv
|
||||
// chkAtHitNormal__9daArrow_cFv
|
||||
// isLinkReflect__9daArrow_cFv
|
||||
// ArrowAtOff__9daArrow_cFv
|
||||
|
||||
public:
|
||||
/* 0x290 */ bool mbShotByZelda;
|
||||
/* 0x291 */ u8 field_0x291[0x294 - 0x291];
|
||||
/* 0x294 */ J3DModel* mpModel;
|
||||
/* 0x298 */ u8 field_0x298[0x2A0 - 0x298];
|
||||
/* 0x298 */ J3DMaterial* mpTipMat;
|
||||
/* 0x29C */ J3DAnmTextureSRTKey* mpBtk;
|
||||
/* 0x2A0 */ dBgS_ArrowLinChk mLinChk;
|
||||
/* 0x30C */ dBgS_ObjGndChk mGndChk;
|
||||
/* 0x360 */ dCcD_Stts mStts;
|
||||
@@ -62,20 +83,37 @@ public:
|
||||
/* 0x601 */ u8 mArrowType;
|
||||
/* 0x602 */ s16 field_0x602;
|
||||
/* 0x604 */ s16 field_0x604;
|
||||
/* 0x606 */ u8 field_0x606[0x610 - 0x606];
|
||||
/* 0x606 */ u8 field_0x606[0x608 - 0x606];
|
||||
/* 0x608 */ s16 field_0x608;
|
||||
/* 0x60A */ u8 field_0x60A[0x60C - 0x60A];
|
||||
/* 0x60C */ JPABaseEmitter* mpSparkleEmitter;
|
||||
/* 0x610 */ s32 mHitActorProcID;
|
||||
/* 0x614 */ s32 mHitJointIndex;
|
||||
/* 0x618 */ cXyz field_0x618;
|
||||
/* 0x624 */ u8 field_0x624[0x668 - 0x624];
|
||||
/* 0x624 */ u8 field_0x624[0x660 - 0x624];
|
||||
/* 0x660 */ f32 mBtkFrame;
|
||||
/* 0x664 */ u8 field_0x664;
|
||||
/* 0x665 */ u8 field_0x665[0x668 - 0x665];
|
||||
/* 0x668 */ dPa_followEcallBack mPtclFollowCb;
|
||||
/* 0x67C */ csXyz field_0x67c;
|
||||
/* 0x682 */ u8 field_0x682;
|
||||
/* 0x683 */ u8 field_0x683[0x684 - 0x683];
|
||||
/* 0x684 */ u32 field_0x684;
|
||||
/* 0x688 */ bool field_0x688;
|
||||
/* 0x689 */ u8 field_0x689[0x6A8 - 0x689];
|
||||
/* 0x689 */ u8 field_0x689[0x68C - 0x689];
|
||||
/* 0x68C */ daArrow_c_ProcFunc mCurrProcFunc;
|
||||
/* 0x698 */ u8 field_0x698;
|
||||
/* 0x699 */ u8 field_0x699;
|
||||
/* 0x69A */ u8 field_0x69a;
|
||||
/* 0x69B */ u8 field_0x69B[0x69C - 0x69B];
|
||||
/* 0x69C */ s16 field_0x69c;
|
||||
/* 0x69E */ u8 field_0x69E[0x6A0 - 0x69E];
|
||||
/* 0x6A0 */ s32 field_0x6a0;
|
||||
/* 0x6A4 */ s32 mInWaterTimer;
|
||||
/* 0x6A8 */ cXyz field_0x6a8;
|
||||
/* 0x6B4 */ u8 field_0x6B4[0x6E6 - 0x6B4];
|
||||
/* 0x6B4 */ u8 field_0x6B4[0x6E4 - 0x6B4];
|
||||
/* 0x6E4 */ u8 field_0x6e4;
|
||||
/* 0x6E5 */ u8 field_0x6E5[0x6E6 - 0x6E5];
|
||||
/* 0x6E6 */ csXyz field_0x6e6;
|
||||
/* 0x6EC */ fopAc_ac_c* field_0x6ec;
|
||||
/* 0x6F0 */ cXyz mNearestHitPos;
|
||||
@@ -84,7 +122,15 @@ public:
|
||||
/* 0x701 */ u8 field_0x701[0x704 - 0x701];
|
||||
|
||||
static u8 m_keep_type;
|
||||
static s16 m_count;
|
||||
static const char m_arc_name[];
|
||||
static const dCcD_SrcCps m_at_cps_src;
|
||||
static const dCcD_SrcSph m_co_sph_src;
|
||||
};
|
||||
|
||||
// Intellisense doesn't understand PTMF sizes
|
||||
#ifndef __INTELLISENSE__
|
||||
STATIC_ASSERT(sizeof(daArrow_c) == 0x704);
|
||||
#endif
|
||||
|
||||
#endif /* D_A_ARROW_H */
|
||||
|
||||
@@ -79,7 +79,8 @@ public:
|
||||
/* 0x2A8 */ f32 field_0x2a8;
|
||||
/* 0x2AC */ u8 field_0x2AC[0x2B0 - 0x2AC];
|
||||
/* 0x2B0 */ f32 field_0x2b0;
|
||||
/* 0x2B4 */ u8 field_0x2B4[0x2BC - 0x2B4];
|
||||
/* 0x2B4 */ csXyz mBodyAngle;
|
||||
/* 0x2BA */ u8 field_0x2BA[0x2BC - 0x2BA];
|
||||
/* 0x2BC */ cXyz mHeadTopPos;
|
||||
/* 0x2C8 */ cXyz mSwordTopPos;
|
||||
/* 0x2D4 */ cXyz field_0x2d4;
|
||||
@@ -90,6 +91,9 @@ public:
|
||||
/* 0x300 */ f32 field_0x300;
|
||||
/* 0x304 */ daPy_demo_c mDemo;
|
||||
|
||||
s16 getBodyAngleX() { return mBodyAngle.x; }
|
||||
s16 getBodyAngleY() { return mBodyAngle.y; }
|
||||
|
||||
virtual MtxP getLeftHandMatrix() = 0;
|
||||
virtual MtxP getRightHandMatrix() = 0;
|
||||
virtual void getGroundY() = 0;
|
||||
|
||||
@@ -1002,6 +1002,8 @@ public:
|
||||
void checkNoControll() const;
|
||||
|
||||
J3DAnmTevRegKey* getBombBrk() { return mpBombBrk; }
|
||||
J3DAnmTextureSRTKey* getIceArrowBtk() { return mpIceArrowBtk; }
|
||||
J3DAnmTextureSRTKey* getLightArrowBtk() { return mpLightArrowBtk; }
|
||||
|
||||
virtual MtxP getLeftHandMatrix();
|
||||
virtual MtxP getRightHandMatrix();
|
||||
@@ -1099,7 +1101,10 @@ public:
|
||||
/* 0x2EB0 */ J3DAnmTevRegKey* mpBombBrk;
|
||||
/* 0x2EB4 */ J3DAnmTevRegKey* mpGwp00BrkData;
|
||||
/* 0x2EB8 */ J3DAnmTextureSRTKey* mpGwp00BtkData;
|
||||
/* 0x2EBC */ u8 field_0x2EBC[0x2ED4 - 0x2EBC];
|
||||
/* 0x2EBC */ u8 field_0x2EBC[0x2EC0 - 0x2EBC];
|
||||
/* 0x2EC0 */ J3DAnmTextureSRTKey* mpIceArrowBtk;
|
||||
/* 0x2EC4 */ J3DAnmTextureSRTKey* mpLightArrowBtk;
|
||||
/* 0x2EC8 */ u8 field_0x2EC8[0x2ED4 - 0x2EC8];
|
||||
/* 0x2ED4 */ J3DAnmTextureSRTKey* mpHeldItemModelAnimTexEx;
|
||||
/* 0x2ED8 */ J3DAnmTextureSRTKey* mpSwordAnimBTK;
|
||||
/* 0x2EDC */ J3DAnmTevRegKey* mpHeldItemAnimBRK;
|
||||
|
||||
+19
-11
@@ -68,7 +68,7 @@ struct dCcD_SrcCps {
|
||||
class dCcD_GStts : public cCcD_GStts {
|
||||
public:
|
||||
dCcD_GStts();
|
||||
virtual ~dCcD_GStts() {}
|
||||
virtual ~dCcD_GStts();
|
||||
|
||||
void Ct();
|
||||
void Move();
|
||||
@@ -108,7 +108,7 @@ public:
|
||||
virtual void Ct();
|
||||
virtual void ClrAt();
|
||||
virtual void ClrTg();
|
||||
virtual ~dCcD_Stts() {}
|
||||
virtual ~dCcD_Stts();
|
||||
|
||||
}; // Size = 0x3C
|
||||
|
||||
@@ -129,15 +129,18 @@ public:
|
||||
|
||||
public:
|
||||
dCcD_GAtTgCoCommonBase() { ct(); }
|
||||
void ClrActorInfo();
|
||||
void ClrActorInfo() {
|
||||
mApid = -1;
|
||||
mAc = NULL;
|
||||
}
|
||||
void ct();
|
||||
void SetHitApid(unsigned int);
|
||||
fopAc_ac_c* GetAc();
|
||||
void Set(dCcD_SrcGAtTgCoCommonBase const&);
|
||||
void SetEffCounterTimer();
|
||||
void SubtractEffCounter();
|
||||
bool ChkEffCounter();
|
||||
virtual ~dCcD_GAtTgCoCommonBase() {}
|
||||
void SubtractEffCounter() { mEffCounter -= 1; }
|
||||
bool ChkEffCounter() { return mEffCounter >= 0; }
|
||||
virtual ~dCcD_GAtTgCoCommonBase();
|
||||
|
||||
void ClrEffCounter() { mEffCounter = 0; }
|
||||
u32 GetGFlag() const { return mGFlag; }
|
||||
@@ -152,14 +155,13 @@ public:
|
||||
bool ChkRPrm(u32 flag) const { return MskRPrm(flag); }
|
||||
void SetHitCallback(dCcD_HitCallback callback) { mHitCallback = callback; }
|
||||
dCcD_HitCallback GetHitCallback() { return mHitCallback; }
|
||||
void ClrHit() { ClrActorInfo(); }
|
||||
}; // Size = 0x1C
|
||||
|
||||
// Attack (At) Collider
|
||||
class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase {
|
||||
public:
|
||||
void Set(dCcD_SrcGObjAt const&);
|
||||
virtual ~dCcD_GObjAt() {}
|
||||
virtual ~dCcD_GObjAt();
|
||||
void SetVec(cXyz& vec) { mVec = vec; }
|
||||
cXyz& GetVec() { return mVec; }
|
||||
cXyz* GetVecP() { return &mVec; }
|
||||
@@ -174,6 +176,7 @@ public:
|
||||
void SetRVec(cXyz& vec) { mRVec = vec; }
|
||||
void SetHitPos(cXyz& pos) { mHitPos = pos; }
|
||||
cXyz* GetHitPosP() { return &mHitPos; }
|
||||
void ClrHit() { ClrActorInfo(); }
|
||||
|
||||
// private:
|
||||
/* 0x1C */ u8 mSe;
|
||||
@@ -189,7 +192,7 @@ public:
|
||||
class dCcD_GObjTg : public dCcD_GAtTgCoCommonBase {
|
||||
public:
|
||||
void Set(dCcD_SrcGObjTg const&);
|
||||
virtual ~dCcD_GObjTg() {}
|
||||
virtual ~dCcD_GObjTg();
|
||||
void SetSe(u8 se) { mSe = se; }
|
||||
void SetVec(cXyz& vec) { mVec = vec; }
|
||||
cXyz& GetVec() { return mVec; }
|
||||
@@ -219,7 +222,7 @@ private:
|
||||
// Correction (Co) Collider
|
||||
class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase {
|
||||
public:
|
||||
virtual ~dCcD_GObjCo() {}
|
||||
virtual ~dCcD_GObjCo();
|
||||
void Set(dCcD_SrcGObjCo const& pSrc) { dCcD_GAtTgCoCommonBase::Set(pSrc.mBase); }
|
||||
}; // Size = 0x1C ?
|
||||
|
||||
@@ -363,6 +366,8 @@ public:
|
||||
void Set(dCcD_SrcCyl const&);
|
||||
cCcD_ShapeAttr* GetShapeAttr() { return this; }
|
||||
void StartCAt(cXyz&);
|
||||
void StartCTg(cXyz&);
|
||||
void MoveCAtTg(cXyz&);
|
||||
void MoveCAt(cXyz&);
|
||||
void MoveCTg(cXyz&);
|
||||
virtual ~dCcD_Cyl() {}
|
||||
@@ -385,7 +390,10 @@ class dCcD_Cps : public dCcD_GObjInf, public cCcD_CpsAttr {
|
||||
public:
|
||||
void Set(dCcD_SrcCps const&);
|
||||
cCcD_ShapeAttr* GetShapeAttr() { return (cCcD_ShapeAttr*)this; }
|
||||
void CalcAtVec();
|
||||
void CalcAtVec() {
|
||||
cXyz* atVecP = GetAtVecP();
|
||||
CalcVec(atVecP);
|
||||
}
|
||||
void CalcTgVec();
|
||||
virtual ~dCcD_Cps() {}
|
||||
dCcD_Cps() {}
|
||||
|
||||
@@ -360,7 +360,9 @@ public:
|
||||
/* 0x49B0 */ u8 field_0x49B0[0x4A24 - 0x49B0];
|
||||
/* 0x4A24 */ daAgb_c* mpAgb;
|
||||
/* 0x4A28 */ u32 mPlayerStatus[2][2];
|
||||
/* 0x4A38 */ u8 field_0x4A38[0x4A40 - 0x4A38];
|
||||
/* 0x4A38 */ u8 field_0x4A38[0x4A3A - 0x4A38];
|
||||
/* 0x4A3A */ u8 mMiniGameType;
|
||||
/* 0x4A3B */ u8 field_0x4A3B[0x4A40 - 0x4A3B];
|
||||
/* 0x4A40 */ __d_timer_info_c mTimerInfo;
|
||||
/* 0x4A54 */ dDlst_window_c* mCurrentWindow;
|
||||
/* 0x4A58 */ view_class* mCurrentView;
|
||||
@@ -1094,6 +1096,11 @@ inline void dComIfGp_setCurrentGrafPort(J2DOrthoGraph* i_graf) {
|
||||
g_dComIfG_gameInfo.play.setCurrentGrafPort(i_graf);
|
||||
}
|
||||
|
||||
inline u8 dComIfGp_getMiniGameType() {
|
||||
// TODO add enum for minigame type.
|
||||
// 0 for none, 8 for shooting the fishman, 2/6 for orca, 7 for mail sorting, etc
|
||||
return g_dComIfG_gameInfo.play.mMiniGameType;
|
||||
}
|
||||
|
||||
/**
|
||||
* === EVENT ===*/
|
||||
|
||||
@@ -537,8 +537,8 @@ inline f32 fopAcM_searchPlayerDistance(fopAc_ac_c* actor) {
|
||||
s8 dComIfGp_getReverb(int roomNo);
|
||||
|
||||
inline void fopAcM_seStartCurrent(fopAc_ac_c* actor, u32 sfxID, u32 param_2) {
|
||||
s8 roomNo = fopAcM_GetRoomNo(actor);
|
||||
mDoAud_seStart(sfxID, &actor->current.pos, param_2, dComIfGp_getReverb(roomNo));
|
||||
s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(actor));
|
||||
mDoAud_seStart(sfxID, &actor->current.pos, param_2, reverb);
|
||||
}
|
||||
|
||||
inline void fopAcM_seStart(fopAc_ac_c* actor, u32 sfxID, u32 param_2) {
|
||||
|
||||
+355
-24
@@ -9,12 +9,80 @@
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_npc.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/actor/d_a_player_link.h"
|
||||
#include "d/d_jnt_hit.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
// Needed for the .data section to match.
|
||||
static f32 dummy1[3] = {1.0f, 1.0f, 1.0f};
|
||||
static f32 dummy2[3] = {1.0f, 1.0f, 1.0f};
|
||||
|
||||
s16 daArrow_c::m_count;
|
||||
|
||||
const char daArrow_c::m_arc_name[] = "Link";
|
||||
|
||||
const dCcD_SrcCps daArrow_c::m_at_cps_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ AT_TYPE_NORMAL_ARROW,
|
||||
/* SrcObjAt Atp */ 2,
|
||||
/* SrcObjAt SPrm */ 0xB,
|
||||
/* SrcObjTg Type */ 0,
|
||||
/* SrcObjTg SPrm */ 0,
|
||||
/* SrcObjCo SPrm */ 0,
|
||||
/* SrcGObjAt Se */ 7,
|
||||
/* SrcGObjAt HitMark */ 0xD,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt GFlag */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg GFlag */ 0,
|
||||
/* SrcGObjCo GFlag */ 0,
|
||||
},
|
||||
// cM3dGCpsS
|
||||
{
|
||||
/* Start */ 0.0f, 0.0f, 0.0f,
|
||||
/* End */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 5.0f,
|
||||
},
|
||||
};
|
||||
|
||||
const dCcD_SrcSph daArrow_c::m_co_sph_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ 0,
|
||||
/* SrcObjTg SPrm */ 0,
|
||||
/* SrcObjCo SPrm */ 0x119,
|
||||
/* SrcGObjAt Se */ 7,
|
||||
/* SrcGObjAt HitMark */ 0,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt GFlag */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg GFlag */ 0x04,
|
||||
/* SrcGObjCo GFlag */ 0,
|
||||
},
|
||||
// cM3dGSphS
|
||||
{
|
||||
/* Center */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 25.0f,
|
||||
},
|
||||
};
|
||||
|
||||
/* 800D455C-800D457C .text createHeap_CB__FP10fopAc_ac_c */
|
||||
static BOOL createHeap_CB(fopAc_ac_c* i_this) {
|
||||
return ((daArrow_c*)i_this)->_createHeap();
|
||||
@@ -23,7 +91,7 @@ static BOOL createHeap_CB(fopAc_ac_c* i_this) {
|
||||
/* 800D457C-800D4648 .text _createHeap__9daArrow_cFv */
|
||||
BOOL daArrow_c::_createHeap() {
|
||||
// arrowglitter.bdl for Light Arrows, arrow.bdl otherwise.
|
||||
s32 modelFileIndex = (mArrowType == LIGHT_ARROWS ? 0x38 : 0x37) & 0xFFFF;
|
||||
s32 modelFileIndex = (mArrowType == TYPE_LIGHT ? 0x38 : 0x37) & 0xFFFF;
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arc_name, modelFileIndex);
|
||||
JUT_ASSERT(190, modelData != 0);
|
||||
|
||||
@@ -82,7 +150,7 @@ void daArrow_c::checkCreater() {
|
||||
/* 800D4814-800D48E8 .text setLightEffect__9daArrow_cFv */
|
||||
void daArrow_c::setLightEffect() {
|
||||
if (field_0x682 == mArrowType) {
|
||||
if (mArrowType == NORMAL_ARROWS) {
|
||||
if (mArrowType == TYPE_NORMAL) {
|
||||
return;
|
||||
}
|
||||
if (!field_0x688) {
|
||||
@@ -129,17 +197,112 @@ void daArrow_c::createBlur() {
|
||||
|
||||
/* 800D4A04-800D4ADC .text setArrowShootSe__9daArrow_cFv */
|
||||
void daArrow_c::setArrowShootSe() {
|
||||
/* Nonmatching */
|
||||
static const s32 se[8] = {
|
||||
0,
|
||||
0,
|
||||
JA_SE_LK_FIT_FIRE_ARROW,
|
||||
JA_SE_LK_SHOOT_FIRE_ARROW,
|
||||
JA_SE_LK_FIT_ICE_ARROW,
|
||||
JA_SE_LK_SHOOT_ICE_ARROW,
|
||||
JA_SE_LK_FIT_LIGHT_ARROW,
|
||||
JA_SE_LK_SHOOT_LIGHT_ARROW,
|
||||
};
|
||||
|
||||
if (mArrowType == TYPE_NORMAL) {
|
||||
return;
|
||||
}
|
||||
|
||||
fopAcM_seStartCurrent(this, se[mArrowType*2+0], 0);
|
||||
|
||||
fopAcM_seStartCurrent(this, se[mArrowType*2+1], 0);
|
||||
}
|
||||
|
||||
/* 800D4ADC-800D4B70 .text setDrawShapeMaterial__9daArrow_cFv */
|
||||
void daArrow_c::setDrawShapeMaterial() {
|
||||
/* Nonmatching */
|
||||
struct ArrowAttackInfo {
|
||||
u32 mAtType;
|
||||
u8 mAtp;
|
||||
u16 mTipJointIdx;
|
||||
};
|
||||
static const ArrowAttackInfo arrow_mat[] = {
|
||||
{
|
||||
/* mAtType */ AT_TYPE_NORMAL_ARROW,
|
||||
/* mAtp */ 2,
|
||||
/* mTipJointIdx */ 4,
|
||||
},
|
||||
{
|
||||
/* mAtType */ AT_TYPE_FIRE_ARROW,
|
||||
/* mAtp */ 4,
|
||||
/* mTipJointIdx */ 2,
|
||||
},
|
||||
{
|
||||
/* mAtType */ AT_TYPE_ICE_ARROW,
|
||||
/* mAtp */ 4,
|
||||
/* mTipJointIdx */ 3,
|
||||
},
|
||||
{
|
||||
/* mAtType */ AT_TYPE_LIGHT_ARROW,
|
||||
/* mAtp */ 0xFF,
|
||||
/* mTipJointIdx */ 0,
|
||||
},
|
||||
};
|
||||
|
||||
mCps.SetAtType(arrow_mat[mArrowType].mAtType);
|
||||
mCps.SetAtAtp(arrow_mat[mArrowType].mAtp);
|
||||
|
||||
if (mbShotByZelda) {
|
||||
mCps.SetAtAtp(4);
|
||||
mCps.SetAtType(arrow_mat[0].mAtType);
|
||||
mCps.OnAtSPrmBit(0xE);
|
||||
}
|
||||
|
||||
if (arrow_mat[mArrowType].mTipJointIdx != 0) {
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
J3DJoint* tipJoint = modelData->getJointNodePointer(arrow_mat[mArrowType].mTipJointIdx);
|
||||
mpTipMat = tipJoint->getMesh();
|
||||
}
|
||||
}
|
||||
|
||||
/* 800D4B70-800D4D98 .text arrowShooting__9daArrow_cFv */
|
||||
void daArrow_c::arrowShooting() {
|
||||
/* Nonmatching */
|
||||
field_0x6a8 = current.pos;
|
||||
f32 xCos = cM_scos(current.angle.x);
|
||||
speed.x = 200.0f * cM_ssin(current.angle.y) * xCos;
|
||||
speed.y = 200.0f * cM_ssin(current.angle.x);
|
||||
speed.z = 200.0f * cM_scos(current.angle.y) * xCos;
|
||||
|
||||
setArrowShootSe();
|
||||
|
||||
if (mArrowType == TYPE_LIGHT && !mbShotByZelda) {
|
||||
if (strcmp(dComIfGp_getStartStageName(), "GanonK") != 0) {
|
||||
// Not in Puppet Ganon's boss room.
|
||||
mCps.SetAtSpl((dCcG_At_Spl)0xB);
|
||||
}
|
||||
}
|
||||
|
||||
field_0x67c = shape_angle;
|
||||
|
||||
createBlur();
|
||||
|
||||
field_0x602 = m_count;
|
||||
m_count += 1;
|
||||
if (m_count == 5) {
|
||||
m_count = 0;
|
||||
}
|
||||
|
||||
cXyz end = current.pos + speed*1.25f;
|
||||
mCps.SetStartEnd(current.pos, end);
|
||||
mCps.SetR(5.0f);
|
||||
mCps.CalcAtVec();
|
||||
|
||||
dComIfG_Ccsp()->Set(&mCps);
|
||||
// Using the dComIfG_Ccsp inline here breaks the match.
|
||||
// dComIfG_Ccsp()->SetMass(&mCps, 1);
|
||||
g_dComIfG_gameInfo.play.mCcS.SetMass(&mCps, 1);
|
||||
|
||||
mbHitActor = false;
|
||||
mNearestHitPos = end;
|
||||
mNearestHitDist = MAXFLOAT;
|
||||
}
|
||||
|
||||
/* 800D4D98-800D4DC0 .text arrowUseMp__9daArrow_cFv */
|
||||
@@ -151,13 +314,57 @@ void daArrow_c::arrowUseMp() {
|
||||
-2, // Light Arrows
|
||||
};
|
||||
|
||||
s32 magic = dComIfGp_getItemMagicCount();
|
||||
dComIfGp_setItemMagicCount(magic + use_mp[mArrowType]);
|
||||
dComIfGp_setItemMagicCount(use_mp[mArrowType]);
|
||||
}
|
||||
|
||||
// This is a fake inline (not present in debug maps) which is required for ShieldReflect to match.
|
||||
inline void setSphereCoordsFromXYAngles(cXyz& xyz, f32 mag, s16 targetAngleX, s16 targetAngleY) {
|
||||
f32 normZ;
|
||||
f32 normY;
|
||||
f32 normX;
|
||||
normX = cM_ssin(targetAngleY) * cM_scos(targetAngleX);
|
||||
normY = -cM_ssin(targetAngleX);
|
||||
normZ = cM_scos(targetAngleY) * cM_scos(targetAngleX);
|
||||
xyz.x = normX * mag;
|
||||
xyz.y = normY * mag;
|
||||
xyz.z = normZ * mag;
|
||||
}
|
||||
|
||||
/* 800D4DC0-800D50A0 .text ShieldReflect__9daArrow_cFv */
|
||||
void daArrow_c::ShieldReflect() {
|
||||
/* Nonmatching */
|
||||
f32 vel = speed.abs();
|
||||
|
||||
daPy_lk_c* link = daPy_getPlayerLinkActorClass();
|
||||
s16 targetAngleY = link->shape_angle.y + link->getBodyAngleY();
|
||||
s16 targetAngleX = link->getBodyAngleX();
|
||||
|
||||
fopAc_ac_c* ganondorf;
|
||||
if (fopAcM_SearchByName(PROC_GND, &ganondorf) && dComIfGp_getAttention().LockonTruth() && dComIfGp_getAttention().LockonTarget(0) == ganondorf) {
|
||||
cXyz ganondorfChestPos = ganondorf->current.pos;
|
||||
ganondorfChestPos.y = g_regHIO.mChild[8].mFloatRegs[0] + 130.0f;
|
||||
targetAngleX = -cLib_targetAngleX(&link->current.pos, &ganondorfChestPos);
|
||||
fpcM_SetParam(ganondorf, 0x23);
|
||||
field_0x608 = g_regHIO.mChild[0].mShortRegs[3] + 15;
|
||||
mpSparkleEmitter = dComIfGp_particle_set(0x3EE, &link->current.pos, NULL, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
// // Regswaps without creating a fake inline.
|
||||
// // f1 -> f3: normY
|
||||
// // f3 -> f1: normZ
|
||||
// f32 normZ;
|
||||
// f32 normY;
|
||||
// f32 normX;
|
||||
// normX = cM_ssin(targetAngleY) * cM_scos(targetAngleX);
|
||||
// normY = -cM_ssin(targetAngleX);
|
||||
// normZ = cM_scos(targetAngleY) * cM_scos(targetAngleX);
|
||||
// speed.x = normX * vel;
|
||||
// speed.y = normY * vel;
|
||||
// speed.z = normZ * vel;
|
||||
setSphereCoordsFromXYAngles(speed, vel, targetAngleX, targetAngleY);
|
||||
|
||||
shape_angle.x = cM_atan2s(-speed.y, -speed.absXZ());
|
||||
shape_angle.y = cM_atan2s(-speed.x, -speed.z);
|
||||
shape_angle.z = 0;
|
||||
}
|
||||
|
||||
/* 800D50A0-800D5388 .text check_water_in__9daArrow_cFv */
|
||||
@@ -178,7 +385,29 @@ void daArrow_c::changeArrowType() {
|
||||
|
||||
/* 800D553C-800D560C .text changeArrowTypeNotReady__9daArrow_cFv */
|
||||
void daArrow_c::changeArrowTypeNotReady() {
|
||||
/* Nonmatching */
|
||||
if (m_keep_type == TYPE_NORMAL) {
|
||||
if (dComIfGs_getMagic() < 1) {
|
||||
return;
|
||||
}
|
||||
if (dComIfGs_getItem(0xC) == MAGIC_ARROW || dComIfGs_getItem(0xC) == LIGHT_ARROW) {
|
||||
m_keep_type = TYPE_FIRE;
|
||||
}
|
||||
} else if (m_keep_type == TYPE_FIRE) {
|
||||
if (dComIfGs_getMagic() < 1) {
|
||||
return;
|
||||
}
|
||||
if (dComIfGs_getItem(0xC) == MAGIC_ARROW || dComIfGs_getItem(0xC) == LIGHT_ARROW) {
|
||||
m_keep_type = TYPE_ICE;
|
||||
}
|
||||
} else if (m_keep_type == TYPE_ICE) {
|
||||
if (dComIfGs_getMagic() >= 2 && dComIfGs_getItem(0xC) == LIGHT_ARROW) {
|
||||
m_keep_type = TYPE_LIGHT;
|
||||
} else {
|
||||
m_keep_type = TYPE_NORMAL;
|
||||
}
|
||||
} else if (m_keep_type == TYPE_LIGHT) {
|
||||
m_keep_type = TYPE_NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800D560C-800D56B0 .text setRoomInfo__9daArrow_cFv */
|
||||
@@ -201,7 +430,6 @@ void daArrow_c::setRoomInfo() {
|
||||
|
||||
/* 800D56B0-800D5854 .text setKeepMatrix__9daArrow_cFv */
|
||||
void daArrow_c::setKeepMatrix() {
|
||||
/* Nonmatching */
|
||||
// Transform the arrow onto its archer's hand.
|
||||
if (mbShotByZelda) {
|
||||
fopNpc_npc_c* zelda;
|
||||
@@ -283,33 +511,39 @@ void daArrow_c::setStopActorMatrix() {
|
||||
}
|
||||
|
||||
/* 800D5A70-800D5B20 .text procWait__9daArrow_cFv */
|
||||
void daArrow_c::procWait() {
|
||||
BOOL daArrow_c::procWait() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800D5B20-800D6BF4 .text procMove__9daArrow_cFv */
|
||||
void daArrow_c::procMove() {
|
||||
BOOL daArrow_c::procMove() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800D6BF4-800D6E70 .text procReturn__9daArrow_cFv */
|
||||
void daArrow_c::procReturn() {
|
||||
BOOL daArrow_c::procReturn() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800D6E70-800D71F8 .text procStop_BG__9daArrow_cFv */
|
||||
void daArrow_c::procStop_BG() {
|
||||
BOOL daArrow_c::procStop_BG() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800D71F8-800D727C .text procStop_Actor__9daArrow_cFv */
|
||||
void daArrow_c::procStop_Actor() {
|
||||
BOOL daArrow_c::procStop_Actor() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800D727C-800D72BC .text procWater__9daArrow_cFv */
|
||||
void daArrow_c::procWater() {
|
||||
/* Nonmatching */
|
||||
BOOL daArrow_c::procWater() {
|
||||
if (mInWaterTimer <= 0) {
|
||||
fopAcM_delete(this);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mInWaterTimer--;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800D72BC-800D72EC .text checkRestMp__9daArrow_cFv */
|
||||
@@ -334,8 +568,54 @@ void daArrow_c::setTypeByPlayer() {
|
||||
}
|
||||
|
||||
/* 800D7320-800D74FC .text createInit__9daArrow_cFv */
|
||||
void daArrow_c::createInit() {
|
||||
/* Nonmatching */
|
||||
BOOL daArrow_c::createInit() {
|
||||
if (mArrowType == TYPE_LIGHT) {
|
||||
mpBtk = daPy_getPlayerLinkActorClass()->getLightArrowBtk();
|
||||
} else {
|
||||
mpBtk = daPy_getPlayerLinkActorClass()->getIceArrowBtk();
|
||||
}
|
||||
|
||||
mCurrProcFunc = &procWait;
|
||||
|
||||
setKeepMatrix();
|
||||
mCullMtx = mpModel->getBaseTRMtx();
|
||||
mCull.mBox.mMin.x = -6.0f;
|
||||
mCull.mBox.mMin.y = -6.0f;
|
||||
mCull.mBox.mMin.z = 0.0f;
|
||||
mCull.mBox.mMax.x = 6.0f;
|
||||
mCull.mBox.mMax.y = 6.0f;
|
||||
mCull.mBox.mMax.z = 65.0f;
|
||||
|
||||
mStts.Init(10, 0xFF, this);
|
||||
mCps.Set(m_at_cps_src);
|
||||
mCps.SetStts(&mStts);
|
||||
mCps.SetAtHitCallback(&atHit_CB);
|
||||
mSph.Set(m_co_sph_src);
|
||||
mSph.SetStts(&mStts);
|
||||
|
||||
field_0x602 = -1;
|
||||
|
||||
if (mArrowType != TYPE_LIGHT) {
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
modelData->getJointNodePointer(4)->getMesh()->getShape()->hide();
|
||||
modelData->getJointNodePointer(2)->getMesh()->getShape()->hide();
|
||||
modelData->getJointNodePointer(3)->getMesh()->getShape()->hide();
|
||||
modelData->getJointNodePointer(3)->getMesh()->getNext()->getShape()->hide();
|
||||
}
|
||||
setDrawShapeMaterial();
|
||||
|
||||
field_0x698 = 1;
|
||||
field_0x699 = 0;
|
||||
field_0x69a = 0;
|
||||
field_0x69c = 0;
|
||||
field_0x6a0 = 300;
|
||||
mInWaterTimer = 0;
|
||||
field_0x6e4 = 0;
|
||||
field_0x688 = 0;
|
||||
field_0x664 = 0;
|
||||
field_0x604 = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800D74FC-800D7820 .text _execute__9daArrow_cFv */
|
||||
@@ -345,12 +625,66 @@ BOOL daArrow_c::_execute() {
|
||||
|
||||
/* 800D7820-800D7960 .text _draw__9daArrow_cFv */
|
||||
BOOL daArrow_c::_draw() {
|
||||
/* Nonmatching */
|
||||
if (!field_0x698) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &mTevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &mTevStr);
|
||||
|
||||
if (mArrowType != TYPE_LIGHT) {
|
||||
mpTipMat->getShape()->show();
|
||||
J3DMaterial* nextMat = mpTipMat->getNext();
|
||||
if (nextMat) {
|
||||
nextMat->getShape()->show();
|
||||
}
|
||||
}
|
||||
|
||||
mpBtk->setFrame(mBtkFrame);
|
||||
dComIfGd_setListP1();
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
dComIfGd_setList();
|
||||
|
||||
if (mArrowType != TYPE_LIGHT) {
|
||||
mpTipMat->getShape()->hide();
|
||||
J3DMaterial* nextMat = mpTipMat->getNext();
|
||||
if (nextMat) {
|
||||
nextMat->getShape()->hide();
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800D7960-800D7A38 .text _create__9daArrow_cFv */
|
||||
s32 daArrow_c::_create() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetupActor(this, daArrow_c);
|
||||
|
||||
checkCreater();
|
||||
|
||||
if (mbShotByZelda) {
|
||||
mArrowType = TYPE_LIGHT;
|
||||
} else {
|
||||
setTypeByPlayer();
|
||||
}
|
||||
|
||||
if (dComIfGp_getMiniGameType() == 8) {
|
||||
mArrowType = TYPE_NORMAL;
|
||||
}
|
||||
|
||||
const static u32 heap_size[] = {
|
||||
0x1300,
|
||||
0x1300,
|
||||
0x1300,
|
||||
0x820,
|
||||
};
|
||||
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)&createHeap_CB, heap_size[mArrowType])) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
// Using the enum here breaks the match.
|
||||
// return createInit() ? cPhs_COMPLEATE_e : cPhs_ERROR_e;
|
||||
return createInit() ? 4 : 5;
|
||||
}
|
||||
|
||||
/* 800D7A38-800D7DB4 .text __ct__9daArrow_cFv */
|
||||
@@ -364,19 +698,16 @@ BOOL daArrow_c::_delete() {
|
||||
|
||||
/* 800D8200-800D8220 .text daArrowCreate__FPv */
|
||||
s32 daArrowCreate(void* i_this) {
|
||||
/* Nonmatching */
|
||||
return ((daArrow_c*)i_this)->_create();
|
||||
}
|
||||
|
||||
/* 800D8220-800D8240 .text daArrowDelete__FPv */
|
||||
BOOL daArrowDelete(void* i_this) {
|
||||
/* Nonmatching */
|
||||
return ((daArrow_c*)i_this)->_delete();
|
||||
}
|
||||
|
||||
/* 800D8240-800D8260 .text daArrowExecute__FPv */
|
||||
BOOL daArrowExecute(void* i_this) {
|
||||
/* Nonmatching */
|
||||
return ((daArrow_c*)i_this)->_execute();
|
||||
}
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ s32 daMozo_c::CreateInit() {
|
||||
|
||||
// TODO: insert missing assignment here
|
||||
|
||||
mAnimMorf->getModel()->setUserArea(this);
|
||||
mAnimMorf->getModel()->setUserArea((u32)this);
|
||||
for (int i = 0; i < mdlData->getJointNum(); i++) {
|
||||
if (i == 2) {
|
||||
mdlData->getJointNodePointer(2)->setCallBack((J3DNodeCallBack)daMozo_nodeCallBack);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
struct daObjGryw00_c {
|
||||
public:
|
||||
f32 get_draw_water_lvl(void *i_this);
|
||||
f32 get_draw_water_lv(void *i_this);
|
||||
};
|
||||
|
||||
struct daObjYgush00_c : public fopAc_ac_c {
|
||||
@@ -30,23 +30,29 @@ public:
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
bool create_heap();
|
||||
static s32 solidHeapCB(fopAc_ac_c*);
|
||||
static BOOL solidHeapCB(fopAc_ac_c*);
|
||||
|
||||
public:
|
||||
request_of_phase_process_class mPhs;
|
||||
J3DModel * mpModel;
|
||||
mDoExt_btkAnm mBtkAnm;
|
||||
mDoExt_bckAnm mBckAnm;
|
||||
s32 mType;
|
||||
daObjGryw00_c * mpGryw00;
|
||||
/* 0x290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x298 */ J3DModel * mpModel;
|
||||
/* 0x29C */ mDoExt_btkAnm mBtkAnm;
|
||||
/* 0x2B0 */ mDoExt_bckAnm mBckAnm;
|
||||
/* 0x2C0 */ s32 mType;
|
||||
/* 0x2C4 */ daObjGryw00_c * mpGryw00;
|
||||
};
|
||||
|
||||
namespace {
|
||||
static const char l_arcname[] = "Ygush00";
|
||||
};
|
||||
|
||||
// Needed for the .data section to match.
|
||||
static f32 dummy1[3] = {1.0f, 1.0f, 1.0f};
|
||||
static f32 dummy2[3] = {1.0f, 1.0f, 1.0f};
|
||||
static u8 dummy3[4] = {0x02, 0x00, 0x02, 0x01};
|
||||
static f64 dummy4[2] = {3.0, 0.5};
|
||||
|
||||
/* 00000078-0000009C .text solidHeapCB__14daObjYgush00_cFP10fopAc_ac_c */
|
||||
s32 daObjYgush00_c::solidHeapCB(fopAc_ac_c* ac) {
|
||||
BOOL daObjYgush00_c::solidHeapCB(fopAc_ac_c* ac) {
|
||||
return ((daObjYgush00_c*)ac)->create_heap();
|
||||
}
|
||||
|
||||
@@ -56,25 +62,28 @@ bool daObjYgush00_c::create_heap() {
|
||||
static u32 btk_table[] = { 0x0E, 0x0D, 0x0D, 0x0D };
|
||||
static u32 bck_table[] = { 0x06, 0x05, 0x05, 0x05 };
|
||||
|
||||
J3DModelData * pModelData;
|
||||
bool ret = true;
|
||||
|
||||
J3DModelData * pModelData = (J3DModelData *)dComIfG_getObjectRes(l_arcname, mdl_table[mType]);
|
||||
|
||||
// TODO regswap
|
||||
// r29 -> r30: g_dComIfG_gameInfo.mResControl.mObjectInfo / btkRet
|
||||
// r30 -> r29: pModelData
|
||||
pModelData = (J3DModelData *)dComIfG_getObjectRes(l_arcname, mdl_table[mType]);
|
||||
J3DAnmTextureSRTKey * pBtk = (J3DAnmTextureSRTKey *)dComIfG_getObjectRes(l_arcname, btk_table[mType]);
|
||||
J3DAnmTransform * pBck = (J3DAnmTransform *)dComIfG_getObjectRes(l_arcname, bck_table[mType]);
|
||||
|
||||
if (!pModelData || !pBtk || !pBck) {
|
||||
JUT_ASSERT(207, 0);
|
||||
ret = false;
|
||||
return ret;
|
||||
} else {
|
||||
mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000222);
|
||||
s32 btkRet = mBtkAnm.init(pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
|
||||
s32 bckRet = mBckAnm.init(pModelData, pBck, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false);
|
||||
|
||||
if (!mpModel || !btkRet || !bckRet)
|
||||
ret = false;
|
||||
}
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000222);
|
||||
s32 btkRet = mBtkAnm.init(pModelData, pBtk, true, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, false);
|
||||
s32 bckRet = mBckAnm.init(pModelData, pBck, true, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false);
|
||||
|
||||
if (!mpModel || !btkRet || !bckRet)
|
||||
ret = false;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -124,7 +133,7 @@ bool daObjYgush00_c::_execute() {
|
||||
|
||||
if (mType == 1) {
|
||||
if (mpGryw00 != NULL) {
|
||||
if (mpGryw00->get_draw_water_lvl(mpGryw00) <= getPosition().y) {
|
||||
if (mpGryw00->get_draw_water_lv(mpGryw00) <= getPosition().y) {
|
||||
fopAcM_seStartCurrent(this, 0x61fe, 0);
|
||||
}
|
||||
} else {
|
||||
@@ -148,27 +157,27 @@ bool daObjYgush00_c::_draw() {
|
||||
}
|
||||
|
||||
/* 000006FC-0000071C .text daObjYgush00_Create__FP14daObjYgush00_c */
|
||||
s32 daObjYgush00_Create(daObjYgush00_c* i_this) {
|
||||
static s32 daObjYgush00_Create(daObjYgush00_c* i_this) {
|
||||
return i_this->_create();
|
||||
}
|
||||
|
||||
/* 0000071C-00000740 .text daObjYgush00_Delete__FP14daObjYgush00_c */
|
||||
s32 daObjYgush00_Delete(daObjYgush00_c* i_this) {
|
||||
static s32 daObjYgush00_Delete(daObjYgush00_c* i_this) {
|
||||
return i_this->_delete();
|
||||
}
|
||||
|
||||
/* 00000740-00000764 .text daObjYgush00_Execute__FP14daObjYgush00_c */
|
||||
s32 daObjYgush00_Execute(daObjYgush00_c* i_this) {
|
||||
static s32 daObjYgush00_Execute(daObjYgush00_c* i_this) {
|
||||
return i_this->_execute();
|
||||
}
|
||||
|
||||
/* 00000764-00000788 .text daObjYgush00_Draw__FP14daObjYgush00_c */
|
||||
s32 daObjYgush00_Draw(daObjYgush00_c* i_this) {
|
||||
static s32 daObjYgush00_Draw(daObjYgush00_c* i_this) {
|
||||
return i_this->_draw();
|
||||
}
|
||||
|
||||
/* 00000788-00000790 .text daObjYgush00_IsDelete__FP14daObjYgush00_c */
|
||||
s32 daObjYgush00_IsDelete(daObjYgush00_c* i_this) {
|
||||
static s32 daObjYgush00_IsDelete(daObjYgush00_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
+152
-96
@@ -3,22 +3,41 @@
|
||||
// Translation Unit: d_cc_d.cpp
|
||||
//
|
||||
|
||||
#include "d_cc_d.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
/* 800AB2AC-800AB328 .text GetAc__22dCcD_GAtTgCoCommonBaseFv */
|
||||
void dCcD_GAtTgCoCommonBase::GetAc() {
|
||||
/* Nonmatching */
|
||||
fopAc_ac_c* dCcD_GAtTgCoCommonBase::GetAc() {
|
||||
if (mApid == -1) {
|
||||
return NULL;
|
||||
}
|
||||
if (mAc == NULL) {
|
||||
mAc = fopAcM_SearchByID(mApid);
|
||||
if (mAc == NULL) {
|
||||
mApid = -1;
|
||||
}
|
||||
}
|
||||
return mAc;
|
||||
}
|
||||
|
||||
/* 800AB328-800AB334 .text SetEffCounterTimer__22dCcD_GAtTgCoCommonBaseFv */
|
||||
void dCcD_GAtTgCoCommonBase::SetEffCounterTimer() {
|
||||
/* Nonmatching */
|
||||
mEffCounter = 5;
|
||||
}
|
||||
|
||||
/* 800AB334-800AB384 .text __ct__10dCcD_GSttsFv */
|
||||
dCcD_GStts::dCcD_GStts() {
|
||||
/* Nonmatching */
|
||||
mAt = 0;
|
||||
mTg = 0;
|
||||
mRoomId = 0;
|
||||
field_0x08 = -1;
|
||||
mAtApid = -1;
|
||||
mAtOldApid = -1;
|
||||
mTgApid = -1;
|
||||
mTgOldApid = -1;
|
||||
field_0x1C = 0;
|
||||
}
|
||||
|
||||
/* 800AB384-800AB3BC .text Ct__10dCcD_GSttsFv */
|
||||
@@ -28,12 +47,34 @@ void dCcD_GStts::Ct() {
|
||||
|
||||
/* 800AB3BC-800AB3DC .text Move__10dCcD_GSttsFv */
|
||||
void dCcD_GStts::Move() {
|
||||
/* Nonmatching */
|
||||
mAtOldApid = mAtApid;
|
||||
mAtApid = NULL;
|
||||
mTgOldApid = mTgApid;
|
||||
mTgApid = NULL;
|
||||
}
|
||||
|
||||
/* 800AB3DC-800AB46C .text Init__9dCcD_SttsFiiP10fopAc_ac_c */
|
||||
void dCcD_Stts::Init(int, int, fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
void dCcD_Stts::Init(int param_0, int param_1, fopAc_ac_c* pActor) {
|
||||
u32 procId;
|
||||
if (pActor) {
|
||||
procId = fpcM_GetID(pActor);
|
||||
} else {
|
||||
procId = -1;
|
||||
}
|
||||
cCcD_Stts::Init(param_0, param_1, pActor, procId);
|
||||
|
||||
s32 roomNo;
|
||||
if (pActor) {
|
||||
roomNo = pActor->current.roomNo;
|
||||
} else {
|
||||
roomNo = 0;
|
||||
OnNoActor();
|
||||
}
|
||||
if (roomNo != -1) {
|
||||
SetRoomId(roomNo);
|
||||
} else {
|
||||
SetRoomId(0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 800AB46C-800AB4A0 .text Ct__9dCcD_SttsFv */
|
||||
@@ -62,38 +103,53 @@ dCcD_GObjInf::~dCcD_GObjInf() {
|
||||
}
|
||||
|
||||
/* 800AB7C0-800AB7C4 .text GetGObjInf__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetGObjInf() {
|
||||
/* Nonmatching */
|
||||
cCcD_GObjInf* dCcD_GObjInf::GetGObjInf() {
|
||||
return (cCcD_GObjInf*)this;
|
||||
}
|
||||
|
||||
/* 800AB7C4-800AB81C .text ClrAtHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ClrAtHit() {
|
||||
/* Nonmatching */
|
||||
OffAtHitBit();
|
||||
cCcD_Obj::ClrAtHit();
|
||||
mGObjAt.ClrHit();
|
||||
OffAtShieldHit();
|
||||
OffAtHitNoActor();
|
||||
SubtractAtEffCounter();
|
||||
if (!ChkAtEffCounter()) {
|
||||
ClrAtEffCounter();
|
||||
}
|
||||
}
|
||||
|
||||
#if VERSION != VERSION_JPN
|
||||
/* 800AB81C-800AB874 .text ChkAtHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ChkAtHit() {
|
||||
u32 dCcD_GObjInf::ChkAtHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 800AB874-800AB8B4 .text ResetAtHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ResetAtHit() {
|
||||
/* Nonmatching */
|
||||
ClrAtHit();
|
||||
ClrAtEffCounter();
|
||||
}
|
||||
|
||||
/* 800AB8B4-800AB904 .text GetAtHitObj__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetAtHitObj() {
|
||||
cCcD_Obj* dCcD_GObjInf::GetAtHitObj() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800AB904-800AB938 .text GetAtHitGObj__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetAtHitGObj() {
|
||||
/* Nonmatching */
|
||||
cCcD_GObjInf* dCcD_GObjInf::GetAtHitGObj() {
|
||||
cCcD_Obj* atHitObj = GetAtHitObj();
|
||||
if (atHitObj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return dCcD_GetGObjInf(atHitObj);
|
||||
}
|
||||
|
||||
/* 800AB938-800AB958 .text ChkAtNoGuard__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ChkAtNoGuard() {
|
||||
/* Nonmatching */
|
||||
u8 dCcD_GObjInf::ChkAtNoGuard() {
|
||||
return GetAtSpl() >= 8;
|
||||
}
|
||||
|
||||
/* 800AB958-800AB9B0 .text ClrTgHit__12dCcD_GObjInfFv */
|
||||
@@ -101,10 +157,12 @@ void dCcD_GObjInf::ClrTgHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
#if VERSION != VERSION_JPN
|
||||
/* 800AB9B0-800ABA08 .text ChkTgHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ChkTgHit() {
|
||||
u32 dCcD_GObjInf::ChkTgHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 800ABA08-800ABA48 .text ResetTgHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ResetTgHit() {
|
||||
@@ -112,17 +170,17 @@ void dCcD_GObjInf::ResetTgHit() {
|
||||
}
|
||||
|
||||
/* 800ABA48-800ABA98 .text GetTgHitObj__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetTgHitObj() {
|
||||
cCcD_Obj* dCcD_GObjInf::GetTgHitObj() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800ABA98-800ABACC .text GetTgHitGObj__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetTgHitGObj() {
|
||||
dCcD_GObjInf* dCcD_GObjInf::GetTgHitGObj() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800ABACC-800ABB00 .text GetTgHitObjSe__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetTgHitObjSe() {
|
||||
u8 dCcD_GObjInf::GetTgHitObjSe() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -131,13 +189,15 @@ void dCcD_GObjInf::ClrCoHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
#if VERSION != VERSION_JPN
|
||||
/* 800ABB4C-800ABBA4 .text ChkCoHit__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::ChkCoHit() {
|
||||
u32 dCcD_GObjInf::ChkCoHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 800ABBA4-800ABBF4 .text GetCoHitObj__12dCcD_GObjInfFv */
|
||||
void dCcD_GObjInf::GetCoHitObj() {
|
||||
cCcD_Obj* dCcD_GObjInf::GetCoHitObj() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -147,8 +207,10 @@ void dCcD_GObjInf::Set(const dCcD_SrcGObjInf&) {
|
||||
}
|
||||
|
||||
/* 800ABC54-800ABCC4 .text dCcD_GetGObjInf__FP8cCcD_Obj */
|
||||
void dCcD_GetGObjInf(cCcD_Obj*) {
|
||||
dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* pobj) {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(531, pobj != 0);
|
||||
return (dCcD_GObjInf*)pobj->GetGObjInf();
|
||||
}
|
||||
|
||||
/* 800ABCC4-800ABD34 .text Set__8dCcD_CpsFRC11dCcD_SrcCps */
|
||||
@@ -206,85 +268,85 @@ void dCcD_Sph::MoveCAt(cXyz&) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800AC0E8-800AC130 .text __dt__10cCcD_GSttsFv */
|
||||
cCcD_GStts::~cCcD_GStts() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC0E8-800AC130 .text __dt__10cCcD_GSttsFv */
|
||||
// cCcD_GStts::~cCcD_GStts() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC130-800AC228 .text __dt__12cCcD_GObjInfFv */
|
||||
cCcD_GObjInf::~cCcD_GObjInf() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC130-800AC228 .text __dt__12cCcD_GObjInfFv */
|
||||
// cCcD_GObjInf::~cCcD_GObjInf() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC228-800AC310 .text __dt__8cCcD_ObjFv */
|
||||
cCcD_Obj::~cCcD_Obj() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC228-800AC310 .text __dt__8cCcD_ObjFv */
|
||||
// cCcD_Obj::~cCcD_Obj() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC310-800AC3D0 .text __dt__14cCcD_ObjHitInfFv */
|
||||
cCcD_ObjHitInf::~cCcD_ObjHitInf() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC310-800AC3D0 .text __dt__14cCcD_ObjHitInfFv */
|
||||
// cCcD_ObjHitInf::~cCcD_ObjHitInf() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC3D0-800AC42C .text __dt__10cCcD_ObjCoFv */
|
||||
cCcD_ObjCo::~cCcD_ObjCo() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC3D0-800AC42C .text __dt__10cCcD_ObjCoFv */
|
||||
// cCcD_ObjCo::~cCcD_ObjCo() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC42C-800AC488 .text __dt__10cCcD_ObjTgFv */
|
||||
cCcD_ObjTg::~cCcD_ObjTg() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC42C-800AC488 .text __dt__10cCcD_ObjTgFv */
|
||||
// cCcD_ObjTg::~cCcD_ObjTg() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC488-800AC4E4 .text __dt__10cCcD_ObjAtFv */
|
||||
cCcD_ObjAt::~cCcD_ObjAt() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC488-800AC4E4 .text __dt__10cCcD_ObjAtFv */
|
||||
// cCcD_ObjAt::~cCcD_ObjAt() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC4E4-800AC52C .text __dt__18cCcD_ObjCommonBaseFv */
|
||||
cCcD_ObjCommonBase::~cCcD_ObjCommonBase() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC4E4-800AC52C .text __dt__18cCcD_ObjCommonBaseFv */
|
||||
// cCcD_ObjCommonBase::~cCcD_ObjCommonBase() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC52C-800AC534 .text GetGObjInf__8cCcD_ObjFv */
|
||||
void cCcD_Obj::GetGObjInf() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC52C-800AC534 .text GetGObjInf__8cCcD_ObjFv */
|
||||
// cCcD_GObjInf* cCcD_Obj::GetGObjInf() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC534-800AC538 .text GetGObjInf__12cCcD_GObjInfCFv */
|
||||
void cCcD_GObjInf::GetGObjInf() const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC534-800AC538 .text GetGObjInf__12cCcD_GObjInfCFv */
|
||||
// cCcD_GObjInf const* cCcD_GObjInf::GetGObjInf() const {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC538-800AC540 .text GetShapeAttr__8cCcD_ObjCFv */
|
||||
void cCcD_Obj::GetShapeAttr() const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC538-800AC540 .text GetShapeAttr__8cCcD_ObjCFv */
|
||||
// cCcD_ShapeAttr const* cCcD_Obj::GetShapeAttr() const {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC540-800AC558 .text ClrAtHit__12cCcD_GObjInfFv */
|
||||
void cCcD_GObjInf::ClrAtHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC540-800AC558 .text ClrAtHit__12cCcD_GObjInfFv */
|
||||
// void cCcD_GObjInf::ClrAtHit() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC558-800AC570 .text ClrTgHit__12cCcD_GObjInfFv */
|
||||
void cCcD_GObjInf::ClrTgHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC558-800AC570 .text ClrTgHit__12cCcD_GObjInfFv */
|
||||
// void cCcD_GObjInf::ClrTgHit() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC570-800AC588 .text ClrCoHit__12cCcD_GObjInfFv */
|
||||
void cCcD_GObjInf::ClrCoHit() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC570-800AC588 .text ClrCoHit__12cCcD_GObjInfFv */
|
||||
// void cCcD_GObjInf::ClrCoHit() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC588-800AC58C .text GetGObjInf__12cCcD_GObjInfFv */
|
||||
void cCcD_GObjInf::GetGObjInf() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC588-800AC58C .text GetGObjInf__12cCcD_GObjInfFv */
|
||||
// cCcD_GObjInf* cCcD_GObjInf::GetGObjInf() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC58C-800AC594 .text GetGObjInf__8cCcD_ObjCFv */
|
||||
void cCcD_Obj::GetGObjInf() const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 800AC58C-800AC594 .text GetGObjInf__8cCcD_ObjCFv */
|
||||
// cCcD_GObjInf const* cCcD_Obj::GetGObjInf() const {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 800AC594-800AC5F0 .text __dt__11dCcD_GObjCoFv */
|
||||
dCcD_GObjCo::~dCcD_GObjCo() {
|
||||
@@ -307,7 +369,7 @@ dCcD_GAtTgCoCommonBase::~dCcD_GAtTgCoCommonBase() {
|
||||
}
|
||||
|
||||
/* 800AC6F0-800AC700 .text GetGStts__9dCcD_SttsFv */
|
||||
void dCcD_Stts::GetGStts() {
|
||||
cCcD_GStts* dCcD_Stts::GetGStts() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -330,9 +392,3 @@ dCcD_Stts::~dCcD_Stts() {
|
||||
dCcD_GStts::~dCcD_GStts() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800AC808-800AC810 .text @28@__dt__9dCcD_SttsFv */
|
||||
void @28@__dt__9dCcD_SttsFv {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user