|
|
|
@ -365,10 +365,68 @@ struct Ver3StoreData {
|
|
|
|
|
} appearance_bits11;
|
|
|
|
|
|
|
|
|
|
std::array<u16_le, 0xA> author_name;
|
|
|
|
|
INSERT_PADDING_BYTES(0x4);
|
|
|
|
|
INSERT_PADDING_BYTES(0x2);
|
|
|
|
|
u16_be crc;
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(Ver3StoreData) == 0x60, "Ver3StoreData is an invalid size");
|
|
|
|
|
|
|
|
|
|
struct NfpStoreDataExtension {
|
|
|
|
|
u8 faceline_color;
|
|
|
|
|
u8 hair_color;
|
|
|
|
|
u8 eye_color;
|
|
|
|
|
u8 eyebrow_color;
|
|
|
|
|
u8 mouth_color;
|
|
|
|
|
u8 beard_color;
|
|
|
|
|
u8 glass_color;
|
|
|
|
|
u8 glass_type;
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(NfpStoreDataExtension) == 0x8, "NfpStoreDataExtension is an invalid size");
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 0x10> Ver3FacelineColorTable{
|
|
|
|
|
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x0, 0x1, 0x5, 0x5,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 100> Ver3HairColorTable{
|
|
|
|
|
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x0, 0x4, 0x3, 0x5, 0x4, 0x4, 0x6, 0x2, 0x0,
|
|
|
|
|
0x6, 0x4, 0x3, 0x2, 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
|
|
|
|
|
0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4,
|
|
|
|
|
0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5,
|
|
|
|
|
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0x5, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7,
|
|
|
|
|
0x7, 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x0, 0x4, 0x4, 0x4, 0x4,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 100> Ver3EyeColorTable{
|
|
|
|
|
0x0, 0x2, 0x2, 0x2, 0x1, 0x3, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x2, 0x2, 0x4,
|
|
|
|
|
0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
|
|
|
|
|
0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x4, 0x4,
|
|
|
|
|
0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
|
|
|
|
|
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2,
|
|
|
|
|
0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 100> Ver3MouthlineColorTable{
|
|
|
|
|
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
|
|
|
|
|
0x4, 0x4, 0x0, 0x1, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x1, 0x4,
|
|
|
|
|
0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
|
|
|
|
|
0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4,
|
|
|
|
|
0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3,
|
|
|
|
|
0x3, 0x3, 0x3, 0x3, 0x4, 0x0, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 100> Ver3GlassColorTable{
|
|
|
|
|
0x0, 0x1, 0x1, 0x1, 0x5, 0x1, 0x1, 0x4, 0x0, 0x5, 0x1, 0x1, 0x3, 0x5, 0x1, 0x2, 0x3,
|
|
|
|
|
0x4, 0x5, 0x4, 0x2, 0x2, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
|
|
|
|
|
0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
|
|
|
|
|
0x3, 0x3, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x0, 0x5, 0x5,
|
|
|
|
|
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x4,
|
|
|
|
|
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr std::array<u8, 20> Ver3GlassTypeTable{
|
|
|
|
|
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x1,
|
|
|
|
|
0x2, 0x1, 0x3, 0x7, 0x7, 0x6, 0x7, 0x8, 0x7, 0x7,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct MiiStoreData {
|
|
|
|
|
using Name = std::array<char16_t, 10>;
|
|
|
|
|
|
|
|
|
|