summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-07-26 03:44:23 +0300
committerGitHub <noreply@github.com>2025-07-25 17:44:23 -0700
commit70a174197780758981cae2c012cee02f8d4ff83f (patch)
treea4d90893b5d1de7adb4ccddc778b96ce1989c457
parent585670f2b1240d10a7e0a3c6dc7e84d8909206f3 (diff)
d_a_obj_twGate Matching (#2555)
* d_a_obj_twGate Matching * d_a_obj_volcbom OK
-rw-r--r--config/GZ2E01/rels/d_a_obj_twGate/symbols.txt28
-rw-r--r--config/GZ2E01/rels/d_a_obj_volcbom/symbols.txt34
-rw-r--r--config/GZ2J01/rels/d_a_obj_twGate/symbols.txt28
-rw-r--r--config/GZ2J01/rels/d_a_obj_volcbom/symbols.txt34
-rw-r--r--config/GZ2P01/rels/d_a_obj_twGate/symbols.txt28
-rw-r--r--config/GZ2P01/rels/d_a_obj_volcbom/symbols.txt32
-rw-r--r--config/RZDE01_00/rels/d_a_obj_twGate/symbols.txt28
-rw-r--r--config/RZDE01_00/rels/d_a_obj_volcbom/symbols.txt24
-rw-r--r--config/ShieldD/rels/d_a_obj_twGateD/symbols.txt28
-rw-r--r--config/ShieldD/rels/d_a_obj_volcbomD/symbols.txt28
-rw-r--r--config/ShieldD/rels/d_a_obj_web1D/symbols.txt2
-rwxr-xr-xconfigure.py4
-rw-r--r--include/d/actor/d_a_e_bu.h4
-rw-r--r--include/d/actor/d_a_e_zh.h2
-rw-r--r--include/d/actor/d_a_midna.h6
-rw-r--r--include/d/actor/d_a_obj_twGate.h31
-rw-r--r--include/d/actor/d_a_obj_volcbom.h107
-rw-r--r--include/d/actor/d_a_player.h3
-rw-r--r--include/d/d_com_inf_game.h4
-rw-r--r--include/f_op/f_op_actor_mng.h12
-rw-r--r--include/f_pc/f_pc_base.h8
-rw-r--r--include/f_pc/f_pc_manager.h2
-rw-r--r--src/d/actor/d_a_alink_demo.inc2
-rw-r--r--src/d/actor/d_a_e_zh.cpp2
-rw-r--r--src/d/actor/d_a_npc_jagar.cpp2
-rw-r--r--src/d/actor/d_a_npc_maro.cpp2
-rw-r--r--src/d/actor/d_a_npc_moi.cpp2
-rw-r--r--src/d/actor/d_a_npc_uri.cpp4
-rw-r--r--src/d/actor/d_a_obj_amiShutter.cpp6
-rw-r--r--src/d/actor/d_a_obj_lv6bemos.cpp2
-rw-r--r--src/d/actor/d_a_obj_togeTrap.cpp2
-rw-r--r--src/d/actor/d_a_obj_twGate.cpp533
-rw-r--r--src/d/actor/d_a_obj_volcbom.cpp1556
-rw-r--r--src/d/actor/d_a_obj_wood_statue.cpp2
-rw-r--r--src/f_pc/f_pc_base.cpp14
-rw-r--r--src/f_pc/f_pc_deletor.cpp4
-rw-r--r--src/f_pc/f_pc_executor.cpp6
-rw-r--r--src/f_pc/f_pc_leaf.cpp2
-rw-r--r--src/f_pc/f_pc_node.cpp2
-rw-r--r--src/f_pc/f_pc_priority.cpp4
40 files changed, 1255 insertions, 1369 deletions
diff --git a/config/GZ2E01/rels/d_a_obj_twGate/symbols.txt b/config/GZ2E01/rels/d_a_obj_twGate/symbols.txt
index e03e02dbcb..5fdaf159b9 100644
--- a/config/GZ2E01/rels/d_a_obj_twGate/symbols.txt
+++ b/config/GZ2E01/rels/d_a_obj_twGate/symbols.txt
@@ -14,10 +14,10 @@ __dt__12J3DFrameCtrlFv = .text:0x0000059C; // type:function size:0x48 scope:glob
Execute__10daTwGate_cFPPA3_A4_f = .text:0x000005E4; // type:function size:0x110 scope:global
Draw__10daTwGate_cFv = .text:0x000006F4; // type:function size:0xCC scope:global
Delete__10daTwGate_cFv = .text:0x000007C0; // type:function size:0x40 scope:global
-daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:global
-daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:global
-daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:global
-daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:global
+daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:local
+daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:local
+daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:local
+daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:local
__dt__14daTwGate_HIO_cFv = .text:0x0000088C; // type:function size:0x6C scope:global
__sinit_d_a_obj_twGate_cpp = .text:0x000008F8; // type:function size:0x3C scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
@@ -25,19 +25,19 @@ __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
@3638 = .rodata:0x00000000; // type:object size:0x4 scope:local
-l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:global
-l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:global
-l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:global
-l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:global
-l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:global
-l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:global
-l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:global
+l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:local
+l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:local
+l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:local
+l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:local
+l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:local
+l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:local
+l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:local
@3693 = .rodata:0x00000240; // type:object size:0x4 scope:local
@3769 = .rodata:0x00000244; // type:object size:0x4 scope:local
@3837 = .rodata:0x00000248; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x0000024C; // type:object size:0x59 scope:local data:string_table
-l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:global
-l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:global
+l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:local
+l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:local
g_profile_Obj_TwGate = .data:0x00000054; // type:object size:0x30 scope:global
__vt__8cM3dGLin = .data:0x00000084; // type:object size:0xC scope:global
__vt__12J3DFrameCtrl = .data:0x00000090; // type:object size:0xC scope:global
@@ -47,4 +47,4 @@ __vt__18fOpAcm_HIO_entry_c = .data:0x000000D0; // type:object size:0xC scope:glo
__vt__14mDoHIO_entry_c = .data:0x000000DC; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3630 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global align:4 data:float
+l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local align:4 data:float
diff --git a/config/GZ2E01/rels/d_a_obj_volcbom/symbols.txt b/config/GZ2E01/rels/d_a_obj_volcbom/symbols.txt
index defc3b60ce..1ed74a9263 100644
--- a/config/GZ2E01/rels/d_a_obj_volcbom/symbols.txt
+++ b/config/GZ2E01/rels/d_a_obj_volcbom/symbols.txt
@@ -1,7 +1,7 @@
_prolog = .text:0x00000000; // type:function size:0x2C scope:global
_epilog = .text:0x0000002C; // type:function size:0x2C scope:global
_unresolved = .text:0x00000058; // type:function size:0x20 scope:global
-eventCallBack__FPvi = .text:0x00000078; // type:function size:0x48 scope:global
+eventCallBack__FPvi = .text:0x00000078; // type:function size:0x48 scope:local
initBaseMtx__14daObjVolcBom_cFv = .text:0x000000C0; // type:function size:0x58 scope:global
setBaseMtx__14daObjVolcBom_cFv = .text:0x00000118; // type:function size:0x70 scope:global
Create__14daObjVolcBom_cFv = .text:0x00000188; // type:function size:0x238 scope:global
@@ -43,15 +43,15 @@ demoProc__14daObjVolcBom_cFv = .text:0x00001DC8; // type:function size:0x580 sco
calcObjPos__14daObjVolcBom_cFv = .text:0x00002348; // type:function size:0x80 scope:global
Draw__14daObjVolcBom_cFv = .text:0x000023C8; // type:function size:0x214 scope:global
Delete__14daObjVolcBom_cFv = .text:0x000025DC; // type:function size:0x78 scope:global
-daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:global
+daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:local
__dt__8cM3dGCylFv = .text:0x00002788; // type:function size:0x48 scope:global
__dt__8cM3dGAabFv = .text:0x000027D0; // type:function size:0x48 scope:global
__dt__10dCcD_GSttsFv = .text:0x00002818; // type:function size:0x5C scope:global
__dt__12dBgS_AcchCirFv = .text:0x00002874; // type:function size:0x70 scope:global
__dt__12dBgS_ObjAcchFv = .text:0x000028E4; // type:function size:0x70 scope:global
-daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:global
+daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:local
__dt__10cCcD_GSttsFv = .text:0x000029C0; // type:function size:0x48 scope:global
cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:global
@36@__dt__12dBgS_ObjAcchFv = .text:0x00002A24; // type:function size:0x8 scope:local
@@ -59,10 +59,10 @@ cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:gl
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
-l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:global
-l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:global
-l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:global
-l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:global
+l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:local
+l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:local
+l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:local
+l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:local
@3785 = .rodata:0x00000020; // type:object size:0x4 scope:local align:4 data:float
@3786 = .rodata:0x00000024; // type:object size:0x4 scope:local
@3787 = .rodata:0x00000028; // type:object size:0x4 scope:local
@@ -93,13 +93,13 @@ l_effect_id$4032 = .rodata:0x00000054; // type:object size:0xE scope:local
@4828 = .rodata:0x000000AC; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x000000B0; // type:object size:0x48 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_676_data_10 = .data:0x00000010; // type:object size:0x10
-l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
-l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:global
-l_staff_name = .data:0x00000028; // type:object size:0x4 scope:global data:4byte
-l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:global
+l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
+l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:local
+l_staff_name = .data:0x00000028; // type:object size:0x4 scope:local data:4byte
+l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:local
@3933 = .data:0x00000070; // type:object size:0xC scope:local
@3934 = .data:0x0000007C; // type:object size:0xC scope:local
@3935 = .data:0x00000088; // type:object size:0xC scope:local
@@ -113,7 +113,7 @@ mode_proc$3932 = .data:0x000000A0; // type:object size:0x30 scope:local
@4371 = .data:0x0000010C; // type:object size:0xC scope:local
l_func$4365 = .data:0x00000118; // type:object size:0x48 scope:local
action_table$4540 = .data:0x00000160; // type:object size:0x10 scope:local
-daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:global
+daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:local
g_profile_Obj_VolcanicBomb = .data:0x00000190; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x000001C0; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x000001CC; // type:object size:0xC scope:global
@@ -123,5 +123,5 @@ __vt__8cM3dGAab = .data:0x000001F0; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x000001FC; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x00000220; // type:object size:0xC scope:global
__vt__14daObjVolcBom_c = .data:0x0000022C; // type:object size:0x28 scope:global
-lbl_676_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
-lbl_676_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte
+init$1712 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte
+init$2146 = .bss:0x00000001; // type:object size:0x1 scope:local data:byte
diff --git a/config/GZ2J01/rels/d_a_obj_twGate/symbols.txt b/config/GZ2J01/rels/d_a_obj_twGate/symbols.txt
index e03e02dbcb..5fdaf159b9 100644
--- a/config/GZ2J01/rels/d_a_obj_twGate/symbols.txt
+++ b/config/GZ2J01/rels/d_a_obj_twGate/symbols.txt
@@ -14,10 +14,10 @@ __dt__12J3DFrameCtrlFv = .text:0x0000059C; // type:function size:0x48 scope:glob
Execute__10daTwGate_cFPPA3_A4_f = .text:0x000005E4; // type:function size:0x110 scope:global
Draw__10daTwGate_cFv = .text:0x000006F4; // type:function size:0xCC scope:global
Delete__10daTwGate_cFv = .text:0x000007C0; // type:function size:0x40 scope:global
-daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:global
-daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:global
-daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:global
-daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:global
+daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:local
+daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:local
+daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:local
+daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:local
__dt__14daTwGate_HIO_cFv = .text:0x0000088C; // type:function size:0x6C scope:global
__sinit_d_a_obj_twGate_cpp = .text:0x000008F8; // type:function size:0x3C scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
@@ -25,19 +25,19 @@ __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
@3638 = .rodata:0x00000000; // type:object size:0x4 scope:local
-l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:global
-l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:global
-l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:global
-l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:global
-l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:global
-l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:global
-l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:global
+l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:local
+l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:local
+l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:local
+l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:local
+l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:local
+l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:local
+l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:local
@3693 = .rodata:0x00000240; // type:object size:0x4 scope:local
@3769 = .rodata:0x00000244; // type:object size:0x4 scope:local
@3837 = .rodata:0x00000248; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x0000024C; // type:object size:0x59 scope:local data:string_table
-l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:global
-l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:global
+l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:local
+l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:local
g_profile_Obj_TwGate = .data:0x00000054; // type:object size:0x30 scope:global
__vt__8cM3dGLin = .data:0x00000084; // type:object size:0xC scope:global
__vt__12J3DFrameCtrl = .data:0x00000090; // type:object size:0xC scope:global
@@ -47,4 +47,4 @@ __vt__18fOpAcm_HIO_entry_c = .data:0x000000D0; // type:object size:0xC scope:glo
__vt__14mDoHIO_entry_c = .data:0x000000DC; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3630 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global align:4 data:float
+l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local align:4 data:float
diff --git a/config/GZ2J01/rels/d_a_obj_volcbom/symbols.txt b/config/GZ2J01/rels/d_a_obj_volcbom/symbols.txt
index ac86abafae..3fca5d457b 100644
--- a/config/GZ2J01/rels/d_a_obj_volcbom/symbols.txt
+++ b/config/GZ2J01/rels/d_a_obj_volcbom/symbols.txt
@@ -1,7 +1,7 @@
_prolog = .text:0x00000000; // type:function size:0x2C scope:global
_epilog = .text:0x0000002C; // type:function size:0x2C scope:global
_unresolved = .text:0x00000058; // type:function size:0x20 scope:global
-eventCallBack__FPvi = .text:0x00000078; // type:function size:0x48 scope:global
+eventCallBack__FPvi = .text:0x00000078; // type:function size:0x48 scope:local
initBaseMtx__14daObjVolcBom_cFv = .text:0x000000C0; // type:function size:0x58 scope:global
setBaseMtx__14daObjVolcBom_cFv = .text:0x00000118; // type:function size:0x70 scope:global
Create__14daObjVolcBom_cFv = .text:0x00000188; // type:function size:0x238 scope:global
@@ -43,15 +43,15 @@ demoProc__14daObjVolcBom_cFv = .text:0x00001DC8; // type:function size:0x580 sco
calcObjPos__14daObjVolcBom_cFv = .text:0x00002348; // type:function size:0x80 scope:global
Draw__14daObjVolcBom_cFv = .text:0x000023C8; // type:function size:0x214 scope:global
Delete__14daObjVolcBom_cFv = .text:0x000025DC; // type:function size:0x78 scope:global
-daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:global
+daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:local
__dt__8cM3dGCylFv = .text:0x00002788; // type:function size:0x48 scope:global
__dt__8cM3dGAabFv = .text:0x000027D0; // type:function size:0x48 scope:global
__dt__10dCcD_GSttsFv = .text:0x00002818; // type:function size:0x5C scope:global
__dt__12dBgS_AcchCirFv = .text:0x00002874; // type:function size:0x70 scope:global
__dt__12dBgS_ObjAcchFv = .text:0x000028E4; // type:function size:0x70 scope:global
-daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:global
+daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:local
__dt__10cCcD_GSttsFv = .text:0x000029C0; // type:function size:0x48 scope:global
cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:global
@36@__dt__12dBgS_ObjAcchFv = .text:0x00002A24; // type:function size:0x8 scope:local
@@ -59,10 +59,10 @@ cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:gl
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
-l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:global
-l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:global
-l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:global
-l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:global
+l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:local
+l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:local
+l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:local
+l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:local
@3785 = .rodata:0x00000020; // type:object size:0x4 scope:local align:4 data:float
@3786 = .rodata:0x00000024; // type:object size:0x4 scope:local
@3787 = .rodata:0x00000028; // type:object size:0x4 scope:local
@@ -92,13 +92,13 @@ l_effect_id$4032 = .rodata:0x00000054; // type:object size:0xE scope:local
@4718 = .rodata:0x000000A8; // type:object size:0x4 scope:local
@4828 = .rodata:0x000000AC; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x000000B0; // type:object size:0x48 scope:local data:string_table
-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_676_data_10 = .data:0x00000010; // type:object size:0x10
-l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
-l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:global
-l_staff_name = .data:0x00000028; // type:object size:0x4 scope:global data:4byte
-l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:global
+l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
+l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:local
+l_staff_name = .data:0x00000028; // type:object size:0x4 scope:local data:4byte
+l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:local
@3933 = .data:0x00000070; // type:object size:0xC scope:local
@3934 = .data:0x0000007C; // type:object size:0xC scope:local
@3935 = .data:0x00000088; // type:object size:0xC scope:local
@@ -112,7 +112,7 @@ mode_proc$3932 = .data:0x000000A0; // type:object size:0x30 scope:local
@4371 = .data:0x0000010C; // type:object size:0xC scope:local
l_func$4365 = .data:0x00000118; // type:object size:0x48 scope:local
action_table$4540 = .data:0x00000160; // type:object size:0x10 scope:local
-daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:global
+daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:local
g_profile_Obj_VolcanicBomb = .data:0x00000190; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x000001C0; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x000001CC; // type:object size:0xC scope:global
@@ -122,5 +122,5 @@ __vt__8cM3dGAab = .data:0x000001F0; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x000001FC; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x00000220; // type:object size:0xC scope:global
__vt__14daObjVolcBom_c = .data:0x0000022C; // type:object size:0x28 scope:global
-lbl_676_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
-lbl_676_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte
+init$1712 = .bss:0x00000000; // type:object size:0x1 data:byte scope:local
+init$2146 = .bss:0x00000001; // type:object size:0x1 data:byte scope:local
diff --git a/config/GZ2P01/rels/d_a_obj_twGate/symbols.txt b/config/GZ2P01/rels/d_a_obj_twGate/symbols.txt
index e03e02dbcb..5fdaf159b9 100644
--- a/config/GZ2P01/rels/d_a_obj_twGate/symbols.txt
+++ b/config/GZ2P01/rels/d_a_obj_twGate/symbols.txt
@@ -14,10 +14,10 @@ __dt__12J3DFrameCtrlFv = .text:0x0000059C; // type:function size:0x48 scope:glob
Execute__10daTwGate_cFPPA3_A4_f = .text:0x000005E4; // type:function size:0x110 scope:global
Draw__10daTwGate_cFv = .text:0x000006F4; // type:function size:0xCC scope:global
Delete__10daTwGate_cFv = .text:0x000007C0; // type:function size:0x40 scope:global
-daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:global
-daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:global
-daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:global
-daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:global
+daTwGate_Draw__FP10daTwGate_c = .text:0x00000800; // type:function size:0x2C scope:local
+daTwGate_Execute__FP10daTwGate_c = .text:0x0000082C; // type:function size:0x20 scope:local
+daTwGate_Delete__FP10daTwGate_c = .text:0x0000084C; // type:function size:0x20 scope:local
+daTwGate_Create__FP10fopAc_ac_c = .text:0x0000086C; // type:function size:0x20 scope:local
__dt__14daTwGate_HIO_cFv = .text:0x0000088C; // type:function size:0x6C scope:global
__sinit_d_a_obj_twGate_cpp = .text:0x000008F8; // type:function size:0x3C scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
@@ -25,19 +25,19 @@ __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
@3638 = .rodata:0x00000000; // type:object size:0x4 scope:local
-l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:global
-l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:global
-l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:global
-l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:global
-l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:global
-l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:global
-l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:global
+l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:local
+l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:local
+l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:local
+l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:local
+l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:local
+l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:local
+l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:local
@3693 = .rodata:0x00000240; // type:object size:0x4 scope:local
@3769 = .rodata:0x00000244; // type:object size:0x4 scope:local
@3837 = .rodata:0x00000248; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x0000024C; // type:object size:0x59 scope:local data:string_table
-l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:global
-l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:global
+l_resNameIdx = .data:0x00000000; // type:object size:0x34 scope:local
+l_daTwGate_Method = .data:0x00000034; // type:object size:0x20 scope:local
g_profile_Obj_TwGate = .data:0x00000054; // type:object size:0x30 scope:global
__vt__8cM3dGLin = .data:0x00000084; // type:object size:0xC scope:global
__vt__12J3DFrameCtrl = .data:0x00000090; // type:object size:0xC scope:global
@@ -47,4 +47,4 @@ __vt__18fOpAcm_HIO_entry_c = .data:0x000000D0; // type:object size:0xC scope:glo
__vt__14mDoHIO_entry_c = .data:0x000000DC; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3630 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global align:4 data:float
+l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local align:4 data:float
diff --git a/config/GZ2P01/rels/d_a_obj_volcbom/symbols.txt b/config/GZ2P01/rels/d_a_obj_volcbom/symbols.txt
index ac86abafae..e6a48fec7d 100644
--- a/config/GZ2P01/rels/d_a_obj_volcbom/symbols.txt
+++ b/config/GZ2P01/rels/d_a_obj_volcbom/symbols.txt
@@ -43,15 +43,15 @@ demoProc__14daObjVolcBom_cFv = .text:0x00001DC8; // type:function size:0x580 sco
calcObjPos__14daObjVolcBom_cFv = .text:0x00002348; // type:function size:0x80 scope:global
Draw__14daObjVolcBom_cFv = .text:0x000023C8; // type:function size:0x214 scope:global
Delete__14daObjVolcBom_cFv = .text:0x000025DC; // type:function size:0x78 scope:global
-daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:global
+daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00002654; // type:function size:0x134 scope:local
__dt__8cM3dGCylFv = .text:0x00002788; // type:function size:0x48 scope:global
__dt__8cM3dGAabFv = .text:0x000027D0; // type:function size:0x48 scope:global
__dt__10dCcD_GSttsFv = .text:0x00002818; // type:function size:0x5C scope:global
__dt__12dBgS_AcchCirFv = .text:0x00002874; // type:function size:0x70 scope:global
__dt__12dBgS_ObjAcchFv = .text:0x000028E4; // type:function size:0x70 scope:global
-daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:global
-daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:global
+daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00002954; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x00002974; // type:function size:0x20 scope:local
+daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x00002994; // type:function size:0x2C scope:local
__dt__10cCcD_GSttsFv = .text:0x000029C0; // type:function size:0x48 scope:global
cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:global
@36@__dt__12dBgS_ObjAcchFv = .text:0x00002A24; // type:function size:0x8 scope:local
@@ -59,10 +59,10 @@ cLib_calcTimer<Uc>__FPUc = .text:0x00002A08; // type:function size:0x1C scope:gl
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
-l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:global
-l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:global
-l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:global
-l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:global
+l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:local
+l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:local
+l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:local
+l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:local
@3785 = .rodata:0x00000020; // type:object size:0x4 scope:local align:4 data:float
@3786 = .rodata:0x00000024; // type:object size:0x4 scope:local
@3787 = .rodata:0x00000028; // type:object size:0x4 scope:local
@@ -92,13 +92,13 @@ l_effect_id$4032 = .rodata:0x00000054; // type:object size:0xE scope:local
@4718 = .rodata:0x000000A8; // type:object size:0x4 scope:local
@4828 = .rodata:0x000000AC; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x000000B0; // type:object size:0x48 scope:local data:string_table
-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_676_data_10 = .data:0x00000010; // type:object size:0x10
-l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
-l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:global
-l_staff_name = .data:0x00000028; // type:object size:0x4 scope:global data:4byte
-l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:global
+l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
+l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:local
+l_staff_name = .data:0x00000028; // type:object size:0x4 scope:local data:4byte
+l_cyl_src = .data:0x0000002C; // type:object size:0x44 scope:local
@3933 = .data:0x00000070; // type:object size:0xC scope:local
@3934 = .data:0x0000007C; // type:object size:0xC scope:local
@3935 = .data:0x00000088; // type:object size:0xC scope:local
@@ -112,7 +112,7 @@ mode_proc$3932 = .data:0x000000A0; // type:object size:0x30 scope:local
@4371 = .data:0x0000010C; // type:object size:0xC scope:local
l_func$4365 = .data:0x00000118; // type:object size:0x48 scope:local
action_table$4540 = .data:0x00000160; // type:object size:0x10 scope:local
-daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:global
+daObjVolcBom_METHODS = .data:0x00000170; // type:object size:0x20 scope:local
g_profile_Obj_VolcanicBomb = .data:0x00000190; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x000001C0; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x000001CC; // type:object size:0xC scope:global
@@ -122,5 +122,5 @@ __vt__8cM3dGAab = .data:0x000001F0; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x000001FC; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x00000220; // type:object size:0xC scope:global
__vt__14daObjVolcBom_c = .data:0x0000022C; // type:object size:0x28 scope:global
-lbl_676_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
-lbl_676_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte
+init$1712 = .bss:0x00000000; // type:object size:0x1 data:byte scope:local
+init$2146 = .bss:0x00000001; // type:object size:0x1 data:byte scope:local
diff --git a/config/RZDE01_00/rels/d_a_obj_twGate/symbols.txt b/config/RZDE01_00/rels/d_a_obj_twGate/symbols.txt
index f4e8e9b13c..6123f2e93a 100644
--- a/config/RZDE01_00/rels/d_a_obj_twGate/symbols.txt
+++ b/config/RZDE01_00/rels/d_a_obj_twGate/symbols.txt
@@ -10,10 +10,10 @@ create__10daTwGate_cFv = .text:0x00000298; // type:function size:0x198 scope:glo
Execute__10daTwGate_cFPPA3_A4_f = .text:0x00000430; // type:function size:0x110 scope:global
Draw__10daTwGate_cFv = .text:0x00000540; // type:function size:0xC0 scope:global
Delete__10daTwGate_cFv = .text:0x00000600; // type:function size:0x3C scope:global
-daTwGate_Draw__FP10daTwGate_c = .text:0x0000063C; // type:function size:0x10 scope:global
-daTwGate_Execute__FP10daTwGate_c = .text:0x0000064C; // type:function size:0x4 scope:global
-daTwGate_Delete__FP10daTwGate_c = .text:0x00000650; // type:function size:0x4 scope:global
-daTwGate_Create__FP10fopAc_ac_c = .text:0x00000654; // type:function size:0x4 scope:global
+daTwGate_Draw__FP10daTwGate_c = .text:0x0000063C; // type:function size:0x10 scope:local
+daTwGate_Execute__FP10daTwGate_c = .text:0x0000064C; // type:function size:0x4 scope:local
+daTwGate_Delete__FP10daTwGate_c = .text:0x00000650; // type:function size:0x4 scope:local
+daTwGate_Create__FP10fopAc_ac_c = .text:0x00000654; // type:function size:0x4 scope:local
__dt__14daTwGate_HIO_cFv = .text:0x00000658; // type:function size:0x40 scope:global
__sinit_d_a_obj_twGate_cpp = .text:0x00000698; // type:function size:0x48 scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
@@ -21,13 +21,13 @@ __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
@89924 = .rodata:0x00000000; // type:object size:0x4 scope:local
-l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:global
-l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:global
-l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:global
-l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:global
-l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:global
-l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:global
-l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:global
+l_bmdIdx = .rodata:0x00000004; // type:object size:0x34 scope:local
+l_dzbIdx = .rodata:0x00000038; // type:object size:0x34 scope:local
+l_btkIdx = .rodata:0x0000006C; // type:object size:0x34 scope:local
+l_brkIdx = .rodata:0x000000A0; // type:object size:0x34 scope:local
+l_twFlagIdx = .rodata:0x000000D4; // type:object size:0x34 scope:local
+l_cheeckPos0 = .rodata:0x00000108; // type:object size:0x9C scope:local
+l_cheeckPos1 = .rodata:0x000001A4; // type:object size:0x9C scope:local
@89977 = .rodata:0x00000240; // type:object size:0x4 scope:local
@90028 = .rodata:0x00000244; // type:object size:0x4 scope:local
@90091 = .rodata:0x00000248; // type:object size:0x4 scope:local
@@ -41,8 +41,8 @@ lbl_672_data_31 = .data:0x00000031; // type:object size:0xA data:string
lbl_672_data_3B = .data:0x0000003B; // type:object size:0xA data:string
lbl_672_data_45 = .data:0x00000045; // type:object size:0xA data:string
lbl_672_data_4F = .data:0x0000004F; // type:object size:0xD
-l_resNameIdx = .data:0x0000005C; // type:object size:0x34 scope:global
-l_daTwGate_Method = .data:0x00000090; // type:object size:0x20 scope:global
+l_resNameIdx = .data:0x0000005C; // type:object size:0x34 scope:local
+l_daTwGate_Method = .data:0x00000090; // type:object size:0x20 scope:local
g_profile_Obj_TwGate = .data:0x000000B0; // type:object size:0x30 scope:global
__vt__14daTwGate_HIO_c = .data:0x000000E0; // type:object size:0xC scope:global
lbl_672_data_EC = .data:0x000000EC; // type:object size:0x10
@@ -54,4 +54,4 @@ lbl_672_data_148 = .data:0x00000148; // type:object size:0xC
__RTTI__10daTwGate_c = .data:0x00000168; // type:object size:0x8 scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@88985 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global align:4 data:float
+l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local align:4 data:float
diff --git a/config/RZDE01_00/rels/d_a_obj_volcbom/symbols.txt b/config/RZDE01_00/rels/d_a_obj_volcbom/symbols.txt
index cc2c6ac828..ec531c44a8 100644
--- a/config/RZDE01_00/rels/d_a_obj_volcbom/symbols.txt
+++ b/config/RZDE01_00/rels/d_a_obj_volcbom/symbols.txt
@@ -39,18 +39,18 @@ demoProc__14daObjVolcBom_cFv = .text:0x000019BC; // type:function size:0x408 sco
calcObjPos__14daObjVolcBom_cFv = .text:0x00001DC4; // type:function size:0x7C scope:global
Draw__14daObjVolcBom_cFv = .text:0x00001E40; // type:function size:0x204 scope:global
Delete__14daObjVolcBom_cFv = .text:0x00002044; // type:function size:0x74 scope:global
-daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x000020B8; // type:function size:0x104 scope:global
-daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x000021BC; // type:function size:0x4 scope:global
-daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x000021C0; // type:function size:0x4 scope:global
-daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x000021C4; // type:function size:0x10 scope:global
+daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x000020B8; // type:function size:0x104 scope:local
+daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x000021BC; // type:function size:0x4 scope:local
+daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x000021C0; // type:function size:0x4 scope:local
+daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x000021C4; // type:function size:0x10 scope:local
entry__13mDoExt_btkAnmFP12J3DModelData = .text:0x000021D4; // type:function size:0xC scope:global
entry__13mDoExt_brkAnmFP12J3DModelData = .text:0x000021E0; // type:function size:0xC scope:global
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
-l_disapp_eff = .rodata:0x00000000; // type:object size:0x2 scope:global
-l_start_eff = .rodata:0x00000002; // type:object size:0x6 scope:global
-l_bind_eff = .rodata:0x00000008; // type:object size:0x8 scope:global
+l_disapp_eff = .rodata:0x00000000; // type:object size:0x2 scope:local
+l_start_eff = .rodata:0x00000002; // type:object size:0x6 scope:local
+l_bind_eff = .rodata:0x00000008; // type:object size:0x8 scope:local
@96867 = .rodata:0x00000010; // type:object size:0x4 scope:local align:4 data:float
@96868 = .rodata:0x00000014; // type:object size:0x4 scope:local
@96869 = .rodata:0x00000018; // type:object size:0x4 scope:local
@@ -78,12 +78,12 @@ l_effect_id$94323 = .rodata:0x00000074; // type:object size:0xE scope:local
@97547 = .rodata:0x000000B0; // type:object size:0x4 scope:local
@97608 = .rodata:0x000000B4; // type:object size:0x4 scope:local
lbl_677_data_0 = .data:0x00000000; // type:object size:0xC data:4byte
-l_arcName = .data:0x0000000C; // type:object size:0x4 scope:global data:4byte
+l_arcName = .data:0x0000000C; // type:object size:0x4 scope:local data:4byte
lbl_677_data_10 = .data:0x00000010; // type:object size:0x14 data:string
-l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:global
+l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:local
lbl_677_data_28 = .data:0x00000028; // type:object size:0x8 data:string
-l_staff_name = .data:0x00000030; // type:object size:0x4 scope:global data:4byte
-l_cyl_src = .data:0x00000034; // type:object size:0x44 scope:global
+l_staff_name = .data:0x00000030; // type:object size:0x4 scope:local data:4byte
+l_cyl_src = .data:0x00000034; // type:object size:0x44 scope:local
lbl_677_data_78 = .data:0x00000078; // type:object size:0xC
l_func$94537 = .data:0x00000084; // type:object size:0x48 scope:local
lbl_677_data_CC = .data:0x000000CC; // type:object size:0x14 data:string
@@ -93,7 +93,7 @@ lbl_677_data_E9 = .data:0x000000E9; // type:object size:0x5 data:string
lbl_677_data_EE = .data:0x000000EE; // type:object size:0x6
action_table$94648 = .data:0x000000F4; // type:object size:0x10 scope:local
lbl_677_data_104 = .data:0x00000104; // type:object size:0x8
-daObjVolcBom_METHODS = .data:0x0000010C; // type:object size:0x20 scope:global
+daObjVolcBom_METHODS = .data:0x0000010C; // type:object size:0x20 scope:local
g_profile_Obj_VolcanicBomb = .data:0x0000012C; // type:object size:0x30 scope:global
__vt__14daObjVolcBom_c = .data:0x0000015C; // type:object size:0x28 scope:global
lbl_677_data_184 = .data:0x00000184; // type:object size:0x10
diff --git a/config/ShieldD/rels/d_a_obj_twGateD/symbols.txt b/config/ShieldD/rels/d_a_obj_twGateD/symbols.txt
index c3ecede37e..bc25a2170b 100644
--- a/config/ShieldD/rels/d_a_obj_twGateD/symbols.txt
+++ b/config/ShieldD/rels/d_a_obj_twGateD/symbols.txt
@@ -13,10 +13,10 @@ __ct__10daTwGate_cFv = .text:0x00000630; // type:function size:0x58 scope:global
Execute__10daTwGate_cFPPA3_A4_f = .text:0x00000690; // type:function size:0x140 scope:global
Draw__10daTwGate_cFv = .text:0x000007D0; // type:function size:0x94 scope:global
Delete__10daTwGate_cFv = .text:0x00000870; // type:function size:0x58 scope:global
-daTwGate_Draw__FP10daTwGate_c = .text:0x000008D0; // type:function size:0x28 scope:global
-daTwGate_Execute__FP10daTwGate_c = .text:0x00000900; // type:function size:0x28 scope:global
-daTwGate_Delete__FP10daTwGate_c = .text:0x00000930; // type:function size:0x44 scope:global
-daTwGate_Create__FP10fopAc_ac_c = .text:0x00000980; // type:function size:0x50 scope:global
+daTwGate_Draw__FP10daTwGate_c = .text:0x000008D0; // type:function size:0x28 scope:local
+daTwGate_Execute__FP10daTwGate_c = .text:0x00000900; // type:function size:0x28 scope:local
+daTwGate_Delete__FP10daTwGate_c = .text:0x00000930; // type:function size:0x44 scope:local
+daTwGate_Create__FP10fopAc_ac_c = .text:0x00000980; // type:function size:0x50 scope:local
__dt__14daTwGate_HIO_cFv = .text:0x000009D0; // type:function size:0x5C scope:global
__sinit_\d_a_obj_twGate_cpp = .text:0x00000A30; // type:function size:0x44 scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
@@ -26,13 +26,13 @@ _dtors = .dtors:0x00000000; // type:label scope:global
@114197 = .rodata:0x00000000; // type:object size:0x4 scope:local
@114211 = .rodata:0x00000004; // type:object size:0x4 scope:local align:4 data:float
@114212 = .rodata:0x00000008; // type:object size:0x4 scope:local align:4 data:float
-l_bmdIdx = .rodata:0x0000000C; // type:object size:0x34 scope:global
-l_dzbIdx = .rodata:0x00000040; // type:object size:0x34 scope:global
-l_btkIdx = .rodata:0x00000074; // type:object size:0x34 scope:global
-l_brkIdx = .rodata:0x000000A8; // type:object size:0x34 scope:global
-l_twFlagIdx = .rodata:0x000000DC; // type:object size:0x34 scope:global
-l_cheeckPos0 = .rodata:0x00000110; // type:object size:0x9C scope:global
-l_cheeckPos1 = .rodata:0x000001AC; // type:object size:0x9C scope:global
+l_bmdIdx = .rodata:0x0000000C; // type:object size:0x34 scope:local
+l_dzbIdx = .rodata:0x00000040; // type:object size:0x34 scope:local
+l_btkIdx = .rodata:0x00000074; // type:object size:0x34 scope:local
+l_brkIdx = .rodata:0x000000A8; // type:object size:0x34 scope:local
+l_twFlagIdx = .rodata:0x000000DC; // type:object size:0x34 scope:local
+l_cheeckPos0 = .rodata:0x00000110; // type:object size:0x9C scope:local
+l_cheeckPos1 = .rodata:0x000001AC; // type:object size:0x9C scope:local
@114255 = .rodata:0x00000248; // type:object size:0x4 scope:local
@114294 = .rodata:0x0000024C; // type:object size:0x4 scope:local
cNullVec__6Z2Calc = .rodata:0x00000250; // type:object size:0xC scope:global
@@ -49,7 +49,7 @@ lbl_662_rodata_260 = .rodata:0x00000260; // type:object size:0x14
@114222 = .data:0x00000054; // type:object size:0xA scope:local data:string
@114223 = .data:0x00000060; // type:object size:0xA scope:local data:string
@114224 = .data:0x0000006C; // type:object size:0xA scope:local data:string
-l_resNameIdx = .data:0x00000078; // type:object size:0x34 scope:global
+l_resNameIdx = .data:0x00000078; // type:object size:0x34 scope:local
@114252 = .data:0x000000AC; // type:object size:0x13 scope:local data:string
@114253 = .data:0x000000C0; // type:object size:0xF scope:local data:string
@114254 = .data:0x000000D0; // type:object size:0x5 scope:local data:string
@@ -58,7 +58,7 @@ l_resNameIdx = .data:0x00000078; // type:object size:0x34 scope:global
@114295 = .data:0x00000118; // type:object size:0x13 scope:local
@114442 = .data:0x0000012C; // type:object size:0x1B scope:local data:string
@114458 = .data:0x00000148; // type:object size:0x1B scope:local data:string
-l_daTwGate_Method = .data:0x00000168; // type:object size:0x20 scope:global
+l_daTwGate_Method = .data:0x00000168; // type:object size:0x20 scope:local
g_profile_Obj_TwGate = .data:0x00000188; // type:object size:0x30 scope:global
__vt__14daTwGate_HIO_c = .data:0x000001B8; // type:object size:0x20 scope:global
@114460 = .data:0x000001D8; // type:object size:0xF scope:local data:string
@@ -83,4 +83,4 @@ __RTTI__10daTwGate_c = .data:0x00000260; // type:object size:0x8 scope:global
lbl_662_data_3B1 = .data:0x000003B1; // type:object size:0x7F
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@114190 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000014; // type:object size:0xC scope:global align:4 data:float
+l_HIO = .bss:0x00000014; // type:object size:0xC scope:local align:4 data:float
diff --git a/config/ShieldD/rels/d_a_obj_volcbomD/symbols.txt b/config/ShieldD/rels/d_a_obj_volcbomD/symbols.txt
index 0cf4b206af..14efa0adcf 100644
--- a/config/ShieldD/rels/d_a_obj_volcbomD/symbols.txt
+++ b/config/ShieldD/rels/d_a_obj_volcbomD/symbols.txt
@@ -62,21 +62,21 @@ calcObjPos__14daObjVolcBom_cFv = .text:0x00002C60; // type:function size:0xBC sc
Draw__14daObjVolcBom_cFv = .text:0x00002D20; // type:function size:0x258 scope:global
mDoExt_bckAnmRemove__FP12J3DModelData = .text:0x00002F80; // type:function size:0x38 scope:global
Delete__14daObjVolcBom_cFv = .text:0x00002FC0; // type:function size:0x9C scope:global
-daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00003060; // type:function size:0x7C scope:global
+daObjVolcBom_create1st__FP14daObjVolcBom_c = .text:0x00003060; // type:function size:0x7C scope:local
__ct__14daObjVolcBom_cFv = .text:0x000030E0; // type:function size:0x88 scope:global
-daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00003170; // type:function size:0x28 scope:global
-daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x000031A0; // type:function size:0x28 scope:global
-daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x000031D0; // type:function size:0x28 scope:global
+daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c = .text:0x00003170; // type:function size:0x28 scope:local
+daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c = .text:0x000031A0; // type:function size:0x28 scope:local
+daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c = .text:0x000031D0; // type:function size:0x28 scope:local
__dt__18daObjVolcBom_HIO_cFv = .text:0x00003200; // type:function size:0x6C scope:global
__sinit_\d_a_obj_volcbom_cpp = .text:0x00003270; // type:function size:0x44 scope:local
_ctors = .ctors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
-l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:global
-l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:global
-l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:global
-l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:global
+l_midna_offset = .rodata:0x00000000; // type:object size:0xC scope:local
+l_disapp_eff = .rodata:0x0000000C; // type:object size:0x2 scope:local
+l_start_eff = .rodata:0x00000010; // type:object size:0x6 scope:local
+l_bind_eff = .rodata:0x00000018; // type:object size:0x8 scope:local
@119031 = .rodata:0x00000020; // type:object size:0x4 scope:local align:4 data:float
@119032 = .rodata:0x00000024; // type:object size:0x4 scope:local
@119048 = .rodata:0x00000028; // type:object size:0x4 scope:local align:4 data:float
@@ -110,12 +110,12 @@ cNullVec__6Z2Calc = .rodata:0x000000D4; // type:object size:0xC scope:global
@46916 = .rodata:0x000000E0; // type:object size:0x4 scope:local
lbl_667_rodata_E4 = .rodata:0x000000E4; // type:object size:0x18
@119014 = .data:0x00000000; // type:object size:0xA scope:local data:string
-l_arcName = .data:0x0000000C; // type:object size:0x4 scope:global data:4byte
+l_arcName = .data:0x0000000C; // type:object size:0x4 scope:local data:4byte
@119015 = .data:0x00000010; // type:object size:0x14 scope:local data:string
-l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:global
+l_portal_warp_name = .data:0x00000024; // type:object size:0x4 scope:local
@119016 = .data:0x00000028; // type:object size:0x8 scope:local data:string
-l_staff_name = .data:0x00000030; // type:object size:0x4 scope:global data:4byte
-l_cyl_src = .data:0x00000034; // type:object size:0x44 scope:global
+l_staff_name = .data:0x00000030; // type:object size:0x4 scope:local data:4byte
+l_cyl_src = .data:0x00000034; // type:object size:0x44 scope:local
@119045 = .data:0x00000078; // type:object size:0x9 scope:local
@119046 = .data:0x00000084; // type:object size:0x9 scope:local
@119047 = .data:0x00000090; // type:object size:0xF scope:local
@@ -152,7 +152,7 @@ l_cyl_src = .data:0x00000034; // type:object size:0x44 scope:global
@LOCAL@demoProc__14daObjVolcBom_cFv@action_table = .data:0x000002E8; // type:object size:0x10 scope:local
@119785 = .data:0x000002F8; // type:object size:0x6 scope:local data:string
@119787 = .data:0x00000300; // type:object size:0x16 scope:local
-daObjVolcBom_METHODS = .data:0x00000318; // type:object size:0x20 scope:global
+daObjVolcBom_METHODS = .data:0x00000318; // type:object size:0x20 scope:local
g_profile_Obj_VolcanicBomb = .data:0x00000338; // type:object size:0x30 scope:global
__vt__18daObjVolcBom_HIO_c = .data:0x00000368; // type:object size:0x20 scope:global
@119991 = .data:0x00000388; // type:object size:0x13 scope:local data:string
@@ -190,4 +190,4 @@ lbl_667_data_438 = .data:0x00000438; // type:object size:0x2C
lbl_667_data_6C1 = .data:0x000006C1; // type:object size:0xBB
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@119025 = .bss:0x00000008; // type:object size:0xC scope:local
-l_HIO = .bss:0x00000018; // type:object size:0x38 scope:global data:byte
+l_HIO = .bss:0x00000018; // type:object size:0x38 scope:local data:byte
diff --git a/config/ShieldD/rels/d_a_obj_web1D/symbols.txt b/config/ShieldD/rels/d_a_obj_web1D/symbols.txt
index 2a5d5e9c4d..1d351fb11c 100644
--- a/config/ShieldD/rels/d_a_obj_web1D/symbols.txt
+++ b/config/ShieldD/rels/d_a_obj_web1D/symbols.txt
@@ -69,5 +69,5 @@ __RTTI__16daObj_Web1_HIO_c = .data:0x00000220; // type:object size:0x8 scope:glo
@117165 = .data:0x0000029C; // type:object size:0x11 scope:local data:string
@117166 = .data:0x000002C4; // type:object size:0xD scope:local data:string
lbl_676_data_2D1 = .data:0x000002D1; // type:object size:0x13
-lbl_676_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
+init$1712 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte
l_HIO = .bss:0x00000008; // type:object size:0x8 scope:global data:byte
diff --git a/configure.py b/configure.py
index 596e893c6b..5c1ed01301 100755
--- a/configure.py
+++ b/configure.py
@@ -2148,12 +2148,12 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_tornado2"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_tp"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_treesh"),
- ActorRel(NonMatching, "d_a_obj_twGate"),
+ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_twGate"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_udoor"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_usaku"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_vground"),
ActorRel(NonMatching, "d_a_obj_volcball"),
- ActorRel(NonMatching, "d_a_obj_volcbom"),
+ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_volcbom"),
ActorRel(NonMatching, "d_a_obj_warp_kbrg"),
ActorRel(NonMatching, "d_a_obj_warp_obrg"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_waterGate"),
diff --git a/include/d/actor/d_a_e_bu.h b/include/d/actor/d_a_e_bu.h
index 8ec8f9a9a5..639ab6c7a9 100644
--- a/include/d/actor/d_a_e_bu.h
+++ b/include/d/actor/d_a_e_bu.h
@@ -67,11 +67,13 @@ public:
STATIC_ASSERT(sizeof(e_bu_class) == 0xaa4);
-class daE_BU_HIO_c {
+class daE_BU_HIO_c : public JORReflexible {
public:
/* 806911AC */ daE_BU_HIO_c();
/* 806941D4 */ virtual ~daE_BU_HIO_c() {}
+ void genMessage(JORMContext* ctx);
+
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 fly_speed;
diff --git a/include/d/actor/d_a_e_zh.h b/include/d/actor/d_a_e_zh.h
index 6bcbb6524a..9ddb99f390 100644
--- a/include/d/actor/d_a_e_zh.h
+++ b/include/d/actor/d_a_e_zh.h
@@ -118,6 +118,8 @@ public:
/* 8082902C */ daE_ZH_HIO_c();
/* 8082F160 */ virtual ~daE_ZH_HIO_c() {}
+ void genMessage(JORMContext* ctx);
+
// ボールマスター (Ball Master)
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size; // モデルサイズ (Model Size)
diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h
index 8e2fef4509..5f57975630 100644
--- a/include/d/actor/d_a_midna.h
+++ b/include/d/actor/d_a_midna.h
@@ -136,6 +136,7 @@ public:
FLG0_UNK_4 = 4,
FLG0_UNK_2 = 2,
FLG0_UNK_1 = 1,
+ FLG0_TAG_PORTAL = FLG0_TAG_WAIT | FLG0_PORTAL_OBJ_CALL,
};
enum daMidna_FLG1 {
@@ -298,6 +299,11 @@ public:
onEndResetStateFlg0(ERFLG0_UNK_2);
}
+ void onTagWaitPosPortalObj(const cXyz& i_pos) {
+ mTagWaitPos = i_pos;
+ onStateFlg0(FLG0_TAG_PORTAL);
+ }
+
void onTagWaitPos(const cXyz* param_0) {
mTagWaitPos = *param_0;
onStateFlg0(FLG0_TAG_WAIT);
diff --git a/include/d/actor/d_a_obj_twGate.h b/include/d/actor/d_a_obj_twGate.h
index 36a79741a1..56ad450466 100644
--- a/include/d/actor/d_a_obj_twGate.h
+++ b/include/d/actor/d_a_obj_twGate.h
@@ -2,6 +2,7 @@
#define D_A_OBJ_TWGATE_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,24 +12,36 @@
* @details
*
*/
-class daTwGate_c : public fopAc_ac_c {
+class daTwGate_c : public dBgS_MoveBgActor {
public:
/* 80D1FB84 */ void setBaseMtx();
- /* 80D1FC0C */ void CreateHeap();
- /* 80D1FD44 */ void create();
- /* 80D1FFA4 */ void Execute(f32 (**)[3][4]);
- /* 80D200B4 */ void Draw();
- /* 80D20180 */ void Delete();
+ /* 80D1FC0C */ int CreateHeap();
+ /* 80D1FD44 */ int create();
+ /* 80D1FFA4 */ int Execute(Mtx**);
+ /* 80D200B4 */ int Draw();
+ /* 80D20180 */ int Delete();
+
+ int getGateType() { return fopAcM_GetParamBit(this, 4, 8); }
+
private:
- /* 0x568 */ u8 field_0x568[0x5fc - 0x568];
+ /* 0x5A0 */ request_of_phase_process_class mPhase;
+ /* 0x5A8 */ J3DModel* mModel;
+ /* 0x5AC */ mDoExt_btkAnm mBtk;
+ /* 0x5C4 */ mDoExt_brkAnm mBrk;
+ /* 0x5DC */ u8 mGateType;
+ /* 0x5E0 */ cM3dGLin mLine;
};
STATIC_ASSERT(sizeof(daTwGate_c) == 0x5fc);
-class daTwGate_HIO_c {
+class daTwGate_HIO_c : public fOpAcm_HIO_entry_c {
public:
/* 80D1FAAC */ daTwGate_HIO_c();
- /* 80D2024C */ ~daTwGate_HIO_c();
+ /* 80D2024C */ ~daTwGate_HIO_c() {}
+
+ void genMessage(JORMContext* ctx);
+
+ /* 0x4 */ f32 mRange;
};
#endif /* D_A_OBJ_TWGATE_H */
diff --git a/include/d/actor/d_a_obj_volcbom.h b/include/d/actor/d_a_obj_volcbom.h
index f79dd3d893..3b8f512440 100644
--- a/include/d/actor/d_a_obj_volcbom.h
+++ b/include/d/actor/d_a_obj_volcbom.h
@@ -1,6 +1,10 @@
#ifndef D_A_OBJ_VOLCBOM_H
#define D_A_OBJ_VOLCBOM_H
+#include "d/d_bg_s_acch.h"
+#include "d/d_bg_s_movebg_actor.h"
+#include "d/d_cc_d.h"
+#include "d/d_msg_flow.h"
#include "f_op/f_op_actor_mng.h"
/**
@@ -11,14 +15,33 @@
* @details
*
*/
-class daObjVolcBom_c : public fopAc_ac_c {
+class daObjVolcBom_c : public dBgS_MoveBgActor {
public:
+ typedef void (daObjVolcBom_c::*modeFunc)();
+ typedef void (daObjVolcBom_c::*actionFunc)();
+
+ enum Mode {
+ MODE_WAIT_APPEAR,
+ MODE_FALL,
+ MODE_WAIT_END_FALL_DEMO,
+ MODE_WAIT,
+ };
+
+ enum Action {
+ ACTION_WAIT,
+ ACTION_ORDER_EVENT,
+ ACTION_TALK_EVENT,
+ ACTION_WARP_EVENT,
+ ACTION_ORDER_A_TALK_EVENT,
+ ACTION_DEAD,
+ };
+
/* 80D241E0 */ void initBaseMtx();
/* 80D24238 */ void setBaseMtx();
- /* 80D242A8 */ void Create();
- /* 80D244E0 */ void CreateHeap();
- /* 80D248F4 */ void create1st();
- /* 80D249D0 */ void Execute(f32 (**)[3][4]);
+ /* 80D242A8 */ int Create();
+ /* 80D244E0 */ int CreateHeap();
+ /* 80D248F4 */ int create1st();
+ /* 80D249D0 */ int Execute(Mtx**);
/* 80D24A2C */ void mode_proc_call();
/* 80D24B18 */ void init_modeWaitAppear();
/* 80D24B6C */ void modeWaitAppear();
@@ -33,7 +56,7 @@ public:
/* 80D25224 */ void appear();
/* 80D25230 */ void disappear();
/* 80D2523C */ void setSmoke();
- /* 80D252C8 */ void checkTalkDistance();
+ /* 80D252C8 */ bool checkTalkDistance();
/* 80D25364 */ void calcMidnaWaitPos();
/* 80D253FC */ void setSrcEffect();
/* 80D25528 */ void setBindEffect();
@@ -51,20 +74,82 @@ public:
/* 80D25EE4 */ void actionDead();
/* 80D25EE8 */ void demoProc();
/* 80D26468 */ void calcObjPos();
- /* 80D264E8 */ void Draw();
- /* 80D266FC */ void Delete();
+ /* 80D264E8 */ int Draw();
+ /* 80D266FC */ int Delete();
void startFall() { field_0x95f = 1; }
void startSearch() { field_0x960 = 1; }
+ void setAction(u8 action) { mAction = action; }
+ u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
+ u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); }
+ u16 getMsgID() { return mMsgID; }
private:
- /* 0x568 */ u8 field_0x568[0x95F - 0x568];
+ /* 0x5A0 */ request_of_phase_process_class mPhase;
+ /* 0x5A8 */ J3DModel* mModel1;
+ /* 0x5AC */ mDoExt_btkAnm* mBtk1;
+ /* 0x5B0 */ mDoExt_brkAnm* mBrk1;
+ /* 0x5B4 */ mDoExt_bckAnm* mBck1;
+ /* 0x5B8 */ J3DModel* mModel2;
+ /* 0x5BC */ mDoExt_btkAnm* mBtk2;
+ /* 0x5C0 */ mDoExt_brkAnm* mBrk2;
+ /* 0x5C4 */ JPABaseEmitter* mSmokeEmitter;
+ /* 0x5C8 */ u8 mSmokeTimer;
+ /* 0x5C9 */ bool field_0x5c9;
+ /* 0x5CA */ u8 mAction;
+ /* 0x5CB */ bool field_0x5cb;
+ /* 0x5CC */ dBgS_ObjAcch mAcch;
+ /* 0x7A4 */ dBgS_AcchCir mAcchCir;
+ /* 0x7E4 */ dCcD_Stts mStts;
+ /* 0x820 */ dCcD_Cyl mCyl;
+ /* 0x95C */ u8 mDemoTimer;
+ /* 0x95D */ u8 mWaitAppearState;
+ /* 0x95E */ bool field_0x95e;
/* 0x95F */ u8 field_0x95f;
- /* 0x960 */ u8 field_0x960;
- /* 0x961 */ u8 field_0x961[0xA1C - 0x961];
+ /* 0x960 */ bool field_0x960;
+ /* 0x961 */ u8 mMode;
+ /* 0x962 */ bool misAppearing;
+ /* 0x963 */ bool mIsMsgIDInit;
+ /* 0x964 */ u16 mMsgID;
+ /* 0x968 */ cXyz mLightPosWorld;
+ /* 0x974 */ u32 mShadowID;
+ /* 0x978 */ f32 field_0x978;
+ /* 0x97C */ f32 mBaseScale;
+ /* 0x980 */ cXyz mWarpSEPos;
+ /* 0x98C */ cXyz mWaitSEPos;
+ /* 0x998 */ cXyz mMidnaWaitPos;
+ /* 0x9A4 */ dMsgFlow_c mMsgFlow;
+ /* 0x9F0 */ s16 mEventId;
+ /* 0x9F4 */ int mStaffId;
+ /* 0x9F8 */ JPABaseEmitter* mStartEmitters[3];
+ /* 0xA04 */ JPABaseEmitter* mDisappearEmitters[1];
+ /* 0xA08 */ JPABaseEmitter* mBindEmitters[4];
+ /* 0xA18 */ u16 mEffectJntNo;
+ /* 0xA1A */ bool field_0xa1a;
+ /* 0xA1B */ u8 mNaviTimer;
};
STATIC_ASSERT(sizeof(daObjVolcBom_c) == 0xa1c);
+#ifdef DEBUG
+class daObjVolcBom_HIO_c : public mDoHIO_entry_c {
+public:
+ daObjVolcBom_HIO_c();
+ void genMessage(JORMContext* ctx);
+
+ /* 0x04 */ u8 field_0x04;
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ u8 field_0x0c[0x14 - 0x0c];
+ /* 0x14 */ u8 field_0x14;
+ /* 0x15 */ u8 field_0x15;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ u8 field_0x28[0x34 - 0x28];
+ /* 0x34 */ u8 field_0x34;
+};
+#endif
+
#endif /* D_A_OBJ_VOLCBOM_H */
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index e970e61617..b3c6e716f1 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -437,7 +437,7 @@ public:
FLG3_COPY_ROD_ATN_KEEP = 0x10000000,
FLG3_BOOMERANG_ATN_KEEP = 0x8000000,
FLG3_UNK_4000000 = 0x4000000,
- FLG3_UNK_2000000 = 0x2000000,
+ FLG3_WARP_OBJ_DEMO = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
FLG3_UNK_800000 = 0x800000,
FLG3_UNK_400000 = 0x400000,
@@ -963,6 +963,7 @@ public:
}
}
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
+ void onWarpObjDemo() { onNoResetFlg3(FLG3_WARP_OBJ_DEMO); }
void offCargoCarry() {
if (checkCargoCarry()) {
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 71a9c43873..c15edc9348 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -3517,6 +3517,10 @@ inline BOOL dComIfGp_evmng_startCheck(char const* i_event) {
return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_event);
}
+inline BOOL dComIfGp_evmng_startCheck(s16 i_eventId) {
+ return g_dComIfG_gameInfo.play.getEvtManager().startCheck(i_eventId);
+}
+
inline BOOL dComIfGp_evmng_endCheck(const char* event) {
return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event);
}
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index ea2854dee6..8995430969 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -88,6 +88,18 @@ struct fopAcM_search_prm {
struct fOpAcm_HIO_entry_c : public mDoHIO_entry_c {
virtual ~fOpAcm_HIO_entry_c() {}
+
+ #ifdef DEBUG
+ void removeHIO(const fopAc_ac_c* i_this) { removeHIO(*i_this); }
+ void removeHIO(const fopAc_ac_c& i_this) { removeHIO(static_cast<const leafdraw_class&>(i_this)); }
+ void removeHIO(const leafdraw_class& i_this) { removeHIO(i_this.base); }
+ void removeHIO(const base_process_class& i_this) { removeHIO(i_this.state); }
+ void removeHIO(const state_class& state) {
+ if (state.create_phase == cPhs_NEXT_e) {
+ mDoHIO_entry_c::removeHIO();
+ }
+ }
+ #endif
};
class l_HIO {
diff --git a/include/f_pc/f_pc_base.h b/include/f_pc/f_pc_base.h
index 10f9041783..896e7a9c9d 100644
--- a/include/f_pc/f_pc_base.h
+++ b/include/f_pc/f_pc_base.h
@@ -14,14 +14,18 @@ typedef struct process_method_class process_method_class;
typedef struct process_profile_definition process_profile_definition;
typedef struct profile_method_class profile_method_class;
+typedef struct state_class {
+ /* 0x00 */ s8 init_state; // maybe inaccurate name
+ /* 0x01 */ u8 create_phase;
+} state_class;
+
typedef struct base_process_class {
/* 0x00 */ int type;
/* 0x04 */ fpc_ProcID id;
/* 0x08 */ s16 name;
/* 0x0A */ s8 unk_0xA;
/* 0x0B */ u8 pause_flag;
- /* 0x0C */ s8 init_state; // maybe inaccurate name
- /* 0x0D */ u8 create_phase;
+ /* 0x0C */ state_class state;
/* 0x0E */ s16 profname;
/* 0x10 */ process_profile_definition* profile;
/* 0x14 */ struct create_request* create_req;
diff --git a/include/f_pc/f_pc_manager.h b/include/f_pc/f_pc_manager.h
index a9ac53dff6..2150558827 100644
--- a/include/f_pc/f_pc_manager.h
+++ b/include/f_pc/f_pc_manager.h
@@ -54,7 +54,7 @@ inline BOOL fpcM_IsJustType(int i_typeA, int i_typeB) {
}
inline bool fpcM_IsFirstCreating(void* i_process) {
- return ((base_process_class*)i_process)->init_state == 0;
+ return ((base_process_class*)i_process)->state.init_state == 0;
}
inline process_profile_definition* fpcM_GetProfile(void* i_process) {
diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc
index f62a2e24a6..232e8417b0 100644
--- a/src/d/actor/d_a_alink_demo.inc
+++ b/src/d/actor/d_a_alink_demo.inc
@@ -4229,7 +4229,7 @@ void daAlink_c::skipPortalObjWarp() {
return;
}
- if (checkNoResetFlg3(FLG3_UNK_2000000) &&
+ if (checkNoResetFlg3(FLG3_WARP_OBJ_DEMO) &&
(dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check()))
{
dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(this), shape_angle.y, -1);
diff --git a/src/d/actor/d_a_e_zh.cpp b/src/d/actor/d_a_e_zh.cpp
index 3bbd0249ce..7536a0e1e1 100644
--- a/src/d/actor/d_a_e_zh.cpp
+++ b/src/d/actor/d_a_e_zh.cpp
@@ -1201,7 +1201,7 @@ void daE_ZH_c::executeBgHitSHMove() {
if (NREG_S(0) != 0) {
OS_REPORT("mRetrunStartLine.x %f\n", mRetrunStartLine.x);
- OS_REPORT("mRetrunEndLine.x %f\n". mRetrunEndLine.x);
+ OS_REPORT("mRetrunEndLine.x %f\n", mRetrunEndLine.x);
OS_REPORT("mRetrunStartLine.z %f\n", mRetrunStartLine.z);
OS_REPORT("mRetrunEndLine.z %f\n", mRetrunEndLine.z);
OS_REPORT("\n");
diff --git a/src/d/actor/d_a_npc_jagar.cpp b/src/d/actor/d_a_npc_jagar.cpp
index 298bde6847..322f56ad6a 100644
--- a/src/d/actor/d_a_npc_jagar.cpp
+++ b/src/d/actor/d_a_npc_jagar.cpp
@@ -1314,7 +1314,7 @@ int daNpc_Jagar_c::wait(void* param_0) {
if (chkSitMotion() || field_0x1002 != 0) {
if (!daNpcT_chkEvtBit(0x235) && !daNpcT_chkEvtBit(0x87) &&
daNpcT_chkTmpBit(0x10)) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0 ? 1 : 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 ? 1 : 0) {
mEvtNo = 3;
}
}
diff --git a/src/d/actor/d_a_npc_maro.cpp b/src/d/actor/d_a_npc_maro.cpp
index 32636a2749..a5ec3bb04b 100644
--- a/src/d/actor/d_a_npc_maro.cpp
+++ b/src/d/actor/d_a_npc_maro.cpp
@@ -3316,7 +3316,7 @@ int daNpc_Maro_c::arrowTutorial(void* ) {
field_0xe33 = 1;
} else {
actor_p = (daTag_EvtArea_c*) mActorMngr[6].getActorP();
- if (actor_p != NULL && !(daPy_getPlayerActorClass()->eventInfo.chkCondition(1) == 0)) {
+ if (actor_p != NULL && !(daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) == 0)) {
if (actor_p->chkPointInArea(daPy_getPlayerActorClass()->current.pos) == 0) {
mEvtNo = 9;
}
diff --git a/src/d/actor/d_a_npc_moi.cpp b/src/d/actor/d_a_npc_moi.cpp
index 58f97dc157..aa235df6f0 100644
--- a/src/d/actor/d_a_npc_moi.cpp
+++ b/src/d/actor/d_a_npc_moi.cpp
@@ -1894,7 +1894,7 @@ int daNpc_Moi_c::walkOnEggshell(void* param_1) {
if (field_0x1658) {
field_0x1658 = injuryCheck();
if (field_0x1658) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
f32 fVar = daPy_getPlayerActorClass()->attention_info.position.absXZ(
attention_info.position);
}
diff --git a/src/d/actor/d_a_npc_uri.cpp b/src/d/actor/d_a_npc_uri.cpp
index 868c212cce..43d0cf7fed 100644
--- a/src/d/actor/d_a_npc_uri.cpp
+++ b/src/d/actor/d_a_npc_uri.cpp
@@ -1491,7 +1491,7 @@ int daNpc_Uri_c::wait(void* param_0) {
if (chkPointInArea(acStack_70, attention_info.position, 200.0f, fVar2, fVar3,
0))
{
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0 &&
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 &&
chkPlayerCarryBasket())
{
mEvtNo = 5;
@@ -1511,7 +1511,7 @@ int daNpc_Uri_c::wait(void* param_0) {
daNpc_Uri_Param_c::m.field_0x5c, mCurAngle.y))
{
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(1) != 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
if (chkActorInSight(daPy_getPlayerActorClass(), mAttnFovY,
home.angle.y))
{
diff --git a/src/d/actor/d_a_obj_amiShutter.cpp b/src/d/actor/d_a_obj_amiShutter.cpp
index 260ac60e7b..9e7dc7a1a8 100644
--- a/src/d/actor/d_a_obj_amiShutter.cpp
+++ b/src/d/actor/d_a_obj_amiShutter.cpp
@@ -8,12 +8,6 @@
#include "c/c_damagereaction.h"
#include "d/d_bg_w.h"
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-
UNK_REL_DATA
/* 80BA14CC-80BA1514 0000EC 0048+00 1/1 0/0 0/0 .text __ct__18daAmiShutter_HIO_cFv */
diff --git a/src/d/actor/d_a_obj_lv6bemos.cpp b/src/d/actor/d_a_obj_lv6bemos.cpp
index 37d25ae277..7a08fb9956 100644
--- a/src/d/actor/d_a_obj_lv6bemos.cpp
+++ b/src/d/actor/d_a_obj_lv6bemos.cpp
@@ -194,7 +194,7 @@ int daObjL6Bm_c::CreateHeap() {
}
#ifdef DEBUG
- pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_0FF);
+ pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_OFF);
JUT_ASSERT(660, pbtk != 0);
#endif
diff --git a/src/d/actor/d_a_obj_togeTrap.cpp b/src/d/actor/d_a_obj_togeTrap.cpp
index cae00fa615..546864d89e 100644
--- a/src/d/actor/d_a_obj_togeTrap.cpp
+++ b/src/d/actor/d_a_obj_togeTrap.cpp
@@ -295,7 +295,7 @@ int daTogeTrap_c::Delete() {
dComIfG_resDelete(&mPhase, "P_Toge");
#ifdef DEBUG
- l_HIO.removeHIO();
+ l_HIO.removeHIO(this);
#endif
return 1;
diff --git a/src/d/actor/d_a_obj_twGate.cpp b/src/d/actor/d_a_obj_twGate.cpp
index a3742dd898..52cd9f8318 100644
--- a/src/d/actor/d_a_obj_twGate.cpp
+++ b/src/d/actor/d_a_obj_twGate.cpp
@@ -4,416 +4,257 @@
*/
#include "d/actor/d_a_obj_twGate.h"
-#include "dol2asm.h"
-
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daTwGate_HIO_cFv();
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__10daTwGate_cFv();
-extern "C" void CreateHeap__10daTwGate_cFv();
-extern "C" void create__10daTwGate_cFv();
-extern "C" void __dt__8cM3dGLinFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void Execute__10daTwGate_cFPPA3_A4_f();
-extern "C" void Draw__10daTwGate_cFv();
-extern "C" void Delete__10daTwGate_cFv();
-extern "C" static void daTwGate_Draw__FP10daTwGate_c();
-extern "C" static void daTwGate_Execute__FP10daTwGate_c();
-extern "C" static void daTwGate_Delete__FP10daTwGate_c();
-extern "C" static void daTwGate_Create__FP10fopAc_ac_c();
-extern "C" void __dt__14daTwGate_HIO_cFv();
-extern "C" void __sinit_d_a_obj_twGate_cpp();
-extern "C" extern char const* const d_a_obj_twGate__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void isDarkClearLV__21dSv_player_status_b_cCFi();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool Create__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void cM3d_Len3dSqPntAndSegLine__FPC8cM3dGLinPC3VecP3VecPf();
-extern "C" void SetStartEnd__8cM3dGLinFRC3VecRC3Vec();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80D20308-80D2030C 000000 0004+00 4/4 0/0 0/0 .rodata @3638 */
-SECTION_RODATA static f32 const lit_3638 = 1900.0f;
-COMPILER_STRIP_GATE(0x80D20308, &lit_3638);
-
-/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D20554 = "twGtFiro";
-SECTION_DEAD static char const* const stringBase_80D2055D = "twGtK0102";
-SECTION_DEAD static char const* const stringBase_80D20567 = "twGtK0709";
-SECTION_DEAD static char const* const stringBase_80D20571 = "";
-SECTION_DEAD static char const* const stringBase_80D20572 = "twGnFiro";
-SECTION_DEAD static char const* const stringBase_80D2057B = "twGnK0102";
-SECTION_DEAD static char const* const stringBase_80D20585 = "twGnK0709";
-SECTION_DEAD static char const* const stringBase_80D2058F = "twGnK079b";
-SECTION_DEAD static char const* const stringBase_80D20599 = "twGnK1415";
-SECTION_DEAD static char const* const stringBase_80D205A3 = "twGnK0616";
-#pragma pop
+#include "d/d_com_inf_game.h"
/* 80D205B0-80D205E4 -00001 0034+00 3/3 0/0 0/0 .data l_resNameIdx */
-SECTION_DATA static void* l_resNameIdx[13] = {
- (void*)&d_a_obj_twGate__stringBase0,
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x9),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x13),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1E),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x27),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x31),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x3B),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x45),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x4F),
- (void*)(((char*)&d_a_obj_twGate__stringBase0) + 0x1D),
-};
-
-/* 80D205E4-80D20604 -00001 0020+00 1/0 0/0 0/0 .data l_daTwGate_Method */
-static actor_method_class l_daTwGate_Method = {
- (process_method_func)daTwGate_Create__FP10fopAc_ac_c,
- (process_method_func)daTwGate_Delete__FP10daTwGate_c,
- (process_method_func)daTwGate_Execute__FP10daTwGate_c,
- 0,
- (process_method_func)daTwGate_Draw__FP10daTwGate_c,
-};
-
-/* 80D20604-80D20634 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TwGate */
-extern actor_process_profile_definition g_profile_Obj_TwGate = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_TwGate, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daTwGate_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 539, // mPriority
- &l_daTwGate_Method, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D20634-80D20640 000084 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */
-SECTION_DATA extern void* __vt__8cM3dGLin[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGLinFv,
-};
-
-/* 80D20640-80D2064C 000090 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80D2064C-80D20674 00009C 0028+00 1/1 0/0 0/0 .data __vt__10daTwGate_c */
-SECTION_DATA extern void* __vt__10daTwGate_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__10daTwGate_cFv,
- (void*)Create__16dBgS_MoveBgActorFv,
- (void*)Execute__10daTwGate_cFPPA3_A4_f,
- (void*)Draw__10daTwGate_cFv,
- (void*)Delete__10daTwGate_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
-/* 80D20674-80D20680 0000C4 000C+00 2/2 0/0 0/0 .data __vt__14daTwGate_HIO_c */
-SECTION_DATA extern void* __vt__14daTwGate_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daTwGate_HIO_cFv,
-};
-
-/* 80D20680-80D2068C 0000D0 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */
-SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18fOpAcm_HIO_entry_cFv,
-};
-
-/* 80D2068C-80D20698 0000DC 000C+00 4/4 0/0 0/0 .data __vt__14mDoHIO_entry_c */
-SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14mDoHIO_entry_cFv,
+static char* l_resNameIdx[13] = {
+ "twGtFiro",
+ "twGtK0102",
+ "twGtK0709",
+ "",
+ "",
+ "",
+ "twGnFiro",
+ "twGnK0102",
+ "twGnK0709",
+ "twGnK079b",
+ "twGnK1415",
+ "twGnK0616",
+ "",
};
/* 80D1FAAC-80D1FAE0 0000EC 0034+00 1/1 0/0 0/0 .text __ct__14daTwGate_HIO_cFv */
daTwGate_HIO_c::daTwGate_HIO_c() {
- // NONMATCHING
-}
-
-/* 80D1FAE0-80D1FB3C 000120 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */
-// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() {
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv() {
- // NONMATCHING
+ mRange = 1900.0f;
}
-/* 80D1FB3C-80D1FB84 00017C 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
-// mDoHIO_entry_c::~mDoHIO_entry_c() {
-extern "C" void __dt__14mDoHIO_entry_cFv() {
- // NONMATCHING
+#ifdef DEBUG
+void daTwGate_HIO_c::genMessage(JORMContext* ctx) {
+ // Range
+ ctx->genSlider("範囲", &mRange, 0.0f, 500000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
}
+#endif
/* 80D1FB84-80D1FC0C 0001C4 0088+00 2/2 0/0 0/0 .text setBaseMtx__10daTwGate_cFv */
void daTwGate_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z);
+ mModel->setBaseScale(scale);
+ mModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* ############################################################################################## */
/* 80D2030C-80D20340 000004 0034+00 0/2 0/0 0/0 .rodata l_bmdIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_bmdIdx[52] = {
- 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
- 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xFF, 0xFF,
+static int const l_bmdIdx[13] = {
+ 6, 6, 6, -1, -1, -1, 6, 6, 6, 6, 6, 6, -1,
};
-COMPILER_STRIP_GATE(0x80D2030C, &l_bmdIdx);
-#pragma pop
/* 80D20340-80D20374 000038 0034+00 0/1 0/0 0/0 .rodata l_dzbIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_dzbIdx[52] = {
- 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
- 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_dzbIdx[13] = {
+ 15, 15, 15, -1, -1, -1, 15, 15, 15, 15, 15, 15, -1,
};
-COMPILER_STRIP_GATE(0x80D20340, &l_dzbIdx);
-#pragma pop
/* 80D20374-80D203A8 00006C 0034+00 0/1 0/0 0/0 .rodata l_btkIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_btkIdx[52] = {
- 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
- 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_btkIdx[13] = {
+ 12, 12, 12, -1, -1, -1, 12, 12, 12, 12, 12, 12, -1,
};
-COMPILER_STRIP_GATE(0x80D20374, &l_btkIdx);
-#pragma pop
/* 80D203A8-80D203DC 0000A0 0034+00 0/1 0/0 0/0 .rodata l_brkIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_brkIdx[52] = {
- 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
- 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF,
+static u32 const l_brkIdx[13] = {
+ 9, 9, 9, -1, -1, -1, 9, 9, 9, 9, 9, 9, -1,
};
-COMPILER_STRIP_GATE(0x80D203A8, &l_brkIdx);
-#pragma pop
/* 80D203DC-80D20410 0000D4 0034+00 0/2 0/0 0/0 .rodata l_twFlagIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_twFlagIdx[52] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
- 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
+static u32 const l_twFlagIdx[13] = {
+ 0, 1, 2, 4, -1, -1, 0, 1, 1, 2, 2, 4, 4,
};
-COMPILER_STRIP_GATE(0x80D203DC, &l_twFlagIdx);
-#pragma pop
/* 80D20410-80D204AC 000108 009C+00 0/1 0/0 0/0 .rodata l_cheeckPos0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_cheeckPos0[156] = {
- 0xC4, 0x0F, 0x26, 0xDC, 0x43, 0x9D, 0x73, 0xAC, 0xC6, 0xA2, 0x70, 0x96, 0xC6, 0xBF, 0xB1, 0xCF,
- 0xC5, 0xE2, 0x17, 0xEE, 0x47, 0x8F, 0x69, 0x9F, 0x45, 0x6E, 0xD7, 0xA7, 0x45, 0x92, 0x14, 0x72,
- 0xC7, 0x69, 0x42, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xC6, 0xB7, 0x79, 0x28, 0xC5, 0xE1, 0x0D, 0xB1, 0x47, 0x90, 0x52, 0xEC,
- 0x45, 0x37, 0xF9, 0x42, 0x45, 0x96, 0x23, 0xC0, 0xC7, 0x6C, 0x76, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static Vec const l_cheeckPos0[13] = {
+ {-572.6072f, 314.9037f, -20792.293f},
+ {-24536.904f, -7234.991f, 73427.242f},
+ {3821.4783f, 4674.5557f, -59714.414f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {-23484.578f, -7201.7114f, 73893.843f},
+ {2943.5786f, 4804.4688f, -60534.016f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
};
-COMPILER_STRIP_GATE(0x80D20410, &l_cheeckPos0);
-#pragma pop
/* 80D204AC-80D20548 0001A4 009C+00 0/1 0/0 0/0 .rodata l_cheeckPos1 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_cheeckPos1[156] = {
- 0xC3, 0x32, 0x31, 0xB6, 0x43, 0x9A, 0x59, 0x66, 0xC6, 0xA1, 0x62, 0xA7, 0xC6, 0xB8, 0x74, 0x9D,
- 0xC5, 0xE2, 0x17, 0xEE, 0x47, 0x90, 0x9D, 0xE0, 0x45, 0x38, 0x98, 0xDA, 0x45, 0x92, 0x14, 0x72,
- 0xC7, 0x6C, 0x68, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xC6, 0xBF, 0x33, 0x2A, 0xC5, 0xE1, 0x0D, 0xB1, 0x47, 0x8F, 0x28, 0x60,
- 0x45, 0x6E, 0xD2, 0xF5, 0x45, 0x96, 0x23, 0xC0, 0xC7, 0x69, 0x3B, 0xDA, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static Vec const l_cheeckPos1[13] = {
+ {-178.19418f, 308.69842f, -20657.326f},
+ {-23610.3066f, -7234.9912f, 74043.75f},
+ {2953.5532f, 4674.5556f, -60520.844f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {-24473.582, -7201.7114f, 73296.75f},
+ {3821.1848f, 4804.4687f, -59707.8515f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
};
-COMPILER_STRIP_GATE(0x80D204AC, &l_cheeckPos1);
-#pragma pop
-
-/* 80D20548-80D2054C 000240 0004+00 0/2 0/0 0/0 .rodata @3693 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3693 = 1.0f;
-COMPILER_STRIP_GATE(0x80D20548, &lit_3693);
-#pragma pop
/* 80D1FC0C-80D1FD44 00024C 0138+00 1/0 0/0 0/0 .text CreateHeap__10daTwGate_cFv */
-void daTwGate_c::CreateHeap() {
- // NONMATCHING
+int daTwGate_c::CreateHeap() {
+ J3DModelData* modelData =
+ (J3DModelData*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_bmdIdx[mGateType]);
+ JUT_ASSERT(292, modelData != 0);
+ mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel == NULL) {
+ return 0;
+ }
+ ;
+ int res = mBtk.init(modelData, (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_btkIdx[mGateType]), 1, 2, 1.0f, 0, -1);
+ JUT_ASSERT(309, res == 1);
+
+ res = mBrk.init(modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_resNameIdx[mGateType], l_brkIdx[mGateType]), 1, 0, 1.0f, 0, -1);
+ JUT_ASSERT(317, res == 1);
+ return 1;
}
-/* ############################################################################################## */
-/* 80D2054C-80D20550 000244 0004+00 0/2 0/0 0/0 .rodata @3769 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3769 = -1.0f;
-COMPILER_STRIP_GATE(0x80D2054C, &lit_3769);
-#pragma pop
+/* 80D206AC-80D206B4 000014 0008+00 2/2 0/0 0/0 .bss l_HIO */
+static daTwGate_HIO_c l_HIO;
/* 80D1FD44-80D1FF14 000384 01D0+00 1/1 0/0 0/0 .text create__10daTwGate_cFv */
-void daTwGate_c::create() {
- // NONMATCHING
-}
-
-/* 80D1FF14-80D1FF5C 000554 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */
-// cM3dGLin::~cM3dGLin() {
-extern "C" void __dt__8cM3dGLinFv() {
- // NONMATCHING
-}
-
-/* 80D1FF5C-80D1FFA4 00059C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+int daTwGate_c::create() {
+ fopAcM_SetupActor(this, daTwGate_c);
+ mGateType = getGateType();
+ if (l_bmdIdx[mGateType] == -1) {
+ // Twilight gate: Invalid argument.
+ OS_REPORT("=== トワイライトゲート:無効な引数です (%d) ===\n", mGateType);
+ return cPhs_ERROR_e;
+ }
+
+ if (dComIfGs_isDarkClearLV(l_twFlagIdx[mGateType]) == TRUE) {
+ return cPhs_ERROR_e;
+ }
+
+ int rv = dComIfG_resLoad(&mPhase, l_resNameIdx[mGateType]);
+ if (rv == cPhs_COMPLEATE_e) {
+ if (MoveBGCreate(l_resNameIdx[mGateType], l_dzbIdx[mGateType],
+ dBgS_MoveBGProc_TypicalRotY, 0x22a0, NULL) == cPhs_ERROR_e) {
+ return cPhs_ERROR_e;
+ }
+
+ setBaseMtx();
+ fopAcM_SetMtx(this, mModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mModel->getModelData());
+ mLine.SetStartEnd(l_cheeckPos0[mGateType], l_cheeckPos1[mGateType]);
+ mBrk.setPlaySpeed(-1.0f);
+
+ #ifdef DEBUG
+ // Twilight Gate
+ l_HIO.entryHIO("トワイライトゲート");
+ #endif
+ }
+ return rv;
}
-/* ############################################################################################## */
-/* 80D20550-80D20554 000248 0004+00 0/1 0/0 0/0 .rodata @3837 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3837[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D20550, &lit_3837);
-#pragma pop
-
-/* 80D206A0-80D206AC 000008 000C+00 1/1 0/0 0/0 .bss @3630 */
-static u8 lit_3630[12];
-
-/* 80D206AC-80D206B4 000014 0008+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
-
/* 80D1FFA4-80D200B4 0005E4 0110+00 1/0 0/0 0/0 .text Execute__10daTwGate_cFPPA3_A4_f */
-void daTwGate_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daTwGate_c::Execute(Mtx** i_mtx) {
+ if (dComIfGs_isDarkClearLV(l_twFlagIdx[mGateType]) == TRUE) {
+ fopAcM_delete(this);
+ }
+ cXyz cStack_34;
+ f32 local_38;
+ bool res = cM3d_Len3dSqPntAndSegLine(&mLine, &dComIfGp_getPlayer(0)->current.pos, &cStack_34, &local_38);
+ f32 fVar1 = JMAFastSqrt(local_38);
+ if (fVar1 <= l_HIO.mRange) {
+ if (mBrk.getPlaySpeed() != 1.0f) {
+ mBrk.setPlaySpeed(1.0f);
+ }
+ } else {
+ if (mBrk.getPlaySpeed() != -1.0f) {
+ mBrk.setPlaySpeed(-1.0f);
+ }
+ }
+ mBtk.play();
+ mBrk.play();
+ *i_mtx = &mModel->getBaseTRMtx();
+ setBaseMtx();
+ return 1;
}
/* 80D200B4-80D20180 0006F4 00CC+00 1/0 0/0 0/0 .text Draw__10daTwGate_cFv */
-void daTwGate_c::Draw() {
- // NONMATCHING
+int daTwGate_c::Draw() {
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);
+ dComIfGd_setListDarkBG();
+ mDoExt_modelUpdateDL(mModel);
+ dComIfGd_setList();
+ J3DModelData* modelData = mModel->getModelData();
+ mBtk.entry(modelData);
+ mBrk.entry(modelData);
+ return 1;
}
/* 80D20180-80D201C0 0007C0 0040+00 1/0 0/0 0/0 .text Delete__10daTwGate_cFv */
-void daTwGate_c::Delete() {
- // NONMATCHING
+int daTwGate_c::Delete() {
+ dComIfG_resDelete(&mPhase, l_resNameIdx[mGateType]);
+
+ #ifdef DEBUG
+ l_HIO.removeHIO(this);
+ #endif
+
+ return 1;
}
/* 80D201C0-80D201EC 000800 002C+00 1/0 0/0 0/0 .text daTwGate_Draw__FP10daTwGate_c */
-static void daTwGate_Draw(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Draw(daTwGate_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 80D201EC-80D2020C 00082C 0020+00 1/0 0/0 0/0 .text daTwGate_Execute__FP10daTwGate_c */
-static void daTwGate_Execute(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Execute(daTwGate_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80D2020C-80D2022C 00084C 0020+00 1/0 0/0 0/0 .text daTwGate_Delete__FP10daTwGate_c */
-static void daTwGate_Delete(daTwGate_c* param_0) {
- // NONMATCHING
+static int daTwGate_Delete(daTwGate_c* i_this) {
+ fopAcM_RegisterDeleteID(i_this, "daTwGate");
+ return i_this->MoveBGDelete();
}
/* 80D2022C-80D2024C 00086C 0020+00 1/0 0/0 0/0 .text daTwGate_Create__FP10fopAc_ac_c */
-static void daTwGate_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D2024C-80D202B8 00088C 006C+00 2/1 0/0 0/0 .text __dt__14daTwGate_HIO_cFv */
-daTwGate_HIO_c::~daTwGate_HIO_c() {
- // NONMATCHING
+static int daTwGate_Create(fopAc_ac_c* i_this) {
+ fopAcM_RegisterCreateID(daTwGate_c, i_this, "daTwGate");
+ return a_this->create();
}
-/* 80D202B8-80D202F4 0008F8 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_twGate_cpp */
-void __sinit_d_a_obj_twGate_cpp() {
- // NONMATCHING
-}
+/* 80D205E4-80D20604 -00001 0020+00 1/0 0/0 0/0 .data l_daTwGate_Method */
+static actor_method_class l_daTwGate_Method = {
+ (process_method_func)daTwGate_Create,
+ (process_method_func)daTwGate_Delete,
+ (process_method_func)daTwGate_Execute,
+ NULL,
+ (process_method_func)daTwGate_Draw,
+};
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80D202B8, __sinit_d_a_obj_twGate_cpp);
-#pragma pop
+/* 80D20604-80D20634 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TwGate */
+extern actor_process_profile_definition g_profile_Obj_TwGate = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_TwGate, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daTwGate_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 539, // mPriority
+ &l_daTwGate_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_volcbom.cpp b/src/d/actor/d_a_obj_volcbom.cpp
index 14adf2043f..6e18b5d4e0 100644
--- a/src/d/actor/d_a_obj_volcbom.cpp
+++ b/src/d/actor/d_a_obj_volcbom.cpp
@@ -4,312 +4,84 @@
*/
#include "d/actor/d_a_obj_volcbom.h"
+#include "d/actor/d_a_midna.h"
+#include "d/actor/d_a_player.h"
+#include "d/d_bg_w.h"
+#include "d/d_s_play.h"
+#include "d/d_debug_viewer.h"
#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void eventCallBack__FPvi();
-extern "C" void initBaseMtx__14daObjVolcBom_cFv();
-extern "C" void setBaseMtx__14daObjVolcBom_cFv();
-extern "C" void Create__14daObjVolcBom_cFv();
-extern "C" void CreateHeap__14daObjVolcBom_cFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void create1st__14daObjVolcBom_cFv();
-extern "C" void Execute__14daObjVolcBom_cFPPA3_A4_f();
-extern "C" void mode_proc_call__14daObjVolcBom_cFv();
-extern "C" void init_modeWaitAppear__14daObjVolcBom_cFv();
-extern "C" void modeWaitAppear__14daObjVolcBom_cFv();
-extern "C" void init_modeFall__14daObjVolcBom_cFv();
-extern "C" void modeFall__14daObjVolcBom_cFv();
-extern "C" void init_modeWaitEndFallDemo__14daObjVolcBom_cFv();
-extern "C" void modeWaitEndFallDemo__14daObjVolcBom_cFv();
-extern "C" void init_modeWait__14daObjVolcBom_cFv();
-extern "C" void modeWait__14daObjVolcBom_cFv();
-extern "C" void clrDzb__14daObjVolcBom_cFv();
-extern "C" void setDzb__14daObjVolcBom_cFv();
-extern "C" void appear__14daObjVolcBom_cFv();
-extern "C" void disappear__14daObjVolcBom_cFv();
-extern "C" void setSmoke__14daObjVolcBom_cFv();
-extern "C" void checkTalkDistance__14daObjVolcBom_cFv();
-extern "C" void calcMidnaWaitPos__14daObjVolcBom_cFv();
-extern "C" void setSrcEffect__14daObjVolcBom_cFv();
-extern "C" void setBindEffect__14daObjVolcBom_cFv();
-extern "C" void followBindEffect__14daObjVolcBom_cFv();
-extern "C" void endBindEffect__14daObjVolcBom_cFv();
-extern "C" void followSrcEffect__14daObjVolcBom_cFv();
-extern "C" void endSrcEffect__14daObjVolcBom_cFv();
-extern "C" void event_proc_call__14daObjVolcBom_cFv();
-extern "C" void orderZHintEvent__14daObjVolcBom_cFv();
-extern "C" void actionWait__14daObjVolcBom_cFv();
-extern "C" void actionOrderEvent__14daObjVolcBom_cFv();
-extern "C" void actionOrderATalkEvent__14daObjVolcBom_cFv();
-extern "C" void actionTalkEvent__14daObjVolcBom_cFv();
-extern "C" void actionWarpEvent__14daObjVolcBom_cFv();
-extern "C" void actionDead__14daObjVolcBom_cFv();
-extern "C" void demoProc__14daObjVolcBom_cFv();
-extern "C" void calcObjPos__14daObjVolcBom_cFv();
-extern "C" void Draw__14daObjVolcBom_cFv();
-extern "C" void Delete__14daObjVolcBom_cFv();
-extern "C" static void daObjVolcBom_create1st__FP14daObjVolcBom_c();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" static void daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c();
-extern "C" static void daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c();
-extern "C" static void daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_80D26B28(void* _this, u8*);
-extern "C" static void func_80D26B44();
-extern "C" static void func_80D26B4C();
-extern "C" extern char const* const d_a_obj_volcbom__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_btkAnmRemove__FP12J3DModelData();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void
-dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
-extern "C" void dComIfGp_TargetWarpPt_set__FUc();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii();
-extern "C" void setPt2__14dEvt_control_cFPv();
-extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
-extern "C" void startCheck__16dEvent_manager_cFs();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void getRunEventName__16dEvent_manager_cFv();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void request__10dAttHint_cFP10fopAc_ac_ci();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
-extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void ChkUsed__9cBgW_BgIdCFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void func_802807E0();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void getName__10JUTNameTabCFUs();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" extern u8 g_meter2_info[248];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 m_midnaActor__9daPy_py_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" extern u8 struct_80D26EA8[4];
-
-//
-// Declarations:
-//
+#include "d/d_com_inf_game.h"
+#include "d/d_meter2_info.h"
+
+#ifdef DEBUG
+daObjVolcBom_HIO_c::daObjVolcBom_HIO_c() {
+
+}
+
+void daObjVolcBom_HIO_c::genMessage(JORMContext* ctx) {
+
+}
+
+static daObjVolcBom_HIO_c l_HIO;
+#endif
/* 80D24198-80D241E0 000078 0048+00 1/1 0/0 0/0 .text eventCallBack__FPvi */
-static void eventCallBack(void* param_0, int param_1) {
- // NONMATCHING
+static int eventCallBack(void* param_1, int param_2) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (param_1 != 0) {
+ player->skipPortalObjWarp();
+ }
+ return 1;
}
/* 80D241E0-80D24238 0000C0 0058+00 1/1 0/0 0/0 .text initBaseMtx__14daObjVolcBom_cFv */
void daObjVolcBom_c::initBaseMtx() {
- // NONMATCHING
+ mModel1->setBaseScale(scale);
+ mModel2->setBaseScale(scale);
+ setBaseMtx();
}
/* 80D24238-80D242A8 000118 0070+00 2/2 0/0 0/0 .text setBaseMtx__14daObjVolcBom_cFv */
void daObjVolcBom_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mModel1->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
+ mModel2->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
/* 80D26B5C-80D26B68 000000 000C+00 9/9 0/0 0/0 .rodata l_midna_offset */
-SECTION_RODATA static u8 const l_midna_offset[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static Vec const l_midna_offset = {
+ 0.0f, 1000.0f, 0.0f,
};
-COMPILER_STRIP_GATE(0x80D26B5C, &l_midna_offset);
/* 80D26B68-80D26B6C 00000C 0002+02 0/1 0/0 0/0 .rodata l_disapp_eff */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u16 const l_disapp_eff[1 + 1 /* padding */] = {
- 0x8B30,
- /* padding */
- 0x0000,
-};
-COMPILER_STRIP_GATE(0x80D26B68, &l_disapp_eff);
-#pragma pop
+static u16 const l_disapp_eff[1] = { 0x8B30 };
/* 80D26B6C-80D26B74 000010 0006+02 0/1 0/0 0/0 .rodata l_start_eff */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_start_eff[6 + 2 /* padding */] = {
- 0x8B,
- 0x31,
- 0x8B,
- 0x32,
- 0x8B,
- 0x33,
- /* padding */
- 0x00,
- 0x00,
+static u16 const l_start_eff[3] = {
+ 0x8B31,
+ 0x8B32,
+ 0x8B33,
};
-COMPILER_STRIP_GATE(0x80D26B6C, &l_start_eff);
-#pragma pop
/* 80D26B74-80D26B7C 000018 0008+00 1/1 0/0 0/0 .rodata l_bind_eff */
-SECTION_RODATA static u8 const l_bind_eff[8] = {
- 0x8B, 0x47, 0x8B, 0x48, 0x8B, 0x49, 0x8B, 0x4A,
+static u16 const l_bind_eff[4] = {
+ 0x8B47, 0x8B48, 0x8B49, 0x8B4A,
};
-COMPILER_STRIP_GATE(0x80D26B74, &l_bind_eff);
-
-/* 80D26B7C-80D26B80 000020 0004+00 4/11 0/0 0/0 .rodata @3785 */
-SECTION_RODATA static f32 const lit_3785 = 1.0f;
-COMPILER_STRIP_GATE(0x80D26B7C, &lit_3785);
-
-/* 80D26B80-80D26B84 000024 0004+00 0/1 0/0 0/0 .rodata @3786 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3786 = 30.0f;
-COMPILER_STRIP_GATE(0x80D26B80, &lit_3786);
-#pragma pop
-
-/* 80D26B84-80D26B88 000028 0004+00 0/1 0/0 0/0 .rodata @3787 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3787 = -6.0f;
-COMPILER_STRIP_GATE(0x80D26B84, &lit_3787);
-#pragma pop
-
-/* 80D26B88-80D26B8C 00002C 0004+00 1/2 0/0 0/0 .rodata @3788 */
-SECTION_RODATA static f32 const lit_3788 = 10.0f;
-COMPILER_STRIP_GATE(0x80D26B88, &lit_3788);
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C0C = "M_VolcBom";
-SECTION_DEAD static char const* const stringBase_80D26C16 = "PORTAL_WARP_BIGVOLC";
-SECTION_DEAD static char const* const stringBase_80D26C2A = "BigVolc";
-SECTION_DEAD static char const* const stringBase_80D26C32 = "effect_p";
-#pragma pop
-
-/* 80D26C54-80D26C60 000000 000C+00 3/3 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 80D26C60-80D26C74 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
+UNK_REL_DATA
/* 80D26C74-80D26C78 -00001 0004+00 5/6 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_volcbom__stringBase0;
+static char* l_arcName = "M_VolcBom";
/* 80D26C78-80D26C7C -00001 0004+00 0/1 0/0 0/0 .data l_portal_warp_name */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* l_portal_warp_name =
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0xA);
-#pragma pop
+static char* l_portal_warp_name = "PORTAL_WARP_BIGVOLC";
/* 80D26C7C-80D26C80 -00001 0004+00 2/2 0/0 0/0 .data l_staff_name */
-SECTION_DATA static void* l_staff_name = (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x1E);
+static char* l_staff_name = "BigVolc";
/* 80D26C80-80D26CC4 00002C 0044+00 0/1 0/0 0/0 .data l_cyl_src */
-#pragma push
-#pragma force_active on
static dCcD_SrcCyl l_cyl_src = {
{
{0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x1f}, {0x0, 0x10}, 0x78}}, // mObj
@@ -323,728 +95,878 @@ static dCcD_SrcCyl l_cyl_src = {
1500.0f // mHeight
} // mCyl
};
-#pragma pop
/* 80D242A8-80D244E0 000188 0238+00 1/0 0/0 0/0 .text Create__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Create() {
- // NONMATCHING
+int daObjVolcBom_c::Create() {
+ int swbit = getSwbit();
+ if (fopAcM_isSwitch(this, swbit)) {
+ mBaseScale = 1.0f;
+ setSmoke();
+ init_modeWait();
+ } else {
+ init_modeWaitAppear();
+ }
+ initBaseMtx();
+ fopAcM_SetMtx(this, mModel1->getBaseTRMtx());
+ mAcchCir.SetWall(30.0f, 30.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
+ &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+ mStts.Init(0xff, 0xff, this);
+ mCyl.Set(l_cyl_src);
+ mCyl.SetStts(&mStts);
+ fopAcM_setCullSizeBox2(this, mModel1->getModelData());
+ fopAcM_SetGravity(this, -6.0f);
+ fopAcM_setCullSizeFar(this, 10.0f);
+ attention_info.distances[fopAc_attn_TALK_e] = 0x36;
+ attention_info.distances[fopAc_attn_SPEAK_e] = 0x36;
+ eventInfo.setArchiveName(l_arcName);
+ mEventId = dComIfGp_getEventManager().getEventIdx(this, l_portal_warp_name, 0xff);
+ JUTNameTab* nameTab = mModel1->getModelData()->getJointTree().getJointName();
+ mEffectJntNo = 0xffff;
+ for (u16 i = 0; i < mModel1->getModelData()->getJointNum(); i++) {
+ if (strcmp(nameTab->getName(i), "effect_p") == 0) {
+ mEffectJntNo = i;
+ break;
+ }
+ }
+
+ #ifdef DEBUG
+ if (mEffectJntNo != 0xffff) {
+ mBtk1->entry(mModel1->getModelData());
+ mModel1->calcMaterial();
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 20), 0, 2, 1.0f, 0, -1);
+ } else {
+ // Large volcanic bombs; joint effect_p was not found!
+ OS_REPORT_ERROR("大火山弾;ジョイント effect_p が見つかりませんでした\n");
+ }
+ return mEffectJntNo != 0xffff;
+ #else
+ mBtk1->entry(mModel1->getModelData());
+ mModel1->calcMaterial();
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 20), 0, 2, 1.0f, 0, -1);
+ return 1;
+ #endif
}
-/* ############################################################################################## */
-/* 80D26B8C-80D26B90 000030 0004+00 1/6 0/0 0/0 .rodata @3904 */
-SECTION_RODATA static u8 const lit_3904[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26B8C, &lit_3904);
-
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C3B = "WAIT";
-SECTION_DEAD static char const* const stringBase_80D26C40 = "FLY";
-SECTION_DEAD static char const* const stringBase_80D26C44 = "INIT";
-SECTION_DEAD static char const* const stringBase_80D26C49 = "BEAM";
-#pragma pop
-
-/* 80D26CC4-80D26CD0 -00001 000C+00 0/1 0/0 0/0 .data @3933 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3933[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitAppear__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CD0-80D26CDC -00001 000C+00 0/1 0/0 0/0 .data @3934 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3934[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeFall__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CDC-80D26CE8 -00001 000C+00 0/1 0/0 0/0 .data @3935 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3935[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitEndFallDemo__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CE8-80D26CF4 -00001 000C+00 0/1 0/0 0/0 .data @3936 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3936[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWait__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26CF4-80D26D24 0000A0 0030+00 0/1 0/0 0/0 .data mode_proc$3932 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 mode_proc[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80D26D24-80D26D30 -00001 000C+00 0/1 0/0 0/0 .data @4366 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4366[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionWait__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D30-80D26D3C -00001 000C+00 0/1 0/0 0/0 .data @4367 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4367[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionOrderEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D3C-80D26D48 -00001 000C+00 0/1 0/0 0/0 .data @4368 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4368[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionTalkEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D48-80D26D54 -00001 000C+00 0/1 0/0 0/0 .data @4369 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4369[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionWarpEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D54-80D26D60 -00001 000C+00 0/1 0/0 0/0 .data @4370 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4370[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionOrderATalkEvent__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D60-80D26D6C -00001 000C+00 0/1 0/0 0/0 .data @4371 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4371[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionDead__14daObjVolcBom_cFv,
-};
-#pragma pop
-
-/* 80D26D6C-80D26DB4 000118 0048+00 0/1 0/0 0/0 .data l_func$4365 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_func[72] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80D26DB4-80D26DC4 -00001 0010+00 1/1 0/0 0/0 .data action_table$4540 */
-SECTION_DATA static void* action_table[4] = {
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x2F),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x34),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x38),
- (void*)(((char*)&d_a_obj_volcbom__stringBase0) + 0x3D),
-};
-
-/* 80D26DC4-80D26DE4 -00001 0020+00 1/0 0/0 0/0 .data daObjVolcBom_METHODS */
-static actor_method_class daObjVolcBom_METHODS = {
- (process_method_func)daObjVolcBom_create1st__FP14daObjVolcBom_c,
- (process_method_func)daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c,
- (process_method_func)daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c,
- 0,
- (process_method_func)daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c,
-};
-
-/* 80D26DE4-80D26E14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_VolcanicBomb */
-extern actor_process_profile_definition g_profile_Obj_VolcanicBomb = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_VolcanicBomb, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjVolcBom_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 594, // mPriority
- &daObjVolcBom_METHODS, // sub_method
- 0x00040000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D26E14-80D26E20 0001C0 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
-
-/* 80D26E20-80D26E2C 0001CC 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
-
-/* 80D26E2C-80D26E38 0001D8 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
-
-/* 80D26E38-80D26E44 0001E4 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 80D26E44-80D26E50 0001F0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80D26E50-80D26E74 0001FC 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D26B4C,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D26B44,
-};
-
-/* 80D26E74-80D26E80 000220 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
/* 80D244E0-80D248AC 0003C0 03CC+00 1/0 0/0 0/0 .text CreateHeap__14daObjVolcBom_cFv */
-void daObjVolcBom_c::CreateHeap() {
- // NONMATCHING
-}
-
-/* 80D248AC-80D248F4 00078C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+int daObjVolcBom_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
+ JUT_ASSERT(389, modelData != 0);
+ mModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel1 == NULL) {
+ return 0;
+ }
+
+ J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 16);
+ JUT_ASSERT(403, pbrk != 0);
+ mBrk1 = new mDoExt_brkAnm();
+ if (mBrk1 == NULL || !mBrk1->init(modelData, pbrk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 21);
+ JUT_ASSERT(416, pbtk != 0);
+ mBtk1 = new mDoExt_btkAnm();
+ if (mBtk1 == NULL || !mBtk1->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(428, pbck != 0);
+ mBck1 = new mDoExt_bckAnm();
+ if (mBck1 == NULL || !mBck1->init(pbck, 1, 0, 1.0f, 0, -1, false)) {
+ return 0;
+ }
+
+ field_0x5cb = false;
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 11);
+ JUT_ASSERT(443, modelData != 0);
+ mModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (mModel2 == NULL) {
+ return 0;
+ }
+
+ pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 15);
+ JUT_ASSERT(457, pbrk != 0);
+ mBrk2 = new mDoExt_brkAnm();
+ if (mBrk2 == NULL || !mBrk2->init(modelData, pbrk, 1, 0, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ mBrk2->setPlaySpeed(0.0f);
+ pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 19);
+ JUT_ASSERT(471, pbtk != 0);
+ mBtk2 = new mDoExt_btkAnm();
+ if (mBtk2 == NULL || !mBtk2->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+ mBtk2->setPlaySpeed(0.0f);
+ return 1;
}
/* 80D248F4-80D249D0 0007D4 00DC+00 1/1 0/0 0/0 .text create1st__14daObjVolcBom_cFv */
-void daObjVolcBom_c::create1st() {
- // NONMATCHING
+int daObjVolcBom_c::create1st() {
+ if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[65])) {
+ return cPhs_ERROR_e;
+ }
+ if (!mIsMsgIDInit) {
+ mMsgID = current.angle.z;
+ current.angle.z = 0;
+ home.angle.z = 0;
+ shape_angle.z = 0;
+ mIsMsgIDInit = true;
+ }
+
+ int rv = dComIfG_resLoad(&mPhase, l_arcName);
+ if (rv == cPhs_COMPLEATE_e) {
+ rv = MoveBGCreate(l_arcName, 24, dBgS_MoveBGProc_TypicalRotY, 0x4000, NULL);
+ if (rv == cPhs_ERROR_e) {
+ return rv;
+ }
+
+ #ifdef DEBUG
+ // The Great Lava Bombs
+ l_HIO.entryHIO("大溶岩弾");
+ #endif
+ }
+
+ return rv;
}
/* 80D249D0-80D24A2C 0008B0 005C+00 1/0 0/0 0/0 .text Execute__14daObjVolcBom_cFPPA3_A4_f
*/
-void daObjVolcBom_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daObjVolcBom_c::Execute(Mtx** i_mtx) {
+ mode_proc_call();
+ *i_mtx = &mBgMtx;
+ setBaseMtx();
+ mBtk1->play();
+ mBrk1->play();
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x14 != 0) {
+ switch (mMode) {
+ case MODE_WAIT_APPEAR:
+ dDbVw_Report(0x1e, 0x50, "Mode_WaitAppear");
+ break;
+ case MODE_FALL:
+ dDbVw_Report(0x1e, 0x50, "Mode_Fall");
+ break;
+ case MODE_WAIT_END_FALL_DEMO:
+ dDbVw_Report(0x1e, 0x50, "Mode_Wait");
+ break;
+ default:
+ dDbVw_Report(0x1e, 0x50, "Mode_????");
+ break;
+ }
+ }
+ #endif
+ return 1;
}
/* 80D24A2C-80D24B18 00090C 00EC+00 1/1 0/0 0/0 .text mode_proc_call__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::mode_proc_call() {
- // NONMATCHING
+ static daObjVolcBom_c::modeFunc mode_proc[4] = {
+ &daObjVolcBom_c::modeWaitAppear,
+ &daObjVolcBom_c::modeFall,
+ &daObjVolcBom_c::modeWaitEndFallDemo,
+ &daObjVolcBom_c::modeWait,
+ };
+
+ (this->*mode_proc[mMode])();
+ cXyz scale(mBaseScale, mBaseScale, mBaseScale);
+ mModel1->setBaseScale(scale);
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x15 != 0) {
+ fopAc_ac_c* player = dComIfGp_getPlayer(0);
+ current.pos.x = player->current.pos.x;
+ current.pos.y = l_HIO.field_0x18;
+ current.pos.z = player->current.pos.z;
+ mLightPosWorld.x = player->current.pos.x;
+ mLightPosWorld.y = l_HIO.field_0x1c;
+ mLightPosWorld.z = player->current.pos.z;
+ mBaseScale = l_HIO.field_0x20;
+ field_0x978 = l_HIO.field_0x24;
+ mAcch.CrrPos(dComIfG_Bgsp());
+ return;
+ }
+ #endif
}
-/* ############################################################################################## */
-/* 80D26B90-80D26B94 000034 0004+00 1/2 0/0 0/0 .rodata @3958 */
-SECTION_RODATA static f32 const lit_3958 = 2000.0f;
-COMPILER_STRIP_GATE(0x80D26B90, &lit_3958);
-
/* 80D24B18-80D24B6C 0009F8 0054+00 1/1 0/0 0/0 .text init_modeWaitAppear__14daObjVolcBom_cFv */
void daObjVolcBom_c::init_modeWaitAppear() {
- // NONMATCHING
+ disappear();
+ clrDzb();
+ current.pos.y += 2000.0f;
+ mWaitAppearState = 0;
+ mMode = MODE_WAIT_APPEAR;
}
-/* ############################################################################################## */
-/* 80D26B94-80D26B98 000038 0004+00 0/1 0/0 0/0 .rodata @3997 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3997 = 1.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80D26B94, &lit_3997);
-#pragma pop
-
-/* 80D26B98-80D26B9C 00003C 0004+00 0/1 0/0 0/0 .rodata @3998 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3998 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D26B98, &lit_3998);
-#pragma pop
-
-/* 80D26B9C-80D26BA0 000040 0004+00 0/2 0/0 0/0 .rodata @3999 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3999 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80D26B9C, &lit_3999);
-#pragma pop
-
-/* 80D26BA0-80D26BA4 000044 0004+00 1/5 0/0 0/0 .rodata @4000 */
-SECTION_RODATA static f32 const lit_4000 = -1.0f;
-COMPILER_STRIP_GATE(0x80D26BA0, &lit_4000);
-
-/* 80D26BA4-80D26BA8 000048 0004+00 0/1 0/0 0/0 .rodata @4001 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4001 = 15000.0f;
-COMPILER_STRIP_GATE(0x80D26BA4, &lit_4001);
-#pragma pop
-
-/* 80D26BA8-80D26BAC 00004C 0004+00 0/1 0/0 0/0 .rodata @4002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4002 = -250.0f;
-COMPILER_STRIP_GATE(0x80D26BA8, &lit_4002);
-#pragma pop
-
/* 80D24B6C-80D24D80 000A4C 0214+00 1/0 0/0 0/0 .text modeWaitAppear__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::modeWaitAppear() {
- // NONMATCHING
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ J3DJoint* root_jnt = mModel1->getModelData()->getJointNodePointer(0);
+ JUT_ASSERT(623, root_jnt != 0);
+
+ switch (mWaitAppearState) {
+ case 0:
+ if (field_0x960) {
+ mWaitAppearState = 1;
+ }
+ break;
+ case 1:
+ cLib_addCalc(&field_0x978, 1.0f, 0.02f, 0.1f, 0.01f);
+ cLib_addCalc(&mBaseScale, 1.0f, 0.02f, 0.1f, 0.01f);
+ mLightPosWorld.x = player->current.pos.x;
+ mLightPosWorld.y = current.pos.y + root_jnt->getMin()->y;
+ mLightPosWorld.z = player->current.pos.z;
+ current.pos.x = player->current.pos.x;
+ current.pos.y = player->current.pos.y + 2000.0f;
+ current.pos.z = player->current.pos.z;
+ appear();
+ mWaitSEPos = current.pos;
+ mWaitSEPos.y = mAcch.GetGroundH();
+ mDoAud_seStartLevel(Z2SE_OBJ_VOLC_WAIT, &mWaitSEPos, 0, 0);
+ if (field_0x95f == 0) {
+ break;
+ }
+ field_0x960 = false;
+ mWaitAppearState = 2;
+ // fallthrough
+ case 2:
+ field_0x978 = 1.0f;
+ mBaseScale = 1.0f;
+ current.pos.x = home.pos.x;
+ current.pos.z = home.pos.z;
+ current.pos.y = mAcch.GetGroundH() + 15000.0f;
+ mLightPosWorld = current.pos;
+ mLightPosWorld.y = mAcch.GetGroundH() + 2000.0f + root_jnt->getMin()->y;
+ fopAcM_SetMaxFallSpeed(this, -250.0f);
+ init_modeFall();
+ break;
+ }
+
+ if (field_0x95f == 0) {
+ mAcch.CrrPos(dComIfG_Bgsp());
+ }
}
-/* ############################################################################################## */
-/* 80D26BAC-80D26BB0 000050 0004+00 0/1 0/0 0/0 .rodata @4022 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4022 = 0.5f;
-COMPILER_STRIP_GATE(0x80D26BAC, &lit_4022);
-#pragma pop
-
/* 80D24D80-80D24E50 000C60 00D0+00 1/1 0/0 0/0 .text init_modeFall__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeFall() {
- // NONMATCHING
+ mBrk2->setPlaySpeed(1.0f);
+ mBtk2->setPlaySpeed(1.0f);
+ field_0x95e = true;
+ field_0x960 = false;
+ field_0x978 = 0.5f;
+ eyePos = current.pos;
+ fopAcM_seStart(this, Z2SE_OBJ_VOLC_FALL, 0);
+ OS_REPORT("大火山弾:落下SE(%.2f,%.2f,%.2f)\n", eyePos.x, eyePos.y, eyePos.z);
+ mMode = MODE_FALL;
}
-/* ############################################################################################## */
/* 80D26BB0-80D26BC0 000054 000E+02 0/1 0/0 0/0 .rodata l_effect_id$4032 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_effect_id[14 + 2 /* padding */] = {
- 0x85,
- 0xF7,
- 0x85,
- 0xF8,
- 0x85,
- 0xF9,
- 0x85,
- 0xFA,
- 0x85,
- 0xFB,
- 0x85,
- 0xFC,
- 0x85,
- 0xFD,
- /* padding */
- 0x00,
- 0x00,
+static u16 const l_effect_id[7] = {
+ 0x85F7,
+ 0x85F8,
+ 0x85F9,
+ 0x85FA,
+ 0x85FB,
+ 0x85FC,
+ 0x85FD,
};
-COMPILER_STRIP_GATE(0x80D26BB0, &l_effect_id);
-#pragma pop
/* 80D24E50-80D25024 000D30 01D4+00 1/0 0/0 0/0 .text modeFall__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeFall() {
- // NONMATCHING
+ bool isHomeHeight = false;
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ fopAcM_posMoveF(this, NULL);
+ if (home.pos.y > current.pos.y) {
+ isHomeHeight = true;
+ current.pos.y = home.pos.y;
+ }
+ eyePos = current.pos;
+ mBtk2->play();
+ if (mBrk2->play()) {
+ field_0x95e = false;
+ }
+ mDoAud_seStartLevel(Z2SE_OBJ_VOLC_WAIT, &mWaitSEPos, 0, 0);
+ if (isHomeHeight) {
+ dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
+ cXyz cStack_28(current.pos);
+ if (fopAcM_gc_c::gndCheck(&cStack_28)) {
+ cStack_28.y = fopAcM_gc_c::getGroundY();
+ }
+ for (int i = 0; i < 7; i++) {
+ dComIfGp_particle_setColor(l_effect_id[i],
+ &cStack_28, &tevStr, NULL, NULL, 0.0f, 0xff);
+ }
+
+ fopAcM_onSwitch(this, getSwbit());
+ setDzb();
+ // Large volcanic bombs drop bit ON
+ OS_REPORT("大火山弾落下ビットON\n");
+ init_modeWaitEndFallDemo();
+ }
}
/* 80D25024-80D25038 000F04 0014+00 1/1 0/0 0/0 .text init_modeWaitEndFallDemo__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeWaitEndFallDemo() {
- // NONMATCHING
+ mSmokeTimer = 5;
+ mMode = MODE_WAIT_END_FALL_DEMO;
}
/* 80D25038-80D25094 000F18 005C+00 1/0 0/0 0/0 .text modeWaitEndFallDemo__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeWaitEndFallDemo() {
- // NONMATCHING
+ if (cLib_calcTimer(&mSmokeTimer) == 0) {
+ setSmoke();
+ }
+
+ if (!dComIfGp_event_runCheck()) {
+ init_modeWait();
+ }
}
/* 80D25094-80D25100 000F74 006C+00 2/2 0/0 0/0 .text init_modeWait__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::init_modeWait() {
- // NONMATCHING
+ eyePos = current.pos;
+ attention_info.position = current.pos;
+ calcMidnaWaitPos();
+ appear();
+ mMode = MODE_WAIT;
}
-/* ############################################################################################## */
-/* 80D26BC0-80D26BC4 000064 0004+00 1/1 0/0 0/0 .rodata @4103 */
-SECTION_RODATA static f32 const lit_4103 = 750.0f;
-COMPILER_STRIP_GATE(0x80D26BC0, &lit_4103);
-
/* 80D25100-80D25178 000FE0 0078+00 1/0 0/0 0/0 .text modeWait__14daObjVolcBom_cFv */
void daObjVolcBom_c::modeWait() {
- // NONMATCHING
+ cXyz cStack_18(current.pos);
+ cStack_18.y -= 750.0f;
+ mCyl.SetC(cStack_18);
+ dComIfG_Ccsp()->Set(&mCyl);
+ event_proc_call();
}
/* 80D25178-80D251CC 001058 0054+00 1/1 0/0 0/0 .text clrDzb__14daObjVolcBom_cFv */
void daObjVolcBom_c::clrDzb() {
- // NONMATCHING
+ if (mpBgW != NULL && mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
+ }
}
/* 80D251CC-80D25224 0010AC 0058+00 1/1 0/0 0/0 .text setDzb__14daObjVolcBom_cFv */
void daObjVolcBom_c::setDzb() {
- // NONMATCHING
+ if (mpBgW != NULL && !mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Regist(mpBgW, this);
+ }
}
/* 80D25224-80D25230 001104 000C+00 2/2 0/0 0/0 .text appear__14daObjVolcBom_cFv */
void daObjVolcBom_c::appear() {
- // NONMATCHING
+ misAppearing = false;
}
/* 80D25230-80D2523C 001110 000C+00 1/1 0/0 0/0 .text disappear__14daObjVolcBom_cFv */
void daObjVolcBom_c::disappear() {
- // NONMATCHING
+ misAppearing = true;
}
/* 80D2523C-80D252C8 00111C 008C+00 2/2 0/0 0/0 .text setSmoke__14daObjVolcBom_cFv */
void daObjVolcBom_c::setSmoke() {
- // NONMATCHING
-}
+ if (mSmokeEmitter == NULL) {
+ mSmokeEmitter =
+ dComIfGp_particle_set(0x8608, &current.pos, &home.angle, &scale, 0xff, 0, -1, 0, 0, 0);
+ }
-/* ############################################################################################## */
-/* 80D26BC4-80D26BCC 000068 0004+04 1/1 0/0 0/0 .rodata @4162 */
-SECTION_RODATA static f32 const lit_4162[1 + 1 /* padding */] = {
- 500.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80D26BC4, &lit_4162);
-
-/* 80D26BCC-80D26BD4 000070 0008+00 1/1 0/0 0/0 .rodata @4164 */
-SECTION_RODATA static u8 const lit_4164[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BCC, &lit_4164);
+ if (mSmokeEmitter == NULL) {
+ // Large volcanic bombs: smoke effects could not be set
+ OS_REPORT("大火山弾:煙エフェクトセットできませんでした\n");
+ }
+}
/* 80D252C8-80D25364 0011A8 009C+00 3/3 0/0 0/0 .text checkTalkDistance__14daObjVolcBom_cFv */
-void daObjVolcBom_c::checkTalkDistance() {
- // NONMATCHING
+bool daObjVolcBom_c::checkTalkDistance() {
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ f32 playerDist = fopAcM_searchPlayerDistanceXZ(this);
+ if ((getArg0() != 0xff && playerDist < getArg0() * 10.0f) ||
+ (getArg0() == 0xff && playerDist < 500.0f))
+ {
+ return true;
+ }
+ return false;
}
-/* ############################################################################################## */
-/* 80D26BD4-80D26BD8 000078 0004+00 0/1 0/0 0/0 .rodata @4175 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4175 = 1000.0f;
-COMPILER_STRIP_GATE(0x80D26BD4, &lit_4175);
-#pragma pop
-
-/* 80D26BD8-80D26BDC 00007C 0004+00 0/1 0/0 0/0 .rodata @4176 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4176 = 250.0f;
-COMPILER_STRIP_GATE(0x80D26BD8, &lit_4176);
-#pragma pop
-
/* 80D25364-80D253FC 001244 0098+00 1/1 0/0 0/0 .text calcMidnaWaitPos__14daObjVolcBom_cFv */
void daObjVolcBom_c::calcMidnaWaitPos() {
- // NONMATCHING
+ cXyz cStack_18(0.0f, 1000.0f, 0.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&cStack_18, &mMidnaWaitPos);
+ attention_info.position = mMidnaWaitPos;
+ attention_info.position.y += 250.0f;
}
/* 80D253FC-80D25528 0012DC 012C+00 1/1 0/0 0/0 .text setSrcEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::setSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ mDisappearEmitters[i] = dComIfGp_particle_set(l_disapp_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->becomeImmortalEmitter();
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ mStartEmitters[i] = dComIfGp_particle_set(l_start_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->becomeImmortalEmitter();
+ }
+ }
}
/* 80D25528-80D255F4 001408 00CC+00 1/1 0/0 0/0 .text setBindEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::setBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ mBindEmitters[i] = dComIfGp_particle_set(l_bind_eff[i], &current.pos, &home.angle, &scale,
+ 0xff, 0, -1, 0, 0, 0);
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->becomeImmortalEmitter();
+ }
+ }
}
/* 80D255F4-80D25664 0014D4 0070+00 1/1 0/0 0/0 .text followBindEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::followBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(0));
+ }
+ }
}
/* 80D25664-80D256B8 001544 0054+00 1/1 0/0 0/0 .text endBindEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::endBindEffect() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ if (mBindEmitters[i] != NULL) {
+ mBindEmitters[i]->becomeInvalidEmitter();
+ mBindEmitters[i]->quitImmortalEmitter();
+ mBindEmitters[i] = NULL;
+ }
+ }
}
/* 80D256B8-80D25758 001598 00A0+00 1/1 0/0 0/0 .text followSrcEffect__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::followSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(mEffectJntNo));
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->setGlobalRTMatrix(mModel1->getAnmMtx(0));
+ }
+ }
}
/* 80D25758-80D257E4 001638 008C+00 1/1 0/0 0/0 .text endSrcEffect__14daObjVolcBom_cFv */
void daObjVolcBom_c::endSrcEffect() {
- // NONMATCHING
+ for (int i = 0; i < 1; i++) {
+ if (mDisappearEmitters[i] != NULL) {
+ mDisappearEmitters[i]->becomeInvalidEmitter();
+ mDisappearEmitters[i]->quitImmortalEmitter();
+ mDisappearEmitters[i] = NULL;
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mStartEmitters[i] != NULL) {
+ mStartEmitters[i]->becomeInvalidEmitter();
+ mStartEmitters[i]->quitImmortalEmitter();
+ mStartEmitters[i] = NULL;
+ }
+ }
}
/* 80D257E4-80D25914 0016C4 0130+00 1/1 0/0 0/0 .text event_proc_call__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::event_proc_call() {
- // NONMATCHING
+ static daObjVolcBom_c::actionFunc l_func[6] = {
+ &daObjVolcBom_c::actionWait,
+ &daObjVolcBom_c::actionOrderEvent,
+ &daObjVolcBom_c::actionTalkEvent,
+ &daObjVolcBom_c::actionWarpEvent,
+ &daObjVolcBom_c::actionOrderATalkEvent,
+ &daObjVolcBom_c::actionDead,
+ };
+
+ attention_info.flags = 0;
+ if (mNaviTimer != 0) {
+ mNaviTimer--;
+ }
+
+ (this->*l_func[mAction])();
+ if (!eventInfo.chkCondition(dEvtCnd_CANTALK_e)) {
+ field_0xa1a = false;
+ }
}
/* 80D25914-80D25A08 0017F4 00F4+00 1/1 0/0 0/0 .text orderZHintEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::orderZHintEvent() {
- // NONMATCHING
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (checkTalkDistance()) {
+ eventInfo.onCondition(dEvtCnd_CANTALK_e);
+ if (!player->checkPlayerFly()) {
+ dComIfGp_att_ZHintRequest(this, 0x1ff);
+ if (!field_0xa1a) {
+ field_0xa1a = true;
+ if (mNaviTimer == 0) {
+ mDoAud_seStart(Z2SE_NAVI_CALLVOICE, 0, 0, 0);
+ }
+ mNaviTimer = 60;
+ }
+ }
+ }
}
/* 80D25A08-80D25B04 0018E8 00FC+00 1/0 0/0 0/0 .text actionWait__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionWait() {
- // NONMATCHING
+ if (checkTalkDistance() && dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[84])) {
+ setAction(ACTION_ORDER_EVENT);
+ actionOrderEvent();
+ }
+
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass();
+
+ // Probably fake match since ebug calls different manager functions
+ dEvent_manager_c& evtMgr = g_dComIfG_gameInfo.play.getEvtManager();
+ if (evtMgr.startCheck(mEventId)) {
+ if (strcmp(evtMgr.getRunEventName(), "PORTAL_WARP_BIGVOLC") == 0) {
+ player->onWarpObjDemo();
+ dComIfGp_getEvent().setPt2(this);
+ mStaffId = evtMgr.getMyStaffId(l_staff_name, 0, 0);
+ setAction(ACTION_WARP_EVENT);
+ demoProc();
+ }
+ }
}
-/* ############################################################################################## */
-/* 80D26BDC-80D26BE4 000080 0008+00 0/2 0/0 0/0 .rodata @4470 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4470[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BDC, &lit_4470);
-#pragma pop
-
-/* 80D26BE4-80D26BEC 000088 0008+00 0/2 0/0 0/0 .rodata @4471 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4471[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BE4, &lit_4471);
-#pragma pop
-
-/* 80D26BEC-80D26BF4 000090 0008+00 0/2 0/0 0/0 .rodata @4472 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4472[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D26BEC, &lit_4472);
-#pragma pop
-
-/* 80D26BF4-80D26BF8 000098 0004+00 0/1 0/0 0/0 .rodata @4473 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4473 = 5.0f;
-COMPILER_STRIP_GATE(0x80D26BF4, &lit_4473);
-#pragma pop
-
/* 80D25B04-80D25CA0 0019E4 019C+00 2/1 0/0 0/0 .text actionOrderEvent__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionOrderEvent() {
- // NONMATCHING
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ if (eventInfo.checkCommandTalk()) {
+ midna->onTagWaitPosPortalObj(mMidnaWaitPos);
+ if (midna->current.pos.abs(mMidnaWaitPos) < 5.0f) {
+ setAction(ACTION_TALK_EVENT);
+ mMsgFlow.init(this, getMsgID(), 0, NULL);
+ // Conversation demo for message ID
+ OS_REPORT("メッセージID<%d>の会話デモ\n", getMsgID());
+ }
+ } else {
+ orderZHintEvent();
+ }
}
/* 80D25CA0-80D25DEC 001B80 014C+00 1/0 0/0 0/0 .text actionOrderATalkEvent__14daObjVolcBom_cFv */
void daObjVolcBom_c::actionOrderATalkEvent() {
- // NONMATCHING
+ daMidna_c* midna = (daMidna_c*)daPy_py_c::getMidnaActor();
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ if (eventInfo.checkCommandTalk()) {
+ setAction(ACTION_TALK_EVENT);
+ mMsgFlow.init(this, getMsgID(), 0, NULL);
+ } else {
+ if (dComIfGp_evmng_startCheck(mEventId)) {
+ player->onWarpObjDemo();
+ dComIfGp_getEvent().setPt2(this);
+ mStaffId = dComIfGp_evmng_getMyStaffId(l_staff_name, 0, 0);
+ setAction(ACTION_WARP_EVENT);
+ demoProc();
+ } else {
+ if (checkTalkDistance()) {
+ midna->onTagWaitPosPortalObj(mMidnaWaitPos);
+ dComIfGp_TargetWarpPt_set(9);
+ eventInfo.onCondition(dEvtCnd_CANTALK_e);
+ attention_info.flags = 0xa;
+ } else {
+ midna->offTagWaitPos();
+ setAction(ACTION_WAIT);
+ }
+ }
+ }
}
/* 80D25DEC-80D25E78 001CCC 008C+00 1/0 0/0 0/0 .text actionTalkEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::actionTalkEvent() {
- // NONMATCHING
+ if (mMsgFlow.doFlow(this, NULL, 0)) {
+ dComIfGp_event_reset();
+ field_0x5c9 = true;
+ int dummy;
+ if (mMsgFlow.getEventId(&dummy) == 11) {
+ dMeter2Info_setPauseStatus(6);
+ }
+ setAction(ACTION_ORDER_A_TALK_EVENT);
+ }
}
/* 80D25E78-80D25EE4 001D58 006C+00 1/0 0/0 0/0 .text actionWarpEvent__14daObjVolcBom_cFv
*/
void daObjVolcBom_c::actionWarpEvent() {
- // NONMATCHING
+ if (!dComIfGp_evmng_endCheck(mEventId)) {
+ dComIfGp_getEvent().setSkipProc(this, eventCallBack, 0);
+ demoProc();
+ }
}
/* 80D25EE4-80D25EE8 001DC4 0004+00 1/0 0/0 0/0 .text actionDead__14daObjVolcBom_cFv */
-void daObjVolcBom_c::actionDead() {
- /* empty function */
-}
-
-/* ############################################################################################## */
-/* 80D26BF8-80D26BFC 00009C 0004+00 0/1 0/0 0/0 .rodata @4715 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4715 = 222.0f;
-COMPILER_STRIP_GATE(0x80D26BF8, &lit_4715);
-#pragma pop
-
-/* 80D26BFC-80D26C00 0000A0 0004+00 0/1 0/0 0/0 .rodata @4716 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4716 = -10.0f;
-COMPILER_STRIP_GATE(0x80D26BFC, &lit_4716);
-#pragma pop
-
-/* 80D26C00-80D26C04 0000A4 0004+00 0/1 0/0 0/0 .rodata @4717 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4717 = -65.0f;
-COMPILER_STRIP_GATE(0x80D26C00, &lit_4717);
-#pragma pop
-
-/* 80D26C04-80D26C08 0000A8 0004+00 0/1 0/0 0/0 .rodata @4718 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4718 = 55.0f;
-COMPILER_STRIP_GATE(0x80D26C04, &lit_4718);
-#pragma pop
-
-/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D26C4E = "Timer";
-#pragma pop
+void daObjVolcBom_c::actionDead() {}
/* 80D25EE8-80D26468 001DC8 0580+00 3/3 0/0 0/0 .text demoProc__14daObjVolcBom_cFv */
void daObjVolcBom_c::demoProc() {
- // NONMATCHING
+ static const char* action_table[4] = {
+ "WAIT",
+ "FLY",
+ "INIT",
+ "BEAM",
+ };
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ daMidna_c* midna = (daMidna_c*)daPy_py_c::getMidnaActor();
+ int actIdx = dComIfGp_evmng_getMyActIdx(mStaffId, (char**)action_table, 4, 0, 0);
+ int* pTimer;
+ if (dComIfGp_evmng_getIsAddvance(mStaffId)) {
+ switch (actIdx) {
+ case 0:
+ pTimer = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer");
+ if (pTimer == NULL) {
+ mDemoTimer = 1;
+ } else {
+ mDemoTimer = *pTimer;
+ }
+ break;
+ case 2:
+ mBtk1->setPlayMode(0);
+ break;
+ case 1:
+ shape_angle.setall(0);
+ field_0x5cb = true;
+ mBck1->setPlaySpeed(1.0f);
+ mBtk1->init(mModel1->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 21), 0, 2, 1.0f, 0, -1);
+ mBtk1->setFrame(0.0f);
+ mBtk1->setPlaySpeed(1.0f);
+ mBtk1->setPlayMode(J3DFrameCtrl::EMode_NONE);
+ setSrcEffect();
+ fopAcM_seStart(this, Z2SE_OBJ_VOLC_LIFT_UP, 0);
+ break;
+ case 3:
+ fopAcM_seStart(this, Z2SE_MDN_WARP_MAGIC, 0);
+ setBindEffect();
+ break;
+
+ }
+ }
+
+ cXyz cStack_4c;
+ cXyz cStack_58;
+ csXyz local_60;
+ switch (actIdx) {
+ case 0:
+ if (cLib_calcTimer(&mDemoTimer) == 0) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ break;
+ case 2:
+ if (mBtk1->isStop()) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ break;
+ case 1:
+ if (mBck1->getFrame() == 222.0f) {
+ calcObjPos();
+ mDoAud_seStart(Z2SE_OBJ_VOLC_WARP_IN, &mWarpSEPos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ // Large volcanic bombs: warp SE
+ OS_REPORT("大火山弾:ワープSE\n");
+ }
+ if (mBck1->play()) {
+ dComIfGp_evmng_cutEnd(mStaffId);
+ }
+ followSrcEffect();
+ break;
+ case 3: {
+ mDoMtx_stack_c::copy(midna->getMtxHairTop());
+ mDoMtx_stack_c::transM(-10.0f, -65.0f, 55.0f);
+ mDoMtx_stack_c::multVecZero(&cStack_58);
+ mDoMtx_stack_c::copy(mModel1->getAnmMtx(0));
+ mDoMtx_stack_c::multVecZero(&cStack_4c);
+ local_60.y = cLib_targetAngleY(&cStack_4c, &cStack_58);
+ local_60.x = cLib_targetAngleX(&cStack_58, &cStack_4c);
+ local_60.z = 0;
+ f32 emitterScale = cStack_4c.abs(cStack_58);
+ JPABaseEmitter* pEmitter =
+ dComIfGp_particle_set(0x8b53, &cStack_4c, &local_60, 0, 0xff, 0, -1, 0, 0, 0);
+ pEmitter->setGlobalParticleHeightScale(emitterScale * 0.01f);
+ followBindEffect();
+ dComIfGp_evmng_cutEnd(mStaffId);
+ break;
+ }
+ default:
+ dComIfGp_evmng_cutEnd(mStaffId);
+ break;
+ }
}
/* 80D26468-80D264E8 002348 0080+00 1/1 0/0 0/0 .text calcObjPos__14daObjVolcBom_cFv */
void daObjVolcBom_c::calcObjPos() {
- // NONMATCHING
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(1459, pbck != 0);
+ J3DTransformInfo info;
+ pbck->getTransform(0, &info);
+ mWarpSEPos.x = info.mTranslate.x;
+ mWarpSEPos.y = info.mTranslate.y;
+ mWarpSEPos.z = info.mTranslate.z;
}
-/* ############################################################################################## */
-/* 80D26C08-80D26C0C 0000AC 0004+00 0/1 0/0 0/0 .rodata @4828 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4828 = 4000.0f;
-COMPILER_STRIP_GATE(0x80D26C08, &lit_4828);
-#pragma pop
-
/* 80D264E8-80D266FC 0023C8 0214+00 1/0 0/0 0/0 .text Draw__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Draw() {
- // NONMATCHING
+int daObjVolcBom_c::Draw() {
+ if (misAppearing) {
+ return 1;
+ }
+
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel1, &tevStr);
+ dComIfGd_setListBG();
+ mBtk1->entry(mModel1->getModelData());
+ mBrk1->entry(mModel1->getModelData());
+ if (field_0x5cb) {
+ mBck1->entry(mModel1->getModelData());
+ }
+
+ if (!field_0x960) {
+ mDoExt_modelUpdateDL(mModel1);
+ } else {
+ mModel1->calc();
+ }
+
+ #ifdef DEBUG
+ if (l_HIO.field_0x34 != 0)
+ {
+ cXyz cStack_24;
+ mDoMtx_stack_c::copy(mModel1->getAnmMtx(0));
+ mDoMtx_stack_c::multVecZero(&cStack_24);
+ dDbVw_drawSphereOpa(cStack_24, 30.0f, (GXColor) {0, 0, 0xff, 0xff}, 1);
+ field_0x960 = true;
+ return 1;
+ }
+ else
+ #endif
+ {
+ mDoExt_bckAnmRemove(mModel1->getModelData());
+ mDoExt_btkAnmRemove(mModel1->getModelData());
+ dComIfGd_setList();
+ tevStr.mLightPosWorld.x = current.pos.x;
+ tevStr.mLightPosWorld.y = mLightPosWorld.y + KREG_F(11);
+ tevStr.mLightPosWorld.z = current.pos.z;
+ tevStr.field_0x344 = field_0x978;
+ mShadowID = dComIfGd_setShadow(mShadowID, 0, mModel1, &current.pos,
+ 4000.0f, 0.0f, mLightPosWorld.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+
+ if (field_0x95e) {
+ g_env_light.setLightTevColorType_MAJI(mModel2, &tevStr);
+ mBtk2->entry(mModel2->getModelData());
+ mBrk2->entry(mModel2->getModelData());
+ mDoExt_modelUpdateDL(mModel2);
+ }
+ }
+
+ return 1;
}
/* 80D266FC-80D26774 0025DC 0078+00 1/0 0/0 0/0 .text Delete__14daObjVolcBom_cFv */
-void daObjVolcBom_c::Delete() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80D26E80-80D26EA8 00022C 0028+00 1/1 0/0 0/0 .data __vt__14daObjVolcBom_c */
-SECTION_DATA extern void* __vt__14daObjVolcBom_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__14daObjVolcBom_cFv,
- (void*)Create__14daObjVolcBom_cFv,
- (void*)Execute__14daObjVolcBom_cFPPA3_A4_f,
- (void*)Draw__14daObjVolcBom_cFv,
- (void*)Delete__14daObjVolcBom_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
-/* 80D26774-80D268A8 002654 0134+00 1/0 0/0 0/0 .text daObjVolcBom_create1st__FP14daObjVolcBom_c
- */
-static void daObjVolcBom_create1st(daObjVolcBom_c* param_0) {
- // NONMATCHING
-}
+int daObjVolcBom_c::Delete() {
+ #ifdef DEBUG
+ if (l_HIO.field_0x04 != 0) {
+ fopAcM_offSwitch(this, getSwbit());
+ }
+ #endif
-/* 80D268A8-80D268F0 002788 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ if (mSmokeEmitter != NULL) {
+ mSmokeEmitter->becomeInvalidEmitter();
+ mSmokeEmitter = NULL;
+ }
-/* 80D268F0-80D26938 0027D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ endSrcEffect();
+ endBindEffect();
+ dComIfG_resDelete(&mPhase, l_arcName);
-/* 80D26938-80D26994 002818 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ #ifdef DEBUG
+ l_HIO.removeHIO();
+ #endif
-/* 80D26994-80D26A04 002874 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
+ return 1;
}
-/* 80D26A04-80D26A74 0028E4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+/* 80D26774-80D268A8 002654 0134+00 1/0 0/0 0/0 .text daObjVolcBom_create1st__FP14daObjVolcBom_c
+ */
+static int daObjVolcBom_create1st(daObjVolcBom_c* i_this) {
+ fopAcM_SetupActor(i_this, daObjVolcBom_c);
+ return ((daObjVolcBom_c*)i_this)->create1st();
}
/* 80D26A74-80D26A94 002954 0020+00 1/0 0/0 0/0 .text
* daObjVolcBom_MoveBGDelete__FP14daObjVolcBom_c */
-static void daObjVolcBom_MoveBGDelete(daObjVolcBom_c* param_0) {
- // NONMATCHING
+static int daObjVolcBom_MoveBGDelete(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80D26A94-80D26AB4 002974 0020+00 1/0 0/0 0/0 .text
* daObjVolcBom_MoveBGExecute__FP14daObjVolcBom_c */
-static void daObjVolcBom_MoveBGExecute(daObjVolcBom_c* param_0) {
- // NONMATCHING
+static int daObjVolcBom_MoveBGExecute(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80D26AB4-80D26AE0 002994 002C+00 1/0 0/0 0/0 .text daObjVolcBom_MoveBGDraw__FP14daObjVolcBom_c
*/
-static void daObjVolcBom_MoveBGDraw(daObjVolcBom_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D26AE0-80D26B28 0029C0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
+static int daObjVolcBom_MoveBGDraw(daObjVolcBom_c* i_this) {
+ return i_this->MoveBGDraw();
}
-/* 80D26B28-80D26B44 002A08 001C+00 2/2 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
-extern "C" void func_80D26B28(void* _this, u8* param_0) {
- // NONMATCHING
-}
+/* 80D26DC4-80D26DE4 -00001 0020+00 1/0 0/0 0/0 .data daObjVolcBom_METHODS */
+static actor_method_class daObjVolcBom_METHODS = {
+ (process_method_func)daObjVolcBom_create1st,
+ (process_method_func)daObjVolcBom_MoveBGDelete,
+ (process_method_func)daObjVolcBom_MoveBGExecute,
+ NULL,
+ (process_method_func)daObjVolcBom_MoveBGDraw,
+};
-/* 80D26B44-80D26B4C 002A24 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80D26B44() {
- // NONMATCHING
-}
+/* 80D26DE4-80D26E14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_VolcanicBomb */
+extern actor_process_profile_definition g_profile_Obj_VolcanicBomb = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_VolcanicBomb, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjVolcBom_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 594, // mPriority
+ &daObjVolcBom_METHODS, // sub_method
+ 0x00040000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 80D26B4C-80D26B54 002A2C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80D26B4C() {
- // NONMATCHING
-}
/* 80D26C0C-80D26C0C 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_wood_statue.cpp b/src/d/actor/d_a_obj_wood_statue.cpp
index 5d9c2c8062..d57a51f1fa 100644
--- a/src/d/actor/d_a_obj_wood_statue.cpp
+++ b/src/d/actor/d_a_obj_wood_statue.cpp
@@ -477,7 +477,7 @@ int daObjWStatue_c::_delete() {
DeleteBase(dItem_data::getFieldArc(m_itemNo));
#ifdef DEBUG
- l_HIO.removeHIO();
+ l_HIO.removeHIO(this);
#endif
return 1;
diff --git a/src/f_pc/f_pc_base.cpp b/src/f_pc/f_pc_base.cpp
index a422bea1a2..f9f73276aa 100644
--- a/src/f_pc/f_pc_base.cpp
+++ b/src/f_pc/f_pc_base.cpp
@@ -145,7 +145,7 @@ base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_ap
fpcPi_Init(&pprocess->priority, pprocess, pprofile->layer_id, pprofile->list_id,
pprofile->list_priority);
- pprocess->init_state = 0;
+ pprocess->state.init_state = 0;
pprocess->unk_0xA = 0;
pprocess->id = i_procID;
pprocess->profname = i_profname;
@@ -164,19 +164,19 @@ int fpcBs_SubCreate(base_process_class* i_proc) {
case cPhs_NEXT_e:
case cPhs_COMPLEATE_e:
fpcBs_DeleteAppend(i_proc);
- i_proc->create_phase = cPhs_NEXT_e;
+ i_proc->state.create_phase = cPhs_NEXT_e;
return cPhs_NEXT_e;
case cPhs_INIT_e:
- case cPhs_LOADING_e:
- i_proc->init_state = 1;
- i_proc->create_phase = cPhs_INIT_e;
+case cPhs_LOADING_e:
+ i_proc->state.init_state = 1;
+ i_proc->state.create_phase = cPhs_INIT_e;
return cPhs_INIT_e;
case cPhs_UNK3_e:
- i_proc->create_phase = cPhs_UNK3_e;
+ i_proc->state.create_phase = cPhs_UNK3_e;
return cPhs_UNK3_e;
case cPhs_ERROR_e:
default:
- i_proc->create_phase = cPhs_ERROR_e;
+ i_proc->state.create_phase = cPhs_ERROR_e;
return cPhs_ERROR_e;
}
}
diff --git a/src/f_pc/f_pc_deletor.cpp b/src/f_pc/f_pc_deletor.cpp
index e365371927..8a2dff317c 100644
--- a/src/f_pc/f_pc_deletor.cpp
+++ b/src/f_pc/f_pc_deletor.cpp
@@ -100,7 +100,7 @@ s32 fpcDt_ToDeleteQ(base_process_class* i_proc) {
}
}
- i_proc->init_state = 3;
+ i_proc->state.init_state = 3;
return 1;
}
@@ -124,7 +124,7 @@ s32 fpcDt_Delete(void* i_proc) {
if (fpcCt_IsDoing(proc) == TRUE)
return 0;
- if (proc->init_state == 3)
+ if (proc->state.init_state == 3)
return 0;
int ret = fpcDt_ToDeleteQ(proc);
diff --git a/src/f_pc/f_pc_executor.cpp b/src/f_pc/f_pc_executor.cpp
index bf23306ac1..f6a981ba06 100644
--- a/src/f_pc/f_pc_executor.cpp
+++ b/src/f_pc/f_pc_executor.cpp
@@ -33,7 +33,7 @@ BOOL fpcEx_IsExist(fpc_ProcID i_id) {
/* 800213C4-80021418 0054+00 s=0 e=1 z=0 None .text fpcEx_Execute__FP18base_process_class */
s32 fpcEx_Execute(base_process_class* i_proc) {
- if (i_proc->init_state != 2 || fpcPause_IsEnable(i_proc, 1) == TRUE)
+ if (i_proc->state.init_state != 2 || fpcPause_IsEnable(i_proc, 1) == TRUE)
return 0;
return fpcBs_Execute(i_proc);
@@ -56,7 +56,7 @@ s32 fpcEx_ToLineQ(base_process_class* i_proc) {
}
#endif
- i_proc->init_state = 2;
+ i_proc->state.init_state = 2;
if (fpcBs_Is_JustOfType(g_fpcNd_type, i_proc->subtype)) {
fpcLyIt_OnlyHere(&((process_node_class*)i_proc)->layer, (fpcLyIt_OnlyHereFunc)fpcEx_ToLineQ, i_proc);
}
@@ -71,7 +71,7 @@ s32 fpcEx_ToLineQ(base_process_class* i_proc) {
*/
s32 fpcEx_ExecuteQTo(base_process_class* i_proc) {
if (fpcLyTg_QueueTo(&i_proc->layer_tag) == 1) {
- i_proc->init_state = 3;
+ i_proc->state.init_state = 3;
return 1;
}
diff --git a/src/f_pc/f_pc_leaf.cpp b/src/f_pc/f_pc_leaf.cpp
index b1906bf733..bb343afd34 100644
--- a/src/f_pc/f_pc_leaf.cpp
+++ b/src/f_pc/f_pc_leaf.cpp
@@ -57,7 +57,7 @@ int g_fpcLf_type;
/* 80021B14-80021B88 0074+00 s=1 e=0 z=0 None .text fpcLf_Create__FP14leafdraw_class */
s32 fpcLf_Create(leafdraw_class* i_leaf) {
- if (i_leaf->base.init_state == 0) {
+ if (i_leaf->base.state.init_state == 0) {
leaf_process_profile_definition* pprofile = (leaf_process_profile_definition*)i_leaf->base.profile;
i_leaf->leaf_methods = pprofile->sub_method;
i_leaf->base.subtype = fpcBs_MakeOfType(&g_fpcLf_type);
diff --git a/src/f_pc/f_pc_node.cpp b/src/f_pc/f_pc_node.cpp
index 72828c7968..f5c326d20e 100644
--- a/src/f_pc/f_pc_node.cpp
+++ b/src/f_pc/f_pc_node.cpp
@@ -105,7 +105,7 @@ s32 fpcNd_Create(process_node_class* i_procNode) {
layer_class* save_layer;
s32 ret;
- if (procnode->base.init_state == 0) {
+ if (procnode->base.state.init_state == 0) {
node_process_profile_definition* pprofile = (node_process_profile_definition*)procnode->base.profile;
procnode->base.subtype = fpcBs_MakeOfType(&g_fpcNd_type);
procnode->nodedraw_method = (nodedraw_method_class*)pprofile->sub_methods;
diff --git a/src/f_pc/f_pc_priority.cpp b/src/f_pc/f_pc_priority.cpp
index 8d7a4b3a63..896a28b028 100644
--- a/src/f_pc/f_pc_priority.cpp
+++ b/src/f_pc/f_pc_priority.cpp
@@ -85,7 +85,7 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
base_process_class* process = (base_process_class*)i_procPriority->base.mpTagData;
BOOL changed = FALSE;
- if (process->init_state == 3)
+ if (process->state.init_state == 3)
return 0;
if (!fpcPi_IsNormal(i_layerID, i_listID, i_priority))
@@ -108,7 +108,7 @@ s32 fpcPi_Change(process_priority_class* i_procPriority, fpc_ProcID i_layerID, u
changed = TRUE;
}
- if (process->init_state == 0 || process->init_state == 1) {
+ if (process->state.init_state == 0 || process->state.init_state == 1) {
i_procPriority->current_info = i_procPriority->queue_info;
return 1;
}