diff --git a/config/GZ2E01/rels/d_a_obj_Turara/splits.txt b/config/GZ2E01/rels/d_a_obj_Turara/splits.txt index ad92ea84241..575da2d3dcb 100644 --- a/config/GZ2E01/rels/d_a_obj_Turara/splits.txt +++ b/config/GZ2E01/rels/d_a_obj_Turara/splits.txt @@ -17,6 +17,6 @@ REL/global_destructor_chain.c: d/actor/d_a_obj_Turara.cpp: .text start:0x000000EC end:0x00001E40 .ctors start:0x00000000 end:0x00000004 - .rodata start:0x00000000 end:0x00000088 + .rodata start:0x00000000 end:0x00000085 .data start:0x00000000 end:0x00000210 - .bss start:0x00000008 end:0x00000038 + .bss start:0x00000008 end:0x00000035 diff --git a/config/GZ2E01/rels/d_a_obj_Turara/symbols.txt b/config/GZ2E01/rels/d_a_obj_Turara/symbols.txt index 9c5ae08a96d..54d07b259cd 100644 --- a/config/GZ2E01/rels/d_a_obj_Turara/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_Turara/symbols.txt @@ -31,10 +31,10 @@ init_modeDropEnd2__10daTurara_cFv = .text:0x000015D8; // type:function size:0x2C modeDropEnd2__10daTurara_cFv = .text:0x00001898; // type:function size:0x50 scope:global Draw__10daTurara_cFv = .text:0x000018E8; // type:function size:0xF0 scope:global Delete__10daTurara_cFv = .text:0x000019D8; // type:function size:0x68 scope:global -daTurara_Draw__FP10daTurara_c = .text:0x00001A40; // type:function size:0x2C scope:global -daTurara_Execute__FP10daTurara_c = .text:0x00001A6C; // type:function size:0x20 scope:global -daTurara_Delete__FP10daTurara_c = .text:0x00001A8C; // type:function size:0x20 scope:global -daTurara_Create__FP10fopAc_ac_c = .text:0x00001AAC; // type:function size:0x20 scope:global +daTurara_Draw__FP10daTurara_c = .text:0x00001A40; // type:function size:0x2C scope:local +daTurara_Execute__FP10daTurara_c = .text:0x00001A6C; // type:function size:0x20 scope:local +daTurara_Delete__FP10daTurara_c = .text:0x00001A8C; // type:function size:0x20 scope:local +daTurara_Create__FP10fopAc_ac_c = .text:0x00001AAC; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00001ACC; // type:function size:0x48 scope:global __dt__14daTurara_HIO_cFv = .text:0x00001B14; // type:function size:0x6C scope:global __sinit_d_a_obj_Turara_cpp = .text:0x00001B80; // type:function size:0x70 scope:local @@ -57,7 +57,7 @@ _dtors = .dtors:0x00000000; // type:label scope:global @3664 = .rodata:0x0000000C; // type:object size:0x4 scope:local @3665 = .rodata:0x00000010; // type:object size:0x4 scope:local mCcDObjInfo__10daTurara_c = .rodata:0x00000014; // type:object size:0x30 scope:global -l_bmdIdx = .rodata:0x00000044; // type:object size:0x8 scope:global +l_bmdIdx = .rodata:0x00000044; // type:object size:0x8 scope:local @3823 = .rodata:0x0000004C; // type:object size:0x4 scope:local @3824 = .rodata:0x00000050; // type:object size:0x4 scope:local @3825 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float @@ -72,7 +72,7 @@ l_bmdIdx = .rodata:0x00000044; // type:object size:0x8 scope:global @4264 = .rodata:0x00000078; // type:object size:0x4 scope:local data:string @stringBase0 = .rodata:0x0000007C; // type:object size:0x9 scope:local data:string_table ...data.0 = .data:0x00000000; // type:label scope:local -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local mCcDCyl__10daTurara_c = .data:0x00000020; // type:object size:0x44 scope:global @3924 = .data:0x00000064; // type:object size:0xC scope:local @@ -81,7 +81,7 @@ mCcDCyl__10daTurara_c = .data:0x00000020; // type:object size:0x44 scope:global @3927 = .data:0x00000088; // type:object size:0xC scope:local @3928 = .data:0x00000094; // type:object size:0xC scope:local mode_proc$3923 = .data:0x000000A0; // type:object size:0x3C scope:local -l_daTurara_Method = .data:0x000000DC; // type:object size:0x20 scope:global +l_daTurara_Method = .data:0x000000DC; // type:object size:0x20 scope:local g_profile_Obj_Turara = .data:0x000000FC; // type:object size:0x30 scope:global __vt__10cCcD_GStts = .data:0x0000012C; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x00000138; // type:object size:0xC scope:global @@ -96,5 +96,5 @@ __vt__18fOpAcm_HIO_entry_c = .data:0x000001F8; // type:object size:0xC scope:glo __vt__14mDoHIO_entry_c = .data:0x00000204; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3653 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0x20 scope:global data:byte -lbl_394_bss_34 = .bss:0x00000034; // type:object size:0x1 data:byte +l_HIO = .bss:0x00000014; // type:object size:0x20 scope:local data:byte +lbl_394_bss_34 = .bss:0x00000034; // type:object size:0x1 scope:local data:byte diff --git a/configure.py b/configure.py index bce3b4f8f8b..b3305357427 100644 --- a/configure.py +++ b/configure.py @@ -1799,7 +1799,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_zrc"), ActorRel(NonMatching, "d_a_npc_zrz"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_Lv5Key"), - ActorRel(NonMatching, "d_a_obj_Turara"), + ActorRel(Equivalent, "d_a_obj_Turara"), ActorRel(NonMatching, "d_a_obj_TvCdlst"), ActorRel(NonMatching, "d_a_obj_Y_taihou"), ActorRel(NonMatching, "d_a_obj_amiShutter"), diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 19f49d769cc..cca6baea430 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -57,6 +57,7 @@ enum cCcD_ObjAtType { /* 0x04000000 */ AT_TYPE_MASTER_SWORD = (1 << 26), /* 0x08000000 */ AT_TYPE_MIDNA_LOCK = (1 << 27), /* 0x10000000 */ AT_TYPE_10000000 = (1 << 28), + /* 0x10000000 */ AT_TYPE_20000000 = (1 << 29), /* 0x40000000 */ AT_TYPE_WOLF_CUT_TURN = (1 << 30), /* 0x80000000 */ AT_TYPE_WOLF_ATTACK = (1 << 31), /* 0xD8000000 */ AT_TYPE_UNK = 0xD8000000 diff --git a/include/d/actor/d_a_obj_Turara.h b/include/d/actor/d_a_obj_Turara.h index 2ce0a20bc54..e8f4c7d4090 100644 --- a/include/d/actor/d_a_obj_Turara.h +++ b/include/d/actor/d_a_obj_Turara.h @@ -1,7 +1,10 @@ #ifndef D_A_OBJ_TURARA_H #define D_A_OBJ_TURARA_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_com_inf_game.h" +#include "d/d_event_lib.h" +#include "d/d_bg_w.h" /** * @ingroup actors-objects @@ -11,17 +14,24 @@ * @details * */ -class daTurara_c : public fopAc_ac_c { +struct fakeTuraraPadding { + u8 a[8]; +}; + +class daTurara_c : public dBgS_MoveBgActor, public fakeTuraraPadding, public dEvLib_callback_c { public: + daTurara_c() : dEvLib_callback_c(this) {} + /* 80B9E710 */ ~daTurara_c() {} + /* 80B9CC9C */ void setBaseMtx(); - /* 80B9CD74 */ void CreateHeap(); - /* 80B9CED8 */ void create(); + /* 80B9CD74 */ int CreateHeap(); + /* 80B9CED8 */ int create(); /* 80B9D468 */ void setFallStat(); - /* 80B9D4CC */ void Execute(f32 (**)[3][4]); + /* 80B9D4CC */ int Execute(Mtx**); /* 80B9D548 */ void move(); /* 80B9D72C */ void init_modeWait(); /* 80B9D738 */ void modeWait(); - /* 80B9D998 */ void eventStart(); + /* 80B9D998 */ BOOL eventStart(); /* 80B9D9BC */ void init_modeDropInit(); /* 80B9DA00 */ void modeDropInit(); /* 80B9DA44 */ void init_modeDrop(); @@ -31,23 +41,67 @@ public: /* 80B9DE48 */ void modeDropEnd(); /* 80B9E078 */ void init_modeDropEnd2(); /* 80B9E338 */ void modeDropEnd2(); - /* 80B9E388 */ void Draw(); - /* 80B9E478 */ void Delete(); - /* 80B9E710 */ ~daTurara_c(); + /* 80B9E388 */ int Draw(); + /* 80B9E478 */ int Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; + u8 getSwBit1() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwBit3() { return fopAcM_GetParamBit(this, 16, 8); } + + s32 getEvetID() { + return fopAcM_GetParamBit(this, 0x18, 8); + } + + u8 getWaitTime() { return shape_angle.z; } + int getItemTbleNum() { return shape_angle.x >> 8 & 0xff; } + + static const dCcD_SrcGObjInf mCcDObjInfo; + static dCcD_SrcCyl mCcDCyl; private: - /* 0x568 */ u8 field_0x568[0x998 - 0x568]; + /* 0x5b8 */ request_of_phase_process_class mPhaseReq; + /* 0x5c0 */ J3DModel* mpModel[2]; + /* 0x5c8 */ u8 mMode; + /* 0x5c9 */ u8 field_0x5c9; + /* 0x5cc */ dCcD_Stts mColliderStts; + /* 0x608 */ dCcD_Cyl mCylCollider; + /* 0x744 */ u8 mWaitTime; + /* 0x748 */ u32 field_0x748; + /* 0x74c */ f32 field_0x74c; + /* 0x750 */ s16 field_0x750; + /* 0x752 */ s16 field_0x752; + /* 0x754 */ s16 field_0x754; + /* 0x758 */ f32 field_0x758; + /* 0x75c */ f32 field_0x75c; + /* 0x760 */ f32 field_0x760; + /* 0x764 */ u8 mInWater; + /* 0x768 */ dBgS_AcchCir mAcchCir; + /* 0x7a8 */ dBgS_ObjAcch mAcch; + /* 0x980 */ dBgW* field_0x980; + /* 0x984 */ u8 field_0x984; + /* 0x988 */ u32 field_0x988; + /* 0x98c */ u8 field_0x98c; + /* 0x98d */ u8 field_0x98d[0x994 - 0x98d]; + /* 0x994 */ u8 field_0x994; }; STATIC_ASSERT(sizeof(daTurara_c) == 0x998); -class daTurara_HIO_c { +class daTurara_HIO_c : public fOpAcm_HIO_entry_c { public: /* 80B9CB8C */ daTurara_HIO_c(); - /* 80B9E5B4 */ ~daTurara_HIO_c(); + /* 80B9E5B4 */ virtual ~daTurara_HIO_c() {} + + /* 0x04 */ f32 field_0x04; + /* 0x08 */ f32 mGravity; + /* 0x0c */ f32 mMaxGravity; + /* 0x10 */ u8 mWaitTime; + /* 0x11 */ u8 mShockStrength; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1c */ f32 field_0x1c; }; +STATIC_ASSERT(sizeof(daTurara_HIO_c) == 0x20); + #endif /* D_A_OBJ_TURARA_H */ diff --git a/include/d/d_bg_w.h b/include/d/d_bg_w.h index c15a90266cf..7c5e99b084d 100644 --- a/include/d/d_bg_w.h +++ b/include/d/d_bg_w.h @@ -220,6 +220,7 @@ public: bool ChkNoCalcVtx() { return mFlags & NO_CALC_VTX_e; } bool ChkFlush() { return field_0x91 & 8; } void SetLock() { mFlags |= LOCK_e; } + void OffRoofRegist() { field_0x91 |= 0x4; } bool ChkRoofRegist() { return field_0x91 & 4;} cBgD_Vtx_t* GetVtxTbl() const { return pm_vtx_tbl; } int GetVtxNum() const { return pm_bgd->m_v_num; } diff --git a/src/d/actor/d_a_obj_Turara.cpp b/src/d/actor/d_a_obj_Turara.cpp index 07fbfb2ac6e..aa295547d1f 100644 --- a/src/d/actor/d_a_obj_Turara.cpp +++ b/src/d/actor/d_a_obj_Turara.cpp @@ -5,187 +5,13 @@ #include "d/actor/d_a_obj_Turara.h" #include "dol2asm.h" +#include "SSystem/SComponent/c_math.h" - -// -// Forward References: -// - -extern "C" void __ct__14daTurara_HIO_cFv(); -extern "C" void __dt__18fOpAcm_HIO_entry_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__10daTurara_cFv(); -extern "C" void CreateHeap__10daTurara_cFv(); -extern "C" void create__10daTurara_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void setFallStat__10daTurara_cFv(); -extern "C" void Execute__10daTurara_cFPPA3_A4_f(); -extern "C" void move__10daTurara_cFv(); -extern "C" void init_modeWait__10daTurara_cFv(); -extern "C" void modeWait__10daTurara_cFv(); -extern "C" void eventStart__10daTurara_cFv(); -extern "C" void init_modeDropInit__10daTurara_cFv(); -extern "C" void modeDropInit__10daTurara_cFv(); -extern "C" void init_modeDrop__10daTurara_cFv(); -extern "C" void modeDrop__10daTurara_cFv(); -extern "C" void bgCheck__10daTurara_cFv(); -extern "C" void init_modeDropEnd__10daTurara_cFv(); -extern "C" void modeDropEnd__10daTurara_cFv(); -extern "C" void init_modeDropEnd2__10daTurara_cFv(); -extern "C" void modeDropEnd2__10daTurara_cFv(); -extern "C" void Draw__10daTurara_cFv(); -extern "C" void Delete__10daTurara_cFv(); -extern "C" static void daTurara_Draw__FP10daTurara_c(); -extern "C" static void daTurara_Execute__FP10daTurara_c(); -extern "C" static void daTurara_Delete__FP10daTurara_c(); -extern "C" static void daTurara_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__14daTurara_HIO_cFv(); -extern "C" void __sinit_d_a_obj_Turara_cpp(); -extern "C" static void func_80B9E690(); -extern "C" static void func_80B9E698(); -extern "C" static void func_80B9E6A0(); -extern "C" static void func_80B9E6A8(); -extern "C" void __dt__17dEvLib_callback_cFv(); -extern "C" bool eventStart__17dEvLib_callback_cFv(); -extern "C" bool eventRun__17dEvLib_callback_cFv(); -extern "C" bool eventEnd__17dEvLib_callback_cFv(); -extern "C" void __dt__10daTurara_cFv(); -extern "C" u8 const mCcDObjInfo__10daTurara_c[48]; -extern "C" extern char const* const d_a_obj_Turara__stringBase0; -extern "C" u8 mCcDCyl__10daTurara_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb(); -extern "C" void fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -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 eventUpdate__17dEvLib_callback_cFv(); -extern "C" void orderEvent__17dEvLib_callback_cFiii(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -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__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -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 SetObj__16dBgS_PolyPassChkFv(); -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 Move__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 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 __ct__5csXyzFsss(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc0__FPfff(); -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 _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__16dBgS_MoveBgActor[10]; -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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - // // Declarations: // -/* ############################################################################################## */ -/* 80B9E8F4-80B9E8F8 000000 0004+00 6/6 0/0 0/0 .rodata @3661 */ -SECTION_RODATA static f32 const lit_3661 = 450.0f; -COMPILER_STRIP_GATE(0x80B9E8F4, &lit_3661); - -/* 80B9E8F8-80B9E8FC 000004 0004+00 0/2 0/0 0/0 .rodata @3662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3662 = 10.0f; -COMPILER_STRIP_GATE(0x80B9E8F8, &lit_3662); -#pragma pop - -/* 80B9E8FC-80B9E900 000008 0004+00 0/1 0/0 0/0 .rodata @3663 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3663 = 200.0f; -COMPILER_STRIP_GATE(0x80B9E8FC, &lit_3663); -#pragma pop - -/* 80B9E900-80B9E904 00000C 0004+00 0/1 0/0 0/0 .rodata @3664 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3664 = 5.0f; -COMPILER_STRIP_GATE(0x80B9E900, &lit_3664); -#pragma pop - -/* 80B9E904-80B9E908 000010 0004+00 0/2 0/0 0/0 .rodata @3665 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3665 = 3.0f; -COMPILER_STRIP_GATE(0x80B9E904, &lit_3665); -#pragma pop - /* 80B9E97C-80B9E988 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, @@ -204,83 +30,442 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { }; #pragma pop +/* 80B9CB8C-80B9CBF8 0000EC 006C+00 1/1 0/0 0/0 .text __ct__14daTurara_HIO_cFv */ +daTurara_HIO_c::daTurara_HIO_c() { + field_0x04 = 450.f; + mGravity = 10.0f; + mMaxGravity = 200.0f; + mWaitTime = 0x1e; + field_0x14 = 5.0f; + mShockStrength = 0x4; + field_0x18 = 3.0f; + field_0x1c = 5.0f; +} + +/* 80B9CC9C-80B9CD74 0001FC 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daTurara_cFv */ +void daTurara_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(0, shape_angle.y, 0); + mDoMtx_stack_c::ZXYrotM(field_0x750, field_0x752, field_0x754); + mDoMtx_stack_c::transM(field_0x758, field_0x75c, field_0x760); + mpModel[field_0x984]->setBaseScale(scale); + mpModel[field_0x984]->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} + +/* 80B9EBA4-80B9EBC4 000014 0020+00 5/5 0/0 0/0 .bss l_HIO */ +static daTurara_HIO_c l_HIO; + +/* ############################################################################################## */ +/* 80B9E908-80B9E938 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daTurara_c */ +const dCcD_SrcGObjInf daTurara_c::mCcDObjInfo = { + {0, // mFlags + { + {0x20, 0x1, 0x1f}, // mObjAt + {0xF8400022, 0x11}, // mObjTg + {0x79} // mObjCo + } // mSrcObjHitInf + }, // mObj + {1, 0, 1, 0, 0}, // mGObjAt + {0xA, 0, 0, 0, 2}, // mGObjTg + {0} // mGObjCo +}; + /* 80B9E99C-80B9E9E0 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daTurara_c */ -SECTION_DATA u8 daTurara_c::mCcDCyl[68] = { - 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, +dCcD_SrcCyl daTurara_c::mCcDCyl = { + daTurara_c::mCcDObjInfo, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; -/* 80B9E9E0-80B9E9EC -00001 000C+00 0/1 0/0 0/0 .data @3924 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3924[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__10daTurara_cFv, -}; -#pragma pop +/* 80B9E938-80B9E940 000044 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */ +static u32 const l_bmdIdx[2] = {5, 8}; -/* 80B9E9EC-80B9E9F8 -00001 000C+00 0/1 0/0 0/0 .data @3925 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3925[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeDropInit__10daTurara_cFv, -}; -#pragma pop +/* 80B9CD74-80B9CED8 0002D4 0164+00 1/0 0/0 0/0 .text CreateHeap__10daTurara_cFv */ +int daTurara_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", l_bmdIdx[field_0x98c]); -/* 80B9E9F8-80B9EA04 -00001 000C+00 0/1 0/0 0/0 .data @3926 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3926[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeDrop__10daTurara_cFv, -}; -#pragma pop + if (modelData == NULL) { + // FIXME: For shield decomp matching, needs a JUT assert. + } + if (field_0x98c == 0) { + mpModel[0] = mDoExt_J3DModel__create(modelData, 0, 0x11000084); + } else { + mpModel[0] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + } + if (mpModel[0] == NULL) { + return 0; + } -/* 80B9EA04-80B9EA10 -00001 000C+00 0/1 0/0 0/0 .data @3927 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3927[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeDropEnd__10daTurara_cFv, -}; -#pragma pop + modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", 9); + if (modelData == NULL) { + // FIXME: For shield decomp matching, needs a JUT assert. + } + mpModel[1] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel[1] == NULL) { + return 0; + } + dBgW* my_dBgW = new dBgW; + field_0x980 = my_dBgW; + if (field_0x980 == NULL || field_0x980->Set((cBgD_t *)dComIfG_getObjectRes("M_Turara", 0xd), + 1, &mBgMtx) != 0) { + field_0x980 = NULL; + return 0; + } + return 1; +} -/* 80B9EA10-80B9EA1C -00001 000C+00 0/1 0/0 0/0 .data @3928 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3928[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeDropEnd2__10daTurara_cFv, -}; -#pragma pop +/* 80B9CED8-80B9D29C 000438 03C4+00 1/1 0/0 0/0 .text create__10daTurara_cFv */ +int daTurara_c::create() { + fopAcM_SetupActor(this, daTurara_c); + u8 my_bit = getSwBit3(); + if (fopAcM_isSwitch(this, my_bit)) { + return cPhs_ERROR_e; + } + int phase = dComIfG_resLoad(&mPhaseReq,"M_Turara"); + if (phase == cPhs_COMPLEATE_e) { + u8 my_bool = 0; + field_0x98c = shape_angle.x; + if (field_0x98c != 0) { + if (field_0x98c == 1) { + my_bool = 1; + u8 my_bit1 = getSwBit1(); + fopAcM_onSwitch(this, my_bit1); + } + fopAcM_SetGroup(this,0); + field_0x98c = 1; + } else { + fopAcM_SetGroup(this,2); + } + if (MoveBGCreate("M_Turara", 0xc, dBgS_MoveBGProc_TypicalRotY, 0x2180, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + mAcchCir.SetWall(150.0f, 150.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), NULL, NULL); + mAcch.SetWaterCheckOffset(10000.0f); + field_0x748 = 0; + field_0x750 = 0; + field_0x752 = 0; + field_0x754 = 0; + field_0x758 = 0.0f; + field_0x75c = 0.0f; + field_0x760 = 0.0f; + mColliderStts.Init(0xff, 0xff, this); + mCylCollider.Set(mCcDCyl); + mCylCollider.SetStts(&mColliderStts); + mCylCollider.OffAtSetBit(); + u8 my_bit1 = getSwBit1(); + if (fopAcM_isSwitch(this, my_bit1)) { + field_0x984 = 1; + mCylCollider.OffCoSetBit(); + if (mpBgW) { + dComIfG_Bgsp().Release(mpBgW); + } + if (field_0x980) { + dComIfG_Bgsp().Regist(field_0x980, this); + field_0x980->Move(); + } + if (my_bool) { + mMode = 3; + } else { + setFallStat(); + } + } else { + field_0x984 = 0; + field_0x5c9 = getSwBit2(); + init_modeWait(); + } + fopAcM_SetMtx(this, mpModel[field_0x984]->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel[field_0x984]->getModelData()); + setBaseMtx(); + field_0x994 = 1; + // FIXME: Needs entryHIO here. + } + return phase; +} -/* 80B9EA1C-80B9EA58 0000A0 003C+00 0/1 0/0 0/0 .data mode_proc$3923 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[60] = { - 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 +/* 80B9D468-80B9D4CC 0009C8 0064+00 1/1 0/0 0/0 .text setFallStat__10daTurara_cFv */ +void daTurara_c::setFallStat() { + mAcch.CrrPos(dComIfG_Bgsp()); + current.pos.y = mAcch.GetGroundH(); + mAcch.CrrPos(dComIfG_Bgsp()); + mMode = 3; +} + +/* 80B9D4CC-80B9D548 000A2C 007C+00 1/0 0/0 0/0 .text Execute__10daTurara_cFPPA3_A4_f */ +int daTurara_c::Execute(Mtx** i_mtx) { + eventUpdate(); + move(); + *i_mtx = &mpModel[field_0x984]->getBaseTRMtx(); + mInWater = mAcch.ChkWaterIn(); + setBaseMtx(); + mColliderStts.Move(); + return 1; +} + +/* 80B9D548-80B9D72C 000AA8 01E4+00 1/1 0/0 0/0 .text move__10daTurara_cFv */ +void daTurara_c::move() { + typedef void (daTurara_c::*modeFunc)(); + static modeFunc mode_proc[] = {&daTurara_c::modeWait, &daTurara_c::modeDropInit, + &daTurara_c::modeDrop, &daTurara_c::modeDropEnd, + &daTurara_c::modeDropEnd2}; + (this->*mode_proc[mMode])(); + field_0x750 = field_0x74c * cM_scos(field_0x748 * 0x3000); + field_0x754 = field_0x74c * cM_ssin(field_0x748 * 0x3000); + cLib_addCalc0(&field_0x74c, 0.1f, 10.0f); + field_0x748 += 1; + if (field_0x984 == 0) { + mCylCollider.SetR(170.0f); + } else { + mCylCollider.SetR(130.0f); + } + mCylCollider.SetH(510.0f); + cXyz my_vec(current.pos); + my_vec.y -= 50.0f; + mCylCollider.SetC(my_vec); + dComIfG_Ccsp()->Set(&mCylCollider); +} + +/* 80B9D72C-80B9D738 000C8C 000C+00 1/1 0/0 0/0 .text init_modeWait__10daTurara_cFv */ +void daTurara_c::init_modeWait() { + mMode = 0; +} + +/* 80B9D738-80B9D998 000C98 0260+00 1/0 0/0 0/0 .text modeWait__10daTurara_cFv */ +void daTurara_c::modeWait() { + if (field_0x5c9 != 0xff && fopAcM_isSwitch(this, field_0x5c9)) { + if (getEvetID() != 0xff) { + orderEvent(getEvetID(), 0xFF, 1); + } else { + eventStart(); + } + } + if (mCylCollider.ChkTgHit()) { + dCcD_GObjInf* my_actor = mCylCollider.GetTgHitGObj(); + if (my_actor->GetAtType() == AT_TYPE_BOMB) { + if (getEvetID() != 0xff) { + orderEvent(getEvetID(), 0xFF, 1); + } else { + eventStart(); + } + } else if (my_actor->GetAtType() == AT_TYPE_IRON_BALL) { + dComIfGp_particle_set(0x8a8f, ¤t.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); + dComIfGp_particle_set(0x8a90, ¤t.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); + dComIfGp_particle_set(0x8a91, ¤t.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, ¤t.pos, 0, dComIfGp_getReverb(roomNo)); + u8 swbit3 = getSwBit3(); + fopAcM_onSwitch(this, swbit3); + fopAcM_delete(this); + } + } +} + +/* 80B9D998-80B9D9BC 000EF8 0024+00 2/1 0/0 0/0 .text eventStart__10daTurara_cFv */ +BOOL daTurara_c::eventStart() { + init_modeDropInit(); + return TRUE; +} + +/* 80B9D9BC-80B9DA00 000F1C 0044+00 1/1 0/0 0/0 .text init_modeDropInit__10daTurara_cFv + */ +void daTurara_c::init_modeDropInit() { + if (field_0x98c == 0) { + mWaitTime = getWaitTime(); + } else { + mWaitTime = l_HIO.mWaitTime; + } + field_0x74c = l_HIO.field_0x04; + mMode = 1; +} + +/* 80B9DA00-80B9DA44 000F60 0044+00 1/0 0/0 0/0 .text modeDropInit__10daTurara_cFv */ +void daTurara_c::modeDropInit() { + if (mWaitTime != 0) { + mWaitTime -= 1; + } else { + field_0x74c = 0.0f; + init_modeDrop(); + } +} + +/* 80B9DA44-80B9DB44 000FA4 0100+00 1/1 0/0 0/0 .text init_modeDrop__10daTurara_cFv */ +void daTurara_c::init_modeDrop() { + fopAcM_SetGravity(this, -l_HIO.mGravity); + fopAcM_SetMaxFallSpeed(this, -l_HIO.mMaxGravity); + fopAcM_SetSpeedF(this, 0.0f); + fopAcM_SetMtx(this, mpModel[field_0x984]->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel[field_0x984]->getModelData()); + mCylCollider.OnAtSetBit(); + mpBgW->OffRoofRegist(); + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_ICICLE_FALL, ¤t.pos, 0, dComIfGp_getReverb(roomNo)); + mMode = 2; +} + +/* 80B9DB44-80B9DB90 0010A4 004C+00 1/0 0/0 0/0 .text modeDrop__10daTurara_cFv */ +void daTurara_c::modeDrop() { + fopAcM_posMoveF(this, mColliderStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bgCheck(); +} + +/* 80B9DB90-80B9DBD0 0010F0 0040+00 1/1 0/0 0/0 .text bgCheck__10daTurara_cFv */ +void daTurara_c::bgCheck() { + if (mAcch.ChkGroundHit() & 0xff) { + if (field_0x98c == 0) { + init_modeDropEnd2(); + } else { + init_modeDropEnd(); + } + } +} + +/* 80B9DBD0-80B9DE48 001130 0278+00 1/1 0/0 0/0 .text init_modeDropEnd__10daTurara_cFv */ +void daTurara_c::init_modeDropEnd() { + if (mAcch.ChkWaterIn() == 0) { + dComIfGp_getVibration().StartShock(l_HIO.mShockStrength, 0xf, cXyz(0.0f, 1.0f, 0.0f)); + } + dComIfGp_particle_set(0x8a8f, ¤t.pos, NULL, NULL); + dComIfGp_particle_set(0x8a90, ¤t.pos, NULL, NULL); + dComIfGp_particle_set(0x8a91, ¤t.pos, NULL, NULL); + dComIfGp_particle_set(0x8a92, ¤t.pos, NULL, NULL); + field_0x984 = 1; + if (mpBgW) { + dComIfG_Bgsp().Release(mpBgW); + } + if (field_0x980) { + dComIfG_Bgsp().Regist(field_0x980, this); + field_0x980->Move(); + } + mCylCollider.OffCoSetBit(); + mCylCollider.OffAtSetBit(); + u8 swbit1 = getSwBit1(); + fopAcM_onSwitch(this, swbit1); + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_ICICLE_LAND, ¤t.pos, 0, dComIfGp_getReverb(roomNo)); + mMode = 3; +} + +/* 80B9DE48-80B9E078 0013A8 0230+00 1/0 0/0 0/0 .text modeDropEnd__10daTurara_cFv */ +void daTurara_c::modeDropEnd() { + if (mCylCollider.ChkTgHit()) { + dCcD_GObjInf* my_actor = mCylCollider.GetTgHitGObj(); + u32 att_type = my_actor->GetAtType(); + if ((att_type & AT_TYPE_UNK) || (att_type & AT_TYPE_20000000)) { + if (field_0x980) { + dComIfG_Bgsp().Release(field_0x980); + field_0x980->Move(); + } + csXyz my_vec(0, home.angle.y, 0); + fopAcM_createItemFromTable(¤t.pos, getItemTbleNum(), -1, + fopAcM_GetHomeRoomNo(this), &my_vec, 0, (cXyz*)NULL, + NULL, NULL, false); + } + dComIfGp_particle_set(0x8a8f, ¤t.pos, NULL, NULL); + dComIfGp_particle_set(0x8a90, ¤t.pos, NULL, NULL); + dComIfGp_particle_set(0x8a91, ¤t.pos, NULL, NULL); + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, ¤t.pos, 0, dComIfGp_getReverb(roomNo)); + u8 swbit3 = getSwBit3(); + fopAcM_onSwitch(this, swbit3); + fopAcM_delete(this); + } +} + +/* 80B9E078-80B9E338 0015D8 02C0+00 1/1 0/0 0/0 .text init_modeDropEnd2__10daTurara_cFv + */ +void daTurara_c::init_modeDropEnd2() { + if (mAcch.ChkWaterIn() == 0) { + dComIfGp_getVibration().StartShock(l_HIO.mShockStrength, 0xf, cXyz(0.0f, 1.0f, 0.0f)); + } + if (mpBgW) { + dComIfG_Bgsp().Release(mpBgW); + } + mCylCollider.OffCoSetBit(); + mCylCollider.OffAtSetBit(); + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, ¤t.pos, 0, dComIfGp_getReverb(roomNo)); + current.pos.y -= 100.0f; + cXyz first_vec(current.pos); + first_vec.y += 100.0f; + s16 my_proc = PROC_E_KK; + field_0x988 = fopAcM_create(my_proc, getSwBit1() << 0x10 | 3, &first_vec, fopAcM_GetRoomNo(this), 0, 0, 0xffffffff); + // FIXME: JUT assert needed here + cXyz second_vec(0.7f, 0.7f, 0.7f); + dComIfGp_particle_set(0x8a8f, &first_vec, NULL, &second_vec); + dComIfGp_particle_set(0x8a90, &first_vec, NULL, &second_vec); + dComIfGp_particle_set(0x8a91, &first_vec, NULL, &second_vec); + dComIfGp_particle_set(0x8a92, &first_vec, NULL, &second_vec); + u8 swbit = getSwBit3(); + fopAcM_onSwitch(this, swbit); + field_0x994 = 0; + mMode = 4; +} + +/* 80B9E338-80B9E388 001898 0050+00 1/0 0/0 0/0 .text modeDropEnd2__10daTurara_cFv */ +void daTurara_c::modeDropEnd2() { + if (fopAcM_SearchByID(field_0x988)) { + fopAcM_delete(this); + } +} + +/* 80B9E388-80B9E478 0018E8 00F0+00 1/0 0/0 0/0 .text Draw__10daTurara_cFv */ +int daTurara_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel[field_0x984], &tevStr); + if (field_0x98c == 0) { + fopAcM_setEffectMtx(this, mpModel[field_0x984]->getModelData()); + } + + dComIfGd_setListBG(); + if (field_0x994) { + mDoExt_modelUpdateDL(mpModel[field_0x984]); + } + dComIfGd_setList(); + return 1; +} + +/* 80B9E478-80B9E4E0 0019D8 0068+00 1/0 0/0 0/0 .text Delete__10daTurara_cFv */ +int daTurara_c::Delete() { + dComIfG_resDelete(&mPhaseReq, "M_Turara"); + if (field_0x980 && field_0x980->ChkUsed()) { + dComIfG_Bgsp().Release(field_0x980); + } + return 1; +} + +/* 80B9E4E0-80B9E50C 001A40 002C+00 1/0 0/0 0/0 .text daTurara_Draw__FP10daTurara_c */ +static int daTurara_Draw(daTurara_c* i_this) { + return i_this->Draw(); +} + +/* 80B9E50C-80B9E52C 001A6C 0020+00 1/0 0/0 0/0 .text daTurara_Execute__FP10daTurara_c */ +static int daTurara_Execute(daTurara_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80B9E52C-80B9E54C 001A8C 0020+00 1/0 0/0 0/0 .text daTurara_Delete__FP10daTurara_c */ +static int daTurara_Delete(daTurara_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80B9E54C-80B9E56C 001AAC 0020+00 1/0 0/0 0/0 .text daTurara_Create__FP10fopAc_ac_c */ +static int daTurara_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} /* 80B9EA58-80B9EA78 -00001 0020+00 1/0 0/0 0/0 .data l_daTurara_Method */ static actor_method_class l_daTurara_Method = { - (process_method_func)daTurara_Create__FP10fopAc_ac_c, - (process_method_func)daTurara_Delete__FP10daTurara_c, - (process_method_func)daTurara_Execute__FP10daTurara_c, + (process_method_func)daTurara_Draw, + (process_method_func)daTurara_Execute, + (process_method_func)daTurara_Delete, 0, - (process_method_func)daTurara_Draw__FP10daTurara_c, + (process_method_func)daTurara_Create, }; /* 80B9EA78-80B9EAA8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Turara */ @@ -301,459 +486,4 @@ extern actor_process_profile_definition g_profile_Obj_Turara = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80B9EAA8-80B9EAB4 00012C 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, -}; - -/* 80B9EAB4-80B9EAC0 000138 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, -}; - -/* 80B9EAC0-80B9EACC 000144 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80B9EACC-80B9EAF0 000150 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80B9E6A8, - (void*)NULL, - (void*)NULL, - (void*)func_80B9E6A0, -}; - -/* 80B9EAF0-80B9EAFC 000174 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80B9EAFC-80B9EB08 000180 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, -}; - -/* 80B9EB08-80B9EB20 00018C 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */ -SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17dEvLib_callback_cFv, - (void*)eventStart__17dEvLib_callback_cFv, - (void*)eventRun__17dEvLib_callback_cFv, - (void*)eventEnd__17dEvLib_callback_cFv, -}; - -/* 80B9EB20-80B9EB68 0001A4 0048+00 2/2 0/0 0/0 .data __vt__10daTurara_c */ -SECTION_DATA extern void* __vt__10daTurara_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daTurara_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__10daTurara_cFPPA3_A4_f, - (void*)Draw__10daTurara_cFv, - (void*)Delete__10daTurara_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, - (void*)NULL, - (void*)NULL, - (void*)func_80B9E698, - (void*)func_80B9E690, - (void*)eventRun__17dEvLib_callback_cFv, - (void*)eventEnd__17dEvLib_callback_cFv, - (void*)__dt__10daTurara_cFv, - (void*)eventStart__10daTurara_cFv, -}; - -/* 80B9EB68-80B9EB74 0001EC 000C+00 2/2 0/0 0/0 .data __vt__14daTurara_HIO_c */ -SECTION_DATA extern void* __vt__14daTurara_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daTurara_HIO_cFv, -}; - -/* 80B9EB74-80B9EB80 0001F8 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */ -SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18fOpAcm_HIO_entry_cFv, -}; - -/* 80B9EB80-80B9EB8C 000204 000C+00 4/4 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80B9CB8C-80B9CBF8 0000EC 006C+00 1/1 0/0 0/0 .text __ct__14daTurara_HIO_cFv */ -daTurara_HIO_c::daTurara_HIO_c() { - // NONMATCHING -} - -/* 80B9CBF8-80B9CC54 000158 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */ -// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() { -extern "C" void __dt__18fOpAcm_HIO_entry_cFv() { - // NONMATCHING -} - -/* 80B9CC54-80B9CC9C 0001B4 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* 80B9CC9C-80B9CD74 0001FC 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daTurara_cFv */ -void daTurara_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B9E908-80B9E938 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daTurara_c */ -SECTION_RODATA u8 const daTurara_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xF8, 0x40, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80B9E908, &daTurara_c::mCcDObjInfo); - -/* 80B9E938-80B9E940 000044 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */ -SECTION_RODATA static u8 const l_bmdIdx[8] = { - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, -}; -COMPILER_STRIP_GATE(0x80B9E938, &l_bmdIdx); - -/* 80B9E970-80B9E970 00007C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B9E970 = "M_Turara"; -#pragma pop - -/* 80B9CD74-80B9CED8 0002D4 0164+00 1/0 0/0 0/0 .text CreateHeap__10daTurara_cFv */ -void daTurara_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B9E940-80B9E944 00004C 0004+00 0/1 0/0 0/0 .rodata @3823 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3823 = 150.0f; -COMPILER_STRIP_GATE(0x80B9E940, &lit_3823); -#pragma pop - -/* 80B9E944-80B9E948 000050 0004+00 0/1 0/0 0/0 .rodata @3824 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3824 = 10000.0f; -COMPILER_STRIP_GATE(0x80B9E944, &lit_3824); -#pragma pop - -/* 80B9E948-80B9E94C 000054 0004+00 1/5 0/0 0/0 .rodata @3825 */ -SECTION_RODATA static u8 const lit_3825[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80B9E948, &lit_3825); - -/* 80B9CED8-80B9D29C 000438 03C4+00 1/1 0/0 0/0 .text create__10daTurara_cFv */ -void daTurara_c::create() { - // NONMATCHING -} - -/* 80B9D29C-80B9D30C 0007FC 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80B9D30C-80B9D37C 00086C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80B9D37C-80B9D3C4 0008DC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80B9D3C4-80B9D40C 000924 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80B9D40C-80B9D468 00096C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B9D468-80B9D4CC 0009C8 0064+00 1/1 0/0 0/0 .text setFallStat__10daTurara_cFv */ -void daTurara_c::setFallStat() { - // NONMATCHING -} - -/* 80B9D4CC-80B9D548 000A2C 007C+00 1/0 0/0 0/0 .text Execute__10daTurara_cFPPA3_A4_f */ -void daTurara_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B9E94C-80B9E950 000058 0004+00 0/1 0/0 0/0 .rodata @3949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3949 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80B9E94C, &lit_3949); -#pragma pop - -/* 80B9E950-80B9E954 00005C 0004+00 0/1 0/0 0/0 .rodata @3950 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3950 = 170.0f; -COMPILER_STRIP_GATE(0x80B9E950, &lit_3950); -#pragma pop - -/* 80B9E954-80B9E958 000060 0004+00 0/1 0/0 0/0 .rodata @3951 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3951 = 130.0f; -COMPILER_STRIP_GATE(0x80B9E954, &lit_3951); -#pragma pop - -/* 80B9E958-80B9E95C 000064 0004+00 0/1 0/0 0/0 .rodata @3952 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3952 = 510.0f; -COMPILER_STRIP_GATE(0x80B9E958, &lit_3952); -#pragma pop - -/* 80B9E95C-80B9E960 000068 0004+00 0/1 0/0 0/0 .rodata @3953 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3953 = 50.0f; -COMPILER_STRIP_GATE(0x80B9E95C, &lit_3953); -#pragma pop - -/* 80B9EB98-80B9EBA4 000008 000C+00 1/1 0/0 0/0 .bss @3653 */ -static u8 lit_3653[12]; - -/* 80B9EBA4-80B9EBC4 000014 0020+00 5/5 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[32]; - -/* 80B9EBC4-80B9EBC8 000034 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80B9EBC4[4]; - -/* 80B9D548-80B9D72C 000AA8 01E4+00 1/1 0/0 0/0 .text move__10daTurara_cFv */ -void daTurara_c::move() { - // NONMATCHING -} - -/* 80B9D72C-80B9D738 000C8C 000C+00 1/1 0/0 0/0 .text init_modeWait__10daTurara_cFv */ -void daTurara_c::init_modeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B9E960-80B9E964 00006C 0004+00 2/5 0/0 0/0 .rodata @4027 */ -SECTION_RODATA static f32 const lit_4027 = 1.0f; -COMPILER_STRIP_GATE(0x80B9E960, &lit_4027); - -/* 80B9E964-80B9E968 000070 0004+00 2/5 0/0 0/0 .rodata @4028 */ -SECTION_RODATA static f32 const lit_4028 = -1.0f; -COMPILER_STRIP_GATE(0x80B9E964, &lit_4028); - -/* 80B9D738-80B9D998 000C98 0260+00 1/0 0/0 0/0 .text modeWait__10daTurara_cFv */ -void daTurara_c::modeWait() { - // NONMATCHING -} - -/* 80B9D998-80B9D9BC 000EF8 0024+00 2/1 0/0 0/0 .text eventStart__10daTurara_cFv */ -void daTurara_c::eventStart() { - // NONMATCHING -} - -/* 80B9D9BC-80B9DA00 000F1C 0044+00 1/1 0/0 0/0 .text init_modeDropInit__10daTurara_cFv - */ -void daTurara_c::init_modeDropInit() { - // NONMATCHING -} - -/* 80B9DA00-80B9DA44 000F60 0044+00 1/0 0/0 0/0 .text modeDropInit__10daTurara_cFv */ -void daTurara_c::modeDropInit() { - // NONMATCHING -} - -/* 80B9DA44-80B9DB44 000FA4 0100+00 1/1 0/0 0/0 .text init_modeDrop__10daTurara_cFv */ -void daTurara_c::init_modeDrop() { - // NONMATCHING -} - -/* 80B9DB44-80B9DB90 0010A4 004C+00 1/0 0/0 0/0 .text modeDrop__10daTurara_cFv */ -void daTurara_c::modeDrop() { - // NONMATCHING -} - -/* 80B9DB90-80B9DBD0 0010F0 0040+00 1/1 0/0 0/0 .text bgCheck__10daTurara_cFv */ -void daTurara_c::bgCheck() { - // NONMATCHING -} - -/* 80B9DBD0-80B9DE48 001130 0278+00 1/1 0/0 0/0 .text init_modeDropEnd__10daTurara_cFv */ -void daTurara_c::init_modeDropEnd() { - // NONMATCHING -} - -/* 80B9DE48-80B9E078 0013A8 0230+00 1/0 0/0 0/0 .text modeDropEnd__10daTurara_cFv */ -void daTurara_c::modeDropEnd() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80B9E968-80B9E96C 000074 0004+00 0/1 0/0 0/0 .rodata @4263 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4263 = 100.0f; -COMPILER_STRIP_GATE(0x80B9E968, &lit_4263); -#pragma pop - -/* 80B9E96C-80B9E970 000078 0004+00 0/1 0/0 0/0 .rodata @4264 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4264 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80B9E96C, &lit_4264); -#pragma pop - -/* 80B9E078-80B9E338 0015D8 02C0+00 1/1 0/0 0/0 .text init_modeDropEnd2__10daTurara_cFv - */ -void daTurara_c::init_modeDropEnd2() { - // NONMATCHING -} - -/* 80B9E338-80B9E388 001898 0050+00 1/0 0/0 0/0 .text modeDropEnd2__10daTurara_cFv */ -void daTurara_c::modeDropEnd2() { - // NONMATCHING -} - -/* 80B9E388-80B9E478 0018E8 00F0+00 1/0 0/0 0/0 .text Draw__10daTurara_cFv */ -void daTurara_c::Draw() { - // NONMATCHING -} - -/* 80B9E478-80B9E4E0 0019D8 0068+00 1/0 0/0 0/0 .text Delete__10daTurara_cFv */ -void daTurara_c::Delete() { - // NONMATCHING -} - -/* 80B9E4E0-80B9E50C 001A40 002C+00 1/0 0/0 0/0 .text daTurara_Draw__FP10daTurara_c */ -static void daTurara_Draw(daTurara_c* param_0) { - // NONMATCHING -} - -/* 80B9E50C-80B9E52C 001A6C 0020+00 1/0 0/0 0/0 .text daTurara_Execute__FP10daTurara_c */ -static void daTurara_Execute(daTurara_c* param_0) { - // NONMATCHING -} - -/* 80B9E52C-80B9E54C 001A8C 0020+00 1/0 0/0 0/0 .text daTurara_Delete__FP10daTurara_c */ -static void daTurara_Delete(daTurara_c* param_0) { - // NONMATCHING -} - -/* 80B9E54C-80B9E56C 001AAC 0020+00 1/0 0/0 0/0 .text daTurara_Create__FP10fopAc_ac_c */ -static void daTurara_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80B9E56C-80B9E5B4 001ACC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80B9E5B4-80B9E620 001B14 006C+00 2/1 0/0 0/0 .text __dt__14daTurara_HIO_cFv */ -daTurara_HIO_c::~daTurara_HIO_c() { - // NONMATCHING -} - -/* 80B9E620-80B9E690 001B80 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_Turara_cpp */ -void __sinit_d_a_obj_Turara_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80B9E620, __sinit_d_a_obj_Turara_cpp); -#pragma pop - -/* 80B9E690-80B9E698 001BF0 0008+00 1/0 0/0 0/0 .text @1448@eventStart__10daTurara_cFv */ -static void func_80B9E690() { - // NONMATCHING -} - -/* 80B9E698-80B9E6A0 001BF8 0008+00 1/0 0/0 0/0 .text @1448@__dt__10daTurara_cFv */ -static void func_80B9E698() { - // NONMATCHING -} - -/* 80B9E6A0-80B9E6A8 001C00 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80B9E6A0() { - // NONMATCHING -} - -/* 80B9E6A8-80B9E6B0 001C08 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80B9E6A8() { - // NONMATCHING -} - -/* 80B9E6B0-80B9E6F8 001C10 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */ -// dEvLib_callback_c::~dEvLib_callback_c() { -extern "C" void __dt__17dEvLib_callback_cFv() { - // NONMATCHING -} - -/* 80B9E6F8-80B9E700 001C58 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv - */ -// bool dEvLib_callback_c::eventStart() { -extern "C" bool eventStart__17dEvLib_callback_cFv() { - return true; -} - -/* 80B9E700-80B9E708 001C60 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ -// bool dEvLib_callback_c::eventRun() { -extern "C" bool eventRun__17dEvLib_callback_cFv() { - return true; -} - -/* 80B9E708-80B9E710 001C68 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ -// bool dEvLib_callback_c::eventEnd() { -extern "C" bool eventEnd__17dEvLib_callback_cFv() { - return true; -} - -/* 80B9E710-80B9E8E0 001C70 01D0+00 2/1 0/0 0/0 .text __dt__10daTurara_cFv */ -daTurara_c::~daTurara_c() { - // NONMATCHING -} - /* 80B9E970-80B9E970 00007C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */