loader: don't reassign program ID on npdm reparse
This commit is contained in:
parent
184ee2d890
commit
2f0db2708c
|
@ -5,6 +5,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
|
#include "common/scope_exit.h"
|
||||||
#include "core/file_sys/program_metadata.h"
|
#include "core/file_sys/program_metadata.h"
|
||||||
#include "core/file_sys/vfs.h"
|
#include "core/file_sys/vfs.h"
|
||||||
#include "core/loader/loader.h"
|
#include "core/loader/loader.h"
|
||||||
|
@ -95,6 +96,13 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
|
||||||
return Loader::ResultStatus::Success;
|
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() {
|
/*static*/ ProgramMetadata ProgramMetadata::GetDefault() {
|
||||||
// Allow use of cores 0~3 and thread priorities 1~63.
|
// Allow use of cores 0~3 and thread priorities 1~63.
|
||||||
constexpr u32 default_thread_info_capability = 0x30007F7;
|
constexpr u32 default_thread_info_capability = 0x30007F7;
|
||||||
|
|
|
@ -56,6 +56,7 @@ public:
|
||||||
static ProgramMetadata GetDefault();
|
static ProgramMetadata GetDefault();
|
||||||
|
|
||||||
Loader::ResultStatus Load(VirtualFile file);
|
Loader::ResultStatus Load(VirtualFile file);
|
||||||
|
Loader::ResultStatus Reload(VirtualFile file);
|
||||||
|
|
||||||
/// Load from parameters instead of NPDM file, used for KIP
|
/// Load from parameters instead of NPDM file, used for KIP
|
||||||
void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio,
|
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, {}};
|
return {ResultStatus::ErrorMissingNPDM, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
const ResultStatus result2 = metadata.Load(npdm);
|
const ResultStatus result2 = metadata.Reload(npdm);
|
||||||
if (result2 != ResultStatus::Success) {
|
if (result2 != ResultStatus::Success) {
|
||||||
return {result2, {}};
|
return {result2, {}};
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue