Browse Source
Merge pull request #11639 from liamwhite/no-program-id-change
loader: don't reassign program ID on npdm reparse
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
10 additions and
1 deletions
-
src/core/file_sys/program_metadata.cpp
-
src/core/file_sys/program_metadata.h
-
src/core/loader/deconstructed_rom_directory.cpp
|
|
|
@ -5,6 +5,7 @@ |
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "common/scope_exit.h"
|
|
|
|
#include "core/file_sys/program_metadata.h"
|
|
|
|
#include "core/file_sys/vfs.h"
|
|
|
|
#include "core/loader/loader.h"
|
|
|
|
@ -95,6 +96,13 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { |
|
|
|
return Loader::ResultStatus::Success; |
|
|
|
} |
|
|
|
|
|
|
|
Loader::ResultStatus ProgramMetadata::Reload(VirtualFile file) { |
|
|
|
const u64 original_program_id = aci_header.title_id; |
|
|
|
SCOPE_EXIT({ aci_header.title_id = original_program_id; }); |
|
|
|
|
|
|
|
return this->Load(file); |
|
|
|
} |
|
|
|
|
|
|
|
/*static*/ ProgramMetadata ProgramMetadata::GetDefault() { |
|
|
|
// Allow use of cores 0~3 and thread priorities 1~63.
|
|
|
|
constexpr u32 default_thread_info_capability = 0x30007F7; |
|
|
|
|
|
|
|
@ -56,6 +56,7 @@ public: |
|
|
|
static ProgramMetadata GetDefault(); |
|
|
|
|
|
|
|
Loader::ResultStatus Load(VirtualFile file); |
|
|
|
Loader::ResultStatus Reload(VirtualFile file); |
|
|
|
|
|
|
|
/// Load from parameters instead of NPDM file, used for KIP |
|
|
|
void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio, |
|
|
|
|
|
|
|
@ -118,7 +118,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect |
|
|
|
return {ResultStatus::ErrorMissingNPDM, {}}; |
|
|
|
} |
|
|
|
|
|
|
|
const ResultStatus result2 = metadata.Load(npdm); |
|
|
|
const ResultStatus result2 = metadata.Reload(npdm); |
|
|
|
if (result2 != ResultStatus::Success) { |
|
|
|
return {result2, {}}; |
|
|
|
} |
|
|
|
|