diff --git a/configure.py b/configure.py index c074ce8e5..8e68d2063 100644 --- a/configure.py +++ b/configure.py @@ -372,7 +372,7 @@ config.libs = [ Object(NonMatching, "d/d_path.cpp"), Object(NonMatching, "d/d_drawlist.cpp"), Object(Matching, "d/d_kankyo_data.cpp"), - Object(NonMatching, "d/d_kankyo_wether.cpp"), + Object(Matching, "d/d_kankyo_wether.cpp"), Object(NonMatching, "d/d_kankyo_rain.cpp"), Object(Matching, "d/d_kankyo_demo.cpp"), Object(NonMatching, "d/d_detect.cpp"), diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index a9276e256..b0d8b60fd 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -62,9 +62,9 @@ class dKy_tevstr_c; typedef int (*heapCallbackFunc)(fopAc_ac_c*); typedef int (*createFunc)(void*); -struct DOUBLE_POS { - double x, y, z; -}; +// struct DOUBLE_POS { +// double x, y, z; +// }; inline s8 fopAcM_GetRoomNo(fopAc_ac_c* pActor) { return pActor->current.roomNo; diff --git a/src/d/actor/d_a_nh.cpp b/src/d/actor/d_a_nh.cpp index 8a8f0bd6e..09db19115 100644 --- a/src/d/actor/d_a_nh.cpp +++ b/src/d/actor/d_a_nh.cpp @@ -549,7 +549,7 @@ void daNh_c::playBrkAnm() { /* 800FACE8-800FAE1C .text draw__6daNh_cFv */ BOOL daNh_c::draw() { - g_env_light.settingTevStruct(0, ¤t.pos, &mTevStr); + g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &mTevStr); g_env_light.setLightTevColorType(mpModel, &mTevStr); J3DModelData* modelData = mpModel->getModelData(); diff --git a/src/d/actor/d_a_obj_Ygush00.cpp b/src/d/actor/d_a_obj_Ygush00.cpp index 631871a20..107a0955c 100644 --- a/src/d/actor/d_a_obj_Ygush00.cpp +++ b/src/d/actor/d_a_obj_Ygush00.cpp @@ -62,13 +62,9 @@ bool daObjYgush00_c::create_heap() { static u32 btk_table[] = { 0x0E, 0x0D, 0x0D, 0x0D }; static u32 bck_table[] = { 0x06, 0x05, 0x05, 0x05 }; - J3DModelData * pModelData; bool ret = true; - // TODO regswap - // r29 -> r30: g_dComIfG_gameInfo.mResControl.mObjectInfo / btkRet - // r30 -> r29: pModelData - pModelData = (J3DModelData *)dComIfG_getObjectRes(l_arcname, mdl_table[mType]); + void* pModelData = dComIfG_getObjectRes(l_arcname, mdl_table[mType]); J3DAnmTextureSRTKey * pBtk = (J3DAnmTextureSRTKey *)dComIfG_getObjectRes(l_arcname, btk_table[mType]); J3DAnmTransform * pBck = (J3DAnmTransform *)dComIfG_getObjectRes(l_arcname, bck_table[mType]); @@ -76,9 +72,9 @@ bool daObjYgush00_c::create_heap() { JUT_ASSERT(207, 0); ret = false; } else { - mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000222); - s32 btkRet = mBtkAnm.init(pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); - s32 bckRet = mBckAnm.init(pModelData, pBck, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false); + mpModel = mDoExt_J3DModel__create((J3DModelData*)pModelData, 0x80000, 0x11000222); + s32 btkRet = mBtkAnm.init((J3DModelData*)pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); + s32 bckRet = mBckAnm.init((J3DModelData*)pModelData, pBck, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false); if (!mpModel || !btkRet || !bckRet) ret = false; diff --git a/src/d/actor/d_a_obj_barrier.cpp b/src/d/actor/d_a_obj_barrier.cpp index a54763827..69d80200e 100644 --- a/src/d/actor/d_a_obj_barrier.cpp +++ b/src/d/actor/d_a_obj_barrier.cpp @@ -173,12 +173,12 @@ static cXyz l_ef_scale; // NONMATCHING - load order flipped void daObjBarrier_c::init_mtx() { mAnm.mpModel->setBaseScale(mScale); - mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y); mAnm.mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); mDoMtx_stack_c::scaleM(mScale); - mDoMtx_copy(mDoMtx_stack_c::get(), mBgMtx); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } /* 0000018C-000001B0 .text solidHeapCB__14daObjBarrier_cFP10fopAc_ac_c */ @@ -187,22 +187,23 @@ int daObjBarrier_c::solidHeapCB(fopAc_ac_c* i_this) { } /* 000001B0-00000340 .text init__18daObjBarrier_anm_cFv */ -// NONMATCHING - reg alloc bool daObjBarrier_anm_c::init() { bool rt = true; - J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 10); - J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 18); - J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 14); + void* modelData = dComIfG_getObjectRes(l_arcName, 10); + void* pbtk = dComIfG_getObjectRes(l_arcName, 18); + void* pbrk = dComIfG_getObjectRes(l_arcName, 14); if (modelData == NULL || pbtk == NULL || pbrk == NULL) { JUT_PANIC(407); rt = false; } else { - mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x1000200); - BOOL btk_init = - mBtk.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); - BOOL brk_init = - mBrk.init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); + mpModel = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x1000200); + BOOL btk_init = mBtk.init( + (J3DModelData*)modelData, (J3DAnmTextureSRTKey*)pbtk, + TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); + BOOL brk_init = mBrk.init( + (J3DModelData*)modelData, (J3DAnmTevRegKey*)pbrk, + TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); if (mpModel == NULL || !btk_init || !brk_init) { rt = false; @@ -315,11 +316,10 @@ void daObjBarrier_c::brkAnmPlay() { } /* 00000884-000009F0 .text break_start_wait_proc__14daObjBarrier_cFv */ -// NONMATCHING - regswap void daObjBarrier_c::break_start_wait_proc() { // 0x3980: Saw Hyrule 3 Electric Barrier Demo if (dComIfGs_isEventBit(0x3980) == true) { - daPy_py_c* player_p = daPy_getPlayerActorClass(); + daPy_py_c* player_p = (daPy_py_c*)daPy_getPlayerActorClass(); if ((player_p->current.pos - current.pos).absXZ() >= 8800.0f && dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX) @@ -419,7 +419,7 @@ bool daObjBarrier_ef_c::checkHitActor(fopAc_ac_c* i_checkActor) { } /* 00000D5C-000011B8 .text birth__17daObjBarrier_ef_cFP10fopAc_ac_cf4cXyz4cXyzi */ -// NONMATCHING - regalloc +// NONMATCHING void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_center, cXyz i_hitPos, int i_isNoEff) { if (!i_isNoEff || !checkHitActor(i_hitActor)) { @@ -442,7 +442,7 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente if (effect_idx == -1) { f32 var_f1 = -1.0f; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { // nonmatching if (mBtk[i].getFrame() > var_f1) { var_f1 = mBtk[i].getFrame(); effect_idx = i; @@ -466,21 +466,21 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente J3DModelData* modelData = mpModel[effect_idx]->getModelData(); - J3DAnmTextureSRTKey* btk_anm_p = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 19); + void* btk_anm_p = dComIfG_getObjectRes(l_arcName, 19); JUT_ASSERT(937, btk_anm_p != 0); - J3DAnmTransform* bck_anm_p = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7); + void* bck_anm_p = dComIfG_getObjectRes(l_arcName, 7); JUT_ASSERT(942, bck_anm_p != 0); - J3DAnmTevRegKey* brk_anm_p = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 15); + void* brk_anm_p = dComIfG_getObjectRes(l_arcName, 15); JUT_ASSERT(947, brk_anm_p != 0); - mBtk[effect_idx].init(modelData, btk_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, - true, 0); - mBck[effect_idx].init(modelData, bck_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, - true); - mBrk[effect_idx].init(modelData, brk_anm_p, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, - true, 0); + mBtk[effect_idx].init(modelData, (J3DAnmTextureSRTKey*)btk_anm_p, TRUE, + J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, true, 0); + mBck[effect_idx].init(modelData, (J3DAnmTransform*)bck_anm_p, TRUE, + J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, true); + mBrk[effect_idx].init(modelData, (J3DAnmTevRegKey*)brk_anm_p, TRUE, + J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, true, 0); mDoMtx_stack_c::transS(pos.x, pos.y, pos.z); mDoMtx_stack_c::ZXYrotM(0, angle.y, 0); @@ -491,28 +491,30 @@ void daObjBarrier_ef_c::birth(fopAc_ac_c* i_hitActor, f32 i_radius, cXyz i_cente } /* 000011B8-000013E0 .text init__17daObjBarrier_ef_cFv */ -// NONMATCHING - regalloc bool daObjBarrier_ef_c::init() { bool rt = true; - J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 11); - J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 19); - J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7); - J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 15); + void* modelData = dComIfG_getObjectRes(l_arcName, 11); + void* pbtk = dComIfG_getObjectRes(l_arcName, 19); + void* pbck = dComIfG_getObjectRes(l_arcName, 7); + void* pbrk = dComIfG_getObjectRes(l_arcName, 15); if (modelData == NULL || pbtk == NULL || pbck == NULL || pbrk == NULL) { JUT_PANIC(1016); rt = false; } else { for (int i = 0; i < 4; i++) { - mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x5020200); + mpModel[i] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x5020200); setDummyTexture(i); - BOOL btk_init = mBtk[i].init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, - -1, false, 0); - BOOL bck_init = - mBck[i].init(modelData, pbck, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false); - BOOL brk_init = mBrk[i].init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, - -1, false, 0); + BOOL btk_init = mBtk[i].init( + (J3DModelData*)modelData, (J3DAnmTextureSRTKey*)pbtk, + TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false, 0); + BOOL bck_init = mBck[i].init( + (J3DModelData*)modelData, (J3DAnmTransform*)pbck, + TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false); + BOOL brk_init = mBrk[i].init( + (J3DModelData*)modelData, (J3DAnmTevRegKey*)pbrk, + TRUE, J3DFrameCtrl::LOOP_ONCE_e, 0.0f, 0, -1, false, 0); if (mpModel[i] == NULL || !btk_init || !bck_init || !brk_init) { rt = false; @@ -549,7 +551,6 @@ void daObjBarrier_ef_c::execute() { } /* 000014E0-00001638 .text draw__17daObjBarrier_ef_cFv */ -// NONMATCHING - load order void daObjBarrier_ef_c::draw() { J3DModel* model_p; @@ -558,7 +559,8 @@ void daObjBarrier_ef_c::draw() { if (((active_flags >> i) & 1)) { model_p = mpModel[i]; - mBtk[i].entry(model_p->getModelData(), getBtkFrame(i)); + J3DModelData* modelData = model_p->getModelData(); + mBtk[i].entry(modelData, getBtkFrame(i)); mBck[i].entry(model_p->getModelData(), (s16)getBtkFrame(i)); mBrk[i].entry(model_p->getModelData(), (s16)getBtkFrame(i)); diff --git a/src/d/d_bg_s_movebg_actor.cpp b/src/d/d_bg_s_movebg_actor.cpp index b745e0710..dae989c2a 100644 --- a/src/d/d_bg_s_movebg_actor.cpp +++ b/src/d/d_bg_s_movebg_actor.cpp @@ -31,17 +31,11 @@ int dBgS_MoveBgActor::MoveBGCreateHeap() { } mpBgW = new dBgW(); - if (mpBgW != NULL) { - cBgD_t* res = (cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id); - if (!mpBgW->Set(res, cBgW::MOVE_BG_e, &mBgMtx)) { - if (m_set_func != NULL) { - mpBgW->SetCrrFunc(m_set_func); - } - } else { - goto RET; // probably fake match, clean up later + if (mpBgW && !mpBgW->Set((cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id), cBgW::MOVE_BG_e, &mBgMtx)) { + if (m_set_func != NULL) { + mpBgW->SetCrrFunc(m_set_func); } } else { - RET: mpBgW = NULL; return 0; } diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index 4da5c6f7a..b39ab1b5e 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -1746,7 +1746,6 @@ void dScnKy_env_light_c::SetBaseLight() { } /* 80193EE4-801940EC .text exeKankyo__18dScnKy_env_light_cFv */ -// NONMATCHING - one block with regswaps void dScnKy_env_light_c::exeKankyo() { g_env_light.mColPatMode = g_env_light.mColPatModeGather; @@ -1788,10 +1787,11 @@ void dScnKy_env_light_c::exeKankyo() { g_env_light.mColpatPrevGather = 0xFF; } - if (g_env_light.mColpatCurrGather != 0xFF) { - g_env_light.mColpatCurr = g_env_light.mColpatCurrGather; + u8 currGather = g_env_light.mColpatCurrGather; + if (currGather != 0xFF) { + g_env_light.mColpatCurr = currGather; g_env_light.mColpatCurrGather = 0xFF; - g_env_light.mColpatWeather = g_env_light.mColpatCurrGather; + g_env_light.mColpatWeather = currGather; } if (g_env_light.mColPatBlendGather >= 0.0f) { diff --git a/src/d/d_kankyo_wether.cpp b/src/d/d_kankyo_wether.cpp index 64883b07e..a46fd2c51 100644 --- a/src/d/d_kankyo_wether.cpp +++ b/src/d/d_kankyo_wether.cpp @@ -754,9 +754,8 @@ void wether_move_moya() { } /* 800891A8-80089698 .text wether_move_vrkumo__Fv */ -// NONMATCHING - almost, regswap void wether_move_vrkumo() { - camera_class* camera_p = dComIfGp_getCamera(0); + camera_process_class* camera_p = dComIfGp_getCamera(0); static cXyz r09o(-180000.0f, 750.0f, -200000.0f); if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) { @@ -1188,7 +1187,8 @@ void dKyw_pntwind_get_info(cXyz* param_0, cXyz* i_dir, f32* i_power) { *i_power = 0.0f; WIND_INFLUENCE* influence; - for (int i = 0; i < ARRAY_SIZE(g_env_light.mpWindInfluence); i++) { + s32 influence_count = ARRAY_SIZE(g_env_light.mpWindInfluence); + for (int i = 0; i < influence_count; i++) { influence = g_env_light.mpWindInfluence[i]; if (influence != NULL) { f32 dist = param_0->abs(influence->mPos); @@ -1291,7 +1291,6 @@ cXyz dKyw_get_AllWind_vecpow(cXyz* param_0) { } /* 8008A7D0-8008A870 .text dKyw_tact_wind_set__Fss */ -// NONMATCHING - small regswap... void dKyw_tact_wind_set(s16 i_windX, s16 i_windY) { dScnKy_env_light_c& env_light = dKy_getEnvlight(); cXyz* wind_vec = dKyw_get_wind_vec(); @@ -1301,10 +1300,10 @@ void dKyw_tact_wind_set(s16 i_windX, s16 i_windY) { dComIfGs_setWindX(i_windX); dComIfGs_setWindY(i_windY); - s16 temp_r29 = -(cM_atan2s(wind_vec->x, wind_vec->z) + 0x4000); + i_windY = -(cM_atan2s(wind_vec->x, wind_vec->z) + 0x4000); env_light.mWind.mTactWindAngleFlags = 1; - if ((s16)(temp_r29 - env_light.mWind.mTactWindAngleY) < 0) { + if ((s16)(i_windY - env_light.mWind.mTactWindAngleY) < 0) { env_light.mWind.mTactWindAngleFlags |= 0x80; } }