diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 9932853201..9b29a7773c 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -112,32 +112,32 @@ private: FunctionInfo{0, D<&IManagerForSystemService::CheckAvailability>, "CheckAvailability"}, FunctionInfo{1, D<&IManagerForSystemService::GetAccountId>, "GetAccountId"}, FunctionInfo{2, nullptr, "EnsureIdTokenCacheAsync"}, - FunctionInfo{3, D<&IManagerForSystemService::LoadIdTokenCacheDeprecated>, "LoadIdTokenCacheDeprecated"}, // 19.0.0+ - FunctionInfo{4, D<&IManagerForSystemService::LoadIdTokenCache>, "LoadIdTokenCache"}, // 19.0.0+ + FunctionInfo{3, D<&IManagerForSystemService::LoadIdTokenCacheDeprecated>, "LoadIdTokenCacheDeprecated", MakeVersionGate({19,0,0})}, + FunctionInfo{4, D<&IManagerForSystemService::LoadIdTokenCache>, "LoadIdTokenCache", MakeVersionGate({19,0,0})}, FunctionInfo{100, nullptr, "SetSystemProgramIdentification"}, - FunctionInfo{101, nullptr, "RefreshNotificationTokenAsync"}, // 7.0.0+ - FunctionInfo{110, nullptr, "GetServiceEntryRequirementCache"}, // 4.0.0+ - FunctionInfo{111, nullptr, "InvalidateServiceEntryRequirementCache"}, // 4.0.0+ - FunctionInfo{112, nullptr, "InvalidateTokenCache"}, // 4.0.0 - 6.2.0 - FunctionInfo{113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay"}, // 6.1.0+ + FunctionInfo{101, nullptr, "RefreshNotificationTokenAsync", MakeVersionGate({7,0,0})}, + FunctionInfo{110, nullptr, "GetServiceEntryRequirementCache", MakeVersionGate({4,0,0})}, + FunctionInfo{111, nullptr, "InvalidateServiceEntryRequirementCache", MakeVersionGate({4,0,0})}, + FunctionInfo{112, nullptr, "InvalidateTokenCache", MakeVersionGate({4,0,0}, {6,2,0})}, + FunctionInfo{113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay", MakeVersionGate({6,1,0})}, FunctionInfo{120, nullptr, "GetNintendoAccountId"}, - FunctionInfo{121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint"}, // 9.0.0+ + FunctionInfo{121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint", MakeVersionGate({9,0,0})}, FunctionInfo{130, nullptr, "GetNintendoAccountUserResourceCache"}, FunctionInfo{131, nullptr, "RefreshNintendoAccountUserResourceCacheAsync"}, FunctionInfo{132, nullptr, "RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed"}, - FunctionInfo{133, nullptr, "GetNintendoAccountVerificationUrlCache"}, // 9.0.0+ - FunctionInfo{134, nullptr, "RefreshNintendoAccountVerificationUrlCache"}, // 9.0.0+ - FunctionInfo{135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed"}, // 9.0.0+ - FunctionInfo{136, nullptr, "GetNintendoAccountUserResourceCache"}, // 19.0.0+ - FunctionInfo{140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+ - FunctionInfo{141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+ - FunctionInfo{142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+ - FunctionInfo{143, D<&IManagerForSystemService::GetNetworkServiceLicenseCacheEx>, "GetNetworkServiceLicenseCacheEx"}, // 15.0.0+ + FunctionInfo{133, nullptr, "GetNintendoAccountVerificationUrlCache", MakeVersionGate({9,0,0})}, + FunctionInfo{134, nullptr, "RefreshNintendoAccountVerificationUrlCache", MakeVersionGate({9,0,0})}, + FunctionInfo{135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed", MakeVersionGate({9,0,0})}, + FunctionInfo{136, nullptr, "GetNintendoAccountUserResourceCache", MakeVersionGate({19,0,0})}, + FunctionInfo{140, nullptr, "GetNetworkServiceLicenseCache", MakeVersionGate({5,0,0})}, + FunctionInfo{141, nullptr, "RefreshNetworkServiceLicenseCacheAsync", MakeVersionGate({5,0,0})}, + FunctionInfo{142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed", MakeVersionGate({5,0,0})}, + FunctionInfo{143, D<&IManagerForSystemService::GetNetworkServiceLicenseCacheEx>, "GetNetworkServiceLicenseCacheEx", MakeVersionGate({15,0,0})}, FunctionInfo{150, nullptr, "CreateAuthorizationRequest"}, FunctionInfo{160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, FunctionInfo{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, - FunctionInfo{170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ - FunctionInfo{180, nullptr, "GetRequestForNintendoAccountReauthentication"} // 18.0.0+ + FunctionInfo{170, nullptr, "CreateDeviceHistoryRequest", MakeVersionGate({17,0,0})}, + FunctionInfo{180, nullptr, "GetRequestForNintendoAccountReauthentication", MakeVersionGate({18,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -192,27 +192,27 @@ private: FunctionInfo{3, nullptr, "LoadIdTokenCache"}, FunctionInfo{100, nullptr, "SetSystemProgramIdentification"}, FunctionInfo{101, nullptr, "RefreshNotificationTokenAsync", MakeVersionGate({7,0,0})}, - FunctionInfo{110, nullptr, "GetServiceEntryRequirementCache"}, // 4.0.0+ - FunctionInfo{111, nullptr, "InvalidateServiceEntryRequirementCache"}, // 4.0.0+ - FunctionInfo{112, nullptr, "InvalidateTokenCache"}, // 4.0.0 - 6.2.0 - FunctionInfo{113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay"}, // 6.1.0+ + FunctionInfo{110, nullptr, "GetServiceEntryRequirementCache", MakeVersionGate({4,0,0})}, + FunctionInfo{111, nullptr, "InvalidateServiceEntryRequirementCache", MakeVersionGate({4,0,0})}, + FunctionInfo{112, nullptr, "InvalidateTokenCache", MakeVersionGate({4,0,0}, {6,2,0})}, + FunctionInfo{113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay", MakeVersionGate({6,1,0})}, FunctionInfo{120, nullptr, "GetNintendoAccountId"}, - FunctionInfo{121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint"}, // 9.0.0+ + FunctionInfo{121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint", MakeVersionGate({9,0,0})}, FunctionInfo{130, nullptr, "GetNintendoAccountUserResourceCache"}, FunctionInfo{131, nullptr, "RefreshNintendoAccountUserResourceCacheAsync"}, FunctionInfo{132, nullptr, "RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed"}, - FunctionInfo{133, nullptr, "GetNintendoAccountVerificationUrlCache"}, // 9.0.0+ - FunctionInfo{134, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsync"}, // 9.0.0+ - FunctionInfo{135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed"}, // 9.0.0+ - FunctionInfo{140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+ - FunctionInfo{141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+ - FunctionInfo{142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+ + FunctionInfo{133, nullptr, "GetNintendoAccountVerificationUrlCache", MakeVersionGate({9,0,0})}, + FunctionInfo{134, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsync", MakeVersionGate({9,0,0})}, + FunctionInfo{135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed", MakeVersionGate({9,0,0})}, + FunctionInfo{140, nullptr, "GetNetworkServiceLicenseCache", MakeVersionGate({5,0,0})}, + FunctionInfo{141, nullptr, "RefreshNetworkServiceLicenseCacheAsync", MakeVersionGate({5,0,0})}, + FunctionInfo{142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed", MakeVersionGate({5,0,0})}, FunctionInfo{143, nullptr, "GetNetworkServiceLicenseCacheEx"}, FunctionInfo{150, nullptr, "CreateAuthorizationRequest"}, FunctionInfo{160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, FunctionInfo{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, - FunctionInfo{170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ - FunctionInfo{180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+ + FunctionInfo{170, nullptr, "CreateDeviceHistoryRequest", MakeVersionGate({17,0,0})}, + FunctionInfo{180, nullptr, "GetRequestForNintendoAccountReauthentication", MakeVersionGate({18,0,0})}, FunctionInfo{200, nullptr, "IsRegistered"}, FunctionInfo{201, nullptr, "RegisterAsync"}, FunctionInfo{202, nullptr, "UnregisterAsync"}, @@ -225,15 +225,15 @@ private: FunctionInfo{252, nullptr, "ResumeProcedureToLinkWithNintendoAccount"}, FunctionInfo{255, nullptr, "CreateProcedureToUpdateLinkageStateOfNintendoAccount"}, FunctionInfo{256, nullptr, "ResumeProcedureToUpdateLinkageStateOfNintendoAccount"}, - FunctionInfo{260, nullptr, "CreateProcedureToLinkNnidWithNintendoAccount"}, // 3.0.0+ - FunctionInfo{261, nullptr, "ResumeProcedureToLinkNnidWithNintendoAccount"}, // 3.0.0+ + FunctionInfo{260, nullptr, "CreateProcedureToLinkNnidWithNintendoAccount", MakeVersionGate({3,0,0})}, + FunctionInfo{261, nullptr, "ResumeProcedureToLinkNnidWithNintendoAccount", MakeVersionGate({3,0,0})}, FunctionInfo{280, nullptr, "ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount"}, - FunctionInfo{290, nullptr, "GetRequestForNintendoAccountUserResourceView"}, // 8.0.0+ - FunctionInfo{300, nullptr, "TryRecoverNintendoAccountUserStateAsync"}, // 6.0.0+ - FunctionInfo{400, nullptr, "IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay"}, // 6.1.0+ - FunctionInfo{401, nullptr, "RefreshServiceEntryRequirementCacheForOnlinePlayAsync"}, // 6.1.0+ - FunctionInfo{900, nullptr, "GetAuthenticationInfoForWin"}, // 9.0.0+ - FunctionInfo{901, nullptr, "ImportAsyncForWin"}, // 9.0.0+ + FunctionInfo{290, nullptr, "GetRequestForNintendoAccountUserResourceView", MakeVersionGate({8,0,0})}, + FunctionInfo{300, nullptr, "TryRecoverNintendoAccountUserStateAsync", MakeVersionGate({6,0,0})}, + FunctionInfo{400, nullptr, "IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay", MakeVersionGate({6,1,0})}, + FunctionInfo{401, nullptr, "RefreshServiceEntryRequirementCacheForOnlinePlayAsync", MakeVersionGate({6,1,0})}, + FunctionInfo{900, nullptr, "GetAuthenticationInfoForWin", MakeVersionGate({9,0,0})}, + FunctionInfo{901, nullptr, "ImportAsyncForWin", MakeVersionGate({9,0,0})}, FunctionInfo{997, nullptr, "DebugUnlinkNintendoAccountAsync"}, FunctionInfo{998, nullptr, "DebugSetAvailabilityErrorDetail"} ); @@ -295,7 +295,7 @@ public: FunctionInfo{101, nullptr, "GetLinkedNintendoAccountId"}, FunctionInfo{102, nullptr, "GetNickname"}, FunctionInfo{103, nullptr, "GetProfileImage"}, - FunctionInfo{104, nullptr, "GetProfileLargeImage"} // 18.0.0+ + FunctionInfo{104, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -316,12 +316,12 @@ public: FunctionInfo{10, nullptr, "Suspend"}, FunctionInfo{100, nullptr, "GetRequestWithTheme"}, FunctionInfo{101, nullptr, "IsNetworkServiceAccountReplaced"}, - FunctionInfo{199, nullptr, "GetUrlForIntroductionOfExtraMembership"}, // 2.0.0 - 5.1.0 + FunctionInfo{199, nullptr, "GetUrlForIntroductionOfExtraMembership", MakeVersionGate({2,0,0}, {5,1,0})}, FunctionInfo{200, nullptr, "ApplyAsyncWithAuthorizedToken"}, - FunctionInfo{210, nullptr, "IsProfileAvailable"}, // 17.0.0+ - FunctionInfo{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ - FunctionInfo{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ - FunctionInfo{230, nullptr, "RegisterUserWithLargeImageProfileAsync"} // 18.0.0+ + FunctionInfo{210, nullptr, "IsProfileAvailable", MakeVersionGate({17,0,0})}, + FunctionInfo{220, nullptr, "RegisterUserAsyncWithoutProfile", MakeVersionGate({17,0,0})}, + FunctionInfo{221, nullptr, "RegisterUserWithProfileAsync", MakeVersionGate({17,0,0})}, + FunctionInfo{230, nullptr, "RegisterUserWithLargeImageProfileAsync", MakeVersionGate({18,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -625,13 +625,13 @@ public: static constexpr auto functions = CreateStaticMap( FunctionInfo{0, nullptr, "GetSessionId"}, - FunctionInfo{11, nullptr, "Unknown"}, // 1.0.0 - 2.3.0 (the name is blank on Switchbrew) + FunctionInfo{11, nullptr, "Unknown", MakeVersionGate({1,0,0}, {2,3,0})}, // the name is blank on Switchbrew FunctionInfo{12, nullptr, "GetAccountId"}, FunctionInfo{13, nullptr, "GetLinkedNintendoAccountId"}, FunctionInfo{14, nullptr, "GetNickname"}, FunctionInfo{15, nullptr, "GetProfileImage"}, - FunctionInfo{16, nullptr, "GetProfileLargeImage"}, // 18.0.0+ - FunctionInfo{21, nullptr, "LoadIdTokenCache"} // 3.0.0+ + FunctionInfo{16, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})}, + FunctionInfo{21, nullptr, "LoadIdTokenCache", MakeVersionGate({3,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -751,7 +751,7 @@ private: FunctionInfo{3, &IManagerForApplication::LoadIdTokenCacheDeprecated, "LoadIdTokenCacheDeprecated"}, FunctionInfo{4, &IManagerForApplication::LoadIdTokenCache, "LoadIdTokenCache"}, FunctionInfo{130, &IManagerForApplication::GetNintendoAccountUserResourceCacheForApplication, "GetNintendoAccountUserResourceCacheForApplication"}, - FunctionInfo{136, &IManagerForApplication::GetNintendoAccountUserResourceCacheForApplication, "GetNintendoAccountUserResourceCache"}, // 19.0.0+ + FunctionInfo{136, &IManagerForApplication::GetNintendoAccountUserResourceCacheForApplication, "GetNintendoAccountUserResourceCache", MakeVersionGate({19,0,0})}, FunctionInfo{150, nullptr, "CreateAuthorizationRequest"}, FunctionInfo{160, &IManagerForApplication::StoreOpenContext, "StoreOpenContext"}, FunctionInfo{170, nullptr, "LoadNetworkServiceLicenseKindAsync"} @@ -796,15 +796,15 @@ public: FunctionInfo{101, nullptr, "GetLinkedNintendoAccountId"}, FunctionInfo{102, nullptr, "GetNickname"}, FunctionInfo{103, nullptr, "GetProfileImage"}, - FunctionInfo{104, nullptr, "GetProfileLargeImage"}, // 18.0.0+ + FunctionInfo{104, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})}, FunctionInfo{110, nullptr, "RegisterUserAsync"}, FunctionInfo{111, nullptr, "GetUid"}, - FunctionInfo{200, nullptr, "ApplyResponseForUserCreationAsync"}, // 17.0.0+ - FunctionInfo{205, nullptr, "SuspendAfterApplyResponse"}, // 17.0.0+ - FunctionInfo{210, nullptr, "IsProfileAvailable"}, // 17.0.0+ - FunctionInfo{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ - FunctionInfo{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ - FunctionInfo{230, nullptr, "RegisterUserWithLargeImageProfileAsync"} // 18.0.0+ + FunctionInfo{200, nullptr, "ApplyResponseForUserCreationAsync", MakeVersionGate({17,0,0})}, + FunctionInfo{205, nullptr, "SuspendAfterApplyResponse", MakeVersionGate({17,0,0})}, + FunctionInfo{210, nullptr, "IsProfileAvailable", MakeVersionGate({17,0,0})}, + FunctionInfo{220, nullptr, "RegisterUserAsyncWithoutProfile", MakeVersionGate({17,0,0})}, + FunctionInfo{221, nullptr, "RegisterUserWithProfileAsync", MakeVersionGate({17,0,0})}, + FunctionInfo{230, nullptr, "RegisterUserWithLargeImageProfileAsync", MakeVersionGate({18,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -1260,8 +1260,8 @@ public: FunctionInfo{0, nullptr, "EnsureCacheAsync"}, FunctionInfo{1, nullptr, "LoadCache"}, FunctionInfo{2, nullptr, "GetDeviceAccountId"}, - FunctionInfo{50, nullptr, "RegisterNotificationTokenAsync"}, // 1.0.0 - 6.2.0 - FunctionInfo{51, nullptr, "UnregisterNotificationTokenAsync"} // 1.0.0 - 6.2.0 + FunctionInfo{50, nullptr, "RegisterNotificationTokenAsync", MakeVersionGate({1,0,0}, {6,2,0})}, + FunctionInfo{51, nullptr, "UnregisterNotificationTokenAsync", MakeVersionGate({1,0,0}, {6,2,0})} ); }; @@ -1286,7 +1286,7 @@ public: FunctionInfo{6, nullptr, "GetProfileDigest"}, FunctionInfo{50, &ACC_SU::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, FunctionInfo{51, &ACC_SU::TrySelectUserWithoutInteractionDeprecated, "TrySelectUserWithoutInteractionDeprecated"}, - FunctionInfo{52, &ACC_SU::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, // 19.0.0+ + FunctionInfo{52, &ACC_SU::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction", MakeVersionGate({19,0,0})}, FunctionInfo{60, &ACC_SU::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, FunctionInfo{99, nullptr, "DebugActivateOpenContextRetention"}, FunctionInfo{100, nullptr, "GetUserRegistrationNotifier"}, @@ -1323,15 +1323,15 @@ public: FunctionInfo{290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, FunctionInfo{291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, FunctionInfo{299, nullptr, "SuspendBackgroundDaemon"}, - FunctionInfo{400, nullptr, "SetPinCode"}, // 18.0.0+ - FunctionInfo{401, &ACC_SU::GetPinCodeLength, "GetPinCodeLength"}, // 18.0.0+ - FunctionInfo{402, nullptr, "GetPinCode"}, // 18.0.0+ + FunctionInfo{400, nullptr, "SetPinCode", MakeVersionGate({18,0,0})}, + FunctionInfo{401, &ACC_SU::GetPinCodeLength, "GetPinCodeLength", MakeVersionGate({18,0,0})}, + FunctionInfo{402, nullptr, "GetPinCode", MakeVersionGate({18,0,0})}, FunctionInfo{403, nullptr, "GetPinCodeParity"}, FunctionInfo{404, nullptr, "VerifyPinCode"}, FunctionInfo{405, nullptr, "IsPinCodeVerificationForbidden"}, - FunctionInfo{410, nullptr, "GetPinCodeErrorCount"}, // 18.0.0+ - FunctionInfo{411, nullptr, "ResetPinCodeErrorCount"}, // 18.0.0+ - FunctionInfo{412, nullptr, "IncrementPinCodeErrorCount"}, // 18.0.0+ + FunctionInfo{410, nullptr, "GetPinCodeErrorCount", MakeVersionGate({18,0,0})}, + FunctionInfo{411, nullptr, "ResetPinCodeErrorCount", MakeVersionGate({18,0,0})}, + FunctionInfo{412, nullptr, "IncrementPinCodeErrorCount", MakeVersionGate({18,0,0})}, FunctionInfo{900, nullptr, "SetUserUnqualifiedForDebug"}, FunctionInfo{901, nullptr, "UnsetUserUnqualifiedForDebug"}, FunctionInfo{902, nullptr, "ListUsersUnqualifiedForDebug"}, @@ -1359,24 +1359,24 @@ public: FunctionInfo{3, &ACC_U0::ListOpenUsers, "ListOpenUsers"}, FunctionInfo{4, &ACC_U0::GetLastOpenedUser, "GetLastOpenedUser"}, FunctionInfo{5, &ACC_U0::GetProfile, "GetProfile"}, - FunctionInfo{6, nullptr, "GetProfileDigest"}, // 3.0.0+ + FunctionInfo{6, nullptr, "GetProfileDigest", MakeVersionGate({3,0,0})}, FunctionInfo{50, &ACC_U0::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, FunctionInfo{51, &ACC_U0::TrySelectUserWithoutInteractionDeprecated, "TrySelectUserWithoutInteractionDeprecated"}, FunctionInfo{52, &ACC_U0::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, - FunctionInfo{60, &ACC_U0::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, // 5.0.0 - 5.1.0 - FunctionInfo{99, nullptr, "DebugActivateOpenContextRetention"}, // 6.0.0+ + FunctionInfo{60, &ACC_U0::ListOpenContextStoredUsers, "ListOpenContextStoredUsers", MakeVersionGate({5,0,0}, {5,1,0})}, + FunctionInfo{99, nullptr, "DebugActivateOpenContextRetention", MakeVersionGate({6,0,0})}, FunctionInfo{100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"}, FunctionInfo{101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, FunctionInfo{102, nullptr, "AuthenticateApplicationAsync"}, - FunctionInfo{103, nullptr, "CheckNetworkServiceAvailabilityAsync"}, // 4.0.0+ + FunctionInfo{103, nullptr, "CheckNetworkServiceAvailabilityAsync", MakeVersionGate({4,0,0})}, FunctionInfo{110, &ACC_U0::StoreSaveDataThumbnailApplication, "StoreSaveDataThumbnail"}, FunctionInfo{111, nullptr, "ClearSaveDataThumbnail"}, FunctionInfo{120, nullptr, "CreateGuestLoginRequest"}, - FunctionInfo{130, nullptr, "LoadOpenContext"}, // 5.0.0+ - FunctionInfo{131, &ACC_U0::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, // 6.0.0+ - FunctionInfo{140, &ACC_U0::InitializeApplicationInfoRestricted, "InitializeApplicationInfoRestricted"}, // 6.0.0+ - FunctionInfo{141, &ACC_U0::ListQualifiedUsers, "ListQualifiedUsers"}, // 6.0.0+ - FunctionInfo{150, &ACC_U0::IsUserAccountSwitchLocked, "IsUserAccountSwitchLocked"}, // 6.0.0+ + FunctionInfo{130, nullptr, "LoadOpenContext", MakeVersionGate({5,0,0})}, + FunctionInfo{131, &ACC_U0::ListOpenContextStoredUsers, "ListOpenContextStoredUsers", MakeVersionGate({6,0,0})}, + FunctionInfo{140, &ACC_U0::InitializeApplicationInfoRestricted, "InitializeApplicationInfoRestricted", MakeVersionGate({6,0,0})}, + FunctionInfo{141, &ACC_U0::ListQualifiedUsers, "ListQualifiedUsers", MakeVersionGate({6,0,0})}, + FunctionInfo{150, &ACC_U0::IsUserAccountSwitchLocked, "IsUserAccountSwitchLocked", MakeVersionGate({6,0,0})}, FunctionInfo{160, &ACC_U0::InitializeApplicationInfoV2, "InitializeApplicationInfoV2"} ); }; @@ -1423,8 +1423,8 @@ public: FunctionInfo{152, nullptr, "LoadSignedDeviceIdentifierCacheForNintendoAccount"}, FunctionInfo{190, nullptr, "GetUserLastOpenedApplication"}, FunctionInfo{191, nullptr, "ActivateOpenContextHolder"}, - FunctionInfo{401, &ACC_U1::GetPinCodeLength, "GetPinCodeLength"}, // 18.0.0+ - FunctionInfo{402, nullptr, "GetPinCode"}, // 18.0.0+ + FunctionInfo{401, &ACC_U1::GetPinCodeLength, "GetPinCodeLength", MakeVersionGate({18,0,0})}, + FunctionInfo{402, nullptr, "GetPinCode", MakeVersionGate({18,0,0})}, FunctionInfo{997, nullptr, "DebugInvalidateTokenCacheForUser"}, FunctionInfo{998, nullptr, "DebugSetUserStateClose"}, FunctionInfo{999, nullptr, "DebugSetUserStateOpen"} diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index d0b12bb316..472be8f0f0 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -300,10 +300,10 @@ public: FunctionInfo{91, nullptr, "OpenNamedChannelAsChild"}, FunctionInfo{100, nullptr, "SetApplicationCoreUsageMode"}, FunctionInfo{300, D<&IAppletCommonFunctions::GetCurrentApplicationId>, "GetCurrentApplicationId"}, - FunctionInfo{310, nullptr, "IsSystemAppletHomeMenu"}, //19.0.0+ - FunctionInfo{320, D<&IAppletCommonFunctions::SetGpuTimeSliceBoost>, "SetGpuTimeSliceBoost"}, //19.0.0+ - FunctionInfo{321, nullptr, "SetGpuTimeSliceBoostDueToApplication"}, //19.0.0+ - FunctionInfo{350, D<&IAppletCommonFunctions::Unknown350>, "Unknown350"} //20.0.0+ + FunctionInfo{310, nullptr, "IsSystemAppletHomeMenu", MakeVersionGate({19,0,0})}, + FunctionInfo{320, D<&IAppletCommonFunctions::SetGpuTimeSliceBoost>, "SetGpuTimeSliceBoost", MakeVersionGate({19,0,0})}, + FunctionInfo{321, nullptr, "SetGpuTimeSliceBoostDueToApplication", MakeVersionGate({19,0,0})}, + FunctionInfo{350, D<&IAppletCommonFunctions::Unknown350>, "Unknown350", MakeVersionGate({20,0,0})} ); const std::shared_ptr applet; }; @@ -1331,8 +1331,8 @@ public: FunctionInfo{350, D<&IAllSystemAppletProxiesService::OpenSystemApplicationProxy>, "OpenSystemApplicationProxy"}, FunctionInfo{400, nullptr, "CreateSelfLibraryAppletCreatorForDevelop"}, FunctionInfo{410, nullptr, "GetSystemAppletControllerForDebug"}, - FunctionInfo{450, D<&IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions>, "GetSystemProcessCommonFunctions"}, // 19.0.0+ - FunctionInfo{460, D<&IAllSystemAppletProxiesService::GetAppletAlternativeFunctions>, "GetAppletAlternativeFunctions"}, // 20.0.0+ + FunctionInfo{450, D<&IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions>, "GetSystemProcessCommonFunctions", MakeVersionGate({19,0,0})}, + FunctionInfo{460, D<&IAllSystemAppletProxiesService::GetAppletAlternativeFunctions>, "GetAppletAlternativeFunctions", MakeVersionGate({20,0,0})}, FunctionInfo{1000, nullptr, "GetDebugFunctions"} ); WindowSystem& m_window_system; diff --git a/src/core/hle/service/am/service/audio_controller.cpp b/src/core/hle/service/am/service/audio_controller.cpp index 994406af32..2c8494e056 100644 --- a/src/core/hle/service/am/service/audio_controller.cpp +++ b/src/core/hle/service/am/service/audio_controller.cpp @@ -16,7 +16,7 @@ std::optional IAudioController::FindRequ FunctionInfo{2, D<&IAudioController::GetLibraryAppletExpectedMasterVolume>, "GetLibraryAppletExpectedMasterVolume"}, FunctionInfo{3, D<&IAudioController::ChangeMainAppletMasterVolume>, "ChangeMainAppletMasterVolume"}, FunctionInfo{4, D<&IAudioController::SetTransparentVolumeRate>, "SetTransparentVolumeRate"}, - FunctionInfo{5, nullptr, "Unknown5"} //20.0.0+ + FunctionInfo{5, nullptr, "Unknown5", MakeVersionGate({20,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/am/service/common_state_getter.cpp b/src/core/hle/service/am/service/common_state_getter.cpp index e5b90d40c4..6a6a51f42e 100644 --- a/src/core/hle/service/am/service/common_state_getter.cpp +++ b/src/core/hle/service/am/service/common_state_getter.cpp @@ -33,20 +33,20 @@ std::optional ICommonStateGetter::FindRe FunctionInfo{11, D<&ICommonStateGetter::ReleaseSleepLock>, "ReleaseSleepLock"}, FunctionInfo{12, D<&ICommonStateGetter::ReleaseSleepLockTransiently>, "ReleaseSleepLockTransiently"}, FunctionInfo{13, D<&ICommonStateGetter::GetAcquiredSleepLockEvent>, "GetAcquiredSleepLockEvent"}, - FunctionInfo{14, nullptr, "GetWakeupCount"}, //11.0.0+ - FunctionInfo{15, nullptr, "Unknown15"}, //19.0.0+ + FunctionInfo{14, nullptr, "GetWakeupCount", MakeVersionGate({11,0,0})}, + FunctionInfo{15, nullptr, "Unknown15", MakeVersionGate({19,0,0})}, FunctionInfo{20, D<&ICommonStateGetter::PushToGeneralChannel>, "PushToGeneralChannel"}, FunctionInfo{30, D<&ICommonStateGetter::GetHomeButtonReaderLockAccessor>, "GetHomeButtonReaderLockAccessor"}, - FunctionInfo{31, D<&ICommonStateGetter::GetReaderLockAccessorEx>, "GetReaderLockAccessorEx"}, //2.0.0+ - FunctionInfo{32, D<&ICommonStateGetter::GetWriterLockAccessorEx>, "GetWriterLockAccessorEx"}, //7.0.0+ - FunctionInfo{40, nullptr, "GetCradleFwVersion"}, //2.0.0+ - FunctionInfo{50, D<&ICommonStateGetter::IsVrModeEnabled>, "IsVrModeEnabled"}, //3.0.0+ - FunctionInfo{51, D<&ICommonStateGetter::SetVrModeEnabled>, "SetVrModeEnabled"}, //3.0.0+ - FunctionInfo{52, D<&ICommonStateGetter::SetLcdBacklighOffEnabled>, "SetLcdBacklighOffEnabled"}, //4.0.0+ - FunctionInfo{53, D<&ICommonStateGetter::BeginVrModeEx>, "BeginVrModeEx"}, //7.0.0+ - FunctionInfo{54, D<&ICommonStateGetter::EndVrModeEx>, "EndVrModeEx"}, //7.0.0+ - FunctionInfo{55, D<&ICommonStateGetter::IsInControllerFirmwareUpdateSection>, "IsInControllerFirmwareUpdateSection"}, //3.0.0+ - FunctionInfo{59, nullptr, "SetVrPositionForDebug"}, //1.0.0+ + FunctionInfo{31, D<&ICommonStateGetter::GetReaderLockAccessorEx>, "GetReaderLockAccessorEx", MakeVersionGate({2,0,0})}, + FunctionInfo{32, D<&ICommonStateGetter::GetWriterLockAccessorEx>, "GetWriterLockAccessorEx", MakeVersionGate({7,0,0})}, + FunctionInfo{40, nullptr, "GetCradleFwVersion", MakeVersionGate({2,0,0})}, + FunctionInfo{50, D<&ICommonStateGetter::IsVrModeEnabled>, "IsVrModeEnabled", MakeVersionGate({3,0,0})}, + FunctionInfo{51, D<&ICommonStateGetter::SetVrModeEnabled>, "SetVrModeEnabled", MakeVersionGate({3,0,0})}, + FunctionInfo{52, D<&ICommonStateGetter::SetLcdBacklighOffEnabled>, "SetLcdBacklighOffEnabled", MakeVersionGate({4,0,0})}, + FunctionInfo{53, D<&ICommonStateGetter::BeginVrModeEx>, "BeginVrModeEx", MakeVersionGate({7,0,0})}, + FunctionInfo{54, D<&ICommonStateGetter::EndVrModeEx>, "EndVrModeEx", MakeVersionGate({7,0,0})}, + FunctionInfo{55, D<&ICommonStateGetter::IsInControllerFirmwareUpdateSection>, "IsInControllerFirmwareUpdateSection", MakeVersionGate({3,0,0})}, + FunctionInfo{59, nullptr, "SetVrPositionForDebug", MakeVersionGate({1,0,0})}, FunctionInfo{60, D<&ICommonStateGetter::GetDefaultDisplayResolution>, "GetDefaultDisplayResolution"}, FunctionInfo{61, D<&ICommonStateGetter::GetDefaultDisplayResolutionChangeEvent>, "GetDefaultDisplayResolutionChangeEvent"}, FunctionInfo{62, D<&ICommonStateGetter::GetHdcpAuthenticationState>, "GetHdcpAuthenticationState"}, @@ -61,8 +61,8 @@ std::optional ICommonStateGetter::FindRe FunctionInfo{91, nullptr, "GetCurrentPerformanceConfiguration"}, FunctionInfo{100, D<&ICommonStateGetter::SetHandlingHomeButtonShortPressedEnabled>, "SetHandlingHomeButtonShortPressedEnabled"}, FunctionInfo{110, nullptr, "OpenMyGpuErrorHandler"}, - FunctionInfo{120, D<&ICommonStateGetter::GetAppletLaunchedHistory>, "GetAppletLaunchedHistory"}, //13.0.0+ - FunctionInfo{130, D<&ICommonStateGetter::EnableStartupLogoDisappearedMessage>, "EnableStartupLogoDisappearedMessage"}, //21.0.0+ + FunctionInfo{120, D<&ICommonStateGetter::GetAppletLaunchedHistory>, "GetAppletLaunchedHistory", MakeVersionGate({13,0,0})}, + FunctionInfo{130, D<&ICommonStateGetter::EnableStartupLogoDisappearedMessage>, "EnableStartupLogoDisappearedMessage", MakeVersionGate({21,0,0})}, FunctionInfo{200, D<&ICommonStateGetter::GetOperationModeSystemInfo>, "GetOperationModeSystemInfo"}, FunctionInfo{300, D<&ICommonStateGetter::GetSettingsPlatformRegion>, "GetSettingsPlatformRegion"}, FunctionInfo{400, nullptr, "ActivateMigrationService"}, @@ -71,17 +71,17 @@ std::optional ICommonStateGetter::FindRe FunctionInfo{501, nullptr, "SuppressDisablingSleepTemporarily"}, FunctionInfo{502, nullptr, "IsSleepEnabled"}, FunctionInfo{503, nullptr, "IsDisablingSleepSuppressed"}, - FunctionInfo{600, nullptr, "SetHidInputMagnificationForApplication"}, //20.0.0+ - FunctionInfo{610, D<&ICommonStateGetter::Unknown610>, "Unknown610"}, //21.0.0+ - FunctionInfo{611, D<&ICommonStateGetter::Unknown611>, "Unknown611"}, //22.0.0+ - FunctionInfo{900, D<&ICommonStateGetter::SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled>, "SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled"}, //11.0.0+ - FunctionInfo{910, nullptr, "GetLaunchRequiredTick"}, //17.0.0+ - FunctionInfo{1000, D<&ICommonStateGetter::BeginVrMode3d>, "BeginVrMode3d"}, //19.0.0+ - FunctionInfo{1001, D<&ICommonStateGetter::EndVrMode3d>, "EndVrMode3d"}, //19.0.0+ - FunctionInfo{1002, D<&ICommonStateGetter::IsVrModeEnabled3d>, "IsVrModeEnabled3d"}, //19.0.0+ - FunctionInfo{1003, D<&ICommonStateGetter::GetVrLaboGoggleViewport>, "GetVrLaboGoggleViewport"}, //21.0.0+ - FunctionInfo{1004, D<&ICommonStateGetter::GetPanelPhysicalSizeForSpecificTitle>, "GetPanelPhysicalSizeForSpecificTitle"}, //21.0.0+ - FunctionInfo{1005, D<&ICommonStateGetter::GetPanelResolutionForSpecificTitle>, "GetPanelResolutionForSpecificTitle"} //21.0.0+ + FunctionInfo{600, nullptr, "SetHidInputMagnificationForApplication", MakeVersionGate({20,0,0})}, + FunctionInfo{610, D<&ICommonStateGetter::Unknown610>, "Unknown610", MakeVersionGate({21,0,0})}, + FunctionInfo{611, D<&ICommonStateGetter::Unknown611>, "Unknown611", MakeVersionGate({22,0,0})}, + FunctionInfo{900, D<&ICommonStateGetter::SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled>, "SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled", MakeVersionGate({11,0,0})}, + FunctionInfo{910, nullptr, "GetLaunchRequiredTick", MakeVersionGate({17,0,0})}, + FunctionInfo{1000, D<&ICommonStateGetter::BeginVrMode3d>, "BeginVrMode3d", MakeVersionGate({19,0,0})}, + FunctionInfo{1001, D<&ICommonStateGetter::EndVrMode3d>, "EndVrMode3d", MakeVersionGate({19,0,0})}, + FunctionInfo{1002, D<&ICommonStateGetter::IsVrModeEnabled3d>, "IsVrModeEnabled3d", MakeVersionGate({19,0,0})}, + FunctionInfo{1003, D<&ICommonStateGetter::GetVrLaboGoggleViewport>, "GetVrLaboGoggleViewport", MakeVersionGate({21,0,0})}, + FunctionInfo{1004, D<&ICommonStateGetter::GetPanelPhysicalSizeForSpecificTitle>, "GetPanelPhysicalSizeForSpecificTitle", MakeVersionGate({21,0,0})}, + FunctionInfo{1005, D<&ICommonStateGetter::GetPanelResolutionForSpecificTitle>, "GetPanelResolutionForSpecificTitle", MakeVersionGate({21,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/am/service/library_applet_accessor.cpp b/src/core/hle/service/am/service/library_applet_accessor.cpp index 5d74df7430..c5386fb1a1 100644 --- a/src/core/hle/service/am/service/library_applet_accessor.cpp +++ b/src/core/hle/service/am/service/library_applet_accessor.cpp @@ -54,10 +54,10 @@ static void ReplaceEmptyUuidWithCurrentUser(const std::shared_ptr, "Terminate"}, FunctionInfo{30, D<&ILibraryAppletAccessor::GetResult>, "GetResult"}, FunctionInfo{50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, - FunctionInfo{60, D<&ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero>, "PresetLibraryAppletGpuTimeSliceZero"}, //10.0.0+ - FunctionInfo{80, nullptr, "RequestForLibraryAppletToGetForeground"}, //19.0.0+ - FunctionInfo{81, nullptr, "GetCurrentChildLibraryApplet"}, //19.0.0+ - FunctionInfo{90, D<&ILibraryAppletAccessor::Unknown90>, "Unknown90"}, //20.0.0+ + FunctionInfo{60, D<&ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero>, "PresetLibraryAppletGpuTimeSliceZero", MakeVersionGate({10,0,0})}, + FunctionInfo{80, nullptr, "RequestForLibraryAppletToGetForeground", MakeVersionGate({19,0,0})}, + FunctionInfo{81, nullptr, "GetCurrentChildLibraryApplet", MakeVersionGate({19,0,0})}, + FunctionInfo{90, D<&ILibraryAppletAccessor::Unknown90>, "Unknown90", MakeVersionGate({20,0,0})}, FunctionInfo{100, D<&ILibraryAppletAccessor::PushInData>, "PushInData"}, FunctionInfo{101, D<&ILibraryAppletAccessor::PopOutData>, "PopOutData"}, FunctionInfo{102, nullptr, "PushExtraStorage"}, @@ -68,8 +68,8 @@ static void ReplaceEmptyUuidWithCurrentUser(const std::shared_ptr, "GetLibraryAppletInfo"}, FunctionInfo{150, nullptr, "RequestForAppletToGetForeground"}, - FunctionInfo{160, D<&ILibraryAppletAccessor::GetIndirectLayerConsumerHandle>, "GetIndirectLayerConsumerHandle"}, //2.0.0+ - FunctionInfo{170, D<&ILibraryAppletAccessor::Unknown170>, "Unknown170"} //22.0.0+ + FunctionInfo{160, D<&ILibraryAppletAccessor::GetIndirectLayerConsumerHandle>, "GetIndirectLayerConsumerHandle", MakeVersionGate({2,0,0})}, + FunctionInfo{170, D<&ILibraryAppletAccessor::Unknown170>, "Unknown170", MakeVersionGate({22,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/audio/audio_controller.cpp b/src/core/hle/service/audio/audio_controller.cpp index a960be2aa6..d912a5e86a 100644 --- a/src/core/hle/service/audio/audio_controller.cpp +++ b/src/core/hle/service/audio/audio_controller.cpp @@ -28,7 +28,7 @@ std::optional IAudioController::FindRequ FunctionInfo{3, D<&IAudioController::GetTargetVolumeMax>, "GetTargetVolumeMax"}, FunctionInfo{4, D<&IAudioController::IsTargetMute>, "IsTargetMute"}, FunctionInfo{5, D<&IAudioController::SetTargetMute>, "SetTargetMute"}, - FunctionInfo{6, nullptr, "IsTargetConnected"}, //20.0.0+ + FunctionInfo{6, nullptr, "IsTargetConnected", MakeVersionGate({20,0,0})}, FunctionInfo{7, nullptr, "SetDefaultTarget"}, FunctionInfo{8, nullptr, "GetDefaultTarget"}, FunctionInfo{9, D<&IAudioController::GetAudioOutputMode>, "GetAudioOutputMode"}, @@ -65,8 +65,8 @@ std::optional IAudioController::FindRequ FunctionInfo{40, nullptr, "GetSystemInformationForDebug"}, FunctionInfo{41, nullptr, "SetVolumeButtonLongPressTime"}, FunctionInfo{42, nullptr, "SetNativeVolumeForDebug"}, - FunctionInfo{43, nullptr, "Unknown43"}, //21.0.0+ - FunctionInfo{5000, D<&IAudioController::Unknown5000>, "Unknown5000"}, //19.0.0+ + FunctionInfo{43, nullptr, "Unknown43", MakeVersionGate({21,0,0})}, + FunctionInfo{5000, D<&IAudioController::Unknown5000>, "Unknown5000", MakeVersionGate({19,0,0})}, FunctionInfo{10000, nullptr, "NotifyAudioOutputTargetForPlayReport"}, FunctionInfo{10001, nullptr, "NotifyAudioOutputChannelCountForPlayReport"}, FunctionInfo{10002, nullptr, "NotifyUnsupportedUsbOutputDeviceAttachedForPlayReport"}, @@ -75,13 +75,13 @@ std::optional IAudioController::FindRequ FunctionInfo{10102, nullptr, "BindAudioOutputTargetUpdateEventForPlayReport"}, FunctionInfo{10103, nullptr, "GetAudioOutputTargetForPlayReport"}, FunctionInfo{10104, nullptr, "GetAudioOutputChannelCountForPlayReport"}, - FunctionInfo{10105, nullptr, "BindAudioOutputChannelCountUpdateEventForPlayReport"}, //14.0.0-19.0.1 - FunctionInfo{10106, nullptr, "GetDefaultAudioOutputTargetForPlayReport"}, //14.0.0-19.0.1 - FunctionInfo{10200, nullptr, "Unknown10200"}, //20.0.0+ - FunctionInfo{50000, nullptr, "SetAnalogInputBoostGainForPrototyping"}, //15.0.0-18.1.0 - FunctionInfo{50001, nullptr, "OverrideDefaultTargetForDebug"}, //19.0.0-19.0.1 - FunctionInfo{50003, nullptr, "SetForceOverrideExternalDeviceNameForDebug"}, //19.0.0+ - FunctionInfo{50004, nullptr, "ClearForceOverrideExternalDeviceNameForDebug"} //19.0.0+ + FunctionInfo{10105, nullptr, "BindAudioOutputChannelCountUpdateEventForPlayReport", MakeVersionGate({14,0,0}, {19,0,1})}, + FunctionInfo{10106, nullptr, "GetDefaultAudioOutputTargetForPlayReport", MakeVersionGate({14,0,0}, {19,0,1})}, + FunctionInfo{10200, nullptr, "Unknown10200", MakeVersionGate({20,0,0})}, + FunctionInfo{50000, nullptr, "SetAnalogInputBoostGainForPrototyping", MakeVersionGate({15,0,0}, {18,1,0})}, + FunctionInfo{50001, nullptr, "OverrideDefaultTargetForDebug", MakeVersionGate({19,0,0}, {19,0,1})}, + FunctionInfo{50003, nullptr, "SetForceOverrideExternalDeviceNameForDebug", MakeVersionGate({19,0,0})}, + FunctionInfo{50004, nullptr, "ClearForceOverrideExternalDeviceNameForDebug", MakeVersionGate({19,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/audio/audio_device.cpp b/src/core/hle/service/audio/audio_device.cpp index c028536f47..fc24bf3ccd 100644 --- a/src/core/hle/service/audio/audio_device.cpp +++ b/src/core/hle/service/audio/audio_device.cpp @@ -28,13 +28,13 @@ std::optional IAudioDevice::FindRequest( FunctionInfo{12, D<&IAudioDevice::QueryAudioDeviceOutputEvent>, "QueryAudioDeviceOutputEvent"}, FunctionInfo{13, D<&IAudioDevice::GetActiveAudioDeviceName>, "GetActiveAudioOutputDeviceName"}, FunctionInfo{14, D<&IAudioDevice::ListAudioOutputDeviceName>, "ListAudioOutputDeviceName"}, - FunctionInfo{15, nullptr, "AcquireAudioInputDeviceNotification"}, //17.0.0+ - FunctionInfo{16, nullptr, "ReleaseAudioInputDeviceNotification"}, //17.0.0+ - FunctionInfo{17, nullptr, "AcquireAudioOutputDeviceNotification"}, //17.0.0+ - FunctionInfo{18, nullptr, "ReleaseAudioOutputDeviceNotification"}, //17.0.0+ - FunctionInfo{19, D<&IAudioDevice::SetAudioDeviceOutputVolumeAutoTuneEnabled>, "SetAudioDeviceOutputVolumeAutoTuneEnabled"}, //18.0.0+ - FunctionInfo{20, D<&IAudioDevice::IsAudioDeviceOutputVolumeAutoTuneEnabled>, "IsAudioDeviceOutputVolumeAutoTuneEnabled"}, //18.0.0+ - FunctionInfo{21, nullptr, "IsActiveOutputDeviceEstimatedLowLatency"} //21.0.0+ + FunctionInfo{15, nullptr, "AcquireAudioInputDeviceNotification", MakeVersionGate({17,0,0})}, + FunctionInfo{16, nullptr, "ReleaseAudioInputDeviceNotification", MakeVersionGate({17,0,0})}, + FunctionInfo{17, nullptr, "AcquireAudioOutputDeviceNotification", MakeVersionGate({17,0,0})}, + FunctionInfo{18, nullptr, "ReleaseAudioOutputDeviceNotification", MakeVersionGate({17,0,0})}, + FunctionInfo{19, D<&IAudioDevice::SetAudioDeviceOutputVolumeAutoTuneEnabled>, "SetAudioDeviceOutputVolumeAutoTuneEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{20, D<&IAudioDevice::IsAudioDeviceOutputVolumeAutoTuneEnabled>, "IsAudioDeviceOutputVolumeAutoTuneEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{21, nullptr, "IsActiveOutputDeviceEstimatedLowLatency", MakeVersionGate({21,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/audio/audio_renderer.cpp b/src/core/hle/service/audio/audio_renderer.cpp index 2f6a883d3e..bcb2adaf61 100644 --- a/src/core/hle/service/audio/audio_renderer.cpp +++ b/src/core/hle/service/audio/audio_renderer.cpp @@ -22,10 +22,10 @@ std::optional IAudioRenderer::FindReques FunctionInfo{7, D<&IAudioRenderer::QuerySystemEvent>, "QuerySystemEvent"}, FunctionInfo{8, D<&IAudioRenderer::SetRenderingTimeLimit>, "SetRenderingTimeLimit"}, FunctionInfo{9, D<&IAudioRenderer::GetRenderingTimeLimit>, "GetRenderingTimeLimit"}, - FunctionInfo{10, D<&IAudioRenderer::RequestUpdateAuto>, "RequestUpdateAuto"}, //3.0.0+ - FunctionInfo{11, nullptr, "ExecuteAudioRendererRendering"}, //3.0.0+ - FunctionInfo{12, D<&IAudioRenderer::SetVoiceDropParameter>, "SetVoiceDropParameter"}, //15.0.0+ - FunctionInfo{13, D<&IAudioRenderer::GetVoiceDropParameter>, "GetVoiceDropParameter"} //15.0.0+ + FunctionInfo{10, D<&IAudioRenderer::RequestUpdateAuto>, "RequestUpdateAuto", MakeVersionGate({3,0,0})}, + FunctionInfo{11, nullptr, "ExecuteAudioRendererRendering", MakeVersionGate({3,0,0})}, + FunctionInfo{12, D<&IAudioRenderer::SetVoiceDropParameter>, "SetVoiceDropParameter", MakeVersionGate({15,0,0})}, + FunctionInfo{13, D<&IAudioRenderer::GetVoiceDropParameter>, "GetVoiceDropParameter", MakeVersionGate({15,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/bcat/bcat_service.cpp b/src/core/hle/service/bcat/bcat_service.cpp index 53fae8ce20..85f262f6eb 100644 --- a/src/core/hle/service/bcat/bcat_service.cpp +++ b/src/core/hle/service/bcat/bcat_service.cpp @@ -37,8 +37,8 @@ std::optional IBcatService::FindRequest( FunctionInfo{20401, nullptr, "UnregisterSystemApplicationDeliveryTask"}, FunctionInfo{20410, nullptr, "SetSystemApplicationDeliveryTaskTimer"}, FunctionInfo{30100, D<&IBcatService::SetPassphrase>, "SetPassphrase"}, - FunctionInfo{30101, nullptr, "Unknown30101"}, //2.0.0-2.3.0 - FunctionInfo{30102, nullptr, "Unknown30102"}, //2.0.0-2.3.0 + FunctionInfo{30101, nullptr, "Unknown30101", MakeVersionGate({2,0,0}, {2,3,0})}, + FunctionInfo{30102, nullptr, "Unknown30102", MakeVersionGate({2,0,0}, {2,3,0})}, FunctionInfo{30200, nullptr, "RegisterBackgroundDeliveryTask"}, FunctionInfo{30201, nullptr, "UnregisterBackgroundDeliveryTask"}, FunctionInfo{30202, nullptr, "BlockDeliveryTask"}, @@ -46,12 +46,12 @@ std::optional IBcatService::FindRequest( FunctionInfo{30210, nullptr, "SetDeliveryTaskTimer"}, FunctionInfo{30300, D<&IBcatService::RegisterSystemApplicationDeliveryTasks>, "RegisterSystemApplicationDeliveryTasks"}, FunctionInfo{90100, nullptr, "GetDeliveryTaskList"}, - FunctionInfo{90101, nullptr, "GetDeliveryTaskListForSystem"}, //11.0.0+ + FunctionInfo{90101, nullptr, "GetDeliveryTaskListForSystem", MakeVersionGate({11,0,0})}, FunctionInfo{90200, nullptr, "GetDeliveryList"}, FunctionInfo{90201, D<&IBcatService::ClearDeliveryCacheStorage>, "ClearDeliveryCacheStorage"}, FunctionInfo{90202, nullptr, "ClearDeliveryTaskSubscriptionStatus"}, FunctionInfo{90300, nullptr, "GetPushNotificationLog"}, - FunctionInfo{90301, nullptr, "GetDeliveryCacheStorageUsage"} //11.0.0+ + FunctionInfo{90301, nullptr, "GetDeliveryCacheStorageUsage", MakeVersionGate({11,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/bcat/news/news_service.cpp b/src/core/hle/service/bcat/news/news_service.cpp index ce1b9a39d8..7cb931896c 100644 --- a/src/core/hle/service/bcat/news/news_service.cpp +++ b/src/core/hle/service/bcat/news/news_service.cpp @@ -17,19 +17,19 @@ std::optional INewsService::FindRequest( FunctionInfo{10100, D<&INewsService::PostLocalNews>, "PostLocalNews"}, FunctionInfo{20100, D<&INewsService::SetPassphrase>, "SetPassphrase"}, FunctionInfo{30100, D<&INewsService::GetSubscriptionStatus>, "GetSubscriptionStatus"}, - FunctionInfo{30101, D<&INewsService::GetTopicList>, "GetTopicList"}, //3.0.0+ - FunctionInfo{30110, D<&INewsService::GetTopicList>, "Unknown30110"}, //6.0.0+ (stub) + FunctionInfo{30101, D<&INewsService::GetTopicList>, "GetTopicList", MakeVersionGate({3,0,0})}, + FunctionInfo{30110, D<&INewsService::GetTopicList>, "Unknown30110", MakeVersionGate({6,0,0})}, // stub FunctionInfo{30200, D<&INewsService::IsSystemUpdateRequired>, "IsSystemUpdateRequired"}, - FunctionInfo{30201, D<&INewsService::IsSystemUpdateRequired>, "Unknown30201"}, //8.0.0+ (stub) - FunctionInfo{30210, D<&INewsService::IsSystemUpdateRequired>, "Unknown30210"}, //10.0.0+ (stub) + FunctionInfo{30201, D<&INewsService::IsSystemUpdateRequired>, "Unknown30201", MakeVersionGate({8,0,0})}, // stub + FunctionInfo{30210, D<&INewsService::IsSystemUpdateRequired>, "Unknown30210", MakeVersionGate({10,0,0})}, // stub FunctionInfo{30300, nullptr, "RequestImmediateReception"}, - FunctionInfo{30400, nullptr, "DecodeArchiveFile"}, //3.0.0-18.1.0 (stub) - FunctionInfo{30500, nullptr, "Unknown30500"}, //8.0.0+ (stub) - FunctionInfo{30900, nullptr, "Unknown30900"}, //1.0.0 (stub) - FunctionInfo{30901, nullptr, "Unknown30901"}, //1.0.0 (stub) - FunctionInfo{30902, nullptr, "Unknown30902"}, //1.0.0 (stub) + FunctionInfo{30400, nullptr, "DecodeArchiveFile", MakeVersionGate({3,0,0}, {18,1,0})}, // stub + FunctionInfo{30500, nullptr, "Unknown30500", MakeVersionGate({8,0,0})}, // stub + FunctionInfo{30900, nullptr, "Unknown30900", MakeVersionGate({1,0,0})}, // stub + FunctionInfo{30901, nullptr, "Unknown30901", MakeVersionGate({1,0,0})}, // stub + FunctionInfo{30902, nullptr, "Unknown30902", MakeVersionGate({1,0,0})}, // stub FunctionInfo{40100, nullptr, "SetSubscriptionStatus"}, - FunctionInfo{40101, D<&INewsService::RequestAutoSubscription>, "RequestAutoSubscription"}, //3.0.0+ + FunctionInfo{40101, D<&INewsService::RequestAutoSubscription>, "RequestAutoSubscription", MakeVersionGate({3,0,0})}, FunctionInfo{40200, D<&INewsService::ClearStorage>, "ClearStorage"}, FunctionInfo{40201, D<&INewsService::ClearSubscriptionStatusAll>, "ClearSubscriptionStatusAll"}, FunctionInfo{90100, D<&INewsService::GetNewsDatabaseDump>, "GetNewsDatabaseDump"} diff --git a/src/core/hle/service/btm/btm.cpp b/src/core/hle/service/btm/btm.cpp index 9ca77bcb69..e8fa29af7c 100644 --- a/src/core/hle/service/btm/btm.cpp +++ b/src/core/hle/service/btm/btm.cpp @@ -307,15 +307,15 @@ public: FunctionInfo{6, nullptr, "SetTsiMode"}, FunctionInfo{7, nullptr, "GeneralTest"}, FunctionInfo{8, nullptr, "HidConnect"}, - FunctionInfo{9, nullptr, "GeneralGet"}, //5.0.0+ - FunctionInfo{10, nullptr, "GetGattClientDisconnectionReason"}, //5.0.0+ - FunctionInfo{11, nullptr, "GetBleConnectionParameter"}, //5.1.0+ - FunctionInfo{12, nullptr, "GetBleConnectionParameterRequest"}, //5.1.0+ - FunctionInfo{13, nullptr, "GetDiscoveredDevice"}, //12.0.0+ - FunctionInfo{14, nullptr, "SleepAwakeLoopTest"}, //15.0.0+ - FunctionInfo{15, nullptr, "SleepTest"}, //15.0.0+ - FunctionInfo{16, nullptr, "MinimumAwakeTest"}, //15.0.0+ - FunctionInfo{17, nullptr, "ForceEnableBtm"} //15.0.0+ + FunctionInfo{9, nullptr, "GeneralGet", MakeVersionGate({5,0,0})}, + FunctionInfo{10, nullptr, "GetGattClientDisconnectionReason", MakeVersionGate({5,0,0})}, + FunctionInfo{11, nullptr, "GetBleConnectionParameter", MakeVersionGate({5,1,0})}, + FunctionInfo{12, nullptr, "GetBleConnectionParameterRequest", MakeVersionGate({5,1,0})}, + FunctionInfo{13, nullptr, "GetDiscoveredDevice", MakeVersionGate({12,0,0})}, + FunctionInfo{14, nullptr, "SleepAwakeLoopTest", MakeVersionGate({15,0,0})}, + FunctionInfo{15, nullptr, "SleepTest", MakeVersionGate({15,0,0})}, + FunctionInfo{16, nullptr, "MinimumAwakeTest", MakeVersionGate({15,0,0})}, + FunctionInfo{17, nullptr, "ForceEnableBtm", MakeVersionGate({15,0,0})} ); }; @@ -384,33 +384,33 @@ public: FunctionInfo{57, nullptr, "RegisterAppletResourceUserId"}, FunctionInfo{58, nullptr, "UnregisterAppletResourceUserId"}, FunctionInfo{59, nullptr, "SetAppletResourceUserId"}, - FunctionInfo{60, nullptr, "AcquireBleConnectionParameterUpdateEvent"}, //8.0.0+ - FunctionInfo{61, nullptr, "SetCeLength"}, //8.0.0+ - FunctionInfo{62, nullptr, "EnsureSlotExpansion"}, //9.0.0+ - FunctionInfo{63, nullptr, "IsSlotExpansionEnsured"}, //9.0.0+ - FunctionInfo{64, nullptr, "CancelConnectionTrigger"}, //10.0.0+ - FunctionInfo{65, nullptr, "GetConnectionCapacity"}, //13.0.0+ - FunctionInfo{66, nullptr, "GetWlanMode"}, //13.0.0+ - FunctionInfo{67, nullptr, "IsSlotSavingEnabled"}, //13.0.0+ - FunctionInfo{68, nullptr, "IsSlotSavingForPairingEnabled"}, //13.0.0+ - FunctionInfo{69, nullptr, "AcquireAudioDeviceConnectionEvent"}, //13.0.0+ - FunctionInfo{70, nullptr, "GetConnectedAudioDevices"}, //13.0.0+ - FunctionInfo{71, nullptr, "SetAudioSourceVolume"}, //13.0.0+ - FunctionInfo{72, nullptr, "GetAudioSourceVolume"}, //13.0.0+ - FunctionInfo{73, nullptr, "RequestAudioDeviceConnectionRejection"}, //13.0.0+ - FunctionInfo{74, nullptr, "CancelAudioDeviceConnectionRejection"}, //13.0.0+ - FunctionInfo{75, nullptr, "GetPairedAudioDevices"}, //13.0.0+ - FunctionInfo{76, nullptr, "SetWlanModeWithOption"}, //13.1.0+ - FunctionInfo{100, nullptr, "AcquireConnectionDisallowedEvent"}, //13.0.0+ - FunctionInfo{101, nullptr, "GetUsecaseViolationFactor"}, //13.0.0+ - FunctionInfo{110, nullptr, "GetShortenedDeviceInfo"}, //13.0.0+ + FunctionInfo{60, nullptr, "AcquireBleConnectionParameterUpdateEvent", MakeVersionGate({8,0,0})}, + FunctionInfo{61, nullptr, "SetCeLength", MakeVersionGate({8,0,0})}, + FunctionInfo{62, nullptr, "EnsureSlotExpansion", MakeVersionGate({9,0,0})}, + FunctionInfo{63, nullptr, "IsSlotExpansionEnsured", MakeVersionGate({9,0,0})}, + FunctionInfo{64, nullptr, "CancelConnectionTrigger", MakeVersionGate({10,0,0})}, + FunctionInfo{65, nullptr, "GetConnectionCapacity", MakeVersionGate({13,0,0})}, + FunctionInfo{66, nullptr, "GetWlanMode", MakeVersionGate({13,0,0})}, + FunctionInfo{67, nullptr, "IsSlotSavingEnabled", MakeVersionGate({13,0,0})}, + FunctionInfo{68, nullptr, "IsSlotSavingForPairingEnabled", MakeVersionGate({13,0,0})}, + FunctionInfo{69, nullptr, "AcquireAudioDeviceConnectionEvent", MakeVersionGate({13,0,0})}, + FunctionInfo{70, nullptr, "GetConnectedAudioDevices", MakeVersionGate({13,0,0})}, + FunctionInfo{71, nullptr, "SetAudioSourceVolume", MakeVersionGate({13,0,0})}, + FunctionInfo{72, nullptr, "GetAudioSourceVolume", MakeVersionGate({13,0,0})}, + FunctionInfo{73, nullptr, "RequestAudioDeviceConnectionRejection", MakeVersionGate({13,0,0})}, + FunctionInfo{74, nullptr, "CancelAudioDeviceConnectionRejection", MakeVersionGate({13,0,0})}, + FunctionInfo{75, nullptr, "GetPairedAudioDevices", MakeVersionGate({13,0,0})}, + FunctionInfo{76, nullptr, "SetWlanModeWithOption", MakeVersionGate({13,1,0})}, + FunctionInfo{100, nullptr, "AcquireConnectionDisallowedEvent", MakeVersionGate({13,0,0})}, + FunctionInfo{101, nullptr, "GetUsecaseViolationFactor", MakeVersionGate({13,0,0})}, + FunctionInfo{110, nullptr, "GetShortenedDeviceInfo", MakeVersionGate({13,0,0})}, FunctionInfo{111, nullptr, "AcquirePairingCountUpdateEvent"},//13.0.0+ - FunctionInfo{112, nullptr, "Unknown112"}, //14.0.0-14.1.2 - FunctionInfo{113, nullptr, "Unknown113"}, //14.0.0-14.1.2 - FunctionInfo{114, nullptr, "IsFirstAudioControlConnection"}, //14.0.0+ - FunctionInfo{115, nullptr, "GetShortenedDeviceCondition"}, //14.0.0+ - FunctionInfo{116, nullptr, "SetAudioSinkVolume"}, //15.0.0+ - FunctionInfo{117, nullptr, "GetAudioSinkVolume"} //15.0.0+ + FunctionInfo{112, nullptr, "Unknown112", MakeVersionGate({14,0,0}, {14,1,2})}, + FunctionInfo{113, nullptr, "Unknown113", MakeVersionGate({14,0,0}, {14,1,2})}, + FunctionInfo{114, nullptr, "IsFirstAudioControlConnection", MakeVersionGate({14,0,0})}, + FunctionInfo{115, nullptr, "GetShortenedDeviceCondition", MakeVersionGate({14,0,0})}, + FunctionInfo{116, nullptr, "SetAudioSinkVolume", MakeVersionGate({15,0,0})}, + FunctionInfo{117, nullptr, "GetAudioSinkVolume", MakeVersionGate({15,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index fe0f991727..01d11183c9 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -262,16 +262,16 @@ private: FunctionInfo{38, nullptr, "OwnTicket3"}, FunctionInfo{39, nullptr, "DeleteAllInactivePersonalizedTicket"}, FunctionInfo{40, nullptr, "DeletePrepurchaseRecordByNintendoAccountId"}, - FunctionInfo{101, nullptr, "Unknown101"}, //18.0.0+ - FunctionInfo{102, nullptr, "Unknown102"}, //18.0.0+ - FunctionInfo{103, nullptr, "Unknown103"}, //18.0.0+ - FunctionInfo{104, nullptr, "Unknown104"}, //18.0.0+ - FunctionInfo{105, nullptr, "Unknown105"}, //20.0.0+ - FunctionInfo{201, nullptr, "Unknown201"}, //18.0.0+ - FunctionInfo{202, nullptr, "Unknown202"}, //18.0.0+ - FunctionInfo{203, nullptr, "Unknown203"}, //18.0.0+ - FunctionInfo{204, nullptr, "Unknown204"}, //18.0.0+ - FunctionInfo{205, nullptr, "Unknown205"}, //18.0.0+ + FunctionInfo{101, nullptr, "Unknown101", MakeVersionGate({18,0,0})}, + FunctionInfo{102, nullptr, "Unknown102", MakeVersionGate({18,0,0})}, + FunctionInfo{103, nullptr, "Unknown103", MakeVersionGate({18,0,0})}, + FunctionInfo{104, nullptr, "Unknown104", MakeVersionGate({18,0,0})}, + FunctionInfo{105, nullptr, "Unknown105", MakeVersionGate({20,0,0})}, + FunctionInfo{201, nullptr, "Unknown201", MakeVersionGate({18,0,0})}, + FunctionInfo{202, nullptr, "Unknown202", MakeVersionGate({18,0,0})}, + FunctionInfo{203, nullptr, "Unknown203", MakeVersionGate({18,0,0})}, + FunctionInfo{204, nullptr, "Unknown204", MakeVersionGate({18,0,0})}, + FunctionInfo{205, nullptr, "Unknown205", MakeVersionGate({18,0,0})}, FunctionInfo{501, nullptr, "Unknown501"}, FunctionInfo{502, nullptr, "Unknown502"}, FunctionInfo{503, nullptr, "GetTitleKey"}, diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index ae260c18c0..5480d22b83 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp @@ -273,7 +273,7 @@ private: FunctionInfo{10101, &IFriendService::GetFriendList, "GetFriendList"}, FunctionInfo{10102, nullptr, "UpdateFriendInfo"}, FunctionInfo{10110, nullptr, "GetFriendProfileImage"}, - FunctionInfo{10111, nullptr, "GetFriendProfileImageWithImageSize"}, // 18.0.0+ + FunctionInfo{10111, nullptr, "GetFriendProfileImageWithImageSize", MakeVersionGate({18,0,0})}, FunctionInfo{10120, &IFriendService::CheckFriendListAvailability, "CheckFriendListAvailability"}, FunctionInfo{10121, nullptr, "EnsureFriendListAvailable"}, FunctionInfo{10200, nullptr, "SendFriendRequestForApplication"}, @@ -282,7 +282,7 @@ private: FunctionInfo{10420, &IFriendService::CheckBlockedUserListAvailability, "CheckBlockedUserListAvailability"}, FunctionInfo{10421, nullptr, "EnsureBlockedUserListAvailable"}, FunctionInfo{10500, nullptr, "GetProfileList"}, - FunctionInfo{10501, nullptr, "GetProfileListV2"}, // 18.0.0+ + FunctionInfo{10501, nullptr, "GetProfileListV2", MakeVersionGate({18,0,0})}, FunctionInfo{10600, nullptr, "DeclareOpenOnlinePlaySession"}, FunctionInfo{10601, &IFriendService::DeclareCloseOnlinePlaySession, "DeclareCloseOnlinePlaySession"}, FunctionInfo{10610, &IFriendService::UpdateUserPresence, "UpdateUserPresence"}, @@ -290,7 +290,7 @@ private: FunctionInfo{10701, nullptr, "GetPlayHistoryRegistrationKeyWithNetworkServiceAccountId"}, FunctionInfo{10702, nullptr, "AddPlayHistory"}, FunctionInfo{11000, nullptr, "GetProfileImageUrl"}, - FunctionInfo{11001, nullptr, "GetProfileImageUrlV2"}, // 18.0.0+ + FunctionInfo{11001, nullptr, "GetProfileImageUrlV2", MakeVersionGate({18,0,0})}, FunctionInfo{20100, &IFriendService::GetFriendCount, "GetFriendCount"}, FunctionInfo{20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"}, FunctionInfo{20102, nullptr, "GetFriendDetailedInfo"}, @@ -298,49 +298,49 @@ private: FunctionInfo{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"}, FunctionInfo{20105, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV1"}, FunctionInfo{20106, nullptr, "UpdateFriendInfoForViewerV1"}, - FunctionInfo{20107, nullptr, "GetFriendDetailedInfoV2"}, // 20.0.0+ - FunctionInfo{20108, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV2"}, // 22.0.0+ - FunctionInfo{20109, nullptr, "UpdateFriendInfoForViewerV2"}, // 22.0.0+ + FunctionInfo{20107, nullptr, "GetFriendDetailedInfoV2", MakeVersionGate({20,0,0})}, + FunctionInfo{20108, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV2", MakeVersionGate({22,0,0})}, + FunctionInfo{20109, nullptr, "UpdateFriendInfoForViewerV2", MakeVersionGate({22,0,0})}, FunctionInfo{20110, nullptr, "LoadFriendSettingV1"}, - FunctionInfo{20111, nullptr, "LoadFriendSettingV2"}, // 22.0.0+ + FunctionInfo{20111, nullptr, "LoadFriendSettingV2", MakeVersionGate({22,0,0})}, FunctionInfo{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"}, FunctionInfo{20201, nullptr, "GetFriendRequestListV1"}, - FunctionInfo{20202, nullptr, "GetFriendRequestListV2"}, // 20.0.0+ - FunctionInfo{20203, nullptr, "GetFriendRequestReceivedNotificationCount"}, // 22.0.0+ + FunctionInfo{20202, nullptr, "GetFriendRequestListV2", MakeVersionGate({20,0,0})}, + FunctionInfo{20203, nullptr, "GetFriendRequestReceivedNotificationCount", MakeVersionGate({22,0,0})}, FunctionInfo{20300, nullptr, "GetFriendCandidateList"}, FunctionInfo{20301, nullptr, "GetNintendoNetworkIdInfo"}, - FunctionInfo{20302, nullptr, "GetSnsAccountLinkage"}, // 5.0.0-19.0.1 - FunctionInfo{20303, nullptr, "GetSnsAccountProfile"}, // 5.0.0-19.0.1 - FunctionInfo{20304, nullptr, "GetSnsAccountFriendList"}, // 5.0.0-19.0.1 + FunctionInfo{20302, nullptr, "GetSnsAccountLinkage", MakeVersionGate({5,0,0}, {19,0,1})}, + FunctionInfo{20303, nullptr, "GetSnsAccountProfile", MakeVersionGate({5,0,0}, {19,0,1})}, + FunctionInfo{20304, nullptr, "GetSnsAccountFriendList", MakeVersionGate({5,0,0}, {19,0,1})}, FunctionInfo{20400, nullptr, "GetBlockedUserListV1"}, FunctionInfo{20401, nullptr, "SyncBlockedUserList"}, - FunctionInfo{20402, nullptr, "GetBlockedUserListV2"}, // 20.0.0+ + FunctionInfo{20402, nullptr, "GetBlockedUserListV2", MakeVersionGate({20,0,0})}, FunctionInfo{20500, nullptr, "GetProfileExtraListV1"}, FunctionInfo{20501, nullptr, "GetRelationship"}, - FunctionInfo{20502, nullptr, "GetProfileExtraListV2"}, // 19.0.0+ + FunctionInfo{20502, nullptr, "GetProfileExtraListV2", MakeVersionGate({19,0,0})}, FunctionInfo{20600, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV1"}, - FunctionInfo{20601, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV2"}, // 19.0.0+ + FunctionInfo{20601, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV2", MakeVersionGate({19,0,0})}, FunctionInfo{20700, nullptr, "GetPlayHistoryListV1"}, FunctionInfo{20701, &IFriendService::GetPlayHistoryStatistics, "GetPlayHistoryStatistics"}, - FunctionInfo{20702, nullptr, "GetPlayHistoryListV2"}, // 19.0.0+ + FunctionInfo{20702, nullptr, "GetPlayHistoryListV2", MakeVersionGate({19,0,0})}, FunctionInfo{20800, &IFriendService::LoadUserSetting, "LoadUserSettingV1"}, FunctionInfo{20801, nullptr, "SyncUserSetting"}, - FunctionInfo{20802, &IFriendService::LoadUserSetting, "LoadUserSettingV2"}, // 19.0.0+ + FunctionInfo{20802, &IFriendService::LoadUserSetting, "LoadUserSettingV2", MakeVersionGate({19,0,0})}, FunctionInfo{20900, &IFriendService::RequestListSummaryOverlayNotification, "RequestListSummaryOverlayNotification"}, FunctionInfo{21000, nullptr, "GetExternalApplicationCatalog"}, FunctionInfo{22000, nullptr, "GetReceivedFriendInvitationListV1"}, FunctionInfo{22001, nullptr, "GetReceivedFriendInvitationDetailedInfoV1"}, - FunctionInfo{22002, nullptr, "GetReceivedFriendInvitationListV2"}, // 19.0.0+ - FunctionInfo{22003, nullptr, "GetReceivedFriendInvitationDetailedInfoV2"}, // 19.0.0+ + FunctionInfo{22002, nullptr, "GetReceivedFriendInvitationListV2", MakeVersionGate({19,0,0})}, + FunctionInfo{22003, nullptr, "GetReceivedFriendInvitationDetailedInfoV2", MakeVersionGate({19,0,0})}, FunctionInfo{22010, &IFriendService::GetReceivedFriendInvitationCountCache, "GetReceivedFriendInvitationCountCache"}, FunctionInfo{30100, nullptr, "DropFriendNewlyFlags"}, FunctionInfo{30101, nullptr, "DeleteFriend"}, FunctionInfo{30110, nullptr, "DropFriendNewlyFlag"}, FunctionInfo{30120, nullptr, "ChangeFriendFavoriteFlag"}, FunctionInfo{30121, nullptr, "ChangeFriendOnlineNotificationFlag"}, - FunctionInfo{30130, nullptr, "SetFriendNote"}, // 22.0.0+ - FunctionInfo{30131, nullptr, "RequestUploadPendingNote"}, // 22.0.0+ - FunctionInfo{30190, nullptr, "RequestSyncLocalUpdates"}, // 22.0.0+ + FunctionInfo{30130, nullptr, "SetFriendNote", MakeVersionGate({22,0,0})}, + FunctionInfo{30131, nullptr, "RequestUploadPendingNote", MakeVersionGate({22,0,0})}, + FunctionInfo{30190, nullptr, "RequestSyncLocalUpdates", MakeVersionGate({22,0,0})}, FunctionInfo{30200, nullptr, "SendFriendRequest"}, FunctionInfo{30201, nullptr, "SendFriendRequestWithApplicationInfoV1"}, FunctionInfo{30202, nullptr, "CancelFriendRequest"}, @@ -355,27 +355,27 @@ private: FunctionInfo{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"}, FunctionInfo{30216, nullptr, "ResendFacedFriendRequest"}, FunctionInfo{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"}, - FunctionInfo{30218, nullptr, "SendFriendRequestWithApplicationInfoV2"}, // 20.0.0+ - FunctionInfo{30300, nullptr, "GetSnsAccountLinkPageUrl"}, // 5.0.0-19.0.1 - FunctionInfo{30301, nullptr, "UnlinkSnsAccount"}, // 5.0.0-19.0.1 + FunctionInfo{30218, nullptr, "SendFriendRequestWithApplicationInfoV2", MakeVersionGate({20,0,0})}, + FunctionInfo{30300, nullptr, "GetSnsAccountLinkPageUrl", MakeVersionGate({5,0,0}, {19,0,1})}, + FunctionInfo{30301, nullptr, "UnlinkSnsAccount", MakeVersionGate({5,0,0}, {19,0,1})}, FunctionInfo{30400, nullptr, "BlockUser"}, FunctionInfo{30401, nullptr, "BlockUserWithApplicationInfoV1"}, FunctionInfo{30402, nullptr, "UnblockUser"}, - FunctionInfo{30403, nullptr, "BlockUserWithApplicationInfoV2"}, // 20.0.0+ + FunctionInfo{30403, nullptr, "BlockUserWithApplicationInfoV2", MakeVersionGate({20,0,0})}, FunctionInfo{30500, nullptr, "GetProfileExtraFromFriendCodeV1"}, - FunctionInfo{30501, nullptr, "GetProfileExtraFromFriendCodeV2"}, // 19.0.0+ + FunctionInfo{30501, nullptr, "GetProfileExtraFromFriendCodeV2", MakeVersionGate({19,0,0})}, FunctionInfo{30700, nullptr, "DeletePlayHistory"}, - FunctionInfo{30701, nullptr, "AddPlayHistoryWithApplication"}, // 19.0.0+ + FunctionInfo{30701, nullptr, "AddPlayHistoryWithApplication", MakeVersionGate({19,0,0})}, FunctionInfo{30810, nullptr, "ChangePresencePermission"}, FunctionInfo{30811, nullptr, "ChangeFriendRequestReception"}, FunctionInfo{30812, nullptr, "ChangePlayLogPermission"}, FunctionInfo{30820, nullptr, "IssueFriendCode"}, FunctionInfo{30830, nullptr, "ClearPlayLog"}, FunctionInfo{30900, nullptr, "SendFriendInvitationV1"}, - FunctionInfo{30901, nullptr, "SendFriendInvitationV2"}, // 19.0.0+ + FunctionInfo{30901, nullptr, "SendFriendInvitationV2", MakeVersionGate({19,0,0})}, FunctionInfo{30910, nullptr, "ReadFriendInvitation"}, FunctionInfo{30911, nullptr, "ReadAllFriendInvitations"}, - FunctionInfo{31000, nullptr, "OpenUser"}, // 19.0.0+ + FunctionInfo{31000, nullptr, "OpenUser", MakeVersionGate({19,0,0})}, FunctionInfo{40100, nullptr, "DeleteFriendListCache"}, FunctionInfo{40400, nullptr, "DeleteBlockedUserListCache"}, FunctionInfo{49900, nullptr, "DeleteNetworkServiceAccountCache"} diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 8621b6e076..0ea587312b 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -278,7 +278,7 @@ public: FunctionInfo{209, nullptr, "GetAvailableFirmwareVersionForRevert"}, FunctionInfo{210, nullptr, "IsFirmwareUpdatingDevice"}, FunctionInfo{211, nullptr, "StartFirmwareUpdateIndividual"}, - FunctionInfo{212, nullptr, "GetDetailFirmwareVersion"}, // 19.0.0+ + FunctionInfo{212, nullptr, "GetDetailFirmwareVersion", MakeVersionGate({19,0,0})}, FunctionInfo{215, nullptr, "SetUsbFirmwareForceUpdateEnabled"}, FunctionInfo{216, nullptr, "SetAllKuinaDevicesToFirmwareUpdateMode"}, FunctionInfo{221, nullptr, "UpdateControllerColor"}, @@ -312,11 +312,11 @@ public: FunctionInfo{249, nullptr, "ConnectUniquePad"}, FunctionInfo{250, nullptr, "IsVirtual"}, FunctionInfo{251, nullptr, "GetAnalogStickModuleParam"}, - FunctionInfo{253, nullptr, "ClearStorageForShipment"}, //19.0.0+ - FunctionInfo{261, nullptr, "UpdateDesignInfo12"}, //21.0.0+ - FunctionInfo{262, nullptr, "GetUniquePadButtonCount"}, //21.0.0+ - FunctionInfo{267, nullptr, "SetAnalogStickCalibration"}, //21.0.0+ - FunctionInfo{268, nullptr, "ResetAnalogStickCalibration"}, //21.0.0+ + FunctionInfo{253, nullptr, "ClearStorageForShipment", MakeVersionGate({19,0,0})}, + FunctionInfo{261, nullptr, "UpdateDesignInfo12", MakeVersionGate({21,0,0})}, + FunctionInfo{262, nullptr, "GetUniquePadButtonCount", MakeVersionGate({21,0,0})}, + FunctionInfo{267, nullptr, "SetAnalogStickCalibration", MakeVersionGate({21,0,0})}, + FunctionInfo{268, nullptr, "ResetAnalogStickCalibration", MakeVersionGate({21,0,0})}, FunctionInfo{301, nullptr, "GetAbstractedPadHandles"}, FunctionInfo{302, nullptr, "GetAbstractedPadState"}, FunctionInfo{303, nullptr, "GetAbstractedPadsState"}, @@ -333,8 +333,8 @@ public: FunctionInfo{331, nullptr, "DetachHdlsVirtualDevice"}, FunctionInfo{332, nullptr, "SetHdlsState"}, FunctionInfo{350, nullptr, "AddRegisteredDevice"}, - FunctionInfo{351, nullptr, "GetRegisteredDevicesCountDebug"}, //17.0.0-18.1.0 - FunctionInfo{352, nullptr, "DeleteRegisteredDevicesDebug"}, //17.0.0-18.1.0 + FunctionInfo{351, nullptr, "GetRegisteredDevicesCountDebug", MakeVersionGate({17,0,0}, {18,1,0})}, + FunctionInfo{352, nullptr, "DeleteRegisteredDevicesDebug", MakeVersionGate({17,0,0}, {18,1,0})}, FunctionInfo{400, nullptr, "DisableExternalMcuOnNxDevice"}, FunctionInfo{401, nullptr, "DisableRailDeviceFiltering"}, FunctionInfo{402, nullptr, "EnableWiredPairing"}, @@ -346,26 +346,26 @@ public: FunctionInfo{551, nullptr, "GetAnalogStickModelData"}, FunctionInfo{552, nullptr, "ResetAnalogStickModelData"}, FunctionInfo{600, nullptr, "ConvertPadState"}, - FunctionInfo{601, nullptr, "IsButtonConfigSupported"}, //18.0.0+ - FunctionInfo{602, nullptr, "IsButtonConfigEmbeddedSupported"}, //18.0.0+ - FunctionInfo{603, nullptr, "DeleteButtonConfig"}, //18.0.0+ - FunctionInfo{604, nullptr, "DeleteButtonConfigEmbedded"}, //18.0.0+ - FunctionInfo{605, nullptr, "SetButtonConfigEnabled"}, //18.0.0+ - FunctionInfo{606, nullptr, "SetButtonConfigEmbeddedEnabled"}, //18.0.0+ - FunctionInfo{607, nullptr, "IsButtonConfigEnabled"}, //18.0.0+ - FunctionInfo{608, nullptr, "IsButtonConfigEmbeddedEnabled"}, //18.0.0+ - FunctionInfo{609, nullptr, "SetButtonConfigEmbedded"}, //18.0.0+ - FunctionInfo{610, nullptr, "SetButtonConfigFull"}, //18.0.0+ - FunctionInfo{611, nullptr, "SetButtonConfigLeft"}, //18.0.0+ - FunctionInfo{612, nullptr, "SetButtonConfigRight"}, //18.0.0+ - FunctionInfo{613, nullptr, "GetButtonConfigEmbedded"}, //18.0.0+ - FunctionInfo{614, nullptr, "GetButtonConfigFull"}, //18.0.0+ - FunctionInfo{615, nullptr, "GetButtonConfigLeft"}, //18.0.0+ - FunctionInfo{616, nullptr, "GetButtonConfigRight"}, //18.0.0+ + FunctionInfo{601, nullptr, "IsButtonConfigSupported", MakeVersionGate({18,0,0})}, + FunctionInfo{602, nullptr, "IsButtonConfigEmbeddedSupported", MakeVersionGate({18,0,0})}, + FunctionInfo{603, nullptr, "DeleteButtonConfig", MakeVersionGate({18,0,0})}, + FunctionInfo{604, nullptr, "DeleteButtonConfigEmbedded", MakeVersionGate({18,0,0})}, + FunctionInfo{605, nullptr, "SetButtonConfigEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{606, nullptr, "SetButtonConfigEmbeddedEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{607, nullptr, "IsButtonConfigEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{608, nullptr, "IsButtonConfigEmbeddedEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{609, nullptr, "SetButtonConfigEmbedded", MakeVersionGate({18,0,0})}, + FunctionInfo{610, nullptr, "SetButtonConfigFull", MakeVersionGate({18,0,0})}, + FunctionInfo{611, nullptr, "SetButtonConfigLeft", MakeVersionGate({18,0,0})}, + FunctionInfo{612, nullptr, "SetButtonConfigRight", MakeVersionGate({18,0,0})}, + FunctionInfo{613, nullptr, "GetButtonConfigEmbedded", MakeVersionGate({18,0,0})}, + FunctionInfo{614, nullptr, "GetButtonConfigFull", MakeVersionGate({18,0,0})}, + FunctionInfo{615, nullptr, "GetButtonConfigLeft", MakeVersionGate({18,0,0})}, + FunctionInfo{616, nullptr, "GetButtonConfigRight", MakeVersionGate({18,0,0})}, FunctionInfo{650, nullptr, "AddButtonPlayData"}, FunctionInfo{651, nullptr, "StartButtonPlayData"}, FunctionInfo{652, nullptr, "StopButtonPlayData"}, - FunctionInfo{700, nullptr, "GetRailAttachEventCount"}, //21.0.0+ + FunctionInfo{700, nullptr, "GetRailAttachEventCount", MakeVersionGate({21,0,0})}, FunctionInfo{2000, nullptr, "DeactivateDigitizer"}, FunctionInfo{2001, nullptr, "SetDigitizerAutoPilotState"}, FunctionInfo{2002, nullptr, "UnsetDigitizerAutoPilotState"}, diff --git a/src/core/hle/service/hid/hid_server.cpp b/src/core/hle/service/hid/hid_server.cpp index 60d37089f1..18e57628d0 100644 --- a/src/core/hle/service/hid/hid_server.cpp +++ b/src/core/hle/service/hid/hid_server.cpp @@ -140,8 +140,8 @@ std::optional IHidServer::FindRequest(u3 FunctionInfo{308, nullptr, "SetSevenSixAxisSensorFusionStrength"}, FunctionInfo{309, nullptr, "GetSevenSixAxisSensorFusionStrength"}, FunctionInfo{310, C<&IHidServer::ResetSevenSixAxisSensorTimestamp>, "ResetSevenSixAxisSensorTimestamp"}, - FunctionInfo{320, nullptr, "EnableNpadImu"}, //21.0.0+ - FunctionInfo{321, nullptr, "DisableNpadImu"}, //21.0.0+ + FunctionInfo{320, nullptr, "EnableNpadImu", MakeVersionGate({21,0,0})}, + FunctionInfo{321, nullptr, "DisableNpadImu", MakeVersionGate({21,0,0})}, FunctionInfo{400, C<&IHidServer::IsUsbFullKeyControllerEnabled>, "IsUsbFullKeyControllerEnabled"}, FunctionInfo{401, nullptr, "EnableUsbFullKeyController"}, FunctionInfo{402, nullptr, "IsUsbFullKeyControllerConnected"}, @@ -230,11 +230,11 @@ std::optional IHidServer::FindRequest(u3 FunctionInfo{3009, nullptr, "GetFullKeyKeyboardMap"}, FunctionInfo{3010, nullptr, "SetFullKeyKeyboardMap"}, FunctionInfo{3011, nullptr, "ResetFullKeyKeyboardMap"}, - FunctionInfo{3012, nullptr, "GetDebugPadGenericPadMap"}, //21.0.0+ - FunctionInfo{3013, nullptr, "SetDebugPadGenericPadMap"}, //21.0.0+ - FunctionInfo{3014, nullptr, "GetDebugPadKeyboardMap"}, //21.0.0+ - FunctionInfo{3015, nullptr, "SetDebugPadKeyboardMap"}, //21.0.0+ - FunctionInfo{3150, C<&IHidServer::SetMouseLibraryVersion>, "SetMouseLibraryVersion"} //21.0.0+ + FunctionInfo{3012, nullptr, "GetDebugPadGenericPadMap", MakeVersionGate({21,0,0})}, + FunctionInfo{3013, nullptr, "SetDebugPadGenericPadMap", MakeVersionGate({21,0,0})}, + FunctionInfo{3014, nullptr, "GetDebugPadKeyboardMap", MakeVersionGate({21,0,0})}, + FunctionInfo{3015, nullptr, "SetDebugPadKeyboardMap", MakeVersionGate({21,0,0})}, + FunctionInfo{3150, C<&IHidServer::SetMouseLibraryVersion>, "SetMouseLibraryVersion", MakeVersionGate({21,0,0})} // What? -- {12010, nullptr, "SetButtonConfigLeft"}, ); return HandlerTableGenerateWithFind(key, functions); diff --git a/src/core/hle/service/hid/hid_system_server.h b/src/core/hle/service/hid/hid_system_server.h index 6dfaa13bf5..e5da7bbdac 100644 --- a/src/core/hle/service/hid/hid_system_server.h +++ b/src/core/hle/service/hid/hid_system_server.h @@ -154,9 +154,9 @@ private: FunctionInfo{328, nullptr, "AttachAbstractedPadToNpad"}, FunctionInfo{329, nullptr, "DetachAbstractedPadAll"}, FunctionInfo{330, nullptr, "CheckAbstractedPadConnection"}, - FunctionInfo{332, nullptr, "ConvertAppletDetailedUiTypeFromPlayReportType"}, //19.0.0+ - FunctionInfo{333, nullptr, "SetNpadUserSpgApplet"}, //20.0.0+ - FunctionInfo{334, nullptr, "AcquireUniquePadButtonStateChangedEventHandle"}, //20.0.0+ + FunctionInfo{332, nullptr, "ConvertAppletDetailedUiTypeFromPlayReportType", MakeVersionGate({19,0,0})}, + FunctionInfo{333, nullptr, "SetNpadUserSpgApplet", MakeVersionGate({20,0,0})}, + FunctionInfo{334, nullptr, "AcquireUniquePadButtonStateChangedEventHandle", MakeVersionGate({20,0,0})}, FunctionInfo{501, &IHidSystemServer::RegisterAppletResourceUserId, "RegisterAppletResourceUserId"}, FunctionInfo{502, &IHidSystemServer::UnregisterAppletResourceUserId, "UnregisterAppletResourceUserId"}, FunctionInfo{503, &IHidSystemServer::EnableAppletToGetInput, "EnableAppletToGetInput"}, @@ -185,12 +185,12 @@ private: FunctionInfo{547, nullptr, "GetAllowedBluetoothLinksCount"}, FunctionInfo{548, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevices"}, FunctionInfo{549, nullptr, "GetConnectableRegisteredDevices"}, - FunctionInfo{551, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevicesForControllerSupport"}, //20.0.0+ //mocked via 548 for Diablo 3 (at least) + FunctionInfo{551, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevicesForControllerSupport", MakeVersionGate({20,0,0})}, //mocked via 548 for Diablo 3 (at least) FunctionInfo{700, nullptr, "ActivateUniquePad"}, FunctionInfo{702, &IHidSystemServer::AcquireUniquePadConnectionEventHandle, "AcquireUniquePadConnectionEventHandle"}, FunctionInfo{703, &IHidSystemServer::GetUniquePadIds, "GetUniquePadIds"}, - FunctionInfo{711, nullptr, "AcquireUniquePadConnectionOnHandheldForNsEventHandle"}, //20.0.0+ - FunctionInfo{712, nullptr, "GetUniquePadColor12"}, //20.0.0+ + FunctionInfo{711, nullptr, "AcquireUniquePadConnectionOnHandheldForNsEventHandle", MakeVersionGate({20,0,0})}, + FunctionInfo{712, nullptr, "GetUniquePadColor12", MakeVersionGate({20,0,0})}, FunctionInfo{751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"}, FunctionInfo{800, nullptr, "ListSixAxisSensorHandles"}, FunctionInfo{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"}, @@ -257,8 +257,8 @@ private: FunctionInfo{1155, &IHidSystemServer::SetForceHandheldStyleVibration, "SetForceHandheldStyleVibration"}, FunctionInfo{1156, nullptr, "SendConnectionTriggerWithoutTimeoutEvent"}, FunctionInfo{1157, nullptr, "CancelConnectionTrigger"}, - FunctionInfo{1158, nullptr, "SetConnectionLimitForSplay"}, //20.1.0+ - FunctionInfo{1159, nullptr, "ClearConnectionLimitForSplay"}, //20.1.0+ + FunctionInfo{1158, nullptr, "SetConnectionLimitForSplay", MakeVersionGate({20,1,0})}, + FunctionInfo{1159, nullptr, "ClearConnectionLimitForSplay", MakeVersionGate({20,1,0})}, FunctionInfo{1200, nullptr, "IsButtonConfigSupported"}, FunctionInfo{1201, nullptr, "IsButtonConfigEmbeddedSupported"}, FunctionInfo{1202, nullptr, "DeleteButtonConfig"}, @@ -317,17 +317,17 @@ private: FunctionInfo{1289, nullptr, "SetButtonConfigStorageFull"}, FunctionInfo{1290, nullptr, "DeleteButtonConfigStorageRight"}, FunctionInfo{1291, nullptr, "DeleteButtonConfigStorageRight"}, - FunctionInfo{1308, nullptr, "SetButtonConfigVisible"}, //18.0.0+ - FunctionInfo{1309, nullptr, "IsButtonConfigVisible"}, //18.0.0+ - FunctionInfo{1320, nullptr, "WakeTouchScreenUp"}, //17.0.0+ - FunctionInfo{1321, nullptr, "PutTouchScreenToSleep"}, //17.0.0+ - FunctionInfo{1322, nullptr, "AcquireTouchScreenAsyncWakeCompletedEvent"}, //20.0.0+ - FunctionInfo{1323, nullptr, "StartTouchScreenAutoTuneForSystemSettings"}, //21.0.0+ - FunctionInfo{1324, nullptr, "AcquireTouchScreenAutoTuneCompletedEvent"}, //21.0.0+ - FunctionInfo{1325, nullptr, "IsTouchScreenAutoTuneRequiredForRepairProviderReplacement"}, //21.0.0+ - FunctionInfo{1326, nullptr, "SetTouchScreenOffset"}, //21.0.0+ - FunctionInfo{1420, nullptr, "GetAppletResourceProperty"}, //19.0.0+ - FunctionInfo{12010, nullptr, "SetButtonConfigLeft"} //11.0.0-17.0.1 + FunctionInfo{1308, nullptr, "SetButtonConfigVisible", MakeVersionGate({18,0,0})}, + FunctionInfo{1309, nullptr, "IsButtonConfigVisible", MakeVersionGate({18,0,0})}, + FunctionInfo{1320, nullptr, "WakeTouchScreenUp", MakeVersionGate({17,0,0})}, + FunctionInfo{1321, nullptr, "PutTouchScreenToSleep", MakeVersionGate({17,0,0})}, + FunctionInfo{1322, nullptr, "AcquireTouchScreenAsyncWakeCompletedEvent", MakeVersionGate({20,0,0})}, + FunctionInfo{1323, nullptr, "StartTouchScreenAutoTuneForSystemSettings", MakeVersionGate({21,0,0})}, + FunctionInfo{1324, nullptr, "AcquireTouchScreenAutoTuneCompletedEvent", MakeVersionGate({21,0,0})}, + FunctionInfo{1325, nullptr, "IsTouchScreenAutoTuneRequiredForRepairProviderReplacement", MakeVersionGate({21,0,0})}, + FunctionInfo{1326, nullptr, "SetTouchScreenOffset", MakeVersionGate({21,0,0})}, + FunctionInfo{1420, nullptr, "GetAppletResourceProperty", MakeVersionGate({19,0,0})}, + FunctionInfo{12010, nullptr, "SetButtonConfigLeft", MakeVersionGate({11,0,0}, {17,0,1})} ); Kernel::KEvent* acquire_connection_trigger_timeout_event; diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index 170886e16e..838fe85f79 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp @@ -81,7 +81,7 @@ private: static constexpr auto functions = CreateStaticMap( FunctionInfo{0, C<&ISystemServiceCreator::CreateSystemLocalCommunicationService>, "CreateSystemLocalCommunicationService"}, - FunctionInfo{1, C<&ISystemServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+ + FunctionInfo{1, C<&ISystemServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor", MakeVersionGate({18,0,0})} ); }; @@ -111,7 +111,7 @@ private: static constexpr auto functions = CreateStaticMap( FunctionInfo{0, D<&IUserServiceCreator::CreateUserLocalCommunicationService>, "CreateUserLocalCommunicationService"}, - FunctionInfo{1, D<&IUserServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+ + FunctionInfo{1, D<&IUserServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor", MakeVersionGate({18,0,0})} ); }; diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp index 1d3545e764..be8cdf9aa9 100644 --- a/src/core/hle/service/lm/lm.cpp +++ b/src/core/hle/service/lm/lm.cpp @@ -328,8 +328,8 @@ private: static constexpr auto functions = CreateStaticMap( FunctionInfo{0, &ILogger::Log, "Log"}, FunctionInfo{1, &ILogger::SetDestination, "SetDestination"}, - FunctionInfo{2, nullptr, "TransmitHashedLog"}, //20.0.0+ - FunctionInfo{3, nullptr, "DevNotify"} //20.0.0+ + FunctionInfo{2, nullptr, "TransmitHashedLog", MakeVersionGate({20,0,0})}, + FunctionInfo{3, nullptr, "DevNotify", MakeVersionGate({20,0,0})} ); ::Common::unordered_map> entries{}; LogDestination destination{LogDestination::All}; diff --git a/src/core/hle/service/mig/mig.cpp b/src/core/hle/service/mig/mig.cpp index f0bf21a70f..2560050622 100644 --- a/src/core/hle/service/mig/mig.cpp +++ b/src/core/hle/service/mig/mig.cpp @@ -21,42 +21,42 @@ public: } static constexpr auto functions = CreateStaticMap( - FunctionInfo{0, nullptr, "Unknown0"}, //19.0.0+ - FunctionInfo{1, nullptr, "Unknown1"}, //20.0.0+ - FunctionInfo{2, nullptr, "Unknown2"}, //20.0.0+ + FunctionInfo{0, nullptr, "Unknown0", MakeVersionGate({19,0,0})}, + FunctionInfo{1, nullptr, "Unknown1", MakeVersionGate({20,0,0})}, + FunctionInfo{2, nullptr, "Unknown2", MakeVersionGate({20,0,0})}, FunctionInfo{10, nullptr, "TryGetLastMigrationInfo"}, - FunctionInfo{11, nullptr, "Unknown11"}, //20.0.0+ - FunctionInfo{100, nullptr, "CreateUserMigrationServer"}, //7.0.0+ - FunctionInfo{101, nullptr, "ResumeUserMigrationServer"}, //7.0.0+ - FunctionInfo{200, nullptr, "CreateUserMigrationClient"}, //7.0.0+ - FunctionInfo{201, nullptr, "ResumeUserMigrationClient"}, //7.0.0+ - FunctionInfo{1001, nullptr, "GetSaveDataMigrationPolicyInfoAsync"}, //8.0.0-20.5.0 - FunctionInfo{1010, nullptr, "TryGetLastSaveDataMigrationInfo"}, //7.0.0+ - FunctionInfo{1100, nullptr, "CreateSaveDataMigrationServer"}, //7.0.0-19.0.1 - FunctionInfo{1101, nullptr, "ResumeSaveDataMigrationServer"}, //7.0.0+ - FunctionInfo{1110, nullptr, "Unknown1101"}, //17.0.0+ - FunctionInfo{1200, nullptr, "CreateSaveDataMigrationClient"}, //7.0.0+ - FunctionInfo{1201, nullptr, "ResumeSaveDataMigrationClient"}, //7.0.0+ - FunctionInfo{2001, nullptr, "Unknown2001"}, //20.0.0+ - FunctionInfo{2010, nullptr, "Unknown2010"}, //20.0.0+ - FunctionInfo{2100, nullptr, "Unknown2100"}, //20.0.0+ - FunctionInfo{2110, nullptr, "Unknown2110"}, //20.0.0+ - FunctionInfo{2200, nullptr, "Unknown2200"}, //20.0.0+ - FunctionInfo{2210, nullptr, "Unknown2210"}, //20.0.0+ - FunctionInfo{2220, nullptr, "Unknown2220"}, //20.0.0+ - FunctionInfo{2230, nullptr, "Unknown2230"}, //20.0.0+ - FunctionInfo{2231, nullptr, "Unknown2231"}, //20.0.0+ - FunctionInfo{2232, nullptr, "Unknown2232"}, //20.0.0+ - FunctionInfo{2233, nullptr, "Unknown2233"}, //20.0.0+ - FunctionInfo{2234, nullptr, "Unknown2234"}, //20.0.0+ - FunctionInfo{2250, nullptr, "Unknown2250"}, //20.0.0+ - FunctionInfo{2260, nullptr, "Unknown2260"}, //20.0.0+ - FunctionInfo{2270, nullptr, "Unknown2270"}, //20.0.0+ - FunctionInfo{2280, nullptr, "Unknown2280"}, //20.0.0+ - FunctionInfo{2300, nullptr, "Unknown2300"}, //20.0.0+ - FunctionInfo{2310, nullptr, "Unknown2310"}, //20.0.0+ - FunctionInfo{2400, nullptr, "Unknown2400"}, //20.0.0+ - FunctionInfo{2420, nullptr, "Unknown2420"} //20.0.0+ + FunctionInfo{11, nullptr, "Unknown11", MakeVersionGate({20,0,0})}, + FunctionInfo{100, nullptr, "CreateUserMigrationServer", MakeVersionGate({7,0,0})}, + FunctionInfo{101, nullptr, "ResumeUserMigrationServer", MakeVersionGate({7,0,0})}, + FunctionInfo{200, nullptr, "CreateUserMigrationClient", MakeVersionGate({7,0,0})}, + FunctionInfo{201, nullptr, "ResumeUserMigrationClient", MakeVersionGate({7,0,0})}, + FunctionInfo{1001, nullptr, "GetSaveDataMigrationPolicyInfoAsync", MakeVersionGate({8,0,0}, {20,5,0})}, + FunctionInfo{1010, nullptr, "TryGetLastSaveDataMigrationInfo", MakeVersionGate({7,0,0})}, + FunctionInfo{1100, nullptr, "CreateSaveDataMigrationServer", MakeVersionGate({7,0,0}, {19,0,1})}, + FunctionInfo{1101, nullptr, "ResumeSaveDataMigrationServer", MakeVersionGate({7,0,0})}, + FunctionInfo{1110, nullptr, "Unknown1101", MakeVersionGate({17,0,0})}, + FunctionInfo{1200, nullptr, "CreateSaveDataMigrationClient", MakeVersionGate({7,0,0})}, + FunctionInfo{1201, nullptr, "ResumeSaveDataMigrationClient", MakeVersionGate({7,0,0})}, + FunctionInfo{2001, nullptr, "Unknown2001", MakeVersionGate({20,0,0})}, + FunctionInfo{2010, nullptr, "Unknown2010", MakeVersionGate({20,0,0})}, + FunctionInfo{2100, nullptr, "Unknown2100", MakeVersionGate({20,0,0})}, + FunctionInfo{2110, nullptr, "Unknown2110", MakeVersionGate({20,0,0})}, + FunctionInfo{2200, nullptr, "Unknown2200", MakeVersionGate({20,0,0})}, + FunctionInfo{2210, nullptr, "Unknown2210", MakeVersionGate({20,0,0})}, + FunctionInfo{2220, nullptr, "Unknown2220", MakeVersionGate({20,0,0})}, + FunctionInfo{2230, nullptr, "Unknown2230", MakeVersionGate({20,0,0})}, + FunctionInfo{2231, nullptr, "Unknown2231", MakeVersionGate({20,0,0})}, + FunctionInfo{2232, nullptr, "Unknown2232", MakeVersionGate({20,0,0})}, + FunctionInfo{2233, nullptr, "Unknown2233", MakeVersionGate({20,0,0})}, + FunctionInfo{2234, nullptr, "Unknown2234", MakeVersionGate({20,0,0})}, + FunctionInfo{2250, nullptr, "Unknown2250", MakeVersionGate({20,0,0})}, + FunctionInfo{2260, nullptr, "Unknown2260", MakeVersionGate({20,0,0})}, + FunctionInfo{2270, nullptr, "Unknown2270", MakeVersionGate({20,0,0})}, + FunctionInfo{2280, nullptr, "Unknown2280", MakeVersionGate({20,0,0})}, + FunctionInfo{2300, nullptr, "Unknown2300", MakeVersionGate({20,0,0})}, + FunctionInfo{2310, nullptr, "Unknown2310", MakeVersionGate({20,0,0})}, + FunctionInfo{2400, nullptr, "Unknown2400", MakeVersionGate({20,0,0})}, + FunctionInfo{2420, nullptr, "Unknown2420", MakeVersionGate({20,0,0})} ); }; diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index bc938dacad..5befe8e943 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp @@ -493,7 +493,7 @@ private: FunctionInfo{23, nullptr, "SetKeptInSleep"}, FunctionInfo{24, nullptr, "RegisterSocketDescriptor"}, FunctionInfo{25, nullptr, "UnregisterSocketDescriptor"}, - FunctionInfo{26, nullptr, "GetNetworkAccessStatus"} //21.0.0+ + FunctionInfo{26, nullptr, "GetNetworkAccessStatus", MakeVersionGate({21,0,0})} ); KernelHelpers::ServiceContext service_context; @@ -1086,8 +1086,8 @@ std::optional IGeneralService::FindReque FunctionInfo{30, nullptr, "SetEthernetCommunicationEnabledForTest"}, FunctionInfo{31, nullptr, "GetTelemetorySystemEventReadableHandle"}, FunctionInfo{32, nullptr, "GetTelemetryInfo"}, - FunctionInfo{33, &IGeneralService::ConfirmSystemAvailability, "ConfirmSystemAvailability"}, // 2.0.0+ - FunctionInfo{34, &IGeneralService::SetBackgroundRequestEnabled, "SetBackgroundRequestEnabled"}, // 4.0.0+ + FunctionInfo{33, &IGeneralService::ConfirmSystemAvailability, "ConfirmSystemAvailability", MakeVersionGate({2,0,0})}, + FunctionInfo{34, &IGeneralService::SetBackgroundRequestEnabled, "SetBackgroundRequestEnabled", MakeVersionGate({4,0,0})}, FunctionInfo{35, &IGeneralService::GetScanDataV2, "GetScanData"}, FunctionInfo{36, &IGeneralService::GetCurrentAccessPoint, "GetCurrentAccessPoint"}, FunctionInfo{37, nullptr, "Shutdown"}, @@ -1097,13 +1097,13 @@ std::optional IGeneralService::FindReque FunctionInfo{41, nullptr, "GetAcceptableNetworkTypeFlag"}, FunctionInfo{42, nullptr, "NotifyConnectionStateChanged"}, FunctionInfo{43, nullptr, "SetWowlDelayedWakeTime"}, - FunctionInfo{44, nullptr, "IsWiredConnectionAvailable"}, // 18.0.0+ - FunctionInfo{45, nullptr, "IsNetworkEmulationFeatureEnabled"}, // 18.0.0+ - FunctionInfo{46, nullptr, "SelectActiveNetworkEmulationProfileIdForDebug"}, // 18.0.0+ - FunctionInfo{47, &IGeneralService::GetScanDataV3, "GetScanData"}, // 19.0.0+ - FunctionInfo{50, nullptr, "IsRewriteFeatureEnabled"}, // 18.0.0+ - FunctionInfo{51, nullptr, "CreateRewriteRule"}, // 18.0.0+ - FunctionInfo{52, nullptr, "DestroyRewriteRule"} // 18.0.0+ + FunctionInfo{44, nullptr, "IsWiredConnectionAvailable", MakeVersionGate({18,0,0})}, + FunctionInfo{45, nullptr, "IsNetworkEmulationFeatureEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{46, nullptr, "SelectActiveNetworkEmulationProfileIdForDebug", MakeVersionGate({18,0,0})}, + FunctionInfo{47, &IGeneralService::GetScanDataV3, "GetScanData", MakeVersionGate({19,0,0})}, + FunctionInfo{50, nullptr, "IsRewriteFeatureEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{51, nullptr, "CreateRewriteRule", MakeVersionGate({18,0,0})}, + FunctionInfo{52, nullptr, "DestroyRewriteRule", MakeVersionGate({18,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp index ea1394859e..c48bf54646 100644 --- a/src/core/hle/service/nim/nim.cpp +++ b/src/core/hle/service/nim/nim.cpp @@ -276,8 +276,8 @@ public: FunctionInfo{88, nullptr, "RequestAssignELicenses"}, FunctionInfo{89, nullptr, "RequestExtendELicenses"}, FunctionInfo{90, nullptr, "RequestSyncELicenses"}, - FunctionInfo{91, nullptr, "Unknown91"}, //6.0.0-14.1.2 - FunctionInfo{92, nullptr, "Unknown92"}, //21.0.0+ + FunctionInfo{91, nullptr, "Unknown91", MakeVersionGate({6,0,0}, {14,1,2})}, + FunctionInfo{92, nullptr, "Unknown92", MakeVersionGate({21,0,0})}, FunctionInfo{93, nullptr, "RequestReportActiveELicenses"}, FunctionInfo{94, nullptr, "RequestReportActiveELicensesPassively"}, FunctionInfo{95, nullptr, "RequestRegisterDynamicRightsNotificationToken"}, @@ -330,85 +330,85 @@ public: FunctionInfo{142, nullptr, "RequestCheckSafeSystemVersion"}, FunctionInfo{143, nullptr, "RequestApplicationIcon"}, FunctionInfo{144, nullptr, "RequestDownloadIdbeIconFile"}, - FunctionInfo{147, nullptr, "Unknown147"}, //18.0.0+ - FunctionInfo{148, nullptr, "Unknown148"}, //18.0.0+ - FunctionInfo{150, nullptr, "Unknown150"}, //19.0.0+ - FunctionInfo{151, nullptr, "Unknown151"}, //20.0.0+ - FunctionInfo{152, nullptr, "Unknown152"}, //20.0.0+ - FunctionInfo{153, nullptr, "Unknown153"}, //20.0.0+ - FunctionInfo{154, nullptr, "Unknown154"}, //20.0.0+ - FunctionInfo{155, nullptr, "Unknown155"}, //20.0.0+ - FunctionInfo{156, nullptr, "Unknown156"}, //20.0.0+ - FunctionInfo{157, nullptr, "Unknown157"}, //20.0.0+ - FunctionInfo{158, nullptr, "Unknown158"}, //20.0.0+ - FunctionInfo{159, nullptr, "Unknown159"}, //20.0.0+ - FunctionInfo{160, nullptr, "Unknown160"}, //20.0.0+ - FunctionInfo{161, nullptr, "Unknown161"}, //20.0.0+ - FunctionInfo{162, nullptr, "Unknown162"}, //20.0.0+ - FunctionInfo{163, nullptr, "Unknown163"}, //20.0.0+ - FunctionInfo{164, nullptr, "Unknown164"}, //20.0.0+ - FunctionInfo{165, nullptr, "Unknown165"}, //20.0.0+ - FunctionInfo{166, nullptr, "Unknown166"}, //20.0.0+ - FunctionInfo{167, nullptr, "Unknown167"}, //20.0.0+ - FunctionInfo{168, nullptr, "Unknown168"}, //20.0.0+ - FunctionInfo{169, nullptr, "Unknown169"}, //20.0.0+ - FunctionInfo{170, nullptr, "Unknown170"}, //20.0.0+ - FunctionInfo{171, nullptr, "Unknown171"}, //20.0.0+ - FunctionInfo{172, nullptr, "Unknown172"}, //20.0.0+ - FunctionInfo{173, nullptr, "Unknown173"}, //20.0.0+ - FunctionInfo{174, nullptr, "Unknown174"}, //20.0.0+ - FunctionInfo{175, nullptr, "Unknown175"}, //20.0.0+ - FunctionInfo{176, nullptr, "Unknown176"}, //20.0.0+ - FunctionInfo{177, nullptr, "Unknown177"}, //20.0.0+ - FunctionInfo{2000, nullptr, "Unknown2000"}, //20.0.0+ - FunctionInfo{2001, nullptr, "Unknown2001"}, //20.0.0+ - FunctionInfo{2002, nullptr, "Unknown2002"}, //20.0.0+ - FunctionInfo{2003, nullptr, "Unknown2003"}, //20.0.0+ - FunctionInfo{2004, nullptr, "Unknown2004"}, //20.0.0+ - FunctionInfo{2007, nullptr, "Unknown2007"}, //20.0.0+ - FunctionInfo{2011, nullptr, "Unknown2011"}, //20.0.0+ - FunctionInfo{2012, nullptr, "Unknown2012"}, //20.0.0+ - FunctionInfo{2013, nullptr, "Unknown2013"}, //20.0.0+ - FunctionInfo{2014, nullptr, "Unknown2014"}, //20.0.0+ - FunctionInfo{2015, nullptr, "Unknown2015"}, //20.0.0+ - FunctionInfo{2016, nullptr, "Unknown2016"}, //20.0.0+ - FunctionInfo{2017, nullptr, "Unknown2017"}, //20.0.0+ - FunctionInfo{2018, nullptr, "Unknown2018"}, //20.0.0+ - FunctionInfo{2019, nullptr, "Unknown2019"}, //20.0.0+ - FunctionInfo{2020, nullptr, "Unknown2020"}, //20.0.0+ - FunctionInfo{2021, nullptr, "Unknown2021"}, //20.0.0+ - FunctionInfo{2022, nullptr, "Unknown2022"}, //20.0.0+ - FunctionInfo{2023, nullptr, "Unknown2023"}, //20.0.0+ - FunctionInfo{2024, nullptr, "Unknown2024"}, //20.0.0+ - FunctionInfo{2025, nullptr, "Unknown2025"}, //20.0.0+ - FunctionInfo{2026, nullptr, "Unknown2026"}, //20.0.0+ - FunctionInfo{2027, nullptr, "Unknown2027"}, //20.0.0+ - FunctionInfo{2028, nullptr, "Unknown2028"}, //20.0.0+ - FunctionInfo{2029, nullptr, "Unknown2029"}, //20.0.0+ - FunctionInfo{2030, nullptr, "Unknown2030"}, //20.0.0+ - FunctionInfo{2031, nullptr, "Unknown2031"}, //20.0.0+ - FunctionInfo{2032, nullptr, "Unknown2032"}, //20.0.0+ - FunctionInfo{2033, nullptr, "Unknown2033"}, //20.0.0+ - FunctionInfo{2034, nullptr, "Unknown2034"}, //20.0.0+ - FunctionInfo{2035, nullptr, "Unknown2035"}, //20.0.0+ - FunctionInfo{2036, nullptr, "Unknown2036"}, //20.0.0+ - FunctionInfo{2037, nullptr, "Unknown2037"}, //20.0.0+ - FunctionInfo{2038, nullptr, "Unknown2038"}, //20.0.0+ - FunctionInfo{2039, nullptr, "Unknown2039"}, //20.0.0+ - FunctionInfo{2040, nullptr, "Unknown2040"}, //20.0.0+ - FunctionInfo{2041, nullptr, "Unknown2041"}, //20.0.0+ - FunctionInfo{2042, nullptr, "Unknown2042"}, //20.0.0+ - FunctionInfo{2043, nullptr, "Unknown2043"}, //20.0.0+ - FunctionInfo{2044, nullptr, "Unknown2044"}, //20.0.0+ - FunctionInfo{2045, nullptr, "Unknown2045"}, //20.0.0+ - FunctionInfo{2046, nullptr, "Unknown2046"}, //20.0.0+ - FunctionInfo{2047, nullptr, "Unknown2047"}, //20.0.0+ - FunctionInfo{2048, nullptr, "Unknown2048"}, //20.0.0+ - FunctionInfo{2049, nullptr, "Unknown2049"}, //20.0.0+ - FunctionInfo{2050, nullptr, "Unknown2050"}, //20.0.0+ - FunctionInfo{2051, nullptr, "Unknown2051"}, //20.0.0+ - FunctionInfo{3000, nullptr, "RequestLatestApplicationIcon"}, //17.0.0+ - FunctionInfo{3001, nullptr, "RequestDownloadIdbeLatestIconFile"} //17.0.0+ + FunctionInfo{147, nullptr, "Unknown147", MakeVersionGate({18,0,0})}, + FunctionInfo{148, nullptr, "Unknown148", MakeVersionGate({18,0,0})}, + FunctionInfo{150, nullptr, "Unknown150", MakeVersionGate({19,0,0})}, + FunctionInfo{151, nullptr, "Unknown151", MakeVersionGate({20,0,0})}, + FunctionInfo{152, nullptr, "Unknown152", MakeVersionGate({20,0,0})}, + FunctionInfo{153, nullptr, "Unknown153", MakeVersionGate({20,0,0})}, + FunctionInfo{154, nullptr, "Unknown154", MakeVersionGate({20,0,0})}, + FunctionInfo{155, nullptr, "Unknown155", MakeVersionGate({20,0,0})}, + FunctionInfo{156, nullptr, "Unknown156", MakeVersionGate({20,0,0})}, + FunctionInfo{157, nullptr, "Unknown157", MakeVersionGate({20,0,0})}, + FunctionInfo{158, nullptr, "Unknown158", MakeVersionGate({20,0,0})}, + FunctionInfo{159, nullptr, "Unknown159", MakeVersionGate({20,0,0})}, + FunctionInfo{160, nullptr, "Unknown160", MakeVersionGate({20,0,0})}, + FunctionInfo{161, nullptr, "Unknown161", MakeVersionGate({20,0,0})}, + FunctionInfo{162, nullptr, "Unknown162", MakeVersionGate({20,0,0})}, + FunctionInfo{163, nullptr, "Unknown163", MakeVersionGate({20,0,0})}, + FunctionInfo{164, nullptr, "Unknown164", MakeVersionGate({20,0,0})}, + FunctionInfo{165, nullptr, "Unknown165", MakeVersionGate({20,0,0})}, + FunctionInfo{166, nullptr, "Unknown166", MakeVersionGate({20,0,0})}, + FunctionInfo{167, nullptr, "Unknown167", MakeVersionGate({20,0,0})}, + FunctionInfo{168, nullptr, "Unknown168", MakeVersionGate({20,0,0})}, + FunctionInfo{169, nullptr, "Unknown169", MakeVersionGate({20,0,0})}, + FunctionInfo{170, nullptr, "Unknown170", MakeVersionGate({20,0,0})}, + FunctionInfo{171, nullptr, "Unknown171", MakeVersionGate({20,0,0})}, + FunctionInfo{172, nullptr, "Unknown172", MakeVersionGate({20,0,0})}, + FunctionInfo{173, nullptr, "Unknown173", MakeVersionGate({20,0,0})}, + FunctionInfo{174, nullptr, "Unknown174", MakeVersionGate({20,0,0})}, + FunctionInfo{175, nullptr, "Unknown175", MakeVersionGate({20,0,0})}, + FunctionInfo{176, nullptr, "Unknown176", MakeVersionGate({20,0,0})}, + FunctionInfo{177, nullptr, "Unknown177", MakeVersionGate({20,0,0})}, + FunctionInfo{2000, nullptr, "Unknown2000", MakeVersionGate({20,0,0})}, + FunctionInfo{2001, nullptr, "Unknown2001", MakeVersionGate({20,0,0})}, + FunctionInfo{2002, nullptr, "Unknown2002", MakeVersionGate({20,0,0})}, + FunctionInfo{2003, nullptr, "Unknown2003", MakeVersionGate({20,0,0})}, + FunctionInfo{2004, nullptr, "Unknown2004", MakeVersionGate({20,0,0})}, + FunctionInfo{2007, nullptr, "Unknown2007", MakeVersionGate({20,0,0})}, + FunctionInfo{2011, nullptr, "Unknown2011", MakeVersionGate({20,0,0})}, + FunctionInfo{2012, nullptr, "Unknown2012", MakeVersionGate({20,0,0})}, + FunctionInfo{2013, nullptr, "Unknown2013", MakeVersionGate({20,0,0})}, + FunctionInfo{2014, nullptr, "Unknown2014", MakeVersionGate({20,0,0})}, + FunctionInfo{2015, nullptr, "Unknown2015", MakeVersionGate({20,0,0})}, + FunctionInfo{2016, nullptr, "Unknown2016", MakeVersionGate({20,0,0})}, + FunctionInfo{2017, nullptr, "Unknown2017", MakeVersionGate({20,0,0})}, + FunctionInfo{2018, nullptr, "Unknown2018", MakeVersionGate({20,0,0})}, + FunctionInfo{2019, nullptr, "Unknown2019", MakeVersionGate({20,0,0})}, + FunctionInfo{2020, nullptr, "Unknown2020", MakeVersionGate({20,0,0})}, + FunctionInfo{2021, nullptr, "Unknown2021", MakeVersionGate({20,0,0})}, + FunctionInfo{2022, nullptr, "Unknown2022", MakeVersionGate({20,0,0})}, + FunctionInfo{2023, nullptr, "Unknown2023", MakeVersionGate({20,0,0})}, + FunctionInfo{2024, nullptr, "Unknown2024", MakeVersionGate({20,0,0})}, + FunctionInfo{2025, nullptr, "Unknown2025", MakeVersionGate({20,0,0})}, + FunctionInfo{2026, nullptr, "Unknown2026", MakeVersionGate({20,0,0})}, + FunctionInfo{2027, nullptr, "Unknown2027", MakeVersionGate({20,0,0})}, + FunctionInfo{2028, nullptr, "Unknown2028", MakeVersionGate({20,0,0})}, + FunctionInfo{2029, nullptr, "Unknown2029", MakeVersionGate({20,0,0})}, + FunctionInfo{2030, nullptr, "Unknown2030", MakeVersionGate({20,0,0})}, + FunctionInfo{2031, nullptr, "Unknown2031", MakeVersionGate({20,0,0})}, + FunctionInfo{2032, nullptr, "Unknown2032", MakeVersionGate({20,0,0})}, + FunctionInfo{2033, nullptr, "Unknown2033", MakeVersionGate({20,0,0})}, + FunctionInfo{2034, nullptr, "Unknown2034", MakeVersionGate({20,0,0})}, + FunctionInfo{2035, nullptr, "Unknown2035", MakeVersionGate({20,0,0})}, + FunctionInfo{2036, nullptr, "Unknown2036", MakeVersionGate({20,0,0})}, + FunctionInfo{2037, nullptr, "Unknown2037", MakeVersionGate({20,0,0})}, + FunctionInfo{2038, nullptr, "Unknown2038", MakeVersionGate({20,0,0})}, + FunctionInfo{2039, nullptr, "Unknown2039", MakeVersionGate({20,0,0})}, + FunctionInfo{2040, nullptr, "Unknown2040", MakeVersionGate({20,0,0})}, + FunctionInfo{2041, nullptr, "Unknown2041", MakeVersionGate({20,0,0})}, + FunctionInfo{2042, nullptr, "Unknown2042", MakeVersionGate({20,0,0})}, + FunctionInfo{2043, nullptr, "Unknown2043", MakeVersionGate({20,0,0})}, + FunctionInfo{2044, nullptr, "Unknown2044", MakeVersionGate({20,0,0})}, + FunctionInfo{2045, nullptr, "Unknown2045", MakeVersionGate({20,0,0})}, + FunctionInfo{2046, nullptr, "Unknown2046", MakeVersionGate({20,0,0})}, + FunctionInfo{2047, nullptr, "Unknown2047", MakeVersionGate({20,0,0})}, + FunctionInfo{2048, nullptr, "Unknown2048", MakeVersionGate({20,0,0})}, + FunctionInfo{2049, nullptr, "Unknown2049", MakeVersionGate({20,0,0})}, + FunctionInfo{2050, nullptr, "Unknown2050", MakeVersionGate({20,0,0})}, + FunctionInfo{2051, nullptr, "Unknown2051", MakeVersionGate({20,0,0})}, + FunctionInfo{3000, nullptr, "RequestLatestApplicationIcon", MakeVersionGate({17,0,0})}, + FunctionInfo{3001, nullptr, "RequestDownloadIdbeLatestIconFile", MakeVersionGate({17,0,0})} ); std::optional FindRequest(u32 key) override { return HandlerTableGenerateWithFind(key, functions); @@ -457,7 +457,7 @@ private: FunctionInfo{2, nullptr, "ClearDebugResponse"}, FunctionInfo{3, nullptr, "RegisterDebugResponse"}, FunctionInfo{4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"}, - FunctionInfo{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+ + FunctionInfo{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2", MakeVersionGate({17,0,0})} ); }; diff --git a/src/core/hle/service/npns/npns.cpp b/src/core/hle/service/npns/npns.cpp index a5b0bf7061..90bf633e8b 100644 --- a/src/core/hle/service/npns/npns.cpp +++ b/src/core/hle/service/npns/npns.cpp @@ -83,9 +83,9 @@ private: FunctionInfo{11, nullptr, "SubscribeTopic"}, FunctionInfo{12, nullptr, "UnsubscribeTopic"}, FunctionInfo{13, nullptr, "QueryIsTopicExist"}, - FunctionInfo{14, nullptr, "SubscribeTopicByAccount"}, // 18.0.0+ - FunctionInfo{15, nullptr, "UnsubscribeTopicByAccount"}, // 18.0.0+ - FunctionInfo{16, nullptr, "DownloadSubscriptionList"}, // 18.0.0+ + FunctionInfo{14, nullptr, "SubscribeTopicByAccount", MakeVersionGate({18,0,0})}, + FunctionInfo{15, nullptr, "UnsubscribeTopicByAccount", MakeVersionGate({18,0,0})}, + FunctionInfo{16, nullptr, "DownloadSubscriptionList", MakeVersionGate({18,0,0})}, FunctionInfo{21, nullptr, "CreateToken"}, FunctionInfo{22, nullptr, "CreateTokenWithApplicationId"}, FunctionInfo{23, nullptr, "DestroyToken"}, @@ -93,29 +93,29 @@ private: FunctionInfo{25, nullptr, "QueryIsTokenValid"}, FunctionInfo{26, nullptr, "ListenToMyApplicationId"}, FunctionInfo{27, nullptr, "DestroyTokenAll"}, - FunctionInfo{28, nullptr, "CreateTokenWithName"}, // 18.0.0+ - FunctionInfo{29, nullptr, "DestroyTokenWithName"}, // 18.0.0+ + FunctionInfo{28, nullptr, "CreateTokenWithName", MakeVersionGate({18,0,0})}, + FunctionInfo{29, nullptr, "DestroyTokenWithName", MakeVersionGate({18,0,0})}, FunctionInfo{31, nullptr, "UploadTokenToBaaS"}, FunctionInfo{32, nullptr, "DestroyTokenForBaaS"}, FunctionInfo{33, nullptr, "CreateTokenForBaaS"}, FunctionInfo{34, nullptr, "SetBaaSDeviceAccountIdList"}, - FunctionInfo{35, nullptr, "LinkNsaId"}, // 17.0.0+ - FunctionInfo{36, nullptr, "UnlinkNsaId"}, // 17.0.0+ - FunctionInfo{37, nullptr, "RelinkNsaId"}, // 18.0.0+ - FunctionInfo{40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"}, // 17.0.0+ - FunctionInfo{41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"}, // 17.0.0+ - FunctionInfo{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+ - FunctionInfo{43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+ - FunctionInfo{44, nullptr, "SetUidList"}, // 17.0.0+ - FunctionInfo{45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+ - FunctionInfo{51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+ + FunctionInfo{35, nullptr, "LinkNsaId", MakeVersionGate({17,0,0})}, + FunctionInfo{36, nullptr, "UnlinkNsaId", MakeVersionGate({17,0,0})}, + FunctionInfo{37, nullptr, "RelinkNsaId", MakeVersionGate({18,0,0})}, + FunctionInfo{40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent", MakeVersionGate({17,0,0})}, + FunctionInfo{41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid", MakeVersionGate({17,0,0})}, + FunctionInfo{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess", MakeVersionGate({17,0,0})}, + FunctionInfo{43, nullptr, "SetNetworkServiceAccountIdTokenFailure", MakeVersionGate({17,0,0})}, + FunctionInfo{44, nullptr, "SetUidList", MakeVersionGate({17,0,0})}, + FunctionInfo{45, nullptr, "PutDigitalTwinKeyValue", MakeVersionGate({17,0,0})}, + FunctionInfo{51, nullptr, "DeleteDigitalTwinKeyValue", MakeVersionGate({18,0,0})}, FunctionInfo{101, nullptr, "Suspend"}, FunctionInfo{102, nullptr, "Resume"}, FunctionInfo{103, C<&INpnsSystem::GetState>, "GetState"}, FunctionInfo{104, nullptr, "GetStatistics"}, FunctionInfo{105, nullptr, "GetPlayReportRequestEvent"}, - FunctionInfo{106, C<&INpnsSystem::GetLastNotifiedTime>, "GetLastNotifiedTime"}, // 18.0.0+ - FunctionInfo{107, nullptr, "SetLastNotifiedTime"}, // 18.0.0+ + FunctionInfo{106, C<&INpnsSystem::GetLastNotifiedTime>, "GetLastNotifiedTime", MakeVersionGate({18,0,0})}, + FunctionInfo{107, nullptr, "SetLastNotifiedTime", MakeVersionGate({18,0,0})}, FunctionInfo{111, nullptr, "GetJid"}, FunctionInfo{112, nullptr, "CreateJid"}, FunctionInfo{113, nullptr, "DestroyJid"}, @@ -127,17 +127,17 @@ private: FunctionInfo{153, nullptr, "GetDropEventWithHandover"}, FunctionInfo{154, nullptr, "CreateTokenAsync"}, FunctionInfo{155, nullptr, "CreateTokenAsyncWithApplicationId"}, - FunctionInfo{156, nullptr, "CreateTokenWithNameAsync"}, // 18.0.0+ - FunctionInfo{161, C<&INpnsSystem::GetRequestChangeStateCancelEvent>, "GetRequestChangeStateCancelEvent"}, // 10.0.0+ + FunctionInfo{156, nullptr, "CreateTokenWithNameAsync", MakeVersionGate({18,0,0})}, + FunctionInfo{161, C<&INpnsSystem::GetRequestChangeStateCancelEvent>, "GetRequestChangeStateCancelEvent", MakeVersionGate({10,0,0})}, FunctionInfo{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"}, FunctionInfo{201, nullptr, "RequestChangeStateForceTimed"}, FunctionInfo{202, nullptr, "RequestChangeStateForceAsync"}, - FunctionInfo{301, nullptr, "GetPassword"}, // 18.0.0+ - FunctionInfo{302, nullptr, "GetAllImmigration"}, // 18.0.0+ - FunctionInfo{303, nullptr, "GetNotificationHistories"}, // 18.0.0+ - FunctionInfo{304, nullptr, "GetPersistentConnectionSummary"}, // 18.0.0+ - FunctionInfo{305, nullptr, "GetDigitalTwinSummary"}, // 18.0.0+ - FunctionInfo{306, nullptr, "GetDigitalTwinValue"} // 18.0.0+ + FunctionInfo{301, nullptr, "GetPassword", MakeVersionGate({18,0,0})}, + FunctionInfo{302, nullptr, "GetAllImmigration", MakeVersionGate({18,0,0})}, + FunctionInfo{303, nullptr, "GetNotificationHistories", MakeVersionGate({18,0,0})}, + FunctionInfo{304, nullptr, "GetPersistentConnectionSummary", MakeVersionGate({18,0,0})}, + FunctionInfo{305, nullptr, "GetDigitalTwinSummary", MakeVersionGate({18,0,0})}, + FunctionInfo{306, nullptr, "GetDigitalTwinValue", MakeVersionGate({18,0,0})} ); KernelHelpers::ServiceContext service_context; Event get_receive_event; @@ -177,7 +177,7 @@ private: FunctionInfo{4, nullptr, "ReceiveRaw"}, FunctionInfo{5, C<&INpnsUser::GetReceiveEvent>, "GetReceiveEvent"}, FunctionInfo{7, nullptr, "GetStateChangeEvent"}, - FunctionInfo{8, C<&INpnsUser::ListenToByName>, "ListenToByName"}, // 18.0.0+ + FunctionInfo{8, C<&INpnsUser::ListenToByName>, "ListenToByName", MakeVersionGate({18,0,0})}, FunctionInfo{21, nullptr, "CreateToken"}, FunctionInfo{23, nullptr, "DestroyToken"}, FunctionInfo{25, nullptr, "QueryIsTokenValid"}, diff --git a/src/core/hle/service/ns/application_manager_interface.cpp b/src/core/hle/service/ns/application_manager_interface.cpp index 18485fae24..7220c52dcb 100644 --- a/src/core/hle/service/ns/application_manager_interface.cpp +++ b/src/core/hle/service/ns/application_manager_interface.cpp @@ -133,26 +133,26 @@ std::optional IApplicationManagerInterfa FunctionInfo{406, nullptr, "GetApplicationControlProperty"}, FunctionInfo{407, &IApplicationManagerInterface::ListApplicationTitle, "ListApplicationTitle"}, FunctionInfo{408, &IApplicationManagerInterface::ListApplicationIcon, "ListApplicationIcon"}, - FunctionInfo{411, nullptr, "Unknown411"}, //19.0.0+ - FunctionInfo{412, nullptr, "Unknown412"}, //19.0.0+ - FunctionInfo{413, nullptr, "Unknown413"}, //19.0.0+ - FunctionInfo{414, nullptr, "Unknown414"}, //19.0.0+ - FunctionInfo{415, nullptr, "Unknown415"}, //19.0.0+ - FunctionInfo{416, nullptr, "Unknown416"}, //19.0.0+ - FunctionInfo{417, nullptr, "InvalidateAllApplicationControlCacheOfTheStage"}, //19.0.0+ - FunctionInfo{418, nullptr, "InvalidateApplicationControlCacheOfTheStage"}, //19.0.0+ + FunctionInfo{411, nullptr, "Unknown411", MakeVersionGate({19,0,0})}, + FunctionInfo{412, nullptr, "Unknown412", MakeVersionGate({19,0,0})}, + FunctionInfo{413, nullptr, "Unknown413", MakeVersionGate({19,0,0})}, + FunctionInfo{414, nullptr, "Unknown414", MakeVersionGate({19,0,0})}, + FunctionInfo{415, nullptr, "Unknown415", MakeVersionGate({19,0,0})}, + FunctionInfo{416, nullptr, "Unknown416", MakeVersionGate({19,0,0})}, + FunctionInfo{417, nullptr, "InvalidateAllApplicationControlCacheOfTheStage", MakeVersionGate({19,0,0})}, + FunctionInfo{418, nullptr, "InvalidateApplicationControlCacheOfTheStage", MakeVersionGate({19,0,0})}, FunctionInfo{419, D<&IApplicationManagerInterface::RequestDownloadApplicationControlDataInBackground>, "RequestDownloadApplicationControlDataInBackground"}, FunctionInfo{420, nullptr, "CloneApplicationControlDataCacheForDebug"}, - FunctionInfo{421, nullptr, "Unknown421"}, //20.0.0+ - FunctionInfo{422, nullptr, "Unknown422"}, //20.0.0+ - FunctionInfo{423, nullptr, "Unknown423"}, //20.0.0+ - FunctionInfo{424, nullptr, "Unknown424"}, //20.0.0+ - FunctionInfo{425, nullptr, "Unknown425"}, //20.0.0+ - FunctionInfo{426, nullptr, "Unknown426"}, //20.0.0+ - FunctionInfo{427, nullptr, "Unknown427"}, //20.0.0+ - FunctionInfo{428, nullptr, "Unknown428"}, //21.0.0+ - FunctionInfo{429, nullptr, "Unknown429"}, //21.0.0+ - FunctionInfo{430, nullptr, "Unknown430"}, //21.0.0+ + FunctionInfo{421, nullptr, "Unknown421", MakeVersionGate({20,0,0})}, + FunctionInfo{422, nullptr, "Unknown422", MakeVersionGate({20,0,0})}, + FunctionInfo{423, nullptr, "Unknown423", MakeVersionGate({20,0,0})}, + FunctionInfo{424, nullptr, "Unknown424", MakeVersionGate({20,0,0})}, + FunctionInfo{425, nullptr, "Unknown425", MakeVersionGate({20,0,0})}, + FunctionInfo{426, nullptr, "Unknown426", MakeVersionGate({20,0,0})}, + FunctionInfo{427, nullptr, "Unknown427", MakeVersionGate({20,0,0})}, + FunctionInfo{428, nullptr, "Unknown428", MakeVersionGate({21,0,0})}, + FunctionInfo{429, nullptr, "Unknown429", MakeVersionGate({21,0,0})}, + FunctionInfo{430, nullptr, "Unknown430", MakeVersionGate({21,0,0})}, FunctionInfo{502, nullptr, "RequestCheckGameCardRegistration"}, FunctionInfo{503, nullptr, "RequestGameCardRegistrationGoldPoint"}, FunctionInfo{504, nullptr, "RequestRegisterGameCard"}, @@ -164,13 +164,13 @@ std::optional IApplicationManagerInterfa FunctionInfo{510, nullptr, "GetGameCardPlatformRegion"}, FunctionInfo{511, D<&IApplicationManagerInterface::GetGameCardWakenReadyEvent>, "GetGameCardWakenReadyEvent"}, FunctionInfo{512, D<&IApplicationManagerInterface::IsGameCardApplicationRunning>, "IsGameCardApplicationRunning"}, - FunctionInfo{513, nullptr, "Unknown513"}, //20.0.0+ - FunctionInfo{514, nullptr, "Unknown514"}, //20.0.0+ - FunctionInfo{515, nullptr, "Unknown515"}, //20.0.0+ - FunctionInfo{516, nullptr, "Unknown516"}, //21.0.0+ - FunctionInfo{517, nullptr, "Unknown517"}, //21.0.0+ - FunctionInfo{518, nullptr, "Unknown518"}, //21.0.0+ - FunctionInfo{519, nullptr, "Unknown519"}, //21.0.0+ + FunctionInfo{513, nullptr, "Unknown513", MakeVersionGate({20,0,0})}, + FunctionInfo{514, nullptr, "Unknown514", MakeVersionGate({20,0,0})}, + FunctionInfo{515, nullptr, "Unknown515", MakeVersionGate({20,0,0})}, + FunctionInfo{516, nullptr, "Unknown516", MakeVersionGate({21,0,0})}, + FunctionInfo{517, nullptr, "Unknown517", MakeVersionGate({21,0,0})}, + FunctionInfo{518, nullptr, "Unknown518", MakeVersionGate({21,0,0})}, + FunctionInfo{519, nullptr, "Unknown519", MakeVersionGate({21,0,0})}, FunctionInfo{600, nullptr, "CountApplicationContentMeta"}, FunctionInfo{601, nullptr, "ListApplicationContentMetaStatus"}, FunctionInfo{602, nullptr, "ListAvailableAddOnContent"}, @@ -208,22 +208,22 @@ std::optional IApplicationManagerInterfa FunctionInfo{914, nullptr, "HideApplicationRecord"}, FunctionInfo{915, nullptr, "ShowApplicationRecord"}, FunctionInfo{916, nullptr, "IsApplicationAutoDeleteDisabled"}, - FunctionInfo{916, nullptr, "Unknown916"}, //20.0.0+ - FunctionInfo{917, nullptr, "Unknown917"}, //20.0.0+ - FunctionInfo{918, nullptr, "Unknown918"}, //20.0.0+ - FunctionInfo{919, nullptr, "Unknown919"}, //20.0.0+ - FunctionInfo{920, nullptr, "Unknown920"}, //20.0.0+ - FunctionInfo{921, nullptr, "Unknown921"}, //20.0.0+ - FunctionInfo{922, nullptr, "Unknown922"}, //20.0.0+ - FunctionInfo{923, nullptr, "Unknown923"}, //20.0.0+ - FunctionInfo{928, nullptr, "Unknown928"}, //20.0.0+ - FunctionInfo{929, nullptr, "Unknown929"}, //20.0.0+ - FunctionInfo{930, nullptr, "Unknown930"}, //20.0.0+ - FunctionInfo{931, nullptr, "Unknown931"}, //20.0.0+ - FunctionInfo{933, nullptr, "Unknown933"}, //20.0.0+ - FunctionInfo{934, nullptr, "Unknown934"}, //21.0.0+ - FunctionInfo{935, nullptr, "Unknown935"}, //21.0.0+ - FunctionInfo{936, D<&IApplicationManagerInterface::Unknown936>, "Unknown936"}, //21.0.0+ + FunctionInfo{916, nullptr, "Unknown916", MakeVersionGate({20,0,0})}, + FunctionInfo{917, nullptr, "Unknown917", MakeVersionGate({20,0,0})}, + FunctionInfo{918, nullptr, "Unknown918", MakeVersionGate({20,0,0})}, + FunctionInfo{919, nullptr, "Unknown919", MakeVersionGate({20,0,0})}, + FunctionInfo{920, nullptr, "Unknown920", MakeVersionGate({20,0,0})}, + FunctionInfo{921, nullptr, "Unknown921", MakeVersionGate({20,0,0})}, + FunctionInfo{922, nullptr, "Unknown922", MakeVersionGate({20,0,0})}, + FunctionInfo{923, nullptr, "Unknown923", MakeVersionGate({20,0,0})}, + FunctionInfo{928, nullptr, "Unknown928", MakeVersionGate({20,0,0})}, + FunctionInfo{929, nullptr, "Unknown929", MakeVersionGate({20,0,0})}, + FunctionInfo{930, nullptr, "Unknown930", MakeVersionGate({20,0,0})}, + FunctionInfo{931, nullptr, "Unknown931", MakeVersionGate({20,0,0})}, + FunctionInfo{933, nullptr, "Unknown933", MakeVersionGate({20,0,0})}, + FunctionInfo{934, nullptr, "Unknown934", MakeVersionGate({21,0,0})}, + FunctionInfo{935, nullptr, "Unknown935", MakeVersionGate({21,0,0})}, + FunctionInfo{936, D<&IApplicationManagerInterface::Unknown936>, "Unknown936", MakeVersionGate({21,0,0})}, FunctionInfo{1000, nullptr, "RequestVerifyApplicationDeprecated"}, FunctionInfo{1001, nullptr, "CorruptApplicationForDebug"}, FunctionInfo{1002, nullptr, "RequestVerifyAddOnContentsRights"}, @@ -252,11 +252,11 @@ std::optional IApplicationManagerInterfa FunctionInfo{1504, nullptr, "InsertSdCard"}, FunctionInfo{1505, nullptr, "RemoveSdCard"}, FunctionInfo{1506, nullptr, "GetSdCardStartupStatus"}, - FunctionInfo{1508, nullptr, "Unknown1508"}, //20.0.0+ - FunctionInfo{1509, nullptr, "Unknown1509"}, //20.0.0+ - FunctionInfo{1510, nullptr, "Unknown1510"}, //20.0.0+ - FunctionInfo{1511, nullptr, "Unknown1511"}, //20.0.0+ - FunctionInfo{1512, nullptr, "Unknown1512"}, //20.0.0+ + FunctionInfo{1508, nullptr, "Unknown1508", MakeVersionGate({20,0,0})}, + FunctionInfo{1509, nullptr, "Unknown1509", MakeVersionGate({20,0,0})}, + FunctionInfo{1510, nullptr, "Unknown1510", MakeVersionGate({20,0,0})}, + FunctionInfo{1511, nullptr, "Unknown1511", MakeVersionGate({20,0,0})}, + FunctionInfo{1512, nullptr, "Unknown1512", MakeVersionGate({20,0,0})}, FunctionInfo{1600, nullptr, "GetSystemSeedForPseudoDeviceId"}, FunctionInfo{1601, nullptr, "ResetSystemSeedForPseudoDeviceId"}, FunctionInfo{1700, nullptr, "ListApplicationDownloadingContentMeta"}, @@ -293,11 +293,11 @@ std::optional IApplicationManagerInterfa FunctionInfo{2016, nullptr, "ListNotCommittedContentMeta"}, FunctionInfo{2017, nullptr, "CreateDownloadTask"}, FunctionInfo{2018, nullptr, "GetApplicationDeliveryInfoHash"}, - FunctionInfo{2019, nullptr, "Unknown2019"}, //20.0.0+ + FunctionInfo{2019, nullptr, "Unknown2019", MakeVersionGate({20,0,0})}, FunctionInfo{2050, D<&IApplicationManagerInterface::GetApplicationRightsOnClient>, "GetApplicationRightsOnClient"}, FunctionInfo{2051, nullptr, "InvalidateRightsIdCache"}, - FunctionInfo{2052, nullptr, "Unknown2052"}, //20.0.0+ - FunctionInfo{2053, nullptr, "Unknown2053"}, //20.0.0+ + FunctionInfo{2052, nullptr, "Unknown2052", MakeVersionGate({20,0,0})}, + FunctionInfo{2053, nullptr, "Unknown2053", MakeVersionGate({20,0,0})}, FunctionInfo{2100, D<&IApplicationManagerInterface::GetApplicationTerminateResult>, "GetApplicationTerminateResult"}, FunctionInfo{2101, nullptr, "GetRawApplicationTerminateResult"}, FunctionInfo{2150, nullptr, "CreateRightsEnvironment"}, @@ -314,7 +314,7 @@ std::optional IApplicationManagerInterfa FunctionInfo{2180, nullptr, "RequestExtendRightsInRightsEnvironment"}, FunctionInfo{2181, nullptr, "GetResultOfExtendRightsInRightsEnvironment"}, FunctionInfo{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"}, - FunctionInfo{2183, nullptr, "Unknown2183"}, //20.1.0+ + FunctionInfo{2183, nullptr, "Unknown2183", MakeVersionGate({20,1,0})}, FunctionInfo{2190, nullptr, "GetRightsEnvironmentHandleForApplication"}, FunctionInfo{2199, nullptr, "GetRightsEnvironmentCountForDebug"}, FunctionInfo{2200, nullptr, "GetGameCardApplicationCopyIdentifier"}, @@ -331,16 +331,16 @@ std::optional IApplicationManagerInterfa FunctionInfo{2357, nullptr, "EnableMultiCoreDownload"}, FunctionInfo{2358, nullptr, "DisableMultiCoreDownload"}, FunctionInfo{2359, nullptr, "IsMultiCoreDownloadEnabled"}, - FunctionInfo{2360, nullptr, "GetApplicationDownloadTaskCount"}, //19.0.0+ - FunctionInfo{2361, nullptr, "GetMaxApplicationDownloadTaskCount"}, //19.0.0+ - FunctionInfo{2362, nullptr, "Unknown2362"}, //20.0.0+ - FunctionInfo{2363, nullptr, "Unknown2363"}, //20.0.0+ - FunctionInfo{2364, nullptr, "Unknown2364"}, //20.0.0+ - FunctionInfo{2365, nullptr, "Unknown2365"}, //20.0.0+ - FunctionInfo{2366, nullptr, "Unknown2366"}, //20.0.0+ - FunctionInfo{2367, nullptr, "Unknown2367"}, //20.0.0+ - FunctionInfo{2368, nullptr, "Unknown2368"}, //20.0.0+ - FunctionInfo{2369, nullptr, "Unknown2369"}, //21.0.0+ + FunctionInfo{2360, nullptr, "GetApplicationDownloadTaskCount", MakeVersionGate({19,0,0})}, + FunctionInfo{2361, nullptr, "GetMaxApplicationDownloadTaskCount", MakeVersionGate({19,0,0})}, + FunctionInfo{2362, nullptr, "Unknown2362", MakeVersionGate({20,0,0})}, + FunctionInfo{2363, nullptr, "Unknown2363", MakeVersionGate({20,0,0})}, + FunctionInfo{2364, nullptr, "Unknown2364", MakeVersionGate({20,0,0})}, + FunctionInfo{2365, nullptr, "Unknown2365", MakeVersionGate({20,0,0})}, + FunctionInfo{2366, nullptr, "Unknown2366", MakeVersionGate({20,0,0})}, + FunctionInfo{2367, nullptr, "Unknown2367", MakeVersionGate({20,0,0})}, + FunctionInfo{2368, nullptr, "Unknown2368", MakeVersionGate({20,0,0})}, + FunctionInfo{2369, nullptr, "Unknown2369", MakeVersionGate({21,0,0})}, FunctionInfo{2400, nullptr, "GetPromotionInfo"}, FunctionInfo{2401, nullptr, "CountPromotionInfo"}, FunctionInfo{2402, nullptr, "ListPromotionInfo"}, @@ -359,9 +359,9 @@ std::optional IApplicationManagerInterfa FunctionInfo{2520, D<&IApplicationManagerInterface::IsQualificationTransitionSupportedByProcessId>, "IsQualificationTransitionSupportedByProcessId"}, FunctionInfo{2521, nullptr, "GetRightsUserChangedEvent"}, FunctionInfo{2522, nullptr, "IsRomRedirectionAvailable"}, - FunctionInfo{2523, nullptr, "GetProgramId"}, //17.0.0+ - FunctionInfo{2524, nullptr, "Unknown2524"}, //19.0.0+ - FunctionInfo{2525, nullptr, "Unknown2525"}, //20.0.0+ + FunctionInfo{2523, nullptr, "GetProgramId", MakeVersionGate({17,0,0})}, + FunctionInfo{2524, nullptr, "Unknown2524", MakeVersionGate({19,0,0})}, + FunctionInfo{2525, nullptr, "Unknown2525", MakeVersionGate({20,0,0})}, FunctionInfo{2800, nullptr, "GetApplicationIdOfPreomia"}, FunctionInfo{3000, nullptr, "RegisterDeviceLockKey"}, FunctionInfo{3001, nullptr, "UnregisterDeviceLockKey"}, @@ -379,100 +379,100 @@ std::optional IApplicationManagerInterfa FunctionInfo{3013, nullptr, "IsGameCardEnabled"}, FunctionInfo{3014, nullptr, "IsLocalContentShareEnabled"}, FunctionInfo{3050, nullptr, "ListAssignELicenseTaskResult"}, - FunctionInfo{3104, nullptr, "GetApplicationNintendoLogo"}, //18.0.0+ - FunctionInfo{3105, nullptr, "GetApplicationStartupMovie"}, //18.0.0+ - FunctionInfo{4000, nullptr, "Unknown4000"}, //20.0.0+ - FunctionInfo{4004, nullptr, "Unknown4004"}, //20.0.0+ - FunctionInfo{4006, nullptr, "Unknown4006"}, //20.0.0+ - FunctionInfo{4007, nullptr, "Unknown4007"}, //20.0.0+ - FunctionInfo{4008, nullptr, "Unknown4008"}, //20.0.0+ - FunctionInfo{4009, nullptr, "Unknown4009"}, //20.0.0+ - FunctionInfo{4010, nullptr, "Unknown4010"}, //20.0.0+ - FunctionInfo{4011, nullptr, "Unknown4011"}, //20.0.0+ - FunctionInfo{4012, nullptr, "Unknown4012"}, //20.0.0+ - FunctionInfo{4013, nullptr, "Unknown4013"}, //20.0.0+ - FunctionInfo{4015, nullptr, "Unknown4015"}, //20.0.0+ - FunctionInfo{4017, nullptr, "Unknown4017"}, //20.0.0+ - FunctionInfo{4019, nullptr, "Unknown4019"}, //20.0.0+ - FunctionInfo{4020, nullptr, "Unknown4020"}, //20.0.0+ - FunctionInfo{4021, nullptr, "Unknown4021"}, //20.0.0+ - FunctionInfo{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022"}, //20.0.0+ - FunctionInfo{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023"}, //20.0.0+ - FunctionInfo{4024, nullptr, "Unknown4024"}, //20.0.0+ - FunctionInfo{4025, nullptr, "Unknown4025"}, //20.0.0+ - FunctionInfo{4026, nullptr, "Unknown4026"}, //20.0.0+ - FunctionInfo{4027, nullptr, "Unknown4027"}, //20.0.0+ - FunctionInfo{4028, nullptr, "Unknown4028"}, //20.0.0+ - FunctionInfo{4029, nullptr, "Unknown4029"}, //20.0.0+ - FunctionInfo{4030, nullptr, "Unknown4030"}, //20.0.0+ - FunctionInfo{4031, nullptr, "Unknown4031"}, //20.0.0+ - FunctionInfo{4032, nullptr, "Unknown4032"}, //20.0.0+ - FunctionInfo{4033, nullptr, "Unknown4033"}, //20.0.0+ - FunctionInfo{4034, nullptr, "Unknown4034"}, //20.0.0+ - FunctionInfo{4035, nullptr, "Unknown4035"}, //20.0.0+ - FunctionInfo{4037, nullptr, "Unknown4037"}, //20.0.0+ - FunctionInfo{4038, nullptr, "Unknown4038"}, //20.0.0+ - FunctionInfo{4039, nullptr, "Unknown4039"}, //20.0.0+ - FunctionInfo{4040, nullptr, "Unknown4040"}, //20.0.0+ - FunctionInfo{4041, nullptr, "Unknown4041"}, //20.0.0+ - FunctionInfo{4042, D<&IApplicationManagerInterface::Unknown4042>, "Unknown4042"}, //20.0.0+ - FunctionInfo{4043, nullptr, "Unknown4043"}, //20.0.0+ - FunctionInfo{4044, nullptr, "Unknown4044"}, //20.0.0+ - FunctionInfo{4045, nullptr, "Unknown4045"}, //20.0.0+ - FunctionInfo{4046, nullptr, "Unknown4046"}, //20.0.0+ - FunctionInfo{4049, nullptr, "Unknown4049"}, //20.0.0+ - FunctionInfo{4050, nullptr, "Unknown4050"}, //20.0.0+ - FunctionInfo{4051, nullptr, "Unknown4051"}, //20.0.0+ - FunctionInfo{4052, nullptr, "Unknown4052"}, //20.0.0+ - FunctionInfo{4053, D<&IApplicationManagerInterface::Unknown4053>, "Unknown4053"}, //20.0.0+ - FunctionInfo{4054, nullptr, "Unknown4054"}, //20.0.0+ - FunctionInfo{4055, nullptr, "Unknown4055"}, //20.0.0+ - FunctionInfo{4056, nullptr, "Unknown4056"}, //20.0.0+ - FunctionInfo{4057, nullptr, "Unknown4057"}, //20.0.0+ - FunctionInfo{4058, nullptr, "Unknown4058"}, //20.0.0+ - FunctionInfo{4059, nullptr, "Unknown4059"}, //20.0.0+ - FunctionInfo{4060, nullptr, "Unknown4060"}, //20.0.0+ - FunctionInfo{4061, nullptr, "Unknown4061"}, //20.0.0+ - FunctionInfo{4062, nullptr, "Unknown4062"}, //20.0.0+ - FunctionInfo{4063, nullptr, "Unknown4063"}, //20.0.0+ - FunctionInfo{4064, nullptr, "Unknown4064"}, //20.0.0+ - FunctionInfo{4065, nullptr, "Unknown4065"}, //20.0.0+ - FunctionInfo{4066, nullptr, "Unknown4066"}, //20.0.0+ - FunctionInfo{4067, nullptr, "Unknown4067"}, //20.0.0+ - FunctionInfo{4068, nullptr, "Unknown4068"}, //20.0.0+ - FunctionInfo{4069, nullptr, "Unknown4069"}, //20.0.0+ - FunctionInfo{4070, nullptr, "Unknown4070"}, //20.0.0+ - FunctionInfo{4071, nullptr, "Unknown4071"}, //20.0.0+ - FunctionInfo{4072, nullptr, "Unknown4072"}, //20.0.0+ - FunctionInfo{4073, nullptr, "Unknown4073"}, //20.0.0+ - FunctionInfo{4074, nullptr, "Unknown4074"}, //20.0.0+ - FunctionInfo{4075, nullptr, "Unknown4075"}, //20.0.0+ - FunctionInfo{4076, nullptr, "Unknown4076"}, //20.0.0+ - FunctionInfo{4077, nullptr, "Unknown4077"}, //20.0.0+ - FunctionInfo{4078, nullptr, "Unknown4078"}, //20.0.0+ - FunctionInfo{4079, nullptr, "Unknown4079"}, //20.0.0+ - FunctionInfo{4080, nullptr, "Unknown4080"}, //20.0.0+ - FunctionInfo{4081, nullptr, "Unknown4081"}, //20.0.0+ - FunctionInfo{4083, nullptr, "Unknown4083"}, //20.0.0+ - FunctionInfo{4084, nullptr, "Unknown4084"}, //20.0.0+ - FunctionInfo{4085, nullptr, "Unknown4085"}, //20.0.0+ - FunctionInfo{4086, nullptr, "Unknown4086"}, //20.0.0+ - FunctionInfo{4087, nullptr, "Unknown4087"}, //20.0.0+ - FunctionInfo{4088, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4088"}, //20.0.0+ - FunctionInfo{4089, nullptr, "Unknown4089"}, //20.0.0+ - FunctionInfo{4090, nullptr, "Unknown4090"}, //20.0.0+ - FunctionInfo{4091, nullptr, "Unknown4091"}, //20.0.0+ - FunctionInfo{4092, nullptr, "Unknown4092"}, //20.0.0+ - FunctionInfo{4093, nullptr, "Unknown4093"}, //20.0.0+ - FunctionInfo{4094, nullptr, "Unknown4094"}, //20.0.0+ - FunctionInfo{4095, nullptr, "Unknown4095"}, //20.0.0+ - FunctionInfo{4096, nullptr, "Unknown4096"}, //20.0.0+ - FunctionInfo{4097, nullptr, "Unknown4097"}, //20.0.0+ - FunctionInfo{4099, nullptr, "Unknown4099"}, //21.0.0+ - FunctionInfo{4105, D<&IApplicationManagerInterface::Unknown4105>, "Unknown4105"}, //23.0.0+ - FunctionInfo{5000, nullptr, "Unknown5000"}, //18.0.0+ - FunctionInfo{5001, nullptr, "Unknown5001"}, //18.0.0+ - FunctionInfo{9999, nullptr, "GetApplicationCertificate"} //10.0.0-10.2.0 + FunctionInfo{3104, nullptr, "GetApplicationNintendoLogo", MakeVersionGate({18,0,0})}, + FunctionInfo{3105, nullptr, "GetApplicationStartupMovie", MakeVersionGate({18,0,0})}, + FunctionInfo{4000, nullptr, "Unknown4000", MakeVersionGate({20,0,0})}, + FunctionInfo{4004, nullptr, "Unknown4004", MakeVersionGate({20,0,0})}, + FunctionInfo{4006, nullptr, "Unknown4006", MakeVersionGate({20,0,0})}, + FunctionInfo{4007, nullptr, "Unknown4007", MakeVersionGate({20,0,0})}, + FunctionInfo{4008, nullptr, "Unknown4008", MakeVersionGate({20,0,0})}, + FunctionInfo{4009, nullptr, "Unknown4009", MakeVersionGate({20,0,0})}, + FunctionInfo{4010, nullptr, "Unknown4010", MakeVersionGate({20,0,0})}, + FunctionInfo{4011, nullptr, "Unknown4011", MakeVersionGate({20,0,0})}, + FunctionInfo{4012, nullptr, "Unknown4012", MakeVersionGate({20,0,0})}, + FunctionInfo{4013, nullptr, "Unknown4013", MakeVersionGate({20,0,0})}, + FunctionInfo{4015, nullptr, "Unknown4015", MakeVersionGate({20,0,0})}, + FunctionInfo{4017, nullptr, "Unknown4017", MakeVersionGate({20,0,0})}, + FunctionInfo{4019, nullptr, "Unknown4019", MakeVersionGate({20,0,0})}, + FunctionInfo{4020, nullptr, "Unknown4020", MakeVersionGate({20,0,0})}, + FunctionInfo{4021, nullptr, "Unknown4021", MakeVersionGate({20,0,0})}, + FunctionInfo{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022", MakeVersionGate({20,0,0})}, + FunctionInfo{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023", MakeVersionGate({20,0,0})}, + FunctionInfo{4024, nullptr, "Unknown4024", MakeVersionGate({20,0,0})}, + FunctionInfo{4025, nullptr, "Unknown4025", MakeVersionGate({20,0,0})}, + FunctionInfo{4026, nullptr, "Unknown4026", MakeVersionGate({20,0,0})}, + FunctionInfo{4027, nullptr, "Unknown4027", MakeVersionGate({20,0,0})}, + FunctionInfo{4028, nullptr, "Unknown4028", MakeVersionGate({20,0,0})}, + FunctionInfo{4029, nullptr, "Unknown4029", MakeVersionGate({20,0,0})}, + FunctionInfo{4030, nullptr, "Unknown4030", MakeVersionGate({20,0,0})}, + FunctionInfo{4031, nullptr, "Unknown4031", MakeVersionGate({20,0,0})}, + FunctionInfo{4032, nullptr, "Unknown4032", MakeVersionGate({20,0,0})}, + FunctionInfo{4033, nullptr, "Unknown4033", MakeVersionGate({20,0,0})}, + FunctionInfo{4034, nullptr, "Unknown4034", MakeVersionGate({20,0,0})}, + FunctionInfo{4035, nullptr, "Unknown4035", MakeVersionGate({20,0,0})}, + FunctionInfo{4037, nullptr, "Unknown4037", MakeVersionGate({20,0,0})}, + FunctionInfo{4038, nullptr, "Unknown4038", MakeVersionGate({20,0,0})}, + FunctionInfo{4039, nullptr, "Unknown4039", MakeVersionGate({20,0,0})}, + FunctionInfo{4040, nullptr, "Unknown4040", MakeVersionGate({20,0,0})}, + FunctionInfo{4041, nullptr, "Unknown4041", MakeVersionGate({20,0,0})}, + FunctionInfo{4042, D<&IApplicationManagerInterface::Unknown4042>, "Unknown4042", MakeVersionGate({20,0,0})}, + FunctionInfo{4043, nullptr, "Unknown4043", MakeVersionGate({20,0,0})}, + FunctionInfo{4044, nullptr, "Unknown4044", MakeVersionGate({20,0,0})}, + FunctionInfo{4045, nullptr, "Unknown4045", MakeVersionGate({20,0,0})}, + FunctionInfo{4046, nullptr, "Unknown4046", MakeVersionGate({20,0,0})}, + FunctionInfo{4049, nullptr, "Unknown4049", MakeVersionGate({20,0,0})}, + FunctionInfo{4050, nullptr, "Unknown4050", MakeVersionGate({20,0,0})}, + FunctionInfo{4051, nullptr, "Unknown4051", MakeVersionGate({20,0,0})}, + FunctionInfo{4052, nullptr, "Unknown4052", MakeVersionGate({20,0,0})}, + FunctionInfo{4053, D<&IApplicationManagerInterface::Unknown4053>, "Unknown4053", MakeVersionGate({20,0,0})}, + FunctionInfo{4054, nullptr, "Unknown4054", MakeVersionGate({20,0,0})}, + FunctionInfo{4055, nullptr, "Unknown4055", MakeVersionGate({20,0,0})}, + FunctionInfo{4056, nullptr, "Unknown4056", MakeVersionGate({20,0,0})}, + FunctionInfo{4057, nullptr, "Unknown4057", MakeVersionGate({20,0,0})}, + FunctionInfo{4058, nullptr, "Unknown4058", MakeVersionGate({20,0,0})}, + FunctionInfo{4059, nullptr, "Unknown4059", MakeVersionGate({20,0,0})}, + FunctionInfo{4060, nullptr, "Unknown4060", MakeVersionGate({20,0,0})}, + FunctionInfo{4061, nullptr, "Unknown4061", MakeVersionGate({20,0,0})}, + FunctionInfo{4062, nullptr, "Unknown4062", MakeVersionGate({20,0,0})}, + FunctionInfo{4063, nullptr, "Unknown4063", MakeVersionGate({20,0,0})}, + FunctionInfo{4064, nullptr, "Unknown4064", MakeVersionGate({20,0,0})}, + FunctionInfo{4065, nullptr, "Unknown4065", MakeVersionGate({20,0,0})}, + FunctionInfo{4066, nullptr, "Unknown4066", MakeVersionGate({20,0,0})}, + FunctionInfo{4067, nullptr, "Unknown4067", MakeVersionGate({20,0,0})}, + FunctionInfo{4068, nullptr, "Unknown4068", MakeVersionGate({20,0,0})}, + FunctionInfo{4069, nullptr, "Unknown4069", MakeVersionGate({20,0,0})}, + FunctionInfo{4070, nullptr, "Unknown4070", MakeVersionGate({20,0,0})}, + FunctionInfo{4071, nullptr, "Unknown4071", MakeVersionGate({20,0,0})}, + FunctionInfo{4072, nullptr, "Unknown4072", MakeVersionGate({20,0,0})}, + FunctionInfo{4073, nullptr, "Unknown4073", MakeVersionGate({20,0,0})}, + FunctionInfo{4074, nullptr, "Unknown4074", MakeVersionGate({20,0,0})}, + FunctionInfo{4075, nullptr, "Unknown4075", MakeVersionGate({20,0,0})}, + FunctionInfo{4076, nullptr, "Unknown4076", MakeVersionGate({20,0,0})}, + FunctionInfo{4077, nullptr, "Unknown4077", MakeVersionGate({20,0,0})}, + FunctionInfo{4078, nullptr, "Unknown4078", MakeVersionGate({20,0,0})}, + FunctionInfo{4079, nullptr, "Unknown4079", MakeVersionGate({20,0,0})}, + FunctionInfo{4080, nullptr, "Unknown4080", MakeVersionGate({20,0,0})}, + FunctionInfo{4081, nullptr, "Unknown4081", MakeVersionGate({20,0,0})}, + FunctionInfo{4083, nullptr, "Unknown4083", MakeVersionGate({20,0,0})}, + FunctionInfo{4084, nullptr, "Unknown4084", MakeVersionGate({20,0,0})}, + FunctionInfo{4085, nullptr, "Unknown4085", MakeVersionGate({20,0,0})}, + FunctionInfo{4086, nullptr, "Unknown4086", MakeVersionGate({20,0,0})}, + FunctionInfo{4087, nullptr, "Unknown4087", MakeVersionGate({20,0,0})}, + FunctionInfo{4088, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4088", MakeVersionGate({20,0,0})}, + FunctionInfo{4089, nullptr, "Unknown4089", MakeVersionGate({20,0,0})}, + FunctionInfo{4090, nullptr, "Unknown4090", MakeVersionGate({20,0,0})}, + FunctionInfo{4091, nullptr, "Unknown4091", MakeVersionGate({20,0,0})}, + FunctionInfo{4092, nullptr, "Unknown4092", MakeVersionGate({20,0,0})}, + FunctionInfo{4093, nullptr, "Unknown4093", MakeVersionGate({20,0,0})}, + FunctionInfo{4094, nullptr, "Unknown4094", MakeVersionGate({20,0,0})}, + FunctionInfo{4095, nullptr, "Unknown4095", MakeVersionGate({20,0,0})}, + FunctionInfo{4096, nullptr, "Unknown4096", MakeVersionGate({20,0,0})}, + FunctionInfo{4097, nullptr, "Unknown4097", MakeVersionGate({20,0,0})}, + FunctionInfo{4099, nullptr, "Unknown4099", MakeVersionGate({21,0,0})}, + FunctionInfo{4105, D<&IApplicationManagerInterface::Unknown4105>, "Unknown4105", MakeVersionGate({23,0,0})}, + FunctionInfo{5000, nullptr, "Unknown5000", MakeVersionGate({18,0,0})}, + FunctionInfo{5001, nullptr, "Unknown5001", MakeVersionGate({18,0,0})}, + FunctionInfo{9999, nullptr, "GetApplicationCertificate", MakeVersionGate({10,0,0}, {10,2,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/ns/async_result.cpp b/src/core/hle/service/ns/async_result.cpp index cc84ccdcfd..d93c510141 100644 --- a/src/core/hle/service/ns/async_result.cpp +++ b/src/core/hle/service/ns/async_result.cpp @@ -12,7 +12,7 @@ std::optional IAsyncResult::FindRequest( static constexpr auto functions = CreateStaticMap( FunctionInfo{0, nullptr, "Get"}, FunctionInfo{1, D<&IAsyncResult::Cancel>, "Cancel"}, - FunctionInfo{2, nullptr, "GetErrorContext"} // 4.0.0+ + FunctionInfo{2, nullptr, "GetErrorContext", MakeVersionGate({4,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/ns/content_management_interface.h b/src/core/hle/service/ns/content_management_interface.h index b5dd1e1fbd..bddd044b45 100644 --- a/src/core/hle/service/ns/content_management_interface.h +++ b/src/core/hle/service/ns/content_management_interface.h @@ -38,7 +38,7 @@ public: FunctionInfo{601, nullptr, "ListApplicationContentMetaStatus"}, FunctionInfo{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"}, FunctionInfo{607, nullptr, "IsAnyApplicationRunning"}, - FunctionInfo{608, nullptr, "Unknown608"} //21.0.0+ + FunctionInfo{608, nullptr, "Unknown608", MakeVersionGate({21,0,0})} ); }; diff --git a/src/core/hle/service/ns/dynamic_rights_interface.cpp b/src/core/hle/service/ns/dynamic_rights_interface.cpp index e3df001cfc..951ef4c4b2 100644 --- a/src/core/hle/service/ns/dynamic_rights_interface.cpp +++ b/src/core/hle/service/ns/dynamic_rights_interface.cpp @@ -36,10 +36,10 @@ std::optional IDynamicRightsInterface::F FunctionInfo{24, nullptr, "NotifyLimitedApplicationLicenseUpgradableEventForDebug"}, FunctionInfo{25, nullptr, "RequestProceedDynamicRightsState"}, FunctionInfo{26, D<&IDynamicRightsInterface::HasAccountRestrictedRightsInRunningApplications>, "HasAccountRestrictedRightsInRunningApplications"}, - FunctionInfo{27, nullptr, "Unknown27"}, //20.0.0+ - FunctionInfo{28, nullptr, "Unknown28"}, //20.0.0+ - FunctionInfo{29, nullptr, "Unknown29"}, //21.0.0+ - FunctionInfo{30, nullptr, "Unknown30"} //21.0.0+ + FunctionInfo{27, nullptr, "Unknown27", MakeVersionGate({20,0,0})}, + FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,0,0})}, + FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({21,0,0})}, + FunctionInfo{30, nullptr, "Unknown30", MakeVersionGate({21,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/ns/read_only_application_control_data_interface.cpp b/src/core/hle/service/ns/read_only_application_control_data_interface.cpp index cd3d442f79..c6cd822d24 100644 --- a/src/core/hle/service/ns/read_only_application_control_data_interface.cpp +++ b/src/core/hle/service/ns/read_only_application_control_data_interface.cpp @@ -84,7 +84,7 @@ std::optional IReadOnlyApplicationContro FunctionInfo{10, &IReadOnlyApplicationControlDataInterface::ListApplicationIcon, "ListApplicationIcon"}, FunctionInfo{13, &IReadOnlyApplicationControlDataInterface::ListApplicationTitle, "ListApplicationTitle"}, FunctionInfo{19, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData"}, - FunctionInfo{23, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData"} //23.0.0+ + FunctionInfo{23, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData", MakeVersionGate({23,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/olsc/daemon_controller.cpp b/src/core/hle/service/olsc/daemon_controller.cpp index dc1d0c96af..f25888170c 100644 --- a/src/core/hle/service/olsc/daemon_controller.cpp +++ b/src/core/hle/service/olsc/daemon_controller.cpp @@ -16,12 +16,12 @@ std::optional IDaemonController::FindReq FunctionInfo{2, D<&IDaemonController::GetGlobalAutoUploadSetting>, "GetGlobalAutoUploadSetting"}, FunctionInfo{3, D<&IDaemonController::SetGlobalAutoUploadSetting>, "SetGlobalAutoUploadSetting"}, FunctionInfo{4, D<&IDaemonController::RunTransferTaskAutonomyRegistration>, "RunTransferTaskAutonomyRegistration"}, - FunctionInfo{5, D<&IDaemonController::GetGlobalAutoDownloadSetting>, "GetGlobalAutoDownloadSetting"}, // 11.0.0+ - FunctionInfo{6, D<&IDaemonController::SetGlobalAutoDownloadSetting>, "SetGlobalAutoDownloadSetting"}, // 11.0.0+ + FunctionInfo{5, D<&IDaemonController::GetGlobalAutoDownloadSetting>, "GetGlobalAutoDownloadSetting", MakeVersionGate({11,0,0})}, + FunctionInfo{6, D<&IDaemonController::SetGlobalAutoDownloadSetting>, "SetGlobalAutoDownloadSetting", MakeVersionGate({11,0,0})}, FunctionInfo{10, nullptr, "CreateForbiddenSaveDataInidication"}, FunctionInfo{11, D<&IDaemonController::StopAutonomyTaskExecution>, "StopAutonomyTaskExecution"}, FunctionInfo{12, D<&IDaemonController::GetAutonomyTaskStatus>, "GetAutonomyTaskStatus"}, - FunctionInfo{13, nullptr, "Unknown13_20_0_0_Plus"} // 20.0.0+ + FunctionInfo{13, nullptr, "Unknown13_20_0_0_Plus", MakeVersionGate({20,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/olsc/olsc.cpp b/src/core/hle/service/olsc/olsc.cpp index ca5162e3cb..03b8a696f5 100644 --- a/src/core/hle/service/olsc/olsc.cpp +++ b/src/core/hle/service/olsc/olsc.cpp @@ -136,10 +136,10 @@ public: FunctionInfo{203, nullptr, "RequestUpdateDataTransferPolicyCacheAsync"}, FunctionInfo{204, nullptr, "ClearDataTransferPolicyCache"}, FunctionInfo{205, nullptr, "RequestGetDataTransferPolicyAsync"}, - FunctionInfo{206, nullptr, "Unknown206"}, //21.0.0+ + FunctionInfo{206, nullptr, "Unknown206", MakeVersionGate({21,0,0})}, FunctionInfo{300, nullptr, "GetUserSaveDataProperty"}, FunctionInfo{301, nullptr, "SetUserSaveDataProperty"}, - FunctionInfo{302, nullptr, "Unknown302"}, //21.0.0+ + FunctionInfo{302, nullptr, "Unknown302", MakeVersionGate({21,0,0})}, FunctionInfo{400, nullptr, "CleanupSaveDataBackupContextForSpecificApplications"}, FunctionInfo{900, nullptr, "DeleteAllTransferTask"}, FunctionInfo{902, nullptr, "DeleteAllSeriesInfo"}, @@ -154,7 +154,7 @@ public: FunctionInfo{911, nullptr, "DeleteAllSeriesInfoForSaveDataBackup"}, FunctionInfo{912, nullptr, "DeleteSeriesInfoForSaveDataBackup"}, FunctionInfo{913, nullptr, "GetSeriesInfoForSaveDataBackup"}, - FunctionInfo{914, nullptr, "Unknown914"}, //20.2.0+ + FunctionInfo{914, nullptr, "Unknown914", MakeVersionGate({20,2,0})}, FunctionInfo{1000, nullptr, "UpdateIssueOld"}, FunctionInfo{1010, nullptr, "Unknown1010"}, FunctionInfo{1011, nullptr, "Unknown1011"}, diff --git a/src/core/hle/service/olsc/remote_storage_controller.cpp b/src/core/hle/service/olsc/remote_storage_controller.cpp index e0d8c961ce..1e7825da30 100644 --- a/src/core/hle/service/olsc/remote_storage_controller.cpp +++ b/src/core/hle/service/olsc/remote_storage_controller.cpp @@ -34,13 +34,13 @@ namespace Service::OLSC { FunctionInfo{23, nullptr, "TouchSecondarySave"}, FunctionInfo{24, nullptr, "GetSecondarySaveDataInfo"}, FunctionInfo{25, nullptr, "RegisterDownloadSaveDataTransferTaskForAutonomyRegistration"}, - FunctionInfo{26, nullptr, "Unknown26"}, //20.0.0+ - FunctionInfo{27, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV2"}, //20.0.0+ - FunctionInfo{28, nullptr, "Unknown28"}, //20.0.0+ - FunctionInfo{29, nullptr, "Unknown29"}, //21.0.0+ - FunctionInfo{800, nullptr, "Unknown800"}, //20.0.0+ + FunctionInfo{26, nullptr, "Unknown26", MakeVersionGate({20,0,0})}, + FunctionInfo{27, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV2", MakeVersionGate({20,0,0})}, + FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,0,0})}, + FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({21,0,0})}, + FunctionInfo{800, nullptr, "Unknown800", MakeVersionGate({20,0,0})}, FunctionInfo{900, nullptr, "SetLoadedDataMissing"}, - FunctionInfo{901, nullptr, "Unknown901"} //20.2.0+ + FunctionInfo{901, nullptr, "Unknown901", MakeVersionGate({20,2,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/olsc/transfer_task_list_controller.cpp b/src/core/hle/service/olsc/transfer_task_list_controller.cpp index 87099be55d..af090fc292 100644 --- a/src/core/hle/service/olsc/transfer_task_list_controller.cpp +++ b/src/core/hle/service/olsc/transfer_task_list_controller.cpp @@ -34,16 +34,16 @@ namespace Service::OLSC { FunctionInfo{18, nullptr, "ListTransferTaskInfo"}, FunctionInfo{19, nullptr, "DeleteTransferTask"}, FunctionInfo{20, nullptr, "RaiseTransferTaskPriority"}, - FunctionInfo{21, D<&ITransferTaskListController::GetTransferTaskProgress>, "GetTransferTaskProgress"}, //10.1.0+ + FunctionInfo{21, D<&ITransferTaskListController::GetTransferTaskProgress>, "GetTransferTaskProgress", MakeVersionGate({10,1,0})}, FunctionInfo{22, nullptr, "GetTransferTaskLastResult"}, FunctionInfo{23, nullptr, "SuspendTransferTask"}, FunctionInfo{24, D<&ITransferTaskListController::GetCurrentTransferTaskInfo>, "GetCurrentTransferTaskInfo"}, FunctionInfo{25, D<&ITransferTaskListController::FindTransferTaskInfo>, "FindTransferTaskInfo"}, - FunctionInfo{26, nullptr, "Unknown26"}, //20.1.0+ - FunctionInfo{27, nullptr, "Unknown27"}, //20.1.0+ - FunctionInfo{28, nullptr, "Unknown28"}, //20.1.0+ - FunctionInfo{29, nullptr, "Unknown29"}, //20.1.0+ - FunctionInfo{30, nullptr, "Unknown30"} //20.1.0+ + FunctionInfo{26, nullptr, "Unknown26", MakeVersionGate({20,1,0})}, + FunctionInfo{27, nullptr, "Unknown27", MakeVersionGate({20,1,0})}, + FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,1,0})}, + FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({20,1,0})}, + FunctionInfo{30, nullptr, "Unknown30", MakeVersionGate({20,1,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/pctl/pctl.cpp b/src/core/hle/service/pctl/pctl.cpp index 4de3ad1172..4f0fbbe702 100644 --- a/src/core/hle/service/pctl/pctl.cpp +++ b/src/core/hle/service/pctl/pctl.cpp @@ -473,9 +473,9 @@ public: FunctionInfo{1017, D<&IParentalControlService::EndFreeCommunication>, "EndFreeCommunication"}, FunctionInfo{1018, D<&IParentalControlService::IsFreeCommunicationAvailable>, "IsFreeCommunicationAvailable"}, FunctionInfo{1019, D<&IParentalControlService::ConfirmLaunchApplicationPermission>, "ConfirmLaunchApplicationPermission"}, - FunctionInfo{1020, nullptr, "ConfirmLaunchSharedApplicationPermission"}, //20.0.0+ - FunctionInfo{1021, nullptr, "TryBeginFreeCommunicationForStreamPlay"}, //21.0.0+ - FunctionInfo{1022, nullptr, "EndFreeCommunicationForStreamPlay"}, //21.0.0+ + FunctionInfo{1020, nullptr, "ConfirmLaunchSharedApplicationPermission", MakeVersionGate({20,0,0})}, + FunctionInfo{1021, nullptr, "TryBeginFreeCommunicationForStreamPlay", MakeVersionGate({21,0,0})}, + FunctionInfo{1022, nullptr, "EndFreeCommunicationForStreamPlay", MakeVersionGate({21,0,0})}, FunctionInfo{1031, D<&IParentalControlService::IsRestrictionEnabled>, "IsRestrictionEnabled"}, FunctionInfo{1032, D<&IParentalControlService::GetSafetyLevel>, "GetSafetyLevel"}, FunctionInfo{1033, nullptr, "SetSafetyLevel"}, @@ -493,8 +493,8 @@ public: FunctionInfo{1047, nullptr, "NotifyApplicationDownloadStarted"}, FunctionInfo{1048, nullptr, "NotifyNetworkProfileCreated"}, FunctionInfo{1049, nullptr, "ResetFreeCommunicationApplicationList"}, - FunctionInfo{1050, nullptr, "AddToFreeCommunicationApplicationList"}, //20.0.0+ - FunctionInfo{1051, nullptr, "NotifyApplicationDownloadStarted"}, //20.0.0+ + FunctionInfo{1050, nullptr, "AddToFreeCommunicationApplicationList", MakeVersionGate({20,0,0})}, + FunctionInfo{1051, nullptr, "NotifyApplicationDownloadStarted", MakeVersionGate({20,0,0})}, FunctionInfo{1061, D<&IParentalControlService::ConfirmStereoVisionRestrictionConfigurable>, "ConfirmStereoVisionRestrictionConfigurable"}, FunctionInfo{1062, D<&IParentalControlService::GetStereoVisionRestriction>, "GetStereoVisionRestriction"}, FunctionInfo{1063, D<&IParentalControlService::SetStereoVisionRestriction>, "SetStereoVisionRestriction"}, @@ -531,7 +531,7 @@ public: FunctionInfo{1472, nullptr, "CancelNetworkRequest"}, FunctionInfo{1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"}, FunctionInfo{1474, nullptr, "ClearUnlinkedEvent"}, - FunctionInfo{1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+ + FunctionInfo{1475, nullptr, "GetExtendedPlayTimerEvent", MakeVersionGate({18,0,0})}, FunctionInfo{1601, nullptr, "DisableAllFeatures"}, FunctionInfo{1602, nullptr, "PostEnableAllFeatures"}, FunctionInfo{1603, nullptr, "IsAllFeaturesDisabled"}, @@ -547,10 +547,10 @@ public: FunctionInfo{1951, nullptr, "SetPlayTimerSettingsForDebug"}, FunctionInfo{1952, nullptr, "GetPlayTimerSpentTimeForTest"}, FunctionInfo{1953, nullptr, "SetPlayTimerAlarmDisabledForDebug"}, - FunctionInfo{1954, nullptr, "IsBedtimeAlarmEnabled"}, // 18.0.0+ - FunctionInfo{1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+ - FunctionInfo{1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 18.0.0+ - FunctionInfo{1957, nullptr, "GetBedtimeAlarmTimeMinute"}, // 18.0.0+ + FunctionInfo{1954, nullptr, "IsBedtimeAlarmEnabled", MakeVersionGate({18,0,0})}, + FunctionInfo{1955, nullptr, "GetBedtimeAlarmTime", MakeVersionGate({18,0,0})}, + FunctionInfo{1956, nullptr, "GetBedtimeAlarmTimeHour", MakeVersionGate({18,0,0})}, + FunctionInfo{1957, nullptr, "GetBedtimeAlarmTimeMinute", MakeVersionGate({18,0,0})}, FunctionInfo{2001, nullptr, "RequestPairingAsync"}, FunctionInfo{2002, nullptr, "FinishRequestPairing"}, FunctionInfo{2003, nullptr, "AuthorizePairingAsync"}, @@ -566,17 +566,17 @@ public: FunctionInfo{2013, nullptr, "SynchronizeParentalControlSettingsAsync"}, FunctionInfo{2014, nullptr, "FinishSynchronizeParentalControlSettings"}, FunctionInfo{2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, - FunctionInfo{2016, nullptr, "RequestUpdateExemptionListAsync"}, //5.0.0+ - FunctionInfo{145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings"}, // 18.0.0+ - FunctionInfo{2017, nullptr, "AuthorizePairingAsync"}, //19.0.0+ - FunctionInfo{2019, nullptr, "RequestUpdateDeviceUsersBackground"}, //19.0.0+ - FunctionInfo{2021, nullptr, "RequestCopyPairingAsync"}, //20.0.0+ - FunctionInfo{2022, nullptr, "FinishRequestCopyPairing"}, //20.0.0+ - FunctionInfo{2023, nullptr, "IsFromPairingActiveDevice"}, //20.0.0+ - FunctionInfo{2024, nullptr, "RollbackCopyPairing"}, //21.0.0+ - FunctionInfo{3001, nullptr, "GetErrorContextChangedEvent"}, //20.0.0+ - FunctionInfo{145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings"}, // 18.0.0+ - FunctionInfo{195101, D<&IParentalControlService::SetPlayTimerSettings>, "SetPlayTimerSettingsForDebug"} //18.0.0+ + FunctionInfo{2016, nullptr, "RequestUpdateExemptionListAsync", MakeVersionGate({5,0,0})}, + FunctionInfo{145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings", MakeVersionGate({18,0,0})}, + FunctionInfo{2017, nullptr, "AuthorizePairingAsync", MakeVersionGate({19,0,0})}, + FunctionInfo{2019, nullptr, "RequestUpdateDeviceUsersBackground", MakeVersionGate({19,0,0})}, + FunctionInfo{2021, nullptr, "RequestCopyPairingAsync", MakeVersionGate({20,0,0})}, + FunctionInfo{2022, nullptr, "FinishRequestCopyPairing", MakeVersionGate({20,0,0})}, + FunctionInfo{2023, nullptr, "IsFromPairingActiveDevice", MakeVersionGate({20,0,0})}, + FunctionInfo{2024, nullptr, "RollbackCopyPairing", MakeVersionGate({21,0,0})}, + FunctionInfo{3001, nullptr, "GetErrorContextChangedEvent", MakeVersionGate({20,0,0})}, + FunctionInfo{145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings", MakeVersionGate({18,0,0})}, + FunctionInfo{195101, D<&IParentalControlService::SetPlayTimerSettings>, "SetPlayTimerSettingsForDebug", MakeVersionGate({18,0,0})} ); States states{}; ParentalControlSettings settings{}; diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index a6e2d4b8cc..40f65d2477 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -19,6 +19,7 @@ #include "core/hle/service/service.h" #include "core/hle/service/sm/sm.h" #include "core/reporter.h" +#include "frontend_common/firmware_manager.h" namespace Service { @@ -47,7 +48,7 @@ ServiceFrameworkBase::~ServiceFrameworkBase() { const auto guard = ServiceFrameworkBase::LockService(); } -void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info) { +void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info, bool gated) { auto cmd_buf = ctx.CommandBuffer(); std::string function_name = bool(info) ? info->name : ""; @@ -58,7 +59,11 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx, c buf.push_back('}'); system.GetReporter().SaveUnimplementedFunctionReport(ctx, ctx.GetCommand(), function_name, service_name); - UNIMPLEMENTED_MSG("Unknown / unimplemented {}", fmt::to_string(buf)); + if (gated) { + LOG_ERROR(Service, "Version gated {}", fmt::to_string(buf)); + } else { + UNIMPLEMENTED_MSG("Unknown / unimplemented {}", fmt::to_string(buf)); + } if (Settings::values.use_auto_stub) { LOG_WARNING(Service, "Using auto stub fallback!"); IPC::ResponseBuilder rb{ctx, 2}; @@ -66,11 +71,29 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx, c } } +[[nodiscard]] static bool VersionGateCheck(Core::System& system, u32 vg) { + auto const c_maj = FirmwareManager::GetFirmwareVersion(system).first.major; + auto const c_min = FirmwareManager::GetFirmwareVersion(system).first.minor; + auto const c_pat = FirmwareManager::GetFirmwareVersion(system).first.micro; + auto const cg = (c_pat << 0) | (c_min << 4) | (c_maj << 8); + + auto const sg = vg & 0xfff; + auto const ug = (vg >> 12) & 0xfff; + // feature available after current + if (sg && cg < sg) + return false; + // feature until xxx (0 = up to current) + return ug ? ug >= cg : true; +} + void ServiceFrameworkBase::InvokeRequest(HLERequestContext& ctx) { const bool is_cmd_read = ctx.GetCommand() == 0; auto const info = FindRequest(ctx.GetCommand()); if (!info.has_value() || info->handler_callback == nullptr) - return ReportUnimplementedFunction(ctx, &*info); + return ReportUnimplementedFunction(ctx, &*info, false); + + if (VersionGateCheck(system, info->version_gating)) + return ReportUnimplementedFunction(ctx, &*info, true); LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer())); handler_invoker(this, info->handler_callback, ctx); @@ -85,7 +108,10 @@ void ServiceFrameworkBase::InvokeRequest(HLERequestContext& ctx) { void ServiceFrameworkBase::InvokeRequestTipc(HLERequestContext& ctx) { auto const info = FindRequestTipc(ctx.GetCommand()); if (!info.has_value() || info->handler_callback == nullptr) - return ReportUnimplementedFunction(ctx, &*info); + return ReportUnimplementedFunction(ctx, &*info, false); + + if (VersionGateCheck(system, info->version_gating)) + return ReportUnimplementedFunction(ctx, &*info, true); LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer())); handler_invoker(this, info->handler_callback, ctx); diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 547284e32e..4acdaff54b 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h @@ -107,7 +107,7 @@ private: virtual std::optional FindRequest(u32 key) = 0; virtual std::optional FindRequestTipc(u32 key) = 0; - void ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info); + void ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info, bool gated); protected: /// Used to gain exclusive access to the service members, e.g. from CoreTiming thread. @@ -162,20 +162,31 @@ protected: }; using FunctionInfo = FunctionInfoTyped; + // expected_header serves as a key to 'address' function handlers, thus only include the minimal + template + struct FunctionValueInfo { + explicit constexpr FunctionValueInfo(HandlerFnP handler_callback_, u32 version_gating_) + : handler_callback{handler_callback_} + , version_gating{version_gating_} + {} + HandlerFnP handler_callback; + u32 version_gating; + }; + template //requires (std::same_as && ...) - [[nodiscard]] static consteval frozen::map, sizeof...(Ts)> CreateStaticMap(Ts... args) { - return frozen::map, sizeof...(args)>{ - {args.expected_header, args.handler_callback}... + [[nodiscard]] static consteval frozen::map, sizeof...(Ts)> CreateStaticMap(Ts... args) { + return frozen::map, sizeof...(args)>{ + {args.expected_header, FunctionValueInfo{args.handler_callback, args.version_gating}}... }; } // Used exclusively by NFC template //requires (std::same_as> && ...) - [[nodiscard]] static consteval frozen::map, sizeof...(Ts)> CreateStaticMapWithClass(Ts... args) { - return frozen::map, sizeof...(args)>{ - {args.expected_header, args.handler_callback}... + [[nodiscard]] static consteval frozen::map, sizeof...(Ts)> CreateStaticMapWithClass(Ts... args) { + return frozen::map, sizeof...(args)>{ + {args.expected_header, FunctionValueInfo{args.handler_callback, args.version_gating}}... }; } @@ -183,9 +194,12 @@ protected: [[nodiscard]] static std::optional HandlerTableGenerateWithFind(u32 key, T const& map) { auto const it = map.find(key); if (it != map.end()) { - auto fake = FunctionInfoBase{}; - fake.handler_callback = HandlerFnP(it->second); - return std::optional{fake}; + auto const r = it->second; + return std::optional{{ + HandlerFnP(r.handler_callback), + nullptr, + r.version_gating + }}; } return std::nullopt; } diff --git a/src/core/hle/service/set/firmware_debug_settings_server.h b/src/core/hle/service/set/firmware_debug_settings_server.h index 35c8d5ce19..3727a1a94c 100644 --- a/src/core/hle/service/set/firmware_debug_settings_server.h +++ b/src/core/hle/service/set/firmware_debug_settings_server.h @@ -32,8 +32,8 @@ public: FunctionInfo{21, nullptr, "SetAllowedSslHosts"}, FunctionInfo{22, nullptr, "SetHostFsMountPoint"}, FunctionInfo{23, nullptr, "SetMemoryUsageRateFlag"}, - FunctionInfo{24, nullptr, "CommitSettings"}, //20.0.0+ - FunctionInfo{27, nullptr, "SetHttpAuthConfigs"} //21.0.0+ + FunctionInfo{24, nullptr, "CommitSettings", MakeVersionGate({20,0,0})}, + FunctionInfo{27, nullptr, "SetHttpAuthConfigs", MakeVersionGate({21,0,0})} ); }; diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index bc7c07fc77..925207d927 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -324,23 +324,23 @@ std::optional ISystemSettingsServer::Fin FunctionInfo{208, nullptr, "SetHearingProtectionSafeguardFlag"}, FunctionInfo{209, nullptr, "GetHearingProtectionSafeguardRemainingTime"}, FunctionInfo{210, nullptr, "SetHearingProtectionSafeguardRemainingTime"}, - FunctionInfo{221, nullptr, "GetForceMonauralOutputFlag"}, //17.0.0+ - FunctionInfo{222, nullptr, "SetForceMonauralOutputFlag"}, //17.0.0+ - FunctionInfo{251, nullptr, "GetAccountIdentificationSettings"}, //18.0.0+ - FunctionInfo{252, nullptr, "SetAccountIdentificationSettings"}, //18.0.0+ - FunctionInfo{263, nullptr, "AcquireVphymDirtyFlagEventHandle"}, //20.0.0+ - FunctionInfo{264, nullptr, "GetVphymDirtyFlags"}, //20.0.0+ - FunctionInfo{282, nullptr, "ConvertToProductModel"}, //20.0.0+ - FunctionInfo{283, nullptr, "ConvertToProductModelName"}, //20.0.0+ - FunctionInfo{289, nullptr, "GetDefaultAccountIdentificationFlagSet"}, //20.0.0+ - FunctionInfo{300, nullptr, "AcquirePushNotificationDirtyFlagEventHandle"}, //20.0.0+ - FunctionInfo{301, nullptr, "GetPushNotificationDirtyFlags"}, //20.0.0+ - FunctionInfo{306, nullptr, "GetPinCodeReregistrationGuideAccounts"}, //20.0.0+ - FunctionInfo{307, nullptr, "SetPinCodeReregistrationGuideAccounts"}, //20.0.0+ - FunctionInfo{315, C<&ISystemSettingsServer::GetHttpAuthConfigs>, "GetHttpAuthConfigs"}, //21.0.0+ - FunctionInfo{319, C<&ISystemSettingsServer::GetAccountUserSettings>, "GetAccountUserSettings"}, //21.0.0+ - FunctionInfo{320, nullptr, "SetAccountUserSettings"}, //21.0.0+ - FunctionInfo{321, C<&ISystemSettingsServer::GetDefaultAccountUserSettings>, "GetDefaultAccountUserSettings"} //21.0.0+ + FunctionInfo{221, nullptr, "GetForceMonauralOutputFlag", MakeVersionGate({17,0,0})}, + FunctionInfo{222, nullptr, "SetForceMonauralOutputFlag", MakeVersionGate({17,0,0})}, + FunctionInfo{251, nullptr, "GetAccountIdentificationSettings", MakeVersionGate({18,0,0})}, + FunctionInfo{252, nullptr, "SetAccountIdentificationSettings", MakeVersionGate({18,0,0})}, + FunctionInfo{263, nullptr, "AcquireVphymDirtyFlagEventHandle", MakeVersionGate({20,0,0})}, + FunctionInfo{264, nullptr, "GetVphymDirtyFlags", MakeVersionGate({20,0,0})}, + FunctionInfo{282, nullptr, "ConvertToProductModel", MakeVersionGate({20,0,0})}, + FunctionInfo{283, nullptr, "ConvertToProductModelName", MakeVersionGate({20,0,0})}, + FunctionInfo{289, nullptr, "GetDefaultAccountIdentificationFlagSet", MakeVersionGate({20,0,0})}, + FunctionInfo{300, nullptr, "AcquirePushNotificationDirtyFlagEventHandle", MakeVersionGate({20,0,0})}, + FunctionInfo{301, nullptr, "GetPushNotificationDirtyFlags", MakeVersionGate({20,0,0})}, + FunctionInfo{306, nullptr, "GetPinCodeReregistrationGuideAccounts", MakeVersionGate({20,0,0})}, + FunctionInfo{307, nullptr, "SetPinCodeReregistrationGuideAccounts", MakeVersionGate({20,0,0})}, + FunctionInfo{315, C<&ISystemSettingsServer::GetHttpAuthConfigs>, "GetHttpAuthConfigs", MakeVersionGate({21,0,0})}, + FunctionInfo{319, C<&ISystemSettingsServer::GetAccountUserSettings>, "GetAccountUserSettings", MakeVersionGate({21,0,0})}, + FunctionInfo{320, nullptr, "SetAccountUserSettings", MakeVersionGate({21,0,0})}, + FunctionInfo{321, C<&ISystemSettingsServer::GetDefaultAccountUserSettings>, "GetDefaultAccountUserSettings", MakeVersionGate({21,0,0})} ); return HandlerTableGenerateWithFind(key, functions); } diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h index 55fff24c52..c2aa343d51 100644 --- a/src/core/hle/service/sockets/bsd.h +++ b/src/core/hle/service/sockets/bsd.h @@ -223,23 +223,23 @@ protected: FunctionInfo{26, &BSD_USA::Close, "Close"}, FunctionInfo{27, &BSD_USA::DuplicateSocket, "DuplicateSocket"}, FunctionInfo{28, nullptr, "GetResourceStatistics"}, - FunctionInfo{29, nullptr, "RecvMMsg"}, //3.0.0+ - FunctionInfo{30, nullptr, "SendMMsg"}, //3.0.0+ - FunctionInfo{31, &BSD_USA::EventFd, "EventFd"}, //7.0.0+ - FunctionInfo{32, nullptr, "RegisterResourceStatisticsName"}, //7.0.0+ - FunctionInfo{33, nullptr, "RegisterClientShared"}, //10.0.0+ - FunctionInfo{34, nullptr, "GetSocketStatistics"}, //15.0.0+ - FunctionInfo{35, nullptr, "NifIoctl"}, //17.0.0+ - FunctionInfo{36, nullptr, "Unknown36"}, //18.0.0+ - FunctionInfo{37, nullptr, "Unknown37"}, //18.0.0+ - FunctionInfo{38, nullptr, "Unknown38"}, //18.0.0+ - FunctionInfo{39, nullptr, "Unknown39"}, //20.0.0+ - FunctionInfo{40, nullptr, "Unknown40"}, //20.0.0+ - FunctionInfo{41, nullptr, "Unknown41"}, //21.0.0+ - FunctionInfo{42, nullptr, "Unknown42"}, //21.0.0+ - FunctionInfo{43, nullptr, "Unknown43"}, //21.0.0+ - FunctionInfo{200, nullptr, "SetThreadCoreMask"}, //15.0.0+ - FunctionInfo{201, nullptr, "GetThreadCoreMask"} //15.0.0+ + FunctionInfo{29, nullptr, "RecvMMsg", MakeVersionGate({3,0,0})}, + FunctionInfo{30, nullptr, "SendMMsg", MakeVersionGate({3,0,0})}, + FunctionInfo{31, &BSD_USA::EventFd, "EventFd", MakeVersionGate({7,0,0})}, + FunctionInfo{32, nullptr, "RegisterResourceStatisticsName", MakeVersionGate({7,0,0})}, + FunctionInfo{33, nullptr, "RegisterClientShared", MakeVersionGate({10,0,0})}, + FunctionInfo{34, nullptr, "GetSocketStatistics", MakeVersionGate({15,0,0})}, + FunctionInfo{35, nullptr, "NifIoctl", MakeVersionGate({17,0,0})}, + FunctionInfo{36, nullptr, "Unknown36", MakeVersionGate({18,0,0})}, + FunctionInfo{37, nullptr, "Unknown37", MakeVersionGate({18,0,0})}, + FunctionInfo{38, nullptr, "Unknown38", MakeVersionGate({18,0,0})}, + FunctionInfo{39, nullptr, "Unknown39", MakeVersionGate({20,0,0})}, + FunctionInfo{40, nullptr, "Unknown40", MakeVersionGate({20,0,0})}, + FunctionInfo{41, nullptr, "Unknown41", MakeVersionGate({21,0,0})}, + FunctionInfo{42, nullptr, "Unknown42", MakeVersionGate({21,0,0})}, + FunctionInfo{43, nullptr, "Unknown43", MakeVersionGate({21,0,0})}, + FunctionInfo{200, nullptr, "SetThreadCoreMask", MakeVersionGate({15,0,0})}, + FunctionInfo{201, nullptr, "GetThreadCoreMask", MakeVersionGate({15,0,0})} ); bool is_user = false; };