From 50d064e2b4920c96716a6a528aae58d51c1ba781 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Tue, 12 Mar 2024 21:49:23 -0600 Subject: [PATCH] Added objinit sized because Sonic complains about it --- src/Companion.cpp | 1 - src/factories/sf64/ObjInitFactory.cpp | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Companion.cpp b/src/Companion.cpp index 806e6a1..d4f95d1 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -81,7 +81,6 @@ void Companion::Init(const ExportType type) { this->RegisterFactory("SF64:HITBOX", std::make_shared()); this->RegisterFactory("SF64:OBJECT_INIT", std::make_shared()); - this->Process(); } diff --git a/src/factories/sf64/ObjInitFactory.cpp b/src/factories/sf64/ObjInitFactory.cpp index 4b5c21a..437862f 100644 --- a/src/factories/sf64/ObjInitFactory.cpp +++ b/src/factories/sf64/ObjInitFactory.cpp @@ -6,8 +6,16 @@ void SF64::ObjInitCodeExporter::Export(std::ostream &write, std::shared_ptr raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { auto symbol = GetSafeNode(node, "symbol", entryName); + auto offset = GetSafeNode(node, "offset"); auto objs = std::static_pointer_cast(raw)->mObjInit; + if (Companion::Instance->IsDebug()) { + if (IS_SEGMENTED(offset)) { + offset = SEGMENT_OFFSET(offset); + } + write << "// 0x" << std::hex << std::uppercase << offset << "\n"; + } + write << "ObjectInit " << symbol << "[] = {\n"; for(auto& obj : objs) { auto enumName = Companion::Instance->GetEnumFromValue("ObjectId", obj.id).value_or(std::to_string(obj.id)); @@ -19,7 +27,14 @@ void SF64::ObjInitCodeExporter::Export(std::ostream &write, std::shared_ptrIsDebug()) { + write << "// count: " << std::to_string(objs.size()) << " ObjectInits\n"; + write << "// 0x" << std::hex << std::uppercase << (offset + (sizeof(ObjectInit) * objs.size())) << "\n"; + } + + write << "\n"; } void SF64::ObjInitBinaryExporter::Export(std::ostream &write, std::shared_ptr raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {