obj_mirror_6pole / obj_mirror_sand / obj_myogan OK, obj_hbombkoya wip (#1901)

* obj_mirror_6pole / obj_mirror_sand OK. d_bg_w vtables fixed

* obj_myogan OK, obj_hbombkoya mostly done
This commit is contained in:
TakaRikka
2023-08-30 16:33:56 +03:00
committed by GitHub
parent 4c5c3a8964
commit 023bd31883
14 changed files with 1052 additions and 1702 deletions
+1 -1
View File
@@ -272,7 +272,7 @@ public:
/* 8007DC70 */ bool SphChkRp(dBgS_SphChk*, void*, int);
/* 8007DDE0 */ bool SphChkGrpRp(dBgS_SphChk*, void*, int, int);
/* 8007E548 */ virtual ~dBgW();
/* 8007E548 */ virtual ~dBgW() {}
/* 8007E4B4 */ virtual u32 ChkMoveFlag() const;
/* 8007E4A4 */ virtual void OffMoveFlag();
/* 8007DAF8 */ virtual void CaptPoly(dBgS_CaptPoly&);
+4
View File
@@ -1720,6 +1720,10 @@ inline u8 dComIfGs_getFishSize(u8 param_0) {
return g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().getMaxSize(param_0);
}
inline BOOL dComIfGs_isStageMiddleBoss() {
return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossEnemy2();
}
void dComIfGp_setSelectItem(int index);
s32 dComIfGp_offHeapLockFlag(int flag);
void dComIfGp_createSubExpHeap2D();
+2 -1
View File
@@ -21,7 +21,8 @@ struct action_class {
fptr& getExecute() { return execute; }
};
struct dEvLib_callback_c {
class dEvLib_callback_c {
public:
dEvLib_callback_c(fopAc_ac_c* param_0) {
mActor = param_0;
mAction = NULL;
+1
View File
@@ -835,6 +835,7 @@ public:
onDungeonItem(OOCCOO_NOTE);
}
s32 isStageBossEnemy() const { return isDungeonItem(STAGE_BOSS_ENEMY); }
s32 isStageBossEnemy2() const { return isDungeonItem(STAGE_BOSS_ENEMY_2); }
s32 isDungeonItemWarp() const { return isDungeonItem(OOCCOO_NOTE); }
void onStageLife() { onDungeonItem(STAGE_LIFE); }
+4
View File
@@ -149,7 +149,11 @@ public:
/* 8000D9E8 */ void entryJoint(J3DModelData* i_modelData, u16 i_jntNo, f32 i_frame);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void remove(J3DModelData* i_modelData) { i_modelData->getJointNodePointer(0)->setMtxCalc(NULL); }
J3DAnmTransform* getBckAnm() { return mAnm; }
void removeJoint(J3DModelData* i_modelData, u16 i_idx) {
J3DJoint* mpJnt = i_modelData->getJointNodePointer(i_idx);
mpJnt->setMtxCalc(0);
@@ -1,6 +1,45 @@
#ifndef D_A_OBJ_HBOMBKOYA_H
#define D_A_OBJ_HBOMBKOYA_H
#include "dolphin/types.h"
#include "d/bg/d_bg_s_movebg_actor.h"
#include "d/cc/d_cc_d.h"
#include "d/event/d_event_lib.h"
#include "f_op/f_op_actor_mng.h"
class daObjHBombkoya_c : public dBgS_MoveBgActor,
public request_of_phase_process_class,
public dEvLib_callback_c {
public:
struct PSetTbl {
/* 0x00 */ Vec m_position;
/* 0x0C */ int m_startTime; // The time at which this table is able to be used
/* 0x10 */ f32 m_scale;
};
daObjHBombkoya_c() : dEvLib_callback_c(this) {}
/* 80C1B878 */ int create1st();
/* 80C1BB7C */ bool setParticle(u16*, int, PSetTbl*, int, int);
/* 80C1C474 */ virtual ~daObjHBombkoya_c();
/* 80C1B938 */ virtual int CreateHeap();
/* 80C1B9CC */ virtual int Create();
/* 80C1BCA0 */ virtual int Execute(Mtx**);
/* 80C1C098 */ virtual int Draw();
/* 80C1C16C */ virtual int Delete();
int getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
int getSw2No() { return fopAcM_GetParamBit(this, 8, 8); }
/* 0x5A8 */ // dEvLib_callback_c
/* 0x5B8 */ Mtx mBgMtx;
/* 0x5E8 */ Mtx mMtx;
/* 0x618 */ J3DModel* mpModel;
/* 0x61C */ int mTimer;
/* 0x620 */ bool mActive;
/* 0x624 */ u32 mEmitterKeys[9];
/* 0x648 */ dCcD_Stts mStts;
/* 0x684 */ dCcD_Cyl mCyl;
};
#endif /* D_A_OBJ_HBOMBKOYA_H */
@@ -1,6 +1,34 @@
#ifndef D_A_OBJ_MYOGAN_H
#define D_A_OBJ_MYOGAN_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class dBgW;
class obj_myogan_class : public fopAc_ac_c {
public:
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ J3DModel* mpModel;
/* 0x574 */ mDoExt_btkAnm* mpBtk;
/* 0x578 */ mDoExt_brkAnm* mpBrk;
/* 0x57C */ s16 field_0x57c;
/* 0x57E */ s16 mAction;
/* 0x580 */ u8 field_0x580[0x582 - 0x580];
/* 0x582 */ s16 field_0x582[2];
/* 0x586 */ u8 field_0x586[0x58C - 0x586];
/* 0x58C */ Mtx mBgMtx;
/* 0x5BC */ dBgW* mpBgW;
/* 0x5C0 */ u8 mInitialized;
};
class daObj_Myogan_HIO_c {
public:
/* 80C9EBAC */ daObj_Myogan_HIO_c();
/* 80C9F1F0 */ virtual ~daObj_Myogan_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 mSize;
/* 0x0C */ f32 mNormalHeight;
};
#endif /* D_A_OBJ_MYOGAN_H */
@@ -1,6 +1,77 @@
#ifndef D_A_OBJ_MIRROR_6POLE_H
#define D_A_OBJ_MIRROR_6POLE_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/com/d_com_inf_game.h"
class daObjMirror6Pole_c;
typedef void (daObjMirror6Pole_c::*actionFunc)();
class daObjMirror6Pole_c : public fopAc_ac_c {
public:
enum Mode_e {
MODE_WAIT_e,
MODE_DEMO_e,
MODE_MAX_e,
};
/* 80C95E18 */ void initWait();
/* 80C95E2C */ void executeWait();
/* 80C95E88 */ void initDemo();
/* 80C95E8C */ void executeDemo();
/* 80C95EFC */ void setBaseMtx();
/* 80C95F50 */ static int createHeapCallBack(fopAc_ac_c* i_this);
/* 80C95F70 */ int CreateHeap();
inline ~daObjMirror6Pole_c();
inline int execute();
inline int create();
inline int draw();
void initBaseMtx() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
// setBaseMtx();
// this is supposed to be setBaseMtx, but it gets inlined here for some reason?
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
}
void create_init() {
initBaseMtx();
mAttentionInfo.mFlags = 0;
setAction(MODE_WAIT_e);
}
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
bool isSwitch() {
return i_fopAcM_isSwitch(this, getSwitchNo()) ||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]) ||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]);
}
void setAction(Mode_e i_action) {
mMode = i_action;
mAction = ActionTable[mMode];
callInit();
}
void callInit() { (this->*mAction[0])(); }
void callExecute() { (this->*mAction[1])(); }
static actionFunc ActionTable[][2];
/* 0x568 */ J3DModel* mpModel;
/* 0x56C */ mDoExt_bckAnm* mpBck;
/* 0x570 */ request_of_phase_process_class mPhase;
/* 0x578 */ actionFunc* mAction;
/* 0x57C */ Mode_e mMode;
};
#endif /* D_A_OBJ_MIRROR_6POLE_H */
@@ -1,6 +1,38 @@
#ifndef D_A_OBJ_MIRROR_SAND_H
#define D_A_OBJ_MIRROR_SAND_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/com/d_com_inf_game.h"
#include "d/bg/d_bg_w.h"
class daObjMirrorSand_c : public fopAc_ac_c {
public:
/* 80C98508 */ void initBaseMtx();
/* 80C98534 */ void setBaseMtx();
inline ~daObjMirrorSand_c();
inline int createHeap();
inline int create();
inline int execute();
inline int draw();
inline void create_init();
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
bool isSwitch() {
return i_fopAcM_isSwitch(this, getSwitchNo()) ||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]) ||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]);
}
/* 0x568 */ J3DModel* mpModel;
/* 0x56C */ mDoExt_bckAnm* mpBck;
/* 0x570 */ request_of_phase_process_class mPhase;
/* 0x578 */ dBgW* mpCurrentBgw;
/* 0x57C */ dBgW mBgw[2];
/* 0x6FC */ Mtx mBgMtx;
};
#endif /* D_A_OBJ_MIRROR_SAND_H */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,335 +1,204 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_obj_mirror_sand
//
/**
* d_a_obj_mirror_sand.cpp
* Mirror Chamber Sand Floor
*/
#include "rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct csXyz {};
struct cXyz {};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
static u8 now[48];
};
struct J3DModelData {};
struct J3DAnmTransform {};
struct mDoExt_bckAnm {
/* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool);
/* 8000D9CC */ void entry(J3DModelData*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daObjMirrorSand_c {
/* 80C98508 */ void initBaseMtx();
/* 80C98534 */ void setBaseMtx();
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_flag_c {
static u8 saveBitLabels[1644 + 4 /* padding */];
};
struct dSv_event_c {
/* 800349BC */ void isEventBit(u16) const;
};
struct dKy_tevstr_c {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dBgW_Base {};
struct dBgW {
/* 8007B970 */ dBgW();
/* 8007B9C0 */ void Move();
/* 80C987B8 */ ~dBgW();
};
struct dBgS {
/* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
};
struct cBgW_BgId {
/* 802681D4 */ void ChkUsed() const;
};
struct cBgD_t {};
struct cBgW {
/* 8007933C */ ~cBgW();
/* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
};
struct cBgS {
/* 80074250 */ void Release(dBgW_Base*);
};
struct J3DModel {};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 80C984C0 */ ~J3DFrameCtrl();
};
//
// Forward References:
//
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" void initBaseMtx__17daObjMirrorSand_cFv();
extern "C" void setBaseMtx__17daObjMirrorSand_cFv();
extern "C" static void daObjMirrorSand_Draw__FP17daObjMirrorSand_c();
extern "C" static void daObjMirrorSand_Execute__FP17daObjMirrorSand_c();
extern "C" static bool daObjMirrorSand_IsDelete__FP17daObjMirrorSand_c();
extern "C" static void daObjMirrorSand_Delete__FP17daObjMirrorSand_c();
extern "C" void __dt__4dBgWFv();
extern "C" static void daObjMirrorSand_Create__FP10fopAc_ac_c();
extern "C" extern char const* const d_a_obj_mirror_sand__stringBase0;
//
// External References:
//
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void __dt__4cBgWFv();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void Move__4dBgWFv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void ChkUsed__9cBgW_BgIdCFv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSMTXCopy();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__4dBgW[65];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 j3dSys[284];
//
// Declarations:
//
/* ############################################################################################## */
/* 80C989D8-80C989DC 000000 0004+00 1/1 0/0 0/0 .rodata @3729 */
SECTION_RODATA static f32 const lit_3729 = 1.0f;
COMPILER_STRIP_GATE(0x80C989D8, &lit_3729);
/* 80C989DC-80C989E0 000004 0004+00 3/3 0/0 0/0 .rodata @3730 */
SECTION_RODATA static u8 const lit_3730[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80C989DC, &lit_3730);
/* 80C989E0-80C989E8 000008 0008+00 1/1 0/0 0/0 .rodata @3732 */
SECTION_RODATA static u8 const lit_3732[8] = {
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80C989E0, &lit_3732);
/* 80C989E8-80C989E8 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80C989E8 = "MR-Sand";
#pragma pop
#include "JSystem/JKernel/JKRHeap.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
/* 80C989F0-80C989F4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_mirror_sand__stringBase0;
static char* l_arcName = "MR-Sand";
/* 80C989F4-80C98A14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirrorSand_Method */
SECTION_DATA static void* l_daObjMirrorSand_Method[8] = {
(void*)daObjMirrorSand_Create__FP10fopAc_ac_c,
(void*)daObjMirrorSand_Delete__FP17daObjMirrorSand_c,
(void*)daObjMirrorSand_Execute__FP17daObjMirrorSand_c,
(void*)daObjMirrorSand_IsDelete__FP17daObjMirrorSand_c,
(void*)daObjMirrorSand_Draw__FP17daObjMirrorSand_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
int daObjMirrorSand_c::createHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 8);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
/* 80C98A14-80C98A44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MirrorSand */
SECTION_DATA extern void* g_profile_Obj_MirrorSand[12] = {
(void*)0xFFFFFFFD, (void*)0x0003FFFD,
(void*)0x00AF0000, (void*)&g_fpcLf_Method,
(void*)0x0000072C, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x02A70000, (void*)&l_daObjMirrorSand_Method,
(void*)0x00040000, (void*)0x000E0000,
};
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 5);
mpBck = new mDoExt_bckAnm();
/* 80C98A44-80C98A50 000054 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
f32 speed;
if (isSwitch()) {
speed = 1.0f;
} else {
speed = 0.0f;
}
if (mpBck == NULL || !mpBck->init(bck, FALSE, J3DFrameCtrl::LOOP_ONCE_e, speed, 0, -1, false)) {
return 0;
}
if (isSwitch()) {
mpBck->setFrame(bck->getFrameMax());
}
int i = 0; // probably fake match, needed to avoid saving mBgMtx to a register
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 11);
if (mBgw[0].Set(dzb, dBgW::MOVE_BG_e, (Mtx*)&mBgMtx[i])) {
return 0;
}
cBgD_t* dzb2 = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 12);
if (mBgw[1].Set(dzb2, dBgW::MOVE_BG_e, &mBgMtx)) {
return 0;
}
return 1;
}
/* 80C981D8-80C984C0 000078 02E8+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void createSolidHeap(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/createSolidHeap__FP10fopAc_ac_c.s"
static int createSolidHeap(fopAc_ac_c* i_this) {
return static_cast<daObjMirrorSand_c*>(i_this)->createHeap();
}
#pragma pop
/* 80C984C0-80C98508 000360 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* 80C98508-80C98534 0003A8 002C+00 1/1 0/0 0/0 .text initBaseMtx__17daObjMirrorSand_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjMirrorSand_c::initBaseMtx() {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/initBaseMtx__17daObjMirrorSand_cFv.s"
void daObjMirrorSand_c::initBaseMtx() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
setBaseMtx();
}
#pragma pop
/* 80C98534-80C98598 0003D4 0064+00 1/1 0/0 0/0 .text setBaseMtx__17daObjMirrorSand_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjMirrorSand_c::setBaseMtx() {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/setBaseMtx__17daObjMirrorSand_cFv.s"
void daObjMirrorSand_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
mpCurrentBgw->Move();
}
int daObjMirrorSand_c::draw() {
g_env_light.settingTevStruct(0x10, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
mpBck->entry(mpModel->getModelData());
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
mpBck->remove(mpModel->getModelData());
return 1;
}
#pragma pop
/* 80C98598-80C98668 000438 00D0+00 1/0 0/0 0/0 .text daObjMirrorSand_Draw__FP17daObjMirrorSand_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObjMirrorSand_Draw(daObjMirrorSand_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/daObjMirrorSand_Draw__FP17daObjMirrorSand_c.s"
static int daObjMirrorSand_Draw(daObjMirrorSand_c* i_this) {
return i_this->draw();
}
int daObjMirrorSand_c::execute() {
mpBck->play();
if (mpCurrentBgw == &mBgw[0] && mpBck->getPlaySpeed() > 0.0f) {
dComIfG_Bgsp().Release(&mBgw[0]);
dComIfG_Bgsp().Regist(&mBgw[1], this);
mpCurrentBgw = &mBgw[1];
mpCurrentBgw->Move();
}
return 1;
}
#pragma pop
/* 80C98668-80C98700 000508 0098+00 1/0 0/0 0/0 .text
* daObjMirrorSand_Execute__FP17daObjMirrorSand_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObjMirrorSand_Execute(daObjMirrorSand_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/daObjMirrorSand_Execute__FP17daObjMirrorSand_c.s"
static int daObjMirrorSand_Execute(daObjMirrorSand_c* i_this) {
return i_this->execute();
}
#pragma pop
/* 80C98700-80C98708 0005A0 0008+00 1/0 0/0 0/0 .text
* daObjMirrorSand_IsDelete__FP17daObjMirrorSand_c */
static bool daObjMirrorSand_IsDelete(daObjMirrorSand_c* param_0) {
return true;
static int daObjMirrorSand_IsDelete(daObjMirrorSand_c* i_this) {
return 1;
}
daObjMirrorSand_c::~daObjMirrorSand_c() {
if (mBgw[0].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgw[0]);
}
if (mBgw[1].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgw[1]);
}
dComIfG_resDelete(&mPhase, l_arcName);
}
/* 80C98708-80C987B8 0005A8 00B0+00 1/0 0/0 0/0 .text
* daObjMirrorSand_Delete__FP17daObjMirrorSand_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObjMirrorSand_Delete(daObjMirrorSand_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/daObjMirrorSand_Delete__FP17daObjMirrorSand_c.s"
static int daObjMirrorSand_Delete(daObjMirrorSand_c* i_this) {
i_this->~daObjMirrorSand_c();
return 1;
}
#pragma pop
/* 80C987B8-80C98818 000658 0060+00 2/2 0/0 0/0 .text __dt__4dBgWFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dBgW::~dBgW() {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/__dt__4dBgWFv.s"
void daObjMirrorSand_c::create_init() {
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
mpBck->setPlaySpeed(0.0f);
mBgw[0].SetCrrFunc(NULL);
mBgw[0].SetRoomId(fopAcM_GetRoomNo(this));
mBgw[1].SetCrrFunc(NULL);
mBgw[1].SetRoomId(fopAcM_GetRoomNo(this));
dBgW* current_bgw;
if (isSwitch()) {
current_bgw = &mBgw[1];
} else {
current_bgw = &mBgw[0];
}
mpCurrentBgw = current_bgw;
dComIfG_Bgsp().Regist(mpCurrentBgw, this);
initBaseMtx();
}
int daObjMirrorSand_c::create() {
fopAcM_SetupActor(this, daObjMirrorSand_c);
int phase = dComIfG_resLoad(&mPhase, l_arcName);
if (phase == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x1AD0)) {
return cPhs_ERROR_e;
}
create_init();
}
return phase;
}
#pragma pop
/* 80C98818-80C989D0 0006B8 01B8+00 1/0 0/0 0/0 .text daObjMirrorSand_Create__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObjMirrorSand_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand/daObjMirrorSand_Create__FP10fopAc_ac_c.s"
static int daObjMirrorSand_Create(fopAc_ac_c* i_this) {
return static_cast<daObjMirrorSand_c*>(i_this)->create();
}
#pragma pop
/* 80C989E8-80C989E8 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 80C989F4-80C98A14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirrorSand_Method */
static actor_method_class l_daObjMirrorSand_Method = {
(process_method_func)daObjMirrorSand_Create, (process_method_func)daObjMirrorSand_Delete,
(process_method_func)daObjMirrorSand_Execute, (process_method_func)daObjMirrorSand_IsDelete,
(process_method_func)daObjMirrorSand_Draw,
};
/* 80C98A14-80C98A44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_MirrorSand */
extern actor_process_profile_definition g_profile_Obj_MirrorSand = {
-3,
3,
-3,
PROC_Obj_MirrorSand,
&g_fpcLf_Method.mBase,
sizeof(daObjMirrorSand_c),
0,
0,
&g_fopAc_Method.base,
679,
&l_daObjMirrorSand_Method,
0x40000,
0,
14,
};
+10 -254
View File
@@ -220,182 +220,6 @@ extern "C" u8 sincosTable___5JMath[65536];
// Declarations:
//
/* ############################################################################################## */
/* 803ABA80-803ABB84 008BA0 0104+00 2/2 1/1 5/5 .data __vt__4dBgW */
SECTION_DATA extern void* __vt__4dBgW[65] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__4dBgWFv,
(void*)ChkMemoryError__4cBgWFv,
(void*)ChkNotReady__4cBgWCFv,
(void*)ChkLock__4cBgWCFv,
(void*)ChkMoveBg__4cBgWCFv,
(void*)ChkMoveFlag__4dBgWCFv,
(void*)GetTriPla__4cBgWCFRC13cBgS_PolyInfo,
(void*)GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz,
(void*)GetBnd__4cBgWCFv,
(void*)GetGrpInf__4cBgWCFRC13cBgS_PolyInfo,
(void*)OffMoveFlag__4dBgWFv,
(void*)GetTopUnder__4cBgWCFPfPf,
(void*)SetOldShapeAngleY__9dBgW_BaseFs,
(void*)LineCheck__4cBgWFP11cBgS_LinChk,
(void*)GroundCross__4cBgWFP11cBgS_GndChk,
(void*)ShdwDraw__4cBgWFP13cBgS_ShdwDraw,
(void*)CaptPoly__4dBgWFR13dBgS_CaptPoly,
(void*)WallCorrect__4dBgWFP9dBgS_Acch,
(void*)WallCorrectSort__4dBgWFP9dBgS_Acch,
(void*)RoofChk__4dBgWFP12dBgS_RoofChk,
(void*)SplGrpChk__4dBgWFP14dBgS_SplGrpChk,
(void*)SphChk__4dBgWFP11dBgS_SphChkPv,
(void*)GetGrpRoomIndex__4cBgWCFRC13cBgS_PolyInfo,
(void*)GetExitId__4dBgWFRC13cBgS_PolyInfo,
(void*)GetPolyColor__4dBgWFRC13cBgS_PolyInfo,
(void*)GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo,
(void*)GetSpecialCode__4dBgWFRC13cBgS_PolyInfo,
(void*)GetSpecialCode__4dBgWFi,
(void*)GetMagnetCode__4dBgWFRC13cBgS_PolyInfo,
(void*)GetPolyObjThrough__4dBgWFi,
(void*)GetPolyCamThrough__4dBgWFi,
(void*)GetPolyLinkThrough__4dBgWFi,
(void*)GetPolyArrowThrough__4dBgWFi,
(void*)GetPolyHSStick__4dBgWFi,
(void*)GetPolyBoomerangThrough__4dBgWFi,
(void*)GetPolyRopeThrough__4dBgWFi,
(void*)GetPolyBombThrough__4dBgWFi,
(void*)GetShdwThrough__4dBgWFi,
(void*)GetUnderwaterRoofCode__4dBgWFi,
(void*)GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo,
(void*)GetLinkNo__4dBgWFRC13cBgS_PolyInfo,
(void*)GetWallCode__4dBgWFRC13cBgS_PolyInfo,
(void*)GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo,
(void*)GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo,
(void*)GetGroundCode__4dBgWFRC13cBgS_PolyInfo,
(void*)GetIronBallThrough__4dBgWFi,
(void*)GetAttackThrough__4dBgWFi,
(void*)GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo,
(void*)GetRoomCamId__4dBgWFRC13cBgS_PolyInfo,
(void*)GetRoomPathId__4dBgWFRC13cBgS_PolyInfo,
(void*)GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo,
(void*)GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo,
(void*)GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo,
(void*)CrrPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
(void*)TransPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
(void*)MatrixCrrPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
(void*)CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c,
(void*)CallArrowStickCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_cR4cXyz,
(void*)CalcPlane__4cBgWFv,
(void*)ClassifyPlane__4cBgWFv,
(void*)ChkPolyThrough__4dBgWFiP16cBgS_PolyPassChk,
(void*)ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk,
(void*)ChkGrpThrough__4dBgWFiP15cBgS_GrpPassChki,
};
/* 803ABB84-803ABB90 008CA4 000C+00 3/3 5/5 0/0 .data __vt__8cM3dGTri */
SECTION_DATA extern void* __vt__8cM3dGTri[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGTriFv,
};
/* 803ABB90-803ABB9C 008CB0 000C+00 2/2 0/0 0/0 .data __vt__11cBgW_GrpElm */
SECTION_DATA extern void* __vt__11cBgW_GrpElm[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__11cBgW_GrpElmFv,
};
/* 803ABB9C-803ABBA8 008CBC 000C+00 2/2 0/0 0/0 .data __vt__11cBgW_TriElm */
SECTION_DATA extern void* __vt__11cBgW_TriElm[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__11cBgW_TriElmFv,
};
/* 803ABBA8-803ABCAC 008CC8 0104+00 2/2 0/0 0/0 .data __vt__4cBgW */
SECTION_DATA extern void* __vt__4cBgW[65] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__4cBgWFv,
(void*)ChkMemoryError__4cBgWFv,
(void*)ChkNotReady__4cBgWCFv,
(void*)ChkLock__4cBgWCFv,
(void*)ChkMoveBg__4cBgWCFv,
(void*)NULL,
(void*)GetTriPla__4cBgWCFRC13cBgS_PolyInfo,
(void*)GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz,
(void*)GetBnd__4cBgWCFv,
(void*)GetGrpInf__4cBgWCFRC13cBgS_PolyInfo,
(void*)NULL,
(void*)GetTopUnder__4cBgWCFPfPf,
(void*)SetOldShapeAngleY__9dBgW_BaseFs,
(void*)LineCheck__4cBgWFP11cBgS_LinChk,
(void*)GroundCross__4cBgWFP11cBgS_GndChk,
(void*)ShdwDraw__4cBgWFP13cBgS_ShdwDraw,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)GetGrpRoomIndex__4cBgWCFRC13cBgS_PolyInfo,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c,
(void*)CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz,
(void*)CalcPlane__4cBgWFv,
(void*)ClassifyPlane__4cBgWFv,
(void*)ChkPolyThrough__4cBgWFiP16cBgS_PolyPassChk,
(void*)ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk,
(void*)ChkGrpThrough__4cBgWFiP15cBgS_GrpPassChki,
};
/* 803ABCAC-803ABCB8 008DCC 000C+00 2/2 0/0 0/0 .data __vt__13cBgW_NodeTree */
SECTION_DATA extern void* __vt__13cBgW_NodeTree[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__13cBgW_NodeTreeFv,
};
/* 803ABCB8-803ABCC8 008DD8 000C+04 2/2 0/0 0/0 .data __vt__11cBgW_RwgElm */
SECTION_DATA extern void* __vt__11cBgW_RwgElm[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__11cBgW_RwgElmFv,
/* padding */
NULL,
};
/* 800791C4-800791D4 073B04 0010+00 1/1 0/0 0/0 .text __ct__11cBgW_RwgElmFv */
cBgW_RwgElm::cBgW_RwgElm() {}
@@ -440,15 +264,9 @@ cBgW::cBgW() {
}
/* 8007933C-800793A4 073C7C 0068+00 2/1 1/1 5/5 .text __dt__4cBgWFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm cBgW::~cBgW() {
extern "C" asm void __dt__4cBgWFv() {
nofralloc
#include "asm/d/bg/d_bg_w/__dt__4cBgWFv.s"
cBgW::~cBgW() {
FreeArea();
}
#pragma pop
/* 800793A4-800793C4 073CE4 0020+00 2/2 0/0 0/0 .text FreeArea__4cBgWFv */
void cBgW::FreeArea() {
@@ -547,15 +365,7 @@ bool cBgW::SetTri() {
}
/* 800796F8-80079754 074038 005C+00 2/1 0/0 0/0 .text __dt__11cBgW_TriElmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm cBgW_TriElm::~cBgW_TriElm() {
extern "C" asm void __dt__11cBgW_TriElmFv() {
nofralloc
#include "asm/d/bg/d_bg_w/__dt__11cBgW_TriElmFv.s"
}
#pragma pop
cBgW_TriElm::~cBgW_TriElm() {}
/* 80079754-80079770 074094 001C+00 1/1 0/0 0/0 .text __ct__11cBgW_TriElmFv */
cBgW_TriElm::cBgW_TriElm() {}
@@ -873,22 +683,12 @@ bool cBgW::Set(cBgD_t* pbgd, u32 flags, Mtx* pbase_mtx) {
}
/* 8007A184-8007A1E4 074AC4 0060+00 2/1 0/0 0/0 .text __dt__11cBgW_GrpElmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm cBgW_GrpElm::~cBgW_GrpElm() {
extern "C" asm void __dt__11cBgW_GrpElmFv() {
nofralloc
#include "asm/d/bg/d_bg_w/__dt__11cBgW_GrpElmFv.s"
}
#pragma pop
cBgW_GrpElm::~cBgW_GrpElm() {}
/* 8007A1E4-8007A200 074B24 001C+00 1/1 0/0 0/0 .text __ct__11cBgW_GrpElmFv */
cBgW_GrpElm::cBgW_GrpElm() {}
/* 8007A200-8007A344 074B40 0144+00 1/1 0/0 0/0 .text RwgLineCheck__4cBgWFUsP11cBgS_LinChk */
// vtable issue
#ifdef NONMATCHING
bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) {
bool chk;
chk = false;
@@ -897,8 +697,8 @@ bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) {
while (1) {
cBgD_Tri_t* tri_data = &pm_bgd->m_t_tbl[poly_index];
tri.setBg(&pm_vtx_tbl[tri_data->field_0x0], &pm_vtx_tbl[tri_data->field_0x2],
&pm_vtx_tbl[tri_data->field_0x4], &pm_tri[poly_index].m_plane);
tri.setBg(&pm_vtx_tbl[tri_data->m_vtx_idx0], &pm_vtx_tbl[tri_data->m_vtx_idx1],
&pm_vtx_tbl[tri_data->m_vtx_idx2], &pm_tri[poly_index].m_plane);
cXyz cross;
if (tri.cross(linchk->GetLinP(), &cross, linchk->ChkFrontFlag(), linchk->ChkBackFlag())) {
@@ -917,27 +717,6 @@ bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) {
return chk;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool cBgW::RwgLineCheck(u16 param_0, cBgS_LinChk* param_1) {
nofralloc
#include "asm/d/bg/d_bg_w/RwgLineCheck__4cBgWFUsP11cBgS_LinChk.s"
}
#pragma pop
#endif
/* 8007A344-8007A3A0 074C84 005C+00 1/0 0/0 0/0 .text __dt__8cM3dGTriFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm cM3dGTri::~cM3dGTri() {
extern "C" asm void __dt__8cM3dGTriFv() {
nofralloc
#include "asm/d/bg/d_bg_w/__dt__8cM3dGTriFv.s"
}
#pragma pop
/* 8007A3A0-8007A52C 074CE0 018C+00 1/1 0/0 0/0 .text LineCheckRp__4cBgWFP11cBgS_LinChki
*/
@@ -2019,8 +1798,6 @@ void dBgW::CaptPoly(dBgS_CaptPoly& poly) {
/* 8007DB20-8007DC70 078460 0150+00 1/1 0/0 0/0 .text RwgSphChk__4dBgWFUsP11dBgS_SphChkPv
*/
// vtable order
#ifdef NONMATCHING
bool dBgW::RwgSphChk(u16 param_0, dBgS_SphChk* param_1, void* param_2) {
cM3dGTri acStack_50;
cBgW_RwgElm* puVar4;
@@ -2030,11 +1807,11 @@ bool dBgW::RwgSphChk(u16 param_0, dBgS_SphChk* param_1, void* param_2) {
puVar4 = &pm_rwg[param_0];
if (!ChkPolyThrough(param_0, param_1->GetPolyPassChk())) {
puVar5 = &pm_bgd->m_t_tbl[param_0];
acStack_50.setBg(&pm_vtx_tbl[puVar5->field_0x0], &pm_vtx_tbl[puVar5->field_0x2],
&pm_vtx_tbl[puVar5->field_0x4], &pm_tri[param_0].m_plane);
acStack_50.setBg(&pm_vtx_tbl[puVar5->m_vtx_idx0], &pm_vtx_tbl[puVar5->m_vtx_idx1],
&pm_vtx_tbl[puVar5->m_vtx_idx2], &pm_tri[param_0].m_plane);
if (param_1->cross(&acStack_50)) {
param_1->mCallback(param_1, pm_vtx_tbl, puVar5->field_0x0, puVar5->field_0x2,
puVar5->field_0x4, &pm_tri[param_0].m_plane, param_2);
param_1->mCallback(param_1, pm_vtx_tbl, puVar5->m_vtx_idx0, puVar5->m_vtx_idx1,
puVar5->m_vtx_idx2, &pm_tri[param_0].m_plane, param_2);
param_1->SetPolyIndex(param_0);
uVar3 = true;
}
@@ -2045,16 +1822,6 @@ bool dBgW::RwgSphChk(u16 param_0, dBgS_SphChk* param_1, void* param_2) {
}
return uVar3;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dBgW::RwgSphChk(u16 param_0, dBgS_SphChk* param_1, void* param_2) {
nofralloc
#include "asm/d/bg/d_bg_w/RwgSphChk__4dBgWFUsP11dBgS_SphChkPv.s"
}
#pragma pop
#endif
/* 8007DC70-8007DDE0 0785B0 0170+00 1/1 0/0 0/0 .text SphChkRp__4dBgWFP11dBgS_SphChkPvi
*/
@@ -2323,17 +2090,6 @@ dBgW* dBgW_NewSet(cBgD_t* pbgd, u32 flags, Mtx* pbase_mtx) {
return nw;
}
/* 8007E548-8007E5A8 078E88 0060+00 1/0 0/0 0/0 .text __dt__4dBgWFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm dBgW::~dBgW() {
extern "C" asm void __dt__4dBgWFv() {
nofralloc
#include "asm/d/bg/d_bg_w/__dt__4dBgWFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80450F88-80450F90 -00001 0008+00 0/0 4/4 0/0 .sbss None */
/* 80450F88 0001+00 data_80450F88 None */