diff --git a/configure.py b/configure.py index 2d76a41054c..2783453f0a7 100755 --- a/configure.py +++ b/configure.py @@ -1951,7 +1951,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_heavySw"), ActorRel(NonMatching, "d_a_obj_hfuta"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_hsTarget"), - ActorRel(NonMatching, "d_a_obj_ice_l"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ice_l"), ActorRel(NonMatching, "d_a_obj_ice_s"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_iceblock"), ActorRel(NonMatching, "d_a_obj_iceleaf"), diff --git a/include/d/actor/d_a_obj_ice_l.h b/include/d/actor/d_a_obj_ice_l.h index 628616f5d1c..59a4bce0778 100644 --- a/include/d/actor/d_a_obj_ice_l.h +++ b/include/d/actor/d_a_obj_ice_l.h @@ -34,7 +34,6 @@ public: /* 0x5AE */ u8 field_0x5AE[0x5B0 - 0x5AE]; /* 0x5B0 */ u8 field_0x5b0; /* 0x5B1 */ u8 field_0x5b1; - /* 0x5B2 */ u8 field_0x5B2[0x5B4 - 0x5B2]; /* 0x5B4 */ cXyz field_0x5b4; /* 0x5C0 */ f32 field_0x5c0; /* 0x5C4 */ u8 field_0x5C4[0x5CC - 0x5C4]; @@ -43,15 +42,12 @@ public: /* 0x5D4 */ s16 field_0x5d4; /* 0x5D6 */ s16 field_0x5d6; /* 0x5D8 */ csXyz field_0x5d8; - /* 0x5DE */ u8 field_0x5DE[0x5E0 - 0x5DE]; /* 0x5E0 */ f32 field_0x5e0; /* 0x5E4 */ s16 field_0x5e4; /* 0x5E6 */ u8 field_0x5e6; - /* 0x5E7 */ u8 field_0x5E7[0x5E8 - 0x5E7]; /* 0x5E8 */ cXyz field_0x5e8; /* 0x5F4 */ s16 field_0x5f4; - /* 0x5F6 */ u8 field_0x5F6[0x5F8 - 0x5F6]; - /* 0x5F8 */ dCcD_Stts field_0x5f8; + /* 0x5F8 */ dCcD_Stts mStts; /* 0x634 */ J3DModel* mpModel; /* 0x638 */ request_of_phase_process_class mPhase; }; diff --git a/src/d/actor/d_a_obj_ice_l.cpp b/src/d/actor/d_a_obj_ice_l.cpp index 8f83aa88711..02c13a6c5ca 100644 --- a/src/d/actor/d_a_obj_ice_l.cpp +++ b/src/d/actor/d_a_obj_ice_l.cpp @@ -9,100 +9,12 @@ #include "d/d_com_inf_game.h" #include "d/actor/d_a_player.h" #include "d/d_procname.h" -#include "dol2asm.h" +#include "d/d_s_play.h" +#include -// -// Forward References: -// - -extern "C" void RideOn_Angle__12daObjIce_l_cFRsfsf(); -extern "C" void Check_RideOn__12daObjIce_l_cF4cXyz(); -extern "C" void initBaseMtx__12daObjIce_l_cFv(); -extern "C" void setBaseMtx__12daObjIce_l_cFv(); -extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" static void daObjIce_l_Draw__FP12daObjIce_l_c(); -extern "C" static void daObjIce_l_Execute__FP12daObjIce_l_c(); -extern "C" static bool daObjIce_l_IsDelete__FP12daObjIce_l_c(); -extern "C" static void daObjIce_l_Delete__FP12daObjIce_l_c(); -extern "C" static void daObjIce_l_Create__FP10fopAc_ac_c(); -extern "C" void create__12daObjIce_l_cFv(); -extern "C" void CreateHeap__12daObjIce_l_cFv(); -extern "C" void Create__12daObjIce_l_cFv(); -extern "C" void Execute__12daObjIce_l_cFPPA3_A4_f(); -extern "C" void Draw__12daObjIce_l_cFv(); -extern "C" void Delete__12daObjIce_l_cFv(); -extern "C" extern char const* const d_a_obj_ice_l__stringBase0; - -// -// External References: -// - -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -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 getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void __ct__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 __ct__10dCcD_GSttsFv(); -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_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 sincosTable___5JMath[65536]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C2078C-80C20794 000000 0004+04 4/4 0/0 0/0 .rodata @3675 */ -SECTION_RODATA static u8 const lit_3675[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C2078C, &lit_3675); - -/* 80C20794-80C2079C 000008 0008+00 1/3 0/0 0/0 .rodata @3677 */ -SECTION_RODATA static u8 const lit_3677[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C20794, &lit_3677); +f32 dummyLiteral() { + return 0.0f; +} /* 80C1F9F8-80C1FA60 000078 0068+00 1/1 0/0 0/0 .text RideOn_Angle__12daObjIce_l_cFRsfsf */ @@ -110,105 +22,35 @@ void daObjIce_l_c::RideOn_Angle(s16& i_angle, f32 param_1, s16 param_2, f32 para cLib_addCalcAngleS(&i_angle, param_2 * (param_1 / param_3), 1, 0x100, 1); } -/* ############################################################################################## */ -/* 80C2079C-80C207A4 000010 0008+00 0/2 0/0 0/0 .rodata @3733 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3733[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C2079C, &lit_3733); -#pragma pop - -/* 80C207A4-80C207AC 000018 0008+00 0/2 0/0 0/0 .rodata @3734 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3734[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C207A4, &lit_3734); -#pragma pop - -/* 80C207AC-80C207B4 000020 0008+00 0/2 0/0 0/0 .rodata @3735 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3735[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C207AC, &lit_3735); -#pragma pop - -/* 80C207B4-80C207B8 000028 0004+00 0/1 0/0 0/0 .rodata @3736 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3736 = 352.0f; -COMPILER_STRIP_GATE(0x80C207B4, &lit_3736); -#pragma pop - -/* 80C207B8-80C207BC 00002C 0004+00 0/2 0/0 0/0 .rodata @3737 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3737 = 600.0f; -COMPILER_STRIP_GATE(0x80C207B8, &lit_3737); -#pragma pop - -/* 80C207BC-80C207C0 000030 0004+00 0/1 0/0 0/0 .rodata @3738 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3738 = 500.0f; -COMPILER_STRIP_GATE(0x80C207BC, &lit_3738); -#pragma pop - -/* 80C207C0-80C207C4 000034 0004+00 0/1 0/0 0/0 .rodata @3739 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3739 = 48.0f; -COMPILER_STRIP_GATE(0x80C207C0, &lit_3739); -#pragma pop - -/* 80C207C4-80C207C8 000038 0004+00 0/1 0/0 0/0 .rodata @3740 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3740 = 0x3C75C28F; -COMPILER_STRIP_GATE(0x80C207C4, &lit_3740); -#pragma pop - -/* 80C207C8-80C207CC 00003C 0004+00 0/2 0/0 0/0 .rodata @3741 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3741 = 100.0f; -COMPILER_STRIP_GATE(0x80C207C8, &lit_3741); -#pragma pop - /* 80C1FA60-80C1FCCC 0000E0 026C+00 1/1 0/0 0/0 .text Check_RideOn__12daObjIce_l_cF4cXyz */ -// NONMATCHING - float match issues int daObjIce_l_c::Check_RideOn(cXyz param_0) { fopAc_ac_c* player_p = (fopAc_ac_c*)daPy_getPlayerActorClass(); + f32 player_speed = 0.0f; s16 var_r29 = 0; field_0x5e6 = 1; s16 target = cLib_targetAngleY(¤t.pos, ¶m_0); f32 dist_to_pos = current.pos.abs(param_0); - f32 var_f31 = cM_scos(target - shape_angle.y); - var_f31 *= dist_to_pos; - - f32 var_f30 = cM_ssin(target - shape_angle.y); - var_f30 *= -dist_to_pos; + f32 var_f31 = dist_to_pos * cM_scos(target - shape_angle.y); + f32 var_f30 = -dist_to_pos * cM_ssin(target - shape_angle.y); RideOn_Angle(field_0x5d8.x, var_f31, 352.0f / field_0x5b4.x, field_0x5b4.x * 600.0f); RideOn_Angle(field_0x5d8.z, var_f30, 352.0f / field_0x5b4.x, field_0x5b4.x * 500.0f); + f32 var_f27 = 0.0f; field_0x5e6 = 1; - f32 player_speed = fopAcM_GetSpeedF(player_p); + player_speed = fopAcM_GetSpeedF(player_p); if (player_speed > 0.0f) { - var_r29 = player_speed * 48.0f; + var_r29 = (48.0f + HREG_F(15)) * player_speed; field_0x5ac = 0x150; } - field_0x5e0 = 0.0f; - cLib_addCalc(&field_0x5a0, var_r29, 0.015f, 100.0f, 0.0f); + f32 var_f26 = 1.0f - std::abs(var_f30) / 300.0f; + field_0x5e0 = (1.0f - ((std::abs(var_f31) / 2500.0f) * var_f26)) * HREG_F(3); + + cLib_addCalc(&field_0x5a0, var_r29, 0.015f + HREG_F(13), 100.0f, 0.0f); return 0; } @@ -228,21 +70,6 @@ void daObjIce_l_c::setBaseMtx() { cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } -/* ############################################################################################## */ -/* 80C207CC-80C207D0 000040 0004+00 0/1 0/0 0/0 .rodata @3843 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3843 = -1.0f; -COMPILER_STRIP_GATE(0x80C207CC, &lit_3843); -#pragma pop - -/* 80C207D0-80C207D4 000044 0004+00 0/1 0/0 0/0 .rodata @3844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3844 = -6.0f; -COMPILER_STRIP_GATE(0x80C207D0, &lit_3844); -#pragma pop - /* 80C1FD5C-80C20034 0003DC 02D8+00 1/1 0/0 0/0 .text * rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { @@ -284,7 +111,6 @@ static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2 } } - /* 80C20034-80C20060 0006B4 002C+00 1/0 0/0 0/0 .text daObjIce_l_Draw__FP12daObjIce_l_c */ static int daObjIce_l_Draw(daObjIce_l_c* i_this) { @@ -314,105 +140,8 @@ static int daObjIce_l_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->create(); } -/* ############################################################################################## */ -/* 80C207D4-80C207D8 000048 0004+00 0/1 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3934 = 1.0f; -COMPILER_STRIP_GATE(0x80C207D4, &lit_3934); -#pragma pop - -/* 80C207D8-80C207DC 00004C 0004+00 0/2 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 300.0f; -COMPILER_STRIP_GATE(0x80C207D8, &lit_3935); -#pragma pop - -/* 80C207DC-80C207E0 000050 0004+00 0/1 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 32000.0f; -COMPILER_STRIP_GATE(0x80C207DC, &lit_3936); -#pragma pop - -/* 80C207E0-80C207E4 000054 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = 1000.0f; -COMPILER_STRIP_GATE(0x80C207E0, &lit_3937); -#pragma pop - -/* 80C207E4-80C207EC 000058 0004+04 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938[1 + 1 /* padding */] = { - 3.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C207E4, &lit_3938); -#pragma pop - -/* 80C207EC-80C207F4 000060 0008+00 0/1 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3940[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C207EC, &lit_3940); -#pragma pop - -/* 80C2081C-80C2081C 000090 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C2081C = "V_Ice_l"; -SECTION_DEAD static char const* const stringBase_80C20824 = "Ice_l.dzb"; -#pragma pop - /* 80C20838-80C2083C -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static char* l_arcName = "V_Ice_l"; - -/* 80C2083C-80C2085C -00001 0020+00 1/0 0/0 0/0 .data l_daObjIce_l_Method */ -static actor_method_class l_daObjIce_l_Method = { - (process_method_func)daObjIce_l_Create__FP10fopAc_ac_c, - (process_method_func)daObjIce_l_Delete__FP12daObjIce_l_c, - (process_method_func)daObjIce_l_Execute__FP12daObjIce_l_c, - (process_method_func)daObjIce_l_IsDelete__FP12daObjIce_l_c, - (process_method_func)daObjIce_l_Draw__FP12daObjIce_l_c, -}; - -/* 80C2085C-80C2088C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ice_l */ -extern actor_process_profile_definition g_profile_Obj_Ice_l = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Ice_l, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x00000640, // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 456, // mPriority - &l_daObjIce_l_Method, // sub_method - 0x00044180, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80C2088C-80C208B4 000054 0028+00 1/1 0/0 0/0 .data __vt__12daObjIce_l_c */ -SECTION_DATA extern void* __vt__12daObjIce_l_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__12daObjIce_l_cFv, - (void*)Create__12daObjIce_l_cFv, - (void*)Execute__12daObjIce_l_cFPPA3_A4_f, - (void*)Draw__12daObjIce_l_cFv, - (void*)Delete__12daObjIce_l_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; +static char* l_arcName = "V_Ice_l"; /* 80C200CC-80C2030C 00074C 0240+00 1/1 0/0 0/0 .text create__12daObjIce_l_cFv */ int daObjIce_l_c::create() { @@ -442,7 +171,7 @@ int daObjIce_l_c::create() { } } - u16 prm1 = (fopAcM_GetParam(this) >> 8) & 0xFF; + u8 prm1 = (fopAcM_GetParam(this) >> 8) & 0xFF; if (prm1 == 0xFF) { prm1 = 0; } @@ -483,106 +212,37 @@ int daObjIce_l_c::Create() { return cPhs_COMPLEATE_e; } -/* ############################################################################################## */ -/* 80C207F4-80C207F8 000068 0004+00 0/1 0/0 0/0 .rodata @3994 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3994 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x80C207F4, &lit_3994); -#pragma pop - -/* 80C207F8-80C207FC 00006C 0004+00 0/1 0/0 0/0 .rodata @3995 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3995 = 848.0f; -COMPILER_STRIP_GATE(0x80C207F8, &lit_3995); -#pragma pop - -/* 80C207FC-80C20800 000070 0004+00 0/1 0/0 0/0 .rodata @3996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3996 = 1.5f; -COMPILER_STRIP_GATE(0x80C207FC, &lit_3996); -#pragma pop - -/* 80C20800-80C20804 000074 0004+00 0/1 0/0 0/0 .rodata @3997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3997 = 21.0f; -COMPILER_STRIP_GATE(0x80C20800, &lit_3997); -#pragma pop - -/* 80C20804-80C20808 000078 0004+00 0/1 0/0 0/0 .rodata @3998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3998 = 5.0f; -COMPILER_STRIP_GATE(0x80C20804, &lit_3998); -#pragma pop - -/* 80C20808-80C2080C 00007C 0004+00 0/1 0/0 0/0 .rodata @3999 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3999 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C20808, &lit_3999); -#pragma pop - -/* 80C2080C-80C20810 000080 0004+00 0/1 0/0 0/0 .rodata @4000 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4000 = 15.0f; -COMPILER_STRIP_GATE(0x80C2080C, &lit_4000); -#pragma pop - -/* 80C20810-80C20814 000084 0004+00 0/1 0/0 0/0 .rodata @4001 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4001 = 0.5f; -COMPILER_STRIP_GATE(0x80C20810, &lit_4001); -#pragma pop - -/* 80C20814-80C20818 000088 0004+00 0/1 0/0 0/0 .rodata @4002 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4002 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C20814, &lit_4002); -#pragma pop - -/* 80C20818-80C2081C 00008C 0004+00 0/1 0/0 0/0 .rodata @4003 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4003 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C20818, &lit_4003); -#pragma pop - /* 80C203C4-80C206AC 000A44 02E8+00 1/0 0/0 0/0 .text Execute__12daObjIce_l_cFPPA3_A4_f */ // NONMATCHING int daObjIce_l_c::Execute(Mtx** param_0) { daPy_py_c* player_p = daPy_getPlayerActorClass(); - fopAcM_GetPosition(player_p); + cXyz& pos = fopAcM_GetPosition(player_p); cXyz sp68(current.pos.x, current.pos.y - 300.0f, current.pos.z); + f32 var_f31 = 0.0f; + var_f31 = 10.0f; - cLib_chaseF(&field_0x5a4, 0.0f, 0.04f); - field_0x5d4 += (field_0x5a0 * 1.5f) + 848.0f; - field_0x5d6 += (field_0x5a0 * 1.5f) + 848.0f; + cLib_chaseF(&field_0x5a4, 0.0f, yREG_F(3) + 0.04f); + field_0x5d4 += (TREG_S(1) + 848) + ((HREG_F(1) + 1.5f) * field_0x5a0) + (field_0x5a4 * HREG_F(9)); + field_0x5d6 += (TREG_S(2) + 848) + ((HREG_F(2) + 1.5f) * field_0x5a0) + (field_0x5a4 * HREG_F(9)); cLib_addCalc(¤t.pos.y, - field_0x5e0 + (field_0x5c0 + (21.0f * field_0x5a4) + - (cM_ssin(field_0x5d6 + field_0x5e4) * 5.0f)), + field_0x5e0 + (field_0x5c0 + (field_0x5a4 * (11.0f + var_f31)) + + (cM_ssin(field_0x5d6 + oREG_S(3) + field_0x5e4) * (HREG_F(4) + 5.0f))), 0.1f, 15.0f, 0.1f); cLib_addCalcAngleS(&shape_angle.x, field_0x5d8.x + - (field_0x5ac * 0.5f * cM_ssin(0x2000 + field_0x5d4 + field_0x5e4)), + ((nREG_F(0) + 0.5f) * field_0x5ac * cM_ssin(0x2000 + field_0x5d4 + oREG_S(1) + field_0x5e4)), 2, 0x100, 1); cLib_addCalcAngleS(&shape_angle.z, - field_0x5d8.z + (field_0x5ac * 0.5f * cM_ssin(field_0x5d6 + field_0x5e4)), 2, + field_0x5d8.z + ((nREG_F(1) + 0.5f) * field_0x5ac * cM_ssin(field_0x5d6 + oREG_S(2) + field_0x5e4)), 2, 0x100, 1); if (field_0x5e6 == 0) { cLib_addCalcAngleS(&field_0x5d8.x, 0, 2, 0x100, 1); cLib_addCalcAngleS(&field_0x5d8.z, 0, 2, 0x100, 1); cLib_addCalc(&field_0x5e0, 0.0f, 0.2f, 100.0f, 0.0f); - cLib_addCalc(&field_0x5a0, 0.0f, 0.05f, 100.0f, 0.0f); + cLib_addCalc(&field_0x5a0, 0.0f, 0.05f + HREG_F(13), 100.0f, 0.0f); cLib_chaseAngleS(&field_0x5ac, 0x120, 0x10); } @@ -608,3 +268,30 @@ int daObjIce_l_c::Delete() { dComIfG_resDelete(&mPhase, l_arcName); return 1; } + +/* 80C2083C-80C2085C -00001 0020+00 1/0 0/0 0/0 .data l_daObjIce_l_Method */ +static actor_method_class l_daObjIce_l_Method = { + (process_method_func)daObjIce_l_Create, + (process_method_func)daObjIce_l_Delete, + (process_method_func)daObjIce_l_Execute, + (process_method_func)daObjIce_l_IsDelete, + (process_method_func)daObjIce_l_Draw, +}; + +/* 80C2085C-80C2088C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ice_l */ +extern actor_process_profile_definition g_profile_Obj_Ice_l = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Ice_l, // mProcName + &g_fpcLf_Method.base, // sub_method + 0x00000640, // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 456, // mPriority + &l_daObjIce_l_Method, // sub_method + 0x00044180, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};