From 0be395a94eeb439586989cb4da5c23a823351848 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 25 Mar 2026 01:50:23 +0000 Subject: [PATCH] [hle] attempt support ULaunch Signed-off-by: lizzie --- src/core/CMakeLists.txt | 2 ++ src/core/hle/service/ulsf/ulsf.cpp | 39 ++++++++++++++++++++++++++++++ src/core/hle/service/ulsf/ulsf.h | 28 +++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 src/core/hle/service/ulsf/ulsf.cpp create mode 100644 src/core/hle/service/ulsf/ulsf.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 7566372b51..d61cc8ecae 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1089,6 +1089,8 @@ add_library(core STATIC hle/service/ssl/ssl.h hle/service/ssl/ssl_backend.h hle/service/ssl/ssl_types.h + hle/service/ulsf/ulsf.cpp + hle/service/ulsf/ulsf.h hle/service/usb/usb.cpp hle/service/usb/usb.h hle/service/vi/application_display_service.cpp diff --git a/src/core/hle/service/ulsf/ulsf.cpp b/src/core/hle/service/ulsf/ulsf.cpp new file mode 100644 index 0000000000..d218511f4a --- /dev/null +++ b/src/core/hle/service/ulsf/ulsf.cpp @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#include +#include "core/hle/service/ipc_helpers.h" +#include "core/hle/service/ulsf/ulsf.h" +#include "core/hle/service/server_manager.h" + +namespace Service::ULSF { + +ULSF_U::ULSF_U(Core::System& system_) : ServiceFramework{system_, "ulsf:u"} { + static const FunctionInfo functions[] = { + {0, &ULSF_U::GetVersion, "GetVersion"}, + }; + RegisterHandlers(functions); +} +ULSF_U::~ULSF_U() = default; + +// Result ULSF_U::GetVersion(Out out_version) { +// LOG_WARNING(Service_SM, "(stubbed)"); +// *out_version = {}; +// R_SUCCEED(); +// } + +void ULSF_U::GetVersion(HLERequestContext& ctx) { + LOG_WARNING(Service_SM, "(stubbed)"); + ULauncherVersion version{1, 6, 7}; + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultSuccess); + rb.PushRaw(version); +} + +void LoopProcess(Core::System& system) { + auto server_manager = std::make_unique(system); + server_manager->RegisterNamedService("ulsf:u", std::make_shared(system)); + ServerManager::RunServer(std::move(server_manager)); +} + +} diff --git a/src/core/hle/service/ulsf/ulsf.h b/src/core/hle/service/ulsf/ulsf.h new file mode 100644 index 0000000000..61fca1ddc4 --- /dev/null +++ b/src/core/hle/service/ulsf/ulsf.h @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include "common/common_types.h" +#include "core/hle/service/cmif_types.h" +#include "core/hle/service/service.h" + +namespace Service::ULSF { + +struct ULauncherVersion { + u8 major; + u8 minor; + u8 micro; +}; + +class ULSF_U final : public ServiceFramework { +public: + explicit ULSF_U(Core::System& system_); + ~ULSF_U(); + //Result GetVersion(Out out_version); + void GetVersion(HLERequestContext& ctx); +}; + +void LoopProcess(Core::System& system); + +}