summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-03-12 22:52:22 -0600
committerKiritoDv <kiritodev01@gmail.com>2024-03-12 22:52:22 -0600
commitae9a2bb8c388c3633ca39b40ea74c40bab45d26d (patch)
tree00ba6f440fb113f4dd99d2b1e6256e8d822a49b2
parent20e1803bba941f900b75fc196b0185a1ae473601 (diff)
Added verbose size into script factory
-rw-r--r--src/factories/sf64/ScriptFactory.cpp38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/factories/sf64/ScriptFactory.cpp b/src/factories/sf64/ScriptFactory.cpp
index 1bf676c..8cba314 100644
--- a/src/factories/sf64/ScriptFactory.cpp
+++ b/src/factories/sf64/ScriptFactory.cpp
@@ -32,7 +32,7 @@ std::string MakeScriptCmd(uint16_t s1, uint16_t s2) {
void SF64::ScriptCodeExporter::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);
- const auto offset = GetSafeNode<uint32_t>(node, "offset");
+ auto offset = GetSafeNode<uint32_t>(node, "offset");
auto script = std::static_pointer_cast<SF64::ScriptData>(raw);
auto sortedPtrs = script->mPtrs;
std::sort(sortedPtrs.begin(), sortedPtrs.end());
@@ -47,6 +47,12 @@ void SF64::ScriptCodeExporter::Export(std::ostream &write, std::shared_ptr<IPars
for(int i = 0; i < sortedPtrs.size(); i++) {
std::ostringstream scriptDefaultName;
scriptDefaultName << symbol << "_cmds_" << std::uppercase << std::hex << cmdOff + 2 * cmdIndex;
+ if (Companion::Instance->IsDebug()) {
+ if (IS_SEGMENTED(cmdOff)) {
+ cmdOff = SEGMENT_OFFSET(cmdOff);
+ }
+ write << "// 0x" << std::hex << std::uppercase << cmdOff << "\n";
+ }
write << "u16 " << scriptDefaultName.str() << "[] = {";
for(int j = 0; j < script->mSizeMap[sortedPtrs[i]] / 2; j++, cmdIndex+=2) {
@@ -56,8 +62,23 @@ void SF64::ScriptCodeExporter::Export(std::ostream &write, std::shared_ptr<IPars
write << MakeScriptCmd(script->mCmds[cmdIndex], script->mCmds[cmdIndex + 1]) << ", ";
}
scriptNames.push_back(scriptDefaultName.str());
- write << "\n};\n\n";
+ write << "\n};";
+
+ if (Companion::Instance->IsDebug()) {
+ write << "// count: " << std::to_string(sortedPtrs.size()) << " Events\n";
+ write << "// 0x" << std::hex << std::uppercase << (cmdOff + (sortedPtrs.size() * sizeof(uint16_t))) << "\n";
+ }
+
+ write << "\n";
}
+
+ if (Companion::Instance->IsDebug()) {
+ if (IS_SEGMENTED(offset)) {
+ offset = SEGMENT_OFFSET(offset);
+ }
+ write << "// 0x" << std::hex << std::uppercase << offset << "\n";
+ }
+
write << "u16* " << symbol << "[] = {";
for(int i = 0; i < script->mPtrs.size(); i++) {
if((i % 5) == 0) {
@@ -65,8 +86,13 @@ void SF64::ScriptCodeExporter::Export(std::ostream &write, std::shared_ptr<IPars
}
write << scriptNames[i] << ", ";
}
- write << "\n};\n\n";
-
+ write << "\n};\n";
+
+ if (Companion::Instance->IsDebug()) {
+ write << "// 0x" << std::hex << std::uppercase << (offset + (sizeof(uint32_t) * script->mPtrs.size())) << "\n";
+ }
+
+ write << "\n";
}
void SF64::ScriptBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
@@ -92,9 +118,9 @@ std::optional<std::shared_ptr<IParsedData>> SF64::ScriptFactory::parse(std::vect
auto sortedPtrs = scriptPtrs;
std::sort(sortedPtrs.begin(), sortedPtrs.end());
-
+
auto cmdsStart = sortedPtrs[0];
-
+
for(int i = 0; i < sortedPtrs.size() - 1; i++) {
sizeMap[sortedPtrs[i]] = (sortedPtrs[i+1] - sortedPtrs[i]) / sizeof(uint16_t);
}