mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 07:59:02 -05:00 
			
		
		
		
	set_sys: Implement GetFirmwareVersion(2) for libnx hosversion
Uses the synthesized system archive 9 (SystemVersion) and reports v5.1.0-0.0
This commit is contained in:
		| @@ -6,6 +6,7 @@ | ||||
| #include "core/file_sys/romfs.h" | ||||
| #include "core/file_sys/system_archive/ng_word.h" | ||||
| #include "core/file_sys/system_archive/system_archive.h" | ||||
| #include "core/file_sys/system_archive/system_version.h" | ||||
|  | ||||
| namespace FileSys::SystemArchive { | ||||
|  | ||||
| @@ -30,7 +31,7 @@ constexpr std::array<SystemArchiveDescriptor, SYSTEM_ARCHIVE_COUNT> SYSTEM_ARCHI | ||||
|     {0x0100000000000806, "NgWord", &NgWord1}, | ||||
|     {0x0100000000000807, "SsidList", nullptr}, | ||||
|     {0x0100000000000808, "Dictionary", nullptr}, | ||||
|     {0x0100000000000809, "SystemVersion", nullptr}, | ||||
|     {0x0100000000000809, "SystemVersion", &SystemVersion}, | ||||
|     {0x010000000000080A, "AvatarImage", nullptr}, | ||||
|     {0x010000000000080B, "LocalNews", nullptr}, | ||||
|     {0x010000000000080C, "Eula", nullptr}, | ||||
|   | ||||
							
								
								
									
										48
									
								
								src/core/file_sys/system_archive/system_version.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/core/file_sys/system_archive/system_version.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| // Copyright 2019 yuzu emulator team | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "core/file_sys/system_archive/system_version.h" | ||||
| #include "core/file_sys/vfs_vector.h" | ||||
|  | ||||
| namespace FileSys::SystemArchive { | ||||
|  | ||||
| namespace SystemVersionData { | ||||
|  | ||||
| // This section should reflect the best system version to describe yuzu's HLE api. | ||||
| // TODO(DarkLordZach): Update when HLE gets better. | ||||
|  | ||||
| constexpr u8 VERSION_MAJOR = 5; | ||||
| constexpr u8 VERSION_MINOR = 1; | ||||
| constexpr u8 VERSION_MICRO = 0; | ||||
|  | ||||
| constexpr u8 REVISION_MAJOR = 0; | ||||
| constexpr u8 REVISION_MINOR = 0; | ||||
|  | ||||
| constexpr char PLATFORM_STRING[] = "YUZU"; | ||||
| constexpr char VERSION_HASH[] = ""; | ||||
| constexpr char DISPLAY_VERSION[] = "5.1.0"; | ||||
| constexpr char DISPLAY_TITLE[] = "YuzuEmulated Firmware for NX 5.1.0-0.0"; | ||||
|  | ||||
| } // namespace SystemVersionData | ||||
|  | ||||
| VirtualDir SystemVersion() { | ||||
|     VirtualFile file = std::make_shared<VectorVfsFile>(std::vector<u8>(0x100), "file"); | ||||
|     file->WriteObject(SystemVersionData::VERSION_MAJOR, 0); | ||||
|     file->WriteObject(SystemVersionData::VERSION_MINOR, 1); | ||||
|     file->WriteObject(SystemVersionData::VERSION_MICRO, 2); | ||||
|     file->WriteObject(SystemVersionData::REVISION_MAJOR, 4); | ||||
|     file->WriteObject(SystemVersionData::REVISION_MINOR, 5); | ||||
|     file->WriteArray(SystemVersionData::PLATFORM_STRING, | ||||
|                      std::min(sizeof(SystemVersionData::PLATFORM_STRING), 0x20ull), 0x8); | ||||
|     file->WriteArray(SystemVersionData::VERSION_HASH, | ||||
|                      std::min(sizeof(SystemVersionData::VERSION_HASH), 0x40ull), 0x28); | ||||
|     file->WriteArray(SystemVersionData::DISPLAY_VERSION, | ||||
|                      std::min(sizeof(SystemVersionData::DISPLAY_VERSION), 0x18ull), 0x68); | ||||
|     file->WriteArray(SystemVersionData::DISPLAY_TITLE, | ||||
|                      std::min(sizeof(SystemVersionData::DISPLAY_TITLE), 0x80ull), 0x80); | ||||
|     return std::make_shared<VectorVfsDirectory>(std::vector<VirtualFile>{file}, | ||||
|                                                 std::vector<VirtualDir>{}, "data"); | ||||
| } | ||||
|  | ||||
| } // namespace FileSys::SystemArchive | ||||
							
								
								
									
										13
									
								
								src/core/file_sys/system_archive/system_version.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/core/file_sys/system_archive/system_version.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| // Copyright 2019 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 SystemVersion(); | ||||
|  | ||||
| } // namespace FileSys::SystemArchive | ||||
		Reference in New Issue
	
	Block a user
	 Zach Hilman
					Zach Hilman