From 309a4989782c92d46f4fe9e3f9fa0179ea8f0f0a Mon Sep 17 00:00:00 2001 From: goaaats Date: Thu, 18 Jan 2018 23:55:10 +0100 Subject: [PATCH] Add set service + stubs needed for games --- src/core/CMakeLists.txt | 2 ++ src/core/hle/service/service.cpp | 2 ++ src/core/hle/service/set/set.cpp | 44 ++++++++++++++++++++++++++++++++ src/core/hle/service/set/set.h | 25 ++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 src/core/hle/service/set/set.cpp create mode 100644 src/core/hle/service/set/set.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 4cdfffecbf..be8eb7d8d9 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -139,6 +139,8 @@ add_library(core STATIC hle/service/vi/vi.h hle/service/vi/vi_m.cpp hle/service/vi/vi_m.h + hle/service/set/set.cpp + hle/service/set/set.h hle/shared_page.cpp hle/shared_page.h hw/hw.cpp diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 9a49d9e9c0..082185e8a6 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -29,6 +29,7 @@ #include "core/hle/service/sockets/sockets.h" #include "core/hle/service/time/time.h" #include "core/hle/service/vi/vi.h" +#include "core/hle/service/set/set.h" using Kernel::ClientPort; using Kernel::ServerPort; @@ -178,6 +179,7 @@ void Init() { Sockets::InstallInterfaces(*SM::g_service_manager); Time::InstallInterfaces(*SM::g_service_manager); VI::InstallInterfaces(*SM::g_service_manager); + Set::InstallInterfaces(*SM::g_service_manager); LOG_DEBUG(Service, "initialized OK"); } diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp new file mode 100644 index 0000000000..bcdffd4ee7 --- /dev/null +++ b/src/core/hle/service/set/set.cpp @@ -0,0 +1,44 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include "common/logging/log.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/client_port.h" +#include "core/hle/kernel/client_session.h" +#include "core/hle/service/set/set.h" + +namespace Service { +namespace Set { + +void SET::GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx) { + constexpr u8 data[13] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + }; + + const auto& output_buffer = ctx.BufferDescriptorC()[0]; + + Memory::WriteBlock( output_buffer.Address(), data, sizeof( data ) ); + + IPC::RequestBuilder rb{ ctx, 4 }; + + rb.Push( RESULT_SUCCESS ); + rb.Push( static_cast( sizeof( data ) ) ); + + LOG_WARNING( Service, "(STUBBED) called" ); +} + +SET::SET(const char* name) : ServiceFramework(name) { + static const FunctionInfo functions[] = { + {1, &SET::GetAvailableLanguageCodes, "GetAvailableLanguageCodes"}, + }; + RegisterHandlers(functions); +} + +void InstallInterfaces(SM::ServiceManager& service_manager) { + std::make_shared("set")->InstallAsService(service_manager); +} + +} // namespace Set +} // namespace Service diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h new file mode 100644 index 0000000000..60fb37d882 --- /dev/null +++ b/src/core/hle/service/set/set.h @@ -0,0 +1,25 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Service { +namespace Set { + +class SET final : public ServiceFramework { +public: + explicit SET(const char* name); + ~SET() = default; + +private: + void GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx); +}; + +/// Registers all Time services with the specified service manager. +void InstallInterfaces(SM::ServiceManager& service_manager); + +} // namespace Set +} // namespace Service