diff options
Diffstat (limited to 'rel')
| -rw-r--r-- | rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.cpp | 1116 |
1 files changed, 356 insertions, 760 deletions
diff --git a/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.cpp b/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.cpp index 0d580c5426..4e49b65e24 100644 --- a/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.cpp +++ b/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.cpp @@ -4,347 +4,64 @@ // #include "rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "MSL_C/MSL_Common/Src/printf.h" +#include "SSystem/SComponent/c_math.h" +#include "d/a/d_a_player.h" +#include "d/d_door_param2.h" +#include "d/d_procname.h" #include "dol2asm.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - /* 8000CCC8 */ void push(); - /* 8000CD14 */ void pop(); - /* 8000CD9C */ void transM(f32, f32, f32); - - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct door_param2_c { - /* 8003A194 */ void getDoorModel(fopAc_ac_c*); - /* 8003A1B8 */ void getFRoomNo(fopAc_ac_c*); - /* 8003A224 */ void getExitNo(fopAc_ac_c*); -}; - -struct daDbDoor00_c { - /* 8045D470 */ void getAlwaysArcName(); - /* 8045D480 */ void getDzb(); - /* 8045D490 */ void getDummyBmdName(); - /* 8045D4A0 */ void getBmdArcName(); - /* 8045D4B0 */ void getBmdName(); - /* 8045D504 */ void getDoorModelData(); - /* 8045D594 */ void CreateHeap(); - /* 8045D744 */ void calcMtx(); - /* 8045D8F4 */ void CreateInit(); - /* 8045D9A8 */ void create(); - /* 8045DA68 */ void getDemoAction(); - /* 8045DAB0 */ void demoProc(); - /* 8045DE44 */ void checkArea(); - /* 8045DF70 */ bool checkUnlock(); - /* 8045DF78 */ void actionWait(); - /* 8045DF9C */ void actionLockWait(); - /* 8045E000 */ void actionLockOff(); - /* 8045E094 */ void actionLockDemo(); - /* 8045E108 */ void actionCloseWait(); - /* 8045E1C8 */ void actionOpen(); - /* 8045E1EC */ void execute(); - /* 8045E2DC */ void checkDraw(); - /* 8045E31C */ void draw(); - /* 8045E428 */ void Delete(); -}; - -struct dStage_roomControl_c { - /* 800244E8 */ void checkRoomDisp(int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; -}; - -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 { - /* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int); -}; - -struct dEvt_info_c { - /* 80043428 */ void setEventName(char*); -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); -}; - -struct dEvent_manager_c { - /* 80047ADC */ void endCheckOld(char const*); - /* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int); - /* 80047D4C */ void getIsAddvance(int); - /* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int); - /* 800480EC */ void getMySubstanceP(int, char const*, int); - /* 8004817C */ void cutEnd(int); - /* 800483C4 */ void setGoal(cXyz*); -}; - -struct dBgW_Base {}; - -struct dBgW { - /* 8007B970 */ dBgW(); - /* 8007B9C0 */ void Move(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JUTNameTab { - /* 802DEA58 */ void getIndex(char const*) const; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DModel {}; - -struct J3DJoint {}; - -// -// Forward References: -// - -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" void getAlwaysArcName__12daDbDoor00_cFv(); -extern "C" void getDzb__12daDbDoor00_cFv(); -extern "C" void getDummyBmdName__12daDbDoor00_cFv(); -extern "C" void getBmdArcName__12daDbDoor00_cFv(); -extern "C" void getBmdName__12daDbDoor00_cFv(); -extern "C" void getDoorModelData__12daDbDoor00_cFv(); -extern "C" static void CheckCreateHeap__FP10fopAc_ac_c(); -extern "C" void CreateHeap__12daDbDoor00_cFv(); -extern "C" void calcMtx__12daDbDoor00_cFv(); -extern "C" void CreateInit__12daDbDoor00_cFv(); -extern "C" void create__12daDbDoor00_cFv(); -extern "C" void getDemoAction__12daDbDoor00_cFv(); -extern "C" void demoProc__12daDbDoor00_cFv(); -extern "C" void checkArea__12daDbDoor00_cFv(); -extern "C" bool checkUnlock__12daDbDoor00_cFv(); -extern "C" void actionWait__12daDbDoor00_cFv(); -extern "C" void actionLockWait__12daDbDoor00_cFv(); -extern "C" void actionLockOff__12daDbDoor00_cFv(); -extern "C" void actionLockDemo__12daDbDoor00_cFv(); -extern "C" void actionCloseWait__12daDbDoor00_cFv(); -extern "C" void actionOpen__12daDbDoor00_cFv(); -extern "C" void execute__12daDbDoor00_cFv(); -extern "C" void checkDraw__12daDbDoor00_cFv(); -extern "C" void draw__12daDbDoor00_cFv(); -extern "C" void Delete__12daDbDoor00_cFv(); -extern "C" static void daDbdoor00_Draw__FP12daDbDoor00_c(); -extern "C" static void daDbdoor00_Execute__FP12daDbDoor00_c(); -extern "C" static bool daDbdoor00_IsDelete__FP12daDbDoor00_c(); -extern "C" static void daDbdoor00_Delete__FP12daDbDoor00_c(); -extern "C" static void daDbdoor00_Create__FP10fopAc_ac_c(); extern "C" extern char const* const d_a_door_dbdoor00__stringBase0; -extern "C" extern void* g_profile_DBDOOR[12]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void push__14mDoMtx_stack_cFv(); -extern "C" void pop__14mDoMtx_stack_cFv(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -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 fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderOtherEvent__FP10fopAc_ac_cPCcUsUsUs(); -extern "C" void checkRoomDisp__20dStage_roomControl_cCFi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfG_getStageRes__FPCc(); -extern "C" void getDoorModel__13door_param2_cFP10fopAc_ac_c(); -extern "C" void getFRoomNo__13door_param2_cFP10fopAc_ac_c(); -extern "C" void getExitNo__13door_param2_cFP10fopAc_ac_c(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void setEventName__11dEvt_info_cFPc(); -extern "C" void endCheckOld__16dEvent_manager_cFPCc(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void setGoal__16dEvent_manager_cFP4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -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 __mi__4cXyzCFRC3Vec(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void getIndex__10JUTNameTabCFPCc(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" void sprintf(); -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" extern u8 j3dSys[284]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// /* 8045D378-8045D470 000078 00F8+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void nodeCallBack(J3DJoint* param_0, int param_1) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/nodeCallBack__FP8J3DJointi.s" +static int nodeCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + u16 jointNo = i_joint->getJntNo(); + J3DModel* model = j3dSys.getModel(); + daDbDoor00_c* area = (daDbDoor00_c*)model->getUserArea(); + MTXCopy(model->i_getAnmMtx(jointNo), mDoMtx_stack_c::get()); + if (jointNo == area->field_0x5c0 && area->field_0x585 == 1) { + mDoMtx_stack_c::YrotM(-area->field_0x58a); + } else if (jointNo == area->field_0x5c1 && area->field_0x585 == 0) { + mDoMtx_stack_c::YrotM(area->field_0x58a); + } + model->i_setAnmMtx(jointNo, mDoMtx_stack_c::get()); + mDoMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } + return 1; } -#pragma pop -/* ############################################################################################## */ /* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8045E56C = "door-pushDouble_"; -SECTION_DEAD static char const* const stringBase_8045E57D = "static"; #pragma pop /* 8045D470-8045D480 000170 0010+00 3/3 0/0 0/0 .text getAlwaysArcName__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getAlwaysArcName() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getAlwaysArcName__12daDbDoor00_cFv.s" +char* daDbDoor00_c::getAlwaysArcName() { + return "static"; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E584 = "door-pushDouble.dzb"; -#pragma pop /* 8045D480-8045D490 000180 0010+00 1/1 0/0 0/0 .text getDzb__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getDzb() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getDzb__12daDbDoor00_cFv.s" +char* daDbDoor00_c::getDzb() { + return "door-pushDouble.dzb"; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E598 = "door-pushDoubleDummy.bmd"; -#pragma pop /* 8045D490-8045D4A0 000190 0010+00 1/1 0/0 0/0 .text getDummyBmdName__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getDummyBmdName() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getDummyBmdName__12daDbDoor00_cFv.s" +char* daDbDoor00_c::getDummyBmdName() { + return "door-pushDoubleDummy.bmd"; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E5B1 = "DbDoor0"; -#pragma pop /* 8045D4A0-8045D4B0 0001A0 0010+00 3/3 0/0 0/0 .text getBmdArcName__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getBmdArcName() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getBmdArcName__12daDbDoor00_cFv.s" +char* daDbDoor00_c::getBmdArcName() { + return "DbDoor0"; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E5B9 = "%s%02d.bmd"; -#pragma pop /* 8045E664-8045E670 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, }; @@ -364,538 +81,417 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { /* 8045E684-8045E688 -00001 0004+00 1/1 0/0 0/0 .data l_bmd_base_name */ SECTION_DATA static void* l_bmd_base_name = (void*)&d_a_door_dbdoor00__stringBase0; -/* 8045E7B0-8045E7D0 000000 0020+00 1/1 0/0 0/0 .bss l_bmdName$3699 */ -static u8 l_bmdName[32]; - /* 8045D4B0-8045D504 0001B0 0054+00 1/1 0/0 0/0 .text getBmdName__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getBmdName() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getBmdName__12daDbDoor00_cFv.s" +char* daDbDoor00_c::getBmdName() { + static char l_bmdName[32]; + sprintf(l_bmdName, "%s%02d.bmd", l_bmd_base_name, door_param2_c::getDoorModel(this)); + return l_bmdName; } -#pragma pop /* 8045D504-8045D574 000204 0070+00 1/1 0/0 0/0 .text getDoorModelData__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getDoorModelData() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getDoorModelData__12daDbDoor00_cFv.s" +J3DModelData* daDbDoor00_c::getDoorModelData() { + J3DModelData* res = (J3DModelData*)dComIfG_getStageRes(getBmdName()); + if (res == NULL) { + res = (J3DModelData*)dComIfG_getObjectRes(getBmdArcName(), getBmdName()); + } + return res; } -#pragma pop /* 8045D574-8045D594 000274 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CheckCreateHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/CheckCreateHeap__FP10fopAc_ac_c.s" +static int CheckCreateHeap(fopAc_ac_c* i_this) { + return static_cast<daDbDoor00_c*>(i_this)->CreateHeap(); } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E5C4 = "DbDoor00_L"; -SECTION_DEAD static char const* const stringBase_8045E5CF = "DbDoor00_R"; -#pragma pop /* 8045D594-8045D744 000294 01B0+00 1/1 0/0 0/0 .text CreateHeap__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::CreateHeap() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/CreateHeap__12daDbDoor00_cFv.s" +int daDbDoor00_c::CreateHeap() { + J3DModelData* modelData = + (J3DModelData*)dComIfG_getObjectRes(getAlwaysArcName(), getDummyBmdName()); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + modelData = getDoorModelData(); + mpModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel2 == NULL) { + return 0; + } + + field_0x5c0 = modelData->getJointName()->getIndex("DbDoor00_L"); + field_0x5c1 = modelData->getJointName()->getIndex("DbDoor00_R"); + modelData = mpModel2->getModelData(); + J3DJoint* nodePointerL = modelData->getJointNodePointer(field_0x5c0); + J3DJoint* nodePointerR = modelData->getJointNodePointer(field_0x5c1); + nodePointerL->setCallBack(nodeCallBack); + nodePointerR->setCallBack(nodeCallBack); + mpModel2->setUserArea((u32)this); + + mpBgW = new dBgW(); + cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(getAlwaysArcName(), getDzb()); + if (dzb == NULL) { + return 0; + } + calcMtx(); + return mpBgW->Set(dzb, 1, &mpModel->getBaseTRMtx()) != 1 ? 1 : 0; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E534-8045E538 000000 0004+00 3/3 0/0 0/0 .rodata @3806 */ -SECTION_RODATA static u8 const lit_3806[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8045E534, &lit_3806); - -/* 8045E538-8045E53C 000004 0004+00 0/1 0/0 0/0 .rodata @3807 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3807 = -150.0f; -COMPILER_STRIP_GATE(0x8045E538, &lit_3807); -#pragma pop - -/* 8045E53C-8045E540 000008 0004+00 0/1 0/0 0/0 .rodata @3808 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3808 = -400.0f; -COMPILER_STRIP_GATE(0x8045E53C, &lit_3808); -#pragma pop - -/* 8045E540-8045E544 00000C 0004+00 0/1 0/0 0/0 .rodata @3809 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3809 = 80.0f; -COMPILER_STRIP_GATE(0x8045E540, &lit_3809); -#pragma pop - -/* 8045E544-8045E548 000010 0004+00 0/1 0/0 0/0 .rodata @3810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3810 = 70.0f; -COMPILER_STRIP_GATE(0x8045E544, &lit_3810); -#pragma pop - -/* 8045E548-8045E54C 000014 0004+00 0/1 0/0 0/0 .rodata @3811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3811 = -80.0f; -COMPILER_STRIP_GATE(0x8045E548, &lit_3811); -#pragma pop /* 8045D744-8045D8F4 000444 01B0+00 4/4 0/0 0/0 .text calcMtx__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::calcMtx() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/calcMtx__12daDbDoor00_cFv.s" +void daDbDoor00_c::calcMtx() { + cXyz xyz; + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(orig.angle.y); + mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); + mpModel2->i_setBaseTRMtx(mDoMtx_stack_c::get()); + xyz.set(0.0f, 0.0f, -150.0f); + mDoMtx_stack_c::multVec(&xyz, &field_0x5a8); + xyz.set(0.0f, 0.0f, -400.0f); + mDoMtx_stack_c::multVec(&xyz, &field_0x5b4); + + if (field_0x585 == 0) { + mDoMtx_stack_c::push(); + mDoMtx_stack_c::YrotS(-field_0x58a); + mDoMtx_stack_c::transM(80.0f, 0.0f, 70.0f); + mDoMtx_stack_c::multVecZero(&field_0x59c); + mDoMtx_stack_c::pop(); + mDoMtx_stack_c::multVec(&field_0x59c, &field_0x59c); + } + + if (field_0x585 == 1) { + mDoMtx_stack_c::push(); + mDoMtx_stack_c::YrotS(field_0x58a); + mDoMtx_stack_c::transM(-80.0f, 0.0f, 70.0f); + mDoMtx_stack_c::multVecZero(&field_0x59c); + mDoMtx_stack_c::pop(); + mDoMtx_stack_c::multVec(&field_0x59c, &field_0x59c); + } } -#pragma pop - -/* ############################################################################################## */ -/* 8045E54C-8045E550 000018 0004+00 1/1 0/0 0/0 .rodata @3826 */ -SECTION_RODATA static f32 const lit_3826 = 250.0f; -COMPILER_STRIP_GATE(0x8045E54C, &lit_3826); /* 8045D8F4-8045D9A8 0005F4 00B4+00 1/1 0/0 0/0 .text CreateInit__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::CreateInit() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/CreateInit__12daDbDoor00_cFv.s" +int daDbDoor00_c::CreateInit() { + s32 fRoomNo = door_param2_c::getFRoomNo(this); + if (fopAcM_GetRoomNo(this) == -1) { + fopAcM_SetRoomNo(this, fRoomNo); + mTevStr.mRoomNo = current.roomNo; + } + dComIfG_Bgsp().Regist(mpBgW, this); + field_0x584 = 1; + setAction(4); + field_0x594 = 0x1e; + mAttentionInfo.mPosition.y += 250.0f; + mEyePos.y += 250.0f; + mAttentionInfo.mFlags = 0x20; + calcMtx(); + mpBgW->Move(); + return 1; } -#pragma pop /* 8045D9A8-8045DA68 0006A8 00C0+00 1/1 0/0 0/0 .text create__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::create() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/create__12daDbDoor00_cFv.s" +int daDbDoor00_c::create() { + fopAcM_SetupActor(this, daDbDoor00_c); + + int phase = dComIfG_resLoad(&mPhaseReq2, getAlwaysArcName()); + if (phase != cPhs_COMPLEATE_e) { + return phase; + } + phase = dComIfG_resLoad(&mPhaseReq, getBmdArcName()); + if (phase != cPhs_COMPLEATE_e) { + return phase; + } + if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x8200)) { + return cPhs_ERROR_e; + } + CreateInit(); + return cPhs_COMPLEATE_e; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E5DA = "WAIT"; -SECTION_DEAD static char const* const stringBase_8045E5DF = "SET_START"; -SECTION_DEAD static char const* const stringBase_8045E5E9 = "SET_ANGLE"; -SECTION_DEAD static char const* const stringBase_8045E5F3 = "END"; -SECTION_DEAD static char const* const stringBase_8045E5F7 = "OPEN"; -SECTION_DEAD static char const* const stringBase_8045E5FC = "STOP_OPEN"; -SECTION_DEAD static char const* const stringBase_8045E606 = "SET_GOAL"; -SECTION_DEAD static char const* const stringBase_8045E60F = "SET_GOAL2"; -SECTION_DEAD static char const* const stringBase_8045E619 = "ADJUSTMENT"; -#pragma pop - -/* 8045E688-8045E6AC -00001 0024+00 1/1 0/0 0/0 .data action_table$3865 */ -SECTION_DATA static void* action_table[9] = { - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x6E), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x73), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x7D), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x87), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x8B), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x90), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0x9A), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0xA3), - (void*)(((char*)&d_a_door_dbdoor00__stringBase0) + 0xAD), -}; /* 8045DA68-8045DAB0 000768 0048+00 1/1 0/0 0/0 .text getDemoAction__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::getDemoAction() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/getDemoAction__12daDbDoor00_cFv.s" +int daDbDoor00_c::getDemoAction() { + static char* action_table[9] = { + "WAIT", "SET_START", "SET_ANGLE", "END", "OPEN", + "STOP_OPEN", "SET_GOAL", "SET_GOAL2", "ADJUSTMENT", + }; + return dComIfGp_evmng_getMyActIdx(field_0x598, action_table, ARRAY_SIZE(action_table), 0, 0); } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E624 = "Timer"; -#pragma pop - -/* 8045E6AC-8045E6D0 -00001 0024+00 1/1 0/0 0/0 .data @3957 */ -SECTION_DATA static void* lit_3957[9] = { - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x1A4), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x74), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0xA4), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x1A4), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0xB8), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x1A4), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x118), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x140), - (void*)(((char*)demoProc__12daDbDoor00_cFv) + 0x168), -}; /* 8045DAB0-8045DE44 0007B0 0394+00 5/4 0/0 0/0 .text demoProc__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::demoProc() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/demoProc__12daDbDoor00_cFv.s" +void daDbDoor00_c::demoProc() { + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(LINK_PTR); + s16 doorAngle; + cXyz xyz; + s32 demoAction = getDemoAction(); + + if (dComIfGp_evmng_getIsAddvance(field_0x598) != 0) { + switch (demoAction) { + case 1: + calcMtx(); + xyz = field_0x59c; + dComIfGp_evmng_setGoal(&xyz); + break; + case 2: + doorAngle = current.angle.y + 0x7fff; + player->changeDemoMoveAngle(doorAngle); + break; + case 4: + field_0x58c = 0; + field_0x5c2 = 0x1e; + fopAcM_seStart(this, Z2SE_OBJ_OPEN_ZELDAROOM_DOOR, 0); + break; + case 6: + xyz = field_0x5a8; + dComIfGp_evmng_setGoal(&xyz); + break; + case 7: + xyz = field_0x5b4; + dComIfGp_evmng_setGoal(&xyz); + break; + case 8: + calcMtx(); + field_0x590 = 0; + int* integerP = dComIfGp_evmng_getMyIntegerP(field_0x598, "Timer"); + if (integerP != NULL) { + field_0x590 = *integerP; + } + } + } + + switch (demoAction) { + case 4: + if (field_0x58c < 0xfa) { + field_0x58c += 0x32; + } + if (field_0x58a - field_0x58c < -0x1c71) { + field_0x58a = -0x1c71; + dComIfGp_evmng_cutEnd(field_0x598); + } else { + field_0x58a -= field_0x58c; + } + calcMtx(); + if (field_0x585 != 0) { + doorAngle = current.angle.y + 0x7fff - field_0x58a; + + } else { + doorAngle = current.angle.y + 0x7fff + field_0x58a; + } + player->setPlayerPosAndAngle(&field_0x59c, doorAngle, 0); + if (field_0x5c2 == 0) { + daPy_getPlayerActorClass()->onSceneChangeArea(door_param2_c::getExitNo(this), 0xff, + NULL); + } + field_0x5c2--; + case 3: + case 5: + return; + + case 8: + doorAngle = player->shape_angle.y; + cLib_addCalcAngleS2(&doorAngle, current.angle.y + 0x7fff, 10, 0x800); + xyz = player->current.pos; + xyz.x = xyz.x * 0.9f + field_0x59c.x * 0.1f; + xyz.z = xyz.z * 0.9f + field_0x59c.z * 0.1f; + player->setPlayerPosAndAngle(&xyz, doorAngle, 0); + if (field_0x590 > 0) { + field_0x590--; + return; + } + dComIfGp_evmng_cutEnd(field_0x598); + return; + } + dComIfGp_evmng_cutEnd(field_0x598); } -#pragma pop - -/* ############################################################################################## */ -/* 8045E550-8045E554 00001C 0004+00 0/0 0/0 0/0 .rodata @3953 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3953 = 1.0f; -COMPILER_STRIP_GATE(0x8045E550, &lit_3953); -#pragma pop - -/* 8045E554-8045E558 000020 0004+00 0/0 0/0 0/0 .rodata @3954 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3954 = -1.0f; -COMPILER_STRIP_GATE(0x8045E554, &lit_3954); -#pragma pop - -/* 8045E558-8045E55C 000024 0004+00 0/0 0/0 0/0 .rodata @3955 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3955 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8045E558, &lit_3955); -#pragma pop - -/* 8045E55C-8045E560 000028 0004+00 0/0 0/0 0/0 .rodata @3956 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3956 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8045E55C, &lit_3956); -#pragma pop - -/* 8045E560-8045E564 00002C 0004+00 0/1 0/0 0/0 .rodata @4032 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4032 = 160.0f; -COMPILER_STRIP_GATE(0x8045E560, &lit_4032); -#pragma pop - -/* 8045E564-8045E568 000030 0004+00 0/1 0/0 0/0 .rodata @4033 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4033 = 200.0f; -COMPILER_STRIP_GATE(0x8045E564, &lit_4033); -#pragma pop - -/* 8045E568-8045E56C 000034 0004+00 0/1 0/0 0/0 .rodata @4034 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4034 = -200.0f; -COMPILER_STRIP_GATE(0x8045E568, &lit_4034); -#pragma pop /* 8045DE44-8045DF70 000B44 012C+00 1/1 0/0 0/0 .text checkArea__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::checkArea() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/checkArea__12daDbDoor00_cFv.s" +int daDbDoor00_c::checkArea() { + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(LINK_PTR); + cXyz sub = player->current.pos - orig.pos; + cXyz area = sub; + + area.x = sub.z * cM_ssin(current.angle.y) - sub.x * cM_scos(current.angle.y); + area.z = sub.z * cM_scos(current.angle.y) + sub.x * cM_ssin(current.angle.y); + + if (area.z > 160.0f) { + return 0; + } + if (area.x > 200.0f || area.x < -200.0f) { + return 0; + } + if (fopAcM_seenActorAngleY(player, this) > 0x3000) { + return 0; + } + if (area.x > 0.0f) { + field_0x585 = 1; + } else { + field_0x585 = 0; + } + return 1; } -#pragma pop /* 8045DF70-8045DF78 000C70 0008+00 1/1 0/0 0/0 .text checkUnlock__12daDbDoor00_cFv */ -bool daDbDoor00_c::checkUnlock() { - return true; +int daDbDoor00_c::checkUnlock() { + return 1; } /* 8045DF78-8045DF9C 000C78 0024+00 1/0 0/0 0/0 .text actionWait__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionWait() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionWait__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionWait() { + calcMtx(); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E62A = "DBDOOR00_STOP_OPEN"; -#pragma pop /* 8045DF9C-8045E000 000C9C 0064+00 1/0 0/0 0/0 .text actionLockWait__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionLockWait() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionLockWait__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionLockWait() { + if (checkUnlock() != 0) { + setAction(2); + fopAcM_orderOtherEvent(this, "DBDOOR00_STOP_OPEN", 0xffff, 1, 0); + } + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E63D = "DOUBLE_DOOR"; -#pragma pop /* 8045E000-8045E094 000D00 0094+00 1/0 0/0 0/0 .text actionLockOff__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionLockOff() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionLockOff__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionLockOff() { + if (mEvtInfo.i_checkCommandDemoAccrpt()) { + field_0x598 = i_dComIfGp_evmng_getMyStaffId("DOUBLE_DOOR", NULL, 0); + demoProc(); + setAction(3); + } else { + fopAcM_orderOtherEvent(this, "DBDOOR00_STOP_OPEN", 0xffff, 1, 0); + } + return 1; } -#pragma pop /* 8045E094-8045E108 000D94 0074+00 1/0 0/0 0/0 .text actionLockDemo__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionLockDemo() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionLockDemo__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionLockDemo() { + if (dComIfGp_evmng_endCheck("DBDOOR00_STOP_OPEN")) { + i_dComIfGp_event_reset(); + setAction(4); + } else { + demoProc(); + } + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8045E649 = "DEFAULT_DOUBLE_DOOR_OPEN"; -#pragma pop /* 8045E108-8045E1C8 000E08 00C0+00 1/0 0/0 0/0 .text actionCloseWait__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionCloseWait() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionCloseWait__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionCloseWait() { + if (mEvtInfo.i_checkCommandDoor()) { + field_0x598 = i_dComIfGp_evmng_getMyStaffId("DOUBLE_DOOR", NULL, 0); + demoProc(); + setAction(5); + dComIfG_Bgsp().Release(mpBgW); + field_0x584 = 0; + } else { + if (checkArea() != 0) { + mEvtInfo.setEventName("DEFAULT_DOUBLE_DOOR_OPEN"); + mEvtInfo.i_onCondition(4); + } + } + return 1; } -#pragma pop /* 8045E1C8-8045E1EC 000EC8 0024+00 1/0 0/0 0/0 .text actionOpen__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::actionOpen() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/actionOpen__12daDbDoor00_cFv.s" +int daDbDoor00_c::actionOpen() { + demoProc(); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 8045E6D0-8045E6DC -00001 000C+00 0/1 0/0 0/0 .data @4092 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4092[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E6DC-8045E6E8 -00001 000C+00 0/1 0/0 0/0 .data @4093 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4093[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionLockWait__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E6E8-8045E6F4 -00001 000C+00 0/1 0/0 0/0 .data @4094 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4094[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionLockOff__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E6F4-8045E700 -00001 000C+00 0/1 0/0 0/0 .data @4095 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4095[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionLockDemo__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E700-8045E70C -00001 000C+00 0/1 0/0 0/0 .data @4096 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4096[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionCloseWait__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E70C-8045E718 -00001 000C+00 0/1 0/0 0/0 .data @4097 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4097[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOpen__12daDbDoor00_cFv, -}; -#pragma pop - -/* 8045E718-8045E760 0000B4 0048+00 0/1 0/0 0/0 .data l_action$4091 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_action[72] = { - 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8045E7D0-8045E7D4 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_8045E7D0[4]; /* 8045E1EC-8045E2DC 000EEC 00F0+00 1/1 0/0 0/0 .text execute__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::execute() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/execute__12daDbDoor00_cFv.s" +int daDbDoor00_c::execute() { + typedef int (daDbDoor00_c::*actionFunc)(); + static actionFunc l_action[] = { + &daDbDoor00_c::actionWait, &daDbDoor00_c::actionLockWait, &daDbDoor00_c::actionLockOff, + &daDbDoor00_c::actionLockDemo, &daDbDoor00_c::actionCloseWait, &daDbDoor00_c::actionOpen, + }; + (this->*l_action[mAction])(); + return 1; } -#pragma pop /* 8045E2DC-8045E31C 000FDC 0040+00 1/1 0/0 0/0 .text checkDraw__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::checkDraw() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/checkDraw__12daDbDoor00_cFv.s" +int daDbDoor00_c::checkDraw() { + return dComIfGp_roomControl_checkRoomDisp(fopAcM_GetRoomNo(this)) != 0 ? 1 : 0; } -#pragma pop /* 8045E31C-8045E428 00101C 010C+00 1/1 0/0 0/0 .text draw__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::draw() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/draw__12daDbDoor00_cFv.s" +int daDbDoor00_c::draw() { + if (checkDraw() == 0) { + if (field_0x584 != 0) { + dComIfG_Bgsp().Release(mpBgW); + field_0x584 = 0; + } + return 1; + } + if (field_0x584 == 0) { + dComIfG_Bgsp().Regist(mpBgW, this); + field_0x584 = 1; + } + g_env_light.settingTevStruct(16, ¤t.pos, &mTevStr); + g_env_light.setLightTevColorType_MAJI(mpModel2, &mTevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel2); + dComIfGd_setList(); + return 1; } -#pragma pop /* 8045E428-8045E49C 001128 0074+00 1/1 0/0 0/0 .text Delete__12daDbDoor00_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daDbDoor00_c::Delete() { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/Delete__12daDbDoor00_cFv.s" +int daDbDoor00_c::Delete() { + if (mHeap != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + dComIfG_resDelete(&mPhaseReq, getBmdArcName()); + dComIfG_resDelete(&mPhaseReq2, getAlwaysArcName()); + return 1; } -#pragma pop /* 8045E49C-8045E4BC 00119C 0020+00 1/0 0/0 0/0 .text daDbdoor00_Draw__FP12daDbDoor00_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDbdoor00_Draw(daDbDoor00_c* param_0) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/daDbdoor00_Draw__FP12daDbDoor00_c.s" +static int daDbdoor00_Draw(daDbDoor00_c* i_this) { + return i_this->draw(); } -#pragma pop /* 8045E4BC-8045E4E0 0011BC 0024+00 1/0 0/0 0/0 .text daDbdoor00_Execute__FP12daDbDoor00_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDbdoor00_Execute(daDbDoor00_c* param_0) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/daDbdoor00_Execute__FP12daDbDoor00_c.s" +static int daDbdoor00_Execute(daDbDoor00_c* i_this) { + i_this->execute(); + return 1; } -#pragma pop /* 8045E4E0-8045E4E8 0011E0 0008+00 1/0 0/0 0/0 .text daDbdoor00_IsDelete__FP12daDbDoor00_c */ -static bool daDbdoor00_IsDelete(daDbDoor00_c* param_0) { - return true; +static int daDbdoor00_IsDelete(daDbDoor00_c* i_this) { + return 1; } /* 8045E4E8-8045E50C 0011E8 0024+00 1/0 0/0 0/0 .text daDbdoor00_Delete__FP12daDbDoor00_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDbdoor00_Delete(daDbDoor00_c* param_0) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/daDbdoor00_Delete__FP12daDbDoor00_c.s" +static int daDbdoor00_Delete(daDbDoor00_c* i_this) { + i_this->Delete(); + return 1; } -#pragma pop /* 8045E50C-8045E52C 00120C 0020+00 1/0 0/0 0/0 .text daDbdoor00_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDbdoor00_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/door/d_a_door_dbdoor00/d_a_door_dbdoor00/daDbdoor00_Create__FP10fopAc_ac_c.s" +static int daDbdoor00_Create(fopAc_ac_c* i_this) { + return static_cast<daDbDoor00_c*>(i_this)->create(); } -#pragma pop -/* ############################################################################################## */ /* 8045E760-8045E780 -00001 0020+00 1/0 0/0 0/0 .data l_daDbdoor00_Method */ -SECTION_DATA static void* l_daDbdoor00_Method[8] = { - (void*)daDbdoor00_Create__FP10fopAc_ac_c, - (void*)daDbdoor00_Delete__FP12daDbDoor00_c, - (void*)daDbdoor00_Execute__FP12daDbDoor00_c, - (void*)daDbdoor00_IsDelete__FP12daDbDoor00_c, - (void*)daDbdoor00_Draw__FP12daDbDoor00_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daDbdoor00_Method = { + (process_method_func)daDbdoor00_Create, (process_method_func)daDbdoor00_Delete, + (process_method_func)daDbdoor00_Execute, (process_method_func)daDbdoor00_IsDelete, + (process_method_func)daDbdoor00_Draw, }; /* 8045E780-8045E7B0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_DBDOOR */ -SECTION_DATA extern void* g_profile_DBDOOR[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x02270000, (void*)&g_fpcLf_Method, - (void*)0x000005C4, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x01270000, (void*)&l_daDbdoor00_Method, - (void*)0x00044000, (void*)0x00060000, +extern actor_process_profile_definition g_profile_DBDOOR = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_DBDOOR, // mProcName + &g_fpcLf_Method.mBase, // mSubMtd + sizeof(daDbDoor00_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // mSubMtd + 295, // mPriority + &l_daDbdoor00_Method, // mSubMtd + 0x44000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_6_e, // mCullType }; - -/* 8045E56C-8045E56C 000038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
