diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/file_sys/program_metadata.cpp | 8 | ||||
| -rw-r--r-- | src/core/file_sys/program_metadata.h | 1 | ||||
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp index f00479bd3..8e291ff67 100644 --- a/src/core/file_sys/program_metadata.cpp +++ b/src/core/file_sys/program_metadata.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <vector> | 5 | #include <vector> |
| 6 | 6 | ||
| 7 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 8 | #include "common/scope_exit.h" | ||
| 8 | #include "core/file_sys/program_metadata.h" | 9 | #include "core/file_sys/program_metadata.h" |
| 9 | #include "core/file_sys/vfs.h" | 10 | #include "core/file_sys/vfs.h" |
| 10 | #include "core/loader/loader.h" | 11 | #include "core/loader/loader.h" |
| @@ -95,6 +96,13 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { | |||
| 95 | return Loader::ResultStatus::Success; | 96 | return Loader::ResultStatus::Success; |
| 96 | } | 97 | } |
| 97 | 98 | ||
| 99 | Loader::ResultStatus ProgramMetadata::Reload(VirtualFile file) { | ||
| 100 | const u64 original_program_id = aci_header.title_id; | ||
| 101 | SCOPE_EXIT({ aci_header.title_id = original_program_id; }); | ||
| 102 | |||
| 103 | return this->Load(file); | ||
| 104 | } | ||
| 105 | |||
| 98 | /*static*/ ProgramMetadata ProgramMetadata::GetDefault() { | 106 | /*static*/ ProgramMetadata ProgramMetadata::GetDefault() { |
| 99 | // Allow use of cores 0~3 and thread priorities 1~63. | 107 | // Allow use of cores 0~3 and thread priorities 1~63. |
| 100 | constexpr u32 default_thread_info_capability = 0x30007F7; | 108 | constexpr u32 default_thread_info_capability = 0x30007F7; |
diff --git a/src/core/file_sys/program_metadata.h b/src/core/file_sys/program_metadata.h index 2e8960b07..9f8e74b13 100644 --- a/src/core/file_sys/program_metadata.h +++ b/src/core/file_sys/program_metadata.h | |||
| @@ -56,6 +56,7 @@ public: | |||
| 56 | static ProgramMetadata GetDefault(); | 56 | static ProgramMetadata GetDefault(); |
| 57 | 57 | ||
| 58 | Loader::ResultStatus Load(VirtualFile file); | 58 | Loader::ResultStatus Load(VirtualFile file); |
| 59 | Loader::ResultStatus Reload(VirtualFile file); | ||
| 59 | 60 | ||
| 60 | /// Load from parameters instead of NPDM file, used for KIP | 61 | /// Load from parameters instead of NPDM file, used for KIP |
| 61 | void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio, | 62 | void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio, |
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index 5a42dea48..5c36b71e5 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp | |||
| @@ -118,7 +118,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect | |||
| 118 | return {ResultStatus::ErrorMissingNPDM, {}}; | 118 | return {ResultStatus::ErrorMissingNPDM, {}}; |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | const ResultStatus result2 = metadata.Load(npdm); | 121 | const ResultStatus result2 = metadata.Reload(npdm); |
| 122 | if (result2 != ResultStatus::Success) { | 122 | if (result2 != ResultStatus::Success) { |
| 123 | return {result2, {}}; | 123 | return {result2, {}}; |
| 124 | } | 124 | } |