diff --git a/.vscode/settings.json b/.vscode/settings.json index 34e953cfd4..bf027ab3bc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -30,6 +30,7 @@ "build/*/baseline.json": true, "build/**/*.MAP": true, "build/**/*.o": true, + "build/**/*.s": true, "build/**/*.plf": true, "build/**/*.rel": true, "orig/**/*.rel": true, diff --git a/config/GZ2E01/rels/d_a_e_fb/symbols.txt b/config/GZ2E01/rels/d_a_e_fb/symbols.txt index edc049c871..b74d562148 100644 --- a/config/GZ2E01/rels/d_a_e_fb/symbols.txt +++ b/config/GZ2E01/rels/d_a_e_fb/symbols.txt @@ -83,12 +83,12 @@ _dtors = .dtors:0x00000000; // type:label scope:global @stringBase0 = .rodata:0x0000009C; // type:object size:0xA scope:local data:string_table cc_fb_src__22@unnamed@d_a_e_fb_cpp@ = .data:0x00000000; // type:object size:0x40 scope:global cc_fb_at_src__22@unnamed@d_a_e_fb_cpp@ = .data:0x00000040; // type:object size:0x40 scope:global -a_eff_id$3974 = .data:0x00000080; // type:object size:0x6 scope:local -d_eff_id$4275 = .data:0x00000088; // type:object size:0x4 scope:local -n_eff_id$4612 = .data:0x0000008C; // type:object size:0xA scope:local -n_joint_id$4613 = .data:0x00000098; // type:object size:0x14 scope:local -d_eff_id$4669 = .data:0x000000AC; // type:object size:0xA scope:local -d_joint_id$4670 = .data:0x000000B8; // type:object size:0x14 scope:local +a_eff_id$2022 = .data:0x00000080; // type:object size:0x6 scope:local +d_eff_id$2322 = .data:0x00000088; // type:object size:0x4 scope:local +n_eff_id$2655 = .data:0x0000008C; // type:object size:0xA scope:local +n_joint_id$2656 = .data:0x00000098; // type:object size:0x14 scope:local +d_eff_id$2712 = .data:0x000000AC; // type:object size:0xA scope:local +d_joint_id$2713 = .data:0x000000B8; // type:object size:0x14 scope:local l_daE_FB_Method = .data:0x000000CC; // type:object size:0x20 scope:global g_profile_E_FB = .data:0x000000EC; // type:object size:0x30 scope:global __vt__8cM3dGSph = .data:0x0000011C; // type:object size:0xC scope:global @@ -114,7 +114,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local -lbl_188_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte +l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte @3657 = .bss:0x00000048; // type:object size:0xC scope:local l_HIO = .bss:0x00000054; // type:object size:0x24 scope:global data:byte mFireTimer = .bss:0x00000078; // type:object size:0x4 scope:global data:4byte diff --git a/config/GZ2J01/rels/d_a_e_fb/symbols.txt b/config/GZ2J01/rels/d_a_e_fb/symbols.txt index edc049c871..e715ea9ef6 100644 --- a/config/GZ2J01/rels/d_a_e_fb/symbols.txt +++ b/config/GZ2J01/rels/d_a_e_fb/symbols.txt @@ -114,7 +114,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local -lbl_188_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte +l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte @3657 = .bss:0x00000048; // type:object size:0xC scope:local l_HIO = .bss:0x00000054; // type:object size:0x24 scope:global data:byte mFireTimer = .bss:0x00000078; // type:object size:0x4 scope:global data:4byte diff --git a/config/GZ2P01/rels/d_a_e_fb/symbols.txt b/config/GZ2P01/rels/d_a_e_fb/symbols.txt index edc049c871..0067289040 100644 --- a/config/GZ2P01/rels/d_a_e_fb/symbols.txt +++ b/config/GZ2P01/rels/d_a_e_fb/symbols.txt @@ -114,7 +114,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local -lbl_188_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte +l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte scope:local @3657 = .bss:0x00000048; // type:object size:0xC scope:local l_HIO = .bss:0x00000054; // type:object size:0x24 scope:global data:byte mFireTimer = .bss:0x00000078; // type:object size:0x4 scope:global data:4byte diff --git a/config/ShieldD/rels/d_a_e_fbD/symbols.txt b/config/ShieldD/rels/d_a_e_fbD/symbols.txt index 85f88401cd..7564bedf29 100644 --- a/config/ShieldD/rels/d_a_e_fbD/symbols.txt +++ b/config/ShieldD/rels/d_a_e_fbD/symbols.txt @@ -143,7 +143,7 @@ lbl_179_data_320 = .data:0x00000320; // type:object size:0x24 @118010 = .data:0x0000052C; // type:object size:0x11 scope:local data:string @118011 = .data:0x00000554; // type:object size:0xD scope:local data:string lbl_179_data_561 = .data:0x00000561; // type:object size:0x93 -...bss.0 = .bss:0x00000000; // type:label scope:local +l_HIOInit = .bss:0x00000000; // type:object size:0x1 scope:local data:byte l_HIO = .bss:0x00000004; // type:object size:0x24 scope:global data:byte mFireTimer = .bss:0x00000028; // type:object size:0x4 scope:global data:4byte lbl_179_bss_2C = .bss:0x0000002C; // type:object size:0x1 data:byte diff --git a/include/d/actor/d_a_e_fb.h b/include/d/actor/d_a_e_fb.h index 6f5895680a..dcbcff7259 100644 --- a/include/d/actor/d_a_e_fb.h +++ b/include/d/actor/d_a_e_fb.h @@ -88,7 +88,7 @@ public: void genMessage(JORMContext*); #endif - /* 0x04 */ s8 field_0x4; + /* 0x04 */ s8 mId; /* 0x08 */ f32 model_size; /* 0x0C */ f32 player_detection_range; /* 0x10 */ s16 next_attack_waiting_time; diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index c0092cbda7..9818dc6f45 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -328,7 +328,7 @@ public: void onWolfBiteDamage() { mFlags |= fopEn_flag_WolfBiteDamage; } void onWolfDownStartFlg() { mFlags |= (fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); } void onWolfDownPullEndFlg() { mFlags |= fopEn_flag_WolfDownPullEnd; } - void onWolfNoLock() { mFlags |= fopEn_flag_WolfNoLock; } + void onWolfNoLock() { mFlags |= (u16)fopEn_flag_WolfNoLock; } void onDownFlg() { mFlags |= fopEn_flag_Down; } void onHeadLockFlg() { mFlags |= fopEn_flag_HeadLock; } diff --git a/src/d/actor/d_a_e_fb.cpp b/src/d/actor/d_a_e_fb.cpp index bfb47c20a3..68fd639c3c 100644 --- a/src/d/actor/d_a_e_fb.cpp +++ b/src/d/actor/d_a_e_fb.cpp @@ -10,9 +10,13 @@ #include "d/actor/d_a_obj_carry.h" #include "d/d_s_play.h" +#if DEBUG +#include "d/d_debug_viewer.h" +#endif + /* 806B64AC-806B6520 0000EC 0074+00 1/1 0/0 0/0 .text __ct__12daE_FB_HIO_cFv */ daE_FB_HIO_c::daE_FB_HIO_c() { - field_0x4 = -1; + mId = -1; model_size = 1.5f; player_detection_range = 1500.0f; next_attack_waiting_time = 30; @@ -126,7 +130,7 @@ static f32 dummy_117095() { } #endif -bool lbl_188_bss_45; +bool l_HIOInit; /* 806B91FC-806B9220 000054 0024+00 6/7 0/0 0/0 .bss l_HIO */ static daE_FB_HIO_c l_HIO; @@ -141,7 +145,8 @@ int daE_FB_c::draw() { g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); g_env_light.setLightTevColorType_MAJI(model, &tevStr); - J3DMaterial* material = model->getModelData()->getMaterialNodePointer(0); + J3DModelData* modelData = model->getModelData(); + J3DMaterial* material = modelData->getMaterialNodePointer(0); material->getTevColor(1)->r = l_HIO.color_register_1r; material->getTevColor(1)->g = l_HIO.color_register_1g; material->getTevColor(1)->b = l_HIO.color_register_1b; @@ -152,10 +157,25 @@ int daE_FB_c::draw() { cXyz my_vec; my_vec.set(current.pos.x, 10.0f + current.pos.y, current.pos.z); + #if DEBUG + if (WREG_S(0) != 0) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz cStack_44; + cStack_44.set(player->current.pos); + cStack_44.y += 100.0f; + GXColor local_48; + local_48.r = 0x82; + local_48.g = 0xff; + local_48.b = 0x82; + local_48.a = 0xfa; + dDbVw_drawLineXlu(attention_info.position, cStack_44, local_48, 1, 0xc); + } + #endif + GXTexObj* tex_obj = dDlst_shadowControl_c::getSimpleTex(); - mShadowKey = dComIfGd_setShadow(mShadowKey, 1, model, &my_vec, 1300.0f, 0.0f, - current.pos.y, mObjAcch.GetGroundH(), mObjAcch.m_gnd, - &tevStr, 0, 1.0f, tex_obj); + mShadowKey = + dComIfGd_setShadow(mShadowKey, 1, model, &my_vec, BREG_F(19) + 1300.0f, 0.0f, current.pos.y, + mObjAcch.GetGroundH(), mObjAcch.m_gnd, &tevStr, 0, 1.0f, tex_obj); return 1; } @@ -864,8 +884,8 @@ int daE_FB_c::_delete() { } if (mHIOInit) { - lbl_188_bss_7C = 0; - // TODO: dbg HIO stuff. + l_HIOInit = 0; + mDoHIO_DELETE_CHILD(l_HIO.mId); } if (heap != NULL) { @@ -941,7 +961,7 @@ cPhs__Step daE_FB_c::create() { attention_info.distances[fopAc_attn_BATTLE_e] = 0; fopAcM_SetGroup(this, 0); mStts.Init(0xFF, 0, this); - mAtSph.Set(cc_fb_src); + mAtSph.Set(cc_fb_at_src); mAtSph.SetStts(&mStts); setActionMode(3, 0); } else { @@ -953,10 +973,10 @@ cPhs__Step daE_FB_c::create() { return cPhs_ERROR_e; } - if (lbl_188_bss_45 == false) { - lbl_188_bss_45 = true; + if (l_HIOInit == false) { + l_HIOInit = true; mHIOInit = 1; - l_HIO.field_0x4 = -1; + l_HIO.mId = mDoHIO_CREATE_CHILD("フリザド(大)", &l_HIO); } attention_info.flags = fopAc_AttnFlag_BATTLE_e;