diff options
| author | 2019-03-10 16:51:42 -0400 | |
|---|---|---|
| committer | 2019-03-10 16:51:42 -0400 | |
| commit | ed82bb968a2ec785485345aa202143df57c0f8fe (patch) | |
| tree | 3db6e12366aadee572fadd80920c9dcf3568d445 /src/core/file_sys | |
| parent | Merge pull request #2217 from ReinUsesLisp/rasterizer-logger (diff) | |
| download | yuzu-ed82bb968a2ec785485345aa202143df57c0f8fe.tar.gz yuzu-ed82bb968a2ec785485345aa202143df57c0f8fe.tar.xz yuzu-ed82bb968a2ec785485345aa202143df57c0f8fe.zip | |
set_sys: Implement GetFirmwareVersion(2) for libnx hosversion
Uses the synthesized system archive 9 (SystemVersion) and reports v5.1.0-0.0
Diffstat (limited to 'src/core/file_sys')
| -rw-r--r-- | src/core/file_sys/system_archive/system_archive.cpp | 3 | ||||
| -rw-r--r-- | src/core/file_sys/system_archive/system_version.cpp | 48 | ||||
| -rw-r--r-- | src/core/file_sys/system_archive/system_version.h | 13 |
3 files changed, 63 insertions, 1 deletions
diff --git a/src/core/file_sys/system_archive/system_archive.cpp b/src/core/file_sys/system_archive/system_archive.cpp index e3e79f40a..c9722ed77 100644 --- a/src/core/file_sys/system_archive/system_archive.cpp +++ b/src/core/file_sys/system_archive/system_archive.cpp | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include "core/file_sys/romfs.h" | 6 | #include "core/file_sys/romfs.h" |
| 7 | #include "core/file_sys/system_archive/ng_word.h" | 7 | #include "core/file_sys/system_archive/ng_word.h" |
| 8 | #include "core/file_sys/system_archive/system_archive.h" | 8 | #include "core/file_sys/system_archive/system_archive.h" |
| 9 | #include "core/file_sys/system_archive/system_version.h" | ||
| 9 | 10 | ||
| 10 | namespace FileSys::SystemArchive { | 11 | namespace FileSys::SystemArchive { |
| 11 | 12 | ||
| @@ -30,7 +31,7 @@ constexpr std::array<SystemArchiveDescriptor, SYSTEM_ARCHIVE_COUNT> SYSTEM_ARCHI | |||
| 30 | {0x0100000000000806, "NgWord", &NgWord1}, | 31 | {0x0100000000000806, "NgWord", &NgWord1}, |
| 31 | {0x0100000000000807, "SsidList", nullptr}, | 32 | {0x0100000000000807, "SsidList", nullptr}, |
| 32 | {0x0100000000000808, "Dictionary", nullptr}, | 33 | {0x0100000000000808, "Dictionary", nullptr}, |
| 33 | {0x0100000000000809, "SystemVersion", nullptr}, | 34 | {0x0100000000000809, "SystemVersion", &SystemVersion}, |
| 34 | {0x010000000000080A, "AvatarImage", nullptr}, | 35 | {0x010000000000080A, "AvatarImage", nullptr}, |
| 35 | {0x010000000000080B, "LocalNews", nullptr}, | 36 | {0x010000000000080B, "LocalNews", nullptr}, |
| 36 | {0x010000000000080C, "Eula", nullptr}, | 37 | {0x010000000000080C, "Eula", nullptr}, |
diff --git a/src/core/file_sys/system_archive/system_version.cpp b/src/core/file_sys/system_archive/system_version.cpp new file mode 100644 index 000000000..3fc5f9586 --- /dev/null +++ b/src/core/file_sys/system_archive/system_version.cpp | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | // Copyright 2019 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/file_sys/system_archive/system_version.h" | ||
| 6 | #include "core/file_sys/vfs_vector.h" | ||
| 7 | |||
| 8 | namespace FileSys::SystemArchive { | ||
| 9 | |||
| 10 | namespace SystemVersionData { | ||
| 11 | |||
| 12 | // This section should reflect the best system version to describe yuzu's HLE api. | ||
| 13 | // TODO(DarkLordZach): Update when HLE gets better. | ||
| 14 | |||
| 15 | constexpr u8 VERSION_MAJOR = 5; | ||
| 16 | constexpr u8 VERSION_MINOR = 1; | ||
| 17 | constexpr u8 VERSION_MICRO = 0; | ||
| 18 | |||
| 19 | constexpr u8 REVISION_MAJOR = 0; | ||
| 20 | constexpr u8 REVISION_MINOR = 0; | ||
| 21 | |||
| 22 | constexpr char PLATFORM_STRING[] = "YUZU"; | ||
| 23 | constexpr char VERSION_HASH[] = ""; | ||
| 24 | constexpr char DISPLAY_VERSION[] = "5.1.0"; | ||
| 25 | constexpr char DISPLAY_TITLE[] = "YuzuEmulated Firmware for NX 5.1.0-0.0"; | ||
| 26 | |||
| 27 | } // namespace SystemVersionData | ||
| 28 | |||
| 29 | VirtualDir SystemVersion() { | ||
| 30 | VirtualFile file = std::make_shared<VectorVfsFile>(std::vector<u8>(0x100), "file"); | ||
| 31 | file->WriteObject(SystemVersionData::VERSION_MAJOR, 0); | ||
| 32 | file->WriteObject(SystemVersionData::VERSION_MINOR, 1); | ||
| 33 | file->WriteObject(SystemVersionData::VERSION_MICRO, 2); | ||
| 34 | file->WriteObject(SystemVersionData::REVISION_MAJOR, 4); | ||
| 35 | file->WriteObject(SystemVersionData::REVISION_MINOR, 5); | ||
| 36 | file->WriteArray(SystemVersionData::PLATFORM_STRING, | ||
| 37 | std::min(sizeof(SystemVersionData::PLATFORM_STRING), 0x20ull), 0x8); | ||
| 38 | file->WriteArray(SystemVersionData::VERSION_HASH, | ||
| 39 | std::min(sizeof(SystemVersionData::VERSION_HASH), 0x40ull), 0x28); | ||
| 40 | file->WriteArray(SystemVersionData::DISPLAY_VERSION, | ||
| 41 | std::min(sizeof(SystemVersionData::DISPLAY_VERSION), 0x18ull), 0x68); | ||
| 42 | file->WriteArray(SystemVersionData::DISPLAY_TITLE, | ||
| 43 | std::min(sizeof(SystemVersionData::DISPLAY_TITLE), 0x80ull), 0x80); | ||
| 44 | return std::make_shared<VectorVfsDirectory>(std::vector<VirtualFile>{file}, | ||
| 45 | std::vector<VirtualDir>{}, "data"); | ||
| 46 | } | ||
| 47 | |||
| 48 | } // namespace FileSys::SystemArchive | ||
diff --git a/src/core/file_sys/system_archive/system_version.h b/src/core/file_sys/system_archive/system_version.h new file mode 100644 index 000000000..9fb794b36 --- /dev/null +++ b/src/core/file_sys/system_archive/system_version.h | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | // Copyright 2019 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/file_sys/vfs_types.h" | ||
| 8 | |||
| 9 | namespace FileSys::SystemArchive { | ||
| 10 | |||
| 11 | VirtualDir SystemVersion(); | ||
| 12 | |||
| 13 | } // namespace FileSys::SystemArchive | ||