From 1bf0aef633f0de888cde7bb9265575d479b8fb1f Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 17 Nov 2025 10:29:05 +0000 Subject: [PATCH] [hle] stubbed extra services from (parental controls and stuff) fw21 --- .../olsc/olsc_service_for_system_service.cpp | 2 ++ .../service/pctl/parental_control_service.cpp | 21 ++++++++++++++----- .../service/pctl/parental_control_service.h | 3 +++ src/core/hle/service/pctl/pctl_types.h | 10 +++++++-- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/core/hle/service/olsc/olsc_service_for_system_service.cpp b/src/core/hle/service/olsc/olsc_service_for_system_service.cpp index 7972cdfb13..09c22cebad 100644 --- a/src/core/hle/service/olsc/olsc_service_for_system_service.cpp +++ b/src/core/hle/service/olsc/olsc_service_for_system_service.cpp @@ -35,8 +35,10 @@ IOlscServiceForSystemService::IOlscServiceForSystemService(Core::System& system_ {203, nullptr, "UpdateDataTransferPolicy"}, {204, nullptr, "CleanupDataTransferPolicyInfo"}, {205, nullptr, "RequestDataTransferPolicy"}, + {206, nullptr, "Unknown206"}, //21.0.0+ {300, nullptr, "GetAutoTransferSeriesInfo"}, {301, nullptr, "UpdateAutoTransferSeriesInfo"}, + {302, nullptr, "Unknown302"}, //21.0.0+ {400, nullptr, "CleanupSaveDataArchiveInfoType1"}, {900, nullptr, "CleanupTransferTask"}, {902, nullptr, "CleanupSeriesInfoType0"}, diff --git a/src/core/hle/service/pctl/parental_control_service.cpp b/src/core/hle/service/pctl/parental_control_service.cpp index 1310be64b1..4fdb9ba18d 100644 --- a/src/core/hle/service/pctl/parental_control_service.cpp +++ b/src/core/hle/service/pctl/parental_control_service.cpp @@ -39,6 +39,9 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1017, D<&IParentalControlService::EndFreeCommunication>, "EndFreeCommunication"}, {1018, D<&IParentalControlService::IsFreeCommunicationAvailable>, "IsFreeCommunicationAvailable"}, {1019, D<&IParentalControlService::ConfirmLaunchApplicationPermission>, "ConfirmLaunchApplicationPermission"}, + {1020, nullptr, "ConfirmLaunchSharedApplicationPermission"}, //20.0.0+ + {1021, nullptr, "TryBeginFreeCommunicationForStreamPlay"}, //21.0.0+ + {1022, nullptr, "EndFreeCommunicationForStreamPlay"}, //21.0.0+ {1031, D<&IParentalControlService::IsRestrictionEnabled>, "IsRestrictionEnabled"}, {1032, D<&IParentalControlService::GetSafetyLevel>, "GetSafetyLevel"}, {1033, nullptr, "SetSafetyLevel"}, @@ -56,6 +59,8 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1047, nullptr, "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"}, @@ -128,6 +133,7 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, {2016, nullptr, "RequestUpdateExemptionListAsync"}, {145601, D<&IParentalControlService::GetPlayTimerSettings>, "GetPlayTimerSettings"} // 18.0.0+ + {195101, D<&IParentalControlService::SetPlayTimerSettings>, "SetPlayTimerSettingsForDebug"}, //18.0.0+ }; // clang-format on RegisterHandlers(functions); @@ -392,17 +398,22 @@ Result IParentalControlService::IsRestrictedByPlayTimer(Out out_is_restric R_SUCCEED(); } -Result IParentalControlService::GetPlayTimerSettingsOld( - Out out_play_timer_settings) { +// TODO: fuck me why? +Result IParentalControlService::GetPlayTimerSettingsOld(Out out_play_timer_settings) { LOG_WARNING(Service_PCTL, "(STUBBED) called"); *out_play_timer_settings = {}; R_SUCCEED(); } -Result IParentalControlService::GetPlayTimerSettings( - Out out_play_timer_settings) { +Result IParentalControlService::GetPlayTimerSettings(Out out_play_timer_settings) { LOG_WARNING(Service_PCTL, "(STUBBED) called"); - *out_play_timer_settings = {}; + *out_play_timer_settings = raw_play_timer_settings; + R_SUCCEED(); +} + +Result IParentalControlService::SetPlayTimerSettings(PlayTimerSettings play_timer_settings) { + LOG_WARNING(Service_PCTL, "(STUBBED) called"); + play_timer_settings = play_timer_settings; R_SUCCEED(); } diff --git a/src/core/hle/service/pctl/parental_control_service.h b/src/core/hle/service/pctl/parental_control_service.h index 9d143fe2e2..6bb5a169d0 100644 --- a/src/core/hle/service/pctl/parental_control_service.h +++ b/src/core/hle/service/pctl/parental_control_service.h @@ -60,6 +60,7 @@ private: Result SetStereoVisionRestriction(bool stereo_vision_restriction); Result ResetConfirmedStereoVisionPermission(); Result GetPlayTimerSettings(Out out_play_timer_settings); + Result SetPlayTimerSettings(Out out_play_timer_settings); struct States { u64 current_tid{}; @@ -83,6 +84,8 @@ private: RestrictionSettings restriction_settings{}; std::array pin_code{}; Capability capability{}; + // TODO: this is RAW as fuck + PlayTimerSettings raw_play_timer_settings{}; KernelHelpers::ServiceContext service_context; Event synchronization_event; diff --git a/src/core/hle/service/pctl/pctl_types.h b/src/core/hle/service/pctl/pctl_types.h index daaecdf48f..ff810f1c5f 100644 --- a/src/core/hle/service/pctl/pctl_types.h +++ b/src/core/hle/service/pctl/pctl_types.h @@ -34,10 +34,16 @@ struct RestrictionSettings { }; static_assert(sizeof(RestrictionSettings) == 0x3, "RestrictionSettings has incorrect size."); +// This is nn::pctl::PlayTimerSettingsOld +struct PlayTimerSettingsOld { + std::array settings; +}; +static_assert(sizeof(PlayTimerSettingsOld) == 0x34, "PlayTimerSettingsOld has incorrect size."); + // This is nn::pctl::PlayTimerSettings struct PlayTimerSettings { - std::array settings; + std::array settings; //21.0.0+ now takes 0x44 }; -static_assert(sizeof(PlayTimerSettings) == 0x34, "PlayTimerSettings has incorrect size."); +static_assert(sizeof(PlayTimerSettings) == 0x44, "PlayTimerSettings has incorrect size."); } // namespace Service::PCTL