missing services

This commit is contained in:
Pavel Barabanov 2025-06-15 23:22:14 +03:00 committed by crueter
parent dc444c7af9
commit 3c16ac28c2
44 changed files with 344 additions and 21 deletions

View file

@ -17,6 +17,7 @@ struct CNMTHeader;
struct OptionalHeader; struct OptionalHeader;
enum class TitleType : u8 { enum class TitleType : u8 {
Invalid = 0x00,
SystemProgram = 0x01, SystemProgram = 0x01,
SystemDataArchive = 0x02, SystemDataArchive = 0x02,
SystemUpdate = 0x03, SystemUpdate = 0x03,

View file

@ -107,7 +107,9 @@ public:
{160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"},
{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
{170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ {170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+
{180, nullptr, "GetRequestForNintendoAccountReauthentication"} // 18.0.0+ {180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+
{181, nullptr, "CreateProcedureToReauthenticateNintendoAccount"}, // 20.0.0+
{182, nullptr, "ResumeProcedureToReauthenticateNintendoAccount"}, // 20.0.0+
}; };
// clang-format on // clang-format on
@ -197,6 +199,12 @@ public:
{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
{170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ {170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+
{180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+ {180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+
{181, nullptr, "CreateProcedureToReauthenticateNintendoAccount"}, // 20.0.0+
{182, nullptr, "ResumeProcedureToReauthenticateNintendoAccount"}, // 20.0.0+
{183, nullptr, "GetNintendoAccountReauthenticationRequest"}, // 20.0.0+
{190, nullptr, "GetDeviceMigrationInfo"}, // 20.0.0+
{191, nullptr, "CheckDeviceMigrationAvailabilityAsync"}, // 20.0.0+
{192, nullptr, "StartDeviceMigrationAsync"}, // 20.0.0+
{200, nullptr, "IsRegistered"}, {200, nullptr, "IsRegistered"},
{201, nullptr, "RegisterAsync"}, {201, nullptr, "RegisterAsync"},
{202, nullptr, "UnregisterAsync"}, {202, nullptr, "UnregisterAsync"},
@ -308,6 +316,7 @@ public:
{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ {220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+
{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ {221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+
{230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+ {230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+
{240, nullptr, "RegisterUserWithReauthenticationAsync"}, // 20.0.0+
}; };
// clang-format on // clang-format on
@ -763,7 +772,8 @@ public:
{210, nullptr, "IsProfileAvailable"}, // 17.0.0+ {210, nullptr, "IsProfileAvailable"}, // 17.0.0+
{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ {220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+
{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ {221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+
{230, nullptr, "RegisterUserWithLargeImageProfileAsync"} // 18.0.0+ {230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+
{240, nullptr, "RegisterUserWithReauthenticationAsync"}, // 20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -56,15 +56,26 @@ ACC_SU::ACC_SU(std::shared_ptr<Module> module_, std::shared_ptr<ProfileManager>
{212, nullptr, "ResumeProcedureToRegisterUserWithNintendoAccount"}, {212, nullptr, "ResumeProcedureToRegisterUserWithNintendoAccount"},
{230, nullptr, "AuthenticateServiceAsync"}, {230, nullptr, "AuthenticateServiceAsync"},
{250, nullptr, "GetBaasAccountAdministrator"}, {250, nullptr, "GetBaasAccountAdministrator"},
{251, nullptr, "SynchronizeNetworkServiceAccountsSnapshotAsync"}, // 20.0.0+
{290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"},
{291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"},
{292, nullptr, "ProxyProcedureForDeviceMigrationAuthenticatingOperatingUser"}, // 20.0.0+
{293, nullptr, "ProxyProcedureForDeviceMigrationDownload"}, // 20.0.0+
{299, nullptr, "SuspendBackgroundDaemon"}, {299, nullptr, "SuspendBackgroundDaemon"},
{350, nullptr, "CreateDeviceMigrationUserExportRequest"}, // 20.0.0+
{351, nullptr, "UploadNasCredential"}, // 20.0.0+
{352, nullptr, "CreateDeviceMigrationUserImportRequest"}, // 20.0.0+
{353, nullptr, "DeleteUserMigrationSaveData"}, // 20.0.0+
{400, nullptr, "SetPinCode"}, // 18.0.0+ {400, nullptr, "SetPinCode"}, // 18.0.0+
{401, nullptr, "GetPinCodeLength"}, // 18.0.0+ {401, nullptr, "GetPinCodeLength"}, // 18.0.0+
{402, nullptr, "GetPinCode"}, // 18.0.0+ {402, nullptr, "GetPinCode"}, // 18.0.0+
{403, nullptr, "GetPinCodeParity"}, // 20.0.0+
{404, nullptr, "VerifyPinCode"}, // 20.0.0+
{405, nullptr, "IsPinCodeVerificationForbidden"}, // 20.0.0+
{410, nullptr, "GetPinCodeErrorCount"}, // 18.0.0+ {410, nullptr, "GetPinCodeErrorCount"}, // 18.0.0+
{411, nullptr, "ResetPinCodeErrorCount"}, // 18.0.0+ {411, nullptr, "ResetPinCodeErrorCount"}, // 18.0.0+
{412, nullptr, "IncrementPinCodeErrorCount"}, // 18.0.0+ {412, nullptr, "IncrementPinCodeErrorCount"}, // 18.0.0+
{413, nullptr, "SetPinCodeErrorCount"}, // 20.0.0+
{900, nullptr, "SetUserUnqualifiedForDebug"}, {900, nullptr, "SetUserUnqualifiedForDebug"},
{901, nullptr, "UnsetUserUnqualifiedForDebug"}, {901, nullptr, "UnsetUserUnqualifiedForDebug"},
{902, nullptr, "ListUsersUnqualifiedForDebug"}, {902, nullptr, "ListUsersUnqualifiedForDebug"},

View file

@ -42,6 +42,9 @@ ACC_U1::ACC_U1(std::shared_ptr<Module> module_, std::shared_ptr<ProfileManager>
{191, nullptr, "ActivateOpenContextHolder"}, {191, nullptr, "ActivateOpenContextHolder"},
{401, nullptr, "GetPinCodeLength"}, // 18.0.0+ {401, nullptr, "GetPinCodeLength"}, // 18.0.0+
{402, nullptr, "GetPinCode"}, // 18.0.0+ {402, nullptr, "GetPinCode"}, // 18.0.0+
{403, nullptr, "GetPinCodeParity"}, // 20.0.0+
{404, nullptr, "VerifyPinCode"}, // 20.0.0+
{405, nullptr, "IsPinCodeVerificationForbidden"}, // 20.0.0+
{997, nullptr, "DebugInvalidateTokenCacheForUser"}, {997, nullptr, "DebugInvalidateTokenCacheForUser"},
{998, nullptr, "DebugSetUserStateClose"}, {998, nullptr, "DebugSetUserStateClose"},
{999, nullptr, "DebugSetUserStateOpen"}, {999, nullptr, "DebugSetUserStateOpen"},

View file

@ -90,6 +90,7 @@ enum class AppletId : u32 {
LoginShare = 0x18, LoginShare = 0x18,
WebAuth = 0x19, WebAuth = 0x19,
MyPage = 0x1A, MyPage = 0x1A,
Splay = 0x64,
}; };
enum class AppletProgramId : u64 { enum class AppletProgramId : u64 {
@ -114,6 +115,7 @@ enum class AppletProgramId : u64 {
Starter = 0x0100000000001012ull, Starter = 0x0100000000001012ull,
MyPage = 0x0100000000001013ull, MyPage = 0x0100000000001013ull,
MaxProgramId = 0x0100000000001FFFull, MaxProgramId = 0x0100000000001FFFull,
Splay = 0x0100000000001048ull,
}; };
// This is nn::am::AppletMessage // This is nn::am::AppletMessage

View file

@ -18,6 +18,7 @@ IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& sys
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"}, {100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"},
{110, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxyForDebug>, "OpenSystemAppletProxyForDebug"},
{200, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxyOld>, "OpenLibraryAppletProxyOld"}, {200, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxyOld>, "OpenLibraryAppletProxyOld"},
{201, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxy>, "OpenLibraryAppletProxy"}, {201, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxy>, "OpenLibraryAppletProxy"},
{300, nullptr, "OpenOverlayAppletProxy"}, {300, nullptr, "OpenOverlayAppletProxy"},
@ -25,6 +26,7 @@ IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& sys
{400, nullptr, "CreateSelfLibraryAppletCreatorForDevelop"}, {400, nullptr, "CreateSelfLibraryAppletCreatorForDevelop"},
{410, nullptr, "GetSystemAppletControllerForDebug"}, {410, nullptr, "GetSystemAppletControllerForDebug"},
{450, D<&IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions>, "GetSystemProcessCommonFunctions"}, // 19.0.0+ {450, D<&IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions>, "GetSystemProcessCommonFunctions"}, // 19.0.0+
{460, D<&IAllSystemAppletProxiesService::Unknown460>, "Unknown460"},
{1000, nullptr, "GetDebugFunctions"}, {1000, nullptr, "GetDebugFunctions"},
}; };
// clang-format on // clang-format on
@ -49,6 +51,26 @@ Result IAllSystemAppletProxiesService::OpenSystemAppletProxy(
} }
} }
Result IAllSystemAppletProxiesService::OpenSystemAppletProxyForDebug(
Out<SharedPointer<ISystemAppletProxy>> out_proxy, ClientProcessId pid) {
LOG_DEBUG(Service_AM, "OpenSystemAppletProxyForDebug called");
auto process = system.ApplicationProcess();
if (!process) {
LOG_ERROR(Service_AM, "No application process available");
R_THROW(ResultUnknown);
}
if (const auto applet = GetAppletFromProcessId(pid)) {
*out_proxy = std::make_shared<ISystemAppletProxy>(
system, applet, process, m_window_system);
R_SUCCEED();
}
LOG_ERROR(Service_AM, "Applet not found for pid={}", pid.pid);
R_THROW(ResultUnknown);
}
Result IAllSystemAppletProxiesService::OpenLibraryAppletProxy( Result IAllSystemAppletProxiesService::OpenLibraryAppletProxy(
Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy, ClientProcessId pid, Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy, ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle, InCopyHandle<Kernel::KProcess> process_handle,
@ -98,7 +120,28 @@ Result IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions() {
R_SUCCEED(); R_SUCCEED();
} }
Result IAllSystemAppletProxiesService::Unknown460(
Out<SharedPointer<IAppletCommonFunctions>> out_common_functions) {
LOG_DEBUG(Service_AM, "called");
// Получаем текущий процесс
auto process = system.ApplicationProcess();
if (!process) {
LOG_ERROR(Service_AM, "No application process available");
R_THROW(ResultUnknown);
}
// Получаем applet через существующий метод
auto applet = GetAppletFromProcessId(ProcessId{process->GetProcessId()});
if (!applet) {
LOG_WARNING(Service_AM, "Applet not found for process");
R_THROW(ResultUnknown);
}
*out_common_functions = std::make_shared<IAppletCommonFunctions>(system, applet);
R_SUCCEED();
}
std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId( std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId(
ProcessId process_id) { ProcessId process_id) {
return m_window_system.GetByAppletResourceUserId(process_id.pid); return m_window_system.GetByAppletResourceUserId(process_id.pid);

View file

@ -5,6 +5,7 @@
#include "core/hle/service/cmif_types.h" #include "core/hle/service/cmif_types.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
#include "core/hle/service/am/service/applet_common_functions.h"
namespace Service { namespace Service {
@ -27,6 +28,7 @@ private:
Result OpenSystemAppletProxy(Out<SharedPointer<ISystemAppletProxy>> out_system_applet_proxy, Result OpenSystemAppletProxy(Out<SharedPointer<ISystemAppletProxy>> out_system_applet_proxy,
ClientProcessId pid, ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle); InCopyHandle<Kernel::KProcess> process_handle);
Result OpenSystemAppletProxyForDebug(Out<SharedPointer<ISystemAppletProxy>> out_proxy, ClientProcessId pid);
Result OpenLibraryAppletProxy(Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy, Result OpenLibraryAppletProxy(Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy,
ClientProcessId pid, ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle, InCopyHandle<Kernel::KProcess> process_handle,
@ -39,6 +41,7 @@ private:
InCopyHandle<Kernel::KProcess> process_handle, InCopyHandle<Kernel::KProcess> process_handle,
InLargeData<AppletAttribute, BufferAttr_HipcMapAlias> attribute); InLargeData<AppletAttribute, BufferAttr_HipcMapAlias> attribute);
Result GetSystemProcessCommonFunctions(); Result GetSystemProcessCommonFunctions();
Result Unknown460(Out<SharedPointer<IAppletCommonFunctions>> out_common_functions);
private: private:
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid); std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);

View file

@ -33,8 +33,16 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
{100, nullptr, "SetApplicationCoreUsageMode"}, {100, nullptr, "SetApplicationCoreUsageMode"},
{300, D<&IAppletCommonFunctions::GetCurrentApplicationId>, "GetCurrentApplicationId"}, {300, D<&IAppletCommonFunctions::GetCurrentApplicationId>, "GetCurrentApplicationId"},
{310, nullptr, "IsSystemAppletHomeMenu"}, //19.0.0+ {310, nullptr, "IsSystemAppletHomeMenu"}, //19.0.0+
{311, nullptr, "Unknown311"},
{320, nullptr, "SetGpuTimeSliceBoost"}, //19.0.0+ {320, nullptr, "SetGpuTimeSliceBoost"}, //19.0.0+
{321, nullptr, "SetGpuTimeSliceBoostDueToApplication"}, //19.0.0+ {321, nullptr, "SetGpuTimeSliceBoostDueToApplication"}, //19.0.0+
{322, nullptr, "Unknown322"},
{330, nullptr, "Unknown330"}, //19.0.0+
{340, nullptr, "Unknown340"},
{341, nullptr, "Unknown341"},
{342, nullptr, "Unknown342"},
{350, D<&IAppletCommonFunctions::Unknown350>, "Unknown350"},
{360, nullptr, "Unknown360"},
}; };
// clang-format on // clang-format on
@ -70,4 +78,12 @@ Result IAppletCommonFunctions::GetCurrentApplicationId(Out<u64> out_application_
R_SUCCEED(); R_SUCCEED();
} }
Result IAppletCommonFunctions::Unknown350(Out<u16> out_unknown) {
LOG_WARNING(Service_AM, "(STUBBED) called");
*out_unknown = 0;
R_SUCCEED();
}
} // namespace Service::AM } // namespace Service::AM

View file

@ -20,6 +20,7 @@ private:
Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled); Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled);
Result SetCpuBoostRequestPriority(s32 priority); Result SetCpuBoostRequestPriority(s32 priority);
Result GetCurrentApplicationId(Out<u64> out_application_id); Result GetCurrentApplicationId(Out<u64> out_application_id);
Result Unknown350(Out<u16> out_unknown);
const std::shared_ptr<Applet> applet; const std::shared_ptr<Applet> applet;
}; };

View file

@ -47,6 +47,8 @@ IApplicationAccessor::IApplicationAccessor(Core::System& system_, std::shared_pt
{190, nullptr, "PushToNotificationStorageChannel"}, {190, nullptr, "PushToNotificationStorageChannel"},
{200, nullptr, "RequestApplicationSoftReset"}, {200, nullptr, "RequestApplicationSoftReset"},
{201, nullptr, "RestartApplicationTimer"}, {201, nullptr, "RestartApplicationTimer"},
{300, nullptr, "Unknown300"},
{301, nullptr, "Unknown301"},
}; };
// clang-format on // clang-format on

View file

@ -68,6 +68,8 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
{102, D<&IApplicationFunctions::SetApplicationCopyrightVisibility>, "SetApplicationCopyrightVisibility"}, {102, D<&IApplicationFunctions::SetApplicationCopyrightVisibility>, "SetApplicationCopyrightVisibility"},
{110, D<&IApplicationFunctions::QueryApplicationPlayStatistics>, "QueryApplicationPlayStatistics"}, {110, D<&IApplicationFunctions::QueryApplicationPlayStatistics>, "QueryApplicationPlayStatistics"},
{111, D<&IApplicationFunctions::QueryApplicationPlayStatisticsByUid>, "QueryApplicationPlayStatisticsByUid"}, {111, D<&IApplicationFunctions::QueryApplicationPlayStatisticsByUid>, "QueryApplicationPlayStatisticsByUid"},
{112, nullptr, "Unknown112"}, //20.0.0+
{113, nullptr, "Unknown113"}, //20.0.0+
{120, D<&IApplicationFunctions::ExecuteProgram>, "ExecuteProgram"}, {120, D<&IApplicationFunctions::ExecuteProgram>, "ExecuteProgram"},
{121, D<&IApplicationFunctions::ClearUserChannel>, "ClearUserChannel"}, {121, D<&IApplicationFunctions::ClearUserChannel>, "ClearUserChannel"},
{122, D<&IApplicationFunctions::UnpopToUserChannel>, "UnpopToUserChannel"}, {122, D<&IApplicationFunctions::UnpopToUserChannel>, "UnpopToUserChannel"},
@ -85,6 +87,11 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
{181, nullptr, "UpgradeLaunchRequiredVersion"}, {181, nullptr, "UpgradeLaunchRequiredVersion"},
{190, nullptr, "SendServerMaintenanceOverlayNotification"}, {190, nullptr, "SendServerMaintenanceOverlayNotification"},
{200, nullptr, "GetLastApplicationExitReason"}, {200, nullptr, "GetLastApplicationExitReason"},
{210, nullptr, "Unknown210"}, //20.0.0+
{220, nullptr, "Unknown220"}, //20.0.0+
{300, nullptr, "CreateMovieWriter"}, //19.0.0+
{310, nullptr, "Unknown310"}, //20.0.0+
{320, nullptr, "Unknown320"}, //20.0.0+
{500, nullptr, "StartContinuousRecordingFlushForDebug"}, {500, nullptr, "StartContinuousRecordingFlushForDebug"},
{1000, nullptr, "CreateMovieMaker"}, {1000, nullptr, "CreateMovieMaker"},
{1001, D<&IApplicationFunctions::PrepareForJit>, "PrepareForJit"}, {1001, D<&IApplicationFunctions::PrepareForJit>, "PrepareForJit"},

View file

@ -15,6 +15,7 @@ IAudioController::IAudioController(Core::System& system_)
{2, D<&IAudioController::GetLibraryAppletExpectedMasterVolume>, "GetLibraryAppletExpectedMasterVolume"}, {2, D<&IAudioController::GetLibraryAppletExpectedMasterVolume>, "GetLibraryAppletExpectedMasterVolume"},
{3, D<&IAudioController::ChangeMainAppletMasterVolume>, "ChangeMainAppletMasterVolume"}, {3, D<&IAudioController::ChangeMainAppletMasterVolume>, "ChangeMainAppletMasterVolume"},
{4, D<&IAudioController::SetTransparentVolumeRate>, "SetTransparentVolumeRate"}, {4, D<&IAudioController::SetTransparentVolumeRate>, "SetTransparentVolumeRate"},
{5, nullptr, "Unknown5"}, //20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -34,6 +34,7 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr<Ap
{12, nullptr, "ReleaseSleepLockTransiently"}, {12, nullptr, "ReleaseSleepLockTransiently"},
{13, D<&ICommonStateGetter::GetAcquiredSleepLockEvent>, "GetAcquiredSleepLockEvent"}, {13, D<&ICommonStateGetter::GetAcquiredSleepLockEvent>, "GetAcquiredSleepLockEvent"},
{14, nullptr, "GetWakeupCount"}, {14, nullptr, "GetWakeupCount"},
{15, nullptr, "Unknown15"}, //19.0.0+
{20, nullptr, "PushToGeneralChannel"}, {20, nullptr, "PushToGeneralChannel"},
{30, nullptr, "GetHomeButtonReaderLockAccessor"}, {30, nullptr, "GetHomeButtonReaderLockAccessor"},
{31, D<&ICommonStateGetter::GetReaderLockAccessorEx>, "GetReaderLockAccessorEx"}, {31, D<&ICommonStateGetter::GetReaderLockAccessorEx>, "GetReaderLockAccessorEx"},
@ -69,7 +70,11 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr<Ap
{501, nullptr, "SuppressDisablingSleepTemporarily"}, {501, nullptr, "SuppressDisablingSleepTemporarily"},
{502, nullptr, "IsSleepEnabled"}, {502, nullptr, "IsSleepEnabled"},
{503, nullptr, "IsDisablingSleepSuppressed"}, {503, nullptr, "IsDisablingSleepSuppressed"},
{600, nullptr, "OpenNamedChannelAsChild"}, //20.0.0+ (17.0.0-18.1.0)
{900, D<&ICommonStateGetter::SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled>, "SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled"}, {900, D<&ICommonStateGetter::SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled>, "SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled"},
{1000, nullptr, "BeginVrMode3d"}, //19.0.0+
{1001, nullptr, "EndVrMode3d"}, //19.0.0+
{1002, nullptr, "IsVrModeEnabled3d"}, //19.0.0+
}; };
// clang-format on // clang-format on

View file

@ -31,7 +31,13 @@ IDebugFunctions::IDebugFunctions(Core::System& system_)
{140, nullptr, "RestrictPowerOperationForSecureLaunchModeForDebug"}, {140, nullptr, "RestrictPowerOperationForSecureLaunchModeForDebug"},
{200, nullptr, "CreateFloatingLibraryAppletAccepterForDebug"}, {200, nullptr, "CreateFloatingLibraryAppletAccepterForDebug"},
{300, nullptr, "TerminateAllRunningApplicationsForDebug"}, {300, nullptr, "TerminateAllRunningApplicationsForDebug"},
{410, nullptr, "CreateGeneralStorageForDebug"}, //18.0.0+
{411, nullptr, "ReadGeneralStorageForDebug"}, //18.0.0+
{412, nullptr, "WriteGeneralStorageForDebug"}, //18.0.0+
{430, nullptr, "Unknown430"}, //20.0.0+
{431, nullptr, "Unknown431"}, //20.0.0+
{900, nullptr, "GetGrcProcessLaunchedSystemEvent"}, {900, nullptr, "GetGrcProcessLaunchedSystemEvent"},
{910, nullptr, "Unknown910"}, //20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -25,6 +25,9 @@ ILibraryAppletAccessor::ILibraryAppletAccessor(Core::System& system_,
{30, D<&ILibraryAppletAccessor::GetResult>, "GetResult"}, {30, D<&ILibraryAppletAccessor::GetResult>, "GetResult"},
{50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"},
{60, D<&ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero>, "PresetLibraryAppletGpuTimeSliceZero"}, {60, D<&ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero>, "PresetLibraryAppletGpuTimeSliceZero"},
{80, nullptr, "RequestForLibraryAppletToGetForeground"}, //19.0.0+
{81, nullptr, "GetCurrentChildLibraryApplet"}, //19.0.0+
{90, nullptr, "Unknown90"}, //20.0.0+
{100, D<&ILibraryAppletAccessor::PushInData>, "PushInData"}, {100, D<&ILibraryAppletAccessor::PushInData>, "PushInData"},
{101, D<&ILibraryAppletAccessor::PopOutData>, "PopOutData"}, {101, D<&ILibraryAppletAccessor::PopOutData>, "PopOutData"},
{102, nullptr, "PushExtraStorage"}, {102, nullptr, "PushExtraStorage"},

View file

@ -113,9 +113,10 @@ std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
Firmware1700 = 17, Firmware1700 = 17,
Firmware1800 = 18, Firmware1800 = 18,
Firmware1900 = 19, Firmware1900 = 19,
Firmware2000 = 20,
}; };
auto process = CreateProcess(system, program_id, Firmware1400, Firmware1900); auto process = CreateProcess(system, program_id, Firmware1400, Firmware2000);
if (!process) { if (!process) {
// Couldn't initialize the guest process // Couldn't initialize the guest process
return {}; return {};
@ -173,6 +174,7 @@ ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_, std::shared_
{0, D<&ILibraryAppletCreator::CreateLibraryApplet>, "CreateLibraryApplet"}, {0, D<&ILibraryAppletCreator::CreateLibraryApplet>, "CreateLibraryApplet"},
{1, nullptr, "TerminateAllLibraryApplets"}, {1, nullptr, "TerminateAllLibraryApplets"},
{2, nullptr, "AreAnyLibraryAppletsLeft"}, {2, nullptr, "AreAnyLibraryAppletsLeft"},
{3, nullptr, "Unknown3"}, //20.0.0+
{10, D<&ILibraryAppletCreator::CreateStorage>, "CreateStorage"}, {10, D<&ILibraryAppletCreator::CreateStorage>, "CreateStorage"},
{11, D<&ILibraryAppletCreator::CreateTransferMemoryStorage>, "CreateTransferMemoryStorage"}, {11, D<&ILibraryAppletCreator::CreateTransferMemoryStorage>, "CreateTransferMemoryStorage"},
{12, D<&ILibraryAppletCreator::CreateHandleStorage>, "CreateHandleStorage"}, {12, D<&ILibraryAppletCreator::CreateHandleStorage>, "CreateHandleStorage"},

View file

@ -15,7 +15,7 @@ IProcessWindingController::IProcessWindingController(Core::System& system_,
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&IProcessWindingController::GetLaunchReason>, "GetLaunchReason"}, {0, D<&IProcessWindingController::GetLaunchReason>, "GetLaunchReason"},
{11, D<&IProcessWindingController::OpenCallingLibraryApplet>, "OpenCallingLibraryApplet"}, {11, D<&IProcessWindingController::OpenCallingLibraryApplet>, "OpenCallingLibraryApplet"},
{21, nullptr, "PushContext"}, {21, D<&IProcessWindingController::PushContext>, "PushContext"},
{22, nullptr, "PopContext"}, {22, nullptr, "PopContext"},
{23, nullptr, "CancelWindingReservation"}, {23, nullptr, "CancelWindingReservation"},
{30, nullptr, "WindAndDoReserved"}, {30, nullptr, "WindAndDoReserved"},
@ -51,4 +51,9 @@ Result IProcessWindingController::OpenCallingLibraryApplet(
R_SUCCEED(); R_SUCCEED();
} }
Result IProcessWindingController::PushContext() {
LOG_WARNING(Service_AM, "(STUBBED) called");
R_SUCCEED();
}
} // namespace Service::AM } // namespace Service::AM

View file

@ -21,7 +21,7 @@ private:
Result GetLaunchReason(Out<AppletProcessLaunchReason> out_launch_reason); Result GetLaunchReason(Out<AppletProcessLaunchReason> out_launch_reason);
Result OpenCallingLibraryApplet( Result OpenCallingLibraryApplet(
Out<SharedPointer<ILibraryAppletAccessor>> out_calling_library_applet); Out<SharedPointer<ILibraryAppletAccessor>> out_calling_library_applet);
Result PushContext();
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
}; };

View file

@ -38,6 +38,9 @@ ISelfController::ISelfController(Core::System& system_, std::shared_ptr<Applet>
{19, D<&ISelfController::SetAlbumImageOrientation>, "SetAlbumImageOrientation"}, {19, D<&ISelfController::SetAlbumImageOrientation>, "SetAlbumImageOrientation"},
{20, nullptr, "SetDesirableKeyboardLayout"}, {20, nullptr, "SetDesirableKeyboardLayout"},
{21, nullptr, "GetScreenShotProgramId"}, {21, nullptr, "GetScreenShotProgramId"},
{22, nullptr, "GetScreenShotAcdIndex"}, //19.0.0+
{23, nullptr, "GetScreenShotApparentPlatform"}, //19.0.0+
{24, nullptr, "GetScreenShotApplicationProperty"}, //19.0.0+
{40, D<&ISelfController::CreateManagedDisplayLayer>, "CreateManagedDisplayLayer"}, {40, D<&ISelfController::CreateManagedDisplayLayer>, "CreateManagedDisplayLayer"},
{41, D<&ISelfController::IsSystemBufferSharingEnabled>, "IsSystemBufferSharingEnabled"}, {41, D<&ISelfController::IsSystemBufferSharingEnabled>, "IsSystemBufferSharingEnabled"},
{42, D<&ISelfController::GetSystemSharedLayerHandle>, "GetSystemSharedLayerHandle"}, {42, D<&ISelfController::GetSystemSharedLayerHandle>, "GetSystemSharedLayerHandle"},
@ -67,6 +70,12 @@ ISelfController::ISelfController(Core::System& system_, std::shared_ptr<Applet>
{110, nullptr, "SetApplicationAlbumUserData"}, {110, nullptr, "SetApplicationAlbumUserData"},
{120, D<&ISelfController::SaveCurrentScreenshot>, "SaveCurrentScreenshot"}, {120, D<&ISelfController::SaveCurrentScreenshot>, "SaveCurrentScreenshot"},
{130, D<&ISelfController::SetRecordVolumeMuted>, "SetRecordVolumeMuted"}, {130, D<&ISelfController::SetRecordVolumeMuted>, "SetRecordVolumeMuted"},
{200, nullptr, "Unknown200"}, //20.0.0+
{210, nullptr, "Unknown210"}, //20.0.0+
{211, nullptr, "Unknown211"}, //20.0.0+
{220, nullptr, "Unknown220"}, //20.0.0+
{221, nullptr, "Unknown221"}, //20.0.0+
{230, D<&ISelfController::Unknown230>, "Unknown230"}, //20.0.0+
{1000, nullptr, "GetDebugStorageChannel"}, {1000, nullptr, "GetDebugStorageChannel"},
}; };
// clang-format on // clang-format on
@ -394,6 +403,10 @@ Result ISelfController::SaveCurrentScreenshot(Capture::AlbumReportOption album_r
R_SUCCEED(); R_SUCCEED();
} }
Result ISelfController::Unknown230() {
LOG_WARNING(Service_AM, "(STUBBED) called - function 230 (0xE6)");
R_SUCCEED();
}
Result ISelfController::SetRecordVolumeMuted(bool muted) { Result ISelfController::SetRecordVolumeMuted(bool muted) {
LOG_WARNING(Service_AM, "(STUBBED) called. muted={}", muted); LOG_WARNING(Service_AM, "(STUBBED) called. muted={}", muted);

View file

@ -62,6 +62,7 @@ private:
Result GetAccumulatedSuspendedTickChangedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); Result GetAccumulatedSuspendedTickChangedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result SetAlbumImageTakenNotificationEnabled(bool enabled); Result SetAlbumImageTakenNotificationEnabled(bool enabled);
Result SaveCurrentScreenshot(Capture::AlbumReportOption album_report_option); Result SaveCurrentScreenshot(Capture::AlbumReportOption album_report_option);
Result Unknown230();
Result SetRecordVolumeMuted(bool muted); Result SetRecordVolumeMuted(bool muted);
Kernel::KProcess* const m_process; Kernel::KProcess* const m_process;

View file

@ -53,6 +53,8 @@ IAlbumAccessorService::IAlbumAccessorService(Core::System& system_,
{8021, nullptr, "GetAlbumEntryFromApplicationAlbumEntryAruid"}, {8021, nullptr, "GetAlbumEntryFromApplicationAlbumEntryAruid"},
{10011, nullptr, "SetInternalErrorConversionEnabled"}, {10011, nullptr, "SetInternalErrorConversionEnabled"},
{50000, nullptr, "LoadMakerNoteInfoForDebug"}, {50000, nullptr, "LoadMakerNoteInfoForDebug"},
{50011, C<&IAlbumAccessorService::GetAlbumAccessResultForDebug>, "GetAlbumAccessResultForDebug"},
{50012, C<&IAlbumAccessorService::SetAlbumAccessResultForDebug>, "SetAlbumAccessResultForDebug"},
{60002, nullptr, "OpenAccessorSession"}, {60002, nullptr, "OpenAccessorSession"},
}; };
// clang-format on // clang-format on
@ -137,6 +139,15 @@ Result IAlbumAccessorService::LoadAlbumScreenShotThumbnailImageEx1(
R_RETURN(TranslateResult(result)); R_RETURN(TranslateResult(result));
} }
Result IAlbumAccessorService::GetAlbumAccessResultForDebug() {
LOG_DEBUG(Service_Capture, "(STUBBED) called.");
R_SUCCEED();
}
Result IAlbumAccessorService::SetAlbumAccessResultForDebug() {
LOG_DEBUG(Service_Capture, "(STUBBED) called.");
R_SUCCEED();
}
Result IAlbumAccessorService::TranslateResult(Result in_result) { Result IAlbumAccessorService::TranslateResult(Result in_result) {
if (in_result.IsSuccess()) { if (in_result.IsSuccess()) {
return in_result; return in_result;

View file

@ -50,6 +50,10 @@ private:
OutArray<u8, BufferAttr_HipcMapAlias | BufferAttr_HipcMapTransferAllowsNonSecure> out_image, OutArray<u8, BufferAttr_HipcMapAlias | BufferAttr_HipcMapTransferAllowsNonSecure> out_image,
OutArray<u8, BufferAttr_HipcMapAlias> out_buffer); OutArray<u8, BufferAttr_HipcMapAlias> out_buffer);
Result GetAlbumAccessResultForDebug();
Result SetAlbumAccessResultForDebug();
Result TranslateResult(Result in_result); Result TranslateResult(Result in_result);
std::shared_ptr<AlbumManager> manager = nullptr; std::shared_ptr<AlbumManager> manager = nullptr;

View file

@ -30,6 +30,8 @@ public:
{10, nullptr, "CreateReportWithAttachments"}, {10, nullptr, "CreateReportWithAttachments"},
{11, C<&ErrorReportContext::CreateReportV1>, "CreateReportV1"}, {11, C<&ErrorReportContext::CreateReportV1>, "CreateReportV1"},
{12, C<&ErrorReportContext::CreateReport>, "CreateReport"}, {12, C<&ErrorReportContext::CreateReport>, "CreateReport"},
{13, nullptr, "SubmitAttachmentWithLz4Compression"}, // 20.0.0+
{14, nullptr, "CreateReportWithSpecifiedReprotId"}, // 20.0.0+
{20, nullptr, "RegisterRunningApplet"}, {20, nullptr, "RegisterRunningApplet"},
{21, nullptr, "UnregisterRunningApplet"}, {21, nullptr, "UnregisterRunningApplet"},
{22, nullptr, "UpdateAppletSuspendedDuration"}, {22, nullptr, "UpdateAppletSuspendedDuration"},

View file

@ -76,6 +76,7 @@ FSP_SRV::FSP_SRV(Core::System& system_)
{34, D<&FSP_SRV::GetCacheStorageSize>, "GetCacheStorageSize"}, {34, D<&FSP_SRV::GetCacheStorageSize>, "GetCacheStorageSize"},
{35, nullptr, "CreateSaveDataFileSystemByHashSalt"}, {35, nullptr, "CreateSaveDataFileSystemByHashSalt"},
{36, nullptr, "OpenHostFileSystemWithOption"}, {36, nullptr, "OpenHostFileSystemWithOption"},
{38, nullptr, "DetachSdCard"}, // 20.0.0+
{51, D<&FSP_SRV::OpenSaveDataFileSystem>, "OpenSaveDataFileSystem"}, {51, D<&FSP_SRV::OpenSaveDataFileSystem>, "OpenSaveDataFileSystem"},
{52, D<&FSP_SRV::OpenSaveDataFileSystemBySystemSaveDataId>, "OpenSaveDataFileSystemBySystemSaveDataId"}, {52, D<&FSP_SRV::OpenSaveDataFileSystemBySystemSaveDataId>, "OpenSaveDataFileSystemBySystemSaveDataId"},
{53, D<&FSP_SRV::OpenReadOnlySaveDataFileSystem>, "OpenReadOnlySaveDataFileSystem"}, {53, D<&FSP_SRV::OpenReadOnlySaveDataFileSystem>, "OpenReadOnlySaveDataFileSystem"},
@ -117,6 +118,7 @@ FSP_SRV::FSP_SRV(Core::System& system_)
{400, nullptr, "OpenDeviceOperator"}, {400, nullptr, "OpenDeviceOperator"},
{500, nullptr, "OpenSdCardDetectionEventNotifier"}, {500, nullptr, "OpenSdCardDetectionEventNotifier"},
{501, nullptr, "OpenGameCardDetectionEventNotifier"}, {501, nullptr, "OpenGameCardDetectionEventNotifier"},
{502, nullptr, "OpenSdCardAwakenReadyEventNotifier"}, // 20.0.0+
{510, nullptr, "OpenSystemDataUpdateEventNotifier"}, {510, nullptr, "OpenSystemDataUpdateEventNotifier"},
{511, nullptr, "NotifySystemDataUpdateEvent"}, {511, nullptr, "NotifySystemDataUpdateEvent"},
{520, nullptr, "SimulateGameCardDetectionEvent"}, {520, nullptr, "SimulateGameCardDetectionEvent"},

View file

@ -50,16 +50,19 @@ public:
{20102, nullptr, "GetFriendDetailedInfo"}, {20102, nullptr, "GetFriendDetailedInfo"},
{20103, nullptr, "SyncFriendList"}, {20103, nullptr, "SyncFriendList"},
{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"}, {20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"},
{20107, nullptr, "GetFriendDetailedInfoV2"}, // 20.0.0+
{20110, nullptr, "LoadFriendSetting"}, {20110, nullptr, "LoadFriendSetting"},
{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"}, {20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"},
{20201, nullptr, "GetFriendRequestList"}, {20201, nullptr, "GetFriendRequestListV1"}, // 20.0.0+ (1.0.0-19.0.1 GetFriendRequestList)
{20202, nullptr, "GetFriendRequestListV2"}, // 20.0.0+
{20300, nullptr, "GetFriendCandidateList"}, {20300, nullptr, "GetFriendCandidateList"},
{20301, nullptr, "GetNintendoNetworkIdInfo"}, {20301, nullptr, "GetNintendoNetworkIdInfo"},
{20302, nullptr, "GetSnsAccountLinkage"}, {20302, nullptr, "GetSnsAccountLinkage"},
{20303, nullptr, "GetSnsAccountProfile"}, {20303, nullptr, "GetSnsAccountProfile"},
{20304, nullptr, "GetSnsAccountFriendList"}, {20304, nullptr, "GetSnsAccountFriendList"},
{20400, nullptr, "GetBlockedUserList"}, {20400, nullptr, "GetBlockedUserListV1"}, // 20.0.0+ (1.0.0-19.0.1 GetBlockedUserList)
{20401, nullptr, "SyncBlockedUserList"}, {20401, nullptr, "SyncBlockedUserList"},
{20402, nullptr, "GetBlockedUserListV2"}, // 20.0.0+
{20500, nullptr, "GetProfileExtraList"}, {20500, nullptr, "GetProfileExtraList"},
{20501, nullptr, "GetRelationship"}, {20501, nullptr, "GetRelationship"},
{20600, &IFriendService::GetUserPresenceView, "GetUserPresenceView"}, {20600, &IFriendService::GetUserPresenceView, "GetUserPresenceView"},
@ -78,7 +81,7 @@ public:
{30120, nullptr, "ChangeFriendFavoriteFlag"}, {30120, nullptr, "ChangeFriendFavoriteFlag"},
{30121, nullptr, "ChangeFriendOnlineNotificationFlag"}, {30121, nullptr, "ChangeFriendOnlineNotificationFlag"},
{30200, nullptr, "SendFriendRequest"}, {30200, nullptr, "SendFriendRequest"},
{30201, nullptr, "SendFriendRequestWithApplicationInfo"}, {30201, nullptr, "SendFriendRequestWithApplicationInfoV1"}, // 20.0.0+ (1.0.0-19.0.1 SendFriendRequestWithApplicationInfo)
{30202, nullptr, "CancelFriendRequest"}, {30202, nullptr, "CancelFriendRequest"},
{30203, nullptr, "AcceptFriendRequest"}, {30203, nullptr, "AcceptFriendRequest"},
{30204, nullptr, "RejectFriendRequest"}, {30204, nullptr, "RejectFriendRequest"},
@ -91,11 +94,13 @@ public:
{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"}, {30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"},
{30216, nullptr, "ResendFacedFriendRequest"}, {30216, nullptr, "ResendFacedFriendRequest"},
{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"}, {30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"},
{30218, nullptr, "SendFriendRequestWithApplicationInfoV2"}, // 20.0.0+
{30300, nullptr, "GetSnsAccountLinkPageUrl"}, {30300, nullptr, "GetSnsAccountLinkPageUrl"},
{30301, nullptr, "UnlinkSnsAccount"}, {30301, nullptr, "UnlinkSnsAccount"},
{30400, nullptr, "BlockUser"}, {30400, nullptr, "BlockUser"},
{30401, nullptr, "BlockUserWithApplicationInfo"}, {30401, nullptr, "BlockUserWithApplicationInfoV1"}, // 20.0.0+ (1.0.0-19.0.1 BlockUserWithApplicationInfo)
{30402, nullptr, "UnblockUser"}, {30402, nullptr, "UnblockUser"},
{30403, nullptr, "BlockUserWithApplicationInfoV2"}, // 20.0.0+
{30500, nullptr, "GetProfileExtraFromFriendCode"}, {30500, nullptr, "GetProfileExtraFromFriendCode"},
{30700, nullptr, "DeletePlayHistory"}, {30700, nullptr, "DeletePlayHistory"},
{30810, nullptr, "ChangePresencePermission"}, {30810, nullptr, "ChangePresencePermission"},

View file

@ -87,6 +87,8 @@ IHidDebugServer::IHidDebugServer(Core::System& system_, std::shared_ptr<Resource
{210, nullptr, "IsFirmwareUpdatingDevice"}, {210, nullptr, "IsFirmwareUpdatingDevice"},
{211, nullptr, "StartFirmwareUpdateIndividual"}, {211, nullptr, "StartFirmwareUpdateIndividual"},
{212, nullptr, "GetDetailFirmwareVersion"}, // 19.0.0+ {212, nullptr, "GetDetailFirmwareVersion"}, // 19.0.0+
{213, nullptr, "GetFirmwareVersionStringForDevMenu"}, // 20.0.0+
{214, nullptr, "Unknown214"}, // 20.1.0+
{215, nullptr, "SetUsbFirmwareForceUpdateEnabled"}, {215, nullptr, "SetUsbFirmwareForceUpdateEnabled"},
{216, nullptr, "SetAllKuinaDevicesToFirmwareUpdateMode"}, {216, nullptr, "SetAllKuinaDevicesToFirmwareUpdateMode"},
{221, nullptr, "UpdateControllerColor"}, {221, nullptr, "UpdateControllerColor"},

View file

@ -119,6 +119,7 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{134, C<&IHidServer::SetNpadAnalogStickUseCenterClamp>, "SetNpadAnalogStickUseCenterClamp"}, {134, C<&IHidServer::SetNpadAnalogStickUseCenterClamp>, "SetNpadAnalogStickUseCenterClamp"},
{135, C<&IHidServer::SetNpadCaptureButtonAssignment>, "SetNpadCaptureButtonAssignment"}, {135, C<&IHidServer::SetNpadCaptureButtonAssignment>, "SetNpadCaptureButtonAssignment"},
{136, C<&IHidServer::ClearNpadCaptureButtonAssignment>, "ClearNpadCaptureButtonAssignment"}, {136, C<&IHidServer::ClearNpadCaptureButtonAssignment>, "ClearNpadCaptureButtonAssignment"},
{137, nullptr, "SetNpadGcAnalogStick8bitRawValue"}, // 20.0.0+
{200, C<&IHidServer::GetVibrationDeviceInfo>, "GetVibrationDeviceInfo"}, {200, C<&IHidServer::GetVibrationDeviceInfo>, "GetVibrationDeviceInfo"},
{201, C<&IHidServer::SendVibrationValue>, "SendVibrationValue"}, {201, C<&IHidServer::SendVibrationValue>, "SendVibrationValue"},
{202, C<&IHidServer::GetActualVibrationValue>, "GetActualVibrationValue"}, {202, C<&IHidServer::GetActualVibrationValue>, "GetActualVibrationValue"},
@ -186,7 +187,8 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{1001, C<&IHidServer::GetNpadCommunicationMode>, "GetNpadCommunicationMode"}, {1001, C<&IHidServer::GetNpadCommunicationMode>, "GetNpadCommunicationMode"},
{1002, C<&IHidServer::SetTouchScreenConfiguration>, "SetTouchScreenConfiguration"}, {1002, C<&IHidServer::SetTouchScreenConfiguration>, "SetTouchScreenConfiguration"},
{1003, C<&IHidServer::IsFirmwareUpdateNeededForNotification>, "IsFirmwareUpdateNeededForNotification"}, {1003, C<&IHidServer::IsFirmwareUpdateNeededForNotification>, "IsFirmwareUpdateNeededForNotification"},
{1004, C<&IHidServer::SetTouchScreenResolution>, "SetTouchScreenResolution"}, {1004, C<&IHidServer::SetTouchScreenResolution>, "SetTouchScreenResolution"}, // 20.0.0+ (17.0.0-19.0.1 SetTouchScreenResolution)
{1005, nullptr, "EnableNxTouchScreenEmulationForTouchEnter"}, // 20.0.0+
{2000, nullptr, "ActivateDigitizer"}, {2000, nullptr, "ActivateDigitizer"},
}; };
// clang-format on // clang-format on

View file

@ -67,6 +67,8 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
{328, nullptr, "AttachAbstractedPadToNpad"}, {328, nullptr, "AttachAbstractedPadToNpad"},
{329, nullptr, "DetachAbstractedPadAll"}, {329, nullptr, "DetachAbstractedPadAll"},
{330, nullptr, "CheckAbstractedPadConnection"}, {330, nullptr, "CheckAbstractedPadConnection"},
{333, nullptr, "SetNpadUserSpgApplet"}, // 20.0.0+
{334, nullptr, "AcquireUniquePadButtonStateChangedEventHandle"}, // 20.0.0+
{500, nullptr, "SetAppletResourceUserId"}, {500, nullptr, "SetAppletResourceUserId"},
{501, &IHidSystemServer::RegisterAppletResourceUserId, "RegisterAppletResourceUserId"}, {501, &IHidSystemServer::RegisterAppletResourceUserId, "RegisterAppletResourceUserId"},
{502, &IHidSystemServer::UnregisterAppletResourceUserId, "UnregisterAppletResourceUserId"}, {502, &IHidSystemServer::UnregisterAppletResourceUserId, "UnregisterAppletResourceUserId"},
@ -96,9 +98,12 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
{547, nullptr, "GetAllowedBluetoothLinksCount"}, {547, nullptr, "GetAllowedBluetoothLinksCount"},
{548, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevices"}, {548, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevices"},
{549, nullptr, "GetConnectableRegisteredDevices"}, {549, nullptr, "GetConnectableRegisteredDevices"},
{551, nullptr, "GetRegisteredDevicesForControllerSupport"}, // 20.0.0+
{700, nullptr, "ActivateUniquePad"}, {700, nullptr, "ActivateUniquePad"},
{702, &IHidSystemServer::AcquireUniquePadConnectionEventHandle, "AcquireUniquePadConnectionEventHandle"}, {702, &IHidSystemServer::AcquireUniquePadConnectionEventHandle, "AcquireUniquePadConnectionEventHandle"},
{703, &IHidSystemServer::GetUniquePadIds, "GetUniquePadIds"}, {703, &IHidSystemServer::GetUniquePadIds, "GetUniquePadIds"},
{711, nullptr, "AcquireUniquePadConnectionOnHandheldForNsEventHandle"}, // 20.0.0+
{712, nullptr, "GetUniquePadColor12"}, // 20.0.0+
{751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"}, {751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"},
{800, nullptr, "ListSixAxisSensorHandles"}, {800, nullptr, "ListSixAxisSensorHandles"},
{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"}, {801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
@ -143,6 +148,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
{1009, nullptr, "AcquireAudioControlEventHandle"}, {1009, nullptr, "AcquireAudioControlEventHandle"},
{1010, nullptr, "GetAudioControlStates"}, {1010, nullptr, "GetAudioControlStates"},
{1011, nullptr, "DeactivateAudioControl"}, {1011, nullptr, "DeactivateAudioControl"},
{1012, nullptr, "GetFirmwareVersionStringForUserSupportPage"}, // 20.0.0+
{1050, nullptr, "IsSixAxisSensorAccurateUserCalibrationSupported"}, {1050, nullptr, "IsSixAxisSensorAccurateUserCalibrationSupported"},
{1051, nullptr, "StartSixAxisSensorAccurateUserCalibration"}, {1051, nullptr, "StartSixAxisSensorAccurateUserCalibration"},
{1052, nullptr, "CancelSixAxisSensorAccurateUserCalibration"}, {1052, nullptr, "CancelSixAxisSensorAccurateUserCalibration"},
@ -225,6 +231,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
{1309, nullptr, "IsButtonConfigVisible"}, // 18.0.0+ {1309, nullptr, "IsButtonConfigVisible"}, // 18.0.0+
{1320, nullptr, "WakeTouchScreenUp"}, // 17.0.0+ {1320, nullptr, "WakeTouchScreenUp"}, // 17.0.0+
{1321, nullptr, "PutTouchScreenToSleep"}, // 17.0.0+ {1321, nullptr, "PutTouchScreenToSleep"}, // 17.0.0+
{1322, nullptr, "AcquireTouchScreenAsyncWakeCompletedEvent"}, // 20.0.0+
{1420, nullptr, "GetAppletResourceProperty"}, // 19.0.0+ {1420, nullptr, "GetAppletResourceProperty"}, // 19.0.0+
}; };
// clang-format on // clang-format on

View file

@ -19,6 +19,7 @@ public:
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"} {0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"}
{1, nullptr, "CreateClientProcessMonitor"} // 18.0.0+
}; };
// clang-format on // clang-format on

