diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index 88d1bb33a6..d60abe101c 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -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&); diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 8ed72fa23a..444a28d44b 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -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(); diff --git a/include/d/event/d_event_lib.h b/include/d/event/d_event_lib.h index 7dc9f688c0..4c43dad324 100644 --- a/include/d/event/d_event_lib.h +++ b/include/d/event/d_event_lib.h @@ -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; diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 08e2b9e1b6..ea53f5d455 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -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); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index f4fad2699c..b19daeab7c 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -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); diff --git a/include/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.h b/include/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.h index 1edbab6216..fc66e643e9 100644 --- a/include/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.h +++ b/include/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.h @@ -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 */ diff --git a/include/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.h b/include/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.h index 9e94770f97..753546152c 100644 --- a/include/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.h +++ b/include/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.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 */ diff --git a/include/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.h b/include/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.h index d25ec0c764..ba5d379ca6 100644 --- a/include/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.h +++ b/include/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.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 */ diff --git a/include/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.h b/include/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.h index c7b7f1f184..acf813f204 100644 --- a/include/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.h +++ b/include/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.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 */ diff --git a/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.cpp b/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.cpp index f800071f69..5481b926be 100644 --- a/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.cpp +++ b/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.cpp @@ -1,106 +1,14 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_hbombkoya -// +/** + * d_a_obj_hbombkoya.cpp + * Kakariko Exploding Bomb Warehouse + */ #include "rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya.h" -#include "d/cc/d_cc_d.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" #include "dol2asm.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - /* 8000CE38 */ void scaleM(f32, f32, f32); - - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daObjHBombkoya_c { - struct PSetTbl {}; - - /* 80C1B878 */ void create1st(); - /* 80C1B938 */ void CreateHeap(); - /* 80C1B9CC */ void Create(); - /* 80C1BB7C */ void setParticle(u16*, int, daObjHBombkoya_c::PSetTbl*, int, int); - /* 80C1BCA0 */ void Execute(f32 (**)[3][4]); - /* 80C1C098 */ void Draw(); - /* 80C1C16C */ void Delete(); - /* 80C1C474 */ ~daObjHBombkoya_c(); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -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 dPa_levelEcallBack {}; - -struct csXyz {}; - -struct _GXColor {}; - -struct dPa_control_c { - /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, - u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, - cXyz const*, f32); - /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, - _GXColor const*, cXyz const*, f32); -}; - -struct dEvLib_callback_c { - /* 80C1C414 */ ~dEvLib_callback_c(); - /* 80C1C45C */ bool eventStart(); - /* 80C1C464 */ bool eventRun(); - /* 80C1C46C */ bool eventEnd(); -}; - -struct dBgW {}; - -struct cBgS_PolyInfo {}; - -struct dBgS_MoveBgActor { - /* 80078624 */ dBgS_MoveBgActor(); - /* 800786B0 */ bool IsDelete(); - /* 800786B8 */ bool ToFore(); - /* 800786C0 */ bool ToBack(); - /* 800787BC */ void MoveBGCreate(char const*, int, - void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, - csXyz*, csXyz*), - u32, f32 (*)[3][4]); - /* 800788DC */ void MoveBGDelete(); - /* 80078950 */ void MoveBGExecute(); -}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct J3DModel {}; - // // Forward References: // @@ -168,16 +76,10 @@ extern "C" void SetC__8cM3dGCylFRC4cXyz(); extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); extern "C" void __dl__FPv(); -extern "C" void PSMTXIdentity(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); extern "C" void _savegpr_19(); extern "C" void _savegpr_24(); extern "C" void _restgpr_19(); extern "C" void _restgpr_24(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__16dBgS_MoveBgActor[10]; extern "C" extern void* __vt__8dCcD_Cyl[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; @@ -185,44 +87,56 @@ extern "C" extern void* __vt__12cCcD_CylAttr[25]; extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; 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]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; +extern void* __vt__10cCcD_GStts[3]; +extern void* __vt__10dCcD_GStts[3]; +extern void* __vt__8cM3dGCyl[3]; +extern void* __vt__17dEvLib_callback_c[6]; +extern void* __vt__8cM3dGAab[3]; +extern void* __vt__16daObjHBombkoya_c[17]; + // // Declarations: // -/* ############################################################################################## */ -/* 80C1C728-80C1C728 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C1C728 = "H_Bombkoy"; -#pragma pop - /* 80C1C734-80C1C738 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_hbombkoya__stringBase0; +static char* l_arcName = "H_Bombkoy"; /* 80C1B878-80C1B938 000078 00C0+00 1/1 0/0 0/0 .text create1st__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::create1st() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/create1st__16daObjHBombkoya_cFv.s" +int daObjHBombkoya_c::create1st() { + if (i_fopAcM_isSwitch(this, getSw2No())) { + return cPhs_ERROR_e; + } + + request_of_phase_process_class* actor_phase = (request_of_phase_process_class*)this; + + int phase = dComIfG_resLoad(actor_phase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + PSMTXIdentity(mBgMtx); + + phase = MoveBGCreate(l_arcName, 7, NULL, 0x2860, &mBgMtx); + if (phase == cPhs_ERROR_e) { + return phase; + } + } + + return phase; } -#pragma pop /* 80C1B938-80C1B9CC 000138 0094+00 1/0 0/0 0/0 .text CreateHeap__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::CreateHeap() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/CreateHeap__16daObjHBombkoya_cFv.s" +int daObjHBombkoya_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + Mtx m; + PSMTXIdentity(m); + mpModel->i_setBaseTRMtx(m); + return 1; } -#pragma pop /* ############################################################################################## */ /* 80C1C5F8-80C1C5FC 000000 0004+00 2/2 0/0 0/0 .rodata @3699 */ @@ -232,70 +146,361 @@ COMPILER_STRIP_GATE(0x80C1C5F8, &lit_3699); /* 80C1C738-80C1C77C 000004 0044+00 1/1 0/0 0/0 .data l_cc_cyl_src */ static dCcD_SrcCyl l_cc_cyl_src = { { - {0x0, {{AT_TYPE_BOMB, 0x4, 0x13}, {0x0, 0x0}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf + {0x0, {{AT_TYPE_BOMB, 0x4, 0x13}, {0x0, 0x0}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf { - {0.0f, 0.0f, 0.0f}, // mCenter - 1000.0f, // mRadius - 1000.0f // mHeight - } // mCyl + {0.0f, 0.0f, 0.0f}, // mCenter + 1000.0f, // mRadius + 1000.0f // mHeight + } // mCyl }; -/* 80C1C77C-80C1C790 000048 0012+02 1/1 0/0 0/0 .data id$3767 */ -SECTION_DATA static u8 id[18 + 2 /* padding */] = { - 0x85, - 0x77, - 0x85, - 0x78, - 0x85, - 0x79, - 0x85, - 0x7A, - 0x85, - 0x7B, - 0x85, - 0x7C, - 0x85, - 0x7D, - 0x85, - 0x7E, - 0x85, - 0x7F, - /* padding */ - 0x00, - 0x00, -}; +/* 80C1B9CC-80C1BB34 0001CC 0168+00 1/0 0/0 0/0 .text Create__16daObjHBombkoya_cFv */ +// matches with vtables setup +#ifdef NONMATCHING +int daObjHBombkoya_c::Create() { + mpModel->setBaseScale(mScale); + fopAcM_SetMtx(this, NULL); -/* 80C1C790-80C1C910 00005C 0180+00 1/1 0/0 0/0 .data ptable$3776 */ -SECTION_DATA static u8 ptable[384] = { - 0x85, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x85, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x85, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x85, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x85, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x85, 0x95, 0x00, 0x00, 0xC4, 0x23, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x11, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x85, 0x95, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x00, - 0x85, 0x95, 0x00, 0x00, 0xC3, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x3E, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x85, 0x95, 0x00, 0x00, 0xC4, 0x31, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC3, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xAC, 0xCC, 0xCD, - 0x85, 0x95, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x4C, 0xCC, 0xCD, 0x85, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, -}; + cM3dGAab aab(*mpBgW->GetBnd()); + fopAcM_setCullSizeBox(this, aab.GetMinP()->x, aab.GetMinP()->y, aab.GetMinP()->z, + aab.GetMaxP()->x, aab.GetMaxP()->y + 200.0f, aab.GetMaxP()->z); + mTimer = 0; + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(current.angle.y); + mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z); + PSMTXCopy(mDoMtx_stack_c::get(), mMtx); + + for (int i = 0; i < 9; i++) { + mEmitterKeys[i] = 0; + } + + mActive = false; + mStts.Init(0xFF, 0, this); + mCyl.Set(l_cc_cyl_src); + mCyl.SetStts(&mStts); + return 1; +} +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm int daObjHBombkoya_c::Create() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/Create__16daObjHBombkoya_cFv.s" +} +#pragma pop +#endif + +/* 80C1BB34-80C1BB7C 000334 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__8cM3dGAabFv.s" +} +#pragma pop + +/* 80C1BB7C-80C1BCA0 00037C 0124+00 1/1 0/0 0/0 .text + * setParticle__16daObjHBombkoya_cFPUsiPQ216daObjHBombkoya_c7PSetTblii */ +bool daObjHBombkoya_c::setParticle(u16* i_particleIDs, int i_particleMax, + daObjHBombkoya_c::PSetTbl* i_setTbl, int i_tableMax, + int i_timer) { + bool particle_set = false; + + for (int i = 0; i < i_tableMax; i++) { + if (i_timer == i_setTbl[i].m_startTime) { + cXyz position; + cXyz base_pos; + + base_pos = i_setTbl[i].m_position; + PSMTXMultVec(mMtx, &base_pos, &position); + + cXyz scale; + scale.z = i_setTbl[i].m_scale; + scale.y = i_setTbl[i].m_scale; + scale.x = i_setTbl[i].m_scale; + + for (int j = 0; j < i_particleMax; j++) { + dComIfGp_particle_set(i_particleIDs[j], &position, NULL, &scale); + particle_set = true; + } + } + } + + return particle_set; +} + +/* 80C1BCA0-80C1C098 0004A0 03F8+00 1/0 0/0 0/0 .text Execute__16daObjHBombkoya_cFPPA3_A4_f */ +int daObjHBombkoya_c::Execute(Mtx** param_0) { + *param_0 = &mBgMtx; + + if (i_fopAcM_isSwitch(this, getSwNo())) { + if (i_fopAcM_isSwitch(this, getSw2No())) { + mActive = false; + fopAcM_delete(this); + } else { + if (mTimer == 180) { + mActive = false; + } + + u16 particle_ids[] = {0x858D, 0x858E, 0x858F, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594}; + PSetTbl ptcl_set_table[8] = { + {{0.0f, 235.0f, 0.0f}, 90, 0.8f}, {{-823.0f, 125.0f, -300.0f}, 110, 1.0f}, + {{-1000.0f, 1000.0f, -590.0f}, 115, 1.0f}, {{-525.0f, 863.0f, -261.0f}, 120, 0.8f}, + {{-1000.0f, 486.0f, -903.0f}, 140, 1.0f}, {{-485.0f, 12.0f, 0.0f}, 150, 0.8f}, + {{-480.0f, 614.0f, -462.0f}, 155, 1.0f}, {{-1000.0f, 116.0f, -469.0f}, 160, 1.0f}, + }; + + if (setParticle(particle_ids, 8, ptcl_set_table, 8, mTimer)) { + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_OBJ_BOMB_EXPLODE, ¤t.pos, 0, 0, 1.0f, + 1.0f, -1.0f, -1.0f, 0); + } + + u16 particle_ids2[] = {0x8580, 0x8581, 0x8582}; + PSetTbl ptcl_set_table2[5] = { + {{-165.0f, 500.0f, 106.0f}, 0, 1.0f}, {{-715.0f, 160.0f, -158.0f}, 0, 1.2f}, + {{-318.0f, 1120.0f, -514.0f}, 0, 1.1f}, {{-1000.0f, 140.0f, -792.0f}, 0, 1.2f}, + {{-921.0f, 1000.0f, -708.0f}, 0, 1.25f}, + }; + + setParticle(particle_ids2, 3, ptcl_set_table2, 5, mTimer); + + static u16 id[] = {0x8577, 0x8578, 0x8579, 0x857A, 0x857B, + 0x857C, 0x857D, 0x857E, 0x857F}; + + if (mTimer < 170) { + for (int i = 0; i < 9; i++) { + mEmitterKeys[i] = dComIfGp_particle_set(mEmitterKeys[i], id[i], ¤t.pos, + &shape_angle, NULL); + } + + Z2GetAudioMgr()->mSeMgr.seStartLevel(Z2SE_OBJ_BOMB_HOUSE_BURN, ¤t.pos, 900, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else { + i_fopAcM_onSwitch(this, getSw2No()); + + if (mTimer == 170) { + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_OBJ_BOMB_HOUSE_EXPLD, ¤t.pos, 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + + cXyz base_pos; + cXyz cyl_pos; + + base_pos.x = -500.0f; + base_pos.y = 0.0f; + base_pos.z = -500.0f; + + PSMTXMultVec(mMtx, &base_pos, &cyl_pos); + mCyl.SetC(cyl_pos); + dComIfG_Ccsp()->Set(&mCyl); + } + + struct ptbl { + /* 0x00 */ u16 particle_id; + /* 0x04 */ PSetTbl set_info; + }; + + static ptbl ptable[] = { + {0x8583, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8584, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8585, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8586, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8587, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8588, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8589, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x858A, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x858B, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x858C, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + {0x8595, {{-655.0f, 0.0f, -580.0f}, 0, 1.0f}}, + {0x8595, {{-100.0f, 0.0f, -640.0f}, 0, 1.25f}}, + {0x8595, {{-325.0f, 0.0f, -760.0f}, 0, 1.8f}}, + {0x8595, {{-710.0f, 0.0f, -205.0f}, 0, 1.35f}}, + {0x8595, {{36.0f, 0.0f, -28.0f}, 0, 0.8f}}, + {0x8596, {{0.0f, 0.0f, 0.0f}, 0, 1.0f}}, + }; + + for (u32 i = 0; i < 16; i++) { + if (mTimer == ptable[i].set_info.m_startTime) { + cXyz pos; + cXyz base_pos; + + base_pos = ptable[i].set_info.m_position; + PSMTXMultVec(mMtx, &base_pos, &pos); + + cXyz scale; + scale.z = ptable[i].set_info.m_scale; + scale.y = ptable[i].set_info.m_scale; + scale.x = ptable[i].set_info.m_scale; + + dComIfGp_particle_set(ptable[i].particle_id, &pos, ¤t.angle, &scale); + } + } + + mTimer++; + } + } + + return 1; +} + +/* 80C1C098-80C1C16C 000898 00D4+00 1/0 0/0 0/0 .text Draw__16daObjHBombkoya_cFv */ +int daObjHBombkoya_c::Draw() { + if (mActive && !i_fopAcM_isSwitch(this, getSw2No())) { + g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + } + + return 1; +} + +/* 80C1C16C-80C1C1A8 00096C 003C+00 1/0 0/0 0/0 .text Delete__16daObjHBombkoya_cFv */ +int daObjHBombkoya_c::Delete() { + request_of_phase_process_class* actor_phase = (request_of_phase_process_class*)this; + dComIfG_resDelete(actor_phase, l_arcName); + return 1; +} + +/* ############################################################################################## */ + +/* 80C1C1A8-80C1C2BC 0009A8 0114+00 1/0 0/0 0/0 .text + * daObjHBombkoya_create1st__FP16daObjHBombkoya_c */ +// vtable issues, read more below +#ifdef NONMATCHING +static int daObjHBombkoya_create1st(daObjHBombkoya_c* i_this) { + fopAcM_SetupActor(i_this, daObjHBombkoya_c); + + return i_this->create1st(); +} +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void daObjHBombkoya_create1st(daObjHBombkoya_c* param_0) { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/daObjHBombkoya_create1st__FP16daObjHBombkoya_c.s" +} +#pragma pop +#endif + +/* 80C1C2BC-80C1C304 000ABC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__8cM3dGCylFv.s" +} +#pragma pop + +/* 80C1C304-80C1C360 000B04 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__10dCcD_GSttsFv.s" +} +#pragma pop + +/* 80C1C360-80C1C380 000B60 0020+00 1/0 0/0 0/0 .text + * daObjHBombkoya_MoveBGDelete__FP16daObjHBombkoya_c */ +static int daObjHBombkoya_MoveBGDelete(daObjHBombkoya_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C1C380-80C1C3A0 000B80 0020+00 1/0 0/0 0/0 .text + * daObjHBombkoya_MoveBGExecute__FP16daObjHBombkoya_c */ +static int daObjHBombkoya_MoveBGExecute(daObjHBombkoya_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C1C3A0-80C1C3CC 000BA0 002C+00 1/0 0/0 0/0 .text + * daObjHBombkoya_MoveBGDraw__FP16daObjHBombkoya_c */ +static int daObjHBombkoya_MoveBGDraw(daObjHBombkoya_c* i_this) { + return i_this->MoveBGDraw(); +} + +/** + * Vtables for daObjHBombkoya_c mostly match, but __dt__17dEvLib_callback_cFv keeps getting + * generated above after daObjHBombkoya_create1st instead of down here. If that can be fixed, + * it should fix all vtable issues for this TU + */ + +/* 80C1C3CC-80C1C414 000BCC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__10cCcD_GSttsFv.s" +} +#pragma pop + +/* 80C1C414-80C1C45C 000C14 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm dEvLib_callback_c::~dEvLib_callback_c() { +extern "C" asm void __dt__17dEvLib_callback_cFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__17dEvLib_callback_cFv.s" +} +#pragma pop + +/* 80C1C45C-80C1C464 000C5C 0008+00 2/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv + */ +// bool dEvLib_callback_c::eventStart() { +extern "C" bool eventStart__17dEvLib_callback_cFv() { + return true; +} + +/* 80C1C464-80C1C46C 000C64 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ +// bool dEvLib_callback_c::eventRun() { +extern "C" bool eventRun__17dEvLib_callback_cFv() { + return true; +} + +/* 80C1C46C-80C1C474 000C6C 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ +// bool dEvLib_callback_c::eventEnd() { +extern "C" bool eventEnd__17dEvLib_callback_cFv() { + return true; +} + +/* 80C1C474-80C1C5E8 000C74 0174+00 2/1 0/0 0/0 .text __dt__16daObjHBombkoya_cFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +// asm daObjHBombkoya_c::~daObjHBombkoya_c() { +extern "C" asm void __dt__16daObjHBombkoya_cFv() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__16daObjHBombkoya_cFv.s" +} +#pragma pop + +/* 80C1C5E8-80C1C5F0 000DE8 0008+00 1/0 0/0 0/0 .text @1448@__dt__16daObjHBombkoya_cFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void func_80C1C5E8() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/func_80C1C5E8.s" +} +#pragma pop /* 80C1C910-80C1C930 -00001 0020+00 1/0 0/0 0/0 .data daObjHBombkoya_METHODS */ SECTION_DATA static void* daObjHBombkoya_METHODS[8] = { @@ -357,162 +562,6 @@ SECTION_DATA extern void* __vt__8cM3dGAab[3] = { (void*)__dt__8cM3dGAabFv, }; -/* 80C1B9CC-80C1BB34 0001CC 0168+00 1/0 0/0 0/0 .text Create__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::Create() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/Create__16daObjHBombkoya_cFv.s" -} -#pragma pop - -/* 80C1BB34-80C1BB7C 000334 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm cM3dGAab::~cM3dGAab() { -extern "C" asm void __dt__8cM3dGAabFv() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__8cM3dGAabFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C1C5FC-80C1C600 000004 0004+00 1/2 0/0 0/0 .rodata @3747 */ -SECTION_RODATA static f32 const lit_3747 = 1.0f; -COMPILER_STRIP_GATE(0x80C1C5FC, &lit_3747); - -/* 80C1BB7C-80C1BCA0 00037C 0124+00 1/1 0/0 0/0 .text - * setParticle__16daObjHBombkoya_cFPUsiPQ216daObjHBombkoya_c7PSetTblii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::setParticle(u16* param_0, int param_1, - daObjHBombkoya_c::PSetTbl* param_2, int param_3, - int param_4) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/func_80C1BB7C.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C1C600-80C1C610 000008 0010+00 0/1 0/0 0/0 .rodata @3758 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3758[16] = { - 0x85, 0x8D, 0x85, 0x8E, 0x85, 0x8F, 0x85, 0x90, 0x85, 0x91, 0x85, 0x92, 0x85, 0x93, 0x85, 0x94, -}; -COMPILER_STRIP_GATE(0x80C1C600, &lit_3758); -#pragma pop - -/* 80C1C610-80C1C6B0 000018 00A0+00 0/0 0/0 0/0 .rodata @3759 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3759[160] = { - 0x00, 0x00, 0x00, 0x00, 0x43, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, - 0x3F, 0x4C, 0xCC, 0xCD, 0xC4, 0x4D, 0xC0, 0x00, 0x42, 0xFA, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x6E, 0x3F, 0x80, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0xC4, 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x73, 0x3F, 0x80, 0x00, 0x00, 0xC4, 0x03, 0x40, 0x00, - 0x44, 0x57, 0xC0, 0x00, 0xC3, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3F, 0x4C, 0xCC, 0xCD, - 0xC4, 0x7A, 0x00, 0x00, 0x43, 0xF3, 0x00, 0x00, 0xC4, 0x61, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x8C, - 0x3F, 0x80, 0x00, 0x00, 0xC3, 0xF2, 0x80, 0x00, 0x41, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xC3, 0xF0, 0x00, 0x00, 0x44, 0x19, 0x80, 0x00, - 0xC3, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x3F, 0x80, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, - 0x42, 0xE8, 0x00, 0x00, 0xC3, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x3F, 0x80, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C1C610, &lit_3759); -#pragma pop - -/* 80C1C6B0-80C1C6B8 0000B8 0006+02 0/1 0/0 0/0 .rodata @3762 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3762[6 + 2 /* padding */] = { - 0x85, - 0x80, - 0x85, - 0x81, - 0x85, - 0x82, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C1C6B0, &lit_3762); -#pragma pop - -/* 80C1C6B8-80C1C71C 0000C0 0064+00 0/0 0/0 0/0 .rodata @3763 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3763[100] = { - 0xC3, 0x25, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x42, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0xC4, 0x32, 0xC0, 0x00, 0x43, 0x20, 0x00, 0x00, 0xC3, 0x1E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, 0xC3, 0x9F, 0x00, 0x00, 0x44, - 0x8C, 0x00, 0x00, 0xC4, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, - 0xC4, 0x7A, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0xC4, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3F, 0x99, 0x99, 0x9A, 0xC4, 0x66, 0x40, 0x00, 0x44, 0x7A, 0x00, 0x00, 0xC4, 0x31, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C1C6B8, &lit_3763); -#pragma pop - -/* 80C1C71C-80C1C720 000124 0004+00 0/1 0/0 0/0 .rodata @3851 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3851 = -1.0f; -COMPILER_STRIP_GATE(0x80C1C71C, &lit_3851); -#pragma pop - -/* 80C1C720-80C1C724 000128 0004+00 0/1 0/0 0/0 .rodata @3852 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3852 = -500.0f; -COMPILER_STRIP_GATE(0x80C1C720, &lit_3852); -#pragma pop - -/* 80C1C724-80C1C728 00012C 0004+00 0/1 0/0 0/0 .rodata @3853 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3853[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C1C724, &lit_3853); -#pragma pop - -/* 80C1BCA0-80C1C098 0004A0 03F8+00 1/0 0/0 0/0 .text Execute__16daObjHBombkoya_cFPPA3_A4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::Execute(f32 (**param_0)[3][4]) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/Execute__16daObjHBombkoya_cFPPA3_A4_f.s" -} -#pragma pop - -/* 80C1C098-80C1C16C 000898 00D4+00 1/0 0/0 0/0 .text Draw__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::Draw() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/Draw__16daObjHBombkoya_cFv.s" -} -#pragma pop - -/* 80C1C16C-80C1C1A8 00096C 003C+00 1/0 0/0 0/0 .text Delete__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjHBombkoya_c::Delete() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/Delete__16daObjHBombkoya_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ /* 80C1C9A8-80C1C9EC 000274 0044+00 2/2 0/0 0/0 .data __vt__16daObjHBombkoya_c */ SECTION_DATA extern void* __vt__16daObjHBombkoya_c[17] = { (void*)NULL /* RTTI */, @@ -533,128 +582,3 @@ SECTION_DATA extern void* __vt__16daObjHBombkoya_c[17] = { (void*)eventEnd__17dEvLib_callback_cFv, (void*)__dt__16daObjHBombkoya_cFv, }; - -/* 80C1C1A8-80C1C2BC 0009A8 0114+00 1/0 0/0 0/0 .text - * daObjHBombkoya_create1st__FP16daObjHBombkoya_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjHBombkoya_create1st(daObjHBombkoya_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/daObjHBombkoya_create1st__FP16daObjHBombkoya_c.s" -} -#pragma pop - -/* 80C1C2BC-80C1C304 000ABC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm cM3dGCyl::~cM3dGCyl() { -extern "C" asm void __dt__8cM3dGCylFv() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__8cM3dGCylFv.s" -} -#pragma pop - -/* 80C1C304-80C1C360 000B04 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dCcD_GStts::~dCcD_GStts() { -extern "C" asm void __dt__10dCcD_GSttsFv() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__10dCcD_GSttsFv.s" -} -#pragma pop - -/* 80C1C360-80C1C380 000B60 0020+00 1/0 0/0 0/0 .text - * daObjHBombkoya_MoveBGDelete__FP16daObjHBombkoya_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjHBombkoya_MoveBGDelete(daObjHBombkoya_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/daObjHBombkoya_MoveBGDelete__FP16daObjHBombkoya_c.s" -} -#pragma pop - -/* 80C1C380-80C1C3A0 000B80 0020+00 1/0 0/0 0/0 .text - * daObjHBombkoya_MoveBGExecute__FP16daObjHBombkoya_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjHBombkoya_MoveBGExecute(daObjHBombkoya_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/daObjHBombkoya_MoveBGExecute__FP16daObjHBombkoya_c.s" -} -#pragma pop - -/* 80C1C3A0-80C1C3CC 000BA0 002C+00 1/0 0/0 0/0 .text - * daObjHBombkoya_MoveBGDraw__FP16daObjHBombkoya_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjHBombkoya_MoveBGDraw(daObjHBombkoya_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/daObjHBombkoya_MoveBGDraw__FP16daObjHBombkoya_c.s" -} -#pragma pop - -/* 80C1C3CC-80C1C414 000BCC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm cCcD_GStts::~cCcD_GStts() { -extern "C" asm void __dt__10cCcD_GSttsFv() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__10cCcD_GSttsFv.s" -} -#pragma pop - -/* 80C1C414-80C1C45C 000C14 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dEvLib_callback_c::~dEvLib_callback_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__17dEvLib_callback_cFv.s" -} -#pragma pop - -/* 80C1C45C-80C1C464 000C5C 0008+00 2/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv - */ -bool dEvLib_callback_c::eventStart() { - return true; -} - -/* 80C1C464-80C1C46C 000C64 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventRun() { - return true; -} - -/* 80C1C46C-80C1C474 000C6C 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventEnd() { - return true; -} - -/* 80C1C474-80C1C5E8 000C74 0174+00 2/1 0/0 0/0 .text __dt__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daObjHBombkoya_c::~daObjHBombkoya_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/__dt__16daObjHBombkoya_cFv.s" -} -#pragma pop - -/* 80C1C5E8-80C1C5F0 000DE8 0008+00 1/0 0/0 0/0 .text @1448@__dt__16daObjHBombkoya_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80C1C5E8() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_hbombkoya/d_a_obj_hbombkoya/func_80C1C5E8.s" -} -#pragma pop - -/* 80C1C728-80C1C728 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.cpp b/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.cpp index d70f9cc7a6..638967510b 100644 --- a/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.cpp +++ b/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.cpp @@ -1,366 +1,200 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_myogan -// +/** + * d_a_obj_myogan.cpp + * Dangoro Arena Lava + */ #include "rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan.h" -#include "dol2asm.h" - -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct obj_myogan_class {}; - -struct mDoMtx_stack_c { - /* 8000CE38 */ void scaleM(f32, f32, f32); - - static u8 now[48]; -}; - -struct J3DMaterialTable {}; - -struct J3DAnmTextureSRTKey {}; - -struct mDoExt_btkAnm { - /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); - /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); -}; - -struct J3DAnmTevRegKey {}; - -struct mDoExt_brkAnm { - /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); - /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daObj_Myogan_HIO_c { - /* 80C9EBAC */ daObj_Myogan_HIO_c(); - /* 80C9F1F0 */ ~daObj_Myogan_HIO_c(); -}; - -struct dSv_memBit_c { - /* 80034934 */ void isDungeonItem(int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct cXyz {}; - -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(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct csXyz {}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS_PolyInfo {}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct J3DModel {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 80C9F064 */ ~J3DFrameCtrl(); -}; - -// -// Forward References: -// - -extern "C" void __ct__18daObj_Myogan_HIO_cFv(); -extern "C" static void daObj_Myogan_Draw__FP16obj_myogan_class(); -extern "C" static void action__FP16obj_myogan_class(); -extern "C" static void daObj_Myogan_Execute__FP16obj_myogan_class(); -extern "C" static bool daObj_Myogan_IsDelete__FP16obj_myogan_class(); -extern "C" static void daObj_Myogan_Delete__FP16obj_myogan_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daObj_Myogan_Create__FP10fopAc_ac_c(); -extern "C" void __dt__18daObj_Myogan_HIO_cFv(); -extern "C" void __sinit_d_a_obj_myogan_cpp(); -extern "C" extern char const* const d_a_obj_myogan__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void isDungeonItem__12dSv_memBit_cCFi(); -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 dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -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 cM_rndF__Ff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -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" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C9F288-80C9F28C 000000 0004+00 2/2 0/0 0/0 .rodata @3762 */ -SECTION_RODATA static f32 const lit_3762 = 1.0f; -COMPILER_STRIP_GATE(0x80C9F288, &lit_3762); - -/* 80C9F28C-80C9F290 000004 0004+00 1/1 0/0 0/0 .rodata @3763 */ -SECTION_RODATA static u8 const lit_3763[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C9F28C, &lit_3763); - -/* 80C9F2A8-80C9F2C8 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Myogan_Method */ -SECTION_DATA static void* l_daObj_Myogan_Method[8] = { - (void*)daObj_Myogan_Create__FP10fopAc_ac_c, - (void*)daObj_Myogan_Delete__FP16obj_myogan_class, - (void*)daObj_Myogan_Execute__FP16obj_myogan_class, - (void*)daObj_Myogan_IsDelete__FP16obj_myogan_class, - (void*)daObj_Myogan_Draw__FP16obj_myogan_class, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 80C9F2C8-80C9F2F8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_MYOGAN */ -SECTION_DATA extern void* g_profile_OBJ_MYOGAN[12] = { - (void*)0xFFFFFFFD, (void*)0x0003FFFD, - (void*)0x007C0000, (void*)&g_fpcLf_Method, - (void*)0x000005C4, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x00340000, (void*)&l_daObj_Myogan_Method, - (void*)0x00044000, (void*)0x000E0000, -}; - -/* 80C9F2F8-80C9F304 000050 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, -}; - -/* 80C9F304-80C9F310 00005C 000C+00 2/2 0/0 0/0 .data __vt__18daObj_Myogan_HIO_c */ -SECTION_DATA extern void* __vt__18daObj_Myogan_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daObj_Myogan_HIO_cFv, -}; +#include "JSystem/JKernel/JKRHeap.h" +#include "SSystem/SComponent/c_math.h" +#include "d/bg/d_bg_w.h" +#include "d/com/d_com_inf_game.h" +#include "d/bg/d_bg_s_movebg_actor.h" +#include "d/d_procname.h" /* 80C9EBAC-80C9EBDC 0000EC 0030+00 1/1 0/0 0/0 .text __ct__18daObj_Myogan_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daObj_Myogan_HIO_c::daObj_Myogan_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/__ct__18daObj_Myogan_HIO_cFv.s" +daObj_Myogan_HIO_c::daObj_Myogan_HIO_c() { + field_0x4 = -1; + mSize = 1.0f; + mNormalHeight = 0.0f; } -#pragma pop /* 80C9EBDC-80C9EC70 00011C 0094+00 1/0 0/0 0/0 .text daObj_Myogan_Draw__FP16obj_myogan_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Myogan_Draw(obj_myogan_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/daObj_Myogan_Draw__FP16obj_myogan_class.s" +static int daObj_Myogan_Draw(obj_myogan_class* i_this) { + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->mTevStr); + g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &i_this->mTevStr); + + i_this->mpBrk->entry(i_this->mpModel->getModelData()); + i_this->mpBtk->entry(i_this->mpModel->getModelData()); + + mDoExt_modelUpdateDL(i_this->mpModel); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 80C9F290-80C9F294 000008 0004+00 1/1 0/0 0/0 .rodata @3823 */ -SECTION_RODATA static f32 const lit_3823 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C9F290, &lit_3823); - -/* 80C9F294-80C9F298 00000C 0004+00 1/1 0/0 0/0 .rodata @3824 */ -SECTION_RODATA static f32 const lit_3824 = 10.0f; -COMPILER_STRIP_GATE(0x80C9F294, &lit_3824); /* 80C9F318-80C9F31C 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_80C9F318[4]; - -/* 80C9F31C-80C9F328 00000C 000C+00 1/1 0/0 0/0 .bss @3757 */ -static u8 lit_3757[12]; +static bool initialized; /* 80C9F328-80C9F338 000018 0010+00 3/3 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[16]; +static daObj_Myogan_HIO_c l_HIO; /* 80C9EC70-80C9ED5C 0001B0 00EC+00 1/1 0/0 0/0 .text action__FP16obj_myogan_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void action(obj_myogan_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/action__FP16obj_myogan_class.s" +static void action(obj_myogan_class* i_this) { + switch (i_this->mAction) { + case 0: + cLib_addCalc2(&i_this->current.pos.y, i_this->orig.pos.y + l_HIO.mNormalHeight, 0.05f, + 10.0f); + break; + case 1: + break; + } + + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->shape_angle.y); + mDoMtx_stack_c::scaleM(l_HIO.mSize, l_HIO.mSize, l_HIO.mSize); + + i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); + PSMTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx); + + i_this->mpBgW->Move(); + i_this->mpBrk->play(); + i_this->mpBtk->play(); } -#pragma pop /* 80C9ED5C-80C9EDB8 00029C 005C+00 2/1 0/0 0/0 .text daObj_Myogan_Execute__FP16obj_myogan_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Myogan_Execute(obj_myogan_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/daObj_Myogan_Execute__FP16obj_myogan_class.s" +static int daObj_Myogan_Execute(obj_myogan_class* i_this) { + i_this->field_0x57c++; + + for (int i = 0; i < 2; i++) { + if (i_this->field_0x582[i] != 0) { + i_this->field_0x582[i]--; + } + } + + action(i_this); + return 1; } -#pragma pop /* 80C9EDB8-80C9EDC0 0002F8 0008+00 1/0 0/0 0/0 .text daObj_Myogan_IsDelete__FP16obj_myogan_class */ -static bool daObj_Myogan_IsDelete(obj_myogan_class* param_0) { - return true; +static int daObj_Myogan_IsDelete(obj_myogan_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 80C9F2A0-80C9F2A0 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C9F2A0 = "S_YOGAN"; -#pragma pop - /* 80C9EDC0-80C9EE28 000300 0068+00 1/0 0/0 0/0 .text daObj_Myogan_Delete__FP16obj_myogan_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Myogan_Delete(obj_myogan_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/daObj_Myogan_Delete__FP16obj_myogan_class.s" +static int daObj_Myogan_Delete(obj_myogan_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "S_YOGAN"); + if (i_this->mInitialized) { + initialized = false; + } + + dComIfG_Bgsp().Release(i_this->mpBgW); + return 1; } -#pragma pop /* 80C9EE28-80C9F064 000368 023C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void useHeapInit(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/useHeapInit__FP10fopAc_ac_c.s" +static int useHeapInit(fopAc_ac_c* i_this) { + obj_myogan_class* a_this = (obj_myogan_class*)i_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("S_YOGAN", 6); + a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); + if (a_this->mpModel == NULL) { + return 0; + } + + a_this->mpBrk = new mDoExt_brkAnm(); + if (a_this->mpBrk == NULL) { + return 0; + } + + J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("S_YOGAN", 9); + if (!a_this->mpBrk->init(a_this->mpModel->getModelData(), brk, TRUE, + J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) + { + return 0; + } + + a_this->mpBtk = new mDoExt_btkAnm(); + if (a_this->mpBtk == NULL) { + return 0; + } + + J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("S_YOGAN", 12); + if (!a_this->mpBtk->init(a_this->mpModel->getModelData(), btk, TRUE, + J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) + { + return 0; + } + + a_this->mpBgW = new dBgW(); + if (a_this->mpBgW == NULL) { + return 0; + } + + cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("S_YOGAN", 15); + if (a_this->mpBgW->Set(dzb, dBgW::MOVE_BG_e, &a_this->mBgMtx) == 1) { + return 0; + } + + a_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical); + return 1; } -#pragma pop - -/* 80C9F064-80C9F0AC 0005A4 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/d_a_obj_myogan/d_a_obj_myogan/__dt__12J3DFrameCtrlFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80C9F298-80C9F29C 000010 0004+00 1/1 0/0 0/0 .rodata @3966 */ -SECTION_RODATA static f32 const lit_3966 = 65536.0f; -COMPILER_STRIP_GATE(0x80C9F298, &lit_3966); - -/* 80C9F29C-80C9F2A0 000014 0004+00 1/1 0/0 0/0 .rodata @3967 */ -SECTION_RODATA static f32 const lit_3967 = 1150.0f; -COMPILER_STRIP_GATE(0x80C9F29C, &lit_3967); /* 80C9F0AC-80C9F1F0 0005EC 0144+00 1/0 0/0 0/0 .text daObj_Myogan_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Myogan_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/daObj_Myogan_Create__FP10fopAc_ac_c.s" +static int daObj_Myogan_Create(fopAc_ac_c* i_this) { + fopAcM_SetupActor(i_this, obj_myogan_class); + obj_myogan_class* a_this = (obj_myogan_class*)i_this; + + int phase = dComIfG_resLoad(&a_this->mPhase, "S_YOGAN"); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x4B000)) { + return cPhs_ERROR_e; + } + + if (dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) { + return cPhs_ERROR_e; + } + + if (!initialized) { + a_this->mInitialized = 1; + initialized = true; + l_HIO.field_0x4 = -1; + } + + a_this->field_0x57c = cM_rndF(65536.0f); + + if (dComIfGs_isStageMiddleBoss()) { + a_this->mAction = 1; + a_this->current.pos.y = 1150.0f; + } + + daObj_Myogan_Execute(a_this); + } + + return phase; } -#pragma pop -/* 80C9F1F0-80C9F238 000730 0048+00 2/1 0/0 0/0 .text __dt__18daObj_Myogan_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daObj_Myogan_HIO_c::~daObj_Myogan_HIO_c() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/__dt__18daObj_Myogan_HIO_cFv.s" -} -#pragma pop +/* 80C9F2A8-80C9F2C8 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Myogan_Method */ +static actor_method_class l_daObj_Myogan_Method = { + (process_method_func)daObj_Myogan_Create, (process_method_func)daObj_Myogan_Delete, + (process_method_func)daObj_Myogan_Execute, (process_method_func)daObj_Myogan_IsDelete, + (process_method_func)daObj_Myogan_Draw, +}; -/* 80C9F238-80C9F274 000778 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_myogan_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_a_obj_myogan_cpp() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_myogan/d_a_obj_myogan/__sinit_d_a_obj_myogan_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C9F238, __sinit_d_a_obj_myogan_cpp); -#pragma pop - -/* 80C9F2A0-80C9F2A0 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80C9F2C8-80C9F2F8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_MYOGAN */ +extern actor_process_profile_definition g_profile_OBJ_MYOGAN = { + -3, + 3, + -3, + PROC_OBJ_MYOGAN, + &g_fpcLf_Method.mBase, + sizeof(obj_myogan_class), + 0, + 0, + &g_fopAc_Method.base, + 52, + &l_daObj_Myogan_Method, + 0x44000, + 0, + 14, +}; diff --git a/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.cpp b/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.cpp index b63bf16b76..33b7b08b1f 100644 --- a/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.cpp +++ b/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.cpp @@ -1,184 +1,28 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_mirror_6pole -// +/** + * d_a_obj_mirror_6pole.cpp + * Mirror Chamber Sage Poles + */ #include "rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole.h" -#include "dol2asm.h" - -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct cXyz {}; - -struct mDoMtx_stack_c { - /* 8000CD64 */ void transS(cXyz 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 daObjMirror6Pole_c { - /* 80C95E18 */ void initWait(); - /* 80C95E2C */ void executeWait(); - /* 80C95E88 */ void initDemo(); - /* 80C95E8C */ void executeDemo(); - /* 80C95EFC */ void setBaseMtx(); - /* 80C95F50 */ void createHeapCallBack(fopAc_ac_c*); - /* 80C95F70 */ void CreateHeap(); - - static u8 ActionTable[48]; -}; - -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 J3DModel {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 80C961D8 */ ~J3DFrameCtrl(); -}; - -// -// Forward References: -// - -extern "C" void initWait__18daObjMirror6Pole_cFv(); -extern "C" void executeWait__18daObjMirror6Pole_cFv(); -extern "C" void initDemo__18daObjMirror6Pole_cFv(); -extern "C" void executeDemo__18daObjMirror6Pole_cFv(); -extern "C" void setBaseMtx__18daObjMirror6Pole_cFv(); -extern "C" void createHeapCallBack__18daObjMirror6Pole_cFP10fopAc_ac_c(); -extern "C" void CreateHeap__18daObjMirror6Pole_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daObjMirror6Pole_Create__FP10fopAc_ac_c(); -extern "C" static void daObjMirror6Pole_Delete__FP18daObjMirror6Pole_c(); -extern "C" static void daObjMirror6Pole_Execute__FP18daObjMirror6Pole_c(); -extern "C" static void daObjMirror6Pole_Draw__FP18daObjMirror6Pole_c(); -extern "C" static bool daObjMirror6Pole_IsDelete__FP18daObjMirror6Pole_c(); -extern "C" void __sinit_d_a_obj_mirror_6pole_cpp(); -extern "C" extern char const* const d_a_obj_mirror_6pole__stringBase0; -extern "C" u8 ActionTable__18daObjMirror6Pole_c[48]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -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 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 settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void PSMTXCopy(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -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" 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: -// - -/* ############################################################################################## */ -/* 80C96510-80C96514 000000 0004+00 2/2 0/0 0/0 .rodata @3630 */ -SECTION_RODATA static u8 const lit_3630[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C96510, &lit_3630); +#include "JSystem/JKernel/JKRHeap.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" /* 80C95E18-80C95E2C 000078 0014+00 1/0 0/0 0/0 .text initWait__18daObjMirror6Pole_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::initWait() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/initWait__18daObjMirror6Pole_cFv.s" +void daObjMirror6Pole_c::initWait() { + mpBck->setPlaySpeed(0.0f); } -#pragma pop - -/* ############################################################################################## */ -/* 80C96520-80C96520 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C96520 = "MR-6Pole"; -#pragma pop /* 80C9652C-80C96538 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80C96538-80C9654C 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ +// unused data? #pragma push #pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -189,228 +33,171 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80C9654C-80C96550 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_mirror_6pole__stringBase0; - -/* 80C96550-80C9655C -00001 000C+00 0/1 0/0 0/0 .data @3617 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3617[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)initWait__18daObjMirror6Pole_cFv, -}; -#pragma pop - -/* 80C9655C-80C96568 -00001 000C+00 0/1 0/0 0/0 .data @3618 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3618[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)executeWait__18daObjMirror6Pole_cFv, -}; -#pragma pop - -/* 80C96568-80C96574 -00001 000C+00 0/1 0/0 0/0 .data @3619 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3619[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)initDemo__18daObjMirror6Pole_cFv, -}; -#pragma pop - -/* 80C96574-80C96580 -00001 000C+00 0/1 0/0 0/0 .data @3620 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3620[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)executeDemo__18daObjMirror6Pole_cFv, -}; -#pragma pop +static char* l_arcName = "MR-6Pole"; /* 80C96580-80C965B0 000054 0030+00 3/4 0/0 0/0 .data ActionTable__18daObjMirror6Pole_c */ -SECTION_DATA u8 daObjMirror6Pole_c::ActionTable[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static actionFunc daObjMirror6Pole_c::ActionTable[][2] = { + {&daObjMirror6Pole_c::initWait, &daObjMirror6Pole_c::executeWait}, + {&daObjMirror6Pole_c::initDemo, &daObjMirror6Pole_c::executeDemo}, }; /* 80C95E2C-80C95E88 00008C 005C+00 1/0 0/0 0/0 .text executeWait__18daObjMirror6Pole_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::executeWait() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/executeWait__18daObjMirror6Pole_cFv.s" +void daObjMirror6Pole_c::executeWait() { + if (i_dComIfGp_event_runCheck()) { + setAction(MODE_DEMO_e); + } } -#pragma pop /* 80C95E88-80C95E8C 0000E8 0004+00 1/0 0/0 0/0 .text initDemo__18daObjMirror6Pole_cFv */ -void daObjMirror6Pole_c::initDemo() { - /* empty function */ -} +void daObjMirror6Pole_c::initDemo() {} /* 80C95E8C-80C95EFC 0000EC 0070+00 1/0 0/0 0/0 .text executeDemo__18daObjMirror6Pole_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::executeDemo() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/executeDemo__18daObjMirror6Pole_cFv.s" +void daObjMirror6Pole_c::executeDemo() { + if (!i_dComIfGp_event_runCheck()) { + setAction(MODE_WAIT_e); + } + + setBaseMtx(); } -#pragma pop /* 80C95EFC-80C95F50 00015C 0054+00 1/1 0/0 0/0 .text setBaseMtx__18daObjMirror6Pole_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::setBaseMtx() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/setBaseMtx__18daObjMirror6Pole_cFv.s" +void daObjMirror6Pole_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + + mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); } -#pragma pop /* 80C95F50-80C95F70 0001B0 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__18daObjMirror6Pole_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::createHeapCallBack(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/func_80C95F50.s" +int daObjMirror6Pole_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } -#pragma pop - -/* ############################################################################################## */ -/* 80C96514-80C96518 000004 0004+00 1/1 0/0 0/0 .rodata @3755 */ -SECTION_RODATA static f32 const lit_3755 = 1.0f; -COMPILER_STRIP_GATE(0x80C96514, &lit_3755); - -/* 80C96518-80C96520 000008 0008+00 1/1 0/0 0/0 .rodata @3757 */ -SECTION_RODATA static u8 const lit_3757[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C96518, &lit_3757); - -/* 80C965B0-80C965D0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirror6Pole_Method */ -SECTION_DATA static void* l_daObjMirror6Pole_Method[8] = { - (void*)daObjMirror6Pole_Create__FP10fopAc_ac_c, - (void*)daObjMirror6Pole_Delete__FP18daObjMirror6Pole_c, - (void*)daObjMirror6Pole_Execute__FP18daObjMirror6Pole_c, - (void*)daObjMirror6Pole_IsDelete__FP18daObjMirror6Pole_c, - (void*)daObjMirror6Pole_Draw__FP18daObjMirror6Pole_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 80C965D0-80C96600 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Mirror6Pole */ -SECTION_DATA extern void* g_profile_Obj_Mirror6Pole[12] = { - (void*)0xFFFFFFFD, (void*)0x0003FFFD, - (void*)0x00B20000, (void*)&g_fpcLf_Method, - (void*)0x00000580, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x02AA0000, (void*)&l_daObjMirror6Pole_Method, - (void*)0x00040000, (void*)0x000E0000, -}; - -/* 80C96600-80C9660C 0000D4 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, -}; /* 80C95F70-80C961D8 0001D0 0268+00 1/1 0/0 0/0 .text CreateHeap__18daObjMirror6Pole_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMirror6Pole_c::CreateHeap() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/CreateHeap__18daObjMirror6Pole_cFv.s" -} -#pragma pop +int daObjMirror6Pole_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 7); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } -/* 80C961D8-80C96220 000438 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_6pole/d_a_obj_mirror_6pole/__dt__12J3DFrameCtrlFv.s" + J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 4); + mpBck = new mDoExt_bckAnm(); + + 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()); + } + + return 1; +} + +int daObjMirror6Pole_c::create() { + fopAcM_SetupActor(this, daObjMirror6Pole_c); + + int phase = dComIfG_resLoad(&mPhase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x1C00)) { + return cPhs_ERROR_e; + } + + create_init(); + } + + return phase; } -#pragma pop /* 80C96220-80C96328 000480 0108+00 1/0 0/0 0/0 .text daObjMirror6Pole_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMirror6Pole_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/daObjMirror6Pole_Create__FP10fopAc_ac_c.s" +static int daObjMirror6Pole_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} + +daObjMirror6Pole_c::~daObjMirror6Pole_c() { + dComIfG_resDelete(&mPhase, l_arcName); } -#pragma pop /* 80C96328-80C96378 000588 0050+00 1/0 0/0 0/0 .text * daObjMirror6Pole_Delete__FP18daObjMirror6Pole_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMirror6Pole_Delete(daObjMirror6Pole_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/daObjMirror6Pole_Delete__FP18daObjMirror6Pole_c.s" +static int daObjMirror6Pole_Delete(daObjMirror6Pole_c* i_this) { + i_this->~daObjMirror6Pole_c(); + return 1; +} + +int daObjMirror6Pole_c::execute() { + callExecute(); + mpBck->play(); + return 1; } -#pragma pop /* 80C96378-80C963BC 0005D8 0044+00 1/0 0/0 0/0 .text * daObjMirror6Pole_Execute__FP18daObjMirror6Pole_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMirror6Pole_Execute(daObjMirror6Pole_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/daObjMirror6Pole_Execute__FP18daObjMirror6Pole_c.s" +static int daObjMirror6Pole_Execute(daObjMirror6Pole_c* i_this) { + return i_this->execute(); +} + +int daObjMirror6Pole_c::draw() { + g_env_light.settingTevStruct(0x10, ¤t.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 /* 80C963BC-80C9648C 00061C 00D0+00 1/0 0/0 0/0 .text * daObjMirror6Pole_Draw__FP18daObjMirror6Pole_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMirror6Pole_Draw(daObjMirror6Pole_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/daObjMirror6Pole_Draw__FP18daObjMirror6Pole_c.s" +static int daObjMirror6Pole_Draw(daObjMirror6Pole_c* i_this) { + return i_this->draw(); } -#pragma pop /* 80C9648C-80C96494 0006EC 0008+00 1/0 0/0 0/0 .text * daObjMirror6Pole_IsDelete__FP18daObjMirror6Pole_c */ -static bool daObjMirror6Pole_IsDelete(daObjMirror6Pole_c* param_0) { - return true; +static int daObjMirror6Pole_IsDelete(daObjMirror6Pole_c* i_this) { + return 1; } -/* 80C96494-80C96504 0006F4 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_mirror_6pole_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_a_obj_mirror_6pole_cpp() { - nofralloc -#include "asm/rel/d/a/obj/mirror/d_a_obj_mirror_6pole/d_a_obj_mirror_6pole/__sinit_d_a_obj_mirror_6pole_cpp.s" -} -#pragma pop +/* 80C965B0-80C965D0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirror6Pole_Method */ +static actor_method_class l_daObjMirror6Pole_Method = { + (process_method_func)daObjMirror6Pole_Create, (process_method_func)daObjMirror6Pole_Delete, + (process_method_func)daObjMirror6Pole_Execute, (process_method_func)daObjMirror6Pole_IsDelete, + (process_method_func)daObjMirror6Pole_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C96494, __sinit_d_a_obj_mirror_6pole_cpp); -#pragma pop - -/* 80C96520-80C96520 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80C965D0-80C96600 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Mirror6Pole */ +extern actor_process_profile_definition g_profile_Obj_Mirror6Pole = { + -3, + 3, + -3, + PROC_Obj_Mirror6Pole, + &g_fpcLf_Method.mBase, + sizeof(daObjMirror6Pole_c), + 0, + 0, + &g_fopAc_Method.base, + 682, + &l_daObjMirror6Pole_Method, + 0x40000, + 0, + 14, +}; diff --git a/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.cpp b/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.cpp index 1a0c04e667..1218079c22 100644 --- a/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.cpp +++ b/rel/d/a/obj/mirror/d_a_obj_mirror_sand/d_a_obj_mirror_sand.cpp @@ -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(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, ¤t.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(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, +}; diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp index c5c1307860..e32ac23b95 100644 --- a/src/d/bg/d_bg_w.cpp +++ b/src/d/bg/d_bg_w.cpp @@ -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 */