5 changed files with 89 additions and 11 deletions
-
2src/core/CMakeLists.txt
-
11src/core/hle/service/mii/mii.cpp
-
9src/core/hle/service/mii/mii_manager.cpp
-
20src/core/hle/service/mii/mii_result.h
-
58src/core/hle/service/mii/mii_util.h
@ -0,0 +1,20 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/result.h" |
|||
|
|||
namespace Service::Mii { |
|||
|
|||
constexpr Result ResultInvalidArgument{ErrorModule::Mii, 1}; |
|||
constexpr Result ResultInvalidArgumentSize{ErrorModule::Mii, 2}; |
|||
constexpr Result ResultNotUpdated{ErrorModule::Mii, 3}; |
|||
constexpr Result ResultNotFound{ErrorModule::Mii, 4}; |
|||
constexpr Result ResultDatabaseFull{ErrorModule::Mii, 5}; |
|||
constexpr Result ResultInvalidCharInfo{ErrorModule::Mii, 100}; |
|||
constexpr Result ResultInvalidStoreData{ErrorModule::Mii, 109}; |
|||
constexpr Result ResultInvalidOperation{ErrorModule::Mii, 202}; |
|||
constexpr Result ResultPermissionDenied{ErrorModule::Mii, 203}; |
|||
|
|||
}; // namespace Service::Mii |
|||
@ -0,0 +1,58 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include <random> |
|||
|
|||
#include "common/common_types.h" |
|||
#include "common/swap.h" |
|||
#include "common/uuid.h" |
|||
#include "core/hle/service/mii/mii_types.h" |
|||
|
|||
namespace Service::Mii { |
|||
class MiiUtil { |
|||
public: |
|||
static u16 CalculateCrc16(const void* data, std::size_t size) { |
|||
s32 crc{}; |
|||
for (std::size_t i = 0; i < size; i++) { |
|||
crc ^= static_cast<const u8*>(data)[i] << 8; |
|||
for (std::size_t j = 0; j < 8; j++) { |
|||
crc <<= 1; |
|||
if ((crc & 0x10000) != 0) { |
|||
crc = (crc ^ 0x1021) & 0xFFFF; |
|||
} |
|||
} |
|||
} |
|||
return Common::swap16(static_cast<u16>(crc)); |
|||
} |
|||
|
|||
static Common::UUID MakeCreateId() { |
|||
return Common::UUID::MakeRandomRFC4122V4(); |
|||
} |
|||
|
|||
static Common::UUID GetDeviceId() { |
|||
// This should be nn::settings::detail::GetMiiAuthorId() |
|||
return Common::UUID::MakeDefault(); |
|||
} |
|||
|
|||
template <typename T> |
|||
static T GetRandomValue(T min, T max) { |
|||
std::random_device device; |
|||
std::mt19937 gen(device()); |
|||
std::uniform_int_distribution<u64> distribution(static_cast<u64>(min), |
|||
static_cast<u64>(max)); |
|||
return static_cast<T>(distribution(gen)); |
|||
} |
|||
|
|||
template <typename T> |
|||
static T GetRandomValue(T max) { |
|||
return GetRandomValue<T>({}, max); |
|||
} |
|||
|
|||
static bool IsFontRegionValid(FontRegion font, std::span<const char16_t> text) { |
|||
// Todo:: This function needs to check against the font tables |
|||
return true; |
|||
} |
|||
}; |
|||
} // namespace Service::Mii |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue