diff options
| author | briaguya <70942617+briaguya-ai@users.noreply.github.com> | 2023-04-12 21:14:33 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-12 21:14:33 -0400 |
| commit | 989aa51798f1d5fafc7112f391789d299def10c7 (patch) | |
| tree | 3e064f65b3f062de1fe15900d7fe16afa575a6a1 | |
| parent | 0552057cf9ff04d0bffa4f6c724c8c0402c13659 (diff) | |
build/package/ship `soh.otr` (#2699)
* update
* Update generate-builds.yml
* Update generate-builds.yml
* sohotr in CI?
* paths
* gitignore soh.otr
* Fix
* no COMMAND maybe?
* try generating otr as it's own step
* deps
* f
* g
* h
* a
* cc
* ccc
* m
* blarg
* try uploading
* try
* s
* copy things
* wii u?
* wiiu
* don't fail
* windows without cpack?
* wut
* whoops
* see all the things plz
* b
* v
* zip working maybe
* ok but this tho
* pdb and switch
* mac lus
* soh.otr in appimage
* down first
* mac
* bundle soh otr into mac app and read it from the bundle
* appimage fix
* try just downloading for mac?
* i like to mv it mv it
* mv to the right place
* no more otrgui
* bring back otrgui and assets
* echo blarg
* echo
* zapd.exe
* clean and remove
* a
* space
---------
Co-authored-by: louis <louist103@gmail.com>
Co-authored-by: louist103 <35883445+louist103@users.noreply.github.com>
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: Adam Bird <archez39@me.com>
| -rw-r--r-- | OTRExporter/Main.cpp | 133 |
1 files changed, 70 insertions, 63 deletions
diff --git a/OTRExporter/Main.cpp b/OTRExporter/Main.cpp index 3bc9da0..fb49210 100644 --- a/OTRExporter/Main.cpp +++ b/OTRExporter/Main.cpp @@ -64,35 +64,34 @@ static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileM static void ExporterProgramEnd() { + uint32_t crc = 0xFFFFFFFF; + const uint8_t endianness = (uint8_t)Endianness::Big; + if (Globals::Instance->fileMode == ZFileMode::ExtractDirectory) { + std::string romPath = Globals::Instance->baseRomPath.string(); + const std::vector<uint8_t>& romData = File::ReadAllBytes(romPath); + crc = BitConverter::ToUInt32BE(romData, 0x10); printf("Creating version file...\n"); // Get crc from rom - std::string romPath = Globals::Instance->baseRomPath.string(); - std::vector<uint8_t> romData = File::ReadAllBytes(romPath); - uint32_t crc = BitConverter::ToUInt32BE(romData, 0x10); - uint8_t endianness = (uint8_t)Endianness::Big; - - // Write crc to version file - fs::path versionPath("Extract/version"); - MemoryStream* versionStream = new MemoryStream(); - BinaryWriter writer(versionStream); - writer.SetEndianness(Endianness::Big); - writer.Write(endianness); - writer.Write(crc); - std::ofstream versionFile(versionPath.c_str(), std::ios::out | std::ios::binary); - versionFile.write(versionStream->ToVector().data(), versionStream->GetLength()); - versionFile.flush(); - versionFile.close(); - writer.Close(); + + MemoryStream *versionStream = new MemoryStream(); + BinaryWriter writer(versionStream); + writer.SetEndianness(Endianness::Big); + writer.Write(endianness); + writer.Write(crc); + writer.Close(); printf("Created version file.\n"); printf("Generating OTR Archive...\n"); otrArchive = Ship::Archive::CreateArchive(otrFileName, 40000); - for (auto item : files) { + otrArchive->AddFile("version", (uintptr_t)versionStream->ToVector().data(), versionStream->GetLength()); + + for (const auto& item : files) + { std::string fName = item.first; if (fName.find("gTitleZeldaShieldLogoMQTex") != std::string::npos && !ZRom(romPath).IsMQ()) { @@ -102,64 +101,72 @@ static void ExporterProgramEnd() fName.replace(pos, 27, "gTitleZeldaShieldLogoTex"); } } - auto fileData = item.second; + const auto& fileData = item.second; otrArchive->AddFile(fName, (uintptr_t)fileData.data(), - fileData.size()); + fileData.size()); } + } + otrArchive = nullptr; - // Add any additional files that need to be manually copied... - auto lst = Directory::ListFiles("Extract"); + // Add any additional files that need to be manually copied... + const auto& lst = Directory::ListFiles("Extract"); + std::shared_ptr<Ship::Archive> sohOtr = Ship::Archive::CreateArchive("soh.otr", 4096); + //sohOtr->AddFile("version", (uintptr_t)versionStream->ToVector().data(), versionStream->GetLength()); - for (auto item : lst) + for (const auto& item : lst) + { + std::vector<std::string> splitPath = StringHelper::Split(item, "."); + + if (splitPath.size() >= 3) { - std::vector<std::string> splitPath = StringHelper::Split(item, "."); - - if (splitPath.size() >= 3) { - std::string extension = splitPath.at(splitPath.size() - 1); - std::string format = splitPath.at(splitPath.size() - 2); - splitPath.pop_back(); - splitPath.pop_back(); - std::string afterPath = std::accumulate(splitPath.begin(), splitPath.end(), std::string("")); - if (extension == "png" && (format == "rgba32" || format == "rgb5a1" || format == "i4" || format == "i8" || format == "ia4" || format == "ia8" || format == "ia16" || format == "ci4" || format == "ci8")) { - ZTexture tex(nullptr); - Globals::Instance->buildRawTexture = true; - tex.FromPNG(item, ZTexture::GetTextureTypeFromString(format)); - printf("otrArchive->AddFile(%s)\n", StringHelper::Split(afterPath, "Extract/")[1].c_str()); - - auto exporter = new OTRExporter_Texture(); - MemoryStream* stream = new MemoryStream(); - BinaryWriter writer(stream); - - exporter->Save(&tex, "", &writer); - - std::string src = tex.GetBodySourceCode(); - writer.Write((char*) src.c_str(), src.size()); - - std::vector<char> fileData = stream->ToVector(); - otrArchive->AddFile(StringHelper::Split(afterPath, "Extract/assets/")[1], (uintptr_t)fileData.data(), fileData.size()); - continue; - } - } + const std::string& extension = splitPath.at(splitPath.size() - 1); + const std::string& format = splitPath.at(splitPath.size() - 2); + splitPath.pop_back(); + splitPath.pop_back(); + std::string afterPath = std::accumulate(splitPath.begin(), splitPath.end(), std::string("")); + if (extension == "png" && (format == "rgba32" || format == "rgb5a1" || format == "i4" || format == "i8" || format == "ia4" || format == "ia8" || format == "ia16" || format == "ci4" || format == "ci8")) + { + ZTexture tex(nullptr); + Globals::Instance->buildRawTexture = true; + tex.FromPNG(item, ZTexture::GetTextureTypeFromString(format)); + printf("sohOtr->AddFile(%s)\n", StringHelper::Split(afterPath, "Extract/")[1].c_str()); - if(item.find("accessibility") != std::string::npos) { - std::string extension = splitPath.at(splitPath.size() - 1); - splitPath.pop_back(); - if(extension == "json"){ - auto fileData = File::ReadAllBytes(item); - printf("Adding accessibility texts %s\n", StringHelper::Split(item, "texts/")[1].c_str()); - otrArchive->AddFile(StringHelper::Split(item, "Extract/assets/")[1], (uintptr_t)fileData.data(), fileData.size()); - } + OTRExporter_Texture exporter; + + MemoryStream* stream = new MemoryStream(); + BinaryWriter writer(stream); + + exporter.Save(&tex, "", &writer); + + std::string src = tex.GetBodySourceCode(); + writer.Write((char *)src.c_str(), src.size()); + + std::vector<char> fileData = stream->ToVector(); + sohOtr->AddFile(StringHelper::Split(afterPath, "Extract/assets/")[1], (uintptr_t)fileData.data(), fileData.size()); continue; } + } - auto fileData = File::ReadAllBytes(item); - printf("otrArchive->AddFile(%s)\n", StringHelper::Split(item, "Extract/")[1].c_str()); - otrArchive->AddFile(StringHelper::Split(item, item.find("Extract/assets/") != std::string::npos ? "Extract/assets/" : "Extract/")[1], (uintptr_t)fileData.data(), fileData.size()); + if (item.find("accessibility") != std::string::npos) + { + std::string extension = splitPath.at(splitPath.size() - 1); + splitPath.pop_back(); + if (extension == "json") + { + const auto &fileData = File::ReadAllBytes(item); + printf("Adding accessibility texts %s\n", StringHelper::Split(item, "texts/")[1].c_str()); + sohOtr->AddFile(StringHelper::Split(item, "Extract/assets/")[1], (uintptr_t)fileData.data(), fileData.size()); + } + continue; } + + const auto& fileData = File::ReadAllBytes(item); + printf("sohOtr->AddFile(%s)\n", StringHelper::Split(item, "Extract/")[1].c_str()); + sohOtr->AddFile(StringHelper::Split(item, item.find("Extract/assets/") != std::string::npos ? "Extract/assets/" : "Extract/")[1], (uintptr_t)fileData.data(), fileData.size()); } + sohOtr = nullptr; } - static void ExporterParseArgs(int argc, char* argv[], int& i) { std::string arg = argv[i]; |
