diff --git a/configure.py b/configure.py index 2cb15fd4e..fbdbcc37d 100755 --- a/configure.py +++ b/configure.py @@ -1409,7 +1409,7 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_gryw00", extra_cflags=['-pragma "nosyminline on"']), ActorRel(Matching, "d_a_obj_hfuck1", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_hole", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(NonMatching, "d_a_obj_ice"), + ActorRel(Matching, "d_a_obj_ice", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_ikada"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_kanat"), ActorRel(NonMatching, "d_a_obj_leaves"), diff --git a/include/d/actor/d_a_obj_ice.h b/include/d/actor/d_a_obj_ice.h index fbfd58a49..01848e250 100644 --- a/include/d/actor/d_a_obj_ice.h +++ b/include/d/actor/d_a_obj_ice.h @@ -3,19 +3,30 @@ #include "f_op/f_op_actor.h" #include "d/d_cc_d.h" +#include "d/d_a_obj.h" + +class dBgW; +class dBgS; class daObjIce_c : public fopAc_ac_c { + typedef void (daObjIce_c::*memberFuncPtr)(); + + enum Param_e { + PRM_SWSAVE_W = 8, + PRM_SWSAVE_S = 0, + }; + public: - void param_get_swSave() const {} - void param_on_swSave() const {} + s32 param_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); } + void param_on_swSave() const { } inline void setEffectMtx(); - void chk_appear(); + u8 chk_appear(); void set_mtx(); void init_mtx(); - void solidHeapCB(fopAc_ac_c*); - void create_heap(); - void tg_hitCallback(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + static BOOL solidHeapCB(fopAc_ac_c*); + bool create_heap(); + static void tg_hitCallback(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); cPhs_State _create(); bool _delete(); void wait_act_proc(); @@ -24,7 +35,19 @@ public: bool _draw(); public: - /* Place member variables here */ -}; + /* 0x290 */ request_of_phase_process_class mPhase; + /* 0x298 */ J3DModel* mModel; + /* 0x29C */ dCcD_Stts mStts; + /* 0x2D8 */ dCcD_Cyl mCyl; + /* 0x408 */ dBgW* mBgw; + /* 0x40C */ Mtx m40C; + /* 0x43C */ memberFuncPtr m43C; + /* 0x448 */ u8 m448; + /* 0x44C */ f32 m44C; + /* 0x450 */ f32 m450; + /* 0x454 */ f32 m454; + /* 0x458 */ s32 m458; + /* 0x45C */ s32 m45C; +}; // size = 0x460 #endif /* D_A_OBJ_ICE_H */ diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 142a6301e..332090e26 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -189,6 +189,7 @@ public: u8 GetRoomId() { return mRoomId; } void SetRoomId(int id) { mRoomId = id; } fpc_ProcID GetAtOldApid() { return mAtOldApid; } + fpc_ProcID GetTgApid() { return mTgApid; } fpc_ProcID GetTgOldApid() { return mTgOldApid; } bool ChkNoActor() { return mFlag & 1; } bool ChkNoneActorPerfTblId() { return mActorPerfTblId == 0xFFFF; } diff --git a/src/d/actor/d_a_obj_ice.cpp b/src/d/actor/d_a_obj_ice.cpp index 945a7de10..27c9e533b 100644 --- a/src/d/actor/d_a_obj_ice.cpp +++ b/src/d/actor/d_a_obj_ice.cpp @@ -4,84 +4,533 @@ */ #include "d/actor/d_a_obj_ice.h" -#include "d/d_procname.h" +#include "d/d_camera.h" +#include "d/d_com_inf_game.h" +#include "d/d_kankyo_rain.h" #include "d/d_priority.h" +#include "d/d_procname.h" +#include "d/res/res_ikori.h" +#include "f_op/f_op_actor_mng.h" +#include "f_op/f_op_camera.h" +#include "m_Do/m_Do_hostIO.h" -class J3DMaterial; +#if VERSION == VERSION_DEMO +class daObjIce_HIO_c : public JORReflexible { +public: + daObjIce_HIO_c(); + virtual ~daObjIce_HIO_c() {} + + void genMessage(JORMContext* ctx); + +public: + /* 0x04 */ s8 m04; + /* 0x08 */ f32 m08; + /* 0x0C */ f32 m0C; + /* 0x10 */ f32 m10; + /* 0x14 */ f32 m14; + /* 0x18 */ f32 m18; + /* 0x1C */ f32 m1C; + /* 0x20 */ f32 m20; + /* 0x24 */ f32 m24; + /* 0x28 */ f32 m28; + /* 0x2C */ f32 m2C; + /* 0x30 */ f32 m30; + /* 0x34 */ f32 m34; + /* 0x38 */ u8 m38; + /* 0x39 */ u8 m39; + /* 0x3A */ u8 m3A; + /* 0x3B */ u8 m3B; +}; // size = 0x3C + +static daObjIce_HIO_c l_HIO; +#endif + +namespace { +static const char l_arcname[] = "Ikori"; +static const f32 l_co_radius_table[] = {40.0f, 65.0f, 75.0f}; +static const f32 l_co_height_table[] = {120.0f, 90.0f, 60.0f}; +static const dCcD_SrcCyl l_cyl_src = { + // dCcD_SrcGObjInf + { + /* Flags */ 0, + /* SrcObjAt Type */ 0, + /* SrcObjAt Atp */ 0, + /* SrcObjAt SPrm */ 0, + /* SrcObjTg Type */ AT_TYPE_ALL & ~AT_TYPE_WATER & ~AT_TYPE_WIND & ~AT_TYPE_UNK400000 & ~AT_TYPE_LIGHT, + /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsOther_e, + /* SrcObjCo SPrm */ 0, + /* SrcGObjAt Se */ 0, + /* SrcGObjAt HitMark */ dCcG_AtHitMark_None_e, + /* SrcGObjAt Spl */ dCcG_At_Spl_UNK0, + /* SrcGObjAt Mtrl */ 0, + /* SrcGObjAt SPrm */ 0, + /* SrcGObjTg Se */ 0, + /* SrcGObjTg HitMark */ 0, + /* SrcGObjTg Spl */ dCcG_Tg_Spl_UNK0, + /* SrcGObjTg Mtrl */ 0, + /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e, + /* SrcGObjCo SPrm */ 0, + }, + // cM3dGCylS + {{ + /* Center */ {0.0f, 0.0f, 0.0f}, + /* Radius */ 65.0f, + /* Height */ 140.0f, + }}, +}; +} // namespace + +#if VERSION == VERSION_DEMO +daObjIce_HIO_c::daObjIce_HIO_c() { + m04 = -1; + m08 = 40.0f; + m0C = 120.0f; + m10 = 65.0f; + m14 = 90.0f; + m18 = 75.0f; + m1C = 60.0f; + m20 = 1.0f; + m24 = 0.0009f; + m28 = 80.0f; + m2C = 150.0f; + m30 = 1.8f; + m34 = 0.5f; + m38 = 0; + m39 = 0; + m3A = 0; + m3B = 1; +} +#endif /* 00000078-000000F0 .text chk_appear__10daObjIce_cFv */ -void daObjIce_c::chk_appear() { - /* Nonmatching */ +u8 daObjIce_c::chk_appear() { + s32 switchIndex = param_get_swSave(); + u8 uVar2 = 0; + if (switchIndex != 0xFF) { + if (!fopAcM_isSwitch(this, switchIndex)) { + uVar2 = 1; + } + } else { + uVar2 = 1; + } + return uVar2; } /* 000000F0-0000018C .text set_mtx__10daObjIce_cFv */ void daObjIce_c::set_mtx() { - /* Nonmatching */ + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::XYZrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::scaleM(m44C, m450, m44C); + mModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); + cMtx_copy(mDoMtx_stack_c::get(), m40C); } /* 0000018C-000001C8 .text init_mtx__10daObjIce_cFv */ void daObjIce_c::init_mtx() { - /* Nonmatching */ + mModel->setBaseScale(scale); + set_mtx(); } /* 000001C8-000001EC .text solidHeapCB__10daObjIce_cFP10fopAc_ac_c */ -void daObjIce_c::solidHeapCB(fopAc_ac_c*) { - /* Nonmatching */ +BOOL daObjIce_c::solidHeapCB(fopAc_ac_c* a_this) { + return ((daObjIce_c*)a_this)->create_heap(); } /* 000001EC-000002E4 .text create_heap__10daObjIce_cFv */ -void daObjIce_c::create_heap() { - /* Nonmatching */ +bool daObjIce_c::create_heap() { + bool uVar5 = true; + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcname, IKORI_BDL_VICE); + + if (modelData == NULL) { + JUT_ASSERT(DEMO_SELECT(392, 395), FALSE); + uVar5 = false; + } else { + mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222); + + cBgD_t* pcVar3 = (cBgD_t*)dComIfG_getObjectRes(l_arcname, IKORI_DZB_VICE); + mBgw = dBgW_NewSet(pcVar3, cBgW::MOVE_BG_e, &m40C); + + if (mModel == NULL || mBgw == NULL) { + uVar5 = false; + } + } + return uVar5; } /* 000002E4-000005F4 .text tg_hitCallback__10daObjIce_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -void daObjIce_c::tg_hitCallback(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*) { - /* Nonmatching */ +void daObjIce_c::tg_hitCallback(fopAc_ac_c* a_this, dCcD_GObjInf* arg1, fopAc_ac_c* arg2, dCcD_GObjInf* arg3) { + daObjIce_c* i_this = (daObjIce_c*)a_this; + cCcD_Obj* pcVar8 = arg1->GetTgHitObj(); + + if (pcVar8 != NULL) { + f32 x2; + f32 y; + f32 z2; + cXyz sp20 = i_this->current.pos; + cXyz* pPos = arg1->GetTgHitPosP(); + s16 idx = -i_this->shape_angle.y; + f32 sin = cM_ssin(idx); + f32 cos = cM_scos(idx); + f32 x = pPos->x - sp20.x; + f32 z = pPos->z - sp20.z; + + x2 = x * cos + z * sin; + y = pPos->y - sp20.y; + z2 = -x * sin + z * cos; + i_this->m45C = 0; + + for (s32 i = 0; i < 3; i++) { + f32 fVar6 = i_this->m44C * (i_this->scale.x * l_co_radius_table[i]); + f32 fVar7 = i_this->m450 * (i_this->scale.y * l_co_height_table[i]); + f32 fVar5 = i_this->m44C * (i_this->scale.z * l_co_radius_table[i]); + if (y < fVar7 && ((x2 * x2) / (fVar6 * fVar6) + (z2 * z2) / (fVar5 * fVar5) < 1.0f)) { + switch (pcVar8->GetAtType()) { + case AT_TYPE_UNK20000: + case AT_TYPE_FIRE: + case AT_TYPE_FIRE_ARROW: + i_this->m45C = 2; + break; + + default: { +#if VERSION == VERSION_DEMO + i_this->m44C -= l_HIO.m24; +#else + i_this->m44C -= 0.0009f; +#endif + if (i_this->m44C < 0.0f) { + i_this->m44C = 0.0f; + } + i_this->m450 = 1.0f - cM_scos(i_this->m44C * 16384.0f); + if (i_this->m44C < 0.1f) { + i_this->m45C = 1; + } + csXyz sp18(0, 0, 0); + sp18.x = cM_atan2s(-pPos->y + i_this->current.pos.y, pPos->z - i_this->current.pos.z); + sp18.y = cM_atan2s(pPos->x - i_this->current.pos.x, pPos->z - i_this->current.pos.z); + dComIfGp_particle_set(dPa_name::ID_COMMON_0465, pPos, &sp18, NULL, 0xFF, NULL, -1, &i_this->tevStr.mColorK0); + break; + } + case AT_TYPE_BOMB: + break; + } + } + + if (i_this->m45C != 0) { + arg1->OnTgNoConHit(); + break; + } + } + } } /* 000005F4-000008C0 .text _create__10daObjIce_cFv */ cPhs_State daObjIce_c::_create() { - /* Nonmatching */ + cPhs_State ret = cPhs_ERROR_e; + fopAcM_SetupActor(this, daObjIce_c); + + if (fopAcM_IsFirstCreating(this)) { + m448 = chk_appear(); + } + + if (m448 == 1) { + ret = dComIfG_resLoad(&mPhase, l_arcname); + } + + if (ret == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this, solidHeapCB, 0x1A20)) { + if (dComIfG_Bgsp()->Regist(mBgw, this)) { + ret = cPhs_ERROR_e; + } else { + fopAcM_SetMtx(this, mModel->getBaseTRMtx()); + m44C = 1.0f; + m450 = 1.0f; + init_mtx(); + + f32 fVar1 = scale.x; + if (fVar1 < scale.z) { + fVar1 = scale.z; + } + + mStts.Init(0xFF, 0xFF, this); + mCyl.Set(l_cyl_src); + mCyl.SetStts(&mStts); + mCyl.SetC(current.pos); + mCyl.SetR(fVar1 * 75.0f); + mCyl.SetH(scale.y * 120.0f); + + mCyl.OnTgNoAtHitInfSet(); + mCyl.SetTgHitCallback(tg_hitCallback); + m454 = 255.0f; + fopAcM_setCullSizeBox(this, scale.x * -80.0f, 0.0f, scale.z * -80.0f, scale.x * 80.0f, scale.y * 150.0f, scale.z * 80.0f); + attention_info.position.x = current.pos.x; + attention_info.position.y = current.pos.y + scale.y * 60.0f; + attention_info.position.z = current.pos.z; + eyePos = attention_info.position; + m43C = &daObjIce_c::wait_act_proc; + } + } else { + ret = cPhs_ERROR_e; + } + } + +#if VERSION == VERISON_DEMO + if (l_HIO.m04 < 0) { + l_HIO.m04 = mDoHIO_createChild("汎用氷", &l_HIO); + } +#endif + + return ret; } /* 00000A78-00000B18 .text _delete__10daObjIce_cFv */ bool daObjIce_c::_delete() { - /* Nonmatching */ + if (m448 == 1) { + dComIfG_resDelete(&mPhase, l_arcname); +#if VERSION > VERISON_DEMO + if (heap != NULL && mBgw != NULL) { +#else + if (mBgw != NULL) { +#endif + if (mBgw->ChkUsed()) { + dComIfG_Bgsp()->Release(mBgw); + } +#if VERSION > VERSION_DEMO + mBgw = NULL; +#endif + } + } + +#if VERSION == VERISON_DEMO + if (l_HIO.m04 >= 0) { + mDoHIO_deleteChild(l_HIO.m04); + l_HIO.m04 = -1; + } +#endif + return true; } /* 00000B18-00000CA4 .text wait_act_proc__10daObjIce_cFv */ void daObjIce_c::wait_act_proc() { - /* Nonmatching */ + if (!mCyl.ChkTgHit() || mStts.GetTgApid() != mStts.GetTgOldApid()) { + mCyl.OffAtNoConHit(); + } + + mStts.Move(); + mCyl.ClrTgHit(); + + switch (m45C) { + case 2: + fopAcM_seStartCurrent(this, JA_SE_OBJ_ICE_ROCK_MELT, 0); + + case 1: { + m458 = 0x5a; + JPABaseEmitter* emitter = dComIfGp_particle_set(dPa_name::ID_COMMON_0464, ¤t.pos, NULL, &scale, 0xFF, NULL, -1, &tevStr.mColorK0); + if (emitter != NULL) { +#if VERSION == VERSION_DEMO + JGeometry::TVec3 s; + s.set(scale.x, scale.y, scale.z); +#else + JGeometry::TVec3 s; + s.set(scale); +#endif + emitter->setGlobalDynamicsScale(s); + s.x = scale.x; + s.y = scale.x; + s.z = scale.x; + emitter->setGlobalParticleScale(s); + } + + m43C = &daObjIce_c::fade_out_retire_act_proc; + break; + } + default: +#if VERSION == VERSION_DEMO + if (l_HIO.m3B == 1) { + dComIfG_Ccsp()->Set(&mCyl); + } + + if (l_HIO.m38 == 1) { + if (mBgw != NULL && mBgw->ChkUsed()) { + dComIfG_Bgsp()->Release(mBgw); + } + m458 = 0x5A; + dComIfGp_particle_set(dPa_name::ID_COMMON_0464, ¤t.pos, NULL, &scale, 0xFF, NULL, -1, &tevStr.mColorK0); + m43C = &daObjIce_c::fade_out_retire_act_proc; + } +#else + dComIfG_Ccsp()->Set(&mCyl); +#endif + break; + } } /* 00000CA4-00000DFC .text fade_out_retire_act_proc__10daObjIce_cFv */ void daObjIce_c::fade_out_retire_act_proc() { - /* Nonmatching */ + f32 tmp2 = m44C; + m454 -= 2.8333333f; + tmp2 -= 0.011111111f; + if (tmp2 < 0.0f) { + tmp2 = 0.0f; + } + + if (m454 < 0.0f) { + m454 = 0.0f; + } + + f32 tmp3 = 1.0f - cM_scos(tmp2 * 16384.0f); + + m44C = tmp2; + m450 = tmp3; + + if (m44C < 0.4f && mBgw != NULL) { + if (mBgw->ChkUsed()) { + dComIfG_Bgsp()->Release(mBgw); + s32 sw = param_get_swSave(); + if (sw != 0xFF) { + param_on_swSave(); + fopAcM_onSwitch((fopAc_ac_c*)this, sw); + } + } + } + + m458--; + if (m458 <= 0) { + fopAcM_delete(this); + } } /* 00000DFC-00000EB8 .text _execute__10daObjIce_cFv */ bool daObjIce_c::_execute() { - /* Nonmatching */ +#if VERSION == VERSION_DEMO + if (l_HIO.m3A == 1) { + scale.setall(l_HIO.m20); + mModel->setBaseScale(scale); + mCyl.SetR(l_HIO.m18 * l_HIO.m20 * m44C); + mCyl.SetH(l_HIO.m0C * l_HIO.m20 * m450); + fopAcM_setCullSizeBox(this, -l_HIO.m28 * scale.x, 0.0f, -l_HIO.m28 * scale.z, l_HIO.m28 * scale.x, l_HIO.m2C * scale.y, l_HIO.m28 * scale.z); + } else { + mCyl.SetR(m44C * (l_HIO.m18 * scale.x)); + mCyl.SetH(m450 * (l_HIO.m0C * scale.y)); + } +#else + mCyl.SetR(m44C * (scale.x * 75.0f)); + mCyl.SetH(m450 * (scale.y * 120.0f)); +#endif + set_mtx(); + + if (mBgw != NULL && mBgw->ChkUsed()) { + mBgw->Move(); + } + (this->*m43C)(); + return true; } /* 00000EB8-00000F48 .text set_material_sub__FP11J3DMaterialUc */ -void set_material_sub(J3DMaterial*, unsigned char) { - /* Nonmatching */ +void set_material_sub(J3DMaterial* material, unsigned char alpha) { + while (material != NULL) { + if (alpha == 0) { + material->getShape()->hide(); + } else { + material->getShape()->show(); + material->getTevKColor(3)->mColor.a = alpha; + } + material = material->getNext(); + } } /* 00000F48-00000FB0 .text set_material__FP8J3DModelUc */ -void set_material(J3DModel*, unsigned char) { - /* Nonmatching */ +void set_material(J3DModel* model, unsigned char alpha) { + J3DModelData* modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getJointNum(); i++) { + set_material_sub(modelData->getJointNodePointer(i)->getMesh(), alpha); + } } /* 00000FB0-00001070 .text _draw__10daObjIce_cFv */ bool daObjIce_c::_draw() { - /* Nonmatching */ + g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType(mModel, &tevStr); + dComIfGd_setListMaskOff(); + set_material(mModel, m454); + setEffectMtx(); + mDoExt_modelUpdateDL(mModel); + dComIfGd_setList(); + return true; } /* 00001070-000013A0 .text setEffectMtx__10daObjIce_cFv */ void daObjIce_c::setEffectMtx() { - /* Nonmatching */ + static Mtx mtx_adj = { + {0.5f, 0.0f, 0.0f, 0.5f}, + {0.0f, -0.5f, 0.0f, 0.5f}, + {0.0f, 0.0f, 1.0f, 0.0f}, + }; + + Mtx sp98; + Mtx sp68; + Mtx sp38; + cXyz sp2C; + cXyz sp20; + cXyz sp14; + cXyz* eye = &eyePos; +#if VERSION == VERSION_DEMO + f32 fVar2 = l_HIO.m30 / scale.x; + f32 fVar3 = l_HIO.m30 / scale.y; +#else + f32 fVar2 = 1.8f / scale.x; + f32 fVar3 = 1.8f / scale.y; +#endif + camera_class* camera = dCam_getCamera(); + + sp2C = *eye - camera->mLookat.mEye; + dKyr_get_vectle_calc(&tevStr.mLightPosWorld, eye, &sp20); + C_VECHalfAngle(&sp2C, &sp20, &sp14); + C_MTXLookAt(sp98, &cXyz::Zero, &cXyz::BaseY, &sp14); + + mDoMtx_stack_c::scaleS(fVar2, fVar3, 1.0f); + mDoMtx_stack_c::concat(mtx_adj); + mDoMtx_stack_c::concat(sp98); + mDoMtx_stack_c::get()[0][3] = 0.0f; + mDoMtx_stack_c::get()[1][3] = 0.0f; + mDoMtx_stack_c::get()[2][3] = 0.0f; + cMtx_copy(mDoMtx_stack_c::get(), sp68); +#if VERSION == VERSION_DEMO + mDoMtx_stack_c::scaleS(l_HIO.m34, l_HIO.m34, 1.0f); +#else + mDoMtx_stack_c::scaleS(0.5f, 0.5f, 1.0f); +#endif + mDoMtx_stack_c::concat(mtx_adj); + mDoMtx_stack_c::concat(sp98); + mDoMtx_stack_c::get()[0][3] = 0.0f; + mDoMtx_stack_c::get()[1][3] = 0.0f; + mDoMtx_stack_c::get()[2][3] = 0.0f; + cMtx_copy(mDoMtx_stack_c::get(), sp38); + + J3DModelData* modelData = this->mModel->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DMaterial* material = modelData->getMaterialNodePointer(i); + for (u32 j = 0; j < 8; j++) { + J3DTexGenBlock* genBlock = material->getTexGenBlock(); + J3DTexMtx* mtx = genBlock->getTexMtx(j); + if (mtx != NULL) { + J3DTexMtxInfo& mtxInfo = mtx->getTexMtxInfo(); + switch (mtxInfo.mInfo) { + case 10: + case 11: + switch (i) { + case 1: + mtxInfo.setEffectMtx(sp68); + break; + case 0: + mtxInfo.setEffectMtx(sp38); + break; + } + break; + } + } + } + } } /* 000013A0-000013C0 .text daObjIce_Create__FP10fopAc_ac_c */