Compare commits

...

6 Commits

Author SHA1 Message Date
crueter
b080acf6d9 Fix build erro
Signed-off-by: crueter <crueter@eden-emu.dev>
2025-08-06 19:36:36 +02:00
Maufeat
75bb9d9790 add new library app creator cmd 3 2025-08-06 19:36:36 +02:00
Pavel Barabanov
1da32cf231 revert 460, system_archive 2025-08-06 19:36:36 +02:00
Pavel Barabanov
3859799a8c mig, bcat, svc 2025-08-06 19:36:36 +02:00
Pavel Barabanov
18c848176a rewrote according to the switchbrew 2025-08-06 19:36:36 +02:00
Pavel Barabanov
3c16ac28c2 missing services 2025-08-06 19:36:36 +02:00
77 changed files with 988 additions and 251 deletions

View File

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

View File

@@ -13,7 +13,7 @@
namespace FileSys::SystemArchive {
constexpr u64 SYSTEM_ARCHIVE_BASE_TITLE_ID = 0x0100000000000800;
constexpr std::size_t SYSTEM_ARCHIVE_COUNT = 0x28;
constexpr std::size_t SYSTEM_ARCHIVE_COUNT = 0x30;
using SystemArchiveSupplier = VirtualDir (*)();
@@ -64,6 +64,14 @@ constexpr std::array<SystemArchiveDescriptor, SYSTEM_ARCHIVE_COUNT> SYSTEM_ARCHI
{0x0100000000000825, "ApplicationBlackList", nullptr},
{0x0100000000000826, "RebootlessSystemUpdateVersion", nullptr},
{0x0100000000000827, "ContentActionTable", nullptr},
{0x0100000000000828, "FunctionBlackList", nullptr},
{0x0100000000000829, "PlatformConfigCalcio", nullptr},
{0x0100000000000830, "NgWordT", nullptr},
{0x0100000000000831, "PlatformConfigAula", nullptr},
{0x0100000000000832, "CradleFirmware", nullptr},
{0x0100000000000835, "ErrorMessageUtf8", nullptr},
{0x0100000000000859, "Unknown859", nullptr}, // 20.0.0+
{0x010000000000085C, "Unknown85C", nullptr}, // 20.0.0+
}};
VirtualFile SynthesizeSystemArchive(const u64 title_id) {

View File

@@ -153,7 +153,8 @@ enum class InfoType : u32 {
ThreadTickCount = 25,
IsSvcPermitted = 26,
IoRegionHint = 27,
AliasRegionExtraSize = 28,
AliasRegionExtraSize = 28,
TransferMemoryHint = 34,
MesosphereMeta = 65000,
MesosphereCurrentProcess = 65001,
@@ -643,6 +644,9 @@ enum class CreateProcessFlag : u32 {
// 11.x+ DisableDeviceAddressSpaceMerge.
DisableDeviceAddressSpaceMerge = (1 << 12),
EnableAliasRegionExtraSize = (1 << 13),
PreventCodeReads = (1 << 14),
// Mask of all flags.
All = Is64Bit | AddressSpaceMask | EnableDebug | EnableAslr | IsApplication |
PoolPartitionMask | OptimizeMemoryAllocation | DisableDeviceAddressSpaceMerge,

View File

@@ -107,7 +107,9 @@ public:
{160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"},
{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
{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
@@ -197,6 +199,12 @@ public:
{161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
{170, nullptr, "CreateDeviceHistoryRequest"}, // 17.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"},
{201, nullptr, "RegisterAsync"},
{202, nullptr, "UnregisterAsync"},
@@ -308,6 +316,7 @@ public:
{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+
{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+
{230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+
{240, nullptr, "RegisterUserWithReauthenticationAsync"}, // 20.0.0+
};
// clang-format on
@@ -340,9 +349,9 @@ public:
{1, &IProfileCommon::GetBase, "GetBase"},
{10, &IProfileCommon::GetImageSize, "GetImageSize"},
{11, &IProfileCommon::LoadImage, "LoadImage"},
{20, &IProfileCommon::Unknown20, "Unknown20"},
{21, &IProfileCommon::Unknown21, "Unknown21"},
{30, &IProfileCommon::Unknown30, "Unknown30"}
{20, &IProfileCommon::GetLargeImageSize, "GetLargeImageSize"},
{21, &IProfileCommon::LoadLargeImage, "LoadLargeImage"},
{30, &IProfileCommon::GetImageId, "GetImageId"}
};
// clang-format on
RegisterHandlers(functions);
@@ -352,7 +361,7 @@ public:
static const FunctionInfo editor_functions[] = {
{100, &IProfileCommon::Store, "Store"},
{101, &IProfileCommon::StoreWithImage, "StoreWithImage"},
{110, &IProfileCommon::Unknown110, "Unknown110"}
{110, &IProfileCommon::StoreWithLargeImage, "StoreWithLargeImage"}
};
// clang-format on
@@ -361,7 +370,7 @@ public:
}
protected:
void Unknown20(HLERequestContext& ctx) {
void GetLargeImageSize(HLERequestContext& ctx) {
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
// TODO (jarrodnorwell)
@@ -371,7 +380,7 @@ protected:
rb.Push(ResultSuccess);
}
void Unknown21(HLERequestContext& ctx) {
void LoadLargeImage(HLERequestContext& ctx) {
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
// TODO (jarrodnorwell)
@@ -381,7 +390,7 @@ protected:
rb.Push(ResultSuccess);
}
void Unknown30(HLERequestContext& ctx) {
void GetImageId(HLERequestContext& ctx) {
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
// TODO (jarrodnorwell)
@@ -391,7 +400,7 @@ protected:
rb.Push(ResultSuccess);
}
void Unknown110(HLERequestContext& ctx) {
void StoreWithLargeImage(HLERequestContext& ctx) {
LOG_DEBUG(Service_ACC, "(STUBBED) called.");
// TODO (jarrodnorwell)
@@ -763,7 +772,7 @@ public:
{210, nullptr, "IsProfileAvailable"}, // 17.0.0+
{220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+
{221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+
{230, nullptr, "RegisterUserWithLargeImageProfileAsync"} // 18.0.0+
{230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+
};
// 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"},
{230, nullptr, "AuthenticateServiceAsync"},
{250, nullptr, "GetBaasAccountAdministrator"},
{251, nullptr, "SynchronizeNetworkServiceAccountsSnapshotAsync"}, // 20.0.0+
{290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"},
{291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"},
{292, nullptr, "ProxyProcedureForDeviceMigrationAuthenticatingOperatingUser"}, // 20.0.0+
{293, nullptr, "ProxyProcedureForDeviceMigrationDownload"}, // 20.0.0+
{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+
{401, nullptr, "GetPinCodeLength"}, // 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+
{411, nullptr, "ResetPinCodeErrorCount"}, // 18.0.0+
{412, nullptr, "IncrementPinCodeErrorCount"}, // 18.0.0+
{413, nullptr, "SetPinCodeErrorCount"}, // 20.0.0+
{900, nullptr, "SetUserUnqualifiedForDebug"},
{901, nullptr, "UnsetUserUnqualifiedForDebug"},
{902, nullptr, "ListUsersUnqualifiedForDebug"},

View File

@@ -19,6 +19,7 @@ ACC_U0::ACC_U0(std::shared_ptr<Module> module_, std::shared_ptr<ProfileManager>
{6, nullptr, "GetProfileDigest"}, // 3.0.0+
{50, &ACC_U0::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"},
{51, &ACC_U0::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"},
{52, nullptr, "TrySelectUserWithoutInteraction"}, // 19.0.0+
{60, &ACC_U0::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, // 5.0.0 - 5.1.0
{99, nullptr, "DebugActivateOpenContextRetention"}, // 6.0.0+
{100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"},

View File

@@ -42,6 +42,9 @@ ACC_U1::ACC_U1(std::shared_ptr<Module> module_, std::shared_ptr<ProfileManager>
{191, nullptr, "ActivateOpenContextHolder"},
{401, nullptr, "GetPinCodeLength"}, // 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"},
{998, nullptr, "DebugSetUserStateClose"},
{999, nullptr, "DebugSetUserStateOpen"},

View File

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

View File

@@ -12,7 +12,7 @@ Applet::Applet(Core::System& system, std::unique_ptr<Process> process_, bool is_
process(std::move(process_)), hid_registration(system, *process),
gpu_error_detected_event(context), friend_invitation_storage_channel_event(context),
notification_storage_channel_event(context), health_warning_disappeared_system_event(context),
acquired_sleep_lock_event(context), pop_from_general_channel_event(context),
unkown210_event(context), acquired_sleep_lock_event(context), pop_from_general_channel_event(context),
library_applet_launchable_event(context), accumulated_suspended_tick_changed_event(context),
sleep_lock_event(context), state_changed_event(context) {

View File

@@ -120,6 +120,7 @@ struct Applet {
Event friend_invitation_storage_channel_event;
Event notification_storage_channel_event;
Event health_warning_disappeared_system_event;
Event unkown210_event;
Event acquired_sleep_lock_event;
Event pop_from_general_channel_event;
Event library_applet_launchable_event;

View File

@@ -18,6 +18,7 @@ IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& sys
// clang-format off
static const FunctionInfo functions[] = {
{100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"},
{110, D<&IAllSystemAppletProxiesService::Unknown110>, "Unknown110"}, // 20.0.0+
{200, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxyOld>, "OpenLibraryAppletProxyOld"},
{201, D<&IAllSystemAppletProxiesService::OpenLibraryAppletProxy>, "OpenLibraryAppletProxy"},
{300, nullptr, "OpenOverlayAppletProxy"},
@@ -25,6 +26,7 @@ IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& sys
{400, nullptr, "CreateSelfLibraryAppletCreatorForDevelop"},
{410, nullptr, "GetSystemAppletControllerForDebug"},
{450, D<&IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions>, "GetSystemProcessCommonFunctions"}, // 19.0.0+
{460, D<&IAllSystemAppletProxiesService::Unknown460>, "Unknown460"}, // 20.0.0+
{1000, nullptr, "GetDebugFunctions"},
};
// clang-format on
@@ -49,6 +51,26 @@ Result IAllSystemAppletProxiesService::OpenSystemAppletProxy(
}
}
Result IAllSystemAppletProxiesService::Unknown110(
Out<SharedPointer<ISystemAppletProxy>> out_proxy, ClientProcessId pid) {
LOG_DEBUG(Service_AM, "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(
Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy, ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle,
@@ -99,6 +121,11 @@ Result IAllSystemAppletProxiesService::GetSystemProcessCommonFunctions() {
R_SUCCEED();
}
Result IAllSystemAppletProxiesService::Unknown460() {
LOG_DEBUG(Service_AM, "(STUBBED) called.");
R_SUCCEED();
}
std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId(
ProcessId process_id) {
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/service.h"
#include "core/hle/service/am/service/applet_common_functions.h"
namespace Service {
@@ -27,6 +28,7 @@ private:
Result OpenSystemAppletProxy(Out<SharedPointer<ISystemAppletProxy>> out_system_applet_proxy,
ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle);
Result Unknown110(Out<SharedPointer<ISystemAppletProxy>> out_proxy, ClientProcessId pid);
Result OpenLibraryAppletProxy(Out<SharedPointer<ILibraryAppletProxy>> out_library_applet_proxy,
ClientProcessId pid,
InCopyHandle<Kernel::KProcess> process_handle,
@@ -39,6 +41,7 @@ private:
InCopyHandle<Kernel::KProcess> process_handle,
InLargeData<AppletAttribute, BufferAttr_HipcMapAlias> attribute);
Result GetSystemProcessCommonFunctions();
Result Unknown460();
private:
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);

View File

@@ -31,10 +31,20 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
{90, nullptr, "OpenNamedChannelAsParent"},
{91, nullptr, "OpenNamedChannelAsChild"},
{100, nullptr, "SetApplicationCoreUsageMode"},
{160, nullptr, "GetNotificationReceiverService"}, // 18.0.0+
{161, nullptr, "GetNotificationSenderService"}, // 18.0.0+
{300, D<&IAppletCommonFunctions::GetCurrentApplicationId>, "GetCurrentApplicationId"},
{310, nullptr, "IsSystemAppletHomeMenu"}, //19.0.0+
{320, nullptr, "SetGpuTimeSliceBoost"}, //19.0.0+
{321, nullptr, "SetGpuTimeSliceBoostDueToApplication"}, //19.0.0+
{310, nullptr, "IsSystemAppletHomeMenu"}, // 19.0.0+
{311, nullptr, "Unknown311"}, // 20.0.0+
{320, nullptr, "SetGpuTimeSliceBoost"}, // 19.0.0+
{321, nullptr, "SetGpuTimeSliceBoostDueToApplication"}, // 19.0.0+
{322, nullptr, "Unknown322"}, // 20.0.0+
{330, nullptr, "Unknown330"}, // 19.0.0+
{340, nullptr, "Unknown340"}, // 20.0.0+
{341, nullptr, "Unknown341"}, // 20.0.0+
{342, nullptr, "Unknown342"}, // 20.0.0+
{350, D<&IAppletCommonFunctions::Unknown350>, "Unknown350"}, // 20.0.0+
{360, nullptr, "Unknown360"} // 20.0.0+
};
// clang-format on
@@ -70,4 +80,12 @@ Result IAppletCommonFunctions::GetCurrentApplicationId(Out<u64> out_application_
R_SUCCEED();
}
Result IAppletCommonFunctions::Unknown350(Out<u16> out_unknown) {
LOG_WARNING(Service_AM, "(STUBBED) called");
*out_unknown = 0;
R_SUCCEED();
}
} // namespace Service::AM

View File

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

View File

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

View File

@@ -68,6 +68,8 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
{102, D<&IApplicationFunctions::SetApplicationCopyrightVisibility>, "SetApplicationCopyrightVisibility"},
{110, D<&IApplicationFunctions::QueryApplicationPlayStatistics>, "QueryApplicationPlayStatistics"},
{111, D<&IApplicationFunctions::QueryApplicationPlayStatisticsByUid>, "QueryApplicationPlayStatisticsByUid"},
{112, nullptr, "Unknown112"}, //20.0.0+
{113, nullptr, "Unknown113"}, //20.0.0+
{120, D<&IApplicationFunctions::ExecuteProgram>, "ExecuteProgram"},
{121, D<&IApplicationFunctions::ClearUserChannel>, "ClearUserChannel"},
{122, D<&IApplicationFunctions::UnpopToUserChannel>, "UnpopToUserChannel"},
@@ -85,6 +87,11 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
{181, nullptr, "UpgradeLaunchRequiredVersion"},
{190, nullptr, "SendServerMaintenanceOverlayNotification"},
{200, nullptr, "GetLastApplicationExitReason"},
{210, D<&IApplicationFunctions::Unknown210>, "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"},
{1000, nullptr, "CreateMovieMaker"},
{1001, D<&IApplicationFunctions::PrepareForJit>, "PrepareForJit"},
@@ -487,6 +494,13 @@ Result IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(
R_SUCCEED();
}
Result IApplicationFunctions::Unknown210(
OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_DEBUG(Service_AM, "called");
*out_event = m_applet->unkown210_event.GetHandle();
R_SUCCEED();
}
Result IApplicationFunctions::PrepareForJit() {
LOG_WARNING(Service_AM, "(STUBBED) called");

View File

@@ -76,6 +76,7 @@ private:
Result TryPopFromFriendInvitationStorageChannel(Out<SharedPointer<IStorage>> out_storage);
Result GetNotificationStorageChannelEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result GetHealthWarningDisappearedSystemEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result Unknown210(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result PrepareForJit();
const std::shared_ptr<Applet> m_applet;

View File

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

View File

@@ -34,6 +34,7 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr<Ap
{12, nullptr, "ReleaseSleepLockTransiently"},
{13, D<&ICommonStateGetter::GetAcquiredSleepLockEvent>, "GetAcquiredSleepLockEvent"},
{14, nullptr, "GetWakeupCount"},
{15, nullptr, "Unknown15"}, //19.0.0+
{20, nullptr, "PushToGeneralChannel"},
{30, nullptr, "GetHomeButtonReaderLockAccessor"},
{31, D<&ICommonStateGetter::GetReaderLockAccessorEx>, "GetReaderLockAccessorEx"},
@@ -69,7 +70,11 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr<Ap
{501, nullptr, "SuppressDisablingSleepTemporarily"},
{502, nullptr, "IsSleepEnabled"},
{503, nullptr, "IsDisablingSleepSuppressed"},
{600, nullptr, "OpenNamedChannelAsChild"}, //20.0.0+ (17.0.0-18.1.0)
{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

View File

@@ -31,7 +31,13 @@ IDebugFunctions::IDebugFunctions(Core::System& system_)
{140, nullptr, "RestrictPowerOperationForSecureLaunchModeForDebug"},
{200, nullptr, "CreateFloatingLibraryAppletAccepterForDebug"},
{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"},
{910, nullptr, "Unknown910"}, //20.0.0+
};
// clang-format on

View File

@@ -25,6 +25,9 @@ ILibraryAppletAccessor::ILibraryAppletAccessor(Core::System& system_,
{30, D<&ILibraryAppletAccessor::GetResult>, "GetResult"},
{50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"},
{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"},
{101, D<&ILibraryAppletAccessor::PopOutData>, "PopOutData"},
{102, nullptr, "PushExtraStorage"},

View File

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

View File

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

View File

@@ -21,7 +21,7 @@ private:
Result GetLaunchReason(Out<AppletProcessLaunchReason> out_launch_reason);
Result OpenCallingLibraryApplet(
Out<SharedPointer<ILibraryAppletAccessor>> out_calling_library_applet);
Result PushContext();
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"},
{20, nullptr, "SetDesirableKeyboardLayout"},
{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"},
{41, D<&ISelfController::IsSystemBufferSharingEnabled>, "IsSystemBufferSharingEnabled"},
{42, D<&ISelfController::GetSystemSharedLayerHandle>, "GetSystemSharedLayerHandle"},
@@ -67,6 +70,12 @@ ISelfController::ISelfController(Core::System& system_, std::shared_ptr<Applet>
{110, nullptr, "SetApplicationAlbumUserData"},
{120, D<&ISelfController::SaveCurrentScreenshot>, "SaveCurrentScreenshot"},
{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"},
};
// clang-format on
@@ -394,6 +403,10 @@ Result ISelfController::SaveCurrentScreenshot(Capture::AlbumReportOption album_r
R_SUCCEED();
}
Result ISelfController::Unknown230() {
LOG_WARNING(Service_AM, "(STUBBED) called - function 230 (0xE6)");
R_SUCCEED();
}
Result ISelfController::SetRecordVolumeMuted(bool muted) {
LOG_WARNING(Service_AM, "(STUBBED) called. muted={}", muted);

View File

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

View File

@@ -20,7 +20,7 @@ IAudioController::IAudioController(Core::System& system_)
{3, D<&IAudioController::GetTargetVolumeMax>, "GetTargetVolumeMax"},
{4, nullptr, "IsTargetMute"},
{5, nullptr, "SetTargetMute"},
{6, nullptr, "IsTargetConnected"},
{6, nullptr, "IsTargetConnected"}, // [20.0.0+] ([1.0.0-17.0.1] IsTargetConnected)
{7, nullptr, "SetDefaultTarget"},
{8, nullptr, "GetDefaultTarget"},
{9, D<&IAudioController::GetAudioOutputMode>, "GetAudioOutputMode"},
@@ -37,9 +37,9 @@ IAudioController::IAudioController(Core::System& system_)
{20, nullptr, "AcquireAudioOutputDeviceUpdateEventForPlayReport"},
{21, nullptr, "GetAudioOutputTargetForPlayReport"},
{22, D<&IAudioController::NotifyHeadphoneVolumeWarningDisplayedEvent>, "NotifyHeadphoneVolumeWarningDisplayedEvent"},
{23, nullptr, "SetSystemOutputMasterVolume"},
{23, nullptr, "SetSystemOutputMasterVolume"}, // [20.0.0+] Originally any input was accepted, now input must be in range 0.0-1.0 otherwise it's replaced by nearest accepted value.
{24, nullptr, "GetSystemOutputMasterVolume"},
{25, nullptr, "GetAudioVolumeDataForPlayReport"},
{25, nullptr, "GetAudioVolumeDataForPlayReport"}, // [20.0.0+] Now takes a 0x400-bytes type-0x16 output buffer and no longer returns any output.
{26, nullptr, "UpdateHeadphoneSettings"},
{27, nullptr, "SetVolumeMappingTableForDev"},
{28, nullptr, "GetAudioOutputChannelCountForPlayReport"},
@@ -54,10 +54,10 @@ IAudioController::IAudioController(Core::System& system_)
{37, nullptr, "SetHearingProtectionSafeguardEnabled"},
{38, nullptr, "IsHearingProtectionSafeguardEnabled"},
{39, nullptr, "IsHearingProtectionSafeguardMonitoringOutputForDebug"},
{40, nullptr, "GetSystemInformationForDebug"},
{40, nullptr, "GetSystemInformationForDebug"}, // [20.0.0+] Now takes a total of 0x40-bytes of input and the type-0x16 output buffer is now 0x2000-bytes instead of 0x1000-bytes.
{41, nullptr, "SetVolumeButtonLongPressTime"},
{42, nullptr, "SetNativeVolumeForDebug"},
{5000, D<&IAudioController::Unknown5000>, "Unknown5000"},
{5000, D<&IAudioController::Unknown5000>, "Unknown5000"}, // 19.0.0+
{10000, nullptr, "NotifyAudioOutputTargetForPlayReport"},
{10001, nullptr, "NotifyAudioOutputChannelCountForPlayReport"},
{10002, nullptr, "NotifyUnsupportedUsbOutputDeviceAttachedForPlayReport"},
@@ -68,6 +68,7 @@ IAudioController::IAudioController(Core::System& system_)
{10104, nullptr, "GetAudioOutputChannelCountForPlayReport"},
{10105, nullptr, "BindAudioOutputChannelCountUpdateEventForPlayReport"},
{10106, nullptr, "GetDefaultAudioOutputTargetForPlayReport"},
{10200, nullptr, "Unknown10200"}, // 20.0.0+
{50000, nullptr, "SetAnalogInputBoostGainForPrototyping"},
{50001, nullptr, "OverrideDefaultTargetForDebug"},
{50003, nullptr, "SetForceOverrideExternalDeviceNameForDebug"},

View File

@@ -49,12 +49,12 @@ IBcatService::IBcatService(Core::System& system_, BcatBackend& backend_)
{30210, nullptr, "SetDeliveryTaskTimer"},
{30300, D<&IBcatService::RegisterSystemApplicationDeliveryTasks>, "RegisterSystemApplicationDeliveryTasks"},
{90100, nullptr, "EnumerateBackgroundDeliveryTask"},
{90101, nullptr, "Unknown90101"},
{90101, nullptr, "GetDeliveryTaskListForSystem"},
{90200, nullptr, "GetDeliveryList"},
{90201, D<&IBcatService::ClearDeliveryCacheStorage>, "ClearDeliveryCacheStorage"},
{90202, nullptr, "ClearDeliveryTaskSubscriptionStatus"},
{90300, nullptr, "GetPushNotificationLog"},
{90301, nullptr, "Unknown90301"},
{90301, nullptr, "GetDeliveryCacheStorageUsage"},
};
// clang-format on
RegisterHandlers(functions);

View File

@@ -33,15 +33,32 @@ IAlbumAccessorService::IAlbumAccessorService(Core::System& system_,
{15, nullptr, "GetAlbumUsage3"},
{16, nullptr, "GetAlbumMountResult"},
{17, nullptr, "GetAlbumUsage16"},
{18, C<&IAlbumAccessorService::Unknown18>, "Unknown18"},
{19, nullptr, "Unknown19"},
{18, C<&IAlbumAccessorService::GetAppletProgramIdTable>, "GetAppletProgramIdTable"},
{19, nullptr, "GetAlbumFileName"},
{20, nullptr, "Unknown20"}, // 20.0.0+
{100, nullptr, "GetAlbumFileCountEx0"},
{101, C<&IAlbumAccessorService::GetAlbumFileListEx0>, "GetAlbumFileListEx0"},
{110, nullptr, "GetAlbumFileListEx1"}, // 15.0.0+
{120, nullptr, "GetAlbumFileListEx2"}, // 17.0.0+
{121, nullptr, "Unknown121"}, // 20.0.0+
{122, nullptr, "Unknown122"}, // 20.0.0+
{123, nullptr, "Unknown123"}, // 20.0.0+
{130, nullptr, "LoadAlbumFileRawData"}, // 17.0.0+
{140, nullptr, "GetAlbumFileCreatedEvent"}, // 17.0.0+
{141, nullptr, "Unknown141"}, // 18.0.0+
{150, nullptr, "LoadAlbumSystemReservedInfo"}, // 17.0.0+
{151, nullptr, "Unknown151"}, // 18.0.0+
{160, nullptr, "Unknown160"}, // 18.0.0+
{170, nullptr, "Unknown170"}, // 20.0.0+
{171, nullptr, "Unknown171"}, // 20.0.0+
{172, nullptr, "Unknown172"}, // 20.0.0+
{202, nullptr, "SaveEditedScreenShot"},
{301, nullptr, "GetLastThumbnail"},
{302, nullptr, "GetLastOverlayMovieThumbnail"},
{401, C<&IAlbumAccessorService::GetAutoSavingStorage>, "GetAutoSavingStorage"},
{501, nullptr, "GetRequiredStorageSpaceSizeToCopyAll"},
{502, nullptr, "Unknown502"}, // 20.0.0+
{600, nullptr, "Unknown600"}, // 20.0.0+
{1001, nullptr, "LoadAlbumScreenShotThumbnailImageEx0"},
{1002, C<&IAlbumAccessorService::LoadAlbumScreenShotImageEx1>, "LoadAlbumScreenShotImageEx1"},
{1003, C<&IAlbumAccessorService::LoadAlbumScreenShotThumbnailImageEx1>, "LoadAlbumScreenShotThumbnailImageEx1"},
@@ -51,8 +68,20 @@ IAlbumAccessorService::IAlbumAccessorService(Core::System& system_,
{8012, nullptr, "GetAlbumCache"},
{8013, nullptr, "GetAlbumCacheEx"},
{8021, nullptr, "GetAlbumEntryFromApplicationAlbumEntryAruid"},
{8022, nullptr, "Unknown8022"}, // 19.0.0+
{8031, nullptr, "Unknown8031"}, // 20.0.0+
{8032, nullptr, "Unknown8032"}, // 20.0.0+
{10011, nullptr, "SetInternalErrorConversionEnabled"},
{50000, nullptr, "LoadMakerNoteInfoForDebug"},
{50001, nullptr, "Unknown50001"}, // 19.0.0+
{50011, C<&IAlbumAccessorService::GetAlbumAccessResultForDebug>, "GetAlbumAccessResultForDebug"}, // 19.0.0+
{50012, C<&IAlbumAccessorService::SetAlbumAccessResultForDebug>, "SetAlbumAccessResultForDebug"}, // 19.0.0+
{50021, nullptr, "Unknown50021"}, // 20.0.0+
{50022, nullptr, "Unknown50022"}, // 20.0.0+
{50023, nullptr, "Unknown50023"}, // 20.0.0+
{50024, nullptr, "Unknown50024"}, // 20.0.0+
{50031, nullptr, "Unknown50031"}, // 20.0.0+
{50032, nullptr, "Unknown50032"}, // 20.0.0+
{60002, nullptr, "OpenAccessorSession"},
};
// clang-format on
@@ -87,7 +116,7 @@ Result IAlbumAccessorService::IsAlbumMounted(Out<bool> out_is_mounted, AlbumStor
R_RETURN(TranslateResult(result));
}
Result IAlbumAccessorService::Unknown18(
Result IAlbumAccessorService::GetAppletProgramIdTable(
Out<u32> out_buffer_size,
OutArray<u8, BufferAttr_HipcMapAlias | BufferAttr_HipcMapTransferAllowsNonSecure> out_buffer) {
LOG_WARNING(Service_Capture, "(STUBBED) called");
@@ -137,6 +166,15 @@ Result IAlbumAccessorService::LoadAlbumScreenShotThumbnailImageEx1(
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) {
if (in_result.IsSuccess()) {
return in_result;

View File

@@ -28,7 +28,7 @@ private:
Result IsAlbumMounted(Out<bool> out_is_mounted, AlbumStorage storage);
Result Unknown18(
Result GetAppletProgramIdTable(
Out<u32> out_buffer_size,
OutArray<u8, BufferAttr_HipcMapAlias | BufferAttr_HipcMapTransferAllowsNonSecure>
out_buffer);
@@ -50,6 +50,10 @@ private:
OutArray<u8, BufferAttr_HipcMapAlias | BufferAttr_HipcMapTransferAllowsNonSecure> out_image,
OutArray<u8, BufferAttr_HipcMapAlias> out_buffer);
Result GetAlbumAccessResultForDebug();
Result SetAlbumAccessResultForDebug();
Result TranslateResult(Result in_result);
std::shared_ptr<AlbumManager> manager = nullptr;

View File

@@ -28,12 +28,18 @@ IAlbumControlService::IAlbumControlService(Core::System& system_,
{2012, nullptr, "UnregisterAppletResourceUserId"},
{2013, nullptr, "GetApplicationIdFromAruid"},
{2014, nullptr, "CheckApplicationIdRegistered"},
{2015, nullptr, "Unknown2015"}, // 20.0.0+
{2016, nullptr, "Unknown2016"}, // 20.0.0+
{2101, nullptr, "GenerateCurrentAlbumFileId"},
{2102, nullptr, "GenerateApplicationAlbumEntry"},
{2103, nullptr, "Unknown2103"}, // 19.0.0+
{2104, nullptr, "Unknown2104"}, // 19.0.0+
{2201, nullptr, "SaveAlbumScreenShotFile"},
{2202, nullptr, "SaveAlbumScreenShotFileEx"},
{2301, nullptr, "SetOverlayScreenShotThumbnailData"},
{2302, nullptr, "SetOverlayMovieThumbnailData"},
{2401, nullptr, "Unknown2401"}, // 19.0.0+
{2501, nullptr, "GetAlbumAccessResultForDebug"}, // 19.0.0+
{60001, nullptr, "OpenControlSession"},
};
// clang-format on

View File

@@ -9,26 +9,35 @@ IScreenShotControlService::IScreenShotControlService(Core::System& system_)
: ServiceFramework{system_, "caps:sc"} {
// clang-format off
static const FunctionInfo functions[] = {
{1, nullptr, "CaptureRawImage"},
{2, nullptr, "CaptureRawImageWithTimeout"},
{3, nullptr, "AttachSharedBuffer"},
{5, nullptr, "CaptureRawImageToAttachedSharedBuffer"},
{210, nullptr, "Unknown210"},
{1001, nullptr, "RequestTakingScreenShot"},
{1002, nullptr, "RequestTakingScreenShotWithTimeout"},
{1003, nullptr, "RequestTakingScreenShotEx"},
{1004, nullptr, "RequestTakingScreenShotEx1"},
{1009, nullptr, "CancelTakingScreenShot"},
{1010, nullptr, "SetTakingScreenShotCancelState"},
{1, nullptr, "CaptureRawImageRgba32IntoArray"},
{2, nullptr, "CaptureRawImageRgba32IntoArrayWithTimeout"},
{3, nullptr, "AttachSharedBufferToCaptureModule"}, // 5.0.0+
{5, nullptr, "CaptureRawImageToAttachedSharedBuffer"}, // 5.0.0+
{210, nullptr, "SaveScreenShotEx2ViaAm"}, // 6.0.0+
{1001, nullptr, "RequestTakingScreenShot"}, // 2.0.0-4.1.0
{1002, nullptr, "RequestTakingScreenShotWithTimeout"}, // 2.0.0-4.1.0
{1003, nullptr, "RequestTakingScreenShotEx"}, // 3.0.0-4.1.0
{1004, nullptr, "RequestTakingScreenShotEx1"}, // 5.0.0+
{1009, nullptr, "CancelTakingScreenShot"}, // 5.0.0+
{1010, nullptr, "SetTakingScreenShotCancelState"}, // 5.0.0+
{1011, nullptr, "NotifyTakingScreenShotRefused"},
{1012, nullptr, "NotifyTakingScreenShotFailed"},
{1101, nullptr, "SetupOverlayMovieThumbnail"},
{1106, nullptr, "Unknown1106"},
{1107, nullptr, "Unknown1107"},
{1201, nullptr, "OpenRawScreenShotReadStream"},
{1202, nullptr, "CloseRawScreenShotReadStream"},
{1203, nullptr, "ReadRawScreenShotReadStream"},
{1204, nullptr, "Unknown1204"},
{1100, nullptr, "Unknown1100"}, // 18.0.0+
{1101, nullptr, "SetupOverlayMovieThumbnail"}, // 4.0.0+
{1106, nullptr, "CreateProtoMovieMetaDataNv12Ex2"}, // 4.0.0+
{1107, nullptr, "CreateProtoMovieMetaDataRgbaEx2"}, // 4.0.0+
{1108, nullptr, "Unknown1108"}, // 18.0.0+
{1109, nullptr, "Unknown1109"}, // 19.0.0+
{1110, nullptr, "Unknown1110"}, // 19.0.0+
{1111, nullptr, "Unknown1111"}, // 19.0.0+
{1112, nullptr, "Unknown1112"}, // 19.0.0+
{1113, nullptr, "Unknown1113"}, // 19.0.0+
{1114, nullptr, "Unknown1114"}, // 19.0.0+
{1201, nullptr, "OpenRawScreenShotReadStream"}, // 3.0.0+
{1202, nullptr, "CloseRawScreenShotReadStream"}, // 3.0.0+
{1203, nullptr, "ReadRawScreenShotReadStream"}, // 3.0.0+
{1204, nullptr, "CaptureCrashScreenShot"}, // 9.0.0+
{9000, nullptr, "Unknown9000"} // 20.0.0+
};
// clang-format on

View File

@@ -19,8 +19,8 @@ IScreenShotService::IScreenShotService(Core::System& system_,
{203, C<&IScreenShotService::SaveScreenShotEx0>, "SaveScreenShotEx0"},
{204, nullptr, "SaveEditedScreenShotEx0"},
{206, C<&IScreenShotService::SaveEditedScreenShotEx1>, "SaveEditedScreenShotEx1"},
{208, nullptr, "SaveScreenShotOfMovieEx1"},
{1000, nullptr, "Unknown1000"},
{1000, nullptr, "RequestTakingScreenShotForApplet"}, // 13.0.0+ [19.0.0+] Now takes an additional 8-bytes of input.
{2000, nullptr, "Unknown2000"} // 20.0.0+
};
// clang-format on

View File

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

View File

@@ -57,50 +57,81 @@ public:
{38, nullptr, "OwnTicket3"},
{39, nullptr, "DeleteAllInactivePersonalizedTicket"},
{40, nullptr, "DeletePrepurchaseRecordByNintendoAccountId"},
{501, nullptr, "Unknown501"},
{502, nullptr, "Unknown502"},
{503, nullptr, "GetTitleKey"},
{504, nullptr, "Unknown504"},
{508, nullptr, "Unknown508"},
{509, nullptr, "Unknown509"},
{510, nullptr, "Unknown510"},
{511, nullptr, "Unknown511"},
{1001, nullptr, "Unknown1001"},
{1002, nullptr, "Unknown1001"},
{1003, nullptr, "Unknown1003"},
{1004, nullptr, "Unknown1004"},
{1005, nullptr, "Unknown1005"},
{1006, nullptr, "Unknown1006"},
{1007, nullptr, "Unknown1007"},
{1009, nullptr, "Unknown1009"},
{1010, nullptr, "Unknown1010"},
{1011, nullptr, "Unknown1011"},
{1012, nullptr, "Unknown1012"},
{1013, nullptr, "Unknown1013"},
{1014, nullptr, "Unknown1014"},
{1015, nullptr, "Unknown1015"},
{1016, nullptr, "Unknown1016"},
{1017, nullptr, "Unknown1017"},
{1018, nullptr, "Unknown1018"},
{1019, nullptr, "Unknown1019"},
{1020, nullptr, "Unknown1020"},
{1021, nullptr, "Unknown1021"},
{1501, nullptr, "Unknown1501"},
{1502, nullptr, "Unknown1502"},
{1503, nullptr, "Unknown1503"},
{1504, nullptr, "Unknown1504"},
{1505, nullptr, "Unknown1505"},
{1506, nullptr, "Unknown1506"},
{2000, nullptr, "Unknown2000"},
{2001, nullptr, "Unknown2001"},
{2002, nullptr, "Unknown2002"},
{2003, nullptr, "Unknown2003"},
{2100, nullptr, "Unknown2100"},
{2501, nullptr, "Unknown2501"},
{2502, nullptr, "Unknown2502"},
{2601, nullptr, "Unknown2601"},
{3001, nullptr, "Unknown3001"},
{3002, nullptr, "Unknown3002"},
{101, nullptr, "Unknown101"}, // 18.0.0+
{102, nullptr, "Unknown102"}, // 18.0.0+
{103, nullptr, "Unknown103"}, // 18.0.0+
{104, nullptr, "Unknown104"}, // 18.0.0+
{105, nullptr, "Unknown105"}, // 20.0.0+
{201, nullptr, "Unknown201"}, // 18.0.0+
{202, nullptr, "Unknown202"}, // 18.0.0+
{203, nullptr, "Unknown203"}, // 18.0.0+
{204, nullptr, "Unknown204"}, // 18.0.0+
{501, nullptr, "Unknown501"}, // 6.0.0+
{502, nullptr, "Unknown502"}, // 6.0.0+
{503, nullptr, "GetTitleKey"}, // 6.0.0+
{504, nullptr, "Unknown504"}, // 6.0.0+
{508, nullptr, "Unknown508"}, // 6.0.0+
{509, nullptr, "Unknown509"}, // 6.0.0+
{510, nullptr, "Unknown510"}, // 6.0.0+
{511, nullptr, "Unknown511"}, // 9.0.0+
{1001, nullptr, "Unknown1001"}, // 6.0.0+
{1002, nullptr, "Unknown1002"}, // 6.0.0+
{1003, nullptr, "GetIAsyncValue"}, // 6.0.0+
{1004, nullptr, "Unknown1004"}, // 6.0.0+
{1005, nullptr, "Unknown1005"}, // 6.0.0+
{1006, nullptr, "Unknown1006"}, // 6.0.0+
{1007, nullptr, "Unknown1007"}, // 6.0.0+
{1009, nullptr, "Unknown1009"}, // 6.0.0+
{1010, nullptr, "Unknown1010"}, // 6.0.0+
{1011, nullptr, "Unknown1011"}, // 6.0.0+
{1012, nullptr, "Unknown1012"}, // 6.0.0+
{1013, nullptr, "Unknown1013"}, // 6.0.0+
{1014, nullptr, "Unknown1014"}, // 6.0.0+
{1015, nullptr, "Unknown1015"}, // 6.0.0+
{1016, nullptr, "Unknown1016"}, // 6.0.0+
{1017, nullptr, "Unknown1017"}, // 9.0.0+
{1018, nullptr, "Unknown1018"}, // 9.0.0+
{1019, nullptr, "Unknown1019"}, // 9.0.0+
{1020, nullptr, "Unknown1020"}, // 9.0.0+
{1021, nullptr, "Unknown1021"}, // 9.0.0+
{1022, nullptr, "Unknown1022"}, // 15.0.0+
{1023, nullptr, "Unknown1023"}, // 17.0.0+
{1024, nullptr, "Unknown1024"}, // 17.0.0+
{1025, nullptr, "Unknown1025"}, // 17.0.0+
{1026, nullptr, "Unknown1026"}, // 17.0.0+
{1027, nullptr, "Unknown1027"}, // 17.0.0+
{1028, nullptr, "Unknown1028"}, // 18.0.0+
{1029, nullptr, "Unknown1029"}, // 19.0.0+
{1030, nullptr, "Unknown1030"}, // 20.0.0+
{1031, nullptr, "Unknown1031"}, // 20.0.0+
{1032, nullptr, "Unknown1032"}, // 20.0.0+
{1033, nullptr, "Unknown1033"}, // 20.0.0+
{1034, nullptr, "Unknown1034"}, // 20.0.0+
{1035, nullptr, "Unknown1035"}, // 20.0.0+
{1036, nullptr, "Unknown1036"}, // 20.0.0+
{1037, nullptr, "Unknown1037"}, // 20.0.0+
{1501, nullptr, "Unknown1501"}, // 6.0.0+
{1502, nullptr, "Unknown1502"}, // 6.0.0+
{1503, nullptr, "Unknown1503"}, // 6.0.0+
{1504, nullptr, "Unknown1504"}, // 6.0.0+
{1505, nullptr, "Unknown1505"}, // 6.0.0+
{1506, nullptr, "Unknown1506"}, // 13.0.0+
{1601, nullptr, "Unknown1601"}, // 20.0.0+
{1602, nullptr, "Unknown1602"}, // 20.0.0+
{1603, nullptr, "Unknown1603"}, // 20.0.0+
{1604, nullptr, "Unknown1604"}, // 20.0.0+
{1605, nullptr, "Unknown1605"}, // 20.0.0+
{1606, nullptr, "Unknown1606"}, // 20.0.0+
{2000, nullptr, "GetIActiveRightsContext"}, // 6.0.0+
{2001, nullptr, "GetIActiveRightsContext2"}, // 9.0.0+
{2002, nullptr, "Unknown2002"}, // 13.0.0-16.1.0
{2003, nullptr, "Unknown2003"}, // 13.0.0-16.1.0
{2100, nullptr, "Unknown2100"}, // 7.0.0+
{2501, nullptr, "Unknown2501"}, // 6.0.0+
{2502, nullptr, "Unknown2502"}, // 6.0.0+
{2601, nullptr, "Unknown2601"}, // 13.0.0+
{3001, nullptr, "Unknown3001"}, // 7.0.0-15.0.1
{3002, nullptr, "Unknown3002"} // 7.0.0-15.0.1
};
// clang-format on
RegisterHandlers(functions);

View File

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

View File

@@ -50,16 +50,19 @@ public:
{20102, nullptr, "GetFriendDetailedInfo"},
{20103, nullptr, "SyncFriendList"},
{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"},
{20107, nullptr, "GetFriendDetailedInfoV2"}, // 20.0.0+
{20110, nullptr, "LoadFriendSetting"},
{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"},
{20301, nullptr, "GetNintendoNetworkIdInfo"},
{20302, nullptr, "GetSnsAccountLinkage"},
{20303, nullptr, "GetSnsAccountProfile"},
{20304, nullptr, "GetSnsAccountFriendList"},
{20400, nullptr, "GetBlockedUserList"},
{20400, nullptr, "GetBlockedUserListV1"}, // 20.0.0+ (1.0.0-19.0.1 GetBlockedUserList)
{20401, nullptr, "SyncBlockedUserList"},
{20402, nullptr, "GetBlockedUserListV2"}, // 20.0.0+
{20500, nullptr, "GetProfileExtraList"},
{20501, nullptr, "GetRelationship"},
{20600, &IFriendService::GetUserPresenceView, "GetUserPresenceView"},
@@ -78,7 +81,7 @@ public:
{30120, nullptr, "ChangeFriendFavoriteFlag"},
{30121, nullptr, "ChangeFriendOnlineNotificationFlag"},
{30200, nullptr, "SendFriendRequest"},
{30201, nullptr, "SendFriendRequestWithApplicationInfo"},
{30201, nullptr, "SendFriendRequestWithApplicationInfoV1"}, // 20.0.0+ (1.0.0-19.0.1 SendFriendRequestWithApplicationInfo)
{30202, nullptr, "CancelFriendRequest"},
{30203, nullptr, "AcceptFriendRequest"},
{30204, nullptr, "RejectFriendRequest"},
@@ -91,11 +94,13 @@ public:
{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"},
{30216, nullptr, "ResendFacedFriendRequest"},
{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"},
{30218, nullptr, "SendFriendRequestWithApplicationInfoV2"}, // 20.0.0+
{30300, nullptr, "GetSnsAccountLinkPageUrl"},
{30301, nullptr, "UnlinkSnsAccount"},
{30400, nullptr, "BlockUser"},
{30401, nullptr, "BlockUserWithApplicationInfo"},
{30401, nullptr, "BlockUserWithApplicationInfoV1"}, // 20.0.0+ (1.0.0-19.0.1 BlockUserWithApplicationInfo)
{30402, nullptr, "UnblockUser"},
{30403, nullptr, "BlockUserWithApplicationInfoV2"}, // 20.0.0+
{30500, nullptr, "GetProfileExtraFromFriendCode"},
{30700, nullptr, "DeletePlayHistory"},
{30810, nullptr, "ChangePresencePermission"},
@@ -473,4 +478,4 @@ void LoopProcess(Core::System& system) {
ServerManager::RunServer(std::move(server_manager));
}
} // namespace Service::Friend
} // namespace Service::Friend

View File

@@ -227,6 +227,8 @@ INotificationServices::INotificationServices(Core::System& system_)
{2001, nullptr, "GetAlarmSettingWithApplicationParameter"},
{2010, nullptr, "MuteAlarmSetting"},
{2020, nullptr, "IsAlarmSettingReady"},
{3000, nullptr, "Unknown3000"}, // 20.0.0+
{3010, nullptr, "Unknown3010"}, // 20.0.0+
{8000, nullptr, "RegisterAppletResourceUserId"},
{8010, nullptr, "UnregisterAppletResourceUserId"},
{8999, nullptr, "GetCurrentTime"},

View File

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

View File

@@ -119,6 +119,7 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{134, C<&IHidServer::SetNpadAnalogStickUseCenterClamp>, "SetNpadAnalogStickUseCenterClamp"},
{135, C<&IHidServer::SetNpadCaptureButtonAssignment>, "SetNpadCaptureButtonAssignment"},
{136, C<&IHidServer::ClearNpadCaptureButtonAssignment>, "ClearNpadCaptureButtonAssignment"},
{137, nullptr, "SetNpadGcAnalogStick8bitRawValue"}, // 20.0.0+
{200, C<&IHidServer::GetVibrationDeviceInfo>, "GetVibrationDeviceInfo"},
{201, C<&IHidServer::SendVibrationValue>, "SendVibrationValue"},
{202, C<&IHidServer::GetActualVibrationValue>, "GetActualVibrationValue"},
@@ -186,7 +187,8 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{1001, C<&IHidServer::GetNpadCommunicationMode>, "GetNpadCommunicationMode"},
{1002, C<&IHidServer::SetTouchScreenConfiguration>, "SetTouchScreenConfiguration"},
{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"},
};
// clang-format on

View File

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

View File

@@ -18,7 +18,8 @@ public:
explicit IMonitorServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:m"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"}
{0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"},
{1, nullptr, "CreateClientProcessMonitor"} // 18.0.0+
};
// clang-format on

View File

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

View File

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

View File

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

View File

@@ -14,17 +14,42 @@ public:
explicit MIG_USR(Core::System& system_) : ServiceFramework{system_, "mig:usr"} {
// clang-format off
static const FunctionInfo functions[] = {
{10, nullptr, "TryGetLastMigrationInfo"},
{100, nullptr, "CreateServer"},
{101, nullptr, "ResumeServer"},
{200, nullptr, "CreateClient"},
{201, nullptr, "ResumeClient"},
{1001, nullptr, "Unknown1001"},
{1010, nullptr, "Unknown1010"},
{1100, nullptr, "Unknown1100"},
{1101, nullptr, "Unknown1101"},
{1200, nullptr, "Unknown1200"},
{1201, nullptr, "Unknown1201"}
{0, nullptr, "Unknown0"}, // 19.0.0+
{1, nullptr, "Unknown1"}, // 20.0.0+
{2, nullptr, "Unknown2"}, // 20.0.0+
{10, nullptr, "TryGetLastUserMigrationInfo"}, // 7.0.0-19.0.1 (was TryGetLastMigrationInfo in 4.0.0-6.2.0)
{11, nullptr, "Unknown11"}, // 20.0.0+
{100, nullptr, "CreateUserMigrationServer"}, // 7.0.0+ (was CreateServer in 4.0.0-6.2.0)
{101, nullptr, "ResumeUserMigrationServer"}, // 7.0.0+ (was ResumeServer in 4.0.0-6.2.0)
{200, nullptr, "CreateUserMigrationClient"}, // 7.0.0+ (was CreateClient in 4.0.0-6.2.0)
{201, nullptr, "ResumeUserMigrationClient"}, // 7.0.0+ (was ResumeClient in 4.0.0-6.2.0)
{1001, nullptr, "GetSaveDataMigrationPolicyInfoAsync"}, // 8.0.0+
{1010, nullptr, "TryGetLastSaveDataMigrationInfo"}, // 7.0.0+
{1100, nullptr, "CreateSaveDataMigrationServer"}, // 7.0.0-19.0.1
{1101, nullptr, "ResumeSaveDataMigrationServer"}, // 7.0.0+
{1110, nullptr, "Unknown1110"}, // 17.0.0+
{1200, nullptr, "CreateSaveDataMigrationClient"}, // 7.0.0+
{1201, nullptr, "ResumeSaveDataMigrationClient"}, // 7.0.0+
{2001, nullptr, "Unknown2001"}, // 20.0.0+
{2010, nullptr, "Unknown2010"}, // 20.0.0+
{2100, nullptr, "Unknown2100"}, // 20.0.0+
{2110, nullptr, "Unknown2110"}, // 20.0.0+
{2200, nullptr, "Unknown2200"}, // 20.0.0+
{2210, nullptr, "Unknown2210"}, // 20.0.0+
{2220, nullptr, "Unknown2220"}, // 20.0.0+
{2230, nullptr, "Unknown2230"}, // 20.0.0+
{2231, nullptr, "Unknown2231"}, // 20.0.0+
{2232, nullptr, "Unknown2232"}, // 20.0.0+
{2233, nullptr, "Unknown2233"}, // 20.0.0+
{2234, nullptr, "Unknown2234"}, // 20.0.0+
{2250, nullptr, "Unknown2250"}, // 20.0.0+
{2260, nullptr, "Unknown2260"}, // 20.0.0+
{2270, nullptr, "Unknown2270"}, // 20.0.0+
{2280, nullptr, "Unknown2280"}, // 20.0.0+
{2300, nullptr, "Unknown2300"}, // 20.0.0+
{2310, nullptr, "Unknown2310"}, // 20.0.0+
{2400, nullptr, "Unknown2400"}, // 20.0.0+
{2420, nullptr, "Unknown2420"} // 20.0.0+
};
// clang-format on

View File

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

View File

@@ -1094,10 +1094,16 @@ IGeneralService::IGeneralService(Core::System& system_)
{44, nullptr, "IsWiredConnectionAvailable"}, // 18.0.0+
{45, nullptr, "IsNetworkEmulationFeatureEnabled"}, // 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+
{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

View File

@@ -111,7 +111,7 @@ public:
{28, nullptr, "RequestApplicationControl"},
{29, nullptr, "RequestLatestApplicationControl"},
{30, nullptr, "RequestVersionList"},
{31, nullptr, "CreateApplyDeltaTask"},
{31, nullptr, "CreateApplyDeltaTask"}, // [20.0.0+] The type-0x5 input buffer is now 0x18-bytes instead of 0x10-bytes.
{32, nullptr, "DestroyApplyDeltaTask"},
{33, nullptr, "ListApplicationApplyDeltaTask"},
{34, nullptr, "RequestApplyDeltaTaskRun"},
@@ -167,54 +167,139 @@ public:
{84, nullptr, "Unknown84"},
{85, nullptr, "ListNetworkInstallTaskContentMetaFromInstallMeta"},
{86, nullptr, "ListNetworkInstallTaskOccupiedSize"},
{87, nullptr, "Unknown87"},
{88, nullptr, "Unknown88"},
{89, nullptr, "Unknown89"},
{90, nullptr, "Unknown90"},
{91, nullptr, "Unknown91"},
{92, nullptr, "Unknown92"},
{93, nullptr, "Unknown93"},
{94, nullptr, "Unknown94"},
{95, nullptr, "Unknown95"},
{96, nullptr, "Unknown96"},
{97, nullptr, "Unknown97"},
{98, nullptr, "Unknown98"},
{99, nullptr, "Unknown99"},
{100, nullptr, "Unknown100"},
{101, nullptr, "Unknown101"},
{102, nullptr, "Unknown102"},
{103, nullptr, "Unknown103"},
{104, nullptr, "Unknown104"},
{105, nullptr, "Unknown105"},
{106, nullptr, "Unknown106"},
{107, nullptr, "Unknown107"},
{108, nullptr, "Unknown108"},
{109, nullptr, "Unknown109"},
{110, nullptr, "Unknown110"},
{111, nullptr, "Unknown111"},
{112, nullptr, "Unknown112"},
{113, nullptr, "Unknown113"},
{114, nullptr, "Unknown114"},
{115, nullptr, "Unknown115"},
{116, nullptr, "Unknown116"},
{117, nullptr, "Unknown117"},
{118, nullptr, "Unknown118"},
{119, nullptr, "Unknown119"},
{120, nullptr, "Unknown120"},
{121, nullptr, "Unknown121"},
{122, nullptr, "Unknown122"},
{123, nullptr, "Unknown123"},
{124, nullptr, "Unknown124"},
{125, nullptr, "Unknown125"},
{126, nullptr, "Unknown126"},
{127, nullptr, "Unknown127"},
{128, nullptr, "Unknown128"},
{129, nullptr, "Unknown129"},
{130, nullptr, "Unknown130"},
{131, nullptr, "Unknown131"},
{132, nullptr, "Unknown132"},
{133, nullptr, "Unknown133"},
{134, nullptr, "Unknown134"},
{87, nullptr, "RequestQueryAvailableELicenses"}, // 6.0.0+
{88, nullptr, "RequestAssignELicenses"}, // 6.0.0+
{89, nullptr, "RequestExtendELicenses"}, // 6.0.0+
{90, nullptr, "RequestSyncELicenses"}, // 6.0.0+
{91, nullptr, "Unknown91"}, // 6.0.0-14.1.2
{92, nullptr, "RequestQueryRevokeReason"}, // 6.0.0-19.0.1
{93, nullptr, "RequestReportActiveELicenses"}, // 6.0.0+
{94, nullptr, "RequestReportActiveELicensesPassively"}, // 6.0.0+
{95, nullptr, "RequestRegisterDynamicRightsNotificationToken"}, // 6.0.0+
{96, nullptr, "RequestAssignAllDeviceLinkedELicenses"}, // 6.0.0+
{97, nullptr, "RequestRevokeAllELicenses"}, // 6.0.0+
{98, nullptr, "RequestPrefetchForDynamicRights"}, // 6.0.0+
{99, nullptr, "CreateNetworkInstallTask"}, // 7.0.0+
{100, nullptr, "ListNetworkInstallTaskRightsIds"}, // 9.0.0+
{101, nullptr, "RequestDownloadETickets"}, // 9.0.0+
{102, nullptr, "RequestQueryDownloadableContents"}, // 9.0.0+
{103, nullptr, "DeleteNetworkInstallTaskContentMeta"}, // 9.0.0+
{104, nullptr, "RequestIssueEdgeTokenForDebug"}, // 9.0.0+
{105, nullptr, "RequestQueryAvailableELicenses2"}, // 9.0.0+
{106, nullptr, "RequestAssignELicenses2"}, // 9.0.0+
{107, nullptr, "GetNetworkInstallTaskStateCounter"}, // 10.0.0+
{108, nullptr, "InvalidateDynamicRightsNaIdTokenCacheForDebug"}, // 10.0.0+
{109, nullptr, "ListNetworkInstallTaskPartialInstallContentMeta"}, // 10.0.0+
{110, nullptr, "ListNetworkInstallTaskRightsIdsFromIndex"}, // 10.0.0+
{111, nullptr, "AddNetworkInstallTaskContentMetaForUser"}, // 10.0.0+
{112, nullptr, "RequestAssignELicensesAndDownloadETickets"}, // 10.0.0+
{113, nullptr, "RequestQueryAvailableCommonELicenses"}, // 10.0.0+
{114, nullptr, "SetNetworkInstallTaskExtendedAttribute"}, // 10.0.0+
{115, nullptr, "GetNetworkInstallTaskExtendedAttribute"}, // 10.0.0+
{116, nullptr, "GetAllocatorInfo"}, // 10.0.0+
{117, nullptr, "RequestQueryDownloadableContentsByApplicationId"}, // 11.0.0+
{118, nullptr, "MarkNoDownloadRightsErrorResolved"}, // 10.0.0+
{119, nullptr, "GetApplyDeltaTaskAllAppliedContentMeta"}, // 11.0.0+ [20.0.0+] Now takes a 0x18-bytes type-0x6 output buffer and returns 4-bytes of output instead of 0x18-bytes.
{120, nullptr, "PrioritizeNetworkInstallTask"}, // 11.0.0+
{121, nullptr, "RequestQueryAvailableCommonELicenses2"}, // 10.1.0+
{122, nullptr, "RequestAssignCommonELicenses"}, // 10.1.0+
{123, nullptr, "RequestAssignCommonELicenses2"}, // 10.1.0+
{124, nullptr, "IsNetworkInstallTaskFrontOfQueue"}, // 11.0.0+
{125, nullptr, "PrioritizeApplyDeltaTask"}, // 11.0.0+
{126, nullptr, "RerouteDownloadingPatch"}, // 12.0.0+
{127, nullptr, "UnmarkNoDownloadRightsErrorResolved"}, // 12.0.0+
{128, nullptr, "RequestContentsSize"}, // 12.0.0+
{129, nullptr, "RequestContentsAuthorizationToken"}, // 12.0.0+
{130, nullptr, "RequestCdnVendorDiscovery"}, // 13.0.0+
{131, nullptr, "RefreshDebugAvailability"}, // 13.0.0+
{132, nullptr, "ClearResponseSimulationEntry"}, // 13.0.0+
{133, nullptr, "RegisterResponseSimulationEntry"}, // 13.0.0+
{134, nullptr, "GetProcessedCdnVendors"}, // 13.0.0+
{135, nullptr, "RefreshRuntimeBehaviorsForDebug"}, // 14.0.0+
{136, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"}, // 14.0.0+
{137, nullptr, "GetNetworkInstallTaskContentMetaCount"}, // 14.0.0+
{138, nullptr, "RequestRevokeELicenses"}, // 15.0.0+
{139, nullptr, "EnableNetworkConnectionToUseApplicationCore"}, // 15.0.0+
{140, nullptr, "DisableNetworkConnectionToUseApplicationCore"}, // 15.0.0+
{141, nullptr, "IsNetworkConnectionEnabledToUseApplicationCore"}, // 15.0.0+
{142, nullptr, "RequestCheckSafeSystemVersion"}, // 17.0.0+
{143, nullptr, "RequestApplicationIcon"}, // 17.0.0+ [20.0.0+] Now takes 0x20-bytes of input instead of 0x18-bytes.
{144, nullptr, "RequestDownloadIdbeIconFile"}, // 17.0.0+
{147, nullptr, "Unknown147"}, // 18.0.0+
{148, nullptr, "Unknown148"}, // 18.0.0+
{150, nullptr, "Unknown150"}, // 19.0.0+
{151, nullptr, "Unknown151"}, // 20.0.0+
{152, nullptr, "Unknown152"}, // 20.0.0+
{153, nullptr, "Unknown153"}, // 20.0.0+
{154, nullptr, "Unknown154"}, // 20.0.0+
{155, nullptr, "Unknown155"}, // 20.0.0+
{156, nullptr, "Unknown156"}, // 20.0.0+
{157, nullptr, "Unknown157"}, // 20.0.0+
{158, nullptr, "Unknown158"}, // 20.0.0+
{159, nullptr, "Unknown159"}, // 20.0.0+
{160, nullptr, "Unknown160"}, // 20.0.0+
{161, nullptr, "Unknown161"}, // 20.0.0+
{162, nullptr, "Unknown162"}, // 20.0.0+
{163, nullptr, "Unknown163"}, // 20.0.0+
{164, nullptr, "Unknown164"}, // 20.0.0+
{165, nullptr, "Unknown165"}, // 20.0.0+
{166, nullptr, "Unknown166"}, // 20.0.0+
{167, nullptr, "Unknown167"}, // 20.0.0+
{168, nullptr, "Unknown168"}, // 20.0.0+
{169, nullptr, "Unknown169"}, // 20.0.0+
{170, nullptr, "Unknown170"}, // 20.0.0+
{171, nullptr, "Unknown171"}, // 20.0.0+
{172, nullptr, "Unknown172"}, // 20.0.0+
{173, nullptr, "Unknown173"}, // 20.1.0+
{2000, nullptr, "Unknown2000"}, // 20.0.0+
{2001, nullptr, "Unknown2001"}, // 20.0.0+
{2002, nullptr, "Unknown2002"}, // 20.0.0+
{2003, nullptr, "Unknown2003"}, // 20.0.0+
{2004, nullptr, "Unknown2004"}, // 20.0.0+
{2007, nullptr, "Unknown2007"}, // 20.0.0+
{2011, nullptr, "Unknown2011"}, // 20.0.0+
{2012, nullptr, "Unknown2012"}, // 20.0.0+
{2013, nullptr, "Unknown2013"}, // 20.0.0+
{2014, nullptr, "Unknown2014"}, // 20.0.0+
{2015, nullptr, "Unknown2015"}, // 20.0.0+
{2016, nullptr, "Unknown2016"}, // 20.0.0+
{2017, nullptr, "Unknown2017"}, // 20.0.0+
{2018, nullptr, "Unknown2018"}, // 20.0.0+
{2019, nullptr, "Unknown2019"}, // 20.0.0+
{2020, nullptr, "Unknown2020"}, // 20.0.0+
{2021, nullptr, "Unknown2021"}, // 20.0.0+
{2022, nullptr, "Unknown2022"}, // 20.0.0+
{2023, nullptr, "Unknown2023"}, // 20.0.0+
{2024, nullptr, "Unknown2024"}, // 20.0.0+
{2025, nullptr, "Unknown2025"}, // 20.0.0+
{2026, nullptr, "Unknown2026"}, // 20.0.0+
{2027, nullptr, "Unknown2027"}, // 20.0.0+
{2028, nullptr, "Unknown2028"}, // 20.0.0+
{2029, nullptr, "Unknown2029"}, // 20.0.0+
{2030, nullptr, "Unknown2030"}, // 20.0.0+
{2031, nullptr, "Unknown2031"}, // 20.0.0+
{2032, nullptr, "Unknown2032"}, // 20.0.0+
{2033, nullptr, "Unknown2033"}, // 20.0.0+
{2034, nullptr, "Unknown2034"}, // 20.0.0+
{2035, nullptr, "Unknown2035"}, // 20.0.0+
{2036, nullptr, "Unknown2036"}, // 20.0.0+
{2037, nullptr, "Unknown2037"}, // 20.0.0+
{2038, nullptr, "Unknown2038"}, // 20.0.0+
{2039, nullptr, "Unknown2039"}, // 20.0.0+
{2040, nullptr, "Unknown2040"}, // 20.0.0+
{2041, nullptr, "Unknown2041"}, // 20.0.0+
{2042, nullptr, "Unknown2042"}, // 20.0.0+
{2043, nullptr, "Unknown2043"}, // 20.0.0+
{2044, nullptr, "Unknown2044"}, // 20.0.0+
{2045, nullptr, "Unknown2045"}, // 20.0.0+
{2046, nullptr, "Unknown2046"}, // 20.0.0+
{2047, nullptr, "Unknown2047"}, // 20.0.0+
{2048, nullptr, "Unknown2048"}, // 20.0.0+
{2049, nullptr, "Unknown2049"}, // 20.0.0+
{2050, nullptr, "Unknown2050"}, // 20.0.0+
{2051, nullptr, "Unknown2051"}, // 20.0.0+
{3000, nullptr, "RequestLatestApplicationIcon"}, // 17.0.0+
{3001, nullptr, "RequestDownloadIdbeLatestIconFile"} // 17.0.0+
};
// clang-format on
@@ -232,7 +317,7 @@ public:
{2, nullptr, "ClearDebugResponse"},
{3, nullptr, "RegisterDebugResponse"},
{4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"},
{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+
{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+
};
// clang-format on
@@ -241,7 +326,7 @@ public:
private:
void CreateServerInterface(HLERequestContext& ctx) {
LOG_DEBUG(Service_NIM, "(STUBBED) called");
LOG_DEBUG(Service_NIM, "(STUBBED) called");
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
rb.PushIpcInterface<IShopServiceAccessServer>(system);
@@ -258,14 +343,14 @@ private:
rb.Push(ResultSuccess);
rb.Push(false);
}
void CreateServerInterface2(HLERequestContext& ctx) {
LOG_DEBUG(Service_NIM, "(STUBBED) called.");
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
rb.PushIpcInterface<IShopServiceAccessServer>(system);
}
void CreateServerInterface2(HLERequestContext& ctx) {
LOG_DEBUG(Service_NIM, "(STUBBED) called.");
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
rb.PushIpcInterface<IShopServiceAccessServer>(system);
}
};
class NIM_SHP final : public ServiceFramework<NIM_SHP> {
@@ -301,6 +386,8 @@ public:
{503, nullptr, "RequestSyncTicket"},
{504, nullptr, "RequestDownloadTicketForPrepurchasedContents2"},
{505, nullptr, "RequestDownloadTicketForPrepurchasedContentsForAccount"},
{600, nullptr, "IsInitialLaunchFinished"}, // 14.0.0+
{601, nullptr, "NotifyFinishInitialLaunch"}, // 14.0.0+
};
// clang-format on

View File

@@ -53,8 +53,13 @@ public:
{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+
{43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+
{44, nullptr, "SetUidList"}, // 17.0.0+
{45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+
{45, nullptr, "PutDigitalTwinKeyValue"}, // [20.0.0+] ([17.0.0-18.1.0] PutDigitalTwinKeyValue)
{51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+
{52, nullptr, "Unknown52"}, // 20.0.0+
{53, nullptr, "Unknown53"}, // 20.0.0+
{60, nullptr, "Unknown60"}, // 19.0.0+
{61, nullptr, "Unknown61"}, // 19.0.0+
{70, nullptr, "Unknown70"}, // 20.0.0+
{101, nullptr, "Suspend"},
{102, nullptr, "Resume"},
{103, C<&INpnsSystem::GetState>, "GetState"},
@@ -68,6 +73,13 @@ public:
{114, nullptr, "AttachJid"},
{115, nullptr, "DetachJid"},
{120, nullptr, "CreateNotificationReceiver"},
{141, nullptr, "Unknown141"}, // 19.0.0+
{142, nullptr, "Unknown142"}, // 19.0.0+
{143, nullptr, "Unknown143"}, // 19.0.0+
{144, nullptr, "Unknown144"}, // 19.0.0+
{145, nullptr, "Unknown145"}, // 19.0.0+
{146, nullptr, "Unknown146"}, // 20.0.0+
{147, nullptr, "Unknown147"}, // 20.0.0+
{151, nullptr, "GetStateWithHandover"},
{152, nullptr, "GetStateChangeEventWithHandover"},
{153, nullptr, "GetDropEventWithHandover"},
@@ -78,6 +90,7 @@ public:
{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"},
{201, nullptr, "RequestChangeStateForceTimed"},
{202, nullptr, "RequestChangeStateForceAsync"},
{203, nullptr, "Unknown203"}, // 20.0.0+
{301, nullptr, "GetPassword"}, // 18.0.0+
{302, nullptr, "GetAllImmigration"}, // 18.0.0+
{303, nullptr, "GetNotificationHistories"}, // 18.0.0+

View File

@@ -115,7 +115,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{301, nullptr, "PopApplicationShellEventInfo"},
{302, nullptr, "LaunchLibraryApplet"},
{303, nullptr, "TerminateLibraryApplet"},
{304, nullptr, "LaunchSystemApplet"},
{304, nullptr, "LaunchSystemApplet"}, // [20.0.0+] ns.applet!system_applet_id_gen2
{305, nullptr, "TerminateSystemApplet"},
{306, nullptr, "LaunchOverlayApplet"},
{307, nullptr, "TerminateOverlayApplet"},
@@ -128,6 +128,23 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{406, nullptr, "GetApplicationControlProperty"},
{407, nullptr, "ListApplicationTitle"},
{408, nullptr, "ListApplicationIcon"},
{411, nullptr, "Unknown411"}, // 19.0.0+
{412, nullptr, "Unknown412"}, // 19.0.0+
{413, nullptr, "Unknown413"}, // 19.0.0+
{414, nullptr, "Unknown414"}, // 19.0.0+
{415, nullptr, "Unknown415"}, // 19.0.0+
{416, nullptr, "Unknown416"}, // 19.0.0+
{417, nullptr, "InvalidateAllApplicationControlCacheOfTheStage"}, // 19.0.0+
{418, nullptr, "InvalidateApplicationControlCacheOfTheStage"}, // 19.0.0+
{419, nullptr, "RequestDownloadApplicationControlDataInBackground"}, // 19.0.0+
{420, nullptr, "CloneApplicationControlDataCacheForDebug"}, // 19.0.0+
{421, nullptr, "Unknown421"}, // 20.0.0+
{422, nullptr, "Unknown422"}, // 20.0.0+
{423, nullptr, "Unknown423"}, // 20.0.0+
{424, nullptr, "Unknown424"}, // 20.0.0+
{425, nullptr, "Unknown425"}, // 20.0.0+
{426, nullptr, "Unknown426"}, // 20.0.0+
{427, nullptr, "Unknown427"}, // 20.0.0+
{502, nullptr, "RequestCheckGameCardRegistration"},
{503, nullptr, "RequestGameCardRegistrationGoldPoint"},
{504, nullptr, "RequestRegisterGameCard"},
@@ -137,6 +154,9 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{508, nullptr, "GetLastGameCardMountFailureResult"},
{509, nullptr, "ListApplicationIdOnGameCard"},
{510, nullptr, "GetGameCardPlatformRegion"},
{513, nullptr, "Unknown513"}, // 20.0.0+
{514, nullptr, "Unknown514"}, // 20.0.0+
{515, nullptr, "Unknown515"}, // 20.0.0+
{600, nullptr, "CountApplicationContentMeta"},
{601, nullptr, "ListApplicationContentMetaStatus"},
{602, nullptr, "ListAvailableAddOnContent"},
@@ -174,6 +194,18 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{914, nullptr, "HideApplicationRecord"},
{915, nullptr, "ShowApplicationRecord"},
{916, nullptr, "IsApplicationAutoDeleteDisabled"},
{917, nullptr, "Unknown917"}, // 20.0.0+
{918, nullptr, "Unknown918"}, // 20.0.0+
{919, nullptr, "Unknown919"}, // 20.0.0+
{920, nullptr, "Unknown920"}, // 20.0.0+
{921, nullptr, "Unknown921"}, // 20.0.0+
{922, nullptr, "Unknown922"}, // 20.0.0+
{923, nullptr, "Unknown923"}, // 20.0.0+
{928, nullptr, "Unknown928"}, // 20.0.0+
{929, nullptr, "Unknown929"}, // 20.0.0+
{930, nullptr, "Unknown930"}, // 20.0.0+
{931, nullptr, "Unknown931"}, // 20.0.0+
{933, nullptr, "Unknown933"}, // 20.1.0+
{1000, nullptr, "RequestVerifyApplicationDeprecated"},
{1001, nullptr, "CorruptApplicationForDebug"},
{1002, nullptr, "RequestVerifyAddOnContentsRights"},
@@ -202,6 +234,11 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{1504, nullptr, "InsertSdCard"},
{1505, nullptr, "RemoveSdCard"},
{1506, nullptr, "GetSdCardStartupStatus"},
{1508, nullptr, "Unknown1508"}, // 20.0.0+
{1509, nullptr, "Unknown1509"}, // 20.0.0+
{1510, nullptr, "Unknown1510"}, // 20.0.0+
{1511, nullptr, "Unknown1511"}, // 20.0.0+
{1512, nullptr, "Unknown1512"}, // 20.0.0+
{1600, nullptr, "GetSystemSeedForPseudoDeviceId"},
{1601, nullptr, "ResetSystemSeedForPseudoDeviceId"},
{1700, nullptr, "ListApplicationDownloadingContentMeta"},
@@ -210,6 +247,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{1703, nullptr, "GetApplicationViewDownloadErrorContext"},
{1704, D<&IApplicationManagerInterface::GetApplicationViewWithPromotionInfo>, "GetApplicationViewWithPromotionInfo"},
{1705, nullptr, "IsPatchAutoDeletableApplication"},
{1706, nullptr, "Unknown1706"}, // 20.0.0+
{1800, nullptr, "IsNotificationSetupCompleted"},
{1801, nullptr, "GetLastNotificationInfoCount"},
{1802, nullptr, "ListLastNotificationInfo"},
@@ -218,7 +256,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{1901, nullptr, "RequestDownloadApplicationPrepurchasedRights"},
{1902, nullptr, "GetApplicationTicketInfo"},
{1903, nullptr, "RequestDownloadApplicationPrepurchasedRightsForAccount"},
{2000, nullptr, "GetSystemDeliveryInfo"},
{2000, nullptr, "GetSystemDeliveryInfo"}, // Always set to 0x1 by #GetSystemDeliveryInfo with [20.0.0+].
{2001, nullptr, "SelectLatestSystemDeliveryInfo"},
{2002, nullptr, "VerifyDeliveryProtocolVersion"},
{2003, nullptr, "GetApplicationDeliveryInfo"},
@@ -237,8 +275,11 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{2016, nullptr, "ListNotCommittedContentMeta"},
{2017, nullptr, "CreateDownloadTask"},
{2018, nullptr, "GetApplicationDeliveryInfoHash"},
{2019, nullptr, "Unknown2019"}, // 20.0.0+
{2050, D<&IApplicationManagerInterface::GetApplicationRightsOnClient>, "GetApplicationRightsOnClient"},
{2051, nullptr, "InvalidateRightsIdCache"},
{2052, nullptr, "Unknown2052"}, // 20.0.0+
{2053, nullptr, "Unknown2053"}, // 20.0.0+
{2100, D<&IApplicationManagerInterface::GetApplicationTerminateResult>, "GetApplicationTerminateResult"},
{2101, nullptr, "GetRawApplicationTerminateResult"},
{2150, nullptr, "CreateRightsEnvironment"},
@@ -255,6 +296,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{2180, nullptr, "RequestExtendRightsInRightsEnvironment"},
{2181, nullptr, "GetResultOfExtendRightsInRightsEnvironment"},
{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"},
{2183, nullptr, "Unknown2183"}, // 20.1.0+
{2190, nullptr, "GetRightsEnvironmentHandleForApplication"},
{2199, nullptr, "GetRightsEnvironmentCountForDebug"},
{2200, nullptr, "GetGameCardApplicationCopyIdentifier"},
@@ -271,9 +313,18 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{2357, nullptr, "EnableMultiCoreDownload"},
{2358, nullptr, "DisableMultiCoreDownload"},
{2359, nullptr, "IsMultiCoreDownloadEnabled"},
{2360, nullptr, "GetApplicationDownloadTaskCount"}, // 19.0.0+
{2361, nullptr, "GetMaxApplicationDownloadTaskCount"}, // 19.0.0+
{2362, nullptr, "Unknown2362"}, // 20.0.0+
{2363, nullptr, "Unknown2363"}, // 20.0.0+
{2364, nullptr, "Unknown2364"}, // 20.0.0+
{2365, nullptr, "Unknown2365"}, // 20.0.0+
{2366, nullptr, "Unknown2366"}, // 20.0.0+
{2367, nullptr, "Unknown2367"}, // 20.0.0+
{2368, nullptr, "Unknown2368"}, // 20.0.0+
{2400, nullptr, "GetPromotionInfo"},
{2401, nullptr, "CountPromotionInfo"},
{2402, nullptr, "ListPromotionInfo"},
{2402, nullptr, "ListPromotionInfo"}, // [20.0.0+] The struct size for the output buffer array is now 0x28-bytes instead of 0x20-bytes.
{2403, nullptr, "ImportPromotionJsonForDebug"},
{2404, nullptr, "ClearPromotionInfoForDebug"},
{2500, nullptr, "ConfirmAvailableTime"},
@@ -289,6 +340,9 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{2520, nullptr, "IsQualificationTransitionSupportedByProcessId"},
{2521, nullptr, "GetRightsUserChangedEvent"},
{2522, nullptr, "IsRomRedirectionAvailable"},
{2523, nullptr, "GetProgramId"}, // 17.0.0+
{2524, nullptr, "Unknown2524"}, // 19.0.0+
{2525, nullptr, "Unknown2525"}, // 20.0.0+
{2800, nullptr, "GetApplicationIdOfPreomia"},
{3000, nullptr, "RegisterDeviceLockKey"},
{3001, nullptr, "UnregisterDeviceLockKey"},
@@ -306,6 +360,95 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
{3013, nullptr, "IsGameCardEnabled"},
{3014, nullptr, "IsLocalContentShareEnabled"},
{3050, nullptr, "ListAssignELicenseTaskResult"},
{4000, nullptr, "Unknown4000"}, // 20.0.0+
{4004, nullptr, "Unknown4004"}, // 20.0.0+
{4006, nullptr, "Unknown4006"}, // 20.0.0+
{4007, nullptr, "Unknown4007"}, // 20.0.0+
{4008, nullptr, "Unknown4008"}, // 20.0.0+
{4009, nullptr, "Unknown4009"}, // 20.0.0+
{4010, nullptr, "Unknown4010"}, // 20.0.0+
{4011, nullptr, "Unknown4011"}, // 20.0.0+
{4012, nullptr, "Unknown4012"}, // 20.0.0+
{4013, nullptr, "Unknown4013"}, // 20.0.0+
{4015, nullptr, "Unknown4015"}, // 20.0.0+
{4017, nullptr, "Unknown4017"}, // 20.0.0+
{4019, nullptr, "Unknown4019"}, // 20.0.0+
{4020, nullptr, "Unknown4020"}, // 20.0.0+
{4021, nullptr, "Unknown4021"}, // 20.0.0+
{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022"},
{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023"},
{4024, nullptr, "Unknown4024"}, // 20.0.0+
{4025, nullptr, "Unknown4025"}, // 20.0.0+
{4026, nullptr, "Unknown4026"}, // 20.0.0+
{4027, nullptr, "Unknown4027"}, // 20.0.0+
{4028, nullptr, "Unknown4028"}, // 20.0.0+
{4029, nullptr, "Unknown4029"}, // 20.0.0+
{4030, nullptr, "Unknown4030"}, // 20.0.0+
{4031, nullptr, "Unknown4031"}, // 20.0.0+
{4032, nullptr, "Unknown4032"}, // 20.0.0+
{4033, nullptr, "Unknown4033"}, // 20.0.0+
{4034, nullptr, "Unknown4034"}, // 20.0.0+
{4035, nullptr, "Unknown4035"}, // 20.0.0+
{4037, nullptr, "Unknown4037"}, // 20.0.0+
{4038, nullptr, "Unknown4038"}, // 20.0.0+
{4039, nullptr, "Unknown4039"}, // 20.0.0+
{4040, nullptr, "Unknown4040"}, // 20.0.0+
{4041, nullptr, "Unknown4041"}, // 20.0.0+
{4042, nullptr, "Unknown4042"}, // 20.0.0+
{4043, nullptr, "Unknown4043"}, // 20.0.0+
{4044, nullptr, "Unknown4044"}, // 20.0.0+
{4045, nullptr, "Unknown4045"}, // 20.0.0+
{4046, nullptr, "Unknown4046"}, // 20.0.0+
{4049, nullptr, "Unknown4049"}, // 20.0.0+
{4050, nullptr, "Unknown4050"}, // 20.0.0+
{4051, nullptr, "Unknown4051"}, // 20.0.0+
{4052, nullptr, "Unknown4052"}, // 20.0.0+
{4053, nullptr, "Unknown4053"}, // 20.0.0+
{4054, nullptr, "Unknown4054"}, // 20.0.0+
{4055, nullptr, "Unknown4055"}, // 20.0.0+
{4056, nullptr, "Unknown4056"}, // 20.0.0+
{4057, nullptr, "Unknown4057"}, // 20.0.0+
{4058, nullptr, "Unknown4058"}, // 20.0.0+
{4059, nullptr, "Unknown4059"}, // 20.0.0+
{4060, nullptr, "Unknown4060"}, // 20.0.0+
{4061, nullptr, "Unknown4061"}, // 20.0.0+
{4062, nullptr, "Unknown4062"}, // 20.0.0+
{4063, nullptr, "Unknown4063"}, // 20.0.0+
{4064, nullptr, "Unknown4064"}, // 20.0.0+
{4065, nullptr, "Unknown4065"}, // 20.0.0+
{4066, nullptr, "Unknown4066"}, // 20.0.0+
{4067, nullptr, "Unknown4067"}, // 20.0.0+
{4068, nullptr, "Unknown4068"}, // 20.0.0+
{4069, nullptr, "Unknown4069"}, // 20.0.0+
{4070, nullptr, "Unknown4070"}, // 20.0.0+
{4071, nullptr, "Unknown4071"}, // 20.0.0+
{4072, nullptr, "Unknown4072"}, // 20.0.0+
{4073, nullptr, "Unknown4073"}, // 20.0.0+
{4074, nullptr, "Unknown4074"}, // 20.0.0+
{4075, nullptr, "Unknown4075"}, // 20.0.0+
{4076, nullptr, "Unknown4076"}, // 20.0.0+
{4077, nullptr, "Unknown4077"}, // 20.0.0+
{4078, nullptr, "Unknown4078"}, // 20.0.0+
{4079, nullptr, "Unknown4079"}, // 20.0.0+
{4080, nullptr, "Unknown4080"}, // 20.0.0+
{4081, nullptr, "Unknown4081"}, // 20.0.0+
{4083, nullptr, "Unknown4083"}, // 20.0.0+
{4084, nullptr, "Unknown4084"}, // 20.0.0+
{4085, nullptr, "Unknown4085"}, // 20.0.0+
{4086, nullptr, "Unknown4086"}, // 20.0.0+
{4087, nullptr, "Unknown4087"}, // 20.0.0+
{4088, D<&IApplicationManagerInterface::Unknown4088>, "Unknown4088"},
{4089, nullptr, "Unknown4089"}, // 20.0.0+
{4090, nullptr, "Unknown4090"}, // 20.0.0+
{4091, nullptr, "Unknown4091"}, // 20.0.0+
{4092, nullptr, "Unknown4092"}, // 20.0.0+
{4093, nullptr, "Unknown4093"}, // 20.0.0+
{4094, nullptr, "Unknown4094"}, // 20.0.0+
{4095, nullptr, "Unknown4095"}, // 20.0.0+
{4096, nullptr, "Unknown4096"}, // 20.0.0+
{4097, nullptr, "Unknown4097"}, // 20.0.0+
{5000, nullptr, "Unknown5000"}, // 18.0.0+
{5001, nullptr, "Unknown5001"}, // 18.0.0+
{9999, nullptr, "GetApplicationCertificate"},
};
// clang-format on
@@ -516,6 +659,23 @@ Result IApplicationManagerInterface::CheckApplicationLaunchVersion(u64 applicati
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,
u64 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,
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);
private:

View File

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

View File

@@ -27,6 +27,12 @@ IDevelopInterface::IDevelopInterface(Core::System& system_) : ServiceFramework{s
{17, nullptr, "PrepareLaunchApplicationFromHost"},
{18, nullptr, "GetLaunchEvent"},
{19, nullptr, "GetLaunchResult"},
{19, nullptr, "GetLaunchResult"}, // 12.0.0+
{20, nullptr, "GetProgramId"}, // 14.0.0+
{21, nullptr, "PrepareLaunchApplication"}, // 18.0.0+
{22, nullptr, "LaunchApplication"}, // 18.0.0+
{23, nullptr, "GetProgramIdByApplicationLaunchInfo"}, // 18.0.0+
{24, nullptr, "DestroyApplicationLaunchPreparation"}, // 18.0.0+
};
// clang-format on

View File

@@ -19,6 +19,7 @@ IDownloadTaskInterface::IDownloadTaskInterface(Core::System& system_)
{707, D<&IDownloadTaskInterface::EnableAutoCommit>, "EnableAutoCommit"},
{708, D<&IDownloadTaskInterface::DisableAutoCommit>, "DisableAutoCommit"},
{709, nullptr, "TriggerDynamicCommitEvent"},
{710, nullptr, "Unknown710"} // 20.0.0+
};
// clang-format on

View File

@@ -37,7 +37,9 @@ IDynamicRightsInterface::IDynamicRightsInterface(Core::System& system_)
{23, nullptr, "GetLimitedApplicationLicenseUpgradableEvent"},
{24, nullptr, "NotifyLimitedApplicationLicenseUpgradableEventForDebug"},
{25, nullptr, "RequestProceedDynamicRightsState"},
{26, D<&IDynamicRightsInterface::HasAccountRestrictedRightsInRunningApplications>, "HasAccountRestrictedRightsInRunningApplications"}
{26, D<&IDynamicRightsInterface::HasAccountRestrictedRightsInRunningApplications>, "HasAccountRestrictedRightsInRunningApplications"},
{27, nullptr, "Unknown27"}, // 20.0.0+
{28, nullptr, "Unknown28"}, // 20.0.0+
};
// clang-format on

View File

@@ -16,6 +16,13 @@ IECommerceInterface::IECommerceInterface(Core::System& system_)
{4, nullptr, "RequestUnlinkDevice"},
{5, nullptr, "RequestRevokeAllELicense"},
{6, nullptr, "RequestSyncRightsBasedOnAssignedELicenses"},
{7, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"}, // 14.0.0+
{8, nullptr, "Unknown8"}, // 20.0.0+
{9, nullptr, "Unknown9"}, // 20.0.0+
{10, nullptr, "Unknown10"}, // 20.0.0+
{11, nullptr, "Unknown11"}, // 20.0.0+
{12, nullptr, "Unknown12"}, // 20.0.0+
{13, nullptr, "Unknown13"}, // 20.0.0+
};
// clang-format on

View File

@@ -16,6 +16,8 @@ IFactoryResetInterface::IFactoryResetInterface(Core::System& system_)
{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
{105, nullptr, "RequestResetToFactorySettingsSecurely"},
{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"},
{107, nullptr, "Unknown7"}, // 20.0.0+
{108, nullptr, "Unknown8"}, // 20.0.0+
};
// clang-format on

View File

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

View File

@@ -32,6 +32,10 @@ IQueryService::IQueryService(Core::System& system_) : ServiceFramework{system_,
{17, nullptr, "QueryLastPlayTime"},
{18, nullptr, "QueryApplicationPlayStatisticsForSystem"},
{19, nullptr, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"},
{100, nullptr, "Unknown100"}, // 20.0.0+
{110, nullptr, "Unknown110"}, // 20.0.0+
{118, nullptr, "Unknown118"}, // 20.0.0+
{119, nullptr, "Unknown119"} // 20.0.0+
};
// clang-format on

View File

@@ -23,6 +23,19 @@ IReadOnlyApplicationControlDataInterface::IReadOnlyApplicationControlDataInterfa
{2, D<&IReadOnlyApplicationControlDataInterface::ConvertApplicationLanguageToLanguageCode>, "ConvertApplicationLanguageToLanguageCode"},
{3, nullptr, "ConvertLanguageCodeToApplicationLanguage"},
{4, nullptr, "SelectApplicationDesiredLanguage"},
{5, nullptr, "Unknown5"}, // 19.0.0+
{6, nullptr, "Unknown6"}, // 19.0.0+
{7, nullptr, "Unknown7"}, // 20.0.0+
{8, nullptr, "Unknown8"}, // 20.0.0+
{9, nullptr, "Unknown9"}, // 20.0.0+
{10, nullptr, "Unknown10"}, // 20.0.0+
{11, nullptr, "Unknown11"}, // 20.0.0+
{12, nullptr, "Unknown12"}, // 20.0.0+
{13, nullptr, "Unknown13"}, // 20.0.0+
{14, nullptr, "Unknown14"}, // 20.0.0+
{15, nullptr, "Unknown15"}, // 20.0.0+
{16, nullptr, "Unknown16"}, // 20.0.0+
{17, nullptr, "Unknown17"}, // 20.1.0+
};
// clang-format on

View File

@@ -11,8 +11,8 @@ IReadOnlyApplicationRecordInterface::IReadOnlyApplicationRecordInterface(Core::S
static const FunctionInfo functions[] = {
{0, D<&IReadOnlyApplicationRecordInterface::HasApplicationRecord>, "HasApplicationRecord"},
{1, nullptr, "NotifyApplicationFailure"},
{2, D<&IReadOnlyApplicationRecordInterface::IsDataCorruptedResult>,
"IsDataCorruptedResult"},
{2, D<&IReadOnlyApplicationRecordInterface::IsDataCorruptedResult>, "IsDataCorruptedResult"},
{3, nullptr, "Unknown3"}, // 20.0.0 +
};
// clang-format on

View File

@@ -13,6 +13,9 @@ IVulnerabilityManagerInterface::IVulnerabilityManagerInterface(Core::System& sys
{1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
{1201, nullptr, "UpdateSafeSystemVersionForDebug"},
{1202, nullptr, "GetSafeSystemVersion"},
{3100, nullptr, "Unknown7"}, // 18.0.0+
{3101, nullptr, "Unknown8"}, // 18.0.0+
{3102, nullptr, "Unknown8"}, // 18.0.0+
};
// clang-format on

View File

@@ -10,16 +10,17 @@ IDaemonController::IDaemonController(Core::System& system_)
: ServiceFramework{system_, "IDaemonController"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, D<&IDaemonController::GetAutoTransferEnabledForAccountAndApplication>, "GetAutoTransferEnabledForAccountAndApplication"},
{1, nullptr, "SetAutoTransferEnabledForAccountAndApplication"},
{2, nullptr, "GetGlobalUploadEnabledForAccount"},
{3, nullptr, "SetGlobalUploadEnabledForAccount"},
{4, nullptr, "TouchAccount"},
{5, nullptr, "GetGlobalDownloadEnabledForAccount"},
{6, nullptr, "SetGlobalDownloadEnabledForAccount"},
{10, nullptr, "GetForbiddenSaveDataIndication"},
{11, nullptr, "GetStopperObject"},
{12, nullptr, "GetState"},
{0, D<&IDaemonController::GetApplicationAutoTransferSetting>, "GetApplicationAutoTransferSetting"},
{1, nullptr, "SetApplicationAutoTransferSetting"},
{2, nullptr, "GetGlobalAutoUploadSetting"},
{3, nullptr, "SetGlobalAutoUploadSetting"},
{4, nullptr, "RunTransferTaskAutonomyRegistration"},
{5, nullptr, "GetGlobalAutoDownloadSetting"}, // 11.0.0+
{6, nullptr, "SetGlobalAutoDownloadSetting"}, // 11.0.0+
{10, nullptr, "CreateForbiddenSaveDataInidication"},
{11, nullptr, "StopAutonomyTaskExecution"},
{12, nullptr, "GetAutonomyTaskStatus"},
{13, nullptr, "Unknown13"}, // 20.0.0+
};
// clang-format on
@@ -28,7 +29,7 @@ IDaemonController::IDaemonController(Core::System& system_)
IDaemonController::~IDaemonController() = default;
Result IDaemonController::GetAutoTransferEnabledForAccountAndApplication(Out<bool> out_is_enabled,
Result IDaemonController::GetApplicationAutoTransferSetting(Out<bool> out_is_enabled,
Common::UUID user_id,
u64 application_id) {
LOG_WARNING(Service_OLSC, "(STUBBED) called, user_id={} application_id={:016X}",

View File

@@ -13,7 +13,7 @@ public:
~IDaemonController() override;
private:
Result GetAutoTransferEnabledForAccountAndApplication(Out<bool> out_is_enabled,
Result GetApplicationAutoTransferSetting(Out<bool> out_is_enabled,
Common::UUID user_id, u64 application_id);
};

View File

@@ -10,30 +10,35 @@ IRemoteStorageController::IRemoteStorageController(Core::System& system_)
: ServiceFramework{system_, "IRemoteStorageController"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "GetSaveDataArchiveInfoBySaveDataId"},
{1, nullptr, "GetSaveDataArchiveInfoByApplicationId"},
{3, nullptr, "GetSaveDataArchiveCount"},
{6, nullptr, "CleanupSaveDataArchives"},
{7, nullptr, "CreateSaveDataArchiveCacheUpdationTask"},
{8, nullptr, "CreateSaveDataArchiveCacheUpdationForSpecifiedApplicationTask"},
{9, nullptr, "Delete"},
{10, nullptr, "GetSeriesInfo"},
{11, nullptr, "CreateDeleteDataTask"},
{12, nullptr, "DeleteSeriesInfo"},
{13, nullptr, "CreateRegisterNotificationTokenTask"},
{14, nullptr, "UpdateSeriesInfo"},
{0, nullptr, "RegisterUploadSaveDataTransferTask"},
{1, nullptr, "RegisterDownloadSaveDataTransferTask"},
{2, nullptr, "Unknown2"}, // 6.0.0-7.0.1
{3, nullptr, "GetCount"},
{4, nullptr, "Unknown4"}, // 6.0.0-7.0.1
{6, nullptr, "ClearDataInfoCache"},
{7, nullptr, "RequestUpdateDataInfoCacheAsync"},
{8, nullptr, "RequestUpdateDataInfoCacheOfSpecifiedApplicationAsync"},
{9, nullptr, "DeleteDataInfoCache"},
{10, nullptr, "GetDataNewness"},
{11, nullptr, "RequestDeleteDataAsync"},
{12, nullptr, "RegisterUploadSaveDataTransferTaskDetail"},
{13, nullptr, "RequestRegisterNotificationTokenAsync"},
{14, nullptr, "GetDataNewnessByApplicationId"},
{15, nullptr, "RegisterUploadSaveDataTransferTaskForAutonomyRegistration"},
{16, nullptr, "CreateCleanupToDeleteSaveDataArchiveInfoTask"},
{17, nullptr, "ListDataInfo"},
{18, nullptr, "GetDataInfo"},
{19, nullptr, "Unknown19"},
{20, nullptr, "CreateSaveDataArchiveInfoCacheForSaveDataBackupUpdationTask"},
{21, nullptr, "ListSecondarySaves"},
{22, D<&IRemoteStorageController::GetSecondarySave>, "GetSecondarySave"},
{23, nullptr, "TouchSecondarySave"},
{24, nullptr, "GetSecondarySaveDataInfo"},
{25, nullptr, "RegisterDownloadSaveDataTransferTaskForAutonomyRegistration"},
{900, nullptr, "Unknown900"},
{16, nullptr, "RequestCleanupToDeleteSaveDataArchiveAsync"},
{17, nullptr, "ListDataInfo"}, // 7.0.0+
{18, nullptr, "GetDataInfo"}, // 7.0.0+
{19, nullptr, "GetDataInfoCacheUpdateNativeHandleHolder"}, // 7.0.0+
{20, nullptr, "RequestUpdateSaveDataBackupInfoCacheAsync"}, // 10.1.0+
{21, nullptr, "ListLoadedDataInfo"}, // 11.0.0+
{22, D<&IRemoteStorageController::GetLoadedDataInfo>, "GetLoadedDataInfo"},
{23, nullptr, "ApplyLoadedData"}, // 11.0.0+
{24, nullptr, "DeleteLoadedData"}, // 11.0.0+
{25, nullptr, "RegisterDownloadSaveDataTransferTaskForAutonomyRegistration"}, // 11.0.0+
{26, nullptr, "Unknown26"}, // 20.0.0+
{27, nullptr, "Unknown27"}, // 20.0.0+
{800, nullptr, "Unknown800"}, // 20.0.0+
{900, nullptr, "SetLoadedDataMissing"} // 11.0.0+
};
// clang-format on
@@ -42,7 +47,7 @@ IRemoteStorageController::IRemoteStorageController(Core::System& system_)
IRemoteStorageController::~IRemoteStorageController() = default;
Result IRemoteStorageController::GetSecondarySave(Out<bool> out_has_secondary_save,
Result IRemoteStorageController::GetLoadedDataInfo(Out<bool> out_has_secondary_save,
Out<std::array<u64, 3>> out_unknown,
u64 application_id) {
LOG_ERROR(Service_OLSC, "(STUBBED) called, application_id={:016X}", application_id);

View File

@@ -12,7 +12,7 @@ public:
~IRemoteStorageController() override;
private:
Result GetSecondarySave(Out<bool> out_has_secondary_save, Out<std::array<u64, 3>> out_unknown,
Result GetLoadedDataInfo(Out<bool> out_has_secondary_save, Out<std::array<u64, 3>> out_unknown,
u64 application_id);
};

View File

@@ -11,32 +11,37 @@ ITransferTaskListController::ITransferTaskListController(Core::System& system_)
: ServiceFramework{system_, "ITransferTaskListController"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "Unknown0"},
{1, nullptr, "Unknown1"},
{2, nullptr, "Unknown2"},
{3, nullptr, "Unknown3"},
{4, nullptr, "Unknown4"},
{5, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetNativeHandleHolder"},
{6, nullptr, "Unknown6"},
{7, nullptr, "Unknown7"},
{8, nullptr, "GetRemoteStorageController"},
{9, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetNativeHandleHolder2"},
{10, nullptr, "Unknown10"},
{11, nullptr, "Unknown11"},
{12, nullptr, "Unknown12"},
{13, nullptr, "Unknown13"},
{14, nullptr, "Unknown14"},
{15, nullptr, "Unknown15"},
{16, nullptr, "Unknown16"},
{17, nullptr, "Unknown17"},
{18, nullptr, "Unknown18"},
{19, nullptr, "Unknown19"},
{20, nullptr, "Unknown20"},
{21, nullptr, "Unknown21"},
{22, nullptr, "Unknown22"},
{23, nullptr, "Unknown23"},
{24, nullptr, "Unknown24"},
{25, nullptr, "Unknown25"},
{0, nullptr, "GetTransferTaskCountForOcean"},
{1, nullptr, "GetTransferTaskInfoForOcean"},
{2, nullptr, "ListTransferTaskInfoForOcean"},
{3, nullptr, "DeleteTransferTaskForOcean"},
{4, nullptr, "RaiseTransferTaskPriorityForOcean"},
{5, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetTransferTaskEndEventNativeHandleHolder"},
{6, nullptr, "GetTransferTaskProgressForOcean"},
{7, nullptr, "GetTransferTaskLastResultForOcean"},
{8, nullptr, "StopNextTransferTaskExecution"},
{9, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetTransferTaskStartEventNativeHandleHolder"},
{10, nullptr, "SuspendTransferTaskForOcean"},
{11, nullptr, "GetCurrentTransferTaskInfoForOcean"},
{12, nullptr, "FindTransferTaskInfoForOcean"},
{13, nullptr, "CancelCurrentRepairTransferTask"}, // 9.0.0+
{14, nullptr, "GetRepairTransferTaskProgress"}, // 9.0.0+
{15, nullptr, "EnsureExecutableForRepairTransferTask"}, // 9.0.0+
{16, nullptr, "GetTransferTaskCount"}, // 10.1.0+
{17, nullptr, "GetTransferTaskInfo"}, // 10.1.0+
{18, nullptr, "ListTransferTaskInfo"}, // 10.1.0+
{19, nullptr, "DeleteTransferTask"}, // 10.1.0+
{20, nullptr, "RaiseTransferTaskPriority"}, // 10.1.0+
{21, nullptr, "GetTransferTaskProgress"}, // 10.1.0+
{22, nullptr, "GetTransferTaskLastResult"}, // 10.1.0+
{23, nullptr, "SuspendTransferTask"}, // 10.1.0+
{24, nullptr, "GetCurrentTransferTaskInfo"}, // 10.1.0+
{25, nullptr, "FindTransferTaskInfo"}, // 10.1.0+
{26, nullptr, "Unknown26"}, // 20.1.0+
{27, nullptr, "Unknown27"}, // 20.1.0+
{28, nullptr, "Unknown28"}, // 20.1.0+
{29, nullptr, "Unknown29"}, // 20.1.0+
{30, nullptr, "Unknown30"}, // 20.1.0+
};
// clang-format on

View File

@@ -38,6 +38,13 @@ IOperationModeManager::IOperationModeManager(Core::System& system_)
{26, nullptr, "GetOperationModeSystemInfo"},
{27, nullptr, "GetAppletFullAwakingSystemEvent"},
{28, nullptr, "CreateCradleFirmwareUpdater"},
{29, nullptr, "GetCradleStatusChangeEvent"}, // 19.0.0+
{40, nullptr, "Unknown40"}, // 20.0.0+
{41, nullptr, "Unknown41"}, // 20.0.0+
{50, nullptr, "Unknown50"}, // 20.1.0+
{500, nullptr, "LblSwitchBacklightOnForAm"}, // 14.0.0+
{501, nullptr, "LblSwitchBacklightOffForAm"}, // 14.0.0+
{900, nullptr, "HideStartupLogo"} // 14.0.0+
};
// clang-format on

View File

@@ -38,6 +38,8 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1016, nullptr, "ConfirmShowNewsPermission"},
{1017, D<&IParentalControlService::EndFreeCommunication>, "EndFreeCommunication"},
{1018, D<&IParentalControlService::IsFreeCommunicationAvailable>, "IsFreeCommunicationAvailable"},
{1019, nullptr, "ConfirmLaunchApplicationPermission"}, // 20.0.0+
{1020, nullptr, "ConfirmLaunchSharedApplicationPermission"}, // 20.0.0+
{1031, D<&IParentalControlService::IsRestrictionEnabled>, "IsRestrictionEnabled"},
{1032, D<&IParentalControlService::GetSafetyLevel>, "GetSafetyLevel"},
{1033, nullptr, "SetSafetyLevel"},
@@ -52,9 +54,11 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1044, nullptr, "GetFreeCommunicationApplicationList"},
{1045, nullptr, "UpdateFreeCommunicationApplicationList"},
{1046, nullptr, "DisableFeaturesForReset"},
{1047, nullptr, "NotifyApplicationDownloadStarted"},
{1047, nullptr, "NotifyApplicationDownloadStartedOld"}, // 20.0.0+ (3.0.0-19.0.1 NotifyApplicationDownloadStarted)
{1048, nullptr, "NotifyNetworkProfileCreated"},
{1049, nullptr, "ResetFreeCommunicationApplicationList"},
{1050, nullptr, "AddToFreeCommunicationApplicationList"}, // 20.0.0+
{1051, nullptr, "NotifyApplicationDownloadStarted"}, // 20.0.0+
{1061, D<&IParentalControlService::ConfirmStereoVisionRestrictionConfigurable>, "ConfirmStereoVisionRestrictionConfigurable"},
{1062, D<&IParentalControlService::GetStereoVisionRestriction>, "GetStereoVisionRestriction"},
{1063, D<&IParentalControlService::SetStereoVisionRestriction>, "SetStereoVisionRestriction"},
@@ -80,16 +84,18 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1451, D<&IParentalControlService::StartPlayTimer>, "StartPlayTimer"},
{1452, D<&IParentalControlService::StopPlayTimer>, "StopPlayTimer"},
{1453, D<&IParentalControlService::IsPlayTimerEnabled>, "IsPlayTimerEnabled"},
{1454, nullptr, "GetPlayTimerRemainingTime"},
{1454, D<&IParentalControlService::GetPlayTimerRemainingTime>, "GetPlayTimerRemainingTime"},
{1455, D<&IParentalControlService::IsRestrictedByPlayTimer>, "IsRestrictedByPlayTimer"},
{1456, D<&IParentalControlService::GetPlayTimerSettingsOld>, "GetPlayTimerSettingsOld"},
{1457, D<&IParentalControlService::GetPlayTimerEventToRequestSuspension>, "GetPlayTimerEventToRequestSuspension"},
{1458, D<&IParentalControlService::IsPlayTimerAlarmDisabled>, "IsPlayTimerAlarmDisabled"},
{1459, D<&IParentalControlService::GetPlayTimerRemainingTimeDisplayInfo>, "GetPlayTimerRemainingTimeDisplayInfo"}, // 20.0.0+
{1471, nullptr, "NotifyWrongPinCodeInputManyTimes"},
{1472, nullptr, "CancelNetworkRequest"},
{1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"},
{1474, nullptr, "ClearUnlinkedEvent"},
{1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+
{1501, nullptr, "SetTimerEventEnabled"}, // 20.0.0+
{1601, nullptr, "DisableAllFeatures"},
{1602, nullptr, "PostEnableAllFeatures"},
{1603, nullptr, "IsAllFeaturesDisabled"},
@@ -109,6 +115,9 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+
{1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 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"},
{2002, nullptr, "FinishRequestPairing"},
{2003, nullptr, "AuthorizePairingAsync"},
@@ -125,6 +134,15 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili
{2014, nullptr, "FinishSynchronizeParentalControlSettings"},
{2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"},
{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+
};
// clang-format on
@@ -378,6 +396,12 @@ Result IParentalControlService::IsPlayTimerEnabled(Out<bool> out_is_play_timer_e
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) {
*out_is_restricted_by_play_timer = false;
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();
}
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) {
LOG_INFO(Service_PCTL, "called");
*out_event = unlinked_event.GetHandle();
@@ -452,4 +485,4 @@ Result IParentalControlService::ResetConfirmedStereoVisionPermission() {
R_SUCCEED();
}
} // namespace Service::PCTL
} // namespace Service::PCTL

View File

@@ -49,10 +49,12 @@ private:
Result StartPlayTimer();
Result StopPlayTimer();
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 GetPlayTimerSettingsOld(Out<PlayTimerSettings> out_play_timer_settings);
Result GetPlayTimerEventToRequestSuspension(OutCopyHandle<Kernel::KReadableEvent> out_event);
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 GetStereoVisionRestriction(Out<bool> out_stereo_vision_restriction);
Result SetStereoVisionRestriction(bool stereo_vision_restriction);

View File

@@ -27,6 +27,7 @@ public:
{2, &IPsmSession::SetChargerTypeChangeEventEnabled, "SetChargerTypeChangeEventEnabled"},
{3, &IPsmSession::SetPowerSupplyChangeEventEnabled, "SetPowerSupplyChangeEventEnabled"},
{4, &IPsmSession::SetBatteryVoltageStateChangeEventEnabled, "SetBatteryVoltageStateChangeEventEnabled"},
{5, nullptr, "Unknown5"}, // 20.0.0+
};
// clang-format on
@@ -141,6 +142,12 @@ PSM::PSM(Core::System& system_) : ServiceFramework{system_, "psm"} {
{16, nullptr, "GetBatteryChargeInfoEvent"},
{17, nullptr, "GetBatteryChargeInfoFields"},
{18, nullptr, "GetBatteryChargeCalibratedEvent"},
{19, nullptr, "Unknown19"}, // 18.0.0+
{20, nullptr, "Unknown20"}, // 18.0.0+
{21, nullptr, "Unknown21"}, // 19.0.0-19.0.1
{22, nullptr, "Unknown22"}, // 19.0.0+
{23, nullptr, "Unknown23"}, // 19.0.0+
{24, nullptr, "Unknown24"} // 20.0.0+
};
// clang-format on

View File

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

View File

@@ -304,6 +304,15 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_)
{222, nullptr, "SetForceMonauralOutputFlag"}, //17.0.0+
{251, nullptr, "GetAccountIdentificationSettings"}, //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

View File

@@ -14,6 +14,7 @@ void LoopProcess(Core::System& system) {
server_manager->RegisterNamedService("bsd:s", std::make_shared<BSD>(system, "bsd:s"));
server_manager->RegisterNamedService("bsd:u", std::make_shared<BSD>(system, "bsd:u"));
server_manager->RegisterNamedService("bsd:a", std::make_shared<BSD>(system, "bsd:a"));
server_manager->RegisterNamedService("bsdcfg", std::make_shared<BSDCFG>(system));
server_manager->RegisterNamedService("nsd:a", std::make_shared<NSD>(system, "nsd:a"));
server_manager->RegisterNamedService("nsd:u", std::make_shared<NSD>(system, "nsd:u"));

View File

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

View File

@@ -11,7 +11,7 @@ enum class CaCertificateId : s32 {
All = -1,
NintendoCAG3 = 1,
NintendoClass2CAG3 = 2,
NintendoRootCAG4 = 3,
NintendoRootCAG4 = 3, // [16.0.0+]
AmazonRootCA1 = 1000,
StarfieldServicesRootCertificateAuthorityG2 = 1001,
AddTrustExternalCARoot = 1002,
@@ -29,10 +29,10 @@ enum class CaCertificateId : s32 {
EntrustnetCertificationAuthority2048 = 1014,
EntrustRootCertificationAuthority = 1015,
EntrustRootCertificationAuthorityG2 = 1016,
GeoTrustGlobalCA2 = 1017,
GeoTrustGlobalCA = 1018,
GeoTrustPrimaryCertificationAuthorityG3 = 1019,
GeoTrustPrimaryCertificationAuthority = 1020,
GeoTrustGlobalCA2 = 1017, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustGlobalCA = 1018, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustPrimaryCertificationAuthorityG3 = 1019, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GeoTrustPrimaryCertificationAuthority = 1020, // [8.0.0+] TrustedCertStatus is EnabledNotTrusted
GlobalSignRootCA = 1021,
GlobalSignRootCAR2 = 1022,
GlobalSignRootCAR3 = 1023,
@@ -73,6 +73,72 @@ enum class CaCertificateId : s32 {
DigiCertTLSECCP384RootG5 = 1058, // [16.0.0+]
DigiCertTLSRSA4096RootG5 = 1059, // [16.0.0+]
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 {