diff options
| author | 2013-10-01 19:09:49 -0400 | |
|---|---|---|
| committer | 2013-10-01 19:09:49 -0400 | |
| commit | 4c24ea3d88875aff4be4eb128b043f1eaf55d5b4 (patch) | |
| tree | decdcfe879edf15ecd4b81aec42e4cbd7878f91b /src | |
| parent | added a message option to Core::Halt function (diff) | |
| download | yuzu-4c24ea3d88875aff4be4eb128b043f1eaf55d5b4.tar.gz yuzu-4c24ea3d88875aff4be4eb128b043f1eaf55d5b4.tar.xz yuzu-4c24ea3d88875aff4be4eb128b043f1eaf55d5b4.zip | |
added an early function for booting from a directory
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/src/loader.cpp | 39 | ||||
| -rw-r--r-- | src/core/src/loader.h | 12 |
2 files changed, 35 insertions, 16 deletions
diff --git a/src/core/src/loader.cpp b/src/core/src/loader.cpp index 44cb92a29..5b746b7eb 100644 --- a/src/core/src/loader.cpp +++ b/src/core/src/loader.cpp | |||
| @@ -24,19 +24,38 @@ | |||
| 24 | 24 | ||
| 25 | #include "file_util.h" | 25 | #include "file_util.h" |
| 26 | #include "loader.h" | 26 | #include "loader.h" |
| 27 | #include "system.h" | ||
| 28 | #include "file_sys/directory_file_system.h" | ||
| 27 | 29 | ||
| 28 | //////////////////////////////////////////////////////////////////////////////////////////////////// | 30 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
| 29 | 31 | ||
| 30 | bool _Load_BIN(std::string &filename) { | 32 | bool LoadDirectory(std::string &filename) { |
| 31 | File::IOFile f(filename, "rb"); | 33 | std::string full_path = filename; |
| 32 | if (f.IsOpen()) { | 34 | std::string path, file, extension; |
| 35 | SplitPath(ReplaceAll(full_path, "\\", "/"), &path, &file, &extension); | ||
| 36 | #if EMU_PLATFORM == PLATFORM_WINDOWS | ||
| 37 | path = ReplaceAll(path, "/", "\\"); | ||
| 38 | #endif | ||
| 39 | DirectoryFileSystem *fs = new DirectoryFileSystem(&System::g_ctr_file_system, path); | ||
| 40 | System::g_ctr_file_system.Mount("fs:", fs); | ||
| 41 | |||
| 42 | std::string final_name = "fs:/" + file + extension; | ||
| 43 | //File::IOFile f(filename, "rb"); | ||
| 44 | |||
| 45 | //if (f.IsOpen()) { | ||
| 33 | // TODO(ShizZy): read here to memory.... | 46 | // TODO(ShizZy): read here to memory.... |
| 34 | } | 47 | //} |
| 48 | ERROR_LOG(TIME, "Unimplemented function!"); | ||
| 35 | return true; | 49 | return true; |
| 36 | } | 50 | } |
| 37 | 51 | ||
| 38 | namespace Loader { | 52 | namespace Loader { |
| 39 | 53 | ||
| 54 | bool IsBootableDirectory() { | ||
| 55 | ERROR_LOG(TIME, "Unimplemented function!"); | ||
| 56 | return true; | ||
| 57 | } | ||
| 58 | |||
| 40 | /** | 59 | /** |
| 41 | * Identifies the type of a bootable file | 60 | * Identifies the type of a bootable file |
| 42 | * @param filename String filename of bootable file | 61 | * @param filename String filename of bootable file |
| @@ -51,9 +70,11 @@ FileType IdentifyFile(std::string &filename) { | |||
| 51 | std::string extension = filename.size() >= 5 ? filename.substr(filename.size() - 4) : ""; | 70 | std::string extension = filename.size() >= 5 ? filename.substr(filename.size() - 4) : ""; |
| 52 | 71 | ||
| 53 | if (File::IsDirectory(filename)) { | 72 | if (File::IsDirectory(filename)) { |
| 54 | return FILETYPE_NORMAL_DIRECTORY; | 73 | if (IsBootableDirectory()) { |
| 55 | } else if (!strcasecmp(extension.c_str(),".bin")) { | 74 | return FILETYPE_CTR_DIRECTORY; |
| 56 | return FILETYPE_3DS_BIN; | 75 | } else { |
| 76 | return FILETYPE_NORMAL_DIRECTORY; | ||
| 77 | } | ||
| 57 | } else if (!strcasecmp(extension.c_str(),".zip")) { | 78 | } else if (!strcasecmp(extension.c_str(),".zip")) { |
| 58 | return FILETYPE_ARCHIVE_ZIP; | 79 | return FILETYPE_ARCHIVE_ZIP; |
| 59 | } else if (!strcasecmp(extension.c_str(),".rar")) { | 80 | } else if (!strcasecmp(extension.c_str(),".rar")) { |
| @@ -77,10 +98,10 @@ bool LoadFile(std::string &filename, std::string *error_string) { | |||
| 77 | // Note that this can modify filename! | 98 | // Note that this can modify filename! |
| 78 | switch (IdentifyFile(filename)) { | 99 | switch (IdentifyFile(filename)) { |
| 79 | 100 | ||
| 80 | case FILETYPE_3DS_BIN: | 101 | case FILETYPE_CTR_DIRECTORY: |
| 81 | { | 102 | { |
| 82 | INFO_LOG(LOADER,"File is a BIN !"); | 103 | INFO_LOG(LOADER,"File is a BIN !"); |
| 83 | return _Load_BIN(filename); | 104 | return LoadDirectory(filename); |
| 84 | } | 105 | } |
| 85 | 106 | ||
| 86 | case FILETYPE_ERROR: | 107 | case FILETYPE_ERROR: |
diff --git a/src/core/src/loader.h b/src/core/src/loader.h index 4a0b3cf67..a11d8d596 100644 --- a/src/core/src/loader.h +++ b/src/core/src/loader.h | |||
| @@ -34,14 +34,12 @@ namespace Loader { | |||
| 34 | enum FileType { | 34 | enum FileType { |
| 35 | FILETYPE_ERROR, | 35 | FILETYPE_ERROR, |
| 36 | 36 | ||
| 37 | FILETYPE_3DS_CCI, | 37 | FILETYPE_CTR_CCI, |
| 38 | FILETYPE_3DS_CIA, | 38 | FILETYPE_CTR_CIA, |
| 39 | FILETYPE_3DS_CXI, | 39 | FILETYPE_CTR_CXI, |
| 40 | FILETYPE_CTR_ELF, | ||
| 40 | 41 | ||
| 41 | FILETYPE_3DS_BIN, | 42 | FILETYPE_CTR_DIRECTORY, |
| 42 | FILETYPE_3DS_ELF, | ||
| 43 | |||
| 44 | FILETYPE_CTR_DISC_DIRECTORY, | ||
| 45 | 43 | ||
| 46 | FILETYPE_UNKNOWN_BIN, | 44 | FILETYPE_UNKNOWN_BIN, |
| 47 | FILETYPE_UNKNOWN_ELF, | 45 | FILETYPE_UNKNOWN_ELF, |