summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_alink_demo.inc2
-rw-r--r--src/d/actor/d_a_e_zh.cpp2
-rw-r--r--src/d/actor/d_a_npc_jagar.cpp2
-rw-r--r--src/d/actor/d_a_npc_maro.cpp2
-rw-r--r--src/d/actor/d_a_npc_moi.cpp2
-rw-r--r--src/d/actor/d_a_npc_uri.cpp4
-rw-r--r--src/d/actor/d_a_obj_amiShutter.cpp6
-rw-r--r--src/d/actor/d_a_obj_lv6bemos.cpp2
-rw-r--r--src/d/actor/d_a_obj_togeTrap.cpp2
-rw-r--r--src/d/actor/d_a_obj_twGate.cpp533
-rw-r--r--src/d/actor/d_a_obj_volcbom.cpp1556
-rw-r--r--src/d/actor/d_a_obj_wood_statue.cpp2
-rw-r--r--src/f_pc/f_pc_base.cpp14
-rw-r--r--src/f_pc/f_pc_deletor.cpp4
-rw-r--r--src/f_pc/f_pc_executor.cpp6
-rw-r--r--src/f_pc/f_pc_leaf.cpp2
-rw-r--r--src/f_pc/f_pc_node.cpp2
-rw-r--r--src/f_pc/f_pc_priority.cpp4
18 files changed, 952 insertions, 1195 deletions
diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc
index f62a2e24a6..232e8417b0 100644
--- a/src/d/actor/d_a_alink_demo.inc
+++ b/src/d/actor/d_a_alink_demo.inc
@@ -4229,7 +4229,7 @@ void daAlink_c::skipPortalObjWarp() {
return;
}
- if (checkNoResetFlg3(FLG3_UNK_2000000) &&
+ if (checkNoResetFlg3(FLG3_WARP_OBJ_DEMO) &&
(dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check()))
{
dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(this), shape_angle.y, -1);
diff --git a/src/d/actor/d_a_e_zh.cpp b/src/d/actor/d_a_e_zh.cpp
index 3bbd0249ce..7536a0e1e1 100644
--- a/src/d/actor/d_a_e_zh.cpp
+++ b/src/d/actor/d_a_e_zh.cpp
@@ -1201,7 +1201,7 @@ void daE_ZH_c::executeBgHitSHMove() {
if (NREG_S(0) != 0) {
OS_REPORT("mRetrunStartLine.x %f\n", mRetrunStartLine.x);
- OS_REPORT("mRetrunEndLine.x %f\n". mRetrunEndLine.x);
+ OS_REPORT("mRetrunEndLine.x %f\n", mRetrunEndLine.x);
OS_REPORT("mRetrunStartLine.z %f\n", mRetrunStartLine.z);
OS_REPORT("mRetrunEndLine.z %f\n", mRetrunEndLine.z);
OS_REPORT("\n");
diff --git a/src/d/actor/d_a_npc_jagar.cpp b/src/d/actor/d_a_npc_jagar.cpp
index 298bde6847..322f56ad6a 100644
--- a/src/d/actor/d_a_npc_jagar.cpp
+++ b/src/d/actor/d_a_npc_jagar.cpp
@@ -1314,7 +1314,7 @@ int daNpc_Jagar_c::wait(void* param_0) {
if (chkSitMotion() || field_0x1002 != 0) {
if (!daNpcT_chkEvtBit(0x235) && !daNpcT_chkEvtBit(0x87) &&
daNpcT_chkTmpBit(0x10)) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0 ? 1 : 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 ? 1 : 0) {
mEvtNo = 3;
}
}
diff --git a/src/d/actor/d_a_npc_maro.cpp b/src/d/actor/d_a_npc_maro.cpp
index 32636a2749..a5ec3bb04b 100644
--- a/src/d/actor/d_a_npc_maro.cpp
+++ b/src/d/actor/d_a_npc_maro.cpp
@@ -3316,7 +3316,7 @@ int daNpc_Maro_c::arrowTutorial(void* ) {
field_0xe33 = 1;
} else {
actor_p = (daTag_EvtArea_c*) mActorMngr[6].getActorP();
- if (actor_p != NULL && !(daPy_getPlayerActorClass()->eventInfo.chkCondition(1) == 0)) {
+ if (actor_p != NULL && !(daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) == 0)) {
if (actor_p->chkPointInArea(daPy_getPlayerActorClass()->current.pos) == 0) {
mEvtNo = 9;
}
diff --git a/src/d/actor/d_a_npc_moi.cpp b/src/d/actor/d_a_npc_moi.cpp
index 58f97dc157..aa235df6f0 100644
--- a/src/d/actor/d_a_npc_moi.cpp
+++ b/src/d/actor/d_a_npc_moi.cpp
@@ -1894,7 +1894,7 @@ int daNpc_Moi_c::walkOnEggshell(void* param_1) {
if (field_0x1658) {
field_0x1658 = injuryCheck();
if (field_0x1658) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
f32 fVar = daPy_getPlayerActorClass()->attention_info.position.absXZ(
attention_info.position);
}
diff --git a/src/d/actor/d_a_npc_uri.cpp b/src/d/actor/d_a_npc_uri.cpp
index 868c212cce..43d0cf7fed 100644
--- a/src/d/actor/d_a_npc_uri.cpp
+++ b/src/d/actor/d_a_npc_uri.cpp
@@ -1491,7 +1491,7 @@ int daNpc_Uri_c::wait(void* param_0) {
if (chkPointInArea(acStack_70, attention_info.position, 200.0f, fVar2, fVar3,
0))
{
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0 &&
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 &&
chkPlayerCarryBasket())
{
mEvtNo = 5;
@@ -1511,7 +1511,7 @@ int daNpc_Uri_c::wait(void* param_0) {
daNpc_Uri_Param_c::m.field_0x5c, mCurAngle.y))
{
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
if (chkActorInSight(daPy_getPlayerActorClass(), mAttnFovY,
home.angle.y))
{
diff --git a/src/d/actor/d_a_obj_amiShutter.cpp b/src/d/actor/d_a_obj_amiShutter.cpp
index 260ac60e7b..9e7dc7a1a8 100644
--- a/src/d/actor/d_a_obj_amiShutter.cpp
+++ b/src/d/actor/d_a_obj_amiShutter.cpp
@@ -8,12 +8,6 @@
#include "c/c_damagereaction.h"
#include "d/d_bg_w.h"
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-
UNK_REL_DATA
/* 80BA14CC-80BA1514 0000EC 0048+00 1/1 0/0 0/0 .text __ct__18daAmiShutter_HIO_cFv */
diff --git a/src/d/actor/d_a_obj_lv6bemos.cpp b/src/d/actor/d_a_obj_lv6bemos.cpp
index 37d25ae277..7a08fb9956 100644
--- a/src/d/actor/d_a_obj_lv6bemos.cpp
+++ b/src/d/actor/d_a_obj_lv6bemos.cpp
@@ -194,7 +194,7 @@ int daObjL6Bm_c::CreateHeap() {
}
#ifdef DEBUG
- pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_0FF);
+ pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_OFF);
JUT_ASSERT(660, pbtk != 0);
#endif
diff --git a/src/d/actor/d_a_obj_togeTrap.cpp b/src/d/actor/d_a_obj_togeTrap.cpp
index cae00fa615..546864d89e 100644
--- a/src/d/actor/d_a_obj_togeTrap.cpp
+++ b/src/d/actor/d_a_obj_togeTrap.cpp
@@ -295,7 +295,7 @@ int daTogeTrap_c::Delete() {
dComIfG_resDelete(&mPhase, "P_Toge");
#ifdef DEBUG
- l_HIO.removeHIO();
+ l_HIO.removeHIO(this);
#endif
return 1;
diff --git a/src/d/actor/d_a_obj_twGate.cpp b/src/d/actor/d_a_obj_twGate.cpp
index a3742dd898..52cd9f8318 100644
--- a/src/d/actor/d_a_obj_twGate.cpp
+++ b/src/d/actor/d_a_obj_twGate.cpp
@@ -4,416 +4,257 @@
*/
#include "d/actor/d_a_obj_twGate.h"
-#include "dol2asm.h"
-
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daTwGate_HIO_cFv();
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__10daTwGate_cFv();
-extern "C" void CreateHeap__10daTwGate_cFv();
-extern "C" void create__10daTwGate_cFv();
-extern "C" void __dt__8cM3dGLinFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void Execute__10daTwGate_cFPPA3_A4_f();
-extern "C" void Draw__10daTwGate_cFv();
-extern "C" void Delete__10daTwGate_cFv();
-extern "C" static void daTwGate_Draw__FP10daTwGate_c();
-extern "C" static void daTwGate_Execute__FP10daTwGate_c();
-extern "C" static void daTwGate_Delete__FP10daTwGate_c();
-extern "C" static void daTwGate_Create__FP10fopAc_ac_c();
-extern "C" void __dt__14daTwGate_HIO_cFv();
-extern "C" void __sinit_d_a_obj_twGate_cpp();
-extern "C" extern char const* const d_a_obj_twGate__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void isDarkClearLV__21dSv_player_status_b_cCFi();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-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 settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void cM3d_Len3dSqPntAndSegLine__FPC8cM3dGLinPC3VecP3VecPf();
-extern "C" void SetStartEnd__8cM3dGLinFRC3VecRC3Vec();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80D20308-80D2030C 000000 0004+00 4/4 0/0 0/0 .rodata @3638 */
-SECTION_RODATA static f32 const lit_3638 = 1900.0f;
-COMPILER_STRIP_GATE(0x80D20308, &lit_3638);
-
-/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D20554 = "twGtFiro";
-SECTION_DEAD static char const* const stringBase_80D2055D = "twGtK0102";
-SECTION_DEAD static char const* const stringBase_80D20567 = "twGtK0709";
-SECTION_DEAD static char const* const stringBase_80D20571 = "";
-SECTION_DEAD static char const* const stringBase_80D20572 = "twGnFiro";
-SECTION_DEAD static char const* const stringBase_80D2057B = "twGnK0102";
-SECTION_DEAD static char const* const stringBase_80D20585 = "twGnK0709";
-SECTION_DEAD static char const* const stringBase_80D2058F = "twGnK079b";
-SECTION_DEAD static char const* const stringBase_80D20599 = "twGnK1415";
-SECTION_DEAD static char const* const stringBase_80D205A3 = "twGnK0616";
-#pragma pop
+#include "d/d_com_inf_game.h"
/* 80D205B0-80D205E4 -00001 0034+00 3/3 0/0 0/0 .data l_resNameIdx */
-SECTION_DATA static void* l_resNameIdx[13] = {
- (void*)&d_a_obj_twGate__stringBase0,
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x9),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x13),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1E),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x27),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x31),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x3B),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x45),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x4F),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
-};
-
-/* 80D205E4-80D20604 -00001 0020+00 1/0 0/0 0/0 .data l_daTwGate_Method */
-static actor_method_class l_daTwGate_Method = {
- (process_method_func)daTwGate_Create__FP10fopAc_ac_c,
- (process_method_func)daTwGate_Delete__FP10daTwGate_c,
- (process_method_func)daTwGate_Execute__FP10daTwGate_c,
- 0,
- (process_method_func)daTwGate_Draw__FP10daTwGate_c,
-};
-
-/* 80D20604-80D20634 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TwGate */
-extern actor_process_profile_definition g_profile_Obj_TwGate = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_TwGate, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daTwGate_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 539, // mPriority
- &l_daTwGate_Method, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D20634-80D20640 000084 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */
-SECTION_DATA extern void* __vt__8cM3dGLin[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGLinFv,
-};
-
-/* 80D20640-80D2064C 000090 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80D2064C-80D20674 00009C 0028+00 1/1 0/0 0/0 .data __vt__10daTwGate_c */
-SECTION_DATA extern void* __vt__10daTwGate_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__10daTwGate_cFv,
- (void*)Create__16dBgS_MoveBgActorFv,
- (void*)Execute__10daTwGate_cFPPA3_A4_f,
- (void*)Draw__10daTwGate_cFv,
- (void*)Delete__10daTwGate_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
-/* 80D20674-80D20680 0000C4 000C+00 2/2 0/0 0/0 .data __vt__14daTwGate_HIO_c */
-SECTION_DATA extern void* __vt__14daTwGate_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daTwGate_HIO_cFv,
-};
-
-/* 80D20680-80D2068C 0000D0 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,
-};
-
-/* 80D2068C-80D20698 0000DC 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,
+static char* l_resNameIdx[13] = {
+ "twGtFiro",
+ "twGtK0102",
+ "twGtK0709",
+ "",
+ "",
+ "",
+ "twGnFiro",
+ "twGnK0102",
+ "twGnK0709",
+ "twGnK079b",
+ "twGnK1415",
+ "twGnK0616",
+ "",
};
/* 80D1FAAC-80D1FAE0 0000EC 0034+00 1/1 0/0 0/0 .text __ct__14daTwGate_HIO_cFv */
daTwGate_HIO_c::daTwGate_HIO_c() {
- // NONMATCHING
-}
-
-/* 80D1FAE0-80D1FB3C 000120 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
+ mRange = 1900.0f;
}
-/* 80D1FB3C-80D1FB84 00017C 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
+#ifdef DEBUG
+void daTwGate_HIO_c::genMessage(JORMContext* ctx) {
+ // Range
+ ctx->genSlider("範囲", &mRange, 0.0f, 500000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
}
+#endif
/* 80D1FB84-80D1FC0C 0001C4 0088+00 2/2 0/0 0/0 .text setBaseMtx__10daTwGate_cFv */
void daTwGate_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z);
+ mModel->setBaseScale(scale);
+ mModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* ############################################################################################## */
/* 80D2030C-80D20340 000004 0034+00 0/2 0/0 0/0 .rodata l_bmdIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_bmdIdx[52] = {
- 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
- 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xFF, 0xFF,
+static int const l_bmdIdx[13] = {
+ 6, 6, 6, -1, -1, -1, 6, 6, 6, 6, 6, 6, -1,
};
-COMPILER_STRIP_GATE(0x80D2030C, &l_bmdIdx);
-#pragma pop
/* 80D20340-80D20374 000038 0034+00 0/1 0/0 0/0 .rodata l_dzbIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_dzbIdx[52] = {
- 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
- 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_dzbIdx[13] = {
+ 15, 15, 15, -1, -1, -1, 15, 15, 15, 15, 15, 15, -1,
};
-COMPILER_STRIP_GATE(0x80D20340, &l_dzbIdx);
-#pragma pop
/* 80D20374-80D203A8 00006C 0034+00 0/1 0/0 0/0 .rodata l_btkIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_btkIdx[52] = {
- 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
- 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_btkIdx[13] = {
+ 12, 12, 12, -1, -1, -1, 12, 12, 12, 12, 12, 12, -1,
};
-COMPILER_STRIP_GATE(0x80D20374, &l_btkIdx);
-#pragma pop
/* 80D203A8-80D203DC 0000A0 0034+00 0/1 0/0 0/0 .rodata l_brkIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_brkIdx[52] = {
- 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
- 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_brkIdx[13] = {
+ 9, 9, 9, -1, -1, -1, 9, 9, 9, 9, 9, 9, -1,
};
-COMPILER_STRIP_GATE(0x80D203A8, &l_brkIdx);
-#pragma pop
/* 80D203DC-80D20410 0000D4 0034+00 0/2 0/0 0/0 .rodata l_twFlagIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_twFlagIdx[52] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
- 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
+static u32 const l_twFlagIdx[13] = {
+ 0, 1, 2, 4, -1, -1, 0, 1, 1, 2, 2, 4, 4,
};
-COMPILER_STRIP_GATE(0x80D203DC, &l_twFlagIdx);
-#pragma pop
/* 80D20410-80D204AC 000108 009C+00 0/1 0/0 0/0 .rodata l_cheeckPos0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_cheeckPos0[156] = {
- 0xC4, 0x0F, 0x26, 0xDC, 0x43, 0x9D, 0x73, 0xAC, 0xC6, 0xA2, 0x70, 0x96, 0xC6, 0xBF, 0xB1, 0xCF,
- 0xC5, 0xE2, 0x17, 0xEE, 0x47, 0x8F, 0x69, 0x9F, 0x45, 0x6E, 0xD7, 0xA7, 0x45, 0x92, 0x14, 0x72,
- 0xC7, 0x69, 0x42, 0x6A, 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, 0xC6, 0xB7, 0x79, 0x28, 0xC5, 0xE1, 0x0D, 0xB1, 0x47, 0x90, 0x52, 0xEC,
- 0x45, 0x37, 0xF9, 0x42, 0x45, 0x96, 0x23, 0xC0, 0xC7, 0x6C, 0x76, 0x04, 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,
+static Vec const l_cheeckPos0[13] = {
+ {-572.6072f, 314.9037f, -20792.293f},
+ {-24536.904f, -7234.991f, 73427.242f},
+ {3821.4783f, 4674.5557f, -59714.414f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {-23484.578f, -7201.7114f, 73893.843f},
+ {2943.5786f, 4804.4688f, -60534.016f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
};
-COMPILER_STRIP_GATE(0x80D20410, &l_cheeckPos0);
-#pragma pop
/* 80D204AC-80D20548 0001A4 009C+00 0/1 0/0 0/0 .rodata l_cheeckPos1 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_cheeckPos1[156] = {
- 0xC3, 0x32, 0x31, 0xB6, 0x43, 0x9A, 0x59, 0x66, 0xC6, 0xA1, 0x62, 0xA7, 0xC6, 0xB8, 0x74, 0x9D,
- 0xC5, 0xE2, 0x17, 0xEE, 0x47, 0x90, 0x9D, 0xE0, 0x45, 0x38, 0x98, 0xDA, 0x45, 0x92, 0x14, 0x72,
- 0xC7, 0x6C, 0x68, 0xD8, 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, 0xC6, 0xBF, 0x33, 0x2A, 0xC5, 0xE1, 0x0D, 0xB1, 0x47, 0x8F, 0x28, 0x60,
- 0x45, 0x6E, 0xD2, 0xF5, 0x45, 0x96, 0x23, 0xC0, 0xC7, 0x69, 0x3B, 0xDA, 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,
+static Vec const l_cheeckPos1[13] = {
+ {-178.19418f, 308.69842f, -20657.326f},
+ {-23610.3066f, -7234.9912f, 74043.75f},
+ {2953.5532f, 4674.5556f, -60520.844f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {-24473.582, -7201.7114f, 73296.75f},
+ {3821.1848f, 4804.4687f, -59707.8515f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
};
-COMPILER_STRIP_GATE(0x80D204AC, &l_cheeckPos1);
-#pragma pop
-
-/* 80D20548-80D2054C 000240 0004+00 0/2 0/0 0/0 .rodata @3693 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3693 = 1.0f;
-COMPILER_STRIP_GATE(0x80D20548, &lit_3693);
-#pragma pop
/* 80D1FC0C-80D1FD44 00024C 0138+00 1/0 0/0 0/0 .text CreateHeap__10daTwGate_cFv */
-void daTwGate_c::CreateHeap() {
- // NONMATCHING
+int daTwGate_c::CreateHeap() {
+ J3DModelData* modelData =
+ (J3DModelData*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_bmdIdx[mGateType]);
+ JUT_ASSERT(292, modelData != 0);
+ mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel == NULL) {
+ return 0;
+ }
+ ;
+ int res = mBtk.init(modelData, (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_btkIdx[mGateType]), 1, 2, 1.0f, 0, -1);
+ JUT_ASSERT(309, res == 1);
+
+ res = mBrk.init(modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_brkIdx[mGateType]), 1, 0, 1.0f, 0, -1);
+ JUT_ASSERT(317, res == 1);
+ return 1;
}
-/* ############################################################################################## */
-/* 80D2054C-80D20550 000244 0004+00 0/2 0/0 0/0 .rodata @3769 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3769 = -1.0f;
-COMPILER_STRIP_GATE(0x80D2054C, &lit_3769);
-#pragma pop
+/* 80D206AC-80D206B4 000014 0008+00 2/2 0/0 0/0 .bss l_HIO */
+static daTwGate_HIO_c l_HIO;
/* 80D1FD44-80D1FF14 000384 01D0+00 1/1 0/0 0/0 .text create__10daTwGate_cFv */
-void daTwGate_c::create() {
- // NONMATCHING
-}
-
-/* 80D1FF14-80D1FF5C 000554 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */
-// cM3dGLin::~cM3dGLin() {
-extern "C" void __dt__8cM3dGLinFv() {
- // NONMATCHING
-}
-
-/* 80D1FF5C-80D1FFA4 00059C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+int daTwGate_c::create() {
+ fopAcM_SetupActor(this, daTwGate_c);
+ mGateType = getGateType();
+ if (l_bmdIdx[mGateType] == -1) {
+ // Twilight gate: Invalid argument.
+ OS_REPORT("=== トワイライトゲート:無効な引数です (%d) ===\n", mGateType);
+ return cPhs_ERROR_e;
+ }
+
+ if (dComIfGs_isDarkClearLV(l_twFlagIdx[mGateType]) == TRUE) {
+ return cPhs_ERROR_e;
+ }
+
+ int rv = dComIfG_resLoad(&mPhase, l_resNameIdx[mGateType]);
+ if (rv == cPhs_COMPLEATE_e) {
+ if (MoveBGCreate(l_resNameIdx[mGateType], l_dzbIdx[mGateType],
+ dBgS_MoveBGProc_TypicalRotY, 0x22a0, NULL) == cPhs_ERROR_e) {
+ return cPhs_ERROR_e;
+ }
+
+ setBaseMtx();
+ fopAcM_SetMtx(this, mModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mModel->getModelData());
+ mLine.SetStartEnd(l_cheeckPos0[mGateType], l_cheeckPos1[mGateType]);
+ mBrk.setPlaySpeed(-1.0f);
+
+ #ifdef DEBUG
+ // Twilight Gate
+ l_HIO.entryHIO("トワイライトゲート");
+ #endif
+ }
+ return rv;
}
-/* ############################################################################################## */
-/* 80D20550-80D20554 000248 0004+00 0/1 0/0 0/0 .rodata @3837 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3837[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D20550, &lit_3837);
-#pragma pop
-
-/* 80D206A0-80D206AC 000008 000C+00 1/1 0/0 0/0 .bss @3630 */
-static u8 lit_3630[12];
-
-/* 80D206AC-80D206B4 000014 0008+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
-
/* 80D1FFA4-80D200B4 0005E4 0110+00 1/0 0/0 0/0 .text Execute__10daTwGate_cFPPA3_A4_f */
-void daTwGate_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daTwGate_c::Execute(Mtx** i_mtx) {
+ if (dComIfGs_isDarkClearLV(l_twFlagIdx[mGateType]) == TRUE) {
+ fopAcM_delete(this);
+ }
+ cXyz cStack_34;
+ f32 local_38;
+ bool res = cM3d_Len3dSqPntAndSegLine(&mLine, &dComIfGp_getPlayer(0)->current.pos, &cStack_34, &local_38);
+ f32 fVar1 = JMAFastSqrt(local_38);
+ if (fVar1 <= l_HIO.mRange) {
+ if (mBrk.getPlaySpeed() != 1.0f) {
+ mBrk.setPlaySpeed(1.0f);
+ }
+ } else {
+ if (mBrk.getPlaySpeed() != -1.0f) {
+ mBrk.setPlaySpeed(-1.0f);
+ }
+ }
+ mBtk.play();
+ mBrk.play();
+ *i_mtx = &mModel->getBaseTRMtx();
+ setBaseMtx();
+ return 1;
}
/* 80D200B4-80D20180 0006F4 00CC+00 1/0 0/0 0/0 .text Draw__10daTwGate_cFv */
-void daTwGate_c::Draw() {
- // NONMATCHING
+int daTwGate_c::Draw() {
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);
+ dComIfGd_setListDarkBG();
+ mDoExt_modelUpdateDL(mModel);
+ dComIfGd_setList();
+ J3DModelData* modelData = mModel->getModelData();
+ mBtk.entry(modelData);
+ mBrk.entry(modelData);
+ return 1;
}
/* 80D20180-80D201C0 0007C0 0040+00 1/0 0/0 0/0 .text Delete__10daTwGate_cFv */
-void daTwGate_c::Delete() {
- // NONMATCHING
+int daTwGate_c::Delete() {
+ dComIfG_resDelete(&mPhase, l_resNameIdx[mGateType]);
+
+ #ifdef DEBUG
+ l_HIO.removeHIO(this);
+ #endif
+
+ return 1;
}
/* 80D201C0-80D201EC 000800 002C+00 1/0 0/0 0/0 .text daTwGate_Draw__FP10daTwGate_c */
-static void daTwGate_Draw(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Draw(daTwGate_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 80D201EC-80D2020C 00082C 0020+00 1/0 0/0 0/0 .text daTwGate_Execute__FP10daTwGate_c */
-static void daTwGate_Execute(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Execute(daTwGate_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80D2020C-80D2022C 00084C 0020+00 1/0 0/0 0/0 .text daTwGate_Delete__FP10daTwGate_c */
-static void daTwGate_Delete(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Delete(daTwGate_c* i_this) {
+ fopAcM_RegisterDeleteID(i_this, "daTwGate");
+ return i_this->MoveBGDelete();
}
/* 80D2022C-80D2024C 00086C 0020+00 1/0 0/0 0/0 .text daTwGate_Create__FP10fopAc_ac_c */
-static void daTwGate_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D2024C-80D202B8 00088C 006C+00 2/1 0/0 0/0 .text __dt__14daTwGate_HIO_cFv */
-daTwGate_HIO_c::~daTwGate_HIO_c() {
- // NONMATCHING
+static int daTwGate_Create(fopAc_ac_c* i_this) {
+ fopAcM_RegisterCreateID(daTwGate_c, i_this, "daTwGate");
+ return a_this->create();
}
-/* 80D202B8-80D202F4 0008F8 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_twGate_cpp */
-void __sinit_d_a_obj_twGate_cpp() {
- // NONMATCHING
-}
+/* 80D205E4-80D20604 -00001 0020+00 1/0 0/0 0/0 .data l_daTwGate_Method */
+static actor_method_class l_daTwGate_Method = {
+ (process_method_func)daTwGate_Create,
+ (process_method_func)daTwGate_Delete,
+ (process_method_func)daTwGate_Execute,
+ NULL,
+ (process_method_func)daTwGate_Draw,
+};
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80D202B8, __sinit_d_a_obj_twGate_cpp);
-#pragma pop
+/* 80D20604-80D20634 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TwGate */
+extern actor_process_profile_definition g_profile_Obj_TwGate = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_TwGate, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daTwGate_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 539, // mPriority
+ &l_daTwGate_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_volcbom.cpp b/src/d/actor/d_a_obj_volcbom.cpp
index 14adf2043f..6e18b5d4e0 100644
--- a/src/d/actor/d_a_obj_volcbom.cpp
+++ b/src/d/actor/d_a_obj_volcbom.cpp
@@ -4,312 +4,84 @@
*/
#include "d/actor/d_a_obj_volcbom.h"
+#include "d/actor/d_a_midna.h"
+#include "d/actor/d_a_player.h"
+#include "d/d_bg_w.h"
+#include "d/d_s_play.h"
+#include "d/d_debug_viewer.h"
#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void eventCallBack__FPvi();
-extern "C" void initBaseMtx__14daObjVolcBom_cFv();
-extern "C" void setBaseMtx__14daObjVolcBom_cFv();
-extern "C" void Create__14daObjVolcBom_cFv();
-extern "C" void CreateHeap__14daObjVolcBom_cFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void create1st__14daObjVolcBom_cFv();
-extern "C" void Execute__14daObjVolcBom_cFPPA3_A4_f();
-extern "C" void mode_proc_call__14daObjVolcBom_cFv();
-extern "C" void init_modeWaitAppear__14daObjVolcBom_cFv();
-extern "C" void modeWaitAppear__14daObjVolcBom_cFv();
-extern "C" void init_modeFall__14daObjVolcBom_cFv();
-extern "C" void modeFall__14daObjVolcBom_cFv();
-extern "C" void init_modeWaitEndFallDemo__14daObjVolcBom_cFv();
-extern "C" void modeWaitEndFallDemo__14daObjVolcBom_cFv();
-extern "C" void init_modeWait__14daObjVolcBom_cFv();
-extern "C" void modeWait__14daObjVolcBom_cFv();
-extern "C" void clrDzb__14daObjVolcBom_cFv();
-extern "C" void setDzb__14daObjVolcBom_cFv();
-extern "C" void appear__14daObjVolcBom_cFv();
-extern "C" void disappear__14daObjVolcBom_cFv();
-extern "C" void setSmoke__14daObjVolcBom_cFv();
-extern "C" void checkTalkDistance__14daObjVolcBom_cFv();
-extern "C" void calcMidnaWaitPos__14daObjVolcBom_cFv();
-extern "C" void setSrcEffect__14daObjVolcBom_cFv();
-extern "C" void setBindEffect__14daObjVolcBom_cFv();
-extern "C" void followBindEffect__14daObjVolcBom_cFv();
-extern "C" void endBindEffect__14daObjVolcBom_cFv();
-extern "C" void followSrcEffect__14daObjVolcBom_cFv();
-extern "C" void endSrcEffect__14daObjVolcBom_cFv();
-extern "C" void event_proc_call__14daObjVolcBom_cFv();
-extern "C" void orderZHintEvent__14daObjVolcBom_cFv();
-extern "C" void actionWait__14daObjVolcBom_cFv();
-extern "C" void actionOrderEvent__14daObjVolcBom_cFv();
-extern "C" void actionOrderATalkEvent__14daObjVolcBom_cFv();
-extern "C" void actionTalkEvent__14daObjVolcBom_cFv();
-extern "C" void actionWarpEvent__14daObjVolcBom_cFv();
-extern "C" void actionDead__14daObjVolcBom_cFv();
-extern "C" void demoProc__14daObjVolcBom_cFv();
-extern "C" void calcObjPos__14daObjVolcBom_cFv();
-extern "C" void Draw__14daObjVolcBom_cFv();
-extern "C" void Delete__14daObjVolcBom_cFv();
-extern "C" static void daObjVolcBom_create1st__FP14daObjVolcBom_c();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" static void daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c();
-extern "C" static void daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c();
-extern "C" static void daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_80D26B28(void* _this, u8*);
-extern "C" static void func_80D26B44();
-extern "C" static void func_80D26B4C();
-extern "C" extern char const* const d_a_obj_volcbom__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_btkAnmRemove__FP12J3DModelData();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-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
-dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
-extern "C" void dComIfGp_TargetWarpPt_set__FUc();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-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 reset__14dEvt_control_cFv();
-extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii();
-extern "C" void setPt2__14dEvt_control_cFPv();
-extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
-extern "C" void startCheck__16dEvent_manager_cFs();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void getRunEventName__16dEvent_manager_cFv();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void request__10dAttHint_cFP10fopAc_ac_ci();
-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 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 __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__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 __ct__10dMsgFlow_cFv();
-extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
-extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-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 cLib_addCalc__FPfffff();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void func_802807E0();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void getName__10JUTNameTabCFUs();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-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 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" extern u8 g_meter2_info[248];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 m_midnaActor__9daPy_py_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" extern u8 struct_80D26EA8[4];
-
-//
-// Declarations:
-//
+#include "d/d_com_inf_game.h"
+#include "d/d_meter2_info.h"
+
+#ifdef DEBUG
+daObjVolcBom_HIO_c::daObjVolcBom_HIO_c() {
+
+}
+
+void daObjVolcBom_HIO_c::genMessage(JORMContext* ctx) {
+
+}
+
+static daObjVolcBom_HIO_c l_HIO;
+#endif
/* 80D24198-80D241E0 000078 0048+00 1/1 0/0 0/0 .text eventCallBack__FPvi */
-static void eventCallBack(void* param_0, int param_1) {
- // NONMATCHING
+static int eventCallBack(void* param_1, int param_2) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (param_1 != 0) {
+ player->skipPortalObjWarp();
+ }
+ return 1;
}
/* 80D241E0-80D24238 0000C0 0058+00 1/1 0/0 0/0 .text initBaseMtx__14daObjVolcBom_cFv */
void daObjVolcBom_c::initBaseMtx() {
- // NONMATCHING
+ mModel1->setBaseScale(scale);
+ mModel2->setBaseScale(scale);
+ setBaseMtx();
}
/* 80D24238-80D242A8 000118 0070+00 2/2 0/0 0/0 .text setBaseMtx__14daObjVolcBom_cFv */
void daObjVolcBom_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mModel1->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
+ mModel2->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
/* 80D26B5C-80D26B68 000000 000C+00 9/9 0/0 0/0 .rodata l_midna_offset */
-SECTION_RODATA static u8 const l_midna_offset[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static Vec const l_midna_offset = {
+ 0.0f, 1000.0f, 0.0f,
};
-COMPILER_STRIP_GATE(0x80D26B5C, &l_midna_offset);
/* 80D26B68-80D26B6C 00000C 0002+02 0/1 0/0 0/0 .rodata l_disapp_eff */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u16 const l_disapp_eff[1 + 1 /* padding */] = {
- 0x8B30,
- /* padding */
- 0x0000,
-};
-COMPILER_STRIP_GATE(0x80D26B68, &l_disapp_eff);
-#pragma pop
+static u16 const l_disapp_eff[1] = { 0x8B30 };
/* 80D26B6C-80D26B74 000010 0006+02 0/1 0/0 0/0 .rodata l_start_eff */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_start_eff[6 + 2 /* padding */] = {
- 0x8B,
- 0x31,
- 0x8B,
- 0x32,
- 0x8B,
- 0x33,
- /* padding */
- 0x00,
- 0x00,
+static u16 const l_start_eff[3] = {
+ 0x8B31,
+ 0x8B32,
+ 0x8B33,
};
-COMPILER_STRIP_GATE(0x80D26B6C, &l_start_eff);
-#pragma pop
/* 80D26B74-80D26B7C 000018 0008+00 1/1 0/0 0/0 .rodata l_bind_eff */
-SECTION_RODATA static u8 const l_bind_eff[8] = {
- 0x8B, 0x47, 0x8B, 0x48, 0x8B, 0x49, 0x8B, 0x4A,
+static u16 const l_bind_eff[4] = {
+ 0x8B47, 0x8B48, 0x8B49, 0x8B4A,
};
-COMPILER_STRIP_GATE(0x80D26B74, &l_bind_eff);
-
-/* 80D26B7C-80D26B80 000020 0004+00 4/11 0/0 0/0 .rodata @3785 */
-SECTION_RODATA static f32 const lit_3785 = 1.0f;
-COMPILER_STRIP_GATE(0x80D26B7C, &lit_3785);
-
-/* 80D26B80-80D26B84 000024 0004+00 0/1 0/0 0/0 .rodata @3786 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3786 = 30.0f;
-COMPILER_STRIP_GATE(0x80D26B80, &lit_3786);
-#pragma pop
-
-/* 80D26B84-80D26B88 000028 0004+00 0/1 0/0 0/0 .rodata @3787 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3787 = -6.0f;
-COMPILER_STRIP_GATE(0x80D26B84, &lit_3787);
-#pragma pop
-
-/* 80D26B88-80D26B8C 00002C 0004+00 1/2 0/0 0/0 .rodata @3788 */
-SECTION_RODATA static f32 const lit_3788 = 10.0f;
-COMPILER_STRIP_GATE(0x80D26B88, &lit_3788);
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C0C = "M_VolcBom";
-SECTION_DEAD static char const* const stringBase_80D26C16 = "PORTAL_WARP_BIGVOLC";
-SECTION_DEAD static char const* const stringBase_80D26C2A = "BigVolc";
-SECTION_DEAD static char const* const stringBase_80D26C32 = "effect_p";
-#pragma pop
-
-/* 80D26C54-80D26C60 000000 000C+00 3/3 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,
-};
-
-/* 80D26C60-80D26C74 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
+UNK_REL_DATA
/* 80D26C74-80D26C78 -00001 0004+00 5/6 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_volcbom__stringBase0;
+static char* l_arcName = "M_VolcBom";
/* 80D26C78-80D26C7C -00001 0004+00 0/1 0/0 0/0 .data l_portal_warp_name */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* l_portal_warp_name =
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0xA);
-#pragma pop
+static char* l_portal_warp_name = "PORTAL_WARP_BIGVOLC";
/* 80D26C7C-80D26C80 -00001 0004+00 2/2 0/0 0/0 .data l_staff_name */
-SECTION_DATA static void* l_staff_name = (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x1E);
+static char* l_staff_name = "BigVolc";
/* 80D26C80-80D26CC4 00002C 0044+00 0/1 0/0 0/0 .data l_cyl_src */
-#pragma push
-#pragma force_active on
static dCcD_SrcCyl l_cyl_src = {
{
{0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x1f}, {0x0, 0x10}, 0x78}}, // mObj
@@ -323,728 +95,878 @@ static dCcD_SrcCyl l_cyl_src = {
1500.0f // mHeight
} // mCyl
};
-#pragma pop
/* 80D242A8-80D244E0 000188 0238+00 1/0 0/0 0/0 .text Create__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Create() {
- // NONMATCHING
+int daObjVolcBom_c::Create() {
+ int swbit = getSwbit();
+ if (fopAcM_isSwitch(this, swbit)) {
+ mBaseScale = 1.0f;
+ setSmoke();
+ init_modeWait();
+ } else {
+ init_modeWaitAppear();
+ }
+ initBaseMtx();
+ fopAcM_SetMtx(this, mModel1->getBaseTRMtx());
+ mAcchCir.SetWall(30.0f, 30.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
+ &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+ mStts.Init(0xff, 0xff, this);
+ mCyl.Set(l_cyl_src);
+ mCyl.SetStts(&mStts);
+ fopAcM_setCullSizeBox2(this, mModel1->getModelData());
+ fopAcM_SetGravity(this, -6.0f);
+ fopAcM_setCullSizeFar(this, 10.0f);
+ attention_info.distances[fopAc_attn_TALK_e] = 0x36;
+ attention_info.distances[fopAc_attn_SPEAK_e] = 0x36;
+ eventInfo.setArchiveName(l_arcName);
+ mEventId = dComIfGp_getEventManager().getEventIdx(this, l_portal_warp_name, 0xff);
+ JUTNameTab* nameTab = mModel1->getModelData()->getJointTree().getJointName();
+ mEffectJntNo = 0xffff;
+ for (u16 i = 0; i < mModel1->getModelData()->getJointNum(); i++) {
+ if (strcmp(nameTab->getName(i), "effect_p") == 0) {
+ mEffectJntNo = i;
+ break;
+ }
+ }
+
+ #ifdef DEBUG
+ if (mEffectJntNo != 0xffff) {
+ mBtk1->entry(mModel1->getModelData());
+ mModel1->calcMaterial();
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 20), 0, 2, 1.0f, 0, -1);
+ } else {
+ // Large volcanic bombs; joint effect_p was not found!
+ OS_REPORT_ERROR("大火山弾;ジョイント effect_p が見つかりませんでした\n");
+ }
+ return mEffectJntNo != 0xffff;
+ #else
+ mBtk1->entry(mModel1->getModelData());
+ mModel1->calcMaterial();
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 20), 0, 2, 1.0f, 0, -1);
+ return 1;
+ #endif
}
-/* ############################################################################################## */
-/* 80D26B8C-80D26B90 000030 0004+00 1/6 0/0 0/0 .rodata @3904 */
-SECTION_RODATA static u8 const lit_3904[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26B8C, &lit_3904);
-
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C3B = "WAIT";
-SECTION_DEAD static char const* const stringBase_80D26C40 = "FLY";
-SECTION_DEAD static char const* const stringBase_80D26C44 = "INIT";
-SECTION_DEAD static char const* const stringBase_80D26C49 = "BEAM";
-#pragma pop
-
-/* 80D26CC4-80D26CD0 -00001 000C+00 0/1 0/0 0/0 .data @3933 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3933[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitAppear__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CD0-80D26CDC -00001 000C+00 0/1 0/0 0/0 .data @3934 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3934[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeFall__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CDC-80D26CE8 -00001 000C+00 0/1 0/0 0/0 .data @3935 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3935[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitEndFallDemo__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CE8-80D26CF4 -00001 000C+00 0/1 0/0 0/0 .data @3936 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3936[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWait__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CF4-80D26D24 0000A0 0030+00 0/1 0/0 0/0 .data mode_proc$3932 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 mode_proc[48] = {
- 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
-
-/* 80D26D24-80D26D30 -00001 000C+00 0/1 0/0 0/0 .data @4366 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4366[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionWait__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D30-80D26D3C -00001 000C+00 0/1 0/0 0/0 .data @4367 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4367[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionOrderEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D3C-80D26D48 -00001 000C+00 0/1 0/0 0/0 .data @4368 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4368[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionTalkEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D48-80D26D54 -00001 000C+00 0/1 0/0 0/0 .data @4369 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4369[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionWarpEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D54-80D26D60 -00001 000C+00 0/1 0/0 0/0 .data @4370 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4370[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionOrderATalkEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D60-80D26D6C -00001 000C+00 0/1 0/0 0/0 .data @4371 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4371[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionDead__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D6C-80D26DB4 000118 0048+00 0/1 0/0 0/0 .data l_func$4365 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_func[72] = {
- 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, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80D26DB4-80D26DC4 -00001 0010+00 1/1 0/0 0/0 .data action_table$4540 */
-SECTION_DATA static void* action_table[4] = {
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x2F),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x34),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x38),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x3D),
-};
-
-/* 80D26DC4-80D26DE4 -00001 0020+00 1/0 0/0 0/0 .data daObjVolcBom_METHODS */
-static actor_method_class daObjVolcBom_METHODS = {
- (process_method_func)daObjVolcBom_create1st__FP14daObjVolcBom_c,
- (process_method_func)daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c,
- (process_method_func)daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c,
- 0,
- (process_method_func)daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c,
-};
-
-/* 80D26DE4-80D26E14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_VolcanicBomb */
-extern actor_process_profile_definition g_profile_Obj_VolcanicBomb = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_VolcanicBomb, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjVolcBom_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 594, // mPriority
- &daObjVolcBom_METHODS, // sub_method
- 0x00040000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D26E14-80D26E20 0001C0 000C+00 1/1 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,
-};
-
-/* 80D26E20-80D26E2C 0001CC 000C+00 2/2 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,
-};
-
-/* 80D26E2C-80D26E38 0001D8 000C+00 1/1 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,
-};
-
-/* 80D26E38-80D26E44 0001E4 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 80D26E44-80D26E50 0001F0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80D26E50-80D26E74 0001FC 0024+00 2/2 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_80D26B4C,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D26B44,
-};
-
-/* 80D26E74-80D26E80 000220 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
/* 80D244E0-80D248AC 0003C0 03CC+00 1/0 0/0 0/0 .text CreateHeap__14daObjVolcBom_cFv */
-void daObjVolcBom_c::CreateHeap() {
- // NONMATCHING
-}
-
-/* 80D248AC-80D248F4 00078C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+int daObjVolcBom_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
+ JUT_ASSERT(389, modelData != 0);
+ mModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel1 == NULL) {
+ return 0;
+ }
+
+ J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 16);
+ JUT_ASSERT(403, pbrk != 0);
+ mBrk1 = new mDoExt_brkAnm();
+ if (mBrk1 == NULL || !mBrk1->init(modelData, pbrk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 21);
+ JUT_ASSERT(416, pbtk != 0);
+ mBtk1 = new mDoExt_btkAnm();
+ if (mBtk1 == NULL || !mBtk1->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(428, pbck != 0);
+ mBck1 = new mDoExt_bckAnm();
+ if (mBck1 == NULL || !mBck1->init(pbck, 1, 0, 1.0f, 0, -1, false)) {
+ return 0;
+ }
+
+ field_0x5cb = false;
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 11);
+ JUT_ASSERT(443, modelData != 0);
+ mModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel2 == NULL) {
+ return 0;
+ }
+
+ pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 15);
+ JUT_ASSERT(457, pbrk != 0);
+ mBrk2 = new mDoExt_brkAnm();
+ if (mBrk2 == NULL || !mBrk2->init(modelData, pbrk, 1, 0, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ mBrk2->setPlaySpeed(0.0f);
+ pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 19);
+ JUT_ASSERT(471, pbtk != 0);
+ mBtk2 = new mDoExt_btkAnm();
+ if (mBtk2 == NULL || !mBtk2->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+ mBtk2->setPlaySpeed(0.0f);
+ return 1;
}
/* 80D248F4-80D249D0 0007D4 00DC+00 1/1 0/0 0/0 .text create1st__14daObjVolcBom_cFv */
-void daObjVolcBom_c::create1st() {
- // NONMATCHING
+int daObjVolcBom_c::create1st() {
+ if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[65])) {
+ return cPhs_ERROR_e;
+ }
+ if (!mIsMsgIDInit) {
+ mMsgID = current.angle.z;
+ current.angle.z = 0;
+ home.angle.z = 0;
+ shape_angle.z = 0;
+ mIsMsgIDInit = true;
+ }
+
+ int rv = dComIfG_resLoad(&mPhase, l_arcName);
+ if (rv == cPhs_COMPLEATE_e) {
+ rv = MoveBGCreate(l_arcName, 24, dBgS_MoveBGProc_TypicalRotY, 0x4000, NULL);
+ if (rv == cPhs_ERROR_e) {
+ return rv;
+ }
+
+ #ifdef DEBUG
+ // The Great Lava Bombs
+ l_HIO.entryHIO("大溶岩弾");
+ #endif
+ }
+
+ return rv;
}
/* 80D249D0-80D24A2C 0008B0 005C+00 1/0 0/0 0/0 .text Execute__14daObjVolcBom_cFPPA3_A4_f
*/
-void daObjVolcBom_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daObjVolcBom_c::Execute(Mtx** i_mtx) {
+ mode_proc_call();
+ *i_mtx = &mBgMtx;
+ setBaseMtx();
+ mBtk1->play();
+ mBrk1->play();
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x14 != 0) {
+ switch (mMode) {
+ case MODE_WAIT_APPEAR:
+ dDbVw_Report(0x1e, 0x50, "Mode_WaitAppear");
+ break;
+ case MODE_FALL:
+ dDbVw_Report(0x1e, 0x50, "Mode_Fall");
+ break;
+ case MODE_WAIT_END_FALL_DEMO:
+ dDbVw_Report(0x1e, 0x50, "Mode_Wait");
+ break;
+ default:
+ dDbVw_Report(0x1e, 0x50, "Mode_????");
+ break;
+ }
+ }
+ #endif
+ return 1;
}
/* 80D24A2C-80D24B18 00090C 00EC+00 1/1 0/0 0/0 .text mode_proc_call__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::mode_proc_call() {
- // NONMATCHING
+ static daObjVolcBom_c::modeFunc mode_proc[4] = {
+ &daObjVolcBom_c::modeWaitAppear,
+ &daObjVolcBom_c::modeFall,
+ &daObjVolcBom_c::modeWaitEndFallDemo,
+ &daObjVolcBom_c::modeWait,
+ };
+
+ (this->*mode_proc[mMode])();
+ cXyz scale(mBaseScale, mBaseScale, mBaseScale);
+ mModel1->setBaseScale(scale);
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x15 != 0) {
+ fopAc_ac_c* player = dComIfGp_getPlayer(0);
+ current.pos.x = player->current.pos.x;
+ current.pos.y = l_HIO.field_0x18;
+ current.pos.z = player->current.pos.z;
+ mLightPosWorld.x = player->current.pos.x;
+ mLightPosWorld.y = l_HIO.field_0x1c;
+ mLightPosWorld.z = player->current.pos.z;
+ mBaseScale = l_HIO.field_0x20;
+ field_0x978 = l_HIO.field_0x24;
+ mAcch.CrrPos(dComIfG_Bgsp());
+ return;
+ }
+ #endif
}
-/* ############################################################################################## */
-/* 80D26B90-80D26B94 000034 0004+00 1/2 0/0 0/0 .rodata @3958 */
-SECTION_RODATA static f32 const lit_3958 = 2000.0f;
-COMPILER_STRIP_GATE(0x80D26B90, &lit_3958);
-
/* 80D24B18-80D24B6C 0009F8 0054+00 1/1 0/0 0/0 .text init_modeWaitAppear__14daObjVolcBom_cFv */
void daObjVolcBom_c::init_modeWaitAppear() {
- // NONMATCHING
+ disappear();
+ clrDzb();
+ current.pos.y += 2000.0f;
+ mWaitAppearState = 0;
+ mMode = MODE_WAIT_APPEAR;
}
-/* ############################################################################################## */
-/* 80D26B94-80D26B98 000038 0004+00 0/1 0/0 0/0 .rodata @3997 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3997 = 1.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80D26B94, &lit_3997);
-#pragma pop
-
-/* 80D26B98-80D26B9C 00003C 0004+00 0/1 0/0 0/0 .rodata @3998 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3998 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D26B98, &lit_3998);
-#pragma pop
-
-/* 80D26B9C-80D26BA0 000040 0004+00 0/2 0/0 0/0 .rodata @3999 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3999 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80D26B9C, &lit_3999);
-#pragma pop
-
-/* 80D26BA0-80D26BA4 000044 0004+00 1/5 0/0 0/0 .rodata @4000 */
-SECTION_RODATA static f32 const lit_4000 = -1.0f;
-COMPILER_STRIP_GATE(0x80D26BA0, &lit_4000);
-
-/* 80D26BA4-80D26BA8 000048 0004+00 0/1 0/0 0/0 .rodata @4001 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4001 = 15000.0f;
-COMPILER_STRIP_GATE(0x80D26BA4, &lit_4001);
-#pragma pop
-
-/* 80D26BA8-80D26BAC 00004C 0004+00 0/1 0/0 0/0 .rodata @4002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4002 = -250.0f;
-COMPILER_STRIP_GATE(0x80D26BA8, &lit_4002);
-#pragma pop
-
/* 80D24B6C-80D24D80 000A4C 0214+00 1/0 0/0 0/0 .text modeWaitAppear__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::modeWaitAppear() {
- // NONMATCHING
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ J3DJoint* root_jnt = mModel1->getModelData()->getJointNodePointer(0);
+ JUT_ASSERT(623, root_jnt != 0);
+
+ switch (mWaitAppearState) {
+ case 0:
+ if (field_0x960) {
+ mWaitAppearState = 1;
+ }
+ break;
+ case 1:
+ cLib_addCalc(&field_0x978, 1.0f, 0.02f, 0.1f, 0.01f);
+ cLib_addCalc(&mBaseScale, 1.0f, 0.02f, 0.1f, 0.01f);
+ mLightPosWorld.x = player->current.pos.x;
+ mLightPosWorld.y = current.pos.y + root_jnt->getMin()->y;
+ mLightPosWorld.z = player->current.pos.z;
+ current.pos.x = player->current.pos.x;
+ current.pos.y = player->current.pos.y + 2000.0f;
+ current.pos.z = player->current.pos.z;
+ appear();
+ mWaitSEPos = current.pos;
+ mWaitSEPos.y = mAcch.GetGroundH();
+ mDoAud_seStartLevel(Z2SE_OBJ_VOLC_WAIT, &mWaitSEPos, 0, 0);
+ if (field_0x95f == 0) {
+ break;
+ }
+ field_0x960 = false;
+ mWaitAppearState = 2;
+ // fallthrough
+ case 2:
+ field_0x978 = 1.0f;
+ mBaseScale = 1.0f;
+ current.pos.x = home.pos.x;
+ current.pos.z = home.pos.z;
+ current.pos.y = mAcch.GetGroundH() + 15000.0f;
+ mLightPosWorld = current.pos;
+ mLightPosWorld.y = mAcch.GetGroundH() + 2000.0f + root_jnt->getMin()->y;
+ fopAcM_SetMaxFallSpeed(this, -250.0f);
+ init_modeFall();
+ break;
+ }
+
+ if (field_0x95f == 0) {
+ mAcch.CrrPos(dComIfG_Bgsp());
+ }
}
-/* ############################################################################################## */
-/* 80D26BAC-80D26BB0 000050 0004+00 0/1 0/0 0/0 .rodata @4022 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4022 = 0.5f;
-COMPILER_STRIP_GATE(0x80D26BAC, &lit_4022);
-#pragma pop
-
/* 80D24D80-80D24E50 000C60 00D0+00 1/1 0/0 0/0 .text init_modeFall__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeFall() {
- // NONMATCHING
+ mBrk2->setPlaySpeed(1.0f);
+ mBtk2->setPlaySpeed(1.0f);
+ field_0x95e = true;
+ field_0x960 = false;
+ field_0x978 = 0.5f;
+ eyePos = current.pos;
+ fopAcM_seStart(this, Z2SE_OBJ_VOLC_FALL, 0);
+ OS_REPORT("大火山弾:落下SE(%.2f,%.2f,%.2f)\n", eyePos.x, eyePos.y, eyePos.z);
+ mMode = MODE_FALL;
}
-/* ############################################################################################## */
/* 80D26BB0-80D26BC0 000054 000E+02 0/1 0/0 0/0 .rodata l_effect_id$4032 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_effect_id[14 + 2 /* padding */] = {
- 0x85,
- 0xF7,
- 0x85,
- 0xF8,
- 0x85,
- 0xF9,
- 0x85,
- 0xFA,
- 0x85,
- 0xFB,
- 0x85,
- 0xFC,
- 0x85,
- 0xFD,
- /* padding */
- 0x00,
- 0x00,
+static u16 const l_effect_id[7] = {
+ 0x85F7,
+ 0x85F8,
+ 0x85F9,
+ 0x85FA,
+ 0x85FB,
+ 0x85FC,
+ 0x85FD,
};
-COMPILER_STRIP_GATE(0x80D26BB0, &l_effect_id);
-#pragma pop
/* 80D24E50-80D25024 000D30 01D4+00 1/0 0/0 0/0 .text modeFall__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeFall() {
- // NONMATCHING
+ bool isHomeHeight = false;
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ fopAcM_posMoveF(this, NULL);
+ if (home.pos.y > current.pos.y) {
+ isHomeHeight = true;
+ current.pos.y = home.pos.y;
+ }
+ eyePos = current.pos;
+ mBtk2->play();
+ if (mBrk2->play()) {
+ field_0x95e = false;
+ }
+ mDoAud_seStartLevel(Z2SE_OBJ_VOLC_WAIT, &mWaitSEPos, 0, 0);
+ if (isHomeHeight) {
+ dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
+ cXyz cStack_28(current.pos);
+ if (fopAcM_gc_c::gndCheck(&cStack_28)) {
+ cStack_28.y = fopAcM_gc_c::getGroundY();
+ }
+ for (int i = 0; i < 7; i++) {
+ dComIfGp_particle_setColor(l_effect_id[i],
+ &cStack_28, &tevStr, NULL, NULL, 0.0f, 0xff);
+ }
+
+ fopAcM_onSwitch(this, getSwbit());
+ setDzb();
+ // Large volcanic bombs drop bit ON
+ OS_REPORT("大火山弾落下ビットON\n");
+ init_modeWaitEndFallDemo();
+ }
}
/* 80D25024-80D25038 000F04 0014+00 1/1 0/0 0/0 .text init_modeWaitEndFallDemo__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeWaitEndFallDemo() {
- // NONMATCHING
+ mSmokeTimer = 5;
+ mMode = MODE_WAIT_END_FALL_DEMO;
}
/* 80D25038-80D25094 000F18 005C+00 1/0 0/0 0/0 .text modeWaitEndFallDemo__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeWaitEndFallDemo() {
- // NONMATCHING
+ if (cLib_calcTimer(&mSmokeTimer) == 0) {
+ setSmoke();
+ }
+
+ if (!dComIfGp_event_runCheck()) {
+ init_modeWait();
+ }
}
/* 80D25094-80D25100 000F74 006C+00 2/2 0/0 0/0 .text init_modeWait__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeWait() {
- // NONMATCHING
+ eyePos = current.pos;
+ attention_info.position = current.pos;
+ calcMidnaWaitPos();
+ appear();
+ mMode = MODE_WAIT;
}
-/* ############################################################################################## */
-/* 80D26BC0-80D26BC4 000064 0004+00 1/1 0/0 0/0 .rodata @4103 */
-SECTION_RODATA static f32 const lit_4103 = 750.0f;
-COMPILER_STRIP_GATE(0x80D26BC0, &lit_4103);
-
/* 80D25100-80D25178 000FE0 0078+00 1/0 0/0 0/0 .text modeWait__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeWait() {
- // NONMATCHING
+ cXyz cStack_18(current.pos);
+ cStack_18.y -= 750.0f;
+ mCyl.SetC(cStack_18);
+ dComIfG_Ccsp()->Set(&mCyl);
+ event_proc_call();
}
/* 80D25178-80D251CC 001058 0054+00 1/1 0/0 0/0 .text clrDzb__14daObjVolcBom_cFv */
void daObjVolcBom_c::clrDzb() {
- // NONMATCHING
+ if (mpBgW != NULL && mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
+ }
}
/* 80D251CC-80D25224 0010AC 0058+00 1/1 0/0 0/0 .text setDzb__14daObjVolcBom_cFv */
void daObjVolcBom_c::setDzb() {
- // NONMATCHING
+ if (mpBgW != NULL && !mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Regist(mpBgW, this);
+ }
}
/* 80D25224-80D25230 001104 000C+00 2/2 0/0 0/0 .text appear__14daObjVolcBom_cFv */
void daObjVolcBom_c::appear() {
- // NONMATCHING
+ misAppearing = false;
}
/* 80D25230-80D2523C 001110 000C+00 1/1 0/0 0/0 .text disappear__14daObjVolcBom_cFv */
void daObjVolcBom_c::disappear() {
- // NONMATCHING
+ misAppearing = true;
}
/* 80D2523C-80D252C8 00111C 008C+00 2/2 0/0 0/0 .text setSmoke__14daObjVolcBom_cFv */
void daObjVolcBom_c::setSmoke() {
- // NONMATCHING
-}
+ if (mSmokeEmitter == NULL) {
+ mSmokeEmitter =
+ dComIfGp_particle_set(0x8608, &current.pos, &home.angle, &scale, 0xff, 0, -1, 0, 0, 0);
+ }
-/* ############################################################################################## */
-/* 80D26BC4-80D26BCC 000068 0004+04 1/1 0/0 0/0 .rodata @4162 */
-SECTION_RODATA static f32 const lit_4162[1 + 1 /* padding */] = {
- 500.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80D26BC4, &lit_4162);
-
-/* 80D26BCC-80D26BD4 000070 0008+00 1/1 0/0 0/0 .rodata @4164 */
-SECTION_RODATA static u8 const lit_4164[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BCC, &lit_4164);
+ if (mSmokeEmitter == NULL) {
+ // Large volcanic bombs: smoke effects could not be set
+ OS_REPORT("大火山弾:煙エフェクトセットできませんでした\n");
+ }
+}
/* 80D252C8-80D25364 0011A8 009C+00 3/3 0/0 0/0 .text checkTalkDistance__14daObjVolcBom_cFv */
-void daObjVolcBom_c::checkTalkDistance() {
- // NONMATCHING
+bool daObjVolcBom_c::checkTalkDistance() {
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ f32 playerDist = fopAcM_searchPlayerDistanceXZ(this);
+ if ((getArg0() != 0xff && playerDist < getArg0() * 10.0f) ||
+ (getArg0() == 0xff && playerDist < 500.0f))
+ {
+ return true;
+ }
+ return false;
}
-/* ############################################################################################## */
-/* 80D26BD4-80D26BD8 000078 0004+00 0/1 0/0 0/0 .rodata @4175 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4175 = 1000.0f;
-COMPILER_STRIP_GATE(0x80D26BD4, &lit_4175);
-#pragma pop
-
-/* 80D26BD8-80D26BDC 00007C 0004+00 0/1 0/0 0/0 .rodata @4176 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4176 = 250.0f;
-COMPILER_STRIP_GATE(0x80D26BD8, &lit_4176);
-#pragma pop
-
/* 80D25364-80D253FC 001244 0098+00 1/1 0/0 0/0 .text calcMidnaWaitPos__14daObjVolcBom_cFv */
void daObjVolcBom_c::calcMidnaWaitPos() {
- // NONMATCHING
+ cXyz cStack_18(0.0f, 1000.0f, 0.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&cStack_18, &mMidnaWaitPos);
+ attention_info.position = mMidnaWaitPos;
+ attention_info.position.y += 250.0f;
}
/* 80D253FC-80D25528 0012DC 012C+00 1/1 0/0 0/0 .text setSrcEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::setSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ mDisappearEmitters[i] = dComIfGp_particle_set(l_disapp_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->becomeImmortalEmitter();
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ mStartEmitters[i] = dComIfGp_particle_set(l_start_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->becomeImmortalEmitter();
+ }
+ }
}
/* 80D25528-80D255F4 001408 00CC+00 1/1 0/0 0/0 .text setBindEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::setBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ mBindEmitters[i] = dComIfGp_particle_set(l_bind_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->becomeImmortalEmitter();
+ }
+ }
}
/* 80D255F4-80D25664 0014D4 0070+00 1/1 0/0 0/0 .text followBindEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::followBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(0));
+ }
+ }
}
/* 80D25664-80D256B8 001544 0054+00 1/1 0/0 0/0 .text endBindEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::endBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->becomeInvalidEmitter();
+ mBindEmitters[i]->quitImmortalEmitter();
+ mBindEmitters[i] = NULL;
+ }
+ }
}
/* 80D256B8-80D25758 001598 00A0+00 1/1 0/0 0/0 .text followSrcEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::followSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(mEffectJntNo));
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(0));
+ }
+ }
}
/* 80D25758-80D257E4 001638 008C+00 1/1 0/0 0/0 .text endSrcEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::endSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->becomeInvalidEmitter();
+ mDisappearEmitters[i]->quitImmortalEmitter();
+ mDisappearEmitters[i] = NULL;
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->becomeInvalidEmitter();
+ mStartEmitters[i]->quitImmortalEmitter();
+ mStartEmitters[i] = NULL;
+ }
+ }
}
/* 80D257E4-80D25914 0016C4 0130+00 1/1 0/0 0/0 .text event_proc_call__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::event_proc_call() {
- // NONMATCHING
+ static daObjVolcBom_c::actionFunc l_func[6] = {
+ &daObjVolcBom_c::actionWait,
+ &daObjVolcBom_c::actionOrderEvent,
+ &daObjVolcBom_c::actionTalkEvent,
+ &daObjVolcBom_c::actionWarpEvent,
+ &daObjVolcBom_c::actionOrderATalkEvent,
+ &daObjVolcBom_c::actionDead,
+ };
+
+ attention_info.flags = 0;
+ if (mNaviTimer != 0) {
+ mNaviTimer--;
+ }
+
+ (this->*l_func[mAction])();
+ if (!eventInfo.chkCondition(dEvtCnd_CANTALK_e)) {
+ field_0xa1a = false;
+ }
}
/* 80D25914-80D25A08 0017F4 00F4+00 1/1 0/0 0/0 .text orderZHintEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::orderZHintEvent() {
- // NONMATCHING
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (checkTalkDistance()) {
+ eventInfo.onCondition(dEvtCnd_CANTALK_e);
+ if (!player->checkPlayerFly()) {
+ dComIfGp_att_ZHintRequest(this, 0x1ff);
+ if (!field_0xa1a) {
+ field_0xa1a = true;
+ if (mNaviTimer == 0) {
+ mDoAud_seStart(Z2SE_NAVI_CALLVOICE, 0, 0, 0);
+ }
+ mNaviTimer = 60;
+ }
+ }
+ }
}
/* 80D25A08-80D25B04 0018E8 00FC+00 1/0 0/0 0/0 .text actionWait__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionWait() {
- // NONMATCHING
+ if (checkTalkDistance() && dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[84])) {
+ setAction(ACTION_ORDER_EVENT);
+ actionOrderEvent();
+ }
+
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass();
+
+ // Probably fake match since ebug calls different manager functions
+ dEvent_manager_c& evtMgr = g_dComIfG_gameInfo.play.getEvtManager();
+ if (evtMgr.startCheck(mEventId)) {
+ if (strcmp(evtMgr.getRunEventName(), "PORTAL_WARP_BIGVOLC") == 0) {
+ player->onWarpObjDemo();
+ dComIfGp_getEvent().setPt2(this);
+ mStaffId = evtMgr.getMyStaffId(l_staff_name, 0, 0);
+ setAction(ACTION_WARP_EVENT);
+ demoProc();
+ }
+ }
}
-/* ############################################################################################## */
-/* 80D26BDC-80D26BE4 000080 0008+00 0/2 0/0 0/0 .rodata @4470 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4470[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BDC, &lit_4470);
-#pragma pop
-
-/* 80D26BE4-80D26BEC 000088 0008+00 0/2 0/0 0/0 .rodata @4471 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4471[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BE4, &lit_4471);
-#pragma pop
-
-/* 80D26BEC-80D26BF4 000090 0008+00 0/2 0/0 0/0 .rodata @4472 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4472[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BEC, &lit_4472);
-#pragma pop
-
-/* 80D26BF4-80D26BF8 000098 0004+00 0/1 0/0 0/0 .rodata @4473 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4473 = 5.0f;
-COMPILER_STRIP_GATE(0x80D26BF4, &lit_4473);
-#pragma pop
-
/* 80D25B04-80D25CA0 0019E4 019C+00 2/1 0/0 0/0 .text actionOrderEvent__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionOrderEvent() {
- // NONMATCHING
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ if (eventInfo.checkCommandTalk()) {
+ midna->onTagWaitPosPortalObj(mMidnaWaitPos);
+ if (midna->current.pos.abs(mMidnaWaitPos) < 5.0f) {
+ setAction(ACTION_TALK_EVENT);
+ mMsgFlow.init(this, getMsgID(), 0, NULL);
+ // Conversation demo for message ID
+ OS_REPORT("メッセージID<%d>の会話デモ\n", getMsgID());
+ }
+ } else {
+ orderZHintEvent();
+ }
}
/* 80D25CA0-80D25DEC 001B80 014C+00 1/0 0/0 0/0 .text actionOrderATalkEvent__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionOrderATalkEvent() {
- // NONMATCHING
+ daMidna_c* midna = (daMidna_c*)daPy_py_c::getMidnaActor();
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ if (eventInfo.checkCommandTalk()) {
+ setAction(ACTION_TALK_EVENT);
+ mMsgFlow.init(this, getMsgID(), 0, NULL);
+ } else {
+ if (dComIfGp_evmng_startCheck(mEventId)) {
+ player->onWarpObjDemo();
+ dComIfGp_getEvent().setPt2(this);
+ mStaffId = dComIfGp_evmng_getMyStaffId(l_staff_name, 0, 0);
+ setAction(ACTION_WARP_EVENT);
+ demoProc();
+ } else {
+ if (checkTalkDistance()) {
+ midna->onTagWaitPosPortalObj(mMidnaWaitPos);
+ dComIfGp_TargetWarpPt_set(9);
+ eventInfo.onCondition(dEvtCnd_CANTALK_e);
+ attention_info.flags = 0xa;
+ } else {
+ midna->offTagWaitPos();
+ setAction(ACTION_WAIT);
+ }
+ }
+ }
}
/* 80D25DEC-80D25E78 001CCC 008C+00 1/0 0/0 0/0 .text actionTalkEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::actionTalkEvent() {
- // NONMATCHING
+ if (mMsgFlow.doFlow(this, NULL, 0)) {
+ dComIfGp_event_reset();
+ field_0x5c9 = true;
+ int dummy;
+ if (mMsgFlow.getEventId(&dummy) == 11) {
+ dMeter2Info_setPauseStatus(6);
+ }
+ setAction(ACTION_ORDER_A_TALK_EVENT);
+ }
}
/* 80D25E78-80D25EE4 001D58 006C+00 1/0 0/0 0/0 .text actionWarpEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::actionWarpEvent() {
- // NONMATCHING
+ if (!dComIfGp_evmng_endCheck(mEventId)) {
+ dComIfGp_getEvent().setSkipProc(this, eventCallBack, 0);
+ demoProc();
+ }
}
/* 80D25EE4-80D25EE8 001DC4 0004+00 1/0 0/0 0/0 .text actionDead__14daObjVolcBom_cFv */
-void daObjVolcBom_c::actionDead() {
- /* empty function */
-}
-
-/* ############################################################################################## */
-/* 80D26BF8-80D26BFC 00009C 0004+00 0/1 0/0 0/0 .rodata @4715 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4715 = 222.0f;
-COMPILER_STRIP_GATE(0x80D26BF8, &lit_4715);
-#pragma pop
-
-/* 80D26BFC-80D26C00 0000A0 0004+00 0/1 0/0 0/0 .rodata @4716 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4716 = -10.0f;
-COMPILER_STRIP_GATE(0x80D26BFC, &lit_4716);
-#pragma pop
-
-/* 80D26C00-80D26C04 0000A4 0004+00 0/1 0/0 0/0 .rodata @4717 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4717 = -65.0f;
-COMPILER_STRIP_GATE(0x80D26C00, &lit_4717);
-#pragma pop
-
-/* 80D26C04-80D26C08 0000A8 0004+00 0/1 0/0 0/0 .rodata @4718 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4718 = 55.0f;
-COMPILER_STRIP_GATE(0x80D26C04, &lit_4718);
-#pragma pop
-
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C4E = "Timer";
-#pragma pop
+void daObjVolcBom_c::actionDead() {}
/* 80D25EE8-80D26468 001DC8 0580+00 3/3 0/0 0/0 .text demoProc__14daObjVolcBom_cFv */
void daObjVolcBom_c::demoProc() {
- // NONMATCHING
+ static const char* action_table[4] = {
+ "WAIT",
+ "FLY",
+ "INIT",
+ "BEAM",
+ };
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ daMidna_c* midna = (daMidna_c*)daPy_py_c::getMidnaActor();
+ int actIdx = dComIfGp_evmng_getMyActIdx(mStaffId, (char**)action_table, 4, 0, 0);
+ int* pTimer;
+ if (dComIfGp_evmng_getIsAddvance(mStaffId)) {
+ switch (actIdx) {
+ case 0:
+ pTimer = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer");
+ if (pTimer == NULL) {
+ mDemoTimer = 1;
+ } else {
+ mDemoTimer = *pTimer;
+ }
+ break;
+ case 2:
+ mBtk1->setPlayMode(0);
+ break;
+ case 1:
+ shape_angle.setall(0);
+ field_0x5cb = true;
+ mBck1->setPlaySpeed(1.0f);
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 21), 0, 2, 1.0f, 0, -1);
+ mBtk1->setFrame(0.0f);
+ mBtk1->setPlaySpeed(1.0f);
+ mBtk1->setPlayMode(J3DFrameCtrl::EMode_NONE);
+ setSrcEffect();
+ fopAcM_seStart(this, Z2SE_OBJ_VOLC_LIFT_UP, 0);
+ break;
+ case 3:
+ fopAcM_seStart(this, Z2SE_MDN_WARP_MAGIC, 0);
+ setBindEffect();
+ break;
+
+ }
+ }
+
+ cXyz cStack_4c;
+ cXyz cStack_58;
+ csXyz local_60;
+ switch (actIdx) {
+ case 0:
+ if (cLib_calcTimer(&mDemoTimer) == 0) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ break;
+ case 2:
+ if (mBtk1->isStop()) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ break;
+ case 1:
+ if (mBck1->getFrame() == 222.0f) {
+ calcObjPos();
+ mDoAud_seStart(Z2SE_OBJ_VOLC_WARP_IN, &mWarpSEPos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ // Large volcanic bombs: warp SE
+ OS_REPORT("大火山弾:ワープSE\n");
+ }
+ if (mBck1->play()) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ followSrcEffect();
+ break;
+ case 3: {
+ mDoMtx_stack_c::copy(midna->getMtxHairTop());
+ mDoMtx_stack_c::transM(-10.0f, -65.0f, 55.0f);
+ mDoMtx_stack_c::multVecZero(&cStack_58);
+ mDoMtx_stack_c::copy(mModel1->getAnmMtx(0));
+ mDoMtx_stack_c::multVecZero(&cStack_4c);
+ local_60.y = cLib_targetAngleY(&cStack_4c, &cStack_58);
+ local_60.x = cLib_targetAngleX(&cStack_58, &cStack_4c);
+ local_60.z = 0;
+ f32 emitterScale = cStack_4c.abs(cStack_58);
+ JPABaseEmitter* pEmitter =
+ dComIfGp_particle_set(0x8b53, &cStack_4c, &local_60, 0, 0xff, 0, -1, 0, 0, 0);
+ pEmitter->setGlobalParticleHeightScale(emitterScale * 0.01f);
+ followBindEffect();
+ dComIfGp_evmng_cutEnd(mStaffId);
+ break;
+ }
+ default:
+ dComIfGp_evmng_cutEnd(mStaffId);
+ break;
+ }
}
/* 80D26468-80D264E8 002348 0080+00 1/1 0/0 0/0 .text calcObjPos__14daObjVolcBom_cFv */
void daObjVolcBom_c::calcObjPos() {
- // NONMATCHING
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(1459, pbck != 0);
+ J3DTransformInfo info;
+ pbck->getTransform(0, &info);
+ mWarpSEPos.x = info.mTranslate.x;
+ mWarpSEPos.y = info.mTranslate.y;
+ mWarpSEPos.z = info.mTranslate.z;
}
-/* ############################################################################################## */
-/* 80D26C08-80D26C0C 0000AC 0004+00 0/1 0/0 0/0 .rodata @4828 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4828 = 4000.0f;
-COMPILER_STRIP_GATE(0x80D26C08, &lit_4828);
-#pragma pop
-
/* 80D264E8-80D266FC 0023C8 0214+00 1/0 0/0 0/0 .text Draw__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Draw() {
- // NONMATCHING
+int daObjVolcBom_c::Draw() {
+ if (misAppearing) {
+ return 1;
+ }
+
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel1, &tevStr);
+ dComIfGd_setListBG();
+ mBtk1->entry(mModel1->getModelData());
+ mBrk1->entry(mModel1->getModelData());
+ if (field_0x5cb) {
+ mBck1->entry(mModel1->getModelData());
+ }
+
+ if (!field_0x960) {
+ mDoExt_modelUpdateDL(mModel1);
+ } else {
+ mModel1->calc();
+ }
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x34 != 0)
+ {
+ cXyz cStack_24;
+ mDoMtx_stack_c::copy(mModel1->getAnmMtx(0));
+ mDoMtx_stack_c::multVecZero(&cStack_24);
+ dDbVw_drawSphereOpa(cStack_24, 30.0f, (GXColor) {0, 0, 0xff, 0xff}, 1);
+ field_0x960 = true;
+ return 1;
+ }
+ else
+ #endif
+ {
+ mDoExt_bckAnmRemove(mModel1->getModelData());
+ mDoExt_btkAnmRemove(mModel1->getModelData());
+ dComIfGd_setList();
+ tevStr.mLightPosWorld.x = current.pos.x;
+ tevStr.mLightPosWorld.y = mLightPosWorld.y + KREG_F(11);
+ tevStr.mLightPosWorld.z = current.pos.z;
+ tevStr.field_0x344 = field_0x978;
+ mShadowID = dComIfGd_setShadow(mShadowID, 0, mModel1, &current.pos,
+ 4000.0f, 0.0f, mLightPosWorld.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+
+ if (field_0x95e) {
+ g_env_light.setLightTevColorType_MAJI(mModel2, &tevStr);
+ mBtk2->entry(mModel2->getModelData());
+ mBrk2->entry(mModel2->getModelData());
+ mDoExt_modelUpdateDL(mModel2);
+ }
+ }
+
+ return 1;
}
/* 80D266FC-80D26774 0025DC 0078+00 1/0 0/0 0/0 .text Delete__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Delete() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80D26E80-80D26EA8 00022C 0028+00 1/1 0/0 0/0 .data __vt__14daObjVolcBom_c */
-SECTION_DATA extern void* __vt__14daObjVolcBom_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__14daObjVolcBom_cFv,
- (void*)Create__14daObjVolcBom_cFv,
- (void*)Execute__14daObjVolcBom_cFPPA3_A4_f,
- (void*)Draw__14daObjVolcBom_cFv,
- (void*)Delete__14daObjVolcBom_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
-/* 80D26774-80D268A8 002654 0134+00 1/0 0/0 0/0 .text daObjVolcBom_create1st__FP14daObjVolcBom_c
- */
-static void daObjVolcBom_create1st(daObjVolcBom_c* param_0) {
- // NONMATCHING
-}
+int daObjVolcBom_c::Delete() {
+ #ifdef DEBUG
+ if (l_HIO.field_0x04 != 0) {
+ fopAcM_offSwitch(this, getSwbit());
+ }
+ #endif
-/* 80D268A8-80D268F0 002788 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ if (mSmokeEmitter != NULL) {
+ mSmokeEmitter->becomeInvalidEmitter();
+ mSmokeEmitter = NULL;
+ }
-/* 80D268F0-80D26938 0027D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ endSrcEffect();
+ endBindEffect();
+ dComIfG_resDelete(&mPhase, l_arcName);
-/* 80D26938-80D26994 002818 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ #ifdef DEBUG
+ l_HIO.removeHIO();
+ #endif
-/* 80D26994-80D26A04 002874 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
+ return 1;
}
-/* 80D26A04-80D26A74 0028E4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+/* 80D26774-80D268A8 002654 0134+00 1/0 0/0 0/0 .text daObjVolcBom_create1st__FP14daObjVolcBom_c
+ */
+static int daObjVolcBom_create1st(daObjVolcBom_c* i_this) {
+ fopAcM_SetupActor(i_this, daObjVolcBom_c);
+ return ((daObjVolcBom_c*)i_this)->create1st();
}
/* 80D26A74-80D26A94 002954 0020+00 1/0 0/0 0/0 .text
* daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c */
-static void daObjVolcBom_MoveBGDelete(daObjVolcBom_c* param_0) {
- // NONMATCHING
+static int daObjVolcBom_MoveBGDelete(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80D26A94-80D26AB4 002974 0020+00 1/0 0/0 0/0 .text
* daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c */
-static void daObjVolcBom_MoveBGExecute(daObjVolcBom_c* param_0) {
- // NONMATCHING
+static int daObjVolcBom_MoveBGExecute(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80D26AB4-80D26AE0 002994 002C+00 1/0 0/0 0/0 .text daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c
*/
-static void daObjVolcBom_MoveBGDraw(daObjVolcBom_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D26AE0-80D26B28 0029C0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
+static int daObjVolcBom_MoveBGDraw(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGDraw();
}
-/* 80D26B28-80D26B44 002A08 001C+00 2/2 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
-extern "C" void func_80D26B28(void* _this, u8* param_0) {
- // NONMATCHING
-}
+/* 80D26DC4-80D26DE4 -00001 0020+00 1/0 0/0 0/0 .data daObjVolcBom_METHODS */
+static actor_method_class daObjVolcBom_METHODS = {
+ (process_method_func)daObjVolcBom_create1st,
+ (process_method_func)daObjVolcBom_MoveBGDelete,
+ (process_method_func)daObjVolcBom_MoveBGExecute,
+ NULL,
+ (process_method_func)daObjVolcBom_MoveBGDraw,
+};
-/* 80D26B44-80D26B4C 002A24 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80D26B44() {
- // NONMATCHING
-}
+/* 80D26DE4-80D26E14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_VolcanicBomb */
+extern actor_process_profile_definition g_profile_Obj_VolcanicBomb = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_VolcanicBomb, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjVolcBom_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 594, // mPriority
+ &daObjVolcBom_METHODS, // sub_method
+ 0x00040000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 80D26B4C-80D26B54 002A2C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80D26B4C() {
- // NONMATCHING
-}
/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_wood_statue.cpp b/src/d/actor/d_a_obj_wood_statue.cpp
index 5d9c2c8062..d57a51f1fa 100644
--- a/src/d/actor/d_a_obj_wood_statue.cpp
+++ b/src/d/actor/d_a_obj_wood_statue.cpp
@@ -477,7 +477,7 @@ int daObjWStatue_c::_delete() {
DeleteBase(dItem_data::getFieldArc(m_itemNo));
#ifdef DEBUG
- l_HIO.removeHIO();
+ l_HIO.removeHIO(this);
#endif
return 1;
diff --git a/src/f_pc/f_pc_base.cpp b/src/f_pc/f_pc_base.cpp
index a422bea1a2..f9f73276aa 100644
--- a/src/f_pc/f_pc_base.cpp
+++ b/src/f_pc/f_pc_base.cpp
@@ -145,7 +145,7 @@ base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_ap
fpcPi_Init(&pprocess->priority, pprocess, pprofile->layer_id, pprofile->list_id,
pprofile->list_priority);
- pprocess->init_state = 0;
+ pprocess->state.init_state = 0;
pprocess->unk_0xA = 0;
pprocess->id = i_procID;
pprocess->profname = i_profname;
@@ -164,19 +164,19 @@ int fpcBs_SubCreate(base_process_class* i_proc) {
case cPhs_NEXT_e:
case cPhs_COMPLEATE_e:
fpcBs_DeleteAppend(i_proc);
- i_proc->create_phase = cPhs_NEXT_e;
+ i_proc->state.create_phase = cPhs_NEXT_e;
return cPhs_NEXT_e;
case cPhs_INIT_e:
- case cPhs_LOADING_e:
- i_proc->init_state = 1;
- i_proc->create_phase = cPhs_INIT_e;
+case cPhs_LOADING_e:
+ i_proc->state.init_state = 1;
+ i_proc->state.create_phase = cPhs_INIT_e;
return cPhs_INIT_e;
case cPhs_UNK3_e:
- i_proc->create_phase = cPhs_UNK3_e;
+ i_proc->state.create_phase = cPhs_UNK3_e;
return cPhs_UNK3_e;
case cPhs_ERROR_e:
default:
- i_proc->create_phase = cPhs_ERROR_e;
+ i_proc->state.create_phase = cPhs_ERROR_e;
return cPhs_ERROR_e;
}
}
diff --git a/src/f_pc/f_pc_deletor.cpp b/src/f_pc/f_pc_deletor.cpp
index e365371927..8a2dff317c 100644
--- a/src/f_pc/f_pc_deletor.cpp
+++ b/src/f_pc/f_pc_deletor.cpp
@@ -100,7 +100,7 @@ s32 fpcDt_ToDeleteQ(base_process_class* i_proc) {
}
}
- i_proc->init_state = 3;
+ i_proc->state.init_state = 3;
return 1;
}
@@ -124,7 +124,7 @@ s32 fpcDt_Delete(void* i_proc) {
if (fpcCt_IsDoing(proc) == TRUE)
return 0;
- if (proc->init_state == 3)
+ if (proc->state.init_state == 3)
return 0;
int ret = fpcDt_ToDeleteQ(proc);
diff --git a/src/f_pc/f_pc_executor.cpp b/src/f_pc/f_pc_executor.cpp
index bf23306ac1..f6a981ba06 100644
--- a/src/f_pc/f_pc_executor.cpp
+++ b/src/f_pc/f_pc_executor.cpp
@@ -33,7 +33,7 @@ BOOL fpcEx_IsExist(fpc_ProcID i_id) {
/* 800213C4-80021418 0054+00 s=0 e=1 z=0 None .text fpcEx_Execute__FP18base_process_class */
s32 fpcEx_Execute(base_process_class* i_proc) {
- if (i_proc->init_state != 2 || fpcPause_IsEnable(i_proc, 1) == TRUE)
+ if (i_proc->state.init_state != 2 || fpcPause_IsEnable(i_proc, 1) == TRUE)
return 0;
return fpcBs_Execute(i_proc);
@@ -56,7 +56,7 @@ s32 fpcEx_ToLineQ(base_process_class* i_proc) {
}
#endif
- i_proc->init_state = 2;
+ i_proc->state.init_state = 2;
if (fpcBs_Is_JustOfType(g_fpcNd_type, i_proc->subtype)) {
fpcLyIt_OnlyHere(&((process_node_class*)i_proc)->layer, (fpcLyIt_OnlyHereFunc)fpcEx_ToLineQ, i_proc);
}
@@ -71,7 +71,7 @@ s32 fpcEx_ToLineQ(base_process_class* i_proc) {
*/
s32 fpcEx_ExecuteQTo(base_process_class* i_proc) {
if (fpcLyTg_QueueTo(&i_proc->layer_tag) == 1) {
- i_proc->init_state = 3;
+ i_proc->state.init_state = 3;
return 1;
}
diff --git a/src/f_pc/f_pc_leaf.cpp b/src/f_pc/f_pc_leaf.cpp
index b1906bf733..bb343afd34 100644
--- a/src/f_pc/f_pc_leaf.cpp
+++ b/src/f_pc/f_pc_leaf.cpp
@@ -57,7 +57,7 @@ int g_fpcLf_type;
/* 80021B14-80021B88 0074+00 s=1 e=0 z=0 None .text fpcLf_Create__FP14leafdraw_class */
s32 fpcLf_Create(leafdraw_class* i_leaf) {
- if (i_leaf->base.init_state == 0) {
+ if (i_leaf->base.state.init_state == 0) {
leaf_process_profile_definition* pprofile = (leaf_process_profile_definition*)i_leaf->base.profile;
i_leaf->leaf_methods = pprofile->sub_method;
i_leaf->base.subtype = fpcBs_MakeOfType(&g_fpcLf_type);
diff --git a/src/f_pc/f_pc_node.cpp b/src/f_pc/f_pc_node.cpp
index 72828c7968..f5c326d20e 100644
--- a/src/f_pc/f_pc_node.cpp
+++ b/src/f_pc/f_pc_node.cpp
@@ -105,7 +105,7 @@ s32 fpcNd_Create(process_node_class* i_procNode) {
layer_class* save_layer;
s32 ret;
- if (procnode->base.init_state == 0) {
+ if (procnode->base.state.init_state == 0) {
node_process_profile_definition* pprofile = (node_process_profile_definition*)procnode->base.profile;
procnode->base.subtype = fpcBs_MakeOfType(&g_fpcNd_type);
procnode->nodedraw_method = (nodedraw_method_class*)pprofile->sub_methods;
diff --git a/src/f_pc/f_pc_priority.cpp b/src/f_pc/f_pc_priority.cpp
index 8d7a4b3a63..896a28b028 100644
--- a/src/f_pc/f_pc_priority.cpp
+++ b/src/f_pc/f_pc_priority.cpp
@@ -85,7 +85,7 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
base_process_class* process = (base_process_class*)i_procPriority->base.mpTagData;
BOOL changed = FALSE;
- if (process->init_state == 3)
+ if (process->state.init_state == 3)
return 0;
if (!fpcPi_IsNormal(i_layerID, i_listID, i_priority))
@@ -108,7 +108,7 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
changed = TRUE;
}
- if (process->init_state == 0 || process->init_state == 1) {
+ if (process->state.init_state == 0 || process->state.init_state == 1) {
i_procPriority->current_info = i_procPriority->queue_info;
return 1;
}