View file

@ -40,6 +40,7 @@ ISystemLocalCommunicationService::ISystemLocalCommunicationService(Core::System&
{401, nullptr, "FinalizeSystem"}, {401, nullptr, "FinalizeSystem"},
{402, nullptr, "SetOperationMode"}, {402, nullptr, "SetOperationMode"},
{403, C<&ISystemLocalCommunicationService::InitializeSystem2>, "InitializeSystem2"}, {403, C<&ISystemLocalCommunicationService::InitializeSystem2>, "InitializeSystem2"},
{404, nullptr, "InitializeWithPriority"}, // 19.0.0+
}; };
// clang-format on // clang-format on

View file

@ -57,6 +57,8 @@ IUserLocalCommunicationService::IUserLocalCommunicationService(Core::System& sys
{400, C<&IUserLocalCommunicationService::Initialize>, "Initialize"}, {400, C<&IUserLocalCommunicationService::Initialize>, "Initialize"},
{401, C<&IUserLocalCommunicationService::Finalize>, "Finalize"}, {401, C<&IUserLocalCommunicationService::Finalize>, "Finalize"},
{402, C<&IUserLocalCommunicationService::Initialize2>, "Initialize2"}, {402, C<&IUserLocalCommunicationService::Initialize2>, "Initialize2"},
{403, nullptr, "InitializeWithPriority"}, // 19.0.0+
{500, nullptr, "EnableActionFrame"}, // 18.0.0+
}; };
// clang-format on // clang-format on

