diff --git a/config/GZ2E01/rels/d_a_obj_bubblePilar/symbols.txt b/config/GZ2E01/rels/d_a_obj_bubblePilar/symbols.txt index 261013d697f..aaaf1ffc4f8 100644 --- a/config/GZ2E01/rels/d_a_obj_bubblePilar/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_bubblePilar/symbols.txt @@ -18,10 +18,10 @@ initModeEffOn__13daBubbPilar_cFv = .text:0x00000974; // type:function size:0x24 modeEffOn__13daBubbPilar_cFv = .text:0x00000998; // type:function size:0x118 scope:global Draw__13daBubbPilar_cFv = .text:0x00000AB0; // type:function size:0xDC scope:global Delete__13daBubbPilar_cFv = .text:0x00000B8C; // type:function size:0x30 scope:global -daBubbPilar_Draw__FP13daBubbPilar_c = .text:0x00000BBC; // type:function size:0x2C scope:global -daBubbPilar_Execute__FP13daBubbPilar_c = .text:0x00000BE8; // type:function size:0x20 scope:global -daBubbPilar_Delete__FP13daBubbPilar_c = .text:0x00000C08; // type:function size:0x20 scope:global -daBubbPilar_Create__FP10fopAc_ac_c = .text:0x00000C28; // type:function size:0x20 scope:global +daBubbPilar_Draw__FP13daBubbPilar_c = .text:0x00000BBC; // type:function size:0x2C scope:local +daBubbPilar_Execute__FP13daBubbPilar_c = .text:0x00000BE8; // type:function size:0x20 scope:local +daBubbPilar_Delete__FP13daBubbPilar_c = .text:0x00000C08; // type:function size:0x20 scope:local +daBubbPilar_Create__FP10fopAc_ac_c = .text:0x00000C28; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00000C48; // type:function size:0x48 scope:global __dt__17daBubbPilar_HIO_cFv = .text:0x00000C90; // type:function size:0x5C scope:global __sinit_d_a_obj_bubblePilar_cpp = .text:0x00000CEC; // type:function size:0x70 scope:local @@ -36,13 +36,13 @@ mCcDObjInfo__13daBubbPilar_c = .rodata:0x00000000; // type:object size:0x30 scop particle_id$3953 = .rodata:0x0000003C; // type:object size:0x6 scope:local @stringBase0 = .rodata:0x00000044; // type:object size:0x8 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__13daBubbPilar_c = .data:0x00000020; // type:object size:0x44 scope:global @3843 = .data:0x00000064; // type:object size:0xC scope:local @3844 = .data:0x00000070; // type:object size:0xC scope:local mode_proc$3842 = .data:0x0000007C; // type:object size:0x18 scope:local -l_daBubbPilar_Method = .data:0x00000094; // type:object size:0x20 scope:global +l_daBubbPilar_Method = .data:0x00000094; // type:object size:0x20 scope:local g_profile_Obj_awaPlar = .data:0x000000B4; // type:object size:0x30 scope:global __vt__10cCcD_GStts = .data:0x000000E4; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x000000F0; // type:object size:0xC scope:global @@ -53,5 +53,5 @@ __vt__17daBubbPilar_HIO_c = .data:0x0000013C; // type:object size:0xC scope:glob __vt__14mDoHIO_entry_c = .data:0x00000148; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3623 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global -lbl_416_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte +l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local +init$1367 = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_gb/symbols.txt b/config/GZ2E01/rels/d_a_obj_gb/symbols.txt index 6ec230cbdc0..af8c42334e6 100644 --- a/config/GZ2E01/rels/d_a_obj_gb/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_gb/symbols.txt @@ -1,14 +1,14 @@ _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 -daObj_Gb_Draw__FP12obj_gb_class = .text:0x00000078; // type:function size:0xE0 scope:global -daObj_Gb_Execute__FP12obj_gb_class = .text:0x00000158; // type:function size:0x394 scope:global +daObj_Gb_Draw__FP12obj_gb_class = .text:0x00000078; // type:function size:0xE0 scope:local +daObj_Gb_Execute__FP12obj_gb_class = .text:0x00000158; // type:function size:0x394 scope:local __dt__4cXyzFv = .text:0x000004EC; // type:function size:0x3C scope:global -daObj_Gb_IsDelete__FP12obj_gb_class = .text:0x00000528; // type:function size:0x8 scope:global -daObj_Gb_Delete__FP12obj_gb_class = .text:0x00000530; // type:function size:0x5C scope:global -useHeapInit__FP10fopAc_ac_c = .text:0x0000058C; // type:function size:0x26C scope:global +daObj_Gb_IsDelete__FP12obj_gb_class = .text:0x00000528; // type:function size:0x8 scope:local +daObj_Gb_Delete__FP12obj_gb_class = .text:0x00000530; // type:function size:0x5C scope:local +useHeapInit__FP10fopAc_ac_c = .text:0x0000058C; // type:function size:0x26C scope:local __dt__12J3DFrameCtrlFv = .text:0x000007F8; // type:function size:0x48 scope:global -daObj_Gb_Create__FP10fopAc_ac_c = .text:0x00000840; // type:function size:0x2D0 scope:global +daObj_Gb_Create__FP10fopAc_ac_c = .text:0x00000840; // type:function size:0x2D0 scope:local __ct__4cXyzFv = .text:0x00000B10; // type:function size:0x4 scope:global _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global @@ -26,12 +26,12 @@ _dtors = .dtors:0x00000000; // type:label scope:global @4088 = .rodata:0x00000028; // type:object size:0x8 scope:local @stringBase0 = .rodata:0x00000030; // type:object size:0xF 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 bmd$3914 = .data:0x00000020; // type:object size:0x8 scope:local brk$3915 = .data:0x00000028; // type:object size:0x8 scope:local btk$3916 = .data:0x00000030; // type:object size:0x8 scope:local dzb$3917 = .data:0x00000038; // type:object size:0x8 scope:local -l_daObj_Gb_Method = .data:0x00000040; // type:object size:0x20 scope:global +l_daObj_Gb_Method = .data:0x00000040; // type:object size:0x20 scope:local g_profile_OBJ_GB = .data:0x00000060; // type:object size:0x30 scope:global __vt__12J3DFrameCtrl = .data:0x00000090; // type:object size:0xC scope:global diff --git a/config/GZ2E01/rels/d_a_obj_ten/symbols.txt b/config/GZ2E01/rels/d_a_obj_ten/symbols.txt index fb230a1ca70..096b25025b4 100644 --- a/config/GZ2E01/rels/d_a_obj_ten/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_ten/symbols.txt @@ -6,10 +6,10 @@ __destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:glob __ct__14daObj_TenHIO_cFv = .text:0x000000EC; // type:function size:0x28 scope:global InitCcSph__10daObjTEN_cFv = .text:0x00000114; // type:function size:0x6C scope:global SetCcSph__10daObjTEN_cFv = .text:0x00000180; // type:function size:0x58 scope:global -useHeapInit__FP10fopAc_ac_c = .text:0x000001D8; // type:function size:0x2CC scope:global +useHeapInit__FP10fopAc_ac_c = .text:0x000001D8; // type:function size:0x2CC scope:local __dt__12J3DFrameCtrlFv = .text:0x000004A4; // type:function size:0x48 scope:global -daObjTEN_Create__FP10fopAc_ac_c = .text:0x000004EC; // type:function size:0x20 scope:global -daObjTEN_Delete__FP10daObjTEN_c = .text:0x0000050C; // type:function size:0x24 scope:global +daObjTEN_Create__FP10fopAc_ac_c = .text:0x000004EC; // type:function size:0x20 scope:local +daObjTEN_Delete__FP10daObjTEN_c = .text:0x0000050C; // type:function size:0x24 scope:local WaitAction__10daObjTEN_cFv = .text:0x00000530; // type:function size:0x184 scope:global WallCheck__10daObjTEN_cFv = .text:0x000006B4; // type:function size:0x22C scope:global __dt__8cM3dGPlaFv = .text:0x000008E0; // type:function size:0x48 scope:global @@ -28,14 +28,14 @@ ObjHit__10daObjTEN_cFv = .text:0x000021E8; // type:function size:0x188 scope:glo Z_BufferChk__10daObjTEN_cFv = .text:0x00002370; // type:function size:0x17C scope:global Delete__10daObjTEN_cFv = .text:0x000024EC; // type:function size:0x68 scope:global setBaseMtx__10daObjTEN_cFv = .text:0x00002554; // type:function size:0x68 scope:global -daObjTEN_Draw__FP10daObjTEN_c = .text:0x000025BC; // type:function size:0xE0 scope:global -daObjTEN_Execute__FP10daObjTEN_c = .text:0x0000269C; // type:function size:0x20 scope:global +daObjTEN_Draw__FP10daObjTEN_c = .text:0x000025BC; // type:function size:0xE0 scope:local +daObjTEN_Execute__FP10daObjTEN_c = .text:0x0000269C; // type:function size:0x20 scope:local CreateChk__10daObjTEN_cFv = .text:0x000026BC; // type:function size:0x1AC scope:global create__10daObjTEN_cFv = .text:0x00002868; // type:function size:0x7F8 scope:global __dt__12dBgS_ObjAcchFv = .text:0x00003060; // type:function size:0x70 scope:global __dt__8cM3dGSphFv = .text:0x000030D0; // type:function size:0x48 scope:global __dt__8cM3dGAabFv = .text:0x00003118; // type:function size:0x48 scope:global -daObjTEN_IsDelete__FP10daObjTEN_c = .text:0x00003160; // type:function size:0x8 scope:global +daObjTEN_IsDelete__FP10daObjTEN_c = .text:0x00003160; // type:function size:0x8 scope:local __dt__14daObj_TenHIO_cFv = .text:0x00003168; // type:function size:0x48 scope:global __sinit_d_a_obj_ten_cpp = .text:0x000031B0; // type:function size:0x3C scope:local @36@__dt__12dBgS_ObjAcchFv = .text:0x000031EC; // type:function size:0x8 scope:local @@ -45,7 +45,7 @@ __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 sc _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local @3775 = .rodata:0x00000000; // type:object size:0x4 scope:local -l_ten_itemno = .rodata:0x00000004; // type:object size:0x2 scope:global +l_ten_itemno = .rodata:0x00000004; // type:object size:0x2 scope:local ccSphSrc$3779 = .rodata:0x00000008; // type:object size:0x40 scope:local @3788 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float @3939 = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float @@ -80,13 +80,13 @@ ccSphSrc$3779 = .rodata:0x00000008; // type:object size:0x40 scope:local @4675 = .rodata:0x000000D4; // type:object size:0x4 scope:local @4738 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float @4739 = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float -l_musiya_num = .rodata:0x000000E0; // type:object size:0x4 scope:global data:2byte +l_musiya_num = .rodata:0x000000E0; // type:object size:0x4 scope:local data:2byte @5101 = .rodata:0x000000E4; // type:object size:0x4 scope:local @5102 = .rodata:0x000000E8; // type:object size:0x4 scope:local @5103 = .rodata:0x000000EC; // type:object size:0x4 scope:local @5104 = .rodata:0x000000F0; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x000000F4; // type:object size:0xE scope:local data:string_table -l_daObjTEN_Method = .data:0x00000000; // type:object size:0x20 scope:global +l_daObjTEN_Method = .data:0x00000000; // type:object size:0x20 scope:local g_profile_Obj_Ten = .data:0x00000020; // type:object size:0x30 scope:global __vt__12dBgS_ObjAcch = .data:0x00000050; // type:object size:0x24 scope:global __vt__8cM3dGSph = .data:0x00000074; // type:object size:0xC scope:global @@ -96,6 +96,6 @@ __vt__8cM3dGPla = .data:0x00000098; // type:object size:0xC scope:global __vt__12J3DFrameCtrl = .data:0x000000A4; // type:object size:0xC scope:global __vt__14daObj_TenHIO_c = .data:0x000000B0; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_654_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte +data_80D0BAB8 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte @3770 = .bss:0x0000000C; // type:object size:0xC scope:local -l_HIO = .bss:0x00000018; // type:object size:0x10 scope:global data:float +l_HIO = .bss:0x00000018; // type:object size:0x10 scope:local data:float diff --git a/config/GZ2E01/rels/d_a_obj_timeFire/symbols.txt b/config/GZ2E01/rels/d_a_obj_timeFire/symbols.txt index 64fc4b6dfa8..2b618da022d 100644 --- a/config/GZ2E01/rels/d_a_obj_timeFire/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_timeFire/symbols.txt @@ -14,10 +14,10 @@ Execute__12daTimeFire_cFv = .text:0x00000388; // type:function size:0x1E0 scope: fireCheck__12daTimeFire_cFUc = .text:0x00000568; // type:function size:0x220 scope:global Draw__12daTimeFire_cFv = .text:0x00000788; // type:function size:0x8 scope:global Delete__12daTimeFire_cFv = .text:0x00000790; // type:function size:0x28 scope:global -daTimeFire_Draw__FP12daTimeFire_c = .text:0x000007B8; // type:function size:0x20 scope:global -daTimeFire_Execute__FP12daTimeFire_c = .text:0x000007D8; // type:function size:0x20 scope:global -daTimeFire_Delete__FP12daTimeFire_c = .text:0x000007F8; // type:function size:0x20 scope:global -daTimeFire_Create__FP10fopAc_ac_c = .text:0x00000818; // type:function size:0x20 scope:global +daTimeFire_Draw__FP12daTimeFire_c = .text:0x000007B8; // type:function size:0x20 scope:local +daTimeFire_Execute__FP12daTimeFire_c = .text:0x000007D8; // type:function size:0x20 scope:local +daTimeFire_Delete__FP12daTimeFire_c = .text:0x000007F8; // type:function size:0x20 scope:local +daTimeFire_Create__FP10fopAc_ac_c = .text:0x00000818; // type:function size:0x20 scope:local __dt__16daTimeFire_HIO_cFv = .text:0x00000838; // type:function size:0x5C scope:global __sinit_d_a_obj_timeFire_cpp = .text:0x00000894; // type:function size:0x3C scope:local _ctors = .ctors:0x00000000; // type:label scope:global @@ -29,10 +29,10 @@ _dtors = .dtors:0x00000000; // type:label scope:global @3707 = .rodata:0x00000010; // type:object size:0x4 scope:local @3708 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float @3757 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float -l_daTimeFire_Method = .data:0x00000000; // type:object size:0x20 scope:global +l_daTimeFire_Method = .data:0x00000000; // type:object size:0x20 scope:local g_profile_Obj_TimeFire = .data:0x00000020; // type:object size:0x30 scope:global __vt__16daTimeFire_HIO_c = .data:0x00000050; // type:object size:0xC scope:global __vt__14mDoHIO_entry_c = .data:0x0000005C; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3621 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0x8 scope:global +l_HIO = .bss:0x00000014; // type:object size:0x8 scope:local diff --git a/config/GZ2E01/rels/d_a_obj_toaru_maki/symbols.txt b/config/GZ2E01/rels/d_a_obj_toaru_maki/symbols.txt index 9915116d629..8bbd10add1d 100644 --- a/config/GZ2E01/rels/d_a_obj_toaru_maki/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_toaru_maki/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 -daObjToaruMaki_c_createHeap__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:global +daObjToaruMaki_c_createHeap__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:local __ct__16daObjToaruMaki_cFv = .text:0x00000098; // type:function size:0x48 scope:global __dt__16daObjToaruMaki_cFv = .text:0x000000E0; // type:function size:0x8C scope:global createHeap__16daObjToaruMaki_cFv = .text:0x0000016C; // type:function size:0x148 scope:global @@ -10,16 +10,16 @@ Delete__16daObjToaruMaki_cFv = .text:0x000003C0; // type:function size:0x7C scop setModelMtx__16daObjToaruMaki_cFv = .text:0x0000043C; // type:function size:0x64 scope:global draw__16daObjToaruMaki_cFv = .text:0x000004A0; // type:function size:0x84 scope:global data:4byte execute__16daObjToaruMaki_cFv = .text:0x00000524; // type:function size:0x24 scope:global -daObjToaruMaki_create__FP16daObjToaruMaki_c = .text:0x00000548; // type:function size:0x54 scope:global -daObjToaruMaki_Delete__FP16daObjToaruMaki_c = .text:0x0000059C; // type:function size:0x20 scope:global -daObjToaruMaki_execute__FP16daObjToaruMaki_c = .text:0x000005BC; // type:function size:0x20 scope:global -daObjToaruMaki_draw__FP16daObjToaruMaki_c = .text:0x000005DC; // type:function size:0x20 scope:global +daObjToaruMaki_create__FP16daObjToaruMaki_c = .text:0x00000548; // type:function size:0x54 scope:local +daObjToaruMaki_Delete__FP16daObjToaruMaki_c = .text:0x0000059C; // type:function size:0x20 scope:local +daObjToaruMaki_execute__FP16daObjToaruMaki_c = .text:0x000005BC; // type:function size:0x20 scope:local +daObjToaruMaki_draw__FP16daObjToaruMaki_c = .text:0x000005DC; // type:function size:0x20 scope:local _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global -l_bmdIdx = .rodata:0x00000000; // type:object size:0x8 scope:global -l_heapSize = .rodata:0x00000008; // type:object size:0x8 scope:global +l_bmdIdx = .rodata:0x00000000; // type:object size:0x8 scope:local +l_heapSize = .rodata:0x00000008; // type:object size:0x8 scope:local @stringBase0 = .rodata:0x00000010; // type:object size:0x10 scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x8 scope:global -daObjToaruMaki_METHODS = .data:0x00000008; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x8 scope:local +daObjToaruMaki_METHODS = .data:0x00000008; // type:object size:0x20 scope:local g_profile_Obj_ToaruMaki = .data:0x00000028; // type:object size:0x30 scope:global __vt__16daObjToaruMaki_c = .data:0x00000058; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index 6d4015b2e4f..79b7a1f99cb 100644 --- a/configure.py +++ b/configure.py @@ -1781,9 +1781,9 @@ config.libs = [ ActorRel(Matching, "d_a_obj_boumato"), ActorRel(NonMatching, "d_a_obj_brg"), ActorRel(Matching, "d_a_obj_bsGate"), - ActorRel(NonMatching, "d_a_obj_bubblePilar"), + ActorRel(Matching, "d_a_obj_bubblePilar"), ActorRel(Matching, "d_a_obj_catdoor"), - ActorRel(NonMatching, "d_a_obj_cb"), + ActorRel(Equivalent, "d_a_obj_cb"), ActorRel(NonMatching, "d_a_obj_cblock"), ActorRel(Matching, "d_a_obj_cdoor"), ActorRel(Matching, "d_a_obj_chandelier"), @@ -1822,7 +1822,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_gadget"), ActorRel(NonMatching, "d_a_obj_ganonwall"), ActorRel(NonMatching, "d_a_obj_ganonwall2"), - ActorRel(NonMatching, "d_a_obj_gb"), + ActorRel(Matching, "d_a_obj_gb"), ActorRel(NonMatching, "d_a_obj_geyser"), ActorRel(NonMatching, "d_a_obj_glowSphere"), ActorRel(NonMatching, "d_a_obj_gm"), @@ -2019,15 +2019,15 @@ config.libs = [ ActorRel(Matching, "d_a_obj_table"), ActorRel(NonMatching, "d_a_obj_takaraDai"), ActorRel(NonMatching, "d_a_obj_tatigi"), - ActorRel(NonMatching, "d_a_obj_ten"), + ActorRel(Matching, "d_a_obj_ten"), ActorRel(Matching, "d_a_obj_testcube"), ActorRel(Matching, "d_a_obj_tgake"), ActorRel(NonMatching, "d_a_obj_thashi"), ActorRel(NonMatching, "d_a_obj_thdoor"), - ActorRel(NonMatching, "d_a_obj_timeFire"), + ActorRel(Matching, "d_a_obj_timeFire"), ActorRel(NonMatching, "d_a_obj_tks"), ActorRel(Matching, "d_a_obj_tmoon"), - ActorRel(NonMatching, "d_a_obj_toaru_maki"), + ActorRel(Matching, "d_a_obj_toaru_maki"), ActorRel(NonMatching, "d_a_obj_toby"), ActorRel(NonMatching, "d_a_obj_tobyhouse"), ActorRel(NonMatching, "d_a_obj_togeTrap"), diff --git a/include/d/actor/d_a_obj_bubblePilar.h b/include/d/actor/d_a_obj_bubblePilar.h index acf20561961..5db9043d57e 100644 --- a/include/d/actor/d_a_obj_bubblePilar.h +++ b/include/d/actor/d_a_obj_bubblePilar.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_BUBBLEPILAR_H #define D_A_OBJ_BUBBLEPILAR_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,32 +13,58 @@ * @details * */ -class daBubbPilar_c : public fopAc_ac_c { +class daBubbPilar_c : public dBgS_MoveBgActor { public: + typedef void (daBubbPilar_c::*modeProc)(); + + enum Mode { + MODE_WAIT, + MODE_EFF_ON, + }; + /* 80BC3460 */ void setBaseMtx(); - /* 80BC3518 */ void CreateHeap(); - /* 80BC35D0 */ void create(); - /* 80BC3934 */ void Execute(f32 (**)[3][4]); + /* 80BC3518 */ int CreateHeap(); + /* 80BC35D0 */ int create(); + /* 80BC3934 */ int Execute(Mtx**); /* 80BC3AB8 */ void initModeWait(); /* 80BC3AC4 */ void modeWait(); /* 80BC3C74 */ void initModeEffOn(); /* 80BC3C98 */ void modeEffOn(); - /* 80BC3DB0 */ void Draw(); - /* 80BC3E8C */ void Delete(); + /* 80BC3DB0 */ int Draw(); + /* 80BC3E8C */ int Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; + u8 getArg0() { return fopAcM_GetParamBit(this, 8, 4); } + u8 getSw() { return fopAcM_GetParamBit(this, 0, 8); } + + static dCcD_SrcGObjInf const mCcDObjInfo; + static dCcD_SrcCyl mCcDCyl; private: - /* 0x568 */ u8 field_0x568[0x750 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mModels[2]; + /* 0x5B0 */ dCcD_Stts mStts; + /* 0x5EC */ dCcD_Cyl mCyl; + /* 0x728 */ u8 field_0x728; + /* 0x729 */ u8 mMode; + /* 0x72A */ u8 mSw; + /* 0x72B */ u8 mArg0; + /* 0x72C */ u8 mIsSw; + /* 0x72D */ u8 mModelMode; + /* 0x72E */ s16 field_0x72e; + /* 0x730 */ int mEmitterIds[3]; + /* 0x73C */ int mEmitterId; + /* 0x740 */ JPABaseEmitter* mEmitters[4]; }; STATIC_ASSERT(sizeof(daBubbPilar_c) == 0x750); -class daBubbPilar_HIO_c { +class daBubbPilar_HIO_c : public mDoHIO_entry_c { public: /* 80BC33EC */ daBubbPilar_HIO_c(); - /* 80BC3F90 */ ~daBubbPilar_HIO_c(); + /* 80BC3F90 */ virtual ~daBubbPilar_HIO_c() {}; + + u8 field_0x4; + u8 field_0x5; }; diff --git a/include/d/actor/d_a_obj_cb.h b/include/d/actor/d_a_obj_cb.h index 2732c674d8b..ab5e494601b 100644 --- a/include/d/actor/d_a_obj_cb.h +++ b/include/d/actor/d_a_obj_cb.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_CB_H #define D_A_OBJ_CB_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -12,8 +14,27 @@ * */ class obj_cb_class : public fopAc_ac_c { -private: - /* 0x568 */ u8 field_0x568[0x97c - 0x568]; +public: + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ J3DModel* mModel; + /* 0x574 */ Z2SoundObjSimple mSoundObj; + /* 0x594 */ s16 field_0x594; + /* 0x596 */ s16 field_0x596; + /* 0x598 */ s16 field_0x598[2]; + /* 0x59C */ s16 field_0x59c; + /* 0x59E */ s16 field_0x59e; + /* 0x5A0 */ csXyz field_0x5a0; + /* 0x5A8 */ f32 field_0x5a8; + /* 0x5AC */ dBgS_AcchCir mAcchCir; + /* 0x5EC */ dBgS_ObjAcch mAcch; + /* 0x7C4 */ int field_0x7c4; + /* 0x7C8 */ Mtx mBgMtx; + /* 0x7F8 */ dBgW* mBgW; + /* 0x7FC */ dCcD_Stts mStts; + /* 0x838 */ dCcD_Sph mSph; + /* 0x970 */ u32 field_0x970; + /* 0x974 */ u32 field_0x974; + /* 0x978 */ u8 field_0x978; }; STATIC_ASSERT(sizeof(obj_cb_class) == 0x97c); @@ -21,7 +42,9 @@ STATIC_ASSERT(sizeof(obj_cb_class) == 0x97c); class daObj_Cb_HIO_c { public: /* 80BC4B2C */ daObj_Cb_HIO_c(); - /* 80BC573C */ ~daObj_Cb_HIO_c(); + /* 80BC573C */ virtual ~daObj_Cb_HIO_c() {} + + s8 field_0x4; }; diff --git a/include/d/actor/d_a_obj_fchain.h b/include/d/actor/d_a_obj_fchain.h index 016c6c09385..05567d1a596 100644 --- a/include/d/actor/d_a_obj_fchain.h +++ b/include/d/actor/d_a_obj_fchain.h @@ -3,10 +3,10 @@ #include "f_op/f_op_actor_mng.h" -class daObjFchain_shape_c { +class daObjFchain_shape_c : public J3DPacket { public: - /* 80BE7194 */ void draw(); - /* 80BE73D4 */ ~daObjFchain_shape_c(); + /* 80BE7194 */ virtual void draw(); + /* 80BE73D4 */ virtual ~daObjFchain_shape_c() {} }; /** @@ -19,16 +19,29 @@ public: */ class daObjFchain_c : public fopAc_ac_c { public: - /* 80BE5FF8 */ void createHeap(); - /* 80BE6074 */ void create(); + /* 80BE5FF8 */ int createHeap(); + /* 80BE6074 */ int create(); /* 80BE63C8 */ ~daObjFchain_c(); /* 80BE64E0 */ void checkPlayerFoot(cXyz const*, cXyz const*, cXyz*); /* 80BE66B4 */ void setGroundVec(cXyz*, f32); - /* 80BE6868 */ void execute(); - /* 80BE7324 */ void draw(); + /* 80BE6868 */ int execute(); + /* 80BE7324 */ int draw(); + + cXyz* getPos() { return field_0x694; } + csXyz* getAngle() { return field_0x8a4; } + J3DModelData* getModelData() { return mModelData; } private: - /* 0x568 */ u8 field_0x568[0x928 - 0x568]; + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ J3DModelData* mModelData; + /* 0x574 */ daObjFchain_shape_c mShape; + /* 0x584 */ s16 field_0x584; + /* 0x586 */ u16 field_0x586; + /* 0x588 */ s16 field_0x588; + /* 0x58C */ cXyz field_0x58c[22]; + /* 0x694 */ cXyz field_0x694[22]; + /* 0x79C */ cXyz field_0x79c[22]; + /* 0x8A4 */ csXyz field_0x8a4[22]; }; STATIC_ASSERT(sizeof(daObjFchain_c) == 0x928); diff --git a/include/d/actor/d_a_obj_gb.h b/include/d/actor/d_a_obj_gb.h index d1e1f9968af..3f5a354f5ef 100644 --- a/include/d/actor/d_a_obj_gb.h +++ b/include/d/actor/d_a_obj_gb.h @@ -1,7 +1,10 @@ #ifndef D_A_OBJ_GB_H #define D_A_OBJ_GB_H -#include "f_op/f_op_actor_mng.h" +#include "SSystem/SComponent/c_phase.h" +#include "f_op/f_op_actor.h" + +class dBgW; /** * @ingroup actors-objects @@ -12,8 +15,23 @@ * */ class obj_gb_class : public fopAc_ac_c { -private: - /* 0x568 */ u8 field_0x568[0x6bc - 0x568]; +public: + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ J3DModel* mModel; + /* 0x574 */ mDoExt_btkAnm* mBtk; + /* 0x578 */ mDoExt_brkAnm* mBrk; + /* 0x57C */ u8 field_0x57c; + /* 0x57D */ u8 mColorAlpha; + /* 0x580 */ int mSw1; + /* 0x584 */ int mSw2; + /* 0x588 */ s16 mIsFinalBattle; + /* 0x58A */ s16 field_0x58a[2]; + /* 0x58E */ s16 field_0x58e; + /* 0x58E */ f32 mBrkFrame; + /* 0x594 */ cXyz field_0x594[20]; + /* 0x684 */ f32 field_0x684; + /* 0x688 */ Mtx mBgMtx; + /* 0x6B8 */ dBgW* mpBgW; }; STATIC_ASSERT(sizeof(obj_gb_class) == 0x6bc); diff --git a/include/d/actor/d_a_obj_ten.h b/include/d/actor/d_a_obj_ten.h index 5b8d704f5f3..616a0a9fc52 100644 --- a/include/d/actor/d_a_obj_ten.h +++ b/include/d/actor/d_a_obj_ten.h @@ -1,6 +1,10 @@ #ifndef D_A_OBJ_TEN_H #define D_A_OBJ_TEN_H +#include "d/actor/d_a_player.h" +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_gnd_chk.h" +#include "d/d_cc_d.h" #include "d/d_insect.h" /** @@ -11,12 +15,18 @@ * @details * */ -class daObjTEN_c : public fopAc_ac_c { +class daObjTEN_c : public dInsect_c { public: + enum Action { + ACTION_WAIT, + ACTION_MOVE, + ACTION_WALK, + }; + /* 80D087F4 */ void InitCcSph(); /* 80D08860 */ void SetCcSph(); /* 80D08C10 */ void WaitAction(); - /* 80D08D94 */ void WallCheck(); + /* 80D08D94 */ BOOL WallCheck(); /* 80D09008 */ void SpeedSet(); /* 80D09114 */ void WallWalk(); /* 80D09548 */ void WalkAction(); @@ -24,19 +34,48 @@ public: /* 80D09F58 */ void Action(); /* 80D0A01C */ void ShopAction(); /* 80D0A0D8 */ void checkGroundPos(); - /* 80D0A13C */ void Insect_Release(); + /* 80D0A13C */ virtual void Insect_Release(); /* 80D0A154 */ void ParticleSet(); /* 80D0A278 */ void BoomChk(); - /* 80D0A644 */ void Execute(); + /* 80D0A644 */ int Execute(); /* 80D0A8C8 */ void ObjHit(); /* 80D0AA50 */ void Z_BufferChk(); - /* 80D0ABCC */ void Delete(); + /* 80D0ABCC */ int Delete(); /* 80D0AC34 */ void setBaseMtx(); - /* 80D0AD9C */ void CreateChk(); - /* 80D0AF48 */ void create(); + /* 80D0AD9C */ bool CreateChk(); + /* 80D0AF48 */ int create(); -private: - /* 0x568 */ u8 field_0x568[0xa68 - 0x568]; + /* 0x590 */ dBgS_GndChk mGndChk; + /* 0x5E4 */ f32 field_0x5e4; + /* 0x5E8 */ u8 mAction; + /* 0x5E9 */ u8 field_0x5e9; + /* 0x5EA */ s16 field_0x5ea[3]; + /* 0x5F0 */ f32 field_0x5f0; + /* 0x5F4 */ f32 field_0x5f4; + /* 0x5F8 */ s16 field_0x5f8; + /* 0x5EC */ u8 field_0x5fa[0x602 - 0x5fa]; + /* 0x602 */ csXyz field_0x602; + /* 0x608 */ s16 field_0x608; + /* 0x60A */ s16 field_0x60a; + /* 0x60C */ u8 field_0x60c; + /* 0x60D */ u8 field_0x60d; + /* 0x610 */ mDoExt_brkAnm* mBrk; + /* 0x614 */ mDoExt_btkAnm* mBtk; + /* 0x618 */ f32 field_0x618; + /* 0x61C */ u32 field_0x61c; + /* 0x620 */ f32 mParticleScale; + /* 0x624 */ u8 field_0x624; + /* 0x628 */ dCcD_Stts mStts; + /* 0x664 */ dCcD_Sph mSph; + /* 0x79C */ daPy_boomerangMove_c mBoomerang; + /* 0x7A8 */ u8 field_0x7a8; + /* 0x7AC */ dBgS_ObjAcch mAcch; + /* 0x984 */ dBgS_AcchCir mAcchCir; + /* 0x9C4 */ Z2Creature mCreature; + /* 0xA54 */ int field_0xa54; + /* 0xA58 */ mDoExt_McaMorfSO* mMorf; + /* 0xA5C */ request_of_phase_process_class mPhase; + /* 0xA64 */ u8 field_0xa64; }; STATIC_ASSERT(sizeof(daObjTEN_c) == 0xa68); @@ -44,7 +83,11 @@ STATIC_ASSERT(sizeof(daObjTEN_c) == 0xa68); class daObj_TenHIO_c { public: /* 80D087CC */ daObj_TenHIO_c(); - /* 80D0B848 */ ~daObj_TenHIO_c(); + /* 80D0B848 */ virtual ~daObj_TenHIO_c() {} + + s8 field_0x4; + f32 field_0x8; + f32 field_0xc; }; diff --git a/include/d/actor/d_a_obj_timeFire.h b/include/d/actor/d_a_obj_timeFire.h index a39026b0d04..25c3f4d4912 100644 --- a/include/d/actor/d_a_obj_timeFire.h +++ b/include/d/actor/d_a_obj_timeFire.h @@ -14,25 +14,44 @@ class daTimeFire_c : public fopAc_ac_c { public: /* 80D0E958 */ void setBaseMtx(); - /* 80D0E9B0 */ void create(); + /* 80D0E9B0 */ int create(); /* 80D0EACC */ void lightInit(); /* 80D0EB40 */ void setLight(); /* 80D0EB64 */ void cutLight(); - /* 80D0EB88 */ void Execute(); - /* 80D0ED68 */ void fireCheck(u8); - /* 80D0EF88 */ bool Draw(); - /* 80D0EF90 */ void Delete(); + /* 80D0EB88 */ int Execute(); + /* 80D0ED68 */ bool fireCheck(u8); + /* 80D0EF88 */ int Draw(); + /* 80D0EF90 */ int Delete(); + + int getSw() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getStartTime() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getEndTime() { return fopAcM_GetParamBit(this, 16, 8); } + u8 getScale() { return fopAcM_GetParamBit(this, 24, 8); } private: - /* 0x568 */ u8 field_0x568[0x5c0 - 0x568]; + /* 0x568 */ u8 field_0x568; + /* 0x569 */ u8 field_0x569; + /* 0x56A */ u8 mStartTime; + /* 0x56B */ u8 mEndTime; + /* 0x56C */ bool field_0x56c; + /* 0x56D */ bool field_0x56d; + /* 0x570 */ cXyz field_0x570; + /* 0x57C */ cXyz mParticleScale; + /* 0x588 */ int mParticleId1; + /* 0x58c */ int mParticleId2; + /* 0x590 */ int mParticleId3; + /* 0x594 */ cXyz field_0x594; + /* 0x5A0 */ LIGHT_INFLUENCE mLightInfluence; }; STATIC_ASSERT(sizeof(daTimeFire_c) == 0x5c0); -class daTimeFire_HIO_c { +class daTimeFire_HIO_c : public mDoHIO_entry_c { public: /* 80D0E8EC */ daTimeFire_HIO_c(); - /* 80D0F038 */ ~daTimeFire_HIO_c(); + /* 80D0F038 */ virtual ~daTimeFire_HIO_c() {} + + u8 field_0x4; }; diff --git a/include/d/actor/d_a_obj_toaru_maki.h b/include/d/actor/d_a_obj_toaru_maki.h index 1625eabc305..32b1183065d 100644 --- a/include/d/actor/d_a_obj_toaru_maki.h +++ b/include/d/actor/d_a_obj_toaru_maki.h @@ -27,7 +27,7 @@ public: private: /* 0x574 */ J3DModel* mpModel; - /* 0x578 */ s32 field_0x578; + /* 0x578 */ dBgW* mpBgW; /* 0x57C */ Mtx mMtx; }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index cc948dc7a81..cf3e5484e54 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -463,7 +463,7 @@ public: ERFLG0_UNK_80000000 = 0x80000000, ERFLG0_UNK_40000000 = 0x40000000, ERFLG0_UNK_20000000 = 0x20000000, - ERFLG0_UNK_10000000 = 0x10000000, + ERFLG0_WOLF_FCHAIN_PULL = 0x10000000, ERFLG0_UNK_8000000 = 0x8000000, ERFLG0_UNK_4000000 = 0x4000000, ERFLG0_BOSS_ROOM_WAIT = 0x2000000, @@ -920,6 +920,7 @@ public: void onForceAutoJump() { onEndResetFlg0(ERFLG0_FORCE_AUTO_JUMP); } void onNotAutoJump() { onEndResetFlg0(ERFLG0_NOT_AUTO_JUMP); } void onNotHang() { onEndResetFlg0(ERFLG0_NOT_HANG); } + void onWolfFchainPull() { onEndResetFlg0(ERFLG0_WOLF_FCHAIN_PULL); } void onShieldBackBone() { onEndResetFlg1(ERFLG1_GANON_FINISH); } void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); } void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); } diff --git a/include/d/d_insect.h b/include/d/d_insect.h index 57256b6e962..8d2b109cdb2 100644 --- a/include/d/d_insect.h +++ b/include/d/d_insect.h @@ -26,7 +26,7 @@ public: void setItemNo(u8 i_itemNo) { m_itemNo = i_itemNo; } void setSaveBitNo(s16 i_saveBitNo) { m_saveBitNo = i_saveBitNo; } -protected: +public: /* 0x56C */ u8 field_0x56C; /* 0x56D */ bool mDraw; /* 0x570 */ u32 mParticleKey1; diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 207c76cd6b1..a244aa314ff 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -14274,7 +14274,7 @@ void daAlink_c::posMove() { } setFootSpeed(); - if (checkEndResetFlg0(ERFLG0_UNK_10000000)) { + if (checkEndResetFlg0(ERFLG0_WOLF_FCHAIN_PULL)) { speedF = 0.0f; mNormalSpeed = 0.0f; } diff --git a/src/d/actor/d_a_obj_bubblePilar.cpp b/src/d/actor/d_a_obj_bubblePilar.cpp index 6ac330aa5bf..13335175658 100644 --- a/src/d/actor/d_a_obj_bubblePilar.cpp +++ b/src/d/actor/d_a_obj_bubblePilar.cpp @@ -4,116 +4,18 @@ */ #include "d/actor/d_a_obj_bubblePilar.h" -#include "dol2asm.h" +#include "d/d_com_inf_game.h" +#include "d/d_bg_w.h" - - -// -// Forward References: -// - -extern "C" void __ct__17daBubbPilar_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__13daBubbPilar_cFv(); -extern "C" void CreateHeap__13daBubbPilar_cFv(); -extern "C" void create__13daBubbPilar_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void Execute__13daBubbPilar_cFPPA3_A4_f(); -extern "C" void initModeWait__13daBubbPilar_cFv(); -extern "C" void modeWait__13daBubbPilar_cFv(); -extern "C" void initModeEffOn__13daBubbPilar_cFv(); -extern "C" void modeEffOn__13daBubbPilar_cFv(); -extern "C" void Draw__13daBubbPilar_cFv(); -extern "C" void Delete__13daBubbPilar_cFv(); -extern "C" static void daBubbPilar_Draw__FP13daBubbPilar_c(); -extern "C" static void daBubbPilar_Execute__FP13daBubbPilar_c(); -extern "C" static void daBubbPilar_Delete__FP13daBubbPilar_c(); -extern "C" static void daBubbPilar_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__17daBubbPilar_HIO_cFv(); -extern "C" void __sinit_d_a_obj_bubblePilar_cpp(); -extern "C" u8 const mCcDObjInfo__13daBubbPilar_c[48]; -extern "C" extern char const* const d_a_obj_bubblePilar__stringBase0; -extern "C" u8 mCcDCyl__13daBubbPilar_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void __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_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 dKy_camera_water_in_status_check__Fv(); -extern "C" void dKy_bg_MAxx_proc__FPv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80BC40BC-80BC40C8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80BC40C8-80BC40DC 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 */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -123,51 +25,242 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { }; #pragma pop +/* 80BC4224-80BC422C 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ +static daBubbPilar_HIO_c l_HIO; + +/* 80BC4070-80BC40A0 000000 0030+00 3/3 0/0 0/0 .rodata mCcDObjInfo__13daBubbPilar_c */ +const dCcD_SrcGObjInf daBubbPilar_c::mCcDObjInfo = { + {0, {{0, 0, 0}, {0x20, 0x11}, {0}}}, + {dCcD_SE_NONE, 0, 1, 0, 0}, + {dCcD_SE_NONE, 0, 0, 0, 2}, + {0}, +}; + /* 80BC40DC-80BC4120 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__13daBubbPilar_c */ -SECTION_DATA u8 daBubbPilar_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcCyl daBubbPilar_c::mCcDCyl = { + daBubbPilar_c::mCcDObjInfo, + {{0.0f, 0.0f, 0.0f}, 0.0f, 0.0f} }; -/* 80BC4120-80BC412C -00001 000C+00 0/1 0/0 0/0 .data @3843 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3843[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__13daBubbPilar_cFv, -}; -#pragma pop +/* 80BC33EC-80BC3418 0000EC 002C+00 1/1 0/0 0/0 .text __ct__17daBubbPilar_HIO_cFv */ +daBubbPilar_HIO_c::daBubbPilar_HIO_c() { + field_0x4 = 20; + field_0x5 = 0; +} -/* 80BC412C-80BC4138 -00001 000C+00 0/1 0/0 0/0 .data @3844 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3844[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeEffOn__13daBubbPilar_cFv, -}; -#pragma pop +/* 80BC3460-80BC3518 000160 00B8+00 2/2 0/0 0/0 .text setBaseMtx__13daBubbPilar_cFv */ +void daBubbPilar_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); + mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); + cXyz baseScale(1.0f, 1.0f, 1.0f); + mModels[mModelMode]->setBaseScale(baseScale); + mModels[mModelMode]->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 80BC4138-80BC4150 00007C 0018+00 0/1 0/0 0/0 .data mode_proc$3842 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 80BC3518-80BC35D0 000218 00B8+00 1/0 0/0 0/0 .text CreateHeap__13daBubbPilar_cFv */ +int daBubbPilar_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("M_Crack", 4); + JUT_ASSERT(226, modelData != 0); + mModels[MODE_WAIT] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mModels[MODE_WAIT] == NULL) { + return 0; + } + modelData = (J3DModelData*)dComIfG_getObjectRes("M_Crack", 5); + JUT_ASSERT(237, modelData != 0); + mModels[MODE_EFF_ON] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mModels[MODE_EFF_ON] == NULL) { + return 0; + } + return 1; +} + +/* 80BC35D0-80BC3848 0002D0 0278+00 1/1 0/0 0/0 .text create__13daBubbPilar_cFv */ +int daBubbPilar_c::create() { + fopAcM_SetupActor(this, daBubbPilar_c); + int rv = dComIfG_resLoad(&mPhase, "M_Crack"); + switch (rv) { + case cPhs_COMPLEATE_e: + if (MoveBGCreate("M_Crack", 8, dBgS_MoveBGProc_Typical, 0x1900, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + mStts.Init(200, 0xff, this); + mCyl.Set(mCcDCyl); + mCyl.SetStts(&mStts); + mArg0 = getArg0(); + mSw = getSw(); + if (mArg0 != 0) { + if (mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + mCyl.OffTgSetBit(); + } + if (mSw == 0xff) { + initModeEffOn(); + mModelMode = MODE_EFF_ON; + } else { + mIsSw = fopAcM_isSwitch(this, mSw); + if (mIsSw != 0) { + initModeEffOn(); + mModelMode = MODE_EFF_ON; + } else { + initModeWait(); + mModelMode = MODE_WAIT; + } + } + fopAcM_SetMtx(this, mModels[mModelMode]->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mModels[mModelMode]->getModelData()); + setBaseMtx(); + for (int i = 0; i < 4; i++) { + mEmitters[i] = NULL; + } + rv = cPhs_COMPLEATE_e; + break; + } + return rv; +} + +/* 80BC3934-80BC3AB8 000634 0184+00 1/0 0/0 0/0 .text Execute__13daBubbPilar_cFPPA3_A4_f + */ +int daBubbPilar_c::Execute(Mtx** param_1) { + static daBubbPilar_c::modeProc const mode_proc[2] = { + &daBubbPilar_c::modeWait, + &daBubbPilar_c::modeEffOn, + }; + if (mSw != 0xff) { + u8 prevIsSw = mIsSw; + mIsSw = fopAcM_isSwitch(this, mSw); + if (prevIsSw != mIsSw) { + if (mIsSw != 0) { + initModeEffOn(); + } else { + initModeWait(); + } + } + } + (this->*(mode_proc[mMode]))(); + if (dKy_camera_water_in_status_check()) { + for (int i = 0; i < 4; i++) { + if (mEmitters[i] != NULL) { + mEmitters[i]->setGlobalAlpha(0xff); + } + } + } else { + for (int i = 0; i < 4; i++) { + if (mEmitters[i] != NULL) { + mEmitters[i]->setGlobalAlpha(0x20); + } + } + } + *param_1 = &mModels[mModelMode]->getBaseTRMtx(); + setBaseMtx(); + return 1; +} + +/* 80BC3AB8-80BC3AC4 0007B8 000C+00 2/2 0/0 0/0 .text initModeWait__13daBubbPilar_cFv */ +void daBubbPilar_c::initModeWait() { + mMode = 0; +} + +/* 80BC3AC4-80BC3C74 0007C4 01B0+00 1/0 0/0 0/0 .text modeWait__13daBubbPilar_cFv */ +void daBubbPilar_c::modeWait() { + if (mArg0 == 0) { + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mDoAud_seStartLevel(Z2SE_OBJ_WTR_STREAM_S, ¤t.pos, 0, reverb); + mEmitterId = dComIfGp_particle_set(mEmitterId, 0x88bd, ¤t.pos, &shape_angle, &scale); + mEmitters[3] = (JPABaseEmitter*)dComIfGp_particle_getEmitter(mEmitterId); + if (mCyl.ChkTgHit()) { + if ((mCyl.GetTgHitGObj()->GetAtType() & AT_TYPE_BOMB) != 0) { + mModelMode = MODE_EFF_ON; + fopAcM_SetMtx(this, mModels[mModelMode]->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mModels[mModelMode]->getModelData()); + fopAcM_onSwitch(this, mSw); + } + } + mCyl.SetR(100.0f); + mCyl.SetH(100.0f); + mCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCyl); + } +} + +/* 80BC3C74-80BC3C98 000974 0024+00 2/2 0/0 0/0 .text initModeEffOn__13daBubbPilar_cFv */ +void daBubbPilar_c::initModeEffOn() { + if (mArg0 == 0) { + mCyl.OffTgSetBit(); + } + mMode = 1; +} + +/* 80BC40AC-80BC40B4 00003C 0006+02 0/1 0/0 0/0 .rodata particle_id$3953 */ +static u16 const particle_id[3] = { + 0x88BE, + 0x88BF, + 0x88C0, }; -#pragma pop + +/* 80BC3C98-80BC3DB0 000998 0118+00 1/0 0/0 0/0 .text modeEffOn__13daBubbPilar_cFv */ +void daBubbPilar_c::modeEffOn() { + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mDoAud_seStartLevel(Z2SE_OBJ_WTR_STREAM, ¤t.pos, 0, reverb); + for (int i = 0; i < 3; i = i + 1) { + mEmitterIds[i] = dComIfGp_particle_set( + mEmitterIds[i], + particle_id[i], + ¤t.pos, &shape_angle, + &scale); + mEmitters[i] = dComIfGp_particle_getEmitter(mEmitterIds[i]); + } +} + +/* 80BC3DB0-80BC3E8C 000AB0 00DC+00 1/0 0/0 0/0 .text Draw__13daBubbPilar_cFv */ +int daBubbPilar_c::Draw() { + if (mArg0 == 0) { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModels[mModelMode], &tevStr); + dKy_bg_MAxx_proc(mModels[mModelMode]); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mModels[mModelMode]); + dComIfGd_setList(); + } + return 1; +} + +/* 80BC3E8C-80BC3EBC 000B8C 0030+00 1/0 0/0 0/0 .text Delete__13daBubbPilar_cFv */ +int daBubbPilar_c::Delete() { + dComIfG_resDelete(&mPhase, "M_Crack"); + return 1; +} + +/* 80BC3EBC-80BC3EE8 000BBC 002C+00 1/0 0/0 0/0 .text daBubbPilar_Draw__FP13daBubbPilar_c + */ +static int daBubbPilar_Draw(daBubbPilar_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80BC3EE8-80BC3F08 000BE8 0020+00 1/0 0/0 0/0 .text daBubbPilar_Execute__FP13daBubbPilar_c */ +static int daBubbPilar_Execute(daBubbPilar_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80BC3F08-80BC3F28 000C08 0020+00 1/0 0/0 0/0 .text daBubbPilar_Delete__FP13daBubbPilar_c */ +static int daBubbPilar_Delete(daBubbPilar_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80BC3F28-80BC3F48 000C28 0020+00 1/0 0/0 0/0 .text daBubbPilar_Create__FP10fopAc_ac_c + */ +static int daBubbPilar_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} /* 80BC4150-80BC4170 -00001 0020+00 1/0 0/0 0/0 .data l_daBubbPilar_Method */ static actor_method_class l_daBubbPilar_Method = { - (process_method_func)daBubbPilar_Create__FP10fopAc_ac_c, - (process_method_func)daBubbPilar_Delete__FP13daBubbPilar_c, - (process_method_func)daBubbPilar_Execute__FP13daBubbPilar_c, - 0, - (process_method_func)daBubbPilar_Draw__FP13daBubbPilar_c, + (process_method_func)daBubbPilar_Create, + (process_method_func)daBubbPilar_Delete, + (process_method_func)daBubbPilar_Execute, + NULL, + (process_method_func)daBubbPilar_Draw, }; /* 80BC4170-80BC41A0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_awaPlar */ @@ -188,246 +281,4 @@ extern actor_process_profile_definition g_profile_Obj_awaPlar = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80BC41A0-80BC41AC 0000E4 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, -}; - -/* 80BC41AC-80BC41B8 0000F0 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, -}; - -/* 80BC41B8-80BC41C4 0000FC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80BC41C4-80BC41D0 000108 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, -}; - -/* 80BC41D0-80BC41F8 000114 0028+00 1/1 0/0 0/0 .data __vt__13daBubbPilar_c */ -SECTION_DATA extern void* __vt__13daBubbPilar_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daBubbPilar_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__13daBubbPilar_cFPPA3_A4_f, - (void*)Draw__13daBubbPilar_cFv, - (void*)Delete__13daBubbPilar_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80BC41F8-80BC4204 00013C 000C+00 2/2 0/0 0/0 .data __vt__17daBubbPilar_HIO_c */ -SECTION_DATA extern void* __vt__17daBubbPilar_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daBubbPilar_HIO_cFv, -}; - -/* 80BC4204-80BC4210 000148 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, -}; - -/* 80BC33EC-80BC3418 0000EC 002C+00 1/1 0/0 0/0 .text __ct__17daBubbPilar_HIO_cFv */ -daBubbPilar_HIO_c::daBubbPilar_HIO_c() { - // NONMATCHING -} - -/* 80BC3418-80BC3460 000118 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 -} - -/* ############################################################################################## */ -/* 80BC4070-80BC40A0 000000 0030+00 3/3 0/0 0/0 .rodata mCcDObjInfo__13daBubbPilar_c */ -SECTION_RODATA u8 const daBubbPilar_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BC4070, &daBubbPilar_c::mCcDObjInfo); - -/* 80BC40A0-80BC40A4 000030 0004+00 1/3 0/0 0/0 .rodata @3654 */ -SECTION_RODATA static f32 const lit_3654 = 1.0f; -COMPILER_STRIP_GATE(0x80BC40A0, &lit_3654); - -/* 80BC3460-80BC3518 000160 00B8+00 2/2 0/0 0/0 .text setBaseMtx__13daBubbPilar_cFv */ -void daBubbPilar_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC40B4-80BC40B4 000044 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BC40B4 = "M_Crack"; -#pragma pop - -/* 80BC3518-80BC35D0 000218 00B8+00 1/0 0/0 0/0 .text CreateHeap__13daBubbPilar_cFv */ -void daBubbPilar_c::CreateHeap() { - // NONMATCHING -} - -/* 80BC35D0-80BC3848 0002D0 0278+00 1/1 0/0 0/0 .text create__13daBubbPilar_cFv */ -void daBubbPilar_c::create() { - // NONMATCHING -} - -/* 80BC3848-80BC3890 000548 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80BC3890-80BC38D8 000590 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80BC38D8-80BC3934 0005D8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC4218-80BC4224 000008 000C+00 1/1 0/0 0/0 .bss @3623 */ -static u8 lit_3623[12]; - -/* 80BC4224-80BC422C 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[8]; - -/* 80BC422C-80BC4230 00001C 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80BC422C[4]; - -/* 80BC3934-80BC3AB8 000634 0184+00 1/0 0/0 0/0 .text Execute__13daBubbPilar_cFPPA3_A4_f - */ -void daBubbPilar_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* 80BC3AB8-80BC3AC4 0007B8 000C+00 2/2 0/0 0/0 .text initModeWait__13daBubbPilar_cFv */ -void daBubbPilar_c::initModeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC40A4-80BC40A8 000034 0004+00 0/2 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = -1.0f; -COMPILER_STRIP_GATE(0x80BC40A4, &lit_3939); -#pragma pop - -/* 80BC40A8-80BC40AC 000038 0004+00 0/1 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3940 = 100.0f; -COMPILER_STRIP_GATE(0x80BC40A8, &lit_3940); -#pragma pop - -/* 80BC3AC4-80BC3C74 0007C4 01B0+00 1/0 0/0 0/0 .text modeWait__13daBubbPilar_cFv */ -void daBubbPilar_c::modeWait() { - // NONMATCHING -} - -/* 80BC3C74-80BC3C98 000974 0024+00 2/2 0/0 0/0 .text initModeEffOn__13daBubbPilar_cFv */ -void daBubbPilar_c::initModeEffOn() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC40AC-80BC40B4 00003C 0006+02 0/1 0/0 0/0 .rodata particle_id$3953 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const particle_id[6 + 2 /* padding */] = { - 0x88, - 0xBE, - 0x88, - 0xBF, - 0x88, - 0xC0, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BC40AC, &particle_id); -#pragma pop - -/* 80BC3C98-80BC3DB0 000998 0118+00 1/0 0/0 0/0 .text modeEffOn__13daBubbPilar_cFv */ -void daBubbPilar_c::modeEffOn() { - // NONMATCHING -} - -/* 80BC3DB0-80BC3E8C 000AB0 00DC+00 1/0 0/0 0/0 .text Draw__13daBubbPilar_cFv */ -void daBubbPilar_c::Draw() { - // NONMATCHING -} - -/* 80BC3E8C-80BC3EBC 000B8C 0030+00 1/0 0/0 0/0 .text Delete__13daBubbPilar_cFv */ -void daBubbPilar_c::Delete() { - // NONMATCHING -} - -/* 80BC3EBC-80BC3EE8 000BBC 002C+00 1/0 0/0 0/0 .text daBubbPilar_Draw__FP13daBubbPilar_c - */ -static void daBubbPilar_Draw(daBubbPilar_c* param_0) { - // NONMATCHING -} - -/* 80BC3EE8-80BC3F08 000BE8 0020+00 1/0 0/0 0/0 .text daBubbPilar_Execute__FP13daBubbPilar_c */ -static void daBubbPilar_Execute(daBubbPilar_c* param_0) { - // NONMATCHING -} - -/* 80BC3F08-80BC3F28 000C08 0020+00 1/0 0/0 0/0 .text daBubbPilar_Delete__FP13daBubbPilar_c */ -static void daBubbPilar_Delete(daBubbPilar_c* param_0) { - // NONMATCHING -} - -/* 80BC3F28-80BC3F48 000C28 0020+00 1/0 0/0 0/0 .text daBubbPilar_Create__FP10fopAc_ac_c - */ -static void daBubbPilar_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BC3F48-80BC3F90 000C48 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80BC3F90-80BC3FEC 000C90 005C+00 2/1 0/0 0/0 .text __dt__17daBubbPilar_HIO_cFv */ -daBubbPilar_HIO_c::~daBubbPilar_HIO_c() { - // NONMATCHING -} - -/* 80BC3FEC-80BC405C 000CEC 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_bubblePilar_cpp */ -void __sinit_d_a_obj_bubblePilar_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80BC3FEC, __sinit_d_a_obj_bubblePilar_cpp); -#pragma pop - /* 80BC40B4-80BC40B4 000044 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_cb.cpp b/src/d/actor/d_a_obj_cb.cpp index 202bfdf5375..cc0b52656bc 100644 --- a/src/d/actor/d_a_obj_cb.cpp +++ b/src/d/actor/d_a_obj_cb.cpp @@ -4,105 +4,248 @@ */ #include "d/actor/d_a_obj_cb.h" -#include "dol2asm.h" +#include "SSystem/SComponent/c_lib.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_com_inf_game.h" +#include "d/d_bg_w.h" +/* 80BC4B2C-80BC4B44 0000EC 0018+00 1/1 0/0 0/0 .text __ct__14daObj_Cb_HIO_cFv */ +daObj_Cb_HIO_c::daObj_Cb_HIO_c() { + field_0x4 = -1; +} +/* 80BC4B44-80BC4BA8 000104 0064+00 1/0 0/0 0/0 .text daObj_Cb_Draw__FP12obj_cb_class */ +static int daObj_Cb_Draw(obj_cb_class* i_this) { + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(i_this->mModel, &i_this->tevStr); + mDoExt_modelUpdateDL(i_this->mModel); + return 1; +} -// -// Forward References: -// +/* 80BC4BA8-80BC4BB4 000168 000C+00 1/1 0/0 0/0 .text + * ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +static void ride_call_back(dBgW* param_0, fopAc_ac_c* i_this, fopAc_ac_c* param_2) { + static_cast(i_this)->field_0x59c = 3; +} -extern "C" void __ct__14daObj_Cb_HIO_cFv(); -extern "C" static void daObj_Cb_Draw__FP12obj_cb_class(); -extern "C" static void ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" static void action__FP12obj_cb_class(); -extern "C" static void daObj_Cb_Execute__FP12obj_cb_class(); -extern "C" static bool daObj_Cb_IsDelete__FP12obj_cb_class(); -extern "C" static void daObj_Cb_Delete__FP12obj_cb_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daObj_Cb_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__14daObj_Cb_HIO_cFv(); -extern "C" void __sinit_d_a_obj_cb_cpp(); -extern "C" static void func_80BC57C0(); -extern "C" static void func_80BC57C8(); -extern "C" extern char const* const d_a_obj_cb__stringBase0; +/* 80BC4BB4-80BC51B8 000174 0604+00 1/1 0/0 0/0 .text action__FP12obj_cb_class */ +// NONMATCHING - i_this regalloc. Assigning i_this to a variable with a conversion +// fixes the regalloc but the assignment is in wrong place +static void action(obj_cb_class* i_this) { + cXyz local_60; + int local_78 = 0; + switch(i_this->field_0x596) { + case 0: + if (i_this->field_0x59c != 0) { + i_this->field_0x59c--; + i_this->field_0x59e++; + f32 dist = (i_this->home.pos - i_this->current.pos).abs(); + if ((i_this->field_0x59e & 4) != 0) { + local_78 = 0x100; + } else { + local_78 = -0x100; + } + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); + local_60.x = 0.0f; + local_60.y = 0.0f; + local_60.z = i_this->speedF; + MtxPosition(&local_60, &i_this->speed); + i_this->current.pos += i_this->speed; + if (dist > 30.0f) { + cLib_addCalcAngleS2(&i_this->shape_angle.x, 0x2000, 2, 0x200); + } + cLib_addCalc2(&i_this->speedF, 5.0f, 1.0f, 0.5f); + if (dist > 60.0f) { + i_this->field_0x596 = 10; + local_60.x = 0.0f; + local_60.y = 0.0f; + local_60.z = 5.0f; + MtxPosition(&local_60, &i_this->speed); + i_this->field_0x5a0.x = 0x900; + dComIfG_Bgsp().Release(i_this->mBgW); + i_this->mBgW = 0; + Z2GetAudioMgr()->seStart(Z2SE_OBJ_CTL_ROCK_FALL, &i_this->current.pos, 0, 0, 1.0f, + 1.0f, -1.0f, -1.0f, 0); + } + } else { + i_this->field_0x59e = 0; + cLib_addCalcAngleS2(&i_this->shape_angle.x, 0, 1, 0x1000); + } + break; + case 5: + if (fopAcM_searchPlayerDistanceXZ(i_this) < 90.0f) { + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); + i_this->field_0x596 = 10; + local_60.x = 0.0; + local_60.y = 0.0; + local_60.z = 20.0f; + MtxPosition(&local_60, &i_this->speed); + i_this->field_0x5a0.x = 0x900; + i_this->field_0x598[0] = 20; + Z2GetAudioMgr()->seStart(Z2SE_OBJ_CTL_ROCK_FALL, &i_this->current.pos, 0, 0, 1.0f, 1.0f, + -1.0f, -1.0f, 0); + } + break; + case 10: + i_this->current.pos += i_this->speed; + i_this->speed.y += -5.0f; + i_this->shape_angle.x += i_this->field_0x5a0.x; + i_this->shape_angle.y += i_this->field_0x5a0.y; + f32 speedY = i_this->speed.y; + i_this->mAcch.CrrPos(dComIfG_Bgsp()); + if (i_this->field_0x598[0] == 0 && i_this->mAcch.ChkGroundHit()) { + if (speedY <= -30.0f) { + i_this->field_0x5a0.y = cM_rndFX(5000.0f); + i_this->field_0x5a0.x = cM_rndFX(5000.0f); + cMtx_YrotS(*calc_mtx, i_this->current.angle.y + (s16)cM_rndFX(7000.0f)); + local_60.x = 0.0f; + local_60.y = 0.0f; + local_60.z = 15.0f + cM_rndF(10.0f); + MtxPosition(&local_60, &i_this->speed); + i_this->speed.y = -0.3f * speedY; + fopAcM_effSmokeSet1(&i_this->field_0x970, &i_this->field_0x974, + &i_this->current.pos, 0, 2.0f, &i_this->tevStr, 1); + } else { + i_this->field_0x5a0.set(0, 0, 0); + cLib_addCalcAngleS2(&i_this->shape_angle.y, 0, 1, 0x1000); + cLib_addCalcAngleS2(&i_this->shape_angle.x, 0, 1, 0x1000); + i_this->speed.set(0.0f, -5.0f, 0.0f); + // !@bug field_0x594 is never initialized + i_this->field_0x594++; + if (i_this->field_0x594 > 150) { + fopAcM_delete(i_this); + } + } + cLib_addCalc0(&i_this->field_0x5a8, 1.0f, 5.0f); + } else { + cLib_addCalc2(&i_this->field_0x5a8, -25.0f, 1.0f, 1.0f); + } + break; + } -// -// External References: -// + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->shape_angle.y); + mDoMtx_stack_c::XrotM(i_this->shape_angle.x); + mDoMtx_stack_c::transM(0.0f, i_this->field_0x5a8, 0.0f); + mDoMtx_stack_c::XrotM(local_78); + i_this->mModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_stack_c::XrotM(-local_78); + if (i_this->mBgW != NULL) { + MTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx); + i_this->mBgW->Move(); + } +} -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -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_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -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 Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_29(); -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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +/* 80BC51B8-80BC5240 000778 0088+00 2/1 0/0 0/0 .text daObj_Cb_Execute__FP12obj_cb_class + */ +static int daObj_Cb_Execute(obj_cb_class* i_this) { + for (int i = 0; i < 2; i++) { + if (i_this->field_0x598[i] != 0) { + i_this->field_0x598[i]--; + } + } + action(i_this); + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)); + i_this->mSoundObj.framework(0, reverb); + return 1; +} -// -// Declarations: -// +/* 80BC5240-80BC5248 000800 0008+00 1/0 0/0 0/0 .text daObj_Cb_IsDelete__FP12obj_cb_class + */ +static int daObj_Cb_IsDelete(obj_cb_class* param_0) { + return 1; +} + +/* 80BC58F8-80BC58FC 000008 0004+00 2/2 0/0 0/0 .bss None */ +static u8 data_80BC58F8; + +/* 80BC5248-80BC52CC 000808 0084+00 1/0 0/0 0/0 .text daObj_Cb_Delete__FP12obj_cb_class + */ +static int daObj_Cb_Delete(obj_cb_class* i_this) { + fopAcM_GetID(i_this); + dComIfG_resDelete(&i_this->mPhase, "Obj_cb"); + if (i_this->field_0x978 != 0) { + data_80BC58F8 = 0; + } + if (i_this->mBgW != NULL) { + dComIfG_Bgsp().Release(i_this->mBgW); + } + if (i_this->heap != NULL) { + i_this->mSoundObj.deleteObject(); + } + return 1; +} + +/* 80BC52CC-80BC5408 00088C 013C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* actor) { + obj_cb_class* i_this = (obj_cb_class*)actor; + J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("Obj_cb", 4); + JUT_ASSERT(502, modelData != 0); + i_this->mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mModel == NULL) { + return 0; + } + if (i_this->home.angle.x == 0) { + i_this->mBgW = new dBgW(); + if (i_this->mBgW == NULL) { + return 0; + } + cBgD_t* bGd = (cBgD_t*)dComIfG_getObjectRes("Obj_cb", 7); + if (i_this->mBgW->Set(bGd, 1, &i_this->mBgMtx) == 1) { + return 0; + } + i_this->mBgW->SetCrrFunc(dBgS_MoveBGProc_Typical); + i_this->mBgW->SetRideCallback(ride_call_back); + } + i_this->mSoundObj.init(&i_this->current.pos, 1); + return 1; +} + +/* 80BC5908-80BC5910 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */ +static daObj_Cb_HIO_c l_HIO; + +/* 80BC5408-80BC563C 0009C8 0234+00 1/0 0/0 0/0 .text daObj_Cb_Create__FP10fopAc_ac_c */ +static int daObj_Cb_Create(fopAc_ac_c* actor) { + fopAcM_SetupActor(actor, obj_cb_class); + obj_cb_class* i_this = (obj_cb_class*)actor; + int rv = dComIfG_resLoad(&i_this->mPhase, "Obj_cb"); + if (rv == cPhs_COMPLEATE_e) { + OS_REPORT("OBJ_CB PARAM %x\n", fopAcM_GetParam(i_this)); + if (i_this->home.angle.x != 0) { + i_this->field_0x596 = 5; + } + OS_REPORT("OBJ_CB//////////////OBJ_CB SET 1 !!\n"); + if (fopAcM_entrySolidHeap(i_this, useHeapInit, 0x800) == 0) { + OS_REPORT("//////////////OBJ_CB SET NON !!\n"); + return cPhs_ERROR_e; + } + OS_REPORT("//////////////OBJ_CB SET 2 !!\n"); + if (i_this->home.angle.x == 0 && i_this->mBgW != NULL) { + if (dComIfG_Bgsp().Regist(i_this->mBgW, i_this) != 0) { + return cPhs_ERROR_e; + } + } + if (data_80BC58F8 == 0) { + i_this->field_0x978 = 1; + data_80BC58F8 = 1; + l_HIO.field_0x4 = -1; + } + fopAcM_SetMtx(i_this, i_this->mModel->getBaseTRMtx()); + i_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, + &i_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + i_this->mAcchCir.SetWall(50.0f, 50.0f); + daObj_Cb_Execute(i_this); + } + return rv; +} -/* ############################################################################################## */ /* 80BC5854-80BC5874 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Cb_Method */ static actor_method_class l_daObj_Cb_Method = { - (process_method_func)daObj_Cb_Create__FP10fopAc_ac_c, - (process_method_func)daObj_Cb_Delete__FP12obj_cb_class, - (process_method_func)daObj_Cb_Execute__FP12obj_cb_class, - (process_method_func)daObj_Cb_IsDelete__FP12obj_cb_class, - (process_method_func)daObj_Cb_Draw__FP12obj_cb_class, + (process_method_func)daObj_Cb_Create, + (process_method_func)daObj_Cb_Delete, + (process_method_func)daObj_Cb_Execute, + (process_method_func)daObj_Cb_IsDelete, + (process_method_func)daObj_Cb_Draw, }; /* 80BC5874-80BC58A4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_CB */ @@ -123,312 +266,4 @@ extern actor_process_profile_definition g_profile_OBJ_CB = { fopAc_CULLBOX_0_e, // cullType }; -/* 80BC58A4-80BC58B0 000050 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, -}; - -/* 80BC58B0-80BC58BC 00005C 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, -}; - -/* 80BC58BC-80BC58E0 000068 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_80BC57C8, - (void*)NULL, - (void*)NULL, - (void*)func_80BC57C0, -}; - -/* 80BC58E0-80BC58EC 00008C 000C+00 2/2 0/0 0/0 .data __vt__14daObj_Cb_HIO_c */ -SECTION_DATA extern void* __vt__14daObj_Cb_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daObj_Cb_HIO_cFv, -}; - -/* 80BC4B2C-80BC4B44 0000EC 0018+00 1/1 0/0 0/0 .text __ct__14daObj_Cb_HIO_cFv */ -daObj_Cb_HIO_c::daObj_Cb_HIO_c() { - // NONMATCHING -} - -/* 80BC4B44-80BC4BA8 000104 0064+00 1/0 0/0 0/0 .text daObj_Cb_Draw__FP12obj_cb_class */ -static void daObj_Cb_Draw(obj_cb_class* param_0) { - // NONMATCHING -} - -/* 80BC4BA8-80BC4BB4 000168 000C+00 1/1 0/0 0/0 .text - * ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC57E4-80BC57EC 000000 0004+04 1/1 0/0 0/0 .rodata @3882 */ -SECTION_RODATA static u8 const lit_3882[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BC57E4, &lit_3882); - -/* 80BC57EC-80BC57F4 000008 0008+00 0/1 0/0 0/0 .rodata @3883 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3883[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BC57EC, &lit_3883); -#pragma pop - -/* 80BC57F4-80BC57FC 000010 0008+00 0/1 0/0 0/0 .rodata @3884 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3884[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BC57F4, &lit_3884); -#pragma pop - -/* 80BC57FC-80BC5804 000018 0008+00 0/1 0/0 0/0 .rodata @3885 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3885[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BC57FC, &lit_3885); -#pragma pop - -/* 80BC5804-80BC5808 000020 0004+00 0/1 0/0 0/0 .rodata @3886 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3886 = 30.0f; -COMPILER_STRIP_GATE(0x80BC5804, &lit_3886); -#pragma pop - -/* 80BC5808-80BC580C 000024 0004+00 0/1 0/0 0/0 .rodata @3887 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3887 = 5.0f; -COMPILER_STRIP_GATE(0x80BC5808, &lit_3887); -#pragma pop - -/* 80BC580C-80BC5810 000028 0004+00 0/1 0/0 0/0 .rodata @3888 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3888 = 1.0f; -COMPILER_STRIP_GATE(0x80BC580C, &lit_3888); -#pragma pop - -/* 80BC5810-80BC5814 00002C 0004+00 0/1 0/0 0/0 .rodata @3889 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3889 = 0.5f; -COMPILER_STRIP_GATE(0x80BC5810, &lit_3889); -#pragma pop - -/* 80BC5814-80BC5818 000030 0004+00 0/1 0/0 0/0 .rodata @3890 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3890 = 60.0f; -COMPILER_STRIP_GATE(0x80BC5814, &lit_3890); -#pragma pop - -/* 80BC5818-80BC581C 000034 0004+00 0/1 0/0 0/0 .rodata @3891 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3891 = -1.0f; -COMPILER_STRIP_GATE(0x80BC5818, &lit_3891); -#pragma pop - -/* 80BC581C-80BC5820 000038 0004+00 0/1 0/0 0/0 .rodata @3892 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3892 = 90.0f; -COMPILER_STRIP_GATE(0x80BC581C, &lit_3892); -#pragma pop - -/* 80BC5820-80BC5824 00003C 0004+00 0/1 0/0 0/0 .rodata @3893 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3893 = 20.0f; -COMPILER_STRIP_GATE(0x80BC5820, &lit_3893); -#pragma pop - -/* 80BC5824-80BC5828 000040 0004+00 0/1 0/0 0/0 .rodata @3894 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3894 = -5.0f; -COMPILER_STRIP_GATE(0x80BC5824, &lit_3894); -#pragma pop - -/* 80BC5828-80BC582C 000044 0004+00 0/1 0/0 0/0 .rodata @3895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3895 = -30.0f; -COMPILER_STRIP_GATE(0x80BC5828, &lit_3895); -#pragma pop - -/* 80BC582C-80BC5830 000048 0004+00 0/1 0/0 0/0 .rodata @3896 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3896 = 5000.0f; -COMPILER_STRIP_GATE(0x80BC582C, &lit_3896); -#pragma pop - -/* 80BC5830-80BC5834 00004C 0004+00 0/1 0/0 0/0 .rodata @3897 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3897 = 7000.0f; -COMPILER_STRIP_GATE(0x80BC5830, &lit_3897); -#pragma pop - -/* 80BC5834-80BC5838 000050 0004+00 0/1 0/0 0/0 .rodata @3898 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3898 = 15.0f; -COMPILER_STRIP_GATE(0x80BC5834, &lit_3898); -#pragma pop - -/* 80BC5838-80BC583C 000054 0004+00 0/1 0/0 0/0 .rodata @3899 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3899 = 10.0f; -COMPILER_STRIP_GATE(0x80BC5838, &lit_3899); -#pragma pop - -/* 80BC583C-80BC5840 000058 0004+00 0/1 0/0 0/0 .rodata @3900 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3900 = -3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80BC583C, &lit_3900); -#pragma pop - -/* 80BC5840-80BC5844 00005C 0004+00 0/1 0/0 0/0 .rodata @3901 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3901 = 2.0f; -COMPILER_STRIP_GATE(0x80BC5840, &lit_3901); -#pragma pop - -/* 80BC5844-80BC5848 000060 0004+00 0/1 0/0 0/0 .rodata @3902 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3902 = -25.0f; -COMPILER_STRIP_GATE(0x80BC5844, &lit_3902); -#pragma pop - -/* 80BC4BB4-80BC51B8 000174 0604+00 1/1 0/0 0/0 .text action__FP12obj_cb_class */ -static void action(obj_cb_class* param_0) { - // NONMATCHING -} - -/* 80BC51B8-80BC5240 000778 0088+00 2/1 0/0 0/0 .text daObj_Cb_Execute__FP12obj_cb_class - */ -static void daObj_Cb_Execute(obj_cb_class* param_0) { - // NONMATCHING -} - -/* 80BC5240-80BC5248 000800 0008+00 1/0 0/0 0/0 .text daObj_Cb_IsDelete__FP12obj_cb_class - */ -static bool daObj_Cb_IsDelete(obj_cb_class* param_0) { - return true; -} - -/* ############################################################################################## */ -/* 80BC584C-80BC584C 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BC584C = "Obj_cb"; -#pragma pop - -/* 80BC58F8-80BC58FC 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_80BC58F8[4]; - -/* 80BC5248-80BC52CC 000808 0084+00 1/0 0/0 0/0 .text daObj_Cb_Delete__FP12obj_cb_class - */ -static void daObj_Cb_Delete(obj_cb_class* param_0) { - // NONMATCHING -} - -/* 80BC52CC-80BC5408 00088C 013C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BC5848-80BC584C 000064 0004+00 1/1 0/0 0/0 .rodata @4038 */ -SECTION_RODATA static f32 const lit_4038 = 50.0f; -COMPILER_STRIP_GATE(0x80BC5848, &lit_4038); - -/* 80BC58FC-80BC5908 00000C 000C+00 1/1 0/0 0/0 .bss @3763 */ -static u8 lit_3763[12]; - -/* 80BC5908-80BC5910 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[8]; - -/* 80BC5408-80BC563C 0009C8 0234+00 1/0 0/0 0/0 .text daObj_Cb_Create__FP10fopAc_ac_c */ -static void daObj_Cb_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BC563C-80BC5684 000BFC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80BC5684-80BC56CC 000C44 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80BC56CC-80BC573C 000C8C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80BC573C-80BC5784 000CFC 0048+00 2/1 0/0 0/0 .text __dt__14daObj_Cb_HIO_cFv */ -daObj_Cb_HIO_c::~daObj_Cb_HIO_c() { - // NONMATCHING -} - -/* 80BC5784-80BC57C0 000D44 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_cb_cpp */ -void __sinit_d_a_obj_cb_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80BC5784, __sinit_d_a_obj_cb_cpp); -#pragma pop - -/* 80BC57C0-80BC57C8 000D80 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80BC57C0() { - // NONMATCHING -} - -/* 80BC57C8-80BC57D0 000D88 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80BC57C8() { - // NONMATCHING -} - /* 80BC584C-80BC584C 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_fchain.cpp b/src/d/actor/d_a_obj_fchain.cpp index 4bdf53cb1f8..2f72392739e 100644 --- a/src/d/actor/d_a_obj_fchain.cpp +++ b/src/d/actor/d_a_obj_fchain.cpp @@ -4,200 +4,336 @@ */ #include "d/actor/d_a_obj_fchain.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_com_inf_game.h" - - -// -// Forward References: -// - -extern "C" void createHeap__13daObjFchain_cFv(); -extern "C" static void daObjFchain_createHeap__FP10fopAc_ac_c(); -extern "C" void create__13daObjFchain_cFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" static void daObjFchain_Create__FP10fopAc_ac_c(); -extern "C" void __dt__13daObjFchain_cFv(); -extern "C" static void daObjFchain_Delete__FP13daObjFchain_c(); -extern "C" void checkPlayerFoot__13daObjFchain_cFPC4cXyzPC4cXyzP4cXyz(); -extern "C" void setGroundVec__13daObjFchain_cFP4cXyzf(); -extern "C" void execute__13daObjFchain_cFv(); -extern "C" static void daObjFchain_Execute__FP13daObjFchain_c(); -extern "C" void draw__19daObjFchain_shape_cFv(); -extern "C" void draw__13daObjFchain_cFv(); -extern "C" static void daObjFchain_Draw__FP13daObjFchain_c(); -extern "C" void __dt__19daObjFchain_shape_cFv(); -extern "C" extern char const* const d_a_obj_fchain__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getRunEventName__16dEvent_manager_cFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_setLight_again__Fv(); -extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rnd__Fv(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void __dl__FPv(); -extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); -extern "C" void loadPreDrawSetting__8J3DShapeCFv(); -extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" extern void* __vt__9J3DPacket[5]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" f32 Zero__4cXyz[3]; -extern "C" extern u32 g_whiteColor; -extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80BE7438-80BE7440 000000 0007+01 6/6 0/0 0/0 .rodata l_arcName */ -SECTION_RODATA static u8 const l_arcName[7 + 1 /* padding */] = { - 0x46, - 0x63, - 0x68, - 0x61, - 0x69, - 0x6E, - 0x00, - /* padding */ - 0x00, -}; -COMPILER_STRIP_GATE(0x80BE7438, &l_arcName); +static char const l_arcName[] = "Fchain"; /* 80BE5FF8-80BE6054 000078 005C+00 1/1 0/0 0/0 .text createHeap__13daObjFchain_cFv */ -void daObjFchain_c::createHeap() { - // NONMATCHING +int daObjFchain_c::createHeap() { + mModelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 3); + return mModelData != NULL ? 1 : 0; } /* 80BE6054-80BE6074 0000D4 0020+00 1/1 0/0 0/0 .text daObjFchain_createHeap__FP10fopAc_ac_c */ -static void daObjFchain_createHeap(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjFchain_createHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); } /* ############################################################################################## */ /* 80BE7440-80BE744C 000008 000C+00 0/1 0/0 0/0 .rodata localVec$3662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const localVec[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x10, 0x00, 0x00, +static Vec const localVec = { + 0.0f, 0.0f, -9.0f, }; -COMPILER_STRIP_GATE(0x80BE7440, &localVec); -#pragma pop -/* 80BE744C-80BE7450 000014 0004+00 0/2 0/0 0/0 .rodata @3710 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3710 = 3.0f; -COMPILER_STRIP_GATE(0x80BE744C, &lit_3710); -#pragma pop +/* 80BE6074-80BE6328 0000F4 02B4+00 1/1 0/0 0/0 .text create__13daObjFchain_cFv */ +int daObjFchain_c::create() { + fopAcM_SetupActor(this, daObjFchain_c); + int rv = dComIfG_resLoad(&mPhase, l_arcName); + switch (rv) { + case cPhs_COMPLEATE_e: + if (fopAcM_entrySolidHeap(this, daObjFchain_createHeap, + 0x10) == 0) { + return cPhs_ERROR_e; + } + tevStr.mRoomNo = dComIfGp_roomControl_getStayNo(); + mShape.setUserArea((u32)this); + current.pos.y += 3.0f; + s16 local_58 = shape_angle.y; + cXyz* local_44 = ¤t.pos; + cXyz* local_48 = field_0x694; + csXyz* pdVar5 = field_0x8a4; + for (int i = 0; i < 22; i++) { + if ((i & 1) != 0) { + pdVar5->z = cM_rndFX(2048.0f) + 4096.0f; + } else { + pdVar5->z = cM_rndFX(2048.0f) + -4096.0f; + } + f32 fVar1; + if (cM_rnd() < 0.5f) { + fVar1 = 1.0f; + } else { + fVar1 = -1.0f; + } + pdVar5->y = local_58 + (fVar1 * (cM_rndF(3072.0f) + 1024.0f)); + mDoMtx_stack_c::transS(*local_44); + mDoMtx_stack_c::YrotM(pdVar5->y); + mDoMtx_stack_c::multVec(&localVec, local_48); + local_58 = pdVar5->y; + local_44 = local_48; + pdVar5++; + local_48++; + } + rv = cPhs_COMPLEATE_e; + break; + } + return rv; +} -/* 80BE7450-80BE7454 000018 0004+00 0/2 0/0 0/0 .rodata @3711 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3711 = 4096.0f; -COMPILER_STRIP_GATE(0x80BE7450, &lit_3711); -#pragma pop +/* 80BE63A8-80BE63C8 000428 0020+00 1/0 0/0 0/0 .text daObjFchain_Create__FP10fopAc_ac_c + */ +static int daObjFchain_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} -/* 80BE7454-80BE7458 00001C 0004+00 0/2 0/0 0/0 .rodata @3712 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3712 = 2048.0f; -COMPILER_STRIP_GATE(0x80BE7454, &lit_3712); -#pragma pop +/* 80BE63C8-80BE64B8 000448 00F0+00 1/1 0/0 0/0 .text __dt__13daObjFchain_cFv */ +daObjFchain_c::~daObjFchain_c() { + dComIfG_resDelete(&mPhase,l_arcName); +} -/* 80BE7458-80BE745C 000020 0004+00 0/2 0/0 0/0 .rodata @3713 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3713 = -4096.0f; -COMPILER_STRIP_GATE(0x80BE7458, &lit_3713); -#pragma pop +/* 80BE64B8-80BE64E0 000538 0028+00 1/0 0/0 0/0 .text daObjFchain_Delete__FP13daObjFchain_c */ +static int daObjFchain_Delete(daObjFchain_c* i_this) { + i_this->~daObjFchain_c(); + return 1; +} -/* 80BE745C-80BE7460 000024 0004+00 0/3 0/0 0/0 .rodata @3714 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3714 = 1.0f; -COMPILER_STRIP_GATE(0x80BE745C, &lit_3714); -#pragma pop +/* 80BE64E0-80BE66B4 000560 01D4+00 1/1 0/0 0/0 .text + * checkPlayerFoot__13daObjFchain_cFPC4cXyzPC4cXyzP4cXyz */ +void daObjFchain_c::checkPlayerFoot(cXyz const* param_1, cXyz const* param_2, cXyz* param_3) { + cXyz local_24 = *param_1 - *param_2; + f32 dVar4 = local_24.absXZ(); + if (fabsf(local_24.y) < 5.0f && dVar4 < 20.0f) { + local_24.y = 0.0f; + local_24.normalizeZP(); + f32 fVar1 = 20.0f - dVar4; + param_3->x += local_24.x * fVar1; + param_3->z += local_24.z * fVar1; + } +} -/* 80BE7460-80BE7464 000028 0004+00 0/2 0/0 0/0 .rodata @3715 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3715 = -1.0f; -COMPILER_STRIP_GATE(0x80BE7460, &lit_3715); -#pragma pop +/* 80BE66B4-80BE6868 000734 01B4+00 1/1 0/0 0/0 .text setGroundVec__13daObjFchain_cFP4cXyzf */ +void daObjFchain_c::setGroundVec(cXyz* param_1, f32 param_2) { + f32 dVar6 = param_1->absXZ(); + param_1->y += param_2; + if (dVar6 < 0.1f) { + param_1->z += param_2; + } else { + f32 fVar1 = (1.0f / dVar6); + param_1->x += fVar1 * (param_2 * param_1->x); + param_1->z += fVar1 * (param_2 * param_1->z); + } + param_1->normalizeZP(); +} -/* 80BE7464-80BE7468 00002C 0004+00 0/2 0/0 0/0 .rodata @3716 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3716 = 0.5f; -COMPILER_STRIP_GATE(0x80BE7464, &lit_3716); -#pragma pop - -/* 80BE7468-80BE746C 000030 0004+00 0/1 0/0 0/0 .rodata @3717 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3717 = 1024.0f; -COMPILER_STRIP_GATE(0x80BE7468, &lit_3717); -#pragma pop - -/* 80BE746C-80BE7470 000034 0004+00 0/1 0/0 0/0 .rodata @3718 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3718 = 3072.0f; -COMPILER_STRIP_GATE(0x80BE746C, &lit_3718); -#pragma pop - -/* 80BE7470-80BE7478 000038 0008+00 0/2 0/0 0/0 .rodata @3720 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3720[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 80BE74A4-80BE74B0 00006C 000C+00 0/1 0/0 0/0 .rodata wolfChainBaseOffset$3862 */ +static Vec const wolfChainBaseOffset = { + 22.0f, 0.0f, -12.0f, }; -COMPILER_STRIP_GATE(0x80BE7470, &lit_3720); -#pragma pop + +/* 80BE6868-80BE7174 0008E8 090C+00 1/1 0/0 0/0 .text execute__13daObjFchain_cFv */ +// NONMATCHING - regalloc, stack +int daObjFchain_c::execute() { + if (dComIfGp_event_runCheck()) { + if (dComIfGp_getEventManager().getRunEventName() != NULL) { + if (strcmp("demo06_01", dComIfGp_getEventManager().getRunEventName()) == 0 && + field_0x588 >= 0) + { + field_0x588++; + if (field_0x588 > 310) { + field_0x588 = -1; + } + } + } + } else { + field_0x588 = 0; + } + cXyz* local_148 = ¤t.pos; + cXyz local_54; + cXyz cStack_60; + if (field_0x586 != 0) { + field_0x586--; + } + cXyz* pcVar12 = field_0x694; + cXyz* local_150 = field_0x79c; + u32 isWolf = daPy_py_c::i_checkNowWolf(); + daPy_py_c* player = daPy_getLinkPlayerActorClass(); + for (int i = 0; i < 22; i++) { + local_54 = (*pcVar12 - *local_148) + *local_150; + local_54.y += -1.5f; + if (dComIfGs_isEventBit(0x510)) { + if (isWolf) { + checkPlayerFoot(pcVar12, player->getLeftHandPosP(), &local_54); + checkPlayerFoot(pcVar12, player->getRightHandPosP(), &local_54); + } + checkPlayerFoot(pcVar12, player->getLeftFootPosP(), &local_54); + checkPlayerFoot(pcVar12, player->getRightFootPosP(), &local_54); + } + cStack_60 = local_54; + local_54.normalizeZP(); + *pcVar12 = *local_148 + (local_54 * 9.0f); + if (pcVar12->y < current.pos.y) { + setGroundVec(&cStack_60, current.pos.y - pcVar12->y); + *pcVar12 = *local_148 + (cStack_60 * 9.0f); + } + local_150++; + local_148 = pcVar12; + pcVar12++; + } + if (isWolf && !dComIfGs_isEventBit(0x510)) { + mDoMtx_multVec( + player->getModelJointMtx(17), &wolfChainBaseOffset, + &field_0x694[21]); + cXyz diff = (field_0x694[21] - current.pos); + f32 dVar13 = diff.abs(); + if (dVar13 > 198.0f) { + s16 sVar10 = cM_atan2s(-local_54.x, -local_54.z); + player->setOutPower(dVar13 - 198.0f, sVar10, 0); + player->onWolfFchainPull(); + cXyz* pcVar8 = field_0x694; + local_148 = ¤t.pos; + local_54 *= 9.0f / dVar13; + for (int i = 0; pcVar12 = pcVar8, i < 22; i++) { + *pcVar8 = *local_148 + local_54; + local_148 = pcVar8; + pcVar8++; + } + field_0x584 = 0; + } else { + cXyz* pcVar8 = &field_0x694[20]; + local_150 = &field_0x79c[20]; + local_148 = pcVar8 + 1; + for (int i = 20; i >= 0; i--) { + local_54 = (*pcVar8 - *local_148) + *local_150; + local_54.y += -1.5f; + cStack_60 = local_54; + local_54.normalizeZP(); + *pcVar8 = *local_148 + (local_54 * 9.0f); + if (pcVar8->y < current.pos.y) { + setGroundVec(&cStack_60, current.pos.y - pcVar8->y); + *pcVar8 = *local_148 + (cStack_60 * 9.0f); + } + local_150--; + local_148 = pcVar8; + pcVar8--; + } + } + } + local_148 = ¤t.pos; + local_150 = field_0x694; + cXyz* pcVar8 = field_0x79c; + csXyz* local_15c = field_0x8a4; + cXyz* local_160 = field_0x58c; + s16 local_178 = 0; + for (int i = 0; i < 22; i++) { + *local_150 = (*pcVar8 - *local_160) * 0.3f; + *local_160 = *pcVar8; + local_54 = *local_148 - *pcVar8; + local_15c->x = local_54.atan2sY_XZ(); + if (!(local_54.absXZ() < 3.5f)) { + local_15c->y = local_54.atan2sX_Z(); + } + if (local_150->abs2() > 3.0f && field_0x586 == 0) { + f32 fVar1; + if (cM_rnd() < 0.5f) { + fVar1 = 1.0f; + } else { + fVar1 = -1.0f; + } + local_15c->z = local_178 + 0x4000 + + (fVar1 * (cM_rndF(4096.0f) + 1536.0f)); + if (pcVar8->y <= current.pos.y + 2.0f) { + if ((local_15c->z >= 0 && local_15c->z < 0x4000) || + (local_15c->z > -0x7fff && local_15c->z < -0x4000)) + { + local_15c->z = cM_rndFX(2048.0f) + 4096.0f; + } else { + local_15c->z = cM_rndFX(2048.0f) + -4096.0f; + } + } + } + local_178 = local_15c->z; + local_150++; + local_15c++; + local_160++; + local_148 = pcVar8; + pcVar8++; + } + if (field_0x584 == 0) { + field_0x584 = 1; + local_150 = field_0x79c; + for (int i = 0; i < 22; i++) { + *local_150 = cXyz::Zero; + local_150++; + } + field_0x586 = 5; + } + return 1; +} + +/* 80BE7174-80BE7194 0011F4 0020+00 1/0 0/0 0/0 .text daObjFchain_Execute__FP13daObjFchain_c */ +static int daObjFchain_Execute(daObjFchain_c* i_this) { + return static_cast(i_this)->execute(); +} + +/* 80BE7194-80BE7324 001214 0190+00 1/0 0/0 0/0 .text draw__19daObjFchain_shape_cFv */ +void daObjFchain_shape_c::draw() { + daObjFchain_c* i_this = (daObjFchain_c*)getUserArea(); + cXyz* pPos = i_this->getPos(); + csXyz* pAngle = i_this->getAngle(); + J3DModelData* modelData = i_this->getModelData(); + J3DMaterial* material = modelData->getMaterialNodePointer(0); + dKy_tevstr_c* tevStr = &i_this->tevStr; + j3dSys.setVtxPos(modelData->getVtxPosArray()); + j3dSys.setVtxNrm(modelData->getVtxNrmArray()); + j3dSys.setVtxCol(modelData->getVtxColorArray(0)); + J3DShape::resetVcdVatCache(); + material->loadSharedDL(); + material->getShape()->loadPreDrawSetting(); + GXColor ambColor; + ambColor.r = tevStr->mColorC0.r; + ambColor.g = tevStr->mColorC0.g; + ambColor.b = tevStr->mColorC0.b; + ambColor.a = tevStr->mColorC0.a; + GXSetChanAmbColor(GX_COLOR0A0, ambColor); + GXSetChanMatColor(GX_COLOR0A0, g_whiteColor); + dKy_setLight_again(); + dKy_GxFog_tevstr_set(tevStr); + GXLoadLightObjImm(&tevStr->mLightObj.mLightObj, GX_LIGHT0); + int local_30; + if (dComIfGs_isEventBit(0x510)) { + local_30 = 17; + } else { + local_30 = 22; + } + for (int i = 0; i < local_30; i++, pPos++, pAngle++) { + mDoMtx_stack_c::copy(j3dSys.getViewMtx()); + mDoMtx_stack_c::transM(*pPos); + mDoMtx_stack_c::ZXYrotM(*pAngle); + GXLoadPosMtxImm(mDoMtx_stack_c::get(), 0); + GXLoadNrmMtxImm(mDoMtx_stack_c::get(), 0); + material->getShape()->simpleDrawCache(); + } +} + +/* 80BE7324-80BE73B4 0013A4 0090+00 1/1 0/0 0/0 .text draw__13daObjFchain_cFv */ +int daObjFchain_c::draw() { + if (field_0x584 != 0) { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModelData, &tevStr); + if (field_0x588 > 0) { + return 1; + } + dComIfGd_getOpaListDark()->entryImm(&mShape, 0); + } + return 1; +} + +/* 80BE73B4-80BE73D4 001434 0020+00 1/0 0/0 0/0 .text daObjFchain_Draw__FP13daObjFchain_c + */ +static int daObjFchain_Draw(daObjFchain_c* i_this) { + return static_cast(i_this)->draw(); +} /* 80BE74D8-80BE74F8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFchain_Method */ static actor_method_class l_daObjFchain_Method = { - (process_method_func)daObjFchain_Create__FP10fopAc_ac_c, - (process_method_func)daObjFchain_Delete__FP13daObjFchain_c, - (process_method_func)daObjFchain_Execute__FP13daObjFchain_c, - 0, - (process_method_func)daObjFchain_Draw__FP13daObjFchain_c, + (process_method_func)daObjFchain_Create, + (process_method_func)daObjFchain_Delete, + (process_method_func)daObjFchain_Execute, + NULL, + (process_method_func)daObjFchain_Draw, }; /* 80BE74F8-80BE7528 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Fchain */ @@ -218,232 +354,4 @@ extern actor_process_profile_definition g_profile_Obj_Fchain = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80BE7528-80BE753C 000050 0014+00 3/3 0/0 0/0 .data __vt__19daObjFchain_shape_c */ -SECTION_DATA extern void* __vt__19daObjFchain_shape_c[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__19daObjFchain_shape_cFv, - (void*)__dt__19daObjFchain_shape_cFv, -}; - -/* 80BE6074-80BE6328 0000F4 02B4+00 1/1 0/0 0/0 .text create__13daObjFchain_cFv */ -void daObjFchain_c::create() { - // NONMATCHING -} - -/* 80BE6328-80BE6364 0003A8 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80BE6364-80BE6368 0003E4 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80BE6368-80BE63A4 0003E8 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80BE63A4-80BE63A8 000424 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80BE63A8-80BE63C8 000428 0020+00 1/0 0/0 0/0 .text daObjFchain_Create__FP10fopAc_ac_c - */ -static void daObjFchain_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BE63C8-80BE64B8 000448 00F0+00 1/1 0/0 0/0 .text __dt__13daObjFchain_cFv */ -daObjFchain_c::~daObjFchain_c() { - // NONMATCHING -} - -/* 80BE64B8-80BE64E0 000538 0028+00 1/0 0/0 0/0 .text daObjFchain_Delete__FP13daObjFchain_c */ -static void daObjFchain_Delete(daObjFchain_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BE7478-80BE7480 000040 0004+04 0/3 0/0 0/0 .rodata @3809 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3809[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BE7478, &lit_3809); -#pragma pop - -/* 80BE7480-80BE7488 000048 0008+00 0/3 0/0 0/0 .rodata @3810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3810[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BE7480, &lit_3810); -#pragma pop - -/* 80BE7488-80BE7490 000050 0008+00 0/3 0/0 0/0 .rodata @3811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3811[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BE7488, &lit_3811); -#pragma pop - -/* 80BE7490-80BE7498 000058 0008+00 0/3 0/0 0/0 .rodata @3812 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3812[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BE7490, &lit_3812); -#pragma pop - -/* 80BE7498-80BE749C 000060 0004+00 0/1 0/0 0/0 .rodata @3813 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3813 = 5.0f; -COMPILER_STRIP_GATE(0x80BE7498, &lit_3813); -#pragma pop - -/* 80BE749C-80BE74A0 000064 0004+00 0/1 0/0 0/0 .rodata @3814 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3814 = 20.0f; -COMPILER_STRIP_GATE(0x80BE749C, &lit_3814); -#pragma pop - -/* 80BE64E0-80BE66B4 000560 01D4+00 1/1 0/0 0/0 .text - * checkPlayerFoot__13daObjFchain_cFPC4cXyzPC4cXyzP4cXyz */ -void daObjFchain_c::checkPlayerFoot(cXyz const* param_0, cXyz const* param_1, cXyz* param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BE74A0-80BE74A4 000068 0004+00 0/1 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3857 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80BE74A0, &lit_3857); -#pragma pop - -/* 80BE66B4-80BE6868 000734 01B4+00 1/1 0/0 0/0 .text setGroundVec__13daObjFchain_cFP4cXyzf */ -void daObjFchain_c::setGroundVec(cXyz* param_0, f32 param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BE74A4-80BE74B0 00006C 000C+00 0/1 0/0 0/0 .rodata wolfChainBaseOffset$3862 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const wolfChainBaseOffset[12] = { - 0x41, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x40, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BE74A4, &wolfChainBaseOffset); -#pragma pop - -/* 80BE74B0-80BE74B4 000078 0004+00 0/1 0/0 0/0 .rodata @4159 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4159 = -1.5f; -COMPILER_STRIP_GATE(0x80BE74B0, &lit_4159); -#pragma pop - -/* 80BE74B4-80BE74B8 00007C 0004+00 0/1 0/0 0/0 .rodata @4160 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4160 = 9.0f; -COMPILER_STRIP_GATE(0x80BE74B4, &lit_4160); -#pragma pop - -/* 80BE74B8-80BE74BC 000080 0004+00 0/1 0/0 0/0 .rodata @4161 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4161 = 198.0f; -COMPILER_STRIP_GATE(0x80BE74B8, &lit_4161); -#pragma pop - -/* 80BE74BC-80BE74C0 000084 0004+00 0/1 0/0 0/0 .rodata @4162 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4162 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80BE74BC, &lit_4162); -#pragma pop - -/* 80BE74C0-80BE74C4 000088 0004+00 0/1 0/0 0/0 .rodata @4163 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4163 = 3.5f; -COMPILER_STRIP_GATE(0x80BE74C0, &lit_4163); -#pragma pop - -/* 80BE74C4-80BE74C8 00008C 0004+00 0/1 0/0 0/0 .rodata @4164 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4164 = 1536.0f; -COMPILER_STRIP_GATE(0x80BE74C4, &lit_4164); -#pragma pop - -/* 80BE74C8-80BE74CC 000090 0004+00 0/1 0/0 0/0 .rodata @4165 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4165 = 2.0f; -COMPILER_STRIP_GATE(0x80BE74C8, &lit_4165); -#pragma pop - -/* 80BE74CC-80BE74CC 000094 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BE74CC = "demo06_01"; -#pragma pop - -/* 80BE6868-80BE7174 0008E8 090C+00 1/1 0/0 0/0 .text execute__13daObjFchain_cFv */ -void daObjFchain_c::execute() { - // NONMATCHING -} - -/* 80BE7174-80BE7194 0011F4 0020+00 1/0 0/0 0/0 .text daObjFchain_Execute__FP13daObjFchain_c */ -static void daObjFchain_Execute(daObjFchain_c* param_0) { - // NONMATCHING -} - -/* 80BE7194-80BE7324 001214 0190+00 1/0 0/0 0/0 .text draw__19daObjFchain_shape_cFv */ -void daObjFchain_shape_c::draw() { - // NONMATCHING -} - -/* 80BE7324-80BE73B4 0013A4 0090+00 1/1 0/0 0/0 .text draw__13daObjFchain_cFv */ -void daObjFchain_c::draw() { - // NONMATCHING -} - -/* 80BE73B4-80BE73D4 001434 0020+00 1/0 0/0 0/0 .text daObjFchain_Draw__FP13daObjFchain_c - */ -static void daObjFchain_Draw(daObjFchain_c* param_0) { - // NONMATCHING -} - -/* 80BE73D4-80BE7430 001454 005C+00 1/0 0/0 0/0 .text __dt__19daObjFchain_shape_cFv */ -daObjFchain_shape_c::~daObjFchain_shape_c() { - // NONMATCHING -} - /* 80BE74CC-80BE74CC 000094 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_gb.cpp b/src/d/actor/d_a_obj_gb.cpp index 3de9012eead..417bb9e15da 100644 --- a/src/d/actor/d_a_obj_gb.cpp +++ b/src/d/actor/d_a_obj_gb.cpp @@ -4,170 +4,123 @@ */ #include "d/actor/d_a_obj_gb.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" static void daObj_Gb_Draw__FP12obj_gb_class(); -extern "C" static void daObj_Gb_Execute__FP12obj_gb_class(); -extern "C" void __dt__4cXyzFv(); -extern "C" static bool daObj_Gb_IsDelete__FP12obj_gb_class(); -extern "C" static void daObj_Gb_Delete__FP12obj_gb_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daObj_Gb_Create__FP10fopAc_ac_c(); -extern "C" void __ct__4cXyzFv(); -extern "C" extern char const* const d_a_obj_gb__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_bg_MAxx_proc__FPv(); -extern "C" void cM_rndF__Ff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __construct_array(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// +#include "SSystem/SComponent/c_lib.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_bg_w.h" +#include "d/d_com_inf_game.h" /* 80BF6318-80BF63F8 000078 00E0+00 1/0 0/0 0/0 .text daObj_Gb_Draw__FP12obj_gb_class */ -static void daObj_Gb_Draw(obj_gb_class* param_0) { - // NONMATCHING +static int daObj_Gb_Draw(obj_gb_class* i_this) { + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(i_this->mModel, &i_this->tevStr); + J3DModelData* modelData = (J3DModelData*)i_this->mModel->getModelData(); + for (u16 i = 0; i <= 1; i++) { + J3DMaterial* material = (J3DMaterial*)modelData->getMaterialNodePointer(i); + material->getTevKColor(1)->a = i_this->mColorAlpha; + } + + dKy_bg_MAxx_proc(i_this->mModel); + i_this->mBtk->entry(modelData); + i_this->mBrk->entry(modelData); + mDoExt_modelUpdateDL(i_this->mModel); + return 1; } -/* ############################################################################################## */ -/* 80BF6DBC-80BF6DC0 000000 0004+00 2/2 0/0 0/0 .rodata @3890 */ -SECTION_RODATA static f32 const lit_3890 = 0.5f; -COMPILER_STRIP_GATE(0x80BF6DBC, &lit_3890); - -/* 80BF6DC0-80BF6DC4 000004 0004+00 1/2 0/0 0/0 .rodata @3891 */ -SECTION_RODATA static f32 const lit_3891 = 1.0f; -COMPILER_STRIP_GATE(0x80BF6DC0, &lit_3891); - -/* 80BF6DC4-80BF6DC8 000008 0004+00 0/1 0/0 0/0 .rodata @3892 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3892 = -1.0f; -COMPILER_STRIP_GATE(0x80BF6DC4, &lit_3892); -#pragma pop - -/* 80BF6DC8-80BF6DCC 00000C 0004+00 0/1 0/0 0/0 .rodata @3893 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3893 = 29.0f; -COMPILER_STRIP_GATE(0x80BF6DC8, &lit_3893); -#pragma pop - -/* 80BF6DCC-80BF6DD0 000010 0004+00 1/3 0/0 0/0 .rodata @3894 */ -SECTION_RODATA static u8 const lit_3894[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BF6DCC, &lit_3894); - -/* 80BF6DD0-80BF6DD4 000014 0004+00 0/1 0/0 0/0 .rodata @3895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3895 = -200.0f; -COMPILER_STRIP_GATE(0x80BF6DD0, &lit_3895); -#pragma pop - -/* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BF6DEC = "D_MN09B"; -#pragma pop - /* 80BF63F8-80BF678C 000158 0394+00 2/1 0/0 0/0 .text daObj_Gb_Execute__FP12obj_gb_class */ -static void daObj_Gb_Execute(obj_gb_class* param_0) { - // NONMATCHING -} - -/* 80BF678C-80BF67C8 0004EC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING +static int daObj_Gb_Execute(obj_gb_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz acStack_30; + cXyz cStack_3c; + i_this->field_0x58e++; + for (int i = 0; i < 2; i++) { + if (i_this->field_0x58a[i] != 0) { + i_this->field_0x58a[i]--; + } + } + switch(i_this->mIsFinalBattle) { + case 0: + if (i_this->field_0x57c == 0) { + for (int i = 0; i < 20; i++) { + if (i_this->mBrkFrame < 0.5f) { + Z2GetAudioMgr()->seStart(Z2SE_OBJ_GANON_BARRIER_APPR, &i_this->field_0x594[i], + 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_GANON_BARRIER, &i_this->field_0x594[i], 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } else { + if (i_this->mBrkFrame < 0.5f) { + Z2GetAudioMgr()->seStart(Z2SE_OBJ_GANON_BARRIER_APPR, &i_this->current.pos, 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_GANON_BARRIER, &i_this->current.pos, 0, 0, 1.0f, + 1.0f, -1.0f, -1.0f, 0); + } + cLib_addCalc2(&i_this->mBrkFrame, 29.0f, 1.0f, 1.0f); + if (strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0) { + if (dComIfGs_isSwitch(i_this->mSw2, fopAcM_GetRoomNo(i_this)) || + !dComIfGs_isSwitch(i_this->mSw1, fopAcM_GetRoomNo(i_this))) + { + i_this->mIsFinalBattle = 1; + } + } + break; + case 1: + cLib_addCalc2(&i_this->mBrkFrame, 0, 1.0f, 1.0f); + if (!dComIfGs_isSwitch(i_this->mSw2, fopAcM_GetRoomNo(i_this)) && + dComIfGs_isSwitch(i_this->mSw1, fopAcM_GetRoomNo(i_this))) + { + i_this->mIsFinalBattle = 0; + } + break; + } + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->current.angle.y); + if (i_this->field_0x57c == 0) { + mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.y, i_this->scale.x); + } else { + mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.y, 1.0f); + } + i_this->mModel->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->mBtk->play(); + i_this->mBrk->setFrame(i_this->mBrkFrame); + if (i_this->mBrkFrame < 1.0f) { + mDoMtx_stack_c::transM(0.0f, -200.0f, 0.0f); + mDoMtx_stack_c::scaleM(1.0f, 0.0f, 1.0f); + } + MTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx); + i_this->mpBgW->Move(); + return 1; } /* 80BF67C8-80BF67D0 000528 0008+00 1/0 0/0 0/0 .text daObj_Gb_IsDelete__FP12obj_gb_class */ -static bool daObj_Gb_IsDelete(obj_gb_class* param_0) { - return true; +static int daObj_Gb_IsDelete(obj_gb_class* param_0) { + return 1; } -/* ############################################################################################## */ -/* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BF6DF4 = "Obj_gb"; -#pragma pop - /* 80BF67D0-80BF682C 000530 005C+00 1/0 0/0 0/0 .text daObj_Gb_Delete__FP12obj_gb_class */ -static void daObj_Gb_Delete(obj_gb_class* param_0) { - // NONMATCHING +static int daObj_Gb_Delete(obj_gb_class* i_this) { + fopAcM_GetID(i_this); + dComIfG_resDelete(&i_this->mPhase, "Obj_gb"); + if (i_this->mpBgW != NULL) { + dComIfG_Bgsp().Release(i_this->mpBgW); + } + return 1; } /* ############################################################################################## */ /* 80BF6DFC-80BF6E08 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80BF6E08-80BF6E1C 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 */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -178,44 +131,132 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80BF6E1C-80BF6E24 000020 0008+00 0/1 0/0 0/0 .data bmd$3914 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 bmd[8] = { - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, +static int bmd[2] = { + 6, 7, }; -#pragma pop /* 80BF6E24-80BF6E2C 000028 0008+00 0/1 0/0 0/0 .data brk$3915 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 brk[8] = { - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, +static int brk[2] = { + 10, 11, }; -#pragma pop /* 80BF6E2C-80BF6E34 000030 0008+00 0/1 0/0 0/0 .data btk$3916 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 btk[8] = { - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, +static int btk[2] = { + 14, 15, }; -#pragma pop /* 80BF6E34-80BF6E3C 000038 0008+00 0/1 0/0 0/0 .data dzb$3917 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 dzb[8] = { - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, +static int dzb[2] = { + 18, 19, }; -#pragma pop + +/* 80BF682C-80BF6A98 00058C 026C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* actor) { + obj_gb_class* i_this = (obj_gb_class*)actor; + J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("Obj_gb", bmd[i_this->field_0x57c]); + JUT_ASSERT(324, modelData != 0); + i_this->mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); + if (i_this->mModel == NULL) { + return 0; + } + i_this->mBtk = new mDoExt_btkAnm(); + if (i_this->mBtk == NULL) { + return 0; + } + J3DAnmTextureSRTKey* anmTexture = (J3DAnmTextureSRTKey*) dComIfG_getObjectRes( + "Obj_gb", btk[i_this->field_0x57c]); + if (i_this->mBtk->init(i_this->mModel->getModelData(), anmTexture, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } + i_this->mBrk = new mDoExt_brkAnm(); + if (i_this->mBrk== NULL) { + return 0; + } + J3DAnmTevRegKey* anmTevKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes( + "Obj_gb", brk[i_this->field_0x57c]); + if (i_this->mBrk->init(i_this->mModel->getModelData(), anmTevKey, 1, 2, 0.0f, 0, -1) == 0) { + return 0; + } + i_this->mpBgW = new dBgW(); + if (i_this->mpBgW == NULL) { + return 0; + } + cBgD_t* pbGd = (cBgD_t*)dComIfG_getObjectRes( + "Obj_gb", dzb[i_this->field_0x57c]); + return i_this->mpBgW->Set(pbGd, 1, &i_this->mBgMtx) == 1 ? 0 : 1; +} + +/* 80BF6AE0-80BF6DB0 000840 02D0+00 1/0 0/0 0/0 .text daObj_Gb_Create__FP10fopAc_ac_c */ +static int daObj_Gb_Create(fopAc_ac_c* actor) { + fopAcM_SetupActor(actor, obj_gb_class); + obj_gb_class* i_this = (obj_gb_class*)actor; + int rv = dComIfG_resLoad(&i_this->mPhase, "Obj_gb"); + + if (rv == cPhs_COMPLEATE_e) { + OS_REPORT("OBJ_GB PARAM %x\n", fopAcM_GetParam(i_this)); + i_this->field_0x57c = fopAcM_GetParam(i_this); + if (i_this->field_0x57c == 0xff) { + i_this->field_0x57c = 0; + } + u8 local_47 = (fopAcM_GetParam(i_this) >> 8) & 0xff; + if (local_47 == 0xff) { + if (i_this->field_0x57c == 0) { + local_47 = 100; + } else { + local_47 = 10; + } + } + if (i_this->field_0x57c == 0) { + i_this->scale.x = local_47 * 0.01f; + } else { + i_this->scale.x = local_47 * 0.5f; + } + i_this->scale.y = ((fopAcM_GetParam(i_this) >> 16) & 0xff) * 0.333333f * 0.5f; + i_this->mColorAlpha = fopAcM_GetParam(i_this) >> 24; + i_this->mSw1 = i_this->current.angle.x & 0xff; + i_this->mSw2 = (i_this->current.angle.x & 0xff00) >> 8; + i_this->shape_angle.x = 0; + i_this->current.angle.x = 0; + OS_REPORT("OBJ_GB//////////////OBJ_GB SET 1 !!\n"); + int heapSize; + if (i_this->field_0x57c == 0) { + heapSize = 0x1c40; + } else { + heapSize = 0x1320; + } + if (fopAcM_entrySolidHeap(i_this, useHeapInit, heapSize) == 0) { + OS_REPORT("//////////////OBJ_GB SET NON !!\n"); + return cPhs_ERROR_e; + } + OS_REPORT("//////////////OBJ_GB SET 2 !!\n"); + if (i_this->mpBgW != NULL) { + if (dComIfG_Bgsp().Regist(i_this->mpBgW, i_this) != 0) { + return cPhs_ERROR_e; + } + } + i_this->field_0x58e = cM_rndF(65536.0f); + if (strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0) { + i_this->mIsFinalBattle = 1; + } + s16 local_44 = 0; + cXyz cStack_30(0.0f, 0.0f, i_this->scale.x * 1000.0f); + for (int i = 0; i < 20; i++, local_44 += 0xccc) { + cMtx_YrotS(*calc_mtx, local_44); + MtxPosition(&cStack_30, &i_this->field_0x594[i]); + i_this->field_0x594[i] += i_this->current.pos; + } + daObj_Gb_Execute(i_this); + } + return rv; +} /* 80BF6E3C-80BF6E5C -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Gb_Method */ static actor_method_class l_daObj_Gb_Method = { - (process_method_func)daObj_Gb_Create__FP10fopAc_ac_c, - (process_method_func)daObj_Gb_Delete__FP12obj_gb_class, - (process_method_func)daObj_Gb_Execute__FP12obj_gb_class, - (process_method_func)daObj_Gb_IsDelete__FP12obj_gb_class, - (process_method_func)daObj_Gb_Draw__FP12obj_gb_class, + (process_method_func)daObj_Gb_Create, + (process_method_func)daObj_Gb_Delete, + (process_method_func)daObj_Gb_Execute, + (process_method_func)daObj_Gb_IsDelete, + (process_method_func)daObj_Gb_Draw, }; /* 80BF6E5C-80BF6E8C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_GB */ @@ -236,71 +277,4 @@ extern actor_process_profile_definition g_profile_OBJ_GB = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80BF6E8C-80BF6E98 000090 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80BF682C-80BF6A98 00058C 026C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BF6A98-80BF6AE0 0007F8 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BF6DD4-80BF6DD8 000018 0004+00 0/1 0/0 0/0 .rodata @4083 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4083 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80BF6DD4, &lit_4083); -#pragma pop - -/* 80BF6DD8-80BF6DDC 00001C 0004+00 0/1 0/0 0/0 .rodata @4084 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4084 = 0x3EAAAA9F; -COMPILER_STRIP_GATE(0x80BF6DD8, &lit_4084); -#pragma pop - -/* 80BF6DDC-80BF6DE0 000020 0004+00 0/1 0/0 0/0 .rodata @4085 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4085 = 65536.0f; -COMPILER_STRIP_GATE(0x80BF6DDC, &lit_4085); -#pragma pop - -/* 80BF6DE0-80BF6DE4 000024 0004+00 0/1 0/0 0/0 .rodata @4086 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4086 = 1000.0f; -COMPILER_STRIP_GATE(0x80BF6DE0, &lit_4086); -#pragma pop - -/* 80BF6DE4-80BF6DEC 000028 0008+00 0/1 0/0 0/0 .rodata @4088 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4088[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BF6DE4, &lit_4088); -#pragma pop - -/* 80BF6AE0-80BF6DB0 000840 02D0+00 1/0 0/0 0/0 .text daObj_Gb_Create__FP10fopAc_ac_c */ -static void daObj_Gb_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BF6DB0-80BF6DB4 000B10 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - /* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp index a137e9794e4..c5e545d81aa 100644 --- a/src/d/actor/d_a_obj_ten.cpp +++ b/src/d/actor/d_a_obj_ten.cpp @@ -4,171 +4,840 @@ */ #include "d/actor/d_a_obj_ten.h" +#include "d/actor/d_a_player.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_com_inf_game.h" +#include "f_op//f_op_actor_mng.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "SSystem/SComponent/c_lib.h" +#include "m_Do/m_Do_lib.h" +#include "d/d_menu_insect.h" - - -// -// Forward References: -// - -extern "C" void __ct__14daObj_TenHIO_cFv(); -extern "C" void InitCcSph__10daObjTEN_cFv(); -extern "C" void SetCcSph__10daObjTEN_cFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daObjTEN_Create__FP10fopAc_ac_c(); -extern "C" static void daObjTEN_Delete__FP10daObjTEN_c(); -extern "C" void WaitAction__10daObjTEN_cFv(); -extern "C" void WallCheck__10daObjTEN_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void SpeedSet__10daObjTEN_cFv(); -extern "C" void WallWalk__10daObjTEN_cFv(); -extern "C" void WalkAction__10daObjTEN_cFv(); -extern "C" void MoveAction__10daObjTEN_cFv(); -extern "C" void Action__10daObjTEN_cFv(); -extern "C" void ShopAction__10daObjTEN_cFv(); -extern "C" void checkGroundPos__10daObjTEN_cFv(); -extern "C" void Insect_Release__10daObjTEN_cFv(); -extern "C" void ParticleSet__10daObjTEN_cFv(); -extern "C" void BoomChk__10daObjTEN_cFv(); -extern "C" void Execute__10daObjTEN_cFv(); -extern "C" void ObjHit__10daObjTEN_cFv(); -extern "C" void Z_BufferChk__10daObjTEN_cFv(); -extern "C" void Delete__10daObjTEN_cFv(); -extern "C" void setBaseMtx__10daObjTEN_cFv(); -extern "C" static void daObjTEN_Draw__FP10daObjTEN_c(); -extern "C" static void daObjTEN_Execute__FP10daObjTEN_c(); -extern "C" void CreateChk__10daObjTEN_cFv(); -extern "C" void create__10daObjTEN_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" static bool daObjTEN_IsDelete__FP10daObjTEN_c(); -extern "C" void __dt__14daObj_TenHIO_cFv(); -extern "C" void __sinit_d_a_obj_ten_cpp(); -extern "C" static void func_80D0B8CC(); -extern "C" static void func_80D0B8D4(); -extern "C" extern char const* const d_a_obj_ten__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void mDoLib_pos2camera__FP3VecP3Vec(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -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 newData__13dDlst_peekZ_cFssPUl(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -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 CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void __ct__9dInsect_cFv(); -extern "C" void Insect_GetDemoMain__9dInsect_cFv(); -extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz(); -extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs(); -extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void isCatchNotGiveInsect__14dMenu_Insect_cFUc(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void __ct__10Z2CreatureFv(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" void __register_global_object(); - -// -// Declarations: -// +/* 80D087CC-80D087F4 0000EC 0028+00 1/1 0/0 0/0 .text __ct__14daObj_TenHIO_cFv */ +daObj_TenHIO_c::daObj_TenHIO_c() { + field_0x4 = -1; + field_0xc = 1.0f; + field_0x8 = 1.0f; +} /* ############################################################################################## */ -/* 80D0B8F0-80D0B8F4 000000 0004+00 14/14 0/0 0/0 .rodata @3775 */ -SECTION_RODATA static f32 const lit_3775 = 1.0f; -COMPILER_STRIP_GATE(0x80D0B8F0, &lit_3775); +/* 80D0B8F4-80D0B8F8 000004 0002+02 1/2 0/0 0/0 .rodata l_ten_itemno */ +static u8 const l_ten_itemno[2] = { + 0xCE, + 0xCF, +}; + +/* 80D0B8F8-80D0B938 000008 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3779 */ +const static dCcD_SrcSph ccSphSrc = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x14002, 0x11}, 0x0}}, // mObj + {dCcD_SE_STONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr +}; + +/* 80D087F4-80D08860 000114 006C+00 1/1 0/0 0/0 .text InitCcSph__10daObjTEN_cFv */ +void daObjTEN_c::InitCcSph() { + mStts.Init(1, 0, this); + mSph.Set(ccSphSrc); + mSph.SetStts(&mStts); + mSph.SetC(current.pos); + mSph.OnTgNoHitMark(); +} + +/* 80D08860-80D088B8 000180 0058+00 1/1 0/0 0/0 .text SetCcSph__10daObjTEN_cFv */ +void daObjTEN_c::SetCcSph() { + mSph.SetC(current.pos); + mSph.SetR(20.0f); + dComIfG_Ccsp()->Set(&mSph); +} + +/* 80D088B8-80D08B84 0001D8 02CC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* actor) { + daObjTEN_c* i_this = static_cast(actor); + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("I_Ten", 10); + JUT_ASSERT(246, modelData != 0); + i_this->mMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, 2, 1.0f, 0, -1, + &i_this->mCreature, 0, 0x11000284); + if (i_this->mMorf == NULL || i_this->mMorf->getModel() == NULL) { + return 0; + } + J3DModel* model = i_this->mMorf->getModel(); + i_this->mBrk = new mDoExt_brkAnm(); + if (i_this->mBrk == NULL) { + return 0; + } + if (i_this->mSex == 1) { + J3DAnmTevRegKey* anmKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes("I_Ten", 13); + if (i_this->mBrk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } + } + else { + J3DAnmTevRegKey* anmKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes("I_Ten", 14); + if (i_this->mBrk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } + } + i_this->mBtk = new mDoExt_btkAnm(); + if (i_this->mBtk == NULL) { + return 0; + } + if (i_this->mSex == 1) { + J3DAnmTextureSRTKey* anmKey = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("I_Ten", 17); + if (i_this->mBtk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } + } else { + J3DAnmTextureSRTKey* anmKey = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("I_Ten", 18); + if (i_this->mBtk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } + } + return 1; +} + +/* 80D08BCC-80D08BEC 0004EC 0020+00 1/0 0/0 0/0 .text daObjTEN_Create__FP10fopAc_ac_c */ +static int daObjTEN_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} + +/* 80D08BEC-80D08C10 00050C 0024+00 1/0 0/0 0/0 .text daObjTEN_Delete__FP10daObjTEN_c */ +static int daObjTEN_Delete(daObjTEN_c* i_this) { + static_cast(i_this)->Delete(); + return 1; +} + +/* 80D08C10-80D08D94 000530 0184+00 2/2 0/0 0/0 .text WaitAction__10daObjTEN_cFv */ +void daObjTEN_c::WaitAction() { + switch (field_0x5e9) { + case 0: + speedF = 0.0f; + J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7); + mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, + -1.0f); + field_0x5e9++; + field_0x5ea[0] = cM_rndF(50.0f) + 50.0f; + break; + case 1: + if (fopAcM_searchPlayerDistance(this) < 1500.0f) { + field_0x5ea[0]--; + if (field_0x5ea[0] <= 0) { + field_0x5ea[0]= 0; + } + if (field_0x5ea[0] == 0) { + int rnd = cM_rndF(100.0f); + if (rnd < 40) { + mAction = ACTION_WALK; + field_0x5e9 = 0; + } else if (rnd < 70) { + mAction = ACTION_MOVE; + field_0x5e9 = 0; + } else { + field_0x5ea[0] = cM_rndF(50.0f) + 50.0f; + } + } + } + break; + } +} + +/* 80D08D94-80D08FC0 0006B4 022C+00 1/1 0/0 0/0 .text WallCheck__10daObjTEN_cFv */ +BOOL daObjTEN_c::WallCheck() { + dBgS_LinChk linChk; + linChk.SetObj(); + linChk.Set(&old.pos, ¤t.pos, NULL); + if (dComIfG_Bgsp().LineCross(&linChk)) { + cM3dGPla acStack_b0; + dComIfG_Bgsp().GetTriPla(linChk, &acStack_b0); + cXyz* pfVar4 = acStack_b0.GetNP(); + current.pos = linChk.i_GetCross(); + cXyz cStack_bc(0.0f, 0.0f, 0.0f); + cXyz cStack_c8(0.0f, pfVar4->y, pfVar4->z); + field_0x602.z = -cM_atan2s(pfVar4->x, cStack_bc.abs(cStack_c8)); + field_0x602.x = cM_atan2s(pfVar4->z, pfVar4->y); + field_0x60a = cM_atan2s(pfVar4->x, pfVar4->z); + return 1; + } + return 0; +} + +/* 80D09008-80D09114 000928 010C+00 1/1 0/0 0/0 .text SpeedSet__10daObjTEN_cFv */ +void daObjTEN_c::SpeedSet() { + speed.y += gravity; + cXyz speedAmp(0.0f, speed.y, speedF); + cXyz speedRes(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::ZXYrotS(field_0x602); + mDoMtx_stack_c::YrotM(current.angle.y); + mDoMtx_stack_c::multVec(&speedAmp, &speedRes); + current.pos.x += speedRes.x; + current.pos.y += speedRes.y; + current.pos.z += speedRes.z; + cLib_addCalc2(&speedF, field_0x5f0, 0.4f, 10.0f); + cLib_addCalc2(&speed.y, field_0x5f4, 0.1f, 0.5f); + cLib_addCalcAngleS2(¤t.angle.y, field_0x5f8, 0x10, 0x100); + shape_angle.y = current.angle.y; +} + +/* 80D09114-80D09548 000A34 0434+00 1/1 0/0 0/0 .text WallWalk__10daObjTEN_cFv */ +void daObjTEN_c::WallWalk() { + cXyz cStack_138(0.0f, -100.0f, 3.0f * speedF); + cXyz cStack_144(0.0f, 40.0f, 0.0f); + cXyz cStack_150; + dBgS_LinChk adStack_a8; + dBgS_LinChk adStack_118; + adStack_a8.SetObj(); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x602); + mDoMtx_stack_c::YrotM(current.angle.y); + mDoMtx_stack_c::multVec(&cStack_138, &cStack_138); + mDoMtx_stack_c::multVec(&cStack_144, &cStack_144); + adStack_a8.Set(&cStack_144, &cStack_138, NULL); + if (dComIfG_Bgsp().LineCross(&adStack_a8) != 0) { + speedF = 0.3f; + cM3dGPla acStack_12c; + dComIfG_Bgsp().GetTriPla(adStack_a8, &acStack_12c); + cXyz* pfVar5 = acStack_12c.GetNP(); + s16 sVar7 = cM_atan2s(pfVar5->x, pfVar5->z); + cXyz cStack_15c(0.0f, 0.0f, 0.0f); + cXyz cStack_168(0.0f, pfVar5->y, pfVar5->z); + f32 uVar11 = cStack_15c.abs(cStack_168); + cStack_150 = adStack_a8.i_GetCross(); + if (0x1000 > sVar7 - field_0x60a && sVar7 - field_0x60a > -0x1000 && + cStack_150.abs(current.pos) < speedF * 3.0f) + { + current.pos = cStack_150; + field_0x602.z = -cM_atan2s(pfVar5->x, uVar11); + field_0x602.x = cM_atan2s(pfVar5->z, pfVar5->y); + field_0x60a = sVar7; + } else { + field_0x5f8 += 0x100; + } + } else { + field_0x5f8 += 0x100; + } + cLib_addCalcAngleS2(¤t.angle.y, field_0x5f8, 0x10, 0x50); + shape_angle.y = current.angle.y; +} + +/* 80D09548-80D09748 000E68 0200+00 2/2 0/0 0/0 .text WalkAction__10daObjTEN_cFv */ +void daObjTEN_c::WalkAction() { + for (int i = 0; i < 3; i++) { + field_0x5ea[i]--; + if (field_0x5ea[i] <= 0) { + field_0x5ea[i] = 0; + } + } + J3DAnmTransform* anmTransform; + switch (field_0x5e9) { + case 0: + anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7); + mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f, 0.0f, -1.0f); + field_0x5f0 = 0.5f; + speed.y = 0.0f; + field_0x5f4 = 0; + field_0x5e9++; + field_0x5ea[1] = cM_rndF(50.0f) + 50.0f; + break; + case 1: + if (field_0x5ea[0] == 0) { + cXyz local_48(cM_rndFX(100.0f), 0.0f, cM_rndFX(100.0f)); + field_0x5f8 = cM_atan2s(local_48.x, local_48.z); + field_0x5ea[0] = cM_rndF(50.0f) + 50.0f; + } + if (field_0x5ea[1] == 0) { + int rnd = cM_rndF(100.0f); + if (rnd < 30) { + mAction = ACTION_MOVE; + field_0x5e9 = 0; + } else if (rnd < 60) { + mAction = ACTION_WAIT; + field_0x5e9 = 0; + } else { + field_0x5ea[1] = cM_rndF(50.0f) + 50.0f; + } + } + break; + } + WallWalk(); +} + +/* 80D09748-80D09F58 001068 0810+00 2/2 0/0 0/0 .text MoveAction__10daObjTEN_cFv */ +void daObjTEN_c::MoveAction() { + for (int i = 0; i < 3; i++) { + field_0x5ea[i]--; + if (field_0x5ea[i] <= 0) { + field_0x5ea[i] = 0; + } + } + cXyz cStack_b0; + cXyz cStack_bc(0.0f, 1.0f, 0.0f); + dBgS_LinChk linkchk; + daPy_py_c* player = daPy_getPlayerActorClass(); + linkchk.SetObj(); + cXyz cStack_c8; + cXyz cStack_d4; + + switch (field_0x5e9) { + case 0: + { + J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6); + mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f); + field_0x5e9++; + field_0x5ea[0] = 20; + } + break; + case 1: + if (field_0x5ea[0] == 10) { + mMorf->setPlaySpeed(1.0f); + } + if (field_0x5ea[0] == 0) { + field_0x5e9++; + mDoMtx_stack_c::ZXYrotS(field_0x602); + mDoMtx_stack_c::multVec(&cStack_bc, &cStack_bc); + field_0x5ea[0] = cM_rndF(10.0f) + 30.0f; + if (field_0x624 == 0) { + field_0x5ea[1] = cM_rndF(80.0f) + 80.0f; + } else { + field_0x5ea[1] = cM_rndF(40.0f) + 40.0f; + } + field_0x5f0 = cM_rndF(5.0f) + 8.0f; + field_0x5f8 = field_0x60a; + field_0x5f4 = 3.0f; + speed.y = 5.0f; + } + break; + case 2: + { + cXyz local_e0; + cXyz* flamePos = player->getKandelaarFlamePos(); + if (flamePos != NULL) { + field_0x5f8 = cLib_targetAngleY(¤t.pos, flamePos); + if ((flamePos->abs(current.pos) < 200.0f) && speed.y < 0.0f) { + cLib_addCalcAngleS2(¤t.angle.y, field_0x5f8, 2, + 0x500); + } else { + cLib_addCalcAngleS2(¤t.angle.y, field_0x5f8, 0x10, + 0x200); + } + if (flamePos->abs(current.pos) < 11.0f && + fopAcM_GetSpeedF(player) < 1.0f) + { + local_e0.set(0.0f, 0.0f, 10.0f); + if (field_0x60d == 0) { + field_0x60a = cLib_targetAngleY(¤t.pos, flamePos); + } + cLib_offsetPos(&cStack_d4, flamePos, field_0x60a, &local_e0); + current.pos = cStack_d4; + shape_angle.x = 0x4000; + shape_angle.y = field_0x60a; + speedF = 0.0f; + field_0x5f0 = 0; + speed.y = 0; + field_0x5f4 = 0; + mMorf->setPlaySpeed(0.0f); + field_0x5f8 = 0; + current.angle.y = field_0x60a; + field_0x60d = 1; + J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7); + mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f); + } else { + if (field_0x60d != 0) { + field_0x60d = 0; + field_0x5f4 = 3.0f; + speed.y = 3.0f; + speedF = 8.0f; + field_0x5f0 = 8.0f; + mMorf->setPlaySpeed(1.0f); + field_0x60a = 0; + J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6); + mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f); + } + } + } + if (field_0x5ea[0] == 0) { + if (flamePos == NULL) { + if (field_0x624 == 0) { + local_e0 = home.pos - current.pos; + local_e0.x += cM_rndFX(1050.0f); + local_e0.z += cM_rndFX(1050.0f); + field_0x5f8 = cM_atan2s(local_e0.x, local_e0.z); + } else { + field_0x5f8 = cM_rndF(64000.0f); + } + } + field_0x5ea[0] = cM_rndF(20.0f) + 20.0f; + field_0x5f0 = cM_rndF(5.0f) + 8.0f; + } + if (field_0x5ea[1] == 0) { + field_0x5f4 = -cM_rndF(3.0f); + field_0x5ea[1] = cM_rndF(20.0f) + 20.0f; + } + mMorf->getFrame(); + SpeedSet(); + if (field_0x624 == 0) { + cLib_addCalcAngleS2(&field_0x602.x, 0, 0x10, 0x1000); + cLib_addCalcAngleS2(&field_0x602.z, 0, 0x10, 0x1000); + } else { + cLib_addCalcAngleS2(&field_0x602.x, 0, 0x10, 0x100); + cLib_addCalcAngleS2(&field_0x602.z, 0, 0x10, 0x100); + } + if (WallCheck()) { + mAction = ACTION_WAIT; + field_0x5e9 = 0; + speedF = 0; + speed.y = 0; + shape_angle.x = 0; + shape_angle.z = 0; + } + if (field_0x624 == 1) { + cLib_addCalcAngleS2(¤t.angle.y, field_0x5f8, 0x10, + 0x100); + } + if (field_0x60d == 0) { + cLib_chaseAngleS(&shape_angle.x, 0, 0x400); + } + } + break; + } + if (mMorf->getPlaySpeed() == 1.0f) { + mCreature.startCreatureSoundLevel(Z2SE_INSCT_BTBT, 0, -1); + } +} + +/* 80D09F58-80D0A01C 001878 00C4+00 1/1 0/0 0/0 .text Action__10daObjTEN_cFv */ +void daObjTEN_c::Action() { + switch (mAction) { + case ACTION_WAIT: + WaitAction(); + break; + case ACTION_WALK: + WalkAction(); + mCreature.startCreatureSoundLevel(Z2SE_INSCT_KSKS, 0, -1); + break; + case ACTION_MOVE: + MoveAction(); + break; + } + Insect_GetDemoMain(); + mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1); +} + +/* 80D0A01C-80D0A0D8 00193C 00BC+00 1/1 0/0 0/0 .text ShopAction__10daObjTEN_cFv */ +void daObjTEN_c::ShopAction() { + switch (mAction) { + case ACTION_WAIT: + WaitAction(); + break; + case ACTION_WALK: + WalkAction(); + mCreature.startCreatureSoundLevel(Z2SE_INSCT_KSKS, 0, -1); + break; + case ACTION_MOVE: + MoveAction(); + break; + } + mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1); +} + +/* 80D0A0D8-80D0A13C 0019F8 0064+00 1/1 0/0 0/0 .text checkGroundPos__10daObjTEN_cFv */ +void daObjTEN_c::checkGroundPos() { + cXyz acStack_28(current.pos); + mGndChk.SetPos(&acStack_28); + field_0x5e4 = dComIfG_Bgsp().GroundCross(&mGndChk); +} + +/* 80D0A13C-80D0A154 001A5C 0018+00 1/0 0/0 0/0 .text Insect_Release__10daObjTEN_cFv */ +void daObjTEN_c::Insect_Release() { + field_0x56C = 1; + field_0x624 = 2; + mAction = ACTION_MOVE; +} + +static f32 dummyLiteral() { return -9.0f; } + +/* 80D0A154-80D0A278 001A74 0124+00 1/1 0/0 0/0 .text ParticleSet__10daObjTEN_cFv */ +void daObjTEN_c::ParticleSet() { + if (field_0x618 > field_0x61c) { + cLib_addCalc2(&mParticleScale, 0.0f, 1.0f, 1.0f); + } else { + cLib_addCalc2(&mParticleScale, 1.0f, 1.0f, 1.0f); + } + mParticleKey1 = dComIfGp_particle_set(mParticleKey1, 0xa1b, ¤t.pos, &tevStr, + &shape_angle, 0, 0xff, 0, -1, 0, 0, 0); + f32 partScale = mParticleScale; + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mParticleKey1); + if (emitter != NULL) { + emitter->setGlobalParticleScale(partScale, partScale); + } +} + +/* 80D0A278-80D0A644 001B98 03CC+00 1/1 0/0 0/0 .text BoomChk__10daObjTEN_cFv */ +void daObjTEN_c::BoomChk() { + if (field_0x7a8 != 0) { + cXyz* playerPos = &fopAcM_GetPosition(daPy_getPlayerActorClass()); + home.pos = current.pos; + cXyz cStack_cc(*playerPos); + cStack_cc.y += 100.0f; + if (mBoomerang.posMove(¤t.pos, &shape_angle.y, NULL, + 0x1c00) != 0) { + mBoomerang.bgCheckAfterOffset(¤t.pos); + current.pos.y += 0.5f; + } else { + dBgS_LinChk linChk; + linChk.SetObj(); + linChk.Set(&cStack_cc, ¤t.pos, NULL); + if (dComIfG_Bgsp().LineCross(&linChk)) { + cM3dGPla acStack_c0; + dComIfG_Bgsp().GetTriPla(linChk, &acStack_c0); + current.pos = old.pos = linChk.i_GetCross(); + mAction = ACTION_WAIT; + field_0x5e9 = 0; + cXyz* pfVar7 = acStack_c0.GetNP(); + current.pos = linChk.i_GetCross(); + cXyz cStack_d8(0.0f, 0.0f, 0.0f); + cXyz cStack_e4(0.0f, pfVar7->y, pfVar7->z); + field_0x602.z = -cM_atan2s(pfVar7->x, cStack_d8.abs(cStack_e4)); + field_0x602.x = cM_atan2s(pfVar7->z, pfVar7->y); + field_0x60a = cM_atan2s(pfVar7->x, pfVar7->z); + } else { + mAction = 1; + field_0x5e9 = 2; + J3DAnmTransform* anmTransform = + (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6); + mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f, + 0.0f, -1.0f); + speedF = 8.0f; + field_0x5f0 = cM_rndF(5.0f) + 8.0f; + home.pos = current.pos; + field_0x5f4 = 5.0f; + speed.y = 5.0f; + field_0x5ea[0] = 50; + current.pos.y += 50.0f; + field_0x5ea[1] = cM_rndF(5.0f) + 5.0f; + current.pos.y = old.pos.y = playerPos->y + 100.0f; + } + field_0x7a8 = 0; + } + } +} + +/* 80D0A644-80D0A8C8 001F64 0284+00 1/1 0/0 0/0 .text Execute__10daObjTEN_cFv */ +int daObjTEN_c::Execute() { + if (ChkGetDemo()) { + field_0x618 = field_0x61c + 10000.0f; + mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1); + Insect_GetDemoMain(); + ParticleSet(); + return 1; + } else { + daPy_getPlayerActorClass(); + checkGroundPos(); + attention_info.position = current.pos; + eyePos = current.pos; + eyePos.y += 10.0f; + switch(field_0x624) { + case 0: + if (!fopAcM_checkHookCarryNow(this)) { + Action(); + } else { + home.pos = current.pos; + } + mParticleKey2 = dComIfGp_particle_set(mParticleKey2, 0xa1c, + ¤t.pos, &tevStr, &shape_angle, 0, + 0xff, 0, -1, 0, 0, 0); + SetCcSph(); + ObjHit(); + BoomChk(); + eyePos = current.pos; + eyePos.y += 10.0f; + attention_info.position = eyePos; + attention_info.position.y += 10.0f; + ParticleSet(); + break; + case 1: + ShopAction(); + break; + } + + if (mAction == ACTION_MOVE && field_0x5e9 == 2 && + speed.y < 0.0f) + { + mAcch.CrrPos(dComIfG_Bgsp()); + } + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mMorf->play(0, reverb); + mBtk->play(); + mBrk->play(); + setBaseMtx(); + } + return 1; +} + +/* 80D0A8C8-80D0AA50 0021E8 0188+00 1/1 0/0 0/0 .text ObjHit__10daObjTEN_cFv */ +void daObjTEN_c::ObjHit() { + if (mSph.ChkTgHit()) { + cCcD_Obj* hitObj = mSph.GetTgHitObj(); + if (hitObj->ChkAtType(AT_TYPE_BOOMERANG)) { + if (field_0x7a8 == 0) { + field_0x7a8 = 1; + mSph.GetTgHitGObj(); + mBoomerang.initOffset(¤t.pos); + } + } else { + if (!hitObj->ChkAtType(AT_TYPE_NORMAL_SWORD) && hitObj->ChkAtType(AT_TYPE_HOOKSHOT)) { + cXyz cStack_38(0.0f, 0.0f, 0.0f); + fpc_ProcID id = fopAcM_GetID(this); + daPy_getPlayerActorClass()->setHookshotCarryOffset(id, &cStack_38); + mAction = ACTION_MOVE; + field_0x5e9 = 2; + field_0x7a8 = 0; + J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6); + mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f, 0.0f, -1.0f); + speedF = 8.0f; + field_0x5f0 = cM_rndF(5.0f) + 8.0f; + field_0x5ea[1] = cM_rndF(5.0f) + 5.0f; + } + } + mSph.ClrTgHit(); + } +} + +/* 80D0AA50-80D0ABCC 002370 017C+00 1/1 0/0 0/0 .text Z_BufferChk__10daObjTEN_cFv */ +void daObjTEN_c::Z_BufferChk() { + cXyz local_5c; + cXyz cStack_68; + cStack_68 = current.pos; + cStack_68.y += 20.0f; + mDoLib_project(&cStack_68, &local_5c); + camera_class* camera = dComIfGp_getCamera(0); + f32 trimHeight; + if (camera != NULL) { + trimHeight = camera->mCamera.TrimHeight(); + } else { + trimHeight = 0.0f; + } + if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight && + local_5c.y < 448.0f - trimHeight) + { + dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x61c); + } + f32 near = dComIfGd_getView()->near; + f32 far = dComIfGd_getView()->far; + mDoLib_pos2camera(&cStack_68, &local_5c); + local_5c.z += 50.0f; + if (local_5c.z > 0.0f) { + local_5c.z = 0.0f; + } + field_0x618 = ((near + ((far * near) / local_5c.z)) / (far - near) + 1.0f) * 16777215.0f; +} + +/* ############################################################################################## */ +/* 80D0BAB8-80D0BABC 000008 0004+00 2/2 0/0 0/0 .bss None */ +static u8 data_80D0BAB8; + +/* 80D0ABCC-80D0AC34 0024EC 0068+00 1/1 0/0 0/0 .text Delete__10daObjTEN_cFv */ +int daObjTEN_c::Delete() { + dComIfG_resDelete(&mPhase, "I_Ten"); + if (field_0xa64 != 0) { + data_80D0BAB8 = 0; + } + mCreature.deleteObject(); + return 1; +} + +/* 80D0AC34-80D0AC9C 002554 0068+00 1/1 0/0 0/0 .text setBaseMtx__10daObjTEN_cFv */ +void daObjTEN_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x602); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(scale); + mMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + mMorf->modelCalc(); +} + +/* 80D0AC9C-80D0AD7C 0025BC 00E0+00 1/0 0/0 0/0 .text daObjTEN_Draw__FP10daObjTEN_c */ +static int daObjTEN_Draw(daObjTEN_c* i_this) { + if (i_this->mDraw) { + i_this->Z_BufferChk(); + J3DModel* model = i_this->mMorf->getModel(); + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &i_this->tevStr); + i_this->mBtk->entry(model->getModelData()); + i_this->mBrk->entry(model->getModelData()); + i_this->mMorf->entryDL(); + if (i_this->field_0x624 == 0) { + dComIfGd_setSimpleShadow(&i_this->current.pos, i_this->mAcch.GetGroundH(), 15.0f, + i_this->mAcch.m_gnd, 0, -0.6f, + dDlst_shadowControl_c::getSimpleTex()); + } + } + return 1; +} + +/* 80D0AD7C-80D0AD9C 00269C 0020+00 2/1 0/0 0/0 .text daObjTEN_Execute__FP10daObjTEN_c */ +static int daObjTEN_Execute(daObjTEN_c* i_this) { + return i_this->Execute(); +} + +/* ############################################################################################## */ +/* 80D0B9D0-80D0B9D4 0000E0 0004+00 1/2 0/0 0/0 .rodata l_musiya_num */ +static u16 const l_musiya_num[2] = { 0x19F, 0x1A0}; + +/* 80D0AD9C-80D0AF48 0026BC 01AC+00 1/1 0/0 0/0 .text CreateChk__10daObjTEN_cFv */ +bool daObjTEN_c::CreateChk() { + u8 uVar1 = (fopAcM_GetParam(this) & 0xf00) >> 8; + if (uVar1 == 15) { + uVar1 = 0; + } + if (field_0x624 != 2) { + if (uVar1 != 0) { + if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[0]]) || !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[1]])) { + return 0; + } + } else { + if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 && + dComIfGp_getStartStageRoomNo() == 3) + { + if (dMenu_Insect_c::isCatchNotGiveInsect(l_ten_itemno[mSex])) { + return 0; + } + if ((mSex == 0 && + !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[mSex]])) || + (mSex == 1 && + !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[mSex]]))) + { + return 0; + } + } + } + } + return 1; +} + +/* 80D0BAC8-80D0BAD8 000018 0010+00 2/2 0/0 0/0 .bss l_HIO */ +static daObj_TenHIO_c l_HIO; + +/* 80D0AF48-80D0B740 002868 07F8+00 1/1 0/0 0/0 .text create__10daObjTEN_cFv */ +int daObjTEN_c::create() { + fopAcM_SetupActor(this, daObjTEN_c); + int rv = dComIfG_resLoad(&mPhase, "I_Ten"); + if (rv == cPhs_COMPLEATE_e) { + field_0x624 = fopAcM_GetParam(this) & 0xf; + if (field_0x624 == 2) { + field_0x56C = 0; + shape_angle.x -= 0x2000; + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000); + } else { + mDraw = true; + } + attention_info.distances[4] = 0x5d; + mSex = (fopAcM_GetParam(this) & 0x10) >> 4; + setItemNo(l_ten_itemno[mSex]); + setSaveBitNo(l_musiya_num[mSex]); + if (mSex == 1) { + scale.set(l_HIO.field_0x8, l_HIO.field_0x8, l_HIO.field_0x8); + } else if (mSex == 0) { + scale.set(l_HIO.field_0xc, l_HIO.field_0xc, l_HIO.field_0xc); + } + if (CreateChk() == 0) { + return cPhs_ERROR_e; + } + OS_REPORT("TEN PARAM %x\n", fopAcM_GetParam(this)); + if (fopAcM_entrySolidHeap(this, useHeapInit, 0xbc0) == 0) { + return cPhs_ERROR_e; + } + if (data_80D0BAB8 == 0) { + data_80D0BAB8 = 1; + field_0xa64 = 1; + l_HIO.field_0x4 = -1; + } + cXyz cStack_f0(current.pos.x, current.pos.y + 100.0f, current.pos.z); + if (fopAcM_gc_c::gndCheck(&cStack_f0)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + } + gravity = 0.0f; + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, + &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + bool bVar3 = false; + cXyz cStack_fc(0.0f, 0.0f, 500.0f); + cXyz cStack_108(0.0f, 0.0f, -200.0f); + cXyz cStack_114; + cXyz cStack_120; + dBgS_LinChk linChk; + linChk.SetObj(); + for (int i = 0; i < 4; i++) { + cLib_offsetPos(&cStack_114, ¤t.pos, shape_angle.y + (i << 14), &cStack_fc); + cLib_offsetPos(&cStack_120, ¤t.pos, shape_angle.y + (i << 14), &cStack_108); + linChk.Set(&cStack_120, &cStack_114, NULL); + linChk.SetObj(); + if (dComIfG_Bgsp().LineCross(&linChk)) { + cM3dGPla acStack_d0; + dComIfG_Bgsp().GetTriPla(linChk, &acStack_d0); + cXyz* pfVar13 = acStack_d0.GetNP(); + current.pos = linChk.i_GetCross(); + cXyz cStack_12c(0.0f, 0.0f, 0.0f); + cXyz cStack_138(0.0f, pfVar13->y, pfVar13->z); + field_0x602.z = -cM_atan2s(pfVar13->x, cStack_12c.abs(cStack_138)); + field_0x602.x = cM_atan2s(pfVar13->z, pfVar13->y); + field_0x60a = cM_atan2s(pfVar13->x, pfVar13->z); + bVar3 = true; + break; + } + } + if (!bVar3) { + cStack_fc.set(0.0f, 500.0f, 0.0f); + cStack_114.set(0.0f, -1000.0f, 0.0f); + linChk.Set(&cStack_fc, &cStack_114, NULL); + linChk.SetObj(); + if (dComIfG_Bgsp().LineCross(&linChk)) { + cM3dGPla acStack_e4; + dComIfG_Bgsp().GetTriPla(linChk, &acStack_e4); + cXyz* pfVar13 = acStack_e4.GetNP(); + current.pos = linChk.i_GetCross(); + cXyz cStack_144(0.0f, 0.0f, 0.0f); + cXyz cStack_150(0.0f, pfVar13->y, pfVar13->z); + field_0x602.z = -cM_atan2s(pfVar13->x, cStack_144.abs(cStack_150)); + field_0x602.x = cM_atan2s(pfVar13->z, pfVar13->y); + field_0x60a = cM_atan2s(pfVar13->x, pfVar13->z); + } + } + if (field_0x624 == 0) { + InitCcSph(); + } + if (field_0x624 == 2) { + if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 && + dComIfGp_getStartStageRoomNo() == 3) + { + field_0x624 = 3; + } + } + fopAcM_SetMtx(this, mMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -50.0f, -50.0f, -50.0f); + fopAcM_SetMax(this, 50.0f, 50.0f, 50.0f); + mCreature.init(¤t.pos, &eyePos, 3, 1); + daObjTEN_Execute(this); + } + return rv; +} + +/* 80D0B840-80D0B848 003160 0008+00 1/0 0/0 0/0 .text daObjTEN_IsDelete__FP10daObjTEN_c + */ +static int daObjTEN_IsDelete(daObjTEN_c* param_0) { + return 1; +} /* 80D0B9F4-80D0BA14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTEN_Method */ static actor_method_class l_daObjTEN_Method = { - (process_method_func)daObjTEN_Create__FP10fopAc_ac_c, - (process_method_func)daObjTEN_Delete__FP10daObjTEN_c, - (process_method_func)daObjTEN_Execute__FP10daObjTEN_c, - (process_method_func)daObjTEN_IsDelete__FP10daObjTEN_c, - (process_method_func)daObjTEN_Draw__FP10daObjTEN_c, + (process_method_func)daObjTEN_Create, + (process_method_func)daObjTEN_Delete, + (process_method_func)daObjTEN_Execute, + (process_method_func)daObjTEN_IsDelete, + (process_method_func)daObjTEN_Draw, }; /* 80D0BA14-80D0BA44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ten */ @@ -189,577 +858,4 @@ extern actor_process_profile_definition g_profile_Obj_Ten = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80D0BA44-80D0BA68 000050 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_80D0B8D4, - (void*)NULL, - (void*)NULL, - (void*)func_80D0B8CC, -}; - -/* 80D0BA68-80D0BA74 000074 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, -}; - -/* 80D0BA74-80D0BA80 000080 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, -}; - -/* 80D0BA80-80D0BA8C 00008C 000C+00 1/1 0/0 0/0 .data __vt__10daObjTEN_c */ -SECTION_DATA extern void* __vt__10daObjTEN_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)Insect_Release__10daObjTEN_cFv, -}; - -/* 80D0BA8C-80D0BA98 000098 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80D0BA98-80D0BAA4 0000A4 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80D0BAA4-80D0BAB0 0000B0 000C+00 2/2 0/0 0/0 .data __vt__14daObj_TenHIO_c */ -SECTION_DATA extern void* __vt__14daObj_TenHIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daObj_TenHIO_cFv, -}; - -/* 80D087CC-80D087F4 0000EC 0028+00 1/1 0/0 0/0 .text __ct__14daObj_TenHIO_cFv */ -daObj_TenHIO_c::daObj_TenHIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B8F4-80D0B8F8 000004 0002+02 1/2 0/0 0/0 .rodata l_ten_itemno */ -SECTION_RODATA static u16 const l_ten_itemno[1 + 1 /* padding */] = { - 0xCECF, - /* padding */ - 0x0000, -}; -COMPILER_STRIP_GATE(0x80D0B8F4, &l_ten_itemno); - -/* 80D0B8F8-80D0B938 000008 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3779 */ -const static dCcD_SrcSph ccSphSrc = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x14002, 0x11}, 0x0}}, // mObj - {dCcD_SE_STONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr -}; - -/* 80D087F4-80D08860 000114 006C+00 1/1 0/0 0/0 .text InitCcSph__10daObjTEN_cFv */ -void daObjTEN_c::InitCcSph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B938-80D0B93C 000048 0004+00 1/3 0/0 0/0 .rodata @3788 */ -SECTION_RODATA static f32 const lit_3788 = 20.0f; -COMPILER_STRIP_GATE(0x80D0B938, &lit_3788); - -/* 80D08860-80D088B8 000180 0058+00 1/1 0/0 0/0 .text SetCcSph__10daObjTEN_cFv */ -void daObjTEN_c::SetCcSph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D0B9E4 = "I_Ten"; -#pragma pop - -/* 80D088B8-80D08B84 0001D8 02CC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D08B84-80D08BCC 0004A4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80D08BCC-80D08BEC 0004EC 0020+00 1/0 0/0 0/0 .text daObjTEN_Create__FP10fopAc_ac_c */ -static void daObjTEN_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D08BEC-80D08C10 00050C 0024+00 1/0 0/0 0/0 .text daObjTEN_Delete__FP10daObjTEN_c */ -static void daObjTEN_Delete(daObjTEN_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B93C-80D0B940 00004C 0004+00 1/12 0/0 0/0 .rodata @3939 */ -SECTION_RODATA static u8 const lit_3939[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D0B93C, &lit_3939); - -/* 80D0B940-80D0B944 000050 0004+00 0/5 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3940 = 5.0f; -COMPILER_STRIP_GATE(0x80D0B940, &lit_3940); -#pragma pop - -/* 80D0B944-80D0B948 000054 0004+00 0/5 0/0 0/0 .rodata @3941 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3941 = -1.0f; -COMPILER_STRIP_GATE(0x80D0B944, &lit_3941); -#pragma pop - -/* 80D0B948-80D0B94C 000058 0004+00 0/5 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3942 = 50.0f; -COMPILER_STRIP_GATE(0x80D0B948, &lit_3942); -#pragma pop - -/* 80D0B94C-80D0B950 00005C 0004+00 0/1 0/0 0/0 .rodata @3943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3943 = 1500.0f; -COMPILER_STRIP_GATE(0x80D0B94C, &lit_3943); -#pragma pop - -/* 80D0B950-80D0B958 000060 0004+04 0/4 0/0 0/0 .rodata @3944 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3944[1 + 1 /* padding */] = { - 100.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D0B950, &lit_3944); -#pragma pop - -/* 80D08C10-80D08D94 000530 0184+00 2/2 0/0 0/0 .text WaitAction__10daObjTEN_cFv */ -void daObjTEN_c::WaitAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B958-80D0B960 000068 0008+00 0/5 0/0 0/0 .rodata @3997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3997[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0B958, &lit_3997); -#pragma pop - -/* 80D0B960-80D0B968 000070 0008+00 0/5 0/0 0/0 .rodata @3998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3998[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0B960, &lit_3998); -#pragma pop - -/* 80D0B968-80D0B970 000078 0008+00 0/5 0/0 0/0 .rodata @3999 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3999[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0B968, &lit_3999); -#pragma pop - -/* 80D08D94-80D08FC0 0006B4 022C+00 1/1 0/0 0/0 .text WallCheck__10daObjTEN_cFv */ -void daObjTEN_c::WallCheck() { - // NONMATCHING -} - -/* 80D08FC0-80D09008 0008E0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B970-80D0B974 000080 0004+00 0/1 0/0 0/0 .rodata @4023 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4023 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D0B970, &lit_4023); -#pragma pop - -/* 80D0B974-80D0B978 000084 0004+00 0/3 0/0 0/0 .rodata @4024 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4024 = 10.0f; -COMPILER_STRIP_GATE(0x80D0B974, &lit_4024); -#pragma pop - -/* 80D0B978-80D0B97C 000088 0004+00 0/1 0/0 0/0 .rodata @4025 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4025 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D0B978, &lit_4025); -#pragma pop - -/* 80D0B97C-80D0B980 00008C 0004+00 0/3 0/0 0/0 .rodata @4026 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4026 = 0.5f; -COMPILER_STRIP_GATE(0x80D0B97C, &lit_4026); -#pragma pop - -/* 80D09008-80D09114 000928 010C+00 1/1 0/0 0/0 .text SpeedSet__10daObjTEN_cFv */ -void daObjTEN_c::SpeedSet() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B980-80D0B984 000090 0004+00 0/2 0/0 0/0 .rodata @4124 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4124 = 3.0f; -COMPILER_STRIP_GATE(0x80D0B980, &lit_4124); -#pragma pop - -/* 80D0B984-80D0B988 000094 0004+00 0/1 0/0 0/0 .rodata @4125 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4125 = -100.0f; -COMPILER_STRIP_GATE(0x80D0B984, &lit_4125); -#pragma pop - -/* 80D0B988-80D0B98C 000098 0004+00 0/2 0/0 0/0 .rodata @4126 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4126 = 40.0f; -COMPILER_STRIP_GATE(0x80D0B988, &lit_4126); -#pragma pop - -/* 80D0B98C-80D0B990 00009C 0004+00 0/1 0/0 0/0 .rodata @4127 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4127 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D0B98C, &lit_4127); -#pragma pop - -/* 80D09114-80D09548 000A34 0434+00 1/1 0/0 0/0 .text WallWalk__10daObjTEN_cFv */ -void daObjTEN_c::WallWalk() { - // NONMATCHING -} - -/* 80D09548-80D09748 000E68 0200+00 2/2 0/0 0/0 .text WalkAction__10daObjTEN_cFv */ -void daObjTEN_c::WalkAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B990-80D0B994 0000A0 0004+00 0/1 0/0 0/0 .rodata @4311 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4311 = 30.0f; -COMPILER_STRIP_GATE(0x80D0B990, &lit_4311); -#pragma pop - -/* 80D0B994-80D0B998 0000A4 0004+00 0/1 0/0 0/0 .rodata @4312 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4312 = 80.0f; -COMPILER_STRIP_GATE(0x80D0B994, &lit_4312); -#pragma pop - -/* 80D0B998-80D0B99C 0000A8 0004+00 0/3 0/0 0/0 .rodata @4313 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4313 = 8.0f; -COMPILER_STRIP_GATE(0x80D0B998, &lit_4313); -#pragma pop - -/* 80D0B99C-80D0B9A0 0000AC 0004+00 0/1 0/0 0/0 .rodata @4314 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4314 = 200.0f; -COMPILER_STRIP_GATE(0x80D0B99C, &lit_4314); -#pragma pop - -/* 80D0B9A0-80D0B9A4 0000B0 0004+00 0/1 0/0 0/0 .rodata @4315 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4315 = 11.0f; -COMPILER_STRIP_GATE(0x80D0B9A0, &lit_4315); -#pragma pop - -/* 80D0B9A4-80D0B9A8 0000B4 0004+00 0/1 0/0 0/0 .rodata @4316 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4316 = 1050.0f; -COMPILER_STRIP_GATE(0x80D0B9A4, &lit_4316); -#pragma pop - -/* 80D0B9A8-80D0B9AC 0000B8 0004+00 0/1 0/0 0/0 .rodata @4317 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4317 = 64000.0f; -COMPILER_STRIP_GATE(0x80D0B9A8, &lit_4317); -#pragma pop - -/* 80D09748-80D09F58 001068 0810+00 2/2 0/0 0/0 .text MoveAction__10daObjTEN_cFv */ -void daObjTEN_c::MoveAction() { - // NONMATCHING -} - -/* 80D09F58-80D0A01C 001878 00C4+00 1/1 0/0 0/0 .text Action__10daObjTEN_cFv */ -void daObjTEN_c::Action() { - // NONMATCHING -} - -/* 80D0A01C-80D0A0D8 00193C 00BC+00 1/1 0/0 0/0 .text ShopAction__10daObjTEN_cFv */ -void daObjTEN_c::ShopAction() { - // NONMATCHING -} - -/* 80D0A0D8-80D0A13C 0019F8 0064+00 1/1 0/0 0/0 .text checkGroundPos__10daObjTEN_cFv */ -void daObjTEN_c::checkGroundPos() { - // NONMATCHING -} - -/* 80D0A13C-80D0A154 001A5C 0018+00 1/0 0/0 0/0 .text Insect_Release__10daObjTEN_cFv */ -void daObjTEN_c::Insect_Release() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9AC-80D0B9B0 0000BC 0004+00 0/0 0/0 0/0 .rodata @4423 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4423 = -9.0f; -COMPILER_STRIP_GATE(0x80D0B9AC, &lit_4423); -#pragma pop - -/* 80D0B9B0-80D0B9B8 0000C0 0008+00 1/2 0/0 0/0 .rodata @4458 */ -SECTION_RODATA static u8 const lit_4458[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0B9B0, &lit_4458); - -/* 80D0A154-80D0A278 001A74 0124+00 1/1 0/0 0/0 .text ParticleSet__10daObjTEN_cFv */ -void daObjTEN_c::ParticleSet() { - // NONMATCHING -} - -/* 80D0A278-80D0A644 001B98 03CC+00 1/1 0/0 0/0 .text BoomChk__10daObjTEN_cFv */ -void daObjTEN_c::BoomChk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9B8-80D0B9BC 0000C8 0004+00 0/1 0/0 0/0 .rodata @4604 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4604 = 10000.0f; -COMPILER_STRIP_GATE(0x80D0B9B8, &lit_4604); -#pragma pop - -/* 80D0A644-80D0A8C8 001F64 0284+00 1/1 0/0 0/0 .text Execute__10daObjTEN_cFv */ -void daObjTEN_c::Execute() { - // NONMATCHING -} - -/* 80D0A8C8-80D0AA50 0021E8 0188+00 1/1 0/0 0/0 .text ObjHit__10daObjTEN_cFv */ -void daObjTEN_c::ObjHit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9BC-80D0B9C0 0000CC 0004+00 0/1 0/0 0/0 .rodata @4673 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4673 = 608.0f; -COMPILER_STRIP_GATE(0x80D0B9BC, &lit_4673); -#pragma pop - -/* 80D0B9C0-80D0B9C4 0000D0 0004+00 0/1 0/0 0/0 .rodata @4674 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4674 = 448.0f; -COMPILER_STRIP_GATE(0x80D0B9C0, &lit_4674); -#pragma pop - -/* 80D0B9C4-80D0B9C8 0000D4 0004+00 0/1 0/0 0/0 .rodata @4675 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4675 = 16777215.0f; -COMPILER_STRIP_GATE(0x80D0B9C4, &lit_4675); -#pragma pop - -/* 80D0AA50-80D0ABCC 002370 017C+00 1/1 0/0 0/0 .text Z_BufferChk__10daObjTEN_cFv */ -void daObjTEN_c::Z_BufferChk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0BAB8-80D0BABC 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_80D0BAB8[4]; - -/* 80D0ABCC-80D0AC34 0024EC 0068+00 1/1 0/0 0/0 .text Delete__10daObjTEN_cFv */ -void daObjTEN_c::Delete() { - // NONMATCHING -} - -/* 80D0AC34-80D0AC9C 002554 0068+00 1/1 0/0 0/0 .text setBaseMtx__10daObjTEN_cFv */ -void daObjTEN_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9C8-80D0B9CC 0000D8 0004+00 1/1 0/0 0/0 .rodata @4738 */ -SECTION_RODATA static f32 const lit_4738 = 15.0f; -COMPILER_STRIP_GATE(0x80D0B9C8, &lit_4738); - -/* 80D0B9CC-80D0B9D0 0000DC 0004+00 1/1 0/0 0/0 .rodata @4739 */ -SECTION_RODATA static f32 const lit_4739 = -3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D0B9CC, &lit_4739); - -/* 80D0AC9C-80D0AD7C 0025BC 00E0+00 1/0 0/0 0/0 .text daObjTEN_Draw__FP10daObjTEN_c */ -static void daObjTEN_Draw(daObjTEN_c* param_0) { - // NONMATCHING -} - -/* 80D0AD7C-80D0AD9C 00269C 0020+00 2/1 0/0 0/0 .text daObjTEN_Execute__FP10daObjTEN_c */ -static void daObjTEN_Execute(daObjTEN_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9D0-80D0B9D4 0000E0 0004+00 1/2 0/0 0/0 .rodata l_musiya_num */ -SECTION_RODATA static u32 const l_musiya_num = 0x019F01A0; -COMPILER_STRIP_GATE(0x80D0B9D0, &l_musiya_num); - -/* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D0B9EA = "R_SP160"; -#pragma pop - -/* 80D0AD9C-80D0AF48 0026BC 01AC+00 1/1 0/0 0/0 .text CreateChk__10daObjTEN_cFv */ -void daObjTEN_c::CreateChk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0B9D4-80D0B9D8 0000E4 0004+00 0/1 0/0 0/0 .rodata @5101 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5101 = 500.0f; -COMPILER_STRIP_GATE(0x80D0B9D4, &lit_5101); -#pragma pop - -/* 80D0B9D8-80D0B9DC 0000E8 0004+00 0/1 0/0 0/0 .rodata @5102 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5102 = -200.0f; -COMPILER_STRIP_GATE(0x80D0B9D8, &lit_5102); -#pragma pop - -/* 80D0B9DC-80D0B9E0 0000EC 0004+00 0/1 0/0 0/0 .rodata @5103 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5103 = -1000.0f; -COMPILER_STRIP_GATE(0x80D0B9DC, &lit_5103); -#pragma pop - -/* 80D0B9E0-80D0B9E4 0000F0 0004+00 0/1 0/0 0/0 .rodata @5104 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5104 = -50.0f; -COMPILER_STRIP_GATE(0x80D0B9E0, &lit_5104); -#pragma pop - -/* 80D0BABC-80D0BAC8 00000C 000C+00 1/1 0/0 0/0 .bss @3770 */ -static u8 lit_3770[12]; - -/* 80D0BAC8-80D0BAD8 000018 0010+00 2/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[16]; - -/* 80D0AF48-80D0B740 002868 07F8+00 1/1 0/0 0/0 .text create__10daObjTEN_cFv */ -void daObjTEN_c::create() { - // NONMATCHING -} - -/* 80D0B740-80D0B7B0 003060 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80D0B7B0-80D0B7F8 0030D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80D0B7F8-80D0B840 003118 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D0B840-80D0B848 003160 0008+00 1/0 0/0 0/0 .text daObjTEN_IsDelete__FP10daObjTEN_c - */ -static bool daObjTEN_IsDelete(daObjTEN_c* param_0) { - return true; -} - -/* 80D0B848-80D0B890 003168 0048+00 2/1 0/0 0/0 .text __dt__14daObj_TenHIO_cFv */ -daObj_TenHIO_c::~daObj_TenHIO_c() { - // NONMATCHING -} - -/* 80D0B890-80D0B8CC 0031B0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_ten_cpp */ -void __sinit_d_a_obj_ten_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80D0B890, __sinit_d_a_obj_ten_cpp); -#pragma pop - -/* 80D0B8CC-80D0B8D4 0031EC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80D0B8CC() { - // NONMATCHING -} - -/* 80D0B8D4-80D0B8DC 0031F4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80D0B8D4() { - // NONMATCHING -} - /* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_timeFire.cpp b/src/d/actor/d_a_obj_timeFire.cpp index 93de7a0a7d8..51ccec3f705 100644 --- a/src/d/actor/d_a_obj_timeFire.cpp +++ b/src/d/actor/d_a_obj_timeFire.cpp @@ -4,68 +4,172 @@ */ #include "d/actor/d_a_obj_timeFire.h" +#include "d/d_com_inf_game.h" #include "dol2asm.h" +/* 80D0E8EC-80D0E910 0000EC 0024+00 1/1 0/0 0/0 .text __ct__16daTimeFire_HIO_cFv */ +daTimeFire_HIO_c::daTimeFire_HIO_c() { + field_0x4 = 20; +} +/* 80D0E958-80D0E9B0 000158 0058+00 1/1 0/0 0/0 .text setBaseMtx__12daTimeFire_cFv */ +void daTimeFire_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); +} -// -// Forward References: -// +/* 80D0E9B0-80D0EACC 0001B0 011C+00 1/1 0/0 0/0 .text create__12daTimeFire_cFv */ +int daTimeFire_c::create() { + fopAcM_SetupActor(this, daTimeFire_c); + setBaseMtx(); + field_0x570 = current.pos; + lightInit(); + mStartTime = getStartTime(); + mEndTime = getEndTime(); + int scaleParam = getScale(); + f32 fVar1 = scaleParam / 10.0f; + mParticleScale.set(fVar1, fVar1, fVar1); + field_0x56c = fireCheck(1); + if (!field_0x56c) { + cutLight(); + field_0x56d = false; + } else { + setLight(); + field_0x56d = true; + } + field_0x568 = 0; + field_0x569 = 0; + return cPhs_COMPLEATE_e; +} -extern "C" void __ct__16daTimeFire_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__12daTimeFire_cFv(); -extern "C" void create__12daTimeFire_cFv(); -extern "C" void lightInit__12daTimeFire_cFv(); -extern "C" void setLight__12daTimeFire_cFv(); -extern "C" void cutLight__12daTimeFire_cFv(); -extern "C" void Execute__12daTimeFire_cFv(); -extern "C" void fireCheck__12daTimeFire_cFUc(); -extern "C" bool Draw__12daTimeFire_cFv(); -extern "C" void Delete__12daTimeFire_cFv(); -extern "C" static void daTimeFire_Draw__FP12daTimeFire_c(); -extern "C" static void daTimeFire_Execute__FP12daTimeFire_c(); -extern "C" static void daTimeFire_Delete__FP12daTimeFire_c(); -extern "C" static void daTimeFire_Create__FP10fopAc_ac_c(); -extern "C" void __dt__16daTimeFire_HIO_cFv(); -extern "C" void __sinit_d_a_obj_timeFire_cpp(); +/* 80D0EACC-80D0EB40 0002CC 0074+00 1/1 0/0 0/0 .text lightInit__12daTimeFire_cFv */ +void daTimeFire_c::lightInit() { + field_0x594 = field_0x570; + field_0x594.y += 10.0f; + mLightInfluence.mPosition = field_0x594; + mLightInfluence.mColor.r = 0xbc; + mLightInfluence.mColor.g = 0x66; + mLightInfluence.mColor.b = 0x42; + mLightInfluence.mPow = 500.0f; + mLightInfluence.mFluctuation = 1.0f; +} -// -// External References: -// +/* 80D0EB40-80D0EB64 000340 0024+00 2/2 0/0 0/0 .text setLight__12daTimeFire_cFv */ +void daTimeFire_c::setLight() { + dKy_plight_set(&mLightInfluence); +} -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dKy_getdaytime_hour__Fv(); -extern "C" void dKy_getdaytime_minute__Fv(); -extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +/* 80D0EB64-80D0EB88 000364 0024+00 2/2 0/0 0/0 .text cutLight__12daTimeFire_cFv */ +void daTimeFire_c::cutLight() { + dKy_plight_cut(&mLightInfluence); +} -// -// Declarations: -// +/* 80D0EB88-80D0ED68 000388 01E0+00 1/1 0/0 0/0 .text Execute__12daTimeFire_cFv */ +int daTimeFire_c::Execute() { + bool prevFireCheck = field_0x56c; + field_0x56c = fireCheck(0); + if (prevFireCheck != field_0x56c) { + if (field_0x56c == 0) { + cutLight(); + field_0x56d = false; + } else { + setLight(); + field_0x56d = true; + } + } + if (field_0x56d) { + mParticleId1 = dComIfGp_particle_set(mParticleId1, 0x3ad, &field_0x570, NULL, &mParticleScale); + mParticleId2 = dComIfGp_particle_set(mParticleId2, 0x3af, &field_0x570, NULL, &mParticleScale); + mParticleId3 = dComIfGp_particle_set(mParticleId3, 0x3ae, &field_0x570, NULL, &mParticleScale); + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &field_0x570, 0, reverb); + } + return 1; +} + +/* 80D0ED68-80D0EF88 000568 0220+00 2/2 0/0 0/0 .text fireCheck__12daTimeFire_cFUc */ +bool daTimeFire_c::fireCheck(u8 param_1) { + bool inTime = false; + BOOL isSw; + if (getSw() == 0xff) { + isSw = 1; + } else { + isSw = fopAcM_isSwitch(this, getSw()) & 0xff; + } + if (mStartTime > mEndTime) { + if (dKy_getdaytime_hour() >= mStartTime || dKy_getdaytime_hour() <= mEndTime) { + inTime = true; + } + } else { + if (dKy_getdaytime_hour() >= mStartTime && dKy_getdaytime_hour() <= mEndTime) { + inTime = true; + } + } + if (inTime && (isSw & 0xff) && dKy_getdaytime_hour() == mStartTime && dKy_getdaytime_minute() == 0 && + field_0x569 == 0 && param_1 == 0) + { + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &field_0x570, 0, reverb); + field_0x569 = 1; + } + if (inTime && (isSw & 0xff) && dKy_getdaytime_hour() == mEndTime && dKy_getdaytime_minute() == 0 && + field_0x569 == 1 && param_1 == 0) + { + s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this)); + mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &field_0x570, 0, reverb); + field_0x569 = 2; + } + if (inTime && (isSw & 0xff)) { + return 1; + } + field_0x569 = 0; + return 0; +} + +/* 80D0EF88-80D0EF90 000788 0008+00 1/1 0/0 0/0 .text Draw__12daTimeFire_cFv */ +int daTimeFire_c::Draw() { + return 1; +} + +/* 80D0EF90-80D0EFB8 000790 0028+00 1/1 0/0 0/0 .text Delete__12daTimeFire_cFv */ +int daTimeFire_c::Delete() { + dKy_plight_cut(&mLightInfluence); + return 1; +} + +/* 80D0EFB8-80D0EFD8 0007B8 0020+00 1/0 0/0 0/0 .text daTimeFire_Draw__FP12daTimeFire_c + */ +static int daTimeFire_Draw(daTimeFire_c* i_this) { + return i_this->Draw(); +} + +/* 80D0EFD8-80D0EFF8 0007D8 0020+00 1/0 0/0 0/0 .text daTimeFire_Execute__FP12daTimeFire_c */ +static int daTimeFire_Execute(daTimeFire_c* i_this) { + return i_this->Execute(); +} + +/* 80D0EFF8-80D0F018 0007F8 0020+00 1/0 0/0 0/0 .text daTimeFire_Delete__FP12daTimeFire_c + */ +static int daTimeFire_Delete(daTimeFire_c* i_this) { + return i_this->Delete(); +} + +/* 80D0F018-80D0F038 000818 0020+00 1/0 0/0 0/0 .text daTimeFire_Create__FP10fopAc_ac_c + */ +static int daTimeFire_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} + +/* 80D0F17C-80D0F184 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ +static daTimeFire_HIO_c l_HIO; -/* ############################################################################################## */ /* 80D0F100-80D0F120 -00001 0020+00 1/0 0/0 0/0 .data l_daTimeFire_Method */ static actor_method_class l_daTimeFire_Method = { - (process_method_func)daTimeFire_Create__FP10fopAc_ac_c, - (process_method_func)daTimeFire_Delete__FP12daTimeFire_c, - (process_method_func)daTimeFire_Execute__FP12daTimeFire_c, - 0, - (process_method_func)daTimeFire_Draw__FP12daTimeFire_c, + (process_method_func)daTimeFire_Create, + (process_method_func)daTimeFire_Delete, + (process_method_func)daTimeFire_Execute, + NULL, + (process_method_func)daTimeFire_Draw, }; /* 80D0F120-80D0F150 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TimeFire */ @@ -85,150 +189,3 @@ extern actor_process_profile_definition g_profile_Obj_TimeFire = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80D0F150-80D0F15C 000050 000C+00 2/2 0/0 0/0 .data __vt__16daTimeFire_HIO_c */ -SECTION_DATA extern void* __vt__16daTimeFire_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daTimeFire_HIO_cFv, -}; - -/* 80D0F15C-80D0F168 00005C 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, -}; - -/* 80D0E8EC-80D0E910 0000EC 0024+00 1/1 0/0 0/0 .text __ct__16daTimeFire_HIO_cFv */ -daTimeFire_HIO_c::daTimeFire_HIO_c() { - // NONMATCHING -} - -/* 80D0E910-80D0E958 000110 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 -} - -/* 80D0E958-80D0E9B0 000158 0058+00 1/1 0/0 0/0 .text setBaseMtx__12daTimeFire_cFv */ -void daTimeFire_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0F0E4-80D0F0EC 000000 0004+04 2/2 0/0 0/0 .rodata @3686 */ -SECTION_RODATA static f32 const lit_3686[1 + 1 /* padding */] = { - 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D0F0E4, &lit_3686); - -/* 80D0F0EC-80D0F0F4 000008 0008+00 1/1 0/0 0/0 .rodata @3688 */ -SECTION_RODATA static u8 const lit_3688[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D0F0EC, &lit_3688); - -/* 80D0E9B0-80D0EACC 0001B0 011C+00 1/1 0/0 0/0 .text create__12daTimeFire_cFv */ -void daTimeFire_c::create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0F0F4-80D0F0F8 000010 0004+00 0/1 0/0 0/0 .rodata @3707 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3707 = 500.0f; -COMPILER_STRIP_GATE(0x80D0F0F4, &lit_3707); -#pragma pop - -/* 80D0F0F8-80D0F0FC 000014 0004+00 2/3 0/0 0/0 .rodata @3708 */ -SECTION_RODATA static f32 const lit_3708 = 1.0f; -COMPILER_STRIP_GATE(0x80D0F0F8, &lit_3708); - -/* 80D0EACC-80D0EB40 0002CC 0074+00 1/1 0/0 0/0 .text lightInit__12daTimeFire_cFv */ -void daTimeFire_c::lightInit() { - // NONMATCHING -} - -/* 80D0EB40-80D0EB64 000340 0024+00 2/2 0/0 0/0 .text setLight__12daTimeFire_cFv */ -void daTimeFire_c::setLight() { - // NONMATCHING -} - -/* 80D0EB64-80D0EB88 000364 0024+00 2/2 0/0 0/0 .text cutLight__12daTimeFire_cFv */ -void daTimeFire_c::cutLight() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0F0FC-80D0F100 000018 0004+00 2/2 0/0 0/0 .rodata @3757 */ -SECTION_RODATA static f32 const lit_3757 = -1.0f; -COMPILER_STRIP_GATE(0x80D0F0FC, &lit_3757); - -/* 80D0EB88-80D0ED68 000388 01E0+00 1/1 0/0 0/0 .text Execute__12daTimeFire_cFv */ -void daTimeFire_c::Execute() { - // NONMATCHING -} - -/* 80D0ED68-80D0EF88 000568 0220+00 2/2 0/0 0/0 .text fireCheck__12daTimeFire_cFUc */ -void daTimeFire_c::fireCheck(u8 param_0) { - // NONMATCHING -} - -/* 80D0EF88-80D0EF90 000788 0008+00 1/1 0/0 0/0 .text Draw__12daTimeFire_cFv */ -bool daTimeFire_c::Draw() { - return true; -} - -/* 80D0EF90-80D0EFB8 000790 0028+00 1/1 0/0 0/0 .text Delete__12daTimeFire_cFv */ -void daTimeFire_c::Delete() { - // NONMATCHING -} - -/* 80D0EFB8-80D0EFD8 0007B8 0020+00 1/0 0/0 0/0 .text daTimeFire_Draw__FP12daTimeFire_c - */ -static void daTimeFire_Draw(daTimeFire_c* param_0) { - // NONMATCHING -} - -/* 80D0EFD8-80D0EFF8 0007D8 0020+00 1/0 0/0 0/0 .text daTimeFire_Execute__FP12daTimeFire_c */ -static void daTimeFire_Execute(daTimeFire_c* param_0) { - // NONMATCHING -} - -/* 80D0EFF8-80D0F018 0007F8 0020+00 1/0 0/0 0/0 .text daTimeFire_Delete__FP12daTimeFire_c - */ -static void daTimeFire_Delete(daTimeFire_c* param_0) { - // NONMATCHING -} - -/* 80D0F018-80D0F038 000818 0020+00 1/0 0/0 0/0 .text daTimeFire_Create__FP10fopAc_ac_c - */ -static void daTimeFire_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D0F038-80D0F094 000838 005C+00 2/1 0/0 0/0 .text __dt__16daTimeFire_HIO_cFv */ -daTimeFire_HIO_c::~daTimeFire_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D0F170-80D0F17C 000008 000C+00 1/1 0/0 0/0 .bss @3621 */ -static u8 lit_3621[12]; - -/* 80D0F17C-80D0F184 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[8]; - -/* 80D0F094-80D0F0D0 000894 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_timeFire_cpp */ -void __sinit_d_a_obj_timeFire_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80D0F094, __sinit_d_a_obj_timeFire_cpp); -#pragma pop diff --git a/src/d/actor/d_a_obj_toaru_maki.cpp b/src/d/actor/d_a_obj_toaru_maki.cpp index ba7bfdc0332..98167522101 100644 --- a/src/d/actor/d_a_obj_toaru_maki.cpp +++ b/src/d/actor/d_a_obj_toaru_maki.cpp @@ -4,77 +4,148 @@ */ #include "d/actor/d_a_obj_toaru_maki.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" static void daObjToaruMaki_c_createHeap__FP10fopAc_ac_c(); -extern "C" void __ct__16daObjToaruMaki_cFv(); -extern "C" void __dt__16daObjToaruMaki_cFv(); -extern "C" void createHeap__16daObjToaruMaki_cFv(); -extern "C" void create__16daObjToaruMaki_cFv(); -extern "C" void Delete__16daObjToaruMaki_cFv(); -extern "C" void setModelMtx__16daObjToaruMaki_cFv(); -extern "C" void draw__16daObjToaruMaki_cFv(); -extern "C" void execute__16daObjToaruMaki_cFv(); -extern "C" static void daObjToaruMaki_create__FP16daObjToaruMaki_c(); -extern "C" static void daObjToaruMaki_Delete__FP16daObjToaruMaki_c(); -extern "C" static void daObjToaruMaki_execute__FP16daObjToaruMaki_c(); -extern "C" static void daObjToaruMaki_draw__FP16daObjToaruMaki_c(); -extern "C" extern char const* const d_a_obj_toaru_maki__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_setupStageTexture__FP12J3DModelData(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -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_cFPCclP11dRes_info_ci(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" u8 now__14mDoMtx_stack_c[48]; - -// -// Declarations: -// +#include "d/d_bg_w.h" /* 80D13078-80D13098 000078 0020+00 1/1 0/0 0/0 .text daObjToaruMaki_c_createHeap__FP10fopAc_ac_c */ static int daObjToaruMaki_c_createHeap(fopAc_ac_c* i_this) { - // NONMATCHING + return static_cast(i_this)->createHeap(); } /* 80D13624-80D1362C -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ static char* l_arcName[2] = {"T_Maki1", "T_Maki2"}; +/* 80D13098-80D130E0 000098 0048+00 2/2 0/0 0/0 .text __ct__16daObjToaruMaki_cFv */ +daObjToaruMaki_c::daObjToaruMaki_c() { + mpBgW = NULL; + mpModel = NULL; +} + +/* 80D130E0-80D1316C 0000E0 008C+00 1/0 0/0 0/0 .text __dt__16daObjToaruMaki_cFv */ +daObjToaruMaki_c::~daObjToaruMaki_c() { + dComIfG_resDelete(this, l_arcName[getNameArg_0()]); +} + +/* 80D13604-80D1360C 000000 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */ +static const u32 l_bmdIdx[2] = {4, 3}; + +/* 80D1316C-80D132B4 00016C 0148+00 1/1 0/0 0/0 .text createHeap__16daObjToaruMaki_cFv */ +int daObjToaruMaki_c::createHeap() { + u32 nameArg = getNameArg_0(); + J3DModelData* a_model_data_p = + (J3DModelData*)dComIfG_getObjectRes(l_arcName[nameArg], l_bmdIdx[nameArg]); + JUT_ASSERT(101, a_model_data_p != 0); + mpModel = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + if (nameArg == 0) { + mpBgW = new dBgW(); + if (mpBgW == NULL) { + return 0; + } + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + MTXCopy(mDoMtx_stack_c::get(), mMtx); + cBgD_t* cBgD = (cBgD_t*)dComIfG_getObjectRes(l_arcName[nameArg], 7); + if (mpBgW->Set(cBgD, 1, &mMtx) == 1) { + return 0; + } + } + return 1; +} + +/* 80D1360C-80D13614 000008 0008+00 1/1 0/0 0/0 .rodata l_heapSize */ +static const u32 l_heapSize[2] = { + 0x2000, + 0x0EB0, +}; + +/* 80D132B4-80D133C0 0002B4 010C+00 1/1 0/0 0/0 .text create__16daObjToaruMaki_cFv */ +int daObjToaruMaki_c::create() { + fopAcM_SetupActor(this, daObjToaruMaki_c); + u32 nameArg = getNameArg_0(); + int rv = dComIfG_resLoad(this, l_arcName[nameArg]); + if (rv == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this, daObjToaruMaki_c_createHeap, l_heapSize[nameArg]) == 0) { + return cPhs_ERROR_e; + } + mDoExt_setupStageTexture(mpModel->getModelData()); + if (nameArg == 0) { + if (dComIfG_Bgsp().Regist(mpBgW, this) != 0) { + return cPhs_ERROR_e; + } + } + setModelMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + } + return rv; +} + +/* 80D133C0-80D1343C 0003C0 007C+00 1/1 0/0 0/0 .text Delete__16daObjToaruMaki_cFv */ +int daObjToaruMaki_c::Delete() { + if (getNameArg_0() == 0 && mpBgW != NULL && mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + this->~daObjToaruMaki_c(); + return 1; +} + +/* 80D1343C-80D134A0 00043C 0064+00 2/2 0/0 0/0 .text setModelMtx__16daObjToaruMaki_cFv + */ +void daObjToaruMaki_c::setModelMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* 80D134A0-80D13524 0004A0 0084+00 1/1 0/0 0/0 .text draw__16daObjToaruMaki_cFv */ +int daObjToaruMaki_c::draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setList(); + mDoExt_modelUpdateDL(mpModel); + return 1; +} + +/* 80D13524-80D13548 000524 0024+00 1/1 0/0 0/0 .text execute__16daObjToaruMaki_cFv */ +int daObjToaruMaki_c::execute() { + setModelMtx(); + return 1; +} + +/* 80D13548-80D1359C 000548 0054+00 1/0 0/0 0/0 .text daObjToaruMaki_create__FP16daObjToaruMaki_c + */ +static int daObjToaruMaki_create(daObjToaruMaki_c* i_this) { + // !@bug this setup is called twice. No adverse effects though. + fopAcM_SetupActor(i_this, daObjToaruMaki_c); + return i_this->create(); +} + +/* 80D1359C-80D135BC 00059C 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_Delete__FP16daObjToaruMaki_c + */ +static int daObjToaruMaki_Delete(daObjToaruMaki_c* i_this) { + return i_this->Delete(); +} + +/* 80D135BC-80D135DC 0005BC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_execute__FP16daObjToaruMaki_c + */ +static int daObjToaruMaki_execute(daObjToaruMaki_c* i_this) { + return i_this->execute();; +} + +/* 80D135DC-80D135FC 0005DC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_draw__FP16daObjToaruMaki_c */ +static int daObjToaruMaki_draw(daObjToaruMaki_c* i_this) { + return i_this->draw(); +} + /* 80D1362C-80D1364C -00001 0020+00 1/0 0/0 0/0 .data daObjToaruMaki_METHODS */ static actor_method_class daObjToaruMaki_METHODS = { - (process_method_func)daObjToaruMaki_create__FP16daObjToaruMaki_c, - (process_method_func)daObjToaruMaki_Delete__FP16daObjToaruMaki_c, - (process_method_func)daObjToaruMaki_execute__FP16daObjToaruMaki_c, - 0, - (process_method_func)daObjToaruMaki_draw__FP16daObjToaruMaki_c, + (process_method_func)daObjToaruMaki_create, + (process_method_func)daObjToaruMaki_Delete, + (process_method_func)daObjToaruMaki_execute, + NULL, + (process_method_func)daObjToaruMaki_draw, }; /* 80D1364C-80D1367C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_ToaruMaki */ @@ -94,83 +165,3 @@ extern actor_process_profile_definition g_profile_Obj_ToaruMaki = { fopAc_ENV_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80D1367C-80D13688 000058 000C+00 2/2 0/0 0/0 .data __vt__16daObjToaruMaki_c */ -SECTION_DATA extern void* __vt__16daObjToaruMaki_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daObjToaruMaki_cFv, -}; - -/* 80D13098-80D130E0 000098 0048+00 2/2 0/0 0/0 .text __ct__16daObjToaruMaki_cFv */ -daObjToaruMaki_c::daObjToaruMaki_c() { - // NONMATCHING -} - -/* 80D130E0-80D1316C 0000E0 008C+00 1/0 0/0 0/0 .text __dt__16daObjToaruMaki_cFv */ -daObjToaruMaki_c::~daObjToaruMaki_c() { - // NONMATCHING -} - -/* 80D13604-80D1360C 000000 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */ -static const u32 l_bmdIdx[2] = {4, 3}; - -/* 80D1316C-80D132B4 00016C 0148+00 1/1 0/0 0/0 .text createHeap__16daObjToaruMaki_cFv */ -int daObjToaruMaki_c::createHeap() { - // NONMATCHING -} - -/* 80D1360C-80D13614 000008 0008+00 1/1 0/0 0/0 .rodata l_heapSize */ -static const u32 l_heapSize[2] = { - 0x2000, - 0x0EB0, -}; - -/* 80D132B4-80D133C0 0002B4 010C+00 1/1 0/0 0/0 .text create__16daObjToaruMaki_cFv */ -int daObjToaruMaki_c::create() { - // NONMATCHING -} - -/* 80D133C0-80D1343C 0003C0 007C+00 1/1 0/0 0/0 .text Delete__16daObjToaruMaki_cFv */ -int daObjToaruMaki_c::Delete() { - // NONMATCHING -} - -/* 80D1343C-80D134A0 00043C 0064+00 2/2 0/0 0/0 .text setModelMtx__16daObjToaruMaki_cFv - */ -void daObjToaruMaki_c::setModelMtx() { - // NONMATCHING -} - -/* 80D134A0-80D13524 0004A0 0084+00 1/1 0/0 0/0 .text draw__16daObjToaruMaki_cFv */ -int daObjToaruMaki_c::draw() { - // NONMATCHING -} - -/* 80D13524-80D13548 000524 0024+00 1/1 0/0 0/0 .text execute__16daObjToaruMaki_cFv */ -int daObjToaruMaki_c::execute() { - // NONMATCHING -} - -/* 80D13548-80D1359C 000548 0054+00 1/0 0/0 0/0 .text daObjToaruMaki_create__FP16daObjToaruMaki_c - */ -static int daObjToaruMaki_create(daObjToaruMaki_c* i_this) { - // NONMATCHING -} - -/* 80D1359C-80D135BC 00059C 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_Delete__FP16daObjToaruMaki_c - */ -static int daObjToaruMaki_Delete(daObjToaruMaki_c* i_this) { - // NONMATCHING -} - -/* 80D135BC-80D135DC 0005BC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_execute__FP16daObjToaruMaki_c - */ -static int daObjToaruMaki_execute(daObjToaruMaki_c* i_this) { - // NONMATCHING -} - -/* 80D135DC-80D135FC 0005DC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_draw__FP16daObjToaruMaki_c */ -static int daObjToaruMaki_draw(daObjToaruMaki_c* i_this) { - // NONMATCHING -}