|
|
|
@ -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>; |
|
|
|
|
|
|
|
|