summaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 9ab174de2..f22244cf7 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -14,8 +14,13 @@
14#include "core/core_cpu.h" 14#include "core/core_cpu.h"
15#include "core/core_timing.h" 15#include "core/core_timing.h"
16#include "core/cpu_core_manager.h" 16#include "core/cpu_core_manager.h"
17#include "core/file_sys/bis_factory.h"
18#include "core/file_sys/card_image.h"
17#include "core/file_sys/mode.h" 19#include "core/file_sys/mode.h"
18#include "core/file_sys/registered_cache.h" 20#include "core/file_sys/registered_cache.h"
21#include "core/file_sys/romfs_factory.h"
22#include "core/file_sys/savedata_factory.h"
23#include "core/file_sys/sdmc_factory.h"
19#include "core/file_sys/vfs_concat.h" 24#include "core/file_sys/vfs_concat.h"
20#include "core/file_sys/vfs_real.h" 25#include "core/file_sys/vfs_real.h"
21#include "core/gdbstub/gdbstub.h" 26#include "core/gdbstub/gdbstub.h"
@@ -27,6 +32,7 @@
27#include "core/hle/kernel/thread.h" 32#include "core/hle/kernel/thread.h"
28#include "core/hle/service/am/applets/applets.h" 33#include "core/hle/service/am/applets/applets.h"
29#include "core/hle/service/apm/controller.h" 34#include "core/hle/service/apm/controller.h"
35#include "core/hle/service/filesystem/filesystem.h"
30#include "core/hle/service/glue/manager.h" 36#include "core/hle/service/glue/manager.h"
31#include "core/hle/service/service.h" 37#include "core/hle/service/service.h"
32#include "core/hle/service/sm/sm.h" 38#include "core/hle/service/sm/sm.h"
@@ -202,6 +208,15 @@ struct System::Impl {
202 main_process->Run(load_parameters->main_thread_priority, 208 main_process->Run(load_parameters->main_thread_priority,
203 load_parameters->main_thread_stack_size); 209 load_parameters->main_thread_stack_size);
204 210
211 if (Settings::values.gamecard_inserted) {
212 if (Settings::values.gamecard_current_game) {
213 fs_controller.SetGameCard(GetGameFileFromPath(virtual_filesystem, filepath));
214 } else if (!Settings::values.gamecard_path.empty()) {
215 fs_controller.SetGameCard(
216 GetGameFileFromPath(virtual_filesystem, Settings::values.gamecard_path));
217 }
218 }
219
205 u64 title_id{0}; 220 u64 title_id{0};
206 if (app_loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) { 221 if (app_loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) {
207 LOG_ERROR(Core, "Failed to find title id for ROM (Error {})", 222 LOG_ERROR(Core, "Failed to find title id for ROM (Error {})",
@@ -304,6 +319,7 @@ struct System::Impl {
304 FileSys::VirtualFilesystem virtual_filesystem; 319 FileSys::VirtualFilesystem virtual_filesystem;
305 /// ContentProviderUnion instance 320 /// ContentProviderUnion instance
306 std::unique_ptr<FileSys::ContentProviderUnion> content_provider; 321 std::unique_ptr<FileSys::ContentProviderUnion> content_provider;
322 Service::FileSystem::FileSystemController fs_controller;
307 /// AppLoader used to load the current executing application 323 /// AppLoader used to load the current executing application
308 std::unique_ptr<Loader::AppLoader> app_loader; 324 std::unique_ptr<Loader::AppLoader> app_loader;
309 std::unique_ptr<VideoCore::RendererBase> renderer; 325 std::unique_ptr<VideoCore::RendererBase> renderer;
@@ -571,6 +587,14 @@ const FileSys::ContentProvider& System::GetContentProvider() const {
571 return *impl->content_provider; 587 return *impl->content_provider;
572} 588}
573 589
590Service::FileSystem::FileSystemController& System::GetFileSystemController() {
591 return impl->fs_controller;
592}
593
594const Service::FileSystem::FileSystemController& System::GetFileSystemController() const {
595 return impl->fs_controller;
596}
597
574void System::RegisterContentProvider(FileSys::ContentProviderUnionSlot slot, 598void System::RegisterContentProvider(FileSys::ContentProviderUnionSlot slot,
575 FileSys::ContentProvider* provider) { 599 FileSys::ContentProvider* provider) {
576 impl->content_provider->SetSlot(slot, provider); 600 impl->content_provider->SetSlot(slot, provider);