From 5031f5b8b07dcabf727cf5530f2e00c396de7ea0 Mon Sep 17 00:00:00 2001 From: Narr the Reg Date: Wed, 15 Mar 2023 01:39:11 -0600 Subject: service: nfp: Convert mii colors to v3 --- src/core/hle/service/nfp/amiibo_crypto.cpp | 2 ++ src/core/hle/service/nfp/nfp_device.cpp | 10 +++++++--- src/core/hle/service/nfp/nfp_types.h | 6 ++++-- 3 files changed, 13 insertions(+), 5 deletions(-) (limited to 'src/core/hle/service/nfp') diff --git a/src/core/hle/service/nfp/amiibo_crypto.cpp b/src/core/hle/service/nfp/amiibo_crypto.cpp index 66773d26c..bba862fb2 100644 --- a/src/core/hle/service/nfp/amiibo_crypto.cpp +++ b/src/core/hle/service/nfp/amiibo_crypto.cpp @@ -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; diff --git a/src/core/hle/service/nfp/nfp_device.cpp b/src/core/hle/service/nfp/nfp_device.cpp index 53bc56814..c5d8ceeff 100644 --- a/src/core/hle/service/nfp/nfp_device.cpp +++ b/src/core/hle/service/nfp/nfp_device.cpp @@ -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 unknown2; + Mii::NfpStoreDataExtension mii_extension; + std::array 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, }; diff --git a/src/core/hle/service/nfp/nfp_types.h b/src/core/hle/service/nfp/nfp_types.h index 5f4a5d7f9..b3599a513 100644 --- a/src/core/hle/service/nfp/nfp_types.h +++ b/src/core/hle/service/nfp/nfp_types.h @@ -259,7 +259,8 @@ struct EncryptedAmiiboFile { u32_be application_area_id; // Encrypted Game id u8 application_id_byte; u8 unknown; - std::array unknown2; + Service::Mii::NfpStoreDataExtension mii_extension; + std::array 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 unknown2; + Service::Mii::NfpStoreDataExtension mii_extension; + std::array unknown2; u32_be register_info_crc; ApplicationArea application_area; // Encrypted Game data HashData hmac_tag; // Hash -- cgit v1.2.3