// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include "core/hle/service/service.h" namespace Service { namespace FileSystem { class FileSystemController; } // namespace FileSystem namespace NS { enum class FontArchives : u64 { Extension = 0x0100000000000810, Standard = 0x0100000000000811, Korean = 0x0100000000000812, ChineseTraditional = 0x0100000000000813, ChineseSimple = 0x0100000000000814, }; constexpr std::array, 7> SHARED_FONTS{ std::make_pair(FontArchives::Standard, "nintendo_udsg-r_std_003.bfttf"), std::make_pair(FontArchives::ChineseSimple, "nintendo_udsg-r_org_zh-cn_003.bfttf"), std::make_pair(FontArchives::ChineseSimple, "nintendo_udsg-r_ext_zh-cn_003.bfttf"), std::make_pair(FontArchives::ChineseTraditional, "nintendo_udjxh-db_zh-tw_003.bfttf"), std::make_pair(FontArchives::Korean, "nintendo_udsg-r_ko_003.bfttf"), std::make_pair(FontArchives::Extension, "nintendo_ext_003.bfttf"), std::make_pair(FontArchives::Extension, "nintendo_ext2_003.bfttf"), }; void DecryptSharedFontToTTF(const std::vector& input, std::vector& output); void EncryptSharedFont(const std::vector& input, std::vector& output, std::size_t& offset); class PL_U final : public ServiceFramework { public: explicit PL_U(Core::System& system_); ~PL_U() override; private: void RequestLoad(Kernel::HLERequestContext& ctx); void GetLoadState(Kernel::HLERequestContext& ctx); void GetSize(Kernel::HLERequestContext& ctx); void GetSharedMemoryAddressOffset(Kernel::HLERequestContext& ctx); void GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx); void GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx); struct Impl; std::unique_ptr impl; }; } // namespace NS } // namespace Service