From 92e7076647d2da64e8f90aa66974c4a3dba03a06 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:56:30 -0500 Subject: Add vector classes and SF64 colpoly factory. Also fix enum parsing (#39) * 3D * and env * so much to fix --- src/factories/sf64/ScriptFactory.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/factories/sf64/ScriptFactory.cpp') diff --git a/src/factories/sf64/ScriptFactory.cpp b/src/factories/sf64/ScriptFactory.cpp index 8cba314..6385836 100644 --- a/src/factories/sf64/ScriptFactory.cpp +++ b/src/factories/sf64/ScriptFactory.cpp @@ -25,7 +25,9 @@ std::string MakeScriptCmd(uint16_t s1, uint16_t s2) { auto arg1 = s1 & 0x1FF; std::ostringstream cmd; - cmd << "EVENT_CMD(EVOP_" << std::left << std::setw(3) << std::dec << opcode << ", " << std::right << std::setw(3) << std::dec << arg1 << ", " << std::setw(5) << std::dec << s2 << ")"; + auto enumName = Companion::Instance->GetEnumFromValue("EventOpcode", opcode).value_or("/* EVOP_UNK */ " + std::to_string(opcode)); + + cmd << "EVENT_CMD(" << enumName << ", " << std::right << std::setw(3) << std::dec << arg1 << ", " << std::setw(5) << std::dec << s2 << ")"; return cmd.str(); } @@ -46,27 +48,27 @@ 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) { + auto cmdCount = script->mSizeMap[sortedPtrs[i]] / 2; + for(int j = 0; j < cmdCount; j++, cmdIndex+=2) { if((j % 3) == 0) { write << "\n" << fourSpaceTab; } write << MakeScriptCmd(script->mCmds[cmdIndex], script->mCmds[cmdIndex + 1]) << ", "; } scriptNames.push_back(scriptDefaultName.str()); - write << "\n};"; + write << "\n};\n"; + cmdOff += 4 * cmdCount; 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 << "// count: " << cmdCount << " commands\n"; + write << "// 0x" << std::hex << std::uppercase << cmdOff << "\n"; } write << "\n"; @@ -89,6 +91,7 @@ void SF64::ScriptCodeExporter::Export(std::ostream &write, std::shared_ptrIsDebug()) { + write << "// count: " << script->mPtrs.size() << " events\n"; write << "// 0x" << std::hex << std::uppercase << (offset + (sizeof(uint32_t) * script->mPtrs.size())) << "\n"; } -- cgit v1.2.3