diff options
| author | 2018-08-16 17:02:31 -0400 | |
|---|---|---|
| committer | 2018-08-23 11:52:44 -0400 | |
| commit | 2164702cf7f878c84a1f148daca2416911e6e939 (patch) | |
| tree | 73db8e3ffb79e5b219cc23b935008a29a26b0de7 /src/core/loader/loader.cpp | |
| parent | xts_encryption_layer: Implement XTSEncryptionLayer (diff) | |
| download | yuzu-2164702cf7f878c84a1f148daca2416911e6e939.tar.gz yuzu-2164702cf7f878c84a1f148daca2416911e6e939.tar.xz yuzu-2164702cf7f878c84a1f148daca2416911e6e939.zip | |
nax: Add AppLoader_NAX and update loader to support it
Diffstat (limited to 'src/core/loader/loader.cpp')
| -rw-r--r-- | src/core/loader/loader.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index 70ef5d240..fe5d71f68 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include "core/hle/kernel/process.h" | 11 | #include "core/hle/kernel/process.h" |
| 12 | #include "core/loader/deconstructed_rom_directory.h" | 12 | #include "core/loader/deconstructed_rom_directory.h" |
| 13 | #include "core/loader/elf.h" | 13 | #include "core/loader/elf.h" |
| 14 | #include "core/loader/nax.h" | ||
| 14 | #include "core/loader/nca.h" | 15 | #include "core/loader/nca.h" |
| 15 | #include "core/loader/nro.h" | 16 | #include "core/loader/nro.h" |
| 16 | #include "core/loader/nso.h" | 17 | #include "core/loader/nso.h" |
| @@ -32,6 +33,7 @@ FileType IdentifyFile(FileSys::VirtualFile file) { | |||
| 32 | CHECK_TYPE(NRO) | 33 | CHECK_TYPE(NRO) |
| 33 | CHECK_TYPE(NCA) | 34 | CHECK_TYPE(NCA) |
| 34 | CHECK_TYPE(XCI) | 35 | CHECK_TYPE(XCI) |
| 36 | CHECK_TYPE(NAX) | ||
| 35 | 37 | ||
| 36 | #undef CHECK_TYPE | 38 | #undef CHECK_TYPE |
| 37 | 39 | ||
| @@ -73,6 +75,8 @@ std::string GetFileTypeString(FileType type) { | |||
| 73 | return "NCA"; | 75 | return "NCA"; |
| 74 | case FileType::XCI: | 76 | case FileType::XCI: |
| 75 | return "XCI"; | 77 | return "XCI"; |
| 78 | case FileType::NAX: | ||
| 79 | return "NAX"; | ||
| 76 | case FileType::DeconstructedRomDirectory: | 80 | case FileType::DeconstructedRomDirectory: |
| 77 | return "Directory"; | 81 | return "Directory"; |
| 78 | case FileType::Error: | 82 | case FileType::Error: |
| @@ -150,13 +154,18 @@ static std::unique_ptr<AppLoader> GetFileLoader(FileSys::VirtualFile file, FileT | |||
| 150 | case FileType::NRO: | 154 | case FileType::NRO: |
| 151 | return std::make_unique<AppLoader_NRO>(std::move(file)); | 155 | return std::make_unique<AppLoader_NRO>(std::move(file)); |
| 152 | 156 | ||
| 153 | // NX NCA file format. | 157 | // NX NCA (Nintendo Content Archive) file format. |
| 154 | case FileType::NCA: | 158 | case FileType::NCA: |
| 155 | return std::make_unique<AppLoader_NCA>(std::move(file)); | 159 | return std::make_unique<AppLoader_NCA>(std::move(file)); |
| 156 | 160 | ||
| 161 | // NX XCI (nX Card Image) file format. | ||
| 157 | case FileType::XCI: | 162 | case FileType::XCI: |
| 158 | return std::make_unique<AppLoader_XCI>(std::move(file)); | 163 | return std::make_unique<AppLoader_XCI>(std::move(file)); |
| 159 | 164 | ||
| 165 | // NX NAX (NintendoAesXts) file format. | ||
| 166 | case FileType::NAX: | ||
| 167 | return std::make_unique<AppLoader_NAX>(std::move(file)); | ||
| 168 | |||
| 160 | // NX deconstructed ROM directory. | 169 | // NX deconstructed ROM directory. |
| 161 | case FileType::DeconstructedRomDirectory: | 170 | case FileType::DeconstructedRomDirectory: |
| 162 | return std::make_unique<AppLoader_DeconstructedRomDirectory>(std::move(file)); | 171 | return std::make_unique<AppLoader_DeconstructedRomDirectory>(std::move(file)); |
| @@ -170,7 +179,8 @@ std::unique_ptr<AppLoader> GetLoader(FileSys::VirtualFile file) { | |||
| 170 | FileType type = IdentifyFile(file); | 179 | FileType type = IdentifyFile(file); |
| 171 | FileType filename_type = GuessFromFilename(file->GetName()); | 180 | FileType filename_type = GuessFromFilename(file->GetName()); |
| 172 | 181 | ||
| 173 | if (type != filename_type) { | 182 | // Special case: 00 is either a NCA or NAX. |
| 183 | if (type != filename_type && !(file->GetName() == "00" && type == FileType::NAX)) { | ||
| 174 | LOG_WARNING(Loader, "File {} has a different type than its extension.", file->GetName()); | 184 | LOG_WARNING(Loader, "File {} has a different type than its extension.", file->GetName()); |
| 175 | if (FileType::Unknown == type) | 185 | if (FileType::Unknown == type) |
| 176 | type = filename_type; | 186 | type = filename_type; |