diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | src/core/constants.h | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/address_space_info.cpp | 67 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/address_space_info.h | 29 | ||||
| -rw-r--r-- | src/core/hle/service/mii/manager.cpp | 483 | ||||
| -rw-r--r-- | src/core/hle/service/mii/manager.h | 331 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii.cpp | 315 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.cpp | 420 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.h | 273 | ||||
| -rw-r--r-- | src/core/hle/service/mii/raw_data.cpp | 2261 | ||||
| -rw-r--r-- | src/core/hle/service/mii/raw_data.h | 27 | ||||
| -rw-r--r-- | src/core/hle/service/mii/types.h | 67 | ||||
| -rw-r--r-- | src/video_core/macro/macro.h | 3 | ||||
| -rw-r--r-- | src/video_core/macro/macro_hle.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 718 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_device.cpp | 276 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 423 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 10 |
18 files changed, 4077 insertions, 1637 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index d1f173f42..ff941d505 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -398,10 +398,13 @@ add_library(core STATIC | |||
| 398 | hle/service/lm/manager.h | 398 | hle/service/lm/manager.h |
| 399 | hle/service/mig/mig.cpp | 399 | hle/service/mig/mig.cpp |
| 400 | hle/service/mig/mig.h | 400 | hle/service/mig/mig.h |
| 401 | hle/service/mii/manager.cpp | ||
| 402 | hle/service/mii/manager.h | ||
| 401 | hle/service/mii/mii.cpp | 403 | hle/service/mii/mii.cpp |
| 402 | hle/service/mii/mii.h | 404 | hle/service/mii/mii.h |
| 403 | hle/service/mii/mii_manager.cpp | 405 | hle/service/mii/raw_data.cpp |
| 404 | hle/service/mii/mii_manager.h | 406 | hle/service/mii/raw_data.h |
| 407 | hle/service/mii/types.h | ||
| 405 | hle/service/mm/mm_u.cpp | 408 | hle/service/mm/mm_u.cpp |
| 406 | hle/service/mm/mm_u.h | 409 | hle/service/mm/mm_u.h |
| 407 | hle/service/ncm/ncm.cpp | 410 | hle/service/ncm/ncm.cpp |
diff --git a/src/core/constants.h b/src/core/constants.h index 6d0ec022a..81c5cb279 100644 --- a/src/core/constants.h +++ b/src/core/constants.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 7 | #include "common/common_types.h" | 8 | #include "common/common_types.h" |
| 8 | 9 | ||
| 9 | // This is to consolidate system-wide constants that are used by multiple components of yuzu. | 10 | // This is to consolidate system-wide constants that are used by multiple components of yuzu. |
diff --git a/src/core/hle/kernel/memory/address_space_info.cpp b/src/core/hle/kernel/memory/address_space_info.cpp index a523a2502..e4288cab4 100644 --- a/src/core/hle/kernel/memory/address_space_info.cpp +++ b/src/core/hle/kernel/memory/address_space_info.cpp | |||
| @@ -29,40 +29,39 @@ enum : u64 { | |||
| 29 | 29 | ||
| 30 | // clang-format off | 30 | // clang-format off |
| 31 | constexpr std::array<AddressSpaceInfo, 13> AddressSpaceInfos{{ | 31 | constexpr std::array<AddressSpaceInfo, 13> AddressSpaceInfos{{ |
| 32 | { 32 /*bit_width*/, Size_2_MB /*addr*/, Size_1_GB - Size_2_MB /*size*/, AddressSpaceInfo::Type::Is32Bit, }, | 32 | { .bit_width = 32, .address = Size_2_MB , .size = Size_1_GB - Size_2_MB , .type = AddressSpaceInfo::Type::Is32Bit, }, |
| 33 | { 32 /*bit_width*/, Size_1_GB /*addr*/, Size_4_GB - Size_1_GB /*size*/, AddressSpaceInfo::Type::Small64Bit, }, | 33 | { .bit_width = 32, .address = Size_1_GB , .size = Size_4_GB - Size_1_GB , .type = AddressSpaceInfo::Type::Small64Bit, }, |
| 34 | { 32 /*bit_width*/, Invalid /*addr*/, Size_1_GB /*size*/, AddressSpaceInfo::Type::Heap, }, | 34 | { .bit_width = 32, .address = Invalid , .size = Size_1_GB , .type = AddressSpaceInfo::Type::Heap, }, |
| 35 | { 32 /*bit_width*/, Invalid /*addr*/, Size_1_GB /*size*/, AddressSpaceInfo::Type::Alias, }, | 35 | { .bit_width = 32, .address = Invalid , .size = Size_1_GB , .type = AddressSpaceInfo::Type::Alias, }, |
| 36 | { 36 /*bit_width*/, Size_128_MB /*addr*/, Size_2_GB - Size_128_MB /*size*/, AddressSpaceInfo::Type::Is32Bit, }, | 36 | { .bit_width = 36, .address = Size_128_MB, .size = Size_2_GB - Size_128_MB, .type = AddressSpaceInfo::Type::Is32Bit, }, |
| 37 | { 36 /*bit_width*/, Size_2_GB /*addr*/, Size_64_GB - Size_2_GB /*size*/, AddressSpaceInfo::Type::Small64Bit, }, | 37 | { .bit_width = 36, .address = Size_2_GB , .size = Size_64_GB - Size_2_GB , .type = AddressSpaceInfo::Type::Small64Bit, }, |
| 38 | { 36 /*bit_width*/, Invalid /*addr*/, Size_6_GB /*size*/, AddressSpaceInfo::Type::Heap, }, | 38 | { .bit_width = 36, .address = Invalid , .size = Size_6_GB , .type = AddressSpaceInfo::Type::Heap, }, |
| 39 | { 36 /*bit_width*/, Invalid /*addr*/, Size_6_GB /*size*/, AddressSpaceInfo::Type::Alias, }, | 39 | { .bit_width = 36, .address = Invalid , .size = Size_6_GB , .type = AddressSpaceInfo::Type::Alias, }, |
| 40 | { 39 /*bit_width*/, Size_128_MB /*addr*/, Size_512_GB - Size_128_MB /*size*/, AddressSpaceInfo::Type::Large64Bit, }, | 40 | { .bit_width = 39, .address = Size_128_MB, .size = Size_512_GB - Size_128_MB, .type = AddressSpaceInfo::Type::Large64Bit, }, |
| 41 | { 39 /*bit_width*/, Invalid /*addr*/, Size_64_GB /*size*/, AddressSpaceInfo::Type::Is32Bit }, | 41 | { .bit_width = 39, .address = Invalid , .size = Size_64_GB , .type = AddressSpaceInfo::Type::Is32Bit }, |
| 42 | { 39 /*bit_width*/, Invalid /*addr*/, Size_6_GB /*size*/, AddressSpaceInfo::Type::Heap, }, | 42 | { .bit_width = 39, .address = Invalid , .size = Size_6_GB , .type = AddressSpaceInfo::Type::Heap, }, |
| 43 | { 39 /*bit_width*/, Invalid /*addr*/, Size_64_GB /*size*/, AddressSpaceInfo::Type::Alias, }, | 43 | { .bit_width = 39, .address = Invalid , .size = Size_64_GB , .type = AddressSpaceInfo::Type::Alias, }, |
| 44 | { 39 /*bit_width*/, Invalid /*addr*/, Size_2_GB /*size*/, AddressSpaceInfo::Type::Stack, }, | 44 | { .bit_width = 39, .address = Invalid , .size = Size_2_GB , .type = AddressSpaceInfo::Type::Stack, }, |
| 45 | }}; | 45 | }}; |
| 46 | // clang-format on | 46 | // clang-format on |
| 47 | 47 | ||
| 48 | constexpr bool IsAllowedIndexForAddress(std::size_t index) { | 48 | constexpr bool IsAllowedIndexForAddress(std::size_t index) { |
| 49 | return index < std::size(AddressSpaceInfos) && AddressSpaceInfos[index].GetAddress() != Invalid; | 49 | return index < AddressSpaceInfos.size() && AddressSpaceInfos[index].address != Invalid; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | constexpr std::array<std::size_t, static_cast<std::size_t>(AddressSpaceInfo::Type::Count)> | 52 | using IndexArray = std::array<std::size_t, static_cast<std::size_t>(AddressSpaceInfo::Type::Count)>; |
| 53 | AddressSpaceIndices32Bit{ | ||
| 54 | 0, 1, 0, 2, 0, 3, | ||
| 55 | }; | ||
| 56 | 53 | ||
| 57 | constexpr std::array<std::size_t, static_cast<std::size_t>(AddressSpaceInfo::Type::Count)> | 54 | constexpr IndexArray AddressSpaceIndices32Bit{ |
| 58 | AddressSpaceIndices36Bit{ | 55 | 0, 1, 0, 2, 0, 3, |
| 59 | 4, 5, 4, 6, 4, 7, | 56 | }; |
| 60 | }; | 57 | |
| 58 | constexpr IndexArray AddressSpaceIndices36Bit{ | ||
| 59 | 4, 5, 4, 6, 4, 7, | ||
| 60 | }; | ||
| 61 | 61 | ||
| 62 | constexpr std::array<std::size_t, static_cast<std::size_t>(AddressSpaceInfo::Type::Count)> | 62 | constexpr IndexArray AddressSpaceIndices39Bit{ |
| 63 | AddressSpaceIndices39Bit{ | 63 | 9, 8, 8, 10, 12, 11, |
| 64 | 9, 8, 8, 10, 12, 11, | 64 | }; |
| 65 | }; | ||
| 66 | 65 | ||
| 67 | constexpr bool IsAllowed32BitType(AddressSpaceInfo::Type type) { | 66 | constexpr bool IsAllowed32BitType(AddressSpaceInfo::Type type) { |
| 68 | return type < AddressSpaceInfo::Type::Count && type != AddressSpaceInfo::Type::Large64Bit && | 67 | return type < AddressSpaceInfo::Type::Count && type != AddressSpaceInfo::Type::Large64Bit && |
| @@ -80,37 +79,37 @@ constexpr bool IsAllowed39BitType(AddressSpaceInfo::Type type) { | |||
| 80 | 79 | ||
| 81 | } // namespace | 80 | } // namespace |
| 82 | 81 | ||
| 83 | u64 AddressSpaceInfo::GetAddressSpaceStart(std::size_t width, AddressSpaceInfo::Type type) { | 82 | u64 AddressSpaceInfo::GetAddressSpaceStart(std::size_t width, Type type) { |
| 84 | const std::size_t index{static_cast<std::size_t>(type)}; | 83 | const std::size_t index{static_cast<std::size_t>(type)}; |
| 85 | switch (width) { | 84 | switch (width) { |
| 86 | case 32: | 85 | case 32: |
| 87 | ASSERT(IsAllowed32BitType(type)); | 86 | ASSERT(IsAllowed32BitType(type)); |
| 88 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices32Bit[index])); | 87 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices32Bit[index])); |
| 89 | return AddressSpaceInfos[AddressSpaceIndices32Bit[index]].GetAddress(); | 88 | return AddressSpaceInfos[AddressSpaceIndices32Bit[index]].address; |
| 90 | case 36: | 89 | case 36: |
| 91 | ASSERT(IsAllowed36BitType(type)); | 90 | ASSERT(IsAllowed36BitType(type)); |
| 92 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices36Bit[index])); | 91 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices36Bit[index])); |
| 93 | return AddressSpaceInfos[AddressSpaceIndices36Bit[index]].GetAddress(); | 92 | return AddressSpaceInfos[AddressSpaceIndices36Bit[index]].address; |
| 94 | case 39: | 93 | case 39: |
| 95 | ASSERT(IsAllowed39BitType(type)); | 94 | ASSERT(IsAllowed39BitType(type)); |
| 96 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices39Bit[index])); | 95 | ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices39Bit[index])); |
| 97 | return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].GetAddress(); | 96 | return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].address; |
| 98 | } | 97 | } |
| 99 | UNREACHABLE(); | 98 | UNREACHABLE(); |
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | std::size_t AddressSpaceInfo::GetAddressSpaceSize(std::size_t width, AddressSpaceInfo::Type type) { | 101 | std::size_t AddressSpaceInfo::GetAddressSpaceSize(std::size_t width, Type type) { |
| 103 | const std::size_t index{static_cast<std::size_t>(type)}; | 102 | const std::size_t index{static_cast<std::size_t>(type)}; |
| 104 | switch (width) { | 103 | switch (width) { |
| 105 | case 32: | 104 | case 32: |
| 106 | ASSERT(IsAllowed32BitType(type)); | 105 | ASSERT(IsAllowed32BitType(type)); |
| 107 | return AddressSpaceInfos[AddressSpaceIndices32Bit[index]].GetSize(); | 106 | return AddressSpaceInfos[AddressSpaceIndices32Bit[index]].size; |
| 108 | case 36: | 107 | case 36: |
| 109 | ASSERT(IsAllowed36BitType(type)); | 108 | ASSERT(IsAllowed36BitType(type)); |
| 110 | return AddressSpaceInfos[AddressSpaceIndices36Bit[index]].GetSize(); | 109 | return AddressSpaceInfos[AddressSpaceIndices36Bit[index]].size; |
| 111 | case 39: | 110 | case 39: |
| 112 | ASSERT(IsAllowed39BitType(type)); | 111 | ASSERT(IsAllowed39BitType(type)); |
| 113 | return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].GetSize(); | 112 | return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].size; |
| 114 | } | 113 | } |
| 115 | UNREACHABLE(); | 114 | UNREACHABLE(); |
| 116 | } | 115 | } |
diff --git a/src/core/hle/kernel/memory/address_space_info.h b/src/core/hle/kernel/memory/address_space_info.h index c479890be..a4e6e91e5 100644 --- a/src/core/hle/kernel/memory/address_space_info.h +++ b/src/core/hle/kernel/memory/address_space_info.h | |||
| @@ -11,8 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | namespace Kernel::Memory { | 12 | namespace Kernel::Memory { |
| 13 | 13 | ||
| 14 | class AddressSpaceInfo final : NonCopyable { | 14 | struct AddressSpaceInfo final { |
| 15 | public: | ||
| 16 | enum class Type : u32 { | 15 | enum class Type : u32 { |
| 17 | Is32Bit = 0, | 16 | Is32Bit = 0, |
| 18 | Small64Bit = 1, | 17 | Small64Bit = 1, |
| @@ -23,31 +22,13 @@ public: | |||
| 23 | Count, | 22 | Count, |
| 24 | }; | 23 | }; |
| 25 | 24 | ||
| 26 | private: | ||
| 27 | std::size_t bit_width{}; | ||
| 28 | std::size_t addr{}; | ||
| 29 | std::size_t size{}; | ||
| 30 | Type type{}; | ||
| 31 | |||
| 32 | public: | ||
| 33 | static u64 GetAddressSpaceStart(std::size_t width, Type type); | 25 | static u64 GetAddressSpaceStart(std::size_t width, Type type); |
| 34 | static std::size_t GetAddressSpaceSize(std::size_t width, Type type); | 26 | static std::size_t GetAddressSpaceSize(std::size_t width, Type type); |
| 35 | 27 | ||
| 36 | constexpr AddressSpaceInfo(std::size_t bit_width, std::size_t addr, std::size_t size, Type type) | 28 | const std::size_t bit_width{}; |
| 37 | : bit_width{bit_width}, addr{addr}, size{size}, type{type} {} | 29 | const std::size_t address{}; |
| 38 | 30 | const std::size_t size{}; | |
| 39 | constexpr std::size_t GetWidth() const { | 31 | const Type type{}; |
| 40 | return bit_width; | ||
| 41 | } | ||
| 42 | constexpr std::size_t GetAddress() const { | ||
| 43 | return addr; | ||
| 44 | } | ||
| 45 | constexpr std::size_t GetSize() const { | ||
| 46 | return size; | ||
| 47 | } | ||
| 48 | constexpr Type GetType() const { | ||
| 49 | return type; | ||
| 50 | } | ||
| 51 | }; | 32 | }; |
| 52 | 33 | ||
| 53 | } // namespace Kernel::Memory | 34 | } // namespace Kernel::Memory |
diff --git a/src/core/hle/service/mii/manager.cpp b/src/core/hle/service/mii/manager.cpp new file mode 100644 index 000000000..4a1d1182e --- /dev/null +++ b/src/core/hle/service/mii/manager.cpp | |||
| @@ -0,0 +1,483 @@ | |||
| 1 | // Copyright 2020 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <cstring> | ||
| 6 | #include <random> | ||
| 7 | |||
| 8 | #include "common/assert.h" | ||
| 9 | #include "common/file_util.h" | ||
| 10 | #include "common/logging/log.h" | ||
| 11 | #include "common/string_util.h" | ||
| 12 | |||
| 13 | #include "core/hle/service/acc/profile_manager.h" | ||
| 14 | #include "core/hle/service/mii/manager.h" | ||
| 15 | #include "core/hle/service/mii/raw_data.h" | ||
| 16 | #include "core/hle/service/mii/types.h" | ||
| 17 | |||
| 18 | namespace Service::Mii { | ||
| 19 | |||
| 20 | namespace { | ||
| 21 | |||
| 22 | constexpr ResultCode ERROR_CANNOT_FIND_ENTRY{ErrorModule::Mii, 4}; | ||
| 23 | |||
| 24 | constexpr std::size_t DefaultMiiCount{sizeof(RawData::DefaultMii) / sizeof(DefaultMii)}; | ||
| 25 | |||
| 26 | constexpr MiiStoreData::Name DefaultMiiName{u'y', u'u', u'z', u'u'}; | ||
| 27 | constexpr std::array<u8, 8> HairColorLookup{8, 1, 2, 3, 4, 5, 6, 7}; | ||
| 28 | constexpr std::array<u8, 6> EyeColorLookup{8, 9, 10, 11, 12, 13}; | ||
| 29 | constexpr std::array<u8, 5> MouthColorLookup{19, 20, 21, 22, 23}; | ||
| 30 | constexpr std::array<u8, 7> GlassesColorLookup{8, 14, 15, 16, 17, 18, 0}; | ||
| 31 | constexpr std::array<u8, 62> EyeRotateLookup{ | ||
| 32 | {0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, | ||
| 33 | 0x04, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, | ||
| 34 | 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, | ||
| 35 | 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04}}; | ||
| 36 | constexpr std::array<u8, 24> EyebrowRotateLookup{{0x06, 0x06, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07, | ||
| 37 | 0x04, 0x07, 0x06, 0x08, 0x05, 0x05, 0x06, 0x06, | ||
| 38 | 0x07, 0x07, 0x06, 0x06, 0x05, 0x06, 0x07, 0x05}}; | ||
| 39 | |||
| 40 | template <typename T, std::size_t SourceArraySize, std::size_t DestArraySize> | ||
| 41 | std::array<T, DestArraySize> ResizeArray(const std::array<T, SourceArraySize>& in) { | ||
| 42 | std::array<T, DestArraySize> out{}; | ||
| 43 | std::memcpy(out.data(), in.data(), sizeof(T) * std::min(SourceArraySize, DestArraySize)); | ||
| 44 | return out; | ||
| 45 | } | ||
| 46 | |||
| 47 | MiiInfo ConvertStoreDataToInfo(const MiiStoreData& data) { | ||
| 48 | MiiStoreBitFields bf; | ||
| 49 | std::memcpy(&bf, data.data.data.data(), sizeof(MiiStoreBitFields)); | ||
| 50 | MiiInfo info{}; | ||
| 51 | info.name = ResizeArray<char16_t, 10, 11>(data.data.name); | ||
| 52 | info.uuid = data.data.uuid; | ||
| 53 | info.font_region = static_cast<u8>(bf.font_region.Value()); | ||
| 54 | info.favorite_color = static_cast<u8>(bf.favorite_color.Value()); | ||
| 55 | info.gender = static_cast<u8>(bf.gender.Value()); | ||
| 56 | info.height = static_cast<u8>(bf.height.Value()); | ||
| 57 | info.build = static_cast<u8>(bf.build.Value()); | ||
| 58 | info.type = static_cast<u8>(bf.type.Value()); | ||
| 59 | info.region_move = static_cast<u8>(bf.region_move.Value()); | ||
| 60 | info.faceline_type = static_cast<u8>(bf.faceline_type.Value()); | ||
| 61 | info.faceline_color = static_cast<u8>(bf.faceline_color.Value()); | ||
| 62 | info.faceline_wrinkle = static_cast<u8>(bf.faceline_wrinkle.Value()); | ||
| 63 | info.faceline_make = static_cast<u8>(bf.faceline_makeup.Value()); | ||
| 64 | info.hair_type = static_cast<u8>(bf.hair_type.Value()); | ||
| 65 | info.hair_color = static_cast<u8>(bf.hair_color.Value()); | ||
| 66 | info.hair_flip = static_cast<u8>(bf.hair_flip.Value()); | ||
| 67 | info.eye_type = static_cast<u8>(bf.eye_type.Value()); | ||
| 68 | info.eye_color = static_cast<u8>(bf.eye_color.Value()); | ||
| 69 | info.eye_scale = static_cast<u8>(bf.eye_scale.Value()); | ||
| 70 | info.eye_aspect = static_cast<u8>(bf.eye_aspect.Value()); | ||
| 71 | info.eye_rotate = static_cast<u8>(bf.eye_rotate.Value()); | ||
| 72 | info.eye_x = static_cast<u8>(bf.eye_x.Value()); | ||
| 73 | info.eye_y = static_cast<u8>(bf.eye_y.Value()); | ||
| 74 | info.eyebrow_type = static_cast<u8>(bf.eyebrow_type.Value()); | ||
| 75 | info.eyebrow_color = static_cast<u8>(bf.eyebrow_color.Value()); | ||
| 76 | info.eyebrow_scale = static_cast<u8>(bf.eyebrow_scale.Value()); | ||
| 77 | info.eyebrow_aspect = static_cast<u8>(bf.eyebrow_aspect.Value()); | ||
| 78 | info.eyebrow_rotate = static_cast<u8>(bf.eyebrow_rotate.Value()); | ||
| 79 | info.eyebrow_x = static_cast<u8>(bf.eyebrow_x.Value()); | ||
| 80 | info.eyebrow_y = static_cast<u8>(bf.eyebrow_y.Value() + 3); | ||
| 81 | info.nose_type = static_cast<u8>(bf.nose_type.Value()); | ||
| 82 | info.nose_scale = static_cast<u8>(bf.nose_scale.Value()); | ||
| 83 | info.nose_y = static_cast<u8>(bf.nose_y.Value()); | ||
| 84 | info.mouth_type = static_cast<u8>(bf.mouth_type.Value()); | ||
| 85 | info.mouth_color = static_cast<u8>(bf.mouth_color.Value()); | ||
| 86 | info.mouth_scale = static_cast<u8>(bf.mouth_scale.Value()); | ||
| 87 | info.mouth_aspect = static_cast<u8>(bf.mouth_aspect.Value()); | ||
| 88 | info.mouth_y = static_cast<u8>(bf.mouth_y.Value()); | ||
| 89 | info.beard_color = static_cast<u8>(bf.beard_color.Value()); | ||
| 90 | info.beard_type = static_cast<u8>(bf.beard_type.Value()); | ||
| 91 | info.mustache_type = static_cast<u8>(bf.mustache_type.Value()); | ||
| 92 | info.mustache_scale = static_cast<u8>(bf.mustache_scale.Value()); | ||
| 93 | info.mustache_y = static_cast<u8>(bf.mustache_y.Value()); | ||
| 94 | info.glasses_type = static_cast<u8>(bf.glasses_type.Value()); | ||
| 95 | info.glasses_color = static_cast<u8>(bf.glasses_color.Value()); | ||
| 96 | info.glasses_scale = static_cast<u8>(bf.glasses_scale.Value()); | ||
| 97 | info.glasses_y = static_cast<u8>(bf.glasses_y.Value()); | ||
| 98 | info.mole_type = static_cast<u8>(bf.mole_type.Value()); | ||
| 99 | info.mole_scale = static_cast<u8>(bf.mole_scale.Value()); | ||
| 100 | info.mole_x = static_cast<u8>(bf.mole_x.Value()); | ||
| 101 | info.mole_y = static_cast<u8>(bf.mole_y.Value()); | ||
| 102 | return info; | ||
| 103 | } | ||
| 104 | |||
| 105 | u16 GenerateCrc16(const void* data, std::size_t size) { | ||
| 106 | s32 crc{}; | ||
| 107 | for (int i = 0; i < size; i++) { | ||
| 108 | crc ^= reinterpret_cast<const u8*>(data)[i] << 8; | ||
| 109 | for (int j = 0; j < 8; j++) { | ||
| 110 | crc <<= 1; | ||
| 111 | if ((crc & 0x10000) != 0) { | ||
| 112 | crc = (crc ^ 0x1021) & 0xFFFF; | ||
| 113 | } | ||
| 114 | } | ||
| 115 | } | ||
| 116 | return Common::swap16(static_cast<u16>(crc)); | ||
| 117 | } | ||
| 118 | |||
| 119 | Common::UUID GenerateValidUUID() { | ||
| 120 | auto uuid{Common::UUID::Generate()}; | ||
| 121 | |||
| 122 | // Bit 7 must be set, and bit 6 unset for the UUID to be valid | ||
| 123 | uuid.uuid[1] &= 0xFFFFFFFFFFFFFF3FULL; | ||
| 124 | uuid.uuid[1] |= 0x0000000000000080ULL; | ||
| 125 | |||
| 126 | return uuid; | ||
| 127 | } | ||
| 128 | |||
| 129 | template <typename T> | ||
| 130 | T GetRandomValue(T min, T max) { | ||
| 131 | std::random_device device; | ||
| 132 | std::mt19937 gen(device()); | ||
| 133 | std::uniform_int_distribution<u64> distribution(0, static_cast<u64>(max)); | ||
| 134 | return static_cast<T>(distribution(gen)); | ||
| 135 | } | ||
| 136 | |||
| 137 | template <typename T> | ||
| 138 | T GetRandomValue(T max) { | ||
| 139 | return GetRandomValue<T>({}, max); | ||
| 140 | } | ||
| 141 | |||
| 142 | template <typename T> | ||
| 143 | T GetArrayValue(const u8* data, std::size_t index) { | ||
| 144 | T result{}; | ||
| 145 | std::memcpy(&result, &data[index * sizeof(T)], sizeof(T)); | ||
| 146 | return result; | ||
| 147 | } | ||
| 148 | |||
| 149 | MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Common::UUID& user_id) { | ||
| 150 | MiiStoreBitFields bf{}; | ||
| 151 | |||
| 152 | if (gender == Gender::All) { | ||
| 153 | gender = GetRandomValue<Gender>(Gender::Maximum); | ||
| 154 | } | ||
| 155 | |||
| 156 | bf.gender.Assign(gender); | ||
| 157 | bf.favorite_color.Assign(GetRandomValue<u8>(11)); | ||
| 158 | bf.region_move.Assign(0); | ||
| 159 | bf.font_region.Assign(FontRegion::Standard); | ||
| 160 | bf.type.Assign(0); | ||
| 161 | bf.height.Assign(64); | ||
| 162 | bf.build.Assign(64); | ||
| 163 | |||
| 164 | if (age == Age::All) { | ||
| 165 | const auto temp{GetRandomValue<int>(10)}; | ||
| 166 | if (temp >= 8) { | ||
| 167 | age = Age::Old; | ||
| 168 | } else if (temp >= 4) { | ||
| 169 | age = Age::Normal; | ||
| 170 | } else { | ||
| 171 | age = Age::Young; | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | if (race == Race::All) { | ||
| 176 | const auto temp{GetRandomValue<int>(10)}; | ||
| 177 | if (temp >= 8) { | ||
| 178 | race = Race::Black; | ||
| 179 | } else if (temp >= 4) { | ||
| 180 | race = Race::White; | ||
| 181 | } else { | ||
| 182 | race = Race::Asian; | ||
| 183 | } | ||
| 184 | } | ||
| 185 | |||
| 186 | u32 axis_y{}; | ||
| 187 | if (gender == Gender::Female && age == Age::Young) { | ||
| 188 | axis_y = GetRandomValue<u32>(3); | ||
| 189 | } | ||
| 190 | |||
| 191 | const std::size_t index{3 * static_cast<std::size_t>(age) + | ||
| 192 | 9 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race)}; | ||
| 193 | |||
| 194 | const auto faceline_type_info{ | ||
| 195 | GetArrayValue<RandomMiiData4>(&RawData::RandomMiiFaceline[0], index)}; | ||
| 196 | const auto faceline_color_info{GetArrayValue<RandomMiiData3>( | ||
| 197 | RawData::RandomMiiFacelineColor.data(), | ||
| 198 | 3 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race))}; | ||
| 199 | const auto faceline_wrinkle_info{ | ||
| 200 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiFacelineWrinkle.data(), index)}; | ||
| 201 | const auto faceline_makeup_info{ | ||
| 202 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiFacelineMakeup.data(), index)}; | ||
| 203 | const auto hair_type_info{ | ||
| 204 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiHairType.data(), index)}; | ||
| 205 | const auto hair_color_info{GetArrayValue<RandomMiiData3>(RawData::RandomMiiHairColor.data(), | ||
| 206 | 3 * static_cast<std::size_t>(race) + | ||
| 207 | static_cast<std::size_t>(age))}; | ||
| 208 | const auto eye_type_info{ | ||
| 209 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiEyeType.data(), index)}; | ||
| 210 | const auto eye_color_info{GetArrayValue<RandomMiiData2>(RawData::RandomMiiEyeColor.data(), | ||
| 211 | static_cast<std::size_t>(race))}; | ||
| 212 | const auto eyebrow_type_info{ | ||
| 213 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiEyebrowType.data(), index)}; | ||
| 214 | const auto nose_type_info{ | ||
| 215 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiNoseType.data(), index)}; | ||
| 216 | const auto mouth_type_info{ | ||
| 217 | GetArrayValue<RandomMiiData4>(RawData::RandomMiiMouthType.data(), index)}; | ||
| 218 | const auto glasses_type_info{GetArrayValue<RandomMiiData2>(RawData::RandomMiiGlassType.data(), | ||
| 219 | static_cast<std::size_t>(age))}; | ||
| 220 | |||
| 221 | bf.faceline_type.Assign( | ||
| 222 | faceline_type_info.values[GetRandomValue<std::size_t>(faceline_type_info.values_count)]); | ||
| 223 | bf.faceline_color.Assign( | ||
| 224 | faceline_color_info.values[GetRandomValue<std::size_t>(faceline_color_info.values_count)]); | ||
| 225 | bf.faceline_wrinkle.Assign( | ||
| 226 | faceline_wrinkle_info | ||
| 227 | .values[GetRandomValue<std::size_t>(faceline_wrinkle_info.values_count)]); | ||
| 228 | bf.faceline_makeup.Assign( | ||
| 229 | faceline_makeup_info | ||
| 230 | .values[GetRandomValue<std::size_t>(faceline_makeup_info.values_count)]); | ||
| 231 | |||
| 232 | bf.hair_type.Assign( | ||
| 233 | hair_type_info.values[GetRandomValue<std::size_t>(hair_type_info.values_count)]); | ||
| 234 | bf.hair_color.Assign( | ||
| 235 | HairColorLookup[hair_color_info | ||
| 236 | .values[GetRandomValue<std::size_t>(hair_color_info.values_count)]]); | ||
| 237 | bf.hair_flip.Assign(GetRandomValue<HairFlip>(HairFlip::Maximum)); | ||
| 238 | |||
| 239 | bf.eye_type.Assign( | ||
| 240 | eye_type_info.values[GetRandomValue<std::size_t>(eye_type_info.values_count)]); | ||
| 241 | |||
| 242 | const auto eye_rotate_1{gender != Gender::Male ? 4 : 2}; | ||
| 243 | const auto eye_rotate_2{gender != Gender::Male ? 3 : 4}; | ||
| 244 | const auto eye_rotate_offset{32 - EyeRotateLookup[eye_rotate_1] + eye_rotate_2}; | ||
| 245 | const auto eye_rotate{32 - EyeRotateLookup[bf.eye_type]}; | ||
| 246 | |||
| 247 | bf.eye_color.Assign( | ||
| 248 | EyeColorLookup[eye_color_info | ||
| 249 | .values[GetRandomValue<std::size_t>(eye_color_info.values_count)]]); | ||
| 250 | bf.eye_scale.Assign(4); | ||
| 251 | bf.eye_aspect.Assign(3); | ||
| 252 | bf.eye_rotate.Assign(eye_rotate_offset - eye_rotate); | ||
| 253 | bf.eye_x.Assign(2); | ||
| 254 | bf.eye_y.Assign(axis_y + 12); | ||
| 255 | |||
| 256 | bf.eyebrow_type.Assign( | ||
| 257 | eyebrow_type_info.values[GetRandomValue<std::size_t>(eyebrow_type_info.values_count)]); | ||
| 258 | |||
| 259 | const auto eyebrow_rotate_1{race == Race::Asian ? 6 : 0}; | ||
| 260 | const auto eyebrow_y{race == Race::Asian ? 9 : 10}; | ||
| 261 | const auto eyebrow_rotate_offset{32 - EyebrowRotateLookup[eyebrow_rotate_1] + 6}; | ||
| 262 | const auto eyebrow_rotate{ | ||
| 263 | 32 - EyebrowRotateLookup[static_cast<std::size_t>(bf.eyebrow_type.Value())]}; | ||
| 264 | |||
| 265 | bf.eyebrow_color.Assign(bf.hair_color); | ||
| 266 | bf.eyebrow_scale.Assign(4); | ||
| 267 | bf.eyebrow_aspect.Assign(3); | ||
| 268 | bf.eyebrow_rotate.Assign(eyebrow_rotate_offset - eyebrow_rotate); | ||
| 269 | bf.eyebrow_x.Assign(2); | ||
| 270 | bf.eyebrow_y.Assign(axis_y + eyebrow_y); | ||
| 271 | |||
| 272 | const auto nose_scale{gender == Gender::Female ? 3 : 4}; | ||
| 273 | |||
| 274 | bf.nose_type.Assign( | ||
| 275 | nose_type_info.values[GetRandomValue<std::size_t>(nose_type_info.values_count)]); | ||
| 276 | bf.nose_scale.Assign(nose_scale); | ||
| 277 | bf.nose_y.Assign(axis_y + 9); | ||
| 278 | |||
| 279 | const auto mouth_color{gender == Gender::Female ? GetRandomValue<int>(4) : 0}; | ||
| 280 | |||
| 281 | bf.mouth_type.Assign( | ||
| 282 | mouth_type_info.values[GetRandomValue<std::size_t>(mouth_type_info.values_count)]); | ||
| 283 | bf.mouth_color.Assign(MouthColorLookup[mouth_color]); | ||
| 284 | bf.mouth_scale.Assign(4); | ||
| 285 | bf.mouth_aspect.Assign(3); | ||
| 286 | bf.mouth_y.Assign(axis_y + 13); | ||
| 287 | |||
| 288 | bf.beard_color.Assign(bf.hair_color); | ||
| 289 | bf.mustache_scale.Assign(4); | ||
| 290 | |||
| 291 | if (gender == Gender::Male && age != Age::Young && GetRandomValue<int>(10) < 2) { | ||
| 292 | const auto mustache_and_beard_flag{ | ||
| 293 | GetRandomValue<BeardAndMustacheFlag>(BeardAndMustacheFlag::All)}; | ||
| 294 | |||
| 295 | auto beard_type{BeardType::None}; | ||
| 296 | auto mustache_type{MustacheType::None}; | ||
| 297 | |||
| 298 | if ((mustache_and_beard_flag & BeardAndMustacheFlag::Beard) == | ||
| 299 | BeardAndMustacheFlag::Beard) { | ||
| 300 | beard_type = GetRandomValue<BeardType>(BeardType::Beard1, BeardType::Beard5); | ||
| 301 | } | ||
| 302 | |||
| 303 | if ((mustache_and_beard_flag & BeardAndMustacheFlag::Mustache) == | ||
| 304 | BeardAndMustacheFlag::Mustache) { | ||
| 305 | mustache_type = | ||
| 306 | GetRandomValue<MustacheType>(MustacheType::Mustache1, MustacheType::Mustache5); | ||
| 307 | } | ||
| 308 | |||
| 309 | bf.mustache_type.Assign(mustache_type); | ||
| 310 | bf.beard_type.Assign(beard_type); | ||
| 311 | bf.mustache_y.Assign(10); | ||
| 312 | } else { | ||
| 313 | bf.mustache_type.Assign(MustacheType::None); | ||
| 314 | bf.beard_type.Assign(BeardType::None); | ||
| 315 | bf.mustache_y.Assign(axis_y + 10); | ||
| 316 | } | ||
| 317 | |||
| 318 | const auto glasses_type_start{GetRandomValue<std::size_t>(100)}; | ||
| 319 | u8 glasses_type{}; | ||
| 320 | while (glasses_type_start < glasses_type_info.values[glasses_type]) { | ||
| 321 | if (++glasses_type >= glasses_type_info.values_count) { | ||
| 322 | UNREACHABLE(); | ||
| 323 | break; | ||
| 324 | } | ||
| 325 | } | ||
| 326 | |||
| 327 | bf.glasses_type.Assign(glasses_type); | ||
| 328 | bf.glasses_color.Assign(GlassesColorLookup[0]); | ||
| 329 | bf.glasses_scale.Assign(4); | ||
| 330 | bf.glasses_y.Assign(axis_y + 10); | ||
| 331 | |||
| 332 | bf.mole_type.Assign(0); | ||
| 333 | bf.mole_scale.Assign(4); | ||
| 334 | bf.mole_x.Assign(2); | ||
| 335 | bf.mole_y.Assign(20); | ||
| 336 | |||
| 337 | return {DefaultMiiName, bf, user_id}; | ||
| 338 | } | ||
| 339 | |||
| 340 | MiiStoreData BuildDefaultStoreData(const DefaultMii& info, const Common::UUID& user_id) { | ||
| 341 | MiiStoreBitFields bf{}; | ||
| 342 | |||
| 343 | bf.font_region.Assign(info.font_region); | ||
| 344 | bf.favorite_color.Assign(info.favorite_color); | ||
| 345 | bf.gender.Assign(info.gender); | ||
| 346 | bf.height.Assign(info.height); | ||
| 347 | bf.build.Assign(info.weight); | ||
| 348 | bf.type.Assign(info.type); | ||
| 349 | bf.region_move.Assign(info.region); | ||
| 350 | bf.faceline_type.Assign(info.face_type); | ||
| 351 | bf.faceline_color.Assign(info.face_color); | ||
| 352 | bf.faceline_wrinkle.Assign(info.face_wrinkle); | ||
| 353 | bf.faceline_makeup.Assign(info.face_makeup); | ||
| 354 | bf.hair_type.Assign(info.hair_type); | ||
| 355 | bf.hair_color.Assign(HairColorLookup[info.hair_color]); | ||
| 356 | bf.hair_flip.Assign(static_cast<HairFlip>(info.hair_flip)); | ||
| 357 | bf.eye_type.Assign(info.eye_type); | ||
| 358 | bf.eye_color.Assign(EyeColorLookup[info.eye_color]); | ||
| 359 | bf.eye_scale.Assign(info.eye_scale); | ||
| 360 | bf.eye_aspect.Assign(info.eye_aspect); | ||
| 361 | bf.eye_rotate.Assign(info.eye_rotate); | ||
| 362 | bf.eye_x.Assign(info.eye_x); | ||
| 363 | bf.eye_y.Assign(info.eye_y); | ||
| 364 | bf.eyebrow_type.Assign(info.eyebrow_type); | ||
| 365 | bf.eyebrow_color.Assign(HairColorLookup[info.eyebrow_color]); | ||
| 366 | bf.eyebrow_scale.Assign(info.eyebrow_scale); | ||
| 367 | bf.eyebrow_aspect.Assign(info.eyebrow_aspect); | ||
| 368 | bf.eyebrow_rotate.Assign(info.eyebrow_rotate); | ||
| 369 | bf.eyebrow_x.Assign(info.eyebrow_x); | ||
| 370 | bf.eyebrow_y.Assign(info.eyebrow_y - 3); | ||
| 371 | bf.nose_type.Assign(info.nose_type); | ||
| 372 | bf.nose_scale.Assign(info.nose_scale); | ||
| 373 | bf.nose_y.Assign(info.nose_y); | ||
| 374 | bf.mouth_type.Assign(info.mouth_type); | ||
| 375 | bf.mouth_color.Assign(MouthColorLookup[info.mouth_color]); | ||
| 376 | bf.mouth_scale.Assign(info.mouth_scale); | ||
| 377 | bf.mouth_aspect.Assign(info.mouth_aspect); | ||
| 378 | bf.mouth_y.Assign(info.mouth_y); | ||
| 379 | bf.beard_color.Assign(HairColorLookup[info.beard_color]); | ||
| 380 | bf.beard_type.Assign(static_cast<BeardType>(info.beard_type)); | ||
| 381 | bf.mustache_type.Assign(static_cast<MustacheType>(info.mustache_type)); | ||
| 382 | bf.mustache_scale.Assign(info.mustache_scale); | ||
| 383 | bf.mustache_y.Assign(info.mustache_y); | ||
| 384 | bf.glasses_type.Assign(info.glasses_type); | ||
| 385 | bf.glasses_color.Assign(GlassesColorLookup[info.glasses_color]); | ||
| 386 | bf.glasses_scale.Assign(info.glasses_scale); | ||
| 387 | bf.glasses_y.Assign(info.glasses_y); | ||
| 388 | bf.mole_type.Assign(info.mole_type); | ||
| 389 | bf.mole_scale.Assign(info.mole_scale); | ||
| 390 | bf.mole_x.Assign(info.mole_x); | ||
| 391 | bf.mole_y.Assign(info.mole_y); | ||
| 392 | |||
| 393 | return {DefaultMiiName, bf, user_id}; | ||
| 394 | } | ||
| 395 | |||
| 396 | } // namespace | ||
| 397 | |||
| 398 | MiiStoreData::MiiStoreData() = default; | ||
| 399 | |||
| 400 | MiiStoreData::MiiStoreData(const MiiStoreData::Name& name, const MiiStoreBitFields& bit_fields, | ||
| 401 | const Common::UUID& user_id) { | ||
| 402 | data.name = name; | ||
| 403 | data.uuid = GenerateValidUUID(); | ||
| 404 | |||
| 405 | std::memcpy(data.data.data(), &bit_fields, sizeof(MiiStoreBitFields)); | ||
| 406 | data_crc = GenerateCrc16(data.data.data(), sizeof(data)); | ||
| 407 | device_crc = GenerateCrc16(&user_id, sizeof(Common::UUID)); | ||
| 408 | } | ||
| 409 | |||
| 410 | MiiManager::MiiManager() : user_id{Service::Account::ProfileManager().GetLastOpenedUser()} {} | ||
| 411 | |||
| 412 | bool MiiManager::CheckAndResetUpdateCounter(SourceFlag source_flag, u64& current_update_counter) { | ||
| 413 | if ((source_flag & SourceFlag::Database) == SourceFlag::None) { | ||
| 414 | return false; | ||
| 415 | } | ||
| 416 | |||
| 417 | const bool result{current_update_counter != update_counter}; | ||
| 418 | |||
| 419 | current_update_counter = update_counter; | ||
| 420 | |||
| 421 | return result; | ||
| 422 | } | ||
| 423 | |||
| 424 | bool MiiManager::IsFullDatabase() const { | ||
| 425 | // TODO(bunnei): We don't implement the Mii database, so it cannot be full | ||
| 426 | return false; | ||
| 427 | } | ||
| 428 | |||
| 429 | u32 MiiManager::GetCount(SourceFlag source_flag) const { | ||
| 430 | u32 count{}; | ||
| 431 | if ((source_flag & SourceFlag::Database) != SourceFlag::None) { | ||
| 432 | // TODO(bunnei): We don't implement the Mii database, but when we do, update this | ||
| 433 | count += 0; | ||
| 434 | } | ||
| 435 | if ((source_flag & SourceFlag::Default) != SourceFlag::None) { | ||
| 436 | count += DefaultMiiCount; | ||
| 437 | } | ||
| 438 | return count; | ||
| 439 | } | ||
| 440 | |||
| 441 | ResultVal<MiiInfo> MiiManager::UpdateLatest([[maybe_unused]] const MiiInfo& info, | ||
| 442 | SourceFlag source_flag) { | ||
| 443 | if ((source_flag & SourceFlag::Database) == SourceFlag::None) { | ||
| 444 | return ERROR_CANNOT_FIND_ENTRY; | ||
| 445 | } | ||
| 446 | |||
| 447 | // TODO(bunnei): We don't implement the Mii database, so we can't have an entry | ||
| 448 | return ERROR_CANNOT_FIND_ENTRY; | ||
| 449 | } | ||
| 450 | |||
| 451 | MiiInfo MiiManager::BuildRandom(Age age, Gender gender, Race race) { | ||
| 452 | return ConvertStoreDataToInfo(BuildRandomStoreData(age, gender, race, user_id)); | ||
| 453 | } | ||
| 454 | |||
| 455 | MiiInfo MiiManager::BuildDefault(std::size_t index) { | ||
| 456 | return ConvertStoreDataToInfo(BuildDefaultStoreData( | ||
| 457 | GetArrayValue<DefaultMii>(RawData::DefaultMii.data(), index), user_id)); | ||
| 458 | } | ||
| 459 | |||
| 460 | ResultVal<std::vector<MiiInfoElement>> MiiManager::GetDefault(SourceFlag source_flag) { | ||
| 461 | std::vector<MiiInfoElement> result; | ||
| 462 | |||
| 463 | if ((source_flag & SourceFlag::Default) == SourceFlag::None) { | ||
| 464 | return MakeResult(std::move(result)); | ||
| 465 | } | ||
| 466 | |||
| 467 | for (std::size_t index = 0; index < DefaultMiiCount; index++) { | ||
| 468 | result.emplace_back(BuildDefault(index), Source::Default); | ||
| 469 | } | ||
| 470 | |||
| 471 | return MakeResult(std::move(result)); | ||
| 472 | } | ||
| 473 | |||
| 474 | ResultCode MiiManager::GetIndex([[maybe_unused]] const MiiInfo& info, u32& index) { | ||
| 475 | constexpr u32 INVALID_INDEX{0xFFFFFFFF}; | ||
| 476 | |||
| 477 | index = INVALID_INDEX; | ||
| 478 | |||
| 479 | // TODO(bunnei): We don't implement the Mii database, so we can't have an index | ||
| 480 | return ERROR_CANNOT_FIND_ENTRY; | ||
| 481 | } | ||
| 482 | |||
| 483 | } // namespace Service::Mii | ||
diff --git a/src/core/hle/service/mii/manager.h b/src/core/hle/service/mii/manager.h new file mode 100644 index 000000000..927451dea --- /dev/null +++ b/src/core/hle/service/mii/manager.h | |||
| @@ -0,0 +1,331 @@ | |||
| 1 | // Copyright 2020 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/bit_field.h" | ||
| 8 | #include "common/common_funcs.h" | ||
| 9 | #include "common/uuid.h" | ||
| 10 | #include "core/hle/result.h" | ||
| 11 | #include "core/hle/service/mii/types.h" | ||
| 12 | |||
| 13 | namespace Service::Mii { | ||
| 14 | |||
| 15 | enum class Source : u32 { | ||
| 16 | Database = 0, | ||
| 17 | Default = 1, | ||
| 18 | Account = 2, | ||
| 19 | Friend = 3, | ||
| 20 | }; | ||
| 21 | |||
| 22 | enum class SourceFlag : u32 { | ||
| 23 | None = 0, | ||
| 24 | Database = 1 << 0, | ||
| 25 | Default = 1 << 1, | ||
| 26 | }; | ||
| 27 | DECLARE_ENUM_FLAG_OPERATORS(SourceFlag); | ||
| 28 | |||
| 29 | struct MiiInfo { | ||
| 30 | Common::UUID uuid{Common::INVALID_UUID}; | ||
| 31 | std::array<char16_t, 11> name{}; | ||
| 32 | u8 font_region{}; | ||
| 33 | u8 favorite_color{}; | ||
| 34 | u8 gender{}; | ||
| 35 | u8 height{}; | ||
| 36 | u8 build{}; | ||
| 37 | u8 type{}; | ||
| 38 | u8 region_move{}; | ||
| 39 | u8 faceline_type{}; | ||
| 40 | u8 faceline_color{}; | ||
| 41 | u8 faceline_wrinkle{}; | ||
| 42 | u8 faceline_make{}; | ||
| 43 | u8 hair_type{}; | ||
| 44 | u8 hair_color{}; | ||
| 45 | u8 hair_flip{}; | ||
| 46 | u8 eye_type{}; | ||
| 47 | u8 eye_color{}; | ||
| 48 | u8 eye_scale{}; | ||
| 49 | u8 eye_aspect{}; | ||
| 50 | u8 eye_rotate{}; | ||
| 51 | u8 eye_x{}; | ||
| 52 | u8 eye_y{}; | ||
| 53 | u8 eyebrow_type{}; | ||
| 54 | u8 eyebrow_color{}; | ||
| 55 | u8 eyebrow_scale{}; | ||
| 56 | u8 eyebrow_aspect{}; | ||
| 57 | u8 eyebrow_rotate{}; | ||
| 58 | u8 eyebrow_x{}; | ||
| 59 | u8 eyebrow_y{}; | ||
| 60 | u8 nose_type{}; | ||
| 61 | u8 nose_scale{}; | ||
| 62 | u8 nose_y{}; | ||
| 63 | u8 mouth_type{}; | ||
| 64 | u8 mouth_color{}; | ||
| 65 | u8 mouth_scale{}; | ||
| 66 | u8 mouth_aspect{}; | ||
| 67 | u8 mouth_y{}; | ||
| 68 | u8 beard_color{}; | ||
| 69 | u8 beard_type{}; | ||
| 70 | u8 mustache_type{}; | ||
| 71 | u8 mustache_scale{}; | ||
| 72 | u8 mustache_y{}; | ||
| 73 | u8 glasses_type{}; | ||
| 74 | u8 glasses_color{}; | ||
| 75 | u8 glasses_scale{}; | ||
| 76 | u8 glasses_y{}; | ||
| 77 | u8 mole_type{}; | ||
| 78 | u8 mole_scale{}; | ||
| 79 | u8 mole_x{}; | ||
| 80 | u8 mole_y{}; | ||
| 81 | INSERT_PADDING_BYTES(1); | ||
| 82 | |||
| 83 | std::u16string Name() const; | ||
| 84 | }; | ||
| 85 | static_assert(sizeof(MiiInfo) == 0x58, "MiiInfo has incorrect size."); | ||
| 86 | static_assert(std::has_unique_object_representations_v<MiiInfo>, | ||
| 87 | "All bits of MiiInfo must contribute to its value."); | ||
| 88 | |||
| 89 | #pragma pack(push, 4) | ||
| 90 | |||
| 91 | struct MiiInfoElement { | ||
| 92 | MiiInfoElement(const MiiInfo& info, Source source) : info{info}, source{source} {} | ||
| 93 | |||
| 94 | MiiInfo info{}; | ||
| 95 | Source source{}; | ||
| 96 | }; | ||
| 97 | static_assert(sizeof(MiiInfoElement) == 0x5c, "MiiInfoElement has incorrect size."); | ||
| 98 | |||
| 99 | struct MiiStoreBitFields { | ||
| 100 | union { | ||
| 101 | u32 word_0{}; | ||
| 102 | |||
| 103 | BitField<0, 8, u32> hair_type; | ||
| 104 | BitField<8, 7, u32> height; | ||
| 105 | BitField<15, 1, u32> mole_type; | ||
| 106 | BitField<16, 7, u32> build; | ||
| 107 | BitField<23, 1, HairFlip> hair_flip; | ||
| 108 | BitField<24, 7, u32> hair_color; | ||
| 109 | BitField<31, 1, u32> type; | ||
| 110 | }; | ||
| 111 | |||
| 112 | union { | ||
| 113 | u32 word_1{}; | ||
| 114 | |||
| 115 | BitField<0, 7, u32> eye_color; | ||
| 116 | BitField<7, 1, Gender> gender; | ||
| 117 | BitField<8, 7, u32> eyebrow_color; | ||
| 118 | BitField<16, 7, u32> mouth_color; | ||
| 119 | BitField<24, 7, u32> beard_color; | ||
| 120 | }; | ||
| 121 | |||
| 122 | union { | ||
| 123 | u32 word_2{}; | ||
| 124 | |||
| 125 | BitField<0, 7, u32> glasses_color; | ||
| 126 | BitField<8, 6, u32> eye_type; | ||
| 127 | BitField<14, 2, u32> region_move; | ||
| 128 | BitField<16, 6, u32> mouth_type; | ||
| 129 | BitField<22, 2, FontRegion> font_region; | ||
| 130 | BitField<24, 5, u32> eye_y; | ||
| 131 | BitField<29, 3, u32> glasses_scale; | ||
| 132 | }; | ||
| 133 | |||
| 134 | union { | ||
| 135 | u32 word_3{}; | ||
| 136 | |||
| 137 | BitField<0, 5, u32> eyebrow_type; | ||
| 138 | BitField<5, 3, MustacheType> mustache_type; | ||
| 139 | BitField<8, 5, u32> nose_type; | ||
| 140 | BitField<13, 3, BeardType> beard_type; | ||
| 141 | BitField<16, 5, u32> nose_y; | ||
| 142 | BitField<21, 3, u32> mouth_aspect; | ||
| 143 | BitField<24, 5, u32> mouth_y; | ||
| 144 | BitField<29, 3, u32> eyebrow_aspect; | ||
| 145 | }; | ||
| 146 | |||
| 147 | union { | ||
| 148 | u32 word_4{}; | ||
| 149 | |||
| 150 | BitField<0, 5, u32> mustache_y; | ||
| 151 | BitField<5, 3, u32> eye_rotate; | ||
| 152 | BitField<8, 5, u32> glasses_y; | ||
| 153 | BitField<13, 3, u32> eye_aspect; | ||
| 154 | BitField<16, 5, u32> mole_x; | ||
| 155 | BitField<21, 3, u32> eye_scale; | ||
| 156 | BitField<24, 5, u32> mole_y; | ||
| 157 | }; | ||
| 158 | |||
| 159 | union { | ||
| 160 | u32 word_5{}; | ||
| 161 | |||
| 162 | BitField<0, 5, u32> glasses_type; | ||
| 163 | BitField<8, 4, u32> favorite_color; | ||
| 164 | BitField<12, 4, u32> faceline_type; | ||
| 165 | BitField<16, 4, u32> faceline_color; | ||
| 166 | BitField<20, 4, u32> faceline_wrinkle; | ||
| 167 | BitField<24, 4, u32> faceline_makeup; | ||
| 168 | BitField<28, 4, u32> eye_x; | ||
| 169 | }; | ||
| 170 | |||
| 171 | union { | ||
| 172 | u32 word_6{}; | ||
| 173 | |||
| 174 | BitField<0, 4, u32> eyebrow_scale; | ||
| 175 | BitField<4, 4, u32> eyebrow_rotate; | ||
| 176 | BitField<8, 4, u32> eyebrow_x; | ||
| 177 | BitField<12, 4, u32> eyebrow_y; | ||
| 178 | BitField<16, 4, u32> nose_scale; | ||
| 179 | BitField<20, 4, u32> mouth_scale; | ||
| 180 | BitField<24, 4, u32> mustache_scale; | ||
| 181 | BitField<28, 4, u32> mole_scale; | ||
| 182 | }; | ||
| 183 | }; | ||
| 184 | static_assert(sizeof(MiiStoreBitFields) == 0x1c, "MiiStoreBitFields has incorrect size."); | ||
| 185 | static_assert(std::is_trivially_copyable_v<MiiStoreBitFields>, | ||
| 186 | "MiiStoreBitFields is not trivially copyable."); | ||
| 187 | |||
| 188 | struct MiiStoreData { | ||
| 189 | using Name = std::array<char16_t, 10>; | ||
| 190 | |||
| 191 | MiiStoreData(); | ||
| 192 | MiiStoreData(const Name& name, const MiiStoreBitFields& bit_fields, | ||
| 193 | const Common::UUID& user_id); | ||
| 194 | |||
| 195 | // This corresponds to the above structure MiiStoreBitFields. I did it like this because the | ||
| 196 | // BitField<> type makes this (and any thing that contains it) not trivially copyable, which is | ||
| 197 | // not suitable for our uses. | ||
| 198 | struct { | ||
| 199 | std::array<u8, 0x1C> data{}; | ||
| 200 | static_assert(sizeof(MiiStoreBitFields) == sizeof(data), "data field has incorrect size."); | ||
| 201 | |||
| 202 | Name name{}; | ||
| 203 | Common::UUID uuid{Common::INVALID_UUID}; | ||
| 204 | } data; | ||
| 205 | |||
| 206 | u16 data_crc{}; | ||
| 207 | u16 device_crc{}; | ||
| 208 | }; | ||
| 209 | static_assert(sizeof(MiiStoreData) == 0x44, "MiiStoreData has incorrect size."); | ||
| 210 | |||
| 211 | struct MiiStoreDataElement { | ||
| 212 | MiiStoreData data{}; | ||
| 213 | Source source{}; | ||
| 214 | }; | ||
| 215 | static_assert(sizeof(MiiStoreDataElement) == 0x48, "MiiStoreDataElement has incorrect size."); | ||
| 216 | |||
| 217 | struct MiiDatabase { | ||
| 218 | u32 magic{}; // 'NFDB' | ||
| 219 | std::array<MiiStoreData, 0x64> miis{}; | ||
| 220 | INSERT_PADDING_BYTES(1); | ||
| 221 | u8 count{}; | ||
| 222 | u16 crc{}; | ||
| 223 | }; | ||
| 224 | static_assert(sizeof(MiiDatabase) == 0x1A98, "MiiDatabase has incorrect size."); | ||
| 225 | |||
| 226 | struct RandomMiiValues { | ||
| 227 | std::array<u8, 0xbc> values{}; | ||
| 228 | }; | ||
| 229 | static_assert(sizeof(RandomMiiValues) == 0xbc, "RandomMiiValues has incorrect size."); | ||
| 230 | |||
| 231 | struct RandomMiiData4 { | ||
| 232 | Gender gender{}; | ||
| 233 | Age age{}; | ||
| 234 | Race race{}; | ||
| 235 | u32 values_count{}; | ||
| 236 | std::array<u8, 0xbc> values{}; | ||
| 237 | }; | ||
| 238 | static_assert(sizeof(RandomMiiData4) == 0xcc, "RandomMiiData4 has incorrect size."); | ||
| 239 | |||
| 240 | struct RandomMiiData3 { | ||
| 241 | u32 arg_1; | ||
| 242 | u32 arg_2; | ||
| 243 | u32 values_count; | ||
| 244 | std::array<u8, 0xbc> values{}; | ||
| 245 | }; | ||
| 246 | static_assert(sizeof(RandomMiiData3) == 0xc8, "RandomMiiData3 has incorrect size."); | ||
| 247 | |||
| 248 | struct RandomMiiData2 { | ||
| 249 | u32 arg_1; | ||
| 250 | u32 values_count; | ||
| 251 | std::array<u8, 0xbc> values{}; | ||
| 252 | }; | ||
| 253 | static_assert(sizeof(RandomMiiData2) == 0xc4, "RandomMiiData2 has incorrect size."); | ||
| 254 | |||
| 255 | struct DefaultMii { | ||
| 256 | u32 face_type{}; | ||
| 257 | u32 face_color{}; | ||
| 258 | u32 face_wrinkle{}; | ||
| 259 | u32 face_makeup{}; | ||
| 260 | u32 hair_type{}; | ||
| 261 | u32 hair_color{}; | ||
| 262 | u32 hair_flip{}; | ||
| 263 | u32 eye_type{}; | ||
| 264 | u32 eye_color{}; | ||
| 265 | u32 eye_scale{}; | ||
| 266 | u32 eye_aspect{}; | ||
| 267 | u32 eye_rotate{}; | ||
| 268 | u32 eye_x{}; | ||
| 269 | u32 eye_y{}; | ||
| 270 | u32 eyebrow_type{}; | ||
| 271 | u32 eyebrow_color{}; | ||
| 272 | u32 eyebrow_scale{}; | ||
| 273 | u32 eyebrow_aspect{}; | ||
| 274 | u32 eyebrow_rotate{}; | ||
| 275 | u32 eyebrow_x{}; | ||
| 276 | u32 eyebrow_y{}; | ||
| 277 | u32 nose_type{}; | ||
| 278 | u32 nose_scale{}; | ||
| 279 | u32 nose_y{}; | ||
| 280 | u32 mouth_type{}; | ||
| 281 | u32 mouth_color{}; | ||
| 282 | u32 mouth_scale{}; | ||
| 283 | u32 mouth_aspect{}; | ||
| 284 | u32 mouth_y{}; | ||
| 285 | u32 mustache_type{}; | ||
| 286 | u32 beard_type{}; | ||
| 287 | u32 beard_color{}; | ||
| 288 | u32 mustache_scale{}; | ||
| 289 | u32 mustache_y{}; | ||
| 290 | u32 glasses_type{}; | ||
| 291 | u32 glasses_color{}; | ||
| 292 | u32 glasses_scale{}; | ||
| 293 | u32 glasses_y{}; | ||
| 294 | u32 mole_type{}; | ||
| 295 | u32 mole_scale{}; | ||
| 296 | u32 mole_x{}; | ||
| 297 | u32 mole_y{}; | ||
| 298 | u32 height{}; | ||
| 299 | u32 weight{}; | ||
| 300 | Gender gender{}; | ||
| 301 | u32 favorite_color{}; | ||
| 302 | u32 region{}; | ||
| 303 | FontRegion font_region{}; | ||
| 304 | u32 type{}; | ||
| 305 | INSERT_PADDING_WORDS(5); | ||
| 306 | }; | ||
| 307 | static_assert(sizeof(DefaultMii) == 0xd8, "MiiStoreData has incorrect size."); | ||
| 308 | |||
| 309 | #pragma pack(pop) | ||
| 310 | |||
| 311 | // The Mii manager is responsible for loading and storing the Miis to the database in NAND along | ||
| 312 | // with providing an easy interface for HLE emulation of the mii service. | ||
| 313 | class MiiManager { | ||
| 314 | public: | ||
| 315 | MiiManager(); | ||
| 316 | |||
| 317 | bool CheckAndResetUpdateCounter(SourceFlag source_flag, u64& current_update_counter); | ||
| 318 | bool IsFullDatabase() const; | ||
| 319 | u32 GetCount(SourceFlag source_flag) const; | ||
| 320 | ResultVal<MiiInfo> UpdateLatest(const MiiInfo& info, SourceFlag source_flag); | ||
| 321 | MiiInfo BuildRandom(Age age, Gender gender, Race race); | ||
| 322 | MiiInfo BuildDefault(std::size_t index); | ||
| 323 | ResultVal<std::vector<MiiInfoElement>> GetDefault(SourceFlag source_flag); | ||
| 324 | ResultCode GetIndex(const MiiInfo& info, u32& index); | ||
| 325 | |||
| 326 | private: | ||
| 327 | const Common::UUID user_id; | ||
| 328 | u64 update_counter{}; | ||
| 329 | }; | ||
| 330 | |||
| 331 | }; // namespace Service::Mii | ||
diff --git a/src/core/hle/service/mii/mii.cpp b/src/core/hle/service/mii/mii.cpp index a128edb43..b81bf6277 100644 --- a/src/core/hle/service/mii/mii.cpp +++ b/src/core/hle/service/mii/mii.cpp | |||
| @@ -4,22 +4,17 @@ | |||
| 4 | 4 | ||
| 5 | #include <memory> | 5 | #include <memory> |
| 6 | 6 | ||
| 7 | #include <fmt/ostream.h> | ||
| 8 | |||
| 9 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 10 | #include "common/string_util.h" | ||
| 11 | #include "core/hle/ipc_helpers.h" | 8 | #include "core/hle/ipc_helpers.h" |
| 12 | #include "core/hle/kernel/hle_ipc.h" | 9 | #include "core/hle/kernel/hle_ipc.h" |
| 10 | #include "core/hle/service/mii/manager.h" | ||
| 13 | #include "core/hle/service/mii/mii.h" | 11 | #include "core/hle/service/mii/mii.h" |
| 14 | #include "core/hle/service/mii/mii_manager.h" | ||
| 15 | #include "core/hle/service/service.h" | 12 | #include "core/hle/service/service.h" |
| 16 | #include "core/hle/service/sm/sm.h" | 13 | #include "core/hle/service/sm/sm.h" |
| 17 | 14 | ||
| 18 | namespace Service::Mii { | 15 | namespace Service::Mii { |
| 19 | 16 | ||
| 20 | constexpr ResultCode ERROR_INVALID_ARGUMENT{ErrorModule::Mii, 1}; | 17 | constexpr ResultCode ERROR_INVALID_ARGUMENT{ErrorModule::Mii, 1}; |
| 21 | constexpr ResultCode ERROR_CANNOT_FIND_ENTRY{ErrorModule::Mii, 4}; | ||
| 22 | constexpr ResultCode ERROR_NOT_IN_TEST_MODE{ErrorModule::Mii, 99}; | ||
| 23 | 18 | ||
| 24 | class IDatabaseService final : public ServiceFramework<IDatabaseService> { | 19 | class IDatabaseService final : public ServiceFramework<IDatabaseService> { |
| 25 | public: | 20 | public: |
| @@ -31,19 +26,19 @@ public: | |||
| 31 | {2, &IDatabaseService::GetCount, "GetCount"}, | 26 | {2, &IDatabaseService::GetCount, "GetCount"}, |
| 32 | {3, &IDatabaseService::Get, "Get"}, | 27 | {3, &IDatabaseService::Get, "Get"}, |
| 33 | {4, &IDatabaseService::Get1, "Get1"}, | 28 | {4, &IDatabaseService::Get1, "Get1"}, |
| 34 | {5, nullptr, "UpdateLatest"}, | 29 | {5, &IDatabaseService::UpdateLatest, "UpdateLatest"}, |
| 35 | {6, &IDatabaseService::BuildRandom, "BuildRandom"}, | 30 | {6, &IDatabaseService::BuildRandom, "BuildRandom"}, |
| 36 | {7, &IDatabaseService::BuildDefault, "BuildDefault"}, | 31 | {7, &IDatabaseService::BuildDefault, "BuildDefault"}, |
| 37 | {8, &IDatabaseService::Get2, "Get2"}, | 32 | {8, nullptr, "Get2"}, |
| 38 | {9, &IDatabaseService::Get3, "Get3"}, | 33 | {9, nullptr, "Get3"}, |
| 39 | {10, nullptr, "UpdateLatest1"}, | 34 | {10, nullptr, "UpdateLatest1"}, |
| 40 | {11, &IDatabaseService::FindIndex, "FindIndex"}, | 35 | {11, nullptr, "FindIndex"}, |
| 41 | {12, &IDatabaseService::Move, "Move"}, | 36 | {12, nullptr, "Move"}, |
| 42 | {13, &IDatabaseService::AddOrReplace, "AddOrReplace"}, | 37 | {13, nullptr, "AddOrReplace"}, |
| 43 | {14, &IDatabaseService::Delete, "Delete"}, | 38 | {14, nullptr, "Delete"}, |
| 44 | {15, &IDatabaseService::DestroyFile, "DestroyFile"}, | 39 | {15, nullptr, "DestroyFile"}, |
| 45 | {16, &IDatabaseService::DeleteFile, "DeleteFile"}, | 40 | {16, nullptr, "DeleteFile"}, |
| 46 | {17, &IDatabaseService::Format, "Format"}, | 41 | {17, nullptr, "Format"}, |
| 47 | {18, nullptr, "Import"}, | 42 | {18, nullptr, "Import"}, |
| 48 | {19, nullptr, "Export"}, | 43 | {19, nullptr, "Export"}, |
| 49 | {20, nullptr, "IsBrokenDatabaseWithClearFlag"}, | 44 | {20, nullptr, "IsBrokenDatabaseWithClearFlag"}, |
| @@ -59,31 +54,26 @@ public: | |||
| 59 | } | 54 | } |
| 60 | 55 | ||
| 61 | private: | 56 | private: |
| 62 | template <typename OutType> | 57 | template <typename T> |
| 63 | std::vector<u8> SerializeArray(OutType (MiiManager::*getter)(u32) const, u32 offset, | 58 | std::vector<u8> SerializeArray(const std::vector<T>& values) { |
| 64 | u32 requested_size, u32& read_size) { | 59 | std::vector<u8> out(values.size() * sizeof(T)); |
| 65 | read_size = std::min(requested_size, db.Size() - offset); | 60 | std::size_t offset{}; |
| 66 | 61 | for (const auto& value : values) { | |
| 67 | std::vector<u8> out(read_size * sizeof(OutType)); | 62 | std::memcpy(out.data() + offset, &value, sizeof(T)); |
| 68 | 63 | offset += sizeof(T); | |
| 69 | for (u32 i = 0; i < read_size; ++i) { | ||
| 70 | const auto obj = (db.*getter)(offset + i); | ||
| 71 | std::memcpy(out.data() + i * sizeof(OutType), &obj, sizeof(OutType)); | ||
| 72 | } | 64 | } |
| 73 | |||
| 74 | return out; | 65 | return out; |
| 75 | } | 66 | } |
| 76 | 67 | ||
| 77 | void IsUpdated(Kernel::HLERequestContext& ctx) { | 68 | void IsUpdated(Kernel::HLERequestContext& ctx) { |
| 78 | IPC::RequestParser rp{ctx}; | 69 | IPC::RequestParser rp{ctx}; |
| 79 | const auto source{rp.PopRaw<Source>()}; | 70 | const auto source_flag{rp.PopRaw<SourceFlag>()}; |
| 80 | 71 | ||
| 81 | LOG_DEBUG(Service_Mii, "called with source={}", source); | 72 | LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag); |
| 82 | 73 | ||
| 83 | IPC::ResponseBuilder rb{ctx, 3}; | 74 | IPC::ResponseBuilder rb{ctx, 3}; |
| 84 | rb.Push(RESULT_SUCCESS); | 75 | rb.Push(RESULT_SUCCESS); |
| 85 | rb.Push(db.CheckUpdatedFlag()); | 76 | rb.Push(manager.CheckAndResetUpdateCounter(source_flag, current_update_counter)); |
| 86 | db.ResetUpdatedFlag(); | ||
| 87 | } | 77 | } |
| 88 | 78 | ||
| 89 | void IsFullDatabase(Kernel::HLERequestContext& ctx) { | 79 | void IsFullDatabase(Kernel::HLERequestContext& ctx) { |
| @@ -91,264 +81,149 @@ private: | |||
| 91 | 81 | ||
| 92 | IPC::ResponseBuilder rb{ctx, 3}; | 82 | IPC::ResponseBuilder rb{ctx, 3}; |
| 93 | rb.Push(RESULT_SUCCESS); | 83 | rb.Push(RESULT_SUCCESS); |
| 94 | rb.Push(db.Full()); | 84 | rb.Push(manager.IsFullDatabase()); |
| 95 | } | 85 | } |
| 96 | 86 | ||
| 97 | void GetCount(Kernel::HLERequestContext& ctx) { | 87 | void GetCount(Kernel::HLERequestContext& ctx) { |
| 98 | IPC::RequestParser rp{ctx}; | 88 | IPC::RequestParser rp{ctx}; |
| 99 | const auto source{rp.PopRaw<Source>()}; | 89 | const auto source_flag{rp.PopRaw<SourceFlag>()}; |
| 100 | 90 | ||
| 101 | LOG_DEBUG(Service_Mii, "called with source={}", source); | 91 | LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag); |
| 102 | 92 | ||
| 103 | IPC::ResponseBuilder rb{ctx, 3}; | 93 | IPC::ResponseBuilder rb{ctx, 3}; |
| 104 | rb.Push(RESULT_SUCCESS); | 94 | rb.Push(RESULT_SUCCESS); |
| 105 | rb.Push<u32>(db.Size()); | 95 | rb.Push<u32>(manager.GetCount(source_flag)); |
| 106 | } | 96 | } |
| 107 | 97 | ||
| 108 | // Gets Miis from database at offset and index in format MiiInfoElement | ||
| 109 | void Get(Kernel::HLERequestContext& ctx) { | 98 | void Get(Kernel::HLERequestContext& ctx) { |
| 110 | IPC::RequestParser rp{ctx}; | 99 | IPC::RequestParser rp{ctx}; |
| 111 | const auto size{rp.PopRaw<u32>()}; | 100 | const auto source_flag{rp.PopRaw<SourceFlag>()}; |
| 112 | const auto source{rp.PopRaw<Source>()}; | ||
| 113 | |||
| 114 | LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, | ||
| 115 | offsets[0], source); | ||
| 116 | |||
| 117 | u32 read_size{}; | ||
| 118 | ctx.WriteBuffer(SerializeArray(&MiiManager::GetInfoElement, offsets[0], size, read_size)); | ||
| 119 | offsets[0] += read_size; | ||
| 120 | |||
| 121 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 122 | rb.Push(RESULT_SUCCESS); | ||
| 123 | rb.Push<u32>(read_size); | ||
| 124 | } | ||
| 125 | 101 | ||
| 126 | // Gets Miis from database at offset and index in format MiiInfo | 102 | LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag); |
| 127 | void Get1(Kernel::HLERequestContext& ctx) { | ||
| 128 | IPC::RequestParser rp{ctx}; | ||
| 129 | const auto size{rp.PopRaw<u32>()}; | ||
| 130 | const auto source{rp.PopRaw<Source>()}; | ||
| 131 | 103 | ||
| 132 | LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, | 104 | const auto result{manager.GetDefault(source_flag)}; |
| 133 | offsets[1], source); | 105 | if (result.Failed()) { |
| 106 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 107 | rb.Push(result.Code()); | ||
| 108 | return; | ||
| 109 | } | ||
| 134 | 110 | ||
| 135 | u32 read_size{}; | 111 | if (result->size() > 0) { |
| 136 | ctx.WriteBuffer(SerializeArray(&MiiManager::GetInfo, offsets[1], size, read_size)); | 112 | ctx.WriteBuffer(SerializeArray(*result)); |
| 137 | offsets[1] += read_size; | 113 | } |
| 138 | 114 | ||
| 139 | IPC::ResponseBuilder rb{ctx, 3}; | 115 | IPC::ResponseBuilder rb{ctx, 3}; |
| 140 | rb.Push(RESULT_SUCCESS); | 116 | rb.Push(RESULT_SUCCESS); |
| 141 | rb.Push<u32>(read_size); | 117 | rb.Push<u32>(static_cast<u32>(result->size())); |
| 142 | } | 118 | } |
| 143 | 119 | ||
| 144 | void BuildRandom(Kernel::HLERequestContext& ctx) { | 120 | void Get1(Kernel::HLERequestContext& ctx) { |
| 145 | IPC::RequestParser rp{ctx}; | 121 | IPC::RequestParser rp{ctx}; |
| 146 | const auto [unknown1, unknown2, unknown3] = rp.PopRaw<RandomParameters>(); | 122 | const auto source_flag{rp.PopRaw<SourceFlag>()}; |
| 147 | 123 | ||
| 148 | if (unknown1 > 3) { | 124 | LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag); |
| 149 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 150 | rb.Push(ERROR_INVALID_ARGUMENT); | ||
| 151 | LOG_ERROR(Service_Mii, "Invalid unknown1 value: {}", unknown1); | ||
| 152 | return; | ||
| 153 | } | ||
| 154 | 125 | ||
| 155 | if (unknown2 > 2) { | 126 | const auto result{manager.GetDefault(source_flag)}; |
| 127 | if (result.Failed()) { | ||
| 156 | IPC::ResponseBuilder rb{ctx, 2}; | 128 | IPC::ResponseBuilder rb{ctx, 2}; |
| 157 | rb.Push(ERROR_INVALID_ARGUMENT); | 129 | rb.Push(result.Code()); |
| 158 | LOG_ERROR(Service_Mii, "Invalid unknown2 value: {}", unknown2); | ||
| 159 | return; | 130 | return; |
| 160 | } | 131 | } |
| 161 | 132 | ||
| 162 | if (unknown3 > 3) { | 133 | std::vector<MiiInfo> values; |
| 163 | IPC::ResponseBuilder rb{ctx, 2}; | 134 | for (const auto& element : *result) { |
| 164 | rb.Push(ERROR_INVALID_ARGUMENT); | 135 | values.emplace_back(element.info); |
| 165 | LOG_ERROR(Service_Mii, "Invalid unknown3 value: {}", unknown3); | ||
| 166 | return; | ||
| 167 | } | 136 | } |
| 168 | 137 | ||
| 169 | LOG_DEBUG(Service_Mii, "called with param_1={:08X}, param_2={:08X}, param_3={:08X}", | 138 | ctx.WriteBuffer(SerializeArray(values)); |
| 170 | unknown1, unknown2, unknown3); | ||
| 171 | 139 | ||
| 172 | const auto info = db.CreateRandom({unknown1, unknown2, unknown3}); | 140 | IPC::ResponseBuilder rb{ctx, 3}; |
| 173 | IPC::ResponseBuilder rb{ctx, 2 + sizeof(MiiInfo) / sizeof(u32)}; | ||
| 174 | rb.Push(RESULT_SUCCESS); | 141 | rb.Push(RESULT_SUCCESS); |
| 175 | rb.PushRaw<MiiInfo>(info); | 142 | rb.Push<u32>(static_cast<u32>(result->size())); |
| 176 | } | 143 | } |
| 177 | 144 | ||
| 178 | void BuildDefault(Kernel::HLERequestContext& ctx) { | 145 | void UpdateLatest(Kernel::HLERequestContext& ctx) { |
| 179 | IPC::RequestParser rp{ctx}; | 146 | IPC::RequestParser rp{ctx}; |
| 180 | const auto index{rp.PopRaw<u32>()}; | 147 | const auto info{rp.PopRaw<MiiInfo>()}; |
| 148 | const auto source_flag{rp.PopRaw<SourceFlag>()}; | ||
| 181 | 149 | ||
| 182 | if (index > 5) { | 150 | LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag); |
| 183 | LOG_ERROR(Service_Mii, "invalid argument, index cannot be greater than 5 but is {:08X}", | 151 | |
| 184 | index); | 152 | const auto result{manager.UpdateLatest(info, source_flag)}; |
| 153 | if (result.Failed()) { | ||
| 185 | IPC::ResponseBuilder rb{ctx, 2}; | 154 | IPC::ResponseBuilder rb{ctx, 2}; |
| 186 | rb.Push(ERROR_INVALID_ARGUMENT); | 155 | rb.Push(result.Code()); |
| 187 | return; | 156 | return; |
| 188 | } | 157 | } |
| 189 | 158 | ||
| 190 | LOG_DEBUG(Service_Mii, "called with index={:08X}", index); | ||
| 191 | |||
| 192 | const auto info = db.CreateDefault(index); | ||
| 193 | IPC::ResponseBuilder rb{ctx, 2 + sizeof(MiiInfo) / sizeof(u32)}; | 159 | IPC::ResponseBuilder rb{ctx, 2 + sizeof(MiiInfo) / sizeof(u32)}; |
| 194 | rb.Push(RESULT_SUCCESS); | 160 | rb.Push(RESULT_SUCCESS); |
| 195 | rb.PushRaw<MiiInfo>(info); | 161 | rb.PushRaw<MiiInfo>(*result); |
| 196 | } | 162 | } |
| 197 | 163 | ||
| 198 | // Gets Miis from database at offset and index in format MiiStoreDataElement | 164 | void BuildRandom(Kernel::HLERequestContext& ctx) { |
| 199 | void Get2(Kernel::HLERequestContext& ctx) { | ||
| 200 | IPC::RequestParser rp{ctx}; | ||
| 201 | const auto size{rp.PopRaw<u32>()}; | ||
| 202 | const auto source{rp.PopRaw<Source>()}; | ||
| 203 | |||
| 204 | LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, | ||
| 205 | offsets[2], source); | ||
| 206 | |||
| 207 | u32 read_size{}; | ||
| 208 | ctx.WriteBuffer( | ||
| 209 | SerializeArray(&MiiManager::GetStoreDataElement, offsets[2], size, read_size)); | ||
| 210 | offsets[2] += read_size; | ||
| 211 | |||
| 212 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 213 | rb.Push(RESULT_SUCCESS); | ||
| 214 | rb.Push<u32>(read_size); | ||
| 215 | } | ||
| 216 | |||
| 217 | // Gets Miis from database at offset and index in format MiiStoreData | ||
| 218 | void Get3(Kernel::HLERequestContext& ctx) { | ||
| 219 | IPC::RequestParser rp{ctx}; | ||
| 220 | const auto size{rp.PopRaw<u32>()}; | ||
| 221 | const auto source{rp.PopRaw<Source>()}; | ||
| 222 | |||
| 223 | LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, | ||
| 224 | offsets[3], source); | ||
| 225 | |||
| 226 | u32 read_size{}; | ||
| 227 | ctx.WriteBuffer(SerializeArray(&MiiManager::GetStoreData, offsets[3], size, read_size)); | ||
| 228 | offsets[3] += read_size; | ||
| 229 | |||
| 230 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 231 | rb.Push(RESULT_SUCCESS); | ||
| 232 | rb.Push<u32>(read_size); | ||
| 233 | } | ||
| 234 | |||
| 235 | void FindIndex(Kernel::HLERequestContext& ctx) { | ||
| 236 | IPC::RequestParser rp{ctx}; | 165 | IPC::RequestParser rp{ctx}; |
| 237 | const auto uuid{rp.PopRaw<Common::UUID>()}; | ||
| 238 | const auto unknown{rp.PopRaw<bool>()}; | ||
| 239 | 166 | ||
| 240 | LOG_DEBUG(Service_Mii, "called with uuid={}, unknown={}", uuid.FormatSwitch(), unknown); | 167 | const auto age{rp.PopRaw<Age>()}; |
| 168 | const auto gender{rp.PopRaw<Gender>()}; | ||
| 169 | const auto race{rp.PopRaw<Race>()}; | ||
| 241 | 170 | ||
| 242 | IPC::ResponseBuilder rb{ctx, 3}; | 171 | LOG_DEBUG(Service_Mii, "called with age={}, gender={}, race={}", age, gender, race); |
| 243 | 172 | ||
| 244 | const auto index = db.IndexOf(uuid); | 173 | if (age > Age::All) { |
| 245 | if (index > MAX_MIIS) { | 174 | IPC::ResponseBuilder rb{ctx, 2}; |
| 246 | // TODO(DarkLordZach): Find a better error code | 175 | rb.Push(ERROR_INVALID_ARGUMENT); |
| 247 | rb.Push(RESULT_UNKNOWN); | 176 | LOG_ERROR(Service_Mii, "invalid age={}", age); |
| 248 | rb.Push(index); | 177 | return; |
| 249 | } else { | ||
| 250 | rb.Push(RESULT_SUCCESS); | ||
| 251 | rb.Push(index); | ||
| 252 | } | 178 | } |
| 253 | } | ||
| 254 | 179 | ||
| 255 | void Move(Kernel::HLERequestContext& ctx) { | 180 | if (gender > Gender::All) { |
| 256 | IPC::RequestParser rp{ctx}; | ||
| 257 | const auto uuid{rp.PopRaw<Common::UUID>()}; | ||
| 258 | const auto index{rp.PopRaw<s32>()}; | ||
| 259 | |||
| 260 | if (index < 0) { | ||
| 261 | LOG_ERROR(Service_Mii, "Index cannot be negative but is {:08X}!", index); | ||
| 262 | IPC::ResponseBuilder rb{ctx, 2}; | 181 | IPC::ResponseBuilder rb{ctx, 2}; |
| 263 | rb.Push(ERROR_INVALID_ARGUMENT); | 182 | rb.Push(ERROR_INVALID_ARGUMENT); |
| 183 | LOG_ERROR(Service_Mii, "invalid gender={}", gender); | ||
| 264 | return; | 184 | return; |
| 265 | } | 185 | } |
| 266 | 186 | ||
| 267 | LOG_DEBUG(Service_Mii, "called with uuid={}, index={:08X}", uuid.FormatSwitch(), index); | 187 | if (race > Race::All) { |
| 268 | |||
| 269 | const auto success = db.Move(uuid, index); | ||
| 270 | |||
| 271 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 272 | // TODO(DarkLordZach): Find a better error code | ||
| 273 | rb.Push(success ? RESULT_SUCCESS : RESULT_UNKNOWN); | ||
| 274 | } | ||
| 275 | |||
| 276 | void AddOrReplace(Kernel::HLERequestContext& ctx) { | ||
| 277 | IPC::RequestParser rp{ctx}; | ||
| 278 | const auto data{rp.PopRaw<MiiStoreData>()}; | ||
| 279 | |||
| 280 | LOG_DEBUG(Service_Mii, "called with Mii data uuid={}, name={}", data.uuid.FormatSwitch(), | ||
| 281 | Common::UTF16ToUTF8(data.Name())); | ||
| 282 | |||
| 283 | const auto success = db.AddOrReplace(data); | ||
| 284 | |||
| 285 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 286 | // TODO(DarkLordZach): Find a better error code | ||
| 287 | rb.Push(success ? RESULT_SUCCESS : RESULT_UNKNOWN); | ||
| 288 | } | ||
| 289 | |||
| 290 | void Delete(Kernel::HLERequestContext& ctx) { | ||
| 291 | IPC::RequestParser rp{ctx}; | ||
| 292 | const auto uuid{rp.PopRaw<Common::UUID>()}; | ||
| 293 | |||
| 294 | LOG_DEBUG(Service_Mii, "called with uuid={}", uuid.FormatSwitch()); | ||
| 295 | |||
| 296 | const auto success = db.Remove(uuid); | ||
| 297 | |||
| 298 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 299 | rb.Push(success ? RESULT_SUCCESS : ERROR_CANNOT_FIND_ENTRY); | ||
| 300 | } | ||
| 301 | |||
| 302 | void DestroyFile(Kernel::HLERequestContext& ctx) { | ||
| 303 | LOG_DEBUG(Service_Mii, "called"); | ||
| 304 | |||
| 305 | if (!db.IsTestModeEnabled()) { | ||
| 306 | LOG_ERROR(Service_Mii, "Database is not in test mode -- cannot destory database file."); | ||
| 307 | IPC::ResponseBuilder rb{ctx, 2}; | 188 | IPC::ResponseBuilder rb{ctx, 2}; |
| 308 | rb.Push(ERROR_NOT_IN_TEST_MODE); | 189 | rb.Push(ERROR_INVALID_ARGUMENT); |
| 190 | LOG_ERROR(Service_Mii, "invalid race={}", race); | ||
| 309 | return; | 191 | return; |
| 310 | } | 192 | } |
| 311 | 193 | ||
| 312 | IPC::ResponseBuilder rb{ctx, 3}; | 194 | IPC::ResponseBuilder rb{ctx, 2 + sizeof(MiiInfo) / sizeof(u32)}; |
| 313 | rb.Push(RESULT_SUCCESS); | 195 | rb.Push(RESULT_SUCCESS); |
| 314 | rb.Push(db.DestroyFile()); | 196 | rb.PushRaw<MiiInfo>(manager.BuildRandom(age, gender, race)); |
| 315 | } | 197 | } |
| 316 | 198 | ||
| 317 | void DeleteFile(Kernel::HLERequestContext& ctx) { | 199 | void BuildDefault(Kernel::HLERequestContext& ctx) { |
| 318 | LOG_DEBUG(Service_Mii, "called"); | 200 | IPC::RequestParser rp{ctx}; |
| 201 | const auto index{rp.Pop<u32>()}; | ||
| 202 | |||
| 203 | LOG_DEBUG(Service_Mii, "called with index={}", index); | ||
| 319 | 204 | ||
| 320 | if (!db.IsTestModeEnabled()) { | 205 | if (index > 5) { |
| 321 | LOG_ERROR(Service_Mii, "Database is not in test mode -- cannot delete database file."); | 206 | LOG_ERROR(Service_Mii, "invalid argument, index cannot be greater than 5 but is {:08X}", |
| 207 | index); | ||
| 322 | IPC::ResponseBuilder rb{ctx, 2}; | 208 | IPC::ResponseBuilder rb{ctx, 2}; |
| 323 | rb.Push(ERROR_NOT_IN_TEST_MODE); | 209 | rb.Push(ERROR_INVALID_ARGUMENT); |
| 324 | return; | 210 | return; |
| 325 | } | 211 | } |
| 326 | 212 | ||
| 327 | IPC::ResponseBuilder rb{ctx, 3}; | 213 | IPC::ResponseBuilder rb{ctx, 2 + sizeof(MiiInfo) / sizeof(u32)}; |
| 328 | rb.Push(RESULT_SUCCESS); | ||
| 329 | rb.Push(db.DeleteFile()); | ||
| 330 | } | ||
| 331 | |||
| 332 | void Format(Kernel::HLERequestContext& ctx) { | ||
| 333 | LOG_DEBUG(Service_Mii, "called"); | ||
| 334 | |||
| 335 | db.Clear(); | ||
| 336 | |||
| 337 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 338 | rb.Push(RESULT_SUCCESS); | 214 | rb.Push(RESULT_SUCCESS); |
| 215 | rb.PushRaw<MiiInfo>(manager.BuildDefault(index)); | ||
| 339 | } | 216 | } |
| 340 | 217 | ||
| 341 | void GetIndex(Kernel::HLERequestContext& ctx) { | 218 | void GetIndex(Kernel::HLERequestContext& ctx) { |
| 342 | IPC::RequestParser rp{ctx}; | 219 | IPC::RequestParser rp{ctx}; |
| 343 | const auto info{rp.PopRaw<MiiInfo>()}; | 220 | const auto info{rp.PopRaw<MiiInfo>()}; |
| 344 | 221 | ||
| 345 | LOG_DEBUG(Service_Mii, "called with Mii info uuid={}, name={}", info.uuid.FormatSwitch(), | 222 | LOG_DEBUG(Service_Mii, "called"); |
| 346 | Common::UTF16ToUTF8(info.Name())); | ||
| 347 | |||
| 348 | const auto index = db.IndexOf(info); | ||
| 349 | 223 | ||
| 350 | IPC::ResponseBuilder rb{ctx, 2}; | 224 | u32 index{}; |
| 351 | rb.Push(RESULT_SUCCESS); | 225 | IPC::ResponseBuilder rb{ctx, 3}; |
| 226 | rb.Push(manager.GetIndex(info, index)); | ||
| 352 | rb.Push(index); | 227 | rb.Push(index); |
| 353 | } | 228 | } |
| 354 | 229 | ||
| @@ -364,12 +239,14 @@ private: | |||
| 364 | rb.Push(RESULT_SUCCESS); | 239 | rb.Push(RESULT_SUCCESS); |
| 365 | } | 240 | } |
| 366 | 241 | ||
| 367 | MiiManager db; | 242 | constexpr bool IsInterfaceVersionSupported(u32 interface_version) const { |
| 243 | return current_interface_version >= interface_version; | ||
| 244 | } | ||
| 368 | 245 | ||
| 369 | u32 current_interface_version = 0; | 246 | MiiManager manager; |
| 370 | 247 | ||
| 371 | // Last read offsets of Get functions | 248 | u32 current_interface_version{}; |
| 372 | std::array<u32, 4> offsets{}; | 249 | u64 current_update_counter{}; |
| 373 | }; | 250 | }; |
| 374 | 251 | ||
| 375 | class MiiDBModule final : public ServiceFramework<MiiDBModule> { | 252 | class MiiDBModule final : public ServiceFramework<MiiDBModule> { |
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp deleted file mode 100644 index 8d0353075..000000000 --- a/src/core/hle/service/mii/mii_manager.cpp +++ /dev/null | |||
| @@ -1,420 +0,0 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <algorithm> | ||
| 6 | #include <cstring> | ||
| 7 | #include "common/assert.h" | ||
| 8 | #include "common/file_util.h" | ||
| 9 | #include "common/logging/log.h" | ||
| 10 | #include "common/string_util.h" | ||
| 11 | #include "core/hle/service/mii/mii_manager.h" | ||
| 12 | |||
| 13 | namespace Service::Mii { | ||
| 14 | |||
| 15 | namespace { | ||
| 16 | |||
| 17 | constexpr char MII_SAVE_DATABASE_PATH[] = "/system/save/8000000000000030/MiiDatabase.dat"; | ||
| 18 | constexpr std::array<char16_t, 11> DEFAULT_MII_NAME = {u'y', u'u', u'z', u'u', u'\0'}; | ||
| 19 | |||
| 20 | // This value was retrieved from HW test | ||
| 21 | constexpr MiiStoreData DEFAULT_MII = { | ||
| 22 | { | ||
| 23 | 0x21, 0x40, 0x40, 0x01, 0x08, 0x01, 0x13, 0x08, 0x08, 0x02, 0x17, 0x8C, 0x06, 0x01, | ||
| 24 | 0x69, 0x6D, 0x8A, 0x6A, 0x82, 0x14, 0x00, 0x00, 0x00, 0x20, 0x64, 0x72, 0x44, 0x44, | ||
| 25 | }, | ||
| 26 | {'y', 'u', 'z', 'u', '\0'}, | ||
| 27 | Common::UUID{1, 0}, | ||
| 28 | 0, | ||
| 29 | 0, | ||
| 30 | }; | ||
| 31 | |||
| 32 | // Default values taken from multiple real databases | ||
| 33 | const MiiDatabase DEFAULT_MII_DATABASE{Common::MakeMagic('N', 'F', 'D', 'B'), {}, {1}, 0, 0}; | ||
| 34 | |||
| 35 | constexpr std::array<const char*, 4> SOURCE_NAMES{ | ||
| 36 | "Database", | ||
| 37 | "Default", | ||
| 38 | "Account", | ||
| 39 | "Friend", | ||
| 40 | }; | ||
| 41 | |||
| 42 | template <typename T, std::size_t SourceArraySize, std::size_t DestArraySize> | ||
| 43 | std::array<T, DestArraySize> ResizeArray(const std::array<T, SourceArraySize>& in) { | ||
| 44 | std::array<T, DestArraySize> out{}; | ||
| 45 | std::memcpy(out.data(), in.data(), sizeof(T) * std::min(SourceArraySize, DestArraySize)); | ||
| 46 | return out; | ||
| 47 | } | ||
| 48 | |||
| 49 | MiiInfo ConvertStoreDataToInfo(const MiiStoreData& data) { | ||
| 50 | MiiStoreBitFields bf{}; | ||
| 51 | std::memcpy(&bf, data.data.data(), sizeof(MiiStoreBitFields)); | ||
| 52 | return { | ||
| 53 | data.uuid, | ||
| 54 | ResizeArray<char16_t, 10, 11>(data.name), | ||
| 55 | static_cast<u8>(bf.font_region.Value()), | ||
| 56 | static_cast<u8>(bf.favorite_color.Value()), | ||
| 57 | static_cast<u8>(bf.gender.Value()), | ||
| 58 | static_cast<u8>(bf.height.Value()), | ||
| 59 | static_cast<u8>(bf.weight.Value()), | ||
| 60 | static_cast<u8>(bf.mii_type.Value()), | ||
| 61 | static_cast<u8>(bf.mii_region.Value()), | ||
| 62 | static_cast<u8>(bf.face_type.Value()), | ||
| 63 | static_cast<u8>(bf.face_color.Value()), | ||
| 64 | static_cast<u8>(bf.face_wrinkle.Value()), | ||
| 65 | static_cast<u8>(bf.face_makeup.Value()), | ||
| 66 | static_cast<u8>(bf.hair_type.Value()), | ||
| 67 | static_cast<u8>(bf.hair_color.Value()), | ||
| 68 | static_cast<bool>(bf.hair_flip.Value()), | ||
| 69 | static_cast<u8>(bf.eye_type.Value()), | ||
| 70 | static_cast<u8>(bf.eye_color.Value()), | ||
| 71 | static_cast<u8>(bf.eye_scale.Value()), | ||
| 72 | static_cast<u8>(bf.eye_aspect.Value()), | ||
| 73 | static_cast<u8>(bf.eye_rotate.Value()), | ||
| 74 | static_cast<u8>(bf.eye_x.Value()), | ||
| 75 | static_cast<u8>(bf.eye_y.Value()), | ||
| 76 | static_cast<u8>(bf.eyebrow_type.Value()), | ||
| 77 | static_cast<u8>(bf.eyebrow_color.Value()), | ||
| 78 | static_cast<u8>(bf.eyebrow_scale.Value()), | ||
| 79 | static_cast<u8>(bf.eyebrow_aspect.Value()), | ||
| 80 | static_cast<u8>(bf.eyebrow_rotate.Value()), | ||
| 81 | static_cast<u8>(bf.eyebrow_x.Value()), | ||
| 82 | static_cast<u8>(bf.eyebrow_y.Value()), | ||
| 83 | static_cast<u8>(bf.nose_type.Value()), | ||
| 84 | static_cast<u8>(bf.nose_scale.Value()), | ||
| 85 | static_cast<u8>(bf.nose_y.Value()), | ||
| 86 | static_cast<u8>(bf.mouth_type.Value()), | ||
| 87 | static_cast<u8>(bf.mouth_color.Value()), | ||
| 88 | static_cast<u8>(bf.mouth_scale.Value()), | ||
| 89 | static_cast<u8>(bf.mouth_aspect.Value()), | ||
| 90 | static_cast<u8>(bf.mouth_y.Value()), | ||
| 91 | static_cast<u8>(bf.facial_hair_color.Value()), | ||
| 92 | static_cast<u8>(bf.beard_type.Value()), | ||
| 93 | static_cast<u8>(bf.mustache_type.Value()), | ||
| 94 | static_cast<u8>(bf.mustache_scale.Value()), | ||
| 95 | static_cast<u8>(bf.mustache_y.Value()), | ||
| 96 | static_cast<u8>(bf.glasses_type.Value()), | ||
| 97 | static_cast<u8>(bf.glasses_color.Value()), | ||
| 98 | static_cast<u8>(bf.glasses_scale.Value()), | ||
| 99 | static_cast<u8>(bf.glasses_y.Value()), | ||
| 100 | static_cast<u8>(bf.mole_type.Value()), | ||
| 101 | static_cast<u8>(bf.mole_scale.Value()), | ||
| 102 | static_cast<u8>(bf.mole_x.Value()), | ||
| 103 | static_cast<u8>(bf.mole_y.Value()), | ||
| 104 | 0x00, | ||
| 105 | }; | ||
| 106 | } | ||
| 107 | MiiStoreData ConvertInfoToStoreData(const MiiInfo& info) { | ||
| 108 | MiiStoreData out{}; | ||
| 109 | out.name = ResizeArray<char16_t, 11, 10>(info.name); | ||
| 110 | out.uuid = info.uuid; | ||
| 111 | |||
| 112 | MiiStoreBitFields bf{}; | ||
| 113 | |||
| 114 | bf.hair_type.Assign(info.hair_type); | ||
| 115 | bf.mole_type.Assign(info.mole_type); | ||
| 116 | bf.height.Assign(info.height); | ||
| 117 | bf.hair_flip.Assign(info.hair_flip); | ||
| 118 | bf.weight.Assign(info.weight); | ||
| 119 | bf.hair_color.Assign(info.hair_color); | ||
| 120 | |||
| 121 | bf.gender.Assign(info.gender); | ||
| 122 | bf.eye_color.Assign(info.eye_color); | ||
| 123 | bf.eyebrow_color.Assign(info.eyebrow_color); | ||
| 124 | bf.mouth_color.Assign(info.mouth_color); | ||
| 125 | bf.facial_hair_color.Assign(info.facial_hair_color); | ||
| 126 | |||
| 127 | bf.mii_type.Assign(info.mii_type); | ||
| 128 | bf.glasses_color.Assign(info.glasses_color); | ||
| 129 | bf.font_region.Assign(info.font_region); | ||
| 130 | bf.eye_type.Assign(info.eye_type); | ||
| 131 | bf.mii_region.Assign(info.mii_region); | ||
| 132 | bf.mouth_type.Assign(info.mouth_type); | ||
| 133 | bf.glasses_scale.Assign(info.glasses_scale); | ||
| 134 | bf.eye_y.Assign(info.eye_y); | ||
| 135 | |||
| 136 | bf.mustache_type.Assign(info.mustache_type); | ||
| 137 | bf.eyebrow_type.Assign(info.eyebrow_type); | ||
| 138 | bf.beard_type.Assign(info.beard_type); | ||
| 139 | bf.nose_type.Assign(info.nose_type); | ||
| 140 | bf.mouth_aspect.Assign(info.mouth_aspect_ratio); | ||
| 141 | bf.nose_y.Assign(info.nose_y); | ||
| 142 | bf.eyebrow_aspect.Assign(info.eyebrow_aspect_ratio); | ||
| 143 | bf.mouth_y.Assign(info.mouth_y); | ||
| 144 | |||
| 145 | bf.eye_rotate.Assign(info.eye_rotate); | ||
| 146 | bf.mustache_y.Assign(info.mustache_y); | ||
| 147 | bf.eye_aspect.Assign(info.eye_aspect_ratio); | ||
| 148 | bf.glasses_y.Assign(info.glasses_y); | ||
| 149 | bf.eye_scale.Assign(info.eye_scale); | ||
| 150 | bf.mole_x.Assign(info.mole_x); | ||
| 151 | bf.mole_y.Assign(info.mole_y); | ||
| 152 | |||
| 153 | bf.glasses_type.Assign(info.glasses_type); | ||
| 154 | bf.face_type.Assign(info.face_type); | ||
| 155 | bf.favorite_color.Assign(info.favorite_color); | ||
| 156 | bf.face_wrinkle.Assign(info.face_wrinkle); | ||
| 157 | bf.face_color.Assign(info.face_color); | ||
| 158 | bf.eye_x.Assign(info.eye_x); | ||
| 159 | bf.face_makeup.Assign(info.face_makeup); | ||
| 160 | |||
| 161 | bf.eyebrow_rotate.Assign(info.eyebrow_rotate); | ||
| 162 | bf.eyebrow_scale.Assign(info.eyebrow_scale); | ||
| 163 | bf.eyebrow_y.Assign(info.eyebrow_y); | ||
| 164 | bf.eyebrow_x.Assign(info.eyebrow_x); | ||
| 165 | bf.mouth_scale.Assign(info.mouth_scale); | ||
| 166 | bf.nose_scale.Assign(info.nose_scale); | ||
| 167 | bf.mole_scale.Assign(info.mole_scale); | ||
| 168 | bf.mustache_scale.Assign(info.mustache_scale); | ||
| 169 | |||
| 170 | std::memcpy(out.data.data(), &bf, sizeof(MiiStoreBitFields)); | ||
| 171 | |||
| 172 | return out; | ||
| 173 | } | ||
| 174 | |||
| 175 | } // namespace | ||
| 176 | |||
| 177 | std::ostream& operator<<(std::ostream& os, Source source) { | ||
| 178 | if (static_cast<std::size_t>(source) >= SOURCE_NAMES.size()) { | ||
| 179 | return os << "[UNKNOWN SOURCE]"; | ||
| 180 | } | ||
| 181 | |||
| 182 | os << SOURCE_NAMES.at(static_cast<std::size_t>(source)); | ||
| 183 | return os; | ||
| 184 | } | ||
| 185 | |||
| 186 | std::u16string MiiInfo::Name() const { | ||
| 187 | return Common::UTF16StringFromFixedZeroTerminatedBuffer(name.data(), name.size()); | ||
| 188 | } | ||
| 189 | |||
| 190 | bool operator==(const MiiInfo& lhs, const MiiInfo& rhs) { | ||
| 191 | return std::memcmp(&lhs, &rhs, sizeof(MiiInfo)) == 0; | ||
| 192 | } | ||
| 193 | |||
| 194 | bool operator!=(const MiiInfo& lhs, const MiiInfo& rhs) { | ||
| 195 | return !operator==(lhs, rhs); | ||
| 196 | } | ||
| 197 | |||
| 198 | std::u16string MiiStoreData::Name() const { | ||
| 199 | return Common::UTF16StringFromFixedZeroTerminatedBuffer(name.data(), name.size()); | ||
| 200 | } | ||
| 201 | |||
| 202 | MiiManager::MiiManager() = default; | ||
| 203 | |||
| 204 | MiiManager::~MiiManager() = default; | ||
| 205 | |||
| 206 | MiiInfo MiiManager::CreateRandom(RandomParameters params) { | ||
| 207 | LOG_WARNING(Service_Mii, | ||
| 208 | "(STUBBED) called with params={:08X}{:08X}{:08X}, returning default Mii", | ||
| 209 | params.unknown_1, params.unknown_2, params.unknown_3); | ||
| 210 | |||
| 211 | return ConvertStoreDataToInfo(CreateMiiWithUniqueUUID()); | ||
| 212 | } | ||
| 213 | |||
| 214 | MiiInfo MiiManager::CreateDefault(u32 index) { | ||
| 215 | const auto new_mii = CreateMiiWithUniqueUUID(); | ||
| 216 | |||
| 217 | database.miis.at(index) = new_mii; | ||
| 218 | |||
| 219 | EnsureDatabasePartition(); | ||
| 220 | return ConvertStoreDataToInfo(new_mii); | ||
| 221 | } | ||
| 222 | |||
| 223 | bool MiiManager::CheckUpdatedFlag() const { | ||
| 224 | return updated_flag; | ||
| 225 | } | ||
| 226 | |||
| 227 | void MiiManager::ResetUpdatedFlag() { | ||
| 228 | updated_flag = false; | ||
| 229 | } | ||
| 230 | |||
| 231 | bool MiiManager::IsTestModeEnabled() const { | ||
| 232 | return is_test_mode_enabled; | ||
| 233 | } | ||
| 234 | |||
| 235 | bool MiiManager::Empty() const { | ||
| 236 | return Size() == 0; | ||
| 237 | } | ||
| 238 | |||
| 239 | bool MiiManager::Full() const { | ||
| 240 | return Size() == MAX_MIIS; | ||
| 241 | } | ||
| 242 | |||
| 243 | void MiiManager::Clear() { | ||
| 244 | updated_flag = true; | ||
| 245 | std::fill(database.miis.begin(), database.miis.end(), MiiStoreData{}); | ||
| 246 | } | ||
| 247 | |||
| 248 | u32 MiiManager::Size() const { | ||
| 249 | return static_cast<u32>(std::count_if(database.miis.begin(), database.miis.end(), | ||
| 250 | [](const MiiStoreData& elem) { return elem.uuid; })); | ||
| 251 | } | ||
| 252 | |||
| 253 | MiiInfo MiiManager::GetInfo(u32 index) const { | ||
| 254 | return ConvertStoreDataToInfo(GetStoreData(index)); | ||
| 255 | } | ||
| 256 | |||
| 257 | MiiInfoElement MiiManager::GetInfoElement(u32 index) const { | ||
| 258 | return {GetInfo(index), Source::Database}; | ||
| 259 | } | ||
| 260 | |||
| 261 | MiiStoreData MiiManager::GetStoreData(u32 index) const { | ||
| 262 | return database.miis.at(index); | ||
| 263 | } | ||
| 264 | |||
| 265 | MiiStoreDataElement MiiManager::GetStoreDataElement(u32 index) const { | ||
| 266 | return {GetStoreData(index), Source::Database}; | ||
| 267 | } | ||
| 268 | |||
| 269 | bool MiiManager::Remove(Common::UUID uuid) { | ||
| 270 | const auto iter = std::find_if(database.miis.begin(), database.miis.end(), | ||
| 271 | [uuid](const MiiStoreData& elem) { return elem.uuid == uuid; }); | ||
| 272 | |||
| 273 | if (iter == database.miis.end()) | ||
| 274 | return false; | ||
| 275 | |||
| 276 | updated_flag = true; | ||
| 277 | *iter = MiiStoreData{}; | ||
| 278 | EnsureDatabasePartition(); | ||
| 279 | return true; | ||
| 280 | } | ||
| 281 | |||
| 282 | u32 MiiManager::IndexOf(Common::UUID uuid) const { | ||
| 283 | const auto iter = std::find_if(database.miis.begin(), database.miis.end(), | ||
| 284 | [uuid](const MiiStoreData& elem) { return elem.uuid == uuid; }); | ||
| 285 | |||
| 286 | if (iter == database.miis.end()) | ||
| 287 | return INVALID_INDEX; | ||
| 288 | |||
| 289 | return static_cast<u32>(std::distance(database.miis.begin(), iter)); | ||
| 290 | } | ||
| 291 | |||
| 292 | u32 MiiManager::IndexOf(const MiiInfo& info) const { | ||
| 293 | const auto iter = | ||
| 294 | std::find_if(database.miis.begin(), database.miis.end(), [&info](const MiiStoreData& elem) { | ||
| 295 | return ConvertStoreDataToInfo(elem) == info; | ||
| 296 | }); | ||
| 297 | |||
| 298 | if (iter == database.miis.end()) | ||
| 299 | return INVALID_INDEX; | ||
| 300 | |||
| 301 | return static_cast<u32>(std::distance(database.miis.begin(), iter)); | ||
| 302 | } | ||
| 303 | |||
| 304 | bool MiiManager::Move(Common::UUID uuid, u32 new_index) { | ||
| 305 | const auto index = IndexOf(uuid); | ||
| 306 | |||
| 307 | if (index == INVALID_INDEX || new_index >= MAX_MIIS) | ||
| 308 | return false; | ||
| 309 | |||
| 310 | updated_flag = true; | ||
| 311 | const auto moving = database.miis[index]; | ||
| 312 | const auto replacing = database.miis[new_index]; | ||
| 313 | if (replacing.uuid) { | ||
| 314 | database.miis[index] = replacing; | ||
| 315 | database.miis[new_index] = moving; | ||
| 316 | } else { | ||
| 317 | database.miis[index] = MiiStoreData{}; | ||
| 318 | database.miis[new_index] = moving; | ||
| 319 | } | ||
| 320 | |||
| 321 | EnsureDatabasePartition(); | ||
| 322 | return true; | ||
| 323 | } | ||
| 324 | |||
| 325 | bool MiiManager::AddOrReplace(const MiiStoreData& data) { | ||
| 326 | const auto index = IndexOf(data.uuid); | ||
| 327 | |||
| 328 | updated_flag = true; | ||
| 329 | if (index == INVALID_INDEX) { | ||
| 330 | const auto size = Size(); | ||
| 331 | if (size == MAX_MIIS) | ||
| 332 | return false; | ||
| 333 | database.miis[size] = data; | ||
| 334 | } else { | ||
| 335 | database.miis[index] = data; | ||
| 336 | } | ||
| 337 | |||
| 338 | return true; | ||
| 339 | } | ||
| 340 | |||
| 341 | bool MiiManager::DestroyFile() { | ||
| 342 | database = DEFAULT_MII_DATABASE; | ||
| 343 | updated_flag = false; | ||
| 344 | return DeleteFile(); | ||
| 345 | } | ||
| 346 | |||
| 347 | bool MiiManager::DeleteFile() { | ||
| 348 | const auto path = FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + MII_SAVE_DATABASE_PATH; | ||
| 349 | return FileUtil::Exists(path) && FileUtil::Delete(path); | ||
| 350 | } | ||
| 351 | |||
| 352 | void MiiManager::WriteToFile() { | ||
| 353 | const auto raw_path = | ||
| 354 | FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + "/system/save/8000000000000030"; | ||
| 355 | if (FileUtil::Exists(raw_path) && !FileUtil::IsDirectory(raw_path)) | ||
| 356 | FileUtil::Delete(raw_path); | ||
| 357 | |||
| 358 | const auto path = FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + MII_SAVE_DATABASE_PATH; | ||
| 359 | |||
| 360 | if (!FileUtil::CreateFullPath(path)) { | ||
| 361 | LOG_WARNING(Service_Mii, | ||
| 362 | "Failed to create full path of MiiDatabase.dat. Create the directory " | ||
| 363 | "nand/system/save/8000000000000030 to mitigate this " | ||
| 364 | "issue."); | ||
| 365 | return; | ||
| 366 | } | ||
| 367 | |||
| 368 | FileUtil::IOFile save(path, "wb"); | ||
| 369 | |||
| 370 | if (!save.IsOpen()) { | ||
| 371 | LOG_WARNING(Service_Mii, "Failed to write save data to file... No changes to user data " | ||
| 372 | "made in current session will be saved."); | ||
| 373 | return; | ||
| 374 | } | ||
| 375 | |||
| 376 | save.Resize(sizeof(MiiDatabase)); | ||
| 377 | if (save.WriteBytes(&database, sizeof(MiiDatabase)) != sizeof(MiiDatabase)) { | ||
| 378 | LOG_WARNING(Service_Mii, "Failed to write all data to save file... Data may be malformed " | ||
| 379 | "and/or regenerated on next run."); | ||
| 380 | save.Resize(0); | ||
| 381 | } | ||
| 382 | } | ||
| 383 | |||
| 384 | void MiiManager::ReadFromFile() { | ||
| 385 | FileUtil::IOFile save( | ||
| 386 | FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + MII_SAVE_DATABASE_PATH, "rb"); | ||
| 387 | |||
| 388 | if (!save.IsOpen()) { | ||
| 389 | LOG_WARNING(Service_ACC, "Failed to load profile data from save data... Generating new " | ||
| 390 | "blank Mii database with no Miis."); | ||
| 391 | std::memcpy(&database, &DEFAULT_MII_DATABASE, sizeof(MiiDatabase)); | ||
| 392 | return; | ||
| 393 | } | ||
| 394 | |||
| 395 | if (save.ReadBytes(&database, sizeof(MiiDatabase)) != sizeof(MiiDatabase)) { | ||
| 396 | LOG_WARNING(Service_ACC, "MiiDatabase.dat is smaller than expected... Generating new blank " | ||
| 397 | "Mii database with no Miis."); | ||
| 398 | std::memcpy(&database, &DEFAULT_MII_DATABASE, sizeof(MiiDatabase)); | ||
| 399 | return; | ||
| 400 | } | ||
| 401 | |||
| 402 | EnsureDatabasePartition(); | ||
| 403 | } | ||
| 404 | |||
| 405 | MiiStoreData MiiManager::CreateMiiWithUniqueUUID() const { | ||
| 406 | auto new_mii = DEFAULT_MII; | ||
| 407 | |||
| 408 | do { | ||
| 409 | new_mii.uuid = Common::UUID::Generate(); | ||
| 410 | } while (IndexOf(new_mii.uuid) != INVALID_INDEX); | ||
| 411 | |||
| 412 | return new_mii; | ||
| 413 | } | ||
| 414 | |||
| 415 | void MiiManager::EnsureDatabasePartition() { | ||
| 416 | std::stable_partition(database.miis.begin(), database.miis.end(), | ||
| 417 | [](const MiiStoreData& elem) { return elem.uuid; }); | ||
| 418 | } | ||
| 419 | |||
| 420 | } // namespace Service::Mii | ||
diff --git a/src/core/hle/service/mii/mii_manager.h b/src/core/hle/service/mii/mii_manager.h deleted file mode 100644 index fc742816a..000000000 --- a/src/core/hle/service/mii/mii_manager.h +++ /dev/null | |||
| @@ -1,273 +0,0 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/bit_field.h" | ||
| 8 | #include "common/common_funcs.h" | ||
| 9 | #include "common/uuid.h" | ||
| 10 | |||
| 11 | namespace Service::Mii { | ||
| 12 | |||
| 13 | constexpr std::size_t MAX_MIIS{100}; | ||
| 14 | constexpr u32 INVALID_INDEX{0xFFFFFFFF}; | ||
| 15 | |||
| 16 | struct RandomParameters { | ||
| 17 | u32 unknown_1{}; | ||
| 18 | u32 unknown_2{}; | ||
| 19 | u32 unknown_3{}; | ||
| 20 | }; | ||
| 21 | static_assert(sizeof(RandomParameters) == 0xC, "RandomParameters has incorrect size."); | ||
| 22 | |||
| 23 | enum class Source : u32 { | ||
| 24 | Database = 0, | ||
| 25 | Default = 1, | ||
| 26 | Account = 2, | ||
| 27 | Friend = 3, | ||
| 28 | }; | ||
| 29 | |||
| 30 | std::ostream& operator<<(std::ostream& os, Source source); | ||
| 31 | |||
| 32 | struct MiiInfo { | ||
| 33 | Common::UUID uuid{Common::INVALID_UUID}; | ||
| 34 | std::array<char16_t, 11> name{}; | ||
| 35 | u8 font_region{}; | ||
| 36 | u8 favorite_color{}; | ||
| 37 | u8 gender{}; | ||
| 38 | u8 height{}; | ||
| 39 | u8 weight{}; | ||
| 40 | u8 mii_type{}; | ||
| 41 | u8 mii_region{}; | ||
| 42 | u8 face_type{}; | ||
| 43 | u8 face_color{}; | ||
| 44 | u8 face_wrinkle{}; | ||
| 45 | u8 face_makeup{}; | ||
| 46 | u8 hair_type{}; | ||
| 47 | u8 hair_color{}; | ||
| 48 | bool hair_flip{}; | ||
| 49 | u8 eye_type{}; | ||
| 50 | u8 eye_color{}; | ||
| 51 | u8 eye_scale{}; | ||
| 52 | u8 eye_aspect_ratio{}; | ||
| 53 | u8 eye_rotate{}; | ||
| 54 | u8 eye_x{}; | ||
| 55 | u8 eye_y{}; | ||
| 56 | u8 eyebrow_type{}; | ||
| 57 | u8 eyebrow_color{}; | ||
| 58 | u8 eyebrow_scale{}; | ||
| 59 | u8 eyebrow_aspect_ratio{}; | ||
| 60 | u8 eyebrow_rotate{}; | ||
| 61 | u8 eyebrow_x{}; | ||
| 62 | u8 eyebrow_y{}; | ||
| 63 | u8 nose_type{}; | ||
| 64 | u8 nose_scale{}; | ||
| 65 | u8 nose_y{}; | ||
| 66 | u8 mouth_type{}; | ||
| 67 | u8 mouth_color{}; | ||
| 68 | u8 mouth_scale{}; | ||
| 69 | u8 mouth_aspect_ratio{}; | ||
| 70 | u8 mouth_y{}; | ||
| 71 | u8 facial_hair_color{}; | ||
| 72 | u8 beard_type{}; | ||
| 73 | u8 mustache_type{}; | ||
| 74 | u8 mustache_scale{}; | ||
| 75 | u8 mustache_y{}; | ||
| 76 | u8 glasses_type{}; | ||
| 77 | u8 glasses_color{}; | ||
| 78 | u8 glasses_scale{}; | ||
| 79 | u8 glasses_y{}; | ||
| 80 | u8 mole_type{}; | ||
| 81 | u8 mole_scale{}; | ||
| 82 | u8 mole_x{}; | ||
| 83 | u8 mole_y{}; | ||
| 84 | INSERT_PADDING_BYTES(1); | ||
| 85 | |||
| 86 | std::u16string Name() const; | ||
| 87 | }; | ||
| 88 | static_assert(sizeof(MiiInfo) == 0x58, "MiiInfo has incorrect size."); | ||
| 89 | static_assert(std::has_unique_object_representations_v<MiiInfo>, | ||
| 90 | "All bits of MiiInfo must contribute to its value."); | ||
| 91 | |||
| 92 | bool operator==(const MiiInfo& lhs, const MiiInfo& rhs); | ||
| 93 | bool operator!=(const MiiInfo& lhs, const MiiInfo& rhs); | ||
| 94 | |||
| 95 | #pragma pack(push, 4) | ||
| 96 | struct MiiInfoElement { | ||
| 97 | MiiInfo info{}; | ||
| 98 | Source source{}; | ||
| 99 | }; | ||
| 100 | static_assert(sizeof(MiiInfoElement) == 0x5C, "MiiInfoElement has incorrect size."); | ||
| 101 | |||
| 102 | struct MiiStoreBitFields { | ||
| 103 | union { | ||
| 104 | u32 word_0{}; | ||
| 105 | |||
| 106 | BitField<24, 8, u32> hair_type; | ||
| 107 | BitField<23, 1, u32> mole_type; | ||
| 108 | BitField<16, 7, u32> height; | ||
| 109 | BitField<15, 1, u32> hair_flip; | ||
| 110 | BitField<8, 7, u32> weight; | ||
| 111 | BitField<0, 7, u32> hair_color; | ||
| 112 | }; | ||
| 113 | |||
| 114 | union { | ||
| 115 | u32 word_1{}; | ||
| 116 | |||
| 117 | BitField<31, 1, u32> gender; | ||
| 118 | BitField<24, 7, u32> eye_color; | ||
| 119 | BitField<16, 7, u32> eyebrow_color; | ||
| 120 | BitField<8, 7, u32> mouth_color; | ||
| 121 | BitField<0, 7, u32> facial_hair_color; | ||
| 122 | }; | ||
| 123 | |||
| 124 | union { | ||
| 125 | u32 word_2{}; | ||
| 126 | |||
| 127 | BitField<31, 1, u32> mii_type; | ||
| 128 | BitField<24, 7, u32> glasses_color; | ||
| 129 | BitField<22, 2, u32> font_region; | ||
| 130 | BitField<16, 6, u32> eye_type; | ||
| 131 | BitField<14, 2, u32> mii_region; | ||
| 132 | BitField<8, 6, u32> mouth_type; | ||
| 133 | BitField<5, 3, u32> glasses_scale; | ||
| 134 | BitField<0, 5, u32> eye_y; | ||
| 135 | }; | ||
| 136 | |||
| 137 | union { | ||
| 138 | u32 word_3{}; | ||
| 139 | |||
| 140 | BitField<29, 3, u32> mustache_type; | ||
| 141 | BitField<24, 5, u32> eyebrow_type; | ||
| 142 | BitField<21, 3, u32> beard_type; | ||
| 143 | BitField<16, 5, u32> nose_type; | ||
| 144 | BitField<13, 3, u32> mouth_aspect; | ||
| 145 | BitField<8, 5, u32> nose_y; | ||
| 146 | BitField<5, 3, u32> eyebrow_aspect; | ||
| 147 | BitField<0, 5, u32> mouth_y; | ||
| 148 | }; | ||
| 149 | |||
| 150 | union { | ||
| 151 | u32 word_4{}; | ||
| 152 | |||
| 153 | BitField<29, 3, u32> eye_rotate; | ||
| 154 | BitField<24, 5, u32> mustache_y; | ||
| 155 | BitField<21, 3, u32> eye_aspect; | ||
| 156 | BitField<16, 5, u32> glasses_y; | ||
| 157 | BitField<13, 3, u32> eye_scale; | ||
| 158 | BitField<8, 5, u32> mole_x; | ||
| 159 | BitField<0, 5, u32> mole_y; | ||
| 160 | }; | ||
| 161 | |||
| 162 | union { | ||
| 163 | u32 word_5{}; | ||
| 164 | |||
| 165 | BitField<24, 5, u32> glasses_type; | ||
| 166 | BitField<20, 4, u32> face_type; | ||
| 167 | BitField<16, 4, u32> favorite_color; | ||
| 168 | BitField<12, 4, u32> face_wrinkle; | ||
| 169 | BitField<8, 4, u32> face_color; | ||
| 170 | BitField<4, 4, u32> eye_x; | ||
| 171 | BitField<0, 4, u32> face_makeup; | ||
| 172 | }; | ||
| 173 | |||
| 174 | union { | ||
| 175 | u32 word_6{}; | ||
| 176 | |||
| 177 | BitField<28, 4, u32> eyebrow_rotate; | ||
| 178 | BitField<24, 4, u32> eyebrow_scale; | ||
| 179 | BitField<20, 4, u32> eyebrow_y; | ||
| 180 | BitField<16, 4, u32> eyebrow_x; | ||
| 181 | BitField<12, 4, u32> mouth_scale; | ||
| 182 | BitField<8, 4, u32> nose_scale; | ||
| 183 | BitField<4, 4, u32> mole_scale; | ||
| 184 | BitField<0, 4, u32> mustache_scale; | ||
| 185 | }; | ||
| 186 | }; | ||
| 187 | static_assert(sizeof(MiiStoreBitFields) == 0x1C, "MiiStoreBitFields has incorrect size."); | ||
| 188 | static_assert(std::is_trivially_copyable_v<MiiStoreBitFields>, | ||
| 189 | "MiiStoreBitFields is not trivially copyable."); | ||
| 190 | |||
| 191 | struct MiiStoreData { | ||
| 192 | // This corresponds to the above structure MiiStoreBitFields. I did it like this because the | ||
| 193 | // BitField<> type makes this (and any thing that contains it) not trivially copyable, which is | ||
| 194 | // not suitable for our uses. | ||
| 195 | std::array<u8, 0x1C> data{}; | ||
| 196 | static_assert(sizeof(MiiStoreBitFields) == sizeof(data), "data field has incorrect size."); | ||
| 197 | |||
| 198 | std::array<char16_t, 10> name{}; | ||
| 199 | Common::UUID uuid{Common::INVALID_UUID}; | ||
| 200 | u16 crc_1{}; | ||
| 201 | u16 crc_2{}; | ||
| 202 | |||
| 203 | std::u16string Name() const; | ||
| 204 | }; | ||
| 205 | static_assert(sizeof(MiiStoreData) == 0x44, "MiiStoreData has incorrect size."); | ||
| 206 | |||
| 207 | struct MiiStoreDataElement { | ||
| 208 | MiiStoreData data{}; | ||
| 209 | Source source{}; | ||
| 210 | }; | ||
| 211 | static_assert(sizeof(MiiStoreDataElement) == 0x48, "MiiStoreDataElement has incorrect size."); | ||
| 212 | |||
| 213 | struct MiiDatabase { | ||
| 214 | u32 magic{}; // 'NFDB' | ||
| 215 | std::array<MiiStoreData, MAX_MIIS> miis{}; | ||
| 216 | INSERT_PADDING_BYTES(1); | ||
| 217 | u8 count{}; | ||
| 218 | u16 crc{}; | ||
| 219 | }; | ||
| 220 | static_assert(sizeof(MiiDatabase) == 0x1A98, "MiiDatabase has incorrect size."); | ||
| 221 | #pragma pack(pop) | ||
| 222 | |||
| 223 | // The Mii manager is responsible for loading and storing the Miis to the database in NAND along | ||
| 224 | // with providing an easy interface for HLE emulation of the mii service. | ||
| 225 | class MiiManager { | ||
| 226 | public: | ||
| 227 | MiiManager(); | ||
| 228 | ~MiiManager(); | ||
| 229 | |||
| 230 | MiiInfo CreateRandom(RandomParameters params); | ||
| 231 | MiiInfo CreateDefault(u32 index); | ||
| 232 | |||
| 233 | bool CheckUpdatedFlag() const; | ||
| 234 | void ResetUpdatedFlag(); | ||
| 235 | |||
| 236 | bool IsTestModeEnabled() const; | ||
| 237 | |||
| 238 | bool Empty() const; | ||
| 239 | bool Full() const; | ||
| 240 | |||
| 241 | void Clear(); | ||
| 242 | |||
| 243 | u32 Size() const; | ||
| 244 | |||
| 245 | MiiInfo GetInfo(u32 index) const; | ||
| 246 | MiiInfoElement GetInfoElement(u32 index) const; | ||
| 247 | MiiStoreData GetStoreData(u32 index) const; | ||
| 248 | MiiStoreDataElement GetStoreDataElement(u32 index) const; | ||
| 249 | |||
| 250 | bool Remove(Common::UUID uuid); | ||
| 251 | u32 IndexOf(Common::UUID uuid) const; | ||
| 252 | u32 IndexOf(const MiiInfo& info) const; | ||
| 253 | |||
| 254 | bool Move(Common::UUID uuid, u32 new_index); | ||
| 255 | bool AddOrReplace(const MiiStoreData& data); | ||
| 256 | |||
| 257 | bool DestroyFile(); | ||
| 258 | bool DeleteFile(); | ||
| 259 | |||
| 260 | private: | ||
| 261 | void WriteToFile(); | ||
| 262 | void ReadFromFile(); | ||
| 263 | |||
| 264 | MiiStoreData CreateMiiWithUniqueUUID() const; | ||
| 265 | |||
| 266 | void EnsureDatabasePartition(); | ||
| 267 | |||
| 268 | MiiDatabase database; | ||
| 269 | bool updated_flag{}; | ||
| 270 | bool is_test_mode_enabled{}; | ||
| 271 | }; | ||
| 272 | |||
| 273 | }; // namespace Service::Mii | ||
diff --git a/src/core/hle/service/mii/raw_data.cpp b/src/core/hle/service/mii/raw_data.cpp new file mode 100644 index 000000000..25d7bae0c --- /dev/null +++ b/src/core/hle/service/mii/raw_data.cpp | |||
| @@ -0,0 +1,2261 @@ | |||
| 1 | // MIT License | ||
| 2 | // | ||
| 3 | // Copyright (c) Ryujinx Team and Contributors | ||
| 4 | // | ||
| 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and | ||
| 6 | // associated documentation files (the "Software"), to deal in the Software without restriction, | ||
| 7 | // including without limitation the rights to use, copy, modify, merge, publish, distribute, | ||
| 8 | // sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is | ||
| 9 | // furnished to do so, subject to the following conditions: | ||
| 10 | // | ||
| 11 | // The above copyright notice and this permission notice shall be included in all copies or | ||
| 12 | // substantial portions of the Software. | ||
| 13 | // | ||
| 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT | ||
| 15 | // NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| 16 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | ||
| 17 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 19 | // | ||
| 20 | |||
| 21 | #include "core/hle/service/mii/raw_data.h" | ||
| 22 | |||
| 23 | namespace Service::Mii::RawData { | ||
| 24 | |||
| 25 | const std::array<u8, 1728> DefaultMii{ | ||
| 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 27 | 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 28 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 29 | 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 30 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 31 | 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 32 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 33 | 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 34 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 35 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 36 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 37 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 39 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 40 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 41 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 42 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 43 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 44 | 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 45 | 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 46 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 49 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 50 | 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 52 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 53 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 54 | 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 55 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 56 | 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 57 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 58 | 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 59 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 60 | 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 61 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 62 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 63 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 64 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 65 | 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, | ||
| 66 | 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 68 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 69 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 70 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 71 | 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 72 | 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 73 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 76 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 77 | 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, | ||
| 79 | 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 80 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 81 | 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 82 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 83 | 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 84 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 85 | 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 86 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 87 | 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 88 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 89 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 90 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 91 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 92 | 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, | ||
| 93 | 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 94 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 95 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 96 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 97 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 98 | 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 99 | 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 100 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 102 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 103 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 104 | 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 105 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, | ||
| 106 | 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 107 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 108 | 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 109 | 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 110 | 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 111 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 112 | 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 113 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 114 | 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 115 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 116 | 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 117 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 118 | 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 119 | 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, | ||
| 120 | 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 121 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 122 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 123 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 124 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 125 | 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 126 | 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 127 | 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 128 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 129 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 130 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 131 | 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 132 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x6f, 0x00, | ||
| 133 | 0x20, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 134 | |||
| 135 | const std::array<u8, 3672> RandomMiiFaceline{ | ||
| 136 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 137 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 138 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 139 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 140 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 144 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 145 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 148 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 149 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 150 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 151 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 152 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 153 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 154 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 155 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 156 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 157 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 158 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 160 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 161 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 162 | 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 163 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 164 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 166 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 168 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 169 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 170 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 171 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 172 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 173 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 174 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 175 | 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 176 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 177 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 178 | 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 179 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 180 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 181 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 182 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 184 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 185 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 186 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 187 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 188 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 189 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 190 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 191 | 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 192 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 193 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 194 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 195 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 196 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 197 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 198 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 199 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 200 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 201 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 202 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 203 | 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 204 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 205 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 206 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 207 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 208 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 209 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 210 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 211 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 212 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 213 | 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 214 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 215 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 216 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 217 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 218 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 220 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 221 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 222 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 223 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 224 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 226 | 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 227 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 228 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 229 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 230 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 231 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 232 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 233 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 234 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 235 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 236 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 237 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 238 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 240 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 241 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 242 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 243 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 244 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 245 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 246 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 247 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 248 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 249 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 250 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 251 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 252 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 253 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 254 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 255 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 256 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 257 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 258 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 259 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 260 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 261 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 262 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 263 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 264 | 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 265 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 266 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 267 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 268 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 269 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 270 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 271 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 272 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 273 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 274 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 275 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 276 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 277 | 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 278 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 279 | 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 280 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 281 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 282 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 283 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 284 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 285 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 286 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 287 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 288 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 289 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 290 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 291 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 292 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 293 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 294 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 295 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 296 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 297 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 298 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 299 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 300 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 301 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 302 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 303 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 304 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 305 | 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 306 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 307 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 308 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 309 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 310 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 311 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 312 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 313 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 314 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 315 | 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 316 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 317 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 318 | 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 319 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 320 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 321 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 322 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 323 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 324 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 325 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 326 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 327 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 328 | 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 329 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 330 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 331 | 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 332 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 333 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 334 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 335 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 336 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 337 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 338 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 339 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 340 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 341 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 342 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 343 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 344 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 345 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 346 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 347 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 348 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 349 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 350 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 351 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 352 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 353 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 354 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 355 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 356 | 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 357 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 358 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 359 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 360 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 361 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 362 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 363 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 364 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 365 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 366 | |||
| 367 | const std::array<u8, 1200> RandomMiiFacelineColor{ | ||
| 368 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 369 | 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 370 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 371 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 372 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 373 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 374 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 375 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 376 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 377 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 378 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 379 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 380 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 381 | 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 382 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 383 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 384 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 385 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 386 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 387 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 388 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 389 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 390 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 391 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 392 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 393 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 394 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 395 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 396 | 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 397 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 398 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 399 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 400 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 401 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 402 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 403 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 404 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 405 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 406 | 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 407 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 408 | 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 409 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 410 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 411 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 412 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 413 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 414 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 415 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 416 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 417 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 418 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 419 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 420 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 421 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 422 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 423 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 424 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 425 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 426 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 427 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 428 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 429 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 430 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 431 | 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 432 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 433 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 434 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 435 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 436 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 437 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 438 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 439 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 440 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 441 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 442 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 443 | |||
| 444 | const std::array<u8, 3672> RandomMiiFacelineWrinkle{ | ||
| 445 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 446 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 447 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 448 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 449 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 450 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 451 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 452 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 453 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 454 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 455 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 456 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 457 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 458 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 459 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 460 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 461 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 462 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 463 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 464 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 465 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 466 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 467 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 468 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 469 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 470 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 471 | 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 472 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 473 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 474 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 475 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 476 | 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 477 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 478 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 479 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 480 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 481 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 482 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 483 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 484 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 485 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 486 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 487 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 488 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 489 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 490 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 491 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 492 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 493 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 494 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 495 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 496 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 497 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 498 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 499 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 500 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 501 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 502 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 503 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 504 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 505 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 508 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 509 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 510 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 511 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 513 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 514 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 515 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 516 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 517 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 518 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 519 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 520 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 521 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 522 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 523 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 524 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 525 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 526 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 527 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 528 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 529 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 530 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 531 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 532 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 533 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 534 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 535 | 0x14, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 536 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 537 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 538 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 539 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 540 | 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 541 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 542 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 543 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 544 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 545 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 546 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 547 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 548 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 549 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 550 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 551 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 552 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 553 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 554 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 555 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 556 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 557 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 559 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 560 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 561 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 562 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 563 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 564 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 565 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 566 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 567 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 568 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 569 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 570 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 571 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 573 | 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 575 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 576 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 577 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 578 | 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 579 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 580 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 581 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 582 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 583 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 584 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 585 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 586 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 587 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 588 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 589 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 590 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 591 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 592 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 593 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 594 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 595 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 596 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 597 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 598 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 599 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 601 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 602 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 603 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 604 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 605 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 606 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 607 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 608 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 609 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 610 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 611 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 612 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 613 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 614 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 615 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 616 | 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 617 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 618 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 619 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 620 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 621 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 622 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 623 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 624 | 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 625 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 626 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 627 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 628 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 629 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 630 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 631 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 632 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 633 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 634 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 635 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 636 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 637 | 0x14, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 638 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 639 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 640 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 641 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 642 | 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 643 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 644 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 645 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 646 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 647 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 648 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 649 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 650 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 651 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 652 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 653 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 654 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 655 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 656 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 657 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 658 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 659 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 660 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 662 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 663 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 664 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 665 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 666 | 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 667 | 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 668 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 669 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 670 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 671 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 672 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 673 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 674 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 675 | |||
| 676 | const std::array<u8, 3672> RandomMiiFacelineMakeup{ | ||
| 677 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 678 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 679 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 680 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 681 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 682 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 683 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 684 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 685 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 686 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 687 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 688 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 689 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 690 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 691 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 692 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 693 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 694 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 695 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 696 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 697 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 698 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 699 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 700 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 701 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 702 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 703 | 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 704 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 705 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 706 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 707 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 708 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 709 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 710 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 711 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 712 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 713 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 714 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 715 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 716 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 717 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 718 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 719 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 720 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 721 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 722 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 723 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 724 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 725 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 726 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 727 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 728 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 729 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 730 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 731 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 732 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 733 | 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 734 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 735 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 736 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 737 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 738 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 739 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 740 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 741 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 742 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 743 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 744 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 745 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 746 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 747 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 748 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 749 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 750 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 751 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 752 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 753 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 754 | 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 755 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 756 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 757 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 758 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 759 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 760 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 761 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 762 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 763 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 764 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 765 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 766 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 767 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 768 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 769 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 770 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 771 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 772 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 773 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 774 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 775 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 776 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 777 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 778 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 779 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 780 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 781 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 782 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 783 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 784 | 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 785 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 786 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 787 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 788 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 789 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 790 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 791 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 792 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 793 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 794 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 795 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 796 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 797 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 798 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 799 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 800 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 801 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 802 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 803 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 804 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 805 | 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 806 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 807 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 808 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 809 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 810 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 811 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 812 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 813 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 814 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 815 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 816 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 817 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 818 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 819 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 820 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 821 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 822 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 823 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 824 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 825 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 826 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 827 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 828 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 829 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 830 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 831 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 832 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 833 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 834 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 835 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 836 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 837 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 838 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 839 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 840 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 841 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 842 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 843 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 844 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 845 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 846 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 847 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 848 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 849 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 850 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 851 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 852 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 853 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 854 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 855 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 856 | 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 857 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 858 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 859 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 860 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 861 | 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 862 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 863 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 864 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 865 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 866 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 867 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 868 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 869 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 870 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 871 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 872 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 873 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 874 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 875 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 876 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 877 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 878 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 879 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 880 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 881 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 882 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 883 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 884 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 885 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 886 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 887 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 888 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 889 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 890 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 891 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 892 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 893 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 894 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 895 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 896 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 897 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 898 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 899 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 900 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 901 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 902 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 903 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 904 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 905 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 906 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 907 | |||
| 908 | const std::array<u8, 3672> RandomMiiHairType{ | ||
| 909 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, | ||
| 910 | 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, | ||
| 911 | 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 912 | 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, | ||
| 913 | 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 914 | 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 915 | 0x34, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 916 | 0x40, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, | ||
| 917 | 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 918 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 919 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 920 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 921 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 922 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 923 | 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 924 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 925 | 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, | ||
| 926 | 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, | ||
| 927 | 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, | ||
| 928 | 0x36, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 929 | 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, | ||
| 930 | 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 931 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 932 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 933 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 934 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 935 | 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 936 | 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 937 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, | ||
| 938 | 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, | ||
| 939 | 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, | ||
| 940 | 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, | ||
| 941 | 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, | ||
| 942 | 0x49, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, | ||
| 943 | 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 944 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 945 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 946 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 947 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 948 | 0x26, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, | ||
| 949 | 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 950 | 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, | ||
| 951 | 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, | ||
| 952 | 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, | ||
| 953 | 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, | ||
| 954 | 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, | ||
| 955 | 0x3c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, | ||
| 956 | 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, | ||
| 957 | 0x4c, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 958 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 959 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 960 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 961 | 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, | ||
| 962 | 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 963 | 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, | ||
| 964 | 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 965 | 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 966 | 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, | ||
| 967 | 0x38, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, | ||
| 968 | 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, | ||
| 969 | 0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, | ||
| 970 | 0x51, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 971 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 972 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 973 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 974 | 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 975 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, | ||
| 976 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, | ||
| 977 | 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, | ||
| 978 | 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, | ||
| 979 | 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, | ||
| 980 | 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 981 | 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, | ||
| 982 | 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, | ||
| 983 | 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 984 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 985 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 986 | 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 987 | 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 988 | 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 989 | 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, | ||
| 990 | 0x41, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, | ||
| 991 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 992 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 993 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 994 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 995 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 996 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 997 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 998 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 999 | 0x13, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, | ||
| 1000 | 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1001 | 0x2d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1002 | 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, | ||
| 1003 | 0x41, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, | ||
| 1004 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1005 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1006 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1007 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1008 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1009 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1010 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1011 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 1012 | 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 1013 | 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, | ||
| 1014 | 0x2f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, | ||
| 1015 | 0x37, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, | ||
| 1016 | 0x43, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1017 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1018 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1019 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1020 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1021 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1022 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1023 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1024 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1025 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1026 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1027 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1028 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1029 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1030 | 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 1031 | 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, | ||
| 1032 | 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, | ||
| 1033 | 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, | ||
| 1034 | 0x53, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1035 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1036 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1037 | 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1038 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1039 | 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1040 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1041 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1042 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 1043 | 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | ||
| 1044 | 0x2e, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, | ||
| 1045 | 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, | ||
| 1046 | 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, | ||
| 1047 | 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, | ||
| 1048 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1049 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1050 | 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1051 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1052 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1053 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1054 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 1055 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, | ||
| 1056 | 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, | ||
| 1057 | 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, | ||
| 1058 | 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, | ||
| 1059 | 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, | ||
| 1060 | 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1061 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1062 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, | ||
| 1063 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1064 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1065 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1066 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1067 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 1068 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, | ||
| 1069 | 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 1070 | 0x2a, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, | ||
| 1071 | 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, | ||
| 1072 | 0x47, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, | ||
| 1073 | 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, | ||
| 1074 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1075 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1076 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1077 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1078 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1079 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1080 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1081 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1082 | 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, | ||
| 1083 | 0x3a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, | ||
| 1084 | 0x40, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, | ||
| 1085 | 0x4a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, | ||
| 1086 | 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1087 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1088 | 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1089 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1090 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1091 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1092 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1093 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1094 | 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 1095 | 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, | ||
| 1096 | 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, | ||
| 1097 | 0x45, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, | ||
| 1098 | 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, | ||
| 1099 | 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1100 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1101 | 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1102 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1103 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1104 | 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1105 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1106 | 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, | ||
| 1107 | 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1108 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1109 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1110 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1111 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1112 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1113 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1114 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1115 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1116 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1117 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1118 | 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, | ||
| 1119 | 0x3e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, | ||
| 1120 | 0x51, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1121 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1122 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1123 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1124 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1126 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1127 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1128 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1129 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1130 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1131 | 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, | ||
| 1132 | 0x45, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, | ||
| 1133 | 0x53, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1134 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1135 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1136 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1137 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1138 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1139 | |||
| 1140 | const std::array<u8, 1800> RandomMiiHairColor{ | ||
| 1141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1144 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1145 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1148 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1149 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1150 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1151 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1152 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1153 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1154 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1155 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1156 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1157 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1158 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1160 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1161 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1162 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1163 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1164 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1166 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1168 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1169 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1170 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1171 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1172 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1173 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1174 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1175 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1176 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1177 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1178 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1179 | 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1180 | 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1181 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1182 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1183 | 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1184 | 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1185 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1186 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1187 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1188 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1189 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1190 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1191 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1192 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1193 | 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1194 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1195 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1196 | 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1197 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1198 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1199 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1200 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1201 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1202 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1203 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1204 | 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1205 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1206 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1207 | 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1208 | 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1209 | 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1210 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1211 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1212 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1213 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1214 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1215 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1216 | 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1217 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1218 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1220 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1221 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1222 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1223 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1224 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1226 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1227 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1228 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1229 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1230 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1231 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1232 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1233 | 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1234 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1235 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1236 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1237 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1238 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1240 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1241 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1242 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1243 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1244 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1245 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1246 | 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1247 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1248 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1249 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1250 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1251 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1252 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1253 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1254 | |||
| 1255 | const std::array<u8, 3672> RandomMiiEyeType{ | ||
| 1256 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 1257 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1258 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1259 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1260 | 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1261 | 0x24, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1262 | 0x2b, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 1263 | 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1264 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1265 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1266 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1267 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1268 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1269 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1270 | 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1271 | 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1272 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1273 | 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 1274 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, | ||
| 1275 | 0x2f, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1276 | 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1277 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1278 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1279 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1280 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1281 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1282 | 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1283 | 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1284 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1285 | 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1286 | 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 1287 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, | ||
| 1288 | 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1289 | 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1290 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1291 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1292 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1293 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1294 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1295 | 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1296 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1297 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1298 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1299 | 0x16, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, | ||
| 1300 | 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, | ||
| 1301 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, | ||
| 1302 | 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 1303 | 0x35, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 1304 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1305 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1306 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1307 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 1308 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1309 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1310 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1311 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 1312 | 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 1313 | 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, | ||
| 1314 | 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, | ||
| 1315 | 0x2f, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1316 | 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1317 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1318 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1319 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1320 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1321 | 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1322 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1323 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1324 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1325 | 0x1d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1326 | 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 1327 | 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 1328 | 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1329 | 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1330 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1331 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1332 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1333 | 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1334 | 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1335 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1336 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1337 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 1338 | 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 1339 | 0x29, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 1340 | 0x35, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 1341 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1342 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1343 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1344 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1345 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1346 | 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1347 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1348 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1349 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1350 | 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1351 | 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1352 | 0x2c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1353 | 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1354 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1355 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1356 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1357 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1358 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, | ||
| 1359 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1360 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1361 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1362 | 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 1363 | 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, | ||
| 1364 | 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, | ||
| 1365 | 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, | ||
| 1366 | 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1367 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1368 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1369 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1370 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1371 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1372 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1373 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1374 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1375 | 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 1376 | 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | ||
| 1377 | 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1378 | 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, | ||
| 1379 | 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, | ||
| 1380 | 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, | ||
| 1381 | 0x39, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1382 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1383 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1384 | 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1385 | 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1386 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1387 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1388 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, | ||
| 1389 | 0x19, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 1390 | 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 1391 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1392 | 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 1393 | 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 1394 | 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1395 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1396 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1397 | 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1398 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1399 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1400 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1401 | 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1402 | 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 1403 | 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 1404 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1405 | 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 1406 | 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 1407 | 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1408 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1409 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, | ||
| 1410 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1411 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1412 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1413 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1414 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1415 | 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1416 | 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 1417 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, | ||
| 1418 | 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, | ||
| 1419 | 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, | ||
| 1420 | 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, | ||
| 1421 | 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1422 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1423 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1424 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1425 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1426 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1427 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 1428 | 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | ||
| 1429 | 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 1430 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, | ||
| 1431 | 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, | ||
| 1432 | 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, | ||
| 1433 | 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, | ||
| 1434 | 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1435 | 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1436 | 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1437 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1438 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1439 | 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1440 | 0x15, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1441 | 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 1442 | 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1443 | 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 1444 | 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, | ||
| 1445 | 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, | ||
| 1446 | 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, | ||
| 1447 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1448 | 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1449 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1450 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1451 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1452 | 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1453 | 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, | ||
| 1454 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, | ||
| 1455 | 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, | ||
| 1456 | 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1457 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1458 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1459 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1460 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1461 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1462 | 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1463 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1464 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 1465 | 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1466 | 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 1467 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 1468 | 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, | ||
| 1469 | 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1470 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1471 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1472 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1473 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1474 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1475 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1476 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1477 | 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 1478 | 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, | ||
| 1479 | 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 1480 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, | ||
| 1481 | 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, | ||
| 1482 | 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1483 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1484 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1485 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1486 | |||
| 1487 | const std::array<u8, 588> RandomMiiEyeColor{ | ||
| 1488 | 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1489 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1490 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1491 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1492 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1493 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1494 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1495 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1496 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1497 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1498 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1499 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1500 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1501 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1502 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1503 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1504 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1505 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1508 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1509 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1510 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1511 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1513 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1514 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1515 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1516 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1517 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1518 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1519 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1520 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1521 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1522 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1523 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1524 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1525 | |||
| 1526 | const std::array<u8, 3672> RandomMiiEyebrowType{ | ||
| 1527 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1528 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1529 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1530 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1531 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1532 | 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1533 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1534 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1535 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1536 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1537 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1538 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1539 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1540 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1541 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1542 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1543 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1544 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1545 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1546 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1547 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1548 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1549 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1550 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1551 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1552 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1553 | 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1554 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1555 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1556 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1557 | 0x0e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1559 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1560 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1561 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1562 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1563 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1564 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1565 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1566 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1567 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1568 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1569 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1570 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1571 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 1572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1573 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1575 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1576 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1577 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1578 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 1579 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1580 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1581 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1582 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1583 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 1584 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1585 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1586 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1587 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1588 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1589 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1590 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1591 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1592 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1593 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1594 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1595 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1596 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1597 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1598 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1599 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1601 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1602 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1603 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1604 | 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1605 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1606 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1607 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1608 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1609 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1610 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1611 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1612 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1613 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1614 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1615 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1616 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1617 | 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1618 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1619 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1620 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1621 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 1622 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1623 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1624 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1625 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1626 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1627 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1628 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1629 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1630 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1631 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1632 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1633 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, | ||
| 1634 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 1635 | 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1636 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1637 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1638 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1639 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1640 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1641 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1642 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1643 | 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1644 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1645 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1646 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1647 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1648 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1649 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1650 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1651 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1652 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1653 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1654 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1655 | 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1656 | 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1657 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1658 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1659 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1660 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1662 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1663 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1664 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1665 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1666 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1667 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1668 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1669 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1670 | 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1671 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1672 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1673 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1674 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1675 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1676 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1677 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1678 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1679 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1680 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1681 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1682 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1683 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1684 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1685 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1686 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1687 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1688 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1689 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1690 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1691 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1692 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1693 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1694 | 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1695 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1696 | 0x0f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1697 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1698 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1699 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1700 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1701 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1702 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1703 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1704 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1705 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1706 | 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1707 | 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1708 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1709 | 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1710 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1711 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1712 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1713 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1714 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1715 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1716 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1717 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1718 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1719 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1720 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1721 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1722 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1723 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1724 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1725 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1726 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1727 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1728 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1729 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1730 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1731 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1732 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1733 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1734 | 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1735 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1736 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1737 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1738 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1739 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1740 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1741 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1742 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1743 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1744 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1745 | 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1746 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1747 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1748 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1749 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1750 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1751 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1752 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1753 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1754 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1755 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1756 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1757 | |||
| 1758 | const std::array<u8, 3672> RandomMiiNoseType{ | ||
| 1759 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1760 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1761 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1762 | 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1763 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1764 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1765 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1766 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1767 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1768 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1769 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1770 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1771 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1772 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1773 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1774 | 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1775 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1776 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1777 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1778 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1779 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1780 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1781 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1782 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1783 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1784 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1785 | 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1786 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1787 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1788 | 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1789 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1790 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1791 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1792 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1793 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1794 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1795 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1796 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1797 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1798 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1799 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1800 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1801 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1802 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1803 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1804 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1805 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1806 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1807 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1808 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1809 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1810 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 1811 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1812 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1813 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1814 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1815 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1816 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1817 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1818 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1819 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1820 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1821 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1822 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1823 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1824 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1825 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1826 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1827 | 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1828 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1829 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1830 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1831 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1832 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1833 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1834 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1835 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1836 | 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1837 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 1838 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1839 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1840 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1841 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1842 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1843 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1844 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1845 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1846 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1847 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1848 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1849 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1850 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1851 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1852 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1853 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1854 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1855 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1856 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1857 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1858 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1859 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1860 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1861 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1862 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1863 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 1864 | 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1865 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1866 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1867 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1868 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1869 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1870 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1871 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1872 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1873 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1874 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1875 | 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1876 | 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1877 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1878 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1879 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1880 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1881 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1882 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1883 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1884 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1885 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1886 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1887 | 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1888 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1889 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1890 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1891 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1892 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1893 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1894 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1895 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1896 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1897 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1898 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1899 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1900 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1901 | 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1902 | 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1903 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1904 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1905 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1906 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1907 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1908 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1909 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1910 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1911 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1912 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 1913 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1914 | 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1915 | 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 1916 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1917 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1918 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1919 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1920 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1921 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1922 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1923 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1924 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1925 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1926 | 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1927 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1928 | 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1929 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1930 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1931 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1932 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1933 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1934 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1935 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1936 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1937 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1938 | 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1939 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 1940 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1941 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1942 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1943 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1944 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1945 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1946 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1947 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1948 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1949 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1950 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 1951 | 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 1952 | 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 1953 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 1954 | 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1955 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1956 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1957 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1958 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1959 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1960 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1961 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1962 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1963 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 1964 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 1965 | 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1966 | 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1967 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1968 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1969 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1970 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1971 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1972 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1973 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1974 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1975 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 1976 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1977 | 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1978 | 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 1979 | 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1980 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1981 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1982 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1983 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1984 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1985 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1986 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1987 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1988 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 1989 | |||
| 1990 | const std::array<u8, 3672> RandomMiiMouthType{ | ||
| 1991 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 1992 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 1993 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 1994 | 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 1995 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 1996 | 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | ||
| 1997 | 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 1998 | 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 1999 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2000 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2001 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2002 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2003 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2004 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2005 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 2006 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 2007 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2008 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 2009 | 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 2010 | 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2011 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2012 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2013 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2014 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2015 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2016 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2017 | 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2018 | 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 2019 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 2020 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 2021 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2022 | 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | ||
| 2023 | 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2024 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2025 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2026 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2027 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2028 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2029 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2030 | 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 2031 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 2032 | 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2033 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 2034 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 2035 | 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 2036 | 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2037 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2038 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2039 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2040 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2041 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2042 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 2043 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 2044 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 2045 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2046 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 2047 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2048 | 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2049 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2050 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2051 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2052 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2053 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2054 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2055 | 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2056 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 2057 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, | ||
| 2058 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2059 | 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 2060 | 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 2061 | 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, | ||
| 2062 | 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2063 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2064 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2065 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2066 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2067 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2068 | 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2069 | 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 2070 | 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2071 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 2072 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2073 | 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2074 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2075 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2076 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2077 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2078 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2079 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2080 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2081 | 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 2082 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 2083 | 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 2084 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 2085 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 2086 | 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, | ||
| 2087 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2088 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2089 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2090 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2091 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2092 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2093 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 2094 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 2095 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, | ||
| 2096 | 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2097 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 2098 | 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2099 | 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2100 | 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2102 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2103 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2104 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2105 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2106 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2107 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 2108 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 2109 | 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2110 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 2111 | 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 2112 | 0x1e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 2113 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2114 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2115 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2116 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2118 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2119 | 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2120 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 2121 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 2122 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2123 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 2124 | 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, | ||
| 2125 | 0x1e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, | ||
| 2126 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2127 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2128 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2129 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2130 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2131 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2132 | 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2133 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 2134 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 2135 | 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 2136 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2137 | 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, | ||
| 2138 | 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2139 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2140 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2144 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 2145 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 2146 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 2147 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2148 | 0x0f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 2149 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, | ||
| 2150 | 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2151 | 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2152 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2153 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2154 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2155 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2156 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2157 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2158 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 2159 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 2160 | 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2161 | 0x0f, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, | ||
| 2162 | 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, | ||
| 2163 | 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2164 | 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2166 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2168 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2169 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2170 | 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2171 | 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, | ||
| 2172 | 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 2173 | 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, | ||
| 2174 | 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, | ||
| 2175 | 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 2176 | 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2177 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2178 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2179 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2180 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2181 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2182 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2183 | 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, | ||
| 2184 | 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | ||
| 2185 | 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, | ||
| 2186 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 2187 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2188 | 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 2189 | 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2190 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2191 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2192 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2193 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2194 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2195 | 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, | ||
| 2196 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, | ||
| 2197 | 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, | ||
| 2198 | 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, | ||
| 2199 | 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, | ||
| 2200 | 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, | ||
| 2201 | 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, | ||
| 2202 | 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2203 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2204 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2205 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2206 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2207 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, | ||
| 2208 | 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2209 | 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, | ||
| 2210 | 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, | ||
| 2211 | 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, | ||
| 2212 | 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, | ||
| 2213 | 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, | ||
| 2214 | 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, | ||
| 2215 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2216 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2217 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2218 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2220 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 2221 | |||
| 2222 | const std::array<u8, 588> RandomMiiGlassType{ | ||
| 2223 | 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, | ||
| 2224 | 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2226 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2227 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2228 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2229 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2230 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2231 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2232 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2233 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2234 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2235 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, | ||
| 2236 | 0x56, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, | ||
| 2237 | 0x60, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2238 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2240 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2241 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2242 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2243 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2244 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2245 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2246 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2247 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, | ||
| 2248 | 0x4e, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, | ||
| 2249 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, | ||
| 2250 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2251 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2252 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2253 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2254 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2255 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2256 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2257 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2258 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 2259 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||
| 2260 | |||
| 2261 | } // namespace Service::Mii::RawData | ||
diff --git a/src/core/hle/service/mii/raw_data.h b/src/core/hle/service/mii/raw_data.h new file mode 100644 index 000000000..a02a5c0fd --- /dev/null +++ b/src/core/hle/service/mii/raw_data.h | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | // Copyright 2020 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <array> | ||
| 8 | |||
| 9 | #include "common/common_types.h" | ||
| 10 | |||
| 11 | namespace Service::Mii::RawData { | ||
| 12 | |||
| 13 | extern const std::array<u8, 1728> DefaultMii; | ||
| 14 | extern const std::array<u8, 3672> RandomMiiFaceline; | ||
| 15 | extern const std::array<u8, 1200> RandomMiiFacelineColor; | ||
| 16 | extern const std::array<u8, 3672> RandomMiiFacelineWrinkle; | ||
| 17 | extern const std::array<u8, 3672> RandomMiiFacelineMakeup; | ||
| 18 | extern const std::array<u8, 3672> RandomMiiHairType; | ||
| 19 | extern const std::array<u8, 1800> RandomMiiHairColor; | ||
| 20 | extern const std::array<u8, 3672> RandomMiiEyeType; | ||
| 21 | extern const std::array<u8, 588> RandomMiiEyeColor; | ||
| 22 | extern const std::array<u8, 3672> RandomMiiEyebrowType; | ||
| 23 | extern const std::array<u8, 3672> RandomMiiNoseType; | ||
| 24 | extern const std::array<u8, 3672> RandomMiiMouthType; | ||
| 25 | extern const std::array<u8, 588> RandomMiiGlassType; | ||
| 26 | |||
| 27 | } // namespace Service::Mii::RawData | ||
diff --git a/src/core/hle/service/mii/types.h b/src/core/hle/service/mii/types.h new file mode 100644 index 000000000..d65a1055e --- /dev/null +++ b/src/core/hle/service/mii/types.h | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | // Copyright 2020 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/common_funcs.h" | ||
| 8 | #include "common/common_types.h" | ||
| 9 | |||
| 10 | namespace Service::Mii { | ||
| 11 | |||
| 12 | enum class Age : u32 { | ||
| 13 | Young, | ||
| 14 | Normal, | ||
| 15 | Old, | ||
| 16 | All, | ||
| 17 | }; | ||
| 18 | |||
| 19 | enum class BeardType : u32 { | ||
| 20 | None, | ||
| 21 | Beard1, | ||
| 22 | Beard2, | ||
| 23 | Beard3, | ||
| 24 | Beard4, | ||
| 25 | Beard5, | ||
| 26 | }; | ||
| 27 | |||
| 28 | enum class BeardAndMustacheFlag : u32 { Beard = 1, Mustache, All = Beard | Mustache }; | ||
| 29 | DECLARE_ENUM_FLAG_OPERATORS(BeardAndMustacheFlag); | ||
| 30 | |||
| 31 | enum class FontRegion : u32 { | ||
| 32 | Standard, | ||
| 33 | China, | ||
| 34 | Korea, | ||
| 35 | Taiwan, | ||
| 36 | }; | ||
| 37 | |||
| 38 | enum class Gender : u32 { | ||
| 39 | Male, | ||
| 40 | Female, | ||
| 41 | All, | ||
| 42 | Maximum = Female, | ||
| 43 | }; | ||
| 44 | |||
| 45 | enum class HairFlip : u32 { | ||
| 46 | Left, | ||
| 47 | Right, | ||
| 48 | Maximum = Right, | ||
| 49 | }; | ||
| 50 | |||
| 51 | enum class MustacheType : u32 { | ||
| 52 | None, | ||
| 53 | Mustache1, | ||
| 54 | Mustache2, | ||
| 55 | Mustache3, | ||
| 56 | Mustache4, | ||
| 57 | Mustache5, | ||
| 58 | }; | ||
| 59 | |||
| 60 | enum class Race : u32 { | ||
| 61 | Black, | ||
| 62 | White, | ||
| 63 | Asian, | ||
| 64 | All, | ||
| 65 | }; | ||
| 66 | |||
| 67 | } // namespace Service::Mii | ||
diff --git a/src/video_core/macro/macro.h b/src/video_core/macro/macro.h index 4d00b84b0..31ee3440a 100644 --- a/src/video_core/macro/macro.h +++ b/src/video_core/macro/macro.h | |||
| @@ -103,8 +103,9 @@ public: | |||
| 103 | virtual ~CachedMacro() = default; | 103 | virtual ~CachedMacro() = default; |
| 104 | /** | 104 | /** |
| 105 | * Executes the macro code with the specified input parameters. | 105 | * Executes the macro code with the specified input parameters. |
| 106 | * @param code The macro byte code to execute | 106 | * |
| 107 | * @param parameters The parameters of the macro | 107 | * @param parameters The parameters of the macro |
| 108 | * @param method The method to execute | ||
| 108 | */ | 109 | */ |
| 109 | virtual void Execute(const std::vector<u32>& parameters, u32 method) = 0; | 110 | virtual void Execute(const std::vector<u32>& parameters, u32 method) = 0; |
| 110 | }; | 111 | }; |
diff --git a/src/video_core/macro/macro_hle.cpp b/src/video_core/macro/macro_hle.cpp index 410f99018..37f784a35 100644 --- a/src/video_core/macro/macro_hle.cpp +++ b/src/video_core/macro/macro_hle.cpp | |||
| @@ -17,8 +17,7 @@ static void HLE_771BB18C62444DA0(Engines::Maxwell3D& maxwell3d, | |||
| 17 | const u32 instance_count = parameters[2] & maxwell3d.GetRegisterValue(0xD1B); | 17 | const u32 instance_count = parameters[2] & maxwell3d.GetRegisterValue(0xD1B); |
| 18 | 18 | ||
| 19 | maxwell3d.regs.draw.topology.Assign( | 19 | maxwell3d.regs.draw.topology.Assign( |
| 20 | static_cast<Tegra::Engines::Maxwell3D::Regs::PrimitiveTopology>(parameters[0] & | 20 | static_cast<Tegra::Engines::Maxwell3D::Regs::PrimitiveTopology>(parameters[0] & 0x3ffffff)); |
| 21 | ~(0x3ffffff << 26))); | ||
| 22 | maxwell3d.regs.vb_base_instance = parameters[5]; | 21 | maxwell3d.regs.vb_base_instance = parameters[5]; |
| 23 | maxwell3d.mme_draw.instance_count = instance_count; | 22 | maxwell3d.mme_draw.instance_count = instance_count; |
| 24 | maxwell3d.regs.vb_element_base = parameters[3]; | 23 | maxwell3d.regs.vb_element_base = parameters[3]; |
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index fbd406f2b..866813465 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp | |||
| @@ -141,24 +141,28 @@ struct ScreenRectVertex { | |||
| 141 | std::array<f32, 2> tex_coord; | 141 | std::array<f32, 2> tex_coord; |
| 142 | 142 | ||
| 143 | static VkVertexInputBindingDescription GetDescription() { | 143 | static VkVertexInputBindingDescription GetDescription() { |
| 144 | VkVertexInputBindingDescription description; | 144 | return { |
| 145 | description.binding = 0; | 145 | .binding = 0, |
| 146 | description.stride = sizeof(ScreenRectVertex); | 146 | .stride = sizeof(ScreenRectVertex), |
| 147 | description.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; | 147 | .inputRate = VK_VERTEX_INPUT_RATE_VERTEX, |
| 148 | return description; | 148 | }; |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | static std::array<VkVertexInputAttributeDescription, 2> GetAttributes() { | 151 | static std::array<VkVertexInputAttributeDescription, 2> GetAttributes() { |
| 152 | std::array<VkVertexInputAttributeDescription, 2> attributes; | 152 | return {{ |
| 153 | attributes[0].location = 0; | 153 | { |
| 154 | attributes[0].binding = 0; | 154 | .location = 0, |
| 155 | attributes[0].format = VK_FORMAT_R32G32_SFLOAT; | 155 | .binding = 0, |
| 156 | attributes[0].offset = offsetof(ScreenRectVertex, position); | 156 | .format = VK_FORMAT_R32G32_SFLOAT, |
| 157 | attributes[1].location = 1; | 157 | .offset = offsetof(ScreenRectVertex, position), |
| 158 | attributes[1].binding = 0; | 158 | }, |
| 159 | attributes[1].format = VK_FORMAT_R32G32_SFLOAT; | 159 | { |
| 160 | attributes[1].offset = offsetof(ScreenRectVertex, tex_coord); | 160 | .location = 1, |
| 161 | return attributes; | 161 | .binding = 0, |
| 162 | .format = VK_FORMAT_R32G32_SFLOAT, | ||
| 163 | .offset = offsetof(ScreenRectVertex, tex_coord), | ||
| 164 | }, | ||
| 165 | }}; | ||
| 162 | } | 166 | } |
| 163 | }; | 167 | }; |
| 164 | 168 | ||
| @@ -267,20 +271,25 @@ std::tuple<VKFence&, VkSemaphore> VKBlitScreen::Draw(const Tegra::FramebufferCon | |||
| 267 | blit_image->Transition(0, 1, 0, 1, VK_PIPELINE_STAGE_TRANSFER_BIT, | 271 | blit_image->Transition(0, 1, 0, 1, VK_PIPELINE_STAGE_TRANSFER_BIT, |
| 268 | VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); | 272 | VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); |
| 269 | 273 | ||
| 270 | VkBufferImageCopy copy; | 274 | const VkBufferImageCopy copy{ |
| 271 | copy.bufferOffset = image_offset; | 275 | .bufferOffset = image_offset, |
| 272 | copy.bufferRowLength = 0; | 276 | .bufferRowLength = 0, |
| 273 | copy.bufferImageHeight = 0; | 277 | .bufferImageHeight = 0, |
| 274 | copy.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; | 278 | .imageSubresource = |
| 275 | copy.imageSubresource.mipLevel = 0; | 279 | { |
| 276 | copy.imageSubresource.baseArrayLayer = 0; | 280 | .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, |
| 277 | copy.imageSubresource.layerCount = 1; | 281 | .mipLevel = 0, |
| 278 | copy.imageOffset.x = 0; | 282 | .baseArrayLayer = 0, |
| 279 | copy.imageOffset.y = 0; | 283 | .layerCount = 1, |
| 280 | copy.imageOffset.z = 0; | 284 | }, |
| 281 | copy.imageExtent.width = framebuffer.width; | 285 | .imageOffset = {.x = 0, .y = 0, .z = 0}, |
| 282 | copy.imageExtent.height = framebuffer.height; | 286 | .imageExtent = |
| 283 | copy.imageExtent.depth = 1; | 287 | { |
| 288 | .width = framebuffer.width, | ||
| 289 | .height = framebuffer.height, | ||
| 290 | .depth = 1, | ||
| 291 | }, | ||
| 292 | }; | ||
| 284 | scheduler.Record( | 293 | scheduler.Record( |
| 285 | [buffer = *buffer, image = *blit_image->GetHandle(), copy](vk::CommandBuffer cmdbuf) { | 294 | [buffer = *buffer, image = *blit_image->GetHandle(), copy](vk::CommandBuffer cmdbuf) { |
| 286 | cmdbuf.CopyBufferToImage(buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, copy); | 295 | cmdbuf.CopyBufferToImage(buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, copy); |
| @@ -295,11 +304,9 @@ std::tuple<VKFence&, VkSemaphore> VKBlitScreen::Draw(const Tegra::FramebufferCon | |||
| 295 | descriptor_set = descriptor_sets[image_index], buffer = *buffer, | 304 | descriptor_set = descriptor_sets[image_index], buffer = *buffer, |
| 296 | size = swapchain.GetSize(), pipeline = *pipeline, | 305 | size = swapchain.GetSize(), pipeline = *pipeline, |
| 297 | layout = *pipeline_layout](vk::CommandBuffer cmdbuf) { | 306 | layout = *pipeline_layout](vk::CommandBuffer cmdbuf) { |
| 298 | VkClearValue clear_color; | 307 | const VkClearValue clear_color{ |
| 299 | clear_color.color.float32[0] = 0.0f; | 308 | .color = {.float32 = {0.0f, 0.0f, 0.0f, 0.0f}}, |
| 300 | clear_color.color.float32[1] = 0.0f; | 309 | }; |
| 301 | clear_color.color.float32[2] = 0.0f; | ||
| 302 | clear_color.color.float32[3] = 0.0f; | ||
| 303 | 310 | ||
| 304 | VkRenderPassBeginInfo renderpass_bi; | 311 | VkRenderPassBeginInfo renderpass_bi; |
| 305 | renderpass_bi.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; | 312 | renderpass_bi.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; |
| @@ -379,93 +386,109 @@ void VKBlitScreen::CreateSemaphores() { | |||
| 379 | } | 386 | } |
| 380 | 387 | ||
| 381 | void VKBlitScreen::CreateDescriptorPool() { | 388 | void VKBlitScreen::CreateDescriptorPool() { |
| 382 | std::array<VkDescriptorPoolSize, 2> pool_sizes; | 389 | const std::array<VkDescriptorPoolSize, 2> pool_sizes{{ |
| 383 | pool_sizes[0].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; | 390 | { |
| 384 | pool_sizes[0].descriptorCount = static_cast<u32>(image_count); | 391 | .type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, |
| 385 | pool_sizes[1].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; | 392 | .descriptorCount = static_cast<u32>(image_count), |
| 386 | pool_sizes[1].descriptorCount = static_cast<u32>(image_count); | 393 | }, |
| 387 | 394 | { | |
| 388 | VkDescriptorPoolCreateInfo ci; | 395 | .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, |
| 389 | ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; | 396 | .descriptorCount = static_cast<u32>(image_count), |
| 390 | ci.pNext = nullptr; | 397 | }, |
| 391 | ci.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; | 398 | }}; |
| 392 | ci.maxSets = static_cast<u32>(image_count); | 399 | |
| 393 | ci.poolSizeCount = static_cast<u32>(pool_sizes.size()); | 400 | const VkDescriptorPoolCreateInfo ci{ |
| 394 | ci.pPoolSizes = pool_sizes.data(); | 401 | .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, |
| 402 | .pNext = nullptr, | ||
| 403 | .flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, | ||
| 404 | .maxSets = static_cast<u32>(image_count), | ||
| 405 | .poolSizeCount = static_cast<u32>(pool_sizes.size()), | ||
| 406 | .pPoolSizes = pool_sizes.data(), | ||
| 407 | }; | ||
| 395 | descriptor_pool = device.GetLogical().CreateDescriptorPool(ci); | 408 | descriptor_pool = device.GetLogical().CreateDescriptorPool(ci); |
| 396 | } | 409 | } |
| 397 | 410 | ||
| 398 | void VKBlitScreen::CreateRenderPass() { | 411 | void VKBlitScreen::CreateRenderPass() { |
| 399 | VkAttachmentDescription color_attachment; | 412 | const VkAttachmentDescription color_attachment{ |
| 400 | color_attachment.flags = 0; | 413 | .flags = 0, |
| 401 | color_attachment.format = swapchain.GetImageFormat(); | 414 | .format = swapchain.GetImageFormat(), |
| 402 | color_attachment.samples = VK_SAMPLE_COUNT_1_BIT; | 415 | .samples = VK_SAMPLE_COUNT_1_BIT, |
| 403 | color_attachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; | 416 | .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR, |
| 404 | color_attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; | 417 | .storeOp = VK_ATTACHMENT_STORE_OP_STORE, |
| 405 | color_attachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; | 418 | .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, |
| 406 | color_attachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; | 419 | .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, |
| 407 | color_attachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; | 420 | .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, |
| 408 | color_attachment.finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; | 421 | .finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, |
| 409 | 422 | }; | |
| 410 | VkAttachmentReference color_attachment_ref; | 423 | |
| 411 | color_attachment_ref.attachment = 0; | 424 | const VkAttachmentReference color_attachment_ref{ |
| 412 | color_attachment_ref.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; | 425 | .attachment = 0, |
| 413 | 426 | .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, | |
| 414 | VkSubpassDescription subpass_description; | 427 | }; |
| 415 | subpass_description.flags = 0; | 428 | |
| 416 | subpass_description.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; | 429 | const VkSubpassDescription subpass_description{ |
| 417 | subpass_description.inputAttachmentCount = 0; | 430 | .flags = 0, |
| 418 | subpass_description.pInputAttachments = nullptr; | 431 | .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS, |
| 419 | subpass_description.colorAttachmentCount = 1; | 432 | .inputAttachmentCount = 0, |
| 420 | subpass_description.pColorAttachments = &color_attachment_ref; | 433 | .pInputAttachments = nullptr, |
| 421 | subpass_description.pResolveAttachments = nullptr; | 434 | .colorAttachmentCount = 1, |
| 422 | subpass_description.pDepthStencilAttachment = nullptr; | 435 | .pColorAttachments = &color_attachment_ref, |
| 423 | subpass_description.preserveAttachmentCount = 0; | 436 | .pResolveAttachments = nullptr, |
| 424 | subpass_description.pPreserveAttachments = nullptr; | 437 | .pDepthStencilAttachment = nullptr, |
| 425 | 438 | .preserveAttachmentCount = 0, | |
| 426 | VkSubpassDependency dependency; | 439 | .pPreserveAttachments = nullptr, |
| 427 | dependency.srcSubpass = VK_SUBPASS_EXTERNAL; | 440 | }; |
| 428 | dependency.dstSubpass = 0; | 441 | |
| 429 | dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; | 442 | const VkSubpassDependency dependency{ |
| 430 | dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; | 443 | .srcSubpass = VK_SUBPASS_EXTERNAL, |
| 431 | dependency.srcAccessMask = 0; | 444 | .dstSubpass = 0, |
| 432 | dependency.dstAccessMask = | 445 | .srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, |
| 433 | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; | 446 | .dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, |
| 434 | dependency.dependencyFlags = 0; | 447 | .srcAccessMask = 0, |
| 435 | 448 | .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, | |
| 436 | VkRenderPassCreateInfo renderpass_ci; | 449 | .dependencyFlags = 0, |
| 437 | renderpass_ci.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; | 450 | }; |
| 438 | renderpass_ci.pNext = nullptr; | 451 | |
| 439 | renderpass_ci.flags = 0; | 452 | const VkRenderPassCreateInfo renderpass_ci{ |
| 440 | renderpass_ci.attachmentCount = 1; | 453 | .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, |
| 441 | renderpass_ci.pAttachments = &color_attachment; | 454 | .pNext = nullptr, |
| 442 | renderpass_ci.subpassCount = 1; | 455 | .flags = 0, |
| 443 | renderpass_ci.pSubpasses = &subpass_description; | 456 | .attachmentCount = 1, |
| 444 | renderpass_ci.dependencyCount = 1; | 457 | .pAttachments = &color_attachment, |
| 445 | renderpass_ci.pDependencies = &dependency; | 458 | .subpassCount = 1, |
| 459 | .pSubpasses = &subpass_description, | ||
| 460 | .dependencyCount = 1, | ||
| 461 | .pDependencies = &dependency, | ||
| 462 | }; | ||
| 446 | 463 | ||
| 447 | renderpass = device.GetLogical().CreateRenderPass(renderpass_ci); | 464 | renderpass = device.GetLogical().CreateRenderPass(renderpass_ci); |
| 448 | } | 465 | } |
| 449 | 466 | ||
| 450 | void VKBlitScreen::CreateDescriptorSetLayout() { | 467 | void VKBlitScreen::CreateDescriptorSetLayout() { |
| 451 | std::array<VkDescriptorSetLayoutBinding, 2> layout_bindings; | 468 | const std::array<VkDescriptorSetLayoutBinding, 2> layout_bindings{{ |
| 452 | layout_bindings[0].binding = 0; | 469 | { |
| 453 | layout_bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; | 470 | .binding = 0, |
| 454 | layout_bindings[0].descriptorCount = 1; | 471 | .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, |
| 455 | layout_bindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; | 472 | .descriptorCount = 1, |
| 456 | layout_bindings[0].pImmutableSamplers = nullptr; | 473 | .stageFlags = VK_SHADER_STAGE_VERTEX_BIT, |
| 457 | layout_bindings[1].binding = 1; | 474 | .pImmutableSamplers = nullptr, |
| 458 | layout_bindings[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; | 475 | }, |
| 459 | layout_bindings[1].descriptorCount = 1; | 476 | { |
| 460 | layout_bindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; | 477 | .binding = 1, |
| 461 | layout_bindings[1].pImmutableSamplers = nullptr; | 478 | .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, |
| 462 | 479 | .descriptorCount = 1, | |
| 463 | VkDescriptorSetLayoutCreateInfo ci; | 480 | .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT, |
| 464 | ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; | 481 | .pImmutableSamplers = nullptr, |
| 465 | ci.pNext = nullptr; | 482 | }, |
| 466 | ci.flags = 0; | 483 | }}; |
| 467 | ci.bindingCount = static_cast<u32>(layout_bindings.size()); | 484 | |
| 468 | ci.pBindings = layout_bindings.data(); | 485 | const VkDescriptorSetLayoutCreateInfo ci{ |
| 486 | .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, | ||
| 487 | .pNext = nullptr, | ||
| 488 | .flags = 0, | ||
| 489 | .bindingCount = static_cast<u32>(layout_bindings.size()), | ||
| 490 | .pBindings = layout_bindings.data(), | ||
| 491 | }; | ||
| 469 | 492 | ||
| 470 | descriptor_set_layout = device.GetLogical().CreateDescriptorSetLayout(ci); | 493 | descriptor_set_layout = device.GetLogical().CreateDescriptorSetLayout(ci); |
| 471 | } | 494 | } |
| @@ -473,175 +496,192 @@ void VKBlitScreen::CreateDescriptorSetLayout() { | |||
| 473 | void VKBlitScreen::CreateDescriptorSets() { | 496 | void VKBlitScreen::CreateDescriptorSets() { |
| 474 | const std::vector layouts(image_count, *descriptor_set_layout); | 497 | const std::vector layouts(image_count, *descriptor_set_layout); |
| 475 | 498 | ||
| 476 | VkDescriptorSetAllocateInfo ai; | 499 | const VkDescriptorSetAllocateInfo ai{ |
| 477 | ai.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; | 500 | .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, |
| 478 | ai.pNext = nullptr; | 501 | .pNext = nullptr, |
| 479 | ai.descriptorPool = *descriptor_pool; | 502 | .descriptorPool = *descriptor_pool, |
| 480 | ai.descriptorSetCount = static_cast<u32>(image_count); | 503 | .descriptorSetCount = static_cast<u32>(image_count), |
| 481 | ai.pSetLayouts = layouts.data(); | 504 | .pSetLayouts = layouts.data(), |
| 505 | }; | ||
| 506 | |||
| 482 | descriptor_sets = descriptor_pool.Allocate(ai); | 507 | descriptor_sets = descriptor_pool.Allocate(ai); |
| 483 | } | 508 | } |
| 484 | 509 | ||
| 485 | void VKBlitScreen::CreatePipelineLayout() { | 510 | void VKBlitScreen::CreatePipelineLayout() { |
| 486 | VkPipelineLayoutCreateInfo ci; | 511 | const VkPipelineLayoutCreateInfo ci{ |
| 487 | ci.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; | 512 | .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, |
| 488 | ci.pNext = nullptr; | 513 | .pNext = nullptr, |
| 489 | ci.flags = 0; | 514 | .flags = 0, |
| 490 | ci.setLayoutCount = 1; | 515 | .setLayoutCount = 1, |
| 491 | ci.pSetLayouts = descriptor_set_layout.address(); | 516 | .pSetLayouts = descriptor_set_layout.address(), |
| 492 | ci.pushConstantRangeCount = 0; | 517 | .pushConstantRangeCount = 0, |
| 493 | ci.pPushConstantRanges = nullptr; | 518 | .pPushConstantRanges = nullptr, |
| 519 | }; | ||
| 494 | pipeline_layout = device.GetLogical().CreatePipelineLayout(ci); | 520 | pipeline_layout = device.GetLogical().CreatePipelineLayout(ci); |
| 495 | } | 521 | } |
| 496 | 522 | ||
| 497 | void VKBlitScreen::CreateGraphicsPipeline() { | 523 | void VKBlitScreen::CreateGraphicsPipeline() { |
| 498 | std::array<VkPipelineShaderStageCreateInfo, 2> shader_stages; | 524 | const std::array<VkPipelineShaderStageCreateInfo, 2> shader_stages{{ |
| 499 | shader_stages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; | 525 | { |
| 500 | shader_stages[0].pNext = nullptr; | 526 | .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, |
| 501 | shader_stages[0].flags = 0; | 527 | .pNext = nullptr, |
| 502 | shader_stages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; | 528 | .flags = 0, |
| 503 | shader_stages[0].module = *vertex_shader; | 529 | .stage = VK_SHADER_STAGE_VERTEX_BIT, |
| 504 | shader_stages[0].pName = "main"; | 530 | .module = *vertex_shader, |
| 505 | shader_stages[0].pSpecializationInfo = nullptr; | 531 | .pName = "main", |
| 506 | shader_stages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; | 532 | .pSpecializationInfo = nullptr, |
| 507 | shader_stages[1].pNext = nullptr; | 533 | }, |
| 508 | shader_stages[1].flags = 0; | 534 | { |
| 509 | shader_stages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; | 535 | .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, |
| 510 | shader_stages[1].module = *fragment_shader; | 536 | .pNext = nullptr, |
| 511 | shader_stages[1].pName = "main"; | 537 | .flags = 0, |
| 512 | shader_stages[1].pSpecializationInfo = nullptr; | 538 | .stage = VK_SHADER_STAGE_FRAGMENT_BIT, |
| 539 | .module = *fragment_shader, | ||
| 540 | .pName = "main", | ||
| 541 | .pSpecializationInfo = nullptr, | ||
| 542 | }, | ||
| 543 | }}; | ||
| 513 | 544 | ||
| 514 | const auto vertex_binding_description = ScreenRectVertex::GetDescription(); | 545 | const auto vertex_binding_description = ScreenRectVertex::GetDescription(); |
| 515 | const auto vertex_attrs_description = ScreenRectVertex::GetAttributes(); | 546 | const auto vertex_attrs_description = ScreenRectVertex::GetAttributes(); |
| 516 | 547 | ||
| 517 | VkPipelineVertexInputStateCreateInfo vertex_input_ci; | 548 | const VkPipelineVertexInputStateCreateInfo vertex_input_ci{ |
| 518 | vertex_input_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; | 549 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, |
| 519 | vertex_input_ci.pNext = nullptr; | 550 | .pNext = nullptr, |
| 520 | vertex_input_ci.flags = 0; | 551 | .flags = 0, |
| 521 | vertex_input_ci.vertexBindingDescriptionCount = 1; | 552 | .vertexBindingDescriptionCount = 1, |
| 522 | vertex_input_ci.pVertexBindingDescriptions = &vertex_binding_description; | 553 | .pVertexBindingDescriptions = &vertex_binding_description, |
| 523 | vertex_input_ci.vertexAttributeDescriptionCount = u32{vertex_attrs_description.size()}; | 554 | .vertexAttributeDescriptionCount = u32{vertex_attrs_description.size()}, |
| 524 | vertex_input_ci.pVertexAttributeDescriptions = vertex_attrs_description.data(); | 555 | .pVertexAttributeDescriptions = vertex_attrs_description.data(), |
| 525 | 556 | }; | |
| 526 | VkPipelineInputAssemblyStateCreateInfo input_assembly_ci; | 557 | |
| 527 | input_assembly_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; | 558 | const VkPipelineInputAssemblyStateCreateInfo input_assembly_ci{ |
| 528 | input_assembly_ci.pNext = nullptr; | 559 | .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, |
| 529 | input_assembly_ci.flags = 0; | 560 | .pNext = nullptr, |
| 530 | input_assembly_ci.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; | 561 | .flags = 0, |
| 531 | input_assembly_ci.primitiveRestartEnable = VK_FALSE; | 562 | .topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, |
| 532 | 563 | .primitiveRestartEnable = VK_FALSE, | |
| 533 | VkPipelineViewportStateCreateInfo viewport_state_ci; | 564 | }; |
| 534 | viewport_state_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; | 565 | |
| 535 | viewport_state_ci.pNext = nullptr; | 566 | const VkPipelineViewportStateCreateInfo viewport_state_ci{ |
| 536 | viewport_state_ci.flags = 0; | 567 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, |
| 537 | viewport_state_ci.viewportCount = 1; | 568 | .pNext = nullptr, |
| 538 | viewport_state_ci.pViewports = nullptr; | 569 | .flags = 0, |
| 539 | viewport_state_ci.scissorCount = 1; | 570 | .viewportCount = 1, |
| 540 | viewport_state_ci.pScissors = nullptr; | 571 | .pViewports = nullptr, |
| 541 | 572 | .scissorCount = 1, | |
| 542 | VkPipelineRasterizationStateCreateInfo rasterization_ci; | 573 | .pScissors = nullptr, |
| 543 | rasterization_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; | 574 | }; |
| 544 | rasterization_ci.pNext = nullptr; | 575 | |
| 545 | rasterization_ci.flags = 0; | 576 | const VkPipelineRasterizationStateCreateInfo rasterization_ci{ |
| 546 | rasterization_ci.depthClampEnable = VK_FALSE; | 577 | .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, |
| 547 | rasterization_ci.rasterizerDiscardEnable = VK_FALSE; | 578 | .pNext = nullptr, |
| 548 | rasterization_ci.polygonMode = VK_POLYGON_MODE_FILL; | 579 | .flags = 0, |
| 549 | rasterization_ci.cullMode = VK_CULL_MODE_NONE; | 580 | .depthClampEnable = VK_FALSE, |
| 550 | rasterization_ci.frontFace = VK_FRONT_FACE_CLOCKWISE; | 581 | .rasterizerDiscardEnable = VK_FALSE, |
| 551 | rasterization_ci.depthBiasEnable = VK_FALSE; | 582 | .polygonMode = VK_POLYGON_MODE_FILL, |
| 552 | rasterization_ci.depthBiasConstantFactor = 0.0f; | 583 | .cullMode = VK_CULL_MODE_NONE, |
| 553 | rasterization_ci.depthBiasClamp = 0.0f; | 584 | .frontFace = VK_FRONT_FACE_CLOCKWISE, |
| 554 | rasterization_ci.depthBiasSlopeFactor = 0.0f; | 585 | .depthBiasEnable = VK_FALSE, |
| 555 | rasterization_ci.lineWidth = 1.0f; | 586 | .depthBiasConstantFactor = 0.0f, |
| 556 | 587 | .depthBiasClamp = 0.0f, | |
| 557 | VkPipelineMultisampleStateCreateInfo multisampling_ci; | 588 | .depthBiasSlopeFactor = 0.0f, |
| 558 | multisampling_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; | 589 | .lineWidth = 1.0f, |
| 559 | multisampling_ci.pNext = nullptr; | 590 | }; |
| 560 | multisampling_ci.flags = 0; | 591 | |
| 561 | multisampling_ci.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; | 592 | const VkPipelineMultisampleStateCreateInfo multisampling_ci{ |
| 562 | multisampling_ci.sampleShadingEnable = VK_FALSE; | 593 | .sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, |
| 563 | multisampling_ci.minSampleShading = 0.0f; | 594 | .pNext = nullptr, |
| 564 | multisampling_ci.pSampleMask = nullptr; | 595 | .flags = 0, |
| 565 | multisampling_ci.alphaToCoverageEnable = VK_FALSE; | 596 | .rasterizationSamples = VK_SAMPLE_COUNT_1_BIT, |
| 566 | multisampling_ci.alphaToOneEnable = VK_FALSE; | 597 | .sampleShadingEnable = VK_FALSE, |
| 567 | 598 | .minSampleShading = 0.0f, | |
| 568 | VkPipelineColorBlendAttachmentState color_blend_attachment; | 599 | .pSampleMask = nullptr, |
| 569 | color_blend_attachment.blendEnable = VK_FALSE; | 600 | .alphaToCoverageEnable = VK_FALSE, |
| 570 | color_blend_attachment.srcColorBlendFactor = VK_BLEND_FACTOR_ZERO; | 601 | .alphaToOneEnable = VK_FALSE, |
| 571 | color_blend_attachment.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO; | 602 | }; |
| 572 | color_blend_attachment.colorBlendOp = VK_BLEND_OP_ADD; | 603 | |
| 573 | color_blend_attachment.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO; | 604 | const VkPipelineColorBlendAttachmentState color_blend_attachment{ |
| 574 | color_blend_attachment.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO; | 605 | .blendEnable = VK_FALSE, |
| 575 | color_blend_attachment.alphaBlendOp = VK_BLEND_OP_ADD; | 606 | .srcColorBlendFactor = VK_BLEND_FACTOR_ZERO, |
| 576 | color_blend_attachment.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | | 607 | .dstColorBlendFactor = VK_BLEND_FACTOR_ZERO, |
| 577 | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; | 608 | .colorBlendOp = VK_BLEND_OP_ADD, |
| 578 | 609 | .srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO, | |
| 579 | VkPipelineColorBlendStateCreateInfo color_blend_ci; | 610 | .dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO, |
| 580 | color_blend_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; | 611 | .alphaBlendOp = VK_BLEND_OP_ADD, |
| 581 | color_blend_ci.flags = 0; | 612 | .colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | |
| 582 | color_blend_ci.pNext = nullptr; | 613 | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT, |
| 583 | color_blend_ci.logicOpEnable = VK_FALSE; | 614 | }; |
| 584 | color_blend_ci.logicOp = VK_LOGIC_OP_COPY; | 615 | |
| 585 | color_blend_ci.attachmentCount = 1; | 616 | const VkPipelineColorBlendStateCreateInfo color_blend_ci{ |
| 586 | color_blend_ci.pAttachments = &color_blend_attachment; | 617 | .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, |
| 587 | color_blend_ci.blendConstants[0] = 0.0f; | 618 | .pNext = nullptr, |
| 588 | color_blend_ci.blendConstants[1] = 0.0f; | 619 | .flags = 0, |
| 589 | color_blend_ci.blendConstants[2] = 0.0f; | 620 | .logicOpEnable = VK_FALSE, |
| 590 | color_blend_ci.blendConstants[3] = 0.0f; | 621 | .logicOp = VK_LOGIC_OP_COPY, |
| 591 | 622 | .attachmentCount = 1, | |
| 592 | static constexpr std::array dynamic_states = {VK_DYNAMIC_STATE_VIEWPORT, | 623 | .pAttachments = &color_blend_attachment, |
| 593 | VK_DYNAMIC_STATE_SCISSOR}; | 624 | .blendConstants = {0.0f, 0.0f, 0.0f, 0.0f}, |
| 594 | VkPipelineDynamicStateCreateInfo dynamic_state_ci; | 625 | }; |
| 595 | dynamic_state_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; | 626 | |
| 596 | dynamic_state_ci.pNext = nullptr; | 627 | static constexpr std::array dynamic_states{ |
| 597 | dynamic_state_ci.flags = 0; | 628 | VK_DYNAMIC_STATE_VIEWPORT, |
| 598 | dynamic_state_ci.dynamicStateCount = static_cast<u32>(dynamic_states.size()); | 629 | VK_DYNAMIC_STATE_SCISSOR, |
| 599 | dynamic_state_ci.pDynamicStates = dynamic_states.data(); | 630 | }; |
| 600 | 631 | const VkPipelineDynamicStateCreateInfo dynamic_state_ci{ | |
| 601 | VkGraphicsPipelineCreateInfo pipeline_ci; | 632 | .sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, |
| 602 | pipeline_ci.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; | 633 | .pNext = nullptr, |
| 603 | pipeline_ci.pNext = nullptr; | 634 | .flags = 0, |
| 604 | pipeline_ci.flags = 0; | 635 | .dynamicStateCount = static_cast<u32>(dynamic_states.size()), |
| 605 | pipeline_ci.stageCount = static_cast<u32>(shader_stages.size()); | 636 | .pDynamicStates = dynamic_states.data(), |
| 606 | pipeline_ci.pStages = shader_stages.data(); | 637 | }; |
| 607 | pipeline_ci.pVertexInputState = &vertex_input_ci; | 638 | |
| 608 | pipeline_ci.pInputAssemblyState = &input_assembly_ci; | 639 | const VkGraphicsPipelineCreateInfo pipeline_ci{ |
| 609 | pipeline_ci.pTessellationState = nullptr; | 640 | .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, |
| 610 | pipeline_ci.pViewportState = &viewport_state_ci; | 641 | .pNext = nullptr, |
| 611 | pipeline_ci.pRasterizationState = &rasterization_ci; | 642 | .flags = 0, |
| 612 | pipeline_ci.pMultisampleState = &multisampling_ci; | 643 | .stageCount = static_cast<u32>(shader_stages.size()), |
| 613 | pipeline_ci.pDepthStencilState = nullptr; | 644 | .pStages = shader_stages.data(), |
| 614 | pipeline_ci.pColorBlendState = &color_blend_ci; | 645 | .pVertexInputState = &vertex_input_ci, |
| 615 | pipeline_ci.pDynamicState = &dynamic_state_ci; | 646 | .pInputAssemblyState = &input_assembly_ci, |
| 616 | pipeline_ci.layout = *pipeline_layout; | 647 | .pTessellationState = nullptr, |
| 617 | pipeline_ci.renderPass = *renderpass; | 648 | .pViewportState = &viewport_state_ci, |
| 618 | pipeline_ci.subpass = 0; | 649 | .pRasterizationState = &rasterization_ci, |
| 619 | pipeline_ci.basePipelineHandle = 0; | 650 | .pMultisampleState = &multisampling_ci, |
| 620 | pipeline_ci.basePipelineIndex = 0; | 651 | .pDepthStencilState = nullptr, |
| 652 | .pColorBlendState = &color_blend_ci, | ||
| 653 | .pDynamicState = &dynamic_state_ci, | ||
| 654 | .layout = *pipeline_layout, | ||
| 655 | .renderPass = *renderpass, | ||
| 656 | .subpass = 0, | ||
| 657 | .basePipelineHandle = 0, | ||
| 658 | .basePipelineIndex = 0, | ||
| 659 | }; | ||
| 621 | 660 | ||
| 622 | pipeline = device.GetLogical().CreateGraphicsPipeline(pipeline_ci); | 661 | pipeline = device.GetLogical().CreateGraphicsPipeline(pipeline_ci); |
| 623 | } | 662 | } |
| 624 | 663 | ||
| 625 | void VKBlitScreen::CreateSampler() { | 664 | void VKBlitScreen::CreateSampler() { |
| 626 | VkSamplerCreateInfo ci; | 665 | const VkSamplerCreateInfo ci{ |
| 627 | ci.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; | 666 | .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, |
| 628 | ci.pNext = nullptr; | 667 | .pNext = nullptr, |
| 629 | ci.flags = 0; | 668 | .flags = 0, |
| 630 | ci.magFilter = VK_FILTER_LINEAR; | 669 | .magFilter = VK_FILTER_LINEAR, |
| 631 | ci.minFilter = VK_FILTER_NEAREST; | 670 | .minFilter = VK_FILTER_NEAREST, |
| 632 | ci.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; | 671 | .mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR, |
| 633 | ci.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; | 672 | .addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, |
| 634 | ci.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; | 673 | .addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, |
| 635 | ci.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; | 674 | .addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, |
| 636 | ci.mipLodBias = 0.0f; | 675 | .mipLodBias = 0.0f, |
| 637 | ci.anisotropyEnable = VK_FALSE; | 676 | .anisotropyEnable = VK_FALSE, |
| 638 | ci.maxAnisotropy = 0.0f; | 677 | .maxAnisotropy = 0.0f, |
| 639 | ci.compareEnable = VK_FALSE; | 678 | .compareEnable = VK_FALSE, |
| 640 | ci.compareOp = VK_COMPARE_OP_NEVER; | 679 | .compareOp = VK_COMPARE_OP_NEVER, |
| 641 | ci.minLod = 0.0f; | 680 | .minLod = 0.0f, |
| 642 | ci.maxLod = 0.0f; | 681 | .maxLod = 0.0f, |
| 643 | ci.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; | 682 | .borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, |
| 644 | ci.unnormalizedCoordinates = VK_FALSE; | 683 | .unnormalizedCoordinates = VK_FALSE, |
| 684 | }; | ||
| 645 | 685 | ||
| 646 | sampler = device.GetLogical().CreateSampler(ci); | 686 | sampler = device.GetLogical().CreateSampler(ci); |
| 647 | } | 687 | } |
| @@ -650,15 +690,16 @@ void VKBlitScreen::CreateFramebuffers() { | |||
| 650 | const VkExtent2D size{swapchain.GetSize()}; | 690 | const VkExtent2D size{swapchain.GetSize()}; |
| 651 | framebuffers.resize(image_count); | 691 | framebuffers.resize(image_count); |
| 652 | 692 | ||
| 653 | VkFramebufferCreateInfo ci; | 693 | VkFramebufferCreateInfo ci{ |
| 654 | ci.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; | 694 | .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, |
| 655 | ci.pNext = nullptr; | 695 | .pNext = nullptr, |
| 656 | ci.flags = 0; | 696 | .flags = 0, |
| 657 | ci.renderPass = *renderpass; | 697 | .renderPass = *renderpass, |
| 658 | ci.attachmentCount = 1; | 698 | .attachmentCount = 1, |
| 659 | ci.width = size.width; | 699 | .width = size.width, |
| 660 | ci.height = size.height; | 700 | .height = size.height, |
| 661 | ci.layers = 1; | 701 | .layers = 1, |
| 702 | }; | ||
| 662 | 703 | ||
| 663 | for (std::size_t i = 0; i < image_count; ++i) { | 704 | for (std::size_t i = 0; i < image_count; ++i) { |
| 664 | const VkImageView image_view{swapchain.GetImageViewIndex(i)}; | 705 | const VkImageView image_view{swapchain.GetImageViewIndex(i)}; |
| @@ -678,16 +719,17 @@ void VKBlitScreen::ReleaseRawImages() { | |||
| 678 | } | 719 | } |
| 679 | 720 | ||
| 680 | void VKBlitScreen::CreateStagingBuffer(const Tegra::FramebufferConfig& framebuffer) { | 721 | void VKBlitScreen::CreateStagingBuffer(const Tegra::FramebufferConfig& framebuffer) { |
| 681 | VkBufferCreateInfo ci; | 722 | const VkBufferCreateInfo ci{ |
| 682 | ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; | 723 | .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, |
| 683 | ci.pNext = nullptr; | 724 | .pNext = nullptr, |
| 684 | ci.flags = 0; | 725 | .flags = 0, |
| 685 | ci.size = CalculateBufferSize(framebuffer); | 726 | .size = CalculateBufferSize(framebuffer), |
| 686 | ci.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | | 727 | .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | |
| 687 | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT; | 728 | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, |
| 688 | ci.sharingMode = VK_SHARING_MODE_EXCLUSIVE; | 729 | .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |
| 689 | ci.queueFamilyIndexCount = 0; | 730 | .queueFamilyIndexCount = 0, |
| 690 | ci.pQueueFamilyIndices = nullptr; | 731 | .pQueueFamilyIndices = nullptr, |
| 732 | }; | ||
| 691 | 733 | ||
| 692 | buffer = device.GetLogical().CreateBuffer(ci); | 734 | buffer = device.GetLogical().CreateBuffer(ci); |
| 693 | buffer_commit = memory_manager.Commit(buffer, true); | 735 | buffer_commit = memory_manager.Commit(buffer, true); |
| @@ -697,24 +739,28 @@ void VKBlitScreen::CreateRawImages(const Tegra::FramebufferConfig& framebuffer) | |||
| 697 | raw_images.resize(image_count); | 739 | raw_images.resize(image_count); |
| 698 | raw_buffer_commits.resize(image_count); | 740 | raw_buffer_commits.resize(image_count); |
| 699 | 741 | ||
| 700 | VkImageCreateInfo ci; | 742 | const VkImageCreateInfo ci{ |
| 701 | ci.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; | 743 | .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, |
| 702 | ci.pNext = nullptr; | 744 | .pNext = nullptr, |
| 703 | ci.flags = 0; | 745 | .flags = 0, |
| 704 | ci.imageType = VK_IMAGE_TYPE_2D; | 746 | .imageType = VK_IMAGE_TYPE_2D, |
| 705 | ci.format = GetFormat(framebuffer); | 747 | .format = GetFormat(framebuffer), |
| 706 | ci.extent.width = framebuffer.width; | 748 | .extent = |
| 707 | ci.extent.height = framebuffer.height; | 749 | { |
| 708 | ci.extent.depth = 1; | 750 | .width = framebuffer.width, |
| 709 | ci.mipLevels = 1; | 751 | .height = framebuffer.height, |
| 710 | ci.arrayLayers = 1; | 752 | .depth = 1, |
| 711 | ci.samples = VK_SAMPLE_COUNT_1_BIT; | 753 | }, |
| 712 | ci.tiling = VK_IMAGE_TILING_LINEAR; | 754 | .mipLevels = 1, |
| 713 | ci.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; | 755 | .arrayLayers = 1, |
| 714 | ci.sharingMode = VK_SHARING_MODE_EXCLUSIVE; | 756 | .samples = VK_SAMPLE_COUNT_1_BIT, |
| 715 | ci.queueFamilyIndexCount = 0; | 757 | .tiling = VK_IMAGE_TILING_LINEAR, |
| 716 | ci.pQueueFamilyIndices = nullptr; | 758 | .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, |
| 717 | ci.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; | 759 | .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |
| 760 | .queueFamilyIndexCount = 0, | ||
| 761 | .pQueueFamilyIndices = nullptr, | ||
| 762 | .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, | ||
| 763 | }; | ||
| 718 | 764 | ||
| 719 | for (std::size_t i = 0; i < image_count; ++i) { | 765 | for (std::size_t i = 0; i < image_count; ++i) { |
| 720 | raw_images[i] = std::make_unique<VKImage>(device, scheduler, ci, VK_IMAGE_ASPECT_COLOR_BIT); | 766 | raw_images[i] = std::make_unique<VKImage>(device, scheduler, ci, VK_IMAGE_ASPECT_COLOR_BIT); |
| @@ -723,39 +769,43 @@ void VKBlitScreen::CreateRawImages(const Tegra::FramebufferConfig& framebuffer) | |||
| 723 | } | 769 | } |
| 724 | 770 | ||
| 725 | void VKBlitScreen::UpdateDescriptorSet(std::size_t image_index, VkImageView image_view) const { | 771 | void VKBlitScreen::UpdateDescriptorSet(std::size_t image_index, VkImageView image_view) const { |
| 726 | VkDescriptorBufferInfo buffer_info; | 772 | const VkDescriptorBufferInfo buffer_info{ |
| 727 | buffer_info.buffer = *buffer; | 773 | .buffer = *buffer, |
| 728 | buffer_info.offset = offsetof(BufferData, uniform); | 774 | .offset = offsetof(BufferData, uniform), |
| 729 | buffer_info.range = sizeof(BufferData::uniform); | 775 | .range = sizeof(BufferData::uniform), |
| 730 | 776 | }; | |
| 731 | VkWriteDescriptorSet ubo_write; | 777 | |
| 732 | ubo_write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | 778 | const VkWriteDescriptorSet ubo_write{ |
| 733 | ubo_write.pNext = nullptr; | 779 | .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, |
| 734 | ubo_write.dstSet = descriptor_sets[image_index]; | 780 | .pNext = nullptr, |
| 735 | ubo_write.dstBinding = 0; | 781 | .dstSet = descriptor_sets[image_index], |
| 736 | ubo_write.dstArrayElement = 0; | 782 | .dstBinding = 0, |
| 737 | ubo_write.descriptorCount = 1; | 783 | .dstArrayElement = 0, |
| 738 | ubo_write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; | 784 | .descriptorCount = 1, |
| 739 | ubo_write.pImageInfo = nullptr; | 785 | .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, |
| 740 | ubo_write.pBufferInfo = &buffer_info; | 786 | .pImageInfo = nullptr, |
| 741 | ubo_write.pTexelBufferView = nullptr; | 787 | .pBufferInfo = &buffer_info, |
| 742 | 788 | .pTexelBufferView = nullptr, | |
| 743 | VkDescriptorImageInfo image_info; | 789 | }; |
| 744 | image_info.sampler = *sampler; | 790 | |
| 745 | image_info.imageView = image_view; | 791 | const VkDescriptorImageInfo image_info{ |
| 746 | image_info.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; | 792 | .sampler = *sampler, |
| 747 | 793 | .imageView = image_view, | |
| 748 | VkWriteDescriptorSet sampler_write; | 794 | .imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, |
| 749 | sampler_write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | 795 | }; |
| 750 | sampler_write.pNext = nullptr; | 796 | |
| 751 | sampler_write.dstSet = descriptor_sets[image_index]; | 797 | const VkWriteDescriptorSet sampler_write{ |
| 752 | sampler_write.dstBinding = 1; | 798 | .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, |
| 753 | sampler_write.dstArrayElement = 0; | 799 | .pNext = nullptr, |
| 754 | sampler_write.descriptorCount = 1; | 800 | .dstSet = descriptor_sets[image_index], |
| 755 | sampler_write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; | 801 | .dstBinding = 1, |
| 756 | sampler_write.pImageInfo = &image_info; | 802 | .dstArrayElement = 0, |
| 757 | sampler_write.pBufferInfo = nullptr; | 803 | .descriptorCount = 1, |
| 758 | sampler_write.pTexelBufferView = nullptr; | 804 | .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, |
| 805 | .pImageInfo = &image_info, | ||
| 806 | .pBufferInfo = nullptr, | ||
| 807 | .pTexelBufferView = nullptr, | ||
| 808 | }; | ||
| 759 | 809 | ||
| 760 | device.GetLogical().UpdateDescriptorSets(std::array{ubo_write, sampler_write}, {}); | 810 | device.GetLogical().UpdateDescriptorSets(std::array{ubo_write, sampler_write}, {}); |
| 761 | } | 811 | } |
diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index fdaea4210..9226e591c 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp | |||
| @@ -22,14 +22,21 @@ namespace { | |||
| 22 | 22 | ||
| 23 | namespace Alternatives { | 23 | namespace Alternatives { |
| 24 | 24 | ||
| 25 | constexpr std::array Depth24UnormS8_UINT = {VK_FORMAT_D32_SFLOAT_S8_UINT, | 25 | constexpr std::array Depth24UnormS8_UINT{ |
| 26 | VK_FORMAT_D16_UNORM_S8_UINT, VkFormat{}}; | 26 | VK_FORMAT_D32_SFLOAT_S8_UINT, |
| 27 | constexpr std::array Depth16UnormS8_UINT = {VK_FORMAT_D24_UNORM_S8_UINT, | 27 | VK_FORMAT_D16_UNORM_S8_UINT, |
| 28 | VK_FORMAT_D32_SFLOAT_S8_UINT, VkFormat{}}; | 28 | VkFormat{}, |
| 29 | }; | ||
| 30 | |||
| 31 | constexpr std::array Depth16UnormS8_UINT{ | ||
| 32 | VK_FORMAT_D24_UNORM_S8_UINT, | ||
| 33 | VK_FORMAT_D32_SFLOAT_S8_UINT, | ||
| 34 | VkFormat{}, | ||
| 35 | }; | ||
| 29 | 36 | ||
| 30 | } // namespace Alternatives | 37 | } // namespace Alternatives |
| 31 | 38 | ||
| 32 | constexpr std::array REQUIRED_EXTENSIONS = { | 39 | constexpr std::array REQUIRED_EXTENSIONS{ |
| 33 | VK_KHR_SWAPCHAIN_EXTENSION_NAME, | 40 | VK_KHR_SWAPCHAIN_EXTENSION_NAME, |
| 34 | VK_KHR_16BIT_STORAGE_EXTENSION_NAME, | 41 | VK_KHR_16BIT_STORAGE_EXTENSION_NAME, |
| 35 | VK_KHR_8BIT_STORAGE_EXTENSION_NAME, | 42 | VK_KHR_8BIT_STORAGE_EXTENSION_NAME, |
| @@ -169,97 +176,104 @@ bool VKDevice::Create() { | |||
| 169 | const auto queue_cis = GetDeviceQueueCreateInfos(); | 176 | const auto queue_cis = GetDeviceQueueCreateInfos(); |
| 170 | const std::vector extensions = LoadExtensions(); | 177 | const std::vector extensions = LoadExtensions(); |
| 171 | 178 | ||
| 172 | VkPhysicalDeviceFeatures2 features2; | 179 | VkPhysicalDeviceFeatures2 features2{ |
| 173 | features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; | 180 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, |
| 174 | features2.pNext = nullptr; | 181 | .pNext = nullptr, |
| 182 | }; | ||
| 175 | const void* first_next = &features2; | 183 | const void* first_next = &features2; |
| 176 | void** next = &features2.pNext; | 184 | void** next = &features2.pNext; |
| 177 | 185 | ||
| 178 | auto& features = features2.features; | 186 | features2.features = { |
| 179 | features.robustBufferAccess = false; | 187 | .robustBufferAccess = false, |
| 180 | features.fullDrawIndexUint32 = false; | 188 | .fullDrawIndexUint32 = false, |
| 181 | features.imageCubeArray = false; | 189 | .imageCubeArray = false, |
| 182 | features.independentBlend = true; | 190 | .independentBlend = true, |
| 183 | features.geometryShader = true; | 191 | .geometryShader = true, |
| 184 | features.tessellationShader = true; | 192 | .tessellationShader = true, |
| 185 | features.sampleRateShading = false; | 193 | .sampleRateShading = false, |
| 186 | features.dualSrcBlend = false; | 194 | .dualSrcBlend = false, |
| 187 | features.logicOp = false; | 195 | .logicOp = false, |
| 188 | features.multiDrawIndirect = false; | 196 | .multiDrawIndirect = false, |
| 189 | features.drawIndirectFirstInstance = false; | 197 | .drawIndirectFirstInstance = false, |
| 190 | features.depthClamp = true; | 198 | .depthClamp = true, |
| 191 | features.depthBiasClamp = true; | 199 | .depthBiasClamp = true, |
| 192 | features.fillModeNonSolid = false; | 200 | .fillModeNonSolid = false, |
| 193 | features.depthBounds = false; | 201 | .depthBounds = false, |
| 194 | features.wideLines = false; | 202 | .wideLines = false, |
| 195 | features.largePoints = true; | 203 | .largePoints = true, |
| 196 | features.alphaToOne = false; | 204 | .alphaToOne = false, |
| 197 | features.multiViewport = true; | 205 | .multiViewport = true, |
| 198 | features.samplerAnisotropy = true; | 206 | .samplerAnisotropy = true, |
| 199 | features.textureCompressionETC2 = false; | 207 | .textureCompressionETC2 = false, |
| 200 | features.textureCompressionASTC_LDR = is_optimal_astc_supported; | 208 | .textureCompressionASTC_LDR = is_optimal_astc_supported, |
| 201 | features.textureCompressionBC = false; | 209 | .textureCompressionBC = false, |
| 202 | features.occlusionQueryPrecise = true; | 210 | .occlusionQueryPrecise = true, |
| 203 | features.pipelineStatisticsQuery = false; | 211 | .pipelineStatisticsQuery = false, |
| 204 | features.vertexPipelineStoresAndAtomics = true; | 212 | .vertexPipelineStoresAndAtomics = true, |
| 205 | features.fragmentStoresAndAtomics = true; | 213 | .fragmentStoresAndAtomics = true, |
| 206 | features.shaderTessellationAndGeometryPointSize = false; | 214 | .shaderTessellationAndGeometryPointSize = false, |
| 207 | features.shaderImageGatherExtended = true; | 215 | .shaderImageGatherExtended = true, |
| 208 | features.shaderStorageImageExtendedFormats = false; | 216 | .shaderStorageImageExtendedFormats = false, |
| 209 | features.shaderStorageImageMultisample = false; | 217 | .shaderStorageImageMultisample = false, |
| 210 | features.shaderStorageImageReadWithoutFormat = is_formatless_image_load_supported; | 218 | .shaderStorageImageReadWithoutFormat = is_formatless_image_load_supported, |
| 211 | features.shaderStorageImageWriteWithoutFormat = true; | 219 | .shaderStorageImageWriteWithoutFormat = true, |
| 212 | features.shaderUniformBufferArrayDynamicIndexing = false; | 220 | .shaderUniformBufferArrayDynamicIndexing = false, |
| 213 | features.shaderSampledImageArrayDynamicIndexing = false; | 221 | .shaderSampledImageArrayDynamicIndexing = false, |
| 214 | features.shaderStorageBufferArrayDynamicIndexing = false; | 222 | .shaderStorageBufferArrayDynamicIndexing = false, |
| 215 | features.shaderStorageImageArrayDynamicIndexing = false; | 223 | .shaderStorageImageArrayDynamicIndexing = false, |
| 216 | features.shaderClipDistance = false; | 224 | .shaderClipDistance = false, |
| 217 | features.shaderCullDistance = false; | 225 | .shaderCullDistance = false, |
| 218 | features.shaderFloat64 = false; | 226 | .shaderFloat64 = false, |
| 219 | features.shaderInt64 = false; | 227 | .shaderInt64 = false, |
| 220 | features.shaderInt16 = false; | 228 | .shaderInt16 = false, |
| 221 | features.shaderResourceResidency = false; | 229 | .shaderResourceResidency = false, |
| 222 | features.shaderResourceMinLod = false; | 230 | .shaderResourceMinLod = false, |
| 223 | features.sparseBinding = false; | 231 | .sparseBinding = false, |
| 224 | features.sparseResidencyBuffer = false; | 232 | .sparseResidencyBuffer = false, |
| 225 | features.sparseResidencyImage2D = false; | 233 | .sparseResidencyImage2D = false, |
| 226 | features.sparseResidencyImage3D = false; | 234 | .sparseResidencyImage3D = false, |
| 227 | features.sparseResidency2Samples = false; | 235 | .sparseResidency2Samples = false, |
| 228 | features.sparseResidency4Samples = false; | 236 | .sparseResidency4Samples = false, |
| 229 | features.sparseResidency8Samples = false; | 237 | .sparseResidency8Samples = false, |
| 230 | features.sparseResidency16Samples = false; | 238 | .sparseResidency16Samples = false, |
| 231 | features.sparseResidencyAliased = false; | 239 | .sparseResidencyAliased = false, |
| 232 | features.variableMultisampleRate = false; | 240 | .variableMultisampleRate = false, |
| 233 | features.inheritedQueries = false; | 241 | .inheritedQueries = false, |
| 234 | 242 | }; | |
| 235 | VkPhysicalDevice16BitStorageFeaturesKHR bit16_storage; | 243 | |
| 236 | bit16_storage.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR; | 244 | VkPhysicalDevice16BitStorageFeaturesKHR bit16_storage{ |
| 237 | bit16_storage.pNext = nullptr; | 245 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, |
| 238 | bit16_storage.storageBuffer16BitAccess = false; | 246 | .pNext = nullptr, |
| 239 | bit16_storage.uniformAndStorageBuffer16BitAccess = true; | 247 | .storageBuffer16BitAccess = false, |
| 240 | bit16_storage.storagePushConstant16 = false; | 248 | .uniformAndStorageBuffer16BitAccess = true, |
| 241 | bit16_storage.storageInputOutput16 = false; | 249 | .storagePushConstant16 = false, |
| 250 | .storageInputOutput16 = false, | ||
| 251 | }; | ||
| 242 | SetNext(next, bit16_storage); | 252 | SetNext(next, bit16_storage); |
| 243 | 253 | ||
| 244 | VkPhysicalDevice8BitStorageFeaturesKHR bit8_storage; | 254 | VkPhysicalDevice8BitStorageFeaturesKHR bit8_storage{ |
| 245 | bit8_storage.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR; | 255 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, |
| 246 | bit8_storage.pNext = nullptr; | 256 | .pNext = nullptr, |
| 247 | bit8_storage.storageBuffer8BitAccess = false; | 257 | .storageBuffer8BitAccess = false, |
| 248 | bit8_storage.uniformAndStorageBuffer8BitAccess = true; | 258 | .uniformAndStorageBuffer8BitAccess = true, |
| 249 | bit8_storage.storagePushConstant8 = false; | 259 | .storagePushConstant8 = false, |
| 260 | }; | ||
| 250 | SetNext(next, bit8_storage); | 261 | SetNext(next, bit8_storage); |
| 251 | 262 | ||
| 252 | VkPhysicalDeviceHostQueryResetFeaturesEXT host_query_reset; | 263 | VkPhysicalDeviceHostQueryResetFeaturesEXT host_query_reset{ |
| 253 | host_query_reset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT; | 264 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, |
| 254 | host_query_reset.hostQueryReset = true; | 265 | .hostQueryReset = true, |
| 266 | }; | ||
| 255 | SetNext(next, host_query_reset); | 267 | SetNext(next, host_query_reset); |
| 256 | 268 | ||
| 257 | VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8; | 269 | VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8; |
| 258 | if (is_float16_supported) { | 270 | if (is_float16_supported) { |
| 259 | float16_int8.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR; | 271 | float16_int8 = { |
| 260 | float16_int8.pNext = nullptr; | 272 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, |
| 261 | float16_int8.shaderFloat16 = true; | 273 | .pNext = nullptr, |
| 262 | float16_int8.shaderInt8 = false; | 274 | .shaderFloat16 = true, |
| 275 | .shaderInt8 = false, | ||
| 276 | }; | ||
| 263 | SetNext(next, float16_int8); | 277 | SetNext(next, float16_int8); |
| 264 | } else { | 278 | } else { |
| 265 | LOG_INFO(Render_Vulkan, "Device doesn't support float16 natively"); | 279 | LOG_INFO(Render_Vulkan, "Device doesn't support float16 natively"); |
| @@ -271,10 +285,11 @@ bool VKDevice::Create() { | |||
| 271 | 285 | ||
| 272 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; | 286 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; |
| 273 | if (khr_uniform_buffer_standard_layout) { | 287 | if (khr_uniform_buffer_standard_layout) { |
| 274 | std430_layout.sType = | 288 | std430_layout = { |
| 275 | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR; | 289 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, |
| 276 | std430_layout.pNext = nullptr; | 290 | .pNext = nullptr, |
| 277 | std430_layout.uniformBufferStandardLayout = true; | 291 | .uniformBufferStandardLayout = true, |
| 292 | }; | ||
| 278 | SetNext(next, std430_layout); | 293 | SetNext(next, std430_layout); |
| 279 | } else { | 294 | } else { |
| 280 | LOG_INFO(Render_Vulkan, "Device doesn't support packed UBOs"); | 295 | LOG_INFO(Render_Vulkan, "Device doesn't support packed UBOs"); |
| @@ -282,9 +297,11 @@ bool VKDevice::Create() { | |||
| 282 | 297 | ||
| 283 | VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8; | 298 | VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8; |
| 284 | if (ext_index_type_uint8) { | 299 | if (ext_index_type_uint8) { |
| 285 | index_type_uint8.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT; | 300 | index_type_uint8 = { |
| 286 | index_type_uint8.pNext = nullptr; | 301 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, |
| 287 | index_type_uint8.indexTypeUint8 = true; | 302 | .pNext = nullptr, |
| 303 | .indexTypeUint8 = true, | ||
| 304 | }; | ||
| 288 | SetNext(next, index_type_uint8); | 305 | SetNext(next, index_type_uint8); |
| 289 | } else { | 306 | } else { |
| 290 | LOG_INFO(Render_Vulkan, "Device doesn't support uint8 indexes"); | 307 | LOG_INFO(Render_Vulkan, "Device doesn't support uint8 indexes"); |
| @@ -292,11 +309,12 @@ bool VKDevice::Create() { | |||
| 292 | 309 | ||
| 293 | VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback; | 310 | VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback; |
| 294 | if (ext_transform_feedback) { | 311 | if (ext_transform_feedback) { |
| 295 | transform_feedback.sType = | 312 | transform_feedback = { |
| 296 | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; | 313 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, |
| 297 | transform_feedback.pNext = nullptr; | 314 | .pNext = nullptr, |
| 298 | transform_feedback.transformFeedback = true; | 315 | .transformFeedback = true, |
| 299 | transform_feedback.geometryStreams = true; | 316 | .geometryStreams = true, |
| 317 | }; | ||
| 300 | SetNext(next, transform_feedback); | 318 | SetNext(next, transform_feedback); |
| 301 | } else { | 319 | } else { |
| 302 | LOG_INFO(Render_Vulkan, "Device doesn't support transform feedbacks"); | 320 | LOG_INFO(Render_Vulkan, "Device doesn't support transform feedbacks"); |
| @@ -304,10 +322,12 @@ bool VKDevice::Create() { | |||
| 304 | 322 | ||
| 305 | VkPhysicalDeviceCustomBorderColorFeaturesEXT custom_border; | 323 | VkPhysicalDeviceCustomBorderColorFeaturesEXT custom_border; |
| 306 | if (ext_custom_border_color) { | 324 | if (ext_custom_border_color) { |
| 307 | custom_border.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; | 325 | custom_border = { |
| 308 | custom_border.pNext = nullptr; | 326 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, |
| 309 | custom_border.customBorderColors = VK_TRUE; | 327 | .pNext = nullptr, |
| 310 | custom_border.customBorderColorWithoutFormat = VK_TRUE; | 328 | .customBorderColors = VK_TRUE, |
| 329 | .customBorderColorWithoutFormat = VK_TRUE, | ||
| 330 | }; | ||
| 311 | SetNext(next, custom_border); | 331 | SetNext(next, custom_border); |
| 312 | } else { | 332 | } else { |
| 313 | LOG_INFO(Render_Vulkan, "Device doesn't support custom border colors"); | 333 | LOG_INFO(Render_Vulkan, "Device doesn't support custom border colors"); |
| @@ -315,9 +335,11 @@ bool VKDevice::Create() { | |||
| 315 | 335 | ||
| 316 | VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state; | 336 | VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state; |
| 317 | if (ext_extended_dynamic_state) { | 337 | if (ext_extended_dynamic_state) { |
| 318 | dynamic_state.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; | 338 | dynamic_state = { |
| 319 | dynamic_state.pNext = nullptr; | 339 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, |
| 320 | dynamic_state.extendedDynamicState = VK_TRUE; | 340 | .pNext = nullptr, |
| 341 | .extendedDynamicState = VK_TRUE, | ||
| 342 | }; | ||
| 321 | SetNext(next, dynamic_state); | 343 | SetNext(next, dynamic_state); |
| 322 | } else { | 344 | } else { |
| 323 | LOG_INFO(Render_Vulkan, "Device doesn't support extended dynamic state"); | 345 | LOG_INFO(Render_Vulkan, "Device doesn't support extended dynamic state"); |
| @@ -331,11 +353,13 @@ bool VKDevice::Create() { | |||
| 331 | if (nv_device_diagnostics_config) { | 353 | if (nv_device_diagnostics_config) { |
| 332 | nsight_aftermath_tracker.Initialize(); | 354 | nsight_aftermath_tracker.Initialize(); |
| 333 | 355 | ||
| 334 | diagnostics_nv.sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV; | 356 | diagnostics_nv = { |
| 335 | diagnostics_nv.pNext = &features2; | 357 | .sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, |
| 336 | diagnostics_nv.flags = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV | | 358 | .pNext = &features2, |
| 337 | VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV | | 359 | .flags = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV | |
| 338 | VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV; | 360 | VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV | |
| 361 | VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV, | ||
| 362 | }; | ||
| 339 | first_next = &diagnostics_nv; | 363 | first_next = &diagnostics_nv; |
| 340 | } | 364 | } |
| 341 | 365 | ||
| @@ -704,13 +728,15 @@ void VKDevice::SetupFeatures() { | |||
| 704 | } | 728 | } |
| 705 | 729 | ||
| 706 | void VKDevice::CollectTelemetryParameters() { | 730 | void VKDevice::CollectTelemetryParameters() { |
| 707 | VkPhysicalDeviceDriverPropertiesKHR driver; | 731 | VkPhysicalDeviceDriverPropertiesKHR driver{ |
| 708 | driver.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR; | 732 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, |
| 709 | driver.pNext = nullptr; | 733 | .pNext = nullptr, |
| 734 | }; | ||
| 710 | 735 | ||
| 711 | VkPhysicalDeviceProperties2KHR properties; | 736 | VkPhysicalDeviceProperties2KHR properties{ |
| 712 | properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; | 737 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, |
| 713 | properties.pNext = &driver; | 738 | .pNext = &driver, |
| 739 | }; | ||
| 714 | physical.GetProperties2KHR(properties); | 740 | physical.GetProperties2KHR(properties); |
| 715 | 741 | ||
| 716 | driver_id = driver.driverID; | 742 | driver_id = driver.driverID; |
| @@ -719,24 +745,26 @@ void VKDevice::CollectTelemetryParameters() { | |||
| 719 | const std::vector extensions = physical.EnumerateDeviceExtensionProperties(); | 745 | const std::vector extensions = physical.EnumerateDeviceExtensionProperties(); |
| 720 | reported_extensions.reserve(std::size(extensions)); | 746 | reported_extensions.reserve(std::size(extensions)); |
| 721 | for (const auto& extension : extensions) { | 747 | for (const auto& extension : extensions) { |
| 722 | reported_extensions.push_back(extension.extensionName); | 748 | reported_extensions.emplace_back(extension.extensionName); |
| 723 | } | 749 | } |
| 724 | } | 750 | } |
| 725 | 751 | ||
| 726 | std::vector<VkDeviceQueueCreateInfo> VKDevice::GetDeviceQueueCreateInfos() const { | 752 | std::vector<VkDeviceQueueCreateInfo> VKDevice::GetDeviceQueueCreateInfos() const { |
| 727 | static constexpr float QUEUE_PRIORITY = 1.0f; | 753 | static constexpr float QUEUE_PRIORITY = 1.0f; |
| 728 | 754 | ||
| 729 | std::unordered_set<u32> unique_queue_families = {graphics_family, present_family}; | 755 | std::unordered_set<u32> unique_queue_families{graphics_family, present_family}; |
| 730 | std::vector<VkDeviceQueueCreateInfo> queue_cis; | 756 | std::vector<VkDeviceQueueCreateInfo> queue_cis; |
| 757 | queue_cis.reserve(unique_queue_families.size()); | ||
| 731 | 758 | ||
| 732 | for (const u32 queue_family : unique_queue_families) { | 759 | for (const u32 queue_family : unique_queue_families) { |
| 733 | VkDeviceQueueCreateInfo& ci = queue_cis.emplace_back(); | 760 | queue_cis.push_back({ |
| 734 | ci.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; | 761 | .sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, |
| 735 | ci.pNext = nullptr; | 762 | .pNext = nullptr, |
| 736 | ci.flags = 0; | 763 | .flags = 0, |
| 737 | ci.queueFamilyIndex = queue_family; | 764 | .queueFamilyIndex = queue_family, |
| 738 | ci.queueCount = 1; | 765 | .queueCount = 1, |
| 739 | ci.pQueuePriorities = &QUEUE_PRIORITY; | 766 | .pQueuePriorities = &QUEUE_PRIORITY, |
| 767 | }); | ||
| 740 | } | 768 | } |
| 741 | 769 | ||
| 742 | return queue_cis; | 770 | return queue_cis; |
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 844445105..aaf930b90 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |||
| @@ -28,15 +28,15 @@ namespace { | |||
| 28 | 28 | ||
| 29 | template <class StencilFace> | 29 | template <class StencilFace> |
| 30 | VkStencilOpState GetStencilFaceState(const StencilFace& face) { | 30 | VkStencilOpState GetStencilFaceState(const StencilFace& face) { |
| 31 | VkStencilOpState state; | 31 | return { |
| 32 | state.failOp = MaxwellToVK::StencilOp(face.ActionStencilFail()); | 32 | .failOp = MaxwellToVK::StencilOp(face.ActionStencilFail()), |
| 33 | state.passOp = MaxwellToVK::StencilOp(face.ActionDepthPass()); | 33 | .passOp = MaxwellToVK::StencilOp(face.ActionDepthPass()), |
| 34 | state.depthFailOp = MaxwellToVK::StencilOp(face.ActionDepthFail()); | 34 | .depthFailOp = MaxwellToVK::StencilOp(face.ActionDepthFail()), |
| 35 | state.compareOp = MaxwellToVK::ComparisonOp(face.TestFunc()); | 35 | .compareOp = MaxwellToVK::ComparisonOp(face.TestFunc()), |
| 36 | state.compareMask = 0; | 36 | .compareMask = 0, |
| 37 | state.writeMask = 0; | 37 | .writeMask = 0, |
| 38 | state.reference = 0; | 38 | .reference = 0, |
| 39 | return state; | 39 | }; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | bool SupportsPrimitiveRestart(VkPrimitiveTopology topology) { | 42 | bool SupportsPrimitiveRestart(VkPrimitiveTopology topology) { |
| @@ -52,20 +52,21 @@ bool SupportsPrimitiveRestart(VkPrimitiveTopology topology) { | |||
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | VkViewportSwizzleNV UnpackViewportSwizzle(u16 swizzle) { | 54 | VkViewportSwizzleNV UnpackViewportSwizzle(u16 swizzle) { |
| 55 | union { | 55 | union Swizzle { |
| 56 | u32 raw; | 56 | u32 raw; |
| 57 | BitField<0, 3, Maxwell::ViewportSwizzle> x; | 57 | BitField<0, 3, Maxwell::ViewportSwizzle> x; |
| 58 | BitField<4, 3, Maxwell::ViewportSwizzle> y; | 58 | BitField<4, 3, Maxwell::ViewportSwizzle> y; |
| 59 | BitField<8, 3, Maxwell::ViewportSwizzle> z; | 59 | BitField<8, 3, Maxwell::ViewportSwizzle> z; |
| 60 | BitField<12, 3, Maxwell::ViewportSwizzle> w; | 60 | BitField<12, 3, Maxwell::ViewportSwizzle> w; |
| 61 | } const unpacked{swizzle}; | 61 | }; |
| 62 | 62 | const Swizzle unpacked{swizzle}; | |
| 63 | VkViewportSwizzleNV result; | 63 | |
| 64 | result.x = MaxwellToVK::ViewportSwizzle(unpacked.x); | 64 | return { |
| 65 | result.y = MaxwellToVK::ViewportSwizzle(unpacked.y); | 65 | .x = MaxwellToVK::ViewportSwizzle(unpacked.x), |
| 66 | result.z = MaxwellToVK::ViewportSwizzle(unpacked.z); | 66 | .y = MaxwellToVK::ViewportSwizzle(unpacked.y), |
| 67 | result.w = MaxwellToVK::ViewportSwizzle(unpacked.w); | 67 | .z = MaxwellToVK::ViewportSwizzle(unpacked.z), |
| 68 | return result; | 68 | .w = MaxwellToVK::ViewportSwizzle(unpacked.w), |
| 69 | }; | ||
| 69 | } | 70 | } |
| 70 | 71 | ||
| 71 | } // Anonymous namespace | 72 | } // Anonymous namespace |
| @@ -100,24 +101,26 @@ VkDescriptorSet VKGraphicsPipeline::CommitDescriptorSet() { | |||
| 100 | 101 | ||
| 101 | vk::DescriptorSetLayout VKGraphicsPipeline::CreateDescriptorSetLayout( | 102 | vk::DescriptorSetLayout VKGraphicsPipeline::CreateDescriptorSetLayout( |
| 102 | vk::Span<VkDescriptorSetLayoutBinding> bindings) const { | 103 | vk::Span<VkDescriptorSetLayoutBinding> bindings) const { |
| 103 | VkDescriptorSetLayoutCreateInfo ci; | 104 | const VkDescriptorSetLayoutCreateInfo ci{ |
| 104 | ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; | 105 | .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, |
| 105 | ci.pNext = nullptr; | 106 | .pNext = nullptr, |
| 106 | ci.flags = 0; | 107 | .flags = 0, |
| 107 | ci.bindingCount = bindings.size(); | 108 | .bindingCount = bindings.size(), |
| 108 | ci.pBindings = bindings.data(); | 109 | .pBindings = bindings.data(), |
| 110 | }; | ||
| 109 | return device.GetLogical().CreateDescriptorSetLayout(ci); | 111 | return device.GetLogical().CreateDescriptorSetLayout(ci); |
| 110 | } | 112 | } |
| 111 | 113 | ||
| 112 | vk::PipelineLayout VKGraphicsPipeline::CreatePipelineLayout() const { | 114 | vk::PipelineLayout VKGraphicsPipeline::CreatePipelineLayout() const { |
| 113 | VkPipelineLayoutCreateInfo ci; | 115 | const VkPipelineLayoutCreateInfo ci{ |
| 114 | ci.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; | 116 | .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, |
| 115 | ci.pNext = nullptr; | 117 | .pNext = nullptr, |
| 116 | ci.flags = 0; | 118 | .flags = 0, |
| 117 | ci.setLayoutCount = 1; | 119 | .setLayoutCount = 1, |
| 118 | ci.pSetLayouts = descriptor_set_layout.address(); | 120 | .pSetLayouts = descriptor_set_layout.address(), |
| 119 | ci.pushConstantRangeCount = 0; | 121 | .pushConstantRangeCount = 0, |
| 120 | ci.pPushConstantRanges = nullptr; | 122 | .pPushConstantRanges = nullptr, |
| 123 | }; | ||
| 121 | return device.GetLogical().CreatePipelineLayout(ci); | 124 | return device.GetLogical().CreatePipelineLayout(ci); |
| 122 | } | 125 | } |
| 123 | 126 | ||
| @@ -136,26 +139,28 @@ vk::DescriptorUpdateTemplateKHR VKGraphicsPipeline::CreateDescriptorUpdateTempla | |||
| 136 | return {}; | 139 | return {}; |
| 137 | } | 140 | } |
| 138 | 141 | ||
| 139 | VkDescriptorUpdateTemplateCreateInfoKHR ci; | 142 | const VkDescriptorUpdateTemplateCreateInfoKHR ci{ |
| 140 | ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR; | 143 | .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR, |
| 141 | ci.pNext = nullptr; | 144 | .pNext = nullptr, |
| 142 | ci.flags = 0; | 145 | .flags = 0, |
| 143 | ci.descriptorUpdateEntryCount = static_cast<u32>(template_entries.size()); | 146 | .descriptorUpdateEntryCount = static_cast<u32>(template_entries.size()), |
| 144 | ci.pDescriptorUpdateEntries = template_entries.data(); | 147 | .pDescriptorUpdateEntries = template_entries.data(), |
| 145 | ci.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR; | 148 | .templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR, |
| 146 | ci.descriptorSetLayout = *descriptor_set_layout; | 149 | .descriptorSetLayout = *descriptor_set_layout, |
| 147 | ci.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; | 150 | .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS, |
| 148 | ci.pipelineLayout = *layout; | 151 | .pipelineLayout = *layout, |
| 149 | ci.set = DESCRIPTOR_SET; | 152 | .set = DESCRIPTOR_SET, |
| 153 | }; | ||
| 150 | return device.GetLogical().CreateDescriptorUpdateTemplateKHR(ci); | 154 | return device.GetLogical().CreateDescriptorUpdateTemplateKHR(ci); |
| 151 | } | 155 | } |
| 152 | 156 | ||
| 153 | std::vector<vk::ShaderModule> VKGraphicsPipeline::CreateShaderModules( | 157 | std::vector<vk::ShaderModule> VKGraphicsPipeline::CreateShaderModules( |
| 154 | const SPIRVProgram& program) const { | 158 | const SPIRVProgram& program) const { |
| 155 | VkShaderModuleCreateInfo ci; | 159 | VkShaderModuleCreateInfo ci{ |
| 156 | ci.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; | 160 | .sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, |
| 157 | ci.pNext = nullptr; | 161 | .pNext = nullptr, |
| 158 | ci.flags = 0; | 162 | .flags = 0, |
| 163 | }; | ||
| 159 | 164 | ||
| 160 | std::vector<vk::ShaderModule> modules; | 165 | std::vector<vk::ShaderModule> modules; |
| 161 | modules.reserve(Maxwell::MaxShaderStage); | 166 | modules.reserve(Maxwell::MaxShaderStage); |
| @@ -204,15 +209,17 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 204 | const bool instanced = state.binding_divisors[index] != 0; | 209 | const bool instanced = state.binding_divisors[index] != 0; |
| 205 | const auto rate = instanced ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX; | 210 | const auto rate = instanced ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX; |
| 206 | 211 | ||
| 207 | auto& vertex_binding = vertex_bindings.emplace_back(); | 212 | vertex_bindings.push_back({ |
| 208 | vertex_binding.binding = static_cast<u32>(index); | 213 | .binding = static_cast<u32>(index), |
| 209 | vertex_binding.stride = binding.stride; | 214 | .stride = binding.stride, |
| 210 | vertex_binding.inputRate = rate; | 215 | .inputRate = rate, |
| 216 | }); | ||
| 211 | 217 | ||
| 212 | if (instanced) { | 218 | if (instanced) { |
| 213 | auto& binding_divisor = vertex_binding_divisors.emplace_back(); | 219 | vertex_binding_divisors.push_back({ |
| 214 | binding_divisor.binding = static_cast<u32>(index); | 220 | .binding = static_cast<u32>(index), |
| 215 | binding_divisor.divisor = state.binding_divisors[index]; | 221 | .divisor = state.binding_divisors[index], |
| 222 | }); | ||
| 216 | } | 223 | } |
| 217 | } | 224 | } |
| 218 | 225 | ||
| @@ -227,116 +234,132 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 227 | // Skip attributes not used by the vertex shaders. | 234 | // Skip attributes not used by the vertex shaders. |
| 228 | continue; | 235 | continue; |
| 229 | } | 236 | } |
| 230 | auto& vertex_attribute = vertex_attributes.emplace_back(); | 237 | vertex_attributes.push_back({ |
| 231 | vertex_attribute.location = static_cast<u32>(index); | 238 | .location = static_cast<u32>(index), |
| 232 | vertex_attribute.binding = attribute.buffer; | 239 | .binding = attribute.buffer, |
| 233 | vertex_attribute.format = MaxwellToVK::VertexFormat(attribute.Type(), attribute.Size()); | 240 | .format = MaxwellToVK::VertexFormat(attribute.Type(), attribute.Size()), |
| 234 | vertex_attribute.offset = attribute.offset; | 241 | .offset = attribute.offset, |
| 242 | }); | ||
| 235 | } | 243 | } |
| 236 | 244 | ||
| 237 | VkPipelineVertexInputStateCreateInfo vertex_input_ci; | 245 | VkPipelineVertexInputStateCreateInfo vertex_input_ci{ |
| 238 | vertex_input_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; | 246 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, |
| 239 | vertex_input_ci.pNext = nullptr; | 247 | .pNext = nullptr, |
| 240 | vertex_input_ci.flags = 0; | 248 | .flags = 0, |
| 241 | vertex_input_ci.vertexBindingDescriptionCount = static_cast<u32>(vertex_bindings.size()); | 249 | .vertexBindingDescriptionCount = static_cast<u32>(vertex_bindings.size()), |
| 242 | vertex_input_ci.pVertexBindingDescriptions = vertex_bindings.data(); | 250 | .pVertexBindingDescriptions = vertex_bindings.data(), |
| 243 | vertex_input_ci.vertexAttributeDescriptionCount = static_cast<u32>(vertex_attributes.size()); | 251 | .vertexAttributeDescriptionCount = static_cast<u32>(vertex_attributes.size()), |
| 244 | vertex_input_ci.pVertexAttributeDescriptions = vertex_attributes.data(); | 252 | .pVertexAttributeDescriptions = vertex_attributes.data(), |
| 245 | 253 | }; | |
| 246 | VkPipelineVertexInputDivisorStateCreateInfoEXT input_divisor_ci; | 254 | |
| 247 | input_divisor_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT; | 255 | const VkPipelineVertexInputDivisorStateCreateInfoEXT input_divisor_ci{ |
| 248 | input_divisor_ci.pNext = nullptr; | 256 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, |
| 249 | input_divisor_ci.vertexBindingDivisorCount = static_cast<u32>(vertex_binding_divisors.size()); | 257 | .pNext = nullptr, |
| 250 | input_divisor_ci.pVertexBindingDivisors = vertex_binding_divisors.data(); | 258 | .vertexBindingDivisorCount = static_cast<u32>(vertex_binding_divisors.size()), |
| 259 | .pVertexBindingDivisors = vertex_binding_divisors.data(), | ||
| 260 | }; | ||
| 251 | if (!vertex_binding_divisors.empty()) { | 261 | if (!vertex_binding_divisors.empty()) { |
| 252 | vertex_input_ci.pNext = &input_divisor_ci; | 262 | vertex_input_ci.pNext = &input_divisor_ci; |
| 253 | } | 263 | } |
| 254 | 264 | ||
| 255 | VkPipelineInputAssemblyStateCreateInfo input_assembly_ci; | 265 | const auto input_assembly_topology = MaxwellToVK::PrimitiveTopology(device, dynamic.Topology()); |
| 256 | input_assembly_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; | 266 | const VkPipelineInputAssemblyStateCreateInfo input_assembly_ci{ |
| 257 | input_assembly_ci.pNext = nullptr; | 267 | .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, |
| 258 | input_assembly_ci.flags = 0; | 268 | .pNext = nullptr, |
| 259 | input_assembly_ci.topology = MaxwellToVK::PrimitiveTopology(device, dynamic.Topology()); | 269 | .flags = 0, |
| 260 | input_assembly_ci.primitiveRestartEnable = | 270 | .topology = MaxwellToVK::PrimitiveTopology(device, dynamic.Topology()), |
| 261 | state.primitive_restart_enable != 0 && SupportsPrimitiveRestart(input_assembly_ci.topology); | 271 | .primitiveRestartEnable = state.primitive_restart_enable != 0 && |
| 262 | 272 | SupportsPrimitiveRestart(input_assembly_topology), | |
| 263 | VkPipelineTessellationStateCreateInfo tessellation_ci; | 273 | }; |
| 264 | tessellation_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO; | 274 | |
| 265 | tessellation_ci.pNext = nullptr; | 275 | const VkPipelineTessellationStateCreateInfo tessellation_ci{ |
| 266 | tessellation_ci.flags = 0; | 276 | .sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, |
| 267 | tessellation_ci.patchControlPoints = state.patch_control_points_minus_one.Value() + 1; | 277 | .pNext = nullptr, |
| 268 | 278 | .flags = 0, | |
| 269 | VkPipelineViewportStateCreateInfo viewport_ci; | 279 | .patchControlPoints = state.patch_control_points_minus_one.Value() + 1, |
| 270 | viewport_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; | 280 | }; |
| 271 | viewport_ci.pNext = nullptr; | 281 | |
| 272 | viewport_ci.flags = 0; | 282 | VkPipelineViewportStateCreateInfo viewport_ci{ |
| 273 | viewport_ci.viewportCount = Maxwell::NumViewports; | 283 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, |
| 274 | viewport_ci.pViewports = nullptr; | 284 | .pNext = nullptr, |
| 275 | viewport_ci.scissorCount = Maxwell::NumViewports; | 285 | .flags = 0, |
| 276 | viewport_ci.pScissors = nullptr; | 286 | .viewportCount = Maxwell::NumViewports, |
| 287 | .pViewports = nullptr, | ||
| 288 | .scissorCount = Maxwell::NumViewports, | ||
| 289 | .pScissors = nullptr, | ||
| 290 | }; | ||
| 277 | 291 | ||
| 278 | std::array<VkViewportSwizzleNV, Maxwell::NumViewports> swizzles; | 292 | std::array<VkViewportSwizzleNV, Maxwell::NumViewports> swizzles; |
| 279 | std::transform(viewport_swizzles.begin(), viewport_swizzles.end(), swizzles.begin(), | 293 | std::transform(viewport_swizzles.begin(), viewport_swizzles.end(), swizzles.begin(), |
| 280 | UnpackViewportSwizzle); | 294 | UnpackViewportSwizzle); |
| 281 | VkPipelineViewportSwizzleStateCreateInfoNV swizzle_ci; | 295 | VkPipelineViewportSwizzleStateCreateInfoNV swizzle_ci{ |
| 282 | swizzle_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV; | 296 | .sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV, |
| 283 | swizzle_ci.pNext = nullptr; | 297 | .pNext = nullptr, |
| 284 | swizzle_ci.flags = 0; | 298 | .flags = 0, |
| 285 | swizzle_ci.viewportCount = Maxwell::NumViewports; | 299 | .viewportCount = Maxwell::NumViewports, |
| 286 | swizzle_ci.pViewportSwizzles = swizzles.data(); | 300 | .pViewportSwizzles = swizzles.data(), |
| 301 | }; | ||
| 287 | if (device.IsNvViewportSwizzleSupported()) { | 302 | if (device.IsNvViewportSwizzleSupported()) { |
| 288 | viewport_ci.pNext = &swizzle_ci; | 303 | viewport_ci.pNext = &swizzle_ci; |
| 289 | } | 304 | } |
| 290 | 305 | ||
| 291 | VkPipelineRasterizationStateCreateInfo rasterization_ci; | 306 | const VkPipelineRasterizationStateCreateInfo rasterization_ci{ |
| 292 | rasterization_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; | 307 | .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, |
| 293 | rasterization_ci.pNext = nullptr; | 308 | .pNext = nullptr, |
| 294 | rasterization_ci.flags = 0; | 309 | .flags = 0, |
| 295 | rasterization_ci.depthClampEnable = state.depth_clamp_disabled == 0 ? VK_TRUE : VK_FALSE; | 310 | .depthClampEnable = |
| 296 | rasterization_ci.rasterizerDiscardEnable = state.rasterize_enable == 0 ? VK_TRUE : VK_FALSE; | 311 | static_cast<VkBool32>(state.depth_clamp_disabled == 0 ? VK_TRUE : VK_FALSE), |
| 297 | rasterization_ci.polygonMode = VK_POLYGON_MODE_FILL; | 312 | .rasterizerDiscardEnable = |
| 298 | rasterization_ci.cullMode = | 313 | static_cast<VkBool32>(state.rasterize_enable == 0 ? VK_TRUE : VK_FALSE), |
| 299 | dynamic.cull_enable ? MaxwellToVK::CullFace(dynamic.CullFace()) : VK_CULL_MODE_NONE; | 314 | .polygonMode = VK_POLYGON_MODE_FILL, |
| 300 | rasterization_ci.frontFace = MaxwellToVK::FrontFace(dynamic.FrontFace()); | 315 | .cullMode = |
| 301 | rasterization_ci.depthBiasEnable = state.depth_bias_enable; | 316 | dynamic.cull_enable ? MaxwellToVK::CullFace(dynamic.CullFace()) : VK_CULL_MODE_NONE, |
| 302 | rasterization_ci.depthBiasConstantFactor = 0.0f; | 317 | .frontFace = MaxwellToVK::FrontFace(dynamic.FrontFace()), |
| 303 | rasterization_ci.depthBiasClamp = 0.0f; | 318 | .depthBiasEnable = state.depth_bias_enable, |
| 304 | rasterization_ci.depthBiasSlopeFactor = 0.0f; | 319 | .depthBiasConstantFactor = 0.0f, |
| 305 | rasterization_ci.lineWidth = 1.0f; | 320 | .depthBiasClamp = 0.0f, |
| 306 | 321 | .depthBiasSlopeFactor = 0.0f, | |
| 307 | VkPipelineMultisampleStateCreateInfo multisample_ci; | 322 | .lineWidth = 1.0f, |
| 308 | multisample_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; | 323 | }; |
| 309 | multisample_ci.pNext = nullptr; | 324 | |
| 310 | multisample_ci.flags = 0; | 325 | const VkPipelineMultisampleStateCreateInfo multisample_ci{ |
| 311 | multisample_ci.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; | 326 | .sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, |
| 312 | multisample_ci.sampleShadingEnable = VK_FALSE; | 327 | .pNext = nullptr, |
| 313 | multisample_ci.minSampleShading = 0.0f; | 328 | .flags = 0, |
| 314 | multisample_ci.pSampleMask = nullptr; | 329 | .rasterizationSamples = VK_SAMPLE_COUNT_1_BIT, |
| 315 | multisample_ci.alphaToCoverageEnable = VK_FALSE; | 330 | .sampleShadingEnable = VK_FALSE, |
| 316 | multisample_ci.alphaToOneEnable = VK_FALSE; | 331 | .minSampleShading = 0.0f, |
| 317 | 332 | .pSampleMask = nullptr, | |
| 318 | VkPipelineDepthStencilStateCreateInfo depth_stencil_ci; | 333 | .alphaToCoverageEnable = VK_FALSE, |
| 319 | depth_stencil_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; | 334 | .alphaToOneEnable = VK_FALSE, |
| 320 | depth_stencil_ci.pNext = nullptr; | 335 | }; |
| 321 | depth_stencil_ci.flags = 0; | 336 | |
| 322 | depth_stencil_ci.depthTestEnable = dynamic.depth_test_enable; | 337 | const VkPipelineDepthStencilStateCreateInfo depth_stencil_ci{ |
| 323 | depth_stencil_ci.depthWriteEnable = dynamic.depth_write_enable; | 338 | .sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, |
| 324 | depth_stencil_ci.depthCompareOp = dynamic.depth_test_enable | 339 | .pNext = nullptr, |
| 325 | ? MaxwellToVK::ComparisonOp(dynamic.DepthTestFunc()) | 340 | .flags = 0, |
| 326 | : VK_COMPARE_OP_ALWAYS; | 341 | .depthTestEnable = dynamic.depth_test_enable, |
| 327 | depth_stencil_ci.depthBoundsTestEnable = dynamic.depth_bounds_enable; | 342 | .depthWriteEnable = dynamic.depth_write_enable, |
| 328 | depth_stencil_ci.stencilTestEnable = dynamic.stencil_enable; | 343 | .depthCompareOp = dynamic.depth_test_enable |
| 329 | depth_stencil_ci.front = GetStencilFaceState(dynamic.front); | 344 | ? MaxwellToVK::ComparisonOp(dynamic.DepthTestFunc()) |
| 330 | depth_stencil_ci.back = GetStencilFaceState(dynamic.back); | 345 | : VK_COMPARE_OP_ALWAYS, |
| 331 | depth_stencil_ci.minDepthBounds = 0.0f; | 346 | .depthBoundsTestEnable = dynamic.depth_bounds_enable, |
| 332 | depth_stencil_ci.maxDepthBounds = 0.0f; | 347 | .stencilTestEnable = dynamic.stencil_enable, |
| 348 | .front = GetStencilFaceState(dynamic.front), | ||
| 349 | .back = GetStencilFaceState(dynamic.back), | ||
| 350 | .minDepthBounds = 0.0f, | ||
| 351 | .maxDepthBounds = 0.0f, | ||
| 352 | }; | ||
| 333 | 353 | ||
| 334 | std::array<VkPipelineColorBlendAttachmentState, Maxwell::NumRenderTargets> cb_attachments; | 354 | std::array<VkPipelineColorBlendAttachmentState, Maxwell::NumRenderTargets> cb_attachments; |
| 335 | const auto num_attachments = static_cast<std::size_t>(renderpass_params.num_color_attachments); | 355 | const auto num_attachments = static_cast<std::size_t>(renderpass_params.num_color_attachments); |
| 336 | for (std::size_t index = 0; index < num_attachments; ++index) { | 356 | for (std::size_t index = 0; index < num_attachments; ++index) { |
| 337 | static constexpr std::array COMPONENT_TABLE = { | 357 | static constexpr std::array COMPONENT_TABLE{ |
| 338 | VK_COLOR_COMPONENT_R_BIT, VK_COLOR_COMPONENT_G_BIT, VK_COLOR_COMPONENT_B_BIT, | 358 | VK_COLOR_COMPONENT_R_BIT, |
| 339 | VK_COLOR_COMPONENT_A_BIT}; | 359 | VK_COLOR_COMPONENT_G_BIT, |
| 360 | VK_COLOR_COMPONENT_B_BIT, | ||
| 361 | VK_COLOR_COMPONENT_A_BIT, | ||
| 362 | }; | ||
| 340 | const auto& blend = state.attachments[index]; | 363 | const auto& blend = state.attachments[index]; |
| 341 | 364 | ||
| 342 | VkColorComponentFlags color_components = 0; | 365 | VkColorComponentFlags color_components = 0; |
| @@ -346,35 +369,36 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 346 | } | 369 | } |
| 347 | } | 370 | } |
| 348 | 371 | ||
| 349 | VkPipelineColorBlendAttachmentState& attachment = cb_attachments[index]; | 372 | cb_attachments[index] = { |
| 350 | attachment.blendEnable = blend.enable != 0; | 373 | .blendEnable = blend.enable != 0, |
| 351 | attachment.srcColorBlendFactor = MaxwellToVK::BlendFactor(blend.SourceRGBFactor()); | 374 | .srcColorBlendFactor = MaxwellToVK::BlendFactor(blend.SourceRGBFactor()), |
| 352 | attachment.dstColorBlendFactor = MaxwellToVK::BlendFactor(blend.DestRGBFactor()); | 375 | .dstColorBlendFactor = MaxwellToVK::BlendFactor(blend.DestRGBFactor()), |
| 353 | attachment.colorBlendOp = MaxwellToVK::BlendEquation(blend.EquationRGB()); | 376 | .colorBlendOp = MaxwellToVK::BlendEquation(blend.EquationRGB()), |
| 354 | attachment.srcAlphaBlendFactor = MaxwellToVK::BlendFactor(blend.SourceAlphaFactor()); | 377 | .srcAlphaBlendFactor = MaxwellToVK::BlendFactor(blend.SourceAlphaFactor()), |
| 355 | attachment.dstAlphaBlendFactor = MaxwellToVK::BlendFactor(blend.DestAlphaFactor()); | 378 | .dstAlphaBlendFactor = MaxwellToVK::BlendFactor(blend.DestAlphaFactor()), |
| 356 | attachment.alphaBlendOp = MaxwellToVK::BlendEquation(blend.EquationAlpha()); | 379 | .alphaBlendOp = MaxwellToVK::BlendEquation(blend.EquationAlpha()), |
| 357 | attachment.colorWriteMask = color_components; | 380 | .colorWriteMask = color_components, |
| 381 | }; | ||
| 358 | } | 382 | } |
| 359 | 383 | ||
| 360 | VkPipelineColorBlendStateCreateInfo color_blend_ci; | 384 | const VkPipelineColorBlendStateCreateInfo color_blend_ci{ |
| 361 | color_blend_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; | 385 | .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, |
| 362 | color_blend_ci.pNext = nullptr; | 386 | .pNext = nullptr, |
| 363 | color_blend_ci.flags = 0; | 387 | .flags = 0, |
| 364 | color_blend_ci.logicOpEnable = VK_FALSE; | 388 | .logicOpEnable = VK_FALSE, |
| 365 | color_blend_ci.logicOp = VK_LOGIC_OP_COPY; | 389 | .logicOp = VK_LOGIC_OP_COPY, |
| 366 | color_blend_ci.attachmentCount = static_cast<u32>(num_attachments); | 390 | .attachmentCount = static_cast<u32>(num_attachments), |
| 367 | color_blend_ci.pAttachments = cb_attachments.data(); | 391 | .pAttachments = cb_attachments.data(), |
| 368 | std::memset(color_blend_ci.blendConstants, 0, sizeof(color_blend_ci.blendConstants)); | 392 | }; |
| 369 | 393 | ||
| 370 | std::vector dynamic_states = { | 394 | std::vector dynamic_states{ |
| 371 | VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, | 395 | VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, |
| 372 | VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, | 396 | VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, |
| 373 | VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, | 397 | VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, |
| 374 | VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, | 398 | VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, |
| 375 | }; | 399 | }; |
| 376 | if (device.IsExtExtendedDynamicStateSupported()) { | 400 | if (device.IsExtExtendedDynamicStateSupported()) { |
| 377 | static constexpr std::array extended = { | 401 | static constexpr std::array extended{ |
| 378 | VK_DYNAMIC_STATE_CULL_MODE_EXT, | 402 | VK_DYNAMIC_STATE_CULL_MODE_EXT, |
| 379 | VK_DYNAMIC_STATE_FRONT_FACE_EXT, | 403 | VK_DYNAMIC_STATE_FRONT_FACE_EXT, |
| 380 | VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT, | 404 | VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT, |
| @@ -389,18 +413,19 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 389 | dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end()); | 413 | dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end()); |
| 390 | } | 414 | } |
| 391 | 415 | ||
| 392 | VkPipelineDynamicStateCreateInfo dynamic_state_ci; | 416 | const VkPipelineDynamicStateCreateInfo dynamic_state_ci{ |
| 393 | dynamic_state_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; | 417 | .sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, |
| 394 | dynamic_state_ci.pNext = nullptr; | 418 | .pNext = nullptr, |
| 395 | dynamic_state_ci.flags = 0; | 419 | .flags = 0, |
| 396 | dynamic_state_ci.dynamicStateCount = static_cast<u32>(dynamic_states.size()); | 420 | .dynamicStateCount = static_cast<u32>(dynamic_states.size()), |
| 397 | dynamic_state_ci.pDynamicStates = dynamic_states.data(); | 421 | .pDynamicStates = dynamic_states.data(), |
| 422 | }; | ||
| 398 | 423 | ||
| 399 | VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT subgroup_size_ci; | 424 | const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT subgroup_size_ci{ |
| 400 | subgroup_size_ci.sType = | 425 | .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, |
| 401 | VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT; | 426 | .pNext = nullptr, |
| 402 | subgroup_size_ci.pNext = nullptr; | 427 | .requiredSubgroupSize = GuestWarpSize, |
| 403 | subgroup_size_ci.requiredSubgroupSize = GuestWarpSize; | 428 | }; |
| 404 | 429 | ||
| 405 | std::vector<VkPipelineShaderStageCreateInfo> shader_stages; | 430 | std::vector<VkPipelineShaderStageCreateInfo> shader_stages; |
| 406 | std::size_t module_index = 0; | 431 | std::size_t module_index = 0; |
| @@ -408,6 +433,7 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 408 | if (!program[stage]) { | 433 | if (!program[stage]) { |
| 409 | continue; | 434 | continue; |
| 410 | } | 435 | } |
| 436 | |||
| 411 | VkPipelineShaderStageCreateInfo& stage_ci = shader_stages.emplace_back(); | 437 | VkPipelineShaderStageCreateInfo& stage_ci = shader_stages.emplace_back(); |
| 412 | stage_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; | 438 | stage_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; |
| 413 | stage_ci.pNext = nullptr; | 439 | stage_ci.pNext = nullptr; |
| @@ -422,26 +448,27 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpa | |||
| 422 | } | 448 | } |
| 423 | } | 449 | } |
| 424 | 450 | ||
| 425 | VkGraphicsPipelineCreateInfo ci; | 451 | const VkGraphicsPipelineCreateInfo ci{ |
| 426 | ci.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; | 452 | .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, |
| 427 | ci.pNext = nullptr; | 453 | .pNext = nullptr, |
| 428 | ci.flags = 0; | 454 | .flags = 0, |
| 429 | ci.stageCount = static_cast<u32>(shader_stages.size()); | 455 | .stageCount = static_cast<u32>(shader_stages.size()), |
| 430 | ci.pStages = shader_stages.data(); | 456 | .pStages = shader_stages.data(), |
| 431 | ci.pVertexInputState = &vertex_input_ci; | 457 | .pVertexInputState = &vertex_input_ci, |
| 432 | ci.pInputAssemblyState = &input_assembly_ci; | 458 | .pInputAssemblyState = &input_assembly_ci, |
| 433 | ci.pTessellationState = &tessellation_ci; | 459 | .pTessellationState = &tessellation_ci, |
| 434 | ci.pViewportState = &viewport_ci; | 460 | .pViewportState = &viewport_ci, |
| 435 | ci.pRasterizationState = &rasterization_ci; | 461 | .pRasterizationState = &rasterization_ci, |
| 436 | ci.pMultisampleState = &multisample_ci; | 462 | .pMultisampleState = &multisample_ci, |
| 437 | ci.pDepthStencilState = &depth_stencil_ci; | 463 | .pDepthStencilState = &depth_stencil_ci, |
| 438 | ci.pColorBlendState = &color_blend_ci; | 464 | .pColorBlendState = &color_blend_ci, |
| 439 | ci.pDynamicState = &dynamic_state_ci; | 465 | .pDynamicState = &dynamic_state_ci, |
| 440 | ci.layout = *layout; | 466 | .layout = *layout, |
| 441 | ci.renderPass = renderpass; | 467 | .renderPass = renderpass, |
| 442 | ci.subpass = 0; | 468 | .subpass = 0, |
| 443 | ci.basePipelineHandle = nullptr; | 469 | .basePipelineHandle = nullptr, |
| 444 | ci.basePipelineIndex = 0; | 470 | .basePipelineIndex = 0, |
| 471 | }; | ||
| 445 | return device.GetLogical().CreateGraphicsPipeline(ci); | 472 | return device.GetLogical().CreateGraphicsPipeline(ci); |
| 446 | } | 473 | } |
| 447 | 474 | ||
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 430031665..bd93dcf20 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -281,12 +281,10 @@ void CachedSurface::UploadBuffer(const std::vector<u8>& staging_buffer) { | |||
| 281 | VkBufferMemoryBarrier barrier; | 281 | VkBufferMemoryBarrier barrier; |
| 282 | barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; | 282 | barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; |
| 283 | barrier.pNext = nullptr; | 283 | barrier.pNext = nullptr; |
| 284 | barrier.srcAccessMask = VK_PIPELINE_STAGE_TRANSFER_BIT; | 284 | barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; |
| 285 | barrier.dstAccessMask = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT; | 285 | barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; |
| 286 | barrier.srcQueueFamilyIndex = VK_ACCESS_TRANSFER_WRITE_BIT; | 286 | barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; // They'll be ignored anyway |
| 287 | barrier.dstQueueFamilyIndex = VK_ACCESS_SHADER_READ_BIT; | 287 | barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; |
| 288 | barrier.srcQueueFamilyIndex = 0; | ||
| 289 | barrier.dstQueueFamilyIndex = 0; | ||
| 290 | barrier.buffer = dst_buffer; | 288 | barrier.buffer = dst_buffer; |
| 291 | barrier.offset = 0; | 289 | barrier.offset = 0; |
| 292 | barrier.size = size; | 290 | barrier.size = size; |