From 3829ee6d4854a18bb6c19ffd1e250632946c0206 Mon Sep 17 00:00:00 2001 From: robojumper Date: Sat, 28 Sep 2024 00:19:00 +0200 Subject: [PATCH] Rough dynamic collision setup (#24) * Rough collider shape setup * d_a_obj_toD3_stone_figure OK * Cleanup * Cleanup 2 --- config/SOUE01/rels/d_a_obj_spikeNP/splits.txt | 3 + .../SOUE01/rels/d_a_obj_spikeNP/symbols.txt | 94 ++-- .../d_a_obj_toD3_stone_figureNP/splits.txt | 3 + .../d_a_obj_toD3_stone_figureNP/symbols.txt | 117 ++-- .../SOUE01/rels/d_a_obj_triforceNP/splits.txt | 2 + .../rels/d_a_obj_triforceNP/symbols.txt | 28 +- config/SOUE01/splits.txt | 25 + config/SOUE01/symbols.txt | 486 ++++++++-------- configure.py | 11 +- include/d/a/obj/d_a_obj_base.h | 14 +- include/d/a/obj/d_a_obj_spike.h | 38 ++ include/d/a/obj/d_a_obj_toD3_stone_figure.h | 47 ++ include/d/a/obj/d_a_obj_triforce.h | 43 ++ include/d/d_base.h | 2 +- include/m/m_angle.h | 9 + include/m/m_vec.h | 5 + include/nw4r/math/math_triangular.h | 1 + include/rvl/MTX/mtxvec.h | 1 + include/rvl/MTX/vec.h | 1 + include/toBeSorted/attention.h | 16 + include/toBeSorted/cc/d_cc_d.h | 519 ++++++++++++++++++ include/toBeSorted/cc/d_cc_m3d.h | 7 + include/toBeSorted/cc/d_cc_m3d_g_cyl.h | 24 + include/toBeSorted/cc/d_cc_m3d_g_sph.h | 23 + include/toBeSorted/cc/d_cc_mgr.h | 13 + include/toBeSorted/cc/d_cc_shape_colliders.h | 89 +++ include/toBeSorted/effects_struct.h | 28 + include/toBeSorted/event_manager.h | 16 + include/toBeSorted/scgame.h | 3 +- src/REL/d/a/obj/d_a_obj_pool_cock.cpp | 2 +- src/REL/d/a/obj/d_a_obj_ring.cpp | 2 +- src/REL/d/a/obj/d_a_obj_spike.cpp | 88 +++ src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp | 139 +++++ src/REL/d/a/obj/d_a_obj_triforce.cpp | 81 +++ src/REL/d/t/d_t_sound_area.cpp | 21 +- src/d/a/d_a_base.cpp | 4 +- src/d/a/obj/d_a_obj_switch.cpp | 4 +- src/d/d_base.cpp | 4 +- src/toBeSorted/cc/d_cc_d.cpp | 395 +++++++++++++ src/toBeSorted/cc/d_cc_m3d.cpp | 33 ++ src/toBeSorted/cc/d_cc_m3d_g_cyl.cpp | 26 + src/toBeSorted/cc/d_cc_m3d_g_sph.cpp | 26 + src/toBeSorted/cc/d_cc_shape_colliders.cpp | 106 ++++ tools/rel_sieve.py | 6 +- 44 files changed, 2215 insertions(+), 390 deletions(-) create mode 100644 include/d/a/obj/d_a_obj_spike.h create mode 100644 include/d/a/obj/d_a_obj_toD3_stone_figure.h create mode 100644 include/d/a/obj/d_a_obj_triforce.h create mode 100644 include/toBeSorted/attention.h create mode 100644 include/toBeSorted/cc/d_cc_d.h create mode 100644 include/toBeSorted/cc/d_cc_m3d.h create mode 100644 include/toBeSorted/cc/d_cc_m3d_g_cyl.h create mode 100644 include/toBeSorted/cc/d_cc_m3d_g_sph.h create mode 100644 include/toBeSorted/cc/d_cc_mgr.h create mode 100644 include/toBeSorted/cc/d_cc_shape_colliders.h create mode 100644 include/toBeSorted/effects_struct.h create mode 100644 include/toBeSorted/event_manager.h create mode 100644 src/toBeSorted/cc/d_cc_d.cpp create mode 100644 src/toBeSorted/cc/d_cc_m3d.cpp create mode 100644 src/toBeSorted/cc/d_cc_m3d_g_cyl.cpp create mode 100644 src/toBeSorted/cc/d_cc_m3d_g_sph.cpp create mode 100644 src/toBeSorted/cc/d_cc_shape_colliders.cpp diff --git a/config/SOUE01/rels/d_a_obj_spikeNP/splits.txt b/config/SOUE01/rels/d_a_obj_spikeNP/splits.txt index 3ccbe037..2a897273 100644 --- a/config/SOUE01/rels/d_a_obj_spikeNP/splits.txt +++ b/config/SOUE01/rels/d_a_obj_spikeNP/splits.txt @@ -17,3 +17,6 @@ REL/global_destructor_chain.c: REL/d/a/obj/d_a_obj_spike.cpp: .text start:0x000000F0 end:0x00000BF8 .ctors start:0x00000000 end:0x00000004 + .rodata start:0x00000000 end:0x00000030 + .data start:0x00000000 end:0x000001FC + .bss start:0x00000008 end:0x00000060 diff --git a/config/SOUE01/rels/d_a_obj_spikeNP/symbols.txt b/config/SOUE01/rels/d_a_obj_spikeNP/symbols.txt index b61d11f0..35fe668d 100644 --- a/config/SOUE01/rels/d_a_obj_spikeNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_spikeNP/symbols.txt @@ -3,53 +3,55 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global -fn_372_F0 = .text:0x000000F0; // type:function size:0xC8 -fn_372_1C0 = .text:0x000001C0; // type:function size:0x58 -fn_372_220 = .text:0x00000220; // type:function size:0x6C -fn_372_290 = .text:0x00000290; // type:function size:0xA0 -fn_372_330 = .text:0x00000330; // type:function size:0xA4 -fn_372_3E0 = .text:0x000003E0; // type:function size:0x80 -fn_372_460 = .text:0x00000460; // type:function size:0x1C0 -fn_372_620 = .text:0x00000620; // type:function size:0x10 -fn_372_630 = .text:0x00000630; // type:function size:0x8 -fn_372_640 = .text:0x00000640; // type:function size:0x5C -fn_372_6A0 = .text:0x000006A0; // type:function size:0x10 -fn_372_6B0 = .text:0x000006B0; // type:function size:0x28 -fn_372_6E0 = .text:0x000006E0; // type:function size:0x4 -fn_372_6F0 = .text:0x000006F0; // type:function size:0x4 -fn_372_700 = .text:0x00000700; // type:function size:0x4 -fn_372_710 = .text:0x00000710; // type:function size:0xD8 -fn_372_7F0 = .text:0x000007F0; // type:function size:0x10 -fn_372_800 = .text:0x00000800; // type:function size:0x60 -fn_372_860 = .text:0x00000860; // type:function size:0xC -fn_372_870 = .text:0x00000870; // type:function size:0x1C -fn_372_890 = .text:0x00000890; // type:function size:0x1C -fn_372_8B0 = .text:0x000008B0; // type:function size:0x1C -fn_372_8D0 = .text:0x000008D0; // type:function size:0x10 -fn_372_8E0 = .text:0x000008E0; // type:function size:0x10 -fn_372_8F0 = .text:0x000008F0; // type:function size:0x10 -fn_372_900 = .text:0x00000900; // type:function size:0x10 -fn_372_910 = .text:0x00000910; // type:function size:0x10 -fn_372_920 = .text:0x00000920; // type:function size:0x10 -fn_372_930 = .text:0x00000930; // type:function size:0x30 -fn_372_960 = .text:0x00000960; // type:function size:0x30 -fn_372_990 = .text:0x00000990; // type:function size:0x30 -fn_372_9C0 = .text:0x000009C0; // type:function size:0x144 -fn_372_B10 = .text:0x00000B10; // type:function size:0x58 -fn_372_B70 = .text:0x00000B70; // type:function size:0x88 +dAcOspike_c_classInit__Fv = .text:0x000000F0; // type:function size:0xC8 +__dt__24sFState_c<11dAcOspike_c>Fv = .text:0x000001C0; // type:function size:0x58 +__dt__27sFStateFct_c<11dAcOspike_c>Fv = .text:0x00000220; // type:function size:0x6C +__dt__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000290; // type:function size:0xA0 +__dt__50sFStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000330; // type:function size:0xA4 +createHeap__11dAcOspike_cFv = .text:0x000003E0; // type:function size:0x80 +create__11dAcOspike_cFv = .text:0x00000460; // type:function size:0x1C0 +changeState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000620; // type:function size:0x10 +doDelete__11dAcOspike_cFv = .text:0x00000630; // type:function size:0x8 +actorExecute__11dAcOspike_cFv = .text:0x00000640; // type:function size:0x5C +executeState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000006A0; // type:function size:0x10 +draw__11dAcOspike_cFv = .text:0x000006B0; // type:function size:0x28 +initializeState_Wait__11dAcOspike_cFv = .text:0x000006E0; // type:function size:0x4 +executeState_Wait__11dAcOspike_cFv = .text:0x000006F0; // type:function size:0x4 +finalizeState_Wait__11dAcOspike_cFv = .text:0x00000700; // type:function size:0x4 +__dt__11dAcOspike_cFv = .text:0x00000710; // type:function size:0xD8 +getStateID__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x000007F0; // type:function size:0x10 +build__27sFStateFct_c<11dAcOspike_c>FRC12sStateIDIf_c = .text:0x00000800; // type:function size:0x60 +dispose__27sFStateFct_c<11dAcOspike_c>FRP10sStateIf_c = .text:0x00000860; // type:function size:0xC +initialize__24sFState_c<11dAcOspike_c>Fv = .text:0x00000870; // type:function size:0x1C +execute__24sFState_c<11dAcOspike_c>Fv = .text:0x00000890; // type:function size:0x1C +finalize__24sFState_c<11dAcOspike_c>Fv = .text:0x000008B0; // type:function size:0x1C +initializeState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000008D0; // type:function size:0x10 +finalizeState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000008E0; // type:function size:0x10 +refreshState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000008F0; // type:function size:0x10 +getState__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000900; // type:function size:0x10 +getNewStateID__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000910; // type:function size:0x10 +getOldStateID__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000920; // type:function size:0x10 +finalizeState__26sFStateID_c<11dAcOspike_c>CFR11dAcOspike_c = .text:0x00000930; // type:function size:0x30 +executeState__26sFStateID_c<11dAcOspike_c>CFR11dAcOspike_c = .text:0x00000960; // type:function size:0x30 +initializeState__26sFStateID_c<11dAcOspike_c>CFR11dAcOspike_c = .text:0x00000990; // type:function size:0x30 +__sinit_\d_a_obj_spike_cpp = .text:0x000009C0; // type:function size:0x144 scope:local +__dt__26sFStateID_c<11dAcOspike_c>Fv = .text:0x00000B10; // type:function size:0x58 +isSameName__26sFStateID_c<11dAcOspike_c>CFPCc = .text:0x00000B70; // type:function size:0x88 _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global -lbl_372_rodata_0 = .rodata:0x00000000; // type:object size:0x30 data:float -lbl_372_data_0 = .data:0x00000000; // type:object size:0x10 data:4byte -lbl_372_data_10 = .data:0x00000010; // type:object size:0x40 -lbl_372_data_50 = .data:0x00000050; // type:object size:0xC -lbl_372_data_5C = .data:0x0000005C; // type:object size:0x1C -lbl_372_data_78 = .data:0x00000078; // type:object size:0x80 -lbl_372_data_F8 = .data:0x000000F8; // type:object size:0x30 -lbl_372_data_128 = .data:0x00000128; // type:object size:0x30 -lbl_372_data_158 = .data:0x00000158; // type:object size:0x18 -lbl_372_data_170 = .data:0x00000170; // type:object size:0x58 -lbl_372_data_1C8 = .data:0x000001C8; // type:object size:0x34 +lbl_372_rodata_0 = .rodata:0x00000000; // type:object size:0x30 scope:local data:float +g_profile_OBJ_SPIKE = .data:0x00000000; // type:object size:0x10 data:4byte +sCcSrc__11dAcOspike_c = .data:0x00000010; // type:object size:0x40 +lbl_372_data_50 = .data:0x00000050; // type:object size:0xC scope:local +lbl_372_data_5C = .data:0x0000005C; // type:object size:0x1C scope:local +__vt__11dAcOspike_c = .data:0x00000078; // type:object size:0x80 +__vt__50sFStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c> = .data:0x000000F8; // type:object size:0x30 +__vt__80sStateMgr_c<11dAcOspike_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000128; // type:object size:0x30 +__vt__27sFStateFct_c<11dAcOspike_c> = .data:0x00000158; // type:object size:0x14 +__vt__24sFState_c<11dAcOspike_c> = .data:0x00000170; // type:object size:0x18 +__vt__26sFStateID_c<11dAcOspike_c> = .data:0x000001C8; // type:object size:0x34 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_372_bss_8 = .bss:0x00000008; // type:object size:0x58 data:4byte +sVec1__11dAcOspike_c = .bss:0x00000008; // type:object size:0xC data:4byte +sVec2__11dAcOspike_c = .bss:0x00000014; // type:object size:0xC data:4byte +StateID_Wait__11dAcOspike_c = .bss:0x00000030; // type:object size:0x30 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/splits.txt b/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/splits.txt index 760878b7..e0089e55 100644 --- a/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/splits.txt +++ b/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/splits.txt @@ -17,3 +17,6 @@ REL/global_destructor_chain.c: REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp: .text start:0x000000F0 end:0x00000F08 .ctors start:0x00000000 end:0x00000004 + .rodata start:0x00000000 end:0x00000020 + .data start:0x00000000 end:0x00000278 + .bss start:0x00000008 end:0x00000088 diff --git a/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/symbols.txt b/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/symbols.txt index 091484c7..20ae02c1 100644 --- a/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_toD3_stone_figureNP/symbols.txt @@ -3,63 +3,68 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global -fn_609_F0 = .text:0x000000F0; // type:function size:0xC8 -fn_609_1C0 = .text:0x000001C0; // type:function size:0x58 -fn_609_220 = .text:0x00000220; // type:function size:0x6C -fn_609_290 = .text:0x00000290; // type:function size:0xA0 -fn_609_330 = .text:0x00000330; // type:function size:0xA4 -fn_609_3E0 = .text:0x000003E0; // type:function size:0x88 -fn_609_470 = .text:0x00000470; // type:function size:0x1C4 -fn_609_640 = .text:0x00000640; // type:function size:0x10 -fn_609_650 = .text:0x00000650; // type:function size:0x8 -fn_609_660 = .text:0x00000660; // type:function size:0x4C -fn_609_6B0 = .text:0x000006B0; // type:function size:0x10 -fn_609_6C0 = .text:0x000006C0; // type:function size:0x3C -fn_609_700 = .text:0x00000700; // type:function size:0x58 -fn_609_760 = .text:0x00000760; // type:function size:0xDC -fn_609_840 = .text:0x00000840; // type:function size:0x4 -fn_609_850 = .text:0x00000850; // type:function size:0x4 -fn_609_860 = .text:0x00000860; // type:function size:0x4 -fn_609_870 = .text:0x00000870; // type:function size:0x4 -fn_609_880 = .text:0x00000880; // type:function size:0x20 -fn_609_8A0 = .text:0x000008A0; // type:function size:0x48 -fn_609_8F0 = .text:0x000008F0; // type:function size:0x70 -fn_609_960 = .text:0x00000960; // type:function size:0x30 -fn_609_990 = .text:0x00000990; // type:function size:0xD8 -fn_609_A70 = .text:0x00000A70; // type:function size:0x10 -fn_609_A80 = .text:0x00000A80; // type:function size:0x60 -fn_609_AE0 = .text:0x00000AE0; // type:function size:0xC -fn_609_AF0 = .text:0x00000AF0; // type:function size:0x1C -fn_609_B10 = .text:0x00000B10; // type:function size:0x1C -fn_609_B30 = .text:0x00000B30; // type:function size:0x1C -fn_609_B50 = .text:0x00000B50; // type:function size:0x10 -fn_609_B60 = .text:0x00000B60; // type:function size:0x10 -fn_609_B70 = .text:0x00000B70; // type:function size:0x10 -fn_609_B80 = .text:0x00000B80; // type:function size:0x10 -fn_609_B90 = .text:0x00000B90; // type:function size:0x10 -fn_609_BA0 = .text:0x00000BA0; // type:function size:0x10 -fn_609_BB0 = .text:0x00000BB0; // type:function size:0x30 -fn_609_BE0 = .text:0x00000BE0; // type:function size:0x30 -fn_609_C10 = .text:0x00000C10; // type:function size:0x30 -fn_609_C40 = .text:0x00000C40; // type:function size:0x1D4 -fn_609_E20 = .text:0x00000E20; // type:function size:0x58 -fn_609_E80 = .text:0x00000E80; // type:function size:0x88 +dAcOtoD3StoneFigure_c_classInit__Fv = .text:0x000000F0; // type:function size:0xC8 +__dt__34sFState_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x000001C0; // type:function size:0x58 +__dt__37sFStateFct_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x00000220; // type:function size:0x6C +__dt__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000290; // type:function size:0xA0 +__dt__60sFStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000330; // type:function size:0xA4 +createHeap__21dAcOtoD3StoneFigure_cFv = .text:0x000003E0; // type:function size:0x88 +create__21dAcOtoD3StoneFigure_cFv = .text:0x00000470; // type:function size:0x1C4 +changeState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000640; // type:function size:0x10 +doDelete__21dAcOtoD3StoneFigure_cFv = .text:0x00000650; // type:function size:0x8 +actorExecute__21dAcOtoD3StoneFigure_cFv = .text:0x00000660; // type:function size:0x4C +executeState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000006B0; // type:function size:0x10 +draw__21dAcOtoD3StoneFigure_cFv = .text:0x000006C0; // type:function size:0x3C +initializeState_OneEye__21dAcOtoD3StoneFigure_cFv = .text:0x00000700; // type:function size:0x58 +executeState_OneEye__21dAcOtoD3StoneFigure_cFv = .text:0x00000760; // type:function size:0xDC +finalizeState_OneEye__21dAcOtoD3StoneFigure_cFv = .text:0x00000840; // type:function size:0x4 +initializeState_Eyes__21dAcOtoD3StoneFigure_cFv = .text:0x00000850; // type:function size:0x4 +executeState_Eyes__21dAcOtoD3StoneFigure_cFv = .text:0x00000860; // type:function size:0x4 +finalizeState_Eyes__21dAcOtoD3StoneFigure_cFv = .text:0x00000870; // type:function size:0x4 +getModelName__21dAcOtoD3StoneFigure_cCFv = .text:0x00000880; // type:function size:0x20 +isStoneOfTrialsPlaced__21dAcOtoD3StoneFigure_cCFv = .text:0x000008A0; // type:function size:0x48 +doInteraction__21dAcOtoD3StoneFigure_cFl = .text:0x000008F0; // type:function size:0x70 +hasStoneOfTrials__21dAcOtoD3StoneFigure_cCFv = .text:0x00000960; // type:function size:0x30 +__dt__21dAcOtoD3StoneFigure_cFv = .text:0x00000990; // type:function size:0xD8 +getStateID__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000A70; // type:function size:0x10 +build__37sFStateFct_c<21dAcOtoD3StoneFigure_c>FRC12sStateIDIf_c = .text:0x00000A80; // type:function size:0x60 +dispose__37sFStateFct_c<21dAcOtoD3StoneFigure_c>FRP10sStateIf_c = .text:0x00000AE0; // type:function size:0xC +initialize__34sFState_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x00000AF0; // type:function size:0x1C +execute__34sFState_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x00000B10; // type:function size:0x1C +finalize__34sFState_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x00000B30; // type:function size:0x1C +initializeState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000B50; // type:function size:0x10 +finalizeState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000B60; // type:function size:0x10 +refreshState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000B70; // type:function size:0x10 +getState__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000B80; // type:function size:0x10 +getNewStateID__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000B90; // type:function size:0x10 +getOldStateID__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000BA0; // type:function size:0x10 +finalizeState__36sFStateID_c<21dAcOtoD3StoneFigure_c>CFR21dAcOtoD3StoneFigure_c = .text:0x00000BB0; // type:function size:0x30 +executeState__36sFStateID_c<21dAcOtoD3StoneFigure_c>CFR21dAcOtoD3StoneFigure_c = .text:0x00000BE0; // type:function size:0x30 +initializeState__36sFStateID_c<21dAcOtoD3StoneFigure_c>CFR21dAcOtoD3StoneFigure_c = .text:0x00000C10; // type:function size:0x30 +__sinit_\d_a_obj_toD3_stone_figure_cpp = .text:0x00000C40; // type:function size:0x1D4 scope:local +__dt__36sFStateID_c<21dAcOtoD3StoneFigure_c>Fv = .text:0x00000E20; // type:function size:0x58 +isSameName__36sFStateID_c<21dAcOtoD3StoneFigure_c>CFPCc = .text:0x00000E80; // type:function size:0x88 _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global -lbl_609_rodata_0 = .rodata:0x00000000; // type:object size:0x20 data:float -lbl_609_data_0 = .data:0x00000000; // type:object size:0x48 data:float -lbl_609_data_48 = .data:0x00000048; // type:object size:0x30 -lbl_609_data_78 = .data:0x00000078; // type:object size:0xC data:string -lbl_609_data_84 = .data:0x00000084; // type:object size:0xC -lbl_609_data_90 = .data:0x00000090; // type:object size:0x10 -lbl_609_data_A0 = .data:0x000000A0; // type:object size:0x80 -lbl_609_data_120 = .data:0x00000120; // type:object size:0x30 -lbl_609_data_150 = .data:0x00000150; // type:object size:0x30 -lbl_609_data_180 = .data:0x00000180; // type:object size:0x18 -lbl_609_data_198 = .data:0x00000198; // type:object size:0xAC -lbl_609_data_244 = .data:0x00000244; // type:object size:0x34 +lbl_609_rodata_0 = .rodata:0x00000000; // type:object size:0x20 scope:local data:float +g_profile_OBJ_TOD3_STONE = .data:0x00000000; // type:object size:0x10 data:4byte +sRadius__21dAcOtoD3StoneFigure_c = .data:0x00000010; // type:object size:0x4 data:float +sHeight__21dAcOtoD3StoneFigure_c = .data:0x00000014; // type:object size:0x4 data:float +sCcSrc__21dAcOtoD3StoneFigure_c = .data:0x00000018; // type:object size:0x30 +lbl_609_data_48 = .data:0x00000048; // type:object size:0xA scope:local data:string +lbl_609_data_54 = .data:0x00000054; // type:object size:0x23 scope:local data:string +lbl_609_data_78 = .data:0x00000078; // type:object size:0xC scope:local data:string +lbl_609_data_84 = .data:0x00000084; // type:object size:0xC scope:local data:string +lbl_609_data_90 = .data:0x00000090; // type:object size:0x10 scope:local data:string +__vt__21dAcOtoD3StoneFigure_c = .data:0x000000A0; // type:object size:0x80 +__vt__60sFStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c> = .data:0x00000120; // type:object size:0x30 +__vt__90sStateMgr_c<21dAcOtoD3StoneFigure_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000150; // type:object size:0x30 +__vt__37sFStateFct_c<21dAcOtoD3StoneFigure_c> = .data:0x00000180; // type:object size:0x14 +__vt__34sFState_c<21dAcOtoD3StoneFigure_c> = .data:0x00000198; // type:object size:0x18 +__vt__36sFStateID_c<21dAcOtoD3StoneFigure_c> = .data:0x00000244; // type:object size:0x34 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_609_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte -lbl_609_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte -lbl_609_bss_58 = .bss:0x00000058; // type:object size:0x30 data:4byte +lbl_609_bss_8 = .bss:0x00000008; // type:object size:0x10 scope:local data:4byte +StateID_OneEye__21dAcOtoD3StoneFigure_c = .bss:0x00000018; // type:object size:0x30 data:4byte +lbl_609_bss_48 = .bss:0x00000048; // type:object size:0x10 scope:local data:4byte +StateID_Eyes__21dAcOtoD3StoneFigure_c = .bss:0x00000058; // type:object size:0x30 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_triforceNP/splits.txt b/config/SOUE01/rels/d_a_obj_triforceNP/splits.txt index 1427d7d9..272206d3 100644 --- a/config/SOUE01/rels/d_a_obj_triforceNP/splits.txt +++ b/config/SOUE01/rels/d_a_obj_triforceNP/splits.txt @@ -11,3 +11,5 @@ REL/executor.c: REL/d/a/obj/d_a_obj_triforce.cpp: .text start:0x00000070 end:0x0000050C + .rodata start:0x00000000 end:0x00000028 + .data start:0x00000000 end:0x000000E8 diff --git a/config/SOUE01/rels/d_a_obj_triforceNP/symbols.txt b/config/SOUE01/rels/d_a_obj_triforceNP/symbols.txt index 59c88a03..e6e9d62c 100644 --- a/config/SOUE01/rels/d_a_obj_triforceNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_triforceNP/symbols.txt @@ -1,19 +1,19 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global -fn_625_70 = .text:0x00000070; // type:function size:0xA0 -fn_625_110 = .text:0x00000110; // type:function size:0xDC -fn_625_1F0 = .text:0x000001F0; // type:function size:0xBC -fn_625_2B0 = .text:0x000002B0; // type:function size:0x8 -fn_625_2C0 = .text:0x000002C0; // type:function size:0x18C -fn_625_450 = .text:0x00000450; // type:function size:0x28 -fn_625_480 = .text:0x00000480; // type:function size:0x8C +dAcOtriforce_c_classInit__Fv = .text:0x00000070; // type:function size:0xA0 +createHeap__14dAcOtriforce_cFv = .text:0x00000110; // type:function size:0xDC +create__14dAcOtriforce_cFv = .text:0x000001F0; // type:function size:0xBC +doDelete__14dAcOtriforce_cFv = .text:0x000002B0; // type:function size:0x8 +actorExecute__14dAcOtriforce_cFv = .text:0x000002C0; // type:function size:0x18C +draw__14dAcOtriforce_cFv = .text:0x00000450; // type:function size:0x28 +__dt__14dAcOtriforce_cFv = .text:0x00000480; // type:function size:0x8C _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global -lbl_625_rodata_0 = .rodata:0x00000000; // type:object size:0xC data:float -lbl_625_rodata_C = .rodata:0x0000000C; // type:object size:0x1C data:float -lbl_625_data_0 = .data:0x00000000; // type:object size:0x10 -lbl_625_data_10 = .data:0x00000010; // type:object size:0x2C -lbl_625_data_3C = .data:0x0000003C; // type:object size:0xC -lbl_625_data_48 = .data:0x00000048; // type:object size:0x20 -lbl_625_data_68 = .data:0x00000068; // type:object size:0x80 +lbl_625_rodata_0 = .rodata:0x00000000; // type:object size:0xC scope:local data:float +lbl_625_rodata_C = .rodata:0x0000000C; // type:object size:0x1C scope:local data:float +g_profile_OBJ_TRIFORCE = .data:0x00000000; // type:object size:0x10 +sCcSrc__14dAcOtriforce_c = .data:0x00000010; // type:object size:0x2C +lbl_625_data_3C = .data:0x0000003C; // type:object size:0xC scope:local +lbl_625_data_48 = .data:0x00000048; // type:object size:0x20 scope:local +__vt__14dAcOtriforce_c = .data:0x00000068; // type:object size:0x80 diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 7493e4bb..fc0eb072 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -515,6 +515,31 @@ m/m_pad.cpp: .sdata2 start:0x8057CDF8 end:0x8057CE00 .bss start:0x805CB0B8 end:0x805CB1F8 +toBeSorted/cc/d_cc_d.cpp: + .text start:0x80328120 end:0x8032BC78 + .ctors start:0x804DB8F8 end:0x804DB8FC + .rodata start:0x804F0AF0 end:0x804F0B80 + .data start:0x805473D8 end:0x80547668 + .sdata2 start:0x8057CF98 end:0x8057CFBC + .bss start:0x805D0128 end:0x805D0134 + +toBeSorted/cc/d_cc_unknown.cpp: + .text start:0x8032BEC0 end:0x8032BF00 + .data start:0x80547668 end:0x80547678 + +toBeSorted/cc/d_cc_m3d.cpp: + .text start:0x8032BF00 end:0x80337B58 + +toBeSorted/cc/d_cc_m3d_g_cyl.cpp: + .text start:0x80338020 end:0x80338348 + +toBeSorted/cc/d_cc_m3d_g_sph.cpp: + .text start:0x80338680 end:0x803388D8 + +toBeSorted/cc/d_cc_shape_colliders.cpp: + .text start:0x80353B50 end:0x80354298 + .data start:0x80548340 end:0x80548580 + rvl/CX/cx.c: .text start:0x803CEE90 end:0x803D0B20 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index d04c946a..c47e5690 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -919,9 +919,9 @@ fn_80027490 = .text:0x80027490; // type:function size:0x40 fn_800274D0 = .text:0x800274D0; // type:function size:0x40 fn_80027510 = .text:0x80027510; // type:function size:0x4C fn_80027560 = .text:0x80027560; // type:function size:0x5C -fn_800275C0 = .text:0x800275C0; // type:function size:0x44 +__ct__13EffectsStructFv = .text:0x800275C0; // type:function size:0x44 fn_80027610 = .text:0x80027610; // type:function size:0x44 -fn_80027660 = .text:0x80027660; // type:function size:0x78 +__dt__13EffectsStructFv = .text:0x80027660; // type:function size:0x78 fn_800276E0 = .text:0x800276E0; // type:function size:0x84 fn_80027770 = .text:0x80027770; // type:function size:0xE8 fn_80027860 = .text:0x80027860; // type:function size:0xC8 @@ -2090,7 +2090,7 @@ preExecute__7dBase_cFv = .text:0x80050890; // type:function size:0x60 postExecute__7dBase_cFQ27fBase_c12MAIN_STATE_e = .text:0x800508F0; // type:function size:0x28 preDraw__7dBase_cFv = .text:0x80050920; // type:function size:0x60 resetFlags__7dBase_cFv = .text:0x80050980; // type:function size:0x14 -isActorPlayer__7dBase_cFR7dBase_c = .text:0x800509A0; // type:function size:0x14 +isActorPlayer__7dBase_cFv = .text:0x800509A0; // type:function size:0x14 loadAsyncCallback__7dBase_cFv = .text:0x800509C0; // type:function size:0x8 unloadCallback__7dBase_cFv = .text:0x800509D0; // type:function size:0x4 initLoader__7dBase_cFv = .text:0x800509E0; // type:function size:0x1C @@ -3371,8 +3371,8 @@ fn_80096AB0 = .text:0x80096AB0; // type:function size:0x88 fn_80096B40 = .text:0x80096B40; // type:function size:0x80 fn_80096BC0 = .text:0x80096BC0; // type:function size:0x18 fn_80096BE0 = .text:0x80096BE0; // type:function size:0x20 -fn_80096C00 = .text:0x80096C00; // type:function size:0x28 -fn_80096C30 = .text:0x80096C30; // type:function size:0x28 +addTarget__12dAttention_cFP9dAcBase_clffff = .text:0x80096C00; // type:function size:0x28 +addTarget__12dAttention_cFP9dAcBase_clfff = .text:0x80096C30; // type:function size:0x28 fn_80096C60 = .text:0x80096C60; // type:function size:0x30 fn_80096C90 = .text:0x80096C90; // type:function size:0x34 fn_80096CD0 = .text:0x80096CD0; // type:function size:0x30 @@ -3562,7 +3562,7 @@ fn_8009EB10 = .text:0x8009EB10; // type:function size:0xC fn_8009EB20 = .text:0x8009EB20; // type:function size:0x8 fn_8009EB30 = .text:0x8009EB30; // type:function size:0x36C fn_8009EEA0 = .text:0x8009EEA0; // type:function size:0x53C -alsoSetAsCurrentEvent = .text:0x8009F3E0; // type:function size:0x470 +alsoSetAsCurrentEvent__12EventManagerFP9dAcBase_cP5EventPv = .text:0x8009F3E0; // type:function size:0x470 fn_8009F850 = .text:0x8009F850; // type:function size:0x134 fn_8009F990 = .text:0x8009F990; // type:function size:0x80 fn_8009FA10 = .text:0x8009FA10; // type:function size:0x8 @@ -3570,7 +3570,7 @@ fn_8009FA20 = .text:0x8009FA20; // type:function size:0x1A0 fn_8009FBC0 = .text:0x8009FBC0; // type:function size:0x120 fn_8009FCE0 = .text:0x8009FCE0; // type:function size:0x11C fn_8009FE00 = .text:0x8009FE00; // type:function size:0x124 -fn_8009FF30 = .text:0x8009FF30; // type:function size:0x10C +isInEvent__12EventManagerFP9dAcBase_cPCc = .text:0x8009FF30; // type:function size:0x10C fn_800A0040 = .text:0x800A0040; // type:function size:0x114 fn_800A0160 = .text:0x800A0160; // type:function size:0xB8 fn_800A0220 = .text:0x800A0220; // type:function size:0x64 @@ -11179,7 +11179,7 @@ fn_801BAE60 = .text:0x801BAE60; // type:function size:0x90 fn_801BAEF0 = .text:0x801BAEF0; // type:function size:0x50 fn_801BAF40 = .text:0x801BAF40; // type:function size:0x54 fn_801BAFA0 = .text:0x801BAFA0; // type:function size:0xDC -fn_801BB080 = .text:0x801BB080; // type:function size:0xC0 +triggerExit__6ScGameFlUcll = .text:0x801BB080; // type:function size:0xC0 fn_801BB140 = .text:0x801BB140; // type:function size:0x154 fn_801BB2A0 = .text:0x801BB2A0; // type:function size:0x28 fn_801BB2D0 = .text:0x801BB2D0; // type:function size:0x8 @@ -17290,7 +17290,7 @@ atan2s__2cMFff = .text:0x802E0AF0; // type:function size:0x1BC fn_802E0CB0 = .text:0x802E0CB0; // type:function size:0x48 fn_802E0D00 = .text:0x802E0D00; // type:function size:0x8 rnd__2cMFv = .text:0x802E0D10; // type:function size:0x8 -fn_802E0D20 = .text:0x802E0D20; // type:function size:0x58 +rndInt__2cMFi = .text:0x802E0D20; // type:function size:0x58 rndF__2cMFf = .text:0x802E0D80; // type:function size:0x38 fn_802E0DC0 = .text:0x802E0DC0; // type:function size:0x48 fn_802E0E10 = .text:0x802E0E10; // type:function size:0xC @@ -17838,12 +17838,12 @@ createDylinkHeap__5mHeapFUlPQ23EGG4Heap = .text:0x802F15C0; // type:function siz createAssertHeap__5mHeapFPQ23EGG4Heap = .text:0x802F15F0; // type:function size:0x50 makeHeapOnCurrentGameHeap__5mHeapFUlPCcUlUl = .text:0x802F1640; // type:function size:0x20 fn_802F1660 = .text:0x802F1660; // type:function size:0x44 -fn_802F16B0 = .text:0x802F16B0; // type:function size:0xBC +XrotS__6mMtx_cFRC4mAng = .text:0x802F16B0; // type:function size:0xBC fn_802F1770 = .text:0x802F1770; // type:function size:0x4C fn_802F17C0 = .text:0x802F17C0; // type:function size:0xBC YrotM__6mMtx_cFRC4mAng = .text:0x802F1880; // type:function size:0x4C fn_802F18D0 = .text:0x802F18D0; // type:function size:0xBC -fn_802F1990 = .text:0x802F1990; // type:function size:0x4C +ZrotM__6mMtx_cFRC4mAng = .text:0x802F1990; // type:function size:0x4C fn_802F19E0 = .text:0x802F19E0; // type:function size:0x60 fn_802F1A40 = .text:0x802F1A40; // type:function size:0x60 fn_802F1AA0 = .text:0x802F1AA0; // type:function size:0x60 @@ -18739,35 +18739,35 @@ fn_80328090 = .text:0x80328090; // type:function size:0x40 fn_803280D0 = .text:0x803280D0; // type:function size:0x8 fn_803280E0 = .text:0x803280E0; // type:function size:0xC fn_803280F0 = .text:0x803280F0; // type:function size:0x24 -fn_80328120 = .text:0x80328120; // type:function size:0x10 -fn_80328130 = .text:0x80328130; // type:function size:0x40 -fn_80328170 = .text:0x80328170; // type:function size:0x10 -fn_80328180 = .text:0x80328180; // type:function size:0x40 -fn_803281C0 = .text:0x803281C0; // type:function size:0x104 +__ct__15dCcD_DivideInfoFv = .text:0x80328120; // type:function size:0x10 +__dt__15dCcD_DivideInfoFv = .text:0x80328130; // type:function size:0x40 +__ct__15dCcD_DivideAreaFv = .text:0x80328170; // type:function size:0x10 +__dt__15dCcD_DivideAreaFv = .text:0x80328180; // type:function size:0x40 +SetArea__15dCcD_DivideAreaFRC4Aabb = .text:0x803281C0; // type:function size:0x104 fn_803282D0 = .text:0x803282D0; // type:function size:0x198 fn_80328470 = .text:0x80328470; // type:function size:0x1E0 -fn_80328650 = .text:0x80328650; // type:function size:0x4C -fn_803286A0 = .text:0x803286A0; // type:function size:0x20 -fn_803286C0 = .text:0x803286C0; // type:function size:0x1C +__ct__12UnkCCDStructFP9dAcBase_c = .text:0x80328650; // type:function size:0x4C +postExecute__12UnkCCDStructFv = .text:0x803286A0; // type:function size:0x20 +getId__12UnkCCDStructFv = .text:0x803286C0; // type:function size:0x1C fn_803286E0 = .text:0x803286E0; // type:function size:0xA0 -fn_80328780 = .text:0x80328780; // type:function size:0x54 -fn_803287E0 = .text:0x803287E0; // type:function size:0xD4 -fn_803288C0 = .text:0x803288C0; // type:function size:0x2C -fn_803288F0 = .text:0x803288F0; // type:function size:0x94 -fn_80328990 = .text:0x80328990; // type:function size:0x8 -fn_803289A0 = .text:0x803289A0; // type:function size:0x14 -fn_803289C0 = .text:0x803289C0; // type:function size:0x8 -fn_803289D0 = .text:0x803289D0; // type:function size:0x18 -fn_803289F0 = .text:0x803289F0; // type:function size:0x58 -fn_80328A50 = .text:0x80328A50; // type:function size:0x7C -fn_80328AD0 = .text:0x80328AD0; // type:function size:0x58 -fn_80328B30 = .text:0x80328B30; // type:function size:0x28 -fn_80328B60 = .text:0x80328B60; // type:function size:0x50 -fn_80328BB0 = .text:0x80328BB0; // type:function size:0x48 -fn_80328C00 = .text:0x80328C00; // type:function size:0x4C -fn_80328C50 = .text:0x80328C50; // type:function size:0x4C -fn_80328CA0 = .text:0x80328CA0; // type:function size:0x8 -fn_80328CB0 = .text:0x80328CB0; // type:function size:0x8 +reset__12UnkCCDStructFv = .text:0x80328780; // type:function size:0x54 +getSomething__12UnkCCDStructFi = .text:0x803287E0; // type:function size:0xD4 +__ct__22dCcD_GAtTgCoCommonBaseFv = .text:0x803288C0; // type:function size:0x2C +__dt__22dCcD_GAtTgCoCommonBaseFv = .text:0x803288F0; // type:function size:0x94 +unlink__22dCcD_GAtTgCoCommonBaseFv = .text:0x80328990; // type:function size:0x8 +setActor__22dCcD_GAtTgCoCommonBaseFP9dAcBase_c = .text:0x803289A0; // type:function size:0x14 +getActor__22dCcD_GAtTgCoCommonBaseFv = .text:0x803289C0; // type:function size:0x8 +decreaseCount__22dCcD_GAtTgCoCommonBaseFv = .text:0x803289D0; // type:function size:0x18 +__ct__12dCcD_GObjInfFv = .text:0x803289F0; // type:function size:0x58 +__dt__12dCcD_GObjInfFv = .text:0x80328A50; // type:function size:0x7C +weirdConditionCheck__12dCcD_GObjInfFP9dAcBase_cUl = .text:0x80328AD0; // type:function size:0x58 +clear__12dCcD_GObjInfFv = .text:0x80328B30; // type:function size:0x28 +init__12dCcD_GObjInfFRC15dCcD_SrcGObjInf = .text:0x80328B60; // type:function size:0x50 +ResetAtHit__12dCcD_GObjInfFv = .text:0x80328BB0; // type:function size:0x48 +ResetTgHit__12dCcD_GObjInfFv = .text:0x80328C00; // type:function size:0x4C +ResetCoHit__12dCcD_GObjInfFv = .text:0x80328C50; // type:function size:0x4C +GetAtHitPosP__12dCcD_GObjInfFv = .text:0x80328CA0; // type:function size:0x8 +GetAtHitPosP2__12dCcD_GObjInfFv = .text:0x80328CB0; // type:function size:0x8 fn_80328CC0 = .text:0x80328CC0; // type:function size:0xC fn_80328CD0 = .text:0x80328CD0; // type:function size:0xC fn_80328CE0 = .text:0x80328CE0; // type:function size:0xC @@ -18775,7 +18775,7 @@ fn_80328CF0 = .text:0x80328CF0; // type:function size:0x8 fn_80328D00 = .text:0x80328D00; // type:function size:0x8 fn_80328D10 = .text:0x80328D10; // type:function size:0xC fn_80328D20 = .text:0x80328D20; // type:function size:0xC -fn_80328D30 = .text:0x80328D30; // type:function size:0x4 +dCcD_GObjInf_0x10__12dCcD_GObjInfFv = .text:0x80328D30; // type:function size:0x4 fn_80328D40 = .text:0x80328D40; // type:function size:0xC fn_80328D50 = .text:0x80328D50; // type:function size:0x8 fn_80328D60 = .text:0x80328D60; // type:function size:0xC @@ -18785,7 +18785,7 @@ fn_80328D90 = .text:0x80328D90; // type:function size:0xC fn_80328DA0 = .text:0x80328DA0; // type:function size:0xC fn_80328DB0 = .text:0x80328DB0; // type:function size:0xC fn_80328DC0 = .text:0x80328DC0; // type:function size:0xC -fn_80328DD0 = .text:0x80328DD0; // type:function size:0x4 +GetAtActor__12dCcD_GObjInfFv = .text:0x80328DD0; // type:function size:0x4 fn_80328DE0 = .text:0x80328DE0; // type:function size:0x18 fn_80328E00 = .text:0x80328E00; // type:function size:0x8 fn_80328E10 = .text:0x80328E10; // type:function size:0xC @@ -18803,155 +18803,155 @@ fn_80328EC0 = .text:0x80328EC0; // type:function size:0x8 fn_80328ED0 = .text:0x80328ED0; // type:function size:0x8 fn_80328EE0 = .text:0x80328EE0; // type:function size:0xC fn_80328EF0 = .text:0x80328EF0; // type:function size:0x8 -fn_80328F00 = .text:0x80328F00; // type:function size:0x8 +GetTgActor__12dCcD_GObjInfFv = .text:0x80328F00; // type:function size:0x8 fn_80328F10 = .text:0x80328F10; // type:function size:0x8 -fn_80328F20 = .text:0x80328F20; // type:function size:0x8 +GetCoActor__12dCcD_GObjInfFv = .text:0x80328F20; // type:function size:0x8 fn_80328F30 = .text:0x80328F30; // type:function size:0xC fn_80328F40 = .text:0x80328F40; // type:function size:0x14 fn_80328F60 = .text:0x80328F60; // type:function size:0xC -fn_80328F70 = .text:0x80328F70; // type:function size:0x64 -fn_80328FE0 = .text:0x80328FE0; // type:function size:0x40 -fn_80329020 = .text:0x80329020; // type:function size:0x5C +adjustHitPos__12dCcD_GObjInfFff = .text:0x80328F70; // type:function size:0x64 +__ct__14dCcD_ShapeAttrFv = .text:0x80328FE0; // type:function size:0x40 +__dt__14dCcD_ShapeAttrFv = .text:0x80329020; // type:function size:0x5C fn_80329080 = .text:0x80329080; // type:function size:0x8 -fn_80329090 = .text:0x80329090; // type:function size:0x5C -fn_803290F0 = .text:0x803290F0; // type:function size:0x8 +getShapeAccess__14dCcD_ShapeAttrFv = .text:0x80329090; // type:function size:0x5C +dCcD_ShapeAttr_0x54__14dCcD_ShapeAttrFv = .text:0x803290F0; // type:function size:0x8 fn_80329100 = .text:0x80329100; // type:function size:0x8 fn_80329110 = .text:0x80329110; // type:function size:0x8 -fn_80329120 = .text:0x80329120; // type:function size:0xC -fn_80329130 = .text:0x80329130; // type:function size:0x3C -fn_80329170 = .text:0x80329170; // type:function size:0x58 -fn_803291D0 = .text:0x803291D0; // type:function size:0x458 -fn_80329630 = .text:0x80329630; // type:function size:0x1C -fn_80329650 = .text:0x80329650; // type:function size:0x10 -fn_80329660 = .text:0x80329660; // type:function size:0x10 -fn_80329670 = .text:0x80329670; // type:function size:0x18 -fn_80329690 = .text:0x80329690; // type:function size:0xC -fn_803296A0 = .text:0x803296A0; // type:function size:0x10 -fn_803296B0 = .text:0x803296B0; // type:function size:0x1C -fn_803296D0 = .text:0x803296D0; // type:function size:0x8 -fn_803296E0 = .text:0x803296E0; // type:function size:0x8 -fn_803296F0 = .text:0x803296F0; // type:function size:0x8 -fn_80329700 = .text:0x80329700; // type:function size:0x8 -fn_80329710 = .text:0x80329710; // type:function size:0x8 -fn_80329720 = .text:0x80329720; // type:function size:0xD4 -fn_80329800 = .text:0x80329800; // type:function size:0x98 -fn_803298A0 = .text:0x803298A0; // type:function size:0x54 -fn_80329900 = .text:0x80329900; // type:function size:0x1C -fn_80329920 = .text:0x80329920; // type:function size:0x4C -fn_80329970 = .text:0x80329970; // type:function size:0x4C -fn_803299C0 = .text:0x803299C0; // type:function size:0x40 -fn_80329A00 = .text:0x80329A00; // type:function size:0x58 -fn_80329A60 = .text:0x80329A60; // type:function size:0x1B0 -fn_80329C10 = .text:0x80329C10; // type:function size:0x1C -fn_80329C30 = .text:0x80329C30; // type:function size:0xC -fn_80329C40 = .text:0x80329C40; // type:function size:0xC -fn_80329C50 = .text:0x80329C50; // type:function size:0xC -fn_80329C60 = .text:0x80329C60; // type:function size:0xC -fn_80329C70 = .text:0x80329C70; // type:function size:0xC -fn_80329C80 = .text:0x80329C80; // type:function size:0x1C -fn_80329CA0 = .text:0x80329CA0; // type:function size:0x84 -fn_80329D30 = .text:0x80329D30; // type:function size:0x8 -fn_80329D40 = .text:0x80329D40; // type:function size:0x8 -fn_80329D50 = .text:0x80329D50; // type:function size:0xC -fn_80329D60 = .text:0x80329D60; // type:function size:0xC -fn_80329D70 = .text:0x80329D70; // type:function size:0x164 -fn_80329EE0 = .text:0x80329EE0; // type:function size:0x18 -fn_80329F00 = .text:0x80329F00; // type:function size:0x1C -fn_80329F20 = .text:0x80329F20; // type:function size:0x5C -fn_80329F80 = .text:0x80329F80; // type:function size:0x8 -fn_80329F90 = .text:0x80329F90; // type:function size:0x8 -fn_80329FA0 = .text:0x80329FA0; // type:function size:0x44 -fn_80329FF0 = .text:0x80329FF0; // type:function size:0x58 -fn_8032A050 = .text:0x8032A050; // type:function size:0x5C -fn_8032A0B0 = .text:0x8032A0B0; // type:function size:0x8 -fn_8032A0C0 = .text:0x8032A0C0; // type:function size:0x1C -fn_8032A0E0 = .text:0x8032A0E0; // type:function size:0x1C -fn_8032A100 = .text:0x8032A100; // type:function size:0x8 +getVirtualCenter__14dCcD_ShapeAttrFv = .text:0x80329120; // type:function size:0xC +__ct__15dCcD_ShapeAttr2Fv = .text:0x80329130; // type:function size:0x3C +__dt__15dCcD_ShapeAttr2Fv = .text:0x80329170; // type:function size:0x58 +dCcD_ShapeAttr_0x0C__15dCcD_ShapeAttr2Fv = .text:0x803291D0; // type:function size:0x458 +dCcD_ShapeAttr_0x10__15dCcD_ShapeAttr2Fv = .text:0x80329630; // type:function size:0x1C +dCcD_ShapeAttr_0x14__15dCcD_ShapeAttr2Fv = .text:0x80329650; // type:function size:0x10 +dCcD_ShapeAttr_0x20__15dCcD_ShapeAttr2Fv = .text:0x80329660; // type:function size:0x10 +dCcD_ShapeAttr_0x24__15dCcD_ShapeAttr2Fv = .text:0x80329670; // type:function size:0x18 +dCcD_ShapeAttr_0x18__15dCcD_ShapeAttr2Fv = .text:0x80329690; // type:function size:0xC +dCcD_ShapeAttr_0x1C__15dCcD_ShapeAttr2Fv = .text:0x803296A0; // type:function size:0x10 +dCcD_ShapeAttr_0x28__15dCcD_ShapeAttr2Fv = .text:0x803296B0; // type:function size:0x1C +dCcD_ShapeAttr_0x2C__15dCcD_ShapeAttr2Fv = .text:0x803296D0; // type:function size:0x8 +dCcD_ShapeAttr_0x30__15dCcD_ShapeAttr2Fv = .text:0x803296E0; // type:function size:0x8 +dCcD_ShapeAttr_0x34__15dCcD_ShapeAttr2Fv = .text:0x803296F0; // type:function size:0x8 +dCcD_ShapeAttr_0x38__15dCcD_ShapeAttr2Fv = .text:0x80329700; // type:function size:0x8 +dCcD_ShapeAttr_0x3C__15dCcD_ShapeAttr2Fv = .text:0x80329710; // type:function size:0x8 +dCcD_ShapeAttr_0x44__15dCcD_ShapeAttr2Fv = .text:0x80329720; // type:function size:0xD4 +dCcD_ShapeAttr_0x48__15dCcD_ShapeAttr2Fv = .text:0x80329800; // type:function size:0x98 +getShapeAccess__15dCcD_ShapeAttr2Fv = .text:0x803298A0; // type:function size:0x54 +dCcD_ShapeAttr_0x50__15dCcD_ShapeAttr2Fv = .text:0x80329900; // type:function size:0x1C +dCcD_ShapeAttr_0x58__15dCcD_ShapeAttr2Fv = .text:0x80329920; // type:function size:0x4C +__ct__15dCcD_ShapeAttr5Fv = .text:0x80329970; // type:function size:0x4C +__dt__9cM3dGAabbFv = .text:0x803299C0; // type:function size:0x40 +__dt__15dCcD_ShapeAttr5Fv = .text:0x80329A00; // type:function size:0x58 +dCcD_ShapeAttr_0x0C__15dCcD_ShapeAttr5Fv = .text:0x80329A60; // type:function size:0x1B0 +dCcD_ShapeAttr_0x10__15dCcD_ShapeAttr5Fv = .text:0x80329C10; // type:function size:0x1C +dCcD_ShapeAttr_0x14__15dCcD_ShapeAttr5Fv = .text:0x80329C30; // type:function size:0xC +dCcD_ShapeAttr_0x18__15dCcD_ShapeAttr5Fv = .text:0x80329C40; // type:function size:0xC +dCcD_ShapeAttr_0x1C__15dCcD_ShapeAttr5Fv = .text:0x80329C50; // type:function size:0xC +dCcD_ShapeAttr_0x20__15dCcD_ShapeAttr5Fv = .text:0x80329C60; // type:function size:0xC +dCcD_ShapeAttr_0x24__15dCcD_ShapeAttr5Fv = .text:0x80329C70; // type:function size:0xC +dCcD_ShapeAttr_0x28__15dCcD_ShapeAttr5Fv = .text:0x80329C80; // type:function size:0x1C +dCcD_ShapeAttr_0x2C__15dCcD_ShapeAttr5Fv = .text:0x80329CA0; // type:function size:0x84 +dCcD_ShapeAttr_0x30__15dCcD_ShapeAttr5Fv = .text:0x80329D30; // type:function size:0x8 +dCcD_ShapeAttr_0x34__15dCcD_ShapeAttr5Fv = .text:0x80329D40; // type:function size:0x8 +dCcD_ShapeAttr_0x38__15dCcD_ShapeAttr5Fv = .text:0x80329D50; // type:function size:0xC +dCcD_ShapeAttr_0x3C__15dCcD_ShapeAttr5Fv = .text:0x80329D60; // type:function size:0xC +dCcD_ShapeAttr_0x44__15dCcD_ShapeAttr5Fv = .text:0x80329D70; // type:function size:0x164 +dCcD_ShapeAttr_0x48__15dCcD_ShapeAttr5Fv = .text:0x80329EE0; // type:function size:0x18 +dCcD_ShapeAttr_0x50__15dCcD_ShapeAttr5Fv = .text:0x80329F00; // type:function size:0x1C +init__15dCcD_ShapeAttr5FRC16dCcD_SrcAabbAttr = .text:0x80329F20; // type:function size:0x5C +getVirtualCenter__15dCcD_ShapeAttr5Fv = .text:0x80329F80; // type:function size:0x8 +dCcD_ShapeAttr_0x58__15dCcD_ShapeAttr5Fv = .text:0x80329F90; // type:function size:0x8 +__ct__15dCcD_ShapeAttr1Fv = .text:0x80329FA0; // type:function size:0x44 +__dt__15dCcD_ShapeAttr1Fv = .text:0x80329FF0; // type:function size:0x58 +init__15dCcD_ShapeAttr1FRC16dCcD_SrcUnk1Attr = .text:0x8032A050; // type:function size:0x5C +getVirtualCenter__15dCcD_ShapeAttr1Fv = .text:0x8032A0B0; // type:function size:0x8 +dCcD_ShapeAttr_0x10__15dCcD_ShapeAttr1Fv = .text:0x8032A0C0; // type:function size:0x1C +dCcD_ShapeAttr_0x28__15dCcD_ShapeAttr1Fv = .text:0x8032A0E0; // type:function size:0x1C +dCcD_ShapeAttr_0x30__15dCcD_ShapeAttr1Fv = .text:0x8032A100; // type:function size:0x8 fn_8032A110 = .text:0x8032A110; // type:function size:0x308 -fn_8032A420 = .text:0x8032A420; // type:function size:0x28C -fn_8032A6B0 = .text:0x8032A6B0; // type:function size:0x14 -fn_8032A6D0 = .text:0x8032A6D0; // type:function size:0xC -fn_8032A6E0 = .text:0x8032A6E0; // type:function size:0xC -fn_8032A6F0 = .text:0x8032A6F0; // type:function size:0xC -fn_8032A700 = .text:0x8032A700; // type:function size:0xC +dCcD_ShapeAttr_0x0C__15dCcD_ShapeAttr1Fv = .text:0x8032A420; // type:function size:0x28C +dCcD_ShapeAttr_0x14__15dCcD_ShapeAttr1Fv = .text:0x8032A6B0; // type:function size:0x14 +dCcD_ShapeAttr_0x20__15dCcD_ShapeAttr1Fv = .text:0x8032A6D0; // type:function size:0xC +dCcD_ShapeAttr_0x24__15dCcD_ShapeAttr1Fv = .text:0x8032A6E0; // type:function size:0xC +dCcD_ShapeAttr_0x18__15dCcD_ShapeAttr1Fv = .text:0x8032A6F0; // type:function size:0xC +dCcD_ShapeAttr_0x1C__15dCcD_ShapeAttr1Fv = .text:0x8032A700; // type:function size:0xC fn_8032A710 = .text:0x8032A710; // type:function size:0xB0 fn_8032A7C0 = .text:0x8032A7C0; // type:function size:0xBC -fn_8032A880 = .text:0x8032A880; // type:function size:0xA4 -fn_8032A930 = .text:0x8032A930; // type:function size:0x84 -fn_8032A9C0 = .text:0x8032A9C0; // type:function size:0x8C -fn_8032AA50 = .text:0x8032AA50; // type:function size:0x8C -fn_8032AAE0 = .text:0x8032AAE0; // type:function size:0x90 -fn_8032AB70 = .text:0x8032AB70; // type:function size:0x188 -fn_8032AD00 = .text:0x8032AD00; // type:function size:0x1C -fn_8032AD20 = .text:0x8032AD20; // type:function size:0x50 -fn_8032AD70 = .text:0x8032AD70; // type:function size:0x34 -fn_8032ADB0 = .text:0x8032ADB0; // type:function size:0x3C -fn_8032ADF0 = .text:0x8032ADF0; // type:function size:0x58 -fn_8032AE50 = .text:0x8032AE50; // type:function size:0x68 -fn_8032AEC0 = .text:0x8032AEC0; // type:function size:0x8 -fn_8032AED0 = .text:0x8032AED0; // type:function size:0x28 -fn_8032AF00 = .text:0x8032AF00; // type:function size:0x1C -fn_8032AF20 = .text:0x8032AF20; // type:function size:0x10 -fn_8032AF30 = .text:0x8032AF30; // type:function size:0xC -fn_8032AF40 = .text:0x8032AF40; // type:function size:0x2C -fn_8032AF70 = .text:0x8032AF70; // type:function size:0xC -fn_8032AF80 = .text:0x8032AF80; // type:function size:0xC -fn_8032AF90 = .text:0x8032AF90; // type:function size:0x1C -fn_8032AFB0 = .text:0x8032AFB0; // type:function size:0x8 -fn_8032AFC0 = .text:0x8032AFC0; // type:function size:0xC -fn_8032AFD0 = .text:0x8032AFD0; // type:function size:0xC -fn_8032AFE0 = .text:0x8032AFE0; // type:function size:0x84 -fn_8032B070 = .text:0x8032B070; // type:function size:0xC -fn_8032B080 = .text:0x8032B080; // type:function size:0x64 -fn_8032B0F0 = .text:0x8032B0F0; // type:function size:0xE8 -fn_8032B1E0 = .text:0x8032B1E0; // type:function size:0x5C -fn_8032B240 = .text:0x8032B240; // type:function size:0x1C -fn_8032B260 = .text:0x8032B260; // type:function size:0x1C -fn_8032B280 = .text:0x8032B280; // type:function size:0x44 -fn_8032B2D0 = .text:0x8032B2D0; // type:function size:0x58 -fn_8032B330 = .text:0x8032B330; // type:function size:0x50 -fn_8032B380 = .text:0x8032B380; // type:function size:0x8 -fn_8032B390 = .text:0x8032B390; // type:function size:0x190 -fn_8032B520 = .text:0x8032B520; // type:function size:0x1C -fn_8032B540 = .text:0x8032B540; // type:function size:0x10 -fn_8032B550 = .text:0x8032B550; // type:function size:0x30 -fn_8032B580 = .text:0x8032B580; // type:function size:0x10 -fn_8032B590 = .text:0x8032B590; // type:function size:0x14 -fn_8032B5B0 = .text:0x8032B5B0; // type:function size:0xC -fn_8032B5C0 = .text:0x8032B5C0; // type:function size:0x1C -fn_8032B5E0 = .text:0x8032B5E0; // type:function size:0x8 -fn_8032B5F0 = .text:0x8032B5F0; // type:function size:0x10 -fn_8032B600 = .text:0x8032B600; // type:function size:0xC -fn_8032B610 = .text:0x8032B610; // type:function size:0x8C -fn_8032B6A0 = .text:0x8032B6A0; // type:function size:0xC -fn_8032B6B0 = .text:0x8032B6B0; // type:function size:0x8 -fn_8032B6C0 = .text:0x8032B6C0; // type:function size:0xA4 -fn_8032B770 = .text:0x8032B770; // type:function size:0x58 -fn_8032B7D0 = .text:0x8032B7D0; // type:function size:0x1C -fn_8032B7F0 = .text:0x8032B7F0; // type:function size:0x20 -fn_8032B810 = .text:0x8032B810; // type:function size:0x1C -fn_8032B830 = .text:0x8032B830; // type:function size:0x44 -fn_8032B880 = .text:0x8032B880; // type:function size:0x58 -fn_8032B8E0 = .text:0x8032B8E0; // type:function size:0x94 -fn_8032B980 = .text:0x8032B980; // type:function size:0x14 -fn_8032B9A0 = .text:0x8032B9A0; // type:function size:0x1C -fn_8032B9C0 = .text:0x8032B9C0; // type:function size:0x6C -fn_8032BA30 = .text:0x8032BA30; // type:function size:0x58 -fn_8032BA90 = .text:0x8032BA90; // type:function size:0x64 -fn_8032BB00 = .text:0x8032BB00; // type:function size:0x34 -fn_8032BB40 = .text:0x8032BB40; // type:function size:0x48 -fn_8032BB90 = .text:0x8032BB90; // type:function size:0x58 -fn_8032BBF0 = .text:0x8032BBF0; // type:function size:0x18 -fn_8032BC10 = .text:0x8032BC10; // type:function size:0x1C -fn_8032BC30 = .text:0x8032BC30; // type:function size:0x4 -fn_8032BC40 = .text:0x8032BC40; // type:function size:0x2C -fn_8032BC70 = .text:0x8032BC70; // type:function size:0x8 +dCcD_ShapeAttr_0x2C__15dCcD_ShapeAttr1Fv = .text:0x8032A880; // type:function size:0xA4 +dCcD_ShapeAttr_0x38__15dCcD_ShapeAttr1Fv = .text:0x8032A930; // type:function size:0x84 +dCcD_ShapeAttr_0x3C__15dCcD_ShapeAttr1Fv = .text:0x8032A9C0; // type:function size:0x8C +dCcD_ShapeAttr_0x34__15dCcD_ShapeAttr1Fv = .text:0x8032AA50; // type:function size:0x8C +dCcD_ShapeAttr_0x44__15dCcD_ShapeAttr1Fv = .text:0x8032AAE0; // type:function size:0x90 +dCcD_ShapeAttr_0x48__15dCcD_ShapeAttr1Fv = .text:0x8032AB70; // type:function size:0x188 +dCcD_ShapeAttr_0x50__15dCcD_ShapeAttr1Fv = .text:0x8032AD00; // type:function size:0x1C +getShapeAccess__15dCcD_ShapeAttr1Fv = .text:0x8032AD20; // type:function size:0x50 +dCcD_ShapeAttr_0x58__15dCcD_ShapeAttr1Fv = .text:0x8032AD70; // type:function size:0x34 +__ct__15dCcD_ShapeAttr3Fv = .text:0x8032ADB0; // type:function size:0x3C +__dt__15dCcD_ShapeAttr3Fv = .text:0x8032ADF0; // type:function size:0x58 +init__15dCcD_ShapeAttr3FRC15dCcD_SrcCylAttr = .text:0x8032AE50; // type:function size:0x68 +getVirtualCenter__15dCcD_ShapeAttr3Fv = .text:0x8032AEC0; // type:function size:0x8 +dCcD_ShapeAttr_0x0C__15dCcD_ShapeAttr3Fv = .text:0x8032AED0; // type:function size:0x28 +dCcD_ShapeAttr_0x10__15dCcD_ShapeAttr3Fv = .text:0x8032AF00; // type:function size:0x1C +dCcD_ShapeAttr_0x14__15dCcD_ShapeAttr3Fv = .text:0x8032AF20; // type:function size:0x10 +dCcD_ShapeAttr_0x20__15dCcD_ShapeAttr3Fv = .text:0x8032AF30; // type:function size:0xC +dCcD_ShapeAttr_0x24__15dCcD_ShapeAttr3Fv = .text:0x8032AF40; // type:function size:0x2C +dCcD_ShapeAttr_0x18__15dCcD_ShapeAttr3Fv = .text:0x8032AF70; // type:function size:0xC +dCcD_ShapeAttr_0x1C__15dCcD_ShapeAttr3Fv = .text:0x8032AF80; // type:function size:0xC +dCcD_ShapeAttr_0x28__15dCcD_ShapeAttr3Fv = .text:0x8032AF90; // type:function size:0x1C +dCcD_ShapeAttr_0x30__15dCcD_ShapeAttr3Fv = .text:0x8032AFB0; // type:function size:0x8 +dCcD_ShapeAttr_0x38__15dCcD_ShapeAttr3Fv = .text:0x8032AFC0; // type:function size:0xC +dCcD_ShapeAttr_0x3C__15dCcD_ShapeAttr3Fv = .text:0x8032AFD0; // type:function size:0xC +dCcD_ShapeAttr_0x2C__15dCcD_ShapeAttr3Fv = .text:0x8032AFE0; // type:function size:0x84 +dCcD_ShapeAttr_0x34__15dCcD_ShapeAttr3Fv = .text:0x8032B070; // type:function size:0xC +dCcD_ShapeAttr_0x44__15dCcD_ShapeAttr3Fv = .text:0x8032B080; // type:function size:0x64 +dCcD_ShapeAttr_0x48__15dCcD_ShapeAttr3Fv = .text:0x8032B0F0; // type:function size:0xE8 +getShapeAccess__15dCcD_ShapeAttr3Fv = .text:0x8032B1E0; // type:function size:0x5C +dCcD_ShapeAttr_0x50__15dCcD_ShapeAttr3Fv = .text:0x8032B240; // type:function size:0x1C +dCcD_ShapeAttr_0x58__15dCcD_ShapeAttr3Fv = .text:0x8032B260; // type:function size:0x1C +__ct__15dCcD_ShapeAttr4Fv = .text:0x8032B280; // type:function size:0x44 +__dt__15dCcD_ShapeAttr4Fv = .text:0x8032B2D0; // type:function size:0x58 +init__15dCcD_ShapeAttr4FRC15dCcD_SrcSphAttr = .text:0x8032B330; // type:function size:0x50 +getVirtualCenter__15dCcD_ShapeAttr4Fv = .text:0x8032B380; // type:function size:0x8 +dCcD_ShapeAttr_0x0C__15dCcD_ShapeAttr4Fv = .text:0x8032B390; // type:function size:0x190 +dCcD_ShapeAttr_0x10__15dCcD_ShapeAttr4Fv = .text:0x8032B520; // type:function size:0x1C +dCcD_ShapeAttr_0x14__15dCcD_ShapeAttr4Fv = .text:0x8032B540; // type:function size:0x10 +dCcD_ShapeAttr_0x20__15dCcD_ShapeAttr4Fv = .text:0x8032B550; // type:function size:0x30 +dCcD_ShapeAttr_0x24__15dCcD_ShapeAttr4Fv = .text:0x8032B580; // type:function size:0x10 +dCcD_ShapeAttr_0x18__15dCcD_ShapeAttr4Fv = .text:0x8032B590; // type:function size:0x14 +dCcD_ShapeAttr_0x1C__15dCcD_ShapeAttr4Fv = .text:0x8032B5B0; // type:function size:0xC +dCcD_ShapeAttr_0x28__15dCcD_ShapeAttr4Fv = .text:0x8032B5C0; // type:function size:0x1C +dCcD_ShapeAttr_0x30__15dCcD_ShapeAttr4Fv = .text:0x8032B5E0; // type:function size:0x8 +dCcD_ShapeAttr_0x38__15dCcD_ShapeAttr4Fv = .text:0x8032B5F0; // type:function size:0x10 +dCcD_ShapeAttr_0x3C__15dCcD_ShapeAttr4Fv = .text:0x8032B600; // type:function size:0xC +dCcD_ShapeAttr_0x2C__15dCcD_ShapeAttr4Fv = .text:0x8032B610; // type:function size:0x8C +dCcD_ShapeAttr_0x34__15dCcD_ShapeAttr4Fv = .text:0x8032B6A0; // type:function size:0xC +dCcD_ShapeAttr_0x44__15dCcD_ShapeAttr4Fv = .text:0x8032B6B0; // type:function size:0x8 +dCcD_ShapeAttr_0x48__15dCcD_ShapeAttr4Fv = .text:0x8032B6C0; // type:function size:0xA4 +getShapeAccess__15dCcD_ShapeAttr4Fv = .text:0x8032B770; // type:function size:0x58 +dCcD_ShapeAttr_0x50__15dCcD_ShapeAttr4Fv = .text:0x8032B7D0; // type:function size:0x1C +dCcD_ShapeAttr_0x54__15dCcD_ShapeAttr4Fv = .text:0x8032B7F0; // type:function size:0x20 +dCcD_ShapeAttr_0x58__15dCcD_ShapeAttr4Fv = .text:0x8032B810; // type:function size:0x1C +__ct__11dCcD_GObjAtFv = .text:0x8032B830; // type:function size:0x44 +__dt__11dCcD_GObjAtFv = .text:0x8032B880; // type:function size:0x58 +init__11dCcD_GObjAtFPC14dCcD_SrcGObjAt = .text:0x8032B8E0; // type:function size:0x94 +setSomeAtFlags__11dCcD_GObjAtFUl = .text:0x8032B980; // type:function size:0x14 +adjustHitPos__11dCcD_GObjAtFff = .text:0x8032B9A0; // type:function size:0x1C +__ct__11dCcD_GObjTgFv = .text:0x8032B9C0; // type:function size:0x6C +__dt__11dCcD_GObjTgFv = .text:0x8032BA30; // type:function size:0x58 +init__11dCcD_GObjTgFPC14dCcD_SrcGObjTg = .text:0x8032BA90; // type:function size:0x64 +adjustHitPos__11dCcD_GObjTgFff = .text:0x8032BB00; // type:function size:0x34 +__ct__11dCcD_GObjCoFv = .text:0x8032BB40; // type:function size:0x48 +__dt__11dCcD_GObjCoFv = .text:0x8032BB90; // type:function size:0x58 +init__11dCcD_GObjCoFPC14dCcD_SrcGObjCo = .text:0x8032BBF0; // type:function size:0x18 +setSomeAtFlags__11dCcD_GObjCoFUl = .text:0x8032BC10; // type:function size:0x1C +adjustHitPos__11dCcD_GObjCoFff = .text:0x8032BC30; // type:function size:0x4 +__sinit_\d_cc_d_cpp = .text:0x8032BC40; // type:function size:0x2C +@44@__dt__15dCcD_ShapeAttr5Fv = .text:0x8032BC70; // type:function size:0x8 fn_8032BC80 = .text:0x8032BC80; // type:function size:0x238 fn_8032BEC0 = .text:0x8032BEC0; // type:function size:0x40 -fn_8032BF00 = .text:0x8032BF00; // type:function size:0xB0 -fn_8032BFB0 = .text:0x8032BFB0; // type:function size:0x11C -fn_8032C0D0 = .text:0x8032C0D0; // type:function size:0x84 -fn_8032C160 = .text:0x8032C160; // type:function size:0x10C +cM3d_Len2dSqPntAndSegLine = .text:0x8032BF00; // type:function size:0xB0 +cM3d_Len3dSqPntAndSegLine = .text:0x8032BFB0; // type:function size:0x11C +cM3d_SignedLenPlaAndPos = .text:0x8032C0D0; // type:function size:0x84 +cM3d_CalcPla__FPCQ34nw4r4math4VEC3PCQ34nw4r4math4VEC3PCQ34nw4r4math4VEC3PQ34nw4r4math4VEC3Pf = .text:0x8032C160; // type:function size:0x10C fn_8032C270 = .text:0x8032C270; // type:function size:0x298 fn_8032C510 = .text:0x8032C510; // type:function size:0x1D0 fn_8032C6E0 = .text:0x8032C6E0; // type:function size:0xD34 @@ -19029,10 +19029,10 @@ fn_80337EE0 = .text:0x80337EE0; // type:function size:0x8 fn_80337EF0 = .text:0x80337EF0; // type:function size:0x34 fn_80337F30 = .text:0x80337F30; // type:function size:0x4 fn_80337F40 = .text:0x80337F40; // type:function size:0xD8 -fn_80338020 = .text:0x80338020; // type:function size:0x5C -fn_80338080 = .text:0x80338080; // type:function size:0x1C -fn_803380A0 = .text:0x803380A0; // type:function size:0x18 -fn_803380C0 = .text:0x803380C0; // type:function size:0x18 +setC__8cM3dGCylFRC7mVec3_cff = .text:0x80338020; // type:function size:0x5C +setC__8cM3dGCylFRC7mVec3_c = .text:0x80338080; // type:function size:0x1C +setH__8cM3dGCylFf = .text:0x803380A0; // type:function size:0x18 +setR__8cM3dGCylFf = .text:0x803380C0; // type:function size:0x18 fn_803380E0 = .text:0x803380E0; // type:function size:0x4 fn_803380F0 = .text:0x803380F0; // type:function size:0x4 fn_80338100 = .text:0x80338100; // type:function size:0x6C @@ -19045,11 +19045,11 @@ fn_80338430 = .text:0x80338430; // type:function size:0xE8 fn_80338520 = .text:0x80338520; // type:function size:0x58 fn_80338580 = .text:0x80338580; // type:function size:0xAC fn_80338630 = .text:0x80338630; // type:function size:0x48 -fn_80338680 = .text:0x80338680; // type:function size:0xC -fn_80338690 = .text:0x80338690; // type:function size:0x1C -fn_803386B0 = .text:0x803386B0; // type:function size:0x44 -fn_80338700 = .text:0x80338700; // type:function size:0x18 -fn_80338720 = .text:0x80338720; // type:function size:0x30 +__ct__8cM3dGSphFv = .text:0x80338680; // type:function size:0xC +setC__8cM3dGSphFRC7mVec3_c = .text:0x80338690; // type:function size:0x1C +set__8cM3dGSphFRC7mVec3_cf = .text:0x803386B0; // type:function size:0x44 +setR__8cM3dGSphFf = .text:0x80338700; // type:function size:0x18 +setC__8cM3dGSphFfff = .text:0x80338720; // type:function size:0x30 fn_80338750 = .text:0x80338750; // type:function size:0x10 fn_80338760 = .text:0x80338760; // type:function size:0x10 fn_80338770 = .text:0x80338770; // type:function size:0x6C @@ -19058,7 +19058,7 @@ fn_803387F0 = .text:0x803387F0; // type:function size:0xE0 fn_803388D0 = .text:0x803388D0; // type:function size:0x8 fn_803388E0 = .text:0x803388E0; // type:function size:0x60 fn_80338940 = .text:0x80338940; // type:function size:0xB4 -fn_80338A00 = .text:0x80338A00; // type:function size:0x144 +setMinMax__9cM3dGAabbFRC7mVec3_cRC7mVec3_c = .text:0x80338A00; // type:function size:0x144 fn_80338B50 = .text:0x80338B50; // type:function size:0xA0 fn_80338BF0 = .text:0x80338BF0; // type:function size:0x34 fn_80338C30 = .text:0x80338C30; // type:function size:0x10 @@ -19069,7 +19069,7 @@ fn_80338CC0 = .text:0x80338CC0; // type:function size:0x10 fn_80338CD0 = .text:0x80338CD0; // type:function size:0x4 fn_80338CE0 = .text:0x80338CE0; // type:function size:0x4 fn_80338CF0 = .text:0x80338CF0; // type:function size:0x64 -fn_80338D60 = .text:0x80338D60; // type:function size:0x78 +setWithYRot__9cM3dGAabbFRC7mVec3_cRC4mAng = .text:0x80338D60; // type:function size:0x78 fn_80338DE0 = .text:0x80338DE0; // type:function size:0xBC fn_80338EA0 = .text:0x80338EA0; // type:function size:0x90 fn_80338F30 = .text:0x80338F30; // type:function size:0x1C @@ -19693,38 +19693,38 @@ fn_80353920 = .text:0x80353920; // type:function size:0xDC fn_80353A00 = .text:0x80353A00; // type:function size:0x128 fn_80353B30 = .text:0x80353B30; // type:function size:0x8 fn_80353B40 = .text:0x80353B40; // type:function size:0x4 -fn_80353B50 = .text:0x80353B50; // type:function size:0x4C -fn_80353BA0 = .text:0x80353BA0; // type:function size:0x68 -fn_80353C10 = .text:0x80353C10; // type:function size:0x44 -fn_80353C60 = .text:0x80353C60; // type:function size:0x10 -fn_80353C70 = .text:0x80353C70; // type:function size:0x14 -fn_80353C90 = .text:0x80353C90; // type:function size:0x4C -fn_80353CE0 = .text:0x80353CE0; // type:function size:0x68 -fn_80353D50 = .text:0x80353D50; // type:function size:0x4 -fn_80353D60 = .text:0x80353D60; // type:function size:0x10 -fn_80353D70 = .text:0x80353D70; // type:function size:0x4C -fn_80353DC0 = .text:0x80353DC0; // type:function size:0x68 -fn_80353E30 = .text:0x80353E30; // type:function size:0x44 -fn_80353E80 = .text:0x80353E80; // type:function size:0x10 -fn_80353E90 = .text:0x80353E90; // type:function size:0x28 -fn_80353EC0 = .text:0x80353EC0; // type:function size:0x64 -fn_80353F30 = .text:0x80353F30; // type:function size:0x4C -fn_80353F80 = .text:0x80353F80; // type:function size:0x68 -fn_80353FF0 = .text:0x80353FF0; // type:function size:0x44 -fn_80354040 = .text:0x80354040; // type:function size:0x28 -fn_80354070 = .text:0x80354070; // type:function size:0x64 -fn_803540E0 = .text:0x803540E0; // type:function size:0x20 -fn_80354100 = .text:0x80354100; // type:function size:0x10 -fn_80354110 = .text:0x80354110; // type:function size:0x54 -fn_80354170 = .text:0x80354170; // type:function size:0x68 -fn_803541E0 = .text:0x803541E0; // type:function size:0x44 -fn_80354230 = .text:0x80354230; // type:function size:0x10 -fn_80354240 = .text:0x80354240; // type:function size:0x8 -fn_80354250 = .text:0x80354250; // type:function size:0x8 -fn_80354260 = .text:0x80354260; // type:function size:0x8 -fn_80354270 = .text:0x80354270; // type:function size:0x8 -fn_80354280 = .text:0x80354280; // type:function size:0x8 -fn_80354290 = .text:0x80354290; // type:function size:0x8 +__ct__9dCcD_Unk1Fv = .text:0x80353B50; // type:function size:0x4C +__dt__9dCcD_Unk1Fv = .text:0x80353BA0; // type:function size:0x68 +init__9dCcD_Unk1FRC11dCcD_SrcUnk = .text:0x80353C10; // type:function size:0x44 +dCcD_GObjInf_0x0C__9dCcD_Unk1Fv = .text:0x80353C60; // type:function size:0x10 +unknownCalc__9dCcD_Unk1Fv = .text:0x80353C70; // type:function size:0x14 +__ct__10dCcD_EmptyFv = .text:0x80353C90; // type:function size:0x4C +__dt__10dCcD_EmptyFv = .text:0x80353CE0; // type:function size:0x68 +init__10dCcD_EmptyFRC13dCcD_SrcEmpty = .text:0x80353D50; // type:function size:0x4 +dCcD_GObjInf_0x0C__10dCcD_EmptyFv = .text:0x80353D60; // type:function size:0x10 +__ct__8dCcD_CylFv = .text:0x80353D70; // type:function size:0x4C +__dt__8dCcD_CylFv = .text:0x80353DC0; // type:function size:0x68 +init__8dCcD_CylFRC11dCcD_SrcCyl = .text:0x80353E30; // type:function size:0x44 +dCcD_GObjInf_0x0C__8dCcD_CylFv = .text:0x80353E80; // type:function size:0x10 +setCenter__8dCcD_CylFRC7mVec3_c = .text:0x80353E90; // type:function size:0x28 +moveCenter__8dCcD_CylFRC7mVec3_c = .text:0x80353EC0; // type:function size:0x64 +__ct__8dCcD_SphFv = .text:0x80353F30; // type:function size:0x4C +__dt__8dCcD_SphFv = .text:0x80353F80; // type:function size:0x68 +init__8dCcD_SphFRC11dCcD_SrcSph = .text:0x80353FF0; // type:function size:0x44 +setCenter__8dCcD_SphFRC7mVec3_c = .text:0x80354040; // type:function size:0x28 +moveCenter__8dCcD_SphFRC7mVec3_c = .text:0x80354070; // type:function size:0x64 +setCenterAndAtVec__8dCcD_SphFRC7mVec3_cRC7mVec3_c = .text:0x803540E0; // type:function size:0x20 +dCcD_GObjInf_0x0C__8dCcD_SphFv = .text:0x80354100; // type:function size:0x10 +__ct__9dCcD_AabbFv = .text:0x80354110; // type:function size:0x54 +__dt__9dCcD_AabbFv = .text:0x80354170; // type:function size:0x68 +init__9dCcD_AabbFRC12dCcD_SrcAabb = .text:0x803541E0; // type:function size:0x44 +dCcD_GObjInf_0x0C__9dCcD_AabbFv = .text:0x80354230; // type:function size:0x10 +@272@__dt__9dCcD_Unk1Fv = .text:0x80354240; // type:function size:0x8 +@272@__dt__10dCcD_EmptyFv = .text:0x80354250; // type:function size:0x8 +@272@__dt__8dCcD_CylFv = .text:0x80354260; // type:function size:0x8 +@272@__dt__8dCcD_SphFv = .text:0x80354270; // type:function size:0x8 +@316@__dt__9dCcD_AabbFv = .text:0x80354280; // type:function size:0x8 +@272@__dt__9dCcD_AabbFv = .text:0x80354290; // type:function size:0x8 fn_803542A0 = .text:0x803542A0; // type:function size:0x14 fn_803542C0 = .text:0x803542C0; // type:function size:0x54 fn_80354320 = .text:0x80354320; // type:function size:0x54 @@ -19746,7 +19746,7 @@ fn_80354990 = .text:0x80354990; // type:function size:0x504 fn_80354EA0 = .text:0x80354EA0; // type:function size:0xAC fn_80354F50 = .text:0x80354F50; // type:function size:0x9C fn_80354FF0 = .text:0x80354FF0; // type:function size:0x90 -fn_80355080 = .text:0x80355080; // type:function size:0x8 +getColliderManager__15ColliderManagerFv = .text:0x80355080; // type:function size:0x8 fn_80355090 = .text:0x80355090; // type:function size:0x428 fn_803554C0 = .text:0x803554C0; // type:function size:0x4C fn_80355510 = .text:0x80355510; // type:function size:0x70 @@ -19772,7 +19772,7 @@ fn_80357600 = .text:0x80357600; // type:function size:0x1E8 fn_803577F0 = .text:0x803577F0; // type:function size:0x2D4 fn_80357AD0 = .text:0x80357AD0; // type:function size:0x1B4 fn_80357C90 = .text:0x80357C90; // type:function size:0x218 -fn_80357EB0 = .text:0x80357EB0; // type:function size:0x13C +addCollider__15ColliderManagerFP12dCcD_GObjInf = .text:0x80357EB0; // type:function size:0x13C fn_80357FF0 = .text:0x80357FF0; // type:function size:0x4 fn_80358000 = .text:0x80358000; // type:function size:0x1DC fn_803581E0 = .text:0x803581E0; // type:function size:0x1D0 @@ -36068,19 +36068,19 @@ lbl_80547398 = .data:0x80547398; // type:object size:0x10 lbl_805473A8 = .data:0x805473A8; // type:object size:0x10 lbl_805473B8 = .data:0x805473B8; // type:object size:0x10 lbl_805473C8 = .data:0x805473C8; // type:object size:0x10 -lbl_805473D8 = .data:0x805473D8; // type:object size:0x5C -lbl_80547434 = .data:0x80547434; // type:object size:0x5C -lbl_80547490 = .data:0x80547490; // type:object size:0x68 -lbl_805474F8 = .data:0x805474F8; // type:object size:0x5C -lbl_80547554 = .data:0x80547554; // type:object size:0x5C -lbl_805475B0 = .data:0x805475B0; // type:object size:0x14 -lbl_805475C4 = .data:0x805475C4; // type:object size:0x5C -lbl_80547620 = .data:0x80547620; // type:object size:0xC -lbl_8054762C = .data:0x8054762C; // type:object size:0xC -lbl_80547638 = .data:0x80547638; // type:object size:0xC -lbl_80547644 = .data:0x80547644; // type:object size:0xC -lbl_80547650 = .data:0x80547650; // type:object size:0xC -lbl_8054765C = .data:0x8054765C; // type:object size:0xC +__vt__15dCcD_ShapeAttr4 = .data:0x805473D8; // type:object size:0x5C +__vt__15dCcD_ShapeAttr3 = .data:0x80547434; // type:object size:0x5C +__vt__15dCcD_ShapeAttr5 = .data:0x80547490; // type:object size:0x68 +__vt__15dCcD_ShapeAttr2 = .data:0x805474F8; // type:object size:0x5C +__vt__15dCcD_ShapeAttr1 = .data:0x80547554; // type:object size:0x5C +__vt__12dCcD_GObjInf = .data:0x805475B0; // type:object size:0x14 +__vt__14dCcD_ShapeAttr = .data:0x805475C4; // type:object size:0x5C +__vt__11dCcD_GObjCo = .data:0x80547620; // type:object size:0xC +__vt__11dCcD_GObjTg = .data:0x8054762C; // type:object size:0xC +__vt__11dCcD_GObjAt = .data:0x80547638; // type:object size:0xC +__vt__22dCcD_GAtTgCoCommonBase = .data:0x80547644; // type:object size:0xC +__vt__15dCcD_DivideArea = .data:0x80547650; // type:object size:0xC +__vt__15dCcD_DivideInfo = .data:0x8054765C; // type:object size:0xC lbl_80547668 = .data:0x80547668; // type:object size:0x10 lbl_80547678 = .data:0x80547678; // type:object size:0x10 lbl_80547688 = .data:0x80547688; // type:object size:0x10 @@ -36136,11 +36136,11 @@ lbl_80547F10 = .data:0x80547F10; // type:object size:0x108 lbl_80548018 = .data:0x80548018; // type:object size:0x108 lbl_80548120 = .data:0x80548120; // type:object size:0x118 lbl_80548238 = .data:0x80548238; // type:object size:0x108 -lbl_80548340 = .data:0x80548340; // type:object size:0x80 -lbl_805483C0 = .data:0x805483C0; // type:object size:0x70 -lbl_80548430 = .data:0x80548430; // type:object size:0x70 -lbl_805484A0 = .data:0x805484A0; // type:object size:0x70 -lbl_80548510 = .data:0x80548510; // type:object size:0x70 +__vt__9dCcD_Aabb = .data:0x80548340; // type:object size:0x7C +__vt__8dCcD_Sph = .data:0x805483C0; // type:object size:0x70 +__vt__8dCcD_Cyl = .data:0x80548430; // type:object size:0x70 +__vt__10dCcD_Empty = .data:0x805484A0; // type:object size:0x70 +__vt__9dCcD_Unk1 = .data:0x80548510; // type:object size:0x70 lbl_80548580 = .data:0x80548580; // type:object size:0xC lbl_8054858C = .data:0x8054858C; // type:object size:0xC lbl_80548598 = .data:0x80548598; // type:object size:0x10 @@ -39885,7 +39885,7 @@ lbl_8057535C = .sbss:0x8057535C; // type:object size:0x4 data:4byte lbl_80575360 = .sbss:0x80575360; // type:object size:0x4 data:4byte lbl_80575364 = .sbss:0x80575364; // type:object size:0x4 data:4byte lbl_80575368 = .sbss:0x80575368; // type:object size:0x8 data:4byte -lbl_80575370 = .sbss:0x80575370; // type:object size:0x8 data:4byte +sInstance__12dAttention_c = .sbss:0x80575370; // type:object size:0x8 data:4byte lbl_80575378 = .sbss:0x80575378; // type:object size:0x4 data:4byte lbl_8057537C = .sbss:0x8057537C; // type:object size:0xC data:byte lbl_80575388 = .sbss:0x80575388; // type:object size:0x8 data:byte @@ -40076,7 +40076,7 @@ lbl_80575787 = .sbss:0x80575787; // type:object size:0x1 data:byte lbl_80575788 = .sbss:0x80575788; // type:object size:0x4 data:4byte LINK__7dAcPy_c = .sbss:0x8057578C; // type:object size:0x4 data:4byte lbl_80575790 = .sbss:0x80575790; // type:object size:0x4 data:4byte -lbl_80575794 = .sbss:0x80575794; // type:object size:0x4 data:4byte +sInstance__6ScGame = .sbss:0x80575794; // type:object size:0x4 data:4byte lbl_80575798 = .sbss:0x80575798; // type:object size:0x4 data:4byte lbl_8057579C = .sbss:0x8057579C; // type:object size:0x1 data:byte lbl_8057579D = .sbss:0x8057579D; // type:object size:0x1 data:byte @@ -45991,7 +45991,7 @@ lbl_8057CFA8 = .sdata2:0x8057CFA8; // type:object size:0x4 data:float lbl_8057CFAC = .sdata2:0x8057CFAC; // type:object size:0x4 data:float lbl_8057CFB0 = .sdata2:0x8057CFB0; // type:object size:0x4 data:float lbl_8057CFB4 = .sdata2:0x8057CFB4; // type:object size:0x4 data:float -lbl_8057CFB8 = .sdata2:0x8057CFB8; // type:object size:0x8 data:float +lbl_8057CFB8 = .sdata2:0x8057CFB8; // type:object size:0x4 data:float lbl_8057CFC0 = .sdata2:0x8057CFC0; // type:object size:0x4 data:float lbl_8057CFC4 = .sdata2:0x8057CFC4; // type:object size:0x4 data:float lbl_8057CFC8 = .sdata2:0x8057CFC8; // type:object size:0x8 data:float @@ -49196,7 +49196,7 @@ lbl_805CED68 = .bss:0x805CED68; // type:object size:0x48 lbl_805CEDB0 = .bss:0x805CEDB0; // type:object size:0x1318 lbl_805D00C8 = .bss:0x805D00C8; // type:object size:0x30 lbl_805D00F8 = .bss:0x805D00F8; // type:object size:0x30 -lbl_805D0128 = .bss:0x805D0128; // type:object size:0x10 data:float +m_virtual_center__14dCcD_ShapeAttr = .bss:0x805D0128; // type:object size:0xC data:float lbl_805D0138 = .bss:0x805D0138; // type:object size:0x7C data:4byte lbl_805D01B4 = .bss:0x805D01B4; // type:object size:0x14 data:4byte lbl_805D01C8 = .bss:0x805D01C8; // type:object size:0x10 diff --git a/configure.py b/configure.py index 1b98f6cc..bddfee25 100644 --- a/configure.py +++ b/configure.py @@ -344,6 +344,11 @@ def nw4rLib(lib_name, objects, extra_cflags=[]): Object(Matching, "toBeSorted/counters/slingshot_seed_counter.cpp"), Object(Matching, "toBeSorted/counters/key_piece_counter.cpp"), Object(Matching, "toBeSorted/counters/extra_wallet_counter.cpp"), + Object(NonMatching, "toBeSorted/cc/d_cc_d.cpp"), + Object(NonMatching, "toBeSorted/cc/d_cc_m3d.cpp"), + Object(NonMatching, "toBeSorted/cc/d_cc_m3d_g_cyl.cpp"), + Object(NonMatching, "toBeSorted/cc/d_cc_m3d_g_sph.cpp"), + Object(Matching, "toBeSorted/cc/d_cc_shape_colliders.cpp"), Object(NonMatching, "toBeSorted/file_manager.cpp"), Object(NonMatching, "toBeSorted/save_manager.cpp"), Object(Matching, "DynamicLink.cpp"), @@ -1165,7 +1170,7 @@ def nw4rLib(lib_name, objects, extra_cflags=[]): Rel(Matching, "d_a_obj_smoke", "REL/d/a/obj/d_a_obj_smoke.cpp"), Rel(NonMatching, "d_a_obj_soil", "REL/d/a/obj/d_a_obj_soil.cpp"), Rel(NonMatching, "d_a_obj_spider_line", "REL/d/a/obj/d_a_obj_spider_line.cpp"), - Rel(NonMatching, "d_a_obj_spike", "REL/d/a/obj/d_a_obj_spike.cpp"), + Rel(Matching, "d_a_obj_spike", "REL/d/a/obj/d_a_obj_spike.cpp"), Rel(NonMatching, "d_a_obj_stage_cover", "REL/d/a/obj/d_a_obj_stage_cover.cpp"), Rel(NonMatching, "d_a_obj_stage_crack", "REL/d/a/obj/d_a_obj_stage_crack.cpp"), Rel(NonMatching, "d_a_obj_stage_debris", "REL/d/a/obj/d_a_obj_stage_debris.cpp"), @@ -1216,7 +1221,7 @@ def nw4rLib(lib_name, objects, extra_cflags=[]): Rel(NonMatching, "d_a_obj_time_door_before", "REL/d/a/obj/d_a_obj_time_door_before.cpp"), Rel(NonMatching, "d_a_obj_time_stage_bg", "REL/d/a/obj/d_a_obj_time_stage_bg.cpp"), Rel(NonMatching, "d_a_obj_time_stone", "REL/d/a/obj/d_a_obj_time_stone.cpp"), - Rel(NonMatching, "d_a_obj_toD3_stone_figure", "REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp"), + Rel(Matching, "d_a_obj_toD3_stone_figure", "REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp"), Rel(NonMatching, "d_a_obj_toge_trap", "REL/d/a/obj/d_a_obj_toge_trap.cpp"), Rel(NonMatching, "d_a_obj_tornado", "REL/d/a/obj/d_a_obj_tornado.cpp"), Rel(NonMatching, "d_a_obj_tower_bomb", "REL/d/a/obj/d_a_obj_tower_bomb.cpp"), @@ -1227,7 +1232,7 @@ def nw4rLib(lib_name, objects, extra_cflags=[]): Rel(NonMatching, "d_a_obj_trap_rock_1", "REL/d/a/obj/d_a_obj_trap_rock_1.cpp"), Rel(NonMatching, "d_a_obj_treasure_island", "REL/d/a/obj/d_a_obj_treasure_island.cpp"), Rel(NonMatching, "d_a_obj_treasure_island_b", "REL/d/a/obj/d_a_obj_treasure_island_b.cpp"), - Rel(NonMatching, "d_a_obj_triforce", "REL/d/a/obj/d_a_obj_triforce.cpp"), + Rel(Matching, "d_a_obj_triforce", "REL/d/a/obj/d_a_obj_triforce.cpp"), Rel(NonMatching, "d_a_obj_trolley", "REL/d/a/obj/d_a_obj_trolley.cpp"), Rel(NonMatching, "d_a_obj_trolley_shutter", "REL/d/a/obj/d_a_obj_trolley_shutter.cpp"), Rel(NonMatching, "d_a_obj_truck", "REL/d/a/obj/d_a_obj_truck.cpp"), diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index a5a8666c..09467d6b 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -2,11 +2,14 @@ #define D_A_OBJ_BASE_H #include "d/a/d_a_base.h" +#include "m/m_angle.h" #include "m/m_mtx.h" #include "m/m3d/m_smdl.h" #include "m/m3d/m_shadow.h" +#include "m/m_vec.h" #include "m/types_m.h" #include "nw4r/g3d/g3d_resfile.h" +#include "toBeSorted/cc/d_cc_d.h" // Size: 0xA8 struct ActorCarryStruct { @@ -21,7 +24,7 @@ struct ActorCarryStruct { /* 0x58 */ mMtx_c field_0x58; /* 0x88 */ s32 isCarried; /* 0x8C */ u8 field_0x8C[0x10]; // mQuat_c - /* 0x9C */ void *dtor; // ??? + /* 0x9C */ void *dtor; // ??? /* 0xA0 */ u32 field_0xA0; /* 0xA4 */ u32 field_0xA4; @@ -57,11 +60,12 @@ class dAcObjBase_c : public dAcBase_c { /* 0x1A8 */ f32 field_0x1A8; /* 0x1AC */ u32 mObjectActorFlags; - u8 unk_0x1B0[0x1E8 - 0x1B0]; + u8 unk_0x1B0[0x1C0 - 0x1B0]; - /* 0x1E8 */ mVec3_c posIncrements; + /* 0x1C0 */ UnkCCDStruct mCCdStruct; - u8 unk_0x1F4[0x210 - 0x1F4]; + mVec3_c mStartingPos; + mAng3_c mStartingRot; /* 0x210 */ ActorCarryStruct mActorCarryInfo; @@ -136,7 +140,7 @@ class dAcObjBase_c : public dAcBase_c { // Actors' createHeap functions often have patterns that can be matched with this macro #define TRY_CREATE(thing) do { bool result = (thing); if (!result) return result; } while (0) - +// Use this in actors' createHeap functions #define CREATE_ALLOCATOR(className) do { if (!initAllocatorWork1Heap(-1, #className "::m_allocator", 0x20)) { return FAILED; } } while (0) #endif diff --git a/include/d/a/obj/d_a_obj_spike.h b/include/d/a/obj/d_a_obj_spike.h new file mode 100644 index 00000000..779e8501 --- /dev/null +++ b/include/d/a/obj/d_a_obj_spike.h @@ -0,0 +1,38 @@ +#ifndef D_A_O_SPIKE_H +#define D_A_O_SPIKE_H + +#include +#include +#include +#include +#include +#include +#include + + +class dAcOspike_c : public dAcObjBase_c { +public: + dAcOspike_c() : mStateMgr(*this, sStateID::null) {} + virtual ~dAcOspike_c() {} + virtual bool createHeap() override; + virtual int create() override; + virtual int actorExecute() override; + virtual int draw() override; + virtual int doDelete() override; + + STATE_FUNC_DECLARE(dAcOspike_c, Wait); + + static const mVec3_c sVec1; + static const mVec3_c sVec2; + +private: + static dCcD_SrcAabb sCcSrc; + + nw4r::g3d::ResFile mResFile; + m3d::smdl_c mMdl; + dCcD_Aabb mCollision; + + STATE_MGR_DECLARE(dAcOspike_c); +}; + +#endif diff --git a/include/d/a/obj/d_a_obj_toD3_stone_figure.h b/include/d/a/obj/d_a_obj_toD3_stone_figure.h new file mode 100644 index 00000000..efbeab47 --- /dev/null +++ b/include/d/a/obj/d_a_obj_toD3_stone_figure.h @@ -0,0 +1,47 @@ +#ifndef D_A_O_TTOD3_STONE_FIGURE_H +#define D_A_O_TTOD3_STONE_FIGURE_H + +#include +#include +#include +#include +#include +#include +#include + + +class dAcOtoD3StoneFigure_c : public dAcObjBase_c { +public: + dAcOtoD3StoneFigure_c() : mStateMgr(*this, sStateID::null) {} + virtual ~dAcOtoD3StoneFigure_c() {} + virtual bool createHeap() override; + virtual int create() override; + virtual int actorExecute() override; + virtual int draw() override; + virtual int doDelete() override; + virtual void doInteraction(s32) override; + + STATE_FUNC_DECLARE(dAcOtoD3StoneFigure_c, OneEye); + STATE_FUNC_DECLARE(dAcOtoD3StoneFigure_c, Eyes); + +private: + f32 getYPos() { + return position.y + sHeight; + } + + const char *getModelName() const; + bool isStoneOfTrialsPlaced() const; + bool hasStoneOfTrials() const; + static f32 sRadius; + static f32 sHeight; + static dCcD_SrcCyl sCcSrc; + + nw4r::g3d::ResFile mResFile; + m3d::smdl_c mMdl; + STATE_MGR_DECLARE(dAcOtoD3StoneFigure_c); + dCcD_Cyl mCollision; + s8 mExitId; + bool mIsSkyKeepAlreadyOpen; +}; + +#endif diff --git a/include/d/a/obj/d_a_obj_triforce.h b/include/d/a/obj/d_a_obj_triforce.h new file mode 100644 index 00000000..2b036536 --- /dev/null +++ b/include/d/a/obj/d_a_obj_triforce.h @@ -0,0 +1,43 @@ +#ifndef D_A_O_TRIFORCE_H +#define D_A_O_TRIFORCE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +class dAcOtriforce_c : public dAcObjBase_c { +public: + dAcOtriforce_c() {} + virtual ~dAcOtriforce_c() {} + virtual bool createHeap() override; + virtual int create() override; + virtual int actorExecute() override; + virtual int draw() override; + virtual int doDelete() override; + +private: + f32 getBounceScalar() const { + int zero = 0; + return (23.0f + zero + -3.0f); + } + + static dCcD_SrcSph sCcSrc; + + static const f32 sScale; + static const f32 sAmpNeg; + static const u32 sStartingOffsetRange; + + nw4r::g3d::ResFile mResFile; + m3d::smdl_c mMdl; + dCcD_Sph mCollision; + EffectsStruct mEffects; + m3d::anmTexSrt_c mAnm; + mAng mStartingOffset; +}; + +#endif diff --git a/include/d/d_base.h b/include/d/d_base.h index 6f753108..c57ea39a 100644 --- a/include/d/d_base.h +++ b/include/d/d_base.h @@ -20,7 +20,7 @@ class dBase_c : public fBase_c { public: /* 80050980 */ static void resetFlags(); - /* 800509a0 */ static bool isActorPlayer(dBase_c &); + /* 800509a0 */ bool isActorPlayer(); /* 800509e0 */ static void initLoader(); /* 80050a00 */ static dBase_c *createBase(ProfileName, dBase_c *, u32, u8); /* 80050a10 */ static dBase_c *createRoot(ProfileName, u32, u8); diff --git a/include/m/m_angle.h b/include/m/m_angle.h index 514fa6d0..2b0c98c9 100644 --- a/include/m/m_angle.h +++ b/include/m/m_angle.h @@ -2,6 +2,7 @@ #define M_ANGLE_H #include +#include struct mAng { mAng() {} @@ -12,6 +13,14 @@ struct mAng { } s32 step(s16 target, s32 steps, s16 max, s16 min); + inline f32 sin() const { + return nw4r::math::SinIdx(*this); + } + + inline f32 cos() const { + return nw4r::math::CosIdx(*this); + } + s16 mVal; }; diff --git a/include/m/m_vec.h b/include/m/m_vec.h index f27b498c..44be26c3 100644 --- a/include/m/m_vec.h +++ b/include/m/m_vec.h @@ -61,6 +61,11 @@ class mVec3_c : public EGG::Vector3f { return (Vec *)&x; } + /// @brief Vec cast operator. + operator Vec() const { + return *(Vec *)&x; + } + operator EGG::Vector3f *() { return (EGG::Vector3f *)&x; } diff --git a/include/nw4r/math/math_triangular.h b/include/nw4r/math/math_triangular.h index ff450d87..c79b0915 100644 --- a/include/nw4r/math/math_triangular.h +++ b/include/nw4r/math/math_triangular.h @@ -1,6 +1,7 @@ #ifndef NW4R_MATH_TRIANGULAR_H #define NW4R_MATH_TRIANGULAR_H #include +#include #include #define NW4R_MATH_PI M_PI diff --git a/include/rvl/MTX/mtxvec.h b/include/rvl/MTX/mtxvec.h index ff00123f..b744d6f4 100644 --- a/include/rvl/MTX/mtxvec.h +++ b/include/rvl/MTX/mtxvec.h @@ -7,6 +7,7 @@ extern "C" { #endif void PSMTXMultVec(const Mtx, const Vec *, Vec *); +void PSMTXMultVecSR(const Mtx, const Vec *, Vec *); #ifdef __cplusplus } diff --git a/include/rvl/MTX/vec.h b/include/rvl/MTX/vec.h index cfc4410c..bed89af0 100644 --- a/include/rvl/MTX/vec.h +++ b/include/rvl/MTX/vec.h @@ -7,6 +7,7 @@ extern "C" { #endif void PSVECAdd(const Vec *, const Vec *, Vec *); +void PSVECSubtract(const Vec *, const Vec *, Vec *); void PSVECScale(const Vec *, Vec *, f32); void PSVECNormalize(const Vec *, Vec *); f32 PSVECMag(const Vec *); diff --git a/include/toBeSorted/attention.h b/include/toBeSorted/attention.h new file mode 100644 index 00000000..5c09489f --- /dev/null +++ b/include/toBeSorted/attention.h @@ -0,0 +1,16 @@ +#ifndef ATTENTION_H +#define ATTENTION_H + +#include + +class dAcBase_c; + +class dAttention_c { +public: + static dAttention_c *sInstance; + + void addTarget(dAcBase_c *target, s32, f32, f32, f32); + void addTarget(dAcBase_c *target, s32, f32, f32, f32, f32); +}; + +#endif diff --git a/include/toBeSorted/cc/d_cc_d.h b/include/toBeSorted/cc/d_cc_d.h new file mode 100644 index 00000000..be1d8452 --- /dev/null +++ b/include/toBeSorted/cc/d_cc_d.h @@ -0,0 +1,519 @@ +#ifndef TOSORT_D_CC_D_H +#define TOSORT_D_CC_D_H + +#include +#include +#include +#include +#include +#include +#include + +// Largely modeled off +// https://github.com/zeldaret/tp/blob/main/include/SSystem/SComponent/c_cc_d.h +// https://github.com/zeldaret/tp/blob/main/include/d/cc/d_cc_d.h +// - the SComponent/d split seems to not exist anymore in SS, so we'll just +// go with the d names for this merger of the two + +class dCcD_DivideInfo { +private: + /* 0x00 */ u32 mXDivInfo; + /* 0x04 */ u32 mYDivInfo; + /* 0x08 */ u32 mZDivInfo; + /* 0x0C vtable */ +public: + /* 80328120 */ dCcD_DivideInfo(); + /* 80328130 */ virtual ~dCcD_DivideInfo(); + // void Set(u32, u32, u32); + // bool Chk(dCcD_DivideInfo const &) const; +}; // Size = 0x10 + +// This Aabb type really could be anything +struct Aabb { + mVec3_c mMin; + mVec3_c mMax; + + void Set(mVec3_c const &a, mVec3_c const &b) { + mMin = a; + mMax = b; + } +}; // Size = 0x18 + +class dCcD_DivideArea : public Aabb { +private: + /* 0x18 */ bool mXDiffIsZero; + /* 0x1C */ f32 mScaledXDiff; + /* 0x20 */ f32 mInvScaledXDiff; + /* 0x24 */ bool mYDiffIsZero; + /* 0x28 */ f32 mScaledYDiff; + /* 0x2C */ f32 mInvScaledYDiff; + /* 0x30 */ bool mZDiffIsZero; + /* 0x34 */ f32 mScaledZDiff; + /* 0x38 */ f32 mInvScaledZDiff; + +public: + /* vt at 0x3C */ + dCcD_DivideArea(); + virtual ~dCcD_DivideArea(); + /* 803281c0 */ void SetArea(Aabb const &); + /* 803282d0 */ void CalcDivideInfo(dCcD_DivideInfo *, Aabb const &, u32); + /* 80328470 */ void CalcDivideInfoOverArea(dCcD_DivideInfo *, Aabb const &); +}; // Size = 0x40 + +class dCcD_GAtTgCoCommonBase { +protected: + /* 0x00 */ u32 field_0x00; + /* 0x04 */ s8 mEffCounter; + /* 0x08 */ dAcRef_c mActor; + /* 0x14 */ u32 field_0x14; + +public: + dCcD_GAtTgCoCommonBase(); + virtual ~dCcD_GAtTgCoCommonBase(); + + void resetEffCounter() { + mEffCounter = 0; + } + void resetField0x14() { + field_0x14 = 0; + } + void decreaseCount(); + void unlink(); + dAcBase_c *getActor(); + void setActor(dAcBase_c *); +}; + +struct dCcD_SrcGAtTgCoCommonBase { + /* 0x0 */ u32 mGFlag; +}; // Size: 0x4 + +struct dCcD_SrcGObjAt { + /* 0x00 */ dCcD_SrcGAtTgCoCommonBase base; + /* 0x04 */ u32 field_0x04; + /* 0x08 */ u32 field_0x08; + /* 0x0C */ u8 mSe; // Sound Effect ID + /* 0x0D */ u8 mHitMark; // Hit Mark particle ID + /* 0x0E */ u8 mSpl; + /* 0x0F */ u8 mMtrl; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ s16 field_0x12; +}; + +struct dCcD_SrcGObjTg { + /* 0x00 */ dCcD_SrcGAtTgCoCommonBase base; + /* 0x04 */ u32 field_0x04; + /* 0x08 */ u32 field_0x08; + /* 0x0C */ u16 field_0x0C; + /* 0x0E */ u16 field_0x0E; +}; + +struct dCcD_SrcGObjCo { + /* 0x0 */ dCcD_SrcGAtTgCoCommonBase mBase; +}; + +struct dCcD_SrcGObjInf { + /* 0x00 */ dCcD_SrcGObjAt mGObjAt; + /* 0x14 */ dCcD_SrcGObjTg mGObjTg; + /* 0x24 */ dCcD_SrcGObjCo mGObjCo; +}; + +class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase { +private: + /* 0x1C */ dCcD_SrcGObjAt mSrc; + /* 0x30 */ mVec3_c mHitPos; + /* 0x3C */ mVec3_c mVec; + /* 0x48 */ mVec3_c mRVec; + /* 0x54 */ u8 field_0x4C[0x58 - 0x54]; + /* 0x58 */ u32 field_0x58; + +public: + dCcD_GObjAt(); + virtual ~dCcD_GObjAt(); + + void clearFlag() { + mSrc.field_0x04 = mSrc.field_0x04 & 0xFFFFFFFE; + } + mVec3_c *GetHitPosP() { + return &mHitPos; + } + void SetSomeVec(const mVec3_c &p) { + mVec = p; + } + mVec3_c *GetSomeVec() { + return &mVec; + } + void init(const dCcD_SrcGObjAt *); + void setSomeAtFlags(u32 flags); + void adjustHitPos(f32 dx, f32 dz); +}; + +class dCcD_GObjTg : public dCcD_GAtTgCoCommonBase { +private: + /* 0x1C */ dCcD_SrcGObjTg mSrc; + /* 0x2C */ u8 field_0x2C[0x38 - 0x2C]; + /* 0x38 */ mVec3_c mHitPos; + /* 0x44 */ u32 field_0x44; + /* 0x48 */ u16 field_0x48; + /* 0x4A */ u8 field_0x4A; + /* 0x4B */ u8 field_0x4B; + /* 0x4C */ u32 field_0x4C; + /* 0x50 */ u32 field_0x50; + /* 0x54 */ u32 field_0x54; + /* 0x58 */ u8 field_0x58[0x6C - 0x58]; + /* 0x6C */ mVec3_c field_0x6C; + /* 0x78 */ u32 field_0x78; + +public: + dCcD_GObjTg(); + virtual ~dCcD_GObjTg(); + void clearFlag() { + mSrc.field_0x04 = mSrc.field_0x04 & 0xFFFFFFFE; + } + void setFlag(u32 f) { + mSrc.field_0x04 |= f; + } + void set0x4C(u32 val) { + field_0x4C = val; + } + void init(const dCcD_SrcGObjTg *); + void adjustHitPos(f32 dx, f32 dz); +}; + +class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase { +private: + /* 0x1C */ dCcD_SrcGObjCo mSrc; + /* 0x20 */ u32 field_0x20; + /* 0x24 */ u16 field_0x24; + /* 0x28 */ u32 field_0x28; + +public: + dCcD_GObjCo(); + virtual ~dCcD_GObjCo(); + void clearFlag() { + mSrc.mBase.mGFlag = mSrc.mBase.mGFlag & 0xFFFFFFFE; + } + void setFlag(u32 f) { + mSrc.mBase.mGFlag |= f; + } + void init(const dCcD_SrcGObjCo *); + void setSomeAtFlags(u32 flags); + void adjustHitPos(f32 dx, f32 dz); + + void SetGFlag(u32 flag) { + mSrc.mBase.mGFlag = flag; + } +}; + +class dCcD_ShapeAttr { +public: + /* 0x00 */ u8 UNK_0x00[0x18 - 0x00]; + /* 0x18 */ dCcD_DivideInfo field_0x18; + + dCcD_ShapeAttr(); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C(); + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10(); + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() = 0; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() = 0; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() = 0; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() = 0; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() = 0; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28(); // 0x80329110 + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() = 0; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() = 0; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() = 0; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() = 0; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() = 0; + /* vt 0x40 */ virtual mVec3_c *getVirtualCenter(); // 0x80329120 + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() = 0; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() = 0; + /* vt 0x4C */ virtual void getShapeAccess(); // 0x80329090 + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() = 0; + /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54(); // 0x803290F0 + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() = 0; + + static mVec3_c m_virtual_center; +}; + +// This is in dAcObjBase_c @ 0x1c0 +struct UnkCCDStruct { + u32 field_0x00; + u32 field_0x04; + u32 field_0x08; + u32 field_0x0C; + /* 0x10 */ mVec3_c field_0x10; + /* 0x1C */ mVec3_c field_0x1C; + /* 0x28 */ mVec3_c posIncrements; + dAcBase_c *field_0x34; + s32 field_0x38; + + UnkCCDStruct(dAcBase_c *); + + void postExecute(); + void reset(); + fBaseID_e getId(); + u32 getSomething(int); + + void setField0x38ToMagicValue() { + field_0x38 = 0xD; + } +}; + +// Object Info +class dCcD_GObjInf { +protected: + /* 0x000 */ dCcD_GObjAt mGObjAt; + /* 0x05C */ dCcD_GObjTg mGObjTg; + /* 0x0D8 */ dCcD_GObjCo mGObjCo; + /* 0x104 */ UnkCCDStruct *field_0x104; + /* 0x108 */ u32 field_0x108; + +public: + dCcD_GObjInf(); + /* vt 0x08 */ virtual ~dCcD_GObjInf(); + /* vt 0x0C */ virtual void *dCcD_GObjInf_0x0C() = 0; + /* vt 0x10 */ virtual void dCcD_GObjInf_0x10(); // 0x80328d30 + + void clear(); + void init(const dCcD_SrcGObjInf &src); + static bool weirdConditionCheck(dAcBase_c *ac, u32); + + inline void initUnk(UnkCCDStruct &src) { + field_0x104 = &src; + } + + inline void clearCoFlag() { + mGObjCo.clearFlag(); + } + + void setTgCoFlag(u32 f) { + mGObjTg.setFlag(f); + mGObjCo.setFlag(f); + } + + inline void setSomeDefendValue(u32 val) { + mGObjTg.set0x4C(val); + } + + inline void setAtVec(const mVec3_c &p) { + mGObjAt.SetSomeVec(p); + } + + inline mVec3_c *getAtVec() { + return mGObjAt.GetSomeVec(); + } + + void ResetAtHit(); + void ResetTgHit(); + void ResetCoHit(); + + mVec3_c *GetAtHitPosP(); + mVec3_c *GetAtHitPosP2(); + + dAcBase_c *GetAtActor(); + dAcBase_c *GetTgActor(); + dAcBase_c *GetCoActor(); + + void adjustHitPos(f32 dx, f32 dz); +}; + +struct dCcD_SrcCylAttr { +public: + /* 0x00 */ f32 mRadius; + /* 0x04 */ f32 mHeight; +}; // Size = 0x8 + +struct dCcD_SrcSphAttr { + /* 0x00 */ f32 mRadius; +}; // Size = 0x4 + +class cM3dGAabb { +public: + /* 0x00 */ mMtx_c mMtx1; + /* 0x30 */ mMtx_c mMtx2; + /* 0x60 */ mVec3_c mMin; + /* 0x6C */ mVec3_c mMax; + /* 0x78 */ u8 field_0x78[0xB8 - 0x78]; + /* 0xB8 */ mVec3_c mVirtualCenter; + /* 0xC4 */ u32 field_0xC4; + + cM3dGAabb(); + /* vt 0xC8 */ + virtual ~cM3dGAabb() {} + + void setWithYRot(const mVec3_c &translation, const mAng &rot); + void setMinMax(const mVec3_c &min, const mVec3_c &max); +}; + +struct dCcD_SrcAabbAttr { + /* 0x00 */ f32 minX, minY, minZ, maxX, maxY, maxZ; +}; // Size = 0x18 + +struct dCcD_SrcUnk1Attr {}; + +class cM3dGUnk1 { +public: + /* 0x00 */ mVec3_c field_0x00; + /* 0x0C */ mVec3_c field_0x0C; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1C; + /* 0x20 */ u8 field_0x20; + /* 0x24 */ u32 field_0x24; + /* 0x28 */ mVec3_c mVirtualCenter; + cM3dGUnk1(); +}; + +class cM3dGUnk2 { +public: +}; + +// Unk1 +class dCcD_ShapeAttr1 : public dCcD_ShapeAttr, public cM3dGUnk1 { +public: + dCcD_ShapeAttr1(); + + void init(const dCcD_SrcUnk1Attr &); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr1(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C() override; + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10() override; + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() override; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() override; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() override; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28() override; + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() override; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() override; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() override; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() override; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() override; + /* vt 0x40 */ virtual mVec3_c *getVirtualCenter() override; + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() override; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() override; + /* vt 0x4C */ virtual void getShapeAccess() override; + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() override; + // /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54() override; + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() override; +}; + +// Unk1 +class dCcD_ShapeAttr2 : public dCcD_ShapeAttr, public cM3dGUnk2 { +public: + dCcD_ShapeAttr2(); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr2(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C() override; + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10() override; + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() override; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() override; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() override; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28() override; + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() override; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() override; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() override; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() override; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() override; + // /* vt 0x40 */ virtual mVec3_c *getVirtualCenter() override; + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() override; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() override; + /* vt 0x4C */ virtual void getShapeAccess() override; + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() override; + // /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54() override; + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() override; +}; + +// Aabb +class dCcD_ShapeAttr5 : public dCcD_ShapeAttr, public cM3dGAabb { +public: + dCcD_ShapeAttr5(); + + void init(const dCcD_SrcAabbAttr &); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr5(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C() override; + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10() override; + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() override; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() override; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() override; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28() override; + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() override; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() override; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() override; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() override; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() override; + /* vt 0x40 */ virtual mVec3_c *getVirtualCenter() override; + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() override; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() override; + // /* vt 0x4C */ virtual void getShapeAccess() override; + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() override; + // /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54() override; + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() override; +}; + +// Cyl +class dCcD_ShapeAttr3 : public dCcD_ShapeAttr, public cM3dGCyl { +public: + dCcD_ShapeAttr3(); + + void init(const dCcD_SrcCylAttr &); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr3(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C() override; + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10() override; + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() override; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() override; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() override; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28() override; + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() override; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() override; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() override; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() override; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() override; + /* vt 0x40 */ virtual mVec3_c *getVirtualCenter() override; + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() override; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() override; + /* vt 0x4C */ virtual void getShapeAccess() override; + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() override; + // /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54() override; + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() override; +}; + +// Sph +class dCcD_ShapeAttr4 : public dCcD_ShapeAttr, public cM3dGSph { +public: + dCcD_ShapeAttr4(); + + void init(const dCcD_SrcSphAttr &); + + /* vt 0x08 */ virtual ~dCcD_ShapeAttr4(); + /* vt 0x0C */ virtual void dCcD_ShapeAttr_0x0C() override; + /* vt 0x10 */ virtual void dCcD_ShapeAttr_0x10() override; + /* vt 0x14 */ virtual void dCcD_ShapeAttr_0x14() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x18() override; + /* vt 0x18 */ virtual void dCcD_ShapeAttr_0x1C() override; + /* vt 0x20 */ virtual void dCcD_ShapeAttr_0x20() override; + /* vt 0x24 */ virtual void dCcD_ShapeAttr_0x24() override; + /* vt 0x28 */ virtual void dCcD_ShapeAttr_0x28() override; + /* vt 0x2C */ virtual void dCcD_ShapeAttr_0x2C() override; + /* vt 0x30 */ virtual void dCcD_ShapeAttr_0x30() override; + /* vt 0x34 */ virtual void dCcD_ShapeAttr_0x34() override; + /* vt 0x38 */ virtual void dCcD_ShapeAttr_0x38() override; + /* vt 0x3C */ virtual void dCcD_ShapeAttr_0x3C() override; + /* vt 0x40 */ virtual mVec3_c *getVirtualCenter() override; + /* vt 0x44 */ virtual void dCcD_ShapeAttr_0x44() override; + /* vt 0x48 */ virtual void dCcD_ShapeAttr_0x48() override; + /* vt 0x4C */ virtual void getShapeAccess() override; + /* vt 0x50 */ virtual void dCcD_ShapeAttr_0x50() override; + /* vt 0x54 */ virtual void dCcD_ShapeAttr_0x54() override; + /* vt 0x58 */ virtual void dCcD_ShapeAttr_0x58() override; +}; + +#endif diff --git a/include/toBeSorted/cc/d_cc_m3d.h b/include/toBeSorted/cc/d_cc_m3d.h new file mode 100644 index 00000000..84459238 --- /dev/null +++ b/include/toBeSorted/cc/d_cc_m3d.h @@ -0,0 +1,7 @@ +#ifndef TOSORT_D_CC_M3D_H +#define TOSORT_D_CC_M3D_H + + + + +#endif diff --git a/include/toBeSorted/cc/d_cc_m3d_g_cyl.h b/include/toBeSorted/cc/d_cc_m3d_g_cyl.h new file mode 100644 index 00000000..ad23d4a0 --- /dev/null +++ b/include/toBeSorted/cc/d_cc_m3d_g_cyl.h @@ -0,0 +1,24 @@ +#ifndef TO_SORT_D_CC_M3D_G_CYL_H +#define TO_SORT_D_CC_M3D_G_CYL_H + +#include + +class cM3dGCyl { +public: + /* 0x00 */ mVec3_c mCenter; + /* 0x0C */ f32 mRadius; + /* 0x10 */ f32 mHeight; + cM3dGCyl() {} + + void setC(const mVec3_c &, f32 radius, f32 height); + void setC(const mVec3_c &); + void setH(f32); + void setR(f32); + + const mVec3_c &GetC() const { + return mCenter; + } + +}; // Size = 0x14 + +#endif diff --git a/include/toBeSorted/cc/d_cc_m3d_g_sph.h b/include/toBeSorted/cc/d_cc_m3d_g_sph.h new file mode 100644 index 00000000..812f63b7 --- /dev/null +++ b/include/toBeSorted/cc/d_cc_m3d_g_sph.h @@ -0,0 +1,23 @@ +#ifndef TO_SORT_D_CC_M3D_G_SPH_H +#define TO_SORT_D_CC_M3D_G_SPH_H + +#include + +class cM3dGSph { +public: + /* 0x00 */ mVec3_c mCenter; + /* 0x0C */ f32 mRadius; + /* 0x10 */ f32 field_0x10; + cM3dGSph(); + + void setR(f32); + void set(const mVec3_c &, f32); + void setC(const mVec3_c &); + void setC(f32, f32, f32); + const mVec3_c &GetC() const { + return mCenter; + } + +}; // Size = 0x14 + +#endif diff --git a/include/toBeSorted/cc/d_cc_mgr.h b/include/toBeSorted/cc/d_cc_mgr.h new file mode 100644 index 00000000..25686613 --- /dev/null +++ b/include/toBeSorted/cc/d_cc_mgr.h @@ -0,0 +1,13 @@ +#ifndef TOSORT_D_CC_MGR_H +#define TOSORT_D_CC_MGR_H + +#include + +class ColliderManager { +public: + static ColliderManager *getColliderManager(); + + void addCollider(dCcD_GObjInf *collider); +}; + +#endif diff --git a/include/toBeSorted/cc/d_cc_shape_colliders.h b/include/toBeSorted/cc/d_cc_shape_colliders.h new file mode 100644 index 00000000..d46efe3b --- /dev/null +++ b/include/toBeSorted/cc/d_cc_shape_colliders.h @@ -0,0 +1,89 @@ +#ifndef D_CC_SHAPE_COLLIDERS_H +#define D_CC_SHAPE_COLLIDERS_H + +#include +#include + +struct dCcD_SrcUnk { + /* 0x00 */ dCcD_SrcGObjInf mObjInf; + /* 0x44 */ dCcD_SrcUnk1Attr mUnk1Inf; +}; // Size: ??? + +class dCcD_Unk1 : public dCcD_GObjInf, public dCcD_ShapeAttr1 { +public: + dCcD_Unk1(); + virtual ~dCcD_Unk1(); + + virtual void *dCcD_GObjInf_0x0C() override; + + void init(const dCcD_SrcUnk &src); + void unknownCalc(); +}; + +struct dCcD_SrcEmpty { + /* 0x00 */ dCcD_SrcGObjInf mObjInf; +}; // Size: 0x40 + +// Not sure what this is, the init function +// doesn't call the shape initializer +class dCcD_Empty : public dCcD_GObjInf, public dCcD_ShapeAttr2 { +public: + dCcD_Empty(); + virtual ~dCcD_Empty(); + + virtual void *dCcD_GObjInf_0x0C() override; + + void init(const dCcD_SrcEmpty &src); +}; + +struct dCcD_SrcCyl { + /* 0x00 */ dCcD_SrcGObjInf mObjInf; + /* 0x40 */ dCcD_SrcCylAttr mCylAttr; +}; // Size: 0x44 + +// Cylinder +class dCcD_Cyl : public dCcD_GObjInf, public dCcD_ShapeAttr3 { +public: + dCcD_Cyl(); + virtual ~dCcD_Cyl(); + + virtual void *dCcD_GObjInf_0x0C() override; + void init(const dCcD_SrcCyl &src); + void setCenter(const mVec3_c &); + void moveCenter(const mVec3_c &); +}; + +struct dCcD_SrcSph { + /* 0x00 */ dCcD_SrcGObjInf mObjInf; + /* 0x40 */ dCcD_SrcSphAttr mSphAttr; +}; // Size: 0x44 + +// Sphere +class dCcD_Sph : public dCcD_GObjInf, public dCcD_ShapeAttr4 { +public: + dCcD_Sph(); + virtual ~dCcD_Sph(); + + virtual void *dCcD_GObjInf_0x0C() override; + void init(const dCcD_SrcSph &src); + void setCenter(const mVec3_c &); + void moveCenter(const mVec3_c &); + void setCenterAndAtVec(const mVec3_c &, const mVec3_c &); +}; + +struct dCcD_SrcAabb { + /* 0x00 */ dCcD_SrcGObjInf mObjInf; + /* 0x40 */ dCcD_SrcAabbAttr mAabbAttr; +}; // Size: 0x58 + +class dCcD_Aabb : public dCcD_GObjInf, public dCcD_ShapeAttr5 { +public: + dCcD_Aabb(); + virtual ~dCcD_Aabb(); + + virtual void *dCcD_GObjInf_0x0C() override; + + void init(const dCcD_SrcAabb &src); +}; + +#endif diff --git a/include/toBeSorted/effects_struct.h b/include/toBeSorted/effects_struct.h new file mode 100644 index 00000000..49773237 --- /dev/null +++ b/include/toBeSorted/effects_struct.h @@ -0,0 +1,28 @@ +#ifndef EFFECTS_STRUCT_H +#define EFFECTS_STRUCT_H + +#include +#include + + +class EffectsStruct { +private: + u8 field_0x00[0x1C - 0x00]; + +public: + // vt at 0x1C + EffectsStruct(); + EffectsStruct(dAcBase_c *); + virtual ~EffectsStruct(); + + inline void init(dAcBase_c *owner) { + mpOwner = owner; + } + +private: + u8 field_0x20[0x28 - 0x20]; + /* 0x28 */ dAcBase_c *mpOwner; + u8 field_0x2C[0x34 - 0x2C]; +}; + +#endif diff --git a/include/toBeSorted/event_manager.h b/include/toBeSorted/event_manager.h new file mode 100644 index 00000000..e95d8db4 --- /dev/null +++ b/include/toBeSorted/event_manager.h @@ -0,0 +1,16 @@ +#ifndef EVENT_MANAGER_H +#define EVENT_MANAGER_H + +#include + +class dAcBase_c; + +class EventManager { +public: + static bool isInEvent(dAcBase_c *actor, const char *eventName); + static bool alsoSetAsCurrentEvent(dAcBase_c *actor, Event *event, void *unknown); + + static EventManager *sInstance; +}; + +#endif diff --git a/include/toBeSorted/scgame.h b/include/toBeSorted/scgame.h index 8ac27782..6572366c 100644 --- a/include/toBeSorted/scgame.h +++ b/include/toBeSorted/scgame.h @@ -7,7 +7,7 @@ struct SpawnInfo { /* 0x00 */ char stageName[32]; // Probably SizedString<32> /* 0x20 */ s16 transitionFadeFrames; /* 0x22 */ s8 room; - /* 0x23 */ s8 layer; + /* 0x23 */ u8 layer; /* 0x24 */ s8 entrance; /* 0x25 */ s8 night; /* 0x26 */ s8 trial; @@ -26,6 +26,7 @@ class ScGame { static ScGame *sInstance; static bool isCurrentStage(const char *stageName); + void triggerExit(s32 room, u8 exitIndex, s32 forcedNight = 2, s32 forcedTrial = 2); }; #endif diff --git a/src/REL/d/a/obj/d_a_obj_pool_cock.cpp b/src/REL/d/a/obj/d_a_obj_pool_cock.cpp index 9f674a22..b632301e 100644 --- a/src/REL/d/a/obj/d_a_obj_pool_cock.cpp +++ b/src/REL/d/a/obj/d_a_obj_pool_cock.cpp @@ -48,7 +48,7 @@ int dAcOPoolCock_c::actorExecute() { mStateMgr.executeState(); calcVelocity(); position += velocity; - position += posIncrements; + position += mCCdStruct.posIncrements; updateMatrix(); mMtx_c mdl1Transform; mMtx_c mdl2Transform; diff --git a/src/REL/d/a/obj/d_a_obj_ring.cpp b/src/REL/d/a/obj/d_a_obj_ring.cpp index 6d153ac3..9bc13a04 100644 --- a/src/REL/d/a/obj/d_a_obj_ring.cpp +++ b/src/REL/d/a/obj/d_a_obj_ring.cpp @@ -37,7 +37,7 @@ int dAcOring_c::actorExecute() { mStateMgr.executeState(); calcVelocity(); position += velocity; - position += posIncrements; + position += mCCdStruct.posIncrements; updateMatrix(); mModel.setLocalMtx(worldMatrix); return SUCCEEDED; diff --git a/src/REL/d/a/obj/d_a_obj_spike.cpp b/src/REL/d/a/obj/d_a_obj_spike.cpp index e69de29b..baabdf99 100644 --- a/src/REL/d/a/obj/d_a_obj_spike.cpp +++ b/src/REL/d/a/obj/d_a_obj_spike.cpp @@ -0,0 +1,88 @@ +#include +#include + +SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2); + +// clang-format off +dCcD_SrcAabb dAcOspike_c::sCcSrc = { + {{{0x400}, 0x2003F, 0, 1, 0, 0, 0, 0, 0}, + {{0xFEB77DFF}, 0x111, 0x60407, 0, 0}, + {0}}, + {-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}}; +// clang-format on + +const mVec3_c dAcOspike_c::sVec1 = mVec3_c(-1.0f, -246.0f, -472.0f); +const mVec3_c dAcOspike_c::sVec2 = mVec3_c(73.0f, 255.0f, 482.0f); + +STATE_DEFINE(dAcOspike_c, Wait); + +bool dAcOspike_c::createHeap() { + mResFile = getOarcResFile("SpikeD101"); + nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("SpikeD101"); + TRY_CREATE(mMdl.create(mdl, &heap_allocator, 0x120)); + return true; +} + +int dAcOspike_c::create() { + if (!initAllocatorWork1Heap(-1, "dAcOspike_c::m_allocator", 0x20)) { + return FAILED; + } + + mCCdStruct.setField0x38ToMagicValue(); + mCollision.init(sCcSrc); + mCollision.initUnk(mCCdStruct); + + updateMatrix(); + mMdl.setLocalMtx(worldMatrix); + mVec3_c tmp; + PSMTXMultVecSR(worldMatrix.m, mVec3_c::Ex, tmp); + mCollision.setAtVec(tmp); + + mMtx_c mtx; + mtx.XrotS(rotation.x); + mtx.ZrotM(rotation.z); + mVec3_c tmp2, tmp3; + PSMTXMultVecSR(mtx.m, sVec1, tmp2); + PSMTXMultVecSR(mtx.m, sVec2, tmp3); + + if (tmp2.x > tmp3.x) { + f32 copy = tmp2.x; + tmp2.x = tmp3.x; + tmp3.x = copy; + } + if (tmp2.y > tmp3.y) { + f32 copy = tmp2.y; + tmp2.y = tmp3.y; + tmp3.y = copy; + } + if (tmp2.z > tmp3.z) { + f32 copy = tmp2.z; + tmp2.z = tmp3.z; + tmp3.z = copy; + } + + mCollision.setMinMax(tmp2, tmp3); + mStateMgr.changeState(StateID_Wait); + setBoundingBox(mVec3_c(-10.0f, -250.0f, -480.0f), mVec3_c(80.0f, 260.0f, 490.0f)); + return SUCCEEDED; +} + +int dAcOspike_c::doDelete() { + return 1; +} + +int dAcOspike_c::actorExecute() { + mStateMgr.executeState(); + mCollision.setWithYRot(position, rotation.y); + ColliderManager::getColliderManager()->addCollider(&mCollision); + return 1; +} + +int dAcOspike_c::draw() { + drawModelType1(&mMdl); + return 1; +} + +void dAcOspike_c::initializeState_Wait() {} +void dAcOspike_c::executeState_Wait() {} +void dAcOspike_c::finalizeState_Wait() {} diff --git a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp index e69de29b..898286d6 100644 --- a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp +++ b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp @@ -0,0 +1,139 @@ +#include +#include +#include +#include +#include +#include +#include + +SPECIAL_ACTOR_PROFILE(OBJ_TOD3_STONE, dAcOtoD3StoneFigure_c, fProfile::OBJ_TOD3_STONE, 0x1B3, 0, 0); + +STATE_DEFINE(dAcOtoD3StoneFigure_c, OneEye); +STATE_DEFINE(dAcOtoD3StoneFigure_c, Eyes); + +f32 dAcOtoD3StoneFigure_c::sRadius = 85.0f; +f32 dAcOtoD3StoneFigure_c::sHeight = 290.0f; + +// clang-format off +dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = { + {{{0}, 0, 0, 0, 0, 0, 0, 0, 0}, + {{0xFEB77DFF}, 0x1000111, 0x60407, 0, 0}, + {0xE9}}, + {dAcOtoD3StoneFigure_c::sRadius, dAcOtoD3StoneFigure_c::sHeight} +}; +// clang-format on + +bool dAcOtoD3StoneFigure_c::createHeap() { + const char *modelName = getModelName(); + mResFile = getOarcResFile("BirdObjD3"); + nw4r::g3d::ResMdl mdl = mResFile.GetResMdl(modelName); + TRY_CREATE(mMdl.create(mdl, &heap_allocator, 0x120)); + return true; +} + +int dAcOtoD3StoneFigure_c::create() { + mIsSkyKeepAlreadyOpen = isStoneOfTrialsPlaced(); + mExitId = params & 0xFF; + updateMatrix(); + if (!initAllocatorWork1Heap(-1, "dAcOtoD3StoneFigure_c::m_allocator", 0x20)) { + return FAILED; + } + + mMdl.setLocalMtx(worldMatrix); + mCCdStruct.setField0x38ToMagicValue(); + mCollision.init(sCcSrc); + mCollision.initUnk(mCCdStruct); + int zero = 0; + mCollision.setC(position); + mCollision.setR(dAcOtoD3StoneFigure_c::sRadius + zero); + mCollision.setH(dAcOtoD3StoneFigure_c::sHeight + zero); + ColliderManager::getColliderManager()->addCollider(&mCollision); + // mCollision.clearCoFlag(); + mCollision.setTgCoFlag(1); + + // ??? + f32 a, b, c; + c = position.z; + b = getYPos(); + b += zero; + a = position.x; + poscopy2.x = a; + poscopy2.y = b; + poscopy2.z = c; + poscopy3.x = a; + poscopy3.y = b; + poscopy3.z = c; + // poscopy3 = poscopy2; + mCollision.setSomeDefendValue(0x2000); + + if (!mIsSkyKeepAlreadyOpen) { + mStateMgr.changeState(StateID_OneEye); + } else { + mStateMgr.changeState(StateID_Eyes); + } + + return SUCCEEDED; +} + +int dAcOtoD3StoneFigure_c::doDelete() { + return 1; +} + +int dAcOtoD3StoneFigure_c::actorExecute() { + mStateMgr.executeState(); + ColliderManager::getColliderManager()->addCollider(&mCollision); + return 1; +} + +int dAcOtoD3StoneFigure_c::draw() { + if (ScGame::currentSpawnInfo.layer != 0x12) { + drawModelType1(&mMdl); + } + return 1; +} + +void dAcOtoD3StoneFigure_c::initializeState_OneEye() { + if (ScGame::currentSpawnInfo.night == 1) { + rotation.y.mVal += -0x8000; + updateMatrix(); + mMdl.setLocalMtx(worldMatrix); + } +} + +void dAcOtoD3StoneFigure_c::executeState_OneEye() { + if (EventManager::isInEvent(this, "D3OpenStart")) { + ScGame::sInstance->triggerExit(roomid, mExitId); + } else { + if (hasStoneOfTrials() && ScGame::currentSpawnInfo.night != 1) { + // These are interaction related + -0.0f; + dAttention_c::sInstance->addTarget(this, 1, 300.0f, 50.0f, -100.0f, 100.0f); + dAttention_c::sInstance->addTarget(this, 1, 200.0f, -100.0f, 100.0f); + } + } +} +void dAcOtoD3StoneFigure_c::finalizeState_OneEye() {} + +void dAcOtoD3StoneFigure_c::initializeState_Eyes() {} +void dAcOtoD3StoneFigure_c::executeState_Eyes() {} +void dAcOtoD3StoneFigure_c::finalizeState_Eyes() {} + +const char *dAcOtoD3StoneFigure_c::getModelName() const { + return mIsSkyKeepAlreadyOpen ? "BirdObjD3B" : "BirdObjD3A"; +} + +bool dAcOtoD3StoneFigure_c::isStoneOfTrialsPlaced() const { + return StoryFlagManager::sInstance->getCounterOrFlag(22); +} + +void dAcOtoD3StoneFigure_c::doInteraction(s32 arg) { + if (arg == 5) { + Event event = Event("D3OpenStart", 100, 0x100001, nullptr, nullptr); + EventManager::alsoSetAsCurrentEvent(this, &event, nullptr); + } +} + +extern "C" s32 fn_80251B70(s32); +bool dAcOtoD3StoneFigure_c::hasStoneOfTrials() const { + return fn_80251B70(0xB4); +} diff --git a/src/REL/d/a/obj/d_a_obj_triforce.cpp b/src/REL/d/a/obj/d_a_obj_triforce.cpp index e69de29b..23506d57 100644 --- a/src/REL/d/a/obj/d_a_obj_triforce.cpp +++ b/src/REL/d/a/obj/d_a_obj_triforce.cpp @@ -0,0 +1,81 @@ +#include +#include +#include +#include + +SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15D, 0, 4); + +// clang-format off +dCcD_SrcSph dAcOtriforce_c::sCcSrc = { + {{{0}, 0, 0, 0, 0, 0, 0, 0, 0}, + {{0xFEB77DFF}, 0x111, 0x60407, 0, 0}, + {0xE9}}, + {150.0f}}; +// clang-format on + +const f32 dAcOtriforce_c::sScale = 6.5f; +const f32 dAcOtriforce_c::sAmpNeg = -3.0f; +const u32 dAcOtriforce_c::sStartingOffsetRange = 0x10000; + +// const f32 dAcOtriforce_c::sAmpPos = 23.0f; + +bool dAcOtriforce_c::createHeap() { + mResFile = getOarcResFile("TriForce"); + nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("TriForce"); + TRY_CREATE(mMdl.create(mdl, &heap_allocator, 0x324)); + nw4r::g3d::ResAnmTexSrt anm = mResFile.GetResAnmTexSrt("TriForce"); + TRY_CREATE(mAnm.create(mdl, anm, &heap_allocator, nullptr, 1)); + mMdl.setAnm(mAnm); + return true; +} + +int dAcOtriforce_c::create() { + if (!initAllocatorWork1Heap(-1, "dAcOtriforce_c::m_allocator", 0x20)) { + return FAILED; + } + + mCCdStruct.setField0x38ToMagicValue(); + mCollision.init(sCcSrc); + mCollision.initUnk(mCCdStruct); + mCollision.clearCoFlag(); + mStartingOffset = cM::rndInt(sStartingOffsetRange); + mEffects.init(this); + mCollision.setSomeDefendValue(0x2000); + updateMatrix(); + scale.x = sScale; + scale.y = sScale; + scale.z = sScale; + mMdl.setLocalMtx(worldMatrix); + return SUCCEEDED; +} + +int dAcOtriforce_c::doDelete() { + return 1; +} + +extern const u16 lbl_8057AB3E; +extern "C" void fn_80029AE0(EffectsStruct *, u16, mMtx_c *, void *, void *); + +int dAcOtriforce_c::actorExecute() { + int zero = 0; + mVec3_c offset = mVec3_c::Ey * (mStartingOffset.sin() * getBounceScalar()); + position = mStartingPos + offset; + mStartingOffset.mVal += 0x16C; + + mCollision.setC(position.x, position.y + 90.0f + zero, position.z); + + ColliderManager::getColliderManager()->addCollider(&mCollision); + updateMatrix(); + Mtx m; + PSMTXScale(m, scale.x, scale.y, scale.z); + PSMTXConcat(worldMatrix.m, m, worldMatrix.m); + mMdl.setLocalMtx(worldMatrix); + mAnm.play(); + fn_80029AE0(&mEffects, lbl_8057AB3E, &worldMatrix, nullptr, nullptr); + return 1; +} + +int dAcOtriforce_c::draw() { + drawModelType1(&mMdl); + return 1; +} diff --git a/src/REL/d/t/d_t_sound_area.cpp b/src/REL/d/t/d_t_sound_area.cpp index ccdba2c2..a484171d 100644 --- a/src/REL/d/t/d_t_sound_area.cpp +++ b/src/REL/d/t/d_t_sound_area.cpp @@ -11,7 +11,6 @@ void float_ordering() { 0.01f; } - int dTgSndAr_c::create() { scale *= 0.01f; if (dTgSndMg_c::sInstance == nullptr) { @@ -34,9 +33,8 @@ int dTgSndAr_c::create() { if ((base = fManager_c::searchBaseByGroupType(ACTOR, base)) == nullptr) { break; } - // This has got to be just a member function dAcBase_c *ac = static_cast(base); - if (!dBase_c::isActorPlayer(*ac) && checkPosInArea(ac->position)) { + if (!ac->isActorPlayer() && checkPosInArea(ac->position)) { ac->setBit_field_0xE8(params & 0xFF); } } @@ -142,26 +140,31 @@ struct UnkStruct { extern "C" void fn_80337EA0(UnkStruct *); extern "C" void fn_80337EF0(UnkStruct *, mVec3_c &, mVec3_c &, f32); -extern "C" int fn_8032BFB0(UnkStruct *, EGG::Vector3f &, f32 *, f32 &, int); +extern "C" int cM3d_Len3dSqPntAndSegLine(UnkStruct *, Vec &, Vec *, f32 *, f32 *); -// ??? +// Capsule bool dTgSndAr_c::checkAlg3(const mVec3_c &pos) { - f32 q[4]; - UnkStruct unk; + Vec q; f32 radius = scale.x * 100.0f; radius = radius * radius; - EGG::Vector3f a = pos; + Vec a = pos; + + UnkStruct unk; fn_80337EA0(&unk); + // Line between b and c mVec3_c b = *mRail.getPntPosForIndex(0); mVec3_c c = *mRail.getPntPosForIndex(1); fn_80337EF0(&unk, b, c, scale.x * 100.0f); f32 d; - if (fn_8032BFB0(&unk, a, q, d, 0)) { + if (cM3d_Len3dSqPntAndSegLine(&unk, a, &q, &d, nullptr)) { + // At the cylindrical part of the capsule, just check the distance to + // the line return d < radius; } else { + // Otherwise check if we are within the spheres around the endpoints f32 distSq = PSVECSquareDistance(unk.vec, pos); if (distSq < radius) { return true; diff --git a/src/d/a/d_a_base.cpp b/src/d/a/d_a_base.cpp index 3c4c247d..41584bfa 100644 --- a/src/d/a/d_a_base.cpp +++ b/src/d/a/d_a_base.cpp @@ -4,6 +4,7 @@ #include "f/f_list_nd.h" #include "m/m_vec.h" #include "toBeSorted/event.h" +#include "toBeSorted/event_manager.h" #include "toBeSorted/file_manager.h" #include "toBeSorted/misc_flag_managers.h" #include "toBeSorted/scgame.h" @@ -32,7 +33,6 @@ extern "C" s16 targetAngleX(mVec3_c *, mVec3_c *); extern "C" bool checkCollision(mVec3_c *pos); extern "C" s8 collisionCheckGetRoom(); extern "C" dRoom *getRoomByIndex(RoomManager *mgr, s8 roomid); -extern "C" bool alsoSetAsCurrentEvent(dAcBase_c *, Event *, void *); bool dAcBase_c::createHeap() { return true; @@ -547,7 +547,7 @@ void dAcBase_c::unkVirtFunc_0x6C() {} void dAcBase_c::doInteraction(s32 param) { if (param == 4 || param == 5 || param == 12) { Event event = Event("DefaultTalk", 400, 0x100001, nullptr, nullptr); - alsoSetAsCurrentEvent(this, &event, nullptr); + EventManager::alsoSetAsCurrentEvent(this, &event, nullptr); } } diff --git a/src/d/a/obj/d_a_obj_switch.cpp b/src/d/a/obj/d_a_obj_switch.cpp index 9bbce3d6..6dfb1e94 100644 --- a/src/d/a/obj/d_a_obj_switch.cpp +++ b/src/d/a/obj/d_a_obj_switch.cpp @@ -26,7 +26,7 @@ void dAcOswMdlCallback_c::timingB(u32 nodeId, nw4r::g3d::WorldMtxManip *manip, n } static bool isPushableBlock(dAcBase_c *actor) { - return dBase_c::isActorPlayer(*actor) || actor->profile_name == fProfile::OBJ_PUSH_BLOCK || + return actor->isActorPlayer() || actor->profile_name == fProfile::OBJ_PUSH_BLOCK || actor->profile_name == fProfile::OBJ_KIBAKO; } @@ -34,7 +34,7 @@ void dAcOsw_c::interactCallback(void *unknown, dAcBase_c *actor, dAcObjBase_c *i if (!isPushableBlock(interactor)) { return; } - dAcPy_c *link = dBase_c::isActorPlayer(*interactor) ? static_cast(interactor) : nullptr; + dAcPy_c *link = interactor->isActorPlayer() ? static_cast(interactor) : nullptr; dAcOsw_c *sw = static_cast(actor); // halp diff --git a/src/d/d_base.cpp b/src/d/d_base.cpp index 41c03e5a..2e1701b4 100644 --- a/src/d/d_base.cpp +++ b/src/d/d_base.cpp @@ -53,8 +53,8 @@ void dBase_c::resetFlags() { s_NextExecuteControlFlags = 0; } -bool dBase_c::isActorPlayer(dBase_c &base) { - return base.profile_name == fProfile::PLAYER; +bool dBase_c::isActorPlayer() { + return profile_name == fProfile::PLAYER; } int dBase_c::loadAsyncCallback() { diff --git a/src/toBeSorted/cc/d_cc_d.cpp b/src/toBeSorted/cc/d_cc_d.cpp new file mode 100644 index 00000000..5a894ad0 --- /dev/null +++ b/src/toBeSorted/cc/d_cc_d.cpp @@ -0,0 +1,395 @@ +#include +#include +#include +#include + +inline bool cM3d_IsZero(f32 f); + +mVec3_c dCcD_ShapeAttr::m_virtual_center = mVec3_c::Zero; + +dCcD_DivideInfo::dCcD_DivideInfo() {} +dCcD_DivideInfo::~dCcD_DivideInfo() {} + +dCcD_DivideArea::dCcD_DivideArea() {} +dCcD_DivideArea::~dCcD_DivideArea() {} + +void d_cc_d_float_order() { + 1.0f / 32.0f; + 1.0f; + 0.0f; + FLT_EPSILON; + 1.0f / 3.0f; + 1.0e9f; + -1.0e9f; + -1.0f; + 0.5f; +} + +// Very certain +void dCcD_DivideArea::SetArea(Aabb const &aab) { + Set(aab.mMin, aab.mMax); + + mScaledXDiff = 1.0f / 32.0f * (mMax.x - mMin.x); + mXDiffIsZero = cM3d_IsZero(mScaledXDiff); + if (!mXDiffIsZero) { + mInvScaledXDiff = 1.0f / mScaledXDiff; + } + + mScaledYDiff = 1.0f / 32.0f * (mMax.y - mMin.y); + mYDiffIsZero = cM3d_IsZero(mScaledYDiff); + if (!mYDiffIsZero) { + mInvScaledYDiff = 1.0f / mScaledYDiff; + } + + mScaledZDiff = 1.0f / 32.0f * (mMax.z - mMin.z); + mZDiffIsZero = cM3d_IsZero(mScaledZDiff); + if (!mZDiffIsZero) { + mInvScaledZDiff = 1.0f / mScaledZDiff; + } +} + +inline bool cM3d_IsZero(f32 f) { + return fabsf(f) < FLT_EPSILON; +} + +static u32 const l_base[32] = { + 0x00000001, + 0x00000003, + 0x00000007, + 0x0000000F, + 0x0000001F, + 0x0000003F, + 0x0000007F, + 0x000000FF, + 0x000001FF, + 0x000003FF, + 0x000007FF, + 0x00000FFF, + 0x00001FFF, + 0x00003FFF, + 0x00007FFF, + 0x0000FFFF, + 0x0001FFFF, + 0x0003FFFF, + 0x0007FFFF, + 0x000FFFFF, + 0x001FFFFF, + 0x003FFFFF, + 0x007FFFFF, + 0x00FFFFFF, + 0x01FFFFFF, + 0x03FFFFFF, + 0x07FFFFFF, + 0x0FFFFFFF, + 0x1FFFFFFF, + 0x3FFFFFFF, + 0x7FFFFFFF, + 0xFFFFFFFF, +}; + +// TODO + +UnkCCDStruct::UnkCCDStruct(dAcBase_c *arg) : field_0x00(0), field_0x04(0), field_0x08(0), field_0x0C(0) { + field_0x38 = 0; + field_0x34 = arg; + reset(); +} + +void UnkCCDStruct::postExecute() { + field_0x04 = field_0x00; + field_0x00 = 0; + field_0x0C = field_0x08; + field_0x08 = 0; +} + +void UnkCCDStruct::reset() { + field_0x10 = mVec3_c::Zero; + field_0x1C = mVec3_c::Zero; + posIncrements = mVec3_c::Zero; +} + +fBaseID_e UnkCCDStruct::getId() { + if (field_0x34 != nullptr) { + return field_0x34->unique_ID; + } + return (fBaseID_e)0; +} + +static u32 const sth[] = {0x4B, 0x5A, 0x64, 0x00}; + +u32 UnkCCDStruct::getSomething(int arg) { + if (field_0x38 == 0x0D || arg == 0) { + return 0; + } + + if (field_0x38 == 0 || arg == 0x0D) { + return 100; + } + + if (field_0x38 == arg) { + return 50; + } + + if (field_0x38 == 0x0C || arg == 0x01) { + return 0; + } + + if (field_0x38 == 1 || arg == 0x0C) { + return 100; + } + + arg = arg - field_0x38; + if (arg > 0) { + return sth[(arg <= 3 ? arg : 3) - 1]; + } else { + return 100 - sth[(-arg <= 3 ? -arg : 3) - 1]; + } +} + +dCcD_GAtTgCoCommonBase::dCcD_GAtTgCoCommonBase() : field_0x00(0), field_0x14(0), mEffCounter(0) {} + +dCcD_GAtTgCoCommonBase::~dCcD_GAtTgCoCommonBase() { + unlink(); + field_0x14 = 0; + unlink(); + decreaseCount(); + field_0x00 = 0; +} + +void dCcD_GAtTgCoCommonBase::unlink() { + mActor.unlink(); +} + +void dCcD_GAtTgCoCommonBase::setActor(dAcBase_c *actor) { + field_0x14 |= 1; + mActor.link(actor); +} + +dAcBase_c *dCcD_GAtTgCoCommonBase::getActor() { + return mActor.get(); +} + +void dCcD_GAtTgCoCommonBase::decreaseCount() { + if (mEffCounter <= 0) { + return; + } + mEffCounter--; +} + +dCcD_GObjInf::dCcD_GObjInf() { + field_0x104 = nullptr; + field_0x108 = 0; +} + +dCcD_GObjInf::~dCcD_GObjInf() { + field_0x104 = nullptr; +} + +bool dCcD_GObjInf::weirdConditionCheck(dAcBase_c *ac, u32 arg) { + return ac != nullptr && ac->isActorPlayer() && arg == 2; +} + +void dCcD_GObjInf::clear() { + mGObjAt.clearFlag(); + mGObjTg.clearFlag(); + mGObjCo.clearFlag(); +} + +void dCcD_GObjInf::init(const dCcD_SrcGObjInf &src) { + mGObjAt.init(&src.mGObjAt); + mGObjTg.init(&src.mGObjTg); + mGObjCo.init(&src.mGObjCo); +} + +void dCcD_GObjInf::ResetAtHit() { + mGObjAt.resetField0x14(); + mGObjAt.unlink(); + mGObjAt.decreaseCount(); + mGObjAt.resetEffCounter(); +} + +void dCcD_GObjInf::ResetTgHit() { + mGObjTg.resetField0x14(); + mGObjTg.unlink(); + mGObjTg.decreaseCount(); + mGObjTg.resetEffCounter(); +} + +void dCcD_GObjInf::ResetCoHit() { + mGObjCo.resetField0x14(); + mGObjCo.unlink(); + mGObjCo.decreaseCount(); + mGObjCo.resetEffCounter(); +} + +mVec3_c *dCcD_GObjInf::GetAtHitPosP() { + return mGObjAt.GetHitPosP(); +} + +mVec3_c *dCcD_GObjInf::GetAtHitPosP2() { + return mGObjAt.GetHitPosP(); +} + +void dCcD_GObjInf::dCcD_GObjInf_0x10() {} + +dAcBase_c *dCcD_GObjInf::GetAtActor() { + return mGObjAt.getActor(); +} + +dAcBase_c *dCcD_GObjInf::GetTgActor() { + return mGObjTg.getActor(); +} + +dAcBase_c *dCcD_GObjInf::GetCoActor() { + return mGObjCo.getActor(); +} + +void dCcD_GObjInf::adjustHitPos(f32 dx, f32 dz) { + mGObjAt.adjustHitPos(dx, dz); + mGObjTg.adjustHitPos(dx, dz); + mGObjCo.adjustHitPos(dx, dz); +} + +/** + * + * Geometric shape colliders + * + */ + +dCcD_ShapeAttr::dCcD_ShapeAttr() {} + +dCcD_ShapeAttr::~dCcD_ShapeAttr() {} + +mVec3_c *dCcD_ShapeAttr::getVirtualCenter() { + return &m_virtual_center; +} + +dCcD_ShapeAttr2::dCcD_ShapeAttr2() {} +dCcD_ShapeAttr2::~dCcD_ShapeAttr2() {} + +dCcD_ShapeAttr5::dCcD_ShapeAttr5() {} +dCcD_ShapeAttr5::~dCcD_ShapeAttr5() {} + +void dCcD_ShapeAttr5::init(const dCcD_SrcAabbAttr &src) { + setMinMax(mVec3_c(src.minX, src.minY, src.minZ), mVec3_c(src.maxX, src.maxY, src.maxZ)); +} + +mVec3_c *dCcD_ShapeAttr5::getVirtualCenter() { + return &mVirtualCenter; +} + +dCcD_ShapeAttr1::dCcD_ShapeAttr1() {} +dCcD_ShapeAttr1::~dCcD_ShapeAttr1() {} + +mVec3_c *dCcD_ShapeAttr1::getVirtualCenter() { + return &mVirtualCenter; +} + +dCcD_ShapeAttr3::dCcD_ShapeAttr3() {} + +dCcD_ShapeAttr3::~dCcD_ShapeAttr3() {} + +void dCcD_ShapeAttr3::init(const dCcD_SrcCylAttr &src) { + setR(src.mRadius); + setH(src.mHeight); + mVec3_c v; + v.z = 0.0f; + v.y = 0.0f; + v.x = 0.0f; + setC(v); +} + +mVec3_c *dCcD_ShapeAttr3::getVirtualCenter() { + return &mCenter; +} + +dCcD_ShapeAttr4::dCcD_ShapeAttr4() {} +dCcD_ShapeAttr4::~dCcD_ShapeAttr4() {} + +void dCcD_ShapeAttr4::init(const dCcD_SrcSphAttr &src) { + setR(src.mRadius); + mVec3_c v; + v.z = 0.0f; + v.y = 0.0f; + v.x = 0.0f; + setC(v); +} + +mVec3_c *dCcD_ShapeAttr4::getVirtualCenter() { + return &mCenter; +} + +/** + * + * At/Tg/Co collider + * + */ + +dCcD_GObjAt::dCcD_GObjAt() { + field_0x58 = 0; +} + +dCcD_GObjAt::~dCcD_GObjAt() {} + +void dCcD_GObjAt::init(const dCcD_SrcGObjAt *src) { + mEffCounter = 0; + mSrc = *src; + mHitPos = mVec3_c::Zero; +} + +void dCcD_GObjAt::setSomeAtFlags(u32 flags) { + mSrc.field_0x04 = mSrc.field_0x04 & 0xFFFFFFC1 | flags; +} + +void dCcD_GObjAt::adjustHitPos(f32 dx, f32 dz) { + mHitPos.x += dx; + mHitPos.z += dz; +} + +dCcD_GObjTg::dCcD_GObjTg() { + field_0x44 = 0; + field_0x4A = 0; + field_0x4B = 0; + field_0x4C = 0; + field_0x50 = 0; + field_0x54 = 0; + field_0x6C.x = 0.0f; + field_0x6C.y = 0.0f; + field_0x6C.z = 0.0f; + field_0x78 = 0; +} + +dCcD_GObjTg::~dCcD_GObjTg() {} + +void dCcD_GObjTg::init(const dCcD_SrcGObjTg *src) { + mEffCounter = 0; + mSrc = *src; + field_0x4C = 0; + mHitPos = mVec3_c::Zero; + field_0x44 = 0; + field_0x48 = 0x4000; +} + +void dCcD_GObjTg::adjustHitPos(f32 dx, f32 dz) { + mHitPos.x += dx; + mHitPos.z += dz; + field_0x6C.x += dx; + field_0x6C.z += dz; +} + +dCcD_GObjCo::dCcD_GObjCo() { + field_0x20 = 0; + field_0x28 = 0; +} + +dCcD_GObjCo::~dCcD_GObjCo() {} + +void dCcD_GObjCo::init(const dCcD_SrcGObjCo *src) { + mEffCounter = 0; + mSrc = *src; + setSomeAtFlags(src->mBase.mGFlag & 0x1E0); +} + +void dCcD_GObjCo::setSomeAtFlags(u32 flags) {} + +void dCcD_GObjCo::adjustHitPos(f32 dx, f32 dz) {} diff --git a/src/toBeSorted/cc/d_cc_m3d.cpp b/src/toBeSorted/cc/d_cc_m3d.cpp new file mode 100644 index 00000000..1f2ab896 --- /dev/null +++ b/src/toBeSorted/cc/d_cc_m3d.cpp @@ -0,0 +1,33 @@ +#include +#include +#include + + +using namespace nw4r::math; + +inline VEC3 cM3d_Cross(const VEC3 *pVecA, const VEC3 *pVecB, const VEC3 *pVecC, VEC3 *pVecOut) { + VEC3 tmp1; + VEC3 tmp2; + VEC3Sub(&tmp1, pVecB, pVecA); + VEC3Sub(&tmp2, pVecC, pVecA); + + VEC3Cross(pVecOut, &tmp1, &tmp2); +} + +inline f32 cM3d_Dot(const VEC3 *pVecA, const VEC3 *pVecB) { + return VEC3Dot(pVecA, pVecB); +} + +void cM3d_CalcPla(const VEC3 *pVecA, const VEC3 *pVecB, const VEC3 *pVecC, VEC3 *pVecOut, f32 *pD) { + cM3d_Cross(pVecA, pVecB, pVecC, pVecOut); + f32 mag = VEC3Len(pVecOut); + if (fabsf(mag) > 0.05f) { + VEC3Scale(pVecOut, pVecOut, 1.0f / mag); + *pD = -cM3d_Dot(pVecOut, pVecA); + } else { + pVecOut->y = 0.0f; + *pD = 0.0f; + pVecOut->z = 0.0f; + pVecOut->x = 0.0f; + } +} diff --git a/src/toBeSorted/cc/d_cc_m3d_g_cyl.cpp b/src/toBeSorted/cc/d_cc_m3d_g_cyl.cpp new file mode 100644 index 00000000..f166c335 --- /dev/null +++ b/src/toBeSorted/cc/d_cc_m3d_g_cyl.cpp @@ -0,0 +1,26 @@ +#include +#include + +void cM3dGCyl::setC(const mVec3_c &c, f32 radius, f32 height) { + setC(c); + setR(radius); + setH(height); +} + +void cM3dGCyl::setC(const mVec3_c &c) { + mCenter = c; +} + +void cM3dGCyl::setH(f32 h) { + if (h < 0.0f) { + h = 0.0f; + } + mHeight = h; +} + +void cM3dGCyl::setR(f32 r) { + if (r < 0.0f) { + r = 0.0f; + } + mRadius = r; +} diff --git a/src/toBeSorted/cc/d_cc_m3d_g_sph.cpp b/src/toBeSorted/cc/d_cc_m3d_g_sph.cpp new file mode 100644 index 00000000..b4f12a06 --- /dev/null +++ b/src/toBeSorted/cc/d_cc_m3d_g_sph.cpp @@ -0,0 +1,26 @@ +#include +#include + +cM3dGSph::cM3dGSph() { + field_0x10 = 1.0f; +} + +void cM3dGSph::setC(const mVec3_c &c) { + mCenter = c; +} + +void cM3dGSph::set(const mVec3_c &c, f32 r) { + setC(c); + setR(r); +} + +void cM3dGSph::setR(f32 r) { + if (r < 0.0f) { + r = 0.0f; + } + mRadius = r; +} + +void cM3dGSph::setC(f32 x, f32 y, f32 z) { + setC(mVec3_c(x, y, z)); +} diff --git a/src/toBeSorted/cc/d_cc_shape_colliders.cpp b/src/toBeSorted/cc/d_cc_shape_colliders.cpp new file mode 100644 index 00000000..3d9ddfe5 --- /dev/null +++ b/src/toBeSorted/cc/d_cc_shape_colliders.cpp @@ -0,0 +1,106 @@ +#include +#include +#include + +dCcD_Unk1::dCcD_Unk1() {} +dCcD_Unk1::~dCcD_Unk1() {} + +void dCcD_Unk1::init(const dCcD_SrcUnk &src) { + dCcD_GObjInf::init(src.mObjInf); + dCcD_ShapeAttr1::init(src.mUnk1Inf); +} + +void *dCcD_Unk1::dCcD_GObjInf_0x0C() { + if (this != nullptr) { + return &UNK_0x00; + } + return this; +} + +void dCcD_Unk1::unknownCalc() { + PSVECSubtract(*&field_0x0C, *&field_0x00, *getAtVec()); +} + +dCcD_Empty::dCcD_Empty() {} +dCcD_Empty::~dCcD_Empty() {} + +void dCcD_Empty::init(const dCcD_SrcEmpty &src) { + dCcD_GObjInf::init(src.mObjInf); +} + +void *dCcD_Empty::dCcD_GObjInf_0x0C() { + if (this != nullptr) { + return &UNK_0x00; + } + return this; +} + +dCcD_Cyl::dCcD_Cyl() {} +dCcD_Cyl::~dCcD_Cyl() {} + +void dCcD_Cyl::init(const dCcD_SrcCyl &src) { + dCcD_GObjInf::init(src.mObjInf); + dCcD_ShapeAttr3::init(src.mCylAttr); +} + +void *dCcD_Cyl::dCcD_GObjInf_0x0C() { + if (this != nullptr) { + return &UNK_0x00; + } + return this; +} + +void dCcD_Cyl::setCenter(const mVec3_c &c) { + setAtVec(mVec3_c::Zero); + setC(c); +} + +void dCcD_Cyl::moveCenter(const mVec3_c &c) { + setAtVec(c - GetC()); + setC(c); +} + +dCcD_Sph::dCcD_Sph() {} +dCcD_Sph::~dCcD_Sph() {} + +void dCcD_Sph::init(const dCcD_SrcSph &src) { + dCcD_GObjInf::init(src.mObjInf); + dCcD_ShapeAttr4::init(src.mSphAttr); +} + +void dCcD_Sph::setCenter(const mVec3_c &c) { + setAtVec(mVec3_c::Zero); + setC(c); +} + +void dCcD_Sph::moveCenter(const mVec3_c &c) { + setAtVec(c - GetC()); + setC(c); +} + +void dCcD_Sph::setCenterAndAtVec(const mVec3_c &a, const mVec3_c &b) { + setAtVec(b); + setC(a); +} + +void *dCcD_Sph::dCcD_GObjInf_0x0C() { + if (this != nullptr) { + return &UNK_0x00; + } + return this; +} + +dCcD_Aabb::dCcD_Aabb() {} +dCcD_Aabb::~dCcD_Aabb() {} + +void dCcD_Aabb::init(const dCcD_SrcAabb &src) { + dCcD_GObjInf::init(src.mObjInf); + dCcD_ShapeAttr5::init(src.mAabbAttr); +} + +void *dCcD_Aabb::dCcD_GObjInf_0x0C() { + if (this != nullptr) { + return &UNK_0x00; + } + return this; +} diff --git a/tools/rel_sieve.py b/tools/rel_sieve.py index da10f0cf..e9d62617 100644 --- a/tools/rel_sieve.py +++ b/tools/rel_sieve.py @@ -27,9 +27,6 @@ import pathlib BLOCKING_SYMBOLS = [ - ['fn_80353D70', 'UnkCollider::ctor'], - ['fn_80353F30', 'UnkCollider::ctor2'], - ['fn_80353FF0', 'UnkCollider::init'], ['fn_800C3EC0', 'ActorEventFlowManagerRelated::checkEventFinished'], ['fn_800275C0', 'EffectsStruct::ctor'], ['fn_80027610', 'EffectsStruct::ctor'], @@ -44,7 +41,6 @@ ['fn_800C43D0', 'ActorEventFlowManagerRelated *FUN_800c43d0'], ['fn_8037DCC0', 'EnemySoundMgr'], ['fn_800A6690', 'ActorOnRail::ctor'], - ['fn_80355080', 'getColliderManager'], ['fn_800975D0', 'initializeDowsingTarget'], ['fn_800A0680', 'getCurrentEventActor'], ['fn_80390FE0', 'something harp sound'], @@ -52,6 +48,8 @@ ['fn_800225F0', 'something light'], ['fn_80179250', 'shutter fence list'], ['fn_8033AB50', 'getCollisionCheckContext'], + ['fn_8033F150', 'fn_8033F150'], + ['fn_80341040', 'fn_80341040'], ['fn_383_D10', 'getAcOStageSink_ptr'], ]