aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar ShizZy <shizzy@6bit.net>2013-10-01 19:09:49 -0400
committerGravatar ShizZy <shizzy@6bit.net>2013-10-01 19:09:49 -0400
commit4c24ea3d88875aff4be4eb128b043f1eaf55d5b4 (patch)
treedecdcfe879edf15ecd4b81aec42e4cbd7878f91b /src/core
parent539bf8bc86e03ca26f290ff7e766f835c0473a5f (diff)
added an early function for booting from a directory
Diffstat (limited to 'src/core')
-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 44cb92a2..5b746b7e 100644
--- a/src/core/src/loader.cpp
+++ b/src/core/src/loader.cpp
@@ -24,19 +24,38 @@
#include "file_util.h"
#include "loader.h"
+#include "system.h"
+#include "file_sys/directory_file_system.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
-bool _Load_BIN(std::string &filename) {
- File::IOFile f(filename, "rb");
- if (f.IsOpen()) {
+bool LoadDirectory(std::string &filename) {
+ std::string full_path = filename;
+ std::string path, file, extension;
+ SplitPath(ReplaceAll(full_path, "\\", "/"), &path, &file, &extension);
+#if EMU_PLATFORM == PLATFORM_WINDOWS
+ path = ReplaceAll(path, "/", "\\");
+#endif
+ DirectoryFileSystem *fs = new DirectoryFileSystem(&System::g_ctr_file_system, path);
+ System::g_ctr_file_system.Mount("fs:", fs);
+
+ std::string final_name = "fs:/" + file + extension;
+ //File::IOFile f(filename, "rb");
+
+ //if (f.IsOpen()) {
// TODO(ShizZy): read here to memory....
- }
+ //}
+ ERROR_LOG(TIME, "Unimplemented function!");
return true;
}
namespace Loader {
+bool IsBootableDirectory() {
+ ERROR_LOG(TIME, "Unimplemented function!");
+ return true;
+}
+
/**
* Identifies the type of a bootable file
* @param filename String filename of bootable file
@@ -51,9 +70,11 @@ FileType IdentifyFile(std::string &filename) {
std::string extension = filename.size() >= 5 ? filename.substr(filename.size() - 4) : "";
if (File::IsDirectory(filename)) {
- return FILETYPE_NORMAL_DIRECTORY;
- } else if (!strcasecmp(extension.c_str(),".bin")) {
- return FILETYPE_3DS_BIN;
+ if (IsBootableDirectory()) {
+ return FILETYPE_CTR_DIRECTORY;
+ } else {
+ return FILETYPE_NORMAL_DIRECTORY;
+ }
} else if (!strcasecmp(extension.c_str(),".zip")) {
return FILETYPE_ARCHIVE_ZIP;
} else if (!strcasecmp(extension.c_str(),".rar")) {
@@ -77,10 +98,10 @@ bool LoadFile(std::string &filename, std::string *error_string) {
// Note that this can modify filename!
switch (IdentifyFile(filename)) {
- case FILETYPE_3DS_BIN:
+ case FILETYPE_CTR_DIRECTORY:
{
INFO_LOG(LOADER,"File is a BIN !");
- return _Load_BIN(filename);
+ return LoadDirectory(filename);
}
case FILETYPE_ERROR:
diff --git a/src/core/src/loader.h b/src/core/src/loader.h
index 4a0b3cf6..a11d8d59 100644
--- a/src/core/src/loader.h
+++ b/src/core/src/loader.h
@@ -34,14 +34,12 @@ namespace Loader {
enum FileType {
FILETYPE_ERROR,
- FILETYPE_3DS_CCI,
- FILETYPE_3DS_CIA,
- FILETYPE_3DS_CXI,
+ FILETYPE_CTR_CCI,
+ FILETYPE_CTR_CIA,
+ FILETYPE_CTR_CXI,
+ FILETYPE_CTR_ELF,
- FILETYPE_3DS_BIN,
- FILETYPE_3DS_ELF,
-
- FILETYPE_CTR_DISC_DIRECTORY,
+ FILETYPE_CTR_DIRECTORY,
FILETYPE_UNKNOWN_BIN,
FILETYPE_UNKNOWN_ELF,