diff options
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 39 | ||||
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.h | 1 | ||||
| -rw-r--r-- | src/core/loader/loader.cpp | 7 |
3 files changed, 6 insertions, 41 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index 1dce245f7f..5e2ec7e0b9 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp @@ -13,7 +13,6 @@ #include "core/file_sys/control_metadata.h" #include "core/file_sys/patch_manager.h" #include "core/file_sys/romfs_factory.h" -#include "core/file_sys/romfs.h" #include "core/hle/kernel/k_page_table.h" #include "core/hle/kernel/k_process.h" #include "core/hle/service/filesystem/filesystem.h" @@ -130,14 +129,10 @@ AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory( : AppLoader(directory->GetFile("main")) , dir(std::move(directory)) , override_update(override_update_) - , standalone(false) {} FileType AppLoader_DeconstructedRomDirectory::IdentifyType(const FileSys::VirtualFile& dir_file) { - const auto directory = dir_file->GetContainingDirectory(); - if (dir_file->GetName() == "main" && directory && - AppLoader_NSO::IdentifyType(dir_file) == FileType::NSO && - FileSys::IsDirectoryExeFS(directory)) { + if (FileSys::IsDirectoryExeFS(dir_file->GetContainingDirectory())) { return FileType::DeconstructedRomDirectory; } @@ -187,11 +182,11 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect } metadata.Print(); - // Extended ACID programs currently require the Dynarmic compatibility path. + // Enable NCE only for applications with 39-bit address space. const bool is_39bit = metadata.GetAddressSpaceType() == FileSys::ProgramAddressSpaceType::Is39Bit; const bool is_application = metadata.GetPoolPartition() == FileSys::PoolPartition::Application; - Settings::SetNceEnabled(is_39bit && !metadata.UsesExtendedAcid()); + Settings::SetNceEnabled(is_39bit); const std::array static_modules = {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3", "subsdk4", "subsdk5", "subsdk6", "subsdk7", @@ -272,39 +267,11 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect } is_loaded = true; - if (standalone) { - title_id = metadata.GetTitleID(); - system.GetFileSystemController().RegisterProcess( - process.GetProcessId(), {}, - std::make_shared<FileSys::RomFSFactory>(*this, system.GetContentProvider(), - system.GetFileSystemController())); - } return {ResultStatus::Success, LoadParameters{metadata.GetMainThreadPriority(), metadata.GetMainThreadStackSize()}}; } ResultStatus AppLoader_DeconstructedRomDirectory::ReadRomFS(FileSys::VirtualFile& out_dir) { - if (romfs == nullptr && standalone) { - const auto directory = file->GetContainingDirectory(); - for (const auto& entry : directory->GetFiles()) { - if (entry->GetExtension() == "romfs") { - romfs = entry; - break; - } - } - if (romfs == nullptr) { - auto loose = directory->GetSubdirectory("romfs"); - if (!loose && directory->GetName() == "exefs") { - const auto parent = directory->GetParentDirectory(); - if (parent) { - loose = parent->GetSubdirectory("romfs"); - } - } - if (loose) { - romfs = FileSys::CreateRomFS(std::move(loose)); - } - } - } if (romfs == nullptr) { return ResultStatus::ErrorNoRomFS; } diff --git a/src/core/loader/deconstructed_rom_directory.h b/src/core/loader/deconstructed_rom_directory.h index aba89935a3..7283db0662 100644 --- a/src/core/loader/deconstructed_rom_directory.h +++ b/src/core/loader/deconstructed_rom_directory.h @@ -62,7 +62,6 @@ private: std::string name; u64 title_id{}; bool override_update; - bool standalone{true}; Modules modules; }; diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index d802d15e9f..92e2e2f602 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -125,10 +125,6 @@ bool HasApplicationProgramContent(const std::shared_ptr<FileSys::NSP>& nsp) { } // namespace FileType IdentifyFile(FileSys::VirtualFile file) { - if (const auto romdir_type = - IdentifyFileLoader<AppLoader_DeconstructedRomDirectory>(file)) { - return *romdir_type; - } if (const auto nsp_type = IdentifyFileLoader<AppLoader_NSP>(file)) { return *nsp_type; } else if (const auto xci_type = IdentifyFileLoader<AppLoader_XCI>(file)) { @@ -143,6 +139,9 @@ FileType IdentifyFile(FileSys::VirtualFile file) { return *kip_type; } else if (const auto nso_type = IdentifyFileLoader<AppLoader_NSO>(file)) { return *nso_type; + } else if (const auto romdir_type = + IdentifyFileLoader<AppLoader_DeconstructedRomDirectory>(file)) { + return *romdir_type; } else { return FileType::Unknown; } |
