From 86ad1f8db65e9e52795c9601ea120c6fe0e76e29 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 22 Nov 2018 21:39:05 -0500 Subject: file_sys: Implement system archive synthesizer for NgWord (806) --- src/core/file_sys/system_archive/ng_word.cpp | 42 ++++++++++++++++++++++ src/core/file_sys/system_archive/ng_word.h | 13 +++++++ .../file_sys/system_archive/system_archive.cpp | 8 ++--- 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 src/core/file_sys/system_archive/ng_word.cpp create mode 100644 src/core/file_sys/system_archive/ng_word.h (limited to 'src/core/file_sys/system_archive') diff --git a/src/core/file_sys/system_archive/ng_word.cpp b/src/core/file_sys/system_archive/ng_word.cpp new file mode 100644 index 000000000..d0acdbd49 --- /dev/null +++ b/src/core/file_sys/system_archive/ng_word.cpp @@ -0,0 +1,42 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include "common/common_types.h" +#include "core/file_sys/system_archive/ng_word.h" +#include "core/file_sys/vfs_vector.h" + +namespace FileSys::SystemArchive { + +namespace NgWord1Data { + +constexpr std::size_t NUMBER_WORD_TXT_FILES = 0x10; + +// Should this archive replacement mysteriously not work on a future game, consider updating. +constexpr std::array VERSION_DAT{0x0, 0x0, 0x0, 0x19}; // 5.1.0 System Version + +constexpr std::array WORD_TXT{ + 0xFE, 0xFF, 0x00, 0x5E, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x79, 0x00, 0x62, 0x00, + 0x61, 0x00, 0x64, 0x00, 0x77, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x64, 0x00, 0x24, 0x00, 0x0A, +}; // "^verybadword$" in UTF-16 + +} // namespace NgWord1Data + +VirtualDir NgWord1() { + std::vector files(NgWord1Data::NUMBER_WORD_TXT_FILES); + + for (std::size_t i = 0; i < NgWord1Data::NUMBER_WORD_TXT_FILES; ++i) { + files[i] = std::make_shared>( + NgWord1Data::WORD_TXT, fmt::format("{}.txt", i)); + } + + files.push_back(std::make_shared>( + NgWord1Data::WORD_TXT, "common.txt")); + files.push_back(std::make_shared>( + NgWord1Data::VERSION_DAT, "version.dat")); + + return std::make_shared(files, std::vector{}, "data"); +} + +} // namespace FileSys::SystemArchive diff --git a/src/core/file_sys/system_archive/ng_word.h b/src/core/file_sys/system_archive/ng_word.h new file mode 100644 index 000000000..f4bc67344 --- /dev/null +++ b/src/core/file_sys/system_archive/ng_word.h @@ -0,0 +1,13 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/file_sys/vfs_types.h" + +namespace FileSys::SystemArchive { + +VirtualDir NgWord1(); + +} // namespace FileSys::SystemArchive diff --git a/src/core/file_sys/system_archive/system_archive.cpp b/src/core/file_sys/system_archive/system_archive.cpp index 8451310a3..c9c40a07d 100644 --- a/src/core/file_sys/system_archive/system_archive.cpp +++ b/src/core/file_sys/system_archive/system_archive.cpp @@ -21,7 +21,7 @@ struct SystemArchiveDescriptor { SystemArchiveSupplier supplier; }; -const static std::array SYSTEM_ARCHIVES = {{ +const std::array SYSTEM_ARCHIVES = {{ {0x0100000000000800, "CertStore", nullptr}, {0x0100000000000801, "ErrorMessage", nullptr}, {0x0100000000000802, "MiiModel", nullptr}, @@ -50,7 +50,7 @@ const static std::array SYSTEM_AR {0x0100000000000819, "BootImagePackage", nullptr}, {0x010000000000081A, "BootImagePackageSafe", nullptr}, {0x010000000000081B, "BootImagePackageExFat", nullptr}, - {0x010000000000081C, "BottImagePackageExFatSafe", nullptr}, + {0x010000000000081C, "BootImagePackageExFatSafe", nullptr}, {0x010000000000081D, "FatalMessage", nullptr}, {0x010000000000081E, "ControllerIcon", nullptr}, {0x010000000000081F, "PlatformConfigIcosa", nullptr}, @@ -64,11 +64,11 @@ const static std::array SYSTEM_AR {0x0100000000000827, "ContentActionTable", nullptr}, }}; -VirtualFile SynthesizeSystemArchive(u64 title_id) { +VirtualFile SynthesizeSystemArchive(const u64 title_id) { if (title_id < SYSTEM_ARCHIVES.front().title_id || title_id > SYSTEM_ARCHIVES.back().title_id) return nullptr; - const auto desc = SYSTEM_ARCHIVES[title_id - SYSTEM_ARCHIVE_BASE_TITLE_ID]; + const auto& desc = SYSTEM_ARCHIVES[title_id - SYSTEM_ARCHIVE_BASE_TITLE_ID]; LOG_INFO(Service_FS, "Synthesizing system archive '{}' (0x{:016X}).", desc.name, desc.title_id); -- cgit v1.2.3