service: nfp: Convert mii colors to v3

This commit is contained in:
Narr the Reg 2023-03-15 01:39:11 -06:00
parent 026fe2e4f4
commit 5031f5b8b0
6 changed files with 100 additions and 15 deletions

View file

@ -88,6 +88,7 @@ NTAG215File NfcDataToEncodedData(const EncryptedNTAG215File& nfc_data) {
encoded_data.application_area_id = nfc_data.user_memory.application_area_id;
encoded_data.application_id_byte = nfc_data.user_memory.application_id_byte;
encoded_data.unknown = nfc_data.user_memory.unknown;
encoded_data.mii_extension = nfc_data.user_memory.mii_extension;
encoded_data.unknown2 = nfc_data.user_memory.unknown2;
encoded_data.register_info_crc = nfc_data.user_memory.register_info_crc;
encoded_data.application_area = nfc_data.user_memory.application_area;
@ -122,6 +123,7 @@ EncryptedNTAG215File EncodedDataToNfcData(const NTAG215File& encoded_data) {
nfc_data.user_memory.application_area_id = encoded_data.application_area_id;
nfc_data.user_memory.application_id_byte = encoded_data.application_id_byte;
nfc_data.user_memory.unknown = encoded_data.unknown;
nfc_data.user_memory.mii_extension = encoded_data.mii_extension;
nfc_data.user_memory.unknown2 = encoded_data.unknown2;
nfc_data.user_memory.register_info_crc = encoded_data.register_info_crc;
nfc_data.user_memory.application_area = encoded_data.application_area;

View file

@ -471,6 +471,7 @@ Result NfpDevice::SetRegisterInfoPrivate(const AmiiboName& amiibo_name) {
}
Service::Mii::MiiManager manager;
const auto mii = manager.BuildDefault(0);
auto& settings = tag_data.settings;
if (tag_data.settings.settings.amiibo_initialized == 0) {
@ -479,9 +480,10 @@ Result NfpDevice::SetRegisterInfoPrivate(const AmiiboName& amiibo_name) {
}
SetAmiiboName(settings, amiibo_name);
tag_data.owner_mii = manager.ConvertCharInfoToV3(manager.BuildDefault(0));
tag_data.owner_mii = manager.BuildFromStoreData(mii);
tag_data.mii_extension = manager.SetFromStoreData(mii);
tag_data.unknown = 0;
tag_data.unknown2[6] = 0;
tag_data.unknown2 = {};
settings.country_code_id = 0;
settings.settings.font_region.Assign(0);
settings.settings.amiibo_initialized.Assign(1);
@ -840,7 +842,8 @@ void NfpDevice::UpdateRegisterInfoCrc() {
Mii::Ver3StoreData mii;
u8 application_id_byte;
u8 unknown;
std::array<u32, 0x7> unknown2;
Mii::NfpStoreDataExtension mii_extension;
std::array<u32, 0x5> unknown2;
};
static_assert(sizeof(CrcData) == 0x7e, "CrcData is an invalid size");
#pragma pack(pop)
@ -849,6 +852,7 @@ void NfpDevice::UpdateRegisterInfoCrc() {
.mii = tag_data.owner_mii,
.application_id_byte = tag_data.application_id_byte,
.unknown = tag_data.unknown,
.mii_extension = tag_data.mii_extension,
.unknown2 = tag_data.unknown2,
};

View file

@ -259,7 +259,8 @@ struct EncryptedAmiiboFile {
u32_be application_area_id; // Encrypted Game id
u8 application_id_byte;
u8 unknown;
std::array<u32, 0x7> unknown2;
Service::Mii::NfpStoreDataExtension mii_extension;
std::array<u32, 0x5> unknown2;
u32_be register_info_crc;
ApplicationArea application_area; // Encrypted Game data
};
@ -280,7 +281,8 @@ struct NTAG215File {
u32_be application_area_id;
u8 application_id_byte;
u8 unknown;
std::array<u32, 0x7> unknown2;
Service::Mii::NfpStoreDataExtension mii_extension;
std::array<u32, 0x5> unknown2;
u32_be register_info_crc;
ApplicationArea application_area; // Encrypted Game data
HashData hmac_tag; // Hash