mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #13049 from Leystryku/master
Fix Just Dance 2023 not booting
This commit is contained in:
		@@ -64,8 +64,8 @@ struct RawNACP {
 | 
				
			|||||||
    u64_le cache_storage_size;
 | 
					    u64_le cache_storage_size;
 | 
				
			||||||
    u64_le cache_storage_journal_size;
 | 
					    u64_le cache_storage_journal_size;
 | 
				
			||||||
    u64_le cache_storage_data_and_journal_max_size;
 | 
					    u64_le cache_storage_data_and_journal_max_size;
 | 
				
			||||||
    u64_le cache_storage_max_index;
 | 
					    u16_le cache_storage_max_index;
 | 
				
			||||||
    INSERT_PADDING_BYTES(0xE70);
 | 
					    INSERT_PADDING_BYTES(0xE76);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
static_assert(sizeof(RawNACP) == 0x4000, "RawNACP has incorrect size.");
 | 
					static_assert(sizeof(RawNACP) == 0x4000, "RawNACP has incorrect size.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
#include "core/hle/service/cmif_serialization.h"
 | 
					#include "core/hle/service/cmif_serialization.h"
 | 
				
			||||||
#include "core/hle/service/filesystem/filesystem.h"
 | 
					#include "core/hle/service/filesystem/filesystem.h"
 | 
				
			||||||
#include "core/hle/service/filesystem/save_data_controller.h"
 | 
					#include "core/hle/service/filesystem/save_data_controller.h"
 | 
				
			||||||
 | 
					#include "core/hle/service/glue/glue_manager.h"
 | 
				
			||||||
#include "core/hle/service/ns/ns.h"
 | 
					#include "core/hle/service/ns/ns.h"
 | 
				
			||||||
#include "core/hle/service/sm/sm.h"
 | 
					#include "core/hle/service/sm/sm.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,7 +41,7 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
 | 
				
			|||||||
        {26, D<&IApplicationFunctions::GetSaveDataSize>, "GetSaveDataSize"},
 | 
					        {26, D<&IApplicationFunctions::GetSaveDataSize>, "GetSaveDataSize"},
 | 
				
			||||||
        {27, D<&IApplicationFunctions::CreateCacheStorage>, "CreateCacheStorage"},
 | 
					        {27, D<&IApplicationFunctions::CreateCacheStorage>, "CreateCacheStorage"},
 | 
				
			||||||
        {28, D<&IApplicationFunctions::GetSaveDataSizeMax>, "GetSaveDataSizeMax"},
 | 
					        {28, D<&IApplicationFunctions::GetSaveDataSizeMax>, "GetSaveDataSizeMax"},
 | 
				
			||||||
        {29, nullptr, "GetCacheStorageMax"},
 | 
					        {29, D<&IApplicationFunctions::GetCacheStorageMax>, "GetCacheStorageMax"},
 | 
				
			||||||
        {30, D<&IApplicationFunctions::BeginBlockingHomeButtonShortAndLongPressed>, "BeginBlockingHomeButtonShortAndLongPressed"},
 | 
					        {30, D<&IApplicationFunctions::BeginBlockingHomeButtonShortAndLongPressed>, "BeginBlockingHomeButtonShortAndLongPressed"},
 | 
				
			||||||
        {31, D<&IApplicationFunctions::EndBlockingHomeButtonShortAndLongPressed>, "EndBlockingHomeButtonShortAndLongPressed"},
 | 
					        {31, D<&IApplicationFunctions::EndBlockingHomeButtonShortAndLongPressed>, "EndBlockingHomeButtonShortAndLongPressed"},
 | 
				
			||||||
        {32, D<&IApplicationFunctions::BeginBlockingHomeButton>, "BeginBlockingHomeButton"},
 | 
					        {32, D<&IApplicationFunctions::BeginBlockingHomeButton>, "BeginBlockingHomeButton"},
 | 
				
			||||||
@@ -267,6 +268,22 @@ Result IApplicationFunctions::GetSaveDataSizeMax(Out<u64> out_max_normal_size,
 | 
				
			|||||||
    R_SUCCEED();
 | 
					    R_SUCCEED();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Result IApplicationFunctions::GetCacheStorageMax(Out<u32> out_cache_storage_index_max,
 | 
				
			||||||
 | 
					                                                 Out<u64> out_max_journal_size) {
 | 
				
			||||||
 | 
					    LOG_DEBUG(Service_AM, "called");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    std::vector<u8> nacp;
 | 
				
			||||||
 | 
					    R_TRY(system.GetARPManager().GetControlProperty(&nacp, m_applet->program_id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto raw_nacp = std::make_unique<FileSys::RawNACP>();
 | 
				
			||||||
 | 
					    std::memcpy(raw_nacp.get(), nacp.data(), std::min(sizeof(*raw_nacp), nacp.size()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *out_cache_storage_index_max = static_cast<u32>(raw_nacp->cache_storage_max_index);
 | 
				
			||||||
 | 
					    *out_max_journal_size = static_cast<u64>(raw_nacp->cache_storage_data_and_journal_max_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    R_SUCCEED();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Result IApplicationFunctions::BeginBlockingHomeButtonShortAndLongPressed(s64 unused) {
 | 
					Result IApplicationFunctions::BeginBlockingHomeButtonShortAndLongPressed(s64 unused) {
 | 
				
			||||||
    LOG_WARNING(Service_AM, "(STUBBED) called");
 | 
					    LOG_WARNING(Service_AM, "(STUBBED) called");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@ private:
 | 
				
			|||||||
    Result CreateCacheStorage(Out<u32> out_target_media, Out<u64> out_required_size, u16 index,
 | 
					    Result CreateCacheStorage(Out<u32> out_target_media, Out<u64> out_required_size, u16 index,
 | 
				
			||||||
                              u64 normal_size, u64 journal_size);
 | 
					                              u64 normal_size, u64 journal_size);
 | 
				
			||||||
    Result GetSaveDataSizeMax(Out<u64> out_max_normal_size, Out<u64> out_max_journal_size);
 | 
					    Result GetSaveDataSizeMax(Out<u64> 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 BeginBlockingHomeButtonShortAndLongPressed(s64 unused);
 | 
				
			||||||
    Result EndBlockingHomeButtonShortAndLongPressed();
 | 
					    Result EndBlockingHomeButtonShortAndLongPressed();
 | 
				
			||||||
    Result BeginBlockingHomeButton(s64 timeout_ns);
 | 
					    Result BeginBlockingHomeButton(s64 timeout_ns);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -336,7 +336,7 @@ FSP_SRV::FSP_SRV(Core::System& system_)
 | 
				
			|||||||
        {1012, nullptr, "GetFsStackUsage"},
 | 
					        {1012, nullptr, "GetFsStackUsage"},
 | 
				
			||||||
        {1013, nullptr, "UnsetSaveDataRootPath"},
 | 
					        {1013, nullptr, "UnsetSaveDataRootPath"},
 | 
				
			||||||
        {1014, nullptr, "OutputMultiProgramTagAccessLog"},
 | 
					        {1014, nullptr, "OutputMultiProgramTagAccessLog"},
 | 
				
			||||||
        {1016, nullptr, "FlushAccessLogOnSdCard"},
 | 
					        {1016, &FSP_SRV::FlushAccessLogOnSdCard, "FlushAccessLogOnSdCard"},
 | 
				
			||||||
        {1017, nullptr, "OutputApplicationInfoAccessLog"},
 | 
					        {1017, nullptr, "OutputApplicationInfoAccessLog"},
 | 
				
			||||||
        {1018, nullptr, "SetDebugOption"},
 | 
					        {1018, nullptr, "SetDebugOption"},
 | 
				
			||||||
        {1019, nullptr, "UnsetDebugOption"},
 | 
					        {1019, nullptr, "UnsetDebugOption"},
 | 
				
			||||||
@@ -706,6 +706,13 @@ void FSP_SRV::GetProgramIndexForAccessLog(HLERequestContext& ctx) {
 | 
				
			|||||||
    rb.Push(access_log_program_index);
 | 
					    rb.Push(access_log_program_index);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FSP_SRV::FlushAccessLogOnSdCard(HLERequestContext& ctx) {
 | 
				
			||||||
 | 
					    LOG_DEBUG(Service_FS, "(STUBBED) called");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    IPC::ResponseBuilder rb{ctx, 2};
 | 
				
			||||||
 | 
					    rb.Push(ResultSuccess);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FSP_SRV::GetCacheStorageSize(HLERequestContext& ctx) {
 | 
					void FSP_SRV::GetCacheStorageSize(HLERequestContext& ctx) {
 | 
				
			||||||
    IPC::RequestParser rp{ctx};
 | 
					    IPC::RequestParser rp{ctx};
 | 
				
			||||||
    const auto index{rp.Pop<s32>()};
 | 
					    const auto index{rp.Pop<s32>()};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,6 +58,7 @@ private:
 | 
				
			|||||||
    void SetGlobalAccessLogMode(HLERequestContext& ctx);
 | 
					    void SetGlobalAccessLogMode(HLERequestContext& ctx);
 | 
				
			||||||
    void GetGlobalAccessLogMode(HLERequestContext& ctx);
 | 
					    void GetGlobalAccessLogMode(HLERequestContext& ctx);
 | 
				
			||||||
    void OutputAccessLogToSdCard(HLERequestContext& ctx);
 | 
					    void OutputAccessLogToSdCard(HLERequestContext& ctx);
 | 
				
			||||||
 | 
					    void FlushAccessLogOnSdCard(HLERequestContext& ctx);
 | 
				
			||||||
    void GetProgramIndexForAccessLog(HLERequestContext& ctx);
 | 
					    void GetProgramIndexForAccessLog(HLERequestContext& ctx);
 | 
				
			||||||
    void OpenMultiCommitManager(HLERequestContext& ctx);
 | 
					    void OpenMultiCommitManager(HLERequestContext& ctx);
 | 
				
			||||||
    void GetCacheStorageSize(HLERequestContext& ctx);
 | 
					    void GetCacheStorageSize(HLERequestContext& ctx);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user