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 ) {