From d874f05f44b97c6852867453394e2308d771f86a Mon Sep 17 00:00:00 2001 From: hatal175 Date: Tue, 24 Dec 2024 12:36:01 +0200 Subject: [PATCH] d_a_obj_wsStick, d_a_obj_onsenTaru OK (#2268) * d_a_obj_wsStick, d_a_obj_onsenTaru OK * d_a_obj_pdtile OK * d_a_obj_stone equivalent * d_a_npc_lf OK * Z2SoundMgr OK * Remove fixed nonmatching comment * d_a_obj_kantera OK * Remove unneeded header * daMyna_c::deleteItem matching * d_a_obj_crvsteel OK --- config/GZ2E01/rels/d_a_npc_lf/symbols.txt | 20 +- .../GZ2E01/rels/d_a_obj_crvsteel/symbols.txt | 14 +- .../GZ2E01/rels/d_a_obj_kantera/symbols.txt | 16 +- .../GZ2E01/rels/d_a_obj_onsenTaru/symbols.txt | 16 +- config/GZ2E01/rels/d_a_obj_pdtile/symbols.txt | 40 +- config/GZ2E01/rels/d_a_obj_stone/symbols.txt | 64 +- .../GZ2E01/rels/d_a_obj_wdStick/symbols.txt | 16 +- configure.py | 16 +- include/JSystem/JAudio2/JAISound.h | 2 +- include/SSystem/SComponent/c_cc_d.h | 1 + include/Z2AudioLib/Z2Audience.h | 4 +- include/d/actor/d_a_npc_lf.h | 4 +- include/d/actor/d_a_obj_crvsteel.h | 32 +- include/d/actor/d_a_obj_kantera.h | 2 + include/d/actor/d_a_obj_pdtile.h | 57 +- include/d/actor/d_a_obj_stone.h | 11 +- include/d/actor/d_a_obj_wdStick.h | 69 +- include/d/actor/d_a_player.h | 1 + src/Z2AudioLib/Z2SeMgr.cpp | 19 +- src/Z2AudioLib/Z2SoundMgr.cpp | 4 - src/Z2AudioLib/Z2WolfHowlMgr.cpp | 2 +- src/d/actor/d_a_e_oct_bg.cpp | 2 +- src/d/actor/d_a_myna.cpp | 8 +- src/d/actor/d_a_npc_lf.cpp | 164 +- src/d/actor/d_a_obj_crvsteel.cpp | 386 ++--- src/d/actor/d_a_obj_kantera.cpp | 339 +--- src/d/actor/d_a_obj_pdtile.cpp | 997 ++++++------ src/d/actor/d_a_obj_stone.cpp | 1253 +++++---------- src/d/actor/d_a_obj_wdStick.cpp | 1393 +++++++---------- src/d/d_cc_uty.cpp | 12 +- 30 files changed, 1964 insertions(+), 3000 deletions(-) diff --git a/config/GZ2E01/rels/d_a_npc_lf/symbols.txt b/config/GZ2E01/rels/d_a_npc_lf/symbols.txt index 6176995b85b..6d5280cbc60 100644 --- a/config/GZ2E01/rels/d_a_npc_lf/symbols.txt +++ b/config/GZ2E01/rels/d_a_npc_lf/symbols.txt @@ -4,15 +4,15 @@ _unresolved = .text:0x00000058; // type:function size:0x20 scope:global __register_global_object = .text:0x00000078; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global __ct__14daNPC_LF_HIO_cFv = .text:0x000000EC; // type:function size:0x48 scope:global -nodeCallBack__FP8J3DJointi = .text:0x00000134; // type:function size:0x124 scope:global -daNPC_LF_Draw__FP12npc_lf_class = .text:0x00000258; // type:function size:0xB8 scope:global +nodeCallBack__FP8J3DJointi = .text:0x00000134; // type:function size:0x124 scope:local +daNPC_LF_Draw__FP12npc_lf_class = .text:0x00000258; // type:function size:0xB8 scope:local npc_lf_move__FP10fopAc_ac_cP4lf_s = .text:0x00000310; // type:function size:0x428 scope:global action__FP10fopAc_ac_cP4lf_s = .text:0x00000738; // type:function size:0x268 scope:global -daNPC_LF_Execute__FP12npc_lf_class = .text:0x000009A0; // type:function size:0xF4 scope:global -daNPC_LF_IsDelete__FP12npc_lf_class = .text:0x00000A94; // type:function size:0x8 scope:global -daNPC_LF_Delete__FP12npc_lf_class = .text:0x00000A9C; // type:function size:0x54 scope:global -useHeapInit__FP10fopAc_ac_c = .text:0x00000AF0; // type:function size:0xE0 scope:global -daNPC_LF_Create__FP10fopAc_ac_c = .text:0x00000BD0; // type:function size:0x254 scope:global +daNPC_LF_Execute__FP12npc_lf_class = .text:0x000009A0; // type:function size:0xF4 scope:local +daNPC_LF_IsDelete__FP12npc_lf_class = .text:0x00000A94; // type:function size:0x8 scope:local +daNPC_LF_Delete__FP12npc_lf_class = .text:0x00000A9C; // type:function size:0x54 scope:local +useHeapInit__FP10fopAc_ac_c = .text:0x00000AF0; // type:function size:0xE0 scope:local +daNPC_LF_Create__FP10fopAc_ac_c = .text:0x00000BD0; // type:function size:0x254 scope:local __dt__4lf_sFv = .text:0x00000E24; // type:function size:0x3C scope:global __ct__4lf_sFv = .text:0x00000E60; // type:function size:0x4 scope:global __dt__14daNPC_LF_HIO_cFv = .text:0x00000E64; // type:function size:0x48 scope:global @@ -56,10 +56,10 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4176 = .rodata:0x00000094; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000098; // type:object size:0x7 scope:local data:string_table wp$3976 = .data:0x00000000; // type:object size:0xC scope:local -l_daNPC_LF_Method = .data:0x0000000C; // type:object size:0x20 scope:global +l_daNPC_LF_Method = .data:0x0000000C; // type:object size:0x20 scope:local g_profile_NPC_LF = .data:0x0000002C; // type:object size:0x30 scope:global __vt__14daNPC_LF_HIO_c = .data:0x0000005C; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_333_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte +lbl_333_bss_8 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte @3764 = .bss:0x0000000C; // type:object size:0xC scope:local -l_HIO = .bss:0x00000018; // type:object size:0x1C scope:global data:byte +l_HIO = .bss:0x00000018; // type:object size:0x1C scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_crvsteel/symbols.txt b/config/GZ2E01/rels/d_a_obj_crvsteel/symbols.txt index 814d475f1dc..12a199ab5d2 100644 --- a/config/GZ2E01/rels/d_a_obj_crvsteel/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_crvsteel/symbols.txt @@ -1,20 +1,20 @@ _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 -daObjCRVSTEEL_Create__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:global -daObjCRVSTEEL_Delete__FP15daObjCRVSTEEL_c = .text:0x00000098; // type:function size:0x24 scope:global +daObjCRVSTEEL_Create__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:local +daObjCRVSTEEL_Delete__FP15daObjCRVSTEEL_c = .text:0x00000098; // type:function size:0x24 scope:local OpenSet__15daObjCRVSTEEL_cFff = .text:0x000000BC; // type:function size:0x1C scope:global CloseSet__15daObjCRVSTEEL_cFf = .text:0x000000D8; // type:function size:0x10 scope:global CloseExecute__15daObjCRVSTEEL_cFv = .text:0x000000E8; // type:function size:0x78 scope:global OpenExecute__15daObjCRVSTEEL_cFv = .text:0x00000160; // type:function size:0x28 scope:global Action__15daObjCRVSTEEL_cFv = .text:0x00000188; // type:function size:0x48 scope:global setBaseMtx__15daObjCRVSTEEL_cFv = .text:0x000001D0; // type:function size:0x5C scope:global -daObjCRVSTEEL_Draw__FP15daObjCRVSTEEL_c = .text:0x0000022C; // type:function size:0x2C scope:global -daObjCRVSTEEL_Execute__FP15daObjCRVSTEEL_c = .text:0x00000258; // type:function size:0x20 scope:global +daObjCRVSTEEL_Draw__FP15daObjCRVSTEEL_c = .text:0x0000022C; // type:function size:0x2C scope:local +daObjCRVSTEEL_Execute__FP15daObjCRVSTEEL_c = .text:0x00000258; // type:function size:0x20 scope:local CreateHeap__15daObjCRVSTEEL_cFv = .text:0x00000278; // type:function size:0x78 scope:global create__15daObjCRVSTEEL_cFv = .text:0x000002F0; // type:function size:0x200 scope:global __dt__12dBgS_ObjAcchFv = .text:0x000004F0; // type:function size:0x70 scope:global -daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c = .text:0x00000560; // type:function size:0x8 scope:global +daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c = .text:0x00000560; // type:function size:0x8 scope:local Create__15daObjCRVSTEEL_cFv = .text:0x00000568; // type:function size:0x44 scope:global Execute__15daObjCRVSTEEL_cFPPA3_A4_f = .text:0x000005AC; // type:function size:0x4C scope:global Draw__15daObjCRVSTEEL_cFv = .text:0x000005F8; // type:function size:0x84 scope:global @@ -38,8 +38,8 @@ _dtors = .dtors:0x00000000; // type:label scope:global @3949 = .rodata:0x0000002C; // type:object size:0x4 scope:local @3950 = .rodata:0x00000030; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000034; // type:object size:0x2F scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjCRVSTEEL_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjCRVSTEEL_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_CRVSTEEL = .data:0x00000024; // type:object size:0x30 scope:global __vt__12dBgS_ObjAcch = .data:0x00000054; // type:object size:0x24 scope:global __vt__15daObjCRVSTEEL_c = .data:0x00000078; // type:object size:0x28 scope:global diff --git a/config/GZ2E01/rels/d_a_obj_kantera/symbols.txt b/config/GZ2E01/rels/d_a_obj_kantera/symbols.txt index fb4374586f6..efbed3ce328 100644 --- a/config/GZ2E01/rels/d_a_obj_kantera/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_kantera/symbols.txt @@ -23,17 +23,17 @@ actionGetDemo__15daItemKantera_cFv = .text:0x00000D4C; // type:function size:0x6 execute__15daItemKantera_cFv = .text:0x00000DB0; // type:function size:0x12C scope:global draw__15daItemKantera_cFv = .text:0x00000EDC; // type:function size:0x54 scope:global _delete__15daItemKantera_cFv = .text:0x00000F30; // type:function size:0x38 scope:global -daItemKantera_Draw__FP15daItemKantera_c = .text:0x00000F68; // type:function size:0x20 scope:global -daItemKantera_Execute__FP15daItemKantera_c = .text:0x00000F88; // type:function size:0x20 scope:global -daItemKantera_Delete__FP15daItemKantera_c = .text:0x00000FA8; // type:function size:0x20 scope:global -daItemKantera_Create__FP10fopAc_ac_c = .text:0x00000FC8; // type:function size:0x20 scope:global +daItemKantera_Draw__FP15daItemKantera_c = .text:0x00000F68; // type:function size:0x20 scope:local +daItemKantera_Execute__FP15daItemKantera_c = .text:0x00000F88; // type:function size:0x20 scope:local +daItemKantera_Delete__FP15daItemKantera_c = .text:0x00000FA8; // type:function size:0x20 scope:local +daItemKantera_Create__FP10fopAc_ac_c = .text:0x00000FC8; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00000FE8; // type:function size:0x48 scope:global @36@__dt__12dBgS_ObjAcchFv = .text:0x00001030; // type:function size:0x8 scope:local @20@__dt__12dBgS_ObjAcchFv = .text:0x00001038; // type:function size:0x8 scope:local _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local -l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:global +l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:local @3855 = .rodata:0x00000044; // type:object size:0x4 scope:local @3856 = .rodata:0x00000048; // type:object size:0x8 scope:local @3857 = .rodata:0x00000050; // type:object size:0x8 scope:local @@ -48,14 +48,14 @@ l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:global @4145 = .rodata:0x00000080; // type:object size:0x4 scope:local data:string @stringBase0 = .rodata:0x00000084; // type:object size:0x10 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 @4184 = .data:0x00000020; // type:object size:0xC scope:local @4185 = .data:0x0000002C; // type:object size:0xC scope:local @4186 = .data:0x00000038; // type:object size:0xC scope:local @4187 = .data:0x00000044; // type:object size:0xC scope:local l_demoFunc$4183 = .data:0x00000050; // type:object size:0x30 scope:local -l_daItemKantera_Method = .data:0x00000080; // type:object size:0x20 scope:global +l_daItemKantera_Method = .data:0x00000080; // type:object size:0x20 scope:local g_profile_Obj_Kantera = .data:0x000000A0; // type:object size:0x30 scope:global __vt__12dBgS_AcchCir = .data:0x000000D0; // type:object size:0xC scope:global __vt__10cCcD_GStts = .data:0x000000DC; // type:object size:0xC scope:global @@ -65,4 +65,4 @@ __vt__8cM3dGAab = .data:0x00000100; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x0000010C; // type:object size:0x24 scope:global __vt__15daItemKantera_c = .data:0x00000130; // type:object size:0x44 scope:global __vt__8cM3dGPla = .data:0x00000174; // type:object size:0xC scope:global -lbl_494_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_494_bss_0 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_onsenTaru/symbols.txt b/config/GZ2E01/rels/d_a_obj_onsenTaru/symbols.txt index 0288737ef13..4af54026e08 100644 --- a/config/GZ2E01/rels/d_a_obj_onsenTaru/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_onsenTaru/symbols.txt @@ -33,10 +33,10 @@ mode_proc_sink__11daOnsTaru_cFv = .text:0x00001050; // type:function size:0xF0 s breakEffSet__11daOnsTaru_cFv = .text:0x00001140; // type:function size:0x298 scope:global Draw__11daOnsTaru_cFv = .text:0x000013D8; // type:function size:0xA4 scope:global Delete__11daOnsTaru_cFv = .text:0x0000147C; // type:function size:0x30 scope:global -daOnsTaru_Draw__FP11daOnsTaru_c = .text:0x000014AC; // type:function size:0x2C scope:global -daOnsTaru_Execute__FP11daOnsTaru_c = .text:0x000014D8; // type:function size:0x2C scope:global -daOnsTaru_Delete__FP11daOnsTaru_c = .text:0x00001504; // type:function size:0x2C scope:global -daOnsTaru_Create__FP10fopAc_ac_c = .text:0x00001530; // type:function size:0x20 scope:global +daOnsTaru_Draw__FP11daOnsTaru_c = .text:0x000014AC; // type:function size:0x2C scope:local +daOnsTaru_Execute__FP11daOnsTaru_c = .text:0x000014D8; // type:function size:0x2C scope:local +daOnsTaru_Delete__FP11daOnsTaru_c = .text:0x00001504; // type:function size:0x2C scope:local +daOnsTaru_Create__FP10fopAc_ac_c = .text:0x00001530; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00001550; // type:function size:0x48 scope:global __dt__15daOnsTaru_HIO_cFv = .text:0x00001598; // type:function size:0x6C scope:global __sinit_d_a_obj_onsenTaru_cpp = .text:0x00001604; // type:function size:0x70 scope:local @@ -68,7 +68,7 @@ mCcDObjInfo__11daOnsTaru_c = .rodata:0x00000008; // type:object size:0x30 scope: @4186 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float @stringBase0 = .rodata:0x0000007C; // type:object size:0x21 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 mCcDCyl__11daOnsTaru_c = .data:0x00000020; // type:object size:0x44 scope:global @4002 = .data:0x00000064; // type:object size:0xC scope:local @@ -77,7 +77,7 @@ mCcDCyl__11daOnsTaru_c = .data:0x00000020; // type:object size:0x44 scope:global @4005 = .data:0x00000088; // type:object size:0xC scope:local @4006 = .data:0x00000094; // type:object size:0xC scope:local l_mode_func$4001 = .data:0x000000A0; // type:object size:0x3C scope:local -l_daOnsTaru_Method = .data:0x000000DC; // type:object size:0x20 scope:global +l_daOnsTaru_Method = .data:0x000000DC; // type:object size:0x20 scope:local g_profile_Obj_OnsenTaru = .data:0x000000FC; // type:object size:0x30 scope:global __vt__12dBgS_AcchCir = .data:0x0000012C; // type:object size:0xC scope:global __vt__10cCcD_GStts = .data:0x00000138; // type:object size:0xC scope:global @@ -91,5 +91,5 @@ __vt__18fOpAcm_HIO_entry_c = .data:0x000001B0; // type:object size:0xC scope:glo __vt__14mDoHIO_entry_c = .data:0x000001BC; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3647 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0x10 scope:global data:byte -lbl_588_bss_24 = .bss:0x00000024; // type:object size:0x1 data:byte +l_HIO = .bss:0x00000014; // type:object size:0x10 scope:local data:byte +init$1920 = .bss:0x00000024; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_pdtile/symbols.txt b/config/GZ2E01/rels/d_a_obj_pdtile/symbols.txt index 9296c49b25a..d374731bb79 100644 --- a/config/GZ2E01/rels/d_a_obj_pdtile/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_pdtile/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 -rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x00000078; // type:function size:0x28 scope:global +rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x00000078; // type:function size:0x28 scope:local create1st__13daObjPDtile_cFv = .text:0x000000A0; // type:function size:0x1A0 scope:global setMtx__13daObjPDtile_cFv = .text:0x00000240; // type:function size:0x110 scope:global rideActor__13daObjPDtile_cFP10fopAc_ac_c = .text:0x00000350; // type:function size:0x260 scope:global @@ -11,13 +11,13 @@ Execute__13daObjPDtile_cFPPA3_A4_f = .text:0x00000734; // type:function size:0xB __dt__14dBgS_ObjGndChkFv = .text:0x00001298; // type:function size:0x78 scope:global Draw__13daObjPDtile_cFv = .text:0x00001310; // type:function size:0x144 scope:global Delete__13daObjPDtile_cFv = .text:0x00001454; // type:function size:0x44 scope:global -daObjPDtile_create1st__FP13daObjPDtile_c = .text:0x00001498; // type:function size:0xFC scope:global +daObjPDtile_create1st__FP13daObjPDtile_c = .text:0x00001498; // type:function size:0xFC scope:local __dt__8cM3dGCylFv = .text:0x00001594; // type:function size:0x48 scope:global __dt__8cM3dGAabFv = .text:0x000015DC; // type:function size:0x48 scope:global __dt__10dCcD_GSttsFv = .text:0x00001624; // type:function size:0x5C scope:global -daObjPDtile_MoveBGDelete__FP13daObjPDtile_c = .text:0x00001680; // type:function size:0x20 scope:global -daObjPDtile_MoveBGExecute__FP13daObjPDtile_c = .text:0x000016A0; // type:function size:0x20 scope:global -daObjPDtile_MoveBGDraw__FP13daObjPDtile_c = .text:0x000016C0; // type:function size:0x2C scope:global +daObjPDtile_MoveBGDelete__FP13daObjPDtile_c = .text:0x00001680; // type:function size:0x20 scope:local +daObjPDtile_MoveBGExecute__FP13daObjPDtile_c = .text:0x000016A0; // type:function size:0x20 scope:local +daObjPDtile_MoveBGDraw__FP13daObjPDtile_c = .text:0x000016C0; // type:function size:0x2C scope:local __dt__10cCcD_GSttsFv = .text:0x000016EC; // type:function size:0x48 scope:global __dt__13daObjPDtile_cFv = .text:0x00001734; // type:function size:0x178 scope:global @20@__dt__14dBgS_ObjGndChkFv = .text:0x000018AC; // type:function size:0x8 scope:local @@ -56,22 +56,22 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4256 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float @stringBase0 = .rodata:0x00000074; // type:object size:0x1C 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 -l_arcName4 = .data:0x00000020; // type:object size:0x4 scope:global -l_dzbidx4 = .data:0x00000024; // type:object size:0x8 scope:global -l_bmdidx4 = .data:0x0000002C; // type:object size:0x8 scope:global -l_cull_box4 = .data:0x00000034; // type:object size:0x30 scope:global -l_arcName7 = .data:0x00000064; // type:object size:0x4 scope:global -l_dzbidx7 = .data:0x00000068; // type:object size:0x4 scope:global -l_bmdidx7 = .data:0x0000006C; // type:object size:0x4 scope:global -l_cull_box7 = .data:0x00000070; // type:object size:0x18 scope:global -l_arcName9 = .data:0x00000088; // type:object size:0x4 scope:global -l_dzbidx9 = .data:0x0000008C; // type:object size:0x4 scope:global -l_bmdidx9 = .data:0x00000090; // type:object size:0x4 scope:global -l_cull_box9 = .data:0x00000094; // type:object size:0x18 scope:global -cc_cyl_src = .data:0x000000AC; // type:object size:0x44 scope:global -daObjPDtile_METHODS = .data:0x000000F0; // type:object size:0x20 scope:global +l_arcName4 = .data:0x00000020; // type:object size:0x4 scope:local +l_dzbidx4 = .data:0x00000024; // type:object size:0x8 scope:local +l_bmdidx4 = .data:0x0000002C; // type:object size:0x8 scope:local +l_cull_box4 = .data:0x00000034; // type:object size:0x30 scope:local +l_arcName7 = .data:0x00000064; // type:object size:0x4 scope:local +l_dzbidx7 = .data:0x00000068; // type:object size:0x4 scope:local +l_bmdidx7 = .data:0x0000006C; // type:object size:0x4 scope:local +l_cull_box7 = .data:0x00000070; // type:object size:0x18 scope:local +l_arcName9 = .data:0x00000088; // type:object size:0x4 scope:local +l_dzbidx9 = .data:0x0000008C; // type:object size:0x4 scope:local +l_bmdidx9 = .data:0x00000090; // type:object size:0x4 scope:local +l_cull_box9 = .data:0x00000094; // type:object size:0x18 scope:local +cc_cyl_src = .data:0x000000AC; // type:object size:0x44 scope:local +daObjPDtile_METHODS = .data:0x000000F0; // type:object size:0x20 scope:local g_profile_Obj_PDtile = .data:0x00000110; // type:object size:0x30 scope:global __vt__10cCcD_GStts = .data:0x00000140; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x0000014C; // type:object size:0xC scope:global diff --git a/config/GZ2E01/rels/d_a_obj_stone/symbols.txt b/config/GZ2E01/rels/d_a_obj_stone/symbols.txt index 77d5bb5f2d0..1e9432a026e 100644 --- a/config/GZ2E01/rels/d_a_obj_stone/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_stone/symbols.txt @@ -3,7 +3,7 @@ _epilog = .text:0x0000002C; // type:function size:0x2C scope:global _unresolved = .text:0x00000058; // type:function size:0x20 scope:global bound__FP4cXyzRC13cBgS_PolyInfof = .text:0x00000078; // type:function size:0x2E4 scope:global __dt__8cM3dGPlaFv = .text:0x0000035C; // type:function size:0x48 scope:global -CheckCreateHeap__FP10fopAc_ac_c = .text:0x000003A4; // type:function size:0x20 scope:global +CheckCreateHeap__FP10fopAc_ac_c = .text:0x000003A4; // type:function size:0x20 scope:local initBaseMtx__12daObjStone_cFv = .text:0x000003C4; // type:function size:0xA4 scope:global setBaseMtx__12daObjStone_cFv = .text:0x00000468; // type:function size:0xD8 scope:global Create__12daObjStone_cFv = .text:0x00000540; // type:function size:0x280 scope:global @@ -40,10 +40,10 @@ set_carry_eff__12daObjStone_cFv = .text:0x000036D8; // type:function size:0x104 effect_delete__12daObjStone_cFb = .text:0x000037DC; // type:function size:0xAC scope:global draw__12daObjStone_cFv = .text:0x00003888; // type:function size:0xC0 scope:global _delete__12daObjStone_cFv = .text:0x00003948; // type:function size:0x74 scope:global -daObjStone_Draw__FP12daObjStone_c = .text:0x000039BC; // type:function size:0x20 scope:global -daObjStone_Execute__FP12daObjStone_c = .text:0x000039DC; // type:function size:0x20 scope:global -daObjStone_Delete__FP12daObjStone_c = .text:0x000039FC; // type:function size:0x20 scope:global -daObjStone_Create__FP10fopAc_ac_c = .text:0x00003A1C; // type:function size:0x20 scope:global +daObjStone_Draw__FP12daObjStone_c = .text:0x000039BC; // type:function size:0x20 scope:local +daObjStone_Execute__FP12daObjStone_c = .text:0x000039DC; // type:function size:0x20 scope:local +daObjStone_Delete__FP12daObjStone_c = .text:0x000039FC; // type:function size:0x20 scope:local +daObjStone_Create__FP10fopAc_ac_c = .text:0x00003A1C; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00003A3C; // type:function size:0x48 scope:global @36@__dt__12dBgS_ObjAcchFv = .text:0x00003A84; // type:function size:0x8 scope:local @20@__dt__12dBgS_ObjAcchFv = .text:0x00003A8C; // type:function size:0x8 scope:local @@ -53,29 +53,29 @@ __dt__10cCcD_GSttsFv = .text:0x00003A3C; // type:function size:0x48 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_bmdIdx = .rodata:0x00000000; // type:object size:0x8 scope:global -l_sph_src = .rodata:0x00000008; // type:object size:0x40 scope:global -l_r = .rodata:0x00000048; // type:object size:0x8 scope:global -l_rolling_speedF = .rodata:0x00000050; // type:object size:0x8 scope:global -l_rolling_time = .rodata:0x00000058; // type:object size:0x8 scope:global -l_initial_offsetY = .rodata:0x00000060; // type:object size:0x8 scope:global -l_put_offsetY = .rodata:0x00000068; // type:object size:0x8 scope:global -l_weight = .rodata:0x00000070; // type:object size:0x2 scope:global -l_speedH = .rodata:0x00000074; // type:object size:0x8 scope:global -l_speedV = .rodata:0x0000007C; // type:object size:0x8 scope:global -l_water_speedH = .rodata:0x00000084; // type:object size:0x8 scope:global -l_water_speedV = .rodata:0x0000008C; // type:object size:0x8 scope:global -l_water_resist = .rodata:0x00000094; // type:object size:0x8 scope:global -l_water_walk_resist = .rodata:0x0000009C; // type:object size:0x8 scope:global -l_buoyancy = .rodata:0x000000A4; // type:object size:0x8 scope:global -l_shadow_size = .rodata:0x000000AC; // type:object size:0x8 scope:global -l_wpillar_scl = .rodata:0x000000B4; // type:object size:0x8 scope:global -l_hamon_scl = .rodata:0x000000BC; // type:object size:0x8 scope:global -l_yogan_eff_scl = .rodata:0x000000C4; // type:object size:0x8 scope:global -l_wall_h = .rodata:0x000000CC; // type:object size:0x8 scope:global -l_wall_r = .rodata:0x000000D4; // type:object size:0x8 scope:global -l_rot_angle = .rodata:0x000000DC; // type:object size:0x4 scope:global -l_walk_rot_angle = .rodata:0x000000E0; // type:object size:0x4 scope:global +l_bmdIdx = .rodata:0x00000000; // type:object size:0x8 scope:local +l_sph_src = .rodata:0x00000008; // type:object size:0x40 scope:local +l_r = .rodata:0x00000048; // type:object size:0x8 scope:local +l_rolling_speedF = .rodata:0x00000050; // type:object size:0x8 scope:local +l_rolling_time = .rodata:0x00000058; // type:object size:0x8 scope:local +l_initial_offsetY = .rodata:0x00000060; // type:object size:0x8 scope:local +l_put_offsetY = .rodata:0x00000068; // type:object size:0x8 scope:local +l_weight = .rodata:0x00000070; // type:object size:0x2 scope:local +l_speedH = .rodata:0x00000074; // type:object size:0x8 scope:local +l_speedV = .rodata:0x0000007C; // type:object size:0x8 scope:local +l_water_speedH = .rodata:0x00000084; // type:object size:0x8 scope:local +l_water_speedV = .rodata:0x0000008C; // type:object size:0x8 scope:local +l_water_resist = .rodata:0x00000094; // type:object size:0x8 scope:local +l_water_walk_resist = .rodata:0x0000009C; // type:object size:0x8 scope:local +l_buoyancy = .rodata:0x000000A4; // type:object size:0x8 scope:local +l_shadow_size = .rodata:0x000000AC; // type:object size:0x8 scope:local +l_wpillar_scl = .rodata:0x000000B4; // type:object size:0x8 scope:local +l_hamon_scl = .rodata:0x000000BC; // type:object size:0x8 scope:local +l_yogan_eff_scl = .rodata:0x000000C4; // type:object size:0x8 scope:local +l_wall_h = .rodata:0x000000CC; // type:object size:0x8 scope:local +l_wall_r = .rodata:0x000000D4; // type:object size:0x8 scope:local +l_rot_angle = .rodata:0x000000DC; // type:object size:0x4 scope:local +l_walk_rot_angle = .rodata:0x000000E0; // type:object size:0x4 scope:local @3746 = .rodata:0x000000E4; // type:object size:0x4 scope:local @3747 = .rodata:0x000000E8; // type:object size:0x8 scope:local @3748 = .rodata:0x000000F0; // type:object size:0x8 scope:local @@ -112,9 +112,9 @@ l_eff_id$5089 = .rodata:0x0000016C; // type:object size:0x6 scope:local l_carry_eff_id$5307 = .rodata:0x00000180; // type:object size:0x6 scope:local @stringBase0 = .rodata:0x00000188; // type:object size:0x17 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 -l_arcName = .data:0x00000020; // type:object size:0x8 scope:global +l_arcName = .data:0x00000020; // type:object size:0x8 scope:local @4015 = .data:0x00000028; // type:object size:0xC scope:local @4016 = .data:0x00000034; // type:object size:0xC scope:local @4017 = .data:0x00000040; // type:object size:0xC scope:local @@ -123,7 +123,7 @@ l_arcName = .data:0x00000020; // type:object size:0x8 scope:global @4020 = .data:0x00000064; // type:object size:0xC scope:local @4021 = .data:0x00000070; // type:object size:0xC scope:local l_func$4014 = .data:0x0000007C; // type:object size:0x54 scope:local -l_daObjStone_Method = .data:0x000000D0; // type:object size:0x20 scope:global +l_daObjStone_Method = .data:0x000000D0; // type:object size:0x20 scope:local g_profile_Obj_Stone = .data:0x000000F0; // type:object size:0x30 scope:global __vt__14dBgS_ObjGndChk = .data:0x00000120; // type:object size:0x30 scope:global __vt__12dBgS_AcchCir = .data:0x00000150; // type:object size:0xC scope:global @@ -133,4 +133,4 @@ __vt__8cM3dGSph = .data:0x00000174; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000180; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x0000018C; // type:object size:0x24 scope:global __vt__8cM3dGPla = .data:0x000001B0; // type:object size:0xC scope:global -lbl_633_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_633_bss_0 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_wdStick/symbols.txt b/config/GZ2E01/rels/d_a_obj_wdStick/symbols.txt index ccc2a476869..9a02cf7ec82 100644 --- a/config/GZ2E01/rels/d_a_obj_wdStick/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_wdStick/symbols.txt @@ -37,10 +37,10 @@ mode_init_sink__11daWdStick_cFv = .text:0x00002308; // type:function size:0x24 s mode_proc_sink__11daWdStick_cFv = .text:0x0000232C; // type:function size:0x124 scope:global Draw__11daWdStick_cFv = .text:0x00002450; // type:function size:0x64 scope:global Delete__11daWdStick_cFv = .text:0x000024B4; // type:function size:0x30 scope:global -daWdStick_Draw__FP11daWdStick_c = .text:0x000024E4; // type:function size:0x2C scope:global -daWdStick_Execute__FP11daWdStick_c = .text:0x00002510; // type:function size:0x2C scope:global -daWdStick_Delete__FP11daWdStick_c = .text:0x0000253C; // type:function size:0x2C scope:global -daWdStick_Create__FP10fopAc_ac_c = .text:0x00002568; // type:function size:0x20 scope:global +daWdStick_Draw__FP11daWdStick_c = .text:0x000024E4; // type:function size:0x2C scope:local +daWdStick_Execute__FP11daWdStick_c = .text:0x00002510; // type:function size:0x2C scope:local +daWdStick_Delete__FP11daWdStick_c = .text:0x0000253C; // type:function size:0x2C scope:local +daWdStick_Create__FP10fopAc_ac_c = .text:0x00002568; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00002588; // type:function size:0x48 scope:global __dt__15daWdStick_HIO_cFv = .text:0x000025D0; // type:function size:0x5C scope:global __sinit_d_a_obj_wdStick_cpp = .text:0x0000262C; // type:function size:0x70 scope:local @@ -94,7 +94,7 @@ mCcDObjInfo__11daWdStick_c = .rodata:0x00000000; // type:object size:0x30 scope: @4780 = .rodata:0x000000D4; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x000000D8; // type:object size:0xA 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 mCcDSph__11daWdStick_c = .data:0x00000020; // type:object size:0x40 scope:global @4470 = .data:0x00000060; // type:object size:0xC scope:local @@ -103,7 +103,7 @@ mCcDSph__11daWdStick_c = .data:0x00000020; // type:object size:0x40 scope:global @4473 = .data:0x00000084; // type:object size:0xC scope:local @4474 = .data:0x00000090; // type:object size:0xC scope:local l_mode_func$4469 = .data:0x0000009C; // type:object size:0x3C scope:local -l_daWdStick_Method = .data:0x000000D8; // type:object size:0x20 scope:global +l_daWdStick_Method = .data:0x000000D8; // type:object size:0x20 scope:local g_profile_Obj_WdStick = .data:0x000000F8; // type:object size:0x30 scope:global __vt__14dBgS_ObjGndChk = .data:0x00000128; // type:object size:0x30 scope:global __vt__8cM3dGPla = .data:0x00000158; // type:object size:0xC scope:global @@ -118,5 +118,5 @@ __vt__15daWdStick_HIO_c = .data:0x000001DC; // type:object size:0xC scope:global __vt__14mDoHIO_entry_c = .data:0x000001E8; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3643 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0xC scope:global data:2byte -lbl_683_bss_20 = .bss:0x00000020; // type:object size:0x1 data:byte +l_HIO = .bss:0x00000014; // type:object size:0xC scope:local data:2byte +lbl_683_bss_20 = .bss:0x00000020; // type:object size:0x1 scope:local data:byte diff --git a/configure.py b/configure.py index 4299e6d8b35..5ad027c5760 100644 --- a/configure.py +++ b/configure.py @@ -851,7 +851,7 @@ config.libs = [ Object(Matching, "Z2AudioLib/Z2Calc.cpp"), Object(NonMatching, "Z2AudioLib/Z2AudioArcLoader.cpp"), Object(Matching, "Z2AudioLib/Z2Param.cpp"), - Object(NonMatching, "Z2AudioLib/Z2SoundMgr.cpp"), + Object(Matching, "Z2AudioLib/Z2SoundMgr.cpp"), Object(Matching, "Z2AudioLib/Z2SoundStarter.cpp"), Object(NonMatching, "Z2AudioLib/Z2SoundHandles.cpp"), Object(NonMatching, "Z2AudioLib/Z2SeMgr.cpp"), @@ -1698,7 +1698,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_ks"), ActorRel(NonMatching, "d_a_npc_kyury"), ActorRel(NonMatching, "d_a_npc_len"), - ActorRel(NonMatching, "d_a_npc_lf"), + ActorRel(Matching, "d_a_npc_lf"), ActorRel(NonMatching, "d_a_npc_lud"), ActorRel(NonMatching, "d_a_npc_midp"), ActorRel(Matching, "d_a_npc_mk"), @@ -1796,7 +1796,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_crvhahen"), ActorRel(NonMatching, "d_a_obj_crvlh_down"), ActorRel(NonMatching, "d_a_obj_crvlh_up"), - ActorRel(NonMatching, "d_a_obj_crvsteel"), + ActorRel(Matching, "d_a_obj_crvsteel"), ActorRel(Matching, "d_a_obj_crystal"), ActorRel(NonMatching, "d_a_obj_cwall"), ActorRel(Matching, "d_a_obj_damCps"), @@ -1859,7 +1859,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_kago"), ActorRel(NonMatching, "d_a_obj_kaisou"), ActorRel(NonMatching, "d_a_obj_kamakiri"), - ActorRel(NonMatching, "d_a_obj_kantera"), + ActorRel(Matching, "d_a_obj_kantera"), ActorRel(NonMatching, "d_a_obj_katatsumuri"), ActorRel(Matching, "d_a_obj_kazeneko"), ActorRel(NonMatching, "d_a_obj_kbox"), @@ -1953,9 +1953,9 @@ config.libs = [ ActorRel(Matching, "d_a_obj_oiltubo"), ActorRel(Matching, "d_a_obj_onsen"), ActorRel(Matching, "d_a_obj_onsenFire"), - ActorRel(NonMatching, "d_a_obj_onsenTaru"), + ActorRel(Matching, "d_a_obj_onsenTaru"), ActorRel(NonMatching, "d_a_obj_pdoor"), - ActorRel(NonMatching, "d_a_obj_pdtile"), + ActorRel(Matching, "d_a_obj_pdtile"), ActorRel(NonMatching, "d_a_obj_pdwall"), ActorRel(NonMatching, "d_a_obj_picture"), ActorRel(Matching, "d_a_obj_pillar"), @@ -1998,7 +1998,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_ss_drink"), ActorRel(Matching, "d_a_obj_ss_item"), ActorRel(NonMatching, "d_a_obj_stairBlock"), - ActorRel(NonMatching, "d_a_obj_stone"), + ActorRel(Equivalent, "d_a_obj_stone"), ActorRel(NonMatching, "d_a_obj_stopper"), ActorRel(NonMatching, "d_a_obj_stopper2"), ActorRel(Matching, "d_a_obj_suisya"), @@ -2048,7 +2048,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_waterPillar"), ActorRel(Matching, "d_a_obj_waterfall"), ActorRel(NonMatching, "d_a_obj_wchain"), - ActorRel(NonMatching, "d_a_obj_wdStick"), + ActorRel(Matching, "d_a_obj_wdStick"), ActorRel(NonMatching, "d_a_obj_web0"), ActorRel(Matching, "d_a_obj_web1"), ActorRel(Matching, "d_a_obj_well_cover"), diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 76848227d4e..e7429af6304 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -19,7 +19,7 @@ public: JAISoundID() {} - bool isAnonymous() { return mId.mFullId == 0xffffffff; } + bool isAnonymous() const { return mId.mFullId == 0xffffffff; } void setAnonymous() { mId.mFullId = -1; } union { diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 2e7393be492..00427f85e18 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -45,6 +45,7 @@ enum cCcD_ObjAtType { /* 0x00004000 */ AT_TYPE_HOOKSHOT = (1 << 14), /* 0x00008000 */ AT_TYPE_8000 = (1 << 15), /* 0x00010000 */ AT_TYPE_BOOMERANG = (1 << 16), + /* 0x00020000 */ AT_TYPE_20000 = (1 << 17), /* 0x00040000 */ AT_TYPE_40000 = (1 << 18), /* 0x00080000 */ AT_TYPE_SPINNER = (1 << 19), /* 0x00100000 */ AT_TYPE_CSTATUE_BOSS_SWING = (1 << 20), diff --git a/include/Z2AudioLib/Z2Audience.h b/include/Z2AudioLib/Z2Audience.h index b157e9611bf..e01b6d4b0fa 100644 --- a/include/Z2AudioLib/Z2Audience.h +++ b/include/Z2AudioLib/Z2Audience.h @@ -215,8 +215,8 @@ struct Z2Audience : public JAIAudience, public JASGlobalInstance { /* 802BD71C */ virtual void mixChannelOut(JASSoundParams const&, JAIAudible*, int); Z2SpotMic* getLinkMic() { return mLinkMic; } - JGeometry::TVec3 getAudioCamPos() { - return *mAudioCamera[0].getPos(); + JGeometry::TVec3 getAudioCamPos(int idx) { + return *mAudioCamera[idx].getPos(); } Z2Audience3DSetting* getSetting() { return &mSetting; } diff --git a/include/d/actor/d_a_npc_lf.h b/include/d/actor/d_a_npc_lf.h index 13401f3b54c..771a3dcdaef 100644 --- a/include/d/actor/d_a_npc_lf.h +++ b/include/d/actor/d_a_npc_lf.h @@ -8,8 +8,8 @@ struct lf_s { /* 80A6A8E0 */ lf_s(); /* 0x00 */ J3DModel* mpModel; - /* 0x04 */ cXyz field_0x04; - /* 0x10 */ csXyz field_0x10; + /* 0x04 */ cXyz mPos; + /* 0x10 */ csXyz mAngle; /* 0x16 */ s8 field_0x16; /* 0x17 */ s8 field_0x17; /* 0x18 */ s16 field_0x18; diff --git a/include/d/actor/d_a_obj_crvsteel.h b/include/d/actor/d_a_obj_crvsteel.h index 46883ba8b12..a0b2afe4249 100644 --- a/include/d/actor/d_a_obj_crvsteel.h +++ b/include/d/actor/d_a_obj_crvsteel.h @@ -1,6 +1,9 @@ #ifndef D_A_OBJ_CRVSTEEL_H #define D_A_OBJ_CRVSTEEL_H +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,7 +14,7 @@ * @details * */ -class daObjCRVSTEEL_c : public fopAc_ac_c { +class daObjCRVSTEEL_c : public dBgS_MoveBgActor { public: /* 80BD5BFC */ void OpenSet(f32, f32); /* 80BD5C18 */ void CloseSet(f32); @@ -19,15 +22,28 @@ public: /* 80BD5CA0 */ void OpenExecute(); /* 80BD5CC8 */ void Action(); /* 80BD5D10 */ void setBaseMtx(); - /* 80BD5DB8 */ void CreateHeap(); - /* 80BD5E30 */ void create(); - /* 80BD60A8 */ void Create(); - /* 80BD60EC */ void Execute(f32 (**)[3][4]); - /* 80BD6138 */ void Draw(); - /* 80BD61BC */ void Delete(); + /* 80BD5DB8 */ int CreateHeap(); + /* 80BD5E30 */ int create(); + /* 80BD60A8 */ int Create(); + /* 80BD60EC */ int Execute(Mtx**); + /* 80BD6138 */ int Draw(); + /* 80BD61BC */ int Delete(); private: - /* 0x568 */ u8 field_0x568[0x848 - 0x568]; + /* 0x5A0 */ u32 mSmokeParticle1; + /* 0x5A4 */ u32 mSmokeParticle2; + /* 0x5A8 */ s16 mAction; + /* 0x5AC */ f32 mMaxHeight; + /* 0x5B0 */ f32 mMinHeight; + /* 0x5B4 */ f32 field_0x5b4; + /* 0x5B8 */ f32 field_0x5b8; + /* 0x5BC */ f32 field_0x5bc; + /* 0x5C0 */ J3DModel* mModel; + /* 0x5C4 */ request_of_phase_process_class mPhase; + /* 0x5CC */ dBgS_AcchCir mAcchCir; + /* 0x60C */ dBgS_ObjAcch mAcch; + /* 0x7E4 */ dCcD_Stts mStts; + /* 0x820 */ u8 field_0x820[0x848 - 0x820]; }; STATIC_ASSERT(sizeof(daObjCRVSTEEL_c) == 0x848); diff --git a/include/d/actor/d_a_obj_kantera.h b/include/d/actor/d_a_obj_kantera.h index f6316a846bc..c0b88d02c20 100644 --- a/include/d/actor/d_a_obj_kantera.h +++ b/include/d/actor/d_a_obj_kantera.h @@ -13,6 +13,8 @@ */ class daItemKantera_c : public daItemBase_c { public: + typedef int (daItemKantera_c::*actionFunc)(); + /* 80C389BC */ void initBaseMtx(); /* 80C389F8 */ void setBaseMtx(); /* 80C38A64 */ int Create(); diff --git a/include/d/actor/d_a_obj_pdtile.h b/include/d/actor/d_a_obj_pdtile.h index 66374e15975..da4d43bd24b 100644 --- a/include/d/actor/d_a_obj_pdtile.h +++ b/include/d/actor/d_a_obj_pdtile.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_PDTILE_H #define D_A_OBJ_PDTILE_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,20 +13,57 @@ * @details * */ -class daObjPDtile_c : public fopAc_ac_c { +class daObjPDtile_c : public dBgS_MoveBgActor, request_of_phase_process_class { public: - /* 80CAACE0 */ void create1st(); + enum Type { + TYPE_0, + TYPE_1, + TYPE_2, + TYPE_3, + TYPE_4, + }; + + /* 80CAACE0 */ int create1st(); /* 80CAAE80 */ void setMtx(); /* 80CAAF90 */ void rideActor(fopAc_ac_c*); - /* 80CAB1F0 */ void CreateHeap(); - /* 80CAB258 */ void Create(); - /* 80CAB374 */ void Execute(f32 (**)[3][4]); - /* 80CABF50 */ void Draw(); - /* 80CAC094 */ void Delete(); - /* 80CAC374 */ ~daObjPDtile_c(); + /* 80CAB1F0 */ int CreateHeap(); + /* 80CAB258 */ int Create(); + /* 80CAB374 */ int Execute(Mtx**); + /* 80CABF50 */ int Draw(); + /* 80CAC094 */ int Delete(); + /* 80CAC374 */ virtual ~daObjPDtile_c() {} + + u8 getType() { return fopAcM_GetParamBit(this, 0, 4); } private: - /* 0x568 */ u8 field_0x568[0x7fc - 0x568]; + /* 0x5A8 */ Mtx mBgMtx; + /* 0x5D8 */ Mtx field_0x5d8; + /* 0x608 */ J3DModel* mModel; + /* 0x60C */ Type mType; + /* 0x610 */ int field_0x610; + /* 0x614 */ u8 field_0x614; + /* 0x618 */ int field_0x618; + /* 0x61C */ f32 field_0x61c; + /* 0x620 */ cXyz field_0x620; + /* 0x62C */ f32 field_0x62c; + /* 0x630 */ u8 field_0x630; + /* 0x634 */ dCcD_Stts mStts; + /* 0x670 */ dCcD_Cyl mCyl; + /* 0x7AC */ int field_0x7ac; + /* 0x7B0 */ s16 field_0x7b0; + /* 0x7B2 */ s16 field_0x7b2; + /* 0x7B4 */ u8 field_0x7b4; + /* 0x7B5 */ u8 field_0x7b5; + /* 0x7B8 */ int field_0x7b8; + /* 0x7BC */ char* mArcName; + /* 0x7C0 */ u32 mDzbId; + /* 0x7C4 */ u32 mBmdId; + /* 0x7C8 */ Vec* mCullBox; + /* 0x7CC */ f32 field_0x7cc; + /* 0x7D0 */ u8 field_0x7d0; + /* 0x7D4 */ int field_0x7d4; + /* 0x7D8 */ int field_0x7d8; + /* 0x7DC */ Z2SoundObjSimple mSoundObj; }; STATIC_ASSERT(sizeof(daObjPDtile_c) == 0x7fc); diff --git a/include/d/actor/d_a_obj_stone.h b/include/d/actor/d_a_obj_stone.h index 3c2cd16742e..7e650a3689f 100644 --- a/include/d/actor/d_a_obj_stone.h +++ b/include/d/actor/d_a_obj_stone.h @@ -18,6 +18,8 @@ enum { */ class daObjStone_c : public fopAc_ac_c { public: + typedef void (daObjStone_c::*modeFunc)(); + u8 getType() { return fopAcM_GetParamBit(this,0,4); } u8 getItemType() { return fopAcM_GetParamBit(this,4,2); } u8 getItemNo() { return fopAcM_GetParamBit(this,8,8); } @@ -67,7 +69,7 @@ private: /* 0x0908 */ u8 field_0x0908; /* 0x090C */ u32 mMode; // maybe a better name for this /* 0x0910 */ cXyz field_0x0910; - /* 0x091C */ u16 field_0x091c; + /* 0x091C */ s16 field_0x091c; /* 0x091E */ u8 field_0x091E[0x0920 - 0x091E]; /* 0x0920 */ Quaternion field_0x0920; /* 0x0930 */ Quaternion field_0x0930; @@ -75,11 +77,14 @@ private: /* 0x0944 */ f32 mLastPosY; /* 0x0948 */ f32 mLastSpeedY; // maybe a better name for this /* 0x094C */ u8 field_0x094c; - /* 0x094C */ u8 field_0x094d; + /* 0x094D */ u8 field_0x094d; /* 0x094E */ bool mIsInWater; /* 0x094F */ u8 field_0x094f; /* 0x0950 */ u8 field_0x0950; - /* 0x0951 */ u8 field_0x0951[0x0960 - 0x0951]; + /* 0x0951 */ u8 field_0x0951; + /* 0x0954 */ u32 field_0x0954; + /* 0x0954 */ u32 field_0x0958; + /* 0x0954 */ u32 field_0x095c; /* 0x0960 */ u32 field_0x0960; /* 0x0964 */ JPABaseEmitter* field_0x0964[3]; /* 0x0970 */ Z2SoundObjSimple mSound; diff --git a/include/d/actor/d_a_obj_wdStick.h b/include/d/actor/d_a_obj_wdStick.h index e5b1c719b45..1e9f5315992 100644 --- a/include/d/actor/d_a_obj_wdStick.h +++ b/include/d/actor/d_a_obj_wdStick.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_WDSTICK_H #define D_A_OBJ_WDSTICK_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -13,14 +15,24 @@ */ class daWdStick_c : public fopAc_ac_c { public: + typedef void (daWdStick_c::*modeFunc)(); + + enum Mode { + MODE_WAIT, + MODE_CARRY, + MODE_DROP, + MODE_ROLL, + MODE_SINK, + }; + /* 80D31BD0 */ void setBaseMtx(); - /* 80D31C58 */ void CreateHeap(); - /* 80D31CC4 */ void create(); - /* 80D32168 */ void createHeapCallBack(fopAc_ac_c*); + /* 80D31C58 */ virtual int CreateHeap(); + /* 80D31CC4 */ int create(); + /* 80D32168 */ static int createHeapCallBack(fopAc_ac_c*); /* 80D32194 */ void lightInit(); /* 80D32198 */ void setLight(); /* 80D3219C */ void setFire(); - /* 80D3269C */ void Execute(); + /* 80D3269C */ virtual int Execute(); /* 80D32DB4 */ void bgCheck(); /* 80D33348 */ void setBoundSe(); /* 80D333F4 */ void mode_proc_call(); @@ -32,25 +44,58 @@ public: /* 80D33890 */ void mode_proc_drop(); /* 80D338DC */ void mode_init_roll(); /* 80D338F4 */ void mode_proc_roll(); - /* 80D33D44 */ void chkWaterLineIn(); + /* 80D33D44 */ BOOL chkWaterLineIn(); /* 80D33D68 */ void mode_init_sink(); /* 80D33D8C */ void mode_proc_sink(); - /* 80D33EB0 */ void Draw(); - /* 80D33F14 */ void Delete(); + /* 80D33EB0 */ virtual int Draw(); + /* 80D33F14 */ virtual int Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDSph[64]; + static dCcD_SrcGObjInf const mCcDObjInfo; + static dCcD_SrcSph mCcDSph; private: - /* 0x568 */ u8 field_0x568[0xaf8 - 0x568]; + /* 0x56C */ request_of_phase_process_class mPhase; + /* 0x574 */ J3DModel* mModel; + /* 0x578 */ u8 mMode; + /* 0x579 */ bool misCarrying; + /* 0x57C */ cXyz field_0x57c; + /* 0x588 */ u8 field_0x588[0x594 - 0x588]; + /* 0x594 */ cXyz field_0x594; + /* 0x5A0 */ dBgS_ObjAcch mAcch; + /* 0x778 */ dBgS_AcchCir mAcchCir; + /* 0x7B8 */ dCcD_Stts mStts; + /* 0x7F4 */ dCcD_Sph mSph1; + /* 0x92C */ dCcD_Sph mSph2; + /* 0xA64 */ cXyz field_0xa64; + /* 0xA70 */ cXyz field_0xa70; + /* 0xA7C */ cXyz field_0xa7c; + /* 0xA88 */ cXyz field_0xa88; + /* 0xA94 */ cXyz field_0xa94; + /* 0xAA0 */ cXyz field_0xaa0; + /* 0xAAC */ u8 field_0xaac; + /* 0xAAD */ u8 field_0xaad; + /* 0xAAE */ u16 field_0xaae; + /* 0xAB0 */ u16 field_0xab0; + /* 0xAB4 */ cXyz field_0xab4; + /* 0xAC0 */ cXyz field_0xac0; + /* 0xACC */ cXyz field_0xacc; + /* 0xAD8 */ cXyz field_0xad8; + /* 0xAE4 */ u32 field_0xae4[2]; + /* 0xAEC */ u32 field_0xaec[2]; + /* 0xAF4 */ u8 field_0xaf4; }; STATIC_ASSERT(sizeof(daWdStick_c) == 0xaf8); -class daWdStick_HIO_c { +class daWdStick_HIO_c : public mDoHIO_entry_c { public: /* 80D31B4C */ daWdStick_HIO_c(); - /* 80D34030 */ ~daWdStick_HIO_c(); + /* 80D34030 */ virtual ~daWdStick_HIO_c() {} + + /* 0x04 */ u8 field_0x04; + /* 0x05 */ u8 field_0x05; + /* 0x06 */ s16 field_0x06; + /* 0x08 */ u8 field_0x08; }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 271beebeb80..d044673891c 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -894,6 +894,7 @@ public: bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; } bool getHeavyStateAndBoots() { return checkNoResetFlg0(FLG0_HVY_STATE); } bool checkEnemyAttentionLock() const { return checkResetFlg0(RFLG0_ENEMY_ATTN_LOCK); } + bool getGrabUpStart() const { return checkResetFlg0(RFLG0_UNK_8000); } bool checkCanoeSlider() const { return mSpecialMode == 0x2D; } bool checkGoatStopGame() const { return mSpecialMode == 0x2A; } u8 getCutType() const { return mCutType; } diff --git a/src/Z2AudioLib/Z2SeMgr.cpp b/src/Z2AudioLib/Z2SeMgr.cpp index 920ee7c9003..4c3a4c76552 100644 --- a/src/Z2AudioLib/Z2SeMgr.cpp +++ b/src/Z2AudioLib/Z2SeMgr.cpp @@ -119,7 +119,7 @@ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { } } field_0x340[idx] = **param_0; - Vec cam_pos = Z2GetAudience()->getAudioCamPos(); + Vec cam_pos = Z2GetAudience()->getAudioCamPos(0); if (field_0x340[idx].y > cam_pos.y) { field_0x340[idx].y = cam_pos.y; } @@ -266,19 +266,19 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ break; case Z2SE_SY_TALK_START: case Z2SE_SY_TALK_END: - if (Z2GetSceneMgr()->getCurrentSceneNum() != 0) { + if (Z2GetStatusMgr()->getDemoStatus() != 0) { return false; } break; case Z2SE_SY_TALK_NEXT: - if (Z2GetSceneMgr()->isMovieDemo()) { + if (Z2GetStatusMgr()->isMovieDemo()) { i_soundID = Z2SE_SY_DEMO_MESSAGE_NEXT; } break; case Z2SE_SY_TALK_WIN_CLOSE: - if (Z2GetSceneMgr()->getCurrentSceneNum() == 1) { + if (Z2GetStatusMgr()->getDemoStatus() == 1) { i_soundID = Z2SE_SY_TALK_END; - } else if (Z2GetSceneMgr()->isMovieDemo()) { + } else if (Z2GetStatusMgr()->isMovieDemo()) { i_soundID = Z2SE_SY_DEMO_MESSAGE_END; } break; @@ -287,11 +287,13 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ return false; } break; - case Z2SE_OBJ_CHANDELIER_SWING: - if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { + case Z2SE_OBJ_CHANDELIER_SWING: { + Vec tmp = Z2GetAudience()->getAudioCamPos(0); + if (i_pos->y > tmp.y) { return false; } break; + } case Z2SE_OBJ_CHANDLV5_SWING: i_volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f, Z2Calc::CURVE_SIGN_2); @@ -313,7 +315,8 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ Z2Calc::CURVE_SIGN_2); break; case Z2SE_OBJ_L8_B_FOG_FLY: - if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { + Vec tmp = Z2GetAudience()->getAudioCamPos(0); + if (i_pos->y > tmp.y) { return false; } break; diff --git a/src/Z2AudioLib/Z2SoundMgr.cpp b/src/Z2AudioLib/Z2SoundMgr.cpp index 5d1f8952df7..f0de70d5a57 100644 --- a/src/Z2AudioLib/Z2SoundMgr.cpp +++ b/src/Z2AudioLib/Z2SoundMgr.cpp @@ -1,5 +1,4 @@ // -// Generated By: dol2asm // Translation Unit: Z2SoundMgr // @@ -169,7 +168,6 @@ bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, /* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */ -// NONMATCHING extra load void Z2SoundMgr::calc() { mSeMgr.calc(); if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) { @@ -358,7 +356,6 @@ void Z2SoundMgr::initParams() { /* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text * multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */ -// NONMATCHING extra load void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { JSUList* list = @@ -373,7 +370,6 @@ void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { /* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID */ -// NONMATCHING extra load bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) { if (i_soundID.isAnonymous()) { return false; diff --git a/src/Z2AudioLib/Z2WolfHowlMgr.cpp b/src/Z2AudioLib/Z2WolfHowlMgr.cpp index f8030a3c775..5e512353571 100644 --- a/src/Z2AudioLib/Z2WolfHowlMgr.cpp +++ b/src/Z2AudioLib/Z2WolfHowlMgr.cpp @@ -463,7 +463,7 @@ void Z2WolfHowlMgr::startWindStoneSound(s8 param_0, Vec* param_1) { if (param_1 == NULL || Z2GetLink() == NULL || Z2GetLink()->getCurrentPos() == NULL) { return; } - Vec local_60 = Z2GetAudience()->getAudioCamPos(); + Vec local_60 = Z2GetAudience()->getAudioCamPos(0); f32 dVar13 = sqrtf(VECSquareDistance(param_1, &local_60)); if (dVar13 > 2100.0f && field_0x04) { field_0x04->stop(); diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index b01598248cc..ba57c225e45 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -847,7 +847,7 @@ void daE_OctBg_c::damage_check() { dScnPly_c::setPauseTimer(0); field_0x8c0.ClrTgHit(); field_0x5bc.startCreatureVoice(Z2SE_EN_BG_V_DAMAGE, -1); - if (field_0xb30.mpCollider->ChkAtType(0x4000)) { + if (field_0xb30.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { setAction(&daE_OctBg_c::hook); } else { setAction(&daE_OctBg_c::damage); diff --git a/src/d/actor/d_a_myna.cpp b/src/d/actor/d_a_myna.cpp index 3468c2b790a..70da16e9c03 100644 --- a/src/d/actor/d_a_myna.cpp +++ b/src/d/actor/d_a_myna.cpp @@ -1362,12 +1362,11 @@ void daMyna_c::deleteItem(int i_itemIndex) { } /* 80949144-80949190 0035C4 004C+00 0/0 0/0 0/0 .text deleteItem__8daMyna_cFUi */ -// Nonmatching, no clue what's going on here void daMyna_c::deleteItem(fpc_ProcID i_itemId) { for (int i = 0; i < mNumShopItems; i++) { if (i_itemId == mShopItems[i].mTargetActorID) { - mShopItems[i].mTargetActorID = -1; - mShopItems[i].mItemStatus = 4; + mShopItems[i_itemId].mTargetActorID = -1; + mShopItems[i_itemId].mItemStatus = 4; } } } @@ -1791,7 +1790,7 @@ void daMyna_c::playDefaultWaitAnime() { setAnimeType(1, 0.0f); } break; - case 6: + case 6: { cXyz local_58; cXyz local_64; cXyz stack_70; @@ -1818,6 +1817,7 @@ void daMyna_c::playDefaultWaitAnime() { setAnimeType(1, 6.0f); } break; + } case 5: cXyz local_94; cXyz stack_a0; diff --git a/src/d/actor/d_a_npc_lf.cpp b/src/d/actor/d_a_npc_lf.cpp index c683741fead..edc8e61a7a3 100644 --- a/src/d/actor/d_a_npc_lf.cpp +++ b/src/d/actor/d_a_npc_lf.cpp @@ -55,7 +55,7 @@ static int daNPC_LF_Draw(npc_lf_class* i_this) { for (int i = 0; i < i_this->mIter; i++, fish++) { if (fish->field_0x17 == 0) { if (j == 0) { - g_env_light.settingTevStruct(0, &fish->field_0x04, &i_this->tevStr); + g_env_light.settingTevStruct(0, &fish->mPos, &i_this->tevStr); } j++; @@ -77,151 +77,150 @@ static u8 data_80A6AA90; /* 80A6AAA0-80A6AABC 000018 001C+00 4/4 0/0 0/0 .bss l_HIO */ static daNPC_LF_HIO_c l_HIO; +f32 dummyLiteral1() { return 50.0f; } +f32 dummyLiteral2() { return 0.0f; } + /* 80A69D90-80A6A1B8 000310 0428+00 1/1 0/0 0/0 .text npc_lf_move__FP10fopAc_ac_cP4lf_s */ - // NONMATCHING - still missing some instructions + float literals -static void npc_lf_move(fopAc_ac_c* param_0, lf_s* param_1) { +static void npc_lf_move(fopAc_ac_c* param_0, lf_s* pFish) { cXyz pos; s16 maxStepAngle; f32 maxStep; - if ((u8)(param_1->field_0x18) == 0) { - param_1->mDistFromPlayer = fopAcM_searchPlayerDistance(param_0); + if ((pFish->field_0x18 & 7) == 0) { + pFish->mDistFromPlayer = fopAcM_searchPlayerDistance(param_0); } - switch (param_1->field_0x1c) { + switch (pFish->field_0x1c) { case 0: - if (param_1->field_0x38[0] == 0) { + if (pFish->field_0x38[0] == 0) { for (int i = 0; i < 100; i++) { - param_1->field_0x20.x = param_0->home.pos.x + cM_rndFX(500.0f); - param_1->field_0x20.y = param_0->home.pos.y + cM_rndFX(100.0f); - param_1->field_0x20.z = param_0->home.pos.z + cM_rndFX(500.0f); + pFish->field_0x20.x = param_0->home.pos.x + cM_rndFX(500.0f); + pFish->field_0x20.y = param_0->home.pos.y + cM_rndFX(100.0f); + pFish->field_0x20.z = param_0->home.pos.z + cM_rndFX(500.0f); - pos = param_1->field_0x20 - param_1->field_0x04; + pos = pFish->field_0x20 - pFish->mPos; pos.y = 0.0f; if (pos.abs() > 250.0f) { - param_1->field_0x1c = 1; - param_1->field_0x38[0] = cM_rndF(30.0f) + 30.0f; + pFish->field_0x1c = 1; + pFish->field_0x38[0] = cM_rndF(30.0f) + 30.0f; break; } } } - param_1->field_0x40 = 0.1f; - maxStepAngle = 0x400; - maxStep = 0.5f; - break; - case 1: - if (param_1->field_0x38[0] != 0) { - param_1->field_0x1c = 0; - param_1->field_0x38[0] = cM_rndF(10.0f); - } - - param_1->field_0x40 = l_HIO.field_0x0c; + pFish->field_0x40 = 0.1f; maxStepAngle = 0; maxStep = 0.05f; break; + case 1: + if (pFish->field_0x38[0] == 0) { + pFish->field_0x1c = 0; + pFish->field_0x38[0] = 10.0f + cM_rndF(10.0f); + } + + pFish->field_0x40 = l_HIO.field_0x0c; + maxStepAngle = 0x400; + maxStep = 0.5f; + break; } - if (param_1->field_0x38[1] == 0) { + if (pFish->field_0x38[1] != 0) { maxStep = 0.5f; - param_1->field_0x40 = l_HIO.field_0x14; + pFish->field_0x40 = l_HIO.field_0x14; maxStepAngle = 0x600; } else { - if (param_1->mDistFromPlayer < l_HIO.field_0x18) { - param_1->field_0x38[1] = cM_rndF(20.0f) + 20.0f; + if (pFish->mDistFromPlayer < l_HIO.field_0x18) { + pFish->field_0x38[1] = cM_rndF(20.0f) + 20.0f; - if (param_1->field_0x1c == 1) - param_1->field_0x1c = 0; + if (pFish->field_0x1c == 1) + pFish->field_0x1c = 0; } } - pos = param_1->field_0x20 - param_1->field_0x04; - s16 old_pos_y = param_1->field_0x10.y; + pos = pFish->field_0x20 - pFish->mPos; + s16 old_pos_y = pFish->mAngle.y; - cLib_addCalcAngleS2(¶m_1->field_0x10.y, cM_atan2s(pos.x,pos.z),4,maxStepAngle); - cLib_addCalcAngleS2(¶m_1->field_0x10.x, -cM_atan2s(pos.y,JMAFastSqrt((pos.x * pos.x) + (pos.z * pos.z))),4,maxStepAngle); + cLib_addCalcAngleS2(&pFish->mAngle.y, cM_atan2s(pos.x,pos.z),4,maxStepAngle); + cLib_addCalcAngleS2(&pFish->mAngle.x, -cM_atan2s(pos.y,JMAFastSqrt((pos.x * pos.x) + (pos.z * pos.z))),4,maxStepAngle); - f32 float1 = (old_pos_y - param_1->field_0x10.y); - float1 *= 5.0f; - f32 float2 = 4000.0f; + old_pos_y -= pFish->mAngle.y; + f32 float1 = old_pos_y * 5.0f; if (float1 > 4000.0f) { - if (float1 < -4000.0f) { - float2 = -4000.0f; - } + float1 = 4000.0f; } else { - float2 = 4000.0f; + if (float1 < -4000.0f) { + float1 = -4000.0f; + } } - cLib_addCalc2(¶m_1->field_0x58, float2, 0.5f, 1000.0f); - cLib_addCalc2(¶m_1->field_0x44, (param_1->field_0x3c * l_HIO.field_0x08), 1.0f, maxStep); + cLib_addCalc2(&pFish->field_0x58, float1, 0.5f, 1000.0f); + cLib_addCalc2(&pFish->field_0x44, (pFish->field_0x3c * l_HIO.field_0x10), 1.0f, maxStep); } /* 80A6A1B8-80A6A420 000738 0268+00 1/1 0/0 0/0 .text action__FP10fopAc_ac_cP4lf_s */ -// NONMATCHING - second for loop incorrect -static void action(fopAc_ac_c* param_0, lf_s* param_1) { +static void action(fopAc_ac_c* param_0, lf_s* pFish) { cXyz pos; - param_1->field_0x18++; + pFish->field_0x18++; for (int i = 0; i < 2; i++) { - if (param_1->field_0x38[i] != 0) { - param_1->field_0x38[i]--; + if (pFish->field_0x38[i] != 0) { + pFish->field_0x38[i]--; } } - switch (param_1->mActionMode) { + switch (pFish->mActionMode) { case npc_lf_class::ACT_MOVE: - npc_lf_move(param_0,param_1); + npc_lf_move(param_0,pFish); } - cMtx_YrotS(*calc_mtx,param_1->field_0x10.y); - cMtx_XrotM(*calc_mtx,param_1->field_0x10.x); + cMtx_YrotS(*calc_mtx,pFish->mAngle.y); + cMtx_XrotM(*calc_mtx,pFish->mAngle.x); pos.x = 0.0f; pos.y = 0.0f; - pos.z = param_1->field_0x44 * l_HIO.field_0x08; + pos.z = pFish->field_0x44 * l_HIO.field_0x08; MtxPosition(&pos,&pos); - param_1->field_0x04 += pos; + pFish->mPos += pos; - cLib_addCalc2(¶m_1->field_0x3c,param_1->field_0x40,1.0f,0.2f); - cLib_addCalc2(¶m_1->field_0x5c,(param_1->field_0x3c * 2000.0f + 2000.0f),0.5f,200.0f); + cLib_addCalc2(&pFish->field_0x3c,pFish->field_0x40,1.0f,0.2f); + cLib_addCalc2(&pFish->field_0x5c,(pFish->field_0x3c * 2000.0f + 2000.0f),0.5f,200.0f); - param_1->field_0x4c[1] = param_1->field_0x3c * 13000.0f + 2000.0f; - param_1->field_0x4c[0] += param_1->field_0x4c[1]; + pFish->field_0x4c[1] = pFish->field_0x3c * 13000.0f + 2000.0f; + pFish->field_0x4c[0] += pFish->field_0x4c[1]; - for (int i = 0, j = 0; i < 3; i++, j++) { - - f32 tmp = wp[j] * param_1->field_0x5c; - param_1->field_0x50[i] = tmp * cM_ssin(param_1->field_0x4c[j]); + for (int i = 0; i < 3; i++) { + pFish->field_0x50[i + 1] = cM_ssin(-15000 * i + pFish->field_0x4c[0]) * pFish->field_0x5c * wp[i]; } - param_1->field_0x50[0] = param_1->field_0x5c * cM_ssin((param_1->field_0x4c[0] - 7000)) * 0.3f; + pFish->field_0x50[0] = pFish->field_0x5c * cM_ssin((pFish->field_0x4c[0] - 7000)) * -0.3f; - mDoMtx_stack_c::transS(param_1->field_0x04.x,param_1->field_0x04.y,param_1->field_0x04.z); - mDoMtx_stack_c::YrotM(param_1->field_0x10.y + param_1->field_0x50[0]); - mDoMtx_stack_c::XrotM(param_1->field_0x10.x); - f32 value = param_1->field_0x60 * l_HIO.field_0x08; + mDoMtx_stack_c::transS(pFish->mPos.x,pFish->mPos.y,pFish->mPos.z); + mDoMtx_stack_c::YrotM(pFish->mAngle.y + pFish->field_0x50[0]); + mDoMtx_stack_c::XrotM(pFish->mAngle.x); + f32 value = pFish->field_0x60 * l_HIO.field_0x08; mDoMtx_stack_c::scaleM(value,value,value); - param_1->mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + pFish->mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); } /* 80A6A420-80A6A514 0009A0 00F4+00 2/1 0/0 0/0 .text daNPC_LF_Execute__FP12npc_lf_class */ -// NONMATCHING - regalloc -static int daNPC_LF_Execute(npc_lf_class* i_this) { - camera_class* camera = dComIfGp_getCamera(0); - lf_s* fish = i_this->mFish; - +static int daNPC_LF_Execute(npc_lf_class* i_this2) { + npc_lf_class* i_this = (npc_lf_class*) i_this2; + view_class* camera; + lf_s* fish; + cXyz pos; + cXyz pos2; + camera = dComIfGp_getCamera(0); + fish = i_this->mFish; for (int i = 0; i < i_this->mIter; i++, fish++) { - cXyz pos; - pos.x = fish->field_0x04.x - camera->lookat.eye.x; - pos.z = fish->field_0x04.z - camera->lookat.eye.z; + pos.x = fish->mPos.x - camera->lookat.eye.x; + pos.z = fish->mPos.z - camera->lookat.eye.z; - f32 res = JMAFastSqrt((pos.x * pos.x) + (pos.z * pos.z)); - if (res < 1500.0f) { + if (JMAFastSqrt((pos.x * pos.x) + (pos.z * pos.z)) < 1500.0f) { fish->field_0x17 = 0; action(i_this, fish); } else { @@ -276,7 +275,6 @@ static int useHeapInit(fopAc_ac_c* i_this) { } /* 80A6A650-80A6A8A4 000BD0 0254+00 1/0 0/0 0/0 .text daNPC_LF_Create__FP10fopAc_ac_c */ -// NONMATCHING - float literals static cPhs__Step daNPC_LF_Create(fopAc_ac_c* i_this) { fopAcM_SetupActor(i_this, npc_lf_class); npc_lf_class* a_this = static_cast(i_this); @@ -319,10 +317,10 @@ static cPhs__Step daNPC_LF_Create(fopAc_ac_c* i_this) { for (int i = 0; i < a_this->mIter; i++, fish++) { fish->mActionMode = npc_lf_class::ACT_MOVE; - fish->field_0x04.x = a_this->current.pos.x + cM_rndFX(300.0f); - fish->field_0x04.y = a_this->current.pos.y + cM_rndFX(50.0f); - fish->field_0x04.z = a_this->current.pos.z + cM_rndFX(300.0f); - fish->field_0x10.y = cM_rndF(65536.0f); + fish->mPos.x = a_this->current.pos.x + cM_rndFX(300.0f); + fish->mPos.y = a_this->current.pos.y + cM_rndFX(50.0f); + fish->mPos.z = a_this->current.pos.z + cM_rndFX(300.0f); + fish->mAngle.y = cM_rndF(65536.0f); fish->field_0x48 = cM_rndFX(0.1f) + 0.6f; fish->field_0x60 = cM_rndFX(0.1f) + 0.6f; // fish++; diff --git a/src/d/actor/d_a_obj_crvsteel.cpp b/src/d/actor/d_a_obj_crvsteel.cpp index 1512e2d7116..d3081d98949 100644 --- a/src/d/actor/d_a_obj_crvsteel.cpp +++ b/src/d/actor/d_a_obj_crvsteel.cpp @@ -4,228 +4,169 @@ */ #include "d/actor/d_a_obj_crvsteel.h" +#include "d/d_com_inf_game.h" #include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void daObjCRVSTEEL_Create__FP10fopAc_ac_c(); -extern "C" static void daObjCRVSTEEL_Delete__FP15daObjCRVSTEEL_c(); -extern "C" void OpenSet__15daObjCRVSTEEL_cFff(); -extern "C" void CloseSet__15daObjCRVSTEEL_cFf(); -extern "C" void CloseExecute__15daObjCRVSTEEL_cFv(); -extern "C" void OpenExecute__15daObjCRVSTEEL_cFv(); -extern "C" void Action__15daObjCRVSTEEL_cFv(); -extern "C" void setBaseMtx__15daObjCRVSTEEL_cFv(); -extern "C" static void daObjCRVSTEEL_Draw__FP15daObjCRVSTEEL_c(); -extern "C" static void daObjCRVSTEEL_Execute__FP15daObjCRVSTEEL_c(); -extern "C" void CreateHeap__15daObjCRVSTEEL_cFv(); -extern "C" void create__15daObjCRVSTEEL_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" static bool daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c(); -extern "C" void Create__15daObjCRVSTEEL_cFv(); -extern "C" void Execute__15daObjCRVSTEEL_cFPPA3_A4_f(); -extern "C" void Draw__15daObjCRVSTEEL_cFv(); -extern "C" void Delete__15daObjCRVSTEEL_cFv(); -extern "C" static void func_80BD61F0(); -extern "C" static void func_80BD61F8(); -extern "C" extern char const* const d_a_obj_crvsteel__stringBase0; - -// -// External References: -// - -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -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 getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -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 settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__9dCcD_Stts[11]; -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" f32 mGroundY__11fopAcM_gc_c; - -// -// Declarations: -// - /* 80BD5BB8-80BD5BD8 000078 0020+00 1/0 0/0 0/0 .text daObjCRVSTEEL_Create__FP10fopAc_ac_c */ -static void daObjCRVSTEEL_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjCRVSTEEL_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } /* 80BD5BD8-80BD5BFC 000098 0024+00 1/0 0/0 0/0 .text daObjCRVSTEEL_Delete__FP15daObjCRVSTEEL_c */ -static void daObjCRVSTEEL_Delete(daObjCRVSTEEL_c* param_0) { - // NONMATCHING +static int daObjCRVSTEEL_Delete(daObjCRVSTEEL_c* i_this) { + i_this->MoveBGDelete(); + return 1; } /* 80BD5BFC-80BD5C18 0000BC 001C+00 0/0 0/0 1/1 .text OpenSet__15daObjCRVSTEEL_cFff */ -void daObjCRVSTEEL_c::OpenSet(f32 param_0, f32 param_1) { - // NONMATCHING +void daObjCRVSTEEL_c::OpenSet(f32 param_1, f32 param_2) { + speed.y = param_1; + mMaxHeight = current.pos.y + param_2; + mAction = 1; } /* 80BD5C18-80BD5C28 0000D8 0010+00 0/0 0/0 1/1 .text CloseSet__15daObjCRVSTEEL_cFf */ -void daObjCRVSTEEL_c::CloseSet(f32 param_0) { - // NONMATCHING +void daObjCRVSTEEL_c::CloseSet(f32 param_1) { + speed.y = param_1; + mAction = 2; } -/* ############################################################################################## */ -/* 80BD6208-80BD620C 000000 0004+00 3/3 0/0 0/0 .rodata @3789 */ -SECTION_RODATA static f32 const lit_3789 = 5.0f; -COMPILER_STRIP_GATE(0x80BD6208, &lit_3789); - /* 80BD5C28-80BD5CA0 0000E8 0078+00 1/1 0/0 0/0 .text CloseExecute__15daObjCRVSTEEL_cFv */ void daObjCRVSTEEL_c::CloseExecute() { - // NONMATCHING + current.pos.y += speed.y; + if (current.pos.y < mMinHeight) { + current.pos.y = mMinHeight; + fopAcM_effSmokeSet1(&mSmokeParticle1, &mSmokeParticle2, ¤t.pos, 0, 5.0f, &tevStr, 1); + mAction = 0; + } } /* 80BD5CA0-80BD5CC8 000160 0028+00 1/1 0/0 0/0 .text OpenExecute__15daObjCRVSTEEL_cFv */ void daObjCRVSTEEL_c::OpenExecute() { - // NONMATCHING + current.pos.y += speed.y; + if (current.pos.y > mMaxHeight) { + current.pos.y = mMaxHeight; + } } /* 80BD5CC8-80BD5D10 000188 0048+00 1/1 0/0 0/0 .text Action__15daObjCRVSTEEL_cFv */ void daObjCRVSTEEL_c::Action() { - // NONMATCHING + switch(mAction) { + case 0: + break; + case 1: + OpenExecute(); + break; + case 2: + CloseExecute(); + break; + } } /* 80BD5D10-80BD5D6C 0001D0 005C+00 1/1 0/0 0/0 .text setBaseMtx__15daObjCRVSTEEL_cFv */ void daObjCRVSTEEL_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mModel->setBaseTRMtx(mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } /* 80BD5D6C-80BD5D98 00022C 002C+00 1/0 0/0 0/0 .text daObjCRVSTEEL_Draw__FP15daObjCRVSTEEL_c */ -static void daObjCRVSTEEL_Draw(daObjCRVSTEEL_c* param_0) { - // NONMATCHING +static int daObjCRVSTEEL_Draw(daObjCRVSTEEL_c* i_this) { + return i_this->Draw(); } /* 80BD5D98-80BD5DB8 000258 0020+00 2/1 0/0 0/0 .text daObjCRVSTEEL_Execute__FP15daObjCRVSTEEL_c */ -static void daObjCRVSTEEL_Execute(daObjCRVSTEEL_c* param_0) { - // NONMATCHING +static int daObjCRVSTEEL_Execute(daObjCRVSTEEL_c* i_this) { + return i_this->MoveBGExecute(); } -/* ############################################################################################## */ -/* 80BD623C-80BD623C 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BD623C = "CrvSteel"; -SECTION_DEAD static char const* const stringBase_80BD6245 = "U_CrvSteelGate.bmd"; -#pragma pop - /* 80BD626C-80BD6270 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_crvsteel__stringBase0; +static char* l_arcName = "CrvSteel"; /* 80BD5DB8-80BD5E30 000278 0078+00 1/0 0/0 0/0 .text CreateHeap__15daObjCRVSTEEL_cFv */ -void daObjCRVSTEEL_c::CreateHeap() { - // NONMATCHING +int daObjCRVSTEEL_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "U_CrvSteelGate.bmd"); + JUT_ASSERT(86, modelData != 0); + mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + return mModel != NULL ? TRUE : FALSE; } -/* ############################################################################################## */ -/* 80BD620C-80BD6210 000004 0004+00 0/1 0/0 0/0 .rodata @3900 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3900 = -9.0f; -COMPILER_STRIP_GATE(0x80BD620C, &lit_3900); -#pragma pop +/* 80BD5E30-80BD6030 0002F0 0200+00 1/1 0/0 0/0 .text create__15daObjCRVSTEEL_cFv */ +int daObjCRVSTEEL_c::create() { + fopAcM_SetupActor(this, daObjCRVSTEEL_c); + int rv = dComIfG_resLoad(&mPhase, l_arcName); + if (rv == cPhs_COMPLEATE_e) { + gravity = -9.0f; + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "U_CrvSteelGate.dzb"); + JUT_ASSERT() + if (dzb_id == -1) { + OS_REPORT("dzbデータが見つかりませんでした!<%s>\n\n", l_arcName); + JUT_PANIC(443, dzb_id != -1); + } + rv = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x4000, NULL); + if (rv == cPhs_ERROR_e) { + return rv; + } + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, + &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + fopAcM_SetMtx(this, mModel->getBaseTRMtx()); + cXyz cStack_30(current.pos.x, current.pos.y + 100.0f, + current.pos.z); + if (fopAcM_gc_c::gndCheck(&cStack_30)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + mMinHeight = current.pos.y; + } + fopAcM_setCullSizeBox(this, -400.0f, 0.0f, -50.0f, 400.0f, 900.0f, 50.0f); + daObjCRVSTEEL_Execute(this); + } + return rv; +} -/* 80BD6210-80BD6214 000008 0004+00 0/1 0/0 0/0 .rodata @3901 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3901 = 100.0f; -COMPILER_STRIP_GATE(0x80BD6210, &lit_3901); -#pragma pop +/* 80BD60A0-80BD60A8 000560 0008+00 1/0 0/0 0/0 .text daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c + */ +static int daObjCRVSTEEL_IsDelete(daObjCRVSTEEL_c* param_0) { + return 1; +} -/* 80BD6214-80BD6218 00000C 0004+00 0/1 0/0 0/0 .rodata @3902 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3902 = -400.0f; -COMPILER_STRIP_GATE(0x80BD6214, &lit_3902); -#pragma pop +/* 80BD60A8-80BD60EC 000568 0044+00 1/0 0/0 0/0 .text Create__15daObjCRVSTEEL_cFv */ +int daObjCRVSTEEL_c::Create() { + fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0, 1000.0f); + return cPhs_COMPLEATE_e; +} -/* 80BD6218-80BD621C 000010 0004+00 0/1 0/0 0/0 .rodata @3903 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3903[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BD6218, &lit_3903); -#pragma pop +/* 80BD60EC-80BD6138 0005AC 004C+00 1/0 0/0 0/0 .text Execute__15daObjCRVSTEEL_cFPPA3_A4_f */ +int daObjCRVSTEEL_c::Execute(Mtx** param_1) { + Action(); + *param_1 = &mBgMtx; + setBaseMtx(); + return 1; +} -/* 80BD621C-80BD6220 000014 0004+00 0/1 0/0 0/0 .rodata @3904 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3904 = -50.0f; -COMPILER_STRIP_GATE(0x80BD621C, &lit_3904); -#pragma pop +/* 80BD6138-80BD61BC 0005F8 0084+00 1/0 0/0 0/0 .text Draw__15daObjCRVSTEEL_cFv */ +int daObjCRVSTEEL_c::Draw() { + g_env_light.settingTevStruct(8, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mModel); + return 1; +} -/* 80BD6220-80BD6224 000018 0004+00 0/1 0/0 0/0 .rodata @3905 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3905 = 400.0f; -COMPILER_STRIP_GATE(0x80BD6220, &lit_3905); -#pragma pop - -/* 80BD6224-80BD6228 00001C 0004+00 0/1 0/0 0/0 .rodata @3906 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3906 = 900.0f; -COMPILER_STRIP_GATE(0x80BD6224, &lit_3906); -#pragma pop - -/* 80BD6228-80BD622C 000020 0004+00 0/1 0/0 0/0 .rodata @3907 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3907 = 50.0f; -COMPILER_STRIP_GATE(0x80BD6228, &lit_3907); -#pragma pop - -/* 80BD623C-80BD623C 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BD6258 = "U_CrvSteelGate.dzb"; -#pragma pop +/* 80BD61BC-80BD61F0 00067C 0034+00 1/0 0/0 0/0 .text Delete__15daObjCRVSTEEL_cFv */ +int daObjCRVSTEEL_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} /* 80BD6270-80BD6290 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCRVSTEEL_Method */ static actor_method_class l_daObjCRVSTEEL_Method = { - (process_method_func)daObjCRVSTEEL_Create__FP10fopAc_ac_c, - (process_method_func)daObjCRVSTEEL_Delete__FP15daObjCRVSTEEL_c, - (process_method_func)daObjCRVSTEEL_Execute__FP15daObjCRVSTEEL_c, - (process_method_func)daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c, - (process_method_func)daObjCRVSTEEL_Draw__FP15daObjCRVSTEEL_c, + (process_method_func)daObjCRVSTEEL_Create, + (process_method_func)daObjCRVSTEEL_Delete, + (process_method_func)daObjCRVSTEEL_Execute, + (process_method_func)daObjCRVSTEEL_IsDelete, + (process_method_func)daObjCRVSTEEL_Draw, }; /* 80BD6290-80BD62C0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_CRVSTEEL */ @@ -246,107 +187,4 @@ extern actor_process_profile_definition g_profile_Obj_CRVSTEEL = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80BD62C0-80BD62E4 000054 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_80BD61F8, - (void*)NULL, - (void*)NULL, - (void*)func_80BD61F0, -}; - -/* 80BD62E4-80BD630C 000078 0028+00 1/1 0/0 0/0 .data __vt__15daObjCRVSTEEL_c */ -SECTION_DATA extern void* __vt__15daObjCRVSTEEL_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__15daObjCRVSTEEL_cFv, - (void*)Create__15daObjCRVSTEEL_cFv, - (void*)Execute__15daObjCRVSTEEL_cFPPA3_A4_f, - (void*)Draw__15daObjCRVSTEEL_cFv, - (void*)Delete__15daObjCRVSTEEL_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80BD5E30-80BD6030 0002F0 0200+00 1/1 0/0 0/0 .text create__15daObjCRVSTEEL_cFv */ -void daObjCRVSTEEL_c::create() { - // NONMATCHING -} - -/* 80BD6030-80BD60A0 0004F0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80BD60A0-80BD60A8 000560 0008+00 1/0 0/0 0/0 .text daObjCRVSTEEL_IsDelete__FP15daObjCRVSTEEL_c - */ -static bool daObjCRVSTEEL_IsDelete(daObjCRVSTEEL_c* param_0) { - return true; -} - -/* ############################################################################################## */ -/* 80BD622C-80BD6230 000024 0004+00 0/1 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = -1000.0f; -COMPILER_STRIP_GATE(0x80BD622C, &lit_3947); -#pragma pop - -/* 80BD6230-80BD6234 000028 0004+00 0/1 0/0 0/0 .rodata @3948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3948 = -500.0f; -COMPILER_STRIP_GATE(0x80BD6230, &lit_3948); -#pragma pop - -/* 80BD6234-80BD6238 00002C 0004+00 0/1 0/0 0/0 .rodata @3949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3949 = 1000.0f; -COMPILER_STRIP_GATE(0x80BD6234, &lit_3949); -#pragma pop - -/* 80BD6238-80BD623C 000030 0004+00 0/1 0/0 0/0 .rodata @3950 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3950 = 500.0f; -COMPILER_STRIP_GATE(0x80BD6238, &lit_3950); -#pragma pop - -/* 80BD60A8-80BD60EC 000568 0044+00 1/0 0/0 0/0 .text Create__15daObjCRVSTEEL_cFv */ -void daObjCRVSTEEL_c::Create() { - // NONMATCHING -} - -/* 80BD60EC-80BD6138 0005AC 004C+00 1/0 0/0 0/0 .text Execute__15daObjCRVSTEEL_cFPPA3_A4_f */ -void daObjCRVSTEEL_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* 80BD6138-80BD61BC 0005F8 0084+00 1/0 0/0 0/0 .text Draw__15daObjCRVSTEEL_cFv */ -void daObjCRVSTEEL_c::Draw() { - // NONMATCHING -} - -/* 80BD61BC-80BD61F0 00067C 0034+00 1/0 0/0 0/0 .text Delete__15daObjCRVSTEEL_cFv */ -void daObjCRVSTEEL_c::Delete() { - // NONMATCHING -} - -/* 80BD61F0-80BD61F8 0006B0 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80BD61F0() { - // NONMATCHING -} - -/* 80BD61F8-80BD6200 0006B8 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80BD61F8() { - // NONMATCHING -} - /* 80BD623C-80BD623C 000034 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_kantera.cpp b/src/d/actor/d_a_obj_kantera.cpp index b7c4e57eadc..0a3d60197f4 100644 --- a/src/d/actor/d_a_obj_kantera.cpp +++ b/src/d/actor/d_a_obj_kantera.cpp @@ -4,124 +4,15 @@ */ #include "d/actor/d_a_obj_kantera.h" +#include "d/actor/d_a_player.h" #include "SSystem/SComponent/c_math.h" #include "d/d_a_itembase_static.h" #include "d/d_com_inf_game.h" #include "d/d_item.h" #include "d/d_item_data.h" #include "d/d_procname.h" -#include "dol2asm.h" #include "f_op/f_op_actor_mng.h" -// -// Forward References: -// - -extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void initBaseMtx__15daItemKantera_cFv(); -extern "C" void setBaseMtx__15daItemKantera_cFv(); -extern "C" void Create__15daItemKantera_cFv(); -extern "C" bool __CreateHeap__15daItemKantera_cFv(); -extern "C" void create__15daItemKantera_cFv(); -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" void bg_check__15daItemKantera_cFv(); -extern "C" void actionInit__15daItemKantera_cFv(); -extern "C" void actionWaitInit__15daItemKantera_cFv(); -extern "C" void actionWait__15daItemKantera_cFv(); -extern "C" void initActionOrderGetDemo__15daItemKantera_cFv(); -extern "C" void actionOrderGetDemo__15daItemKantera_cFv(); -extern "C" void actionGetDemo__15daItemKantera_cFv(); -extern "C" void execute__15daItemKantera_cFv(); -extern "C" void draw__15daItemKantera_cFv(); -extern "C" void _delete__15daItemKantera_cFv(); -extern "C" static void daItemKantera_Draw__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Execute__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Delete__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_80C39630(); -extern "C" static void func_80C39638(); -extern "C" extern char const* const d_a_obj_kantera__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs(); -extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz(); -extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void hide__12daItemBase_cFv(); -extern "C" void show__12daItemBase_cFv(); -extern "C" void chkDraw__12daItemBase_cFv(); -extern "C" void CheckFieldItemCreateHeap__FP10fopAc_ac_c(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void setPtI_Id__14dEvt_control_cFUi(); -extern "C" void endCheckOld__16dEvent_manager_cFPCc(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -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 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 checkItemGet__FUci(); -extern "C" void DeleteBase__12daItemBase_cFPCc(); -extern "C" bool clothCreate__12daItemBase_cFv(); -extern "C" void DrawBase__12daItemBase_cFv(); -extern "C" void RotateYBase__12daItemBase_cFv(); -extern "C" void setListStart__12daItemBase_cFv(); -extern "C" void settingBeforeDraw__12daItemBase_cFv(); -extern "C" void setTevStr__12daItemBase_cFv(); -extern "C" void setShadow__12daItemBase_cFv(); -extern "C" void animEntry__12daItemBase_cFv(); -extern "C" void chkFlag__12daItemBase_cFi(); -extern "C" void getTevFrm__12daItemBase_cFv(); -extern "C" void getBtpFrm__12daItemBase_cFv(); -extern "C" void getShadowSize__12daItemBase_cFv(); -extern "C" void getCollisionH__12daItemBase_cFv(); -extern "C" void getCollisionR__12daItemBase_cFv(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" void* field_item_res__10dItem_data[1020]; -extern "C" u8 item_info__10dItem_data[1020 + 4 /* padding */]; -extern "C" extern void* __vt__12daItemBase_c[17 + 1 /* padding */]; -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 data_80C39860[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80C39648-80C3968C 000000 0044+00 4/4 0/0 0/0 .rodata l_cyl_src */ const static dCcD_SrcCyl l_cyl_src = { { @@ -137,144 +28,21 @@ const static dCcD_SrcCyl l_cyl_src = { } // mCyl }; -/* 80C3968C-80C39690 000044 0004+00 0/3 0/0 0/0 .rodata @3855 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3855[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C3968C, &lit_3855); -#pragma pop - -/* 80C39690-80C39698 000048 0008+00 0/1 0/0 0/0 .rodata @3856 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3856[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C39690, &lit_3856); -#pragma pop - -/* 80C39698-80C396A0 000050 0008+00 0/1 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3857[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C39698, &lit_3857); -#pragma pop - -/* 80C396A0-80C396A8 000058 0008+00 0/1 0/0 0/0 .rodata @3858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3858[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C396A0, &lit_3858); -#pragma pop - -/* 80C396DC-80C396E8 000000 000C+00 1/1 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, -}; - -/* 80C396E8-80C396FC 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 - -/* 80C396FC-80C39708 -00001 000C+00 0/1 0/0 0/0 .data @4184 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4184[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionInit__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39708-80C39714 -00001 000C+00 0/1 0/0 0/0 .data @4185 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4185[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39714-80C39720 -00001 000C+00 0/1 0/0 0/0 .data @4186 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4186[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrderGetDemo__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39720-80C3972C -00001 000C+00 0/1 0/0 0/0 .data @4187 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4187[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionGetDemo__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C3972C-80C3975C 000050 0030+00 0/1 0/0 0/0 .data l_demoFunc$4183 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_demoFunc[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 - -/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */ -static actor_method_class l_daItemKantera_Method = { - (process_method_func)daItemKantera_Create__FP10fopAc_ac_c, - (process_method_func)daItemKantera_Delete__FP15daItemKantera_c, - (process_method_func)daItemKantera_Execute__FP15daItemKantera_c, - 0, - (process_method_func)daItemKantera_Draw__FP15daItemKantera_c, -}; - -/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */ -extern actor_process_profile_definition g_profile_Obj_Kantera = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Kantera, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daItemKantera_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 238, // mPriority - &l_daItemKantera_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; +UNK_REL_DATA /* 80C38678-80C38974 000078 02FC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof */ -static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING +static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_2, f32 param_3) { + cM3dGPla acStack_3c; + if (dComIfG_Bgsp().GetTriPla(param_2, &acStack_3c) != 0) { + cXyz cStack_48; + f32 dVar5 = i_xyz->absXZ(); + C_VECReflect(i_xyz, &acStack_3c.mNormal, &cStack_48); + *i_xyz = (cStack_48 * dVar5) * param_3; + return i_xyz->absXZ(); + } + + return 0.0f; } /* 80C389BC-80C389F8 0003BC 003C+00 1/1 0/0 0/0 .text initBaseMtx__15daItemKantera_cFv */ @@ -347,8 +115,8 @@ int daItemKantera_c::create() { } /* 80C38F78-80C39068 000978 00F0+00 1/1 0/0 0/0 .text bg_check__15daItemKantera_cFv */ -// NONMATCHING lfs not correct void daItemKantera_c::bg_check() { + f32 dVar6 = 0.7f; if (mAcch.ChkWallHit()) { if (speedF > 5.0f) { Reflect(&speed, mAcchCir, 1.0f); @@ -360,7 +128,9 @@ void daItemKantera_c::bg_check() { if (speedF > 5.0f) { Reflect(&l_speed, mAcchCir, 0.7f); } - speed.y = -field_0x93c.y * 0.7f; + f32 tmp = field_0x93c.y; + tmp = -tmp; + speed.y = tmp * dVar6; if (speed.y < 3.0f) { fopAcM_SetSpeedF(this, 0.0f); } @@ -388,17 +158,32 @@ int daItemKantera_c::actionWaitInit() { return 1; } -/* ############################################################################################## */ -/* 80C396C8-80C396CC 000080 0004+00 0/1 0/0 0/0 .rodata @4145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4145 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C396C8, &lit_4145); -#pragma pop - /* 80C3911C-80C39234 000B1C 0118+00 1/0 0/0 0/0 .text actionWait__15daItemKantera_cFv */ int daItemKantera_c::actionWait() { - // NONMATCHING + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bg_check(); + if (mAcch.ChkGroundHit()) { + cLib_onBit(attention_info.flags, 0x10UL); + speedF *= 0.9f; + if (speedF < 1.0f) { + speedF = 0.0f; + } + } else { + cLib_offBit(attention_info.flags, 0x10UL); + } + daPy_py_c* player = daPy_getPlayerActorClass(); + if (fopAcM_checkCarryNow(this)) { + cLib_offBit(attention_info.flags, 0x10UL); + if (player->getGrabUpStart()) { + fopAcM_cancelCarryNow(this); + initActionOrderGetDemo(); + } + } else { + cLib_onBit(attention_info.flags, 0x10UL); + } + attention_info.position = current.pos; + return 1; } /* 80C39234-80C392D0 000C34 009C+00 1/1 0/0 0/0 .text initActionOrderGetDemo__15daItemKantera_cFv @@ -442,7 +227,19 @@ int daItemKantera_c::actionGetDemo() { /* 80C393B0-80C394DC 000DB0 012C+00 1/1 0/0 0/0 .text execute__15daItemKantera_cFv */ int daItemKantera_c::execute() { - // NONMATCHING + static daItemKantera_c::actionFunc l_demoFunc[4] = { + &daItemKantera_c::actionInit, + &daItemKantera_c::actionWait, + &daItemKantera_c::actionOrderGetDemo, + &daItemKantera_c::actionGetDemo, + }; + field_0x93c = speed; + field_0x930++; + (this->*(l_demoFunc[mStatus]))(); + eyePos = current.pos; + attention_info.position = current.pos; + setBaseMtx(); + return 1; } /* 80C394DC-80C39530 000EDC 0054+00 1/1 0/0 0/0 .text draw__15daItemKantera_cFv */ @@ -480,3 +277,31 @@ static int daItemKantera_Delete(daItemKantera_c* i_this) { static int daItemKantera_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->create(); } + + +/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */ +static actor_method_class l_daItemKantera_Method = { + (process_method_func)daItemKantera_Create, + (process_method_func)daItemKantera_Delete, + (process_method_func)daItemKantera_Execute, + NULL, + (process_method_func)daItemKantera_Draw, +}; + +/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */ +extern actor_process_profile_definition g_profile_Obj_Kantera = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Kantera, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daItemKantera_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 238, // mPriority + &l_daItemKantera_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_pdtile.cpp b/src/d/actor/d_a_obj_pdtile.cpp index 649de274665..0c89cc331f5 100644 --- a/src/d/actor/d_a_obj_pdtile.cpp +++ b/src/d/actor/d_a_obj_pdtile.cpp @@ -4,302 +4,204 @@ */ #include "d/actor/d_a_obj_pdtile.h" +#include "SSystem/SComponent/c_math.h" +#include "d/actor/d_a_player.h" +#include "d/d_bg_w.h" #include "d/d_cc_d.h" +#include "d/d_com_inf_game.h" #include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void create1st__13daObjPDtile_cFv(); -extern "C" void setMtx__13daObjPDtile_cFv(); -extern "C" void rideActor__13daObjPDtile_cFP10fopAc_ac_c(); -extern "C" void CreateHeap__13daObjPDtile_cFv(); -extern "C" void Create__13daObjPDtile_cFv(); -extern "C" void Execute__13daObjPDtile_cFPPA3_A4_f(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void Draw__13daObjPDtile_cFv(); -extern "C" void Delete__13daObjPDtile_cFv(); -extern "C" static void daObjPDtile_create1st__FP13daObjPDtile_c(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" static void daObjPDtile_MoveBGDelete__FP13daObjPDtile_c(); -extern "C" static void daObjPDtile_MoveBGExecute__FP13daObjPDtile_c(); -extern "C" static void daObjPDtile_MoveBGDraw__FP13daObjPDtile_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__13daObjPDtile_cFv(); -extern "C" static void func_80CAC4EC(); -extern "C" static void func_80CAC4F4(); -extern "C" static void func_80CAC4FC(); -extern "C" extern char const* const d_a_obj_pdtile__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XYZrotM__FPA4_fsss(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -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 __dt__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__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 Set__4cCcSFP8cCcD_Obj(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dt__14Z2SoundObjBaseFv(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __dl__FPv(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__16dBgS_MoveBgActor[10]; -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" extern void* __vt__16Z2SoundObjSimple[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - /* 80CAACB8-80CAACE0 000078 0028+00 1/1 0/0 0/0 .text * rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING +static void rideCallBack(dBgW* param_1, fopAc_ac_c* param_2, fopAc_ac_c* param_3) { + static_cast(param_2)->rideActor(param_3); } -/* ############################################################################################## */ -/* 80CAC50C-80CAC510 000000 0004+00 3/3 0/0 0/0 .rodata @3680 */ -SECTION_RODATA static f32 const lit_3680 = 1500.0f; -COMPILER_STRIP_GATE(0x80CAC50C, &lit_3680); - -/* 80CAC510-80CAC514 000004 0004+00 0/1 0/0 0/0 .rodata @3681 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3681 = 600.0f; -COMPILER_STRIP_GATE(0x80CAC510, &lit_3681); -#pragma pop - -/* 80CAC514-80CAC518 000008 0004+00 0/2 0/0 0/0 .rodata @3682 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3682 = 450.0f; -COMPILER_STRIP_GATE(0x80CAC514, &lit_3682); -#pragma pop - -/* 80CAC518-80CAC51C 00000C 0004+00 1/3 0/0 0/0 .rodata @3683 */ -SECTION_RODATA static u8 const lit_3683[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CAC518, &lit_3683); - -/* 80CAC580-80CAC580 000074 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CAC580 = "P_Dtile"; -SECTION_DEAD static char const* const stringBase_80CAC588 = "P_Dtile00"; -SECTION_DEAD static char const* const stringBase_80CAC592 = "Lv9_Dtile"; -#pragma pop - -/* 80CAC59C-80CAC5A8 000000 000C+00 1/1 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, -}; - -/* 80CAC5A8-80CAC5BC 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 /* 80CAC5BC-80CAC5C0 -00001 0004+00 0/1 0/0 0/0 .data l_arcName4 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_arcName4 = (void*)&d_a_obj_pdtile__stringBase0; -#pragma pop +static char* l_arcName4 = "P_Dtile"; /* 80CAC5C0-80CAC5C8 000024 0008+00 0/1 0/0 0/0 .data l_dzbidx4 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_dzbidx4[8] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, +static u32 l_dzbidx4[2] = { + 9, 8, }; -#pragma pop /* 80CAC5C8-80CAC5D0 00002C 0008+00 0/1 0/0 0/0 .data l_bmdidx4 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_bmdidx4[8] = { - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, +static u32 l_bmdidx4[2] = { + 5, 4, }; -#pragma pop /* 80CAC5D0-80CAC600 000034 0030+00 0/1 0/0 0/0 .data l_cull_box4 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_cull_box4[48] = { - 0xC2, 0x48, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x41, 0xA3, 0xEB, 0x85, 0x42, 0x48, 0x00, 0x00, 0xC3, 0x20, 0x00, 0x00, 0xC3, 0xE6, 0x00, 0x00, - 0xC3, 0x20, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, +static Vec l_cull_box4[2][2] = { + {{-50.0f, -100.0f, -50.0f}, {50.0f, 20.49f, 50.0f}}, + {{-160.0f, -460.0f, -160.0f}, {160.0f, 20.0f, 160.0f}}, }; -#pragma pop /* 80CAC600-80CAC604 -00001 0004+00 0/1 0/0 0/0 .data l_arcName7 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_arcName7 = (void*)(((char*)&d_a_obj_pdtile__stringBase0) + 0x8); -#pragma pop +static char* l_arcName7 = "P_Dtile00"; /* 80CAC604-80CAC608 000068 0004+00 0/1 0/0 0/0 .data l_dzbidx7 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 l_dzbidx7 = 0x00000007; -#pragma pop +static u32 l_dzbidx7 = 7; /* 80CAC608-80CAC60C 00006C 0004+00 0/1 0/0 0/0 .data l_bmdidx7 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 l_bmdidx7 = 0x00000004; -#pragma pop +static u32 l_bmdidx7 = 4; /* 80CAC60C-80CAC624 000070 0018+00 0/1 0/0 0/0 .data l_cull_box7 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_cull_box7[24] = { - 0xC3, 0x48, 0x00, 0x00, 0xC4, 0x2F, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, +static Vec l_cull_box7[2] = { + {-200.0f, -700.0f, -200.0f}, + {200.0f, 50.0f, 200.0f}, }; -#pragma pop /* 80CAC624-80CAC628 -00001 0004+00 0/1 0/0 0/0 .data l_arcName9 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_arcName9 = (void*)(((char*)&d_a_obj_pdtile__stringBase0) + 0x12); -#pragma pop +static char* l_arcName9 = "Lv9_Dtile"; /* 80CAC628-80CAC62C 00008C 0004+00 0/1 0/0 0/0 .data l_dzbidx9 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 l_dzbidx9 = 0x00000007; -#pragma pop +static u32 l_dzbidx9 = 7; /* 80CAC62C-80CAC630 000090 0004+00 0/1 0/0 0/0 .data l_bmdidx9 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 l_bmdidx9 = 0x00000004; -#pragma pop +static u32 l_bmdidx9 = 4; /* 80CAC630-80CAC648 000094 0018+00 0/1 0/0 0/0 .data l_cull_box9 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_cull_box9[24] = { - 0xC3, 0x48, 0x00, 0x00, 0xC4, 0x22, 0x80, 0x00, 0xC3, 0x48, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, +static Vec l_cull_box9[2] = { + {-200.0f, -650.0f, -200.0f}, + {200.0f, 50.0f, 200.0f}, }; -#pragma pop /* 80CAACE0-80CAAE80 0000A0 01A0+00 1/1 0/0 0/0 .text create1st__13daObjPDtile_cFv */ -void daObjPDtile_c::create1st() { - // NONMATCHING +int daObjPDtile_c::create1st() { + mType = (Type)getType(); + if (mType == TYPE_4) { + mArcName = l_arcName9; + mDzbId = l_dzbidx9; + mBmdId = l_bmdidx9; + mCullBox = l_cull_box9; + field_0x7cc = 1500.0f; + } else if (mType == TYPE_2) { + mArcName = l_arcName7; + mDzbId = l_dzbidx7; + mBmdId = l_bmdidx7; + mCullBox = l_cull_box7; + field_0x7cc = 600.0f; + } else if (mType == TYPE_0) { + mArcName = l_arcName4; + mDzbId = l_dzbidx4[0]; + mBmdId = l_bmdidx4[0]; + mCullBox = l_cull_box4[0]; + field_0x7cc = 450.0f; + } else { + mArcName = l_arcName4; + mDzbId = l_dzbidx4[1]; + mBmdId = l_bmdidx4[1]; + mCullBox = l_cull_box4[1]; + field_0x7cc = 450.0f; + } + int rv = dComIfG_resLoad(this, mArcName); + if (rv == cPhs_COMPLEATE_e) { + setMtx(); + MoveBGActor_SetFunc setFunc; + if (mType != TYPE_4) { + setFunc = dBgS_MoveBGProc_TypicalRotY; + } else { + setFunc = NULL; + } + rv = MoveBGCreate(mArcName, mDzbId, setFunc, 0x12a0, &mBgMtx); + if (rv == cPhs_ERROR_e) { + return rv; + } + field_0x620.z = 0.0f; + field_0x620.y = 0.0f; + field_0x620.x = 0.0f; + } + return rv; } -/* ############################################################################################## */ -/* 80CAC51C-80CAC520 000010 0004+00 1/1 0/0 0/0 .rodata @3716 */ -SECTION_RODATA static f32 const lit_3716 = 101.0f / 100.0f; -COMPILER_STRIP_GATE(0x80CAC51C, &lit_3716); - -/* 80CAC520-80CAC524 000014 0004+00 1/3 0/0 0/0 .rodata @3717 */ -SECTION_RODATA static f32 const lit_3717 = 1.0f; -COMPILER_STRIP_GATE(0x80CAC520, &lit_3717); - /* 80CAAE80-80CAAF90 000240 0110+00 3/3 0/0 0/0 .text setMtx__13daObjPDtile_cFv */ void daObjPDtile_c::setMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos.x + field_0x620.x, + current.pos.y, + current.pos.z + field_0x620.z); + mDoMtx_stack_c::XYZrotM(current.angle.x, current.angle.y, current.angle.z); + MTXCopy(mDoMtx_stack_c::get(), field_0x5d8); + if (mType != TYPE_2 && mType != TYPE_4) { + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); + } else { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, + current.pos.z); + mDoMtx_stack_c::XYZrotM(0, current.angle.y, 0); + if (mType == TYPE_2) { + cXyz local_1c; + local_1c.x = 1.01f; + local_1c.y = 1.0f; + local_1c.z = 1.01f; + mDoMtx_stack_c::scaleM(local_1c); + } + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); + } } -/* ############################################################################################## */ -/* 80CAC524-80CAC528 000018 0004+00 0/2 0/0 0/0 .rodata @3778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3778 = 2.5f; -COMPILER_STRIP_GATE(0x80CAC524, &lit_3778); -#pragma pop - -/* 80CAC528-80CAC52C 00001C 0004+00 0/2 0/0 0/0 .rodata @3779 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3779 = -1.0f; -COMPILER_STRIP_GATE(0x80CAC528, &lit_3779); -#pragma pop - -/* 80CAC52C-80CAC530 000020 0004+00 1/2 0/0 0/0 .rodata @3780 */ -SECTION_RODATA static f32 const lit_3780 = 65535.0f; -COMPILER_STRIP_GATE(0x80CAC52C, &lit_3780); - /* 80CAAF90-80CAB1F0 000350 0260+00 1/1 0/0 0/0 .text rideActor__13daObjPDtile_cFP10fopAc_ac_c */ -void daObjPDtile_c::rideActor(fopAc_ac_c* param_0) { - // NONMATCHING +void daObjPDtile_c::rideActor(fopAc_ac_c* param_1) { + if (param_1 == daPy_getLinkPlayerActorClass() || + fopAcM_GetProfName(param_1) == PROC_B_GG) + { + if (mType == TYPE_0) { + field_0x7b0 = 200; + } else { + field_0x7b0 = 100; + } + field_0x7b5 = 1; + field_0x61c = 2.5f; + if (field_0x610 == 0) { + if (mType == TYPE_2) { + field_0x610 = 5; + mSoundObj.startSound(Z2SE_OBJ_FLR_FALL_START, 0, -1); + } else if ((mType == TYPE_1) || (mType == TYPE_3)) { + field_0x610 = 7; + field_0x7d8 = 0; + Z2GetAudioMgr()->seStart(Z2SE_OBJ_SINK_FLOOR_DW_TRG, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + } else { + field_0x610 = 1; + if (mType == TYPE_4) { + mSoundObj.startSound(Z2SE_OBJ_FLR_FALL_START, 0, -1); + } + } + } + if (param_1 == daPy_getLinkPlayerActorClass()) { + if (daPy_getLinkPlayerActorClass()->checkBootsOrArmorHeavy()) { + field_0x630 = 1; + } + } + } + if (!cM3d_IsZero(param_1->speed.x) || !cM3d_IsZero(param_1->speed.z)) { + field_0x61c = 2.5f; + if (mType == TYPE_0) { + field_0x7b0 = 200; + } else { + field_0x7b0 = 100; + } + } + if (field_0x614 == 0) { + field_0x7ac = 0; + if (mType == TYPE_0) { + field_0x7b0 = 200; + } else { + field_0x7b0 = 100; + } + field_0x7b2 = cM_rndF(65535.0f); + field_0x61c = 2.5f; + } + field_0x614 = 1; + field_0x7b4 = 1; } /* 80CAB1F0-80CAB258 0005B0 0068+00 1/0 0/0 0/0 .text CreateHeap__13daObjPDtile_cFv */ -void daObjPDtile_c::CreateHeap() { - // NONMATCHING +int daObjPDtile_c::CreateHeap() { + J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(mArcName, mBmdId); + JUT_ASSERT(557, model_data != 0); + mModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084); + return mModel != 0 ? TRUE : FALSE; } /* ############################################################################################## */ @@ -319,146 +221,336 @@ static dCcD_SrcCyl cc_cyl_src = { }; /* 80CAB258-80CAB374 000618 011C+00 1/0 0/0 0/0 .text Create__13daObjPDtile_cFv */ -void daObjPDtile_c::Create() { - // NONMATCHING +int daObjPDtile_c::Create() { + mModel->setBaseTRMtx(field_0x5d8); + fopAcM_SetMtx(this, field_0x5d8); + fopAcM_setCullSizeBox(this, + mCullBox[0].x, mCullBox[0].y, mCullBox[0].z, + mCullBox[1].x, mCullBox[1].y, mCullBox[1].z); + mpBgW->SetRideCallback(rideCallBack); + field_0x610 = 0; + field_0x614 = 0; + field_0x618 = 0; + field_0x61c = 0.0f; + field_0x62c = 0.0f; + field_0x630 = 0; + mStts.Init(0xff, 0, this); + mCyl.Set(cc_cyl_src); + mCyl.SetStts(&mStts); + field_0x7ac = 0; + field_0x7b0 = 0; + field_0x7b2 = cM_rndF(65535.0f); + field_0x7b4 = 0; + field_0x7d0 = 0; + field_0x7d8 = 0; + mSoundObj.init(¤t.pos, 1); + return 1; } -/* ############################################################################################## */ -/* 80CAC530-80CAC534 000024 0004+00 0/1 0/0 0/0 .rodata @4184 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4184 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CAC530, &lit_4184); -#pragma pop +/* 80CAB374-80CABED8 000734 0B64+00 1/0 0/0 0/0 .text Execute__13daObjPDtile_cFPPA3_A4_f + */ +int daObjPDtile_c::Execute(Mtx** param_1) { + if (mCyl.ChkTgHit()) { + field_0x614 = 1; + if (mType == TYPE_0) { + field_0x7b0 = 200; + } else { + field_0x7b0 = 100; + } + field_0x61c = 2.5f; + if (mType == TYPE_2 || mType == TYPE_4) { + field_0x610 = 2; + field_0x62c = 0.3f; + } + } + if (field_0x610 == 1 || field_0x614 != 0 || + field_0x7b0 != 0) + { + field_0x620.x = cM_rndFX(field_0x61c); + field_0x620.z = cM_rndFX(field_0x61c); + field_0x7ac++; + current.angle.x = field_0x7b0 * cM_ssin(field_0x7ac * 10000); + current.angle.z = field_0x7b0 * + cM_ssin(field_0x7b2 + field_0x7ac * 10000); + field_0x7b0 *= 0.95f; + field_0x61c *= 0.95f; + if (field_0x7b0 < 32) { + field_0x7b0 = 0; + field_0x7ac = 0; + } + if (field_0x610 == 1) { + field_0x618++; + if (field_0x618 >= 4.5f) + { + field_0x610 = 2; + field_0x62c = 0.3f; + } + } + if ((mType == TYPE_2 || mType == TYPE_4) && field_0x7b5 == 0 && field_0x610 != 5 && + field_0x610 != 6 && field_0x610 != 2 && field_0x610 != 4 && field_0x7b0 != 0) + { + mSoundObj.startLevelSound(Z2SE_OBJ_FLR_GURAGURA, 0, -1); + } + } else { + field_0x620 *= -0.8f; + field_0x7ac = 0; + } + bool bVar5 = false; + cXyz local_f0(daPy_getLinkPlayerActorClass()->current.pos); + f32 diffx = local_f0.x - current.pos.x; + f32 diffz = local_f0.z - current.pos.z; + if (diffx * diffx + + diffz * diffz < + 14400.0f && + local_f0.y > current.pos.y && local_f0.y < current.pos.y + 450.0f) + { + bVar5 = true; + } + if (field_0x610 == 2 || field_0x610 == 5) { + if (mType == TYPE_3 && field_0x7b5 == 0 && !bVar5) { + field_0x7b8++; + if (75 <= field_0x7b8) { + field_0x610 = 3; + } + } else { + current.pos.y -= field_0x62c; + if ((field_0x610 == 5) && + (current.pos.y <= home.pos.y - 30.0f)) + { + current.pos.y = home.pos.y - 30.0f; + field_0x610 = 6; + field_0x7d4 = 0; + field_0x62c *= -0.8f; + } + if (current.pos.y <= home.pos.y - field_0x7cc) { + current.pos.y = home.pos.y - field_0x7cc; + if (mType == TYPE_3 && field_0x7b5 == 0) { + field_0x7b8++; + if (75 <= field_0x7b8) { + field_0x7b8 = 75; + if (!bVar5) { + field_0x610 = 3; + } + } + } else { + field_0x7b8 = 0; + } + if (mType == TYPE_2 || mType == TYPE_4) { + field_0x610 = 4; + fopAcM_OnStatus(this, 0x4000); + } + } else { + field_0x7b8 = 0; + if (mType != TYPE_2 && mType != TYPE_4) { + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_SINK_FLOOR_DW, ¤t.pos, 0, 0, 1.0f, 1.0f, + -1.0f, -1.0f, 0); + } + if (field_0x610 == 5) { + if (field_0x630 != 0) { + field_0x62c += 5.0f; + } else { + field_0x62c += 3.0f; + } + } else if (mType == 2 && field_0x630 != 0) { + field_0x62c += 1.0f; + if (field_0x62c >= 15.0f) { + field_0x62c = 15.0f; + } + } else if (mType == 4) { + field_0x62c += 2.0f; + if (field_0x630 != 0) { + field_0x62c += 2.0f; + } + if (field_0x62c >= 30.0f) { + field_0x62c = 30.0f; + } + } else { + field_0x62c += 0.03f; + if (field_0x630 != 0) { + field_0x62c += 0.03f; + } + if (field_0x62c >= 10.0f) { + field_0x62c = 10.0f; + } + } + } + } + } + if (field_0x610 == 6) { + current.pos.y -= field_0x62c; + field_0x7d4++; + if (field_0x62c > 0.0f && + current.pos.y <= home.pos.y - 30.0f) + { + if (field_0x630 == 0 && 30 < field_0x7d4) { + field_0x610 = 2; + field_0x62c = 0; + } else if (field_0x630 != 0 && field_0x7d4 > 5) { + field_0x610 = 2; + field_0x62c = 0; + } else { + field_0x62c *= -0.2f; + } + } else { + if (field_0x630 != 0) { + field_0x62c += 5.0f; + } else { + field_0x62c += 3.0f; + } + } + } + if (field_0x610 == 3 && mType == TYPE_3) { + if (field_0x7b5 == 1) { + field_0x610 = 2; + if (mType == TYPE_2 && field_0x630 != 0) { + field_0x62c = 0.3f; + } else if (mType == 4) { + field_0x62c = 2.0f; + } else { + field_0x62c = 0.3f; + } + } + current.pos.y += 1.5f; + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_SINK_FLOOR_UP, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, + 0); + if (current.pos.y >= home.pos.y) { + current.pos.y = home.pos.y; + field_0x610 = 0; + } + } + if (field_0x610 == 4) { + if (mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + if (field_0x7d0 != 0) { + field_0x62c *= 2.0f; + } + field_0x7d0 = 0; + if (mType == TYPE_2 && field_0x630 != 0) { + field_0x62c += 7.0f; + } else if (mType == 4) { + field_0x62c += 10.0f; + } else { + field_0x62c += 5.0f; + } + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (field_0x62c >= -player->maxFallSpeed + 10.0f) { + field_0x62c = -player->maxFallSpeed + 10.0f; + } + current.pos.y -= field_0x62c; + if (mType != TYPE_2 && mType != TYPE_4) { + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_SINK_FLOOR_DW, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + } + dBgS_ObjGndChk adStack_e4; + adStack_e4.SetActorPid(base.id); + adStack_e4.SetPos(¤t.pos); + dComIfG_Bgsp().GroundCross(&adStack_e4); + if (home.pos.y - current.pos.y < -3000.0f) { + fopAcM_delete(this); + } + field_0x7b0 = 0; + field_0x614 = 0; + } + if (field_0x610 == 7) { + if (field_0x7d8 < 5.0f) { + current.pos.y = home.pos.y - (30.0f * field_0x7d8) / 5.0f; + } else { + current.pos.y = home.pos.y - 30.0f * (10.0f - field_0x7d8) / 5.0f; + } + field_0x7d8++; + if (field_0x7d8 >= 10) { + current.pos.y = home.pos.y; + field_0x610 = 2; + field_0x62c = 0.3f; + } + } + if ((mType == TYPE_2 || mType == TYPE_4) && + (field_0x610 == 6 || field_0x610 == 5 || field_0x610 == 2)) + { + // Fake match to load field_0x62c first. + f32 xx = *(vf32*)&field_0x62c; + u32 ff; + ff = xx = (127 * xx) / 15; + mSoundObj.startLevelSound(Z2SE_OBJ_FLR_FALLING, ff, -1); + } + setMtx(); + mModel->setBaseTRMtx(field_0x5d8); + *param_1 = &mBgMtx; + mCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCyl); + if (field_0x7b4 == 0) { + field_0x614 = 0; + } + field_0x7b4 = 0; + field_0x630 = 0; + field_0x7b5 = 0; + mSoundObj.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + return 1; +} -/* 80CAC534-80CAC538 000028 0004+00 0/1 0/0 0/0 .rodata @4185 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4185 = 19.0f / 20.0f; -COMPILER_STRIP_GATE(0x80CAC534, &lit_4185); -#pragma pop +/* 80CABF50-80CAC094 001310 0144+00 1/0 0/0 0/0 .text Draw__13daObjPDtile_cFv */ +int daObjPDtile_c::Draw() { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (field_0x610 == 4 && player != NULL) { + cXyz local_48(player->current.pos); + f32 diffZ = local_48.z - current.pos.z; + f32 diffX = fabsf(local_48.x - current.pos.x); + if (diffX < 200.0f && fabsf(diffZ) < 200.0f && local_48.y < current.pos.y) + { + current.pos.y = local_48.y - field_0x62c; + field_0x7d0 = 1; + setMtx(); + } else { + field_0x7d0 = 0; + } + } + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mModel); + dComIfGd_setList(); + return 1; +} -/* 80CAC538-80CAC53C 00002C 0004+00 0/1 0/0 0/0 .rodata @4186 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4186 = 4.5f; -COMPILER_STRIP_GATE(0x80CAC538, &lit_4186); -#pragma pop +/* 80CAC094-80CAC0D8 001454 0044+00 1/0 0/0 0/0 .text Delete__13daObjPDtile_cFv */ +int daObjPDtile_c::Delete() { + dComIfG_resDelete(this, mArcName); + mSoundObj.deleteObject(); + return 1; +} -/* 80CAC53C-80CAC540 000030 0004+00 0/1 0/0 0/0 .rodata @4187 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4187 = -4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CAC53C, &lit_4187); -#pragma pop +/* 80CAC0D8-80CAC1D4 001498 00FC+00 1/0 0/0 0/0 .text daObjPDtile_create1st__FP13daObjPDtile_c */ +static int daObjPDtile_create1st(daObjPDtile_c* i_this) { + fopAcM_SetupActor(i_this,daObjPDtile_c); + return i_this->create1st(); +} -/* 80CAC540-80CAC544 000034 0004+00 0/1 0/0 0/0 .rodata @4188 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4188 = 14400.0f; -COMPILER_STRIP_GATE(0x80CAC540, &lit_4188); -#pragma pop +/* 80CAC2C0-80CAC2E0 001680 0020+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGDelete__FP13daObjPDtile_c + */ +static int daObjPDtile_MoveBGDelete(daObjPDtile_c* i_this) { + return i_this->MoveBGDelete(); +} -/* 80CAC544-80CAC548 000038 0004+00 0/1 0/0 0/0 .rodata @4189 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4189 = 30.0f; -COMPILER_STRIP_GATE(0x80CAC544, &lit_4189); -#pragma pop +/* 80CAC2E0-80CAC300 0016A0 0020+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGExecute__FP13daObjPDtile_c + */ +static int daObjPDtile_MoveBGExecute(daObjPDtile_c* i_this) { + return i_this->MoveBGExecute(); +} -/* 80CAC548-80CAC54C 00003C 0004+00 0/1 0/0 0/0 .rodata @4190 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4190 = 5.0f; -COMPILER_STRIP_GATE(0x80CAC548, &lit_4190); -#pragma pop +/* 80CAC300-80CAC32C 0016C0 002C+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGDraw__FP13daObjPDtile_c */ +static int daObjPDtile_MoveBGDraw(daObjPDtile_c* i_this) { + return i_this->MoveBGDraw(); +} -/* 80CAC54C-80CAC550 000040 0004+00 0/1 0/0 0/0 .rodata @4191 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4191 = 3.0f; -COMPILER_STRIP_GATE(0x80CAC54C, &lit_4191); -#pragma pop - -/* 80CAC550-80CAC554 000044 0004+00 0/1 0/0 0/0 .rodata @4192 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4192 = 15.0f; -COMPILER_STRIP_GATE(0x80CAC550, &lit_4192); -#pragma pop - -/* 80CAC554-80CAC558 000048 0004+00 0/1 0/0 0/0 .rodata @4193 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4193 = 2.0f; -COMPILER_STRIP_GATE(0x80CAC554, &lit_4193); -#pragma pop - -/* 80CAC558-80CAC55C 00004C 0004+00 0/1 0/0 0/0 .rodata @4194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4194 = 3.0f / 100.0f; -COMPILER_STRIP_GATE(0x80CAC558, &lit_4194); -#pragma pop - -/* 80CAC55C-80CAC560 000050 0004+00 0/1 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 10.0f; -COMPILER_STRIP_GATE(0x80CAC55C, &lit_4195); -#pragma pop - -/* 80CAC560-80CAC564 000054 0004+00 0/1 0/0 0/0 .rodata @4196 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4196 = -1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CAC560, &lit_4196); -#pragma pop - -/* 80CAC564-80CAC568 000058 0004+00 0/1 0/0 0/0 .rodata @4197 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4197 = 1.5f; -COMPILER_STRIP_GATE(0x80CAC564, &lit_4197); -#pragma pop - -/* 80CAC568-80CAC56C 00005C 0004+00 0/1 0/0 0/0 .rodata @4198 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4198 = 7.0f; -COMPILER_STRIP_GATE(0x80CAC568, &lit_4198); -#pragma pop - -/* 80CAC56C-80CAC570 000060 0004+00 0/1 0/0 0/0 .rodata @4199 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4199 = -3000.0f; -COMPILER_STRIP_GATE(0x80CAC56C, &lit_4199); -#pragma pop - -/* 80CAC570-80CAC574 000064 0004+00 0/1 0/0 0/0 .rodata @4200 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4200 = 127.0f; -COMPILER_STRIP_GATE(0x80CAC570, &lit_4200); -#pragma pop - -/* 80CAC574-80CAC57C 000068 0008+00 0/1 0/0 0/0 .rodata @4202 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4202[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CAC574, &lit_4202); -#pragma pop /* 80CAC68C-80CAC6AC -00001 0020+00 1/0 0/0 0/0 .data daObjPDtile_METHODS */ static actor_method_class daObjPDtile_METHODS = { - (process_method_func)daObjPDtile_create1st__FP13daObjPDtile_c, - (process_method_func)daObjPDtile_MoveBGDelete__FP13daObjPDtile_c, - (process_method_func)daObjPDtile_MoveBGExecute__FP13daObjPDtile_c, - 0, - (process_method_func)daObjPDtile_MoveBGDraw__FP13daObjPDtile_c, + (process_method_func)daObjPDtile_create1st, + (process_method_func)daObjPDtile_MoveBGDelete, + (process_method_func)daObjPDtile_MoveBGExecute, + NULL, + (process_method_func)daObjPDtile_MoveBGDraw, }; /* 80CAC6AC-80CAC6DC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_PDtile */ @@ -479,157 +571,4 @@ extern actor_process_profile_definition g_profile_Obj_PDtile = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80CAC6DC-80CAC6E8 000140 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80CAC6E8-80CAC6F4 00014C 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80CAC6F4-80CAC700 000158 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80CAC700-80CAC70C 000164 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80CAC70C-80CAC73C 000170 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80CAC4EC, - (void*)NULL, - (void*)NULL, - (void*)func_80CAC4FC, - (void*)NULL, - (void*)NULL, - (void*)func_80CAC4F4, -}; - -/* 80CAB374-80CABED8 000734 0B64+00 1/0 0/0 0/0 .text Execute__13daObjPDtile_cFPPA3_A4_f - */ -void daObjPDtile_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* 80CABED8-80CABF50 001298 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CAC57C-80CAC580 000070 0004+00 1/1 0/0 0/0 .rodata @4256 */ -SECTION_RODATA static f32 const lit_4256 = 200.0f; -COMPILER_STRIP_GATE(0x80CAC57C, &lit_4256); - -/* 80CABF50-80CAC094 001310 0144+00 1/0 0/0 0/0 .text Draw__13daObjPDtile_cFv */ -void daObjPDtile_c::Draw() { - // NONMATCHING -} - -/* 80CAC094-80CAC0D8 001454 0044+00 1/0 0/0 0/0 .text Delete__13daObjPDtile_cFv */ -void daObjPDtile_c::Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CAC73C-80CAC768 0001A0 002C+00 2/2 0/0 0/0 .data __vt__13daObjPDtile_c */ -SECTION_DATA extern void* __vt__13daObjPDtile_c[11] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjPDtile_cFv, - (void*)Create__13daObjPDtile_cFv, - (void*)Execute__13daObjPDtile_cFPPA3_A4_f, - (void*)Draw__13daObjPDtile_cFv, - (void*)Delete__13daObjPDtile_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, - (void*)__dt__13daObjPDtile_cFv, -}; - -/* 80CAC0D8-80CAC1D4 001498 00FC+00 1/0 0/0 0/0 .text daObjPDtile_create1st__FP13daObjPDtile_c */ -static void daObjPDtile_create1st(daObjPDtile_c* param_0) { - // NONMATCHING -} - -/* 80CAC1D4-80CAC21C 001594 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80CAC21C-80CAC264 0015DC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80CAC264-80CAC2C0 001624 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CAC2C0-80CAC2E0 001680 0020+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGDelete__FP13daObjPDtile_c - */ -static void daObjPDtile_MoveBGDelete(daObjPDtile_c* param_0) { - // NONMATCHING -} - -/* 80CAC2E0-80CAC300 0016A0 0020+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGExecute__FP13daObjPDtile_c - */ -static void daObjPDtile_MoveBGExecute(daObjPDtile_c* param_0) { - // NONMATCHING -} - -/* 80CAC300-80CAC32C 0016C0 002C+00 1/0 0/0 0/0 .text daObjPDtile_MoveBGDraw__FP13daObjPDtile_c */ -static void daObjPDtile_MoveBGDraw(daObjPDtile_c* param_0) { - // NONMATCHING -} - -/* 80CAC32C-80CAC374 0016EC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CAC374-80CAC4EC 001734 0178+00 1/0 0/0 0/0 .text __dt__13daObjPDtile_cFv */ -daObjPDtile_c::~daObjPDtile_c() { - // NONMATCHING -} - -/* 80CAC4EC-80CAC4F4 0018AC 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_80CAC4EC() { - // NONMATCHING -} - -/* 80CAC4F4-80CAC4FC 0018B4 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_80CAC4F4() { - // NONMATCHING -} - -/* 80CAC4FC-80CAC504 0018BC 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_80CAC4FC() { - // NONMATCHING -} - /* 80CAC580-80CAC580 000074 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_stone.cpp b/src/d/actor/d_a_obj_stone.cpp index 8e7f24b3f19..1ee80e87579 100644 --- a/src/d/actor/d_a_obj_stone.cpp +++ b/src/d/actor/d_a_obj_stone.cpp @@ -9,184 +9,18 @@ #include "d/actor/d_a_obj_stone.h" #include "d/actor/d_a_player.h" #include "d/d_lib.h" -#include "dol2asm.h" +#include "f_op/f_op_kankyo_mng.h" #include "global.h" #include "SSystem/SComponent/c_math.h" +#include "cmath.h" -// -// Forward References: -// - -extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" static void CheckCreateHeap__FP10fopAc_ac_c(); -extern "C" void initBaseMtx__12daObjStone_cFv(); -extern "C" void setBaseMtx__12daObjStone_cFv(); -extern "C" void Create__12daObjStone_cFv(); -extern "C" void CreateHeap__12daObjStone_cFv(); -extern "C" void create__12daObjStone_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -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" void execute__12daObjStone_cFv(); -extern "C" void mode_proc_call__12daObjStone_cFv(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void init_modePutWait__12daObjStone_cFv(); -extern "C" void modePutWait__12daObjStone_cFv(); -extern "C" void init_modeWait__12daObjStone_cFv(); -extern "C" void modeWait__12daObjStone_cFv(); -extern "C" void init_modeDrop__12daObjStone_cFv(); -extern "C" void modeDrop__12daObjStone_cFv(); -extern "C" void init_modeCarry__12daObjStone_cFv(); -extern "C" void modeCarry__12daObjStone_cFv(); -extern "C" void init_modeWalk__12daObjStone_cFv(); -extern "C" void modeWalk__12daObjStone_cFv(); -extern "C" void init_modePushWolfNonBreak__12daObjStone_cFv(); -extern "C" void init_modeYogan__12daObjStone_cFv(); -extern "C" void modeYogan__12daObjStone_cFv(); -extern "C" void init_modeBreak__12daObjStone_cFv(); -extern "C" void modeBreak__12daObjStone_cFv(); -extern "C" void CrrPos__12daObjStone_cFv(); -extern "C" void createItem__12daObjStone_cFv(); -extern "C" void calcRotBaseMtx__12daObjStone_cFPs(); -extern "C" void checkRollAngle__12daObjStone_cFv(); -extern "C" void set_carry_eff__12daObjStone_cFv(); -extern "C" void effect_delete__12daObjStone_cFb(); -extern "C" void draw__12daObjStone_cFv(); -extern "C" void _delete__12daObjStone_cFv(); -extern "C" static void daObjStone_Draw__FP12daObjStone_c(); -extern "C" static void daObjStone_Execute__FP12daObjStone_c(); -extern "C" static void daObjStone_Delete__FP12daObjStone_c(); -extern "C" static void daObjStone_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_80CECA84(); -extern "C" static void func_80CECA8C(); -extern "C" static void func_80CECA94(); -extern "C" static void func_80CECA9C(); -extern "C" static void func_80CECAA4(); -extern "C" extern char const* const d_a_obj_stone__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeSphere__FP10fopAc_ac_cffff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb(); -extern "C" void fopAcM_createItem__FPC4cXyziiiPC5csXyzPC4cXyzi(); -extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -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_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void offActor__10dSv_info_cFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void -setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc(); -extern "C" void forceOnEventMove__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo(); -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__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void ClrObj__16dBgS_PolyPassChkFv(); -extern "C" void SetBomb__16dBgS_PolyPassChkFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv(); -extern "C" void getHitSeID__12dCcD_GObjInfFUci(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeRS__4cXyzFv(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_atan2s__Fff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" f32 Zero__4cXyz[3]; -extern "C" u8 BaseX__4cXyz[12]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 data_80CECE10[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80CECAB4-80CECABC 000000 0008+00 14/14 0/0 0/0 .rodata l_bmdIdx */ const static int l_bmdIdx[2] = {3, 3}; -COMPILER_STRIP_GATE(0x80CECAB4, &l_bmdIdx); /* 80CECABC-80CECAFC 000008 0040+00 0/1 0/0 0/0 .rodata l_sph_src */ -#pragma push -#pragma force_active on const static dCcD_SrcSph l_sph_src = { { - {0, {{AT_TYPE_THROW_OBJ, 0x03, 0x13}, {3640327679, 0x11}, 0x79}}, + {0, {{AT_TYPE_THROW_OBJ, 0x03, 0x13}, {0xD8FAFDFF, 0x11}, 0x79}}, {dCcD_SE_THROW_OBJ, 0, 0, 0, {0x08}}, {dCcD_SE_NONE, 0x02, 0, 0, {0x03}}, {0}, @@ -197,243 +31,111 @@ const static dCcD_SrcSph l_sph_src = { 50.0f, }, }}; -COMPILER_STRIP_GATE(0x80CECABC, &l_sph_src); -#pragma pop /* 80CECAFC-80CECB04 000048 0008+00 0/3 0/0 0/0 .rodata l_r */ -#pragma push -#pragma force_active on // radius const static f32 l_r[2] = { 30.0f, 50.0f, }; -COMPILER_STRIP_GATE(0x80CECAFC, &l_r); -#pragma pop /* 80CECB04-80CECB0C 000050 0008+00 0/1 0/0 0/0 .rodata l_rolling_speedF */ -#pragma push -#pragma force_active on const static f32 l_rolling_speedF[2] = {9.0f, 9.0f}; -COMPILER_STRIP_GATE(0x80CECB04, &l_rolling_speedF); -#pragma pop /* 80CECB0C-80CECB14 000058 0008+00 0/0 0/0 0/0 .rodata l_rolling_time */ -#pragma push -#pragma force_active on const static u32 l_rolling_time[2] = { - 0x0000001E, - 0x00000017, + 30, + 23, }; -COMPILER_STRIP_GATE(0x80CECB0C, &l_rolling_time); -#pragma pop /* 80CECB14-80CECB1C 000060 0008+00 1/2 0/0 0/0 .rodata l_initial_offsetY */ const static f32 l_initial_offsetY[2] = {10.0f, 20.0f}; -COMPILER_STRIP_GATE(0x80CECB14, &l_initial_offsetY); /* 80CECB1C-80CECB24 000068 0008+00 0/3 0/0 0/0 .rodata l_put_offsetY */ -#pragma push -#pragma force_active on const static f32 l_put_offsetY[2] = {20.0f, 30.0f}; -COMPILER_STRIP_GATE(0x80CECB1C, &l_put_offsetY); -#pragma pop /* 80CECB24-80CECB28 000070 0002+02 1/2 0/0 0/0 .rodata l_weight */ -const static u8 l_weight[2] = {0x78, 0xC8}; -COMPILER_STRIP_GATE(0x80CECB24, &l_weight); +const static u8 l_weight[2] = {120, 200}; /* 80CECB28-80CECB30 000074 0008+00 0/1 0/0 0/0 .rodata l_speedH */ -#pragma push -#pragma force_active on const static f32 l_speedH[2] = { 36.0f, 43.0f, }; -COMPILER_STRIP_GATE(0x80CECB28, &l_speedH); -#pragma pop /* 80CECB30-80CECB38 00007C 0008+00 0/1 0/0 0/0 .rodata l_speedV */ -#pragma push -#pragma force_active on const static f32 l_speedV[2] = { 27.0f, 22.0f, }; -COMPILER_STRIP_GATE(0x80CECB30, &l_speedV); -#pragma pop /* 80CECB38-80CECB40 000084 0008+00 0/1 0/0 0/0 .rodata l_water_speedH */ -#pragma push -#pragma force_active on const static f32 l_water_speedH[2] = { 5.0f, 5.0f, }; -COMPILER_STRIP_GATE(0x80CECB38, &l_water_speedH); -#pragma pop /* 80CECB40-80CECB48 00008C 0008+00 0/1 0/0 0/0 .rodata l_water_speedV */ -#pragma push -#pragma force_active on const static f32 l_water_speedV[2] = { 5.0f, 5.0f, }; -COMPILER_STRIP_GATE(0x80CECB40, &l_water_speedV); -#pragma pop /* 80CECB48-80CECB50 000094 0008+00 0/1 0/0 0/0 .rodata l_water_resist */ -#pragma push -#pragma force_active on const static f32 l_water_resist[2] = { 0.02f, 0.02f, }; -COMPILER_STRIP_GATE(0x80CECB48, &l_water_resist); -#pragma pop /* 80CECB50-80CECB58 00009C 0008+00 0/1 0/0 0/0 .rodata l_water_walk_resist */ -#pragma push -#pragma force_active on const static f32 l_water_walk_resist[2] = { 0.15f, 0.15f, }; -COMPILER_STRIP_GATE(0x80CECB50, &l_water_walk_resist); -#pragma pop /* 80CECB58-80CECB60 0000A4 0008+00 0/2 0/0 0/0 .rodata l_buoyancy */ -#pragma push -#pragma force_active on const static f32 l_buoyancy[2] = { 5.9f, 5.9f, }; -COMPILER_STRIP_GATE(0x80CECB58, &l_buoyancy); -#pragma pop /* 80CECB60-80CECB68 0000AC 0008+00 1/1 0/0 0/0 .rodata l_shadow_size */ const static f32 l_shadow_size[2] = {40.0f, 65.0f}; -COMPILER_STRIP_GATE(0x80CECB60, &l_shadow_size); /* 80CECB68-80CECB70 0000B4 0008+00 0/1 0/0 0/0 .rodata l_wpillar_scl */ -#pragma push -#pragma force_active on const static f32 l_wpillar_scl[2] = { 0.65f, 1.1f, }; -COMPILER_STRIP_GATE(0x80CECB68, &l_wpillar_scl); -#pragma pop /* 80CECB70-80CECB78 0000BC 0008+00 0/1 0/0 0/0 .rodata l_hamon_scl */ -#pragma push -#pragma force_active on const static f32 l_hamon_scl[2] = { 0.7f, 1.2f, }; -COMPILER_STRIP_GATE(0x80CECB70, &l_hamon_scl); -#pragma pop /* 80CECB78-80CECB80 0000C4 0008+00 0/1 0/0 0/0 .rodata l_yogan_eff_scl */ -#pragma push -#pragma force_active on const static f32 l_yogan_eff_scl[2] = { 0.6f, 1.1f, }; -COMPILER_STRIP_GATE(0x80CECB78, &l_yogan_eff_scl); -#pragma pop /* 80CECB80-80CECB88 0000CC 0008+00 0/1 0/0 0/0 .rodata l_wall_h */ -#pragma push -#pragma force_active on const static f32 l_wall_h[2] = { 30.0f, 50.0f, }; -COMPILER_STRIP_GATE(0x80CECB80, &l_wall_h); -#pragma pop /* 80CECB88-80CECB90 0000D4 0008+00 0/1 0/0 0/0 .rodata l_wall_r */ -#pragma push -#pragma force_active on const static f32 l_wall_r[2] = {30.0f, 50.0f}; -COMPILER_STRIP_GATE(0x80CECB88, &l_wall_r); -#pragma pop /* 80CECB90-80CECB94 0000DC 0004+00 0/1 0/0 0/0 .rodata l_rot_angle */ -#pragma push -#pragma force_active on const static s16 l_rot_angle[2] = {35, 18}; -COMPILER_STRIP_GATE(0x80CECB90, &l_rot_angle); -#pragma pop /* 80CECB94-80CECB98 0000E0 0004+00 0/1 0/0 0/0 .rodata l_walk_rot_angle */ -#pragma push -#pragma force_active on const static s16 l_walk_rot_angle[2] = {40, 40}; -COMPILER_STRIP_GATE(0x80CECB94, &l_walk_rot_angle); -#pragma pop -/* 80CECB98-80CECB9C 0000E4 0004+00 0/7 0/0 0/0 .rodata @3746 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3746[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CECB98, &lit_3746); -#pragma pop - -/* 80CECB9C-80CECBA4 0000E8 0008+00 0/4 0/0 0/0 .rodata @3747 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3747[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CECB9C, &lit_3747); -#pragma pop - -/* 80CECBA4-80CECBAC 0000F0 0008+00 0/4 0/0 0/0 .rodata @3748 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3748[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CECBA4, &lit_3748); -#pragma pop - -/* 80CECBAC-80CECBB4 0000F8 0008+00 0/4 0/0 0/0 .rodata @3749 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3749[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CECBAC, &lit_3749); -#pragma pop - -/* 80CECC54-80CECC60 000000 000C+00 1/1 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, -}; - -/* 80CECC60-80CECC74 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 /* 80CECC74-80CECC7C -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ static char* l_arcName[2] = { @@ -441,185 +143,6 @@ static char* l_arcName[2] = { "D_Brock", // big rock }; -/* 80CECC7C-80CECC88 -00001 000C+00 0/1 0/0 0/0 .data @4015 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4015[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECC88-80CECC94 -00001 000C+00 0/1 0/0 0/0 .data @4016 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4016[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeDrop__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECC94-80CECCA0 -00001 000C+00 0/1 0/0 0/0 .data @4017 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4017[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeCarry__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECCA0-80CECCAC -00001 000C+00 0/1 0/0 0/0 .data @4018 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4018[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modePutWait__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECCAC-80CECCB8 -00001 000C+00 0/1 0/0 0/0 .data @4019 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4019[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWalk__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECCB8-80CECCC4 -00001 000C+00 0/1 0/0 0/0 .data @4020 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4020[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBreak__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECCC4-80CECCD0 -00001 000C+00 0/1 0/0 0/0 .data @4021 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4021[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeYogan__12daObjStone_cFv, -}; -#pragma pop - -/* 80CECCD0-80CECD24 00007C 0054+00 0/1 0/0 0/0 .data l_func$4014 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[84] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 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 - -/* 80CECD24-80CECD44 -00001 0020+00 1/0 0/0 0/0 .data l_daObjStone_Method */ -static actor_method_class l_daObjStone_Method = { - (process_method_func)daObjStone_Create__FP10fopAc_ac_c, - (process_method_func)daObjStone_Delete__FP12daObjStone_c, - (process_method_func)daObjStone_Execute__FP12daObjStone_c, (process_method_func)0, - (process_method_func)daObjStone_Draw__FP12daObjStone_c}; - -/* 80CECD44-80CECD74 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Stone */ -extern actor_process_profile_definition g_profile_Obj_Stone = { - fpcLy_CURRENT_e, // mLayerID - 8, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Stone, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjStone_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 511, // mPriority - &l_daObjStone_Method, // sub_method - 0x40100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLSPHERE_8_e, // cullType -}; - -/* 80CECD74-80CECDA4 000120 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80CECA94, - (void*)NULL, - (void*)NULL, - (void*)func_80CECAA4, - (void*)NULL, - (void*)NULL, - (void*)func_80CECA9C, -}; - -/* 80CECDA4-80CECDB0 000150 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, -}; - -/* 80CECDB0-80CECDBC 00015C 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, -}; - -/* 80CECDBC-80CECDC8 000168 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, -}; - -/* 80CECDC8-80CECDD4 000174 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80CECDD4-80CECDE0 000180 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, -}; - -/* 80CECDE0-80CECE04 00018C 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_80CECA8C, - (void*)NULL, - (void*)NULL, - (void*)func_80CECA84, -}; - -/* 80CECE04-80CECE10 0001B0 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - /* 80CE9078-80CE935C 000078 02E4+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ static f32 bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { cM3dGPla plane; @@ -637,13 +160,6 @@ static f32 bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { } } - -/* 80CE935C-80CE93A4 00035C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - /* 80CE93A4-80CE93C4 0003A4 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ static bool CheckCreateHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->CreateHeap(); @@ -671,18 +187,6 @@ void daObjStone_c::setBaseMtx() { field_0x0920 = ZeroQuat; } -/* ############################################################################################## */ -/* 80CECBB4-80CECBB8 000100 0004+00 0/1 0/0 0/0 .rodata @3844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3844 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CECBB4, &lit_3844); -#pragma pop - -/* 80CECBB8-80CECBBC 000104 0004+00 2/8 0/0 0/0 .rodata @3845 */ -SECTION_RODATA static f32 const lit_3845 = 1.0f; -COMPILER_STRIP_GATE(0x80CECBB8, &lit_3845); - /* 80CE9540-80CE97C0 000540 0280+00 1/1 0/0 0/0 .text Create__12daObjStone_cFv */ int daObjStone_c::Create() { mShapeAngle = shape_angle; @@ -713,7 +217,7 @@ int daObjStone_c::Create() { fopAcM_setCullSizeSphere(this, 0.0f, 0.0f, 0.0f, l_r[mStoneType] * 1.2f); cLib_onBit(attention_info.flags, 0x10); - attention_info.distances[fopAc_attn_SPEAK_e] = 0x2A; + attention_info.distances[fopAc_attn_CARRY_e] = 0x2A; fopAcM_OnCarryType(this, fopAcM_CARRY_LIGHT); cXyz other_pos = current.pos; @@ -756,8 +260,6 @@ bool daObjStone_c::CreateHeap() { } /* 80CE9840-80CE99D4 000840 0194+00 1/1 0/0 0/0 .text create__12daObjStone_cFv */ -#ifdef NONMATCHING -// matches, but too many destructors being generated int daObjStone_c::create() { fopAcM_SetupActor(this, daObjStone_c); @@ -779,55 +281,13 @@ int daObjStone_c::create() { return phase; } -#else -int daObjStone_c::create() { - // NONMATCHING -} -#endif - -/* 80CE99D4-80CE9A1C 0009D4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80CE9A1C-80CE9A64 000A1C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80CE9A64-80CE9AC0 000A64 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CE9AC0-80CE9B30 000AC0 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80CE9B30-80CE9BA0 000B30 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CECBBC-80CECBC0 000108 0004+00 1/3 0/0 0/0 .rodata @4010 */ -SECTION_RODATA static f32 const lit_4010 = -6.0f; -COMPILER_STRIP_GATE(0x80CECBBC, &lit_4010); /* 80CE9BA0-80CE9CF8 000BA0 0158+00 1/1 0/0 0/0 .text execute__12daObjStone_cFv */ -#ifdef NONMATCHING -// matches but cXyz destructor being generated after this function int daObjStone_c::execute() { cXyz pos; mStatus.SetWeight(l_weight[this->mStoneType]); - fopAcM_SetGravity(this, FLOAT_LABEL(lit_4010)); + fopAcM_SetGravity(this, -6.0f); mode_proc_call(); if (mCollider.ChkTgHit() && mCollider.GetTgHitObj()) { @@ -849,110 +309,220 @@ int daObjStone_c::execute() { effect_delete(false); return 1; } -#else -int daObjStone_c::execute() { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 80CECBC0-80CECBC4 00010C 0004+00 0/1 0/0 0/0 .rodata @4632 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4632 = 2.0f; -COMPILER_STRIP_GATE(0x80CECBC0, &lit_4632); -#pragma pop - -/* 80CECBC4-80CECBC8 000110 0004+00 0/1 0/0 0/0 .rodata @4633 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4633 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CECBC4, &lit_4633); -#pragma pop - -/* 80CECBC8-80CECBCC 000114 0004+00 0/5 0/0 0/0 .rodata @4634 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4634 = 0.5f; -COMPILER_STRIP_GATE(0x80CECBC8, &lit_4634); -#pragma pop - -/* 80CECBCC-80CECBD0 000118 0004+00 0/2 0/0 0/0 .rodata @4635 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4635 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CECBCC, &lit_4635); -#pragma pop - -/* 80CECBD0-80CECBD4 00011C 0004+00 0/1 0/0 0/0 .rodata @4636 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4636 = -100000.0f; -COMPILER_STRIP_GATE(0x80CECBD0, &lit_4636); -#pragma pop - -/* 80CECBD4-80CECBD8 000120 0004+00 0/3 0/0 0/0 .rodata @4637 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4637 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80CECBD4, &lit_4637); -#pragma pop - -/* 80CECBD8-80CECBDC 000124 0004+00 0/1 0/0 0/0 .rodata @4638 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4638 = 60.0f; -COMPILER_STRIP_GATE(0x80CECBD8, &lit_4638); -#pragma pop - -/* 80CECBDC-80CECBE0 000128 0004+00 0/1 0/0 0/0 .rodata @4639 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4639 = 100.0f; -COMPILER_STRIP_GATE(0x80CECBDC, &lit_4639); -#pragma pop - -/* 80CECBE0-80CECBE4 00012C 0004+00 1/4 0/0 0/0 .rodata @4640 */ -SECTION_RODATA static f32 const lit_4640 = -1.0f; -COMPILER_STRIP_GATE(0x80CECBE0, &lit_4640); - -/* 80CECBE4-80CECBE8 000130 0004+00 0/1 0/0 0/0 .rodata @4641 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4641 = 90.0f; -COMPILER_STRIP_GATE(0x80CECBE4, &lit_4641); -#pragma pop - -/* 80CECBE8-80CECBEC 000134 0004+00 0/2 0/0 0/0 .rodata @4642 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4642 = -10.0f; -COMPILER_STRIP_GATE(0x80CECBE8, &lit_4642); -#pragma pop - -/* 80CECBEC-80CECBF0 000138 0004+00 0/3 0/0 0/0 .rodata @4643 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4643 = 10.0f; -COMPILER_STRIP_GATE(0x80CECBEC, &lit_4643); -#pragma pop - -/* 80CECBF0-80CECBF4 00013C 0004+00 0/3 0/0 0/0 .rodata @4644 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4644 = 50.0f; -COMPILER_STRIP_GATE(0x80CECBF0, &lit_4644); -#pragma pop /* 80CE9CF8-80CEAF10 000CF8 1218+00 1/1 0/0 0/0 .text mode_proc_call__12daObjStone_cFv */ void daObjStone_c::mode_proc_call() { - // NONMATCHING -} + static daObjStone_c::modeFunc l_func[7] = { + &daObjStone_c::modeWait, + &daObjStone_c::modeDrop, + &daObjStone_c::modeCarry, + &daObjStone_c::modePutWait, + &daObjStone_c::modeWait, + &daObjStone_c::modeBreak, + &daObjStone_c::modeYogan, + }; + if (fopAcM_checkCarryNow(this) && field_0x0907 != 2) { + if (daPy_py_c::i_checkNowWolf()) { + init_modePushWolfNonBreak(); + } else { + init_modeCarry(); + } + } + if (mCollider.ChkTgHit()) { + cCcD_Obj* tgHitObj = mCollider.GetTgHitObj(); + if (tgHitObj != NULL) { + fopAc_ac_c* tgHitActor = mCollider.GetTgHitAc(); + if (fopAcM_GetName(tgHitActor) == PROC_OBJ_GRA) { + init_modeBreak(); + } else { + if (tgHitObj->ChkAtType(AT_TYPE_BOMB)) { + init_modeBreak(); + } + if (tgHitObj->ChkAtType(AT_TYPE_IRON_BALL) && tgHitObj->GetAtAtp() != 1) { + init_modeBreak(); + } else if (tgHitObj->ChkAtType(AT_TYPE_CSTATUE_SWING) && + (fopAcM_GetName(tgHitActor) == PROC_Obj_VolcanicBomb)) + { + init_modeBreak(); + } + } + } + } + if (mCollider.ChkAtHit()) { + init_modeBreak(); + } + bool isGroundLanding = mChkObj.ChkGroundLanding() != 0; + u32 isWallhit = mChkObj.m_flags & dBgS_Acch::WALL_HIT; + bool isGroundHit = mChkObj.ChkGroundHit() != 0; + bool isWaterHit = mChkObj.ChkWaterHit() != 0; + bool isWaterIn = mChkObj.ChkWaterIn() != 0; + if (field_0x0907 == 1) { + if (isGroundLanding && !isWaterIn) { + speed.x = speedF * cM_ssin(current.angle.y); + speed.z = speedF * cM_scos(current.angle.y); + speed.y = mLastSpeedY; + if (speed.abs() > 2.0f) { + bound(&speed, mChkObj.m_gnd, 0.4f); + } else { + speed.setall(0.0f); + } + speedF = speed.absXZ(); + current.angle.y = cM_atan2s(speed.x, speed.z); + } else { + if (isWallhit && field_0x0951 == 0 && isWaterIn) { + speed.x = speedF * cM_ssin(current.angle.y); + speed.z = speedF * cM_scos(current.angle.y); + speed.y = mLastSpeedY; + if (speed.abs() > 2.0f) { + bound(&speed, mChkCircle, 0.5f); + } else { + speed.setall(0.0f); + } + speed.y = mLastSpeedY; + speedF = speed.absXZ(); + current.angle.y = cM_atan2s(speed.x, speed.z); + } + } + } + if (field_0x0907 == 4 && isWallhit) { + speed.x = speedF * cM_ssin(current.angle.y); + speed.z = speedF * cM_scos(current.angle.y); + if (speed.abs() > 2.0f) { + bound(&speed, mChkCircle, 0.5f); + } else { + speed.setall(0.0f); + } + speedF = speed.absXZ(); + current.angle.y = cM_atan2s(speed.x, speed.z); + } + mIsInWater = false; + if (isWaterHit || isWaterIn) { + f32 waterHeight = mChkObj.m_wtr.GetHeight(); + int iVar10 = dComIfG_Bgsp().GetPolyAtt0(mChkObj.m_wtr); + if (waterHeight > current.pos.y) { + switch (iVar10) { + case 7: + case 11: + default: + mIsInWater = 1; + if (field_0x094f == 0) { + fopKyM_createWpillar(¤t.pos, l_wpillar_scl[mStoneType], 0); + cXyz cStack_d4(current.pos.x, waterHeight - 0.1f, current.pos.z); + dBgS_ObjGndChk adStack_c8; + adStack_c8.SetPos(&cStack_d4); + f32 dVar17 = dComIfG_Bgsp().GroundCross(&adStack_c8); + if (dVar17 == -1000000000.0f) { + dVar17 = -100000.0f; + } + dVar17 = fabs(waterHeight - dVar17); + if ((mStoneType == OBJ_STONE_TYPE_SMALL && dVar17 < 60.0f) || + (mStoneType == OBJ_STONE_TYPE_BIG && dVar17 < 100.0f)) + { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_ASASE, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_WTR, 0); + } + } + if (isGroundHit) { + f32 waterHeightDiff = waterHeight - current.pos.y; + if ((mStoneType == OBJ_STONE_TYPE_SMALL && waterHeightDiff < 60.0f) || + (mStoneType == OBJ_STONE_TYPE_BIG && waterHeightDiff < 90.0f)) + { + cXyz cStack_e0(current.pos); + cStack_e0.y = waterHeight; + fopAcM_effHamonSet(&field_0x0954, &cStack_e0, l_hamon_scl[mStoneType], 0.1f); + } + } + if (speed.y < -10.0f) { + speed.y = -10.0f; + } + if (speed.y > 10.0f) { + speed.y = 10.0f; + } + if (speedF > 10.0f) { + speedF = 10.0f; + } + break; + case 6: + if (field_0x0907 != 6) { + init_modeYogan(); + cXyz cStack_ec(current.pos.x, waterHeight, current.pos.z); + cXyz cStack_f8(l_yogan_eff_scl[mStoneType], l_yogan_eff_scl[mStoneType], + l_yogan_eff_scl[mStoneType]); + dComIfGp_particle_set(0x8757, &cStack_ec, &tevStr, 0, &cStack_f8); + dComIfGp_particle_set(0x8758, &cStack_ec, &tevStr, 0, &cStack_f8); + } + break; -/* 80CEAF10-80CEAF88 001F10 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING + } + } + } + if (field_0x0907 == 1) { + if (mIsInWater) { + if (isGroundLanding) { + init_modeWalk(); + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_PUT_WTR, 0); + } + } else { + if (isGroundLanding) { + if (!isWaterIn) { + int iVar8 = dComIfG_Bgsp().GetPolyAtt0(mChkObj.m_gnd); + if (iVar8 == 1 || iVar8 == 3 || iVar8 == 4) { + mInitialOffsetY = l_put_offsetY[mStoneType]; + if (mStoneType == 1) { + fopAcM_seStart(this, Z2SE_OBJ_CMN_L_ROCK_BOUND, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_BOUND, 0); + } + init_modeWalk(); + } else { + init_modeBreak(); + } + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_PUT_WTR, 0); + } + } + if (isWallhit) { + init_modeBreak(); + } + } + } else if (field_0x0907 == 0 && isGroundLanding) { + if (!isWaterIn) { + if (speedF == 0.0f) { + if (mStoneType == 1) { + fopAcM_seStart(this, Z2SE_OBJ_CMN_L_ROCK_PUT, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_PUT, 0); + } + } else if (mStoneType == 1) { + fopAcM_seStart(this, Z2SE_OBJ_CMN_L_ROCK_BOUND, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_BOUND, 0); + } + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_PUT_WTR, 0); + } + } + if (field_0x094d != 0) { + field_0x094d--; + } else { + if (field_0x0907 != 2) { + f32 dVar16 = fabs(current.pos.y - mLastPosY); + if (isGroundLanding && !isWaterHit && dVar16 > 50.0f) { + fopAcM_effSmokeSet1(&field_0x095c, &field_0x0960, + ¤t.pos, 0, l_r[mStoneType] / l_r[1], &tevStr, 1); + dComIfGp_particle_levelEmitterOnEventMove(field_0x095c); + dComIfGp_particle_levelEmitterOnEventMove(field_0x0960); + field_0x094d = 30; + } + } + } + if (isGroundHit) { + mLastPosY = current.pos.y; + } + (this->*(l_func[field_0x0907]))(); + CrrPos(); + field_0x0951 = isWallhit != 0; } /* 80CEAF88-80CEAFD8 001F88 0050+00 1/1 0/0 0/0 .text init_modePutWait__12daObjStone_cFv @@ -980,28 +550,13 @@ void daObjStone_c::init_modeWait() { field_0x0907 = 0; } -/* ############################################################################################## */ -/* 80CECBF4-80CECBF8 000140 0004+00 0/1 0/0 0/0 .rodata @4678 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4678 = 19.0f / 20.0f; -COMPILER_STRIP_GATE(0x80CECBF4, &lit_4678); -#pragma pop - -/* 80CECBF8-80CECBFC 000144 0004+00 0/2 0/0 0/0 .rodata @4679 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4679 = 8.0f; -COMPILER_STRIP_GATE(0x80CECBF8, &lit_4679); -#pragma pop - /* 80CEB01C-80CEB0B8 00201C 009C+00 1/0 0/0 0/0 .text modeWait__12daObjStone_cFv */ void daObjStone_c::modeWait() { mMode++; - speedF *= FLOAT_LABEL(lit_4678); + speedF *= 0.95f; fopAcM_posMoveF(this, mStatus.GetCCMoveP()); - cLib_chaseF(&mInitialOffsetY, l_put_offsetY[mStoneType], FLOAT_LABEL(lit_4679)); + cLib_chaseF(&mInitialOffsetY, l_put_offsetY[mStoneType], 8.0f); if (mMode > 5 && checkRollAngle()) { init_modeWalk(); @@ -1069,15 +624,6 @@ void daObjStone_c::init_modeCarry() { field_0x0907 = 2; } - -/* ############################################################################################## */ -/* 80CECBFC-80CECC00 000148 0004+00 0/1 0/0 0/0 .rodata @4829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4829 = 0.25f; -COMPILER_STRIP_GATE(0x80CECBFC, &lit_4829); -#pragma pop - /* 80CEB480-80CEB6E8 002480 0268+00 1/0 0/0 0/0 .text modeCarry__12daObjStone_cFv */ void daObjStone_c::modeCarry() { mMode++; @@ -1143,7 +689,6 @@ void daObjStone_c::modeCarry() { } } - /* 80CEB6E8-80CEB720 0026E8 0038+00 2/2 0/0 0/0 .text init_modeWalk__12daObjStone_cFv */ void daObjStone_c::init_modeWalk() { mCollider.OffAtSPrmBit(1); @@ -1153,38 +698,84 @@ void daObjStone_c::init_modeWalk() { field_0x0907 = 4; } -/* ############################################################################################## */ -/* 80CECC00-80CECC04 00014C 0004+00 0/2 0/0 0/0 .rodata @5018 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5018 = 0x467BBBBC; -COMPILER_STRIP_GATE(0x80CECC00, &lit_5018); -#pragma pop - -/* 80CECC04-80CECC08 000150 0004+00 0/1 0/0 0/0 .rodata @5019 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5019 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CECC04, &lit_5019); -#pragma pop - -/* 80CECC08-80CECC0C 000154 0004+00 0/1 0/0 0/0 .rodata @5020 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5020 = 0x3C23D70B; -COMPILER_STRIP_GATE(0x80CECC08, &lit_5020); -#pragma pop - -/* 80CECC0C-80CECC10 000158 0004+00 0/1 0/0 0/0 .rodata @5021 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5021 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CECC0C, &lit_5021); -#pragma pop - /* 80CEB720-80CEBCDC 002720 05BC+00 1/0 0/0 0/0 .text modeWalk__12daObjStone_cFv */ void daObjStone_c::modeWalk() { - // NONMATCHING + mMode++; + if (field_0x0908 == 0) { + if (mStoneType == OBJ_STONE_TYPE_BIG) { + if (mMode == 4) { + createItem(); + field_0x0908 = 1; + } + } else if (mMode == 7) { + createItem(); + field_0x0908 = 1; + } + } + if (mIsInWater) { + cXyz local_b0; + cXyz local_bc; + local_b0.x = speedF * cM_ssin(current.angle.y); + local_b0.y = speed.y; + local_b0.z = speedF * cM_scos(current.angle.y); + local_bc = local_b0; + local_bc.x = -local_bc.x * l_water_walk_resist[mStoneType]; + local_bc.y = -local_bc.y * l_water_walk_resist[mStoneType]; + local_bc.z = -local_bc.z * l_water_walk_resist[mStoneType]; + local_b0 += local_bc; + speedF = std::sqrt(local_b0.x * local_b0.x + local_b0.z * local_b0.z); + speed.y = local_b0.y; + fopAcM_SetGravity(this, -6.0f + l_buoyancy[mStoneType]); + } + fopAcM_posMoveF(this, mStatus.GetCCMoveP()); + f32 dVar15 = 89.0f; + cXyz cStack_c8(current.pos); + cStack_c8.y += 50.0f; + f32 dVar14 = 1.0f - 0.2f; + cM3dGPla acStack_a4; + bool iVar7 = fopAcM_gc_c::gndCheck(&cStack_c8); + bool isTriPla = fopAcM_gc_c::getTriPla(&acStack_a4); + f32 dVar12 = fopAcM_gc_c::getGroundY(); + if (iVar7 && dVar12 != -1000000000.0f && isTriPla) { + f32 dVar12 = cM_scos(cM_deg2s(dVar15 - 0.5f)); + cXyz cStack_d4(acStack_a4.mNormal); + if (cStack_d4.y < dVar12) { + cXyz local_e0(cStack_d4); + s16 sVar9 = cM_atan2s(local_e0.x, local_e0.z); + f32 dVar12 = 10.0f; + dVar12 *= (1.0f - cStack_d4.y); + if (dVar12 < 0.1f) { + dVar12 = 0.1f; + } else { + if (dVar12 > 1.0f) { + dVar12 = 1.0f; + } + } + cXyz local_ec((speedF * cM_ssin(current.angle.y)), 0.0f, + speedF * cM_scos(current.angle.y)); + cXyz cStack_f8((dVar12 * cM_ssin(sVar9)), 0.0f, dVar12 * cM_scos(sVar9)); + local_ec += cStack_f8; + speedF = + std::sqrt(local_ec.x * local_ec.x + local_ec.z * local_ec.z); + current.angle.y = cM_atan2s(local_ec.x, local_ec.z); + } + } + speedF *= dVar14; + if (mStatus.GetCCMoveP()->abs2XZ() > 0.01000000070780516f) { + speedF *= 0.9f; + } + if (speedF < 0.5f) { + speedF = 0; + } + f32 step = 8.0f; + if (speed.y < 0.0f && std::fabs(speed.y) > step) { + step = std::fabs(speed.y); + } + cLib_chaseF(&mInitialOffsetY, l_put_offsetY[mStoneType], step); + calcRotBaseMtx(NULL); + if (speedF == 0.0f && mChkObj.ChkGroundHit()) { + init_modeWait(); + } } /* 80CEBCDC-80CEBE24 002CDC 0148+00 1/1 0/0 0/0 .text init_modePushWolfNonBreak__12daObjStone_cFv @@ -1209,52 +800,27 @@ void daObjStone_c::init_modePushWolfNonBreak() { field_0x0907 = 4; } - -/* ############################################################################################## */ -/* 80CECC10-80CECC14 00015C 0004+00 0/1 0/0 0/0 .rodata @5063 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5063 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80CECC10, &lit_5063); -#pragma pop - -/* 80CECC14-80CECC18 000160 0004+00 0/1 0/0 0/0 .rodata @5064 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5064 = -2.0f; -COMPILER_STRIP_GATE(0x80CECC14, &lit_5064); -#pragma pop - /* 80CEBE24-80CEBE84 002E24 0060+00 1/1 0/0 0/0 .text init_modeYogan__12daObjStone_cFv */ void daObjStone_c::init_modeYogan() { mCollider.OffAtSPrmBit(1); mCollider.OnCoSPrmBit(1); mInitialOffsetY = l_initial_offsetY[mStoneType]; mMode = 0; - fopAcM_SetGravity(this, FLOAT_LABEL(lit_5063)); - fopAcM_SetMaxFallSpeed(this, FLOAT_LABEL(lit_5064)); + fopAcM_SetGravity(this, -0.4f); + fopAcM_SetMaxFallSpeed(this, -2.0f); current.pos.y = mChkObj.m_wtr.GetHeight(); field_0x0907 = 6; } -/* ############################################################################################## */ -/* 80CECC18-80CECC1C 000164 0004+00 1/1 0/0 0/0 .rodata @5074 */ -SECTION_RODATA static f32 const lit_5074 = 200.0f; -COMPILER_STRIP_GATE(0x80CECC18, &lit_5074); - -/* 80CECC1C-80CECC20 000168 0004+00 1/1 0/0 0/0 .rodata @5075 */ -SECTION_RODATA static f32 const lit_5075 = 13.0f / 20.0f; -COMPILER_STRIP_GATE(0x80CECC1C, &lit_5075); - /* 80CEBE84-80CEBF1C 002E84 0098+00 1/0 0/0 0/0 .text modeYogan__12daObjStone_cFv */ void daObjStone_c::modeYogan() { f32 height = mChkObj.m_wtr.GetHeight(); - f32 pos_y = FLOAT_LABEL(lit_5074) + current.pos.y; + f32 pos_y = 200.0f + current.pos.y; bool pos_check = height > pos_y; bool gnd_landing = mChkObj.ChkGroundLanding(); - speedF *= FLOAT_LABEL(lit_5075); + speedF *= 0.65f; fopAcM_posMoveF(this, 0); if (pos_check || gnd_landing) { @@ -1264,25 +830,47 @@ void daObjStone_c::modeYogan() { mMode++; } -/* ############################################################################################## */ /* 80CECC20-80CECC2C 00016C 0006+06 0/1 0/0 0/0 .rodata l_eff_id$5089 */ -#pragma push -#pragma force_active on -const static u8 l_eff_id[10] = { - 0x85, 0x9B, 0x85, 0x9C, 0x85, 0x9D, +const static u16 l_eff_id[3] = { + 0x859B, 0x859C, 0x859D, }; -COMPILER_STRIP_GATE(0x80CECC20, &l_eff_id); -#pragma pop - -/* 80CECC3C-80CECC3C 000188 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CECC4C = "Always"; -#pragma pop /* 80CEBF1C-80CEC180 002F1C 0264+00 1/1 0/0 0/0 .text init_modeBreak__12daObjStone_cFv */ void daObjStone_c::init_modeBreak() { - // NONMATCHING + if (field_0x0907 != 5) { + fopAcM_cancelCarryNow(this); + if (!mIsInWater) { + if (mStoneType == OBJ_STONE_TYPE_BIG) { + fopAcM_seStart(this, Z2SE_OBJ_CMN_L_ROCK_BREAK, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_CMN_ROCK_BREAK, 0); + } + } + cXyz acStack_40; + if (mStoneType == OBJ_STONE_TYPE_BIG) { + acStack_40.setall(1.0f); + } else { + acStack_40.setall(0.5f); + } + J3DModelData* stone_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 27); + JUT_ASSERT(1687, stone_bmd != 0); + JPABaseEmitter* emitter = dComIfGp_particle_set( + 0x15c, ¤t.pos, 0, &acStack_40, 0xff, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), 0, 0, 0); + dPa_modelEcallBack::setModel(emitter, stone_bmd, tevStr, + 3, 0, NULL, 0); + for (int i = 0; i < 3; i = i + 1) { + dComIfGp_particle_set( + l_eff_id[i], + ¤t.pos, NULL, &acStack_40, 0xff, 0, fopAcM_GetRoomNo(this), 0, 0, 0); + } + if (field_0x0908 == 0) { + createItem(); + field_0x0908 = 1; + } + mMode = 0; + field_0x0907 = 5; + fopAcM_delete(this); + } } /* 80CEC180-80CEC1AC 003180 002C+00 1/0 0/0 0/0 .text modeBreak__12daObjStone_cFv */ @@ -1318,8 +906,6 @@ void daObjStone_c::CrrPos() { } /* 80CEC264-80CEC33C 003264 00D8+00 3/3 0/0 0/0 .text createItem__12daObjStone_cFv */ -#ifdef NONMATCHING -// matches but generates extra destructor void daObjStone_c::createItem() { int item_no = getItemNo(); int item_bit = getItemBit(); @@ -1335,49 +921,64 @@ void daObjStone_c::createItem() { 8, 0, 0, 0, false); } } -#else -void daObjStone_c::createItem() { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 80CECC2C-80CECC34 000178 0008+00 0/1 0/0 0/0 .rodata @5256 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5256[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CECC2C, &lit_5256); -#pragma pop /* 80CEC33C-80CEC5BC 00333C 0280+00 2/2 0/0 0/0 .text calcRotBaseMtx__12daObjStone_cFPs */ -void daObjStone_c::calcRotBaseMtx(s16* param_0) { - // NONMATCHING +void daObjStone_c::calcRotBaseMtx(s16* param_1) { + cXyz local_5c = current.pos - old.pos; + cXyz cStack_68(local_5c.x, 0.0f, local_5c.z); + bool iVar5 = local_5c.normalizeRS(); + bool iVar6 = cStack_68.normalizeRS(); + bool bVar4 = true; + if (!iVar5 && !iVar6) { + bVar4 = false; + } + if (iVar6) { + field_0x0910 = cStack_68; + mDoMtx_stack_c::YrotS(0x4000); + mDoMtx_stack_c::multVec(&field_0x0910, &field_0x0910); + } else if (iVar5) { + field_0x0910 = cXyz::BaseX; + } + if (bVar4) { + f32 dVar9 = std::fabs(speedF); + f32 dVar10 = std::fabs(speed.y); + if (current.pos.y == old.pos.y) { + dVar10 = 0.0f; + } + s16 sVar7 = l_rot_angle[mStoneType]; + if (field_0x0907 != 1) { + sVar7 = l_walk_rot_angle[mStoneType]; + } + if (param_1 != NULL) { + sVar7 = *param_1; + } + if (mChkObj.ChkWaterIn()) { + sVar7 *= 0.5f; + } + field_0x091c = sVar7 * (dVar9 + dVar10); + field_0x0920.x = field_0x0910.x * cM_ssin(field_0x091c); + field_0x0920.y = field_0x0910.y * cM_ssin(field_0x091c); + field_0x0920.z = field_0x0910.z * cM_ssin(field_0x091c); + field_0x0920.w = cM_scos(field_0x091c); + } else { + field_0x0920 = ZeroQuat; + } } /* 80CEC5BC-80CEC6D8 0035BC 011C+00 1/1 0/0 0/0 .text checkRollAngle__12daObjStone_cFv */ -#ifdef NONMATCHING -// matches but cM3dGPla dtor will be generated in wrong place until TU is finished (due to bound -// function float literal inlines) int daObjStone_c::checkRollAngle() { + f32 dVar11 = 89.0f; cXyz pos = current.pos; - pos.y += FLOAT_LABEL(lit_4644); - cM3dGPla plane; + pos.y += 50.0f; + cM3dGPla plane; bool gnd_chk = fopAcM_gc_c::gndCheck(&pos); - bool triPla = - dComIfG_Bgsp().GetTriPla(*(dBgS_GndChk*)&fopAcM_gc_c::mGndCheck, - &plane); // there's an inline here but it can be used until - // fopAcM_gc_c::mGndCheck is properly setup + bool triPla = dComIfG_Bgsp().GetTriPla(fopAcM_gc_c::mGndCheck, &plane); f32 ground_y = fopAcM_gc_c::getGroundY(); - if (gnd_chk && FLOAT_LABEL(lit_4637) != ground_y && triPla) { - f32 tmp2 = cM_scos(i_cM_deg2s(FLOAT_LABEL( - lit_5018))); // not sure what happened here. debug implies there's a multiply happening - // in cM_deg2s, but retail has no such instructions - + if (gnd_chk && -1000000000.0f != ground_y && triPla) { + f32 tmp2 = cM_scos(cM_deg2s(dVar11 - 0.5f)); cXyz pos2 = plane.mNormal; if (pos2.y < tmp2) { @@ -1387,28 +988,18 @@ int daObjStone_c::checkRollAngle() { return 0; } -#else -int daObjStone_c::checkRollAngle() { - // NONMATCHING -} -#endif -/* ############################################################################################## */ /* 80CECC34-80CECC3C 000180 0006+02 0/1 0/0 0/0 .rodata l_carry_eff_id$5307 */ -#pragma push -#pragma force_active on const static u16 l_carry_eff_id[3] = {0x859E, 0x859F, 0x85A0}; -COMPILER_STRIP_GATE(0x80CECC34, &l_carry_eff_id); -#pragma pop /* 80CEC6D8-80CEC7DC 0036D8 0104+00 1/1 0/0 0/0 .text set_carry_eff__12daObjStone_cFv */ void daObjStone_c::set_carry_eff() { cXyz pos; if (mStoneType == 1) { - pos.setall(FLOAT_LABEL(lit_3845)); + pos.setall(1.0f); } else { - pos.setall(FLOAT_LABEL(lit_4634)); + pos.setall(0.5f); } if (field_0x0950 == 3) { @@ -1423,10 +1014,22 @@ void daObjStone_c::set_carry_eff() { } } - /* 80CEC7DC-80CEC888 0037DC 00AC+00 2/2 0/0 0/0 .text effect_delete__12daObjStone_cFb */ -void daObjStone_c::effect_delete(bool param_0) { - // NONMATCHING +void daObjStone_c::effect_delete(bool param_1) { + for (int i = 0; i < 3; i = i + 1) { + if (field_0x0964[i] != NULL) { + if ((field_0x0964[i]->getAge() > 5 && + field_0x0964[i]->getParticleNumber() == 0) || + param_1) + { + field_0x0964[i]->becomeInvalidEmitter(); + field_0x0964[i]->quitImmortalEmitter(); + field_0x0964[i] = NULL; + } else { + field_0x0964[i]->setGlobalTranslation(current.pos); + } + } + } } /* 80CEC888-80CEC948 003888 00C0+00 1/1 0/0 0/0 .text draw__12daObjStone_cFv */ @@ -1441,7 +1044,7 @@ int daObjStone_c::draw() { cXyz pos = current.pos; dComIfGd_setSimpleShadow(&pos, mChkObj.GetGroundH(), shadow_size, mChkObj.m_gnd, 0, - FLOAT_LABEL(lit_3845), pTex); + 1.0f, pTex); } return 1; } @@ -1479,35 +1082,31 @@ static int daObjStone_Create(fopAc_ac_c* param_0) { return static_cast(param_0)->create(); } -/* 80CECA3C-80CECA84 003A3C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 80CECD24-80CECD44 -00001 0020+00 1/0 0/0 0/0 .data l_daObjStone_Method */ +static actor_method_class l_daObjStone_Method = { + (process_method_func)daObjStone_Create, + (process_method_func)daObjStone_Delete, + (process_method_func)daObjStone_Execute, + (process_method_func)NULL, + (process_method_func)daObjStone_Draw, +}; -/* 80CECA84-80CECA8C 003A84 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80CECA84() { - // NONMATCHING -} - -/* 80CECA8C-80CECA94 003A8C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80CECA8C() { - // NONMATCHING -} - -/* 80CECA94-80CECA9C 003A94 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_80CECA94() { - // NONMATCHING -} - -/* 80CECA9C-80CECAA4 003A9C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_80CECA9C() { - // NONMATCHING -} - -/* 80CECAA4-80CECAAC 003AA4 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_80CECAA4() { - // NONMATCHING -} +/* 80CECD44-80CECD74 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Stone */ +extern actor_process_profile_definition g_profile_Obj_Stone = { + fpcLy_CURRENT_e, // mLayerID + 8, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Stone, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjStone_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 511, // mPriority + &l_daObjStone_Method, // sub_method + 0x40100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLSPHERE_8_e, // cullType +}; /* 80CECC3C-80CECC3C 000188 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_wdStick.cpp b/src/d/actor/d_a_obj_wdStick.cpp index 76e8e80157c..f8b88d253e1 100644 --- a/src/d/actor/d_a_obj_wdStick.cpp +++ b/src/d/actor/d_a_obj_wdStick.cpp @@ -4,243 +4,545 @@ */ #include "d/actor/d_a_obj_wdStick.h" -#include "dol2asm.h" +#include "SSystem/SComponent/c_math.h" +#include "d/actor/d_a_player.h" +#include "d/d_com_inf_game.h" +#include "f_op/f_op_kankyo_mng.h" +#include +UNK_REL_DATA - -// -// Forward References: -// - -extern "C" void __ct__15daWdStick_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__11daWdStick_cFv(); -extern "C" void CreateHeap__11daWdStick_cFv(); -extern "C" void create__11daWdStick_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -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" void createHeapCallBack__11daWdStick_cFP10fopAc_ac_c(); -extern "C" void lightInit__11daWdStick_cFv(); -extern "C" void setLight__11daWdStick_cFv(); -extern "C" void setFire__11daWdStick_cFv(); -extern "C" void Execute__11daWdStick_cFv(); -extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void bgCheck__11daWdStick_cFv(); -extern "C" void setBoundSe__11daWdStick_cFv(); -extern "C" void mode_proc_call__11daWdStick_cFv(); -extern "C" void mode_init_wait__11daWdStick_cFv(); -extern "C" void mode_proc_wait__11daWdStick_cFv(); -extern "C" void mode_init_carry__11daWdStick_cFv(); -extern "C" void mode_proc_carry__11daWdStick_cFv(); -extern "C" void mode_init_drop__11daWdStick_cFv(); -extern "C" void mode_proc_drop__11daWdStick_cFv(); -extern "C" void mode_init_roll__11daWdStick_cFv(); -extern "C" void mode_proc_roll__11daWdStick_cFv(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void chkWaterLineIn__11daWdStick_cFv(); -extern "C" void mode_init_sink__11daWdStick_cFv(); -extern "C" void mode_proc_sink__11daWdStick_cFv(); -extern "C" void Draw__11daWdStick_cFv(); -extern "C" void Delete__11daWdStick_cFv(); -extern "C" static void daWdStick_Draw__FP11daWdStick_c(); -extern "C" static void daWdStick_Execute__FP11daWdStick_c(); -extern "C" static void daWdStick_Delete__FP11daWdStick_c(); -extern "C" static void daWdStick_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__15daWdStick_HIO_cFv(); -extern "C" void __sinit_d_a_obj_wdStick_cpp(); -extern "C" static void func_80D340FC(); -extern "C" static void func_80D34104(); -extern "C" static void func_80D3410C(); -extern "C" static void func_80D34114(); -extern "C" static void func_80D3411C(); -extern "C" u8 const mCcDObjInfo__11daWdStick_c[48]; -extern "C" extern char const* const d_a_obj_wdStick__stringBase0; -extern "C" u8 mCcDSph__11daWdStick_c[64]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotS__FPA4_fsss(); -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetWallCode__4dBgSFRC13cBgS_PolyInfo(); -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__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__14dBgS_ObjLinChkFv(); -extern "C" void __dt__14dBgS_ObjLinChkFv(); -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 ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mParticleTracePCB__13dPa_control_c[4 + 4 /* padding */]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80D3421C-80D34228 000000 000C+00 1/1 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, -}; - -/* 80D34228-80D3423C 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 +/* 80D34424-80D34430 000014 000C+00 2/2 0/0 0/0 .bss l_HIO */ +static daWdStick_HIO_c l_HIO; /* 80D3423C-80D3427C 000020 0040+00 2/2 0/0 0/0 .data mCcDSph__11daWdStick_c */ -SECTION_DATA u8 daWdStick_c::mCcDSph[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, +dCcD_SrcSph daWdStick_c::mCcDSph = {daWdStick_c::mCcDObjInfo, {{{0.0f, 0.0f, 0.0f}, 4.0f}}}; + +/* 80D31B4C-80D31B88 0000EC 003C+00 1/1 0/0 0/0 .text __ct__15daWdStick_HIO_cFv */ +daWdStick_HIO_c::daWdStick_HIO_c() { + field_0x04 = 60; + field_0x05 = 1; + field_0x06 = 0xf; + field_0x08 = 0; +} + +/* 80D31BD0-80D31C58 000170 0088+00 2/2 0/0 0/0 .text setBaseMtx__11daWdStick_cFv */ +void daWdStick_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mModel->setBaseScale(scale); + mModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* 80D31C58-80D31CC4 0001F8 006C+00 1/0 0/0 0/0 .text CreateHeap__11daWdStick_cFv */ +int daWdStick_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("H_Kinobou", 4); + JUT_ASSERT(245, modelData != 0); + mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + return mModel != 0 ? 1 : 0; +} + +/* ############################################################################################## */ +/* 80D34138-80D34168 000000 0030+00 10/10 0/0 0/0 .rodata mCcDObjInfo__11daWdStick_c */ +dCcD_SrcGObjInf const daWdStick_c::mCcDObjInfo = { + {0, {{0x200, 0, 0x1f}, {0xd8fbffff, 0x1f}, {0x0}}}, + {dCcD_SE_NONE, 0, 0, 0, 0}, + {dCcD_SE_NONE, 0, 0, 0, 4}, + {0}, }; -/* 80D3427C-80D34288 -00001 000C+00 0/1 0/0 0/0 .data @4470 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4470[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_wait__11daWdStick_cFv, -}; -#pragma pop +/* 80D31CC4-80D31F9C 000264 02D8+00 1/1 0/0 0/0 .text create__11daWdStick_cFv */ +int daWdStick_c::create() { + fopAcM_SetupActor(this, daWdStick_c); + int rv = dComIfG_resLoad(&mPhase, "H_Kinobou"); + if (rv == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this, createHeapCallBack, 0x820) == 0) { + return cPhs_ERROR_e; + } + setBaseMtx(); + fopAcM_SetMtx(this, mModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mModel->getModelData()); + lightInit(); + field_0xaac = 0; + field_0xaad = 0; + field_0xaae = 0; + field_0xab0 = 0; + setLight(); + mAcchCir.SetWall(10.0f, 35.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, + &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + fopAcM_SetGravity(this, -10.0f); + fopAcM_SetMaxFallSpeed(this, -100.0f); + fopAcM_SetModel(this, mModel); + mStts.Init(10, 0xff, this); + mSph1.Set(mCcDSph); + mSph1.SetStts(&mStts); + mSph2.Set(mCcDSph); + mSph2.SetStts(&mStts); + fopAcM_OnCarryType(this, fopAcM_CARRY_UNK_30); + cLib_onBit(attention_info.flags, 0x10UL); + attention_info.distances[4] = 59; + misCarrying = fopAcM_checkCarryNow(this); + mode_init_wait(); + } + return rv; +} -/* 80D34288-80D34294 -00001 000C+00 0/1 0/0 0/0 .data @4471 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4471[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_carry__11daWdStick_cFv, -}; -#pragma pop +/* 80D32168-80D32194 000708 002C+00 1/1 0/0 0/0 .text + * createHeapCallBack__11daWdStick_cFP10fopAc_ac_c */ +int daWdStick_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); +} -/* 80D34294-80D342A0 -00001 000C+00 0/1 0/0 0/0 .data @4472 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4472[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_drop__11daWdStick_cFv, -}; -#pragma pop +/* 80D32194-80D32198 000734 0004+00 1/1 0/0 0/0 .text lightInit__11daWdStick_cFv */ +void daWdStick_c::lightInit() { +} -/* 80D342A0-80D342AC -00001 000C+00 0/1 0/0 0/0 .data @4473 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4473[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_roll__11daWdStick_cFv, -}; -#pragma pop +/* 80D32198-80D3219C 000738 0004+00 2/2 0/0 0/0 .text setLight__11daWdStick_cFv */ +void daWdStick_c::setLight() { +} -/* 80D342AC-80D342B8 -00001 000C+00 0/1 0/0 0/0 .data @4474 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4474[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_sink__11daWdStick_cFv, -}; -#pragma pop +/* 80D3219C-80D3269C 00073C 0500+00 1/1 0/0 0/0 .text setFire__11daWdStick_cFv */ +void daWdStick_c::setFire() { + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + cXyz local_24(75.0f, 4.0f, 0.0f); + cXyz cStack_30; + mDoMtx_stack_c::multVec(&local_24, &cStack_30); + field_0xa64 = current.pos + cStack_30; + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + local_24.x = -75.0f; + mDoMtx_stack_c::multVec(&local_24, &cStack_30); + field_0xa70 = current.pos + cStack_30; + if (field_0xab0 != 0) { + field_0xab0--; + } else if (field_0xab0 == 0 && field_0xaad == 1) { + field_0xaad = 0; + mSph2.SetAtMtrl(dCcD_MTRL_NONE); + mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &field_0xa70, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + } + if (field_0xaae != 0) { + field_0xaae--; + } else if (field_0xaae == 0 && field_0xaac == 1) { + field_0xaac = 0; + mSph1.SetAtMtrl(dCcD_MTRL_NONE); + mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &field_0xa64, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + } + int i; + if (field_0xaac != 0) { + field_0xa94 = (field_0xa64 - field_0xa7c) * 0.7f; + field_0xae4[0] = dComIfGp_particle_set(field_0xae4[0], 0x3ad, &field_0xa64, 0, 0); + field_0xae4[1] = dComIfGp_particle_set(field_0xae4[1], 0x3af, &field_0xa64, 0, 0); + mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &field_0xa64, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + for (i = 0; i < 2; i++) { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xae4[i]); + if (emitter != NULL) { + emitter->setParticleCallBackPtr(dPa_control_c::getParticleTracePCB()); + emitter->setUserWork((u32)&field_0xa94); + } + } + } + if (field_0xaad != 0) { + field_0xaa0 = (field_0xa70 - field_0xa88) * 0.7f; + field_0xaec[0] = dComIfGp_particle_set(field_0xaec[0], 0x3ad, &field_0xa70, 0, 0); + field_0xaec[1] = dComIfGp_particle_set(field_0xaec[1], 0x3af, &field_0xa70, 0, 0); + mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &field_0xa70, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + for (i = 0; i < 2; i++) { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xaec[i]); + if (emitter != NULL) { + emitter->setParticleCallBackPtr(dPa_control_c::getParticleTracePCB()); + emitter->setUserWork((u32)&field_0xaa0); + } + } + } +} -/* 80D342B8-80D342F4 00009C 003C+00 0/1 0/0 0/0 .data l_mode_func$4469 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[60] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 +/* 80D3269C-80D32A70 000C3C 03D4+00 1/0 0/0 0/0 .text Execute__11daWdStick_cFv */ +int daWdStick_c::Execute() { + field_0x594 = speed; + field_0xa7c = field_0xa64; + field_0xa88 = field_0xa70; + setFire(); + field_0xac0 = field_0xab4; + field_0xad8 = field_0xacc; + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + cXyz local_24(90.0f, 4.0f, 0.0f); + cXyz cStack_30; + mDoMtx_stack_c::multVec(&local_24, &cStack_30); + field_0xab4 = current.pos + cStack_30; + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + local_24.x = -90.0; + mDoMtx_stack_c::multVec(&local_24, &cStack_30); + field_0xacc = current.pos + cStack_30; + mode_proc_call(); + attention_info.position.x = current.pos.x; + attention_info.position.y = current.pos.y; + attention_info.position.z = current.pos.z; + eyePos = current.pos; + setBaseMtx(); + if (mSph1.ChkTgHit()) { + dCcD_GObjInf* tgHitObj = mSph1.GetTgHitGObj(); + if (tgHitObj->GetAtType() == AT_TYPE_LANTERN_SWING && tgHitObj->GetAtMtrl() == dCcD_MTRL_FIRE && + field_0xaac == 0) + { + field_0xaac = 1; + field_0xaae = l_HIO.field_0x06 * 30; + mSph1.SetAtMtrl(dCcD_MTRL_FIRE); + mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &field_0xa64, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + setLight(); + } + } + if (mSph2.ChkTgHit()) { + dCcD_GObjInf* tgHitObj = mSph2.GetTgHitGObj(); + if (tgHitObj->GetAtType() == AT_TYPE_LANTERN_SWING && + tgHitObj->GetAtMtrl() == dCcD_MTRL_FIRE && field_0xaad == 0) + { + field_0xaad = 1; + field_0xab0 = l_HIO.field_0x06 * 30; + mSph2.SetAtMtrl(dCcD_MTRL_FIRE); + mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &field_0xa70, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + setLight(); + } + } + field_0xaf4 = mAcch.ChkWaterIn(); + mSph1.SetR(30.0f); + mSph1.SetC(field_0xa64); + mSph2.SetR(30.0f); + mSph2.SetC(field_0xa70); + dComIfG_Ccsp()->Set(&mSph1); + dComIfG_Ccsp()->Set(&mSph2); + if (current.pos.y - home.pos.y <= -770.0f) { + OS_REPORT("=== 木の棒再セット (%f) ===\n", current.pos.y - home.pos.y); + field_0xaac = 0; + field_0xaad = 0; + cLib_onBit(attention_info.flags, 0x10UL); + current.pos = home.pos; + mode_init_wait(); + } + return 1; +} + +/* 80D32A70-80D32D6C 001010 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ +static f32 bound(cXyz* param_1, cBgS_PolyInfo const& param_2, f32 param_3) { + cM3dGPla acStack_3c; + if (dComIfG_Bgsp().GetTriPla(param_2, &acStack_3c) != 0) { + cXyz cStack_48; + f32 dVar5 = param_1->absXZ(); + C_VECReflect(param_1, &acStack_3c.mNormal, &cStack_48); + *param_1 = (cStack_48 * dVar5) * param_3; + return param_1->absXZ(); + } + return 0.0f; +} + +/* 80D32DB4-80D33348 001354 0594+00 3/3 0/0 0/0 .text bgCheck__11daWdStick_cFv */ +void daWdStick_c::bgCheck() { + bool isRoofHit = mAcch.ChkRoofHit() != 0; + bool isGroundLanding = mAcch.ChkGroundLanding() != 0; + bool isWaterHit = mAcch.ChkWaterHit() != 0; + bool isWaterIn = mAcch.ChkWaterIn() != 0; + if (mAcch.ChkWallHit() && speed.abs() > 8.0f) { + cXyz local_7c(speed); + cXyz cStack_88(speed); + bound(&local_7c, mAcchCir, 0.6f); + speed.set(local_7c); + speed.y = cStack_88.y; + speedF = local_7c.absXZ(); + current.angle.y = cM_atan2s(local_7c.x, local_7c.z); + if (current.pos.y - home.pos.y > -50.0f) { + setBoundSe(); + } + } + if (mMode == MODE_WAIT || mMode == MODE_DROP || mMode == MODE_CARRY) { + f32 dVar12 = mAcch.m_wtr.GetHeight(); + if (isWaterHit) { + f32 dVar13 = speed.y; + f32 dVar14 = dVar12; + if (chkWaterLineIn() && mMode != 1) { + mode_init_sink(); + } + if (isWaterIn && field_0xaf4 == 0) { + cXyz cStack_94(current.pos); + cStack_94.y = dVar14; + if (dVar13 < -15.0f) { + fopKyM_createWpillar(&cStack_94, 2.0f, 0); + fopAcM_seStart(this, Z2SE_OBJ_FALL_WATER_M, 0); + } + } + } + } + if (isGroundLanding && speed.abs() > 8.0f) { + f32 dVar12 = field_0x594.y; + bound(&speed, mAcch.m_gnd, + 0.6f); + speed.y = (-dVar12 * 0.6f); + if (fabsf(speed.y) < 5.0f) { + speed.y = 0.0f; + } + if (current.pos.y - home.pos.y > -50.0f) { + setBoundSe(); + } + } + if (isRoofHit) { + f32 dVar12 = field_0x594.y; + bound(&speed, mAcch.m_gnd, 0.6f); + speed.y -= -dVar12 * 0.6f; + OS_REPORT("HIT ROOF!!!!spdy<%f>spdy<%f>\n", dVar12, speed.y); + } + if (isGroundLanding && mMode == MODE_DROP) { + mode_init_roll(); + } +} + +/* 80D33348-80D333F4 0018E8 00AC+00 1/1 0/0 0/0 .text setBoundSe__11daWdStick_cFv */ +void daWdStick_c::setBoundSe() { + u32 uVar1 = fabsf(field_0x594.y) * 2.0f; + if (uVar1 > 100) { + uVar1 = 100; + } + mDoAud_seStart(Z2SE_OBJ_WOODSTICK_BOUND, ¤t.pos, uVar1, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); +} + +/* 80D333F4-80D3350C 001994 0118+00 1/1 0/0 0/0 .text mode_proc_call__11daWdStick_cFv */ +void daWdStick_c::mode_proc_call() { + static daWdStick_c::modeFunc l_mode_func[5] = { + &daWdStick_c::mode_proc_wait, + &daWdStick_c::mode_proc_carry, + &daWdStick_c::mode_proc_drop, + &daWdStick_c::mode_proc_roll, + &daWdStick_c::mode_proc_sink, + }; + + if (fopAcM_checkCarryNow(this) && !misCarrying) { + mode_init_carry(); + } + (this->*(l_mode_func[mMode]))(); + misCarrying = fopAcM_checkCarryNow(this); +} + +/* 80D3350C-80D3353C 001AAC 0030+00 4/4 0/0 0/0 .text mode_init_wait__11daWdStick_cFv */ +void daWdStick_c::mode_init_wait() { + cLib_onBit(attention_info.flags, 0x10UL); + speedF = 0.0f; + gravity = -10.0f; + mMode = MODE_WAIT; +} + +/* 80D3353C-80D33588 001ADC 004C+00 1/0 0/0 0/0 .text mode_proc_wait__11daWdStick_cFv */ +void daWdStick_c::mode_proc_wait() { + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bgCheck(); +} + +/* 80D33588-80D335AC 001B28 0024+00 1/1 0/0 0/0 .text mode_init_carry__11daWdStick_cFv */ +void daWdStick_c::mode_init_carry() { + cLib_offBit(attention_info.flags, 0x10UL); + speedF = 0.0f; + mMode = MODE_CARRY; +} + +/* 80D335AC-80D3386C 001B4C 02C0+00 1/0 0/0 0/0 .text mode_proc_carry__11daWdStick_cFv */ +void daWdStick_c::mode_proc_carry() { + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); + cXyz cStack_154(current.pos); + dBgS_ObjLinChk adStack_b0; + dBgS_ObjLinChk adStack_120; + cXyz local_160; + cXyz local_16c; + dBgS_ObjLinChk* pdVar9 = NULL; + local_160.x = 0.0f; + local_160.y = 0.0f; + local_160.z = 0.0f; + local_16c.x = 0.0f; + local_16c.y = 0.0f; + local_16c.z = 0.0f; + adStack_b0.Set(¤t.pos, &field_0xab4, this); + if (dComIfG_Bgsp().LineCross(&adStack_b0)) { + if (dComIfG_Bgsp().GetWallCode(adStack_b0) != 7) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(adStack_b0, &plane); + f32 dVar11 = plane.getPlaneFunc(&field_0xab4); + VECScale(&plane.mNormal, &local_16c, dVar11 * -1.0f); + pdVar9 = &adStack_b0; + } + } + + adStack_120.Set(¤t.pos, &field_0xacc, this); + if (dComIfG_Bgsp().LineCross(&adStack_120)) { + if (dComIfG_Bgsp().GetWallCode(adStack_120) != 7) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(adStack_120, &plane); + f32 dVar11 = plane.getPlaneFunc(&field_0xacc); + VECScale(&plane.mNormal, &local_160, dVar11 * -1.0f); + pdVar9 = &adStack_120; + } + } + + field_0x57c = local_160 + local_16c; + player->setGrabCollisionOffset(field_0x57c.x, field_0x57c.z, pdVar9); + current.pos = cStack_154; + if (!fopAcM_checkCarryNow(this)) { + if (fopAcM_GetSpeedF(this) != 0.0f) { + mode_init_drop(); + } else { + mode_init_roll(); + mDoAud_seStart(Z2SE_OBJ_WOODSTICK_PUT, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + } + } +} + +/* 80D3386C-80D33890 001E0C 0024+00 1/1 0/0 0/0 .text mode_init_drop__11daWdStick_cFv */ +void daWdStick_c::mode_init_drop() { + cLib_offBit(attention_info.flags, 0x10UL); + gravity = -5.0f; + mMode = MODE_DROP; +} + +/* 80D33890-80D338DC 001E30 004C+00 1/0 0/0 0/0 .text mode_proc_drop__11daWdStick_cFv */ +void daWdStick_c::mode_proc_drop() { + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bgCheck(); +} + +/* 80D338DC-80D338F4 001E7C 0018+00 2/2 0/0 0/0 .text mode_init_roll__11daWdStick_cFv */ +void daWdStick_c::mode_init_roll() { + cLib_offBit(attention_info.flags, 0x10UL); + mMode = MODE_ROLL; +} + +/* 80D338F4-80D33CCC 001E94 03D8+00 1/0 0/0 0/0 .text mode_proc_roll__11daWdStick_cFv */ +void daWdStick_c::mode_proc_roll() { + f32 dVar14 = 70.0f; + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + dBgS_ObjGndChk adStack_d8; + cXyz cStack_f8(current.pos); + cStack_f8.y += 4.0f; + adStack_d8.SetPos(&cStack_f8); + f32 groundCross = dComIfG_Bgsp().GroundCross(&adStack_d8); + cXyz cStack_104; + f32 dVar13 = 0.75f; + cM3dGPla cStack_ec; + fopAcM_gc_c::gndCheck(&cStack_f8); + bool iVar7 = fopAcM_gc_c::getTriPla(&cStack_ec); + if ((groundCross != -1000000000.0f) && iVar7 != 0) { + f32 dVar11 = cM_scos(cM_deg2s(dVar14 - 0.5f)); + cStack_104 = cStack_ec.mNormal; + if (cStack_104.y < dVar11) { + cXyz local_110(cStack_104); + s16 sVar8 = cM_atan2s(local_110.x, local_110.z); + f32 dVar11 = 10.0f; + dVar11 *= (1.0f - cStack_104.y); + if (dVar11 < 0.1f) { + dVar11 = 0.1f; + } else if (dVar11 > 1.0f) { + dVar11 = 1.0f; + } + cXyz local_11c((speedF * cM_ssin(current.angle.y)), 0.0f, + speedF * cM_scos(current.angle.y)); + cXyz cStack_128(dVar11 * cM_ssin(sVar8), 0.0f, dVar11 * cM_scos(sVar8)); + local_11c += cStack_128; + speedF = std::sqrt(local_11c.x * local_11c.x + local_11c.z * local_11c.z); + current.angle.y = cM_atan2s(local_11c.x, local_11c.z); + } + } + speedF *= dVar13; + if (mStts.GetCCMoveP()->abs2XZ() > 0.01000000070780516f) { + speedF *= 0.9f; + } + if (mAcch.ChkGroundHit()) { + if (speedF < 0.3f) { + mode_init_wait(); + } + } else { + cLib_offBit(attention_info.flags, 0x10UL); + } + mAcch.CrrPos(dComIfG_Bgsp()); + bgCheck(); +} + +f32 dummyLiteral() { return 100.0f; } + +/* 80D33D44-80D33D68 0022E4 0024+00 2/2 0/0 0/0 .text chkWaterLineIn__11daWdStick_cFv */ +BOOL daWdStick_c::chkWaterLineIn() { + return mAcch.m_wtr.GetHeight() > current.pos.y + 40.0f; +} + +/* 80D33D68-80D33D8C 002308 0024+00 1/1 0/0 0/0 .text mode_init_sink__11daWdStick_cFv */ +void daWdStick_c::mode_init_sink() { + field_0xab0 = 0; + field_0xaae = 0; + cLib_offBit(attention_info.flags, 0x10UL); + mMode = MODE_SINK; +} + +/* 80D33D8C-80D33EB0 00232C 0124+00 1/0 0/0 0/0 .text mode_proc_sink__11daWdStick_cFv */ +void daWdStick_c::mode_proc_sink() { + cLib_addCalc(&speedF, 0, 0.05f, 0.1f, 0.01f); + speed.y = cLib_minMaxLimit(speed.y, -15.0f, 13.0f); + if (mAcch.ChkGroundHit()) { + speedF *= 0.9f; + } + if (chkWaterLineIn()) { + gravity = -2.0f; + } else { + gravity = -5.0f; + } + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + f32 waterHeight = mAcch.m_wtr.GetHeight(); + if (current.pos.y < waterHeight + 100.0f) { + cLib_onBit(attention_info.flags, 0x10UL); + current.pos = home.pos; + mode_init_wait(); + } + if (mAcch.ChkGroundHit()) { + cLib_onBit(attention_info.flags, 0x10UL); + } +} + +/* 80D33EB0-80D33F14 002450 0064+00 1/0 0/0 0/0 .text Draw__11daWdStick_cFv */ +int daWdStick_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModel, &tevStr); + mDoExt_modelUpdateDL(mModel); + return 1; +} + +/* 80D33F14-80D33F44 0024B4 0030+00 1/0 0/0 0/0 .text Delete__11daWdStick_cFv */ +int daWdStick_c::Delete() { + dComIfG_resDelete(&mPhase, "H_Kinobou"); + return 1; +} + +/* 80D33F44-80D33F70 0024E4 002C+00 1/0 0/0 0/0 .text daWdStick_Draw__FP11daWdStick_c */ +static int daWdStick_Draw(daWdStick_c* i_this) { + return i_this->Draw(); +} + +/* 80D33F70-80D33F9C 002510 002C+00 1/0 0/0 0/0 .text daWdStick_Execute__FP11daWdStick_c + */ +static int daWdStick_Execute(daWdStick_c* i_this) { + return i_this->Execute(); +} + +/* 80D33F9C-80D33FC8 00253C 002C+00 1/0 0/0 0/0 .text daWdStick_Delete__FP11daWdStick_c + */ +static int daWdStick_Delete(daWdStick_c* i_this) { + return i_this->Delete(); +} + +/* 80D33FC8-80D33FE8 002568 0020+00 1/0 0/0 0/0 .text daWdStick_Create__FP10fopAc_ac_c */ +static int daWdStick_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} /* 80D342F4-80D34314 -00001 0020+00 1/0 0/0 0/0 .data l_daWdStick_Method */ static actor_method_class l_daWdStick_Method = { - (process_method_func)daWdStick_Create__FP10fopAc_ac_c, - (process_method_func)daWdStick_Delete__FP11daWdStick_c, - (process_method_func)daWdStick_Execute__FP11daWdStick_c, - 0, - (process_method_func)daWdStick_Draw__FP11daWdStick_c, + (process_method_func)daWdStick_Create, + (process_method_func)daWdStick_Delete, + (process_method_func)daWdStick_Execute, + NULL, + (process_method_func)daWdStick_Draw, }; /* 80D34314-80D34344 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_WdStick */ @@ -261,649 +563,4 @@ extern actor_process_profile_definition g_profile_Obj_WdStick = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80D34344-80D34374 000128 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80D3410C, - (void*)NULL, - (void*)NULL, - (void*)func_80D3411C, - (void*)NULL, - (void*)NULL, - (void*)func_80D34114, -}; - -/* 80D34374-80D34380 000158 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80D34380-80D3438C 000164 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, -}; - -/* 80D3438C-80D34398 000170 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, -}; - -/* 80D34398-80D343A4 00017C 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, -}; - -/* 80D343A4-80D343B0 000188 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80D343B0-80D343BC 000194 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, -}; - -/* 80D343BC-80D343E0 0001A0 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_80D34104, - (void*)NULL, - (void*)NULL, - (void*)func_80D340FC, -}; - -/* 80D343E0-80D343F8 0001C4 0018+00 1/1 0/0 0/0 .data __vt__11daWdStick_c */ -SECTION_DATA extern void* __vt__11daWdStick_c[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__11daWdStick_cFv, - (void*)Execute__11daWdStick_cFv, - (void*)Draw__11daWdStick_cFv, - (void*)Delete__11daWdStick_cFv, -}; - -/* 80D343F8-80D34404 0001DC 000C+00 2/2 0/0 0/0 .data __vt__15daWdStick_HIO_c */ -SECTION_DATA extern void* __vt__15daWdStick_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daWdStick_HIO_cFv, -}; - -/* 80D34404-80D34410 0001E8 000C+00 3/3 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, -}; - -/* 80D31B4C-80D31B88 0000EC 003C+00 1/1 0/0 0/0 .text __ct__15daWdStick_HIO_cFv */ -daWdStick_HIO_c::daWdStick_HIO_c() { - // NONMATCHING -} - -/* 80D31B88-80D31BD0 000128 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 -} - -/* 80D31BD0-80D31C58 000170 0088+00 2/2 0/0 0/0 .text setBaseMtx__11daWdStick_cFv */ -void daWdStick_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D34210-80D34210 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D34210 = "H_Kinobou"; -#pragma pop - -/* 80D31C58-80D31CC4 0001F8 006C+00 1/0 0/0 0/0 .text CreateHeap__11daWdStick_cFv */ -void daWdStick_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D34138-80D34168 000000 0030+00 10/10 0/0 0/0 .rodata mCcDObjInfo__11daWdStick_c */ -SECTION_RODATA u8 const daWdStick_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xD8, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D34138, &daWdStick_c::mCcDObjInfo); - -/* 80D34168-80D3416C 000030 0004+00 0/2 0/0 0/0 .rodata @3775 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3775 = 10.0f; -COMPILER_STRIP_GATE(0x80D34168, &lit_3775); -#pragma pop - -/* 80D3416C-80D34170 000034 0004+00 0/1 0/0 0/0 .rodata @3776 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3776 = 35.0f; -COMPILER_STRIP_GATE(0x80D3416C, &lit_3776); -#pragma pop - -/* 80D34170-80D34174 000038 0004+00 1/2 0/0 0/0 .rodata @3777 */ -SECTION_RODATA static f32 const lit_3777 = -10.0f; -COMPILER_STRIP_GATE(0x80D34170, &lit_3777); - -/* 80D34174-80D34178 00003C 0004+00 0/1 0/0 0/0 .rodata @3778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3778 = -100.0f; -COMPILER_STRIP_GATE(0x80D34174, &lit_3778); -#pragma pop - -/* 80D31CC4-80D31F9C 000264 02D8+00 1/1 0/0 0/0 .text create__11daWdStick_cFv */ -void daWdStick_c::create() { - // NONMATCHING -} - -/* 80D31F9C-80D31FE4 00053C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80D31FE4-80D3202C 000584 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D3202C-80D32088 0005CC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D32088-80D320F8 000628 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80D320F8-80D32168 000698 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80D32168-80D32194 000708 002C+00 1/1 0/0 0/0 .text - * createHeapCallBack__11daWdStick_cFP10fopAc_ac_c */ -void daWdStick_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D32194-80D32198 000734 0004+00 1/1 0/0 0/0 .text lightInit__11daWdStick_cFv */ -void daWdStick_c::lightInit() { - /* empty function */ -} - -/* 80D32198-80D3219C 000738 0004+00 2/2 0/0 0/0 .text setLight__11daWdStick_cFv */ -void daWdStick_c::setLight() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80D34178-80D3417C 000040 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 75.0f; -COMPILER_STRIP_GATE(0x80D34178, &lit_4028); -#pragma pop - -/* 80D3417C-80D34180 000044 0004+00 0/3 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = 4.0f; -COMPILER_STRIP_GATE(0x80D3417C, &lit_4029); -#pragma pop - -/* 80D34180-80D34184 000048 0004+00 2/9 0/0 0/0 .rodata @4030 */ -SECTION_RODATA static u8 const lit_4030[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D34180, &lit_4030); - -/* 80D34184-80D34188 00004C 0004+00 0/1 0/0 0/0 .rodata @4031 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4031 = -75.0f; -COMPILER_STRIP_GATE(0x80D34184, &lit_4031); -#pragma pop - -/* 80D34188-80D3418C 000050 0004+00 0/6 0/0 0/0 .rodata @4032 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4032 = 1.0f; -COMPILER_STRIP_GATE(0x80D34188, &lit_4032); -#pragma pop - -/* 80D3418C-80D34190 000054 0004+00 0/5 0/0 0/0 .rodata @4033 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4033 = -1.0f; -COMPILER_STRIP_GATE(0x80D3418C, &lit_4033); -#pragma pop - -/* 80D34190-80D34194 000058 0004+00 0/1 0/0 0/0 .rodata @4034 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4034 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D34190, &lit_4034); -#pragma pop - -/* 80D3219C-80D3269C 00073C 0500+00 1/1 0/0 0/0 .text setFire__11daWdStick_cFv */ -void daWdStick_c::setFire() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D34194-80D34198 00005C 0004+00 0/1 0/0 0/0 .rodata @4118 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4118 = 90.0f; -COMPILER_STRIP_GATE(0x80D34194, &lit_4118); -#pragma pop - -/* 80D34198-80D3419C 000060 0004+00 0/1 0/0 0/0 .rodata @4119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4119 = -90.0f; -COMPILER_STRIP_GATE(0x80D34198, &lit_4119); -#pragma pop - -/* 80D3419C-80D341A0 000064 0004+00 0/1 0/0 0/0 .rodata @4120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4120 = 30.0f; -COMPILER_STRIP_GATE(0x80D3419C, &lit_4120); -#pragma pop - -/* 80D341A0-80D341A8 000068 0004+04 0/1 0/0 0/0 .rodata @4121 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4121[1 + 1 /* padding */] = { - -770.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D341A0, &lit_4121); -#pragma pop - -/* 80D34418-80D34424 000008 000C+00 1/1 0/0 0/0 .bss @3643 */ -static u8 lit_3643[12]; - -/* 80D34424-80D34430 000014 000C+00 2/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[12]; - -/* 80D3269C-80D32A70 000C3C 03D4+00 1/0 0/0 0/0 .text Execute__11daWdStick_cFv */ -void daWdStick_c::Execute() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D341A8-80D341B0 000070 0008+00 0/3 0/0 0/0 .rodata @4220 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4220[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D341A8, &lit_4220); -#pragma pop - -/* 80D341B0-80D341B8 000078 0008+00 0/3 0/0 0/0 .rodata @4221 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4221[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D341B0, &lit_4221); -#pragma pop - -/* 80D341B8-80D341C0 000080 0008+00 0/3 0/0 0/0 .rodata @4222 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4222[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D341B8, &lit_4222); -#pragma pop - -/* 80D32A70-80D32D6C 001010 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ -static void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING -} - -/* 80D32D6C-80D32DB4 00130C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D341C0-80D341C4 000088 0004+00 0/1 0/0 0/0 .rodata @4444 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4444 = 8.0f; -COMPILER_STRIP_GATE(0x80D341C0, &lit_4444); -#pragma pop - -/* 80D341C4-80D341C8 00008C 0004+00 0/1 0/0 0/0 .rodata @4445 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4445 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D341C4, &lit_4445); -#pragma pop - -/* 80D341C8-80D341CC 000090 0004+00 0/1 0/0 0/0 .rodata @4446 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4446 = -50.0f; -COMPILER_STRIP_GATE(0x80D341C8, &lit_4446); -#pragma pop - -/* 80D341CC-80D341D0 000094 0004+00 0/2 0/0 0/0 .rodata @4447 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4447 = -15.0f; -COMPILER_STRIP_GATE(0x80D341CC, &lit_4447); -#pragma pop - -/* 80D341D0-80D341D4 000098 0004+00 0/2 0/0 0/0 .rodata @4448 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4448 = 2.0f; -COMPILER_STRIP_GATE(0x80D341D0, &lit_4448); -#pragma pop - -/* 80D341D4-80D341D8 00009C 0004+00 0/1 0/0 0/0 .rodata @4449 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4449 = 5.0f; -COMPILER_STRIP_GATE(0x80D341D4, &lit_4449); -#pragma pop - -/* 80D32DB4-80D33348 001354 0594+00 3/3 0/0 0/0 .text bgCheck__11daWdStick_cFv */ -void daWdStick_c::bgCheck() { - // NONMATCHING -} - -/* 80D33348-80D333F4 0018E8 00AC+00 1/1 0/0 0/0 .text setBoundSe__11daWdStick_cFv */ -void daWdStick_c::setBoundSe() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D34430-80D34434 000020 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80D34430[4]; - -/* 80D333F4-80D3350C 001994 0118+00 1/1 0/0 0/0 .text mode_proc_call__11daWdStick_cFv */ -void daWdStick_c::mode_proc_call() { - // NONMATCHING -} - -/* 80D3350C-80D3353C 001AAC 0030+00 4/4 0/0 0/0 .text mode_init_wait__11daWdStick_cFv */ -void daWdStick_c::mode_init_wait() { - // NONMATCHING -} - -/* 80D3353C-80D33588 001ADC 004C+00 1/0 0/0 0/0 .text mode_proc_wait__11daWdStick_cFv */ -void daWdStick_c::mode_proc_wait() { - // NONMATCHING -} - -/* 80D33588-80D335AC 001B28 0024+00 1/1 0/0 0/0 .text mode_init_carry__11daWdStick_cFv */ -void daWdStick_c::mode_init_carry() { - // NONMATCHING -} - -/* 80D335AC-80D3386C 001B4C 02C0+00 1/0 0/0 0/0 .text mode_proc_carry__11daWdStick_cFv */ -void daWdStick_c::mode_proc_carry() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D341D8-80D341DC 0000A0 0004+00 1/2 0/0 0/0 .rodata @4574 */ -SECTION_RODATA static f32 const lit_4574 = -5.0f; -COMPILER_STRIP_GATE(0x80D341D8, &lit_4574); - -/* 80D3386C-80D33890 001E0C 0024+00 1/1 0/0 0/0 .text mode_init_drop__11daWdStick_cFv */ -void daWdStick_c::mode_init_drop() { - // NONMATCHING -} - -/* 80D33890-80D338DC 001E30 004C+00 1/0 0/0 0/0 .text mode_proc_drop__11daWdStick_cFv */ -void daWdStick_c::mode_proc_drop() { - // NONMATCHING -} - -/* 80D338DC-80D338F4 001E7C 0018+00 2/2 0/0 0/0 .text mode_init_roll__11daWdStick_cFv */ -void daWdStick_c::mode_init_roll() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D341DC-80D341E0 0000A4 0004+00 0/1 0/0 0/0 .rodata @4704 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4704 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80D341DC, &lit_4704); -#pragma pop - -/* 80D341E0-80D341E4 0000A8 0004+00 0/1 0/0 0/0 .rodata @4705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4705 = 0x4645B05B; -COMPILER_STRIP_GATE(0x80D341E0, &lit_4705); -#pragma pop - -/* 80D341E4-80D341E8 0000AC 0004+00 0/2 0/0 0/0 .rodata @4706 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4706 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D341E4, &lit_4706); -#pragma pop - -/* 80D341E8-80D341EC 0000B0 0004+00 0/1 0/0 0/0 .rodata @4707 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4707 = 0.75f; -COMPILER_STRIP_GATE(0x80D341E8, &lit_4707); -#pragma pop - -/* 80D341EC-80D341F0 0000B4 0004+00 0/1 0/0 0/0 .rodata @4708 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4708 = 0x3C23D70B; -COMPILER_STRIP_GATE(0x80D341EC, &lit_4708); -#pragma pop - -/* 80D341F0-80D341F4 0000B8 0004+00 0/2 0/0 0/0 .rodata @4709 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4709 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D341F0, &lit_4709); -#pragma pop - -/* 80D341F4-80D341F8 0000BC 0004+00 0/1 0/0 0/0 .rodata @4710 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4710 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D341F4, &lit_4710); -#pragma pop - -/* 80D338F4-80D33CCC 001E94 03D8+00 1/0 0/0 0/0 .text mode_proc_roll__11daWdStick_cFv */ -void daWdStick_c::mode_proc_roll() { - // NONMATCHING -} - -/* 80D33CCC-80D33D44 00226C 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D341F8-80D341FC 0000C0 0004+00 0/1 0/0 0/0 .rodata @4725 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4725 = 100.0f; -COMPILER_STRIP_GATE(0x80D341F8, &lit_4725); -#pragma pop - -/* 80D341FC-80D34200 0000C4 0004+00 1/1 0/0 0/0 .rodata @4731 */ -SECTION_RODATA static f32 const lit_4731 = 40.0f; -COMPILER_STRIP_GATE(0x80D341FC, &lit_4731); - -/* 80D33D44-80D33D68 0022E4 0024+00 2/2 0/0 0/0 .text chkWaterLineIn__11daWdStick_cFv */ -void daWdStick_c::chkWaterLineIn() { - // NONMATCHING -} - -/* 80D33D68-80D33D8C 002308 0024+00 1/1 0/0 0/0 .text mode_init_sink__11daWdStick_cFv */ -void daWdStick_c::mode_init_sink() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D34200-80D34204 0000C8 0004+00 0/1 0/0 0/0 .rodata @4777 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4777 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80D34200, &lit_4777); -#pragma pop - -/* 80D34204-80D34208 0000CC 0004+00 0/1 0/0 0/0 .rodata @4778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4778 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80D34204, &lit_4778); -#pragma pop - -/* 80D34208-80D3420C 0000D0 0004+00 0/1 0/0 0/0 .rodata @4779 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4779 = 13.0f; -COMPILER_STRIP_GATE(0x80D34208, &lit_4779); -#pragma pop - -/* 80D3420C-80D34210 0000D4 0004+00 0/1 0/0 0/0 .rodata @4780 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4780 = -2.0f; -COMPILER_STRIP_GATE(0x80D3420C, &lit_4780); -#pragma pop - -/* 80D33D8C-80D33EB0 00232C 0124+00 1/0 0/0 0/0 .text mode_proc_sink__11daWdStick_cFv */ -void daWdStick_c::mode_proc_sink() { - // NONMATCHING -} - -/* 80D33EB0-80D33F14 002450 0064+00 1/0 0/0 0/0 .text Draw__11daWdStick_cFv */ -void daWdStick_c::Draw() { - // NONMATCHING -} - -/* 80D33F14-80D33F44 0024B4 0030+00 1/0 0/0 0/0 .text Delete__11daWdStick_cFv */ -void daWdStick_c::Delete() { - // NONMATCHING -} - -/* 80D33F44-80D33F70 0024E4 002C+00 1/0 0/0 0/0 .text daWdStick_Draw__FP11daWdStick_c */ -static void daWdStick_Draw(daWdStick_c* param_0) { - // NONMATCHING -} - -/* 80D33F70-80D33F9C 002510 002C+00 1/0 0/0 0/0 .text daWdStick_Execute__FP11daWdStick_c - */ -static void daWdStick_Execute(daWdStick_c* param_0) { - // NONMATCHING -} - -/* 80D33F9C-80D33FC8 00253C 002C+00 1/0 0/0 0/0 .text daWdStick_Delete__FP11daWdStick_c - */ -static void daWdStick_Delete(daWdStick_c* param_0) { - // NONMATCHING -} - -/* 80D33FC8-80D33FE8 002568 0020+00 1/0 0/0 0/0 .text daWdStick_Create__FP10fopAc_ac_c */ -static void daWdStick_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D33FE8-80D34030 002588 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D34030-80D3408C 0025D0 005C+00 2/1 0/0 0/0 .text __dt__15daWdStick_HIO_cFv */ -daWdStick_HIO_c::~daWdStick_HIO_c() { - // NONMATCHING -} - -/* 80D3408C-80D340FC 00262C 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_wdStick_cpp */ -void __sinit_d_a_obj_wdStick_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80D3408C, __sinit_d_a_obj_wdStick_cpp); -#pragma pop - -/* 80D340FC-80D34104 00269C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80D340FC() { - // NONMATCHING -} - -/* 80D34104-80D3410C 0026A4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80D34104() { - // NONMATCHING -} - -/* 80D3410C-80D34114 0026AC 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_80D3410C() { - // NONMATCHING -} - -/* 80D34114-80D3411C 0026B4 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_80D34114() { - // NONMATCHING -} - -/* 80D3411C-80D34124 0026BC 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_80D3411C() { - // NONMATCHING -} - /* 80D34210-80D34210 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/d_cc_uty.cpp b/src/d/d_cc_uty.cpp index c1df3fb3036..fd1e3724fd8 100644 --- a/src/d/d_cc_uty.cpp +++ b/src/d/d_cc_uty.cpp @@ -165,7 +165,7 @@ static u8 at_power_get(dCcU_AtInfo* i_AtInfo) { u8 power = i_AtInfo->mpCollider->GetAtAtp(); if (i_AtInfo->mPowerType == 0) { - if (i_AtInfo->mpCollider->ChkAtType(0x10000000)) { + if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_10000000)) { power = 0; } else if (power == 1) { power = 1; @@ -179,7 +179,7 @@ static u8 at_power_get(dCcU_AtInfo* i_AtInfo) { power = 200; } } else if (i_AtInfo->mPowerType == 6) { - if (i_AtInfo->mpCollider->ChkAtType(0x10000000)) { + if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_10000000)) { power = 0; } else if (power == 1) { power = 1; @@ -193,7 +193,7 @@ static u8 at_power_get(dCcU_AtInfo* i_AtInfo) { } else if (i_AtInfo->mPowerType == 4) { if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_IRON_BALL)) { power = 200; - } else if (i_AtInfo->mpCollider->ChkAtType(0x10000000)) { + } else if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_10000000)) { power = 0; } else if (power == 1) { power = 1; @@ -247,7 +247,7 @@ static u8 at_power_get(dCcU_AtInfo* i_AtInfo) { power = 40; } } else if (i_AtInfo->mPowerType == 7) { - if (i_AtInfo->mpCollider->ChkAtType(0x420008)) { + if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_THROW_OBJ | AT_TYPE_20000 | AT_TYPE_IRON_BALL)) { power = 50; } else if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_ARROW)) { power = 27; @@ -337,7 +337,7 @@ fopAc_ac_c* at_power_check(dCcU_AtInfo* i_AtInfo) { s16 ac_name = fopAcM_GetName(i_AtInfo->mpActor); if (ac_name == PROC_ALINK || ac_name == PROC_ALINK) { - if (i_AtInfo->mpCollider->ChkAtType(0x8000) || + if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_8000) || i_AtInfo->mpCollider->ChkAtType(AT_TYPE_IRON_BALL)) { i_AtInfo->mHitType = HIT_TYPE_LINK_HEAVY_ATTACK; @@ -358,7 +358,7 @@ fopAc_ac_c* at_power_check(dCcU_AtInfo* i_AtInfo) { } i_AtInfo->mHitStatus = 0; - if (i_AtInfo->mpCollider->ChkAtType(0x40) || + if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_40) || i_AtInfo->mpCollider->ChkAtType(AT_TYPE_BOOMERANG) || i_AtInfo->mpCollider->ChkAtType(AT_TYPE_SLINGSHOT) || i_AtInfo->mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK))