diff --git a/config/GZ2E01/rels/d_a_obj_movebox/symbols.txt b/config/GZ2E01/rels/d_a_obj_movebox/symbols.txt index 0f518778041..adf81784503 100644 --- a/config/GZ2E01/rels/d_a_obj_movebox/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_movebox/symbols.txt @@ -174,4 +174,4 @@ sInstance__32JASGlobalInstance<11Z2FxLineMgr> = .bss:0x000013CC; // type:object sInstance__31JASGlobalInstance<10Z2EnvSeMgr> = .bss:0x000013D0; // type:object size:0x4 scope:global sInstance__32JASGlobalInstance<11Z2SpeechMgr> = .bss:0x000013D4; // type:object size:0x4 scope:global sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> = .bss:0x000013D8; // type:object size:0x4 scope:global -lbl_20_bss_13DC = .bss:0x000013DC; // type:object size:0x1 data:byte +init$localstatic4$mode_proc_call__Q212daObjMovebox5Act_cFv = .bss:0x000013DC; // type:object size:0x1 data:byte diff --git a/config/GZ2E01/rels/d_a_obj_zrTurara/symbols.txt b/config/GZ2E01/rels/d_a_obj_zrTurara/symbols.txt index 16e1ade1ee5..570732f0a53 100644 --- a/config/GZ2E01/rels/d_a_obj_zrTurara/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_zrTurara/symbols.txt @@ -45,8 +45,7 @@ mCcDObjInfo__12daZrTurara_c = .rodata:0x00000004; // type:object size:0x30 scope @stringBase0 = .rodata:0x00000060; // type:object size:0xA scope:local data:string_table ...data.0 = .data:0x00000000; // type:label scope:local cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global -@1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_697_data_10 = .data:0x00000010; // type:object size:0x10 +lit_1787 = .data:0x0000000C; // type:object size:0x14 scope:local mCcDCyl__12daZrTurara_c = .data:0x00000020; // type:object size:0x44 scope:global @3916 = .data:0x00000064; // type:object size:0xC scope:local @3917 = .data:0x00000070; // type:object size:0xC scope:local @@ -64,4 +63,4 @@ __vt__14mDoHIO_entry_c = .data:0x00000160; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3651 = .bss:0x00000008; // type:object size:0xC scope:local l_HIO = .bss:0x00000014; // type:object size:0xC scope:global data:byte -lbl_697_bss_20 = .bss:0x00000020; // type:object size:0x1 data:byte +init$1683 = .bss:0x00000020; // type:object size:0x1 data:byte diff --git a/config/GZ2J01/rels/d_a_obj_movebox/symbols.txt b/config/GZ2J01/rels/d_a_obj_movebox/symbols.txt index 50708254d93..56589c98526 100644 --- a/config/GZ2J01/rels/d_a_obj_movebox/symbols.txt +++ b/config/GZ2J01/rels/d_a_obj_movebox/symbols.txt @@ -173,4 +173,4 @@ sInstance__32JASGlobalInstance<11Z2FxLineMgr> = .bss:0x000013CC; // type:object sInstance__31JASGlobalInstance<10Z2EnvSeMgr> = .bss:0x000013D0; // type:object size:0x4 scope:global sInstance__32JASGlobalInstance<11Z2SpeechMgr> = .bss:0x000013D4; // type:object size:0x4 scope:global sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> = .bss:0x000013D8; // type:object size:0x4 scope:global -lbl_20_bss_13DC = .bss:0x000013DC; // type:object size:0x1 data:byte +init$localstatic4$mode_proc_call__Q212daObjMovebox5Act_cFv = .bss:0x000013DC; // type:object size:0x1 data:byte diff --git a/config/GZ2J01/rels/d_a_obj_zrTurara/symbols.txt b/config/GZ2J01/rels/d_a_obj_zrTurara/symbols.txt index 9e2db61b1aa..8caee4b36ec 100644 --- a/config/GZ2J01/rels/d_a_obj_zrTurara/symbols.txt +++ b/config/GZ2J01/rels/d_a_obj_zrTurara/symbols.txt @@ -44,8 +44,7 @@ mCcDObjInfo__12daZrTurara_c = .rodata:0x00000004; // type:object size:0x30 scope @4060 = .rodata:0x0000005C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000060; // type:object size:0xA scope:local data:string_table cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global -@1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_697_data_10 = .data:0x00000010; // type:object size:0x10 +lit_1787 = .data:0x0000000C; // type:object size:0x14 scope:local mCcDCyl__12daZrTurara_c = .data:0x00000020; // type:object size:0x44 scope:global @3916 = .data:0x00000064; // type:object size:0xC scope:local @3917 = .data:0x00000070; // type:object size:0xC scope:local @@ -63,4 +62,4 @@ __vt__14mDoHIO_entry_c = .data:0x00000160; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3651 = .bss:0x00000008; // type:object size:0xC scope:local l_HIO = .bss:0x00000014; // type:object size:0xC scope:global data:byte -lbl_697_bss_20 = .bss:0x00000020; // type:object size:0x1 data:byte +init$1683 = .bss:0x00000020; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/rels/d_a_obj_movebox/symbols.txt b/config/GZ2P01/rels/d_a_obj_movebox/symbols.txt index 50708254d93..56589c98526 100644 --- a/config/GZ2P01/rels/d_a_obj_movebox/symbols.txt +++ b/config/GZ2P01/rels/d_a_obj_movebox/symbols.txt @@ -173,4 +173,4 @@ sInstance__32JASGlobalInstance<11Z2FxLineMgr> = .bss:0x000013CC; // type:object sInstance__31JASGlobalInstance<10Z2EnvSeMgr> = .bss:0x000013D0; // type:object size:0x4 scope:global sInstance__32JASGlobalInstance<11Z2SpeechMgr> = .bss:0x000013D4; // type:object size:0x4 scope:global sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> = .bss:0x000013D8; // type:object size:0x4 scope:global -lbl_20_bss_13DC = .bss:0x000013DC; // type:object size:0x1 data:byte +init$localstatic4$mode_proc_call__Q212daObjMovebox5Act_cFv = .bss:0x000013DC; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/rels/d_a_obj_zrTurara/symbols.txt b/config/GZ2P01/rels/d_a_obj_zrTurara/symbols.txt index 9e2db61b1aa..8caee4b36ec 100644 --- a/config/GZ2P01/rels/d_a_obj_zrTurara/symbols.txt +++ b/config/GZ2P01/rels/d_a_obj_zrTurara/symbols.txt @@ -44,8 +44,7 @@ mCcDObjInfo__12daZrTurara_c = .rodata:0x00000004; // type:object size:0x30 scope @4060 = .rodata:0x0000005C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000060; // type:object size:0xA scope:local data:string_table cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global -@1787 = .data:0x0000000C; // type:object size:0x4 scope:local -lbl_697_data_10 = .data:0x00000010; // type:object size:0x10 +lit_1787 = .data:0x0000000C; // type:object size:0x14 scope:local mCcDCyl__12daZrTurara_c = .data:0x00000020; // type:object size:0x44 scope:global @3916 = .data:0x00000064; // type:object size:0xC scope:local @3917 = .data:0x00000070; // type:object size:0xC scope:local @@ -63,4 +62,4 @@ __vt__14mDoHIO_entry_c = .data:0x00000160; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3651 = .bss:0x00000008; // type:object size:0xC scope:local l_HIO = .bss:0x00000014; // type:object size:0xC scope:global data:byte -lbl_697_bss_20 = .bss:0x00000020; // type:object size:0x1 data:byte +init$1683 = .bss:0x00000020; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index db365aa0fb0..9a3552699f8 100755 --- a/configure.py +++ b/configure.py @@ -1567,7 +1567,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_cboard"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_digplace"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_eff"), - ActorRel(NonMatching, "d_a_obj_fmobj"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fmobj"), ActorRel(NonMatching, "d_a_obj_gpTaru"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_hhashi"), ActorRel(NonMatching, "d_a_obj_kanban2"), @@ -2169,7 +2169,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ystone"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_zcloth"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_zdoor"), - ActorRel(NonMatching, "d_a_obj_zrTurara"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_zrTurara"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_zrTuraraRock"), ActorRel(Equivalent, "d_a_obj_zraMark"), # weak func order ActorRel(MatchingFor("GZ2E01"), "d_a_obj_zra_freeze"), diff --git a/include/d/actor/d_a_hozelda.h b/include/d/actor/d_a_hozelda.h index 456578172b0..269a9ea84c3 100644 --- a/include/d/actor/d_a_hozelda.h +++ b/include/d/actor/d_a_hozelda.h @@ -38,8 +38,10 @@ public: /* 0x100 */ f32 mNowOffsetY; }; -class daHoZelda_hio_c { +class daHoZelda_hio_c : public JORReflexible { public: + daHoZelda_hio_c() {} + void genMessage(JORMContext*); }; /** diff --git a/include/d/actor/d_a_obj_fmobj.h b/include/d/actor/d_a_obj_fmobj.h index 6d900bffb5a..4c0138ab9c0 100644 --- a/include/d/actor/d_a_obj_fmobj.h +++ b/include/d/actor/d_a_obj_fmobj.h @@ -13,8 +13,9 @@ class dBgW; * @details * */ -class obj_fmobj_class : public fopAc_ac_c { +class obj_fmobj_class { public: + /* 0x000 */ fopAc_ac_c mActor; /* 0x568 */ request_of_phase_process_class mPhase; /* 0x570 */ u8 field_0x570; /* 0x574 */ J3DModel* mpModel; diff --git a/include/d/actor/d_a_obj_zrTurara.h b/include/d/actor/d_a_obj_zrTurara.h index 06669698290..765fe223310 100644 --- a/include/d/actor/d_a_obj_zrTurara.h +++ b/include/d/actor/d_a_obj_zrTurara.h @@ -46,9 +46,9 @@ private: /* 0x768 */ u8 mDebrisCount; public: - u8 getSwBit1() { return fopAcM_GetParamBit(this, 0, 8); } - u8 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } - u8 getScale() { return fopAcM_GetParamBit(this, 0x10, 8); } + int getSwBit1() { return fopAcM_GetParamBit(this, 0, 8); } + int getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } + int getScale() { return fopAcM_GetParamBit(this, 0x10, 8); } static dCcD_SrcGObjInf const mCcDObjInfo; static dCcD_SrcCyl mCcDCyl; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 5055cb829c8..1f2c03c86c5 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -912,7 +912,7 @@ public: u16 getSwordAtUpTime() const { return mSwordUpTimer; } s16 getDamageWaitTimer() const { return mDamageTimer; } bool checkWaterInMove() const { return checkNoResetFlg0(FLG0_UNDERWATER); } - bool checkSceneChangeAreaStart() const { return checkNoResetFlg2(FLG2_SCN_CHG_START); } + u32 checkSceneChangeAreaStart() const { return checkNoResetFlg2(FLG2_SCN_CHG_START); } bool checkFrontRollCrash() const { return checkResetFlg0(RFLG0_FRONT_ROLL_CRASH); } bool checkWolfAttackReverse() const { return checkResetFlg1(RFLG1_WOLF_ATTACK_REVERSE); } bool checkFreezeDamage() const { return checkNoResetFlg1(FLG1_ICE_FREEZE); } diff --git a/include/d/actor/d_a_scene_exit.h b/include/d/actor/d_a_scene_exit.h index 7195bf29b4e..b9698cf1362 100644 --- a/include/d/actor/d_a_scene_exit.h +++ b/include/d/actor/d_a_scene_exit.h @@ -16,10 +16,11 @@ public: daScex_c() {} /* 80485838 */ int checkWork(); /* 80485A50 */ int execute(); + inline int create(); u8 getArg1() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } u8 getArg0() { return fopAcM_GetParam(this); } - u32 getSwNo() { return fopAcM_GetParam(this) >> 0x18; } + u8 getSwNo() { return fopAcM_GetParam(this) >> 0x18; } u16 getOffEventBit() { return home.angle.z & 0xFFF; } u16 getOnEventBit() { return home.angle.x & 0xFFF; } u8 getPathID() { return (fopAcM_GetParam(this) >> 0x10) & 0xFF; } diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 909f6821667..7baa5592683 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -100,7 +100,7 @@ inline void cMtx_multVecArray(Mtx mtx, const Vec* src, Vec* dst, u32 count) { mDoMtx_multVecArray(mtx, src, dst, count); } -inline void mDoMtx_multVecZero(MtxP param_0, Vec* param_1) { +inline void mDoMtx_multVecZero(CMtxP param_0, Vec* param_1) { param_1->x = param_0[0][3]; param_1->y = param_0[1][3]; param_1->z = param_0[2][3]; diff --git a/src/d/actor/d_a_hozelda.cpp b/src/d/actor/d_a_hozelda.cpp index 7eecc9f4f28..d7218cd6a7e 100644 --- a/src/d/actor/d_a_hozelda.cpp +++ b/src/d/actor/d_a_hozelda.cpp @@ -80,7 +80,6 @@ void daHoZelda_matAnm_c::calc(J3DMaterial* i_material) const { } /* 80846000-8084642C 0001E0 042C+00 1/1 0/0 0/0 .text createHeap__11daHoZelda_cFv */ -// NONMATCHING int daHoZelda_c::createHeap() { mpZeldaModel = mDoExt_J3DModel__create((J3DModelData*)dComIfG_getObjectRes(l_arcName, 0x23), 0, 0x11020284); if (mpZeldaModel == NULL) { diff --git a/src/d/actor/d_a_obj_crope.cpp b/src/d/actor/d_a_obj_crope.cpp index f6ea83e9fdd..861c0868d6a 100644 --- a/src/d/actor/d_a_obj_crope.cpp +++ b/src/d/actor/d_a_obj_crope.cpp @@ -4,94 +4,14 @@ */ #include "d/actor/d_a_obj_crope.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" #include "d/d_com_inf_game.h" #include "d/d_path.h" #include "SSystem/SComponent/c_math.h" -#include "dol2asm.h" -// -// Forward References: -// - -extern "C" void createHeap__12daObjCrope_cFv(); -extern "C" static void daObjCrope_createHeap__FP10fopAc_ac_c(); -extern "C" void create__12daObjCrope_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" static void daObjCrope_Create__FP10fopAc_ac_c(); -extern "C" void __dt__12daObjCrope_cFv(); -extern "C" static void daObjCrope_Delete__FP12daObjCrope_c(); -extern "C" void setNormalRopePos__12daObjCrope_cFv(); -extern "C" void setRideRopePos__12daObjCrope_cFv(); -extern "C" void execute__12daObjCrope_cFv(); -extern "C" void __dt__8cM3dGLinFv(); -extern "C" static void daObjCrope_Execute__FP12daObjCrope_c(); -extern "C" void draw__12daObjCrope_cFv(); -extern "C" static void daObjCrope_Draw__FP12daObjCrope_c(); -extern "C" void __dt__10cCcD_GSttsFv(); - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi(); -extern "C" void update__19mDoExt_3DlineMat1_cFifR8_GXColorUsP12dKy_tevstr_c(); -extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c(); -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_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void dPath_GetRoomPath__Fii(); -extern "C" void dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_rnd__Fv(); -extern "C" void cM3d_Len2dSqPntAndSegLine__FffffffPfPfPf(); -extern "C" void __ct__8cM3dGLinFRC4cXyzRC4cXyz(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void __dl__FPv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" extern void* __vt__19mDoExt_3DlineMat1_c[5]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80BCEACC-80BCEAD4 000000 0006+02 6/6 0/0 0/0 .rodata l_arcName */ -SECTION_RODATA static char const l_arcName[] = "Crope"; +static char const l_arcName[] = "Crope"; /* 80BCCCD8-80BCCD44 000078 006C+00 1/1 0/0 0/0 .text createHeap__12daObjCrope_cFv */ int daObjCrope_c::createHeap() { @@ -105,109 +25,6 @@ static int daObjCrope_createHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->createHeap(); } -/* ############################################################################################## */ -/* 80BCEAD4-80BCEAD8 000008 0004+00 0/1 0/0 0/0 .rodata @3870 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3870 = -5.0f; -COMPILER_STRIP_GATE(0x80BCEAD4, &lit_3870); -#pragma pop - -/* 80BCEAD8-80BCEADC 00000C 0004+00 0/1 0/0 0/0 .rodata @3871 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3871 = 0.5f; -COMPILER_STRIP_GATE(0x80BCEAD8, &lit_3871); -#pragma pop - -/* 80BCEADC-80BCEAE0 000010 0004+00 0/2 0/0 0/0 .rodata @3872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3872 = 1.0f; -COMPILER_STRIP_GATE(0x80BCEADC, &lit_3872); -#pragma pop - -/* 80BCEAE0-80BCEAE4 000014 0004+00 0/4 0/0 0/0 .rodata @3873 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3873[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BCEAE0, &lit_3873); -#pragma pop - -/* 80BCEAE4-80BCEAEC 000018 0008+00 0/3 0/0 0/0 .rodata @3874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3874[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BCEAE4, &lit_3874); -#pragma pop - -/* 80BCEAEC-80BCEAF4 000020 0008+00 0/3 0/0 0/0 .rodata @3875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3875[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BCEAEC, &lit_3875); -#pragma pop - -/* 80BCEAF4-80BCEAFC 000028 0008+00 0/3 0/0 0/0 .rodata @3876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3876[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BCEAF4, &lit_3876); -#pragma pop - -/* 80BCEAFC-80BCEB00 000030 0004+00 0/1 0/0 0/0 .rodata @3877 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3877 = 3.0f; -COMPILER_STRIP_GATE(0x80BCEAFC, &lit_3877); -#pragma pop - -/* 80BCEB00-80BCEB04 000034 0004+00 0/1 0/0 0/0 .rodata @3878 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3878 = 75.0f; -COMPILER_STRIP_GATE(0x80BCEB00, &lit_3878); -#pragma pop - -/* 80BCEB04-80BCEB08 000038 0004+00 0/1 0/0 0/0 .rodata @3879 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3879 = 50.0f; -COMPILER_STRIP_GATE(0x80BCEB04, &lit_3879); -#pragma pop - -/* 80BCEB08-80BCEB0C 00003C 0004+00 0/1 0/0 0/0 .rodata @3880 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3880 = -75.0f; -COMPILER_STRIP_GATE(0x80BCEB08, &lit_3880); -#pragma pop - -/* 80BCEB0C-80BCEB10 000040 0004+00 0/1 0/0 0/0 .rodata @3881 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3881 = -200.0f; -COMPILER_STRIP_GATE(0x80BCEB0C, &lit_3881); -#pragma pop - -/* 80BCEB10-80BCEB14 000044 0004+00 0/1 0/0 0/0 .rodata @3882 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3882 = 1.0f / 99.0f; -COMPILER_STRIP_GATE(0x80BCEB10, &lit_3882); -#pragma pop - /* 80BCEB3C-80BCEB7C 000000 0040+00 1/1 0/0 0/0 .data l_sphSrc */ static dCcD_SrcSph l_sphSrc = { { @@ -222,80 +39,13 @@ static dCcD_SrcSph l_sphSrc = { }; /* 80BCEB7C-80BCEB80 000040 0004+00 1/1 0/0 0/0 .data color$4550 */ -SECTION_DATA static u8 color[4] = { +static GXColor color = { 0x00, 0x00, 0x00, 0xFF, }; -/* 80BCEB80-80BCEBA0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCrope_Method */ -static actor_method_class l_daObjCrope_Method = { - (process_method_func)daObjCrope_Create__FP10fopAc_ac_c, - (process_method_func)daObjCrope_Delete__FP12daObjCrope_c, - (process_method_func)daObjCrope_Execute__FP12daObjCrope_c, - 0, - (process_method_func)daObjCrope_Draw__FP12daObjCrope_c, -}; - -/* 80BCEBA0-80BCEBD0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Crope */ -extern actor_process_profile_definition g_profile_Obj_Crope = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Crope, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjCrope_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 248, // mPriority - &l_daObjCrope_Method, // sub_method - 0x00040100, // mStatus - fopAc_ENV_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80BCEBD0-80BCEBDC 000094 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */ -SECTION_DATA extern void* __vt__8cM3dGLin[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGLinFv, -}; - -/* 80BCEBDC-80BCEBE8 0000A0 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80BCEBE8-80BCEBF4 0000AC 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80BCEBF4-80BCEC08 0000B8 0014+00 1/1 0/0 0/0 .data __vt__18mDoExt_3DlineMat_c */ -SECTION_DATA extern void* __vt__18mDoExt_3DlineMat_c[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - -/* 80BCEC08-80BCEC14 0000CC 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80BCEC14-80BCEC20 0000D8 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - /* 80BCCD64-80BCD3D8 000104 0674+00 1/1 0/0 0/0 .text create__12daObjCrope_cFv */ int daObjCrope_c::create() { fopAcM_SetupActor(this, daObjCrope_c); @@ -363,45 +113,14 @@ int daObjCrope_c::create() { return rv; } - -/* 80BCD3D8-80BCD3DC 000778 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80BCD3DC-80BCD424 00077C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80BCD424-80BCD46C 0007C4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80BCD46C-80BCD4C8 00080C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80BCD4C8-80BCD504 000868 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - /* 80BCD504-80BCD524 0008A4 0020+00 1/0 0/0 0/0 .text daObjCrope_Create__FP10fopAc_ac_c */ static int daObjCrope_Create(fopAc_ac_c* i_this) { + fopAcM_RegisterCreateID(daObjCrope_c, i_this, "Obj_Crope"); return static_cast(i_this)->create(); } /* 80BCD524-80BCD69C 0008C4 0178+00 1/1 0/0 0/0 .text __dt__12daObjCrope_cFv */ -// NONMATCHING daObjCrope_c::~daObjCrope_c() { dComIfG_resDelete(&mPhase, l_arcName); } @@ -409,58 +128,18 @@ daObjCrope_c::~daObjCrope_c() { /* 80BCD69C-80BCD6C4 000A3C 0028+00 1/0 0/0 0/0 .text daObjCrope_Delete__FP12daObjCrope_c */ static int daObjCrope_Delete(daObjCrope_c* i_this) { - fopAcM_GetID(i_this); + fopAcM_RegisterDeleteID(i_this, "Obj_Crope"); i_this->~daObjCrope_c(); return 1; } -/* ############################################################################################## */ -/* 80BCEB14-80BCEB18 000048 0004+00 0/1 0/0 0/0 .rodata @4115 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4115 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80BCEB14, &lit_4115); -#pragma pop - -/* 80BCEB18-80BCEB1C 00004C 0004+00 0/1 0/0 0/0 .rodata @4116 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4116 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80BCEB18, &lit_4116); -#pragma pop - -/* 80BCEB1C-80BCEB20 000050 0004+00 0/1 0/0 0/0 .rodata @4117 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4117 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80BCEB1C, &lit_4117); -#pragma pop - -/* 80BCEB20-80BCEB24 000054 0004+00 0/2 0/0 0/0 .rodata @4118 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4118 = 49.0f / 100.0f; -COMPILER_STRIP_GATE(0x80BCEB20, &lit_4118); -#pragma pop - -/* 80BCEB24-80BCEB28 000058 0004+00 0/1 0/0 0/0 .rodata @4119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4119 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80BCEB24, &lit_4119); -#pragma pop - /* 80BCD6C4-80BCD9EC 000A64 0328+00 3/3 0/0 0/0 .text setNormalRopePos__12daObjCrope_cFv */ -// NONMATCHING - Horrible regalloc void daObjCrope_c::setNormalRopePos() { - cXyz* pdVar4; - cXyz* pVVar5; + int i; cXyz* pVVar3; - cXyz* pcVar8; - cXyz* ptr740; - cXyz* this_00; - cXyz* this_01; + cXyz* pVVar5; + cXyz* pdVar4; pVVar3 = mLineMat.getPos(0) + 1; pVVar5 = field_0x740; pdVar4 = field_0xbd8; @@ -468,94 +147,234 @@ void daObjCrope_c::setNormalRopePos() { cXyz cStack_40; cXyz cStack_4c; f32 local_c8; - int i; + cXyz* pos; + cXyz* iVar6; + f32 dVar9; dKyw_get_AllWind_vec(¤t.pos, &cStack_4c, &local_c8); + if (cM_rnd() < 0.1f) { cStack_4c *= local_c8 * field_0x720 * 0.2f; } else { cStack_4c *= 0.0f; } - for (i = 1; i < 99; i++) { + + for (i = 1; i < 99; i++, pVVar3++, pdVar4++, pVVar5++) { pVVar3[0].y = pdVar4[0].y; cStack_34 = pVVar3[0] - pVVar3[-1]; - cStack_34.y += maxFallSpeed; + cStack_34.y += gravity; cStack_34 += pVVar5[0]; if (cM_rnd() < 0.6f) { cStack_34 += cStack_4c; } cStack_34.normalizeZP(); pVVar3[0] = pVVar3[-1] + cStack_34 * field_0x720; - pVVar3++; - pdVar4++; - pVVar5++; } - pcVar8 = mLineMat.getPos(0) + 98; - ptr740 = field_0x740 + 97; - for (i = 98; i > 0; i--) { - cStack_34 = pcVar8[0] - pcVar8[1]; + pVVar3 = mLineMat.getPos(0) + 98; + pVVar5 = field_0x740 + 97; + for (i = 98; i > 0; i--, pVVar3--, pVVar5--) { + cStack_34 = pVVar3[0] - pVVar3[1]; cStack_34.y += gravity; - cStack_34 += ptr740[0]; + cStack_34 += pVVar5[0]; cStack_34.normalizeZP(); - pcVar8[0] = pcVar8[1] + cStack_34 * field_0x720; - pcVar8--; - ptr740--; + pVVar3[0] = pVVar3[1] + cStack_34 * field_0x720; } - cXyz* pos = mLineMat.getPos(0); - cXyz* this_02 = pos + 1; - this_01 = field_0x740; - this_00 = field_0xbd8; - cXyz* iVar6 = mLineMat.getPos(0); - for (i = 1; i < 99; i++) { - f32 dVar9 = iVar6->y + (mRopeVec.y * getStartRate(this_02)); - this_01[0] = (this_02[0] - this_00[0]) * 0.49f; - this_00[0] = this_02[0]; - this_02[0].y += (dVar9 - this_02[0].y) * 0.8f; - this_02++; - this_00++; - this_01++; + pVVar3 = mLineMat.getPos(0) + 1; + pVVar5 = field_0x740; + pdVar4 = field_0xbd8; + iVar6 = mLineMat.getPos(0); + for (i = 1; i < 99; i++, pVVar3++, pdVar4++, pVVar5++) { + dVar9 = iVar6->y + (mRopeVec.y * getStartRate(pVVar3)); + pVVar5[0] = (pVVar3[0] - pdVar4[0]) * 0.49f; + pdVar4[0] = pVVar3[0]; + pVVar3[0].y += (dVar9 - pVVar3[0].y) * 0.8f; } } -/* ############################################################################################## */ -/* 80BCEB28-80BCEB2C 00005C 0004+00 1/2 0/0 0/0 .rodata @4407 */ -SECTION_RODATA static f32 const lit_4407 = 5.0f; -COMPILER_STRIP_GATE(0x80BCEB28, &lit_4407); - -/* 80BCEB2C-80BCEB34 000060 0004+04 0/1 0/0 0/0 .rodata @4408 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4408[1 + 1 /* padding */] = { - 0x40A00001, - /* padding */ - 0x00000000, -}; -COMPILER_STRIP_GATE(0x80BCEB2C, &lit_4408); -#pragma pop - -/* 80BCEB34-80BCEB3C 000068 0008+00 0/1 0/0 0/0 .rodata @4410 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4410[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BCEB34, &lit_4410); -#pragma pop - /* 80BCD9EC-80BCE4FC 000D8C 0B10+00 1/1 0/0 0/0 .text setRideRopePos__12daObjCrope_cFv */ +// NONMATCHING - reg alloc void daObjCrope_c::setRideRopePos() { - // NONMATCHING + daPy_py_c* player = daPy_getLinkPlayerActorClass(); + cXyz* pcVar15; + cXyz* pcVar13; + cXyz* local_120; + cXyz* local_124; + f32 dVar23; + f32 fVar1; + f32 fVar2; + f32 fVar3; + f32 fVar4; + f32 fVar5; + f32 fVar6; + f32 fVar7; + f32 fVar8; + f32 fVar14; + int local_150; + int local_154; + int local_158; + f32 dVar25; + cXyz* pcVar12; + f32 dVar20; + f32 dVar21; + f32 dVar22; + cXyz* local_160; + cXyz* local_164; + f32 dVar20a; + int i; + + if (mOutFlg) { + setNormalRopePos(); + mOutFlg = 0; + return; + } + + pcVar15 = mLineMat.getPos(0); + pcVar13 = mLineMat.getPos(0) + 99; + cXyz local_54; + cXyz local_60; + if (mFrontJoint != -1) { + if (mFrontJoint == -2) { + local_54 = player->current.pos; + } else { + mDoMtx_multVecZero(player->getModelJointMtx(mFrontJoint), &local_54); + local_54.y -= 5.0f; + } + } else { + local_54 = *pcVar15; + } + + if (mBackJoint != -1) { + mDoMtx_multVecZero(player->getModelJointMtx(mBackJoint), &local_60); + local_60.y -= 5.0f; + } else { + local_60 = *pcVar15; + } + fVar1 = local_54.x - pcVar15->x; + fVar2 = local_54.z - pcVar15->z; + fVar3 = pcVar13->x - local_54.x; + fVar4 = pcVar13->z - local_54.z; + fVar5 = local_60.x - pcVar15->x; + fVar6 = local_60.z - pcVar15->z; + fVar7 = pcVar13->x - local_60.x; + fVar8 = pcVar13->z - local_60.z; + dVar20 = pcVar15->abs(local_54); + dVar21 = pcVar15->abs(local_60); + dVar22 = pcVar13->abs(local_54); + dVar23 = pcVar13->abs(local_60); + + if ((mFrontJoint == -1 || + fVar1 * mRopeVec.x + fVar2 * mRopeVec.z <= 0.0f) || + fVar3 * mRopeVec.x + fVar4 * mRopeVec.z <= 0.0f) + { + local_120 = &local_60; + local_124 = &local_60; + dVar20 = dVar21; + dVar22 = dVar23; + } else if ((mBackJoint == -1 || + fVar5 * mRopeVec.x + fVar6 * mRopeVec.z <= + 0.0f) || + fVar7 * mRopeVec.x + fVar8 * mRopeVec.z <= 0.0f) + { + local_120 = &local_54; + local_124 = &local_54; + } else if (dVar20 > dVar21) { + local_120 = &local_60; + local_124 = &local_54; + dVar20 = dVar21; + } else { + local_120 = &local_54; + local_124 = &local_60; + dVar22 = dVar23; + } + cXyz cStack_6c = *local_120 - *pcVar15; + cXyz cStack_78 = *local_124 - *pcVar13; + fVar14 = 1.0f / field_0x720; + local_150 = dVar22 * fVar14; + if (local_150 > 0x61) { + local_150 = 0x61; + } + cStack_78.normalizeZP(); + pcVar12 = pcVar13 - 1; + for (i = 0; i < local_150; i++, pcVar12--) { + pcVar12[0] = pcVar12[1] + cStack_78 * field_0x720; + } + *pcVar12 = *local_124; + local_154 = dVar20 * fVar14; + if (local_154 > 0x61) { + local_154 = 0x61; + } + cStack_6c.normalizeZP(); + pcVar12 = pcVar15 + 1; + for (i = 0; i < local_154; i++, pcVar12++) { + pcVar12[0] = pcVar12[-1] + cStack_6c * field_0x720; + } + *pcVar12 = *local_120; + local_158 = (0x60 - local_154) - local_150; + cXyz cStack_84 = *local_124 - *local_120; + dVar25 = cStack_84.abs() / (local_158 + 1); + cStack_84.normalizeZP(); + pcVar12++; + for (i = 0; i < local_158; i++, pcVar12++) { + pcVar12[0] = pcVar12[-1] + cStack_84 * dVar25; + } + pcVar12 = mLineMat.getPos(0) + 1; + local_160 = field_0xbd8; + local_164 = field_0x740; + cXyz cStack_90; + + for (i = 1; i < 0x63; i++, pcVar12++, local_160++, local_164++) { + dVar20a = pcVar15->y + mRopeVec.y * getStartRate(pcVar12); + cStack_90 = *pcVar12; + cStack_90.y = + pcVar12[0].y + (dVar20a - pcVar12[0].y) * 5.0000005f; + *local_164 = (cStack_90 - *local_160) * 0.49f; + *local_160 = cStack_90; + } } /* 80BCE4FC-80BCE954 00189C 0458+00 1/1 0/0 0/0 .text execute__12daObjCrope_cFv */ int daObjCrope_c::execute() { - // NONMATCHING -} - -/* 80BCE954-80BCE99C 001CF4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */ -// cM3dGLin::~cM3dGLin() { -extern "C" void __dt__8cM3dGLinFv() { - // NONMATCHING + int i; + cXyz* this_00; + cXyz* pcVar7; + daPy_py_c* player = daPy_getLinkPlayerActorClass(); + if (mFrontJoint == -1 && mBackJoint == -1) { + setNormalRopePos(); + this_00 = mLineMat.getPos(0); + pcVar7 = mLineMat.getPos(0) + 99; + cM3dGLin acStack_7c(*this_00, *pcVar7); + f32 dummyFloat; + if (cM3d_Len2dSqPntAndSegLine(player->current.pos.x, player->current.pos.z, this_00->x, + this_00->z, pcVar7->x, pcVar7->z, &mPlayerNearPos.x, + &mPlayerNearPos.z, &dummyFloat) != 0) + { + cXyz* pPos = this_00 + 1; + for (i = 1; i < 99; i++, pPos++) { + f32 diffx = mPlayerNearPos.x - pPos->x; + f32 diffz = mPlayerNearPos.z - pPos->z; + if (diffx * mRopeVec.x + diffz * mRopeVec.z < 0.0f) { + break; + } + } + f32 dVar9 = (mPlayerNearPos.absXZ(pPos[-1]) / pPos[0].absXZ(pPos[-1])); + mPlayerNearPos = pPos[-1] + (pPos[0] - pPos[-1]) * dVar9; + } else { + if (this_00->abs2(player->current.pos) > pcVar7->abs2(player->current.pos)) { + mPlayerNearPos = *pcVar7; + } else { + mPlayerNearPos = *this_00; + } + } + mCollider.SetC(mPlayerNearPos); + if (mCoCancelTimer != 0) { + mCoCancelTimer--; + } else { + dComIfG_Ccsp()->Set(&mCollider); + } + } else { + setRideRopePos(); + } + return 1; } /* 80BCE99C-80BCE9BC 001D3C 0020+00 1/0 0/0 0/0 .text daObjCrope_Execute__FP12daObjCrope_c */ @@ -565,7 +384,10 @@ static int daObjCrope_Execute(daObjCrope_c* i_this) { /* 80BCE9BC-80BCEA5C 001D5C 00A0+00 1/1 0/0 0/0 .text draw__12daObjCrope_cFv */ int daObjCrope_c::draw() { - // NONMATCHING + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + mLineMat.update(100, 5.0f, color, 0, &tevStr); + dComIfGd_set3DlineMat(&mLineMat); + return 1; } /* 80BCEA5C-80BCEA7C 001DFC 0020+00 1/0 0/0 0/0 .text daObjCrope_Draw__FP12daObjCrope_c @@ -574,8 +396,29 @@ static int daObjCrope_Draw(daObjCrope_c* i_this) { return i_this->draw(); } -/* 80BCEA7C-80BCEAC4 001E1C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 80BCEB80-80BCEBA0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCrope_Method */ +static actor_method_class l_daObjCrope_Method = { + (process_method_func)daObjCrope_Create, + (process_method_func)daObjCrope_Delete, + (process_method_func)daObjCrope_Execute, + NULL, + (process_method_func)daObjCrope_Draw, +}; + +/* 80BCEBA0-80BCEBD0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Crope */ +extern actor_process_profile_definition g_profile_Obj_Crope = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Crope, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjCrope_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 248, // mPriority + &l_daObjCrope_Method, // sub_method + 0x00040100, // mStatus + fopAc_ENV_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_fmobj.cpp b/src/d/actor/d_a_obj_fmobj.cpp index 2d1c38f43a2..14406f72b29 100644 --- a/src/d/actor/d_a_obj_fmobj.cpp +++ b/src/d/actor/d_a_obj_fmobj.cpp @@ -7,59 +7,16 @@ #include "d/d_bg_w.h" #include "d/d_com_inf_game.h" #include "d/d_procname.h" +#include "d/d_s_play.h" #include "SSystem/SComponent/c_math.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void daObj_Fmobj_Draw__FP15obj_fmobj_class(); -extern "C" static void daObj_Fmobj_Execute__FP15obj_fmobj_class(); -extern "C" static bool daObj_Fmobj_IsDelete__FP15obj_fmobj_class(); -extern "C" static void daObj_Fmobj_Delete__FP15obj_fmobj_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daObj_Fmobj_Create__FP10fopAc_ac_c(); -extern "C" extern char const* const d_a_obj_fmobj__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -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 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* __nw__FUl(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; - -// -// Declarations: -// /* 8057CBD8-8057CC44 000078 006C+00 1/0 0/0 0/0 .text daObj_Fmobj_Draw__FP15obj_fmobj_class */ static int daObj_Fmobj_Draw(obj_fmobj_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)&i_this->mActor; J3DModel* model_p = i_this->mpModel; - g_env_light.settingTevStruct(0x40, &i_this->current.pos, &i_this->tevStr); - g_env_light.setLightTevColorType_MAJI(model_p, &i_this->tevStr); + g_env_light.settingTevStruct(0x40, &a_this->current.pos, &a_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model_p, &a_this->tevStr); mDoExt_modelUpdateDL(model_p); return 1; } @@ -113,61 +70,43 @@ static int useHeapInit(fopAc_ac_c* i_this) { return 1; } -/* ############################################################################################## */ -/* 8057CF68-8057CF6C 000000 0004+00 1/1 0/0 0/0 .rodata @3743 */ -SECTION_RODATA static f32 const lit_3743 = 65536.0f; -COMPILER_STRIP_GATE(0x8057CF68, &lit_3743); - -/* 8057CF6C-8057CF70 000004 0004+00 0/1 0/0 0/0 .rodata @3744 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3744[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8057CF6C, &lit_3744); -#pragma pop - -/* 8057CF70-8057CF74 000008 0004+00 0/1 0/0 0/0 .rodata @3745 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3745 = -30.0f; -COMPILER_STRIP_GATE(0x8057CF70, &lit_3745); -#pragma pop - /* 8057CDE0-8057CF60 000280 0180+00 1/0 0/0 0/0 .text daObj_Fmobj_Create__FP10fopAc_ac_c */ -// NONMATCHING - reg alloc -static int daObj_Fmobj_Create(fopAc_ac_c* i_this) { - obj_fmobj_class* a_this = (obj_fmobj_class*)i_this; - fopAcM_SetupActor(a_this, obj_fmobj_class); +static int daObj_Fmobj_Create(fopAc_ac_c* i_this_param) { + // Fake match - debug says i_this is fake + fopAc_ac_c* i_this = (fopAc_ac_c*)i_this_param; + obj_fmobj_class* a_this = (obj_fmobj_class*)i_this_param; + fopAcM_SetupActor(i_this, obj_fmobj_class); + int phase; - int phase = dComIfG_resLoad(&a_this->mPhase, "Obj_Fmobj"); + phase = dComIfG_resLoad(&a_this->mPhase, "Obj_Fmobj"); if (phase == cPhs_COMPLEATE_e) { - a_this->field_0x570 = fopAcM_GetParam(a_this) & 0xFF; + OS_REPORT("OBJ_FMOBJ PARAM %x\n", fopAcM_GetParam(i_this)); + a_this->field_0x570 = fopAcM_GetParam(i_this) & 0xFF; if (dComIfGs_isStageBossEnemy()) { return cPhs_ERROR_e; } - - if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x4B000)) { + + OS_REPORT("OBJ_FMOBJ//////////////OBJ_FMOBJ SET 1 !!\n"); + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x4B000)) { + OS_REPORT("//////////////OBJ_FMOBJ SET NON !!\n"); return cPhs_ERROR_e; } - if (dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) { + OS_REPORT("//////////////OBJ_FMOBJ SET 2 !!\n"); + if (dComIfG_Bgsp().Regist(a_this->mpBgW, i_this)) { return cPhs_ERROR_e; } - fopAcM_SetMtx(a_this, a_this->mpModel->getBaseTRMtx()); - a_this->shape_angle.y = cM_rndF(65536.0f); + fopAcM_SetMtx(i_this, a_this->mpModel->getBaseTRMtx()); + i_this->shape_angle.y = cM_rndF(65536.0f); - mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y, a_this->current.pos.z); - mDoMtx_stack_c::YrotM(a_this->shape_angle.y); + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); + mDoMtx_stack_c::YrotM((s16)i_this->shape_angle.y); a_this->mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoMtx_stack_c::transM(0.0f, -30.0f, 0.0f); + mDoMtx_stack_c::transM(0.0f, YREG_F(9) + -30.0f, 0.0f); MTXCopy(mDoMtx_stack_c::get(), a_this->mBgMtx); a_this->mpBgW->Move(); diff --git a/src/d/actor/d_a_obj_goGate.cpp b/src/d/actor/d_a_obj_goGate.cpp index 1e322ecc098..cf214eea92c 100644 --- a/src/d/actor/d_a_obj_goGate.cpp +++ b/src/d/actor/d_a_obj_goGate.cpp @@ -75,8 +75,7 @@ int daGoGate_c::Execute(Mtx** param_0) { /* 80BFE11C-80BFE128 000014 000C+00 4/4 0/0 0/0 .bss l_HIO */ static daGoGate_HIO_c l_HIO; -/* 80BFD9D4-80BFDAD8 000414 0104+00 1/1 0/0 0/0 .text - // NONMATCHING moveGate__10daGoGate_cFv */ +/* 80BFD9D4-80BFDAD8 000414 0104+00 1/1 0/0 0/0 .text moveGate__10daGoGate_cFv */ void daGoGate_c::moveGate() { typedef void (daGoGate_c::*daGoGate_modeFunc)(); static daGoGate_modeFunc mode_proc[] = { diff --git a/src/d/actor/d_a_obj_movebox.cpp b/src/d/actor/d_a_obj_movebox.cpp index a83c98f9994..59b7e57bc8a 100644 --- a/src/d/actor/d_a_obj_movebox.cpp +++ b/src/d/actor/d_a_obj_movebox.cpp @@ -45,22 +45,7 @@ daObjMovebox::Bgc_c::Bgc_c() { mState = STATE_0_e; } -UNK_BSS(1109) -UNK_BSS(1107) -UNK_BSS(1105) -UNK_BSS(1104) -UNK_BSS(1099) -UNK_BSS(1097) -UNK_BSS(1095) -UNK_BSS(1094) -UNK_BSS(1057) -UNK_BSS(1055) -UNK_BSS(1053) -UNK_BSS(1052) -UNK_BSS(1014) -UNK_BSS(1012) -UNK_BSS(1010) -UNK_BSS(1009) +UNK_REL_BSS /* 804818D4-80482060 000054 078C+00 7/8 0/0 0/0 .bss M_gnd_work__Q212daObjMovebox5Bgc_c */ @@ -739,19 +724,28 @@ int daObjMovebox::Act_c::Create() { /* 8047F11C-8047F38C 00171C 0270+00 1/1 0/0 0/0 .text afl_sway__Q212daObjMovebox5Act_cFv */ -// NONMATCHING regalloc void daObjMovebox::Act_c::afl_sway() { + const BgcSrc_c* pbgc; + s32 check_num; + bool var_r22; + bool var_r21; + f32 var_f31 = field_0x8c0 * field_0x8c0 + field_0x8c4 * field_0x8c4; f32 var_f29 = i_attr().mMaxTiltPower * i_attr().mMaxTiltPower; - const BgcSrc_c* pbgc = i_attr().field_0x9e ? mBgc.M_lin20 : mBgc.M_lin5; - int check_num = i_attr().field_0x9e ? 21 : 5; + if (i_attr().field_0x9e) { + pbgc = mBgc.M_lin20; + } else { + pbgc = mBgc.M_lin5; + } - bool var_r22 = mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[0]) || - mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[2]); + check_num = i_attr().field_0x9e ? 21 : 5; - bool var_r21 = mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[1]) || - mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[3]); + var_r22 = mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[0]) || + mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[2]); + + var_r21 = mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[1]) || + mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[3]); if (var_f31 > var_f29) { f32 var_f30 = i_attr().mMaxTiltPower / JMAFastSqrt(var_f31); @@ -759,10 +753,16 @@ void daObjMovebox::Act_c::afl_sway() { field_0x8c4 *= var_f30; } - f32 var_f28 = i_attr().mTiltSpringFactor * -(field_0x8c8 - field_0x8c0); - f32 var_f27 = i_attr().mTiltSpringFactor * -(field_0x8cc - field_0x8c4); - f32 var_f26 = -field_0x8d0 * i_attr().mTiltViscoscityResistance; - f32 var_f25 = -field_0x8d4 * i_attr().mTiltViscoscityResistance; + f32 var_f28; + f32 var_f27; + f32 var_f26; + f32 var_f25; + f32 var_f24_debug = field_0x8c8 - field_0x8c0; + f32 var_f23_debug = field_0x8cc - field_0x8c4; + var_f28 = i_attr().mTiltSpringFactor * -(var_f24_debug); + var_f27 = i_attr().mTiltSpringFactor * -(var_f23_debug); + var_f26 = -field_0x8d0 * i_attr().mTiltViscoscityResistance; + var_f25 = -field_0x8d4 * i_attr().mTiltViscoscityResistance; field_0x8d0 += var_f28 + var_f26; field_0x8d4 += var_f27 + var_f25; diff --git a/src/d/actor/d_a_obj_zrTurara.cpp b/src/d/actor/d_a_obj_zrTurara.cpp index 116da45325f..cb56d4ede9b 100644 --- a/src/d/actor/d_a_obj_zrTurara.cpp +++ b/src/d/actor/d_a_obj_zrTurara.cpp @@ -8,137 +8,14 @@ #include "d/d_com_inf_game.h" #include "d/d_procname.h" #include "SSystem/SComponent/c_math.h" -#include "dol2asm.h" -// -// Forward References: -// - -extern "C" void __ct__16daZrTurara_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__12daZrTurara_cFv(); -extern "C" void CreateHeap__12daZrTurara_cFv(); -extern "C" void create__12daZrTurara_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void Execute__12daZrTurara_cFPPA3_A4_f(); -extern "C" void move__12daZrTurara_cFv(); -extern "C" void modeWait__12daZrTurara_cFv(); -extern "C" void init_modeBreak__12daZrTurara_cFv(); -extern "C" void modeBreak__12daZrTurara_cFv(); -extern "C" void init_modeEnd__12daZrTurara_cFv(); -extern "C" void modeEnd__12daZrTurara_cFv(); -extern "C" void Draw__12daZrTurara_cFv(); -extern "C" void Delete__12daZrTurara_cFv(); -extern "C" static void daZrTurara_Draw__FP12daZrTurara_c(); -extern "C" static void daZrTurara_Execute__FP12daZrTurara_c(); -extern "C" static void daZrTurara_Delete__FP12daZrTurara_c(); -extern "C" static void daZrTurara_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__16daZrTurara_HIO_cFv(); -extern "C" void __sinit_d_a_obj_zrTurara_cpp(); -extern "C" u8 const mCcDObjInfo__12daZrTurara_c[48]; -extern "C" extern char const* const d_a_obj_zrTurara__stringBase0; -extern "C" u8 mCcDCyl__12daZrTurara_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -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 onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -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" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* 80D41608-80D41614 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80D41614-80D41628 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop - -/* 80D4159C-80D415A0 000000 0004+00 3/4 0/0 0/0 .rodata @3657 */ -SECTION_RODATA static f32 const lit_3657 = 250.0f; -COMPILER_STRIP_GATE(0x80D4159C, &lit_3657); +UNK_REL_DATA /* 80D4056C-80D4059C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__16daZrTurara_HIO_cFv */ daZrTurara_HIO_c::daZrTurara_HIO_c() { mDebrisNum = 5; // mDebrisRange = 250.0f; - mDebrisRange = FLOAT_LABEL(lit_3657); + mDebrisRange = 250.0f; } /* 80D4178C-80D41798 000014 000C+00 2/2 0/0 0/0 .bss l_HIO */ @@ -162,121 +39,13 @@ dCcD_SrcCyl daZrTurara_c::mCcDCyl = { {{0.0f, 0.0f, 0.0f}, 0.0f, 0.0f} }; -/* 80D4166C-80D41678 -00001 000C+00 0/1 0/0 0/0 .data @3916 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3916[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__12daZrTurara_cFv, -}; -#pragma pop - -/* 80D41678-80D41684 -00001 000C+00 0/1 0/0 0/0 .data @3917 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3917[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBreak__12daZrTurara_cFv, -}; -#pragma pop - -/* 80D41684-80D41690 -00001 000C+00 0/1 0/0 0/0 .data @3918 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3918[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeEnd__12daZrTurara_cFv, -}; -#pragma pop - -/* 80D41690-80D416B4 000088 0024+00 0/1 0/0 0/0 .data mode_proc$3915 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[36] = { - 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 - -/* 80D416B4-80D416D4 -00001 0020+00 1/0 0/0 0/0 .data l_daZrTurara_Method */ -static actor_method_class l_daZrTurara_Method = { - (process_method_func)daZrTurara_Create__FP10fopAc_ac_c, - (process_method_func)daZrTurara_Delete__FP12daZrTurara_c, - (process_method_func)daZrTurara_Execute__FP12daZrTurara_c, - (process_method_func)NULL, - (process_method_func)daZrTurara_Draw__FP12daZrTurara_c, -}; - -/* 80D416D4-80D41704 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_zrTurara */ -extern actor_process_profile_definition g_profile_Obj_zrTurara = { - fpcLy_CURRENT_e, - 3, - fpcPi_CURRENT_e, - PROC_Obj_zrTurara, - &g_fpcLf_Method.base, - sizeof(daZrTurara_c), - 0, - 0, - &g_fopAc_Method.base, - 0x28C, - &l_daZrTurara_Method, - 0x40100, - fopAc_ACTOR_e, - fopAc_CULLBOX_CUSTOM_e, -}; - -/* 80D41704-80D41710 0000FC 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80D41710-80D4171C 000108 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80D4171C-80D41728 000114 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80D41728-80D41734 000120 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80D41734-80D4175C 00012C 0028+00 1/1 0/0 0/0 .data __vt__12daZrTurara_c */ -extern "C" extern void* __vt__12daZrTurara_c[10]; - -/* 80D4175C-80D41768 000154 000C+00 2/2 0/0 0/0 .data __vt__16daZrTurara_HIO_c */ -extern "C" extern void* __vt__16daZrTurara_HIO_c[3]; - -/* 80D41768-80D41774 000160 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -extern "C" extern void* __vt__14mDoHIO_entry_c[3]; - -/* 80D415D0-80D415D4 000034 0004+00 3/4 0/0 0/0 .rodata @3699 */ -SECTION_RODATA static f32 const lit_3699 = 1.0f; -COMPILER_STRIP_GATE(0x80D415D0, &lit_3699); - /* 80D405E4-80D40714 000164 0130+00 2/2 0/0 0/0 .text setBaseMtx__12daZrTurara_cFv */ void daZrTurara_c::setBaseMtx() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); mDoMtx_stack_c::scaleM(mScaleF, mScaleF, mScaleF); // cXyz scale(1.0f, 1.0f, 1.0f); - cXyz scale(FLOAT_LABEL(lit_3699), FLOAT_LABEL(lit_3699), FLOAT_LABEL(lit_3699)); + cXyz scale(1.0f, 1.0f, 1.0f); mpBaseModel->setBaseScale(scale); mpBaseModel->setBaseTRMtx(mDoMtx_stack_c::get()); PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); @@ -310,20 +79,6 @@ int daZrTurara_c::CreateHeap() { return 1; } -/* 80D415D4-80D415DC 000038 0004+04 1/1 0/0 0/0 .rodata @3831 */ -SECTION_RODATA static f32 const lit_3831[1 + 1 /* padding */] = { - 1.0f / 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D415D4, &lit_3831); - -/* 80D415DC-80D415E4 000040 0008+00 1/1 0/0 0/0 .rodata @3833 */ -SECTION_RODATA static u8 const lit_3833[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D415DC, &lit_3833); - /* 80D40844-80D40B1C 0003C4 02D8+00 1/1 0/0 0/0 .text create__12daZrTurara_cFv */ cPhs__Step daZrTurara_c::create() { fopAcM_SetupActor(this, daZrTurara_c); @@ -339,7 +94,7 @@ cPhs__Step daZrTurara_c::create() { mCcStatus.Init(0xff, 0xff, this); mCcCyl.Set(mCcDCyl); mCcCyl.SetStts(&mCcStatus); - u8 sw1 = getSwBit1(); + int sw1 = getSwBit1(); if (fopAcM_isSwitch(this, sw1)) { if (mpRockBgW != NULL) { dComIfG_Bgsp().Release(mpRockBgW); @@ -374,25 +129,6 @@ cPhs__Step daZrTurara_c::create() { return step; } - -/* 80D40B1C-80D40B64 00069C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D40B64-80D40BAC 0006E4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D40BAC-80D40C08 00072C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - /* 80D40C08-80D40C68 000788 0060+00 1/0 0/0 0/0 .text Execute__12daZrTurara_cFPPA3_A4_f */ int daZrTurara_c::Execute(Mtx** i_mtxP) { @@ -405,30 +141,6 @@ int daZrTurara_c::Execute(Mtx** i_mtxP) { return 1; } -/* 80D415E4-80D415E8 000048 0004+00 0/1 0/0 0/0 .rodata @3926 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3926 = 130.0f; -COMPILER_STRIP_GATE(0x80D415E4, &lit_3926); -#pragma pop - -/* 80D415E8-80D415EC 00004C 0004+00 0/1 0/0 0/0 .rodata @3927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3927 = 450.0f; -COMPILER_STRIP_GATE(0x80D415E8, &lit_3927); -#pragma pop - -/* 80D415EC-80D415F0 000050 0004+00 0/1 0/0 0/0 .rodata @3928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3928 = 500.0f; -COMPILER_STRIP_GATE(0x80D415EC, &lit_3928); -#pragma pop - -/* 80D41798-80D4179C 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80D41798[4]; - /* 80D40C68-80D40D88 0007E8 0120+00 1/1 0/0 0/0 .text move__12daZrTurara_cFv */ void daZrTurara_c::move() { typedef void (daZrTurara_c::*daZrTurara_modeFunc)(); @@ -457,10 +169,6 @@ void daZrTurara_c::modeWait() { } } -/* 80D415F0-80D415F4 000054 0004+00 1/1 0/0 0/0 .rodata @4013 */ -SECTION_RODATA static f32 const lit_4013 = -1.0f; -COMPILER_STRIP_GATE(0x80D415F0, &lit_4013); - /* 80D40E0C-80D410E0 00098C 02D4+00 1/1 0/0 0/0 .text init_modeBreak__12daZrTurara_cFv */ void daZrTurara_c::init_modeBreak() { mDoAud_seStart(Z2SE_OBJ_RG_ROCK_BREAK, ¤t.pos, 0, @@ -478,30 +186,14 @@ void daZrTurara_c::init_modeBreak() { dComIfGp_particle_set(0x8a96, ¤t.pos, NULL, &scale); dComIfGp_particle_set(0x8a97, ¤t.pos, NULL, &scale); mParticleKey = dComIfGp_particle_set(mParticleKey, 0x8a98, ¤t.pos, NULL, &scale); - u8 sw1 = getSwBit1(); + int sw1 = getSwBit1(); fopAcM_onSwitch(this, sw1); mDebrisCount = 0; mBreakTimer = 0; mMode = 1; } - -/* 80D415F4-80D415F8 000058 0004+00 0/1 0/0 0/0 .rodata @4059 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4059 = 200.0f; -COMPILER_STRIP_GATE(0x80D415F4, &lit_4059); -#pragma pop - -/* 80D415F8-80D415FC 00005C 0004+00 0/1 0/0 0/0 .rodata @4060 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4060 = 20.0f; -COMPILER_STRIP_GATE(0x80D415F8, &lit_4060); -#pragma pop - /* 80D410E0-80D412A0 000C60 01C0+00 1/0 0/0 0/0 .text modeBreak__12daZrTurara_cFv */ -// NONMATCHING - regalloc void daZrTurara_c::modeBreak() { cXyz scale(mScaleF, mScaleF, mScaleF); mParticleKey = dComIfGp_particle_set(mParticleKey, 0x8a98, ¤t.pos, NULL, &scale); @@ -582,8 +274,29 @@ static cPhs__Step daZrTurara_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->create(); } -/* 80D41474-80D414BC 000FF4 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 80D416B4-80D416D4 -00001 0020+00 1/0 0/0 0/0 .data l_daZrTurara_Method */ +static actor_method_class l_daZrTurara_Method = { + (process_method_func)daZrTurara_Create, + (process_method_func)daZrTurara_Delete, + (process_method_func)daZrTurara_Execute, + (process_method_func)NULL, + (process_method_func)daZrTurara_Draw, +}; + +/* 80D416D4-80D41704 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_zrTurara */ +extern actor_process_profile_definition g_profile_Obj_zrTurara = { + fpcLy_CURRENT_e, + 3, + fpcPi_CURRENT_e, + PROC_Obj_zrTurara, + &g_fpcLf_Method.base, + sizeof(daZrTurara_c), + 0, + 0, + &g_fopAc_Method.base, + 0x28C, + &l_daZrTurara_Method, + 0x40100, + fopAc_ACTOR_e, + fopAc_CULLBOX_CUSTOM_e, +}; diff --git a/src/d/actor/d_a_scene_exit.cpp b/src/d/actor/d_a_scene_exit.cpp index 687dd3e77c4..e7f967dd7e0 100644 --- a/src/d/actor/d_a_scene_exit.cpp +++ b/src/d/actor/d_a_scene_exit.cpp @@ -4,40 +4,10 @@ */ #include "d/actor/d_a_scene_exit.h" -#include "dol2asm.h" #include "d/d_com_inf_game.h" #include "d/actor/d_a_player.h" #include "m_Do/m_Do_mtx.h" -// -// Forward References: -// - -extern "C" void checkWork__8daScex_cFv(); -extern "C" static void daScex_Create__FP10fopAc_ac_c(); -extern "C" static void daScex_Execute__FP8daScex_c(); -extern "C" void execute__8daScex_cFv(); - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - /* 80485838-80485974 000078 013C+00 1/1 0/0 0/0 .text checkWork__8daScex_cFv */ int daScex_c::checkWork() { if (getArg1() == 0xFF || getArg1() == 0 || getArg1() == 3) { @@ -50,75 +20,42 @@ int daScex_c::checkWork() { } } - u16 offBit = getOffEventBit(); - if (offBit != 0x0FFF && dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[offBit])) { + u16 eventBit = getOffEventBit(); + if (eventBit != 0x0FFF && dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[eventBit])) { return 0; } - u16 onBit = getOnEventBit(); - if (onBit != 0x0FFF && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[onBit])) { + eventBit = getOnEventBit(); + if (eventBit != 0x0FFF && !dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[eventBit])) { return 0; } return 1; } -/* ############################################################################################## */ -/* 80485C98-80485C9C 000000 0004+00 2/2 0/0 0/0 .rodata @3758 */ -SECTION_RODATA static f32 const lit_3758 = 75.0f; -COMPILER_STRIP_GATE(0x80485C98, &lit_3758); +inline int daScex_c::create() { + fopAcM_SetupActor(this, daScex_c); -/* 80485C9C-80485CA0 000004 0004+00 1/1 0/0 0/0 .rodata @3759 */ -SECTION_RODATA static f32 const lit_3759 = 150.0f; -COMPILER_STRIP_GATE(0x80485C9C, &lit_3759); - -/* 80485974-80485A30 0001B4 00BC+00 1/0 0/0 0/0 .text daScex_Create__FP10fopAc_ac_c */ -static int daScex_Create(fopAc_ac_c* i_this) { - fopAcM_SetupActor(i_this, daScex_c); - daScex_c* scex = static_cast(i_this); - - mDoMtx_stack_c::transS(scex->current.pos.x, scex->current.pos.y, scex->current.pos.z); - mDoMtx_stack_c::YrotM(scex->shape_angle.y); - MTXInverse(mDoMtx_stack_c::get(), scex->mMatrix); - scex->scale.x *= 75.0f; - scex->scale.z *= 75.0f; - scex->scale.y *= 150.0f; + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_inverse(mDoMtx_stack_c::get(), mMatrix); + scale.x *= 75.0f; + scale.z *= 75.0f; + scale.y *= 150.0f; return cPhs_COMPLEATE_e; } - -/* 80485A30-80485A50 000270 0020+00 1/0 0/0 0/0 .text daScex_Execute__FP8daScex_c */ -static void daScex_Execute(daScex_c* param_0) { - // NONMATCHING +/* 80485974-80485A30 0001B4 00BC+00 1/0 0/0 0/0 .text daScex_Create__FP10fopAc_ac_c */ +static int daScex_Create(fopAc_ac_c* i_this) { + daScex_c* scx = static_cast(i_this); + return scx->create(); } -/* ############################################################################################## */ -/* 80485CA0-80485CA4 000008 0004+00 0/1 0/0 0/0 .rodata @3840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3840[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80485CA0, &lit_3840); -#pragma pop - -/* 80485CA4-80485CA8 00000C 0004+00 0/1 0/0 0/0 .rodata @3841 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3841 = 1.0f; -COMPILER_STRIP_GATE(0x80485CA4, &lit_3841); -#pragma pop - -/* 80485CA8-80485CAC 000010 0004+00 0/1 0/0 0/0 .rodata @3842 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3842 = -1.0f; -COMPILER_STRIP_GATE(0x80485CA8, &lit_3842); -#pragma pop +/* 80485A30-80485A50 000270 0020+00 1/0 0/0 0/0 .text daScex_Execute__FP8daScex_c */ +static int daScex_Execute(daScex_c* i_this) { + return i_this->execute(); +} /* 80485A50-80485C90 000290 0240+00 1/1 0/0 0/0 .text execute__8daScex_cFv */ // NONMATCHING - regalloc, this matches debug but not retail :/ @@ -167,9 +104,9 @@ int daScex_c::execute() { /* ############################################################################################## */ /* 80485CAC-80485CCC -00001 0020+00 1/0 0/0 0/0 .data l_daScex_Method */ static actor_method_class l_daScex_Method = { - (process_method_func)daScex_Create__FP10fopAc_ac_c, - 0, - (process_method_func)daScex_Execute__FP8daScex_c, + (process_method_func)daScex_Create, + NULL, + (process_method_func)daScex_Execute, }; /* 80485CCC-80485D00 -00001 0034+00 0/0 0/0 1/0 .data g_profile_SCENE_EXIT */