View file

@ -88,6 +88,8 @@ public:
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, &ILogger::Log, "Log"}, {0, &ILogger::Log, "Log"},
{1, &ILogger::SetDestination, "SetDestination"}, {1, &ILogger::SetDestination, "SetDestination"},
{2, nullptr, "TransmitHashedLog"}, // 20.0.0+
{3, nullptr, "DevNotify"}, // 20.0.0+
}; };
RegisterHandlers(functions); RegisterHandlers(functions);
} }

View file

@ -333,6 +333,8 @@ public:
{15, nullptr, "LoadImage"}, {15, nullptr, "LoadImage"},
{16, nullptr, "AddOrUpdateImage"}, {16, nullptr, "AddOrUpdateImage"},
{17, nullptr, "DeleteImages"}, {17, nullptr, "DeleteImages"},
{19, nullptr, "ClearHeaderForMigration"}, // 20.0.0+
{20, nullptr, "SaveHeaderForMigration"}, // 20.0.0+
{100, nullptr, "DeleteFile"}, {100, nullptr, "DeleteFile"},
{101, nullptr, "DestroyFile"}, {101, nullptr, "DestroyFile"},
{102, nullptr, "ImportFile"}, {102, nullptr, "ImportFile"},

View file

@ -1094,10 +1094,16 @@ IGeneralService::IGeneralService(Core::System& system_)
{44, nullptr, "IsWiredConnectionAvailable"}, // 18.0.0+ {44, nullptr, "IsWiredConnectionAvailable"}, // 18.0.0+
{45, nullptr, "IsNetworkEmulationFeatureEnabled"}, // 18.0.0+ {45, nullptr, "IsNetworkEmulationFeatureEnabled"}, // 18.0.0+
{46, nullptr, "SelectActiveNetworkEmulationProfileIdForDebug"}, // 18.0.0+ {46, nullptr, "SelectActiveNetworkEmulationProfileIdForDebug"}, // 18.0.0+
{47, &IGeneralService::GetScanDataV3, "GetScanData"}, // 19.0.0+ {47, nullptr, "GetActiveNetworkEmulationProfileId"}, // 18.0.0+
{48, nullptr, "ResetActiveNetworkEmulationProfileId"}, // 20.0.0+
{50, nullptr, "IsRewriteFeatureEnabled"}, // 18.0.0+ {50, nullptr, "IsRewriteFeatureEnabled"}, // 18.0.0+
{51, nullptr, "CreateRewriteRule"}, // 18.0.0+ {51, nullptr, "CreateRewriteRule"}, // 18.0.0+
{52, nullptr, "DestroyRewriteRule"} // 18.0.0+ {52, nullptr, "DestroyRewriteRule"}, // 18.0.0+
{53, nullptr, "IsActiveNetworkEmulationProfileIdSelected"}, // 20.0.0+
{54, nullptr, "SelectDefaultNetworkEmulationProfileId"}, // 20.0.0+
{55, nullptr, "GetDefaultNetworkEmulationProfileId"}, // 20.0.0+
{56, nullptr, "GetNetworkEmulationProfile"}, // 20.0.0+
{57, nullptr, "SetWowlTcpKeepAliveTimeout"}, // 20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -306,6 +306,9 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{3013, nullptr, "IsGameCardEnabled"}, {3013, nullptr, "IsGameCardEnabled"},
{3014, nullptr, "IsLocalContentShareEnabled"}, {3014, nullptr, "IsLocalContentShareEnabled"},
{3050, nullptr, "ListAssignELicenseTaskResult"}, {3050, nullptr, "ListAssignELicenseTaskResult"},
{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022"},
{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023"},
{4088, D<&IApplicationManagerInterface::Unknown4088>, "Unknown4088"},
{9999, nullptr, "GetApplicationCertificate"}, {9999, nullptr, "GetApplicationCertificate"},
}; };
// clang-format on // clang-format on
@ -516,6 +519,23 @@ Result IApplicationManagerInterface::CheckApplicationLaunchVersion(u64 applicati
R_SUCCEED(); R_SUCCEED();
} }
Result IApplicationManagerInterface::Unknown4022(Out<u32> out_unknown) {
LOG_WARNING(Service_NS, "(STUBBED) Unknown4022 called");
*out_unknown = 0;
R_SUCCEED();
}
Result IApplicationManagerInterface::Unknown4023(Out<u32> out_unknown) {
LOG_WARNING(Service_NS, "(STUBBED) Unknown4022 called");
*out_unknown = 0;
R_SUCCEED();
}
Result IApplicationManagerInterface::Unknown4088() {
LOG_WARNING(Service_NS, "(STUBBED) Unknown4088 called");
R_SUCCEED();
}
Result IApplicationManagerInterface::GetApplicationTerminateResult(Out<Result> out_result, Result IApplicationManagerInterface::GetApplicationTerminateResult(Out<Result> out_result,
u64 application_id) { u64 application_id) {
LOG_WARNING(Service_NS, "(STUBBED) called. application_id={:016X}", application_id); LOG_WARNING(Service_NS, "(STUBBED) called. application_id={:016X}", application_id);

View file

@ -52,6 +52,9 @@ public:
Result IsApplicationUpdateRequested(Out<bool> out_update_required, Out<u32> out_update_version, Result IsApplicationUpdateRequested(Out<bool> out_update_required, Out<u32> out_update_version,
u64 application_id); u64 application_id);
Result CheckApplicationLaunchVersion(u64 application_id); Result CheckApplicationLaunchVersion(u64 application_id);
Result Unknown4022(Out<u32> out_unknown);
Result Unknown4023(Out<u32> out_unknown);
Result Unknown4088();
Result GetApplicationTerminateResult(Out<Result> out_result, u64 application_id); Result GetApplicationTerminateResult(Out<Result> out_result, u64 application_id);
private: private:

View file

@ -18,6 +18,8 @@ IContentManagementInterface::IContentManagementInterface(Core::System& system_)
{43, D<&IContentManagementInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"}, {43, D<&IContentManagementInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"},
{47, D<&IContentManagementInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"}, {47, D<&IContentManagementInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"},
{48, D<&IContentManagementInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"}, {48, D<&IContentManagementInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"},
{58, nullptr, "Unknown58"}, // 20.1.0+
{71, nullptr, "Unknown71"}, // 20.1.0+
{600, nullptr, "CountApplicationContentMeta"}, {600, nullptr, "CountApplicationContentMeta"},
{601, nullptr, "ListApplicationContentMetaStatus"}, {601, nullptr, "ListApplicationContentMetaStatus"},
{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"}, {605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"},

View file

@ -147,6 +147,7 @@ IPlatformServiceManager::IPlatformServiceManager(Core::System& system_, const ch
{104, nullptr, "RequestApplicationFunctionAuthorizationByProgramId"}, {104, nullptr, "RequestApplicationFunctionAuthorizationByProgramId"},
{105, nullptr, "GetFunctionBlackListSystemVersionToAuthorize"}, {105, nullptr, "GetFunctionBlackListSystemVersionToAuthorize"},
{106, nullptr, "GetFunctionBlackListVersion"}, {106, nullptr, "GetFunctionBlackListVersion"},
{108, nullptr, "GetRequiredApplicationVersion"}, // 20.0.0+
{1000, nullptr, "LoadNgWordDataForPlatformRegionChina"}, {1000, nullptr, "LoadNgWordDataForPlatformRegionChina"},
{1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"}, {1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"},
}; };

View file

@ -38,6 +38,8 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1016, nullptr, "ConfirmShowNewsPermission"}, {1016, nullptr, "ConfirmShowNewsPermission"},
{1017, D<&IParentalControlService::EndFreeCommunication>, "EndFreeCommunication"}, {1017, D<&IParentalControlService::EndFreeCommunication>, "EndFreeCommunication"},
{1018, D<&IParentalControlService::IsFreeCommunicationAvailable>, "IsFreeCommunicationAvailable"}, {1018, D<&IParentalControlService::IsFreeCommunicationAvailable>, "IsFreeCommunicationAvailable"},
{1019, nullptr, "ConfirmLaunchApplicationPermission"}, // 20.0.0+
{1020, nullptr, "ConfirmLaunchSharedApplicationPermission"}, // 20.0.0+
{1031, D<&IParentalControlService::IsRestrictionEnabled>, "IsRestrictionEnabled"}, {1031, D<&IParentalControlService::IsRestrictionEnabled>, "IsRestrictionEnabled"},
{1032, D<&IParentalControlService::GetSafetyLevel>, "GetSafetyLevel"}, {1032, D<&IParentalControlService::GetSafetyLevel>, "GetSafetyLevel"},
{1033, nullptr, "SetSafetyLevel"}, {1033, nullptr, "SetSafetyLevel"},
@ -52,9 +54,11 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1044, nullptr, "GetFreeCommunicationApplicationList"}, {1044, nullptr, "GetFreeCommunicationApplicationList"},
{1045, nullptr, "UpdateFreeCommunicationApplicationList"}, {1045, nullptr, "UpdateFreeCommunicationApplicationList"},
{1046, nullptr, "DisableFeaturesForReset"}, {1046, nullptr, "DisableFeaturesForReset"},
{1047, nullptr, "NotifyApplicationDownloadStarted"}, {1047, nullptr, "NotifyApplicationDownloadStartedOld"}, // 20.0.0+ (3.0.0-19.0.1 NotifyApplicationDownloadStarted)
{1048, nullptr, "NotifyNetworkProfileCreated"}, {1048, nullptr, "NotifyNetworkProfileCreated"},
{1049, nullptr, "ResetFreeCommunicationApplicationList"}, {1049, nullptr, "ResetFreeCommunicationApplicationList"},
{1050, nullptr, "AddToFreeCommunicationApplicationList"}, // 20.0.0+
{1051, nullptr, "NotifyApplicationDownloadStarted"}, // 20.0.0+
{1061, D<&IParentalControlService::ConfirmStereoVisionRestrictionConfigurable>, "ConfirmStereoVisionRestrictionConfigurable"}, {1061, D<&IParentalControlService::ConfirmStereoVisionRestrictionConfigurable>, "ConfirmStereoVisionRestrictionConfigurable"},
{1062, D<&IParentalControlService::GetStereoVisionRestriction>, "GetStereoVisionRestriction"}, {1062, D<&IParentalControlService::GetStereoVisionRestriction>, "GetStereoVisionRestriction"},
{1063, D<&IParentalControlService::SetStereoVisionRestriction>, "SetStereoVisionRestriction"}, {1063, D<&IParentalControlService::SetStereoVisionRestriction>, "SetStereoVisionRestriction"},
@ -80,16 +84,18 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1451, D<&IParentalControlService::StartPlayTimer>, "StartPlayTimer"}, {1451, D<&IParentalControlService::StartPlayTimer>, "StartPlayTimer"},
{1452, D<&IParentalControlService::StopPlayTimer>, "StopPlayTimer"}, {1452, D<&IParentalControlService::StopPlayTimer>, "StopPlayTimer"},
{1453, D<&IParentalControlService::IsPlayTimerEnabled>, "IsPlayTimerEnabled"}, {1453, D<&IParentalControlService::IsPlayTimerEnabled>, "IsPlayTimerEnabled"},
{1454, nullptr, "GetPlayTimerRemainingTime"}, {1454, D<&IParentalControlService::GetPlayTimerRemainingTime>, "GetPlayTimerRemainingTime"},
{1455, D<&IParentalControlService::IsRestrictedByPlayTimer>, "IsRestrictedByPlayTimer"}, {1455, D<&IParentalControlService::IsRestrictedByPlayTimer>, "IsRestrictedByPlayTimer"},
{1456, D<&IParentalControlService::GetPlayTimerSettingsOld>, "GetPlayTimerSettingsOld"}, {1456, D<&IParentalControlService::GetPlayTimerSettingsOld>, "GetPlayTimerSettingsOld"},
{1457, D<&IParentalControlService::GetPlayTimerEventToRequestSuspension>, "GetPlayTimerEventToRequestSuspension"}, {1457, D<&IParentalControlService::GetPlayTimerEventToRequestSuspension>, "GetPlayTimerEventToRequestSuspension"},
{1458, D<&IParentalControlService::IsPlayTimerAlarmDisabled>, "IsPlayTimerAlarmDisabled"}, {1458, D<&IParentalControlService::IsPlayTimerAlarmDisabled>, "IsPlayTimerAlarmDisabled"},
{1459, D<&IParentalControlService::GetPlayTimerRemainingTimeDisplayInfo>, "GetPlayTimerRemainingTimeDisplayInfo"}, // 20.0.0+
{1471, nullptr, "NotifyWrongPinCodeInputManyTimes"}, {1471, nullptr, "NotifyWrongPinCodeInputManyTimes"},
{1472, nullptr, "CancelNetworkRequest"}, {1472, nullptr, "CancelNetworkRequest"},
{1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"}, {1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"},
{1474, nullptr, "ClearUnlinkedEvent"}, {1474, nullptr, "ClearUnlinkedEvent"},
{1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+ {1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+
{1501, nullptr, "SetTimerEventEnabled"}, // 20.0.0+
{1601, nullptr, "DisableAllFeatures"}, {1601, nullptr, "DisableAllFeatures"},
{1602, nullptr, "PostEnableAllFeatures"}, {1602, nullptr, "PostEnableAllFeatures"},
{1603, nullptr, "IsAllFeaturesDisabled"}, {1603, nullptr, "IsAllFeaturesDisabled"},
@ -109,6 +115,9 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+ {1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+
{1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 18.0.0+ {1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 18.0.0+
{1957, nullptr, "GetBedtimeAlarmTimeMinute"}, // 18.0.0+ {1957, nullptr, "GetBedtimeAlarmTimeMinute"}, // 18.0.0+
{1958, nullptr, "GetBedtimeAlarmResetTimeHour"}, // 20.0.0+
{1959, nullptr, "GetBedtimeAlarmResetTimeMinute"}, // 20.0.0+
{1960, nullptr, "GetExtraPlayingTimeForDebug"}, // 20.0.0+
{2001, nullptr, "RequestPairingAsync"}, {2001, nullptr, "RequestPairingAsync"},
{2002, nullptr, "FinishRequestPairing"}, {2002, nullptr, "FinishRequestPairing"},
{2003, nullptr, "AuthorizePairingAsync"}, {2003, nullptr, "AuthorizePairingAsync"},
@ -125,6 +134,15 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{2014, nullptr, "FinishSynchronizeParentalControlSettings"}, {2014, nullptr, "FinishSynchronizeParentalControlSettings"},
{2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, {2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"},
{2016, nullptr, "RequestUpdateExemptionListAsync"}, {2016, nullptr, "RequestUpdateExemptionListAsync"},
{2021, nullptr, "RequestCopyPairingAsync"}, // 20.0.0+
{2022, nullptr, "FinishRequestCopyPairing"}, // 20.0.0+
{2023, nullptr, "IsFromPairingActiveDevice"}, // 20.0.0+
{3001, nullptr, "GetErrorContextChangedEvent"}, // 20.0.0+
{9401, nullptr, "GetEvents"}, // 20.0.0+
{9402, nullptr, "GetEventsWithJson"}, // 20.0.0+
{9403, nullptr, "RequestPostEvents"}, // 20.0.0+
{9404, nullptr, "GetPostEventInterval"}, // 20.0.0+
{9405, nullptr, "SetPostEventInterval"}, // 20.0.0+
{145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings"} // 18.0.0+ {145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings"} // 18.0.0+
}; };
// clang-format on // clang-format on
@ -378,6 +396,12 @@ Result IParentalControlService::IsPlayTimerEnabled(Out<bool> out_is_play_timer_e
R_SUCCEED(); R_SUCCEED();
} }
Result IParentalControlService::GetPlayTimerRemainingTime(Out<s32> out_remaining_minutes) {
*out_remaining_minutes = 0;
LOG_WARNING(Service_PCTL, "(STUBBED) called, remaining_minutes={}", *out_remaining_minutes);
R_SUCCEED();
}
Result IParentalControlService::IsRestrictedByPlayTimer(Out<bool> out_is_restricted_by_play_timer) { Result IParentalControlService::IsRestrictedByPlayTimer(Out<bool> out_is_restricted_by_play_timer) {
*out_is_restricted_by_play_timer = false; *out_is_restricted_by_play_timer = false;
LOG_WARNING(Service_PCTL, "(STUBBED) called, restricted={}", *out_is_restricted_by_play_timer); LOG_WARNING(Service_PCTL, "(STUBBED) called, restricted={}", *out_is_restricted_by_play_timer);
@ -412,6 +436,15 @@ Result IParentalControlService::IsPlayTimerAlarmDisabled(Out<bool> out_play_time
R_SUCCEED(); R_SUCCEED();
} }
Result IParentalControlService::GetPlayTimerRemainingTimeDisplayInfo(
Out<s32> out_remaining_minutes, Out<u32> out_unknown) {
*out_remaining_minutes = 0;
*out_unknown = 0;
LOG_WARNING(Service_PCTL, "(STUBBED) called, remaining_minutes={}, unknown={}",
*out_remaining_minutes, *out_unknown);
R_SUCCEED();
}
Result IParentalControlService::GetUnlinkedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event) { Result IParentalControlService::GetUnlinkedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_INFO(Service_PCTL, "called"); LOG_INFO(Service_PCTL, "called");
*out_event = unlinked_event.GetHandle(); *out_event = unlinked_event.GetHandle();

View file

@ -49,10 +49,12 @@ private:
Result StartPlayTimer(); Result StartPlayTimer();
Result StopPlayTimer(); Result StopPlayTimer();
Result IsPlayTimerEnabled(Out<bool> out_is_play_timer_enabled); Result IsPlayTimerEnabled(Out<bool> out_is_play_timer_enabled);
Result GetPlayTimerRemainingTime(Out<s32> out_remaining_minutes);
Result IsRestrictedByPlayTimer(Out<bool> out_is_restricted_by_play_timer); Result IsRestrictedByPlayTimer(Out<bool> out_is_restricted_by_play_timer);
Result GetPlayTimerSettingsOld(Out<PlayTimerSettings> out_play_timer_settings); Result GetPlayTimerSettingsOld(Out<PlayTimerSettings> out_play_timer_settings);
Result GetPlayTimerEventToRequestSuspension(OutCopyHandle<Kernel::KReadableEvent> out_event); Result GetPlayTimerEventToRequestSuspension(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result IsPlayTimerAlarmDisabled(Out<bool> out_play_timer_alarm_disabled); Result IsPlayTimerAlarmDisabled(Out<bool> out_play_timer_alarm_disabled);
Result GetPlayTimerRemainingTimeDisplayInfo(Out<s32> out_remaining_minutes, Out<u32> out_unknown);
Result GetUnlinkedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); Result GetUnlinkedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result GetStereoVisionRestriction(Out<bool> out_stereo_vision_restriction); Result GetStereoVisionRestriction(Out<bool> out_stereo_vision_restriction);
Result SetStereoVisionRestriction(bool stereo_vision_restriction); Result SetStereoVisionRestriction(bool stereo_vision_restriction);

View file

@ -18,6 +18,7 @@ IFirmwareDebugSettingsServer::IFirmwareDebugSettingsServer(Core::System& system_
{21, nullptr, "SetAllowedSslHosts"}, {21, nullptr, "SetAllowedSslHosts"},
{22, nullptr, "SetHostFsMountPoint"}, {22, nullptr, "SetHostFsMountPoint"},
{23, nullptr, "SetMemoryUsageRateFlag"}, {23, nullptr, "SetMemoryUsageRateFlag"},
{24, nullptr, "CommitSettings"}, // 20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -304,6 +304,15 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_)
{222, nullptr, "SetForceMonauralOutputFlag"}, //17.0.0+ {222, nullptr, "SetForceMonauralOutputFlag"}, //17.0.0+
{251, nullptr, "GetAccountIdentificationSettings"}, //18.0.0+ {251, nullptr, "GetAccountIdentificationSettings"}, //18.0.0+
{252, nullptr, "SetAccountIdentificationSettings"}, //18.0.0+ {252, nullptr, "SetAccountIdentificationSettings"}, //18.0.0+
{263, nullptr, "AcquireVphymDirtyFlagEventHandle"}, // 20.0.0+
{264, nullptr, "GetVphymDirtyFlags"}, // 20.0.0+
{282, nullptr, "ConvertToProductModel"}, // 20.0.0+
{283, nullptr, "ConvertToProductModelName"}, // 20.0.0+
{289, nullptr, "GetDefaultAccountIdentificationFlagSet"}, // 20.0.0+
{300, nullptr, "AcquirePushNotificationDirtyFlagEventHandle"}, // 20.0.0+
{301, nullptr, "GetPushNotificationDirtyFlags"}, // 20.0.0+
{306, nullptr, "GetPinCodeReregistrationGuideAccounts"}, // 20.0.0+
{307, nullptr, "SetPinCodeReregistrationGuideAccounts"}, // 20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -108,6 +108,8 @@ public:
{33, nullptr, "ExportKeyingMaterial"}, {33, nullptr, "ExportKeyingMaterial"},
{34, nullptr, "SetIoTimeout"}, {34, nullptr, "SetIoTimeout"},
{35, nullptr, "GetIoTimeout"}, {35, nullptr, "GetIoTimeout"},
{36, nullptr, "GetSessionTicket"}, // 20.0.0+
{37, nullptr, "SetSessionTicket"}, // 20.0.0+
}; };
// clang-format on // clang-format on

View file

@ -11,7 +11,7 @@ enum class CaCertificateId : s32 {
All = -1, All = -1,
NintendoCAG3 = 1, NintendoCAG3 = 1,
NintendoClass2CAG3 = 2, NintendoClass2CAG3 = 2,
NintendoRootCAG4 = 3, NintendoRootCAG4 = 3, // [16.0.0+]
AmazonRootCA1 = 1000, AmazonRootCA1 = 1000,
StarfieldServicesRootCertificateAuthorityG2 = 1001, StarfieldServicesRootCertificateAuthorityG2 = 1001,
AddTrustExternalCARoot = 1002, AddTrustExternalCARoot = 1002,
@ -29,10 +29,10 @@ enum class CaCertificateId : s32 {
EntrustnetCertificationAuthority2048 = 1014, EntrustnetCertificationAuthority2048 = 1014,
EntrustRootCertificationAuthority = 1015, EntrustRootCertificationAuthority = 1015,
EntrustRootCertificationAuthorityG2 = 1016, EntrustRootCertificationAuthorityG2 = 1016,
GeoTrustGlobalCA2 = 1017, GeoTrustGlobalCA2 = 1017, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustGlobalCA = 1018, GeoTrustGlobalCA = 1018, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustPrimaryCertificationAuthorityG3 = 1019, GeoTrustPrimaryCertificationAuthorityG3 = 1019, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustPrimaryCertificationAuthority = 1020, GeoTrustPrimaryCertificationAuthority = 1020, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GlobalSignRootCA = 1021, GlobalSignRootCA = 1021,
GlobalSignRootCAR2 = 1022, GlobalSignRootCAR2 = 1022,
GlobalSignRootCAR3 = 1023, GlobalSignRootCAR3 = 1023,
@ -73,6 +73,72 @@ enum class CaCertificateId : s32 {
DigiCertTLSECCP384RootG5 = 1058, // [16.0.0+] DigiCertTLSECCP384RootG5 = 1058, // [16.0.0+]
DigiCertTLSRSA4096RootG5 = 1059, // [16.0.0+] DigiCertTLSRSA4096RootG5 = 1059, // [16.0.0+]
NintendoTempRootCAG4 = 65536, // [16.0.0+] ([19.0.0+] Removed) NintendoTempRootCAG4 = 65536, // [16.0.0+] ([19.0.0+] Removed)
// Nintendo round-robin certificates [20.0.0+]
NintendoRR01 = 32801,
NintendoRR02 = 32802,
NintendoRR03 = 32803,
NintendoRR04 = 32804,
NintendoRR05 = 32805,
NintendoRR06 = 32806,
NintendoRR07 = 32807,
NintendoRR08 = 32808,
NintendoRR09 = 32809,
NintendoRR10 = 32810,
NintendoRR11 = 32811,
NintendoRR12 = 32812,
NintendoRR13 = 32813,
NintendoRR14 = 32814,
NintendoRR15 = 32815,
NintendoRR16 = 32816,
NintendoRR17 = 32817,
NintendoRR18 = 32818,
NintendoRR19 = 32819,
NintendoRR20 = 32820,
NintendoRR21 = 32821,
NintendoRR22 = 32822,
NintendoRR23 = 32823,
NintendoRR24 = 32824,
NintendoRR25 = 32825,
NintendoRR26 = 32826,
NintendoRR27 = 32827,
NintendoRR28 = 32828,
NintendoRR29 = 32829,
NintendoRR30 = 32830,
NintendoRR31 = 32831,
NintendoRR32 = 32832,
NintendoRR33 = 32833,
NintendoRR34 = 32834,
NintendoRR35 = 32835,
NintendoRR36 = 32836,
NintendoRR37 = 32837,
NintendoRR38 = 32838,
NintendoRR39 = 32839,
NintendoRR40 = 32840,
NintendoRR41 = 32841,
NintendoRR42 = 32842,
NintendoRR43 = 32843,
NintendoRR44 = 32844,
NintendoRR45 = 32845,
NintendoRR46 = 32846,
NintendoRR47 = 32847,
NintendoRR48 = 32848,
NintendoRR49 = 32849,
NintendoRR50 = 32850,
NintendoRR51 = 32851,
NintendoRR52 = 32852,
NintendoRR53 = 32853,
NintendoRR54 = 32854,
NintendoRR55 = 32855,
NintendoRR56 = 32856,
NintendoRR57 = 32857,
NintendoRR58 = 32858,
NintendoRR59 = 32859,
NintendoRR60 = 32860,
NintendoRR61 = 32861,
NintendoRR62 = 32862,
NintendoRR63 = 32863,
NintendoRR64 = 32864,
}; };
enum class TrustedCertStatus : s32 { enum class TrustedCertStatus : s32 {