Torch
Loading...
Searching...
No Matches
OoTTextFactory.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4#include "utils/Decompressor.h"
5
6namespace OoT {
7
8// Handles OOT:TEXT type (OTXT 0x4F545854), message tables + per-language data.
9// Reference: Shipwright's TextFactory.cpp for binary format.
10
12 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
13 YAML::Node& node, std::string* replacement) override;
14};
15
17 uint16_t id;
18 uint8_t textboxType;
19 uint8_t textboxYPos;
20 std::string msg;
21};
22
24public:
25 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& node) override;
26 std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
27 return {
28 REGISTER(Binary, OoTTextBinaryExporter)
29 };
30 }
31
32private:
33 static bool IsEndOfMessageCode(uint8_t c);
34 static unsigned int GetTrailingBytes(uint8_t c);
35 static std::string ReadMessageText(const uint8_t* rawData, size_t rawSize, uint32_t offset);
36 static bool IsEndOfMessageCodeJapanese(uint16_t c);
37 static unsigned int GetTrailingShortsJapanese(uint16_t c);
38 static std::string ReadMessageTextJapanese(const uint8_t* rawData, size_t rawSize, uint32_t offset);
39 static uint32_t ReadMessageOffsetNTSC(const uint8_t* codeData, uint32_t entryPtr);
40 static uint32_t ReadMessageOffsetPAL(const uint8_t* codeData, uint32_t langPtr);
41 static MessageEntry ReadMessageMetadata(const uint8_t* codeData, uint32_t ptr);
42 static std::vector<MessageEntry> ParseMessagesEnglishNTSC(const DataChunk& code, uint32_t codeOffset,
43 const uint8_t* rawData, size_t rawSize);
44 static std::vector<MessageEntry> ParseMessagesJapaneseNTSC(const DataChunk& code, uint32_t codeOffset,
45 const uint8_t* rawData, size_t rawSize);
46 static std::vector<MessageEntry> ParseMessagesPAL(const DataChunk& code, uint32_t codeOffset,
47 uint32_t langPtr,
48 const uint8_t* rawData, size_t rawSize);
49};
50
51} // namespace OoT
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition OoTTextFactory.h:11
Definition OoTTextFactory.h:23
Definition Decompressor.h:21
Definition OoTTextFactory.h:16