From ae9a2bb8c388c3633ca39b40ea74c40bab45d26d Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Tue, 12 Mar 2024 22:52:22 -0600 Subject: Added verbose size into script factory --- src/factories/sf64/ScriptFactory.cpp | 38 ++++++++++++++++++++++++++++++------ 1 file 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 raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { const auto symbol = GetSafeNode(node, "symbol", entryName); - const auto offset = GetSafeNode(node, "offset"); + auto offset = GetSafeNode(node, "offset"); auto script = std::static_pointer_cast(raw); auto sortedPtrs = script->mPtrs; std::sort(sortedPtrs.begin(), sortedPtrs.end()); @@ -47,6 +47,12 @@ void SF64::ScriptCodeExporter::Export(std::ostream &write, std::shared_ptrIsDebug()) { + 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_ptrmCmds[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_ptrIsDebug()) { + 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 raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { @@ -92,9 +118,9 @@ std::optional> 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); } -- cgit v1.2.3