mirror of
https://github.com/zeldaret/tww.git
synced 2024-11-27 07:11:32 +00:00
d_a_bwdg 100%, weak order not matching
This commit is contained in:
parent
8238d12e71
commit
9d746447f9
@ -1412,7 +1412,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_bst"),
|
||||
ActorRel(NonMatching, "d_a_btd"),
|
||||
ActorRel(NonMatching, "d_a_bwd"),
|
||||
ActorRel(NonMatching, "d_a_bwdg"),
|
||||
ActorRel(NonMatching, "d_a_bwdg", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_bwds"),
|
||||
ActorRel(NonMatching, "d_a_daiocta"),
|
||||
ActorRel(NonMatching, "d_a_daiocta_eye"),
|
||||
|
@ -223,6 +223,7 @@ public:
|
||||
}
|
||||
int GetVtxNum() const { return pm_bgd->m_v_num; }
|
||||
Vec* GetVtxTbl() const { return pm_vtx_tbl; }
|
||||
void SetVtxTbl(Vec* v) { pm_vtx_tbl = v; }
|
||||
bool GroundCross(cBgS_GndChk* chk) {
|
||||
return GroundCrossGrpRp(chk, m_rootGrpIdx, 1);
|
||||
}
|
||||
@ -238,7 +239,6 @@ public:
|
||||
void ChkWallRegist() {}
|
||||
void OffRoofRegist() {}
|
||||
void SetBaseMtxP(Mtx* mtx_p) { pm_base = mtx_p; }
|
||||
void SetVtxTbl(Vec* v) { pm_vtx_tbl = v; }
|
||||
void ShdwDraw(cBgS_ShdwDraw* shdw) {
|
||||
ShdwDrawGrpRp(shdw, m_rootGrpIdx);
|
||||
}
|
||||
|
@ -6,6 +6,12 @@
|
||||
class bwd_class : public fopAc_ac_c {
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x0290 */ u8 m0290[0x17C8 - 0x0290];
|
||||
/* 0x17C8 */ cXyz m17C8;
|
||||
/* 0x17D4 */ f32 m17D4;
|
||||
/* 0x17D8 */ s16 m17D8;
|
||||
/* 0x17DC */ f32 m17DC;
|
||||
/* 0x17E0 */ f32 m17E0;
|
||||
};
|
||||
|
||||
class daBwd_HIO_c {
|
||||
|
@ -2,20 +2,44 @@
|
||||
#define D_A_BWDG_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
|
||||
class dBgWHf;
|
||||
|
||||
class daBwdg_packet_c : public J3DPacket {
|
||||
public:
|
||||
daBwdg_packet_c() {
|
||||
m00010 = 0;
|
||||
}
|
||||
virtual ~daBwdg_packet_c() {}
|
||||
|
||||
MtxP getMtx() { return mMtx; }
|
||||
void setTevStr(dKy_tevstr_c* tevstr) { mpTevStr = tevstr; }
|
||||
cXyz* getPos() { return &mPos[m00010 * 0x1081]; }
|
||||
cXyz* getNrm() { return &mNrm[m00010 * 0x1081]; }
|
||||
|
||||
void draw();
|
||||
|
||||
public:
|
||||
/* 0x00010 */ u8 m00010;
|
||||
/* 0x00014 */ Mtx mMtx;
|
||||
/* 0x00044 */ dKy_tevstr_c* mpTevStr;
|
||||
/* 0x00048 */ cXyz mPos[0x1081 * 2];
|
||||
/* 0x18C60 */ cXyz mNrm[0x1081 * 2];
|
||||
}; // Size: 0x31878
|
||||
|
||||
class bwdg_class : public fopAc_ac_c {
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
|
||||
class daBwdg_packet_c {
|
||||
public:
|
||||
void getMtx() {}
|
||||
void getNrm() {}
|
||||
void getPos() {}
|
||||
void setTevStr(dKy_tevstr_c*) {}
|
||||
|
||||
void draw();
|
||||
};
|
||||
/* 0x00290 */ u8 m00290[0x002AC - 0x00290];
|
||||
/* 0x002AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x002B4 */ s16 m002B4;
|
||||
/* 0x002B6 */ u8 m002B6[0x002B8 - 0x002B6];
|
||||
/* 0x002B8 */ s16 m002B8;
|
||||
/* 0x002BC */ dBgWHf* mpBgW;
|
||||
/* 0x002C0 */ f32 m002C0[0x1081];
|
||||
/* 0x044C4 */ daBwdg_packet_c mBwdgPacket;
|
||||
/* 0x35D3C */ u8 m35D3C[0x35D40 - 0x35D3C];
|
||||
}; // Size: 0x35D40
|
||||
|
||||
#endif /* D_A_BWDG_H */
|
||||
|
@ -24,7 +24,7 @@ public:
|
||||
class daMajuu_Flag_c : public fopAc_ac_c {
|
||||
public:
|
||||
void setBaseScale(float) {}
|
||||
void setOtherMatrix(float(*)[3][4]) {}
|
||||
void setOtherMatrix(Mtx*) {}
|
||||
void setOtherOffset(cXyz*) {}
|
||||
|
||||
public:
|
||||
|
@ -32,10 +32,10 @@ public:
|
||||
|
||||
public:
|
||||
/* 0x0010 */ u8 m0010[0x00A4 - 0x0010];
|
||||
/* 0x00A4 */ cXyz m00A4[0xA8];
|
||||
/* 0x00A4 */ cXyz m00A4[0x54 * 2];
|
||||
/* 0x0884 */ cXyz m0884[0x54];
|
||||
/* 0x0C74 */ cXyz m0C74[0xA8];
|
||||
/* 0x1454 */ cXyz m1454[0xA8];
|
||||
/* 0x0C74 */ cXyz m0C74[0x54 * 2];
|
||||
/* 0x1454 */ cXyz m1454[0x54 * 2];
|
||||
/* 0x1C34 */ s16 m1C34;
|
||||
/* 0x1C36 */ s16 m1C36;
|
||||
/* 0x1C38 */ s16 m1C38;
|
||||
@ -51,7 +51,7 @@ class sail_class : public fopAc_ac_c {
|
||||
public:
|
||||
/* 0x0290 */ request_of_phase_process_class mClothPhase;
|
||||
/* 0x0298 */ request_of_phase_process_class mKaizokusenPhase;
|
||||
/* 0x02A0 */ daSail_packet_c m02A0;
|
||||
/* 0x02A0 */ daSail_packet_c mSailPacket;
|
||||
/* 0x1EEC */ u8 m1EEC[0x1EF4 - 0x1EEC];
|
||||
};
|
||||
|
||||
|
@ -13,6 +13,8 @@ class cM3dGTri;
|
||||
class dBgS_CrrPos;
|
||||
class cBgS_PolyInfo;
|
||||
class fopAc_ac_c;
|
||||
class dBgS_CaptPoly;
|
||||
typedef struct _GXColor GXColor;
|
||||
|
||||
class dBgW : public cBgW {
|
||||
public:
|
||||
@ -56,12 +58,51 @@ public:
|
||||
virtual bool ChkGrpThrough(int, cBgS_GrpPassChk*, int);
|
||||
virtual void CrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
virtual void TransPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
virtual void MatrixCrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
virtual void MatrixCrrPos(cBgS_PolyInfo& poly, void* user, bool accept, cXyz* pos, csXyz* angle, csXyz* shape_angle) {
|
||||
CrrPos(poly, user, accept, pos, angle, shape_angle);
|
||||
}
|
||||
|
||||
void SetCrrFunc(dBgW_CrrFunc func) { m_crr_func = func; }
|
||||
void SetRideCallback(dBgW_RideCallBack func) { mpRideCb = func; }
|
||||
void SetPushPullCallback(dBgW_PPCallBack func) { mpPushPullCb = func; }
|
||||
|
||||
void CalcDiffShapeAngleY(s16) {}
|
||||
void CaptPoly(dBgS_CaptPoly&) {}
|
||||
void CaptPolyGrpRp(dBgS_CaptPoly&, int) {}
|
||||
void CaptPolyRp(dBgS_CaptPoly&, int) {}
|
||||
void ChkMoveFlag() {}
|
||||
void ClrGrpRoomInf() {}
|
||||
void ClrRoomId() {}
|
||||
void DebugDraw() {}
|
||||
void DrawBox() {}
|
||||
void DrawPoly(cBgS_PolyInfo&, GXColor&) {}
|
||||
void GetDiffShapeAngleY() {}
|
||||
void GetGrpRoomInf() {}
|
||||
void GetMaskPolyInfo0(int, u32, u32) {}
|
||||
void GetMaskPolyInfo3_NoShift(int, u32) {}
|
||||
void GetPolyArrowThrough(int) {}
|
||||
void GetPolyBombThrough(int) {}
|
||||
void GetPolyBoomerangThrough(int) {}
|
||||
void GetPolyCamThrough(int) {}
|
||||
void GetPolyHSStick(int) {}
|
||||
void GetPolyLinkThrough(int) {}
|
||||
void GetPolyObjThrough(int) {}
|
||||
void GetPolyRopeThrough(int) {}
|
||||
void GetPushPullCallback() {}
|
||||
void GetRideCallback() {}
|
||||
void GetRoomId() {}
|
||||
void GetShdwThrough(int) {}
|
||||
void OffMoveFlag() {}
|
||||
void OnMoveFlag() {}
|
||||
void RoofChk(dBgS_RoofChk*) {}
|
||||
void RwgCaptPoly(int, dBgS_CaptPoly&) {}
|
||||
void SetGrpRoomInf(int) {}
|
||||
void SetOldShapeAngleY(s16) {}
|
||||
void SetRoomId(u16) {}
|
||||
void SphChk(dBgS_SphChk*, void*) {}
|
||||
void SplGrpChk(dBgS_SplGrpChk*) {}
|
||||
void WallCorrect(dBgS_Acch*) {}
|
||||
|
||||
/* 0xA8 */ dBgW_CrrFunc m_crr_func;
|
||||
/* 0xAC */ s16 mOldRotY;
|
||||
/* 0xAE */ s16 mRotYDelta;
|
||||
@ -72,6 +113,6 @@ public:
|
||||
/* 0xBB */ u8 mRoomNo2;
|
||||
}; // Size: 0xBC
|
||||
|
||||
dBgW* dBgW_NewSet(cBgD_t*, unsigned long, float(*)[3][4]);
|
||||
dBgW* dBgW_NewSet(cBgD_t*, u32, Mtx*);
|
||||
|
||||
#endif /* D_BG_W_H */
|
||||
|
@ -6,6 +6,9 @@
|
||||
|
||||
class dBgWDeform : public dBgWSv, public J3DSkinDeform {
|
||||
public:
|
||||
void MoveAfterAnmCalc(J3DModel*) {}
|
||||
void SetVtx(Vec*) {}
|
||||
|
||||
bool Set(cBgD_t*, J3DModel*, u32);
|
||||
|
||||
public:
|
||||
|
@ -7,6 +7,15 @@ class dBgWHf : public dBgWSv {
|
||||
public:
|
||||
virtual ~dBgWHf() {}
|
||||
|
||||
void SetVtx(Vec* vtx) {
|
||||
if (GetVtxTbl() == NULL) {
|
||||
SetVtxTbl(vtx);
|
||||
CopyBackVtx();
|
||||
} else {
|
||||
SetVtxTbl(vtx);
|
||||
}
|
||||
}
|
||||
|
||||
bool Set(cBgD_t*, u16*, f32, int, int, u32);
|
||||
void CalcPlane();
|
||||
void ClassifyPlane();
|
||||
|
@ -5,6 +5,9 @@
|
||||
|
||||
class dBgWSv : public dBgW {
|
||||
public:
|
||||
dBgWSv() {
|
||||
mBackVtx = NULL;
|
||||
}
|
||||
virtual ~dBgWSv() {}
|
||||
|
||||
virtual void MatrixCrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*) {}
|
||||
|
@ -447,5 +447,6 @@ cXyz dKy_get_hokuto_pos();
|
||||
void dKy_DayProc();
|
||||
u8 dKy_get_schbit();
|
||||
int dKy_rain_check();
|
||||
void dKy_setLight_mine(dKy_tevstr_c* pTevStr);
|
||||
|
||||
#endif /* D_KANKYO_D_KANKYO_H */
|
||||
|
@ -139,6 +139,10 @@ inline void cMtx_inverse(const Mtx a, Mtx b) {
|
||||
mDoMtx_inverse(a, b);
|
||||
}
|
||||
|
||||
inline void cMtx_inverseTranspose(const Mtx a, Mtx b) {
|
||||
mDoMtx_inverseTranspose(a, b);
|
||||
}
|
||||
|
||||
class mDoMtx_stack_c {
|
||||
public:
|
||||
mDoMtx_stack_c() {
|
||||
|
@ -4,55 +4,273 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_bwdg.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_bg_w_hf.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/actor/d_a_bwd.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "dolphin/gf/GFGeometry.h"
|
||||
#include "dolphin/gf/GFTev.h"
|
||||
#include "dolphin/gf/GFTransform.h"
|
||||
|
||||
static bwd_class* boss;
|
||||
|
||||
#include "d/actor/d_a_bwdg_data.inc"
|
||||
|
||||
// Fakematch: These are supposed to be in-function statics inside daBwdg_packet_c::draw().
|
||||
// But for some reason, defining them inside the function causes the function to load them as well
|
||||
// as l_matDL and l_Hsand1DL (but not l_texCoord) with different codegen than the original function.
|
||||
// Defining them above the function also results in the same thing.
|
||||
// But forward declaring them as externs, and then defining them after the function works correctly.
|
||||
extern GXVtxDescList l_vtxDescList[];
|
||||
extern GXVtxAttrFmtList l_vtxAttrFmtList[];
|
||||
|
||||
// Another way of matching the function's codegen is to keep these as in-function statics, but move
|
||||
// the d_a_bwdg_data.inc include until after the function, and forward declare the included data.
|
||||
// But this method breaks the order of the variables in the .data section as the in-function data
|
||||
// would then appear above the included data.
|
||||
// extern u8 l_B_sand2TEX[0x10000] ALIGN_DECL(32);
|
||||
// extern u8 l_texCoord[0x8408];
|
||||
// extern u8 l_Hsand1DL[0xC3E0] ALIGN_DECL(32);
|
||||
// extern u8 l_matDL[0xBA] ALIGN_DECL(32);
|
||||
|
||||
/* 00000078-000001C4 .text draw__15daBwdg_packet_cFv */
|
||||
void daBwdg_packet_c::draw() {
|
||||
/* Nonmatching */
|
||||
// static GXVtxDescList l_vtxDescList[] = {
|
||||
// {GX_VA_POS, GX_INDEX16},
|
||||
// {GX_VA_NRM, GX_INDEX16},
|
||||
// {GX_VA_TEX0, GX_INDEX16},
|
||||
// {GX_VA_NULL, GX_NONE},
|
||||
// };
|
||||
// static GXVtxAttrFmtList l_vtxAttrFmtList[] = {
|
||||
// {GX_VA_POS, GX_POS_XYZ, GX_F32, 0x00},
|
||||
// {GX_VA_NRM, GX_POS_XY, GX_F32, 0x00},
|
||||
// {GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0x00},
|
||||
// {GX_VA_NULL, GX_POS_XYZ, GX_F32, 0x00},
|
||||
// };
|
||||
j3dSys.reinitGX();
|
||||
dKy_GxFog_tevstr_set(mpTevStr);
|
||||
dKy_setLight_mine(mpTevStr);
|
||||
GFSetVtxDescv(l_vtxDescList);
|
||||
GFSetVtxAttrFmtv(GX_VTXFMT0, l_vtxAttrFmtList);
|
||||
GFSetArray(GX_VA_POS, getPos(), sizeof(cXyz));
|
||||
GFSetArray(GX_VA_NRM, getNrm(), sizeof(cXyz));
|
||||
GFSetArray(GX_VA_TEX0, l_texCoord, sizeof(cXy));
|
||||
GFSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0);
|
||||
GFSetTevColor(GX_TEVREG1, mpTevStr->mColorK0);
|
||||
GXCallDisplayList(l_matDL, 0xA0);
|
||||
GFLoadPosMtxImm(getMtx(), GX_PNMTX0);
|
||||
Mtx sp14;
|
||||
cMtx_inverseTranspose(mMtx, sp14);
|
||||
GFLoadNrmMtxImm(sp14, 0);
|
||||
GXCallDisplayList(l_Hsand1DL, sizeof(l_Hsand1DL));
|
||||
m00010 ^= 0x01;
|
||||
}
|
||||
|
||||
// Fakematch (see above comment)
|
||||
GXVtxDescList l_vtxDescList[] = {
|
||||
{GX_VA_POS, GX_INDEX16},
|
||||
{GX_VA_NRM, GX_INDEX16},
|
||||
{GX_VA_TEX0, GX_INDEX16},
|
||||
{GX_VA_NULL, GX_NONE},
|
||||
};
|
||||
GXVtxAttrFmtList l_vtxAttrFmtList[] = {
|
||||
{GX_VA_POS, GX_POS_XYZ, GX_F32, 0x00},
|
||||
{GX_VA_NRM, GX_POS_XY, GX_F32, 0x00},
|
||||
{GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0x00},
|
||||
{GX_VA_NULL, GX_POS_XYZ, GX_F32, 0x00},
|
||||
};
|
||||
|
||||
/* 000001C4-00000260 .text daBwdg_Draw__FP10bwdg_class */
|
||||
static BOOL daBwdg_Draw(bwdg_class*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daBwdg_Draw(bwdg_class* i_this) {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0_FULL, &i_this->current.pos, &i_this->tevStr);
|
||||
MtxTrans(0.0f, 10.0f, 0.0f, 0);
|
||||
cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, i_this->mBwdgPacket.getMtx());
|
||||
i_this->mBwdgPacket.setTevStr(&i_this->tevStr);
|
||||
j3dSys.getDrawBuffer(0)->entryImm(&i_this->mBwdgPacket, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000260-00000308 .text base_xz_set__FP10bwdg_class */
|
||||
void base_xz_set(bwdg_class*) {
|
||||
/* Nonmatching */
|
||||
static void base_xz_set(bwdg_class* i_this) {
|
||||
cXyz* posVtx = i_this->mBwdgPacket.getPos();
|
||||
for (int i = 0; i < 0x41; i++) {
|
||||
for (int j = 0; j < 0x41; posVtx++, j++) {
|
||||
posVtx->x = j * 130.0f - 4160.0f;
|
||||
posVtx->z = i * 130.0f - 4160.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000308-000006F8 .text wave_cont__FP10bwdg_classUc */
|
||||
void wave_cont(bwdg_class*, unsigned char) {
|
||||
/* Nonmatching */
|
||||
static void wave_cont(bwdg_class* i_this, u8 r4) {
|
||||
cXyz* posVtx = i_this->mBwdgPacket.getPos();
|
||||
cXyz sp30;
|
||||
f32 f31, f30, f29, f28, f27;
|
||||
if (r4 != 0) {
|
||||
f30 = 1.0f;
|
||||
f31 = 2000.0f;
|
||||
sp30.setall(0.0f);
|
||||
f28 = -0.75f;
|
||||
f29 = 1.0f;
|
||||
f27 = 600.0f;
|
||||
} else {
|
||||
f30 = 0.5f;
|
||||
f31 = 0.0f;
|
||||
i_this->m002B8 += boss->m17D8;
|
||||
sp30 = boss->m17C8;
|
||||
f28 = boss->m17D4;
|
||||
f29 = boss->m17DC;
|
||||
f27 = boss->m17E0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 0x1081; posVtx++, i++) {
|
||||
cXyz sp24;
|
||||
sp24.x = posVtx->x - sp30.x;
|
||||
sp24.z = posVtx->z - sp30.z;
|
||||
|
||||
f32 f0 = sqrtf(sp24.x*sp24.x + sp24.z*sp24.z);
|
||||
f32 f1 = 3000.0f - f0;
|
||||
f32 f3;
|
||||
f32 f4 = f1;
|
||||
if (f4 < 0.0f) {
|
||||
f4 = 0.0f;
|
||||
}
|
||||
f4 *= 0.01f;
|
||||
|
||||
if (f1 < 0.0f) {
|
||||
f1 = 0.0f;
|
||||
}
|
||||
|
||||
f3 = 10.0f + f1 * 0.00667f;
|
||||
if (f3 > 30.0f) {
|
||||
f3 = 30.0f;
|
||||
}
|
||||
f32 f2 = cM_ssin(i_this->m002B8 + (s32)(f0*200.0f));
|
||||
|
||||
cLib_addCalc2(&i_this->m002C0[i], f28*(f4*f4) + f3*f2, f30, f29*((0.3f*f3)+f31));
|
||||
posVtx->y = i_this->m002C0[i] + f27;
|
||||
}
|
||||
|
||||
cXyz* nrmVtx = i_this->mBwdgPacket.getNrm();
|
||||
posVtx = i_this->mBwdgPacket.getPos();
|
||||
cXyz sp18(0.0f, 0.0f, 1.0f);
|
||||
cMtx_XrotS(*calc_mtx, -0x4A38);
|
||||
cXyz sp0C;
|
||||
MtxPosition(&sp18, &sp0C);
|
||||
|
||||
for (int i = 0; i < 0x1081; i++, posVtx++, nrmVtx++) {
|
||||
if (i >= 0x1040) {
|
||||
continue;
|
||||
}
|
||||
cMtx_XrotS(*calc_mtx, cM_atan2s(posVtx->y - f27, 400.0f));
|
||||
MtxPosition(&sp0C, nrmVtx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000734-00000780 .text boss_a_d_sub__FPvPv */
|
||||
void boss_a_d_sub(void*, void*) {
|
||||
/* Nonmatching */
|
||||
static void* boss_a_d_sub(void* param_1, void* param_2) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BWD) {
|
||||
return param_1;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 00000780-0000084C .text daBwdg_Execute__FP10bwdg_class */
|
||||
static BOOL daBwdg_Execute(bwdg_class*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daBwdg_Execute(bwdg_class* i_this) {
|
||||
cXyz* posVtx = i_this->mBwdgPacket.getPos();
|
||||
if (boss == NULL) {
|
||||
boss = (bwd_class*)fpcM_Search(boss_a_d_sub, i_this);
|
||||
if (boss == NULL) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
i_this->m002B4++;
|
||||
i_this->mpBgW->CopyBackVtx();
|
||||
wave_cont(i_this, 0);
|
||||
i_this->mpBgW->SetVtx(posVtx);
|
||||
i_this->mpBgW->MoveHf();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 0000084C-00000854 .text daBwdg_IsDelete__FP10bwdg_class */
|
||||
static BOOL daBwdg_IsDelete(bwdg_class*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daBwdg_IsDelete(bwdg_class* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000854-000008B0 .text daBwdg_Delete__FP10bwdg_class */
|
||||
static BOOL daBwdg_Delete(bwdg_class*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daBwdg_Delete(bwdg_class* i_this) {
|
||||
dComIfG_resDelete(&i_this->mPhase, "Bwdg");
|
||||
if (i_this->heap) {
|
||||
dComIfG_Bgsp()->Release(i_this->mpBgW);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000008B0-000009A0 .text useHeapInit__FP10fopAc_ac_c */
|
||||
static BOOL useHeapInit(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL useHeapInit(fopAc_ac_c* i_actor) {
|
||||
bwdg_class* i_this = (bwdg_class*)i_actor;
|
||||
|
||||
i_this->mpBgW = new dBgWHf();
|
||||
if (i_this->mpBgW == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u16* r30 = (u16*)dComIfG_getObjectRes("Bwdg", 4);
|
||||
cBgD_t* r3 = (cBgD_t*)dComIfG_getObjectRes("Bwdg", 7);
|
||||
if (!i_this->mpBgW->Set(r3, r30, 130.0f, 0x40, 0x40, 0)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 000009A0-00000B5C .text daBwdg_Create__FP10fopAc_ac_c */
|
||||
static s32 daBwdg_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static s32 daBwdg_Create(fopAc_ac_c* i_actor) {
|
||||
bwdg_class* i_this = (bwdg_class*)i_actor;
|
||||
fopAcM_SetupActor(i_this, bwdg_class);
|
||||
|
||||
int phase_state = dComIfG_resLoad(&i_this->mPhase, "Bwdg");
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
boss = NULL;
|
||||
i_this->current.pos.setall(0.0f);
|
||||
if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x96000)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
dComIfG_Bgsp()->Regist(i_this->mpBgW, i_this);
|
||||
base_xz_set(i_this);
|
||||
i_this->mBwdgPacket.m00010 ^= 0x01;
|
||||
base_xz_set(i_this);
|
||||
wave_cont(i_this, 1);
|
||||
cXyz* posVtx = i_this->mBwdgPacket.getPos();
|
||||
i_this->mpBgW->SetVtx(posVtx);
|
||||
i_this->mpBgW->CopyBackVtx();
|
||||
i_this->mpBgW->Move();
|
||||
}
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
static actor_method_class l_daBwdg_Method = {
|
||||
(process_method_func)daBwdg_Create,
|
||||
(process_method_func)daBwdg_Delete,
|
||||
(process_method_func)daBwdg_Execute,
|
||||
(process_method_func)daBwdg_IsDelete,
|
||||
(process_method_func)daBwdg_Draw,
|
||||
};
|
||||
|
||||
actor_process_profile_definition g_profile_BWDG = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 7,
|
||||
/* ListPrio */ fpcPi_CURRENT_e,
|
||||
/* ProcName */ PROC_BWDG,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
||||
/* Size */ sizeof(bwdg_class),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x00CE,
|
||||
/* Actor SubMtd */ &l_daBwdg_Method,
|
||||
/* Status */ fopAcStts_UNK40000_e,
|
||||
/* Group */ fopAc_ENEMY_e,
|
||||
/* CullType */ fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
9390
src/d/actor/d_a_bwdg_data.inc
Normal file
9390
src/d/actor/d_a_bwdg_data.inc
Normal file
File diff suppressed because it is too large
Load Diff
@ -517,8 +517,8 @@ static BOOL daSail_checkCreateHeap(fopAc_ac_c* i_actor) {
|
||||
if (modelData == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
i_this->m02A0.m1C3C = mDoExt_J3DModel__create(modelData, 0x00080000, 0x11000002);
|
||||
if (i_this->m02A0.m1C3C) {
|
||||
i_this->mSailPacket.m1C3C = mDoExt_J3DModel__create(modelData, 0x00080000, 0x11000002);
|
||||
if (i_this->mSailPacket.m1C3C) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
@ -546,10 +546,10 @@ static s32 daSail_Create(fopAc_ac_c* i_actor) {
|
||||
l_HIO.mChildID = mDoHIO_root.m_subroot.createChild("海賊船の帆", &l_HIO); // "Pirate Ship's Sail"
|
||||
}
|
||||
|
||||
i_this->m02A0.m1C44 = 0.0f;
|
||||
i_this->m02A0.m1C48 = 0.0f;
|
||||
cXyz* r6 = &i_this->m02A0.m0884[0];
|
||||
cXyz* r7 = &i_this->m02A0.m00A4[i_this->m02A0.m1C3A * 0x54]; // this is probably one of daSail_packet_c's inlines
|
||||
i_this->mSailPacket.m1C44 = 0.0f;
|
||||
i_this->mSailPacket.m1C48 = 0.0f;
|
||||
cXyz* r6 = &i_this->mSailPacket.m0884[0];
|
||||
cXyz* r7 = &i_this->mSailPacket.m00A4[i_this->mSailPacket.m1C3A * 0x54]; // this is probably one of daSail_packet_c's inlines
|
||||
for (int i = 0; i < ARRAY_SIZE(l_pos); i++, r6++, r7++) {
|
||||
r6->setall(0.0f);
|
||||
r7->set(l_pos[i]);
|
||||
@ -558,7 +558,7 @@ static s32 daSail_Create(fopAc_ac_c* i_actor) {
|
||||
l_p_ship = (daObjPirateship::Act_c*)fopAcM_SearchByID(i_this->parentActorID);
|
||||
if (l_p_ship->m2CE == 0) {
|
||||
l_HIO.m06 = 0;
|
||||
i_this->m02A0.m1C44 = 0.6f;
|
||||
i_this->mSailPacket.m1C44 = 0.6f;
|
||||
} else {
|
||||
l_HIO.m06 = 1;
|
||||
}
|
||||
|
@ -615,8 +615,3 @@ void dBgS_CrrPos::CrrPos(dBgS& i_bgs) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800A2550-800A257C .text MatrixCrrPos__4dBgWFR13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */
|
||||
void dBgW::MatrixCrrPos(cBgS_PolyInfo& poly, void* user, bool accept, cXyz* pos, csXyz* angle, csXyz* shape_angle) {
|
||||
CrrPos(poly, user, accept, pos, angle, shape_angle);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user