diff options
-rw-r--r-- | src/core/hle/service/am/service/application_functions.cpp | 20 | ||||
-rw-r--r-- | src/core/hle/service/am/service/application_functions.h | 2 | ||||
-rw-r--r-- | src/core/hle/service/filesystem/fsp/fsp_srv.cpp | 2 |
3 files changed, 17 insertions, 7 deletions
diff --git a/src/core/hle/service/am/service/application_functions.cpp b/src/core/hle/service/am/service/application_functions.cpp index ac3b0066e..eee9428ce 100644 --- a/src/core/hle/service/am/service/application_functions.cpp +++ b/src/core/hle/service/am/service/application_functions.cpp @@ -17,6 +17,7 @@ #include "core/hle/service/filesystem/save_data_controller.h" #include "core/hle/service/ns/ns.h" #include "core/hle/service/sm/sm.h" +#include "core/hle/service/glue/glue_manager.h" namespace Service::AM { @@ -267,14 +268,23 @@ Result IApplicationFunctions::GetSaveDataSizeMax(Out<u64> out_max_normal_size, R_SUCCEED(); } -Result IApplicationFunctions::GetCacheStorageMax(Out<u32> out_max_normal_size, +Result IApplicationFunctions::GetCacheStorageMax(Out<u32> out_cache_storage_index_max, Out<u64> out_max_journal_size) { - LOG_WARNING(Service_AM, "(STUBBED) called"); + LOG_DEBUG(Service_AM, "called"); - *out_max_normal_size = 0xFFFFFF; - *out_max_journal_size = 0xFFFFFF; + const auto title_id = m_applet->program_id; - R_SUCCEED(); + std::vector<u8> nacp; + const auto result = system.GetARPManager().GetControlProperty(&nacp, title_id); + + if (R_SUCCEEDED(result)) { + const auto rawnacp = reinterpret_cast<FileSys::RawNACP*>(nacp.data()); + + *out_cache_storage_index_max = static_cast<u32>(rawnacp->cache_storage_max_index); + *out_max_journal_size = static_cast<u64>(rawnacp->cache_storage_data_and_journal_max_size); + } + + R_SUCCEED(); } Result IApplicationFunctions::BeginBlockingHomeButtonShortAndLongPressed(s64 unused) { diff --git a/src/core/hle/service/am/service/application_functions.h b/src/core/hle/service/am/service/application_functions.h index c86f0d8ac..10025a152 100644 --- a/src/core/hle/service/am/service/application_functions.h +++ b/src/core/hle/service/am/service/application_functions.h @@ -40,7 +40,7 @@ private: Result CreateCacheStorage(Out<u32> out_target_media, Out<u64> out_required_size, u16 index, u64 normal_size, u64 journal_size); Result GetSaveDataSizeMax(Out<u64> out_max_normal_size, Out<u64> out_max_journal_size); - Result GetCacheStorageMax(Out<u32> out_max_normal_size, Out<u64> out_max_journal_size); + Result GetCacheStorageMax(Out<u32> out_cache_storage_index_max, Out<u64> out_max_journal_size); Result BeginBlockingHomeButtonShortAndLongPressed(s64 unused); Result EndBlockingHomeButtonShortAndLongPressed(); Result BeginBlockingHomeButton(s64 timeout_ns); diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index e1238527e..2d49f30c8 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -762,4 +762,4 @@ void FSP_SRV::OpenMultiCommitManager(HLERequestContext& ctx) { rb.PushIpcInterface<IMultiCommitManager>(std::make_shared<IMultiCommitManager>(system)); } -} // namespace Service::FileSystem
\ No newline at end of file +} // namespace Service::FileSystem |