summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ShizZy2013-10-01 19:09:49 -0400
committerGravatar ShizZy2013-10-01 19:09:49 -0400
commit4c24ea3d88875aff4be4eb128b043f1eaf55d5b4 (patch)
treedecdcfe879edf15ecd4b81aec42e4cbd7878f91b /src
parentadded a message option to Core::Halt function (diff)
downloadyuzu-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.cpp39
-rw-r--r--src/core/src/loader.h12
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
30bool _Load_BIN(std::string &filename) { 32bool 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
38namespace Loader { 52namespace Loader {
39 53
54bool 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 {
34enum FileType { 34enum 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,