| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <memory> |
| | #include "common/common_types.h" |
| | #include "common/swap.h" |
| | #include "core/file_sys/ncch_container.h" |
| | #include "core/loader/loader.h" |
| |
|
| | namespace Loader { |
| |
|
| | |
| | class AppLoader_NCCH final : public AppLoader { |
| | public: |
| | AppLoader_NCCH(Core::System& system_, FileUtil::IOFile&& file, const std::string& filepath) |
| | : AppLoader(system_, std::move(file)), base_ncch(filepath), overlay_ncch(&base_ncch), |
| | filepath(filepath) {} |
| |
|
| | |
| | |
| | |
| | |
| | |
| | static FileType IdentifyType(FileUtil::IOFile& file); |
| |
|
| | FileType GetFileType() override { |
| | return IdentifyType(file); |
| | } |
| |
|
| | [[nodiscard]] std::span<const u32> GetPreferredRegions() const override { |
| | return preferred_regions; |
| | } |
| |
|
| | ResultStatus Load(std::shared_ptr<Kernel::Process>& process) override; |
| |
|
| | std::pair<std::optional<u32>, ResultStatus> LoadCoreVersion() override; |
| |
|
| | |
| | |
| | |
| | |
| | std::pair<std::optional<Kernel::MemoryMode>, ResultStatus> LoadKernelMemoryMode() override; |
| |
|
| | std::pair<std::optional<Kernel::New3dsHwCapabilities>, ResultStatus> LoadNew3dsHwCapabilities() |
| | override; |
| |
|
| | ResultStatus IsExecutable(bool& out_executable) override; |
| |
|
| | ResultStatus ReadCode(std::vector<u8>& buffer) override; |
| |
|
| | ResultStatus ReadIcon(std::vector<u8>& buffer) override; |
| |
|
| | ResultStatus ReadBanner(std::vector<u8>& buffer) override; |
| |
|
| | ResultStatus ReadLogo(std::vector<u8>& buffer) override; |
| |
|
| | ResultStatus ReadProgramId(u64& out_program_id) override; |
| |
|
| | ResultStatus ReadExtdataId(u64& out_extdata_id) override; |
| |
|
| | ResultStatus ReadRomFS(std::shared_ptr<FileSys::RomFSReader>& romfs_file) override; |
| |
|
| | ResultStatus ReadUpdateRomFS(std::shared_ptr<FileSys::RomFSReader>& romfs_file) override; |
| |
|
| | ResultStatus DumpRomFS(const std::string& target_path) override; |
| |
|
| | ResultStatus DumpUpdateRomFS(const std::string& target_path) override; |
| |
|
| | ResultStatus ReadTitle(std::string& title) override; |
| |
|
| | private: |
| | |
| | |
| | |
| | |
| | |
| | ResultStatus LoadExec(std::shared_ptr<Kernel::Process>& process); |
| |
|
| | |
| | |
| | |
| | void ParseRegionLockoutInfo(u64 program_id); |
| |
|
| | |
| | bool IsGbaVirtualConsole(std::span<const u8> code); |
| |
|
| | FileSys::NCCHContainer base_ncch; |
| | FileSys::NCCHContainer update_ncch; |
| | FileSys::NCCHContainer* overlay_ncch; |
| |
|
| | std::vector<u32> preferred_regions; |
| |
|
| | std::string filepath; |
| | }; |
| |
|
| | } |
| |
|