From c54ef39005eabc17921436f3cc2482ef8efb0bcd Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Wed, 22 Nov 2023 10:49:30 -0600 Subject: Removed GBI, added GeoLayout and Lights extraction --- src/Companion.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/Companion.cpp') diff --git a/src/Companion.cpp b/src/Companion.cpp index 992445a..8c838fa 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -77,6 +77,14 @@ void Companion::ExtractNode(YAML::Node& node, std::string& name, SWrapper* binar return; } + if(node["segments"]) { + for(auto segment = node["segments"].begin(); segment != node["segments"].end(); ++segment) { + auto id = std::stoi(segment->first.as().substr(3)); + auto replacement = segment->second.as(); + this->gTemporalSegments[id] = replacement; + } + } + auto result = factory->get()->parse(this->gRomData, node); if(!result.has_value()){ SPDLOG_ERROR("Failed to process {}", name); @@ -265,6 +273,7 @@ void Companion::Process() { std::string output = (this->gCurrentDirectory / entryName).string(); std::replace(output.begin(), output.end(), '\\', '/'); + this->gTemporalSegments.clear(); this->ExtractNode(asset->second, output, wrapper); } @@ -439,6 +448,11 @@ std::optional> Companion::GetFactory(const std::str } std::optional Companion::GetSegmentedAddr(const uint8_t segment) { + + if(this->gTemporalSegments.contains(segment)) { + return this->gTemporalSegments[segment]; + } + if(segment >= this->gSegments.size()) { return std::nullopt; } -- cgit v1.2.3