summaryrefslogtreecommitdiff
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
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
-rw-r--r--config/GZ2E01/rels/d_a_npc_bou/symbols.txt32
-rw-r--r--config/GZ2E01/rels/d_a_obj_pumpkin/symbols.txt24
-rwxr-xr-xconfigure.py2
-rw-r--r--include/d/actor/d_a_npc_jagar.h110
-rw-r--r--include/d/actor/d_a_obj_pumpkin.h181
-rw-r--r--src/d/actor/d_a_npc_jagar.cpp149
-rw-r--r--src/d/actor/d_a_obj_pumpkin.cpp1485
7 files changed, 1163 insertions, 820 deletions
diff --git a/config/GZ2E01/rels/d_a_npc_bou/symbols.txt b/config/GZ2E01/rels/d_a_npc_bou/symbols.txt
index 57663e263e..8a1e2761c7 100644
--- a/config/GZ2E01/rels/d_a_npc_bou/symbols.txt
+++ b/config/GZ2E01/rels/d_a_npc_bou/symbols.txt
@@ -54,11 +54,11 @@ cutMeetingAgain__11daNpc_Bou_cFi = .text:0x000033D8; // type:function size:0x774
wait__11daNpc_Bou_cFPv = .text:0x00003B4C; // type:function size:0x410 scope:global
talkwithJagar__11daNpc_Bou_cFPv = .text:0x00003F5C; // type:function size:0x1A0 scope:global
talk__11daNpc_Bou_cFPv = .text:0x000040FC; // type:function size:0x4D0 scope:global
-daNpc_Bou_Create__FPv = .text:0x000045CC; // type:function size:0x20 scope:global
-daNpc_Bou_Delete__FPv = .text:0x000045EC; // type:function size:0x20 scope:global
-daNpc_Bou_Execute__FPv = .text:0x0000460C; // type:function size:0x20 scope:global
-daNpc_Bou_Draw__FPv = .text:0x0000462C; // type:function size:0x20 scope:global
-daNpc_Bou_IsDelete__FPv = .text:0x0000464C; // type:function size:0x8 scope:global
+daNpc_Bou_Create__FPv = .text:0x000045CC; // type:function size:0x20 scope:local
+daNpc_Bou_Delete__FPv = .text:0x000045EC; // type:function size:0x20 scope:local
+daNpc_Bou_Execute__FPv = .text:0x0000460C; // type:function size:0x20 scope:local
+daNpc_Bou_Draw__FPv = .text:0x0000462C; // type:function size:0x20 scope:local
+daNpc_Bou_IsDelete__FPv = .text:0x0000464C; // type:function size:0x8 scope:local
calc__11J3DTexNoAnmCFPUs = .text:0x00004654; // type:function size:0x30 scope:global
__dt__10cCcD_GSttsFv = .text:0x00004684; // type:function size:0x48 scope:global
__dt__8daNpcT_cFv = .text:0x000046CC; // type:function size:0x388 scope:global
@@ -143,18 +143,18 @@ heapSize$4096 = .rodata:0x0000009C; // type:object size:0x18 scope:local
@6218 = .rodata:0x00000138; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x0000013C; // type:object size:0xF1 scope:local data:string_table
...data.0 = .data:0x00000000; // type:label scope:local
-cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
+cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_288_data_10 = .data:0x00000010; // type:object size:0x10
-l_bmdData = .data:0x00000020; // type:object size:0x8 scope:global data:4byte
+l_bmdData = .data:0x00000020; // type:object size:0x8 scope:local data:4byte
l_evtList = .data:0x00000028; // type:object size:0x58 scope:global
-l_resNameList = .data:0x00000080; // type:object size:0x1C scope:global
-l_loadResPtrn0 = .data:0x0000009C; // type:object size:0x4 scope:global
-l_loadResPtrn1 = .data:0x000000A0; // type:object size:0x3 scope:global
-l_loadResPtrn2 = .data:0x000000A4; // type:object size:0x3 scope:global
-l_loadResPtrn3 = .data:0x000000A8; // type:object size:0x3 scope:global
-l_loadResPtrn9 = .data:0x000000AC; // type:object size:0x5 scope:global
-l_loadResPtrnList = .data:0x000000B4; // type:object size:0x18 scope:global
+l_resNameList = .data:0x00000080; // type:object size:0x1C scope:local
+l_loadResPtrn0 = .data:0x0000009C; // type:object size:0x4 scope:local
+l_loadResPtrn1 = .data:0x000000A0; // type:object size:0x3 scope:local
+l_loadResPtrn2 = .data:0x000000A4; // type:object size:0x3 scope:local
+l_loadResPtrn3 = .data:0x000000A8; // type:object size:0x3 scope:local
+l_loadResPtrn9 = .data:0x000000AC; // type:object size:0x5 scope:local
+l_loadResPtrnList = .data:0x000000B4; // type:object size:0x18 scope:local
l_faceMotionAnmData = .data:0x000000CC; // type:object size:0x134 scope:global
l_motionAnmData = .data:0x00000200; // type:object size:0x284 scope:global
l_faceMotionSequenceData = .data:0x00000484; // type:object size:0xB0 scope:global
@@ -175,7 +175,7 @@ mCutList__11daNpc_Bou_c = .data:0x00000718; // type:object size:0x6C scope:globa
@5136 = .data:0x000007A8; // type:object size:0xC scope:local data:4byte
@5138 = .data:0x000007B4; // type:object size:0xC scope:local data:4byte
@5286 = .data:0x000007C0; // type:object size:0x24 scope:local
-daNpc_Bou_MethodTable = .data:0x000007E4; // type:object size:0x20 scope:global
+daNpc_Bou_MethodTable = .data:0x000007E4; // type:object size:0x20 scope:local
g_profile_NPC_BOU = .data:0x00000804; // type:object size:0x30 scope:global
__vt__11J3DTexNoAnm = .data:0x00000834; // type:object size:0xC scope:global
__vt__12J3DFrameCtrl = .data:0x00000840; // type:object size:0xC scope:global
@@ -193,4 +193,4 @@ __vt__11daNpc_Bou_c = .data:0x000008DC; // type:object size:0xC4 scope:global
__vt__17daNpc_Bou_Param_c = .data:0x000009A0; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3942 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x4 scope:global data:4byte
+l_HIO = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte
diff --git a/config/GZ2E01/rels/d_a_obj_pumpkin/symbols.txt b/config/GZ2E01/rels/d_a_obj_pumpkin/symbols.txt
index 205e1beaae..bb1597b4d5 100644
--- a/config/GZ2E01/rels/d_a_obj_pumpkin/symbols.txt
+++ b/config/GZ2E01/rels/d_a_obj_pumpkin/symbols.txt
@@ -28,11 +28,11 @@ setSmokePrtcl__15daObj_Pumpkin_cFv = .text:0x00002674; // type:function size:0x8
setWaterPrtcl__15daObj_Pumpkin_cFv = .text:0x000026F8; // type:function size:0x100 scope:global
setHamonPrtcl__15daObj_Pumpkin_cFv = .text:0x000027F8; // type:function size:0x5C scope:global
crash__15daObj_Pumpkin_cFv = .text:0x00002854; // type:function size:0x2B0 scope:global
-daObj_Pumpkin_Create__FPv = .text:0x00002B04; // type:function size:0x20 scope:global
-daObj_Pumpkin_Delete__FPv = .text:0x00002B24; // type:function size:0x20 scope:global
-daObj_Pumpkin_Execute__FPv = .text:0x00002B44; // type:function size:0x20 scope:global
-daObj_Pumpkin_Draw__FPv = .text:0x00002B64; // type:function size:0x20 scope:global
-daObj_Pumpkin_IsDelete__FPv = .text:0x00002B84; // type:function size:0x8 scope:global
+daObj_Pumpkin_Create__FPv = .text:0x00002B04; // type:function size:0x20 scope:local
+daObj_Pumpkin_Delete__FPv = .text:0x00002B24; // type:function size:0x20 scope:local
+daObj_Pumpkin_Execute__FPv = .text:0x00002B44; // type:function size:0x20 scope:local
+daObj_Pumpkin_Draw__FPv = .text:0x00002B64; // type:function size:0x20 scope:local
+daObj_Pumpkin_IsDelete__FPv = .text:0x00002B84; // type:function size:0x8 scope:local
__dt__10cCcD_GSttsFv = .text:0x00002B8C; // type:function size:0x48 scope:global
cLib_calcTimer<i>__FPi = .text:0x00002BD4; // type:function size:0x1C scope:global
__sinit_d_a_obj_pumpkin_cpp = .text:0x00002BF0; // type:function size:0x74 scope:local
@@ -44,7 +44,7 @@ __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 sc
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
m__21daObj_Pumpkin_Param_c = .rodata:0x00000000; // type:object size:0x34 scope:global
-l_ccDObjData = .rodata:0x00000034; // type:object size:0x30 scope:global
+l_ccDObjData = .rodata:0x00000034; // type:object size:0x30 scope:local
@4022 = .rodata:0x00000064; // type:object size:0x4 scope:local
@4023 = .rodata:0x00000068; // type:object size:0x4 scope:local
@4860 = .rodata:0x0000006C; // type:object size:0x4 scope:local align:4 data:float
@@ -81,14 +81,14 @@ l_ccDObjData = .rodata:0x00000034; // type:object size:0x30 scope:global
@5155 = .rodata:0x000000EC; // type:object size:0x4 scope:local align:4 data:float
@stringBase0 = .rodata:0x000000F0; // type:object size:0x9 scope:local data:string_table
...data.0 = .data:0x00000000; // type:label scope:local
-cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
+cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_599_data_10 = .data:0x00000010; // type:object size:0x10
-l_bmdData = .data:0x00000020; // type:object size:0x8 scope:global data:4byte
-l_resNameList = .data:0x00000028; // type:object size:0x8 scope:global
-l_ccDCyl = .data:0x00000030; // type:object size:0x44 scope:global
+l_bmdData = .data:0x00000020; // type:object size:0x8 scope:local data:4byte
+l_resNameList = .data:0x00000028; // type:object size:0x8 scope:local
+l_ccDCyl = .data:0x00000030; // type:object size:0x44 scope:local
emttrId$5110 = .data:0x00000074; // type:object size:0x8 scope:local
-daObj_Pumpkin_MethodTable = .data:0x0000007C; // type:object size:0x20 scope:global
+daObj_Pumpkin_MethodTable = .data:0x0000007C; // type:object size:0x20 scope:local
g_profile_OBJ_PUMPKIN = .data:0x0000009C; // type:object size:0x30 scope:global
__vt__8cM3dGPla = .data:0x000000CC; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x000000D8; // type:object size:0x24 scope:global
@@ -102,4 +102,4 @@ __vt__15daObj_Pumpkin_c = .data:0x00000144; // type:object size:0xC scope:global
__vt__21daObj_Pumpkin_Param_c = .data:0x00000150; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3860 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x4 scope:global data:4byte
+l_HIO = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte
diff --git a/configure.py b/configure.py
index 172f2cb304..f6cddddd5e 100755
--- a/configure.py
+++ b/configure.py
@@ -2126,7 +2126,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poFire"),
ActorRel(NonMatching, "d_a_obj_poTbox"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_prop"),
- ActorRel(NonMatching, "d_a_obj_pumpkin"),
+ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_pumpkin"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_rcircle"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_rfHole"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_rgate"),
diff --git a/include/d/actor/d_a_npc_jagar.h b/include/d/actor/d_a_npc_jagar.h
index c548104028..00b177757e 100644
--- a/include/d/actor/d_a_npc_jagar.h
+++ b/include/d/actor/d_a_npc_jagar.h
@@ -12,58 +12,37 @@
*
*/
+struct daNpc_Jagar_HIOParam {
+ /* 0x00 */ daNpcT_HIOParam common;
+ /* 0x8C */ f32 pumpkin_watch_range;
+ /* 0x90 */ f32 pumpkin_watch_Ymax;
+ /* 0x94 */ f32 pumpkin_watch_Ymin;
+ /* 0x98 */ f32 running_speed;
+ /* 0x9C */ f32 hidden_state_release_dist;
+};
+
class daNpc_Jagar_Param_c {
- public:
- /* 80A1A2C4 */ virtual ~daNpc_Jagar_Param_c() {}
-
- struct Data {
- /* 0x00 */ f32 field_0x00; // 170.0f
- /* 0x04 */ f32 field_0x04; // -3.0f
- /* 0x08 */ f32 field_0x08; // 1.0f
- /* 0x0C */ f32 field_0x0c; // 400.0f
- /* 0x10 */ f32 field_0x10; // 255.0f
- /* 0x14 */ f32 field_0x14; // 160.0f
- /* 0x18 */ f32 field_0x18; // 35.0f
- /* 0x1C */ f32 field_0x1c; // 30.0f
- /* 0x20 */ f32 field_0x20; // 0.0f
- /* 0x24 */ f32 field_0x24; // 0.0f
- /* 0x28 */ f32 field_0x28; // 10.0f
- /* 0x2C */ f32 field_0x2c; // -10.0f
- /* 0x30 */ f32 field_0x30; // 30.0f
- /* 0x34 */ f32 field_0x34; // -10.0f
- /* 0x38 */ f32 field_0x38; // 45.0f
- /* 0x3C */ f32 field_0x3c; // -45.0f
- /* 0x40 */ f32 field_0x40; // 0.6f
- /* 0x44 */ f32 field_0x44; // 12.0f
- /* 0x48 */ s16 field_0x48;
- /* 0x4A */ s16 field_0x4a;
- /* 0x4C */ s16 field_0x4c;
- /* 0x4E */ s16 field_0x4e;
- /* 0x50 */ f32 field_0x50; // 110.0f
- /* 0x54 */ f32 field_0x54; // 500.0f
- /* 0x58 */ f32 field_0x58; // 300.0f
- /* 0x5C */ f32 field_0x5c; // -300.0f
- /* 0x60 */ s16 field_0x60; // 60
- /* 0x62 */ s16 field_0x62; // 8
- /* 0x64 */ f32 field_0x64; // 0.0f
- /* 0x68 */ f32 field_0x68; // 0.0f
- /* 0x6C */ f32 field_0x6c; // 4.0f
- /* 0x70 */ f32 field_0x70; // 0.0f
- /* 0x74 */ f32 field_0x74; // 0.0f
- /* 0x78 */ f32 field_0x78; // 0.0f
- /* 0x7C */ f32 field_0x7c; // 0.0f
- /* 0x80 */ f32 field_0x80; // 0.0f
- /* 0x84 */ f32 field_0x84; // 0.0f
- /* 0x88 */ f32 field_0x88; // 0.0f
- /* 0x8C */ f32 field_0x8c; // 1400.0f
- /* 0x90 */ f32 field_0x90; // 200.0f
- /* 0x94 */ f32 field_0x94; // -800.0f
- /* 0x98 */ f32 field_0x98; // 16.0f
- /* 0x9C */ f32 field_0x9c; // 1800.0f
- };
-
- static const Data m;
- };
+public:
+ /* 80A1A2C4 */ virtual ~daNpc_Jagar_Param_c() {}
+
+ static const daNpc_Jagar_HIOParam m;
+};
+
+#if DEBUG
+class daNpc_Jagar_HIO_c : public mDoHIO_entry_c {
+public:
+ daNpc_Jagar_HIO_c();
+
+ void listenPropertyEvent(const JORPropertyEvent*);
+ void genMessage(JORMContext*);
+
+ daNpc_Jagar_HIOParam m;
+};
+
+#define NPC_JAGAR_HIO_CLASS daNpc_Jagar_HIO_c
+#else
+#define NPC_JAGAR_HIO_CLASS daNpc_Jagar_Param_c
+#endif
class daNpc_Jagar_c : public daNpcT_c {
public:
@@ -181,9 +160,9 @@ public:
BOOL chkFindWolf() {
int uVar3 = (int)daNpcT_getDistTableIdx(field_0xff0, field_0xff4);
- return daNpcT_c::chkFindWolf(mCurAngle.y, uVar3, field_0xfec, daNpc_Jagar_Param_c::m.field_0x54,
- daNpc_Jagar_Param_c::m.field_0x50, daNpc_Jagar_Param_c::m.field_0x58,
- daNpc_Jagar_Param_c::m.field_0x5c, 1);
+ return daNpcT_c::chkFindWolf(mCurAngle.y, uVar3, field_0xfec, mpHIO->m.common.search_distance,
+ mpHIO->m.common.fov, mpHIO->m.common.search_height,
+ mpHIO->m.common.search_depth, 1);
}
int chkCondition(int i_val) {
@@ -225,10 +204,29 @@ public:
u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
+ int crashPumpkin(fopAc_ac_c* pumpkin_p) {
+ int reg_r30;
+ if (mType == 0 && fopAcM_GetName(pumpkin_p) == PROC_OBJ_PUMPKIN && !daNpcT_chkEvtBit(0xAE)
+ && daNpcT_chkEvtBit(0x25B) && !daNpcT_chkEvtBit(0x235)) {
+ ++field_0xffc;
+ reg_r30 = chkPointInArea(pumpkin_p->current.pos, current.pos, mpHIO->m.pumpkin_watch_range,
+ mpHIO->m.pumpkin_watch_Ymax, mpHIO->m.pumpkin_watch_Ymin, 0);
+ if (reg_r30) {
+ if (field_0xffc >= 4) {
+ daNpcT_onTmpBit(0x1B);
+ }
+
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+
static char* mCutNameList[7];
static cutFunc mCutList[7];
private:
- /* 0x0E40 */ int field_0xe40;
+ /* 0x0E40 */ NPC_JAGAR_HIO_CLASS* mpHIO;
/* 0x0E44 */ dCcD_Cyl mCyl1;
/* 0x0F80 */ u8 mType;
/* 0x0F84 */ daNpcT_ActorMngr_c mActorMngr[5];
@@ -239,7 +237,7 @@ private:
/* 0x0FF0 */ int field_0xff0;
/* 0x0FF4 */ int field_0xff4;
/* 0x0FF8 */ int field_0xff8;
- /* 0x0FFC */ u8 field_0xffc[0x1000 - 0xffc];
+ /* 0x0FFC */ int field_0xffc;
/* 0x1000 */ u8 field_0x1000;
/* 0x1001 */ u8 field_0x1001;
/* 0x1002 */ u8 field_0x1002;
diff --git a/include/d/actor/d_a_obj_pumpkin.h b/include/d/actor/d_a_obj_pumpkin.h
index 1d0d446d55..b95481f9ee 100644
--- a/include/d/actor/d_a_obj_pumpkin.h
+++ b/include/d/actor/d_a_obj_pumpkin.h
@@ -2,6 +2,50 @@
#define D_A_OBJ_PUMPKIN_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_acch.h"
+#include "d/d_cc_d.h"
+#include "d/actor/d_a_player.h"
+
+struct daObj_Pumpkin_HIOParam {
+ /* 0x00 */ f32 featured_offset;
+ /* 0x04 */ f32 gravity;
+ /* 0x08 */ f32 scale;
+ /* 0x0C */ f32 real_shadow_size;
+ /* 0x10 */ f32 weight;
+ /* 0x14 */ f32 height;
+ /* 0x18 */ f32 knee_length;
+ /* 0x1C */ f32 width;
+ /* 0x20 */ f32 fire_rate;
+ /* 0x24 */ f32 launch_angle;
+ /* 0x28 */ f32 floating_offset;
+ /* 0x2C */ s16 hold_on;
+ /* 0x2E */ s16 pull_sound_delay;
+ /* 0x30 */ s16 growth_time_1;
+ /* 0x32 */ s16 growth_time_2;
+};
+
+class daObj_Pumpkin_Param_c {
+public:
+ /* 80CB8304 */ virtual ~daObj_Pumpkin_Param_c() {}
+
+ static const daObj_Pumpkin_HIOParam m;
+};
+
+#if DEBUG
+class daObj_Pumpkin_HIO_c : public mDoHIO_entry_c {
+public:
+ daObj_Pumpkin_HIO_c();
+
+ void listenPropertyEvent(const JORPropertyEvent*);
+ void genMessage(JORMContext*);
+
+ daObj_Pumpkin_HIOParam m;
+};
+
+#define OBJ_PUMPKIN_HIO_CLASS daObj_Pumpkin_HIO_c
+#else
+#define OBJ_PUMPKIN_HIO_CLASS daObj_Pumpkin_Param_c
+#endif
/**
* @ingroup actors-objects
@@ -12,21 +56,78 @@
*
*/
class daObj_Pumpkin_c : public fopAc_ac_c {
+private:
+ /* 0x568 */ OBJ_PUMPKIN_HIO_CLASS* mpHIO;
+ /* 0x56C */ request_of_phase_process_class mPhaseReq;
+ /* 0x574 */ J3DModel* mpModel;
+ /* 0x578 */ dBgS_ObjAcch mObjAcch;
+ /* 0x750 */ dCcD_Stts mStts;
+ /* 0x78C */ dBgS_AcchCir mAcchCir;
+ /* 0x7CC */ cBgS_GndChk mGndChk;
+ /* 0x808 */ dCcD_Cyl mCyl0;
+ /* 0x944 */ dCcD_Cyl mCyl1;
+ /* 0xA80 */ daPy_boomerangMove_c mBoomerangMove;
+ /* 0xA8C */ cM3dGLin mLin;
+ /* 0xAA8 */ dBgS_LinChk mLinChk;
+ /* 0xB18 */ f32 mPumpkinScale;
+ /* 0xB1C */ u8 mType;
+ /* 0xB20 */ cXyz field_0xB20;
+ /* 0xB2C */ cXyz field_0xB2C;
+ /* 0xB38 */ csXyz field_0xB38;
+ /* 0xB40 */ fpc_ProcID mItemProcId;
+ /* 0xB44 */ int field_0xB44;
+ /* 0xB48 */ int field_0xB48;
+ /* 0xB4C */ int field_0xB4C;
+ /* 0xB50 */ int field_0xB50;
+ /* 0xB54 */ int field_0xB54;
+ /* 0xB58 */ int field_0xB58;
+ /* 0xB5C */ f32 field_0xB5C;
+ /* 0xB60 */ f32 field_0xB60;
+ /* 0xB64 */ f32 mWaterY;
+ /* 0xB68 */ f32 field_0xB68;
+ /* 0xB6C */ u8 field_0xB6C[0xB70 - 0xB6C];
+ /* 0xB70 */ f32 field_0xB70;
+ /* 0xB74 */ f32 field_0xB74;
+ /* 0xB78 */ s16 field_0xB78;
+ /* 0xB7A */ s16 field_0xB7A;
+ /* 0xB7C */ s16 field_0xB7C;
+ /* 0xB7E */ s16 field_0xB7E;
+ /* 0xB80 */ s16 field_0xB80;
+ /* 0xB82 */ u8 field_0xB82[0xB88 - 0xB82];
+ /* 0xB88 */ u32 mWaterPrtcls[4];
+ /* 0xB98 */ u32 mHamonPrtcl;
+ /* 0xB9C */ u8 field_0xB9C[0xBA0 - 0xB9C];
+ /* 0xBA0 */ u32 mSmokePrtcl1;
+ /* 0xBA4 */ u32 mSmokePrtcl2;
+ /* 0xBA8 */ u8 field_0xBA8;
+ /* 0xBA9 */ u8 field_0xBA9;
+ /* 0xBAA */ u8 field_0xBAA;
+ /* 0xBAB */ u8 field_0xBAB;
+ /* 0xBAC */ u8 field_0xBAC;
+ /* 0xBAD */ u8 field_0xBAD;
+ /* 0xBAE */ u8 field_0xBAE;
+ /* 0xBAF */ u8 field_0xBAF;
+ /* 0xBB0 */ u8 field_0xBB0;
+ /* 0xBB1 */ u8 field_0xBB1;
+ /* 0xBB2 */ u8 field_0xBB2;
+ /* 0xBB3 */ u8 field_0xbb3;
+ /* 0xBB4 */ u8 field_0xbb4;
+
public:
- /* 80CB578C */ ~daObj_Pumpkin_c();
- /* 80CB5A04 */ void create();
- /* 80CB5F88 */ void CreateHeap();
- /* 80CB6018 */ void Delete();
- /* 80CB604C */ void Execute();
- /* 80CB7638 */ void Draw();
- /* 80CB7824 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80CB7844 */ void isDelete();
+ /* 80CB578C */ virtual ~daObj_Pumpkin_c();
+ /* 80CB5A04 */ int create();
+ /* 80CB5F88 */ int CreateHeap();
+ /* 80CB6018 */ int Delete();
+ /* 80CB604C */ int Execute();
+ /* 80CB7638 */ int Draw();
+ /* 80CB7824 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80CB7844 */ int isDelete();
/* 80CB78C8 */ void setEnvTevColor();
/* 80CB7924 */ void setRoomNo();
/* 80CB7968 */ void reset();
/* 80CB79DC */ void setMtx();
- /* 80CB7AE4 */ void calcRollAngle(s16, int);
- /* 80CB7B84 */ void getWallAngle(s16, s16*);
+ /* 80CB7AE4 */ s16 calcRollAngle(s16, int);
+ /* 80CB7B84 */ int getWallAngle(s16, s16*);
/* 80CB7D14 */ void setSmokePrtcl();
/* 80CB7D98 */ void setWaterPrtcl();
/* 80CB7E98 */ void setHamonPrtcl();
@@ -42,22 +143,58 @@ public:
mpModel->setBaseTRMtx(mtx);
}
-private:
- /* 0x568 */ u8 field_0x568[0x574 - 0x568];
- /* 0x574 */ J3DModel* mpModel;
- /* 0x578 */ u8 field_0x578[0xbb3 - 0x578];
- /* 0xB7C */ u8 field_0xbb3;
- /* 0xB7E */ u8 field_0xbb4[0xbbc - 0xbb4];
-};
+ int getItemTableNo() {
+ u8 prm = fopAcM_GetParam(this) & 0xFF;
+ if (prm == 0xFF) {
+ return -1;
+ }
-STATIC_ASSERT(sizeof(daObj_Pumpkin_c) == 0xbbc);
+ return prm;
+ }
-class daObj_Pumpkin_Param_c {
-public:
- /* 80CB8304 */ ~daObj_Pumpkin_Param_c();
+ u8 getType() {
+ u8 prm = (fopAcM_GetParam(this) & 0xFF00) >> 8;
+ switch (prm) {
+ case 0:
+ return 0;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 3:
+ return 3;
+ default:
+ return 0;
+ }
+ }
- static u8 const m[52];
+ u8 getProcType() {
+ u8 prm = (fopAcM_GetParam(this) & 0xF0000000) >> 0x1C;
+ if (prm == 0xF) {
+ return 0;
+ }
+
+ return prm;
+ }
+
+ void popup(f32 i_f0, f32 i_deg, cXyz* ip_vec) {
+ if (ip_vec != NULL) {
+ current.pos = *ip_vec;
+ old.pos = current.pos;
+ }
+
+ s16 temp_r30 = cM_deg2s(i_deg);
+ speed.setall(0.0f);
+ speed.y = i_f0 * cM_ssin(temp_r30);
+ speedF = i_f0 * cM_scos(temp_r30);
+ field_0xB50 = 6;
+ field_0xB7C = 0x4000;
+ field_0xBAD = 1;
+ field_0xB74 = 0.0f;
+ }
};
+STATIC_ASSERT(sizeof(daObj_Pumpkin_c) == 0xbbc);
+
#endif /* D_A_OBJ_PUMPKIN_H */
diff --git a/src/d/actor/d_a_npc_jagar.cpp b/src/d/actor/d_a_npc_jagar.cpp
index fe67068394..bb9967a8fa 100644
--- a/src/d/actor/d_a_npc_jagar.cpp
+++ b/src/d/actor/d_a_npc_jagar.cpp
@@ -138,6 +138,45 @@ enum Event {
/* 0x8 */ EVENT_FIND_WOLF_VER2,
};
+/* 80A1A330-80A1A3D0 000000 00A0+00 13/13 0/0 1/1 .rodata m__19daNpc_Jagar_Param_c */
+daNpc_Jagar_HIOParam const daNpc_Jagar_Param_c::m = {
+ 170.0f, -3.0f, 1.0f, 400.0f, 255.0f, 160.0f,
+ 35.0f, 30.0f, 0.0f, 0.0f, 10.0f, -10.0f,
+ 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f,
+ 3, 6, 5, 6, 110.0f, 500.0f, 300.0f, -300.0f,
+ 60, 8, 0, 0, 0, 0.0f, 0.0f, 4.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ // Jagar-specific:
+ 1400.0f, 200.0f, -800.0f, 16.0f, 1800.0f,
+};
+
+#if DEBUG
+daNpc_Jagar_HIO_c::daNpc_Jagar_HIO_c() {
+ m = daNpc_Jagar_Param_c::m;
+}
+
+void daNpc_Jagar_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO.
+}
+
+void daNpc_Jagar_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO.
+ daNpcT_cmnGenMessage(ctext, &m.common);
+ // pumpkin monitoring distance
+ ctext->genSlider("かぼちゃ監視距離", &m.pumpkin_watch_range, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // pumpkin watch height
+ ctext->genSlider("かぼちゃ監視高さ", &m.pumpkin_watch_Ymax, -10000.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // "Pumpkin monitoring is low"?
+ ctext->genSlider("かぼちゃ監視低さ", &m.pumpkin_watch_Ymin, -10000.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // running speed
+ ctext->genSlider("走る速度 ", &m.running_speed, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // hidden state release dist
+ ctext->genSlider("隠れ状態解除距離", &m.hidden_state_release_dist, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ // export file:
+ ctext->genButton("ファイル書き出し", 0x40000002, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+}
+#endif
+
/* 80A1A568-80A1A570 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[1][2] = {
{BMDR_JAGAR, 1},
@@ -310,6 +349,13 @@ daNpc_Jagar_c::cutFunc daNpc_Jagar_c::mCutList[7] = {
&daNpc_Jagar_c::cutFindWolf,
};
+#if DEBUG
+static daNpc_Jagar_HIO_c l_HIO;
+#else
+/* 80A1AE2C-80A1AE30 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
+static daNpc_Jagar_Param_c l_HIO;
+#endif
+
/* 80A1470C-80A14858 0000EC 014C+00 1/0 0/0 0/0 .text __dt__13daNpc_Jagar_cFv */
daNpc_Jagar_c::~daNpc_Jagar_c() {
if (mpMorf[0] != 0) {
@@ -318,17 +364,6 @@ daNpc_Jagar_c::~daNpc_Jagar_c() {
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
}
-/* 80A1A330-80A1A3D0 000000 00A0+00 13/13 0/0 1/1 .rodata m__19daNpc_Jagar_Param_c */
-daNpc_Jagar_Param_c::Data const daNpc_Jagar_Param_c::m = {
- 170.0f, -3.0f, 1.0f, 400.0f, 255.0f, 160.0f,
- 35.0f, 30.0f, 0.0f, 0.0f, 10.0f, -10.0f,
- 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f,
- 3, 6, 5, 6, 110.0f, 500.0f, 300.0f, -300.0f,
- 60, 8, 0.0f, 0.0f, 4.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1400.0f,
- 200.0f, -800.0f, 16.0f, 1800.0f,
-};
-
/* 80A14858-80A14B20 000238 02C8+00 1/1 0/0 0/0 .text create__13daNpc_Jagar_cFv */
int daNpc_Jagar_c::create() {
static int const heapSize[4] = {14416, 14448, 14448, 0};
@@ -359,7 +394,7 @@ int daNpc_Jagar_c::create() {
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
&mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this),
fopAcM_GetShapeAngle_p(this));
- mCcStts.Init(daNpc_Jagar_Param_c::m.field_0x10, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
mCyl1.Set(mCcDCyl);
mCyl1.SetStts(&mCcStts);
mCyl1.SetTgHitCallback(tgHitCallBack);
@@ -536,39 +571,39 @@ void daNpc_Jagar_c::setParam() {
selectAction();
srchActors();
u32 uVar7 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
- s16 sVar10 = daNpc_Jagar_Param_c::m.field_0x48;
- s16 sVar9 = daNpc_Jagar_Param_c::m.field_0x4a;
- s16 sVar8 = daNpc_Jagar_Param_c::m.field_0x4c;
- s16 sVar7 = daNpc_Jagar_Param_c::m.field_0x4e;
+ s16 talk_dist = mpHIO->m.common.talk_distance;
+ s16 talk_ang = mpHIO->m.common.talk_angle;
+ s16 att_dist = mpHIO->m.common.attention_distance;
+ s16 att_ang = mpHIO->m.common.attention_angle;
switch (mType) {
case TYPE_0:
- sVar10 = 4;
- sVar9 = 6;
- sVar8 = 5;
- sVar7 = 6;
+ talk_dist = 4;
+ talk_ang = 6;
+ att_dist = 5;
+ att_ang = 6;
break;
case TYPE_1:
field_0xff0 = 3;
field_0xff4 = 6;
- sVar10 = 19;
- sVar9 = 6;
- sVar8 = 19;
- sVar7 = 6;
+ talk_dist = 19;
+ talk_ang = 6;
+ att_dist = 19;
+ att_ang = 6;
break;
case TYPE_2:
- sVar10 = 3;
- sVar9 = 6;
- sVar8 = 5;
- sVar7 = 6;
+ talk_dist = 3;
+ talk_ang = 6;
+ att_dist = 5;
+ att_ang = 6;
break;
}
- attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(sVar8, sVar7);
+ attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(att_dist, att_ang);
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar10, sVar9);
+ attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_dist, talk_ang);
if (mType == TYPE_1) {
uVar7 |= fopAc_AttnFlag_UNK_0x800000;
@@ -586,18 +621,18 @@ void daNpc_Jagar_c::setParam() {
}
attention_info.flags = uVar7;
- scale.set(daNpc_Jagar_Param_c::m.field_0x08, daNpc_Jagar_Param_c::m.field_0x08,
- daNpc_Jagar_Param_c::m.field_0x08);
- mCcStts.SetWeight(daNpc_Jagar_Param_c::m.field_0x10);
- mCylH = daNpc_Jagar_Param_c::m.field_0x14;
- mWallR = daNpc_Jagar_Param_c::m.field_0x1c;
- mAttnFovY = daNpc_Jagar_Param_c::m.field_0x50;
+ scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale,
+ mpHIO->m.common.scale);
+ mCcStts.SetWeight(mpHIO->m.common.weight);
+ mCylH = mpHIO->m.common.height;
+ mWallR = mpHIO->m.common.width;
+ mAttnFovY = mpHIO->m.common.fov;
mAcchCir.SetWallR(mWallR);
- mAcchCir.SetWallH(daNpc_Jagar_Param_c::m.field_0x18);
- mRealShadowSize = daNpc_Jagar_Param_c::m.field_0x0c;
- mExpressionMorfFrame = daNpc_Jagar_Param_c::m.field_0x6c;
- mMorfFrames = daNpc_Jagar_Param_c::m.field_0x44;
- gravity = daNpc_Jagar_Param_c::m.field_0x04;
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ mRealShadowSize = mpHIO->m.common.real_shadow_size;
+ mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
+ mMorfFrames = mpHIO->m.common.morf_frame;
+ gravity = mpHIO->m.common.gravity;
}
/* 80A155E4-80A15714 000FC4 0130+00 1/0 0/0 0/0 .text checkChangeEvt__13daNpc_Jagar_cFv */
@@ -775,9 +810,6 @@ void daNpc_Jagar_c::beforeMove() {
}
}
-/* 80A1AE2C-80A1AE30 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpc_Jagar_Param_c l_HIO;
-
/* 80A15D68-80A1607C 001748 0314+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_Jagar_cFv */
void daNpc_Jagar_c::setAttnPos() {
cXyz cStack_3c(-10.0f, 10.0f, 0.0f);
@@ -785,11 +817,11 @@ void daNpc_Jagar_c::setAttnPos() {
f32 dVar8 = cM_s2rad(mCurAngle.y - field_0xd7e.y);
J3DModel* model = mpMorf[0]->getModel();
mJntAnm.setParam(this, model, &cStack_3c, getBackboneJointNo(), getNeckJointNo(),
- getHeadJointNo(), daNpc_Jagar_Param_c::m.field_0x24, daNpc_Jagar_Param_c::m.field_0x20,
- daNpc_Jagar_Param_c::m.field_0x2c, daNpc_Jagar_Param_c::m.field_0x28,
- daNpc_Jagar_Param_c::m.field_0x34, daNpc_Jagar_Param_c::m.field_0x30,
- daNpc_Jagar_Param_c::m.field_0x3c, daNpc_Jagar_Param_c::m.field_0x38,
- daNpc_Jagar_Param_c::m.field_0x40, dVar8, NULL);
+ getHeadJointNo(), mpHIO->m.common.body_angleX_min, mpHIO->m.common.body_angleX_max,
+ mpHIO->m.common.body_angleY_min, mpHIO->m.common.body_angleY_max,
+ mpHIO->m.common.head_angleX_min, mpHIO->m.common.head_angleX_max,
+ mpHIO->m.common.head_angleY_min, mpHIO->m.common.head_angleY_max,
+ mpHIO->m.common.neck_rotation_ratio, dVar8, NULL);
mJntAnm.calcJntRad(0.2f, 1.0f, dVar8);
setMtx();
mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo()));
@@ -797,7 +829,7 @@ void daNpc_Jagar_c::setAttnPos() {
mJntAnm.setEyeAngleX(eyePos, 1.0f, -0x2800);
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 1, 1.0f, 0);
cStack_3c.set(0.0f, 0.0f, 10.0f);
- cStack_3c.y = daNpc_Jagar_Param_c::m.field_0x00;
+ cStack_3c.y = mpHIO->m.common.attention_offset;
if (field_0x1004 == 2) {
cStack_3c.set(0.0f, 100.0f, -60.0f);
}
@@ -1323,7 +1355,7 @@ int daNpc_Jagar_c::cutFindWolf(int i_cutIndex) {
cLib_chaseS(&shape_angle.y, current.angle.y, 0x800);
mCurAngle.y = shape_angle.y;
field_0xd7e.y = mCurAngle.y;
- cLib_chaseF(&speedF, daNpc_Jagar_Param_c::m.field_0x98, 0.5f);
+ cLib_chaseF(&speedF, mpHIO->m.running_speed, 0.5f);
mAcch.SetWallNone();
if (cLib_calcTimer(&mEventTimer) == 0) {
rv = 1;
@@ -1514,7 +1546,7 @@ int daNpc_Jagar_c::wait(void* param_1) {
switch (mType) {
case TYPE_0:
daNpcT_offTmpBit(0x10); // dSv_event_tmp_flag_c::T_0015 - Ordon Village - Link came up the hill afte being called by Jaggle
- cStack_24.set(daNpc_Jagar_Param_c::m.field_0x54, 10.0f, daNpc_Jagar_Param_c::m.field_0x54);
+ cStack_24.set(mpHIO->m.common.search_distance, 10.0f, mpHIO->m.common.search_distance);
if (chkPointInArea(daPy_getPlayerActorClass()->current.pos, current.pos,
cStack_24, 0)) {
if (daPy_getPlayerActorClass()->checkPlayerFly()) {
@@ -1545,9 +1577,9 @@ int daNpc_Jagar_c::wait(void* param_1) {
case TYPE_2:
if (!mHide) {
if (daNpcT_c::chkFindWolf(mCurAngle.y, daNpcT_getDistTableIdx(field_0xff0, field_0xff4),
- field_0xfec, daNpc_Jagar_Param_c::m.field_0x54, 180.0f,
- daNpc_Jagar_Param_c::m.field_0x58,
- daNpc_Jagar_Param_c::m.field_0x5c, 1)) {
+ field_0xfec, mpHIO->m.common.search_distance, 180.0f,
+ mpHIO->m.common.search_height,
+ mpHIO->m.common.search_depth, 1)) {
mEvtNo = EVENT_FIND_WOLF_VER2;
}
}
@@ -1649,13 +1681,14 @@ int daNpc_Jagar_c::talkwithBou(void* param_0) {
}
// fallthrough
case 2:
- if (mHide != 0 && !daNpcT_chkEvtBit(0xD3) /* dSv_event_flag_c::F_0211 - Ordon Village - Successfully eavesdrop on Bo and Jaggle */) {
+ if (mHide != 0 && !daNpcT_chkEvtBit(0xD3)) {
+ /* dSv_event_flag_c::F_0211 - Ordon Village - Successfully eavesdrop on Bo and Jaggle */
f32 actor_dist = fopAcM_searchActorDistanceXZ(this, daPy_getPlayerActorClass());
- if (daNpc_Jagar_Param_c::m.field_0x9c < actor_dist && field_0xe34 == 0) {
+ if (mpHIO->m.hidden_state_release_dist < actor_dist && field_0xe34 == 0) {
if (bo) {
bo->mHide = 0;
}
-
+
mHide = 0;
}
}
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
+};