|
|
|
@ -47,59 +47,60 @@ std::array<T, DestArraySize> ResizeArray(const std::array<T, SourceArraySize>& i
|
|
|
|
|
MiiInfo ConvertStoreDataToInfo(const MiiStoreData& data) {
|
|
|
|
|
MiiStoreBitFields bf;
|
|
|
|
|
std::memcpy(&bf, data.data.data.data(), sizeof(MiiStoreBitFields));
|
|
|
|
|
MiiInfo info{};
|
|
|
|
|
info.name = ResizeArray<char16_t, 10, 11>(data.data.name);
|
|
|
|
|
info.uuid = data.data.uuid;
|
|
|
|
|
info.font_region = static_cast<u8>(bf.font_region.Value());
|
|
|
|
|
info.favorite_color = static_cast<u8>(bf.favorite_color.Value());
|
|
|
|
|
info.gender = static_cast<u8>(bf.gender.Value());
|
|
|
|
|
info.height = static_cast<u8>(bf.height.Value());
|
|
|
|
|
info.build = static_cast<u8>(bf.build.Value());
|
|
|
|
|
info.type = static_cast<u8>(bf.type.Value());
|
|
|
|
|
info.region_move = static_cast<u8>(bf.region_move.Value());
|
|
|
|
|
info.faceline_type = static_cast<u8>(bf.faceline_type.Value());
|
|
|
|
|
info.faceline_color = static_cast<u8>(bf.faceline_color.Value());
|
|
|
|
|
info.faceline_wrinkle = static_cast<u8>(bf.faceline_wrinkle.Value());
|
|
|
|
|
info.faceline_make = static_cast<u8>(bf.faceline_makeup.Value());
|
|
|
|
|
info.hair_type = static_cast<u8>(bf.hair_type.Value());
|
|
|
|
|
info.hair_color = static_cast<u8>(bf.hair_color.Value());
|
|
|
|
|
info.hair_flip = static_cast<u8>(bf.hair_flip.Value());
|
|
|
|
|
info.eye_type = static_cast<u8>(bf.eye_type.Value());
|
|
|
|
|
info.eye_color = static_cast<u8>(bf.eye_color.Value());
|
|
|
|
|
info.eye_scale = static_cast<u8>(bf.eye_scale.Value());
|
|
|
|
|
info.eye_aspect = static_cast<u8>(bf.eye_aspect.Value());
|
|
|
|
|
info.eye_rotate = static_cast<u8>(bf.eye_rotate.Value());
|
|
|
|
|
info.eye_x = static_cast<u8>(bf.eye_x.Value());
|
|
|
|
|
info.eye_y = static_cast<u8>(bf.eye_y.Value());
|
|
|
|
|
info.eyebrow_type = static_cast<u8>(bf.eyebrow_type.Value());
|
|
|
|
|
info.eyebrow_color = static_cast<u8>(bf.eyebrow_color.Value());
|
|
|
|
|
info.eyebrow_scale = static_cast<u8>(bf.eyebrow_scale.Value());
|
|
|
|
|
info.eyebrow_aspect = static_cast<u8>(bf.eyebrow_aspect.Value());
|
|
|
|
|
info.eyebrow_rotate = static_cast<u8>(bf.eyebrow_rotate.Value());
|
|
|
|
|
info.eyebrow_x = static_cast<u8>(bf.eyebrow_x.Value());
|
|
|
|
|
info.eyebrow_y = static_cast<u8>(bf.eyebrow_y.Value() + 3);
|
|
|
|
|
info.nose_type = static_cast<u8>(bf.nose_type.Value());
|
|
|
|
|
info.nose_scale = static_cast<u8>(bf.nose_scale.Value());
|
|
|
|
|
info.nose_y = static_cast<u8>(bf.nose_y.Value());
|
|
|
|
|
info.mouth_type = static_cast<u8>(bf.mouth_type.Value());
|
|
|
|
|
info.mouth_color = static_cast<u8>(bf.mouth_color.Value());
|
|
|
|
|
info.mouth_scale = static_cast<u8>(bf.mouth_scale.Value());
|
|
|
|
|
info.mouth_aspect = static_cast<u8>(bf.mouth_aspect.Value());
|
|
|
|
|
info.mouth_y = static_cast<u8>(bf.mouth_y.Value());
|
|
|
|
|
info.beard_color = static_cast<u8>(bf.beard_color.Value());
|
|
|
|
|
info.beard_type = static_cast<u8>(bf.beard_type.Value());
|
|
|
|
|
info.mustache_type = static_cast<u8>(bf.mustache_type.Value());
|
|
|
|
|
info.mustache_scale = static_cast<u8>(bf.mustache_scale.Value());
|
|
|
|
|
info.mustache_y = static_cast<u8>(bf.mustache_y.Value());
|
|
|
|
|
info.glasses_type = static_cast<u8>(bf.glasses_type.Value());
|
|
|
|
|
info.glasses_color = static_cast<u8>(bf.glasses_color.Value());
|
|
|
|
|
info.glasses_scale = static_cast<u8>(bf.glasses_scale.Value());
|
|
|
|
|
info.glasses_y = static_cast<u8>(bf.glasses_y.Value());
|
|
|
|
|
info.mole_type = static_cast<u8>(bf.mole_type.Value());
|
|
|
|
|
info.mole_scale = static_cast<u8>(bf.mole_scale.Value());
|
|
|
|
|
info.mole_x = static_cast<u8>(bf.mole_x.Value());
|
|
|
|
|
info.mole_y = static_cast<u8>(bf.mole_y.Value());
|
|
|
|
|
return info;
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
.uuid = data.data.uuid,
|
|
|
|
|
.name = ResizeArray<char16_t, 10, 11>(data.data.name),
|
|
|
|
|
.font_region = static_cast<u8>(bf.font_region.Value()),
|
|
|
|
|
.favorite_color = static_cast<u8>(bf.favorite_color.Value()),
|
|
|
|
|
.gender = static_cast<u8>(bf.gender.Value()),
|
|
|
|
|
.height = static_cast<u8>(bf.height.Value()),
|
|
|
|
|
.build = static_cast<u8>(bf.build.Value()),
|
|
|
|
|
.type = static_cast<u8>(bf.type.Value()),
|
|
|
|
|
.region_move = static_cast<u8>(bf.region_move.Value()),
|
|
|
|
|
.faceline_type = static_cast<u8>(bf.faceline_type.Value()),
|
|
|
|
|
.faceline_color = static_cast<u8>(bf.faceline_color.Value()),
|
|
|
|
|
.faceline_wrinkle = static_cast<u8>(bf.faceline_wrinkle.Value()),
|
|
|
|
|
.faceline_make = static_cast<u8>(bf.faceline_makeup.Value()),
|
|
|
|
|
.hair_type = static_cast<u8>(bf.hair_type.Value()),
|
|
|
|
|
.hair_color = static_cast<u8>(bf.hair_color.Value()),
|
|
|
|
|
.hair_flip = static_cast<u8>(bf.hair_flip.Value()),
|
|
|
|
|
.eye_type = static_cast<u8>(bf.eye_type.Value()),
|
|
|
|
|
.eye_color = static_cast<u8>(bf.eye_color.Value()),
|
|
|
|
|
.eye_scale = static_cast<u8>(bf.eye_scale.Value()),
|
|
|
|
|
.eye_aspect = static_cast<u8>(bf.eye_aspect.Value()),
|
|
|
|
|
.eye_rotate = static_cast<u8>(bf.eye_rotate.Value()),
|
|
|
|
|
.eye_x = static_cast<u8>(bf.eye_x.Value()),
|
|
|
|
|
.eye_y = static_cast<u8>(bf.eye_y.Value()),
|
|
|
|
|
.eyebrow_type = static_cast<u8>(bf.eyebrow_type.Value()),
|
|
|
|
|
.eyebrow_color = static_cast<u8>(bf.eyebrow_color.Value()),
|
|
|
|
|
.eyebrow_scale = static_cast<u8>(bf.eyebrow_scale.Value()),
|
|
|
|
|
.eyebrow_aspect = static_cast<u8>(bf.eyebrow_aspect.Value()),
|
|
|
|
|
.eyebrow_rotate = static_cast<u8>(bf.eyebrow_rotate.Value()),
|
|
|
|
|
.eyebrow_x = static_cast<u8>(bf.eyebrow_x.Value()),
|
|
|
|
|
.eyebrow_y = static_cast<u8>(bf.eyebrow_y.Value() + 3),
|
|
|
|
|
.nose_type = static_cast<u8>(bf.nose_type.Value()),
|
|
|
|
|
.nose_scale = static_cast<u8>(bf.nose_scale.Value()),
|
|
|
|
|
.nose_y = static_cast<u8>(bf.nose_y.Value()),
|
|
|
|
|
.mouth_type = static_cast<u8>(bf.mouth_type.Value()),
|
|
|
|
|
.mouth_color = static_cast<u8>(bf.mouth_color.Value()),
|
|
|
|
|
.mouth_scale = static_cast<u8>(bf.mouth_scale.Value()),
|
|
|
|
|
.mouth_aspect = static_cast<u8>(bf.mouth_aspect.Value()),
|
|
|
|
|
.mouth_y = static_cast<u8>(bf.mouth_y.Value()),
|
|
|
|
|
.beard_color = static_cast<u8>(bf.beard_color.Value()),
|
|
|
|
|
.beard_type = static_cast<u8>(bf.beard_type.Value()),
|
|
|
|
|
.mustache_type = static_cast<u8>(bf.mustache_type.Value()),
|
|
|
|
|
.mustache_scale = static_cast<u8>(bf.mustache_scale.Value()),
|
|
|
|
|
.mustache_y = static_cast<u8>(bf.mustache_y.Value()),
|
|
|
|
|
.glasses_type = static_cast<u8>(bf.glasses_type.Value()),
|
|
|
|
|
.glasses_color = static_cast<u8>(bf.glasses_color.Value()),
|
|
|
|
|
.glasses_scale = static_cast<u8>(bf.glasses_scale.Value()),
|
|
|
|
|
.glasses_y = static_cast<u8>(bf.glasses_y.Value()),
|
|
|
|
|
.mole_type = static_cast<u8>(bf.mole_type.Value()),
|
|
|
|
|
.mole_scale = static_cast<u8>(bf.mole_scale.Value()),
|
|
|
|
|
.mole_x = static_cast<u8>(bf.mole_x.Value()),
|
|
|
|
|
.mole_y = static_cast<u8>(bf.mole_y.Value()),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u16 GenerateCrc16(const void* data, std::size_t size) {
|
|
|
|
|