summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_pumpkin.cpp
diff options
context:
space:
mode:
authorYunataSavior <58997725+YunataSavior@users.noreply.github.com>2025-09-30 09:49:33 -0700
committerGitHub <noreply@github.com>2025-09-30 10:49:33 -0600
commitc7703d106915675940de73b6c9ea059b059fd300 (patch)
tree861394a78315f01d0d9be3b57fd5cfb9aa2f3b54 /src/d/actor/d_a_obj_pumpkin.cpp
parent0520ce17570cd3973c244b297542f5903e5af412 (diff)
d_a_obj_pumpkin OK (#2715)
* Initial obj_pumpkin work * pumpkin execute done * d_a_obj_pumpkin OK * Remove NONMATCHING in obj_pumpkin * obj_pumpkin PR comments
Diffstat (limited to 'src/d/actor/d_a_obj_pumpkin.cpp')
-rw-r--r--src/d/actor/d_a_obj_pumpkin.cpp1485
1 files changed, 830 insertions, 655 deletions
diff --git a/src/d/actor/d_a_obj_pumpkin.cpp b/src/d/actor/d_a_obj_pumpkin.cpp
index 6272653a81..5877a976f6 100644
--- a/src/d/actor/d_a_obj_pumpkin.cpp
+++ b/src/d/actor/d_a_obj_pumpkin.cpp
@@ -7,193 +7,157 @@
#include "d/actor/d_a_obj_pumpkin.h"
#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __dt__15daObj_Pumpkin_cFv();
-extern "C" void create__15daObj_Pumpkin_cFv();
-extern "C" void __dt__8cM3dGLinFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void CreateHeap__15daObj_Pumpkin_cFv();
-extern "C" void Delete__15daObj_Pumpkin_cFv();
-extern "C" void Execute__15daObj_Pumpkin_cFv();
-extern "C" void Draw__15daObj_Pumpkin_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void createHeapCallBack__15daObj_Pumpkin_cFP10fopAc_ac_c();
-extern "C" void isDelete__15daObj_Pumpkin_cFv();
-extern "C" void setEnvTevColor__15daObj_Pumpkin_cFv();
-extern "C" void setRoomNo__15daObj_Pumpkin_cFv();
-extern "C" void reset__15daObj_Pumpkin_cFv();
-extern "C" void setMtx__15daObj_Pumpkin_cFv();
-extern "C" void calcRollAngle__15daObj_Pumpkin_cFsi();
-extern "C" void getWallAngle__15daObj_Pumpkin_cFsPs();
-extern "C" void setSmokePrtcl__15daObj_Pumpkin_cFv();
-extern "C" void setWaterPrtcl__15daObj_Pumpkin_cFv();
-extern "C" void setHamonPrtcl__15daObj_Pumpkin_cFv();
-extern "C" void crash__15daObj_Pumpkin_cFv();
-extern "C" static void daObj_Pumpkin_Create__FPv();
-extern "C" static void daObj_Pumpkin_Delete__FPv();
-extern "C" static void daObj_Pumpkin_Execute__FPv();
-extern "C" static void daObj_Pumpkin_Draw__FPv();
-extern "C" static bool daObj_Pumpkin_IsDelete__FPv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_80CB8274(void* _this, int*);
-extern "C" void __sinit_d_a_obj_pumpkin_cpp();
-extern "C" void __dt__21daObj_Pumpkin_Param_cFv();
-extern "C" static void func_80CB834C();
-extern "C" static void func_80CB8354();
-extern "C" u8 const m__21daObj_Pumpkin_Param_c[52];
-extern "C" extern char const* const d_a_obj_pumpkin__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c();
-extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_calcSpeed__FP10fopAc_ac_c();
-extern "C" void fopAcM_posMove__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb();
-extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci();
-extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff();
-extern "C" void fopAcM_carryOffRevise__FP10fopAc_ac_c();
-extern "C" void fopAcM_getWaterY__FPC4cXyzPf();
-extern "C" void fopAcM_getWaterStream__FPC4cXyzRC13cBgS_PolyInfoP4cXyzPii();
-extern "C" void fpcEx_IsExist__FUi();
-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 getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void forceOnEventMove__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-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__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-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 __dt__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
-extern "C" void ChkCoHit__12dCcD_GObjInfFv();
-extern "C" void GetCoHitObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void chkPointInArea__8daNpcT_cF4cXyz4cXyzfffs();
-extern "C" void daNpcT_chkEvtBit__FUl();
-extern "C" void daNpcT_onTmpBit__FUl();
-extern "C" void daNpcF_getGroundAngle__FP13cBgS_PolyInfos();
-extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
-extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void ClrCcMove__9cCcD_SttsFv();
-extern "C" void GetAc__8cCcD_ObjFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void normalizeZP__4cXyzFv();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_29();
-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" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" u8 const m__19daNpc_Jagar_Param_c[160];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+#if DEBUG
+#include "SSystem/SComponent/c_counter.h"
+#include "JSystem/JHostIO/JORFile.h"
+#endif
+#include "d/actor/d_a_npc.h"
+#include "d/d_cc_uty.h"
+#include "d/actor/d_a_npc_jagar.h"
/* ############################################################################################## */
-/* 80CB8460-80CB8460 0000F0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CB8460 = "";
-SECTION_DEAD static char const* const stringBase_80CB8461 = "pumpkin";
-#pragma pop
+/* 80CB8370-80CB83A4 000000 0034+00 5/5 0/0 0/0 .rodata m__21daObj_Pumpkin_Param_c */
+const daObj_Pumpkin_HIOParam daObj_Pumpkin_Param_c::m = {
+ 0.0f,
+ -5.0f,
+ 1.4f,
+ 100.0f,
+ 73.0f,
+ 24.0f,
+ 12.0f,
+ 24.0f,
+ 37.0f,
+ 45.0f,
+ 18.0f,
+ 16,
+ 0,
+ 20,
+ 20,
+};
+
+#if DEBUG
+daObj_Pumpkin_HIO_c::daObj_Pumpkin_HIO_c() {
+ m = daObj_Pumpkin_Param_c::m;
+}
+
+void daObj_Pumpkin_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ char msg_buffer[2004];
+ JORReflexible::listenPropertyEvent(event);
+ JORFile file_handle;
+ int len;
+ switch (reinterpret_cast<u32>(event->id)) {
+ case 0x40000002:
+ if (file_handle.open(6, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL) != 0) {
+ memset(msg_buffer, 0, 2000);
+ len = 0;
+ // interesting offset
+ sprintf(msg_buffer + len, "%.3ff,\t// 注目オフセット\n", m.featured_offset);
+ len = strlen(msg_buffer);
+ // gravity
+ sprintf(msg_buffer + len, "%.3ff,\t// 重力\n", m.gravity);
+ len = strlen(msg_buffer);
+ // scale
+ sprintf(msg_buffer + len, "%.3ff,\t// スケ-ル\n", m.scale);
+ len = strlen(msg_buffer);
+ // real shadow size
+ sprintf(msg_buffer + len, "%.3ff,\t// リアル影サイズ\n", m.real_shadow_size);
+ len = strlen(msg_buffer);
+ // weight
+ sprintf(msg_buffer + len, "%.3ff,\t// 体重\n", m.weight);
+ len = strlen(msg_buffer);
+ // height
+ sprintf(msg_buffer + len, "%.3ff,\t// 高さ\n", m.height);
+ len = strlen(msg_buffer);
+ // knee-length
+ sprintf(msg_buffer + len, "%.3ff,\t// ひざ丈\n", m.knee_length);
+ len = strlen(msg_buffer);
+ // width
+ sprintf(msg_buffer + len, "%.3ff,\t// 幅\n", m.width);
+ len = strlen(msg_buffer);
+ // Emission speed
+ sprintf(msg_buffer + len, "%.3ff,\t// 発射速度\n", m.fire_rate);
+ len = strlen(msg_buffer);
+ // Launch Angle
+ sprintf(msg_buffer + len, "%.3ff,\t// 発射角度\n", m.launch_angle);
+ len = strlen(msg_buffer);
+ // Floating offset
+ sprintf(msg_buffer + len, "%.3ff,\t// 浮きオフセット\n", m.floating_offset);
+ len = strlen(msg_buffer);
+ // Hold on
+ sprintf(msg_buffer + len, "%d, \t// ふんばり\n", m.hold_on);
+ len = strlen(msg_buffer);
+ // Pull sound delay
+ sprintf(msg_buffer + len, "%d, \t// 引き抜き音遅延\n", m.pull_sound_delay);
+ len = strlen(msg_buffer);
+ // Growth time 1
+ sprintf(msg_buffer + len, "%d, \t// 成長時間1\n", m.growth_time_1);
+ len = strlen(msg_buffer);
+ // Growth time 2
+ sprintf(msg_buffer + len, "%d, \t// 成長時間2\n", m.growth_time_2);
+ len = strlen(msg_buffer);
+ //
+ file_handle.writeData(msg_buffer, len);
+ file_handle.close();
+ OS_REPORT("write append success!::%6d\n", len);
+ } else {
+ OS_REPORT("write append failure!\n");
+ }
+ break;
+ }
+}
+
+void daObj_Pumpkin_HIO_c::genMessage(JORMContext* ctext) {
+ ctext->genSlider("注目オフセット ", &m.featured_offset, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("重力 ", &m.gravity, -100.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("スケ-ル ", &m.scale, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("リアル影サイズ ", &m.real_shadow_size, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("体重 ", &m.weight, 0.0f, 255.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("高さ ", &m.height, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("ひざ丈 ", &m.knee_length, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("幅 ", &m.width, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("発射速度 ", &m.fire_rate, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // fire angle:
+ ctext->genSlider("発射角度 ", &m.launch_angle, 0.0f, 90.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("浮きオフセット ", &m.floating_offset, -100.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // stand strong:
+ ctext->genSlider("ふんばり ", &m.hold_on, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("引き抜き音遅延 ", &m.pull_sound_delay, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("成長時間1 ", &m.growth_time_1, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ ctext->genSlider("成長時間2 ", &m.growth_time_2, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // export file:
+ ctext->genButton("ファイル書き出し", 0x40000002, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+}
+#endif
+
+/* 80CB83A4-80CB83D4 000034 0030+00 1/1 0/0 0/0 .rodata l_ccDObjData */
+const dCcD_SrcGObjInf l_ccDObjData = {
+ {0, // mFlags
+ {
+ {0, 0, 0}, // mObjAt
+ {0xD8FBFDFF, 0x1F}, // mObjTg
+ {0x79} // mObjCo
+ } // mSrcObjHitInf
+ }, // mObj
+ {0, 0, 0, 0, 0}, // mGObjAt
+ {10, 0, 0, 0, 0}, // mGObjTg
+ {0} // mGObjCo
+};
+
/* 80CB848C-80CB8494 000020 0008+00 2/3 0/0 0/0 .data l_bmdData */
-SECTION_DATA static u8 l_bmdData[8] = {
- 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01,
+static int l_bmdData[1][2] = {
+ {3, 1},
};
/* 80CB8494-80CB849C -00001 0008+00 2/4 0/0 0/0 .data l_resNameList */
-SECTION_DATA static void* l_resNameList[2] = {
- (void*)&d_a_obj_pumpkin__stringBase0,
- (void*)(((char*)&d_a_obj_pumpkin__stringBase0) + 0x1),
+static char* l_resNameList[2] = {
+ "",
+ "pumpkin",
};
/* 80CB849C-80CB84E0 000030 0044+00 1/2 0/0 0/0 .data l_ccDCyl */
static dCcD_SrcCyl l_ccDCyl = {
- {
- {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
+ l_ccDObjData, // mObjInf
{
{0.0f, 0.0f, 0.0f}, // mCenter
0.0f, // mRadius
@@ -201,571 +165,782 @@ static dCcD_SrcCyl l_ccDCyl = {
} // mCyl
};
-/* 80CB84E0-80CB84E8 000074 0008+00 1/1 0/0 0/0 .data emttrId$5110 */
-SECTION_DATA static u8 emttrId[8] = {
- 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB,
-};
-
-/* 80CB84E8-80CB8508 -00001 0020+00 1/0 0/0 0/0 .data daObj_Pumpkin_MethodTable */
-static actor_method_class daObj_Pumpkin_MethodTable = {
- (process_method_func)daObj_Pumpkin_Create__FPv,
- (process_method_func)daObj_Pumpkin_Delete__FPv,
- (process_method_func)daObj_Pumpkin_Execute__FPv,
- (process_method_func)daObj_Pumpkin_IsDelete__FPv,
- (process_method_func)daObj_Pumpkin_Draw__FPv,
-};
-
-/* 80CB8508-80CB8538 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_PUMPKIN */
-extern actor_process_profile_definition g_profile_OBJ_PUMPKIN = {
- fpcLy_CURRENT_e, // mLayerID
- 8, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_OBJ_PUMPKIN, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObj_Pumpkin_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 716, // mPriority
- &daObj_Pumpkin_MethodTable, // sub_method
- 0x00044100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80CB8538-80CB8544 0000CC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
-
-/* 80CB8544-80CB8568 0000D8 0024+00 3/3 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_80CB8354,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80CB834C,
-};
-
-/* 80CB8568-80CB8574 0000FC 000C+00 3/3 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,
-};
-
-/* 80CB8574-80CB8580 000108 000C+00 2/2 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,
-};
-
-/* 80CB8580-80CB858C 000114 000C+00 2/2 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,
-};
-
-/* 80CB858C-80CB8598 000120 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80CB8598-80CB85A4 00012C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 80CB85A4-80CB85B0 000138 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGLin */
-SECTION_DATA extern void* __vt__8cM3dGLin[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGLinFv,
-};
-
-/* 80CB85B0-80CB85BC 000144 000C+00 2/2 0/0 0/0 .data __vt__15daObj_Pumpkin_c */
-SECTION_DATA extern void* __vt__15daObj_Pumpkin_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__15daObj_Pumpkin_cFv,
-};
+#if DEBUG
+static daObj_Pumpkin_HIO_c l_HIO;
+#else
+/* 80CB85DC-80CB85E0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
+static daObj_Pumpkin_Param_c l_HIO;
+#endif
/* 80CB578C-80CB5A04 0000EC 0278+00 1/0 0/0 0/0 .text __dt__15daObj_Pumpkin_cFv */
daObj_Pumpkin_c::~daObj_Pumpkin_c() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80CB8370-80CB83A4 000000 0034+00 5/5 0/0 0/0 .rodata m__21daObj_Pumpkin_Param_c */
-SECTION_RODATA u8 const daObj_Pumpkin_Param_c::m[52] = {
- 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3F, 0xB3, 0x33, 0x33, 0x42,
- 0xC8, 0x00, 0x00, 0x42, 0x92, 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x41, 0x40,
- 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x42, 0x14, 0x00, 0x00, 0x42, 0x34, 0x00,
- 0x00, 0x41, 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14,
-};
-COMPILER_STRIP_GATE(0x80CB8370, &daObj_Pumpkin_Param_c::m);
-
-/* 80CB83A4-80CB83D4 000034 0030+00 1/1 0/0 0/0 .rodata l_ccDObjData */
-SECTION_RODATA static u8 const l_ccDObjData[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CB83A4, &l_ccDObjData);
-
-/* 80CB83D4-80CB83D8 000064 0004+00 0/2 0/0 0/0 .rodata @4022 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4022 = -50.0f;
-COMPILER_STRIP_GATE(0x80CB83D4, &lit_4022);
-#pragma pop
-
-/* 80CB83D8-80CB83DC 000068 0004+00 0/2 0/0 0/0 .rodata @4023 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4023 = 50.0f;
-COMPILER_STRIP_GATE(0x80CB83D8, &lit_4023);
-#pragma pop
-
-/* 80CB5A04-80CB5D74 000364 0370+00 1/1 0/0 0/0 .text create__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::create() {
- // NONMATCHING
-}
-
-/* 80CB5D74-80CB5DBC 0006D4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */
-// cM3dGLin::~cM3dGLin() {
-extern "C" void __dt__8cM3dGLinFv() {
- // NONMATCHING
-}
+ // "|%06d:%x|daObj_Pumpkin_c -> Destruct\n":
+ OS_REPORT("|%06d:%x|daObj_Pumpkin_c -> デストラクト\n", g_Counter.mCounter0, this);
+#if DEBUG
+ if (mpHIO != NULL) {
+ mpHIO->removeHIO();
+ }
+#endif
-/* 80CB5DBC-80CB5E04 00071C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
+ dComIfG_resDelete(&mPhaseReq, l_resNameList[l_bmdData[0][1]]);
}
-/* 80CB5E04-80CB5E4C 000764 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+/* 80CB5A04-80CB5D74 000364 0370+00 1/1 0/0 0/0 .text create__15daObj_Pumpkin_cFv */
+int daObj_Pumpkin_c::create() {
+ fopAcM_SetupActor(this, daObj_Pumpkin_c);
+
+ mType = getType();
+ cPhs__Step phase = (cPhs__Step) dComIfG_resLoad(&mPhaseReq, l_resNameList[l_bmdData[0][1]]);
+ if (phase == cPhs_COMPLEATE_e) {
+ OS_REPORT("\t(%s:%d) ItemTableNo:%d, ProcType:%d<%08x> -> roomNo.%d", fopAcM_getProcNameString(this),
+ getType(), getItemTableNo(), getProcType(), fopAcM_GetParam(this), fopAcM_GetRoomNo(this));
+ if ((daNpcT_chkEvtBit(0x1E) || daNpcT_chkEvtBit(0x92)) && isDelete()) {
+ OS_REPORT("===>isDelete:TRUE\n");
+ return cPhs_ERROR_e;
+ }
+
+ OS_REPORT("\n");
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0xEB0)) {
+ return cPhs_ERROR_e;
+ }
+
+ J3DModelData* model_data = mpModel->getModelData();
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+
+ fopAcM_setCullSizeBox(this, -50.0f, -50.0f, -50.0f, 50.0f, 50.0f, 50.0f);
+#if DEBUG
+ mpHIO = &l_HIO;
+ // pumpkin:
+ mpHIO->entryHIO("かぼちゃ");
+#endif
+
+ reset();
+ mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
+ fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
+ mStts.Init(mpHIO->m.weight, 0, this);
+ mCyl0.Set(l_ccDCyl);
+ mCyl0.SetStts(&mStts);
+ mCyl1.Set(l_ccDCyl);
+ mCyl1.SetStts(&mStts);
+ current.pos = home.pos;
+ old.pos = current.pos;
+ field_0xB60 = current.pos.y;
+ setMtx();
+ }
+
+ return phase;
}
-/* 80CB5E4C-80CB5EBC 0007AC 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
+/* 80CB5F88-80CB6018 0008E8 0090+00 1/1 0/0 0/0 .text CreateHeap__15daObj_Pumpkin_cFv */
+int daObj_Pumpkin_c::CreateHeap() {
+ J3DModelData* modelData = NULL;
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[l_bmdData[0][1]], l_bmdData[0][0]);
+ if (modelData == NULL) {
+ return 0;
+ }
-/* 80CB5EBC-80CB5F18 00081C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpModel == NULL) {
+ return 0;
+ }
-/* 80CB5F18-80CB5F88 000878 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 80CB5F88-80CB6018 0008E8 0090+00 1/1 0/0 0/0 .text CreateHeap__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::CreateHeap() {
- // NONMATCHING
+ return 1;
}
/* 80CB6018-80CB604C 000978 0034+00 1/1 0/0 0/0 .text Delete__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::Delete() {
- // NONMATCHING
+int daObj_Pumpkin_c::Delete() {
+ OS_REPORT("|%06d:%x|daObj_Pumpkin_c -> Delete\n", g_Counter.mCounter0, this);
+ this->~daObj_Pumpkin_c();
+ return 1;
}
-/* ############################################################################################## */
-/* 80CB83DC-80CB83E0 00006C 0004+00 1/4 0/0 0/0 .rodata @4860 */
-SECTION_RODATA static f32 const lit_4860 = 1.0f;
-COMPILER_STRIP_GATE(0x80CB83DC, &lit_4860);
-
-/* 80CB83E0-80CB83E4 000070 0004+00 0/1 0/0 0/0 .rodata @4861 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4861 = 9.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CB83E0, &lit_4861);
-#pragma pop
-
-/* 80CB83E4-80CB83E8 000074 0004+00 0/3 0/0 0/0 .rodata @4862 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4862[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CB83E4, &lit_4862);
-#pragma pop
-
-/* 80CB83E8-80CB83EC 000078 0004+00 0/1 0/0 0/0 .rodata @4863 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4863 = 0.5f;
-COMPILER_STRIP_GATE(0x80CB83E8, &lit_4863);
-#pragma pop
-
-/* 80CB83EC-80CB83F0 00007C 0004+00 0/3 0/0 0/0 .rodata @4864 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4864 = -1.0f;
-COMPILER_STRIP_GATE(0x80CB83EC, &lit_4864);
-#pragma pop
-
-/* 80CB83F0-80CB83F4 000080 0004+00 0/1 0/0 0/0 .rodata @4865 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4865 = 0x43360B61;
-COMPILER_STRIP_GATE(0x80CB83F0, &lit_4865);
-#pragma pop
-
-/* 80CB83F4-80CB83F8 000084 0004+00 0/2 0/0 0/0 .rodata @4866 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4866 = -G_CM3D_F_INF;
-COMPILER_STRIP_GATE(0x80CB83F4, &lit_4866);
-#pragma pop
-
-/* 80CB83F8-80CB83FC 000088 0004+00 0/1 0/0 0/0 .rodata @4867 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4867 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CB83F8, &lit_4867);
-#pragma pop
-
-/* 80CB83FC-80CB8400 00008C 0004+00 0/1 0/0 0/0 .rodata @4868 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4868 = 3000.0f;
-COMPILER_STRIP_GATE(0x80CB83FC, &lit_4868);
-#pragma pop
-
-/* 80CB8400-80CB8404 000090 0004+00 0/1 0/0 0/0 .rodata @4869 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4869 = 31.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80CB8400, &lit_4869);
-#pragma pop
-
-/* 80CB8404-80CB8408 000094 0004+00 0/1 0/0 0/0 .rodata @4870 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4870 = 3.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80CB8404, &lit_4870);
-#pragma pop
-
-/* 80CB8408-80CB840C 000098 0004+00 0/1 0/0 0/0 .rodata @4871 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4871 = 0.75f;
-COMPILER_STRIP_GATE(0x80CB8408, &lit_4871);
-#pragma pop
-
-/* 80CB840C-80CB8410 00009C 0004+00 0/1 0/0 0/0 .rodata @4872 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4872 = 2000.0f;
-COMPILER_STRIP_GATE(0x80CB840C, &lit_4872);
-#pragma pop
-
-/* 80CB8410-80CB8414 0000A0 0004+00 0/1 0/0 0/0 .rodata @4873 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4873 = 2.0f;
-COMPILER_STRIP_GATE(0x80CB8410, &lit_4873);
-#pragma pop
-
-/* 80CB8414-80CB8418 0000A4 0004+00 0/1 0/0 0/0 .rodata @4874 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4874 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CB8414, &lit_4874);
-#pragma pop
-
-/* 80CB8418-80CB841C 0000A8 0004+00 0/1 0/0 0/0 .rodata @4875 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4875 = 11.0f;
-COMPILER_STRIP_GATE(0x80CB8418, &lit_4875);
-#pragma pop
-
-/* 80CB841C-80CB8420 0000AC 0004+00 0/1 0/0 0/0 .rodata @4876 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4876 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CB841C, &lit_4876);
-#pragma pop
-
-/* 80CB8420-80CB8424 0000B0 0004+00 0/1 0/0 0/0 .rodata @4877 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4877 = -500.0f;
-COMPILER_STRIP_GATE(0x80CB8420, &lit_4877);
-#pragma pop
-
-/* 80CB8424-80CB8428 0000B4 0004+00 0/1 0/0 0/0 .rodata @4878 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4878 = -250.0f;
-COMPILER_STRIP_GATE(0x80CB8424, &lit_4878);
-#pragma pop
-
-/* 80CB8428-80CB842C 0000B8 0004+00 0/1 0/0 0/0 .rodata @4879 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4879 = 1200.0f;
-COMPILER_STRIP_GATE(0x80CB8428, &lit_4879);
-#pragma pop
-
-/* 80CB842C-80CB8430 0000BC 0004+00 0/1 0/0 0/0 .rodata @4880 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4880 = 900.0f;
-COMPILER_STRIP_GATE(0x80CB842C, &lit_4880);
-#pragma pop
-
-/* 80CB8430-80CB8434 0000C0 0004+00 1/2 0/0 0/0 .rodata @4881 */
-SECTION_RODATA static f32 const lit_4881 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80CB8430, &lit_4881);
-
-/* 80CB8434-80CB8438 0000C4 0004+00 0/1 0/0 0/0 .rodata @4882 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4882 = 100.0f;
-COMPILER_STRIP_GATE(0x80CB8434, &lit_4882);
-#pragma pop
-
-/* 80CB8438-80CB843C 0000C8 0004+00 0/1 0/0 0/0 .rodata @4883 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4883 = 0.25f;
-COMPILER_STRIP_GATE(0x80CB8438, &lit_4883);
-#pragma pop
-
-/* 80CB843C-80CB8440 0000CC 0004+00 0/1 0/0 0/0 .rodata @4884 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4884 = 30.0f;
-COMPILER_STRIP_GATE(0x80CB843C, &lit_4884);
-#pragma pop
-
-/* 80CB8440-80CB8444 0000D0 0004+00 0/1 0/0 0/0 .rodata @4885 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4885 = 33.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80CB8440, &lit_4885);
-#pragma pop
-
-/* 80CB8444-80CB8448 0000D4 0004+00 0/1 0/0 0/0 .rodata @4886 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4886 = 6.0f;
-COMPILER_STRIP_GATE(0x80CB8444, &lit_4886);
-#pragma pop
-
-/* 80CB8448-80CB8450 0000D8 0008+00 1/2 0/0 0/0 .rodata @4888 */
-SECTION_RODATA static u8 const lit_4888[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CB8448, &lit_4888);
-
/* 80CB604C-80CB7638 0009AC 15EC+00 1/1 0/0 0/0 .text Execute__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::Execute() {
- // NONMATCHING
+int daObj_Pumpkin_c::Execute() {
+ f32 var_f29 = mpHIO->m.floating_offset;
+ f32 f_scale = mpHIO->m.scale;
+ s16 sp_0x14 = 0;
+ s16 sp_0x12 = 0;
+ mPumpkinScale = 1.0f;
+ if (mType == 1) {
+ mPumpkinScale = 1.8f;
+ var_f29 *= mPumpkinScale;
+ f_scale *= mPumpkinScale;
+ }
+
+ scale.set(f_scale, f_scale, f_scale);
+ fopAcM_OffCarryType(this, fopAcM_CARRY(fopAcM_CARRY_CHICKEN | fopAcM_CARRY_SIDE | fopAcM_CARRY_TYPE_1));
+ attention_info.flags = 0;
+ switch (mType) {
+ case 0:
+ attention_info.distances[fopAc_attn_CARRY_e] = 6;
+ break;
+ case 1:
+ attention_info.distances[fopAc_attn_CARRY_e] = 8;
+ break;
+ case 2:
+ attention_info.distances[fopAc_attn_CARRY_e] = 6;
+ break;
+ case 3:
+ attention_info.distances[fopAc_attn_CARRY_e] = 8;
+ break;
+ default:
+ attention_info.distances[fopAc_attn_CARRY_e] = 6;
+ break;
+ }
+
+ mAcchCir.SetWallR(mpHIO->m.width * mPumpkinScale);
+ mAcchCir.SetWallH(mpHIO->m.knee_length * mPumpkinScale);
+ gravity = mpHIO->m.gravity * mPumpkinScale;
+ int sp_0x30 = 0;
+ if (fopAcM_checkCarryNow(this) || fopAcM_checkHawkCarryNow(this) || field_0xbb3) {
+ sp_0x30 = 1;
+ }
+
+ if (field_0xBAE) {
+ int item_table_no = getItemTableNo();
+ if (item_table_no >= 0 && mItemProcId == fpcM_ERROR_PROCESS_ID_e) {
+ mItemProcId = fopAcM_createItemFromTable(&current.pos, item_table_no, -1, fopAcM_GetRoomNo(this),
+ NULL, 0, NULL, NULL, NULL, NULL);
+ }
+
+ if (mItemProcId == fpcM_ERROR_PROCESS_ID_e || fopAcM_IsExecuting(mItemProcId)) {
+ if (mType == 0 && getProcType() != 2) {
+ field_0xB48 = mpHIO->m.growth_time_1;
+ field_0xB4C = mpHIO->m.growth_time_2;
+ field_0xBAF = 0;
+ field_0xBB0 = 0;
+ current.pos = home.pos;
+ old.pos = home.pos;
+ current.angle = home.angle;
+ shape_angle = home.angle;
+ scale.setall(0.0f);
+ } else {
+ fopAcM_delete(this);
+ }
+
+ field_0xBAE = 0;
+ }
+ } else if (field_0xB4C) {
+ if (field_0xBAF) {
+ field_0xB68 = (mpHIO->m.growth_time_2 - field_0xB4C) / f32(mpHIO->m.growth_time_2) * 0.5f
+ + (mpHIO->m.growth_time_1 - field_0xB48) / f32(mpHIO->m.growth_time_1) * 0.5f;
+ if (cLib_calcTimer(&field_0xB4C) == 0) {
+ field_0xBAF = 0;
+ field_0xB68 = 1.0f;
+ }
+ } else {
+ field_0xB68 = (mpHIO->m.growth_time_1 - field_0xB48) / f32(mpHIO->m.growth_time_1) * 0.5f;
+ if (mCyl1.ChkTgHit() && mCyl1.GetTgHitGObj() != NULL
+ && mCyl1.GetTgHitGObj()->GetAtType() == AT_TYPE_LANTERN_SWING
+ && mCyl1.GetTgHitGObj()->GetAtMtrl() == dCcD_MTRL_UNK_6) {
+ //
+ field_0xBAF = 1;
+ }
+ }
+
+ cLib_calcTimer(&field_0xB48);
+ f_scale *= field_0xB68;
+ scale.set(f_scale, f_scale, f_scale);
+ } else {
+ int sp_0x28 = 0;
+ if (field_0xBAA == 0 && mCyl1.ChkTgHit()) {
+ if (mCyl1.GetTgHitGObj() != NULL && mCyl1.GetTgHitGObj()->GetAtType() == AT_TYPE_BOOMERANG) {
+ mBoomerangMove.initOffset(&current.pos, mCyl1.GetTgHitGObj());
+ field_0xBAA = 1;
+ sp_0x30 = 0;
+ if (field_0xBA8) {
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_A), &current.pos, &shape_angle, &scale);
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_B), &current.pos, &shape_angle, &scale);
+ field_0xBA8 = 0;
+ }
+ } else {
+ sp_0x28 = 1;
+ }
+ } else if (field_0xBAD && cM3d_IsZero(speedF) == 0 && mCyl0.ChkCoHit()) {
+ fopAc_ac_c* actor_p = dCc_GetAc(mCyl0.GetCoHitObj()->GetAc());
+ if (fopAcM_GetName(actor_p) != PROC_ALINK) {
+ sp_0x28 = 1;
+ }
+ }
+
+ if (sp_0x28) {
+ crash();
+ sp_0x30 = 0;
+ } else {
+ if (field_0xBAA) {
+ if (mBoomerangMove.posMove(&current.pos, &shape_angle.y, this, 0x1C00) == 0) {
+ sp_0x30 = fopAcM_checkCarryNow(this) != 0;
+ field_0xBAA = 0;
+ } else if (mObjAcch.ChkWallHit()) {
+ sp_0x30 = 0;
+ crash();
+ }
+ }
+
+ if (sp_0x30) {
+ if (getProcType() == 0) {
+ if (fopAcM_checkCarryNow(this) && field_0xBAA == 0) {
+ if (field_0xB44 < mpHIO->m.hold_on + mpHIO->m.pull_sound_delay) {
+ ++field_0xB44;
+ if (mpHIO->m.hold_on + mpHIO->m.pull_sound_delay <= field_0xB44) {
+ fopAcM_seStart(this, Z2SE_OBJ_PUMPKIN_PULLOUT, 0);
+ }
+
+ if (field_0xBA8 && mpHIO->m.hold_on <= field_0xB44) {
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_A), &current.pos, &shape_angle, &scale);
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_B), &current.pos, &shape_angle, &scale);
+ field_0xBA8 = 0;
+ }
+ }
+ } else if (field_0xBA8) {
+ fopAcM_seStart(this, Z2SE_OBJ_PUMPKIN_PULLOUT, 0);
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_A), &current.pos, &shape_angle, &scale);
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_B), &current.pos, &shape_angle, &scale);
+ field_0xB44 = mpHIO->m.hold_on + mpHIO->m.pull_sound_delay;
+ field_0xBA8 = 0;
+ }
+ }
+
+ mObjAcch.ClrWallHit();
+ mObjAcch.ClrGroundHit();
+ mObjAcch.SetWallNone();
+ mObjAcch.SetGrndNone();
+ field_0xB60 = 0.0f;
+ mStts.SetWeight(0);
+ speed.setall(0.0f);
+ speedF = 0.0f;
+ field_0xB20.setall(0.0f);
+ field_0xB38.setall(0);
+ gravity = 0.0f;
+ field_0xBAB = 0;
+ field_0xBAC = 0;
+ field_0xBAD = 0;
+ field_0xBB2 = 0;
+ } else {
+ mStts.SetWeight(mpHIO->m.weight);
+ if (field_0xBA8 || mType == 1) {
+ mStts.SetWeight(0xFF);
+ }
+
+ mObjAcch.ClrWallNone();
+ mObjAcch.ClrGrndNone();
+ if (field_0xBB1 && cM3d_IsZero(speedF) == 0) {
+ popup(mpHIO->m.fire_rate, mpHIO->m.launch_angle, NULL);
+ if (fopAcM_carryOffRevise(this)) {
+ speed.setall(0.0f);
+ }
+ } else {
+ int sp_0x20 = 0;
+ cXyz sp_0x4C;
+ s16 sp_0x10 = 0x80;
+ fopAcM_getWaterY(&current.pos, &mWaterY);
+ if (-G_CM3D_F_INF != mWaterY && var_f29 < mWaterY - field_0xB60) {
+ if (current.pos.y <= mWaterY) {
+ if (field_0xBAC == 0) {
+ speedF *= 0.3f;
+ speed.y *= 0.5f;
+ field_0xBAB = 0;
+ field_0xBAC = 1;
+ if (field_0xBAD || field_0xBB2 || field_0xBB1) {
+ fopAcM_seStart(this, Z2SE_CM_BODYFALL_WATER_S, 0);
+ setWaterPrtcl();
+ sp_0x20 = 1;
+ if ((field_0xBAD || field_0xBB2) && speed.y < 0.0f) {
+ field_0xB70 = 3000.0f;
+ }
+ }
+
+ field_0xBAD = 0;
+ field_0xBB2 = 0;
+ }
+
+ int streamPower;
+ if (fopAcM_getWaterStream(&current.pos, mGndChk, &sp_0x4C, &streamPower, 0)) {
+ sp_0x4C.normalizeZP();
+ cLib_addCalcAngleS2(&current.angle.y, cM_atan2s(sp_0x4C.x, sp_0x4C.z), 4, 0x200);
+ if (sp_0x20) {
+ current.angle.y = cM_atan2s(sp_0x4C.x, sp_0x4C.z);
+ }
+
+ sp_0x10 *= streamPower;
+ cLib_chaseAngleS(&field_0xB38.y, (field_0xB38.y < 0) ? -sp_0x10 : sp_0x10, 0x10);
+ if (field_0xBAB) {
+ cLib_addCalc2(&speedF, streamPower * 1.55f, 0.15f, 1.0f);
+ } else {
+ cLib_addCalc2(&speedF, streamPower * 0.75f, 0.15f, 1.0f);
+ }
+ } else {
+ cLib_chaseF(&speedF, 0.0f, 0.3f);
+ }
+
+ if (field_0xB54 == 0 && mObjAcch.ChkWallHit()) {
+ if (getWallAngle(current.angle.y, &sp_0x12)) {
+ current.angle.y = sp_0x12;
+ current.angle.y += s16(cM_rndFX(2000.0f));
+ } else {
+ current.angle.y += s16(cM_rndFX(2000.0f));
+ current.angle.y -= 0x8000;
+ }
+
+ field_0xB38.y = -field_0xB38.y / 2;
+ field_0xB54 = 10;
+ }
+
+ if (field_0xBAB) {
+ cLib_addCalc2(&current.pos.y, mWaterY - var_f29, 0.5f, 2.0f);
+ speed.y = 0.0f;
+ setHamonPrtcl();
+ } else if (current.pos.y + var_f29 < mWaterY) {
+ if (speed.y < 0.0f) {
+ cLib_addCalc(&speed.y, 2.0f, 0.8f, 11.0f, 0.1f);
+ } else {
+ cLib_addCalc(&speed.y, 2.0f, 0.5f, 0.5f, 0.1f);
+ }
+
+ field_0xB38.y = 0x100;
+ mObjAcch.ClrGroundHit();
+ field_0xBAB = 1;
+ }
+
+ gravity = 0.0f;
+ }
+ }
+ }
+
+ if (field_0xBAB) {
+ if (mObjAcch.ChkGroundHit()) {
+ field_0xBAB = 0;
+ field_0xBAC = 0;
+ field_0xB38.setall(0);
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ }
+ } else if (field_0xBAC == 0) {
+ if (field_0xBAD) {
+ if (0.0f <= field_0xB20.y && speed.y < 0.0f) {
+ field_0xB74 = -500.0f;
+ }
+
+ if (mObjAcch.ChkWallHit()) {
+ crash();
+ } else if (mObjAcch.ChkGroundHit()) {
+ if (-250.0f < field_0xB74) {
+ if (cM3d_IsZero(field_0xB74) == 0) {
+ setSmokePrtcl();
+ }
+
+ field_0xBAD = 0;
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ } else {
+ crash();
+ }
+ }
+ } else if (field_0xBB2) {
+ if (mObjAcch.ChkGroundHit()) {
+ if (-250.0f < field_0xB74) {
+ if (cM3d_IsZero(field_0xB74) == 0) {
+ setSmokePrtcl();
+ }
+
+ field_0xBB2 = 0;
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ } else {
+ crash();
+ }
+ }
+ } else if (field_0xBB1) {
+ fopAcM_seStart(this, Z2SE_OBJ_PUMPKIN_PUT, 0);
+ } else if (mObjAcch.ChkGroundHit() == 0) {
+ field_0xB74 = field_0xB60 - current.pos.y;
+ field_0xBB2 = 1;
+ }
+ }
+
+ if (field_0xBB0 == 0 && field_0xBAD == 0 && field_0xBB2 == 0) {
+ if (mType == 1 || field_0xBA8) {
+ fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1);
+ } else {
+ fopAcM_OnCarryType(this, fopAcM_CARRY_SIDE);
+ }
+
+ cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ fopAcM_OnCarryType(this, fopAcM_CARRY_CHICKEN);
+ }
+
+ field_0xB20 = speed;
+ if (field_0xBAC) {
+ cLib_addCalc2(&field_0xB70, mStts.GetCCMoveP() != NULL ? 1200.0f : 900.0f, 0.05f, 100.0f);
+ } else {
+ cLib_addCalc2(&field_0xB70, 0.0f, 0.25f, 100.0f);
+ }
+
+ shape_angle.x = field_0xB70 * cM_ssin(field_0xB78 * 1000);
+ shape_angle.z = field_0xB70 * cM_scos(field_0xB78 * 1000);
+ cLib_chaseAngleS(&field_0xB38.y, 0, 10);
+ shape_angle.y += field_0xB38.y;
+ ++field_0xB78;
+ if (field_0xBAB) {
+ f32 sqrt = JMAFastSqrt(mStts.GetCCMoveP()->x * mStts.GetCCMoveP()->x
+ + mStts.GetCCMoveP()->z * mStts.GetCCMoveP()->z);
+ if (1.0f < sqrt) {
+ field_0xB80 = cM_atan2s(mStts.GetCCMoveP()->x, mStts.GetCCMoveP()->z);
+ if (field_0xB58 == 0) {
+ if (30.0f < sqrt) {
+ sqrt = 30.0f;
+ } else if (sqrt < 0.0f) {
+ sqrt = 0.0f;
+ }
+
+ field_0xB5C = sqrt;
+ field_0xB38.y = 0x200;
+ field_0xB58 = 10;
+ }
+ }
+ } else {
+ field_0xB5C = 0.0f;
+ }
+
+ cLib_addCalc2(&field_0xB5C, 0.0f, 0.33f, 100.0f);
+ fopAcM_calcSpeed(this);
+ if (field_0xBAB) {
+ field_0xB2C.x = field_0xB5C * cM_ssin(field_0xB80);
+ field_0xB2C.z = field_0xB5C * cM_scos(field_0xB80);
+ field_0xB2C.y = 0.0f;
+ speed += field_0xB2C;
+ }
+
+ fopAcM_posMove(this, mStts.GetCCMoveP());
+ mObjAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mObjAcch.m_gnd;
+ field_0xB60 = mObjAcch.GetGroundH();
+ if (field_0xBAA) {
+ mBoomerangMove.bgCheckAfterOffset(&current.pos);
+ }
+
+ if (-G_CM3D_F_INF != field_0xB60) {
+ field_0xB7A = daNpcF_getGroundAngle(&mGndChk, shape_angle.y);
+ setEnvTevColor();
+ setRoomNo();
+ }
+ }
+ }
+ }
+
+ attention_info.position = current.pos;
+ eyePos = current.pos;
+ if (field_0xbb3 == 0) {
+ setMtx();
+ }
+
+ field_0xB7C = calcRollAngle(field_0xB7C, 0x10000);
+ if (field_0xBB0 == 0 && field_0xB50 == 0) {
+ cXyz sp_0x40 = current.pos;
+ sp_0x40.y += 6.0f;
+ if (field_0xBAD && cM3d_IsZero(speedF) == 0) {
+ mCyl0.SetAtType(8);
+ mCyl0.SetAtAtp(1);
+ mCyl0.SetAtSPrm(0x1F);
+ } else {
+ mCyl0.SetAtType(0);
+ mCyl0.SetAtSPrm(0);
+ }
+
+ if (field_0xB4C == 0) {
+ mCyl0.SetR(mpHIO->m.width * mPumpkinScale);
+ mCyl0.SetH(mpHIO->m.height * mPumpkinScale);
+ mCyl0.SetC(current.pos);
+ dComIfG_Ccsp()->Set(&mCyl0);
+ }
+
+ mCyl1.SetCoSPrm(0);
+ if (field_0xB4C) {
+ mCyl1.SetTgType(0x200);
+ mCyl1.SetTgSPrm(0x1F);
+ } else {
+ mCyl1.SetTgType(0xD8FBFDFF);
+ mCyl1.SetTgSPrm(0x1F);
+ }
+
+ mCyl1.SetR(mpHIO->m.width * mPumpkinScale);
+ mCyl1.SetH(mpHIO->m.height * mPumpkinScale);
+ mCyl1.SetC(sp_0x40);
+ dComIfG_Ccsp()->Set(&mCyl1);
+ }
+
+ mCyl1.ClrTgHit();
+ mCyl0.ClrAtHit();
+ mCyl0.ClrCoHit();
+
+ field_0xBB1 = sp_0x30 != 0;
+ cLib_calcTimer(&field_0xB50);
+ cLib_calcTimer(&field_0xB54);
+ cLib_calcTimer(&field_0xB58);
+ field_0xbb3 = 0;
+
+ return 1;
}
/* 80CB7638-80CB77DC 001F98 01A4+00 1/1 0/0 0/0 .text Draw__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::Draw() {
- // NONMATCHING
-}
-
-/* 80CB77DC-80CB7824 00213C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
+int daObj_Pumpkin_c::Draw() {
+ if (field_0xBB0 == 0) {
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+ if (field_0xBA8 == 0) {
+ mpModel->getModelData()->getMaterialNodePointer(0)->getShape()->hide();
+ }
+
+ mDoExt_modelUpdateDL(mpModel);
+ mpModel->getModelData()->getMaterialNodePointer(0)->getShape()->show();
+ fopAc_ac_c* actor_p = NULL;
+ fopAcM_SearchByID(daPy_getPlayerActorClass()->getGrabActorID(), &actor_p);
+ if (actor_p == this) {
+ model = mpModel;
+ } else if (-G_CM3D_F_INF != field_0xB60) {
+ cM3dGPla pla;
+ bool tri_pla = dComIfG_Bgsp().GetTriPla(mGndChk, &pla);
+ if (tri_pla) {
+ f32 reg_f31 = scale.x / (mpHIO->m.scale * mPumpkinScale) * 50.0f;
+ dComIfGd_setSimpleShadow(&current.pos, field_0xB60, reg_f31, &pla.mNormal, 0, 1.0f,
+ dDlst_shadowControl_c::getSimpleTex());
+ }
+ }
+ }
+
+ return 1;
}
/* 80CB7824-80CB7844 002184 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__15daObj_Pumpkin_cFP10fopAc_ac_c */
-void daObj_Pumpkin_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+int daObj_Pumpkin_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ daObj_Pumpkin_c* a_this = static_cast<daObj_Pumpkin_c*>(i_this);
+ return a_this->CreateHeap();
}
/* 80CB7844-80CB78C8 0021A4 0084+00 1/1 0/0 0/0 .text isDelete__15daObj_Pumpkin_cFv */
-void daObj_Pumpkin_c::isDelete() {
- // NONMATCHING
+int daObj_Pumpkin_c::isDelete() {
+ switch ((s32) mType) {
+ case 0:
+ return 0;
+ case 1:
+ return daNpcT_chkEvtBit(0x1E) == 0;
+ case 2:
+ return daNpcT_chkEvtBit(0x92) == 0;
+ case 3:
+ return 0;
+ default:
+ return 0;
+ }
}
/* 80CB78C8-80CB7924 002228 005C+00 1/1 0/0 0/0 .text setEnvTevColor__15daObj_Pumpkin_cFv
*/
void daObj_Pumpkin_c::setEnvTevColor() {
- // NONMATCHING
+ tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mGndChk);
+ tevStr.room_no = dComIfG_Bgsp().GetRoomId(mGndChk);
}
/* 80CB7924-80CB7968 002284 0044+00 1/1 0/0 0/0 .text setRoomNo__15daObj_Pumpkin_cFv */
void daObj_Pumpkin_c::setRoomNo() {
- // NONMATCHING
+ s8 room_id = dComIfG_Bgsp().GetRoomId(mGndChk);
+ fopAcM_SetRoomNo(this, room_id);
+ mStts.SetRoomId(room_id);
}
/* 80CB7968-80CB79DC 0022C8 0074+00 2/2 0/0 0/0 .text reset__15daObj_Pumpkin_cFv */
void daObj_Pumpkin_c::reset() {
- // NONMATCHING
+ int num_bytes = (u8*)&field_0xbb4 - (u8*)&field_0xB20;
+ memset(&field_0xB20, 0, num_bytes);
+ switch (getProcType()) {
+ case 0:
+ field_0xBA8 = 1;
+ case 1:
+ case 2:
+ break;
+ }
+
+ mItemProcId = -1;
}
/* 80CB79DC-80CB7AE4 00233C 0108+00 2/2 0/0 0/0 .text setMtx__15daObj_Pumpkin_cFv */
void daObj_Pumpkin_c::setMtx() {
- // NONMATCHING
+ s16 angleDiff = shape_angle.y - current.angle.y;
+ s16 dVar5 = field_0xB7C * cM_scos(angleDiff);
+ s16 dVar6 = field_0xB7C * cM_ssin(angleDiff);
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::XrotM(dVar5);
+ mDoMtx_stack_c::ZrotM(dVar6);
+ mDoMtx_stack_c::scaleM(scale);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 80CB7AE4-80CB7B84 002444 00A0+00 1/1 0/0 0/0 .text calcRollAngle__15daObj_Pumpkin_cFsi
*/
-void daObj_Pumpkin_c::calcRollAngle(s16 param_0, int param_1) {
- // NONMATCHING
+s16 daObj_Pumpkin_c::calcRollAngle(s16 arg0, int arg1) {
+ int reg_r31;
+ int reg_r30;
+ int sp_0x8 = arg1;
+ int reg_r29 = 0x800;
+ int reg_27 = 4;
+ if (arg0) {
+ reg_r31 = (u16)arg0;
+ reg_r30 = sp_0x8 - reg_r31;
+ if (reg_27 < abs(reg_r30)) {
+ reg_r30 /= reg_27;
+ if (reg_r30 > reg_r29) {
+ reg_r31 = reg_r31 + reg_r29;
+ } else if (reg_r30 < -reg_r29) {
+ reg_r31 = reg_r31 - reg_r29;
+ } else {
+ reg_r31 = reg_r31 + reg_r30;
+ }
+ } else {
+ reg_r31 = sp_0x8;
+ }
+
+ return reg_r31;
+ }
+
+ return 0;
}
-/* ############################################################################################## */
-/* 80CB8450-80CB8454 0000E0 0004+00 0/1 0/0 0/0 .rodata @5089 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5089 = 5.0f;
-COMPILER_STRIP_GATE(0x80CB8450, &lit_5089);
-#pragma pop
-
-/* 80CB8454-80CB8458 0000E4 0004+00 0/1 0/0 0/0 .rodata @5090 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5090 = 200.0f;
-COMPILER_STRIP_GATE(0x80CB8454, &lit_5090);
-#pragma pop
-
/* 80CB7B84-80CB7D14 0024E4 0190+00 1/1 0/0 0/0 .text getWallAngle__15daObj_Pumpkin_cFsPs
*/
-void daObj_Pumpkin_c::getWallAngle(s16 param_0, s16* param_1) {
- // NONMATCHING
+int daObj_Pumpkin_c::getWallAngle(s16 arg0, s16* arg1) {
+ cXyz sp_0x20;
+ cXyz sp_0x30[2];
+ cXyz sp_0x14;
+ s16 reg_r27 = arg0;
+ mDoMtx_stack_c::YrotS(arg0);
+ sp_0x14.set(0.0f, 0.0f, -50.0f);
+ mDoMtx_stack_c::multVec(&sp_0x14, &sp_0x20);
+ sp_0x20 += current.pos;
+ sp_0x14.set(5.0f, 0.0f, 200.0f);
+ for (int idx = 0; idx < 2; ++idx) {
+ mDoMtx_stack_c::multVec(&sp_0x14, &sp_0x30[idx]);
+ sp_0x14.x = -1.0f * sp_0x14.x;
+ sp_0x30[idx] += sp_0x20;
+ mLinChk.Set(&sp_0x20, &sp_0x30[idx], this);
+ if (dComIfG_Bgsp().LineCross(&mLinChk)) {
+ sp_0x30[idx] = mLinChk.GetCross();
+ continue;
+ }
+
+ return 0;
+ }
+
+ sp_0x14 = sp_0x30[1] - sp_0x30[0];
+ reg_r27 = cM_atan2s(sp_0x14.x, sp_0x14.z);
+ *arg1 = reg_r27 + 0x4000;
+ return 1;
}
-/* ############################################################################################## */
-/* 80CB8458-80CB845C 0000E8 0004+00 2/2 0/0 0/0 .rodata @5106 */
-SECTION_RODATA static f32 const lit_5106 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CB8458, &lit_5106);
-
/* 80CB7D14-80CB7D98 002674 0084+00 1/1 0/0 0/0 .text setSmokePrtcl__15daObj_Pumpkin_cFv
*/
void daObj_Pumpkin_c::setSmokePrtcl() {
- // NONMATCHING
+ fopAcM_effSmokeSet1(&mSmokePrtcl1, &mSmokePrtcl2, &current.pos, NULL, 0.6f * mPumpkinScale, &tevStr, 1);
+ dComIfGp_particle_levelEmitterOnEventMove(mSmokePrtcl1);
+ dComIfGp_particle_levelEmitterOnEventMove(mSmokePrtcl2);
}
/* 80CB7D98-80CB7E98 0026F8 0100+00 1/1 0/0 0/0 .text setWaterPrtcl__15daObj_Pumpkin_cFv
*/
void daObj_Pumpkin_c::setWaterPrtcl() {
- // NONMATCHING
-}
+ static u16 emttrId[4] = {
+ ID_ZI_J_DOWNWTRA_A, ID_ZI_J_DOWNWTRA_B, ID_ZI_J_DOWNWTRA_C, ID_ZI_J_DOWNWTRA_D,
+ };
-/* ############################################################################################## */
-/* 80CB845C-80CB8460 0000EC 0004+00 1/1 0/0 0/0 .rodata @5155 */
-SECTION_RODATA static f32 const lit_5155 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CB845C, &lit_5155);
+ cXyz prtcl_scale(0.6f * mPumpkinScale, 0.6f * mPumpkinScale, 0.6f * mPumpkinScale);
+ cXyz water_pos(current.pos.x, mWaterY, current.pos.z);
+ for (int idx = 0; idx < 4; ++idx) {
+ mWaterPrtcls[idx] = dComIfGp_particle_set(mWaterPrtcls[idx], emttrId[idx], &water_pos, &tevStr,
+ NULL, &prtcl_scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+ dComIfGp_particle_levelEmitterOnEventMove(mWaterPrtcls[idx]);
+ }
+}
/* 80CB7E98-80CB7EF4 0027F8 005C+00 1/1 0/0 0/0 .text setHamonPrtcl__15daObj_Pumpkin_cFv
*/
void daObj_Pumpkin_c::setHamonPrtcl() {
- // NONMATCHING
+ cXyz water_pos(current.pos.x, mWaterY, current.pos.z);
+ fopAcM_effHamonSet(&mHamonPrtcl, &water_pos, 0.7f * mPumpkinScale, 0.05f);
}
/* 80CB7EF4-80CB81A4 002854 02B0+00 1/1 0/0 0/0 .text crash__15daObj_Pumpkin_cFv */
void daObj_Pumpkin_c::crash() {
- // NONMATCHING
+ fopAc_ac_c* actor_p = NULL;
+ s32 reg_r30 = 0;
+ reg_r30 = fopAcM_SearchByName(PROC_NPC_JAGAR, &actor_p);
+ if (reg_r30 && actor_p != NULL) {
+ ((daNpc_Jagar_c*)actor_p)->crashPumpkin(this);
+ }
+
+ fopAcM_seStart(this, Z2SE_OBJ_PUMPKIN_CRASH, 0);
+ if (field_0xBA8) {
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_A), &current.pos, &shape_angle, &scale);
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_LEAF_B), &current.pos, &shape_angle, &scale);
+ }
+
+ dComIfGp_particle_set(-1, dPa_RM(ID_ZI_S_PUMPKIN_A), &current.pos, NULL, &scale);
+ reset();
+ mStts.ClrCcMove();
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ field_0xBB0 = 1;
+ field_0xBAE = 1;
}
/* 80CB81A4-80CB81C4 002B04 0020+00 1/0 0/0 0/0 .text daObj_Pumpkin_Create__FPv */
-static void daObj_Pumpkin_Create(void* param_0) {
- // NONMATCHING
+static int daObj_Pumpkin_Create(void* i_this) {
+ int ret = static_cast<daObj_Pumpkin_c*>(i_this)->create();
+ return ret;
}
/* 80CB81C4-80CB81E4 002B24 0020+00 1/0 0/0 0/0 .text daObj_Pumpkin_Delete__FPv */
-static void daObj_Pumpkin_Delete(void* param_0) {
- // NONMATCHING
+static int daObj_Pumpkin_Delete(void* i_this) {
+ return static_cast<daObj_Pumpkin_c*>(i_this)->Delete();
}
/* 80CB81E4-80CB8204 002B44 0020+00 1/0 0/0 0/0 .text daObj_Pumpkin_Execute__FPv */
-static void daObj_Pumpkin_Execute(void* param_0) {
- // NONMATCHING
+static int daObj_Pumpkin_Execute(void* i_this) {
+ return static_cast<daObj_Pumpkin_c*>(i_this)->Execute();
}
/* 80CB8204-80CB8224 002B64 0020+00 1/0 0/0 0/0 .text daObj_Pumpkin_Draw__FPv */
-static void daObj_Pumpkin_Draw(void* param_0) {
- // NONMATCHING
+static int daObj_Pumpkin_Draw(void* i_this) {
+ return static_cast<daObj_Pumpkin_c*>(i_this)->Draw();
}
/* 80CB8224-80CB822C 002B84 0008+00 1/0 0/0 0/0 .text daObj_Pumpkin_IsDelete__FPv */
-static bool daObj_Pumpkin_IsDelete(void* param_0) {
- return true;
-}
-
-/* 80CB822C-80CB8274 002B8C 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 daObj_Pumpkin_IsDelete(void*) {
+ return 1;
}
-/* 80CB8274-80CB8290 002BD4 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<i>__FPi */
-extern "C" void func_80CB8274(void* _this, int* param_0) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80CB85BC-80CB85C8 000150 000C+00 2/2 0/0 0/0 .data __vt__21daObj_Pumpkin_Param_c */
-SECTION_DATA extern void* __vt__21daObj_Pumpkin_Param_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__21daObj_Pumpkin_Param_cFv,
+/* 80CB84E8-80CB8508 -00001 0020+00 1/0 0/0 0/0 .data daObj_Pumpkin_MethodTable */
+static actor_method_class daObj_Pumpkin_MethodTable = {
+ (process_method_func)daObj_Pumpkin_Create,
+ (process_method_func)daObj_Pumpkin_Delete,
+ (process_method_func)daObj_Pumpkin_Execute,
+ (process_method_func)daObj_Pumpkin_IsDelete,
+ (process_method_func)daObj_Pumpkin_Draw,
};
-/* 80CB85D0-80CB85DC 000008 000C+00 1/1 0/0 0/0 .bss @3860 */
-static u8 lit_3860[12];
-
-/* 80CB85DC-80CB85E0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[4];
-
-/* 80CB8290-80CB8304 002BF0 0074+00 0/0 1/0 0/0 .text __sinit_d_a_obj_pumpkin_cpp */
-void __sinit_d_a_obj_pumpkin_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80CB8290, __sinit_d_a_obj_pumpkin_cpp);
-#pragma pop
-
-/* 80CB8304-80CB834C 002C64 0048+00 2/1 0/0 0/0 .text __dt__21daObj_Pumpkin_Param_cFv */
-daObj_Pumpkin_Param_c::~daObj_Pumpkin_Param_c() {
- // NONMATCHING
-}
-
-/* 80CB834C-80CB8354 002CAC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80CB834C() {
- // NONMATCHING
-}
-
-/* 80CB8354-80CB835C 002CB4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80CB8354() {
- // NONMATCHING
-}
-
-/* 80CB8460-80CB8460 0000F0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80CB8508-80CB8538 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_PUMPKIN */
+extern actor_process_profile_definition g_profile_OBJ_PUMPKIN = {
+ fpcLy_CURRENT_e, // mLayerID
+ 8, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_OBJ_PUMPKIN, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObj_Pumpkin_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 716, // mPriority
+ &daObj_Pumpkin_MethodTable, // sub_method
+ 0x00044100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};