From 4db719e978fe7973f9a886d83dba5b5820a15bce Mon Sep 17 00:00:00 2001 From: robojumper Date: Sat, 23 Nov 2024 13:34:00 +0100 Subject: [PATCH] Some adjacent splits --- config/SOUE01/splits.txt | 14 +++++++++++++- config/SOUE01/symbols.txt | 10 +++++----- include/d/a/obj/d_a_obj_base.h | 12 +++++++++--- src/d/col/c/c_cc_d.cpp | 2 +- src/d/d_carry.cpp | 12 ++++++++++++ 5 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 src/d/d_carry.cpp diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 479d64a7..6123684c 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -71,8 +71,9 @@ d/d_base.cpp: .sbss start:0x805750C0 end:0x805750CC d/d_carry.cpp: - .text start:0x80050A20 end:0x80051C00 + .text start:0x80050A20 end:0x80051BF8 .data start:0x805033D0 end:0x805033E0 + .sdata2 start:0x80576ED8 end:0x80576F20 d/d_cc.cpp: .text start:0x80051C00 end:0x800520F0 @@ -811,6 +812,17 @@ DynamicLink.cpp: c/c_list.cpp: .text start:0x802E08C0 end:0x802E0A50 +c/c_math.cpp: + .text start:0x802E0A50 end:0x802E0CF8 + .data start:0x80541A70 end:0x80542278 + .sdata2 start:0x8057CC58 end:0x8057CC80 + +c/c_rand.cpp: + .text start:0x802E0D00 end:0x802E0E64 + .ctors start:0x804DB8BC end:0x804DB8C0 + .sdata start:0x80573FB0 end:0x80573FB8 + .sdata2 start:0x8057CC80 end:0x8057CC98 + c/c_tree.cpp: .text start:0x802E0E70 end:0x802E1140 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 18acb3b2..8b09dddb 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -2096,17 +2096,17 @@ unloadCallback__7dBase_cFv = .text:0x800509D0; // type:function size:0x4 initLoader__7dBase_cFv = .text:0x800509E0; // type:function size:0x1C createBase__7dBase_cFUsP7dBase_cUlUc = .text:0x80050A00; // type:function size:0x4 createRoot__7dBase_cFUsUlUc = .text:0x80050A10; // type:function size:0x4 -CarriedActorCtor = .text:0x80050A20; // type:function size:0x118 -CarriedActorDtor = .text:0x80050B40; // type:function size:0x80 +__ct__16ActorCarryStructFv = .text:0x80050A20; // type:function size:0x118 +__dt__16ActorCarryStructFv = .text:0x80050B40; // type:function size:0x80 set__16ActorCarryStructFUlfffPv = .text:0x80050BC0; // type:function size:0xB4 actorAttachingRelated = .text:0x80050C80; // type:function size:0x13C fn_80050DC0 = .text:0x80050DC0; // type:function size:0x34 fn_80050E00 = .text:0x80050E00; // type:function size:0x34 fn_80050E40 = .text:0x80050E40; // type:function size:0x60 fn_80050EA0__16ActorCarryStructFP12dAcObjBase_c = .text:0x80050EA0; // type:function size:0xC -fn_80050EB0 = .text:0x80050EB0; // type:function size:0x140 +fn_80050EB0__16ActorCarryStructFP12dAcObjBase_c = .text:0x80050EB0; // type:function size:0x140 bushTpFunc__16ActorCarryStructFR9dBgS_Acch = .text:0x80050FF0; // type:function size:0x19C -fn_80051190 = .text:0x80051190; // type:function size:0x4C +fn_80051190__16ActorCarryStructFP12dAcObjBase_c = .text:0x80051190; // type:function size:0x4C fn_800511E0__16ActorCarryStructFP12dAcObjBase_c = .text:0x800511E0; // type:function size:0x1D8 isCarriedActor_NotGerock = .text:0x800513C0; // type:function size:0x78 fn_80051440 = .text:0x80051440; // type:function size:0x17C @@ -30059,7 +30059,7 @@ lbl_80503248 = .data:0x80503248; // type:object size:0x30 lbl_80503278 = .data:0x80503278; // type:object size:0x9C lbl_80503314 = .data:0x80503314; // type:object size:0x6C __vt__7dBase_c = .data:0x80503380; // type:object size:0x4C -lbl_805033D0 = .data:0x805033D0; // type:object size:0x10 +__vt__16ActorCarryStruct = .data:0x805033D0; // type:object size:0xC __vt__18ColliderLinkedList = .data:0x805033E0; // type:object size:0xC __vt__Q24dDvd8loader_c = .data:0x805033F0; // type:object size:0x10 lbl_80503400 = .data:0x80503400; // type:object size:0x40 diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 8dd4372e..8a44ec00 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -18,7 +18,7 @@ class dBgS_Acch; // Size: 0xA8 struct ActorCarryStruct { - /* 0x00 */ fLiNdBa_c actorLink; + /* 0x00 */ dAcRefBase_c actorLink; /* 0x0C */ fLiNdBa_c *carriedActor; /* 0x10 */ u32 carryFlags; /* 0x14 */ int carryType; @@ -32,7 +32,11 @@ struct ActorCarryStruct { /* 0x90 */ f32 field_0x90; /* 0x94 */ f32 field_0x94; /* 0x98 */ f32 field_0x98; - /* 0x9C */ void *dtor; // ??? + + ActorCarryStruct(); + /* vt 0x9C */ + virtual ~ActorCarryStruct(); + // Is this actually part of this struct? /* 0xA0 */ u32 field_0xA0; /* 0xA4 */ u32 field_0xA4; @@ -43,6 +47,8 @@ struct ActorCarryStruct { void fn_80050EA0(dAcObjBase_c *); void fn_800511E0(dAcObjBase_c *); + void fn_80051190(dAcObjBase_c *); + void fn_80050EB0(dAcObjBase_c *); bool testCarryFlag(u32 flag) { return (carryFlags & flag) != 0; @@ -215,7 +221,7 @@ public: if (!result) \ return result; \ } while (0) -// Use this in actors' createHeap functions +// Use this in actors' create functions #define CREATE_ALLOCATOR(className) \ do { \ if (!initAllocatorWork1Heap(-1, #className "::m_allocator", 0x20)) { \ diff --git a/src/d/col/c/c_cc_d.cpp b/src/d/col/c/c_cc_d.cpp index 1dd65c6d..f8669ee6 100644 --- a/src/d/col/c/c_cc_d.cpp +++ b/src/d/col/c/c_cc_d.cpp @@ -1237,7 +1237,7 @@ bool cCcD_CylAttr::CrossCo(cCcD_CpsAttr &cpsAttr, f32 *pOut) { } bool cCcD_CylAttr::CrossCo(cCcD_UnkAttr &unkAttr, f32 *pOut) { - cM3dGCyl::Cross(unkAttr, pOut); + return cM3dGCyl::Cross(unkAttr, pOut); } void cCcD_CylAttr::CalcAabBox() { diff --git a/src/d/d_carry.cpp b/src/d/d_carry.cpp new file mode 100644 index 00000000..ce473dd4 --- /dev/null +++ b/src/d/d_carry.cpp @@ -0,0 +1,12 @@ +#include "d/a/obj/d_a_obj_base.h" +#include "m/m_mtx.h" + +ActorCarryStruct::ActorCarryStruct() + : actorLink(nullptr), carriedActor(nullptr), carryFlags(0), carryType(0), field_0x18(0), + field_0x1C(0.0f, 0.0f, 0.0f), carryTransMtx(mMtx_c::Identity), field_0x58(mMtx_c::Identity), isCarried(0), + field_0x8C(0.0f), field_0x90(0.0f), field_0x94(0.0f), field_0x98(0.0f) {} + +ActorCarryStruct::~ActorCarryStruct() { + fn_80051190(nullptr); + fn_80050EB0(nullptr); +}