summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hle/service/mii/mii_manager.cpp181
-rw-r--r--src/core/hle/service/mii/mii_util.h2
-rw-r--r--src/core/hle/service/mii/raw_data.cpp545
-rw-r--r--src/core/hle/service/mii/raw_data.h70
-rw-r--r--src/core/hle/service/mii/types.h62
5 files changed, 479 insertions, 381 deletions
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp
index 392aa78da..de70c3da6 100644
--- a/src/core/hle/service/mii/mii_manager.cpp
+++ b/src/core/hle/service/mii/mii_manager.cpp
@@ -11,6 +11,7 @@
11#include "core/hle/service/acc/profile_manager.h" 11#include "core/hle/service/acc/profile_manager.h"
12#include "core/hle/service/mii/mii_manager.h" 12#include "core/hle/service/mii/mii_manager.h"
13#include "core/hle/service/mii/mii_result.h" 13#include "core/hle/service/mii/mii_result.h"
14#include "core/hle/service/mii/mii_util.h"
14#include "core/hle/service/mii/raw_data.h" 15#include "core/hle/service/mii/raw_data.h"
15 16
16namespace Service::Mii { 17namespace Service::Mii {
@@ -19,19 +20,7 @@ namespace {
19 20
20constexpr std::size_t DefaultMiiCount{RawData::DefaultMii.size()}; 21constexpr std::size_t DefaultMiiCount{RawData::DefaultMii.size()};
21 22
22constexpr MiiStoreData::Name DefaultMiiName{u'n', u'o', u' ', u'n', u'a', u'm', u'e'}; 23constexpr Nickname DefaultMiiName{u'n', u'o', u' ', u'n', u'a', u'm', u'e'};
23constexpr std::array<u8, 8> HairColorLookup{8, 1, 2, 3, 4, 5, 6, 7};
24constexpr std::array<u8, 6> EyeColorLookup{8, 9, 10, 11, 12, 13};
25constexpr std::array<u8, 5> MouthColorLookup{19, 20, 21, 22, 23};
26constexpr std::array<u8, 7> GlassesColorLookup{8, 14, 15, 16, 17, 18, 0};
27constexpr std::array<u8, 62> EyeRotateLookup{
28 {0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04,
29 0x04, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
30 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03,
31 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04}};
32constexpr std::array<u8, 24> EyebrowRotateLookup{{0x06, 0x06, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07,
33 0x04, 0x07, 0x06, 0x08, 0x05, 0x05, 0x06, 0x06,
34 0x07, 0x07, 0x06, 0x06, 0x05, 0x06, 0x07, 0x05}};
35 24
36template <typename T, std::size_t SourceArraySize, std::size_t DestArraySize> 25template <typename T, std::size_t SourceArraySize, std::size_t DestArraySize>
37std::array<T, DestArraySize> ResizeArray(const std::array<T, SourceArraySize>& in) { 26std::array<T, DestArraySize> ResizeArray(const std::array<T, SourceArraySize>& in) {
@@ -100,42 +89,15 @@ CharInfo ConvertStoreDataToInfo(const MiiStoreData& data) {
100 }; 89 };
101} 90}
102 91
103u16 GenerateCrc16(const void* data, std::size_t size) {
104 s32 crc{};
105 for (std::size_t i = 0; i < size; i++) {
106 crc ^= static_cast<const u8*>(data)[i] << 8;
107 for (std::size_t j = 0; j < 8; j++) {
108 crc <<= 1;
109 if ((crc & 0x10000) != 0) {
110 crc = (crc ^ 0x1021) & 0xFFFF;
111 }
112 }
113 }
114 return Common::swap16(static_cast<u16>(crc));
115}
116
117template <typename T>
118T GetRandomValue(T min, T max) {
119 std::random_device device;
120 std::mt19937 gen(device());
121 std::uniform_int_distribution<u64> distribution(static_cast<u64>(min), static_cast<u64>(max));
122 return static_cast<T>(distribution(gen));
123}
124
125template <typename T>
126T GetRandomValue(T max) {
127 return GetRandomValue<T>({}, max);
128}
129
130MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Common::UUID& user_id) { 92MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Common::UUID& user_id) {
131 MiiStoreBitFields bf{}; 93 MiiStoreBitFields bf{};
132 94
133 if (gender == Gender::All) { 95 if (gender == Gender::All) {
134 gender = GetRandomValue<Gender>(Gender::Maximum); 96 gender = MiiUtil::GetRandomValue<Gender>(Gender::Maximum);
135 } 97 }
136 98
137 bf.gender.Assign(gender); 99 bf.gender.Assign(gender);
138 bf.favorite_color.Assign(GetRandomValue<u8>(11)); 100 bf.favorite_color.Assign(MiiUtil::GetRandomValue<u8>(11));
139 bf.region_move.Assign(0); 101 bf.region_move.Assign(0);
140 bf.font_region.Assign(FontRegion::Standard); 102 bf.font_region.Assign(FontRegion::Standard);
141 bf.type.Assign(0); 103 bf.type.Assign(0);
@@ -143,7 +105,7 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
143 bf.build.Assign(64); 105 bf.build.Assign(64);
144 106
145 if (age == Age::All) { 107 if (age == Age::All) {
146 const auto temp{GetRandomValue<int>(10)}; 108 const auto temp{MiiUtil::GetRandomValue<int>(10)};
147 if (temp >= 8) { 109 if (temp >= 8) {
148 age = Age::Old; 110 age = Age::Old;
149 } else if (temp >= 4) { 111 } else if (temp >= 4) {
@@ -154,7 +116,7 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
154 } 116 }
155 117
156 if (race == Race::All) { 118 if (race == Race::All) {
157 const auto temp{GetRandomValue<int>(10)}; 119 const auto temp{MiiUtil::GetRandomValue<int>(10)};
158 if (temp >= 8) { 120 if (temp >= 8) {
159 race = Race::Black; 121 race = Race::Black;
160 } else if (temp >= 4) { 122 } else if (temp >= 4) {
@@ -166,56 +128,57 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
166 128
167 u32 axis_y{}; 129 u32 axis_y{};
168 if (gender == Gender::Female && age == Age::Young) { 130 if (gender == Gender::Female && age == Age::Young) {
169 axis_y = GetRandomValue<u32>(3); 131 axis_y = MiiUtil::GetRandomValue<u32>(3);
170 } 132 }
171 133
172 const std::size_t index{3 * static_cast<std::size_t>(age) + 134 const std::size_t index{3 * static_cast<std::size_t>(age) +
173 9 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race)}; 135 9 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race)};
174 136
175 const auto faceline_type_info{RawData::RandomMiiFaceline.at(index)}; 137 const auto& faceline_type_info{RawData::RandomMiiFaceline.at(index)};
176 const auto faceline_color_info{RawData::RandomMiiFacelineColor.at( 138 const auto& faceline_color_info{RawData::RandomMiiFacelineColor.at(
177 3 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race))}; 139 3 * static_cast<std::size_t>(gender) + static_cast<std::size_t>(race))};
178 const auto faceline_wrinkle_info{RawData::RandomMiiFacelineWrinkle.at(index)}; 140 const auto& faceline_wrinkle_info{RawData::RandomMiiFacelineWrinkle.at(index)};
179 const auto faceline_makeup_info{RawData::RandomMiiFacelineMakeup.at(index)}; 141 const auto& faceline_makeup_info{RawData::RandomMiiFacelineMakeup.at(index)};
180 const auto hair_type_info{RawData::RandomMiiHairType.at(index)}; 142 const auto& hair_type_info{RawData::RandomMiiHairType.at(index)};
181 const auto hair_color_info{RawData::RandomMiiHairColor.at(3 * static_cast<std::size_t>(race) + 143 const auto& hair_color_info{RawData::RandomMiiHairColor.at(3 * static_cast<std::size_t>(race) +
182 static_cast<std::size_t>(age))}; 144 static_cast<std::size_t>(age))};
183 const auto eye_type_info{RawData::RandomMiiEyeType.at(index)}; 145 const auto& eye_type_info{RawData::RandomMiiEyeType.at(index)};
184 const auto eye_color_info{RawData::RandomMiiEyeColor.at(static_cast<std::size_t>(race))}; 146 const auto& eye_color_info{RawData::RandomMiiEyeColor.at(static_cast<std::size_t>(race))};
185 const auto eyebrow_type_info{RawData::RandomMiiEyebrowType.at(index)}; 147 const auto& eyebrow_type_info{RawData::RandomMiiEyebrowType.at(index)};
186 const auto nose_type_info{RawData::RandomMiiNoseType.at(index)}; 148 const auto& nose_type_info{RawData::RandomMiiNoseType.at(index)};
187 const auto mouth_type_info{RawData::RandomMiiMouthType.at(index)}; 149 const auto& mouth_type_info{RawData::RandomMiiMouthType.at(index)};
188 const auto glasses_type_info{RawData::RandomMiiGlassType.at(static_cast<std::size_t>(age))}; 150 const auto& glasses_type_info{RawData::RandomMiiGlassType.at(static_cast<std::size_t>(age))};
189 151
190 bf.faceline_type.Assign( 152 bf.faceline_type.Assign(
191 faceline_type_info.values[GetRandomValue<std::size_t>(faceline_type_info.values_count)]); 153 faceline_type_info
154 .values[MiiUtil::GetRandomValue<std::size_t>(faceline_type_info.values_count)]);
192 bf.faceline_color.Assign( 155 bf.faceline_color.Assign(
193 faceline_color_info.values[GetRandomValue<std::size_t>(faceline_color_info.values_count)]); 156 faceline_color_info
157 .values[MiiUtil::GetRandomValue<std::size_t>(faceline_color_info.values_count)]);
194 bf.faceline_wrinkle.Assign( 158 bf.faceline_wrinkle.Assign(
195 faceline_wrinkle_info 159 faceline_wrinkle_info
196 .values[GetRandomValue<std::size_t>(faceline_wrinkle_info.values_count)]); 160 .values[MiiUtil::GetRandomValue<std::size_t>(faceline_wrinkle_info.values_count)]);
197 bf.faceline_makeup.Assign( 161 bf.faceline_makeup.Assign(
198 faceline_makeup_info 162 faceline_makeup_info
199 .values[GetRandomValue<std::size_t>(faceline_makeup_info.values_count)]); 163 .values[MiiUtil::GetRandomValue<std::size_t>(faceline_makeup_info.values_count)]);
200 164
201 bf.hair_type.Assign( 165 bf.hair_type.Assign(
202 hair_type_info.values[GetRandomValue<std::size_t>(hair_type_info.values_count)]); 166 hair_type_info.values[MiiUtil::GetRandomValue<std::size_t>(hair_type_info.values_count)]);
203 bf.hair_color.Assign( 167 bf.hair_color.Assign(RawData::GetHairColorFromVer3(
204 HairColorLookup[hair_color_info 168 hair_color_info
205 .values[GetRandomValue<std::size_t>(hair_color_info.values_count)]]); 169 .values[MiiUtil::GetRandomValue<std::size_t>(hair_color_info.values_count)]));
206 bf.hair_flip.Assign(GetRandomValue<HairFlip>(HairFlip::Maximum)); 170 bf.hair_flip.Assign(MiiUtil::GetRandomValue<HairFlip>(HairFlip::Maximum));
207 171
208 bf.eye_type.Assign( 172 bf.eye_type.Assign(
209 eye_type_info.values[GetRandomValue<std::size_t>(eye_type_info.values_count)]); 173 eye_type_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_type_info.values_count)]);
210 174
211 const auto eye_rotate_1{gender != Gender::Male ? 4 : 2}; 175 const auto eye_rotate_1{gender != Gender::Male ? 4 : 2};
212 const auto eye_rotate_2{gender != Gender::Male ? 3 : 4}; 176 const auto eye_rotate_2{gender != Gender::Male ? 3 : 4};
213 const auto eye_rotate_offset{32 - EyeRotateLookup[eye_rotate_1] + eye_rotate_2}; 177 const auto eye_rotate_offset{32 - RawData::EyeRotateLookup[eye_rotate_1] + eye_rotate_2};
214 const auto eye_rotate{32 - EyeRotateLookup[bf.eye_type]}; 178 const auto eye_rotate{32 - RawData::EyeRotateLookup[bf.eye_type]};
215 179
216 bf.eye_color.Assign( 180 bf.eye_color.Assign(RawData::GetEyeColorFromVer3(
217 EyeColorLookup[eye_color_info 181 eye_color_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_color_info.values_count)]));
218 .values[GetRandomValue<std::size_t>(eye_color_info.values_count)]]);
219 bf.eye_scale.Assign(4); 182 bf.eye_scale.Assign(4);
220 bf.eye_aspect.Assign(3); 183 bf.eye_aspect.Assign(3);
221 bf.eye_rotate.Assign(eye_rotate_offset - eye_rotate); 184 bf.eye_rotate.Assign(eye_rotate_offset - eye_rotate);
@@ -223,13 +186,14 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
223 bf.eye_y.Assign(axis_y + 12); 186 bf.eye_y.Assign(axis_y + 12);
224 187
225 bf.eyebrow_type.Assign( 188 bf.eyebrow_type.Assign(
226 eyebrow_type_info.values[GetRandomValue<std::size_t>(eyebrow_type_info.values_count)]); 189 eyebrow_type_info
190 .values[MiiUtil::GetRandomValue<std::size_t>(eyebrow_type_info.values_count)]);
227 191
228 const auto eyebrow_rotate_1{race == Race::Asian ? 6 : 0}; 192 const auto eyebrow_rotate_1{race == Race::Asian ? 6 : 0};
229 const auto eyebrow_y{race == Race::Asian ? 9 : 10}; 193 const auto eyebrow_y{race == Race::Asian ? 9 : 10};
230 const auto eyebrow_rotate_offset{32 - EyebrowRotateLookup[eyebrow_rotate_1] + 6}; 194 const auto eyebrow_rotate_offset{32 - RawData::EyebrowRotateLookup[eyebrow_rotate_1] + 6};
231 const auto eyebrow_rotate{ 195 const auto eyebrow_rotate{
232 32 - EyebrowRotateLookup[static_cast<std::size_t>(bf.eyebrow_type.Value())]}; 196 32 - RawData::EyebrowRotateLookup[static_cast<std::size_t>(bf.eyebrow_type.Value())]};
233 197
234 bf.eyebrow_color.Assign(bf.hair_color); 198 bf.eyebrow_color.Assign(bf.hair_color);
235 bf.eyebrow_scale.Assign(4); 199 bf.eyebrow_scale.Assign(4);
@@ -241,15 +205,15 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
241 const auto nose_scale{gender == Gender::Female ? 3 : 4}; 205 const auto nose_scale{gender == Gender::Female ? 3 : 4};
242 206
243 bf.nose_type.Assign( 207 bf.nose_type.Assign(
244 nose_type_info.values[GetRandomValue<std::size_t>(nose_type_info.values_count)]); 208 nose_type_info.values[MiiUtil::GetRandomValue<std::size_t>(nose_type_info.values_count)]);
245 bf.nose_scale.Assign(nose_scale); 209 bf.nose_scale.Assign(nose_scale);
246 bf.nose_y.Assign(axis_y + 9); 210 bf.nose_y.Assign(axis_y + 9);
247 211
248 const auto mouth_color{gender == Gender::Female ? GetRandomValue<int>(4) : 0}; 212 const auto mouth_color{gender == Gender::Female ? MiiUtil::GetRandomValue<int>(4) : 0};
249 213
250 bf.mouth_type.Assign( 214 bf.mouth_type.Assign(
251 mouth_type_info.values[GetRandomValue<std::size_t>(mouth_type_info.values_count)]); 215 mouth_type_info.values[MiiUtil::GetRandomValue<std::size_t>(mouth_type_info.values_count)]);
252 bf.mouth_color.Assign(MouthColorLookup[mouth_color]); 216 bf.mouth_color.Assign(RawData::GetMouthColorFromVer3(mouth_color));
253 bf.mouth_scale.Assign(4); 217 bf.mouth_scale.Assign(4);
254 bf.mouth_aspect.Assign(3); 218 bf.mouth_aspect.Assign(3);
255 bf.mouth_y.Assign(axis_y + 13); 219 bf.mouth_y.Assign(axis_y + 13);
@@ -257,22 +221,22 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
257 bf.beard_color.Assign(bf.hair_color); 221 bf.beard_color.Assign(bf.hair_color);
258 bf.mustache_scale.Assign(4); 222 bf.mustache_scale.Assign(4);
259 223
260 if (gender == Gender::Male && age != Age::Young && GetRandomValue<int>(10) < 2) { 224 if (gender == Gender::Male && age != Age::Young && MiiUtil::GetRandomValue<int>(10) < 2) {
261 const auto mustache_and_beard_flag{ 225 const auto mustache_and_beard_flag{
262 GetRandomValue<BeardAndMustacheFlag>(BeardAndMustacheFlag::All)}; 226 MiiUtil::GetRandomValue<BeardAndMustacheFlag>(BeardAndMustacheFlag::All)};
263 227
264 auto beard_type{BeardType::None}; 228 auto beard_type{BeardType::None};
265 auto mustache_type{MustacheType::None}; 229 auto mustache_type{MustacheType::None};
266 230
267 if ((mustache_and_beard_flag & BeardAndMustacheFlag::Beard) == 231 if ((mustache_and_beard_flag & BeardAndMustacheFlag::Beard) ==
268 BeardAndMustacheFlag::Beard) { 232 BeardAndMustacheFlag::Beard) {
269 beard_type = GetRandomValue<BeardType>(BeardType::Beard1, BeardType::Beard5); 233 beard_type = MiiUtil::GetRandomValue<BeardType>(BeardType::Beard1, BeardType::Beard5);
270 } 234 }
271 235
272 if ((mustache_and_beard_flag & BeardAndMustacheFlag::Mustache) == 236 if ((mustache_and_beard_flag & BeardAndMustacheFlag::Mustache) ==
273 BeardAndMustacheFlag::Mustache) { 237 BeardAndMustacheFlag::Mustache) {
274 mustache_type = 238 mustache_type = MiiUtil::GetRandomValue<MustacheType>(MustacheType::Mustache1,
275 GetRandomValue<MustacheType>(MustacheType::Mustache1, MustacheType::Mustache5); 239 MustacheType::Mustache5);
276 } 240 }
277 241
278 bf.mustache_type.Assign(mustache_type); 242 bf.mustache_type.Assign(mustache_type);
@@ -284,7 +248,7 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
284 bf.mustache_y.Assign(axis_y + 10); 248 bf.mustache_y.Assign(axis_y + 10);
285 } 249 }
286 250
287 const auto glasses_type_start{GetRandomValue<std::size_t>(100)}; 251 const auto glasses_type_start{MiiUtil::GetRandomValue<std::size_t>(100)};
288 u8 glasses_type{}; 252 u8 glasses_type{};
289 while (glasses_type_start < glasses_type_info.values[glasses_type]) { 253 while (glasses_type_start < glasses_type_info.values[glasses_type]) {
290 if (++glasses_type >= glasses_type_info.values_count) { 254 if (++glasses_type >= glasses_type_info.values_count) {
@@ -294,7 +258,7 @@ MiiStoreData BuildRandomStoreData(Age age, Gender gender, Race race, const Commo
294 } 258 }
295 259
296 bf.glasses_type.Assign(glasses_type); 260 bf.glasses_type.Assign(glasses_type);
297 bf.glasses_color.Assign(GlassesColorLookup[0]); 261 bf.glasses_color.Assign(RawData::GetGlassColorFromVer3(0));
298 bf.glasses_scale.Assign(4); 262 bf.glasses_scale.Assign(4);
299 bf.glasses_y.Assign(axis_y + 10); 263 bf.glasses_y.Assign(axis_y + 10);
300 264
@@ -315,23 +279,23 @@ MiiStoreData BuildDefaultStoreData(const DefaultMii& info, const Common::UUID& u
315 bf.height.Assign(info.height); 279 bf.height.Assign(info.height);
316 bf.build.Assign(info.weight); 280 bf.build.Assign(info.weight);
317 bf.type.Assign(info.type); 281 bf.type.Assign(info.type);
318 bf.region_move.Assign(info.region); 282 bf.region_move.Assign(info.region_move);
319 bf.faceline_type.Assign(info.face_type); 283 bf.faceline_type.Assign(info.face_type);
320 bf.faceline_color.Assign(info.face_color); 284 bf.faceline_color.Assign(info.face_color);
321 bf.faceline_wrinkle.Assign(info.face_wrinkle); 285 bf.faceline_wrinkle.Assign(info.face_wrinkle);
322 bf.faceline_makeup.Assign(info.face_makeup); 286 bf.faceline_makeup.Assign(info.face_makeup);
323 bf.hair_type.Assign(info.hair_type); 287 bf.hair_type.Assign(info.hair_type);
324 bf.hair_color.Assign(HairColorLookup[info.hair_color]); 288 bf.hair_color.Assign(RawData::GetHairColorFromVer3(info.hair_color));
325 bf.hair_flip.Assign(static_cast<HairFlip>(info.hair_flip)); 289 bf.hair_flip.Assign(static_cast<HairFlip>(info.hair_flip));
326 bf.eye_type.Assign(info.eye_type); 290 bf.eye_type.Assign(info.eye_type);
327 bf.eye_color.Assign(EyeColorLookup[info.eye_color]); 291 bf.eye_color.Assign(RawData::GetEyeColorFromVer3(info.eye_color));
328 bf.eye_scale.Assign(info.eye_scale); 292 bf.eye_scale.Assign(info.eye_scale);
329 bf.eye_aspect.Assign(info.eye_aspect); 293 bf.eye_aspect.Assign(info.eye_aspect);
330 bf.eye_rotate.Assign(info.eye_rotate); 294 bf.eye_rotate.Assign(info.eye_rotate);
331 bf.eye_x.Assign(info.eye_x); 295 bf.eye_x.Assign(info.eye_x);
332 bf.eye_y.Assign(info.eye_y); 296 bf.eye_y.Assign(info.eye_y);
333 bf.eyebrow_type.Assign(info.eyebrow_type); 297 bf.eyebrow_type.Assign(info.eyebrow_type);
334 bf.eyebrow_color.Assign(HairColorLookup[info.eyebrow_color]); 298 bf.eyebrow_color.Assign(RawData::GetHairColorFromVer3(info.eyebrow_color));
335 bf.eyebrow_scale.Assign(info.eyebrow_scale); 299 bf.eyebrow_scale.Assign(info.eyebrow_scale);
336 bf.eyebrow_aspect.Assign(info.eyebrow_aspect); 300 bf.eyebrow_aspect.Assign(info.eyebrow_aspect);
337 bf.eyebrow_rotate.Assign(info.eyebrow_rotate); 301 bf.eyebrow_rotate.Assign(info.eyebrow_rotate);
@@ -341,17 +305,17 @@ MiiStoreData BuildDefaultStoreData(const DefaultMii& info, const Common::UUID& u
341 bf.nose_scale.Assign(info.nose_scale); 305 bf.nose_scale.Assign(info.nose_scale);
342 bf.nose_y.Assign(info.nose_y); 306 bf.nose_y.Assign(info.nose_y);
343 bf.mouth_type.Assign(info.mouth_type); 307 bf.mouth_type.Assign(info.mouth_type);
344 bf.mouth_color.Assign(MouthColorLookup[info.mouth_color]); 308 bf.mouth_color.Assign(RawData::GetMouthColorFromVer3(info.mouth_color));
345 bf.mouth_scale.Assign(info.mouth_scale); 309 bf.mouth_scale.Assign(info.mouth_scale);
346 bf.mouth_aspect.Assign(info.mouth_aspect); 310 bf.mouth_aspect.Assign(info.mouth_aspect);
347 bf.mouth_y.Assign(info.mouth_y); 311 bf.mouth_y.Assign(info.mouth_y);
348 bf.beard_color.Assign(HairColorLookup[info.beard_color]); 312 bf.beard_color.Assign(RawData::GetHairColorFromVer3(info.beard_color));
349 bf.beard_type.Assign(static_cast<BeardType>(info.beard_type)); 313 bf.beard_type.Assign(static_cast<BeardType>(info.beard_type));
350 bf.mustache_type.Assign(static_cast<MustacheType>(info.mustache_type)); 314 bf.mustache_type.Assign(static_cast<MustacheType>(info.mustache_type));
351 bf.mustache_scale.Assign(info.mustache_scale); 315 bf.mustache_scale.Assign(info.mustache_scale);
352 bf.mustache_y.Assign(info.mustache_y); 316 bf.mustache_y.Assign(info.mustache_y);
353 bf.glasses_type.Assign(info.glasses_type); 317 bf.glasses_type.Assign(info.glasses_type);
354 bf.glasses_color.Assign(GlassesColorLookup[info.glasses_color]); 318 bf.glasses_color.Assign(RawData::GetGlassColorFromVer3(static_cast<u8>(info.glasses_color)));
355 bf.glasses_scale.Assign(info.glasses_scale); 319 bf.glasses_scale.Assign(info.glasses_scale);
356 bf.glasses_y.Assign(info.glasses_y); 320 bf.glasses_y.Assign(info.glasses_y);
357 bf.mole_type.Assign(info.mole_type); 321 bf.mole_type.Assign(info.mole_type);
@@ -366,14 +330,14 @@ MiiStoreData BuildDefaultStoreData(const DefaultMii& info, const Common::UUID& u
366 330
367MiiStoreData::MiiStoreData() = default; 331MiiStoreData::MiiStoreData() = default;
368 332
369MiiStoreData::MiiStoreData(const MiiStoreData::Name& name, const MiiStoreBitFields& bit_fields, 333MiiStoreData::MiiStoreData(const Nickname& name, const MiiStoreBitFields& bit_fields,
370 const Common::UUID& user_id) { 334 const Common::UUID& user_id) {
371 data.name = name; 335 data.name = name;
372 data.uuid = Common::UUID::MakeRandomRFC4122V4(); 336 data.uuid = Common::UUID::MakeRandomRFC4122V4();
373 337
374 std::memcpy(data.data.data(), &bit_fields, sizeof(MiiStoreBitFields)); 338 std::memcpy(data.data.data(), &bit_fields, sizeof(MiiStoreBitFields));
375 data_crc = GenerateCrc16(data.data.data(), sizeof(data)); 339 data_crc = MiiUtil::CalculateCrc16(data.data.data(), sizeof(data));
376 device_crc = GenerateCrc16(&user_id, sizeof(Common::UUID)); 340 device_crc = MiiUtil::CalculateCrc16(&user_id, sizeof(Common::UUID));
377} 341}
378 342
379MiiManager::MiiManager() : user_id{Service::Account::ProfileManager().GetLastOpenedUser()} {} 343MiiManager::MiiManager() : user_id{Service::Account::ProfileManager().GetLastOpenedUser()} {}
@@ -580,16 +544,19 @@ Ver3StoreData MiiManager::BuildFromStoreData(const CharInfo& mii) const {
580 mii_v3.appearance_bits11.mole_y_position.Assign(mii.mole_y); 544 mii_v3.appearance_bits11.mole_y_position.Assign(mii.mole_y);
581 545
582 // These types are converted to V3 from a table 546 // These types are converted to V3 from a table
583 mii_v3.appearance_bits1.skin_color.Assign(Ver3FacelineColorTable[mii.faceline_color]); 547 mii_v3.appearance_bits1.skin_color.Assign(
584 mii_v3.appearance_bits3.hair_color.Assign(Ver3HairColorTable[mii.hair_color]); 548 RawData::FromVer3GetFacelineColor(mii.faceline_color));
585 mii_v3.appearance_bits4.eye_color.Assign(Ver3EyeColorTable[mii.eye_color]); 549 mii_v3.appearance_bits3.hair_color.Assign(RawData::FromVer3GetHairColor(mii.hair_color));
586 mii_v3.appearance_bits5.eyebrow_color.Assign(Ver3HairColorTable[mii.eyebrow_color]); 550 mii_v3.appearance_bits4.eye_color.Assign(RawData::FromVer3GetEyeColor(mii.eye_color));
587 mii_v3.appearance_bits7.mouth_color.Assign(Ver3MouthlineColorTable[mii.mouth_color]); 551 mii_v3.appearance_bits5.eyebrow_color.Assign(RawData::FromVer3GetHairColor(mii.eyebrow_color));
588 mii_v3.appearance_bits9.facial_hair_color.Assign(Ver3HairColorTable[mii.beard_color]); 552 mii_v3.appearance_bits7.mouth_color.Assign(RawData::FromVer3GetMouthlineColor(mii.mouth_color));
589 mii_v3.appearance_bits10.glasses_color.Assign(Ver3GlassColorTable[mii.glasses_color]); 553 mii_v3.appearance_bits9.facial_hair_color.Assign(
590 mii_v3.appearance_bits10.glasses_type.Assign(Ver3GlassTypeTable[mii.glasses_type]); 554 RawData::FromVer3GetHairColor(mii.beard_color));
591 555 mii_v3.appearance_bits10.glasses_color.Assign(
592 mii_v3.crc = GenerateCrc16(&mii_v3, sizeof(Ver3StoreData) - sizeof(u16)); 556 RawData::FromVer3GetGlassColor(mii.glasses_color));
557 mii_v3.appearance_bits10.glasses_type.Assign(RawData::FromVer3GetGlassType(mii.glasses_type));
558
559 mii_v3.crc = MiiUtil::CalculateCrc16(&mii_v3, sizeof(Ver3StoreData) - sizeof(u16));
593 560
594 // TODO: Validate mii_v3 data 561 // TODO: Validate mii_v3 data
595 562
diff --git a/src/core/hle/service/mii/mii_util.h b/src/core/hle/service/mii/mii_util.h
index 5eb6df317..d98f83825 100644
--- a/src/core/hle/service/mii/mii_util.h
+++ b/src/core/hle/service/mii/mii_util.h
@@ -8,7 +8,7 @@
8#include "common/common_types.h" 8#include "common/common_types.h"
9#include "common/swap.h" 9#include "common/swap.h"
10#include "common/uuid.h" 10#include "common/uuid.h"
11#include "core/hle/service/mii/mii_types.h" 11#include "core/hle/service/mii/types.h"
12 12
13namespace Service::Mii { 13namespace Service::Mii {
14class MiiUtil { 14class MiiUtil {
diff --git a/src/core/hle/service/mii/raw_data.cpp b/src/core/hle/service/mii/raw_data.cpp
index e5245b791..070e2d199 100644
--- a/src/core/hle/service/mii/raw_data.cpp
+++ b/src/core/hle/service/mii/raw_data.cpp
@@ -5,6 +5,83 @@
5 5
6namespace Service::Mii::RawData { 6namespace Service::Mii::RawData {
7 7
8constexpr std::array<u8, 0x10> FromVer3FacelineColorTable{
9 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x0, 0x1, 0x5, 0x5,
10};
11
12constexpr std::array<u8, 100> FromVer3HairColorTable{
13 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x0, 0x4, 0x3, 0x5, 0x4, 0x4, 0x6, 0x2, 0x0,
14 0x6, 0x4, 0x3, 0x2, 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
15 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4,
16 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5,
17 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0x5, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7,
18 0x7, 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x0, 0x4, 0x4, 0x4, 0x4,
19};
20
21constexpr std::array<u8, 100> FromVer3EyeColorTable{
22 0x0, 0x2, 0x2, 0x2, 0x1, 0x3, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x2, 0x2, 0x4,
23 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
24 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x4, 0x4,
25 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
26 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2,
27 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
28};
29
30constexpr std::array<u8, 100> FromVer3MouthlineColorTable{
31 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
32 0x4, 0x4, 0x0, 0x1, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
33 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
34 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
35 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3,
36 0x3, 0x3, 0x3, 0x3, 0x4, 0x0, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3,
37};
38
39constexpr std::array<u8, 100> FromVer3GlassColorTable{
40 0x0, 0x1, 0x1, 0x1, 0x5, 0x1, 0x1, 0x4, 0x0, 0x5, 0x1, 0x1, 0x3, 0x5, 0x1, 0x2, 0x3,
41 0x4, 0x5, 0x4, 0x2, 0x2, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
42 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
43 0x3, 0x3, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x0, 0x5, 0x5,
44 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x4,
45 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
46};
47
48constexpr std::array<u8, 20> FromVer3GlassTypeTable{
49 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x1,
50 0x2, 0x1, 0x3, 0x7, 0x7, 0x6, 0x7, 0x8, 0x7, 0x7,
51};
52
53constexpr std::array<u8, 8> Ver3FacelineColorTable{
54 0x0, 0x1, 0x2, 0x3, 0x4, 0x5,
55};
56
57constexpr std::array<u8, 8> Ver3HairColorTable{
58 0x8, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
59};
60
61constexpr std::array<u8, 6> Ver3EyeColorTable{
62 0x8, 0x9, 0xa, 0xb, 0xc, 0xd,
63};
64
65constexpr std::array<u8, 5> Ver3MouthColorTable{
66 0x13, 0x14, 0x15, 0x16, 0x17,
67};
68
69constexpr std::array<u8, 7> Ver3GlassColorTable{
70 0x8, 0xe, 0xf, 0x10, 0x11, 0x12, 0x0,
71};
72
73const std::array<u8, 62> EyeRotateLookup{
74 0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04,
75 0x04, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
76 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03,
77 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
78};
79
80const std::array<u8, 24> EyebrowRotateLookup{
81 0x06, 0x06, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07, 0x04, 0x07, 0x06, 0x08,
82 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x05, 0x06, 0x07, 0x05,
83};
84
8const std::array<Service::Mii::DefaultMii, 2> BaseMii{ 85const std::array<Service::Mii::DefaultMii, 2> BaseMii{
9 Service::Mii::DefaultMii{ 86 Service::Mii::DefaultMii{
10 .face_type = 0, 87 .face_type = 0,
@@ -13,7 +90,7 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
13 .face_makeup = 0, 90 .face_makeup = 0,
14 .hair_type = 33, 91 .hair_type = 33,
15 .hair_color = 1, 92 .hair_color = 1,
16 .hair_flip = 0, 93 .hair_flip = HairFlip::Left,
17 .eye_type = 2, 94 .eye_type = 2,
18 .eye_color = 0, 95 .eye_color = 0,
19 .eye_scale = 4, 96 .eye_scale = 4,
@@ -36,8 +113,8 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
36 .mouth_scale = 4, 113 .mouth_scale = 4,
37 .mouth_aspect = 3, 114 .mouth_aspect = 3,
38 .mouth_y = 13, 115 .mouth_y = 13,
39 .mustache_type = 0, 116 .mustache_type = MustacheType::None,
40 .beard_type = 0, 117 .beard_type = BeardType::None,
41 .beard_color = 0, 118 .beard_color = 0,
42 .mustache_scale = 4, 119 .mustache_scale = 4,
43 .mustache_y = 10, 120 .mustache_y = 10,
@@ -53,9 +130,10 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
53 .weight = 64, 130 .weight = 64,
54 .gender = Gender::Male, 131 .gender = Gender::Male,
55 .favorite_color = 0, 132 .favorite_color = 0,
56 .region = 0, 133 .region_move = 0,
57 .font_region = FontRegion::Standard, 134 .font_region = FontRegion::Standard,
58 .type = 0, 135 .type = 0,
136 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
59 }, 137 },
60 Service::Mii::DefaultMii{ 138 Service::Mii::DefaultMii{
61 .face_type = 0, 139 .face_type = 0,
@@ -64,7 +142,7 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
64 .face_makeup = 0, 142 .face_makeup = 0,
65 .hair_type = 12, 143 .hair_type = 12,
66 .hair_color = 1, 144 .hair_color = 1,
67 .hair_flip = 0, 145 .hair_flip = HairFlip::Left,
68 .eye_type = 4, 146 .eye_type = 4,
69 .eye_color = 0, 147 .eye_color = 0,
70 .eye_scale = 4, 148 .eye_scale = 4,
@@ -87,8 +165,8 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
87 .mouth_scale = 4, 165 .mouth_scale = 4,
88 .mouth_aspect = 3, 166 .mouth_aspect = 3,
89 .mouth_y = 13, 167 .mouth_y = 13,
90 .mustache_type = 0, 168 .mustache_type = MustacheType::None,
91 .beard_type = 0, 169 .beard_type = BeardType::None,
92 .beard_color = 0, 170 .beard_color = 0,
93 .mustache_scale = 4, 171 .mustache_scale = 4,
94 .mustache_y = 10, 172 .mustache_y = 10,
@@ -104,9 +182,10 @@ const std::array<Service::Mii::DefaultMii, 2> BaseMii{
104 .weight = 64, 182 .weight = 64,
105 .gender = Gender::Female, 183 .gender = Gender::Female,
106 .favorite_color = 0, 184 .favorite_color = 0,
107 .region = 0, 185 .region_move = 0,
108 .font_region = FontRegion::Standard, 186 .font_region = FontRegion::Standard,
109 .type = 0, 187 .type = 0,
188 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
110 }, 189 },
111}; 190};
112 191
@@ -118,7 +197,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
118 .face_makeup = 0, 197 .face_makeup = 0,
119 .hair_type = 68, 198 .hair_type = 68,
120 .hair_color = 0, 199 .hair_color = 0,
121 .hair_flip = 0, 200 .hair_flip = HairFlip::Left,
122 .eye_type = 2, 201 .eye_type = 2,
123 .eye_color = 0, 202 .eye_color = 0,
124 .eye_scale = 4, 203 .eye_scale = 4,
@@ -141,8 +220,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
141 .mouth_scale = 4, 220 .mouth_scale = 4,
142 .mouth_aspect = 3, 221 .mouth_aspect = 3,
143 .mouth_y = 13, 222 .mouth_y = 13,
144 .mustache_type = 0, 223 .mustache_type = MustacheType::None,
145 .beard_type = 0, 224 .beard_type = BeardType::None,
146 .beard_color = 0, 225 .beard_color = 0,
147 .mustache_scale = 4, 226 .mustache_scale = 4,
148 .mustache_y = 10, 227 .mustache_y = 10,
@@ -158,9 +237,10 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
158 .weight = 64, 237 .weight = 64,
159 .gender = Gender::Male, 238 .gender = Gender::Male,
160 .favorite_color = 4, 239 .favorite_color = 4,
161 .region = 0, 240 .region_move = 0,
162 .font_region = FontRegion::Standard, 241 .font_region = FontRegion::Standard,
163 .type = 0, 242 .type = 0,
243 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
164 }, 244 },
165 Service::Mii::DefaultMii{ 245 Service::Mii::DefaultMii{
166 .face_type = 0, 246 .face_type = 0,
@@ -169,7 +249,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
169 .face_makeup = 0, 249 .face_makeup = 0,
170 .hair_type = 55, 250 .hair_type = 55,
171 .hair_color = 6, 251 .hair_color = 6,
172 .hair_flip = 0, 252 .hair_flip = HairFlip::Left,
173 .eye_type = 2, 253 .eye_type = 2,
174 .eye_color = 4, 254 .eye_color = 4,
175 .eye_scale = 4, 255 .eye_scale = 4,
@@ -192,8 +272,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
192 .mouth_scale = 4, 272 .mouth_scale = 4,
193 .mouth_aspect = 3, 273 .mouth_aspect = 3,
194 .mouth_y = 13, 274 .mouth_y = 13,
195 .mustache_type = 0, 275 .mustache_type = MustacheType::None,
196 .beard_type = 0, 276 .beard_type = BeardType::None,
197 .beard_color = 0, 277 .beard_color = 0,
198 .mustache_scale = 4, 278 .mustache_scale = 4,
199 .mustache_y = 10, 279 .mustache_y = 10,
@@ -209,9 +289,10 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
209 .weight = 64, 289 .weight = 64,
210 .gender = Gender::Male, 290 .gender = Gender::Male,
211 .favorite_color = 5, 291 .favorite_color = 5,
212 .region = 0, 292 .region_move = 0,
213 .font_region = FontRegion::Standard, 293 .font_region = FontRegion::Standard,
214 .type = 0, 294 .type = 0,
295 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
215 }, 296 },
216 Service::Mii::DefaultMii{ 297 Service::Mii::DefaultMii{
217 .face_type = 0, 298 .face_type = 0,
@@ -220,7 +301,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
220 .face_makeup = 0, 301 .face_makeup = 0,
221 .hair_type = 33, 302 .hair_type = 33,
222 .hair_color = 1, 303 .hair_color = 1,
223 .hair_flip = 0, 304 .hair_flip = HairFlip::Left,
224 .eye_type = 2, 305 .eye_type = 2,
225 .eye_color = 0, 306 .eye_color = 0,
226 .eye_scale = 4, 307 .eye_scale = 4,
@@ -243,8 +324,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
243 .mouth_scale = 4, 324 .mouth_scale = 4,
244 .mouth_aspect = 3, 325 .mouth_aspect = 3,
245 .mouth_y = 13, 326 .mouth_y = 13,
246 .mustache_type = 0, 327 .mustache_type = MustacheType::None,
247 .beard_type = 0, 328 .beard_type = BeardType::None,
248 .beard_color = 0, 329 .beard_color = 0,
249 .mustache_scale = 4, 330 .mustache_scale = 4,
250 .mustache_y = 10, 331 .mustache_y = 10,
@@ -260,9 +341,10 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
260 .weight = 64, 341 .weight = 64,
261 .gender = Gender::Male, 342 .gender = Gender::Male,
262 .favorite_color = 0, 343 .favorite_color = 0,
263 .region = 0, 344 .region_move = 0,
264 .font_region = FontRegion::Standard, 345 .font_region = FontRegion::Standard,
265 .type = 0, 346 .type = 0,
347 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
266 }, 348 },
267 Service::Mii::DefaultMii{ 349 Service::Mii::DefaultMii{
268 .face_type = 0, 350 .face_type = 0,
@@ -271,7 +353,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
271 .face_makeup = 0, 353 .face_makeup = 0,
272 .hair_type = 24, 354 .hair_type = 24,
273 .hair_color = 0, 355 .hair_color = 0,
274 .hair_flip = 0, 356 .hair_flip = HairFlip::Left,
275 .eye_type = 4, 357 .eye_type = 4,
276 .eye_color = 0, 358 .eye_color = 0,
277 .eye_scale = 4, 359 .eye_scale = 4,
@@ -294,8 +376,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
294 .mouth_scale = 4, 376 .mouth_scale = 4,
295 .mouth_aspect = 3, 377 .mouth_aspect = 3,
296 .mouth_y = 13, 378 .mouth_y = 13,
297 .mustache_type = 0, 379 .mustache_type = MustacheType::None,
298 .beard_type = 0, 380 .beard_type = BeardType::None,
299 .beard_color = 0, 381 .beard_color = 0,
300 .mustache_scale = 4, 382 .mustache_scale = 4,
301 .mustache_y = 10, 383 .mustache_y = 10,
@@ -311,9 +393,10 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
311 .weight = 64, 393 .weight = 64,
312 .gender = Gender::Female, 394 .gender = Gender::Female,
313 .favorite_color = 2, 395 .favorite_color = 2,
314 .region = 0, 396 .region_move = 0,
315 .font_region = FontRegion::Standard, 397 .font_region = FontRegion::Standard,
316 .type = 0, 398 .type = 0,
399 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
317 }, 400 },
318 Service::Mii::DefaultMii{ 401 Service::Mii::DefaultMii{
319 .face_type = 0, 402 .face_type = 0,
@@ -322,7 +405,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
322 .face_makeup = 0, 405 .face_makeup = 0,
323 .hair_type = 14, 406 .hair_type = 14,
324 .hair_color = 7, 407 .hair_color = 7,
325 .hair_flip = 0, 408 .hair_flip = HairFlip::Left,
326 .eye_type = 4, 409 .eye_type = 4,
327 .eye_color = 5, 410 .eye_color = 5,
328 .eye_scale = 4, 411 .eye_scale = 4,
@@ -345,8 +428,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
345 .mouth_scale = 4, 428 .mouth_scale = 4,
346 .mouth_aspect = 3, 429 .mouth_aspect = 3,
347 .mouth_y = 13, 430 .mouth_y = 13,
348 .mustache_type = 0, 431 .mustache_type = MustacheType::None,
349 .beard_type = 0, 432 .beard_type = BeardType::None,
350 .beard_color = 0, 433 .beard_color = 0,
351 .mustache_scale = 4, 434 .mustache_scale = 4,
352 .mustache_y = 10, 435 .mustache_y = 10,
@@ -362,9 +445,10 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
362 .weight = 64, 445 .weight = 64,
363 .gender = Gender::Female, 446 .gender = Gender::Female,
364 .favorite_color = 6, 447 .favorite_color = 6,
365 .region = 0, 448 .region_move = 0,
366 .font_region = FontRegion::Standard, 449 .font_region = FontRegion::Standard,
367 .type = 0, 450 .type = 0,
451 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
368 }, 452 },
369 Service::Mii::DefaultMii{ 453 Service::Mii::DefaultMii{
370 .face_type = 0, 454 .face_type = 0,
@@ -373,7 +457,7 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
373 .face_makeup = 0, 457 .face_makeup = 0,
374 .hair_type = 12, 458 .hair_type = 12,
375 .hair_color = 1, 459 .hair_color = 1,
376 .hair_flip = 0, 460 .hair_flip = HairFlip::Left,
377 .eye_type = 4, 461 .eye_type = 4,
378 .eye_color = 0, 462 .eye_color = 0,
379 .eye_scale = 4, 463 .eye_scale = 4,
@@ -396,8 +480,8 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
396 .mouth_scale = 4, 480 .mouth_scale = 4,
397 .mouth_aspect = 3, 481 .mouth_aspect = 3,
398 .mouth_y = 13, 482 .mouth_y = 13,
399 .mustache_type = 0, 483 .mustache_type = MustacheType::None,
400 .beard_type = 0, 484 .beard_type = BeardType::None,
401 .beard_color = 0, 485 .beard_color = 0,
402 .mustache_scale = 4, 486 .mustache_scale = 4,
403 .mustache_y = 10, 487 .mustache_y = 10,
@@ -413,134 +497,135 @@ const std::array<Service::Mii::DefaultMii, 6> DefaultMii{
413 .weight = 64, 497 .weight = 64,
414 .gender = Gender::Female, 498 .gender = Gender::Female,
415 .favorite_color = 7, 499 .favorite_color = 7,
416 .region = 0, 500 .region_move = 0,
417 .font_region = FontRegion::Standard, 501 .font_region = FontRegion::Standard,
418 .type = 0, 502 .type = 0,
503 .nickname = {u'n', u'o', u' ', u'n', u'a', u'm', u'e'},
419 }, 504 },
420 505
421}; 506};
422 507
423const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFaceline{ 508const std::array<RandomMiiData4, 18> RandomMiiFaceline{
424 Service::Mii::RandomMiiData4{ 509 RandomMiiData4{
425 .gender = Gender::Male, 510 .gender = Gender::Male,
426 .age = Age::Young, 511 .age = Age::Young,
427 .race = Race::Black, 512 .race = Race::Black,
428 .values_count = 10, 513 .values_count = 10,
429 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 514 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
430 }, 515 },
431 Service::Mii::RandomMiiData4{ 516 RandomMiiData4{
432 .gender = Gender::Male, 517 .gender = Gender::Male,
433 .age = Age::Normal, 518 .age = Age::Normal,
434 .race = Race::Black, 519 .race = Race::Black,
435 .values_count = 10, 520 .values_count = 10,
436 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 521 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
437 }, 522 },
438 Service::Mii::RandomMiiData4{ 523 RandomMiiData4{
439 .gender = Gender::Male, 524 .gender = Gender::Male,
440 .age = Age::Old, 525 .age = Age::Old,
441 .race = Race::Black, 526 .race = Race::Black,
442 .values_count = 10, 527 .values_count = 10,
443 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 528 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
444 }, 529 },
445 Service::Mii::RandomMiiData4{ 530 RandomMiiData4{
446 .gender = Gender::Male, 531 .gender = Gender::Male,
447 .age = Age::Young, 532 .age = Age::Young,
448 .race = Race::White, 533 .race = Race::White,
449 .values_count = 12, 534 .values_count = 12,
450 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11}, 535 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11},
451 }, 536 },
452 Service::Mii::RandomMiiData4{ 537 RandomMiiData4{
453 .gender = Gender::Male, 538 .gender = Gender::Male,
454 .age = Age::Normal, 539 .age = Age::Normal,
455 .race = Race::White, 540 .race = Race::White,
456 .values_count = 13, 541 .values_count = 13,
457 .values = {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 10, 11}, 542 .values = {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 10, 11},
458 }, 543 },
459 Service::Mii::RandomMiiData4{ 544 RandomMiiData4{
460 .gender = Gender::Male, 545 .gender = Gender::Male,
461 .age = Age::Old, 546 .age = Age::Old,
462 .race = Race::White, 547 .race = Race::White,
463 .values_count = 12, 548 .values_count = 12,
464 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11}, 549 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11},
465 }, 550 },
466 Service::Mii::RandomMiiData4{ 551 RandomMiiData4{
467 .gender = Gender::Male, 552 .gender = Gender::Male,
468 .age = Age::Young, 553 .age = Age::Young,
469 .race = Race::Asian, 554 .race = Race::Asian,
470 .values_count = 12, 555 .values_count = 12,
471 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11}, 556 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11},
472 }, 557 },
473 Service::Mii::RandomMiiData4{ 558 RandomMiiData4{
474 .gender = Gender::Male, 559 .gender = Gender::Male,
475 .age = Age::Normal, 560 .age = Age::Normal,
476 .race = Race::Asian, 561 .race = Race::Asian,
477 .values_count = 13, 562 .values_count = 13,
478 .values = {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 10, 11}, 563 .values = {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 10, 11},
479 }, 564 },
480 Service::Mii::RandomMiiData4{ 565 RandomMiiData4{
481 .gender = Gender::Male, 566 .gender = Gender::Male,
482 .age = Age::Old, 567 .age = Age::Old,
483 .race = Race::Asian, 568 .race = Race::Asian,
484 .values_count = 12, 569 .values_count = 12,
485 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11}, 570 .values = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 10, 11},
486 }, 571 },
487 Service::Mii::RandomMiiData4{ 572 RandomMiiData4{
488 .gender = Gender::Female, 573 .gender = Gender::Female,
489 .age = Age::Young, 574 .age = Age::Young,
490 .race = Race::Black, 575 .race = Race::Black,
491 .values_count = 10, 576 .values_count = 10,
492 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 577 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
493 }, 578 },
494 Service::Mii::RandomMiiData4{ 579 RandomMiiData4{
495 .gender = Gender::Female, 580 .gender = Gender::Female,
496 .age = Age::Normal, 581 .age = Age::Normal,
497 .race = Race::Black, 582 .race = Race::Black,
498 .values_count = 10, 583 .values_count = 10,
499 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 584 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
500 }, 585 },
501 Service::Mii::RandomMiiData4{ 586 RandomMiiData4{
502 .gender = Gender::Female, 587 .gender = Gender::Female,
503 .age = Age::Old, 588 .age = Age::Old,
504 .race = Race::Black, 589 .race = Race::Black,
505 .values_count = 10, 590 .values_count = 10,
506 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9}, 591 .values = {0, 0, 1, 1, 2, 3, 4, 5, 9, 9},
507 }, 592 },
508 Service::Mii::RandomMiiData4{ 593 RandomMiiData4{
509 .gender = Gender::Female, 594 .gender = Gender::Female,
510 .age = Age::Young, 595 .age = Age::Young,
511 .race = Race::White, 596 .race = Race::White,
512 .values_count = 12, 597 .values_count = 12,
513 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10}, 598 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10},
514 }, 599 },
515 Service::Mii::RandomMiiData4{ 600 RandomMiiData4{
516 .gender = Gender::Female, 601 .gender = Gender::Female,
517 .age = Age::Normal, 602 .age = Age::Normal,
518 .race = Race::White, 603 .race = Race::White,
519 .values_count = 12, 604 .values_count = 12,
520 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10}, 605 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10},
521 }, 606 },
522 Service::Mii::RandomMiiData4{ 607 RandomMiiData4{
523 .gender = Gender::Female, 608 .gender = Gender::Female,
524 .age = Age::Old, 609 .age = Age::Old,
525 .race = Race::White, 610 .race = Race::White,
526 .values_count = 12, 611 .values_count = 12,
527 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10}, 612 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10},
528 }, 613 },
529 Service::Mii::RandomMiiData4{ 614 RandomMiiData4{
530 .gender = Gender::Female, 615 .gender = Gender::Female,
531 .age = Age::Young, 616 .age = Age::Young,
532 .race = Race::Asian, 617 .race = Race::Asian,
533 .values_count = 12, 618 .values_count = 12,
534 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10}, 619 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10},
535 }, 620 },
536 Service::Mii::RandomMiiData4{ 621 RandomMiiData4{
537 .gender = Gender::Female, 622 .gender = Gender::Female,
538 .age = Age::Normal, 623 .age = Age::Normal,
539 .race = Race::Asian, 624 .race = Race::Asian,
540 .values_count = 12, 625 .values_count = 12,
541 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10}, 626 .values = {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 8, 10},
542 }, 627 },
543 Service::Mii::RandomMiiData4{ 628 RandomMiiData4{
544 .gender = Gender::Female, 629 .gender = Gender::Female,
545 .age = Age::Old, 630 .age = Age::Old,
546 .race = Race::Asian, 631 .race = Race::Asian,
@@ -549,38 +634,38 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFaceline{
549 }, 634 },
550}; 635};
551 636
552const std::array<Service::Mii::RandomMiiData3, 6> RandomMiiFacelineColor{ 637const std::array<RandomMiiData3, 6> RandomMiiFacelineColor{
553 Service::Mii::RandomMiiData3{ 638 RandomMiiData3{
554 .arg_1 = 0, 639 .arg_1 = 0,
555 .arg_2 = 0, 640 .arg_2 = 0,
556 .values_count = 10, 641 .values_count = 10,
557 .values = {2, 2, 4, 4, 4, 4, 5, 5, 5, 5}, 642 .values = {2, 2, 4, 4, 4, 4, 5, 5, 5, 5},
558 }, 643 },
559 Service::Mii::RandomMiiData3{ 644 RandomMiiData3{
560 .arg_1 = 0, 645 .arg_1 = 0,
561 .arg_2 = 1, 646 .arg_2 = 1,
562 .values_count = 10, 647 .values_count = 10,
563 .values = {0, 0, 0, 0, 1, 1, 2, 3, 3, 3}, 648 .values = {0, 0, 0, 0, 1, 1, 2, 3, 3, 3},
564 }, 649 },
565 Service::Mii::RandomMiiData3{ 650 RandomMiiData3{
566 .arg_1 = 0, 651 .arg_1 = 0,
567 .arg_2 = 2, 652 .arg_2 = 2,
568 .values_count = 10, 653 .values_count = 10,
569 .values = {0, 0, 1, 1, 1, 1, 1, 1, 1, 2}, 654 .values = {0, 0, 1, 1, 1, 1, 1, 1, 1, 2},
570 }, 655 },
571 Service::Mii::RandomMiiData3{ 656 RandomMiiData3{
572 .arg_1 = 1, 657 .arg_1 = 1,
573 .arg_2 = 0, 658 .arg_2 = 0,
574 .values_count = 10, 659 .values_count = 10,
575 .values = {2, 2, 4, 4, 4, 4, 5, 5, 5, 5}, 660 .values = {2, 2, 4, 4, 4, 4, 5, 5, 5, 5},
576 }, 661 },
577 Service::Mii::RandomMiiData3{ 662 RandomMiiData3{
578 .arg_1 = 1, 663 .arg_1 = 1,
579 .arg_2 = 1, 664 .arg_2 = 1,
580 .values_count = 10, 665 .values_count = 10,
581 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 3}, 666 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 3},
582 }, 667 },
583 Service::Mii::RandomMiiData3{ 668 RandomMiiData3{
584 .arg_1 = 1, 669 .arg_1 = 1,
585 .arg_2 = 2, 670 .arg_2 = 2,
586 .values_count = 10, 671 .values_count = 10,
@@ -588,127 +673,127 @@ const std::array<Service::Mii::RandomMiiData3, 6> RandomMiiFacelineColor{
588 }, 673 },
589}; 674};
590 675
591const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineWrinkle{ 676const std::array<RandomMiiData4, 18> RandomMiiFacelineWrinkle{
592 Service::Mii::RandomMiiData4{ 677 RandomMiiData4{
593 .gender = Gender::Male, 678 .gender = Gender::Male,
594 .age = Age::Young, 679 .age = Age::Young,
595 .race = Race::Black, 680 .race = Race::Black,
596 .values_count = 20, 681 .values_count = 20,
597 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, 682 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
598 }, 683 },
599 Service::Mii::RandomMiiData4{ 684 RandomMiiData4{
600 .gender = Gender::Male, 685 .gender = Gender::Male,
601 .age = Age::Normal, 686 .age = Age::Normal,
602 .race = Race::Black, 687 .race = Race::Black,
603 .values_count = 20, 688 .values_count = 20,
604 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, 689 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
605 }, 690 },
606 Service::Mii::RandomMiiData4{ 691 RandomMiiData4{
607 .gender = Gender::Male, 692 .gender = Gender::Male,
608 .age = Age::Old, 693 .age = Age::Old,
609 .race = Race::Black, 694 .race = Race::Black,
610 .values_count = 20, 695 .values_count = 20,
611 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8}, 696 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8},
612 }, 697 },
613 Service::Mii::RandomMiiData4{ 698 RandomMiiData4{
614 .gender = Gender::Male, 699 .gender = Gender::Male,
615 .age = Age::Young, 700 .age = Age::Young,
616 .race = Race::White, 701 .race = Race::White,
617 .values_count = 20, 702 .values_count = 20,
618 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9}, 703 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9},
619 }, 704 },
620 Service::Mii::RandomMiiData4{ 705 RandomMiiData4{
621 .gender = Gender::Male, 706 .gender = Gender::Male,
622 .age = Age::Normal, 707 .age = Age::Normal,
623 .race = Race::White, 708 .race = Race::White,
624 .values_count = 20, 709 .values_count = 20,
625 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9}, 710 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9},
626 }, 711 },
627 Service::Mii::RandomMiiData4{ 712 RandomMiiData4{
628 .gender = Gender::Male, 713 .gender = Gender::Male,
629 .age = Age::Old, 714 .age = Age::Old,
630 .race = Race::White, 715 .race = Race::White,
631 .values_count = 20, 716 .values_count = 20,
632 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 717 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
633 }, 718 },
634 Service::Mii::RandomMiiData4{ 719 RandomMiiData4{
635 .gender = Gender::Male, 720 .gender = Gender::Male,
636 .age = Age::Young, 721 .age = Age::Young,
637 .race = Race::Asian, 722 .race = Race::Asian,
638 .values_count = 20, 723 .values_count = 20,
639 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11}, 724 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11},
640 }, 725 },
641 Service::Mii::RandomMiiData4{ 726 RandomMiiData4{
642 .gender = Gender::Male, 727 .gender = Gender::Male,
643 .age = Age::Normal, 728 .age = Age::Normal,
644 .race = Race::Asian, 729 .race = Race::Asian,
645 .values_count = 20, 730 .values_count = 20,
646 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11}, 731 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11},
647 }, 732 },
648 Service::Mii::RandomMiiData4{ 733 RandomMiiData4{
649 .gender = Gender::Male, 734 .gender = Gender::Male,
650 .age = Age::Old, 735 .age = Age::Old,
651 .race = Race::Asian, 736 .race = Race::Asian,
652 .values_count = 20, 737 .values_count = 20,
653 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11}, 738 .values = {9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11},
654 }, 739 },
655 Service::Mii::RandomMiiData4{ 740 RandomMiiData4{
656 .gender = Gender::Female, 741 .gender = Gender::Female,
657 .age = Age::Young, 742 .age = Age::Young,
658 .race = Race::Black, 743 .race = Race::Black,
659 .values_count = 20, 744 .values_count = 20,
660 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, 745 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
661 }, 746 },
662 Service::Mii::RandomMiiData4{ 747 RandomMiiData4{
663 .gender = Gender::Female, 748 .gender = Gender::Female,
664 .age = Age::Normal, 749 .age = Age::Normal,
665 .race = Race::Black, 750 .race = Race::Black,
666 .values_count = 20, 751 .values_count = 20,
667 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, 752 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
668 }, 753 },
669 Service::Mii::RandomMiiData4{ 754 RandomMiiData4{
670 .gender = Gender::Female, 755 .gender = Gender::Female,
671 .age = Age::Old, 756 .age = Age::Old,
672 .race = Race::Black, 757 .race = Race::Black,
673 .values_count = 20, 758 .values_count = 20,
674 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, 759 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
675 }, 760 },
676 Service::Mii::RandomMiiData4{ 761 RandomMiiData4{
677 .gender = Gender::Female, 762 .gender = Gender::Female,
678 .age = Age::Young, 763 .age = Age::Young,
679 .race = Race::White, 764 .race = Race::White,
680 .values_count = 20, 765 .values_count = 20,
681 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 8, 8}, 766 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 8, 8},
682 }, 767 },
683 Service::Mii::RandomMiiData4{ 768 RandomMiiData4{
684 .gender = Gender::Female, 769 .gender = Gender::Female,
685 .age = Age::Normal, 770 .age = Age::Normal,
686 .race = Race::White, 771 .race = Race::White,
687 .values_count = 20, 772 .values_count = 20,
688 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 8, 8}, 773 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 8, 8},
689 }, 774 },
690 Service::Mii::RandomMiiData4{ 775 RandomMiiData4{
691 .gender = Gender::Female, 776 .gender = Gender::Female,
692 .age = Age::Old, 777 .age = Age::Old,
693 .race = Race::White, 778 .race = Race::White,
694 .values_count = 20, 779 .values_count = 20,
695 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4}, 780 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4},
696 }, 781 },
697 Service::Mii::RandomMiiData4{ 782 RandomMiiData4{
698 .gender = Gender::Female, 783 .gender = Gender::Female,
699 .age = Age::Young, 784 .age = Age::Young,
700 .race = Race::Asian, 785 .race = Race::Asian,
701 .values_count = 20, 786 .values_count = 20,
702 .values = {9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11}, 787 .values = {9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11},
703 }, 788 },
704 Service::Mii::RandomMiiData4{ 789 RandomMiiData4{
705 .gender = Gender::Female, 790 .gender = Gender::Female,
706 .age = Age::Normal, 791 .age = Age::Normal,
707 .race = Race::Asian, 792 .race = Race::Asian,
708 .values_count = 20, 793 .values_count = 20,
709 .values = {9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11}, 794 .values = {9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11},
710 }, 795 },
711 Service::Mii::RandomMiiData4{ 796 RandomMiiData4{
712 .gender = Gender::Female, 797 .gender = Gender::Female,
713 .age = Age::Old, 798 .age = Age::Old,
714 .race = Race::Asian, 799 .race = Race::Asian,
@@ -717,127 +802,127 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineWrinkle{
717 }, 802 },
718}; 803};
719 804
720const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineMakeup{ 805const std::array<RandomMiiData4, 18> RandomMiiFacelineMakeup{
721 Service::Mii::RandomMiiData4{ 806 RandomMiiData4{
722 .gender = Gender::Male, 807 .gender = Gender::Male,
723 .age = Age::Young, 808 .age = Age::Young,
724 .race = Race::Black, 809 .race = Race::Black,
725 .values_count = 20, 810 .values_count = 20,
726 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 811 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
727 }, 812 },
728 Service::Mii::RandomMiiData4{ 813 RandomMiiData4{
729 .gender = Gender::Male, 814 .gender = Gender::Male,
730 .age = Age::Normal, 815 .age = Age::Normal,
731 .race = Race::Black, 816 .race = Race::Black,
732 .values_count = 20, 817 .values_count = 20,
733 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9}, 818 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9},
734 }, 819 },
735 Service::Mii::RandomMiiData4{ 820 RandomMiiData4{
736 .gender = Gender::Male, 821 .gender = Gender::Male,
737 .age = Age::Old, 822 .age = Age::Old,
738 .race = Race::Black, 823 .race = Race::Black,
739 .values_count = 20, 824 .values_count = 20,
740 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9}, 825 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9},
741 }, 826 },
742 Service::Mii::RandomMiiData4{ 827 RandomMiiData4{
743 .gender = Gender::Male, 828 .gender = Gender::Male,
744 .age = Age::Young, 829 .age = Age::Young,
745 .race = Race::White, 830 .race = Race::White,
746 .values_count = 20, 831 .values_count = 20,
747 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 832 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
748 }, 833 },
749 Service::Mii::RandomMiiData4{ 834 RandomMiiData4{
750 .gender = Gender::Male, 835 .gender = Gender::Male,
751 .age = Age::Normal, 836 .age = Age::Normal,
752 .race = Race::White, 837 .race = Race::White,
753 .values_count = 20, 838 .values_count = 20,
754 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 839 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
755 }, 840 },
756 Service::Mii::RandomMiiData4{ 841 RandomMiiData4{
757 .gender = Gender::Male, 842 .gender = Gender::Male,
758 .age = Age::Old, 843 .age = Age::Old,
759 .race = Race::White, 844 .race = Race::White,
760 .values_count = 20, 845 .values_count = 20,
761 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 846 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
762 }, 847 },
763 Service::Mii::RandomMiiData4{ 848 RandomMiiData4{
764 .gender = Gender::Male, 849 .gender = Gender::Male,
765 .age = Age::Young, 850 .age = Age::Young,
766 .race = Race::Asian, 851 .race = Race::Asian,
767 .values_count = 20, 852 .values_count = 20,
768 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 853 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
769 }, 854 },
770 Service::Mii::RandomMiiData4{ 855 RandomMiiData4{
771 .gender = Gender::Male, 856 .gender = Gender::Male,
772 .age = Age::Normal, 857 .age = Age::Normal,
773 .race = Race::Asian, 858 .race = Race::Asian,
774 .values_count = 20, 859 .values_count = 20,
775 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 860 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
776 }, 861 },
777 Service::Mii::RandomMiiData4{ 862 RandomMiiData4{
778 .gender = Gender::Male, 863 .gender = Gender::Male,
779 .age = Age::Old, 864 .age = Age::Old,
780 .race = Race::Asian, 865 .race = Race::Asian,
781 .values_count = 20, 866 .values_count = 20,
782 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9}, 867 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9},
783 }, 868 },
784 Service::Mii::RandomMiiData4{ 869 RandomMiiData4{
785 .gender = Gender::Female, 870 .gender = Gender::Female,
786 .age = Age::Young, 871 .age = Age::Young,
787 .race = Race::Black, 872 .race = Race::Black,
788 .values_count = 20, 873 .values_count = 20,
789 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2}, 874 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2},
790 }, 875 },
791 Service::Mii::RandomMiiData4{ 876 RandomMiiData4{
792 .gender = Gender::Female, 877 .gender = Gender::Female,
793 .age = Age::Normal, 878 .age = Age::Normal,
794 .race = Race::Black, 879 .race = Race::Black,
795 .values_count = 20, 880 .values_count = 20,
796 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 9}, 881 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 9},
797 }, 882 },
798 Service::Mii::RandomMiiData4{ 883 RandomMiiData4{
799 .gender = Gender::Female, 884 .gender = Gender::Female,
800 .age = Age::Old, 885 .age = Age::Old,
801 .race = Race::Black, 886 .race = Race::Black,
802 .values_count = 20, 887 .values_count = 20,
803 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 9}, 888 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 9, 9},
804 }, 889 },
805 Service::Mii::RandomMiiData4{ 890 RandomMiiData4{
806 .gender = Gender::Female, 891 .gender = Gender::Female,
807 .age = Age::Young, 892 .age = Age::Young,
808 .race = Race::White, 893 .race = Race::White,
809 .values_count = 20, 894 .values_count = 20,
810 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9}, 895 .values = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9},
811 }, 896 },
812 Service::Mii::RandomMiiData4{ 897 RandomMiiData4{
813 .gender = Gender::Female, 898 .gender = Gender::Female,
814 .age = Age::Normal, 899 .age = Age::Normal,
815 .race = Race::White, 900 .race = Race::White,
816 .values_count = 20, 901 .values_count = 20,
817 .values = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9}, 902 .values = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9},
818 }, 903 },
819 Service::Mii::RandomMiiData4{ 904 RandomMiiData4{
820 .gender = Gender::Female, 905 .gender = Gender::Female,
821 .age = Age::Old, 906 .age = Age::Old,
822 .race = Race::White, 907 .race = Race::White,
823 .values_count = 20, 908 .values_count = 20,
824 .values = {0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 9}, 909 .values = {0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 9},
825 }, 910 },
826 Service::Mii::RandomMiiData4{ 911 RandomMiiData4{
827 .gender = Gender::Female, 912 .gender = Gender::Female,
828 .age = Age::Young, 913 .age = Age::Young,
829 .race = Race::Asian, 914 .race = Race::Asian,
830 .values_count = 20, 915 .values_count = 20,
831 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 916 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
832 }, 917 },
833 Service::Mii::RandomMiiData4{ 918 RandomMiiData4{
834 .gender = Gender::Female, 919 .gender = Gender::Female,
835 .age = Age::Normal, 920 .age = Age::Normal,
836 .race = Race::Asian, 921 .race = Race::Asian,
837 .values_count = 20, 922 .values_count = 20,
838 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 923 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
839 }, 924 },
840 Service::Mii::RandomMiiData4{ 925 RandomMiiData4{
841 .gender = Gender::Female, 926 .gender = Gender::Female,
842 .age = Age::Old, 927 .age = Age::Old,
843 .race = Race::Asian, 928 .race = Race::Asian,
@@ -846,8 +931,8 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineMakeup{
846 }, 931 },
847}; 932};
848 933
849const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{ 934const std::array<RandomMiiData4, 18> RandomMiiHairType{
850 Service::Mii::RandomMiiData4{ 935 RandomMiiData4{
851 .gender = Gender::Male, 936 .gender = Gender::Male,
852 .age = Age::Young, 937 .age = Age::Young,
853 .race = Race::Black, 938 .race = Race::Black,
@@ -855,7 +940,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
855 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45, 940 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45,
856 47, 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 75, 76, 86, 89}, 941 47, 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 75, 76, 86, 89},
857 }, 942 },
858 Service::Mii::RandomMiiData4{ 943 RandomMiiData4{
859 .gender = Gender::Male, 944 .gender = Gender::Male,
860 .age = Age::Normal, 945 .age = Age::Normal,
861 .race = Race::Black, 946 .race = Race::Black,
@@ -863,7 +948,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
863 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45, 47, 948 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45, 47,
864 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 73, 75, 81, 86, 87}, 949 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 73, 75, 81, 86, 87},
865 }, 950 },
866 Service::Mii::RandomMiiData4{ 951 RandomMiiData4{
867 .gender = Gender::Male, 952 .gender = Gender::Male,
868 .age = Age::Old, 953 .age = Age::Old,
869 .race = Race::Black, 954 .race = Race::Black,
@@ -871,7 +956,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
871 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45, 47, 956 .values = {13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 43, 44, 45, 47,
872 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 73, 75, 81, 86, 87}, 957 48, 49, 50, 51, 52, 54, 56, 57, 64, 66, 73, 75, 81, 86, 87},
873 }, 958 },
874 Service::Mii::RandomMiiData4{ 959 RandomMiiData4{
875 .gender = Gender::Male, 960 .gender = Gender::Male,
876 .age = Age::Young, 961 .age = Age::Young,
877 .race = Race::White, 962 .race = Race::White,
@@ -879,7 +964,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
879 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 43, 44, 45, 47, 48, 49, 50, 964 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 43, 44, 45, 47, 48, 49, 50,
880 51, 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 75, 76, 86, 89}, 965 51, 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 75, 76, 86, 89},
881 }, 966 },
882 Service::Mii::RandomMiiData4{ 967 RandomMiiData4{
883 .gender = Gender::Male, 968 .gender = Gender::Male,
884 .age = Age::Normal, 969 .age = Age::Normal,
885 .race = Race::White, 970 .race = Race::White,
@@ -887,7 +972,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
887 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 972 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51,
888 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 73, 75, 81, 86, 87}, 973 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 73, 75, 81, 86, 87},
889 }, 974 },
890 Service::Mii::RandomMiiData4{ 975 RandomMiiData4{
891 .gender = Gender::Male, 976 .gender = Gender::Male,
892 .age = Age::Old, 977 .age = Age::Old,
893 .race = Race::White, 978 .race = Race::White,
@@ -895,28 +980,28 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
895 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51, 980 .values = {13, 23, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 43, 44, 45, 47, 48, 49, 50, 51,
896 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 73, 75, 81, 86, 87}, 981 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 70, 73, 75, 81, 86, 87},
897 }, 982 },
898 Service::Mii::RandomMiiData4{ 983 RandomMiiData4{
899 .gender = Gender::Male, 984 .gender = Gender::Male,
900 .age = Age::Young, 985 .age = Age::Young,
901 .race = Race::Asian, 986 .race = Race::Asian,
902 .values_count = 18, 987 .values_count = 18,
903 .values = {13, 23, 30, 36, 37, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88}, 988 .values = {13, 23, 30, 36, 37, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88},
904 }, 989 },
905 Service::Mii::RandomMiiData4{ 990 RandomMiiData4{
906 .gender = Gender::Male, 991 .gender = Gender::Male,
907 .age = Age::Normal, 992 .age = Age::Normal,
908 .race = Race::Asian, 993 .race = Race::Asian,
909 .values_count = 19, 994 .values_count = 19,
910 .values = {13, 23, 30, 36, 37, 39, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88}, 995 .values = {13, 23, 30, 36, 37, 39, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88},
911 }, 996 },
912 Service::Mii::RandomMiiData4{ 997 RandomMiiData4{
913 .gender = Gender::Male, 998 .gender = Gender::Male,
914 .age = Age::Old, 999 .age = Age::Old,
915 .race = Race::Asian, 1000 .race = Race::Asian,
916 .values_count = 19, 1001 .values_count = 19,
917 .values = {13, 23, 30, 36, 37, 39, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88}, 1002 .values = {13, 23, 30, 36, 37, 39, 41, 45, 47, 51, 53, 54, 55, 58, 59, 65, 67, 86, 88},
918 }, 1003 },
919 Service::Mii::RandomMiiData4{ 1004 RandomMiiData4{
920 .gender = Gender::Female, 1005 .gender = Gender::Female,
921 .age = Age::Young, 1006 .age = Age::Young,
922 .race = Race::Black, 1007 .race = Race::Black,
@@ -924,7 +1009,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
924 .values = {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1009 .values = {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
925 21, 22, 24, 25, 26, 28, 46, 50, 61, 62, 63, 64, 69, 76, 77, 79, 80, 83, 85}, 1010 21, 22, 24, 25, 26, 28, 46, 50, 61, 62, 63, 64, 69, 76, 77, 79, 80, 83, 85},
926 }, 1011 },
927 Service::Mii::RandomMiiData4{ 1012 RandomMiiData4{
928 .gender = Gender::Female, 1013 .gender = Gender::Female,
929 .age = Age::Normal, 1014 .age = Age::Normal,
930 .race = Race::Black, 1015 .race = Race::Black,
@@ -933,7 +1018,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
933 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 46, 50, 1018 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 46, 50,
934 61, 62, 63, 64, 69, 72, 74, 77, 78, 82, 83, 84, 85, 87}, 1019 61, 62, 63, 64, 69, 72, 74, 77, 78, 82, 83, 84, 85, 87},
935 }, 1020 },
936 Service::Mii::RandomMiiData4{ 1021 RandomMiiData4{
937 .gender = Gender::Female, 1022 .gender = Gender::Female,
938 .age = Age::Old, 1023 .age = Age::Old,
939 .race = Race::Black, 1024 .race = Race::Black,
@@ -942,7 +1027,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
942 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 46, 50, 1027 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 46, 50,
943 61, 62, 63, 64, 69, 72, 74, 77, 78, 82, 83, 84, 85, 87}, 1028 61, 62, 63, 64, 69, 72, 74, 77, 78, 82, 83, 84, 85, 87},
944 }, 1029 },
945 Service::Mii::RandomMiiData4{ 1030 RandomMiiData4{
946 .gender = Gender::Female, 1031 .gender = Gender::Female,
947 .age = Age::Young, 1032 .age = Age::Young,
948 .race = Race::White, 1033 .race = Race::White,
@@ -951,7 +1036,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
951 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 42, 50, 1036 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 42, 50,
952 58, 60, 62, 63, 64, 69, 71, 76, 79, 80, 81, 82, 83, 86}, 1037 58, 60, 62, 63, 64, 69, 71, 76, 79, 80, 81, 82, 83, 86},
953 }, 1038 },
954 Service::Mii::RandomMiiData4{ 1039 RandomMiiData4{
955 .gender = Gender::Female, 1040 .gender = Gender::Female,
956 .age = Age::Normal, 1041 .age = Age::Normal,
957 .race = Race::White, 1042 .race = Race::White,
@@ -960,7 +1045,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
960 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 50, 58, 1045 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 50, 58,
961 60, 62, 63, 64, 69, 71, 72, 74, 79, 81, 82, 83, 84, 85}, 1046 60, 62, 63, 64, 69, 71, 72, 74, 79, 81, 82, 83, 84, 85},
962 }, 1047 },
963 Service::Mii::RandomMiiData4{ 1048 RandomMiiData4{
964 .gender = Gender::Female, 1049 .gender = Gender::Female,
965 .age = Age::Old, 1050 .age = Age::Old,
966 .race = Race::White, 1051 .race = Race::White,
@@ -969,7 +1054,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
969 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 50, 58, 1054 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 50, 58,
970 60, 62, 63, 64, 69, 71, 72, 74, 79, 81, 82, 83, 84, 85}, 1055 60, 62, 63, 64, 69, 71, 72, 74, 79, 81, 82, 83, 84, 85},
971 }, 1056 },
972 Service::Mii::RandomMiiData4{ 1057 RandomMiiData4{
973 .gender = Gender::Female, 1058 .gender = Gender::Female,
974 .age = Age::Young, 1059 .age = Age::Young,
975 .race = Race::Asian, 1060 .race = Race::Asian,
@@ -977,7 +1062,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
977 .values = {0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 1062 .values = {0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14,
978 16, 17, 18, 20, 21, 24, 25, 58, 62, 69, 76, 83}, 1063 16, 17, 18, 20, 21, 24, 25, 58, 62, 69, 76, 83},
979 }, 1064 },
980 Service::Mii::RandomMiiData4{ 1065 RandomMiiData4{
981 .gender = Gender::Female, 1066 .gender = Gender::Female,
982 .age = Age::Normal, 1067 .age = Age::Normal,
983 .race = Race::Asian, 1068 .race = Race::Asian,
@@ -985,7 +1070,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
985 .values = {0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 16, 17, 1070 .values = {0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 16, 17,
986 18, 20, 21, 24, 25, 58, 62, 69, 74, 76, 81, 83, 85}, 1071 18, 20, 21, 24, 25, 58, 62, 69, 74, 76, 81, 83, 85},
987 }, 1072 },
988 Service::Mii::RandomMiiData4{ 1073 RandomMiiData4{
989 .gender = Gender::Female, 1074 .gender = Gender::Female,
990 .age = Age::Old, 1075 .age = Age::Old,
991 .race = Race::Asian, 1076 .race = Race::Asian,
@@ -996,55 +1081,55 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType{
996}; 1081};
997 1082
998const std::array<RandomMiiData3, 9> RandomMiiHairColor{ 1083const std::array<RandomMiiData3, 9> RandomMiiHairColor{
999 Service::Mii::RandomMiiData3{ 1084 RandomMiiData3{
1000 .arg_1 = 0, 1085 .arg_1 = 0,
1001 .arg_2 = 0, 1086 .arg_2 = 0,
1002 .values_count = 20, 1087 .values_count = 20,
1003 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 1088 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1004 }, 1089 },
1005 Service::Mii::RandomMiiData3{ 1090 RandomMiiData3{
1006 .arg_1 = 0, 1091 .arg_1 = 0,
1007 .arg_2 = 1, 1092 .arg_2 = 1,
1008 .values_count = 20, 1093 .values_count = 20,
1009 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 1094 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1010 }, 1095 },
1011 Service::Mii::RandomMiiData3{ 1096 RandomMiiData3{
1012 .arg_1 = 0, 1097 .arg_1 = 0,
1013 .arg_2 = 2, 1098 .arg_2 = 2,
1014 .values_count = 20, 1099 .values_count = 20,
1015 .values = {0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, 1100 .values = {0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
1016 }, 1101 },
1017 Service::Mii::RandomMiiData3{ 1102 RandomMiiData3{
1018 .arg_1 = 1, 1103 .arg_1 = 1,
1019 .arg_2 = 0, 1104 .arg_2 = 0,
1020 .values_count = 20, 1105 .values_count = 20,
1021 .values = {2, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7}, 1106 .values = {2, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7},
1022 }, 1107 },
1023 Service::Mii::RandomMiiData3{ 1108 RandomMiiData3{
1024 .arg_1 = 1, 1109 .arg_1 = 1,
1025 .arg_2 = 1, 1110 .arg_2 = 1,
1026 .values_count = 20, 1111 .values_count = 20,
1027 .values = {2, 3, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7}, 1112 .values = {2, 3, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7},
1028 }, 1113 },
1029 Service::Mii::RandomMiiData3{ 1114 RandomMiiData3{
1030 .arg_1 = 1, 1115 .arg_1 = 1,
1031 .arg_2 = 2, 1116 .arg_2 = 2,
1032 .values_count = 20, 1117 .values_count = 20,
1033 .values = {2, 3, 3, 4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7}, 1118 .values = {2, 3, 3, 4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7},
1034 }, 1119 },
1035 Service::Mii::RandomMiiData3{ 1120 RandomMiiData3{
1036 .arg_1 = 2, 1121 .arg_1 = 2,
1037 .arg_2 = 0, 1122 .arg_2 = 0,
1038 .values_count = 20, 1123 .values_count = 20,
1039 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1}, 1124 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1},
1040 }, 1125 },
1041 Service::Mii::RandomMiiData3{ 1126 RandomMiiData3{
1042 .arg_1 = 2, 1127 .arg_1 = 2,
1043 .arg_2 = 1, 1128 .arg_2 = 1,
1044 .values_count = 20, 1129 .values_count = 20,
1045 .values = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3}, 1130 .values = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3},
1046 }, 1131 },
1047 Service::Mii::RandomMiiData3{ 1132 RandomMiiData3{
1048 .arg_1 = 2, 1133 .arg_1 = 2,
1049 .arg_2 = 2, 1134 .arg_2 = 2,
1050 .values_count = 20, 1135 .values_count = 20,
@@ -1052,8 +1137,8 @@ const std::array<RandomMiiData3, 9> RandomMiiHairColor{
1052 }, 1137 },
1053}; 1138};
1054 1139
1055const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{ 1140const std::array<RandomMiiData4, 18> RandomMiiEyeType{
1056 Service::Mii::RandomMiiData4{ 1141 RandomMiiData4{
1057 .gender = Gender::Male, 1142 .gender = Gender::Male,
1058 .age = Age::Young, 1143 .age = Age::Young,
1059 .race = Race::Black, 1144 .race = Race::Black,
@@ -1061,7 +1146,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1061 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 27, 1146 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 27,
1062 29, 32, 34, 36, 38, 39, 41, 43, 47, 49, 51, 53, 57}, 1147 29, 32, 34, 36, 38, 39, 41, 43, 47, 49, 51, 53, 57},
1063 }, 1148 },
1064 Service::Mii::RandomMiiData4{ 1149 RandomMiiData4{
1065 .gender = Gender::Male, 1150 .gender = Gender::Male,
1066 .age = Age::Normal, 1151 .age = Age::Normal,
1067 .race = Race::Black, 1152 .race = Race::Black,
@@ -1069,7 +1154,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1069 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 27, 1154 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 27,
1070 29, 32, 34, 36, 38, 39, 41, 43, 47, 49, 51, 53, 57}, 1155 29, 32, 34, 36, 38, 39, 41, 43, 47, 49, 51, 53, 57},
1071 }, 1156 },
1072 Service::Mii::RandomMiiData4{ 1157 RandomMiiData4{
1073 .gender = Gender::Male, 1158 .gender = Gender::Male,
1074 .age = Age::Old, 1159 .age = Age::Old,
1075 .race = Race::Black, 1160 .race = Race::Black,
@@ -1077,7 +1162,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1077 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 26, 27, 1162 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 16, 18, 26, 27,
1078 29, 32, 34, 36, 38, 39, 41, 43, 47, 48, 49, 53, 57}, 1163 29, 32, 34, 36, 38, 39, 41, 43, 47, 48, 49, 53, 57},
1079 }, 1164 },
1080 Service::Mii::RandomMiiData4{ 1165 RandomMiiData4{
1081 .gender = Gender::Male, 1166 .gender = Gender::Male,
1082 .age = Age::Young, 1167 .age = Age::Young,
1083 .race = Race::White, 1168 .race = Race::White,
@@ -1085,7 +1170,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1085 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 21, 22, 27, 29, 1170 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 21, 22, 27, 29,
1086 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 49, 51, 53, 55, 56, 57}, 1171 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 49, 51, 53, 55, 56, 57},
1087 }, 1172 },
1088 Service::Mii::RandomMiiData4{ 1173 RandomMiiData4{
1089 .gender = Gender::Male, 1174 .gender = Gender::Male,
1090 .age = Age::Normal, 1175 .age = Age::Normal,
1091 .race = Race::White, 1176 .race = Race::White,
@@ -1093,7 +1178,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1093 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 21, 22, 27, 29, 1178 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 21, 22, 27, 29,
1094 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 49, 51, 53, 55, 56, 57}, 1179 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 49, 51, 53, 55, 56, 57},
1095 }, 1180 },
1096 Service::Mii::RandomMiiData4{ 1181 RandomMiiData4{
1097 .gender = Gender::Male, 1182 .gender = Gender::Male,
1098 .age = Age::Old, 1183 .age = Age::Old,
1099 .race = Race::White, 1184 .race = Race::White,
@@ -1101,7 +1186,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1101 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 21, 22, 26, 27, 29, 1186 .values = {2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 21, 22, 26, 27, 29,
1102 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 48, 49, 50, 53, 56, 57}, 1187 31, 32, 34, 36, 37, 38, 39, 41, 43, 44, 47, 48, 49, 50, 53, 56, 57},
1103 }, 1188 },
1104 Service::Mii::RandomMiiData4{ 1189 RandomMiiData4{
1105 .gender = Gender::Male, 1190 .gender = Gender::Male,
1106 .age = Age::Young, 1191 .age = Age::Young,
1107 .race = Race::Asian, 1192 .race = Race::Asian,
@@ -1109,7 +1194,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1109 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 21, 1194 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 21,
1110 22, 31, 32, 34, 36, 37, 39, 41, 44, 49, 51, 53, 55, 56, 57}, 1195 22, 31, 32, 34, 36, 37, 39, 41, 44, 49, 51, 53, 55, 56, 57},
1111 }, 1196 },
1112 Service::Mii::RandomMiiData4{ 1197 RandomMiiData4{
1113 .gender = Gender::Male, 1198 .gender = Gender::Male,
1114 .age = Age::Normal, 1199 .age = Age::Normal,
1115 .race = Race::Asian, 1200 .race = Race::Asian,
@@ -1117,7 +1202,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1117 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 21, 1202 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 21,
1118 22, 31, 32, 34, 36, 37, 39, 41, 44, 49, 51, 53, 55, 56, 57}, 1203 22, 31, 32, 34, 36, 37, 39, 41, 44, 49, 51, 53, 55, 56, 57},
1119 }, 1204 },
1120 Service::Mii::RandomMiiData4{ 1205 RandomMiiData4{
1121 .gender = Gender::Male, 1206 .gender = Gender::Male,
1122 .age = Age::Old, 1207 .age = Age::Old,
1123 .race = Race::Asian, 1208 .race = Race::Asian,
@@ -1125,7 +1210,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1125 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 1210 .values = {2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22,
1126 26, 31, 32, 34, 36, 37, 39, 41, 44, 48, 49, 50, 51, 53, 57}, 1211 26, 31, 32, 34, 36, 37, 39, 41, 44, 48, 49, 50, 51, 53, 57},
1127 }, 1212 },
1128 Service::Mii::RandomMiiData4{ 1213 RandomMiiData4{
1129 .gender = Gender::Female, 1214 .gender = Gender::Female,
1130 .age = Age::Young, 1215 .age = Age::Young,
1131 .race = Race::Black, 1216 .race = Race::Black,
@@ -1133,7 +1218,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1133 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 27, 1218 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 27,
1134 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59}, 1219 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59},
1135 }, 1220 },
1136 Service::Mii::RandomMiiData4{ 1221 RandomMiiData4{
1137 .gender = Gender::Female, 1222 .gender = Gender::Female,
1138 .age = Age::Normal, 1223 .age = Age::Normal,
1139 .race = Race::Black, 1224 .race = Race::Black,
@@ -1141,7 +1226,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1141 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 27, 1226 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 27,
1142 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59}, 1227 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59},
1143 }, 1228 },
1144 Service::Mii::RandomMiiData4{ 1229 RandomMiiData4{
1145 .gender = Gender::Female, 1230 .gender = Gender::Female,
1146 .age = Age::Old, 1231 .age = Age::Old,
1147 .race = Race::Black, 1232 .race = Race::Black,
@@ -1149,7 +1234,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1149 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 26, 1234 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 25, 26,
1150 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59}, 1235 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 59},
1151 }, 1236 },
1152 Service::Mii::RandomMiiData4{ 1237 RandomMiiData4{
1153 .gender = Gender::Female, 1238 .gender = Gender::Female,
1154 .age = Age::Young, 1239 .age = Age::Young,
1155 .race = Race::White, 1240 .race = Race::White,
@@ -1158,7 +1243,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1158 18, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 1243 18, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37,
1159 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59}, 1244 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59},
1160 }, 1245 },
1161 Service::Mii::RandomMiiData4{ 1246 RandomMiiData4{
1162 .gender = Gender::Female, 1247 .gender = Gender::Female,
1163 .age = Age::Normal, 1248 .age = Age::Normal,
1164 .race = Race::White, 1249 .race = Race::White,
@@ -1167,7 +1252,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1167 18, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 1252 18, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37,
1168 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59}, 1253 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59},
1169 }, 1254 },
1170 Service::Mii::RandomMiiData4{ 1255 RandomMiiData4{
1171 .gender = Gender::Female, 1256 .gender = Gender::Female,
1172 .age = Age::Old, 1257 .age = Age::Old,
1173 .race = Race::White, 1258 .race = Race::White,
@@ -1176,7 +1261,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1176 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 1261 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37,
1177 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59}, 1262 38, 39, 40, 41, 42, 45, 46, 47, 48, 53, 54, 57, 58, 59},
1178 }, 1263 },
1179 Service::Mii::RandomMiiData4{ 1264 RandomMiiData4{
1180 .gender = Gender::Female, 1265 .gender = Gender::Female,
1181 .age = Age::Young, 1266 .age = Age::Young,
1182 .race = Race::Asian, 1267 .race = Race::Asian,
@@ -1184,7 +1269,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1184 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 1269 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23,
1185 24, 25, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47}, 1270 24, 25, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47},
1186 }, 1271 },
1187 Service::Mii::RandomMiiData4{ 1272 RandomMiiData4{
1188 .gender = Gender::Female, 1273 .gender = Gender::Female,
1189 .age = Age::Normal, 1274 .age = Age::Normal,
1190 .race = Race::Asian, 1275 .race = Race::Asian,
@@ -1192,7 +1277,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1192 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 1277 .values = {0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23,
1193 24, 25, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47}, 1278 24, 25, 27, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47},
1194 }, 1279 },
1195 Service::Mii::RandomMiiData4{ 1280 RandomMiiData4{
1196 .gender = Gender::Female, 1281 .gender = Gender::Female,
1197 .age = Age::Old, 1282 .age = Age::Old,
1198 .race = Race::Asian, 1283 .race = Race::Asian,
@@ -1202,47 +1287,47 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType{
1202 }, 1287 },
1203}; 1288};
1204 1289
1205const std::array<Service::Mii::RandomMiiData2, 3> RandomMiiEyeColor{ 1290const std::array<RandomMiiData2, 3> RandomMiiEyeColor{
1206 Service::Mii::RandomMiiData2{ 1291 RandomMiiData2{
1207 .arg_1 = 0, 1292 .arg_1 = 0,
1208 .values_count = 10, 1293 .values_count = 10,
1209 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 1294 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
1210 }, 1295 },
1211 Service::Mii::RandomMiiData2{ 1296 RandomMiiData2{
1212 .arg_1 = 1, 1297 .arg_1 = 1,
1213 .values_count = 10, 1298 .values_count = 10,
1214 .values = {0, 1, 1, 2, 3, 3, 4, 4, 4, 5}, 1299 .values = {0, 1, 1, 2, 3, 3, 4, 4, 4, 5},
1215 }, 1300 },
1216 Service::Mii::RandomMiiData2{ 1301 RandomMiiData2{
1217 .arg_1 = 2, 1302 .arg_1 = 2,
1218 .values_count = 10, 1303 .values_count = 10,
1219 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 1304 .values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
1220 }, 1305 },
1221}; 1306};
1222 1307
1223const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType{ 1308const std::array<RandomMiiData4, 18> RandomMiiEyebrowType{
1224 Service::Mii::RandomMiiData4{ 1309 RandomMiiData4{
1225 .gender = Gender::Male, 1310 .gender = Gender::Male,
1226 .age = Age::Young, 1311 .age = Age::Young,
1227 .race = Race::Black, 1312 .race = Race::Black,
1228 .values_count = 18, 1313 .values_count = 18,
1229 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20}, 1314 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20},
1230 }, 1315 },
1231 Service::Mii::RandomMiiData4{ 1316 RandomMiiData4{
1232 .gender = Gender::Male, 1317 .gender = Gender::Male,
1233 .age = Age::Normal, 1318 .age = Age::Normal,
1234 .race = Race::Black, 1319 .race = Race::Black,
1235 .values_count = 18, 1320 .values_count = 18,
1236 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20}, 1321 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20},
1237 }, 1322 },
1238 Service::Mii::RandomMiiData4{ 1323 RandomMiiData4{
1239 .gender = Gender::Male, 1324 .gender = Gender::Male,
1240 .age = Age::Old, 1325 .age = Age::Old,
1241 .race = Race::Black, 1326 .race = Race::Black,
1242 .values_count = 18, 1327 .values_count = 18,
1243 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20}, 1328 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20},
1244 }, 1329 },
1245 Service::Mii::RandomMiiData4{ 1330 RandomMiiData4{
1246 .gender = Gender::Male, 1331 .gender = Gender::Male,
1247 .age = Age::Young, 1332 .age = Age::Young,
1248 .race = Race::White, 1333 .race = Race::White,
@@ -1250,7 +1335,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType{
1250 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1335 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1251 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}, 1336 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22},
1252 }, 1337 },
1253 Service::Mii::RandomMiiData4{ 1338 RandomMiiData4{
1254 .gender = Gender::Male, 1339 .gender = Gender::Male,
1255 .age = Age::Normal, 1340 .age = Age::Normal,
1256 .race = Race::White, 1341 .race = Race::White,
@@ -1258,7 +1343,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType{
1258 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1343 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1259 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}, 1344 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22},
1260 }, 1345 },
1261 Service::Mii::RandomMiiData4{ 1346 RandomMiiData4{
1262 .gender = Gender::Male, 1347 .gender = Gender::Male,
1263 .age = Age::Old, 1348 .age = Age::Old,
1264 .race = Race::White, 1349 .race = Race::White,
@@ -1266,84 +1351,84 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType{
1266 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1351 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1267 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}, 1352 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22},
1268 }, 1353 },
1269 Service::Mii::RandomMiiData4{ 1354 RandomMiiData4{
1270 .gender = Gender::Male, 1355 .gender = Gender::Male,
1271 .age = Age::Young, 1356 .age = Age::Young,
1272 .race = Race::Asian, 1357 .race = Race::Asian,
1273 .values_count = 21, 1358 .values_count = 21,
1274 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22}, 1359 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22},
1275 }, 1360 },
1276 Service::Mii::RandomMiiData4{ 1361 RandomMiiData4{
1277 .gender = Gender::Male, 1362 .gender = Gender::Male,
1278 .age = Age::Normal, 1363 .age = Age::Normal,
1279 .race = Race::Asian, 1364 .race = Race::Asian,
1280 .values_count = 21, 1365 .values_count = 21,
1281 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22}, 1366 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22},
1282 }, 1367 },
1283 Service::Mii::RandomMiiData4{ 1368 RandomMiiData4{
1284 .gender = Gender::Male, 1369 .gender = Gender::Male,
1285 .age = Age::Old, 1370 .age = Age::Old,
1286 .race = Race::Asian, 1371 .race = Race::Asian,
1287 .values_count = 21, 1372 .values_count = 21,
1288 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22}, 1373 .values = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22},
1289 }, 1374 },
1290 Service::Mii::RandomMiiData4{ 1375 RandomMiiData4{
1291 .gender = Gender::Female, 1376 .gender = Gender::Female,
1292 .age = Age::Young, 1377 .age = Age::Young,
1293 .race = Race::Black, 1378 .race = Race::Black,
1294 .values_count = 9, 1379 .values_count = 9,
1295 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13}, 1380 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13},
1296 }, 1381 },
1297 Service::Mii::RandomMiiData4{ 1382 RandomMiiData4{
1298 .gender = Gender::Female, 1383 .gender = Gender::Female,
1299 .age = Age::Normal, 1384 .age = Age::Normal,
1300 .race = Race::Black, 1385 .race = Race::Black,
1301 .values_count = 9, 1386 .values_count = 9,
1302 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13}, 1387 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13},
1303 }, 1388 },
1304 Service::Mii::RandomMiiData4{ 1389 RandomMiiData4{
1305 .gender = Gender::Female, 1390 .gender = Gender::Female,
1306 .age = Age::Old, 1391 .age = Age::Old,
1307 .race = Race::Black, 1392 .race = Race::Black,
1308 .values_count = 9, 1393 .values_count = 9,
1309 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13}, 1394 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13},
1310 }, 1395 },
1311 Service::Mii::RandomMiiData4{ 1396 RandomMiiData4{
1312 .gender = Gender::Female, 1397 .gender = Gender::Female,
1313 .age = Age::Young, 1398 .age = Age::Young,
1314 .race = Race::White, 1399 .race = Race::White,
1315 .values_count = 11, 1400 .values_count = 11,
1316 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19}, 1401 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19},
1317 }, 1402 },
1318 Service::Mii::RandomMiiData4{ 1403 RandomMiiData4{
1319 .gender = Gender::Female, 1404 .gender = Gender::Female,
1320 .age = Age::Normal, 1405 .age = Age::Normal,
1321 .race = Race::White, 1406 .race = Race::White,
1322 .values_count = 11, 1407 .values_count = 11,
1323 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19}, 1408 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19},
1324 }, 1409 },
1325 Service::Mii::RandomMiiData4{ 1410 RandomMiiData4{
1326 .gender = Gender::Female, 1411 .gender = Gender::Female,
1327 .age = Age::Old, 1412 .age = Age::Old,
1328 .race = Race::White, 1413 .race = Race::White,
1329 .values_count = 11, 1414 .values_count = 11,
1330 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19}, 1415 .values = {0, 1, 3, 7, 8, 9, 10, 11, 13, 15, 19},
1331 }, 1416 },
1332 Service::Mii::RandomMiiData4{ 1417 RandomMiiData4{
1333 .gender = Gender::Female, 1418 .gender = Gender::Female,
1334 .age = Age::Young, 1419 .age = Age::Young,
1335 .race = Race::Asian, 1420 .race = Race::Asian,
1336 .values_count = 9, 1421 .values_count = 9,
1337 .values = {0, 3, 7, 8, 9, 10, 11, 13, 15}, 1422 .values = {0, 3, 7, 8, 9, 10, 11, 13, 15},
1338 }, 1423 },
1339 Service::Mii::RandomMiiData4{ 1424 RandomMiiData4{
1340 .gender = Gender::Female, 1425 .gender = Gender::Female,
1341 .age = Age::Normal, 1426 .age = Age::Normal,
1342 .race = Race::Asian, 1427 .race = Race::Asian,
1343 .values_count = 9, 1428 .values_count = 9,
1344 .values = {0, 3, 7, 8, 9, 10, 11, 13, 15}, 1429 .values = {0, 3, 7, 8, 9, 10, 11, 13, 15},
1345 }, 1430 },
1346 Service::Mii::RandomMiiData4{ 1431 RandomMiiData4{
1347 .gender = Gender::Female, 1432 .gender = Gender::Female,
1348 .age = Age::Old, 1433 .age = Age::Old,
1349 .race = Race::Asian, 1434 .race = Race::Asian,
@@ -1352,127 +1437,127 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType{
1352 }, 1437 },
1353}; 1438};
1354 1439
1355const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiNoseType{ 1440const std::array<RandomMiiData4, 18> RandomMiiNoseType{
1356 Service::Mii::RandomMiiData4{ 1441 RandomMiiData4{
1357 .gender = Gender::Male, 1442 .gender = Gender::Male,
1358 .age = Age::Young, 1443 .age = Age::Young,
1359 .race = Race::Black, 1444 .race = Race::Black,
1360 .values_count = 11, 1445 .values_count = 11,
1361 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14}, 1446 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14},
1362 }, 1447 },
1363 Service::Mii::RandomMiiData4{ 1448 RandomMiiData4{
1364 .gender = Gender::Male, 1449 .gender = Gender::Male,
1365 .age = Age::Normal, 1450 .age = Age::Normal,
1366 .race = Race::Black, 1451 .race = Race::Black,
1367 .values_count = 11, 1452 .values_count = 11,
1368 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14}, 1453 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14},
1369 }, 1454 },
1370 Service::Mii::RandomMiiData4{ 1455 RandomMiiData4{
1371 .gender = Gender::Male, 1456 .gender = Gender::Male,
1372 .age = Age::Old, 1457 .age = Age::Old,
1373 .race = Race::Black, 1458 .race = Race::Black,
1374 .values_count = 11, 1459 .values_count = 11,
1375 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14}, 1460 .values = {0, 1, 2, 3, 4, 5, 7, 8, 10, 13, 14},
1376 }, 1461 },
1377 Service::Mii::RandomMiiData4{ 1462 RandomMiiData4{
1378 .gender = Gender::Male, 1463 .gender = Gender::Male,
1379 .age = Age::Young, 1464 .age = Age::Young,
1380 .race = Race::White, 1465 .race = Race::White,
1381 .values_count = 18, 1466 .values_count = 18,
1382 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}, 1467 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
1383 }, 1468 },
1384 Service::Mii::RandomMiiData4{ 1469 RandomMiiData4{
1385 .gender = Gender::Male, 1470 .gender = Gender::Male,
1386 .age = Age::Normal, 1471 .age = Age::Normal,
1387 .race = Race::White, 1472 .race = Race::White,
1388 .values_count = 18, 1473 .values_count = 18,
1389 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}, 1474 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
1390 }, 1475 },
1391 Service::Mii::RandomMiiData4{ 1476 RandomMiiData4{
1392 .gender = Gender::Male, 1477 .gender = Gender::Male,
1393 .age = Age::Old, 1478 .age = Age::Old,
1394 .race = Race::White, 1479 .race = Race::White,
1395 .values_count = 15, 1480 .values_count = 15,
1396 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16}, 1481 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16},
1397 }, 1482 },
1398 Service::Mii::RandomMiiData4{ 1483 RandomMiiData4{
1399 .gender = Gender::Male, 1484 .gender = Gender::Male,
1400 .age = Age::Young, 1485 .age = Age::Young,
1401 .race = Race::Asian, 1486 .race = Race::Asian,
1402 .values_count = 18, 1487 .values_count = 18,
1403 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}, 1488 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
1404 }, 1489 },
1405 Service::Mii::RandomMiiData4{ 1490 RandomMiiData4{
1406 .gender = Gender::Male, 1491 .gender = Gender::Male,
1407 .age = Age::Normal, 1492 .age = Age::Normal,
1408 .race = Race::Asian, 1493 .race = Race::Asian,
1409 .values_count = 18, 1494 .values_count = 18,
1410 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}, 1495 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
1411 }, 1496 },
1412 Service::Mii::RandomMiiData4{ 1497 RandomMiiData4{
1413 .gender = Gender::Male, 1498 .gender = Gender::Male,
1414 .age = Age::Old, 1499 .age = Age::Old,
1415 .race = Race::Asian, 1500 .race = Race::Asian,
1416 .values_count = 15, 1501 .values_count = 15,
1417 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16}, 1502 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16},
1418 }, 1503 },
1419 Service::Mii::RandomMiiData4{ 1504 RandomMiiData4{
1420 .gender = Gender::Female, 1505 .gender = Gender::Female,
1421 .age = Age::Young, 1506 .age = Age::Young,
1422 .race = Race::Black, 1507 .race = Race::Black,
1423 .values_count = 8, 1508 .values_count = 8,
1424 .values = {0, 1, 3, 4, 8, 10, 13, 14}, 1509 .values = {0, 1, 3, 4, 8, 10, 13, 14},
1425 }, 1510 },
1426 Service::Mii::RandomMiiData4{ 1511 RandomMiiData4{
1427 .gender = Gender::Female, 1512 .gender = Gender::Female,
1428 .age = Age::Normal, 1513 .age = Age::Normal,
1429 .race = Race::Black, 1514 .race = Race::Black,
1430 .values_count = 8, 1515 .values_count = 8,
1431 .values = {0, 1, 3, 4, 8, 10, 13, 14}, 1516 .values = {0, 1, 3, 4, 8, 10, 13, 14},
1432 }, 1517 },
1433 Service::Mii::RandomMiiData4{ 1518 RandomMiiData4{
1434 .gender = Gender::Female, 1519 .gender = Gender::Female,
1435 .age = Age::Old, 1520 .age = Age::Old,
1436 .race = Race::Black, 1521 .race = Race::Black,
1437 .values_count = 8, 1522 .values_count = 8,
1438 .values = {0, 1, 3, 4, 8, 10, 13, 14}, 1523 .values = {0, 1, 3, 4, 8, 10, 13, 14},
1439 }, 1524 },
1440 Service::Mii::RandomMiiData4{ 1525 RandomMiiData4{
1441 .gender = Gender::Female, 1526 .gender = Gender::Female,
1442 .age = Age::Young, 1527 .age = Age::Young,
1443 .race = Race::White, 1528 .race = Race::White,
1444 .values_count = 12, 1529 .values_count = 12,
1445 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 14, 15}, 1530 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 14, 15},
1446 }, 1531 },
1447 Service::Mii::RandomMiiData4{ 1532 RandomMiiData4{
1448 .gender = Gender::Female, 1533 .gender = Gender::Female,
1449 .age = Age::Normal, 1534 .age = Age::Normal,
1450 .race = Race::White, 1535 .race = Race::White,
1451 .values_count = 11, 1536 .values_count = 11,
1452 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 15}, 1537 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 15},
1453 }, 1538 },
1454 Service::Mii::RandomMiiData4{ 1539 RandomMiiData4{
1455 .gender = Gender::Female, 1540 .gender = Gender::Female,
1456 .age = Age::Old, 1541 .age = Age::Old,
1457 .race = Race::White, 1542 .race = Race::White,
1458 .values_count = 10, 1543 .values_count = 10,
1459 .values = {0, 1, 3, 4, 6, 8, 10, 11, 13, 14}, 1544 .values = {0, 1, 3, 4, 6, 8, 10, 11, 13, 14},
1460 }, 1545 },
1461 Service::Mii::RandomMiiData4{ 1546 RandomMiiData4{
1462 .gender = Gender::Female, 1547 .gender = Gender::Female,
1463 .age = Age::Young, 1548 .age = Age::Young,
1464 .race = Race::Asian, 1549 .race = Race::Asian,
1465 .values_count = 12, 1550 .values_count = 12,
1466 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 14, 15}, 1551 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 14, 15},
1467 }, 1552 },
1468 Service::Mii::RandomMiiData4{ 1553 RandomMiiData4{
1469 .gender = Gender::Female, 1554 .gender = Gender::Female,
1470 .age = Age::Normal, 1555 .age = Age::Normal,
1471 .race = Race::Asian, 1556 .race = Race::Asian,
1472 .values_count = 11, 1557 .values_count = 11,
1473 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 15}, 1558 .values = {0, 1, 3, 4, 6, 8, 9, 10, 11, 13, 15},
1474 }, 1559 },
1475 Service::Mii::RandomMiiData4{ 1560 RandomMiiData4{
1476 .gender = Gender::Female, 1561 .gender = Gender::Female,
1477 .age = Age::Old, 1562 .age = Age::Old,
1478 .race = Race::Asian, 1563 .race = Race::Asian,
@@ -1481,8 +1566,8 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiNoseType{
1481 }, 1566 },
1482}; 1567};
1483 1568
1484const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{ 1569const std::array<RandomMiiData4, 18> RandomMiiMouthType{
1485 Service::Mii::RandomMiiData4{ 1570 RandomMiiData4{
1486 .gender = Gender::Male, 1571 .gender = Gender::Male,
1487 .age = Age::Young, 1572 .age = Age::Young,
1488 .race = Race::Black, 1573 .race = Race::Black,
@@ -1490,7 +1575,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1490 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 17, 18, 1575 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 17, 18,
1491 19, 21, 22, 23, 25, 26, 28, 30, 32, 33, 34, 35}, 1576 19, 21, 22, 23, 25, 26, 28, 30, 32, 33, 34, 35},
1492 }, 1577 },
1493 Service::Mii::RandomMiiData4{ 1578 RandomMiiData4{
1494 .gender = Gender::Male, 1579 .gender = Gender::Male,
1495 .age = Age::Normal, 1580 .age = Age::Normal,
1496 .race = Race::Black, 1581 .race = Race::Black,
@@ -1498,7 +1583,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1498 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 1583 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17,
1499 18, 19, 21, 22, 23, 25, 26, 28, 30, 32, 33, 34, 35}, 1584 18, 19, 21, 22, 23, 25, 26, 28, 30, 32, 33, 34, 35},
1500 }, 1585 },
1501 Service::Mii::RandomMiiData4{ 1586 RandomMiiData4{
1502 .gender = Gender::Male, 1587 .gender = Gender::Male,
1503 .age = Age::Old, 1588 .age = Age::Old,
1504 .race = Race::Black, 1589 .race = Race::Black,
@@ -1506,7 +1591,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1506 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 1591 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17,
1507 18, 19, 21, 22, 23, 25, 26, 28, 30, 31, 32, 33, 34, 35}, 1592 18, 19, 21, 22, 23, 25, 26, 28, 30, 31, 32, 33, 34, 35},
1508 }, 1593 },
1509 Service::Mii::RandomMiiData4{ 1594 RandomMiiData4{
1510 .gender = Gender::Male, 1595 .gender = Gender::Male,
1511 .age = Age::Young, 1596 .age = Age::Young,
1512 .race = Race::White, 1597 .race = Race::White,
@@ -1514,7 +1599,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1514 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 1599 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16,
1515 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1600 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1516 }, 1601 },
1517 Service::Mii::RandomMiiData4{ 1602 RandomMiiData4{
1518 .gender = Gender::Male, 1603 .gender = Gender::Male,
1519 .age = Age::Normal, 1604 .age = Age::Normal,
1520 .race = Race::White, 1605 .race = Race::White,
@@ -1522,7 +1607,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1522 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1607 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1523 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1608 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1524 }, 1609 },
1525 Service::Mii::RandomMiiData4{ 1610 RandomMiiData4{
1526 .gender = Gender::Male, 1611 .gender = Gender::Male,
1527 .age = Age::Old, 1612 .age = Age::Old,
1528 .race = Race::White, 1613 .race = Race::White,
@@ -1530,7 +1615,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1530 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1615 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1531 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1616 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1532 }, 1617 },
1533 Service::Mii::RandomMiiData4{ 1618 RandomMiiData4{
1534 .gender = Gender::Male, 1619 .gender = Gender::Male,
1535 .age = Age::Young, 1620 .age = Age::Young,
1536 .race = Race::Asian, 1621 .race = Race::Asian,
@@ -1538,7 +1623,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1538 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 1623 .values = {0, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16,
1539 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1624 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1540 }, 1625 },
1541 Service::Mii::RandomMiiData4{ 1626 RandomMiiData4{
1542 .gender = Gender::Male, 1627 .gender = Gender::Male,
1543 .age = Age::Normal, 1628 .age = Age::Normal,
1544 .race = Race::Asian, 1629 .race = Race::Asian,
@@ -1546,7 +1631,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1546 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1631 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1547 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1632 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1548 }, 1633 },
1549 Service::Mii::RandomMiiData4{ 1634 RandomMiiData4{
1550 .gender = Gender::Male, 1635 .gender = Gender::Male,
1551 .age = Age::Old, 1636 .age = Age::Old,
1552 .race = Race::Asian, 1637 .race = Race::Asian,
@@ -1554,7 +1639,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1554 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1639 .values = {0, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1555 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35}, 1640 16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 33, 34, 35},
1556 }, 1641 },
1557 Service::Mii::RandomMiiData4{ 1642 RandomMiiData4{
1558 .gender = Gender::Female, 1643 .gender = Gender::Female,
1559 .age = Age::Young, 1644 .age = Age::Young,
1560 .race = Race::Black, 1645 .race = Race::Black,
@@ -1562,7 +1647,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1562 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15, 1647 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15,
1563 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35}, 1648 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35},
1564 }, 1649 },
1565 Service::Mii::RandomMiiData4{ 1650 RandomMiiData4{
1566 .gender = Gender::Female, 1651 .gender = Gender::Female,
1567 .age = Age::Normal, 1652 .age = Age::Normal,
1568 .race = Race::Black, 1653 .race = Race::Black,
@@ -1570,7 +1655,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1570 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 1655 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14,
1571 15, 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35}, 1656 15, 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35},
1572 }, 1657 },
1573 Service::Mii::RandomMiiData4{ 1658 RandomMiiData4{
1574 .gender = Gender::Female, 1659 .gender = Gender::Female,
1575 .age = Age::Old, 1660 .age = Age::Old,
1576 .race = Race::Black, 1661 .race = Race::Black,
@@ -1578,7 +1663,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1578 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 1663 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14,
1579 15, 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35}, 1664 15, 17, 18, 19, 21, 22, 23, 25, 26, 30, 33, 34, 35},
1580 }, 1665 },
1581 Service::Mii::RandomMiiData4{ 1666 RandomMiiData4{
1582 .gender = Gender::Female, 1667 .gender = Gender::Female,
1583 .age = Age::Young, 1668 .age = Age::Young,
1584 .race = Race::White, 1669 .race = Race::White,
@@ -1586,7 +1671,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1586 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15, 1671 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15,
1587 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 33, 35}, 1672 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 33, 35},
1588 }, 1673 },
1589 Service::Mii::RandomMiiData4{ 1674 RandomMiiData4{
1590 .gender = Gender::Female, 1675 .gender = Gender::Female,
1591 .age = Age::Normal, 1676 .age = Age::Normal,
1592 .race = Race::White, 1677 .race = Race::White,
@@ -1594,7 +1679,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1594 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 1679 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14,
1595 15, 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 33, 35}, 1680 15, 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 33, 35},
1596 }, 1681 },
1597 Service::Mii::RandomMiiData4{ 1682 RandomMiiData4{
1598 .gender = Gender::Female, 1683 .gender = Gender::Female,
1599 .age = Age::Old, 1684 .age = Age::Old,
1600 .race = Race::White, 1685 .race = Race::White,
@@ -1602,7 +1687,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1602 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 1687 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14,
1603 15, 17, 18, 19, 21, 22, 23, 24, 25, 29, 33, 35}, 1688 15, 17, 18, 19, 21, 22, 23, 24, 25, 29, 33, 35},
1604 }, 1689 },
1605 Service::Mii::RandomMiiData4{ 1690 RandomMiiData4{
1606 .gender = Gender::Female, 1691 .gender = Gender::Female,
1607 .age = Age::Young, 1692 .age = Age::Young,
1608 .race = Race::Asian, 1693 .race = Race::Asian,
@@ -1610,7 +1695,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1610 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 1695 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14,
1611 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 29, 33}, 1696 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 29, 33},
1612 }, 1697 },
1613 Service::Mii::RandomMiiData4{ 1698 RandomMiiData4{
1614 .gender = Gender::Female, 1699 .gender = Gender::Female,
1615 .age = Age::Normal, 1700 .age = Age::Normal,
1616 .race = Race::Asian, 1701 .race = Race::Asian,
@@ -1618,7 +1703,7 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1618 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 1703 .values = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14,
1619 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 29, 33}, 1704 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 29, 33},
1620 }, 1705 },
1621 Service::Mii::RandomMiiData4{ 1706 RandomMiiData4{
1622 .gender = Gender::Female, 1707 .gender = Gender::Female,
1623 .age = Age::Old, 1708 .age = Age::Old,
1624 .race = Race::Asian, 1709 .race = Race::Asian,
@@ -1628,22 +1713,66 @@ const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType{
1628 }, 1713 },
1629}; 1714};
1630 1715
1631const std::array<Service::Mii::RandomMiiData2, 3> RandomMiiGlassType{ 1716const std::array<RandomMiiData2, 3> RandomMiiGlassType{
1632 Service::Mii::RandomMiiData2{ 1717 RandomMiiData2{
1633 .arg_1 = 0, 1718 .arg_1 = 0,
1634 .values_count = 9, 1719 .values_count = 9,
1635 .values = {90, 94, 96, 100, 0, 0, 0, 0, 0}, 1720 .values = {90, 94, 96, 100, 0, 0, 0, 0, 0},
1636 }, 1721 },
1637 Service::Mii::RandomMiiData2{ 1722 RandomMiiData2{
1638 .arg_1 = 1, 1723 .arg_1 = 1,
1639 .values_count = 9, 1724 .values_count = 9,
1640 .values = {83, 86, 90, 93, 94, 96, 98, 100, 0}, 1725 .values = {83, 86, 90, 93, 94, 96, 98, 100, 0},
1641 }, 1726 },
1642 Service::Mii::RandomMiiData2{ 1727 RandomMiiData2{
1643 .arg_1 = 2, 1728 .arg_1 = 2,
1644 .values_count = 9, 1729 .values_count = 9,
1645 .values = {78, 83, 0, 93, 0, 0, 98, 100, 0}, 1730 .values = {78, 83, 0, 93, 0, 0, 98, 100, 0},
1646 }, 1731 },
1647}; 1732};
1648 1733
1734u8 FromVer3GetFacelineColor(u8 color) {
1735 return FromVer3FacelineColorTable[color];
1736}
1737
1738u8 FromVer3GetHairColor(u8 color) {
1739 return FromVer3HairColorTable[color];
1740}
1741
1742u8 FromVer3GetEyeColor(u8 color) {
1743 return FromVer3EyeColorTable[color];
1744}
1745
1746u8 FromVer3GetMouthlineColor(u8 color) {
1747 return FromVer3MouthlineColorTable[color];
1748}
1749
1750u8 FromVer3GetGlassColor(u8 color) {
1751 return FromVer3GlassColorTable[color];
1752}
1753
1754u8 FromVer3GetGlassType(u8 type) {
1755 return FromVer3GlassTypeTable[type];
1756}
1757
1758u8 GetFacelineColorFromVer3(u8 color) {
1759 return Ver3FacelineColorTable[color];
1760}
1761
1762u8 GetHairColorFromVer3(u32 color) {
1763 return Ver3HairColorTable[color];
1764}
1765
1766u8 GetEyeColorFromVer3(u32 color) {
1767 return Ver3EyeColorTable[color];
1768}
1769
1770u8 GetMouthColorFromVer3(u32 color) {
1771 return Ver3MouthColorTable[color];
1772}
1773
1774u8 GetGlassColorFromVer3(u8 color) {
1775 return Ver3GlassColorTable[color];
1776}
1777
1649} // namespace Service::Mii::RawData 1778} // namespace Service::Mii::RawData
diff --git a/src/core/hle/service/mii/raw_data.h b/src/core/hle/service/mii/raw_data.h
index cdd2337d6..ab84d09a1 100644
--- a/src/core/hle/service/mii/raw_data.h
+++ b/src/core/hle/service/mii/raw_data.h
@@ -9,19 +9,65 @@
9 9
10namespace Service::Mii::RawData { 10namespace Service::Mii::RawData {
11 11
12struct RandomMiiValues {
13 std::array<u8, 0xbc> values{};
14};
15static_assert(sizeof(RandomMiiValues) == 0xbc, "RandomMiiValues has incorrect size.");
16
17struct RandomMiiData4 {
18 Gender gender{};
19 Age age{};
20 Race race{};
21 u32 values_count{};
22 std::array<u32, 47> values{};
23};
24static_assert(sizeof(RandomMiiData4) == 0xcc, "RandomMiiData4 has incorrect size.");
25
26struct RandomMiiData3 {
27 u32 arg_1;
28 u32 arg_2;
29 u32 values_count;
30 std::array<u32, 47> values{};
31};
32static_assert(sizeof(RandomMiiData3) == 0xc8, "RandomMiiData3 has incorrect size.");
33
34struct RandomMiiData2 {
35 u32 arg_1;
36 u32 values_count;
37 std::array<u32, 47> values{};
38};
39static_assert(sizeof(RandomMiiData2) == 0xc4, "RandomMiiData2 has incorrect size.");
40
12extern const std::array<Service::Mii::DefaultMii, 2> BaseMii; 41extern const std::array<Service::Mii::DefaultMii, 2> BaseMii;
13extern const std::array<Service::Mii::DefaultMii, 6> DefaultMii; 42extern const std::array<Service::Mii::DefaultMii, 6> DefaultMii;
14extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFaceline; 43
15extern const std::array<Service::Mii::RandomMiiData3, 6> RandomMiiFacelineColor; 44extern const std::array<u8, 62> EyeRotateLookup;
16extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineWrinkle; 45extern const std::array<u8, 24> EyebrowRotateLookup;
17extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFacelineMakeup; 46
18extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiHairType; 47extern const std::array<RandomMiiData4, 18> RandomMiiFaceline;
19extern const std::array<Service::Mii::RandomMiiData3, 9> RandomMiiHairColor; 48extern const std::array<RandomMiiData3, 6> RandomMiiFacelineColor;
20extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyeType; 49extern const std::array<RandomMiiData4, 18> RandomMiiFacelineWrinkle;
21extern const std::array<Service::Mii::RandomMiiData2, 3> RandomMiiEyeColor; 50extern const std::array<RandomMiiData4, 18> RandomMiiFacelineMakeup;
22extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiEyebrowType; 51extern const std::array<RandomMiiData4, 18> RandomMiiHairType;
23extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiNoseType; 52extern const std::array<RandomMiiData3, 9> RandomMiiHairColor;
24extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiMouthType; 53extern const std::array<RandomMiiData4, 18> RandomMiiEyeType;
25extern const std::array<Service::Mii::RandomMiiData2, 3> RandomMiiGlassType; 54extern const std::array<RandomMiiData2, 3> RandomMiiEyeColor;
55extern const std::array<RandomMiiData4, 18> RandomMiiEyebrowType;
56extern const std::array<RandomMiiData4, 18> RandomMiiNoseType;
57extern const std::array<RandomMiiData4, 18> RandomMiiMouthType;
58extern const std::array<RandomMiiData2, 3> RandomMiiGlassType;
59
60u8 FromVer3GetFacelineColor(u8 color);
61u8 FromVer3GetHairColor(u8 color);
62u8 FromVer3GetEyeColor(u8 color);
63u8 FromVer3GetMouthlineColor(u8 color);
64u8 FromVer3GetGlassColor(u8 color);
65u8 FromVer3GetGlassType(u8 type);
66
67u8 GetFacelineColorFromVer3(u8 color);
68u8 GetHairColorFromVer3(u32 color);
69u8 GetEyeColorFromVer3(u32 color);
70u8 GetMouthColorFromVer3(u32 color);
71u8 GetGlassColorFromVer3(u8 color);
26 72
27} // namespace Service::Mii::RawData 73} // namespace Service::Mii::RawData
diff --git a/src/core/hle/service/mii/types.h b/src/core/hle/service/mii/types.h
index c48d08d79..cc8286189 100644
--- a/src/core/hle/service/mii/types.h
+++ b/src/core/hle/service/mii/types.h
@@ -86,6 +86,8 @@ enum class SourceFlag : u32 {
86}; 86};
87DECLARE_ENUM_FLAG_OPERATORS(SourceFlag); 87DECLARE_ENUM_FLAG_OPERATORS(SourceFlag);
88 88
89using Nickname = std::array<char16_t, 10>;
90
89// nn::mii::CharInfo 91// nn::mii::CharInfo
90struct CharInfo { 92struct CharInfo {
91 Common::UUID uuid; 93 Common::UUID uuid;
@@ -382,56 +384,10 @@ struct NfpStoreDataExtension {
382}; 384};
383static_assert(sizeof(NfpStoreDataExtension) == 0x8, "NfpStoreDataExtension is an invalid size"); 385static_assert(sizeof(NfpStoreDataExtension) == 0x8, "NfpStoreDataExtension is an invalid size");
384 386
385constexpr std::array<u8, 0x10> Ver3FacelineColorTable{
386 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x0, 0x1, 0x5, 0x5,
387};
388
389constexpr std::array<u8, 100> Ver3HairColorTable{
390 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x0, 0x4, 0x3, 0x5, 0x4, 0x4, 0x6, 0x2, 0x0,
391 0x6, 0x4, 0x3, 0x2, 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
392 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4,
393 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5,
394 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0x5, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7,
395 0x7, 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x0, 0x4, 0x4, 0x4, 0x4,
396};
397
398constexpr std::array<u8, 100> Ver3EyeColorTable{
399 0x0, 0x2, 0x2, 0x2, 0x1, 0x3, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x2, 0x2, 0x4,
400 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
401 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x4, 0x4,
402 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
403 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2,
404 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
405};
406
407constexpr std::array<u8, 100> Ver3MouthlineColorTable{
408 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
409 0x4, 0x4, 0x0, 0x1, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
410 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
411 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
412 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3,
413 0x3, 0x3, 0x3, 0x3, 0x4, 0x0, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3,
414};
415
416constexpr std::array<u8, 100> Ver3GlassColorTable{
417 0x0, 0x1, 0x1, 0x1, 0x5, 0x1, 0x1, 0x4, 0x0, 0x5, 0x1, 0x1, 0x3, 0x5, 0x1, 0x2, 0x3,
418 0x4, 0x5, 0x4, 0x2, 0x2, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
419 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
420 0x3, 0x3, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x0, 0x5, 0x5,
421 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x4,
422 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
423};
424
425constexpr std::array<u8, 20> Ver3GlassTypeTable{
426 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x1,
427 0x2, 0x1, 0x3, 0x7, 0x7, 0x6, 0x7, 0x8, 0x7, 0x7,
428};
429
430struct MiiStoreData { 387struct MiiStoreData {
431 using Name = std::array<char16_t, 10>;
432 388
433 MiiStoreData(); 389 MiiStoreData();
434 MiiStoreData(const Name& name, const MiiStoreBitFields& bit_fields, 390 MiiStoreData(const Nickname& name, const MiiStoreBitFields& bit_fields,
435 const Common::UUID& user_id); 391 const Common::UUID& user_id);
436 392
437 // This corresponds to the above structure MiiStoreBitFields. I did it like this because the 393 // This corresponds to the above structure MiiStoreBitFields. I did it like this because the
@@ -441,7 +397,7 @@ struct MiiStoreData {
441 std::array<u8, 0x1C> data{}; 397 std::array<u8, 0x1C> data{};
442 static_assert(sizeof(MiiStoreBitFields) == sizeof(data), "data field has incorrect size."); 398 static_assert(sizeof(MiiStoreBitFields) == sizeof(data), "data field has incorrect size.");
443 399
444 Name name{}; 400 Nickname name{};
445 Common::UUID uuid{}; 401 Common::UUID uuid{};
446 } data; 402 } data;
447 403
@@ -501,7 +457,7 @@ struct DefaultMii {
501 u32 face_makeup{}; 457 u32 face_makeup{};
502 u32 hair_type{}; 458 u32 hair_type{};
503 u32 hair_color{}; 459 u32 hair_color{};
504 u32 hair_flip{}; 460 HairFlip hair_flip{};
505 u32 eye_type{}; 461 u32 eye_type{};
506 u32 eye_color{}; 462 u32 eye_color{};
507 u32 eye_scale{}; 463 u32 eye_scale{};
@@ -524,8 +480,8 @@ struct DefaultMii {
524 u32 mouth_scale{}; 480 u32 mouth_scale{};
525 u32 mouth_aspect{}; 481 u32 mouth_aspect{};
526 u32 mouth_y{}; 482 u32 mouth_y{};
527 u32 mustache_type{}; 483 MustacheType mustache_type{};
528 u32 beard_type{}; 484 BeardType beard_type{};
529 u32 beard_color{}; 485 u32 beard_color{};
530 u32 mustache_scale{}; 486 u32 mustache_scale{};
531 u32 mustache_y{}; 487 u32 mustache_y{};
@@ -541,10 +497,10 @@ struct DefaultMii {
541 u32 weight{}; 497 u32 weight{};
542 Gender gender{}; 498 Gender gender{};
543 u32 favorite_color{}; 499 u32 favorite_color{};
544 u32 region{}; 500 u32 region_move{};
545 FontRegion font_region{}; 501 FontRegion font_region{};
546 u32 type{}; 502 u32 type{};
547 INSERT_PADDING_WORDS(5); 503 Nickname nickname;
548}; 504};
549static_assert(sizeof(DefaultMii) == 0xd8, "MiiStoreData has incorrect size."); 505static_assert(sizeof(DefaultMii) == 0xd8, "MiiStoreData has incorrect size.");
550 506