summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/factories/sf64/ObjInitFactory.cpp11
-rw-r--r--src/factories/sf64/ObjInitFactory.h5
2 files changed, 16 insertions, 0 deletions
diff --git a/src/factories/sf64/ObjInitFactory.cpp b/src/factories/sf64/ObjInitFactory.cpp
index 8894036..a2e42eb 100644
--- a/src/factories/sf64/ObjInitFactory.cpp
+++ b/src/factories/sf64/ObjInitFactory.cpp
@@ -5,6 +5,17 @@
#define NUM(x, w) std::dec << std::setfill(' ') << std::setw(w) << x
#define FLOAT(x, w) std::dec << std::setfill(' ') << std::setw(w) << std::fixed << std::setprecision(1) << x << "f"
+void SF64::ObjInitHeaderExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement) {
+ const auto symbol = GetSafeNode(node, "symbol", entryName);
+
+ if(Companion::Instance->IsOTRMode()){
+ write << "static const char " << symbol << "[] = \"__OTR__" << (*replacement) << "\";\n\n";
+ return;
+ }
+
+ write << "extern ObjectInit " << symbol << "[];\n";
+}
+
void SF64::ObjInitCodeExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
auto symbol = GetSafeNode(node, "symbol", entryName);
auto offset = GetSafeNode<uint32_t>(node, "offset");
diff --git a/src/factories/sf64/ObjInitFactory.h b/src/factories/sf64/ObjInitFactory.h
index fcaff69..2abfab5 100644
--- a/src/factories/sf64/ObjInitFactory.h
+++ b/src/factories/sf64/ObjInitFactory.h
@@ -21,6 +21,10 @@ public:
explicit ObjInitData(std::vector<ObjectInit> objInit) : mObjInit(objInit) {}
};
+class ObjInitHeaderExporter : public BaseExporter {
+ void Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
+};
+
class ObjInitBinaryExporter : public BaseExporter {
void Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
};
@@ -37,6 +41,7 @@ public:
}
inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
return {
+ REGISTER(Header, ObjInitHeaderExporter)
REGISTER(Binary, ObjInitBinaryExporter)
REGISTER(Code, ObjInitCodeExporter)
};