yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

service: mii: Remove most magic values

This commit is contained in:
Narr the Reg 2023-09-11 17:12:51 -06:00 committed by german77
parent ec25f847d8
commit 4d138b760b
10 changed files with 1534 additions and 1066 deletions

View File

@ -13,20 +13,517 @@
namespace Service::Mii { namespace Service::Mii {
enum class Age : u32 { constexpr u8 MaxHeight = 127;
constexpr u8 MaxBuild = 127;
constexpr u8 MaxType = 1;
constexpr u8 MaxRegionMove = 3;
constexpr u8 MaxEyeScale = 7;
constexpr u8 MaxEyeAspect = 6;
constexpr u8 MaxEyeRotate = 7;
constexpr u8 MaxEyeX = 12;
constexpr u8 MaxEyeY = 18;
constexpr u8 MaxEyebrowScale = 8;
constexpr u8 MaxEyebrowAspect = 6;
constexpr u8 MaxEyebrowRotate = 11;
constexpr u8 MaxEyebrowX = 12;
constexpr u8 MaxEyebrowY = 18;
constexpr u8 MaxNoseScale = 8;
constexpr u8 MaxNoseY = 18;
constexpr u8 MaxMouthScale = 8;
constexpr u8 MaxMoutAspect = 6;
constexpr u8 MaxMouthY = 18;
constexpr u8 MaxMustacheScale = 8;
constexpr u8 MasMustacheY = 16;
constexpr u8 MaxGlassScale = 7;
constexpr u8 MaxGlassY = 20;
constexpr u8 MaxMoleScale = 8;
constexpr u8 MaxMoleX = 16;
constexpr u8 MaxMoleY = 30;
constexpr u8 MaxVer3CommonColor = 7;
constexpr u8 MaxVer3GlassType = 8;
enum class Age : u8 {
Young, Young,
Normal, Normal,
Old, Old,
All, All, // Default
Max = All,
}; };
enum class BeardType : u32 { enum class Gender : u8 {
Male,
Female,
All, // Default
Max = Female,
};
enum class Race : u8 {
Black,
White,
Asian,
All, // Default
Max = All,
};
enum class HairType : u8 {
NormalLong, // Default
NormalShort,
NormalMedium,
NormalExtraLong,
NormalLongBottom,
NormalTwoPeaks,
PartingLong,
FrontLock,
PartingShort,
PartingExtraLongCurved,
PartingExtraLong,
PartingMiddleLong,
PartingSquared,
PartingLongBottom,
PeaksTop,
PeaksSquared,
PartingPeaks,
PeaksLongBottom,
Peaks,
PeaksRounded,
PeaksSide,
PeaksMedium,
PeaksLong,
PeaksRoundedLong,
PartingFrontPeaks,
PartingLongFront,
PartingLongRounded,
PartingFrontPeaksLong,
PartingExtraLongRounded,
LongRounded,
NormalUnknown1,
NormalUnknown2,
NormalUnknown3,
NormalUnknown4,
NormalUnknown5,
NormalUnknown6,
DreadLocks,
PlatedMats,
Caps,
Afro,
PlatedMatsLong,
Beanie,
Short,
ShortTopLongSide,
ShortUnknown1,
ShortUnknown2,
MilitaryParting,
Military,
ShortUnknown3,
ShortUnknown4,
ShortUnknown5,
ShortUnknown6,
NoneTop,
None, None,
Beard1, LongUnknown1,
Beard2, LongUnknown2,
Beard3, LongUnknown3,
Beard4, LongUnknown4,
Beard5, LongUnknown5,
LongUnknown6,
LongUnknown7,
LongUnknown8,
LongUnknown9,
LongUnknown10,
LongUnknown11,
LongUnknown12,
LongUnknown13,
LongUnknown14,
LongUnknown15,
LongUnknown16,
LongUnknown17,
LongUnknown18,
LongUnknown19,
LongUnknown20,
LongUnknown21,
LongUnknown22,
LongUnknown23,
LongUnknown24,
LongUnknown25,
LongUnknown26,
LongUnknown27,
LongUnknown28,
LongUnknown29,
LongUnknown30,
LongUnknown31,
LongUnknown32,
LongUnknown33,
LongUnknown34,
LongUnknown35,
LongUnknown36,
LongUnknown37,
LongUnknown38,
LongUnknown39,
LongUnknown40,
LongUnknown41,
LongUnknown42,
LongUnknown43,
LongUnknown44,
LongUnknown45,
LongUnknown46,
LongUnknown47,
LongUnknown48,
LongUnknown49,
LongUnknown50,
LongUnknown51,
LongUnknown52,
LongUnknown53,
LongUnknown54,
LongUnknown55,
LongUnknown56,
LongUnknown57,
LongUnknown58,
LongUnknown59,
LongUnknown60,
LongUnknown61,
LongUnknown62,
LongUnknown63,
LongUnknown64,
LongUnknown65,
LongUnknown66,
TwoMediumFrontStrandsOneLongBackPonyTail,
TwoFrontStrandsLongBackPonyTail,
PartingFrontTwoLongBackPonyTails,
TwoFrontStrandsOneLongBackPonyTail,
LongBackPonyTail,
LongFrontTwoLongBackPonyTails,
StrandsTwoShortSidedPonyTails,
TwoMediumSidedPonyTails,
ShortFrontTwoBackPonyTails,
TwoShortSidedPonyTails,
TwoLongSidedPonyTails,
LongFrontTwoBackPonyTails,
Max = LongFrontTwoBackPonyTails,
};
enum class MoleType : u8 {
None, // Default
OneDot,
Max = OneDot,
};
enum class HairFlip : u8 {
Left, // Default
Right,
Max = Right,
};
enum class CommonColor : u8 {
// For simplicity common colors aren't listed
Max = 99,
Count = 100,
};
enum class FavoriteColor : u8 {
Red, // Default
Orange,
Yellow,
LimeGreen,
Green,
Blue,
LightBlue,
Pink,
Purple,
Brown,
White,
Black,
Max = Black,
};
enum class EyeType : u8 {
Normal, // Default
NormalLash,
WhiteLash,
WhiteNoBottom,
OvalAngledWhite,
AngryWhite,
DotLashType1,
Line,
DotLine,
OvalWhite,
RoundedWhite,
NormalShadow,
CircleWhite,
Circle,
CircleWhiteStroke,
NormalOvalNoBottom,
NormalOvalLarge,
NormalRoundedNoBottom,
SmallLash,
Small,
TwoSmall,
NormalLongLash,
WhiteTwoLashes,
WhiteThreeLashes,
DotAngry,
DotAngled,
Oval,
SmallWhite,
WhiteAngledNoBottom,
WhiteAngledNoLeft,
SmallWhiteTwoLashes,
LeafWhiteLash,
WhiteLargeNoBottom,
Dot,
DotLashType2,
DotThreeLashes,
WhiteOvalTop,
WhiteOvalBottom,
WhiteOvalBottomFlat,
WhiteOvalTwoLashes,
WhiteOvalThreeLashes,
WhiteOvalNoBottomTwoLashes,
DotWhite,
WhiteOvalTopFlat,
WhiteThinLeaf,
StarThreeLashes,
LineTwoLashes,
CrowsFeet,
WhiteNoBottomFlat,
WhiteNoBottomRounded,
WhiteSmallBottomLine,
WhiteNoBottomLash,
WhiteNoPartialBottomLash,
WhiteOvalBottomLine,
WhiteNoBottomLashTopLine,
WhiteNoPartialBottomTwoLashes,
NormalTopLine,
WhiteOvalLash,
RoundTired,
WhiteLarge,
Max = WhiteLarge,
};
enum class MouthType : u8 {
Neutral, // Default
NeutralLips,
Smile,
SmileStroke,
SmileTeeth,
LipsSmall,
LipsLarge,
Wave,
WaveAngrySmall,
NeutralStrokeLarge,
TeethSurprised,
LipsExtraLarge,
LipsUp,
NeutralDown,
Surprised,
TeethMiddle,
NeutralStroke,
LipsExtraSmall,
Malicious,
LipsDual,
NeutralComma,
NeutralUp,
TeethLarge,
WaveAngry,
LipsSexy,
SmileInverted,
LipsSexyOutline,
SmileRounded,
LipsTeeth,
NeutralOpen,
TeethRounded,
WaveAngrySmallInverted,
NeutralCommaInverted,
TeethFull,
SmileDownLine,
Kiss,
Max = Kiss,
};
enum class FontRegion : u8 {
Standard, // Default
China,
Korea,
Taiwan,
Max = Taiwan,
};
enum class FacelineType : u8 {
Sharp, // Default
Rounded,
SharpRounded,
SharpRoundedSmall,
Large,
LargeRounded,
SharpSmall,
Flat,
Bump,
Angular,
FlatRounded,
AngularSmall,
Max = AngularSmall,
};
enum class FacelineColor : u8 {
Beige, // Default
WarmBeige,
Natural,
Honey,
Chestnut,
Porcelain,
Ivory,
WarmIvory,
Almond,
Espresso,
Max = Espresso,
Count = Max + 1,
};
enum class FacelineWrinkle : u8 {
None, // Default
TearTroughs,
FacialPain,
Cheeks,
Folds,
UnderTheEyes,
SplitChin,
Chin,
BrowDroop,
MouthFrown,
CrowsFeet,
FoldsCrowsFrown,
Max = FoldsCrowsFrown,
};
enum class FacelineMake : u8 {
None, // Default
CheekPorcelain,
CheekNatural,
EyeShadowBlue,
CheekBlushPorcelain,
CheekBlushNatural,
CheekPorcelainEyeShadowBlue,
CheekPorcelainEyeShadowNatural,
CheekBlushPorcelainEyeShadowEspresso,
Freckles,
LionsManeBeard,
StubbleBeard,
Max = StubbleBeard,
};
enum class EyebrowType : u8 {
FlatAngledLarge, // Default
LowArchRoundedThin,
SoftAngledLarge,
MediumArchRoundedThin,
RoundedMedium,
LowArchMedium,
RoundedThin,
UpThin,
MediumArchRoundedMedium,
RoundedLarge,
UpLarge,
FlatAngledLargeInverted,
MediumArchFlat,
AngledThin,
HorizontalLarge,
HighArchFlat,
Flat,
MediumArchLarge,
LowArchThin,
RoundedThinInverted,
HighArchLarge,
Hairy,
Dotted,
None,
Max = None,
};
enum class NoseType : u8 {
Normal, // Default
Rounded,
Dot,
Arrow,
Roman,
Triangle,
Button,
RoundedInverted,
Potato,
Grecian,
Snub,
Aquiline,
ArrowLeft,
RoundedLarge,
Hooked,
Fat,
Droopy,
ArrowLarge,
Max = ArrowLarge,
};
enum class BeardType : u8 {
None,
Goatee,
GoateeLong,
LionsManeLong,
LionsMane,
Full,
Min = Goatee,
Max = Full,
};
enum class MustacheType : u8 {
None,
Walrus,
Pencil,
Horseshoe,
Normal,
Toothbrush,
Min = Walrus,
Max = Toothbrush,
};
enum class GlassType : u8 {
None,
Oval,
Wayfarer,
Rectangle,
TopRimless,
Rounded,
Oversized,
CatEye,
Square,
BottomRimless,
SemiOpaqueRounded,
SemiOpaqueCatEye,
SemiOpaqueOval,
SemiOpaqueRectangle,
SemiOpaqueAviator,
OpaqueRounded,
OpaqueCatEye,
OpaqueOval,
OpaqueRectangle,
OpaqueAviator,
Max = OpaqueAviator,
Count = Max + 1,
}; };
enum class BeardAndMustacheFlag : u32 { enum class BeardAndMustacheFlag : u32 {
@ -36,42 +533,6 @@ enum class BeardAndMustacheFlag : u32 {
}; };
DECLARE_ENUM_FLAG_OPERATORS(BeardAndMustacheFlag); DECLARE_ENUM_FLAG_OPERATORS(BeardAndMustacheFlag);
enum class FontRegion : u32 {
Standard,
China,
Korea,
Taiwan,
};
enum class Gender : u32 {
Male,
Female,
All,
Maximum = Female,
};
enum class HairFlip : u32 {
Left,
Right,
Maximum = Right,
};
enum class MustacheType : u32 {
None,
Mustache1,
Mustache2,
Mustache3,
Mustache4,
Mustache5,
};
enum class Race : u32 {
Black,
White,
Asian,
All,
};
enum class Source : u32 { enum class Source : u32 {
Database = 0, Database = 0,
Default = 1, Default = 1,
@ -173,7 +634,7 @@ struct DefaultMii {
u32 face_makeup{}; u32 face_makeup{};
u32 hair_type{}; u32 hair_type{};
u32 hair_color{}; u32 hair_color{};
HairFlip hair_flip{}; u32 hair_flip{};
u32 eye_type{}; u32 eye_type{};
u32 eye_color{}; u32 eye_color{};
u32 eye_scale{}; u32 eye_scale{};
@ -196,8 +657,8 @@ struct DefaultMii {
u32 mouth_scale{}; u32 mouth_scale{};
u32 mouth_aspect{}; u32 mouth_aspect{};
u32 mouth_y{}; u32 mouth_y{};
MustacheType mustache_type{}; u32 mustache_type{};
BeardType beard_type{}; u32 beard_type{};
u32 beard_color{}; u32 beard_color{};
u32 mustache_scale{}; u32 mustache_scale{};
u32 mustache_y{}; u32 mustache_y{};
@ -211,10 +672,10 @@ struct DefaultMii {
u32 mole_y{}; u32 mole_y{};
u32 height{}; u32 height{};
u32 weight{}; u32 weight{};
Gender gender{}; u32 gender{};
u32 favorite_color{}; u32 favorite_color{};
u32 region_move{}; u32 region_move{};
FontRegion font_region{}; u32 font_region{};
u32 type{}; u32 type{};
Nickname nickname; Nickname nickname;
}; };

View File

@ -10,7 +10,7 @@ void CharInfo::SetFromStoreData(const StoreData& store_data) {
name = store_data.GetNickname(); name = store_data.GetNickname();
null_terminator = '\0'; null_terminator = '\0';
create_id = store_data.GetCreateId(); create_id = store_data.GetCreateId();
font_region = static_cast<u8>(store_data.GetFontRegion()); font_region = store_data.GetFontRegion();
favorite_color = store_data.GetFavoriteColor(); favorite_color = store_data.GetFavoriteColor();
gender = store_data.GetGender(); gender = store_data.GetGender();
height = store_data.GetHeight(); height = store_data.GetHeight();
@ -51,10 +51,10 @@ void CharInfo::SetFromStoreData(const StoreData& store_data) {
mustache_type = store_data.GetMustacheType(); mustache_type = store_data.GetMustacheType();
mustache_scale = store_data.GetMustacheScale(); mustache_scale = store_data.GetMustacheScale();
mustache_y = store_data.GetMustacheY(); mustache_y = store_data.GetMustacheY();
glasses_type = store_data.GetGlassType(); glass_type = store_data.GetGlassType();
glasses_color = store_data.GetGlassColor(); glass_color = store_data.GetGlassColor();
glasses_scale = store_data.GetGlassScale(); glass_scale = store_data.GetGlassScale();
glasses_y = store_data.GetGlassY(); glass_y = store_data.GetGlassY();
mole_type = store_data.GetMoleType(); mole_type = store_data.GetMoleType();
mole_scale = store_data.GetMoleScale(); mole_scale = store_data.GetMoleScale();
mole_x = store_data.GetMoleX(); mole_x = store_data.GetMoleX();
@ -69,151 +69,151 @@ ValidationResult CharInfo::Verify() const {
if (!name.IsValid()) { if (!name.IsValid()) {
return ValidationResult::InvalidName; return ValidationResult::InvalidName;
} }
if (3 < font_region) { if (font_region > FontRegion::Max) {
return ValidationResult::InvalidFont; return ValidationResult::InvalidFont;
} }
if (0xb < favorite_color) { if (favorite_color > FavoriteColor::Max) {
return ValidationResult::InvalidColor; return ValidationResult::InvalidColor;
} }
if (1 < gender) { if (gender > Gender::Max) {
return ValidationResult::InvalidGender; return ValidationResult::InvalidGender;
} }
if (height > 0x7f) { if (height > MaxHeight) {
return ValidationResult::InvalidHeight; return ValidationResult::InvalidHeight;
} }
if (build > 0x7f) { if (build > MaxBuild) {
return ValidationResult::InvalidBuild; return ValidationResult::InvalidBuild;
} }
if (1 < type) { if (type > MaxType) {
return ValidationResult::InvalidType; return ValidationResult::InvalidType;
} }
if (3 < region_move) { if (region_move > MaxRegionMove) {
return ValidationResult::InvalidRegionMove; return ValidationResult::InvalidRegionMove;
} }
if (0xb < faceline_type) { if (faceline_type > FacelineType::Max) {
return ValidationResult::InvalidFacelineType; return ValidationResult::InvalidFacelineType;
} }
if (9 < faceline_color) { if (faceline_color > FacelineColor::Max) {
return ValidationResult::InvalidFacelineColor; return ValidationResult::InvalidFacelineColor;
} }
if (0xb < faceline_wrinkle) { if (faceline_wrinkle > FacelineWrinkle::Max) {
return ValidationResult::InvalidFacelineWrinkle; return ValidationResult::InvalidFacelineWrinkle;
} }
if (0xb < faceline_make) { if (faceline_make > FacelineMake::Max) {
return ValidationResult::InvalidFacelineMake; return ValidationResult::InvalidFacelineMake;
} }
if (0x83 < hair_type) { if (hair_type > HairType::Max) {
return ValidationResult::InvalidHairType; return ValidationResult::InvalidHairType;
} }
if (99 < hair_color) { if (hair_color > CommonColor::Max) {
return ValidationResult::InvalidHairColor; return ValidationResult::InvalidHairColor;
} }
if (1 < hair_flip) { if (hair_flip > HairFlip::Max) {
return ValidationResult::InvalidHairFlip; return ValidationResult::InvalidHairFlip;
} }
if (0x3b < eye_type) { if (eye_type > EyeType::Max) {
return ValidationResult::InvalidEyeType; return ValidationResult::InvalidEyeType;
} }
if (99 < eye_color) { if (eye_color > CommonColor::Max) {
return ValidationResult::InvalidEyeColor; return ValidationResult::InvalidEyeColor;
} }
if (7 < eye_scale) { if (eye_scale > MaxEyeScale) {
return ValidationResult::InvalidEyeScale; return ValidationResult::InvalidEyeScale;
} }
if (6 < eye_aspect) { if (eye_aspect > MaxEyeAspect) {
return ValidationResult::InvalidEyeAspect; return ValidationResult::InvalidEyeAspect;
} }
if (7 < eye_rotate) { if (eye_rotate > MaxEyeX) {
return ValidationResult::InvalidEyeRotate; return ValidationResult::InvalidEyeRotate;
} }
if (0xc < eye_x) { if (eye_x > MaxEyeX) {
return ValidationResult::InvalidEyeX; return ValidationResult::InvalidEyeX;
} }
if (0x12 < eye_y) { if (eye_y > MaxEyeY) {
return ValidationResult::InvalidEyeY; return ValidationResult::InvalidEyeY;
} }
if (0x17 < eyebrow_type) { if (eyebrow_type > EyebrowType::Max) {
return ValidationResult::InvalidEyebrowType; return ValidationResult::InvalidEyebrowType;
} }
if (99 < eyebrow_color) { if (eyebrow_color > CommonColor::Max) {
return ValidationResult::InvalidEyebrowColor; return ValidationResult::InvalidEyebrowColor;
} }
if (8 < eyebrow_scale) { if (eyebrow_scale > MaxEyebrowScale) {
return ValidationResult::InvalidEyebrowScale; return ValidationResult::InvalidEyebrowScale;
} }
if (6 < eyebrow_aspect) { if (eyebrow_aspect > MaxEyebrowAspect) {
return ValidationResult::InvalidEyebrowAspect; return ValidationResult::InvalidEyebrowAspect;
} }
if (0xb < eyebrow_rotate) { if (eyebrow_rotate > MaxEyebrowRotate) {
return ValidationResult::InvalidEyebrowRotate; return ValidationResult::InvalidEyebrowRotate;
} }
if (0xc < eyebrow_x) { if (eyebrow_x > MaxEyebrowX) {
return ValidationResult::InvalidEyebrowX; return ValidationResult::InvalidEyebrowX;
} }
if (0xf < eyebrow_y - 3) { if (eyebrow_y > MaxEyebrowY) {
return ValidationResult::InvalidEyebrowY; return ValidationResult::InvalidEyebrowY;
} }
if (0x11 < nose_type) { if (nose_type > NoseType::Max) {
return ValidationResult::InvalidNoseType; return ValidationResult::InvalidNoseType;
} }
if (nose_scale >= 9) { if (nose_scale > MaxNoseScale) {
return ValidationResult::InvalidNoseScale; return ValidationResult::InvalidNoseScale;
} }
if (0x12 < nose_y) { if (nose_y > MaxNoseY) {
return ValidationResult::InvalidNoseY; return ValidationResult::InvalidNoseY;
} }
if (0x23 < mouth_type) { if (mouth_type > MouthType::Max) {
return ValidationResult::InvalidMouthType; return ValidationResult::InvalidMouthType;
} }
if (99 < mouth_color) { if (mouth_color > CommonColor::Max) {
return ValidationResult::InvalidMouthColor; return ValidationResult::InvalidMouthColor;
} }
if (8 < mouth_scale) { if (mouth_scale > MaxMouthScale) {
return ValidationResult::InvalidMouthScale; return ValidationResult::InvalidMouthScale;
} }
if (6 < mouth_aspect) { if (mouth_aspect > MaxMoutAspect) {
return ValidationResult::InvalidMouthAspect; return ValidationResult::InvalidMouthAspect;
} }
if (0x12 < mouth_y) { if (mouth_y > MaxMouthY) {
return ValidationResult::InvalidMoleY; return ValidationResult::InvalidMoleY;
} }
if (99 < beard_color) { if (beard_color > CommonColor::Max) {
return ValidationResult::InvalidBeardColor; return ValidationResult::InvalidBeardColor;
} }
if (5 < beard_type) { if (beard_type > BeardType::Max) {
return ValidationResult::InvalidBeardType; return ValidationResult::InvalidBeardType;
} }
if (5 < mustache_type) { if (mustache_type > MustacheType::Max) {
return ValidationResult::InvalidMustacheType; return ValidationResult::InvalidMustacheType;
} }
if (8 < mustache_scale) { if (mustache_scale > MaxMustacheScale) {
return ValidationResult::InvalidMustacheScale; return ValidationResult::InvalidMustacheScale;
} }
if (0x10 < mustache_y) { if (mustache_y > MasMustacheY) {
return ValidationResult::InvalidMustacheY; return ValidationResult::InvalidMustacheY;
} }
if (0x13 < glasses_type) { if (glass_type > GlassType::Max) {
return ValidationResult::InvalidGlassType; return ValidationResult::InvalidGlassType;
} }
if (99 < glasses_color) { if (glass_color > CommonColor::Max) {
return ValidationResult::InvalidGlassColor; return ValidationResult::InvalidGlassColor;
} }
if (7 < glasses_scale) { if (glass_scale > MaxGlassScale) {
return ValidationResult::InvalidGlassScale; return ValidationResult::InvalidGlassScale;
} }
if (0x14 < glasses_y) { if (glass_y > MaxGlassY) {
return ValidationResult::InvalidGlassY; return ValidationResult::InvalidGlassY;
} }
if (mole_type >= 2) { if (mole_type > MoleType::Max) {
return ValidationResult::InvalidMoleType; return ValidationResult::InvalidMoleType;
} }
if (8 < mole_scale) { if (mole_scale > MaxMoleScale) {
return ValidationResult::InvalidMoleScale; return ValidationResult::InvalidMoleScale;
} }
if (mole_x >= 0x11) { if (mole_x > MaxMoleX) {
return ValidationResult::InvalidMoleX; return ValidationResult::InvalidMoleX;
} }
if (0x1e < mole_y) { if (mole_y > MaxMoleY) {
return ValidationResult::InvalidMoleY; return ValidationResult::InvalidMoleY;
} }
return ValidationResult::NoErrors; return ValidationResult::NoErrors;
@ -227,15 +227,15 @@ Nickname CharInfo::GetNickname() const {
return name; return name;
} }
u8 CharInfo::GetFontRegion() const { FontRegion CharInfo::GetFontRegion() const {
return font_region; return font_region;
} }
u8 CharInfo::GetFavoriteColor() const { FavoriteColor CharInfo::GetFavoriteColor() const {
return favorite_color; return favorite_color;
} }
u8 CharInfo::GetGender() const { Gender CharInfo::GetGender() const {
return gender; return gender;
} }
@ -255,39 +255,39 @@ u8 CharInfo::GetRegionMove() const {
return region_move; return region_move;
} }
u8 CharInfo::GetFacelineType() const { FacelineType CharInfo::GetFacelineType() const {
return faceline_type; return faceline_type;
} }
u8 CharInfo::GetFacelineColor() const { FacelineColor CharInfo::GetFacelineColor() const {
return faceline_color; return faceline_color;
} }
u8 CharInfo::GetFacelineWrinkle() const { FacelineWrinkle CharInfo::GetFacelineWrinkle() const {
return faceline_wrinkle; return faceline_wrinkle;
} }
u8 CharInfo::GetFacelineMake() const { FacelineMake CharInfo::GetFacelineMake() const {
return faceline_make; return faceline_make;
} }
u8 CharInfo::GetHairType() const { HairType CharInfo::GetHairType() const {
return hair_type; return hair_type;
} }
u8 CharInfo::GetHairColor() const { CommonColor CharInfo::GetHairColor() const {
return hair_color; return hair_color;
} }
u8 CharInfo::GetHairFlip() const { HairFlip CharInfo::GetHairFlip() const {
return hair_flip; return hair_flip;
} }
u8 CharInfo::GetEyeType() const { EyeType CharInfo::GetEyeType() const {
return eye_type; return eye_type;
} }
u8 CharInfo::GetEyeColor() const { CommonColor CharInfo::GetEyeColor() const {
return eye_color; return eye_color;
} }
@ -311,11 +311,11 @@ u8 CharInfo::GetEyeY() const {
return eye_y; return eye_y;
} }
u8 CharInfo::GetEyebrowType() const { EyebrowType CharInfo::GetEyebrowType() const {
return eyebrow_type; return eyebrow_type;
} }
u8 CharInfo::GetEyebrowColor() const { CommonColor CharInfo::GetEyebrowColor() const {
return eyebrow_color; return eyebrow_color;
} }
@ -339,7 +339,7 @@ u8 CharInfo::GetEyebrowY() const {
return eyebrow_y; return eyebrow_y;
} }
u8 CharInfo::GetNoseType() const { NoseType CharInfo::GetNoseType() const {
return nose_type; return nose_type;
} }
@ -351,11 +351,11 @@ u8 CharInfo::GetNoseY() const {
return nose_y; return nose_y;
} }
u8 CharInfo::GetMouthType() const { MouthType CharInfo::GetMouthType() const {
return mouth_type; return mouth_type;
} }
u8 CharInfo::GetMouthColor() const { CommonColor CharInfo::GetMouthColor() const {
return mouth_color; return mouth_color;
} }
@ -371,15 +371,15 @@ u8 CharInfo::GetMouthY() const {
return mouth_y; return mouth_y;
} }
u8 CharInfo::GetBeardColor() const { CommonColor CharInfo::GetBeardColor() const {
return beard_color; return beard_color;
} }
u8 CharInfo::GetBeardType() const { BeardType CharInfo::GetBeardType() const {
return beard_type; return beard_type;
} }
u8 CharInfo::GetMustacheType() const { MustacheType CharInfo::GetMustacheType() const {
return mustache_type; return mustache_type;
} }
@ -391,23 +391,23 @@ u8 CharInfo::GetMustacheY() const {
return mustache_y; return mustache_y;
} }
u8 CharInfo::GetGlassType() const { GlassType CharInfo::GetGlassType() const {
return glasses_type; return glass_type;
} }
u8 CharInfo::GetGlassColor() const { CommonColor CharInfo::GetGlassColor() const {
return glasses_color; return glass_color;
} }
u8 CharInfo::GetGlassScale() const { u8 CharInfo::GetGlassScale() const {
return glasses_scale; return glass_scale;
} }
u8 CharInfo::GetGlassY() const { u8 CharInfo::GetGlassY() const {
return glasses_y; return glass_y;
} }
u8 CharInfo::GetMoleType() const { MoleType CharInfo::GetMoleType() const {
return mole_type; return mole_type;
} }
@ -468,10 +468,10 @@ bool CharInfo::operator==(const CharInfo& info) {
is_identical &= mustache_type == info.GetMustacheType(); is_identical &= mustache_type == info.GetMustacheType();
is_identical &= mustache_scale == info.GetMustacheScale(); is_identical &= mustache_scale == info.GetMustacheScale();
is_identical &= mustache_y == info.GetMustacheY(); is_identical &= mustache_y == info.GetMustacheY();
is_identical &= glasses_type == info.GetGlassType(); is_identical &= glass_type == info.GetGlassType();
is_identical &= glasses_color == info.GetGlassColor(); is_identical &= glass_color == info.GetGlassColor();
is_identical &= glasses_scale == info.GetGlassScale(); is_identical &= glass_scale == info.GetGlassScale();
is_identical &= glasses_y == info.GetGlassY(); is_identical &= glass_y == info.GetGlassY();
is_identical &= mole_type == info.GetMoleType(); is_identical &= mole_type == info.GetMoleType();
is_identical &= mole_scale == info.GetMoleScale(); is_identical &= mole_scale == info.GetMoleScale();
is_identical &= mole_x == info.GetMoleX(); is_identical &= mole_x == info.GetMoleX();

View File

@ -17,52 +17,52 @@ public:
Common::UUID GetCreateId() const; Common::UUID GetCreateId() const;
Nickname GetNickname() const; Nickname GetNickname() const;
u8 GetFontRegion() const; FontRegion GetFontRegion() const;
u8 GetFavoriteColor() const; FavoriteColor GetFavoriteColor() const;
u8 GetGender() const; Gender GetGender() const;
u8 GetHeight() const; u8 GetHeight() const;
u8 GetBuild() const; u8 GetBuild() const;
u8 GetType() const; u8 GetType() const;
u8 GetRegionMove() const; u8 GetRegionMove() const;
u8 GetFacelineType() const; FacelineType GetFacelineType() const;
u8 GetFacelineColor() const; FacelineColor GetFacelineColor() const;
u8 GetFacelineWrinkle() const; FacelineWrinkle GetFacelineWrinkle() const;
u8 GetFacelineMake() const; FacelineMake GetFacelineMake() const;
u8 GetHairType() const; HairType GetHairType() const;
u8 GetHairColor() const; CommonColor GetHairColor() const;
u8 GetHairFlip() const; HairFlip GetHairFlip() const;
u8 GetEyeType() const; EyeType GetEyeType() const;
u8 GetEyeColor() const; CommonColor GetEyeColor() const;
u8 GetEyeScale() const; u8 GetEyeScale() const;
u8 GetEyeAspect() const; u8 GetEyeAspect() const;
u8 GetEyeRotate() const; u8 GetEyeRotate() const;
u8 GetEyeX() const; u8 GetEyeX() const;
u8 GetEyeY() const; u8 GetEyeY() const;
u8 GetEyebrowType() const; EyebrowType GetEyebrowType() const;
u8 GetEyebrowColor() const; CommonColor GetEyebrowColor() const;
u8 GetEyebrowScale() const; u8 GetEyebrowScale() const;
u8 GetEyebrowAspect() const; u8 GetEyebrowAspect() const;
u8 GetEyebrowRotate() const; u8 GetEyebrowRotate() const;
u8 GetEyebrowX() const; u8 GetEyebrowX() const;
u8 GetEyebrowY() const; u8 GetEyebrowY() const;
u8 GetNoseType() const; NoseType GetNoseType() const;
u8 GetNoseScale() const; u8 GetNoseScale() const;
u8 GetNoseY() const; u8 GetNoseY() const;
u8 GetMouthType() const; MouthType GetMouthType() const;
u8 GetMouthColor() const; CommonColor GetMouthColor() const;
u8 GetMouthScale() const; u8 GetMouthScale() const;
u8 GetMouthAspect() const; u8 GetMouthAspect() const;
u8 GetMouthY() const; u8 GetMouthY() const;
u8 GetBeardColor() const; CommonColor GetBeardColor() const;
u8 GetBeardType() const; BeardType GetBeardType() const;
u8 GetMustacheType() const; MustacheType GetMustacheType() const;
u8 GetMustacheScale() const; u8 GetMustacheScale() const;
u8 GetMustacheY() const; u8 GetMustacheY() const;
u8 GetGlassType() const; GlassType GetGlassType() const;
u8 GetGlassColor() const; CommonColor GetGlassColor() const;
u8 GetGlassScale() const; u8 GetGlassScale() const;
u8 GetGlassY() const; u8 GetGlassY() const;
u8 GetMoleType() const; MoleType GetMoleType() const;
u8 GetMoleScale() const; u8 GetMoleScale() const;
u8 GetMoleX() const; u8 GetMoleX() const;
u8 GetMoleY() const; u8 GetMoleY() const;
@ -73,52 +73,52 @@ private:
Common::UUID create_id; Common::UUID create_id;
Nickname name; Nickname name;
u16 null_terminator; u16 null_terminator;
u8 font_region; FontRegion font_region;
u8 favorite_color; FavoriteColor favorite_color;
u8 gender; Gender gender;
u8 height; u8 height;
u8 build; u8 build;
u8 type; u8 type;
u8 region_move; u8 region_move;
u8 faceline_type; FacelineType faceline_type;
u8 faceline_color; FacelineColor faceline_color;
u8 faceline_wrinkle; FacelineWrinkle faceline_wrinkle;
u8 faceline_make; FacelineMake faceline_make;
u8 hair_type; HairType hair_type;
u8 hair_color; CommonColor hair_color;
u8 hair_flip; HairFlip hair_flip;
u8 eye_type; EyeType eye_type;
u8 eye_color; CommonColor eye_color;
u8 eye_scale; u8 eye_scale;
u8 eye_aspect; u8 eye_aspect;
u8 eye_rotate; u8 eye_rotate;
u8 eye_x; u8 eye_x;
u8 eye_y; u8 eye_y;
u8 eyebrow_type; EyebrowType eyebrow_type;
u8 eyebrow_color; CommonColor eyebrow_color;
u8 eyebrow_scale; u8 eyebrow_scale;
u8 eyebrow_aspect; u8 eyebrow_aspect;
u8 eyebrow_rotate; u8 eyebrow_rotate;
u8 eyebrow_x; u8 eyebrow_x;
u8 eyebrow_y; u8 eyebrow_y;
u8 nose_type; NoseType nose_type;
u8 nose_scale; u8 nose_scale;
u8 nose_y; u8 nose_y;
u8 mouth_type; MouthType mouth_type;
u8 mouth_color; CommonColor mouth_color;
u8 mouth_scale; u8 mouth_scale;
u8 mouth_aspect; u8 mouth_aspect;
u8 mouth_y; u8 mouth_y;
u8 beard_color; CommonColor beard_color;
u8 beard_type; BeardType beard_type;
u8 mustache_type; MustacheType mustache_type;
u8 mustache_scale; u8 mustache_scale;
u8 mustache_y; u8 mustache_y;
u8 glasses_type; GlassType glass_type;
u8 glasses_color; CommonColor glass_color;
u8 glasses_scale; u8 glass_scale;
u8 glasses_y; u8 glass_y;
u8 mole_type; MoleType mole_type;
u8 mole_scale; u8 mole_scale;
u8 mole_x; u8 mole_x;
u8 mole_y; u8 mole_y;

View File

@ -1,6 +1,7 @@
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
#include "core/hle/service/mii/mii_util.h" #include "core/hle/service/mii/mii_util.h"
#include "core/hle/service/mii/types/core_data.h" #include "core/hle/service/mii/types/core_data.h"
#include "core/hle/service/mii/types/raw_data.h" #include "core/hle/service/mii/types/raw_data.h"
@ -14,17 +15,9 @@ void CoreData::SetDefault() {
void CoreData::BuildRandom(Age age, Gender gender, Race race) { void CoreData::BuildRandom(Age age, Gender gender, Race race) {
if (gender == Gender::All) { if (gender == Gender::All) {
gender = MiiUtil::GetRandomValue<Gender>(Gender::Maximum); gender = MiiUtil::GetRandomValue(Gender::Max);
} }
data.gender.Assign(gender);
data.favorite_color.Assign(MiiUtil::GetRandomValue<u8>(11));
data.region_move.Assign(0);
data.font_region.Assign(FontRegion::Standard);
data.type.Assign(0);
data.height.Assign(64);
data.build.Assign(64);
if (age == Age::All) { if (age == Age::All) {
const auto random{MiiUtil::GetRandomValue<int>(10)}; const auto random{MiiUtil::GetRandomValue<int>(10)};
if (random >= 8) { if (random >= 8) {
@ -47,6 +40,14 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
} }
} }
SetGender(gender);
SetFavoriteColor(MiiUtil::GetRandomValue(FavoriteColor::Max));
SetRegionMove(0);
SetFontRegion(FontRegion::Standard);
SetType(0);
SetHeight(64);
SetBuild(64);
u32 axis_y{}; u32 axis_y{};
if (gender == Gender::Female && age == Age::Young) { if (gender == Gender::Female && age == Age::Young) {
axis_y = MiiUtil::GetRandomValue<u32>(3); axis_y = MiiUtil::GetRandomValue<u32>(3);
@ -85,10 +86,10 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
data.hair_type.Assign( data.hair_type.Assign(
hair_type_info.values[MiiUtil::GetRandomValue<std::size_t>(hair_type_info.values_count)]); hair_type_info.values[MiiUtil::GetRandomValue<std::size_t>(hair_type_info.values_count)]);
data.hair_color.Assign(RawData::GetHairColorFromVer3( SetHairColor(RawData::GetHairColorFromVer3(
hair_color_info hair_color_info
.values[MiiUtil::GetRandomValue<std::size_t>(hair_color_info.values_count)])); .values[MiiUtil::GetRandomValue<std::size_t>(hair_color_info.values_count)]));
data.hair_flip.Assign(MiiUtil::GetRandomValue<HairFlip>(HairFlip::Maximum)); SetHairFlip(MiiUtil::GetRandomValue(HairFlip::Max));
data.eye_type.Assign( data.eye_type.Assign(
eye_type_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_type_info.values_count)]); eye_type_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_type_info.values_count)]);
@ -98,13 +99,13 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
const auto eye_rotate_offset{32 - RawData::EyeRotateLookup[eye_rotate_1] + eye_rotate_2}; const auto eye_rotate_offset{32 - RawData::EyeRotateLookup[eye_rotate_1] + eye_rotate_2};
const auto eye_rotate{32 - RawData::EyeRotateLookup[data.eye_type]}; const auto eye_rotate{32 - RawData::EyeRotateLookup[data.eye_type]};
data.eye_color.Assign(RawData::GetEyeColorFromVer3( SetEyeColor(RawData::GetEyeColorFromVer3(
eye_color_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_color_info.values_count)])); eye_color_info.values[MiiUtil::GetRandomValue<std::size_t>(eye_color_info.values_count)]));
data.eye_scale.Assign(4); SetEyeScale(4);
data.eye_aspect.Assign(3); SetEyeAspect(3);
data.eye_rotate.Assign(eye_rotate_offset - eye_rotate); SetEyeRotate(static_cast<u8>(eye_rotate_offset - eye_rotate));
data.eye_x.Assign(2); SetEyeX(2);
data.eye_y.Assign(axis_y + 12); SetEyeY(static_cast<u8>(axis_y + 12));
data.eyebrow_type.Assign( data.eyebrow_type.Assign(
eyebrow_type_info eyebrow_type_info
@ -116,57 +117,53 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
const auto eyebrow_rotate{ const auto eyebrow_rotate{
32 - RawData::EyebrowRotateLookup[static_cast<std::size_t>(data.eyebrow_type.Value())]}; 32 - RawData::EyebrowRotateLookup[static_cast<std::size_t>(data.eyebrow_type.Value())]};
data.eyebrow_color.Assign(data.hair_color); SetEyebrowColor(GetHairColor());
data.eyebrow_scale.Assign(4); SetEyebrowScale(4);
data.eyebrow_aspect.Assign(3); SetEyebrowAspect(3);
data.eyebrow_rotate.Assign(eyebrow_rotate_offset - eyebrow_rotate); SetEyebrowRotate(static_cast<u8>(eyebrow_rotate_offset - eyebrow_rotate));
data.eyebrow_x.Assign(2); SetEyebrowX(2);
data.eyebrow_y.Assign(axis_y + eyebrow_y); SetEyebrowY(static_cast<u8>(axis_y + eyebrow_y));
const auto nose_scale{gender == Gender::Female ? 3 : 4};
data.nose_type.Assign( data.nose_type.Assign(
nose_type_info.values[MiiUtil::GetRandomValue<std::size_t>(nose_type_info.values_count)]); nose_type_info.values[MiiUtil::GetRandomValue<std::size_t>(nose_type_info.values_count)]);
data.nose_scale.Assign(nose_scale); SetNoseScale(gender == Gender::Female ? 3 : 4);
data.nose_y.Assign(axis_y + 9); SetNoseY(static_cast<u8>(axis_y + 9));
const auto mouth_color{gender == Gender::Female ? MiiUtil::GetRandomValue<int>(4) : 0}; const auto mouth_color{gender == Gender::Female ? MiiUtil::GetRandomValue<int>(4) : 0};
data.mouth_type.Assign( data.mouth_type.Assign(
mouth_type_info.values[MiiUtil::GetRandomValue<std::size_t>(mouth_type_info.values_count)]); mouth_type_info.values[MiiUtil::GetRandomValue<std::size_t>(mouth_type_info.values_count)]);
data.mouth_color.Assign(RawData::GetMouthColorFromVer3(mouth_color)); SetMouthColor(RawData::GetMouthColorFromVer3(mouth_color));
data.mouth_scale.Assign(4); SetMouthScale(4);
data.mouth_aspect.Assign(3); SetMouthAspect(3);
data.mouth_y.Assign(axis_y + 13); SetMouthY(static_cast<u8>(axis_y + 13));
data.beard_color.Assign(data.hair_color); SetBeardColor(GetHairColor());
data.mustache_scale.Assign(4); SetMustacheScale(4);
if (gender == Gender::Male && age != Age::Young && MiiUtil::GetRandomValue<int>(10) < 2) { if (gender == Gender::Male && age != Age::Young && MiiUtil::GetRandomValue<int>(10) < 2) {
const auto mustache_and_beard_flag{ const auto mustache_and_beard_flag{MiiUtil::GetRandomValue(BeardAndMustacheFlag::All)};
MiiUtil::GetRandomValue<BeardAndMustacheFlag>(BeardAndMustacheFlag::All)};
auto beard_type{BeardType::None}; auto beard_type{BeardType::None};
auto mustache_type{MustacheType::None}; auto mustache_type{MustacheType::None};
if ((mustache_and_beard_flag & BeardAndMustacheFlag::Beard) == if ((mustache_and_beard_flag & BeardAndMustacheFlag::Beard) ==
BeardAndMustacheFlag::Beard) { BeardAndMustacheFlag::Beard) {
beard_type = MiiUtil::GetRandomValue<BeardType>(BeardType::Beard1, BeardType::Beard5); beard_type = MiiUtil::GetRandomValue(BeardType::Min, BeardType::Max);
} }
if ((mustache_and_beard_flag & BeardAndMustacheFlag::Mustache) == if ((mustache_and_beard_flag & BeardAndMustacheFlag::Mustache) ==
BeardAndMustacheFlag::Mustache) { BeardAndMustacheFlag::Mustache) {
mustache_type = MiiUtil::GetRandomValue<MustacheType>(MustacheType::Mustache1, mustache_type = MiiUtil::GetRandomValue(MustacheType::Min, MustacheType::Max);
MustacheType::Mustache5);
} }
data.mustache_type.Assign(mustache_type); SetMustacheType(mustache_type);
data.beard_type.Assign(beard_type); SetBeardType(beard_type);
data.mustache_y.Assign(10); SetMustacheY(10);
} else { } else {
data.mustache_type.Assign(MustacheType::None); SetMustacheType(MustacheType::None);
data.beard_type.Assign(BeardType::None); SetBeardType(BeardType::None);
data.mustache_y.Assign(axis_y + 10); SetMustacheY(static_cast<u8>(axis_y + 10));
} }
const auto glasses_type_start{MiiUtil::GetRandomValue<std::size_t>(100)}; const auto glasses_type_start{MiiUtil::GetRandomValue<std::size_t>(100)};
@ -178,15 +175,14 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
} }
} }
data.glasses_type.Assign(glasses_type); SetGlassType(static_cast<GlassType>(glasses_type));
data.glasses_color.Assign(RawData::GetGlassColorFromVer3(0)); SetGlassColor(RawData::GetGlassColorFromVer3(0));
data.glasses_scale.Assign(4); SetGlassScale(4);
data.glasses_y.Assign(axis_y + 10);
data.mole_type.Assign(0); SetMoleType(MoleType::None);
data.mole_scale.Assign(4); SetMoleScale(4);
data.mole_x.Assign(2); SetMoleX(2);
data.mole_y.Assign(20); SetMoleY(20);
} }
u32 CoreData::IsValid() const { u32 CoreData::IsValid() const {
@ -195,15 +191,15 @@ u32 CoreData::IsValid() const {
} }
void CoreData::SetFontRegion(FontRegion value) { void CoreData::SetFontRegion(FontRegion value) {
data.font_region.Assign(value); data.font_region.Assign(static_cast<u32>(value));
} }
void CoreData::SetFavoriteColor(u8 value) { void CoreData::SetFavoriteColor(FavoriteColor value) {
data.favorite_color.Assign(value); data.favorite_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetGender(Gender value) { void CoreData::SetGender(Gender value) {
data.gender.Assign(value); data.gender.Assign(static_cast<u32>(value));
} }
void CoreData::SetHeight(u8 value) { void CoreData::SetHeight(u8 value) {
@ -222,40 +218,40 @@ void CoreData::SetRegionMove(u8 value) {
data.region_move.Assign(value); data.region_move.Assign(value);
} }
void CoreData::SetFacelineType(u8 value) { void CoreData::SetFacelineType(FacelineType value) {
data.faceline_type.Assign(value); data.faceline_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetFacelineColor(u8 value) { void CoreData::SetFacelineColor(FacelineColor value) {
data.faceline_color.Assign(value); data.faceline_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetFacelineWrinkle(u8 value) { void CoreData::SetFacelineWrinkle(FacelineWrinkle value) {
data.faceline_wrinkle.Assign(value); data.faceline_wrinkle.Assign(static_cast<u32>(value));
} }
void CoreData::SetFacelineMake(u8 value) { void CoreData::SetFacelineMake(FacelineMake value) {
data.faceline_makeup.Assign(value); data.faceline_makeup.Assign(static_cast<u32>(value));
} }
void CoreData::SetHairType(u8 value) { void CoreData::SetHairType(HairType value) {
data.hair_type.Assign(value); data.hair_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetHairColor(u8 value) { void CoreData::SetHairColor(CommonColor value) {
data.hair_color.Assign(value); data.hair_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetHairFlip(HairFlip value) { void CoreData::SetHairFlip(HairFlip value) {
data.hair_flip.Assign(value); data.hair_flip.Assign(static_cast<u32>(value));
} }
void CoreData::SetEyeType(u8 value) { void CoreData::SetEyeType(EyeType value) {
data.eye_type.Assign(value); data.eye_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetEyeColor(u8 value) { void CoreData::SetEyeColor(CommonColor value) {
data.eye_color.Assign(value); data.eye_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetEyeScale(u8 value) { void CoreData::SetEyeScale(u8 value) {
@ -278,12 +274,12 @@ void CoreData::SetEyeY(u8 value) {
data.eye_y.Assign(value); data.eye_y.Assign(value);
} }
void CoreData::SetEyebrowType(u8 value) { void CoreData::SetEyebrowType(EyebrowType value) {
data.eyebrow_type.Assign(value); data.eyebrow_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetEyebrowColor(u8 value) { void CoreData::SetEyebrowColor(CommonColor value) {
data.eyebrow_color.Assign(value); data.eyebrow_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetEyebrowScale(u8 value) { void CoreData::SetEyebrowScale(u8 value) {
@ -306,8 +302,8 @@ void CoreData::SetEyebrowY(u8 value) {
data.eyebrow_y.Assign(value); data.eyebrow_y.Assign(value);
} }
void CoreData::SetNoseType(u8 value) { void CoreData::SetNoseType(NoseType value) {
data.nose_type.Assign(value); data.nose_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetNoseScale(u8 value) { void CoreData::SetNoseScale(u8 value) {
@ -322,8 +318,8 @@ void CoreData::SetMouthType(u8 value) {
data.mouth_type.Assign(value); data.mouth_type.Assign(value);
} }
void CoreData::SetMouthColor(u8 value) { void CoreData::SetMouthColor(CommonColor value) {
data.mouth_color.Assign(value); data.mouth_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetMouthScale(u8 value) { void CoreData::SetMouthScale(u8 value) {
@ -338,16 +334,16 @@ void CoreData::SetMouthY(u8 value) {
data.mouth_y.Assign(value); data.mouth_y.Assign(value);
} }
void CoreData::SetBeardColor(u8 value) { void CoreData::SetBeardColor(CommonColor value) {
data.beard_color.Assign(value); data.beard_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetBeardType(BeardType value) { void CoreData::SetBeardType(BeardType value) {
data.beard_type.Assign(value); data.beard_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetMustacheType(MustacheType value) { void CoreData::SetMustacheType(MustacheType value) {
data.mustache_type.Assign(value); data.mustache_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetMustacheScale(u8 value) { void CoreData::SetMustacheScale(u8 value) {
@ -358,12 +354,12 @@ void CoreData::SetMustacheY(u8 value) {
data.mustache_y.Assign(value); data.mustache_y.Assign(value);
} }
void CoreData::SetGlassType(u8 value) { void CoreData::SetGlassType(GlassType value) {
data.glasses_type.Assign(value); data.glasses_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetGlassColor(u8 value) { void CoreData::SetGlassColor(CommonColor value) {
data.glasses_color.Assign(value); data.glasses_color.Assign(static_cast<u32>(value));
} }
void CoreData::SetGlassScale(u8 value) { void CoreData::SetGlassScale(u8 value) {
@ -374,8 +370,8 @@ void CoreData::SetGlassY(u8 value) {
data.glasses_y.Assign(value); data.glasses_y.Assign(value);
} }
void CoreData::SetMoleType(u8 value) { void CoreData::SetMoleType(MoleType value) {
data.mole_type.Assign(value); data.mole_type.Assign(static_cast<u32>(value));
} }
void CoreData::SetMoleScale(u8 value) { void CoreData::SetMoleScale(u8 value) {
@ -394,16 +390,16 @@ void CoreData::SetNickname(Nickname nickname) {
name = nickname; name = nickname;
} }
u8 CoreData::GetFontRegion() const { FontRegion CoreData::GetFontRegion() const {
return static_cast<u8>(data.font_region.Value()); return static_cast<FontRegion>(data.font_region.Value());
} }
u8 CoreData::GetFavoriteColor() const { FavoriteColor CoreData::GetFavoriteColor() const {
return static_cast<u8>(data.favorite_color.Value()); return static_cast<FavoriteColor>(data.favorite_color.Value());
} }
u8 CoreData::GetGender() const { Gender CoreData::GetGender() const {
return static_cast<u8>(data.gender.Value()); return static_cast<Gender>(data.gender.Value());
} }
u8 CoreData::GetHeight() const { u8 CoreData::GetHeight() const {
@ -422,40 +418,40 @@ u8 CoreData::GetRegionMove() const {
return static_cast<u8>(data.region_move.Value()); return static_cast<u8>(data.region_move.Value());
} }
u8 CoreData::GetFacelineType() const { FacelineType CoreData::GetFacelineType() const {
return static_cast<u8>(data.faceline_type.Value()); return static_cast<FacelineType>(data.faceline_type.Value());
} }
u8 CoreData::GetFacelineColor() const { FacelineColor CoreData::GetFacelineColor() const {
return static_cast<u8>(data.faceline_color.Value()); return static_cast<FacelineColor>(data.faceline_color.Value());
} }
u8 CoreData::GetFacelineWrinkle() const { FacelineWrinkle CoreData::GetFacelineWrinkle() const {
return static_cast<u8>(data.faceline_wrinkle.Value()); return static_cast<FacelineWrinkle>(data.faceline_wrinkle.Value());
} }
u8 CoreData::GetFacelineMake() const { FacelineMake CoreData::GetFacelineMake() const {
return static_cast<u8>(data.faceline_makeup.Value()); return static_cast<FacelineMake>(data.faceline_makeup.Value());
} }
u8 CoreData::GetHairType() const { HairType CoreData::GetHairType() const {
return static_cast<u8>(data.hair_type.Value()); return static_cast<HairType>(data.hair_type.Value());
} }
u8 CoreData::GetHairColor() const { CommonColor CoreData::GetHairColor() const {
return static_cast<u8>(data.hair_color.Value()); return static_cast<CommonColor>(data.hair_color.Value());
} }
u8 CoreData::GetHairFlip() const { HairFlip CoreData::GetHairFlip() const {
return static_cast<u8>(data.hair_flip.Value()); return static_cast<HairFlip>(data.hair_flip.Value());
} }
u8 CoreData::GetEyeType() const { EyeType CoreData::GetEyeType() const {
return static_cast<u8>(data.eye_type.Value()); return static_cast<EyeType>(data.eye_type.Value());
} }
u8 CoreData::GetEyeColor() const { CommonColor CoreData::GetEyeColor() const {
return static_cast<u8>(data.eye_color.Value()); return static_cast<CommonColor>(data.eye_color.Value());
} }
u8 CoreData::GetEyeScale() const { u8 CoreData::GetEyeScale() const {
@ -478,12 +474,12 @@ u8 CoreData::GetEyeY() const {
return static_cast<u8>(data.eye_y.Value()); return static_cast<u8>(data.eye_y.Value());
} }
u8 CoreData::GetEyebrowType() const { EyebrowType CoreData::GetEyebrowType() const {
return static_cast<u8>(data.eyebrow_type.Value()); return static_cast<EyebrowType>(data.eyebrow_type.Value());
} }
u8 CoreData::GetEyebrowColor() const { CommonColor CoreData::GetEyebrowColor() const {
return static_cast<u8>(data.eyebrow_color.Value()); return static_cast<CommonColor>(data.eyebrow_color.Value());
} }
u8 CoreData::GetEyebrowScale() const { u8 CoreData::GetEyebrowScale() const {
@ -506,8 +502,8 @@ u8 CoreData::GetEyebrowY() const {
return static_cast<u8>(data.eyebrow_y.Value()); return static_cast<u8>(data.eyebrow_y.Value());
} }
u8 CoreData::GetNoseType() const { NoseType CoreData::GetNoseType() const {
return static_cast<u8>(data.nose_type.Value()); return static_cast<NoseType>(data.nose_type.Value());
} }
u8 CoreData::GetNoseScale() const { u8 CoreData::GetNoseScale() const {
@ -518,12 +514,12 @@ u8 CoreData::GetNoseY() const {
return static_cast<u8>(data.nose_y.Value()); return static_cast<u8>(data.nose_y.Value());
} }
u8 CoreData::GetMouthType() const { MouthType CoreData::GetMouthType() const {
return static_cast<u8>(data.mouth_type.Value()); return static_cast<MouthType>(data.mouth_type.Value());
} }
u8 CoreData::GetMouthColor() const { CommonColor CoreData::GetMouthColor() const {
return static_cast<u8>(data.mouth_color.Value()); return static_cast<CommonColor>(data.mouth_color.Value());
} }
u8 CoreData::GetMouthScale() const { u8 CoreData::GetMouthScale() const {
@ -538,16 +534,16 @@ u8 CoreData::GetMouthY() const {
return static_cast<u8>(data.mouth_y.Value()); return static_cast<u8>(data.mouth_y.Value());
} }
u8 CoreData::GetBeardColor() const { CommonColor CoreData::GetBeardColor() const {
return static_cast<u8>(data.beard_color.Value()); return static_cast<CommonColor>(data.beard_color.Value());
} }
u8 CoreData::GetBeardType() const { BeardType CoreData::GetBeardType() const {
return static_cast<u8>(data.beard_type.Value()); return static_cast<BeardType>(data.beard_type.Value());
} }
u8 CoreData::GetMustacheType() const { MustacheType CoreData::GetMustacheType() const {
return static_cast<u8>(data.mustache_type.Value()); return static_cast<MustacheType>(data.mustache_type.Value());
} }
u8 CoreData::GetMustacheScale() const { u8 CoreData::GetMustacheScale() const {
@ -558,12 +554,12 @@ u8 CoreData::GetMustacheY() const {
return static_cast<u8>(data.mustache_y.Value()); return static_cast<u8>(data.mustache_y.Value());
} }
u8 CoreData::GetGlassType() const { GlassType CoreData::GetGlassType() const {
return static_cast<u8>(data.glasses_type.Value()); return static_cast<GlassType>(data.glasses_type.Value());
} }
u8 CoreData::GetGlassColor() const { CommonColor CoreData::GetGlassColor() const {
return static_cast<u8>(data.glasses_color.Value()); return static_cast<CommonColor>(data.glasses_color.Value());
} }
u8 CoreData::GetGlassScale() const { u8 CoreData::GetGlassScale() const {
@ -574,8 +570,8 @@ u8 CoreData::GetGlassY() const {
return static_cast<u8>(data.glasses_y.Value()); return static_cast<u8>(data.glasses_y.Value());
} }
u8 CoreData::GetMoleType() const { MoleType CoreData::GetMoleType() const {
return static_cast<u8>(data.mole_type.Value()); return static_cast<MoleType>(data.mole_type.Value());
} }
u8 CoreData::GetMoleScale() const { u8 CoreData::GetMoleScale() const {
@ -599,7 +595,7 @@ Nickname CoreData::GetDefaultNickname() const {
} }
Nickname CoreData::GetInvalidNickname() const { Nickname CoreData::GetInvalidNickname() const {
return {u'?', u'?', u' ', u'?'}; return {u'?', u'?', u'?'};
} }
} // namespace Service::Mii } // namespace Service::Mii

View File

@ -15,7 +15,7 @@ struct StoreDataBitFields {
BitField<8, 7, u32> height; BitField<8, 7, u32> height;
BitField<15, 1, u32> mole_type; BitField<15, 1, u32> mole_type;
BitField<16, 7, u32> build; BitField<16, 7, u32> build;
BitField<23, 1, HairFlip> hair_flip; BitField<23, 1, u32> hair_flip;
BitField<24, 7, u32> hair_color; BitField<24, 7, u32> hair_color;
BitField<31, 1, u32> type; BitField<31, 1, u32> type;
}; };
@ -24,7 +24,7 @@ struct StoreDataBitFields {
u32 word_1{}; u32 word_1{};
BitField<0, 7, u32> eye_color; BitField<0, 7, u32> eye_color;
BitField<7, 1, Gender> gender; BitField<7, 1, u32> gender;
BitField<8, 7, u32> eyebrow_color; BitField<8, 7, u32> eyebrow_color;
BitField<16, 7, u32> mouth_color; BitField<16, 7, u32> mouth_color;
BitField<24, 7, u32> beard_color; BitField<24, 7, u32> beard_color;
@ -37,7 +37,7 @@ struct StoreDataBitFields {
BitField<8, 6, u32> eye_type; BitField<8, 6, u32> eye_type;
BitField<14, 2, u32> region_move; BitField<14, 2, u32> region_move;
BitField<16, 6, u32> mouth_type; BitField<16, 6, u32> mouth_type;
BitField<22, 2, FontRegion> font_region; BitField<22, 2, u32> font_region;
BitField<24, 5, u32> eye_y; BitField<24, 5, u32> eye_y;
BitField<29, 3, u32> glasses_scale; BitField<29, 3, u32> glasses_scale;
}; };
@ -46,9 +46,9 @@ struct StoreDataBitFields {
u32 word_3{}; u32 word_3{};
BitField<0, 5, u32> eyebrow_type; BitField<0, 5, u32> eyebrow_type;
BitField<5, 3, MustacheType> mustache_type; BitField<5, 3, u32> mustache_type;
BitField<8, 5, u32> nose_type; BitField<8, 5, u32> nose_type;
BitField<13, 3, BeardType> beard_type; BitField<13, 3, u32> beard_type;
BitField<16, 5, u32> nose_y; BitField<16, 5, u32> nose_y;
BitField<21, 3, u32> mouth_aspect; BitField<21, 3, u32> mouth_aspect;
BitField<24, 5, u32> mouth_y; BitField<24, 5, u32> mouth_y;
@ -104,102 +104,102 @@ public:
u32 IsValid() const; u32 IsValid() const;
void SetFontRegion(FontRegion value); void SetFontRegion(FontRegion value);
void SetFavoriteColor(u8 value); void SetFavoriteColor(FavoriteColor value);
void SetGender(Gender value); void SetGender(Gender value);
void SetHeight(u8 value); void SetHeight(u8 value);
void SetBuild(u8 value); void SetBuild(u8 value);
void SetType(u8 value); void SetType(u8 value);
void SetRegionMove(u8 value); void SetRegionMove(u8 value);
void SetFacelineType(u8 value); void SetFacelineType(FacelineType value);
void SetFacelineColor(u8 value); void SetFacelineColor(FacelineColor value);
void SetFacelineWrinkle(u8 value); void SetFacelineWrinkle(FacelineWrinkle value);
void SetFacelineMake(u8 value); void SetFacelineMake(FacelineMake value);
void SetHairType(u8 value); void SetHairType(HairType value);
void SetHairColor(u8 value); void SetHairColor(CommonColor value);
void SetHairFlip(HairFlip value); void SetHairFlip(HairFlip value);
void SetEyeType(u8 value); void SetEyeType(EyeType value);
void SetEyeColor(u8 value); void SetEyeColor(CommonColor value);
void SetEyeScale(u8 value); void SetEyeScale(u8 value);
void SetEyeAspect(u8 value); void SetEyeAspect(u8 value);
void SetEyeRotate(u8 value); void SetEyeRotate(u8 value);
void SetEyeX(u8 value); void SetEyeX(u8 value);
void SetEyeY(u8 value); void SetEyeY(u8 value);
void SetEyebrowType(u8 value); void SetEyebrowType(EyebrowType value);
void SetEyebrowColor(u8 value); void SetEyebrowColor(CommonColor value);
void SetEyebrowScale(u8 value); void SetEyebrowScale(u8 value);
void SetEyebrowAspect(u8 value); void SetEyebrowAspect(u8 value);
void SetEyebrowRotate(u8 value); void SetEyebrowRotate(u8 value);
void SetEyebrowX(u8 value); void SetEyebrowX(u8 value);
void SetEyebrowY(u8 value); void SetEyebrowY(u8 value);
void SetNoseType(u8 value); void SetNoseType(NoseType value);
void SetNoseScale(u8 value); void SetNoseScale(u8 value);
void SetNoseY(u8 value); void SetNoseY(u8 value);
void SetMouthType(u8 value); void SetMouthType(u8 value);
void SetMouthColor(u8 value); void SetMouthColor(CommonColor value);
void SetMouthScale(u8 value); void SetMouthScale(u8 value);
void SetMouthAspect(u8 value); void SetMouthAspect(u8 value);
void SetMouthY(u8 value); void SetMouthY(u8 value);
void SetBeardColor(u8 value); void SetBeardColor(CommonColor value);
void SetBeardType(BeardType value); void SetBeardType(BeardType value);
void SetMustacheType(MustacheType value); void SetMustacheType(MustacheType value);
void SetMustacheScale(u8 value); void SetMustacheScale(u8 value);
void SetMustacheY(u8 value); void SetMustacheY(u8 value);
void SetGlassType(u8 value); void SetGlassType(GlassType value);
void SetGlassColor(u8 value); void SetGlassColor(CommonColor value);
void SetGlassScale(u8 value); void SetGlassScale(u8 value);
void SetGlassY(u8 value); void SetGlassY(u8 value);
void SetMoleType(u8 value); void SetMoleType(MoleType value);
void SetMoleScale(u8 value); void SetMoleScale(u8 value);
void SetMoleX(u8 value); void SetMoleX(u8 value);
void SetMoleY(u8 value); void SetMoleY(u8 value);
void SetNickname(Nickname nickname); void SetNickname(Nickname nickname);
u8 GetFontRegion() const; FontRegion GetFontRegion() const;
u8 GetFavoriteColor() const; FavoriteColor GetFavoriteColor() const;
u8 GetGender() const; Gender GetGender() const;
u8 GetHeight() const; u8 GetHeight() const;
u8 GetBuild() const; u8 GetBuild() const;
u8 GetType() const; u8 GetType() const;
u8 GetRegionMove() const; u8 GetRegionMove() const;
u8 GetFacelineType() const; FacelineType GetFacelineType() const;
u8 GetFacelineColor() const; FacelineColor GetFacelineColor() const;
u8 GetFacelineWrinkle() const; FacelineWrinkle GetFacelineWrinkle() const;
u8 GetFacelineMake() const; FacelineMake GetFacelineMake() const;
u8 GetHairType() const; HairType GetHairType() const;
u8 GetHairColor() const; CommonColor GetHairColor() const;
u8 GetHairFlip() const; HairFlip GetHairFlip() const;
u8 GetEyeType() const; EyeType GetEyeType() const;
u8 GetEyeColor() const; CommonColor GetEyeColor() const;
u8 GetEyeScale() const; u8 GetEyeScale() const;
u8 GetEyeAspect() const; u8 GetEyeAspect() const;
u8 GetEyeRotate() const; u8 GetEyeRotate() const;
u8 GetEyeX() const; u8 GetEyeX() const;
u8 GetEyeY() const; u8 GetEyeY() const;
u8 GetEyebrowType() const; EyebrowType GetEyebrowType() const;
u8 GetEyebrowColor() const; CommonColor GetEyebrowColor() const;
u8 GetEyebrowScale() const; u8 GetEyebrowScale() const;
u8 GetEyebrowAspect() const; u8 GetEyebrowAspect() const;
u8 GetEyebrowRotate() const; u8 GetEyebrowRotate() const;
u8 GetEyebrowX() const; u8 GetEyebrowX() const;
u8 GetEyebrowY() const; u8 GetEyebrowY() const;
u8 GetNoseType() const; NoseType GetNoseType() const;
u8 GetNoseScale() const; u8 GetNoseScale() const;
u8 GetNoseY() const; u8 GetNoseY() const;
u8 GetMouthType() const; MouthType GetMouthType() const;
u8 GetMouthColor() const; CommonColor GetMouthColor() const;
u8 GetMouthScale() const; u8 GetMouthScale() const;
u8 GetMouthAspect() const; u8 GetMouthAspect() const;
u8 GetMouthY() const; u8 GetMouthY() const;
u8 GetBeardColor() const; CommonColor GetBeardColor() const;
u8 GetBeardType() const; BeardType GetBeardType() const;
u8 GetMustacheType() const; MustacheType GetMustacheType() const;
u8 GetMustacheScale() const; u8 GetMustacheScale() const;
u8 GetMustacheY() const; u8 GetMustacheY() const;
u8 GetGlassType() const; GlassType GetGlassType() const;
u8 GetGlassColor() const; CommonColor GetGlassColor() const;
u8 GetGlassScale() const; u8 GetGlassScale() const;
u8 GetGlassY() const; u8 GetGlassY() const;
u8 GetMoleType() const; MoleType GetMoleType() const;
u8 GetMoleScale() const; u8 GetMoleScale() const;
u8 GetMoleX() const; u8 GetMoleX() const;
u8 GetMoleY() const; u8 GetMoleY() const;
@ -207,6 +207,7 @@ public:
Nickname GetDefaultNickname() const; Nickname GetDefaultNickname() const;
Nickname GetInvalidNickname() const; Nickname GetInvalidNickname() const;
private:
StoreDataBitFields data{}; StoreDataBitFields data{};
Nickname name{}; Nickname name{};
}; };

File diff suppressed because it is too large Load Diff

View File

@ -15,9 +15,9 @@ struct RandomMiiValues {
static_assert(sizeof(RandomMiiValues) == 0xbc, "RandomMiiValues has incorrect size."); static_assert(sizeof(RandomMiiValues) == 0xbc, "RandomMiiValues has incorrect size.");
struct RandomMiiData4 { struct RandomMiiData4 {
Gender gender{}; u32 gender{};
Age age{}; u32 age{};
Race race{}; u32 race{};
u32 values_count{}; u32 values_count{};
std::array<u32, 47> values{}; std::array<u32, 47> values{};
}; };
@ -64,10 +64,10 @@ u8 FromVer3GetMouthlineColor(u8 color);
u8 FromVer3GetGlassColor(u8 color); u8 FromVer3GetGlassColor(u8 color);
u8 FromVer3GetGlassType(u8 type); u8 FromVer3GetGlassType(u8 type);
u8 GetFacelineColorFromVer3(u8 color); FacelineColor GetFacelineColorFromVer3(u32 color);
u8 GetHairColorFromVer3(u32 color); CommonColor GetHairColorFromVer3(u32 color);
u8 GetEyeColorFromVer3(u32 color); CommonColor GetEyeColorFromVer3(u32 color);
u8 GetMouthColorFromVer3(u32 color); CommonColor GetMouthColorFromVer3(u32 color);
u8 GetGlassColorFromVer3(u8 color); CommonColor GetGlassColorFromVer3(u32 color);
} // namespace Service::Mii::RawData } // namespace Service::Mii::RawData

View File

@ -11,16 +11,16 @@ void StoreData::BuildDefault(u32 mii_index) {
const auto& default_mii = RawData::DefaultMii[mii_index]; const auto& default_mii = RawData::DefaultMii[mii_index];
core_data.SetDefault(); core_data.SetDefault();
core_data.SetFacelineType(static_cast<u8>(default_mii.face_type)); core_data.SetFacelineType(static_cast<FacelineType>(default_mii.face_type));
core_data.SetFacelineColor( core_data.SetFacelineColor(
RawData::GetFacelineColorFromVer3(static_cast<u8>(default_mii.face_color))); RawData::GetFacelineColorFromVer3(static_cast<u8>(default_mii.face_color)));
core_data.SetFacelineWrinkle(static_cast<u8>(default_mii.face_wrinkle)); core_data.SetFacelineWrinkle(static_cast<FacelineWrinkle>(default_mii.face_wrinkle));
core_data.SetFacelineMake(static_cast<u8>(default_mii.face_makeup)); core_data.SetFacelineMake(static_cast<FacelineMake>(default_mii.face_makeup));
core_data.SetHairType(static_cast<u8>(default_mii.hair_type)); core_data.SetHairType(static_cast<HairType>(default_mii.hair_type));
core_data.SetHairColor(RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.hair_color))); core_data.SetHairColor(RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.hair_color)));
core_data.SetHairFlip(default_mii.hair_flip); core_data.SetHairFlip(static_cast<HairFlip>(default_mii.hair_flip));
core_data.SetEyeType(static_cast<u8>(default_mii.eye_type)); core_data.SetEyeType(static_cast<EyeType>(default_mii.eye_type));
core_data.SetEyeColor(RawData::GetEyeColorFromVer3(static_cast<u8>(default_mii.eye_color))); core_data.SetEyeColor(RawData::GetEyeColorFromVer3(static_cast<u8>(default_mii.eye_color)));
core_data.SetEyeScale(static_cast<u8>(default_mii.eye_scale)); core_data.SetEyeScale(static_cast<u8>(default_mii.eye_scale));
core_data.SetEyeAspect(static_cast<u8>(default_mii.eye_aspect)); core_data.SetEyeAspect(static_cast<u8>(default_mii.eye_aspect));
@ -28,7 +28,7 @@ void StoreData::BuildDefault(u32 mii_index) {
core_data.SetEyeX(static_cast<u8>(default_mii.eye_x)); core_data.SetEyeX(static_cast<u8>(default_mii.eye_x));
core_data.SetEyeY(static_cast<u8>(default_mii.eye_y)); core_data.SetEyeY(static_cast<u8>(default_mii.eye_y));
core_data.SetEyebrowType(static_cast<u8>(default_mii.eyebrow_type)); core_data.SetEyebrowType(static_cast<EyebrowType>(default_mii.eyebrow_type));
core_data.SetEyebrowColor( core_data.SetEyebrowColor(
RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.eyebrow_color))); RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.eyebrow_color)));
core_data.SetEyebrowScale(static_cast<u8>(default_mii.eyebrow_scale)); core_data.SetEyebrowScale(static_cast<u8>(default_mii.eyebrow_scale));
@ -37,7 +37,7 @@ void StoreData::BuildDefault(u32 mii_index) {
core_data.SetEyebrowX(static_cast<u8>(default_mii.eyebrow_x)); core_data.SetEyebrowX(static_cast<u8>(default_mii.eyebrow_x));
core_data.SetEyebrowY(static_cast<u8>(default_mii.eyebrow_y)); core_data.SetEyebrowY(static_cast<u8>(default_mii.eyebrow_y));
core_data.SetNoseType(static_cast<u8>(default_mii.nose_type)); core_data.SetNoseType(static_cast<NoseType>(default_mii.nose_type));
core_data.SetNoseScale(static_cast<u8>(default_mii.nose_scale)); core_data.SetNoseScale(static_cast<u8>(default_mii.nose_scale));
core_data.SetNoseY(static_cast<u8>(default_mii.nose_y)); core_data.SetNoseY(static_cast<u8>(default_mii.nose_y));
@ -48,30 +48,30 @@ void StoreData::BuildDefault(u32 mii_index) {
core_data.SetMouthAspect(static_cast<u8>(default_mii.mouth_aspect)); core_data.SetMouthAspect(static_cast<u8>(default_mii.mouth_aspect));
core_data.SetMouthY(static_cast<u8>(default_mii.mouth_y)); core_data.SetMouthY(static_cast<u8>(default_mii.mouth_y));
core_data.SetMustacheType(default_mii.mustache_type); core_data.SetMustacheType(static_cast<MustacheType>(default_mii.mustache_type));
core_data.SetBeardType(default_mii.beard_type); core_data.SetBeardType(static_cast<BeardType>(default_mii.beard_type));
core_data.SetBeardColor( core_data.SetBeardColor(
RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.beard_color))); RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.beard_color)));
core_data.SetMustacheScale(static_cast<u8>(default_mii.mustache_scale)); core_data.SetMustacheScale(static_cast<u8>(default_mii.mustache_scale));
core_data.SetMustacheY(static_cast<u8>(default_mii.mustache_y)); core_data.SetMustacheY(static_cast<u8>(default_mii.mustache_y));
core_data.SetGlassType(static_cast<u8>(default_mii.glasses_type)); core_data.SetGlassType(static_cast<GlassType>(default_mii.glasses_type));
core_data.SetGlassColor( core_data.SetGlassColor(
RawData::GetGlassColorFromVer3(static_cast<u8>(default_mii.glasses_color))); RawData::GetGlassColorFromVer3(static_cast<u8>(default_mii.glasses_color)));
core_data.SetGlassScale(static_cast<u8>(default_mii.glasses_scale)); core_data.SetGlassScale(static_cast<u8>(default_mii.glasses_scale));
core_data.SetGlassY(static_cast<u8>(default_mii.glasses_y)); core_data.SetGlassY(static_cast<u8>(default_mii.glasses_y));
core_data.SetMoleType(static_cast<u8>(default_mii.mole_type)); core_data.SetMoleType(static_cast<MoleType>(default_mii.mole_type));
core_data.SetMoleScale(static_cast<u8>(default_mii.mole_scale)); core_data.SetMoleScale(static_cast<u8>(default_mii.mole_scale));
core_data.SetMoleX(static_cast<u8>(default_mii.mole_x)); core_data.SetMoleX(static_cast<u8>(default_mii.mole_x));
core_data.SetMoleY(static_cast<u8>(default_mii.mole_y)); core_data.SetMoleY(static_cast<u8>(default_mii.mole_y));
core_data.SetHeight(static_cast<u8>(default_mii.height)); core_data.SetHeight(static_cast<u8>(default_mii.height));
core_data.SetBuild(static_cast<u8>(default_mii.weight)); core_data.SetBuild(static_cast<u8>(default_mii.weight));
core_data.SetGender(default_mii.gender); core_data.SetGender(static_cast<Gender>(default_mii.gender));
core_data.SetFavoriteColor(static_cast<u8>(default_mii.favorite_color)); core_data.SetFavoriteColor(static_cast<FavoriteColor>(default_mii.favorite_color));
core_data.SetRegionMove(static_cast<u8>(default_mii.region_move)); core_data.SetRegionMove(static_cast<u8>(default_mii.region_move));
core_data.SetFontRegion(default_mii.font_region); core_data.SetFontRegion(static_cast<FontRegion>(default_mii.font_region));
core_data.SetType(static_cast<u8>(default_mii.type)); core_data.SetType(static_cast<u8>(default_mii.type));
core_data.SetNickname(default_mii.nickname); core_data.SetNickname(default_mii.nickname);
@ -85,16 +85,16 @@ void StoreData::BuildBase(Gender gender) {
const auto& default_mii = RawData::BaseMii[gender == Gender::Female ? 1 : 0]; const auto& default_mii = RawData::BaseMii[gender == Gender::Female ? 1 : 0];
core_data.SetDefault(); core_data.SetDefault();
core_data.SetFacelineType(static_cast<u8>(default_mii.face_type)); core_data.SetFacelineType(static_cast<FacelineType>(default_mii.face_type));
core_data.SetFacelineColor( core_data.SetFacelineColor(
RawData::GetFacelineColorFromVer3(static_cast<u8>(default_mii.face_color))); RawData::GetFacelineColorFromVer3(static_cast<u8>(default_mii.face_color)));
core_data.SetFacelineWrinkle(static_cast<u8>(default_mii.face_wrinkle)); core_data.SetFacelineWrinkle(static_cast<FacelineWrinkle>(default_mii.face_wrinkle));
core_data.SetFacelineMake(static_cast<u8>(default_mii.face_makeup)); core_data.SetFacelineMake(static_cast<FacelineMake>(default_mii.face_makeup));
core_data.SetHairType(static_cast<u8>(default_mii.hair_type)); core_data.SetHairType(static_cast<HairType>(default_mii.hair_type));
core_data.SetHairColor(RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.hair_color))); core_data.SetHairColor(RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.hair_color)));
core_data.SetHairFlip(default_mii.hair_flip); core_data.SetHairFlip(static_cast<HairFlip>(default_mii.hair_flip));
core_data.SetEyeType(static_cast<u8>(default_mii.eye_type)); core_data.SetEyeType(static_cast<EyeType>(default_mii.eye_type));
core_data.SetEyeColor(RawData::GetEyeColorFromVer3(static_cast<u8>(default_mii.eye_color))); core_data.SetEyeColor(RawData::GetEyeColorFromVer3(static_cast<u8>(default_mii.eye_color)));
core_data.SetEyeScale(static_cast<u8>(default_mii.eye_scale)); core_data.SetEyeScale(static_cast<u8>(default_mii.eye_scale));
core_data.SetEyeAspect(static_cast<u8>(default_mii.eye_aspect)); core_data.SetEyeAspect(static_cast<u8>(default_mii.eye_aspect));
@ -102,7 +102,7 @@ void StoreData::BuildBase(Gender gender) {
core_data.SetEyeX(static_cast<u8>(default_mii.eye_x)); core_data.SetEyeX(static_cast<u8>(default_mii.eye_x));
core_data.SetEyeY(static_cast<u8>(default_mii.eye_y)); core_data.SetEyeY(static_cast<u8>(default_mii.eye_y));
core_data.SetEyebrowType(static_cast<u8>(default_mii.eyebrow_type)); core_data.SetEyebrowType(static_cast<EyebrowType>(default_mii.eyebrow_type));
core_data.SetEyebrowColor( core_data.SetEyebrowColor(
RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.eyebrow_color))); RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.eyebrow_color)));
core_data.SetEyebrowScale(static_cast<u8>(default_mii.eyebrow_scale)); core_data.SetEyebrowScale(static_cast<u8>(default_mii.eyebrow_scale));
@ -111,7 +111,7 @@ void StoreData::BuildBase(Gender gender) {
core_data.SetEyebrowX(static_cast<u8>(default_mii.eyebrow_x)); core_data.SetEyebrowX(static_cast<u8>(default_mii.eyebrow_x));
core_data.SetEyebrowY(static_cast<u8>(default_mii.eyebrow_y)); core_data.SetEyebrowY(static_cast<u8>(default_mii.eyebrow_y));
core_data.SetNoseType(static_cast<u8>(default_mii.nose_type)); core_data.SetNoseType(static_cast<NoseType>(default_mii.nose_type));
core_data.SetNoseScale(static_cast<u8>(default_mii.nose_scale)); core_data.SetNoseScale(static_cast<u8>(default_mii.nose_scale));
core_data.SetNoseY(static_cast<u8>(default_mii.nose_y)); core_data.SetNoseY(static_cast<u8>(default_mii.nose_y));
@ -122,30 +122,30 @@ void StoreData::BuildBase(Gender gender) {
core_data.SetMouthAspect(static_cast<u8>(default_mii.mouth_aspect)); core_data.SetMouthAspect(static_cast<u8>(default_mii.mouth_aspect));
core_data.SetMouthY(static_cast<u8>(default_mii.mouth_y)); core_data.SetMouthY(static_cast<u8>(default_mii.mouth_y));
core_data.SetMustacheType(default_mii.mustache_type); core_data.SetMustacheType(static_cast<MustacheType>(default_mii.mustache_type));
core_data.SetBeardType(default_mii.beard_type); core_data.SetBeardType(static_cast<BeardType>(default_mii.beard_type));
core_data.SetBeardColor( core_data.SetBeardColor(
RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.beard_color))); RawData::GetHairColorFromVer3(static_cast<u8>(default_mii.beard_color)));
core_data.SetMustacheScale(static_cast<u8>(default_mii.mustache_scale)); core_data.SetMustacheScale(static_cast<u8>(default_mii.mustache_scale));
core_data.SetMustacheY(static_cast<u8>(default_mii.mustache_y)); core_data.SetMustacheY(static_cast<u8>(default_mii.mustache_y));
core_data.SetGlassType(static_cast<u8>(default_mii.glasses_type)); core_data.SetGlassType(static_cast<GlassType>(default_mii.glasses_type));
core_data.SetGlassColor( core_data.SetGlassColor(
RawData::GetGlassColorFromVer3(static_cast<u8>(default_mii.glasses_color))); RawData::GetGlassColorFromVer3(static_cast<u8>(default_mii.glasses_color)));
core_data.SetGlassScale(static_cast<u8>(default_mii.glasses_scale)); core_data.SetGlassScale(static_cast<u8>(default_mii.glasses_scale));
core_data.SetGlassY(static_cast<u8>(default_mii.glasses_y)); core_data.SetGlassY(static_cast<u8>(default_mii.glasses_y));
core_data.SetMoleType(static_cast<u8>(default_mii.mole_type)); core_data.SetMoleType(static_cast<MoleType>(default_mii.mole_type));
core_data.SetMoleScale(static_cast<u8>(default_mii.mole_scale)); core_data.SetMoleScale(static_cast<u8>(default_mii.mole_scale));
core_data.SetMoleX(static_cast<u8>(default_mii.mole_x)); core_data.SetMoleX(static_cast<u8>(default_mii.mole_x));
core_data.SetMoleY(static_cast<u8>(default_mii.mole_y)); core_data.SetMoleY(static_cast<u8>(default_mii.mole_y));
core_data.SetHeight(static_cast<u8>(default_mii.height)); core_data.SetHeight(static_cast<u8>(default_mii.height));
core_data.SetBuild(static_cast<u8>(default_mii.weight)); core_data.SetBuild(static_cast<u8>(default_mii.weight));
core_data.SetGender(default_mii.gender); core_data.SetGender(static_cast<Gender>(default_mii.gender));
core_data.SetFavoriteColor(static_cast<u8>(default_mii.favorite_color)); core_data.SetFavoriteColor(static_cast<FavoriteColor>(default_mii.favorite_color));
core_data.SetRegionMove(static_cast<u8>(default_mii.region_move)); core_data.SetRegionMove(static_cast<u8>(default_mii.region_move));
core_data.SetFontRegion(default_mii.font_region); core_data.SetFontRegion(static_cast<FontRegion>(default_mii.font_region));
core_data.SetType(static_cast<u8>(default_mii.type)); core_data.SetType(static_cast<u8>(default_mii.type));
core_data.SetNickname(default_mii.nickname); core_data.SetNickname(default_mii.nickname);
@ -184,7 +184,7 @@ void StoreData::SetFontRegion(FontRegion value) {
core_data.SetFontRegion(value); core_data.SetFontRegion(value);
} }
void StoreData::SetFavoriteColor(u8 value) { void StoreData::SetFavoriteColor(FavoriteColor value) {
core_data.SetFavoriteColor(value); core_data.SetFavoriteColor(value);
} }
@ -208,27 +208,27 @@ void StoreData::SetRegionMove(u8 value) {
core_data.SetRegionMove(value); core_data.SetRegionMove(value);
} }
void StoreData::SetFacelineType(u8 value) { void StoreData::SetFacelineType(FacelineType value) {
core_data.SetFacelineType(value); core_data.SetFacelineType(value);
} }
void StoreData::SetFacelineColor(u8 value) { void StoreData::SetFacelineColor(FacelineColor value) {
core_data.SetFacelineColor(value); core_data.SetFacelineColor(value);
} }
void StoreData::SetFacelineWrinkle(u8 value) { void StoreData::SetFacelineWrinkle(FacelineWrinkle value) {
core_data.SetFacelineWrinkle(value); core_data.SetFacelineWrinkle(value);
} }
void StoreData::SetFacelineMake(u8 value) { void StoreData::SetFacelineMake(FacelineMake value) {
core_data.SetFacelineMake(value); core_data.SetFacelineMake(value);
} }
void StoreData::SetHairType(u8 value) { void StoreData::SetHairType(HairType value) {
core_data.SetHairType(value); core_data.SetHairType(value);
} }
void StoreData::SetHairColor(u8 value) { void StoreData::SetHairColor(CommonColor value) {
core_data.SetHairColor(value); core_data.SetHairColor(value);
} }
@ -236,11 +236,11 @@ void StoreData::SetHairFlip(HairFlip value) {
core_data.SetHairFlip(value); core_data.SetHairFlip(value);
} }
void StoreData::SetEyeType(u8 value) { void StoreData::SetEyeType(EyeType value) {
core_data.SetEyeType(value); core_data.SetEyeType(value);
} }
void StoreData::SetEyeColor(u8 value) { void StoreData::SetEyeColor(CommonColor value) {
core_data.SetEyeColor(value); core_data.SetEyeColor(value);
} }
@ -264,11 +264,11 @@ void StoreData::SetEyeY(u8 value) {
core_data.SetEyeY(value); core_data.SetEyeY(value);
} }
void StoreData::SetEyebrowType(u8 value) { void StoreData::SetEyebrowType(EyebrowType value) {
core_data.SetEyebrowType(value); core_data.SetEyebrowType(value);
} }
void StoreData::SetEyebrowColor(u8 value) { void StoreData::SetEyebrowColor(CommonColor value) {
core_data.SetEyebrowColor(value); core_data.SetEyebrowColor(value);
} }
@ -292,7 +292,7 @@ void StoreData::SetEyebrowY(u8 value) {
core_data.SetEyebrowY(value); core_data.SetEyebrowY(value);
} }
void StoreData::SetNoseType(u8 value) { void StoreData::SetNoseType(NoseType value) {
core_data.SetNoseType(value); core_data.SetNoseType(value);
} }
@ -308,7 +308,7 @@ void StoreData::SetMouthType(u8 value) {
core_data.SetMouthType(value); core_data.SetMouthType(value);
} }
void StoreData::SetMouthColor(u8 value) { void StoreData::SetMouthColor(CommonColor value) {
core_data.SetMouthColor(value); core_data.SetMouthColor(value);
} }
@ -324,7 +324,7 @@ void StoreData::SetMouthY(u8 value) {
core_data.SetMouthY(value); core_data.SetMouthY(value);
} }
void StoreData::SetBeardColor(u8 value) { void StoreData::SetBeardColor(CommonColor value) {
core_data.SetBeardColor(value); core_data.SetBeardColor(value);
} }
@ -344,11 +344,11 @@ void StoreData::SetMustacheY(u8 value) {
core_data.SetMustacheY(value); core_data.SetMustacheY(value);
} }
void StoreData::SetGlassType(u8 value) { void StoreData::SetGlassType(GlassType value) {
core_data.SetGlassType(value); core_data.SetGlassType(value);
} }
void StoreData::SetGlassColor(u8 value) { void StoreData::SetGlassColor(CommonColor value) {
core_data.SetGlassColor(value); core_data.SetGlassColor(value);
} }
@ -360,7 +360,7 @@ void StoreData::SetGlassY(u8 value) {
core_data.SetGlassY(value); core_data.SetGlassY(value);
} }
void StoreData::SetMoleType(u8 value) { void StoreData::SetMoleType(MoleType value) {
core_data.SetMoleType(value); core_data.SetMoleType(value);
} }
@ -388,11 +388,11 @@ FontRegion StoreData::GetFontRegion() const {
return static_cast<FontRegion>(core_data.GetFontRegion()); return static_cast<FontRegion>(core_data.GetFontRegion());
} }
u8 StoreData::GetFavoriteColor() const { FavoriteColor StoreData::GetFavoriteColor() const {
return core_data.GetFavoriteColor(); return core_data.GetFavoriteColor();
} }
u8 StoreData::GetGender() const { Gender StoreData::GetGender() const {
return core_data.GetGender(); return core_data.GetGender();
} }
@ -412,39 +412,39 @@ u8 StoreData::GetRegionMove() const {
return core_data.GetRegionMove(); return core_data.GetRegionMove();
} }
u8 StoreData::GetFacelineType() const { FacelineType StoreData::GetFacelineType() const {
return core_data.GetFacelineType(); return core_data.GetFacelineType();
} }
u8 StoreData::GetFacelineColor() const { FacelineColor StoreData::GetFacelineColor() const {
return core_data.GetFacelineColor(); return core_data.GetFacelineColor();
} }
u8 StoreData::GetFacelineWrinkle() const { FacelineWrinkle StoreData::GetFacelineWrinkle() const {
return core_data.GetFacelineWrinkle(); return core_data.GetFacelineWrinkle();
} }
u8 StoreData::GetFacelineMake() const { FacelineMake StoreData::GetFacelineMake() const {
return core_data.GetFacelineMake(); return core_data.GetFacelineMake();
} }
u8 StoreData::GetHairType() const { HairType StoreData::GetHairType() const {
return core_data.GetHairType(); return core_data.GetHairType();
} }
u8 StoreData::GetHairColor() const { CommonColor StoreData::GetHairColor() const {
return core_data.GetHairColor(); return core_data.GetHairColor();
} }
u8 StoreData::GetHairFlip() const { HairFlip StoreData::GetHairFlip() const {
return core_data.GetHairFlip(); return core_data.GetHairFlip();
} }
u8 StoreData::GetEyeType() const { EyeType StoreData::GetEyeType() const {
return core_data.GetEyeType(); return core_data.GetEyeType();
} }
u8 StoreData::GetEyeColor() const { CommonColor StoreData::GetEyeColor() const {
return core_data.GetEyeColor(); return core_data.GetEyeColor();
} }
@ -468,11 +468,11 @@ u8 StoreData::GetEyeY() const {
return core_data.GetEyeY(); return core_data.GetEyeY();
} }
u8 StoreData::GetEyebrowType() const { EyebrowType StoreData::GetEyebrowType() const {
return core_data.GetEyebrowType(); return core_data.GetEyebrowType();
} }
u8 StoreData::GetEyebrowColor() const { CommonColor StoreData::GetEyebrowColor() const {
return core_data.GetEyebrowColor(); return core_data.GetEyebrowColor();
} }
@ -496,7 +496,7 @@ u8 StoreData::GetEyebrowY() const {
return core_data.GetEyebrowY(); return core_data.GetEyebrowY();
} }
u8 StoreData::GetNoseType() const { NoseType StoreData::GetNoseType() const {
return core_data.GetNoseType(); return core_data.GetNoseType();
} }
@ -508,11 +508,11 @@ u8 StoreData::GetNoseY() const {
return core_data.GetNoseY(); return core_data.GetNoseY();
} }
u8 StoreData::GetMouthType() const { MouthType StoreData::GetMouthType() const {
return core_data.GetMouthType(); return core_data.GetMouthType();
} }
u8 StoreData::GetMouthColor() const { CommonColor StoreData::GetMouthColor() const {
return core_data.GetMouthColor(); return core_data.GetMouthColor();
} }
@ -528,15 +528,15 @@ u8 StoreData::GetMouthY() const {
return core_data.GetMouthY(); return core_data.GetMouthY();
} }
u8 StoreData::GetBeardColor() const { CommonColor StoreData::GetBeardColor() const {
return core_data.GetBeardColor(); return core_data.GetBeardColor();
} }
u8 StoreData::GetBeardType() const { BeardType StoreData::GetBeardType() const {
return core_data.GetBeardType(); return core_data.GetBeardType();
} }
u8 StoreData::GetMustacheType() const { MustacheType StoreData::GetMustacheType() const {
return core_data.GetMustacheType(); return core_data.GetMustacheType();
} }
@ -548,11 +548,11 @@ u8 StoreData::GetMustacheY() const {
return core_data.GetMustacheY(); return core_data.GetMustacheY();
} }
u8 StoreData::GetGlassType() const { GlassType StoreData::GetGlassType() const {
return core_data.GetGlassType(); return core_data.GetGlassType();
} }
u8 StoreData::GetGlassColor() const { CommonColor StoreData::GetGlassColor() const {
return core_data.GetGlassColor(); return core_data.GetGlassColor();
} }
@ -564,7 +564,7 @@ u8 StoreData::GetGlassY() const {
return core_data.GetGlassY(); return core_data.GetGlassY();
} }
u8 StoreData::GetMoleType() const { MoleType StoreData::GetMoleType() const {
return core_data.GetMoleType(); return core_data.GetMoleType();
} }

View File

@ -23,51 +23,51 @@ public:
u32 IsValid() const; u32 IsValid() const;
void SetFontRegion(FontRegion value); void SetFontRegion(FontRegion value);
void SetFavoriteColor(u8 value); void SetFavoriteColor(FavoriteColor value);
void SetGender(Gender value); void SetGender(Gender value);
void SetHeight(u8 value); void SetHeight(u8 value);
void SetBuild(u8 value); void SetBuild(u8 value);
void SetType(u8 value); void SetType(u8 value);
void SetRegionMove(u8 value); void SetRegionMove(u8 value);
void SetFacelineType(u8 value); void SetFacelineType(FacelineType value);
void SetFacelineColor(u8 value); void SetFacelineColor(FacelineColor value);
void SetFacelineWrinkle(u8 value); void SetFacelineWrinkle(FacelineWrinkle value);
void SetFacelineMake(u8 value); void SetFacelineMake(FacelineMake value);
void SetHairType(u8 value); void SetHairType(HairType value);
void SetHairColor(u8 value); void SetHairColor(CommonColor value);
void SetHairFlip(HairFlip value); void SetHairFlip(HairFlip value);
void SetEyeType(u8 value); void SetEyeType(EyeType value);
void SetEyeColor(u8 value); void SetEyeColor(CommonColor value);
void SetEyeScale(u8 value); void SetEyeScale(u8 value);
void SetEyeAspect(u8 value); void SetEyeAspect(u8 value);
void SetEyeRotate(u8 value); void SetEyeRotate(u8 value);
void SetEyeX(u8 value); void SetEyeX(u8 value);
void SetEyeY(u8 value); void SetEyeY(u8 value);
void SetEyebrowType(u8 value); void SetEyebrowType(EyebrowType value);
void SetEyebrowColor(u8 value); void SetEyebrowColor(CommonColor value);
void SetEyebrowScale(u8 value); void SetEyebrowScale(u8 value);
void SetEyebrowAspect(u8 value); void SetEyebrowAspect(u8 value);
void SetEyebrowRotate(u8 value); void SetEyebrowRotate(u8 value);
void SetEyebrowX(u8 value); void SetEyebrowX(u8 value);
void SetEyebrowY(u8 value); void SetEyebrowY(u8 value);
void SetNoseType(u8 value); void SetNoseType(NoseType value);
void SetNoseScale(u8 value); void SetNoseScale(u8 value);
void SetNoseY(u8 value); void SetNoseY(u8 value);
void SetMouthType(u8 value); void SetMouthType(u8 value);
void SetMouthColor(u8 value); void SetMouthColor(CommonColor value);
void SetMouthScale(u8 value); void SetMouthScale(u8 value);
void SetMouthAspect(u8 value); void SetMouthAspect(u8 value);
void SetMouthY(u8 value); void SetMouthY(u8 value);
void SetBeardColor(u8 value); void SetBeardColor(CommonColor value);
void SetBeardType(BeardType value); void SetBeardType(BeardType value);
void SetMustacheType(MustacheType value); void SetMustacheType(MustacheType value);
void SetMustacheScale(u8 value); void SetMustacheScale(u8 value);
void SetMustacheY(u8 value); void SetMustacheY(u8 value);
void SetGlassType(u8 value); void SetGlassType(GlassType value);
void SetGlassColor(u8 value); void SetGlassColor(CommonColor value);
void SetGlassScale(u8 value); void SetGlassScale(u8 value);
void SetGlassY(u8 value); void SetGlassY(u8 value);
void SetMoleType(u8 value); void SetMoleType(MoleType value);
void SetMoleScale(u8 value); void SetMoleScale(u8 value);
void SetMoleX(u8 value); void SetMoleX(u8 value);
void SetMoleY(u8 value); void SetMoleY(u8 value);
@ -76,51 +76,51 @@ public:
Common::UUID GetCreateId() const; Common::UUID GetCreateId() const;
FontRegion GetFontRegion() const; FontRegion GetFontRegion() const;
u8 GetFavoriteColor() const; FavoriteColor GetFavoriteColor() const;
u8 GetGender() const; Gender GetGender() const;
u8 GetHeight() const; u8 GetHeight() const;
u8 GetBuild() const; u8 GetBuild() const;
u8 GetType() const; u8 GetType() const;
u8 GetRegionMove() const; u8 GetRegionMove() const;
u8 GetFacelineType() const; FacelineType GetFacelineType() const;
u8 GetFacelineColor() const; FacelineColor GetFacelineColor() const;
u8 GetFacelineWrinkle() const; FacelineWrinkle GetFacelineWrinkle() const;
u8 GetFacelineMake() const; FacelineMake GetFacelineMake() const;
u8 GetHairType() const; HairType GetHairType() const;
u8 GetHairColor() const; CommonColor GetHairColor() const;
u8 GetHairFlip() const; HairFlip GetHairFlip() const;
u8 GetEyeType() const; EyeType GetEyeType() const;
u8 GetEyeColor() const; CommonColor GetEyeColor() const;
u8 GetEyeScale() const; u8 GetEyeScale() const;
u8 GetEyeAspect() const; u8 GetEyeAspect() const;
u8 GetEyeRotate() const; u8 GetEyeRotate() const;
u8 GetEyeX() const; u8 GetEyeX() const;
u8 GetEyeY() const; u8 GetEyeY() const;
u8 GetEyebrowType() const; EyebrowType GetEyebrowType() const;
u8 GetEyebrowColor() const; CommonColor GetEyebrowColor() const;
u8 GetEyebrowScale() const; u8 GetEyebrowScale() const;
u8 GetEyebrowAspect() const; u8 GetEyebrowAspect() const;
u8 GetEyebrowRotate() const; u8 GetEyebrowRotate() const;
u8 GetEyebrowX() const; u8 GetEyebrowX() const;
u8 GetEyebrowY() const; u8 GetEyebrowY() const;
u8 GetNoseType() const; NoseType GetNoseType() const;
u8 GetNoseScale() const; u8 GetNoseScale() const;
u8 GetNoseY() const; u8 GetNoseY() const;
u8 GetMouthType() const; MouthType GetMouthType() const;
u8 GetMouthColor() const; CommonColor GetMouthColor() const;
u8 GetMouthScale() const; u8 GetMouthScale() const;
u8 GetMouthAspect() const; u8 GetMouthAspect() const;
u8 GetMouthY() const; u8 GetMouthY() const;
u8 GetBeardColor() const; CommonColor GetBeardColor() const;
u8 GetBeardType() const; BeardType GetBeardType() const;
u8 GetMustacheType() const; MustacheType GetMustacheType() const;
u8 GetMustacheScale() const; u8 GetMustacheScale() const;
u8 GetMustacheY() const; u8 GetMustacheY() const;
u8 GetGlassType() const; GlassType GetGlassType() const;
u8 GetGlassColor() const; CommonColor GetGlassColor() const;
u8 GetGlassScale() const; u8 GetGlassScale() const;
u8 GetGlassY() const; u8 GetGlassY() const;
u8 GetMoleType() const; MoleType GetMoleType() const;
u8 GetMoleScale() const; u8 GetMoleScale() const;
u8 GetMoleX() const; u8 GetMoleX() const;
u8 GetMoleY() const; u8 GetMoleY() const;

View File

@ -9,14 +9,14 @@
namespace Service::Mii { namespace Service::Mii {
void NfpStoreDataExtension::SetFromStoreData(const StoreData& store_data) { void NfpStoreDataExtension::SetFromStoreData(const StoreData& store_data) {
faceline_color = static_cast<u8>(store_data.GetFacelineColor() & 0xf); faceline_color = static_cast<u8>(store_data.GetFacelineColor()) & 0xf;
hair_color = static_cast<u8>(store_data.GetHairColor() & 0x7f); hair_color = static_cast<u8>(store_data.GetHairColor()) & 0x7f;
eye_color = static_cast<u8>(store_data.GetEyeColor() & 0x7f); eye_color = static_cast<u8>(store_data.GetEyeColor()) & 0x7f;
eyebrow_color = static_cast<u8>(store_data.GetEyebrowColor() & 0x7f); eyebrow_color = static_cast<u8>(store_data.GetEyebrowColor()) & 0x7f;
mouth_color = static_cast<u8>(store_data.GetMouthColor() & 0x7f); mouth_color = static_cast<u8>(store_data.GetMouthColor()) & 0x7f;
beard_color = static_cast<u8>(store_data.GetBeardColor() & 0x7f); beard_color = static_cast<u8>(store_data.GetBeardColor()) & 0x7f;
glass_color = static_cast<u8>(store_data.GetGlassColor() & 0x7f); glass_color = static_cast<u8>(store_data.GetGlassColor()) & 0x7f;
glass_type = static_cast<u8>(store_data.GetGlassType() & 0x1f); glass_type = static_cast<u8>(store_data.GetGlassType()) & 0x1f;
} }
void Ver3StoreData::BuildToStoreData(StoreData& out_store_data) const { void Ver3StoreData::BuildToStoreData(StoreData& out_store_data) const {
@ -28,8 +28,9 @@ void Ver3StoreData::BuildToStoreData(StoreData& out_store_data) const {
// TODO: We are ignoring a bunch of data from the mii_v3 // TODO: We are ignoring a bunch of data from the mii_v3
out_store_data.SetGender(static_cast<Gender>(static_cast<u8>(mii_information.gender))); out_store_data.SetGender(static_cast<Gender>(mii_information.gender.Value()));
out_store_data.SetFavoriteColor(static_cast<u8>(mii_information.favorite_color)); out_store_data.SetFavoriteColor(
static_cast<FavoriteColor>(mii_information.favorite_color.Value()));
out_store_data.SetHeight(height); out_store_data.SetHeight(height);
out_store_data.SetBuild(build); out_store_data.SetBuild(build);
@ -37,56 +38,60 @@ void Ver3StoreData::BuildToStoreData(StoreData& out_store_data) const {
out_store_data.SetFontRegion( out_store_data.SetFontRegion(
static_cast<FontRegion>(static_cast<u8>(region_information.font_region))); static_cast<FontRegion>(static_cast<u8>(region_information.font_region)));
out_store_data.SetFacelineType(appearance_bits1.faceline_type); out_store_data.SetFacelineType(
out_store_data.SetFacelineColor(appearance_bits1.faceline_color); static_cast<FacelineType>(appearance_bits1.faceline_type.Value()));
out_store_data.SetFacelineWrinkle(appearance_bits2.faceline_wrinkle); out_store_data.SetFacelineColor(
out_store_data.SetFacelineMake(appearance_bits2.faceline_make); static_cast<FacelineColor>(appearance_bits1.faceline_color.Value()));
out_store_data.SetFacelineWrinkle(
static_cast<FacelineWrinkle>(appearance_bits2.faceline_wrinkle.Value()));
out_store_data.SetFacelineMake(
static_cast<FacelineMake>(appearance_bits2.faceline_make.Value()));
out_store_data.SetHairType(hair_type); out_store_data.SetHairType(static_cast<HairType>(hair_type));
out_store_data.SetHairColor(appearance_bits3.hair_color); out_store_data.SetHairColor(static_cast<CommonColor>(appearance_bits3.hair_color.Value()));
out_store_data.SetHairFlip(static_cast<HairFlip>(static_cast<u8>(appearance_bits3.hair_flip))); out_store_data.SetHairFlip(static_cast<HairFlip>(appearance_bits3.hair_flip.Value()));
out_store_data.SetEyeType(static_cast<u8>(appearance_bits4.eye_type)); out_store_data.SetEyeType(static_cast<EyeType>(appearance_bits4.eye_type.Value()));
out_store_data.SetEyeColor(static_cast<u8>(appearance_bits4.eye_color)); out_store_data.SetEyeColor(static_cast<CommonColor>(appearance_bits4.eye_color.Value()));
out_store_data.SetEyeScale(static_cast<u8>(appearance_bits4.eye_scale)); out_store_data.SetEyeScale(static_cast<u8>(appearance_bits4.eye_scale));
out_store_data.SetEyeAspect(static_cast<u8>(appearance_bits4.eye_aspect)); out_store_data.SetEyeAspect(static_cast<u8>(appearance_bits4.eye_aspect));
out_store_data.SetEyeRotate(static_cast<u8>(appearance_bits4.eye_rotate)); out_store_data.SetEyeRotate(static_cast<u8>(appearance_bits4.eye_rotate));
out_store_data.SetEyeX(static_cast<u8>(appearance_bits4.eye_x)); out_store_data.SetEyeX(static_cast<u8>(appearance_bits4.eye_x));
out_store_data.SetEyeY(static_cast<u8>(appearance_bits4.eye_y)); out_store_data.SetEyeY(static_cast<u8>(appearance_bits4.eye_y));
out_store_data.SetEyebrowType(static_cast<u8>(appearance_bits5.eyebrow_type)); out_store_data.SetEyebrowType(static_cast<EyebrowType>(appearance_bits5.eyebrow_type.Value()));
out_store_data.SetEyebrowColor(static_cast<u8>(appearance_bits5.eyebrow_color)); out_store_data.SetEyebrowColor(
static_cast<CommonColor>(appearance_bits5.eyebrow_color.Value()));
out_store_data.SetEyebrowScale(static_cast<u8>(appearance_bits5.eyebrow_scale)); out_store_data.SetEyebrowScale(static_cast<u8>(appearance_bits5.eyebrow_scale));
out_store_data.SetEyebrowAspect(static_cast<u8>(appearance_bits5.eyebrow_aspect)); out_store_data.SetEyebrowAspect(static_cast<u8>(appearance_bits5.eyebrow_aspect));
out_store_data.SetEyebrowRotate(static_cast<u8>(appearance_bits5.eyebrow_rotate)); out_store_data.SetEyebrowRotate(static_cast<u8>(appearance_bits5.eyebrow_rotate));
out_store_data.SetEyebrowX(static_cast<u8>(appearance_bits5.eyebrow_x)); out_store_data.SetEyebrowX(static_cast<u8>(appearance_bits5.eyebrow_x));
out_store_data.SetEyebrowY(static_cast<u8>(appearance_bits5.eyebrow_y)); out_store_data.SetEyebrowY(static_cast<u8>(appearance_bits5.eyebrow_y));
out_store_data.SetNoseType(static_cast<u8>(appearance_bits6.nose_type)); out_store_data.SetNoseType(static_cast<NoseType>(appearance_bits6.nose_type.Value()));
out_store_data.SetNoseScale(static_cast<u8>(appearance_bits6.nose_scale)); out_store_data.SetNoseScale(static_cast<u8>(appearance_bits6.nose_scale));
out_store_data.SetNoseY(static_cast<u8>(appearance_bits6.nose_y)); out_store_data.SetNoseY(static_cast<u8>(appearance_bits6.nose_y));
out_store_data.SetMouthType(static_cast<u8>(appearance_bits7.mouth_type)); out_store_data.SetMouthType(static_cast<u8>(appearance_bits7.mouth_type));
out_store_data.SetMouthColor(static_cast<u8>(appearance_bits7.mouth_color)); out_store_data.SetMouthColor(static_cast<CommonColor>(appearance_bits7.mouth_color.Value()));
out_store_data.SetMouthScale(static_cast<u8>(appearance_bits7.mouth_scale)); out_store_data.SetMouthScale(static_cast<u8>(appearance_bits7.mouth_scale));
out_store_data.SetMouthAspect(static_cast<u8>(appearance_bits7.mouth_aspect)); out_store_data.SetMouthAspect(static_cast<u8>(appearance_bits7.mouth_aspect));
out_store_data.SetMouthY(static_cast<u8>(appearance_bits8.mouth_y)); out_store_data.SetMouthY(static_cast<u8>(appearance_bits8.mouth_y));
out_store_data.SetMustacheType( out_store_data.SetMustacheType(
static_cast<MustacheType>(static_cast<u8>(appearance_bits8.mustache_type))); static_cast<MustacheType>(appearance_bits8.mustache_type.Value()));
out_store_data.SetMustacheScale(static_cast<u8>(appearance_bits9.mustache_scale)); out_store_data.SetMustacheScale(static_cast<u8>(appearance_bits9.mustache_scale));
out_store_data.SetMustacheY(static_cast<u8>(appearance_bits9.mustache_y)); out_store_data.SetMustacheY(static_cast<u8>(appearance_bits9.mustache_y));
out_store_data.SetBeardType( out_store_data.SetBeardType(static_cast<BeardType>(appearance_bits9.beard_type.Value()));
static_cast<BeardType>(static_cast<u8>(appearance_bits9.beard_type))); out_store_data.SetBeardColor(static_cast<CommonColor>(appearance_bits9.beard_color.Value()));
out_store_data.SetBeardColor(static_cast<u8>(appearance_bits9.beard_color));
out_store_data.SetGlassType(static_cast<u8>(appearance_bits10.glass_type)); out_store_data.SetGlassType(static_cast<GlassType>(appearance_bits10.glass_type.Value()));
out_store_data.SetGlassColor(static_cast<u8>(appearance_bits10.glass_color)); out_store_data.SetGlassColor(static_cast<CommonColor>(appearance_bits10.glass_color.Value()));
out_store_data.SetGlassScale(static_cast<u8>(appearance_bits10.glass_scale)); out_store_data.SetGlassScale(static_cast<u8>(appearance_bits10.glass_scale));
out_store_data.SetGlassY(static_cast<u8>(appearance_bits10.glass_y)); out_store_data.SetGlassY(static_cast<u8>(appearance_bits10.glass_y));
out_store_data.SetMoleType(static_cast<u8>(appearance_bits11.mole_type)); out_store_data.SetMoleType(static_cast<MoleType>(appearance_bits11.mole_type.Value()));
out_store_data.SetMoleScale(static_cast<u8>(appearance_bits11.mole_scale)); out_store_data.SetMoleScale(static_cast<u8>(appearance_bits11.mole_scale));
out_store_data.SetMoleX(static_cast<u8>(appearance_bits11.mole_x)); out_store_data.SetMoleX(static_cast<u8>(appearance_bits11.mole_x));
out_store_data.SetMoleY(static_cast<u8>(appearance_bits11.mole_y)); out_store_data.SetMoleY(static_cast<u8>(appearance_bits11.mole_y));
@ -94,71 +99,75 @@ void Ver3StoreData::BuildToStoreData(StoreData& out_store_data) const {
void Ver3StoreData::BuildFromStoreData(const StoreData& store_data) { void Ver3StoreData::BuildFromStoreData(const StoreData& store_data) {
version = 1; version = 1;
mii_information.gender.Assign(store_data.GetGender()); mii_information.gender.Assign(static_cast<u8>(store_data.GetGender()));
mii_information.favorite_color.Assign(store_data.GetFavoriteColor()); mii_information.favorite_color.Assign(static_cast<u8>(store_data.GetFavoriteColor()));
height = store_data.GetHeight(); height = store_data.GetHeight();
build = store_data.GetBuild(); build = store_data.GetBuild();
mii_name = store_data.GetNickname(); mii_name = store_data.GetNickname();
region_information.font_region.Assign(static_cast<u8>(store_data.GetFontRegion())); region_information.font_region.Assign(static_cast<u8>(store_data.GetFontRegion()));
appearance_bits1.faceline_type.Assign(store_data.GetFacelineType()); appearance_bits1.faceline_type.Assign(static_cast<u8>(store_data.GetFacelineType()));
appearance_bits2.faceline_wrinkle.Assign(store_data.GetFacelineWrinkle()); appearance_bits2.faceline_wrinkle.Assign(static_cast<u8>(store_data.GetFacelineWrinkle()));
appearance_bits2.faceline_make.Assign(store_data.GetFacelineMake()); appearance_bits2.faceline_make.Assign(static_cast<u8>(store_data.GetFacelineMake()));
hair_type = store_data.GetHairType(); hair_type = static_cast<u8>(store_data.GetHairType());
appearance_bits3.hair_flip.Assign(store_data.GetHairFlip()); appearance_bits3.hair_flip.Assign(static_cast<u8>(store_data.GetHairFlip()));
appearance_bits4.eye_type.Assign(store_data.GetEyeType()); appearance_bits4.eye_type.Assign(static_cast<u8>(store_data.GetEyeType()));
appearance_bits4.eye_scale.Assign(store_data.GetEyeScale()); appearance_bits4.eye_scale.Assign(store_data.GetEyeScale());
appearance_bits4.eye_aspect.Assign(store_data.GetEyebrowAspect()); appearance_bits4.eye_aspect.Assign(store_data.GetEyebrowAspect());
appearance_bits4.eye_rotate.Assign(store_data.GetEyeRotate()); appearance_bits4.eye_rotate.Assign(store_data.GetEyeRotate());
appearance_bits4.eye_x.Assign(store_data.GetEyeX()); appearance_bits4.eye_x.Assign(store_data.GetEyeX());
appearance_bits4.eye_y.Assign(store_data.GetEyeY()); appearance_bits4.eye_y.Assign(store_data.GetEyeY());
appearance_bits5.eyebrow_type.Assign(store_data.GetEyebrowType()); appearance_bits5.eyebrow_type.Assign(static_cast<u8>(store_data.GetEyebrowType()));
appearance_bits5.eyebrow_scale.Assign(store_data.GetEyebrowScale()); appearance_bits5.eyebrow_scale.Assign(store_data.GetEyebrowScale());
appearance_bits5.eyebrow_aspect.Assign(store_data.GetEyebrowAspect()); appearance_bits5.eyebrow_aspect.Assign(store_data.GetEyebrowAspect());
appearance_bits5.eyebrow_rotate.Assign(store_data.GetEyebrowRotate()); appearance_bits5.eyebrow_rotate.Assign(store_data.GetEyebrowRotate());
appearance_bits5.eyebrow_x.Assign(store_data.GetEyebrowX()); appearance_bits5.eyebrow_x.Assign(store_data.GetEyebrowX());
appearance_bits5.eyebrow_y.Assign(store_data.GetEyebrowY()); appearance_bits5.eyebrow_y.Assign(store_data.GetEyebrowY());
appearance_bits6.nose_type.Assign(store_data.GetNoseType()); appearance_bits6.nose_type.Assign(static_cast<u8>(store_data.GetNoseType()));
appearance_bits6.nose_scale.Assign(store_data.GetNoseScale()); appearance_bits6.nose_scale.Assign(store_data.GetNoseScale());
appearance_bits6.nose_y.Assign(store_data.GetNoseY()); appearance_bits6.nose_y.Assign(store_data.GetNoseY());
appearance_bits7.mouth_type.Assign(store_data.GetMouthType()); appearance_bits7.mouth_type.Assign(static_cast<u8>(store_data.GetMouthType()));
appearance_bits7.mouth_scale.Assign(store_data.GetMouthScale()); appearance_bits7.mouth_scale.Assign(store_data.GetMouthScale());
appearance_bits7.mouth_aspect.Assign(store_data.GetMouthAspect()); appearance_bits7.mouth_aspect.Assign(store_data.GetMouthAspect());
appearance_bits8.mouth_y.Assign(store_data.GetMouthY()); appearance_bits8.mouth_y.Assign(store_data.GetMouthY());
appearance_bits8.mustache_type.Assign(store_data.GetMustacheType()); appearance_bits8.mustache_type.Assign(static_cast<u8>(store_data.GetMustacheType()));
appearance_bits9.mustache_scale.Assign(store_data.GetMustacheScale()); appearance_bits9.mustache_scale.Assign(store_data.GetMustacheScale());
appearance_bits9.mustache_y.Assign(store_data.GetMustacheY()); appearance_bits9.mustache_y.Assign(store_data.GetMustacheY());
appearance_bits9.beard_type.Assign(store_data.GetBeardType()); appearance_bits9.beard_type.Assign(static_cast<u8>(store_data.GetBeardType()));
appearance_bits10.glass_scale.Assign(store_data.GetGlassScale()); appearance_bits10.glass_scale.Assign(store_data.GetGlassScale());
appearance_bits10.glass_y.Assign(store_data.GetGlassY()); appearance_bits10.glass_y.Assign(store_data.GetGlassY());
appearance_bits11.mole_type.Assign(store_data.GetMoleType()); appearance_bits11.mole_type.Assign(static_cast<u8>(store_data.GetMoleType()));
appearance_bits11.mole_scale.Assign(store_data.GetMoleScale()); appearance_bits11.mole_scale.Assign(store_data.GetMoleScale());
appearance_bits11.mole_x.Assign(store_data.GetMoleX()); appearance_bits11.mole_x.Assign(store_data.GetMoleX());
appearance_bits11.mole_y.Assign(store_data.GetMoleY()); appearance_bits11.mole_y.Assign(store_data.GetMoleY());
// These types are converted to V3 from a table // These types are converted to V3 from a table
appearance_bits1.faceline_color.Assign( appearance_bits1.faceline_color.Assign(
RawData::FromVer3GetFacelineColor(store_data.GetFacelineColor())); RawData::FromVer3GetFacelineColor(static_cast<u8>(store_data.GetFacelineColor())));
appearance_bits3.hair_color.Assign(RawData::FromVer3GetHairColor(store_data.GetHairColor())); appearance_bits3.hair_color.Assign(
appearance_bits4.eye_color.Assign(RawData::FromVer3GetEyeColor(store_data.GetEyeColor())); RawData::FromVer3GetHairColor(static_cast<u8>(store_data.GetHairColor())));
appearance_bits4.eye_color.Assign(
RawData::FromVer3GetEyeColor(static_cast<u8>(store_data.GetEyeColor())));
appearance_bits5.eyebrow_color.Assign( appearance_bits5.eyebrow_color.Assign(
RawData::FromVer3GetHairColor(store_data.GetEyebrowColor())); RawData::FromVer3GetHairColor(static_cast<u8>(store_data.GetEyebrowColor())));
appearance_bits7.mouth_color.Assign( appearance_bits7.mouth_color.Assign(
RawData::FromVer3GetMouthlineColor(store_data.GetMouthColor())); RawData::FromVer3GetMouthlineColor(static_cast<u8>(store_data.GetMouthColor())));
appearance_bits9.beard_color.Assign(RawData::FromVer3GetHairColor(store_data.GetBeardColor())); appearance_bits9.beard_color.Assign(
RawData::FromVer3GetHairColor(static_cast<u8>(store_data.GetBeardColor())));
appearance_bits10.glass_color.Assign( appearance_bits10.glass_color.Assign(
RawData::FromVer3GetGlassColor(store_data.GetGlassColor())); RawData::FromVer3GetGlassColor(static_cast<u8>(store_data.GetGlassColor())));
appearance_bits10.glass_type.Assign(RawData::FromVer3GetGlassType(store_data.GetGlassType())); appearance_bits10.glass_type.Assign(
RawData::FromVer3GetGlassType(static_cast<u8>(store_data.GetGlassType())));
crc = MiiUtil::CalculateCrc16(&version, sizeof(Ver3StoreData) - sizeof(u16)); crc = MiiUtil::CalculateCrc16(&version, sizeof(Ver3StoreData) - sizeof(u16));
} }
@ -166,64 +175,65 @@ void Ver3StoreData::BuildFromStoreData(const StoreData& store_data) {
u32 Ver3StoreData::IsValid() const { u32 Ver3StoreData::IsValid() const {
bool is_valid = version == 0 || version == 3; bool is_valid = version == 0 || version == 3;
is_valid = is_valid && (mii_name.data[0] != 0); is_valid = is_valid && (mii_name.data[0] != '\0');
is_valid = is_valid && (mii_information.birth_month < 13); is_valid = is_valid && (mii_information.birth_month < 13);
is_valid = is_valid && (mii_information.birth_day < 32); is_valid = is_valid && (mii_information.birth_day < 32);
is_valid = is_valid && (mii_information.favorite_color < 12); is_valid = is_valid && (mii_information.favorite_color <= static_cast<u8>(FavoriteColor::Max));
is_valid = is_valid && (height < 128); is_valid = is_valid && (height <= MaxHeight);
is_valid = is_valid && (build < 128); is_valid = is_valid && (build <= MaxBuild);
is_valid = is_valid && (appearance_bits1.faceline_type < 12); is_valid = is_valid && (appearance_bits1.faceline_type <= static_cast<u8>(FacelineType::Max));
is_valid = is_valid && (appearance_bits1.faceline_color < 7); is_valid = is_valid && (appearance_bits1.faceline_color <= MaxVer3CommonColor - 2);
is_valid = is_valid && (appearance_bits2.faceline_wrinkle < 12); is_valid =
is_valid = is_valid && (appearance_bits2.faceline_make < 12); is_valid && (appearance_bits2.faceline_wrinkle <= static_cast<u8>(FacelineWrinkle::Max));
is_valid = is_valid && (appearance_bits2.faceline_make <= static_cast<u8>(FacelineMake::Max));
is_valid = is_valid && (hair_type < 132); is_valid = is_valid && (hair_type <= static_cast<u8>(HairType::Max));
is_valid = is_valid && (appearance_bits3.hair_color < 8); is_valid = is_valid && (appearance_bits3.hair_color <= MaxVer3CommonColor);
is_valid = is_valid && (appearance_bits4.eye_type < 60); is_valid = is_valid && (appearance_bits4.eye_type <= static_cast<u8>(EyeType::Max));
is_valid = is_valid && (appearance_bits4.eye_color < 6); is_valid = is_valid && (appearance_bits4.eye_color <= MaxVer3CommonColor - 2);
is_valid = is_valid && (appearance_bits4.eye_scale < 8); is_valid = is_valid && (appearance_bits4.eye_scale <= MaxEyeScale);
is_valid = is_valid && (appearance_bits4.eye_aspect < 7); is_valid = is_valid && (appearance_bits4.eye_aspect <= MaxEyeAspect);
is_valid = is_valid && (appearance_bits4.eye_rotate < 8); is_valid = is_valid && (appearance_bits4.eye_rotate <= MaxEyeRotate);
is_valid = is_valid && (appearance_bits4.eye_x < 13); is_valid = is_valid && (appearance_bits4.eye_x <= MaxEyeX);
is_valid = is_valid && (appearance_bits4.eye_y < 19); is_valid = is_valid && (appearance_bits4.eye_y <= MaxEyeY);
is_valid = is_valid && (appearance_bits5.eyebrow_type < 25); is_valid = is_valid && (appearance_bits5.eyebrow_type <= static_cast<u8>(EyebrowType::Max));
is_valid = is_valid && (appearance_bits5.eyebrow_color < 8); is_valid = is_valid && (appearance_bits5.eyebrow_color <= MaxVer3CommonColor);
is_valid = is_valid && (appearance_bits5.eyebrow_scale < 9); is_valid = is_valid && (appearance_bits5.eyebrow_scale <= MaxEyebrowScale);
is_valid = is_valid && (appearance_bits5.eyebrow_aspect < 7); is_valid = is_valid && (appearance_bits5.eyebrow_aspect <= MaxEyebrowAspect);
is_valid = is_valid && (appearance_bits5.eyebrow_rotate < 12); is_valid = is_valid && (appearance_bits5.eyebrow_rotate <= MaxEyebrowRotate);
is_valid = is_valid && (appearance_bits5.eyebrow_x < 12); is_valid = is_valid && (appearance_bits5.eyebrow_x <= MaxEyebrowX);
is_valid = is_valid && (appearance_bits5.eyebrow_y < 19); is_valid = is_valid && (appearance_bits5.eyebrow_y <= MaxEyebrowY);
is_valid = is_valid && (appearance_bits6.nose_type < 18); is_valid = is_valid && (appearance_bits6.nose_type <= static_cast<u8>(NoseType::Max));
is_valid = is_valid && (appearance_bits6.nose_scale < 9); is_valid = is_valid && (appearance_bits6.nose_scale <= MaxNoseScale);
is_valid = is_valid && (appearance_bits6.nose_y < 19); is_valid = is_valid && (appearance_bits6.nose_y <= MaxNoseY);
is_valid = is_valid && (appearance_bits7.mouth_type < 36); is_valid = is_valid && (appearance_bits7.mouth_type <= static_cast<u8>(MouthType::Max));
is_valid = is_valid && (appearance_bits7.mouth_color < 5); is_valid = is_valid && (appearance_bits7.mouth_color <= MaxVer3CommonColor - 3);
is_valid = is_valid && (appearance_bits7.mouth_scale < 9); is_valid = is_valid && (appearance_bits7.mouth_scale <= MaxMouthScale);
is_valid = is_valid && (appearance_bits7.mouth_aspect < 7); is_valid = is_valid && (appearance_bits7.mouth_aspect <= MaxMoutAspect);
is_valid = is_valid && (appearance_bits8.mouth_y < 19); is_valid = is_valid && (appearance_bits8.mouth_y <= MaxMouthY);
is_valid = is_valid && (appearance_bits8.mustache_type < 6); is_valid = is_valid && (appearance_bits8.mustache_type <= static_cast<u8>(MustacheType::Max));
is_valid = is_valid && (appearance_bits9.mustache_scale < 7); is_valid = is_valid && (appearance_bits9.mustache_scale < MaxMustacheScale);
is_valid = is_valid && (appearance_bits9.mustache_y < 17); is_valid = is_valid && (appearance_bits9.mustache_y <= MasMustacheY);
is_valid = is_valid && (appearance_bits9.beard_type < 6); is_valid = is_valid && (appearance_bits9.beard_type <= static_cast<u8>(BeardType::Max));
is_valid = is_valid && (appearance_bits9.beard_color < 8); is_valid = is_valid && (appearance_bits9.beard_color <= MaxVer3CommonColor);
is_valid = is_valid && (appearance_bits10.glass_type < 9); is_valid = is_valid && (appearance_bits10.glass_type <= MaxVer3GlassType);
is_valid = is_valid && (appearance_bits10.glass_color < 6); is_valid = is_valid && (appearance_bits10.glass_color <= MaxVer3CommonColor - 2);
is_valid = is_valid && (appearance_bits10.glass_scale < 8); is_valid = is_valid && (appearance_bits10.glass_scale <= MaxGlassScale);
is_valid = is_valid && (appearance_bits10.glass_y < 21); is_valid = is_valid && (appearance_bits10.glass_y <= MaxGlassScale);
is_valid = is_valid && (appearance_bits11.mole_type < 2); is_valid = is_valid && (appearance_bits11.mole_type <= static_cast<u8>(MoleType::Max));
is_valid = is_valid && (appearance_bits11.mole_scale < 9); is_valid = is_valid && (appearance_bits11.mole_scale <= MaxMoleScale);
is_valid = is_valid && (appearance_bits11.mole_x < 17); is_valid = is_valid && (appearance_bits11.mole_x <= MaxMoleX);
is_valid = is_valid && (appearance_bits11.mole_y < 31); is_valid = is_valid && (appearance_bits11.mole_y <= MaxMoleY);
return is_valid; return is_valid;
} }