summaryrefslogtreecommitdiff
path: root/src/factories/sf64/MessageFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/factories/sf64/MessageFactory.cpp')
-rw-r--r--src/factories/sf64/MessageFactory.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/factories/sf64/MessageFactory.cpp b/src/factories/sf64/MessageFactory.cpp
index 039db8a..c8d5ae5 100644
--- a/src/factories/sf64/MessageFactory.cpp
+++ b/src/factories/sf64/MessageFactory.cpp
@@ -53,7 +53,7 @@ ExportResult SF64::MessageHeaderExporter::Export(std::ostream &write, std::share
const auto symbol = GetSafeNode(node, "symbol", entryName);
if(Companion::Instance->IsOTRMode()){
- write << "static const char " << symbol << "[] = \"__OTR__" << (*replacement) << "\";\n\n";
+ write << "static ALIGN_ASSET(2) char " << symbol << "[] = \"__OTR__" << (*replacement) << "\";\n\n";
return std::nullopt;
}
@@ -130,9 +130,10 @@ ExportResult SF64::MessageBinaryExporter::Export(std::ostream &write, std::share
WriteHeader(writer, LUS::ResourceType::Message, 0);
- writer.Write(static_cast<uint32_t>(data->mMessage.size()));
- for(auto m : data->mMessage) {
- writer.Write(m);
+ auto count = data->mMessage.size();
+ writer.Write(static_cast<uint32_t>(count));
+ for(size_t i = 0; i < count; i++) {
+ writer.Write((uint16_t) data->mMessage[i]);
}
writer.Finish(write);
return std::nullopt;
@@ -145,12 +146,12 @@ std::optional<std::shared_ptr<IParsedData>> SF64::MessageFactory::parse(std::vec
LUS::BinaryReader reader(segment.data, segment.size);
reader.SetEndianness(LUS::Endianness::Big);
- uint16_t c = reader.ReadUInt16();
- while(c != END_CODE){
+ bool processing = true;
+ while(processing){
+ uint16_t c = reader.ReadUInt16();
message.push_back(c);
- c = reader.ReadUInt16();
+ processing = c != END_CODE;
}
- message.push_back(END_CODE);
return std::make_shared<MessageData>(message);
} \ No newline at end of file