Merge branch 'main' of github.com:zeldaret/tww into d_a_swhit0

This commit is contained in:
Dylan Ascencio
2023-11-12 21:26:32 -05:00
21 changed files with 266 additions and 207 deletions
+3 -3
View File
@@ -1500,7 +1500,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_nz"),
ActorRel(NonMatching, "d_a_obj_Itnak"),
ActorRel(NonMatching, "d_a_obj_Vds"),
ActorRel(NonMatching, "d_a_obj_Vteng", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Matching, "d_a_obj_Vteng", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_YLzou"),
ActorRel(NonMatching, "d_a_obj_Yboil"),
ActorRel(NonMatching, "d_a_obj_adnno"),
@@ -1550,7 +1550,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_light"),
ActorRel(NonMatching, "d_a_obj_mkie"),
ActorRel(NonMatching, "d_a_obj_mkiek"),
ActorRel(NonMatching, "d_a_obj_mknjd"),
ActorRel(Matching, "d_a_obj_mknjd", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_obj_mmrr"),
ActorRel(NonMatching, "d_a_obj_msdan"),
ActorRel(NonMatching, "d_a_obj_msdan2"),
@@ -1596,7 +1596,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_shutter2"),
ActorRel(NonMatching, "d_a_st"),
ActorRel(NonMatching, "d_a_steam_tag"),
ActorRel(NonMatching, "d_a_swattack", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Matching, "d_a_swattack", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(Matching, "d_a_switem", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_swpropeller"),
ActorRel(Matching, "d_a_swtact"),
+1 -1
View File
@@ -55,7 +55,7 @@ public:
s32 GetTriGrp(int, int) const;
s32 GetGrpToRoomId(int, int) const;
cM3dGPla* GetTriPla(int, int) const;
bool GetTriPnt(cBgS_PolyInfo&, cXyz*, cXyz*, cXyz*) const;
void GetTriPnt(cBgS_PolyInfo&, cXyz*, cXyz*, cXyz*) const;
void ShdwDraw(cBgS_ShdwDraw*);
s32 GetGrpInf(cBgS_PolyInfo&, int) const;
+3 -3
View File
@@ -20,11 +20,11 @@ public:
void SetNowY(f32 y) { mNowY = y; }
cXyz* GetPointP() { return &m_pos; }
u32 GetWallPrecheck() const { return mWallPrecheck; }
void OffWall() { mFlags &= ~2; }
void OffWall() { mFlag &= ~2; }
private:
public:
/* 0x24 */ cXyz m_pos;
/* 0x30 */ u32 mFlags;
/* 0x30 */ u32 mFlag;
/* 0x34 */ f32 mNowY;
/* 0x38 */ u32 mWallPrecheck;
/* 0x3C */ u32 mGndPrecheck;
+5 -5
View File
@@ -10,7 +10,7 @@ class cBgS_LinChk : public cBgS_Chk, public cBgS_PolyInfo {
public:
/* 0x024 */ cM3dGLin mLin;
/* 0x040 */ cXyz field_0x40;
/* 0x04C */ u32 field_0x4c;
/* 0x04C */ u32 mFlag;
/* 0x050 */ bool mPreWallChk;
/* 0x051 */ bool mPreGroundChk;
/* 0x052 */ bool mPreRoofChk;
@@ -26,10 +26,10 @@ public:
virtual ~cBgS_LinChk() {}
void ClrHit() { field_0x4c &= ~0x10; }
void SetHit() { field_0x4c |= 0x10; }
u32 ChkHit() const { return field_0x4c & 0x10; }
void ClrSttsRoofOff() { field_0x4c &= ~0x20000000; }
void ClrHit() { mFlag &= ~0x10; }
void SetHit() { mFlag |= 0x10; }
u32 ChkHit() const { return mFlag & 0x10; }
void ClrSttsRoofOff() { mFlag &= ~0x20000000; }
void SetCross(const cXyz& pos) { mLin.SetEnd(pos); }
cXyz& i_GetCross() { return mLin.GetEnd(); }
cM3dGLin* GetLinP() { return &mLin; }
@@ -2,6 +2,7 @@
#define C_BG_S_POLY_INFO_H
#include "dolphin/types.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "global.h"
class cBgW;
@@ -25,6 +26,12 @@ public:
void SetPolyInfo(const cBgS_PolyInfo& other) {
*this = other;
}
void SetActorInfo(int bg_index, void* bgw, unsigned int actor_id) {
JUT_ASSERT(0x59, 0 <= bg_index);
mBgIndex = bg_index;
mpBgW = (cBgW*)bgw;
mActorId = actor_id;
}
bool ChkSafe(const void* bgw, unsigned int pid) {
if (mpBgW == bgw && mActorId == pid)
return true;
+2 -2
View File
@@ -139,12 +139,12 @@ public:
bool Set(cBgD_t*, u32, f32(*)[3][4]);
void RwgLineCheck(u16, cBgS_LinChk*);
void LineCheckRp(cBgS_LinChk*, int);
void LineCheckGrpRp(cBgS_LinChk*, int, int);
bool LineCheckGrpRp(cBgS_LinChk*, int, int);
bool RwgGroundCheckCommon(f32, u16, cBgS_GndChk*);
bool RwgGroundCheckGnd(u16, cBgS_GndChk*);
bool RwgGroundCheckWall(u16, cBgS_GndChk*);
void GroundCrossRp(cBgS_GndChk*, int);
void GroundCrossGrpRp(cBgS_GndChk*, int, int);
bool GroundCrossGrpRp(cBgS_GndChk*, int, int);
void CopyOldMtx();
void Move();
void RwgShdwDraw(int, cBgS_ShdwDraw*);
+103
View File
@@ -0,0 +1,103 @@
#ifndef D_A_OBJ_BARRIER_H
#define D_A_OBJ_BARRIER_H
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_a_obj.h"
class dBgW;
class daObjBarrier_anm_c {
public:
daObjBarrier_anm_c() { mBrkFrame = 0.0f; }
bool init();
J3DModel* getMdlP() { return mpModel; }
mDoExt_btkAnm* getBtkAnmP() { return &mBtk; }
mDoExt_brkAnm* getBrkAnmP() { return &mBrk; }
f32 getBrkFrame() { return mBrkFrame; }
void setBrkFrame(f32 i_frame) { mBrkFrame = i_frame; }
/* 0x00 */ J3DModel* mpModel;
/* 0x04 */ mDoExt_btkAnm mBtk;
/* 0x18 */ mDoExt_brkAnm mBrk;
/* 0x30 */ f32 mBrkFrame;
};
class daObjBarrier_ef_c {
public:
void setDummyTexture(int);
bool checkHitActor(fopAc_ac_c*);
void birth(fopAc_ac_c*, f32, cXyz, cXyz, int);
bool init();
void create();
void execute();
void draw();
f32 getBtkFrame(int i_idx) { return mBtk[i_idx].getFrame(); }
/* 0x000 */ u32 mActiveEffFlags;
/* 0x004 */ J3DModel* mpModel[4];
/* 0x014 */ mDoExt_btkAnm mBtk[4];
/* 0x064 */ mDoExt_bckAnm mBck[4];
/* 0x0A4 */ mDoExt_brkAnm mBrk[4];
/* 0x104 */ cXyz mPos[4];
/* 0x134 */ s16 mAngle[4];
/* 0x13C */ fopAc_ac_c* mHitActor[4];
};
class daObjBarrier_c : public fopAc_ac_c {
public:
enum PROC_e {
PROC_BREAK_START_WAIT,
PROC_BREAK_ORDER,
PROC_BREAK_END_WAIT,
};
enum Param_e {
PRM_DAMAGE_W = 0x01,
PRM_DAMAGE_S = 0x10,
PRM_MOYA_W = 0x01,
PRM_MOYA_S = 0x08,
};
daObjBarrier_c() {
mEffect.mActiveEffFlags = 0;
}
void init_mtx();
static int solidHeapCB(fopAc_ac_c*);
bool create_heap();
bool checkCollision_Tg();
void checkCollision_At();
void registCollisionTable();
void brkAnmPlay();
void break_start_wait_proc();
void break_order_proc();
void break_end_wait_proc();
bool break_check();
int _create();
bool _delete();
bool _execute();
bool _draw();
bool param_get_damage() const { return daObj::PrmAbstract(this, PRM_DAMAGE_W, PRM_DAMAGE_S); }
int param_get_moya() const { return daObj::PrmAbstract(this, PRM_MOYA_W, PRM_MOYA_S); }
/* 0x290 */ daObjBarrier_anm_c mAnm;
/* 0x2C4 */ request_of_phase_process_class mPhase;
/* 0x2CC */ dBgW* mpBgW;
/* 0x2D0 */ Mtx mBgMtx;
/* 0x300 */ dCcD_Stts mAtStts;
/* 0x33C */ dCcD_Stts mTgStts;
/* 0x378 */ dCcD_Cyl mAtCyl;
/* 0x4A8 */ dCcD_Cyl mTgCyl;
/* 0x5D8 */ daObjBarrier_ef_c mEffect;
/* 0x724 */ u8 mBarrierActive;
/* 0x728 */ int mMoya;
/* 0x72C */ s16 mEventID;
/* 0x730 */ int mBarrierProc;
};
#endif /* D_A_OBJ_BARRIER_H */
+45 -5
View File
@@ -4,6 +4,8 @@
//
#include "SSystem/SComponent/c_bg_s.h"
#include "SSystem/SComponent/c_bg_s_gnd_chk.h"
#include "SSystem/SComponent/c_bg_s_lin_chk.h"
#include "SSystem/SComponent/c_bg_w.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "dolphin/types.h"
@@ -69,6 +71,10 @@ bool cBgS::Regist(cBgW* bgw, unsigned int pid, void* actor) {
return true;
}
static void dummy() {
OSReport("c_bg_s_poly_info.h");
}
/* 80246600-8024669C .text Release__4cBgSFP4cBgW */
int cBgS::Release(cBgW* bgw) {
if (bgw == NULL)
@@ -103,13 +109,42 @@ void cBgS::Dt() {
}
/* 8024676C-802468E4 .text LineCross__4cBgSFP11cBgS_LinChk */
bool cBgS::LineCross(cBgS_LinChk*) {
/* Nonmatching */
bool cBgS::LineCross(cBgS_LinChk* chk) {
bool ret = false;
chk->ClearPi();
chk->ClrHit();
for (s32 bg_index = 0; bg_index < (s32)ARRAY_SIZE(m_chk_element); bg_index++) {
cBgS_ChkElm* elm = &m_chk_element[bg_index];
if (elm->ChkUsed() && elm->m_bgw_base_ptr->pm_vtx_tbl != NULL && !chk->ChkSameActorPid(elm->m_actor_id)) {
chk->mPreWallChk = !(chk->mFlag & 0x40000000);
chk->mPreGroundChk = !(chk->mFlag & 0x80000000);
chk->mPreRoofChk = !(chk->mFlag & 0x20000000);
if (elm->m_bgw_base_ptr->LineCheckGrpRp(chk, elm->m_bgw_base_ptr->m_rootGrpIdx, 1)) {
chk->SetActorInfo(bg_index, elm->m_bgw_base_ptr, elm->m_actor_id);
ret = true;
}
}
}
if (ret)
chk->SetHit();
return ret;
}
/* 802468E4-80246A14 .text GroundCross__4cBgSFP11cBgS_GndChk */
f32 cBgS::GroundCross(cBgS_GndChk*) {
/* Nonmatching */
f32 cBgS::GroundCross(cBgS_GndChk* chk) {
chk->SetNowY(-1e+09);
chk->ClearPi();
chk->mWallPrecheck = (chk->mFlag & 0x02);
chk->mGndPrecheck = (chk->mFlag & 0x01);
for (s32 bg_index = 0; bg_index < (s32)ARRAY_SIZE(m_chk_element); bg_index++) {
cBgS_ChkElm* elm = &m_chk_element[bg_index];
if (elm->ChkUsed() && elm->m_bgw_base_ptr->pm_vtx_tbl != NULL && !chk->ChkSameActorPid(elm->m_actor_id)) {
if (elm->m_bgw_base_ptr->GroundCrossGrpRp(chk, elm->m_bgw_base_ptr->m_rootGrpIdx, 1)) {
chk->SetActorInfo(bg_index, elm->m_bgw_base_ptr, elm->m_actor_id);
}
}
}
return chk->GetNowY();
}
/* 80246A14-80246C98 .text ConvDzb__4cBgSFPv */
@@ -203,8 +238,13 @@ cM3dGPla* cBgS::GetTriPla(int bg_index, int poly_index) const {
return m_chk_element[bg_index].m_bgw_base_ptr->GetTriPla(poly_index);
}
static void dummy2() {
// from c_bg_s_poly_info.h
OSReport("0 <= grp_index && grp_index < pm_bgd->m_g_num");
}
/* 802470B8-80247178 .text GetTriPnt__4cBgSCFR13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz */
bool cBgS::GetTriPnt(cBgS_PolyInfo& poly, cXyz* p0, cXyz* p1, cXyz* p2) const {
void cBgS::GetTriPnt(cBgS_PolyInfo& poly, cXyz* p0, cXyz* p1, cXyz* p2) const {
s32 id = poly.GetBgIndex();
JUT_ASSERT(0x2f6, 0 <= id && id < 256);
if (m_chk_element[id].ChkUsed())
+1 -1
View File
@@ -10,5 +10,5 @@
cBgS_GndChk::cBgS_GndChk() {
m_pos = cXyz::Zero;
SetActorPid(0xFFFFFFFF);
mFlags = 3;
mFlag = 3;
}
+1 -1
View File
@@ -13,7 +13,7 @@ void cBgS_LinChk::ct() {
mLin.mEnd = zero;
field_0x40 = zero;
SetActorPid(-1);
field_0x4c = 0;
mFlag = 0;
mFrontFlag = 1;
mBackFlag = 0;
}
+2 -2
View File
@@ -161,7 +161,7 @@ void cBgW::LineCheckRp(cBgS_LinChk*, int) {
}
/* 80248868-8024898C .text LineCheckGrpRp__4cBgWFP11cBgS_LinChkii */
void cBgW::LineCheckGrpRp(cBgS_LinChk*, int, int) {
bool cBgW::LineCheckGrpRp(cBgS_LinChk*, int, int) {
/* Nonmatching */
}
@@ -198,7 +198,7 @@ void cBgW::GroundCrossRp(cBgS_GndChk*, int) {
}
/* 802491F4-80249368 .text GroundCrossGrpRp__4cBgWFP11cBgS_GndChkii */
void cBgW::GroundCrossGrpRp(cBgS_GndChk*, int, int) {
bool cBgW::GroundCrossGrpRp(cBgS_GndChk*, int, int) {
/* Nonmatching */
}
+8 -8
View File
@@ -176,24 +176,24 @@ BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
/* 000002FC-0000060C .text CreateHeap__10daMbdoor_cFv */
BOOL daMbdoor_c::CreateHeap() {
void* modelData = dComIfG_getObjectRes(getArcName(), getFuBdl());
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(getArcName(), getFuBdl()));
JUT_ASSERT(198, modelData != 0)
mpFuModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000022);
mpFuModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022);
if (!mpFuModel) { return FALSE; }
modelData = dComIfG_getObjectRes(getArcName(), getLBdl());
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(getArcName(), getLBdl()));
JUT_ASSERT(209, modelData != 0)
mpLModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000022);
mpLModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022);
if (!mpLModel) { return FALSE; }
modelData = dComIfG_getObjectRes(getArcName(), getRBdl());
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(getArcName(), getRBdl()));
JUT_ASSERT(220, modelData != 0)
mpRModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000022);
mpRModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022);
if (!mpRModel) { return FALSE; }
modelData = dComIfG_getObjectRes(getArcName(), getToBdl());
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(getArcName(), getToBdl()));
JUT_ASSERT(231, modelData != 0)
mpToModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000022);
mpToModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022);
if (!mpToModel) { return FALSE; }
mpBgW = new dBgW();
+3 -3
View File
@@ -41,15 +41,15 @@ BOOL daObjAjavW_c::solidHeapCB(fopAc_ac_c* i_this) {
bool daObjAjavW_c::create_heap() {
bool ret = true;
void* pModelData = dComIfG_getObjectRes(l_arcname, 0x05);
J3DModelData* pModelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, 0x05));
J3DAnmTextureSRTKey * pBtk = (J3DAnmTextureSRTKey *)dComIfG_getObjectRes(l_arcname, 0x08);
if (!pModelData || !pBtk) {
JUT_ASSERT(0xa7, 0);
ret = false;
} else {
mpModel = mDoExt_J3DModel__create((J3DModelData*)pModelData, 0x80000, 0x11000222);
s32 btkRet = mBtkAnm.init((J3DModelData*)pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000222);
s32 btkRet = mBtkAnm.init(pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
mpBgW = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(l_arcname, 0x0B), cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx());
if (!mpModel || !btkRet || !mpBgW)
+2 -2
View File
@@ -54,14 +54,14 @@ BOOL daObjVteng_c::solidHeapCB(fopAc_ac_c* i_this) {
bool daObjVteng_c::create_heap() {
bool ret = true;
void* pModelData = dComIfG_getObjectRes(l_arcname, 0x08);
J3DModelData* pModelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, 0x08));
J3DAnmTransform * pAnm = (J3DAnmTransform *)dComIfG_getObjectRes(l_arcname, 0x05);
if (!pModelData || !pAnm) {
JUT_ASSERT(0xb7, 0);
ret = false;
} else {
mpMorf = new mDoExt_McaMorf((J3DModelData*)pModelData, NULL, NULL, pAnm, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0x3B, -1, 0, NULL, 0x00, 0x11020203);
mpMorf = new mDoExt_McaMorf(pModelData, NULL, NULL, pAnm, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0x3B, -1, 0, NULL, 0x00, 0x11020203);
if (!mpMorf) {
ret = false;
} else {
+6 -6
View File
@@ -64,17 +64,17 @@ bool daObjYgush00_c::create_heap() {
bool ret = true;
void* pModelData = 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]);
J3DModelData* pModelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, mdl_table[mType]));
J3DAnmTextureSRTKey * pBtk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(l_arcname, btk_table[mType]));
J3DAnmTransform * pBck = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(l_arcname, bck_table[mType]));
if (!pModelData || !pBtk || !pBck) {
JUT_ASSERT(207, 0);
ret = false;
} else {
mpModel = mDoExt_J3DModel__create((J3DModelData*)pModelData, 0x80000, 0x11000222);
s32 btkRet = mBtkAnm.init((J3DModelData*)pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
s32 bckRet = mBckAnm.init((J3DModelData*)pModelData, pBck, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false);
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;
+47 -142
View File
@@ -3,10 +3,10 @@
// Translation Unit: d_a_obj_barrier.cpp
//
#include "d/actor/d_a_obj_barrier.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/actor/d_a_player_main.h"
#include "d/d_a_obj.h"
#include "d/d_com_inf_game.h"
#include "d/d_item_data.h"
#include "d/d_procname.h"
@@ -14,93 +14,8 @@
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_mtx.h"
class daObjBarrier_anm_c {
public:
daObjBarrier_anm_c() { mBrkFrame = 0.0f; }
bool init();
J3DModel* getMdlP() { return mpModel; }
mDoExt_btkAnm* getBtkAnmP() { return &mBtk; }
mDoExt_brkAnm* getBrkAnmP() { return &mBrk; }
f32 getBrkFrame() { return mBrkFrame; }
void setBrkFrame(f32 i_frame) { mBrkFrame = i_frame; }
/* 0x00 */ J3DModel* mpModel;
/* 0x04 */ mDoExt_btkAnm mBtk;
/* 0x18 */ mDoExt_brkAnm mBrk;
/* 0x30 */ f32 mBrkFrame;
};
class daObjBarrier_ef_c {
public:
void setDummyTexture(int);
bool checkHitActor(fopAc_ac_c*);
void birth(fopAc_ac_c*, f32, cXyz, cXyz, int);
bool init();
void create();
void execute();
void draw();
f32 getBtkFrame(int i_idx) { return mBtk[i_idx].getFrame(); }
/* 0x000 */ u32 mActiveEffFlags;
/* 0x004 */ J3DModel* mpModel[4];
/* 0x014 */ mDoExt_btkAnm mBtk[4];
/* 0x064 */ mDoExt_bckAnm mBck[4];
/* 0x0A4 */ mDoExt_brkAnm mBrk[4];
/* 0x104 */ cXyz mPos[4];
/* 0x134 */ s16 mAngle[4];
/* 0x13C */ fopAc_ac_c* mHitActor[4];
};
class daObjBarrier_c : public fopAc_ac_c {
public:
enum PROC_e {
PROC_BREAK_START_WAIT,
PROC_BREAK_ORDER,
PROC_BREAK_END_WAIT,
};
daObjBarrier_c();
void init_mtx();
static int solidHeapCB(fopAc_ac_c*);
bool create_heap();
bool checkCollision_Tg();
void checkCollision_At();
void registCollisionTable();
void brkAnmPlay();
void break_start_wait_proc();
void break_order_proc();
void break_end_wait_proc();
bool break_check();
int _create();
bool _delete();
bool _execute();
bool _draw();
bool param_get_damage() const { return daObj::PrmAbstract(this, 1, 0x10); }
int param_get_moya() const { return daObj::PrmAbstract(this, 1, 8); }
/* 0x290 */ daObjBarrier_anm_c mAnm;
/* 0x2C4 */ request_of_phase_process_class mPhase;
/* 0x2CC */ dBgW* mpBgW;
/* 0x2D0 */ Mtx mBgMtx;
/* 0x300 */ dCcD_Stts mAtStts;
/* 0x33C */ dCcD_Stts mTgStts;
/* 0x378 */ dCcD_Cyl mAtCyl;
/* 0x4A8 */ dCcD_Cyl mTgCyl;
/* 0x5D8 */ daObjBarrier_ef_c mEffect;
/* 0x724 */ u8 mBarrierActive;
/* 0x728 */ int mMoya;
/* 0x72C */ s16 mEventID;
/* 0x730 */ int mBarrierProc;
};
namespace {
static const char l_arcName[] = "Ycage";
static const char l_arcname[] = "Ycage";
static const dCcD_SrcCyl l_cyl_at_src = {
// dCcD_SrcGObjInf
@@ -162,16 +77,15 @@ static const dCcD_SrcCyl l_cyl_tg_src = {
},
};
static cXyz l_ef_scale;
static cXyz l_ef_scale(1.0f, 1.0f, 1.0f);
} // namespace
/* 000000EC-0000018C .text init_mtx__14daObjBarrier_cFv */
// NONMATCHING - load order flipped
void daObjBarrier_c::init_mtx() {
mAnm.mpModel->setBaseScale(mScale);
mAnm.getMdlP()->setBaseScale(mScale);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mAnm.mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
mAnm.getMdlP()->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::scaleM(mScale);
cMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
@@ -185,21 +99,19 @@ int daObjBarrier_c::solidHeapCB(fopAc_ac_c* i_this) {
/* 000001B0-00000340 .text init__18daObjBarrier_anm_cFv */
bool daObjBarrier_anm_c::init() {
bool rt = true;
void* modelData = dComIfG_getObjectRes(l_arcName, 10);
void* pbtk = dComIfG_getObjectRes(l_arcName, 18);
void* pbrk = dComIfG_getObjectRes(l_arcName, 14);
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, 10));
J3DAnmTextureSRTKey* pbtk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(l_arcname, 18));
J3DAnmTevRegKey* pbrk = static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectRes(l_arcname, 14));
if (modelData == NULL || pbtk == NULL || pbrk == NULL) {
JUT_PANIC(407);
rt = false;
} else {
mpModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x1000200);
BOOL btk_init = mBtk.init(
(J3DModelData*)modelData, (J3DAnmTextureSRTKey*)pbtk,
TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
BOOL brk_init = mBrk.init(
(J3DModelData*)modelData, (J3DAnmTevRegKey*)pbrk,
TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x1000200);
BOOL btk_init =
mBtk.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
BOOL brk_init =
mBrk.init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
if (mpModel == NULL || !btk_init || !brk_init) {
rt = false;
@@ -218,7 +130,7 @@ bool daObjBarrier_c::create_heap() {
if (!anm_init || !eff_init) {
rt = false;
} else {
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 22);
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcname, 22);
mpBgW = dBgW_NewSet(dzb, cBgW::MOVE_BG_e, &mBgMtx);
if (mpBgW == NULL) {
rt = false;
@@ -415,7 +327,6 @@ bool daObjBarrier_ef_c::checkHitActor(fopAc_ac_c* i_checkActor) {
}
/* 00000D5C-000011B8 .text birth__17daObjBarrier_ef_cFP10fopAc_ac_cf4cXyz4cXyzi */
// NONMATCHING
void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_center, cXyz i_hitPos,
int i_isNoEff) {
if (!i_isNoEff || !checkHitActor(i_hitActor)) {
@@ -428,8 +339,9 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente
pos.z = i_center.z + i_radius * -cM_scos(angle.y);
pos.y = i_hitPos.y;
int i;
int active_flags = mActiveEffFlags;
for (int i = 0; i < 4; i++) {
for (i = 0; i < 4; i++) {
if (!((active_flags >> i) & 1)) {
effect_idx = i;
break;
@@ -438,7 +350,7 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente
if (effect_idx == -1) {
f32 var_f1 = -1.0f;
for (int i = 0; i < 4; i++) { // nonmatching
for (i = 0; i < 4; i++) {
if (mBtk[i].getFrame() > var_f1) {
var_f1 = mBtk[i].getFrame();
effect_idx = i;
@@ -446,7 +358,8 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente
}
}
for (int i = 0; i < 4; i++) {
active_flags = mActiveEffFlags;
for (i = 0; i < 4; i++) {
if ((int)((active_flags >> i) & 1) == true) {
if (i != effect_idx) {
mBtk[i].setPlaySpeed((mBtk[i].getEndFrame() - mBtk[i].getFrame()) / 3.0f);
@@ -462,21 +375,21 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente
J3DModelData* modelData = mpModel[effect_idx]->getModelData();
void* btk_anm_p = dComIfG_getObjectRes(l_arcName, 19);
J3DAnmTextureSRTKey* btk_anm_p = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(l_arcname, 19));
JUT_ASSERT(937, btk_anm_p != 0);
void* bck_anm_p = dComIfG_getObjectRes(l_arcName, 7);
J3DAnmTransform* bck_anm_p = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(l_arcname, 7));
JUT_ASSERT(942, bck_anm_p != 0);
void* brk_anm_p = dComIfG_getObjectRes(l_arcName, 15);
J3DAnmTevRegKey* brk_anm_p = static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectRes(l_arcname, 15));
JUT_ASSERT(947, brk_anm_p != 0);
mBtk[effect_idx].init(modelData, (J3DAnmTextureSRTKey*)btk_anm_p, TRUE,
J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, true, 0);
mBck[effect_idx].init(modelData, (J3DAnmTransform*)bck_anm_p, TRUE,
J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, true);
mBrk[effect_idx].init(modelData, (J3DAnmTevRegKey*)brk_anm_p, TRUE,
J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, true, 0);
mBtk[effect_idx].init(modelData, btk_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1,
true, 0);
mBck[effect_idx].init(modelData, bck_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1,
true);
mBrk[effect_idx].init(modelData, brk_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1,
true, 0);
mDoMtx_stack_c::transS(pos.x, pos.y, pos.z);
mDoMtx_stack_c::ZXYrotM(0, angle.y, 0);
@@ -489,28 +402,25 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente
/* 000011B8-000013E0 .text init__17daObjBarrier_ef_cFv */
bool daObjBarrier_ef_c::init() {
bool rt = true;
void* modelData = dComIfG_getObjectRes(l_arcName, 11);
void* pbtk = dComIfG_getObjectRes(l_arcName, 19);
void* pbck = dComIfG_getObjectRes(l_arcName, 7);
void* pbrk = dComIfG_getObjectRes(l_arcName, 15);
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, 11));
J3DAnmTextureSRTKey* pbtk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(l_arcname, 19));
J3DAnmTransform* pbck = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(l_arcname, 7));
J3DAnmTevRegKey* pbrk = static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectRes(l_arcname, 15));
if (modelData == NULL || pbtk == NULL || pbck == NULL || pbrk == NULL) {
JUT_PANIC(1016);
rt = false;
} else {
for (int i = 0; i < 4; i++) {
mpModel[i] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x5020200);
mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x5020200);
setDummyTexture(i);
BOOL btk_init = mBtk[i].init(
(J3DModelData*)modelData, (J3DAnmTextureSRTKey*)pbtk,
TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false, 0);
BOOL bck_init = mBck[i].init(
(J3DModelData*)modelData, (J3DAnmTransform*)pbck,
TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false);
BOOL brk_init = mBrk[i].init(
(J3DModelData*)modelData, (J3DAnmTevRegKey*)pbrk,
TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false, 0);
BOOL btk_init = mBtk[i].init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0,
-1, false, 0);
BOOL bck_init =
mBck[i].init(modelData, pbck, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false);
BOOL brk_init = mBrk[i].init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0,
-1, false, 0);
if (mpModel[i] == NULL || !btk_init || !bck_init || !brk_init) {
rt = false;
@@ -584,7 +494,7 @@ int daObjBarrier_c::_create() {
}
if (mBarrierActive == true) {
phase = dComIfG_resLoad(&mPhase, l_arcName);
phase = dComIfG_resLoad(&mPhase, l_arcname);
}
if (phase == cPhs_COMPLEATE_e) {
@@ -594,7 +504,7 @@ int daObjBarrier_c::_create() {
} else {
mpBgW->SetCrrFunc(NULL);
mScale.z = mScale.x;
fopAcM_SetMtx(this, mAnm.mpModel->getBaseTRMtx());
fopAcM_SetMtx(this, mAnm.getMdlP()->getBaseTRMtx());
init_mtx();
mAtStts.Init(0xFF, 0xFF, this);
@@ -621,15 +531,10 @@ int daObjBarrier_c::_create() {
return phase;
}
/* 0000182C-00001A38 .text __ct__14daObjBarrier_cFv */
daObjBarrier_c::daObjBarrier_c() {
mEffect.mActiveEffFlags = 0;
}
/* 00001A38-00001AD8 .text _delete__14daObjBarrier_cFv */
bool daObjBarrier_c::_delete() {
if (mBarrierActive == true) {
dComIfG_resDelete(&mPhase, l_arcName);
dComIfG_resDelete(&mPhase, l_arcname);
if (heap != NULL && mpBgW != NULL) {
if (mpBgW->ChkUsed()) {
@@ -681,27 +586,27 @@ bool daObjBarrier_c::_draw() {
}
/* 00001C1C-00001C3C .text daObjBarrier_Create__FP10fopAc_ac_c */
int daObjBarrier_Create(fopAc_ac_c* i_this) {
static int daObjBarrier_Create(fopAc_ac_c* i_this) {
return static_cast<daObjBarrier_c*>(i_this)->_create();
}
/* 00001C3C-00001C60 .text daObjBarrier_Delete__FP14daObjBarrier_c */
int daObjBarrier_Delete(daObjBarrier_c* i_this) {
static int daObjBarrier_Delete(daObjBarrier_c* i_this) {
return static_cast<daObjBarrier_c*>(i_this)->_delete();
}
/* 00001C60-00001C84 .text daObjBarrier_Execute__FP14daObjBarrier_c */
int daObjBarrier_Execute(daObjBarrier_c* i_this) {
static int daObjBarrier_Execute(daObjBarrier_c* i_this) {
return static_cast<daObjBarrier_c*>(i_this)->_execute();
}
/* 00001C84-00001CA8 .text daObjBarrier_Draw__FP14daObjBarrier_c */
int daObjBarrier_Draw(daObjBarrier_c* i_this) {
static int daObjBarrier_Draw(daObjBarrier_c* i_this) {
return static_cast<daObjBarrier_c*>(i_this)->_draw();
}
/* 00001CA8-00001CB0 .text daObjBarrier_IsDelete__FP14daObjBarrier_c */
int daObjBarrier_IsDelete(daObjBarrier_c* i_this) {
static int daObjBarrier_IsDelete(daObjBarrier_c* i_this) {
return 1;
}
+2 -2
View File
@@ -34,9 +34,9 @@ BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
/* 00000098-0000015C .text CreateHeap__14daObjCafelmp_cFv */
BOOL daObjCafelmp_c::CreateHeap() {
void* modelData = dComIfG_getObjectRes("Cafelmp", 0x03);
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Cafelmp", 0x03));
JUT_ASSERT(0x51, modelData != 0);
mpModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x00, 0x11020203);
mpModel = mDoExt_J3DModel__create(modelData, 0x00, 0x11020203);
if (!mpModel)
return FALSE;
else
+2 -2
View File
@@ -49,13 +49,13 @@ BOOL daObjGbed_c::solidHeapCB(fopAc_ac_c* i_this) {
bool daObjGbed_c::create_heap() {
bool ret = true;
void* pModelData = dComIfG_getObjectRes(l_arcname, 0x04);
J3DModelData* pModelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcname, 0x04));
if (!pModelData) {
JUT_ASSERT(0xb1, 0);
ret = false;
} else {
mpModel = mDoExt_J3DModel__create((J3DModelData*)pModelData, 0x80000, 0x11000022);
mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000022);
mpBgW = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(l_arcname, 0x07), cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx());
if (!mpModel || !mpBgW)
+13 -9
View File
@@ -263,15 +263,15 @@ s16 daObjMknjD::Act_c::XyEventCB(int) {
/* 0000031C-00000620 .text CreateHeap__Q210daObjMknjD5Act_cFv */
int daObjMknjD::Act_c::CreateHeap() {
/* Nonmatching */
J3DModelData* model_data_d;
const void* temp_r26; // Fakematch to get it to use the same register for model_data_d and jntName
if (m043E == true) {
model_data_d = (J3DModelData*)dComIfG_getObjectRes(M_arcname, ID_WIND_MDL);
temp_r26 = dComIfG_getObjectRes(M_arcname, ID_WIND_MDL);
}
else {
model_data_d = (J3DModelData*)dComIfG_getObjectRes(M_arcname, ID_EARTH_MDL);
temp_r26 = dComIfG_getObjectRes(M_arcname, ID_EARTH_MDL);
}
J3DModelData* model_data_d = (J3DModelData*)temp_r26;
J3DModelData* model_data_h = (J3DModelData*)dComIfG_getObjectRes(M_arcname, ID_BREAK_MDL);
JUT_ASSERT(0x123, model_data_d != 0)
@@ -284,12 +284,13 @@ int daObjMknjD::Act_c::CreateHeap() {
JUTNameTab* nameTable = mMainMdl->getModelData()->getJointName();
for (u16 i = 0; i < mMainMdl->getModelData()->getJointNum(); i++) {
const char* jntName = nameTable->getName(i);
// const char* jntName = nameTable->getName(i);
temp_r26 = nameTable->getName(i);
if (strcmp("MknjL", jntName) == 0) {
if (strcmp("MknjL", (const char*)temp_r26) == 0) {
mMainMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBackL);
}
else if (strcmp("MknjR", jntName) == 0) {
else if (strcmp("MknjR", (const char*)temp_r26) == 0) {
mMainMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBackR);
}
}
@@ -300,10 +301,11 @@ int daObjMknjD::Act_c::CreateHeap() {
nameTable = mBreakMdl->getModelData()->getJointName();
for (u16 i = 0; i < mBreakMdl->getModelData()->getJointNum(); i++) {
const char* jntName = nameTable->getName(i);
// const char* jntName = nameTable->getName(i);
temp_r26 = nameTable->getName(i);
for (u16 j = 0; j < 20; j++) {
if (strcmp(daObjMknjD_jointName[j], jntName) == 0) {
if (strcmp(daObjMknjD_jointName[j], (const char*)temp_r26) == 0) {
mBreakMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack_Hahen);
joint_number_table[curTblIdx++] = j;
@@ -944,7 +946,9 @@ int daObjMknjD::Act_c::Execute(Mtx** i_mtx) {
m0500 = 0;
m043F = 9;
#if VERSION != VERSION_JPN
fopAcM_seStart(this, JA_SE_PRE_TAKT, 0);
#endif
}
else {
m0500 = 1;
+2 -2
View File
@@ -76,10 +76,10 @@ BOOL daObjMonument::Act_c::solidHeapCB(fopAc_ac_c* i_this) {
bool daObjMonument::Act_c::create_heap() {
bool ret = true;
void* modelData = dComIfG_getObjectRes(M_arcname, attr(mType).mModelId);
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(M_arcname, attr(mType).mModelId));
JUT_ASSERT(0x81, modelData != 0);
mpModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x00, 0x11020203);
mpModel = mDoExt_J3DModel__create(modelData, 0x00, 0x11020203);
if (!mpModel)
return false;
+8 -8
View File
@@ -537,8 +537,8 @@ bool dNpc_setAnmIDRes(mDoExt_McaMorf* pMorf, int loopMode, float morf, float spe
pSoundAnimRes = dComIfG_getObjectIDRes(arcName, soundResId);
}
void* pAnimRes = dComIfG_getObjectIDRes(arcName, animResId);
pMorf->setAnm((J3DAnmTransform*)pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
J3DAnmTransform* pAnimRes = static_cast<J3DAnmTransform*>(dComIfG_getObjectIDRes(arcName, animResId));
pMorf->setAnm(pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
ret = true;
}
@@ -575,8 +575,8 @@ bool dNpc_setAnm(mDoExt_McaMorf* pMorf, int loopMode, f32 morf, f32 speed, int a
pSoundAnimRes = dComIfG_getObjectRes(arcName, soundFileIdx);
}
void* pAnimRes = dComIfG_getObjectRes(arcName, animFileIdx);
pMorf->setAnm((J3DAnmTransform*)pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
J3DAnmTransform* pAnimRes = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(arcName, animFileIdx));
pMorf->setAnm(pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
ret = true;
}
@@ -682,14 +682,14 @@ u16 fopNpc_npc_c::talk(int param_1) {
bool dNpc_setAnm_2(mDoExt_McaMorf* pMorf, int loopMode, f32 morf, f32 speed, int animFileIdx, int soundFileIdx, const char* arcName) {
if(0 <= soundFileIdx) {
void* pSoundAnimRes = dComIfG_getObjectRes(arcName, soundFileIdx);
void* pAnimRes = dComIfG_getObjectRes(arcName, animFileIdx);
J3DAnmTransform* pAnimRes = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(arcName, animFileIdx));
pMorf->setAnm((J3DAnmTransform*)pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
pMorf->setAnm(pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, pSoundAnimRes);
}
else {
void* pAnimRes = dComIfG_getObjectRes(arcName, animFileIdx);
J3DAnmTransform* pAnimRes = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(arcName, animFileIdx));
pMorf->setAnm((J3DAnmTransform*)pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, 0);
pMorf->setAnm(pAnimRes, loopMode, morf, speed, 0.0f, -1.0f, 0);
}