diff options
| -rw-r--r-- | src/core/hle/service/am/applets/applet_mii_edit.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.h | 1 | ||||
| -rw-r--r-- | src/core/hle/service/mii/raw_data.cpp | 105 | ||||
| -rw-r--r-- | src/core/hle/service/mii/raw_data.h | 1 | ||||
| -rw-r--r-- | src/core/hle/service/nfc/common/device.cpp | 4 |
6 files changed, 118 insertions, 7 deletions
diff --git a/src/core/hle/service/am/applets/applet_mii_edit.cpp b/src/core/hle/service/am/applets/applet_mii_edit.cpp index d1f652c09..f8e2bac32 100644 --- a/src/core/hle/service/am/applets/applet_mii_edit.cpp +++ b/src/core/hle/service/am/applets/applet_mii_edit.cpp | |||
| @@ -90,7 +90,7 @@ void MiiEdit::Execute() { | |||
| 90 | const MiiEditCharInfo char_info{ | 90 | const MiiEditCharInfo char_info{ |
| 91 | .mii_info{applet_input_common.applet_mode == MiiEditAppletMode::EditMii | 91 | .mii_info{applet_input_common.applet_mode == MiiEditAppletMode::EditMii |
| 92 | ? applet_input_v4.char_info.mii_info | 92 | ? applet_input_v4.char_info.mii_info |
| 93 | : mii_manager.BuildDefault(0)}, | 93 | : mii_manager.BuildBase(Mii::Gender::Male)}, |
| 94 | }; | 94 | }; |
| 95 | 95 | ||
| 96 | MiiEditOutputForCharInfoEditing(MiiEditResult::Success, char_info); | 96 | MiiEditOutputForCharInfoEditing(MiiEditResult::Success, char_info); |
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp index 6b966f20d..dd632df50 100644 --- a/src/core/hle/service/mii/mii_manager.cpp +++ b/src/core/hle/service/mii/mii_manager.cpp | |||
| @@ -18,7 +18,6 @@ namespace { | |||
| 18 | 18 | ||
| 19 | constexpr Result ERROR_CANNOT_FIND_ENTRY{ErrorModule::Mii, 4}; | 19 | constexpr Result ERROR_CANNOT_FIND_ENTRY{ErrorModule::Mii, 4}; |
| 20 | 20 | ||
| 21 | constexpr std::size_t BaseMiiCount{2}; | ||
| 22 | constexpr std::size_t DefaultMiiCount{RawData::DefaultMii.size()}; | 21 | constexpr std::size_t DefaultMiiCount{RawData::DefaultMii.size()}; |
| 23 | 22 | ||
| 24 | constexpr MiiStoreData::Name DefaultMiiName{u'n', u'o', u' ', u'n', u'a', u'm', u'e'}; | 23 | constexpr MiiStoreData::Name DefaultMiiName{u'n', u'o', u' ', u'n', u'a', u'm', u'e'}; |
| @@ -404,7 +403,7 @@ u32 MiiManager::GetCount(SourceFlag source_flag) const { | |||
| 404 | count += 0; | 403 | count += 0; |
| 405 | } | 404 | } |
| 406 | if ((source_flag & SourceFlag::Default) != SourceFlag::None) { | 405 | if ((source_flag & SourceFlag::Default) != SourceFlag::None) { |
| 407 | count += (DefaultMiiCount - BaseMiiCount); | 406 | count += DefaultMiiCount; |
| 408 | } | 407 | } |
| 409 | return static_cast<u32>(count); | 408 | return static_cast<u32>(count); |
| 410 | } | 409 | } |
| @@ -422,13 +421,18 @@ CharInfo MiiManager::BuildRandom(Age age, Gender gender, Race race) { | |||
| 422 | return ConvertStoreDataToInfo(BuildRandomStoreData(age, gender, race, user_id)); | 421 | return ConvertStoreDataToInfo(BuildRandomStoreData(age, gender, race, user_id)); |
| 423 | } | 422 | } |
| 424 | 423 | ||
| 424 | CharInfo MiiManager::BuildBase(Gender gender) { | ||
| 425 | const std::size_t index = gender == Gender::Female ? 1 : 0; | ||
| 426 | return ConvertStoreDataToInfo(BuildDefaultStoreData(RawData::BaseMii.at(index), user_id)); | ||
| 427 | } | ||
| 428 | |||
| 425 | CharInfo MiiManager::BuildDefault(std::size_t index) { | 429 | CharInfo MiiManager::BuildDefault(std::size_t index) { |
| 426 | return ConvertStoreDataToInfo(BuildDefaultStoreData(RawData::DefaultMii.at(index), user_id)); | 430 | return ConvertStoreDataToInfo(BuildDefaultStoreData(RawData::DefaultMii.at(index), user_id)); |
| 427 | } | 431 | } |
| 428 | 432 | ||
| 429 | CharInfo MiiManager::ConvertV3ToCharInfo(const Ver3StoreData& mii_v3) const { | 433 | CharInfo MiiManager::ConvertV3ToCharInfo(const Ver3StoreData& mii_v3) const { |
| 430 | Service::Mii::MiiManager manager; | 434 | Service::Mii::MiiManager manager; |
| 431 | auto mii = manager.BuildDefault(0); | 435 | auto mii = manager.BuildBase(Mii::Gender::Male); |
| 432 | 436 | ||
| 433 | if (!ValidateV3Info(mii_v3)) { | 437 | if (!ValidateV3Info(mii_v3)) { |
| 434 | return mii; | 438 | return mii; |
| @@ -678,7 +682,7 @@ std::vector<MiiInfoElement> MiiManager::GetDefault(SourceFlag source_flag) { | |||
| 678 | return result; | 682 | return result; |
| 679 | } | 683 | } |
| 680 | 684 | ||
| 681 | for (std::size_t index = BaseMiiCount; index < DefaultMiiCount; index++) { | 685 | for (std::size_t index = 0; index < DefaultMiiCount; index++) { |
| 682 | result.emplace_back(BuildDefault(index), Source::Default); | 686 | result.emplace_back(BuildDefault(index), Source::Default); |
| 683 | } | 687 | } |
| 684 | 688 | ||
diff --git a/src/core/hle/service/mii/mii_manager.h b/src/core/hle/service/mii/mii_manager.h index 45c2be3c8..0c8295ebe 100644 --- a/src/core/hle/service/mii/mii_manager.h +++ b/src/core/hle/service/mii/mii_manager.h | |||
| @@ -21,6 +21,7 @@ public: | |||
| 21 | u32 GetCount(SourceFlag source_flag) const; | 21 | u32 GetCount(SourceFlag source_flag) const; |
| 22 | Result UpdateLatest(CharInfo* out_info, const CharInfo& info, SourceFlag source_flag); | 22 | Result UpdateLatest(CharInfo* out_info, const CharInfo& info, SourceFlag source_flag); |
| 23 | CharInfo BuildRandom(Age age, Gender gender, Race race); | 23 | CharInfo BuildRandom(Age age, Gender gender, Race race); |
| 24 | CharInfo BuildBase(Gender gender); | ||
| 24 | CharInfo BuildDefault(std::size_t index); | 25 | CharInfo BuildDefault(std::size_t index); |
| 25 | CharInfo ConvertV3ToCharInfo(const Ver3StoreData& mii_v3) const; | 26 | CharInfo ConvertV3ToCharInfo(const Ver3StoreData& mii_v3) const; |
| 26 | bool ValidateV3Info(const Ver3StoreData& mii_v3) const; | 27 | bool ValidateV3Info(const Ver3StoreData& mii_v3) const; |
diff --git a/src/core/hle/service/mii/raw_data.cpp b/src/core/hle/service/mii/raw_data.cpp index 80369cdb0..e5245b791 100644 --- a/src/core/hle/service/mii/raw_data.cpp +++ b/src/core/hle/service/mii/raw_data.cpp | |||
| @@ -5,6 +5,111 @@ | |||
| 5 | 5 | ||
| 6 | namespace Service::Mii::RawData { | 6 | namespace Service::Mii::RawData { |
| 7 | 7 | ||
| 8 | const std::array<Service::Mii::DefaultMii, 2> BaseMii{ | ||
| 9 | Service::Mii::DefaultMii{ | ||
| 10 | .face_type = 0, | ||
| 11 | .face_color = 0, | ||
| 12 | .face_wrinkle = 0, | ||
| 13 | .face_makeup = 0, | ||
| 14 | .hair_type = 33, | ||
| 15 | .hair_color = 1, | ||
| 16 | .hair_flip = 0, | ||
| 17 | .eye_type = 2, | ||
| 18 | .eye_color = 0, | ||
| 19 | .eye_scale = 4, | ||
| 20 | .eye_aspect = 3, | ||
| 21 | .eye_rotate = 4, | ||
| 22 | .eye_x = 2, | ||
| 23 | .eye_y = 12, | ||
| 24 | .eyebrow_type = 6, | ||
| 25 | .eyebrow_color = 1, | ||
| 26 | .eyebrow_scale = 4, | ||
| 27 | .eyebrow_aspect = 3, | ||
| 28 | .eyebrow_rotate = 6, | ||
| 29 | .eyebrow_x = 2, | ||
| 30 | .eyebrow_y = 10, | ||
| 31 | .nose_type = 1, | ||
| 32 | .nose_scale = 4, | ||
| 33 | .nose_y = 9, | ||
| 34 | .mouth_type = 23, | ||
| 35 | .mouth_color = 0, | ||
| 36 | .mouth_scale = 4, | ||
| 37 | .mouth_aspect = 3, | ||
| 38 | .mouth_y = 13, | ||
| 39 | .mustache_type = 0, | ||
| 40 | .beard_type = 0, | ||
| 41 | .beard_color = 0, | ||
| 42 | .mustache_scale = 4, | ||
| 43 | .mustache_y = 10, | ||
| 44 | .glasses_type = 0, | ||
| 45 | .glasses_color = 0, | ||
| 46 | .glasses_scale = 4, | ||
| 47 | .glasses_y = 10, | ||
| 48 | .mole_type = 0, | ||
| 49 | .mole_scale = 4, | ||
| 50 | .mole_x = 2, | ||
| 51 | .mole_y = 20, | ||
| 52 | .height = 64, | ||
| 53 | .weight = 64, | ||
| 54 | .gender = Gender::Male, | ||
| 55 | .favorite_color = 0, | ||
| 56 | .region = 0, | ||
| 57 | .font_region = FontRegion::Standard, | ||
| 58 | .type = 0, | ||
| 59 | }, | ||
| 60 | Service::Mii::DefaultMii{ | ||
| 61 | .face_type = 0, | ||
| 62 | .face_color = 0, | ||
| 63 | .face_wrinkle = 0, | ||
| 64 | .face_makeup = 0, | ||
| 65 | .hair_type = 12, | ||
| 66 | .hair_color = 1, | ||
| 67 | .hair_flip = 0, | ||
| 68 | .eye_type = 4, | ||
| 69 | .eye_color = 0, | ||
| 70 | .eye_scale = 4, | ||
| 71 | .eye_aspect = 3, | ||
| 72 | .eye_rotate = 3, | ||
| 73 | .eye_x = 2, | ||
| 74 | .eye_y = 12, | ||
| 75 | .eyebrow_type = 0, | ||
| 76 | .eyebrow_color = 1, | ||
| 77 | .eyebrow_scale = 4, | ||
| 78 | .eyebrow_aspect = 3, | ||
| 79 | .eyebrow_rotate = 6, | ||
| 80 | .eyebrow_x = 2, | ||
| 81 | .eyebrow_y = 10, | ||
| 82 | .nose_type = 1, | ||
| 83 | .nose_scale = 4, | ||
| 84 | .nose_y = 9, | ||
| 85 | .mouth_type = 23, | ||
| 86 | .mouth_color = 0, | ||
| 87 | .mouth_scale = 4, | ||
| 88 | .mouth_aspect = 3, | ||
| 89 | .mouth_y = 13, | ||
| 90 | .mustache_type = 0, | ||
| 91 | .beard_type = 0, | ||
| 92 | .beard_color = 0, | ||
| 93 | .mustache_scale = 4, | ||
| 94 | .mustache_y = 10, | ||
| 95 | .glasses_type = 0, | ||
| 96 | .glasses_color = 0, | ||
| 97 | .glasses_scale = 4, | ||
| 98 | .glasses_y = 10, | ||
| 99 | .mole_type = 0, | ||
| 100 | .mole_scale = 4, | ||
| 101 | .mole_x = 2, | ||
| 102 | .mole_y = 20, | ||
| 103 | .height = 64, | ||
| 104 | .weight = 64, | ||
| 105 | .gender = Gender::Female, | ||
| 106 | .favorite_color = 0, | ||
| 107 | .region = 0, | ||
| 108 | .font_region = FontRegion::Standard, | ||
| 109 | .type = 0, | ||
| 110 | }, | ||
| 111 | }; | ||
| 112 | |||
| 8 | const std::array<Service::Mii::DefaultMii, 6> DefaultMii{ | 113 | const std::array<Service::Mii::DefaultMii, 6> DefaultMii{ |
| 9 | Service::Mii::DefaultMii{ | 114 | Service::Mii::DefaultMii{ |
| 10 | .face_type = 0, | 115 | .face_type = 0, |
diff --git a/src/core/hle/service/mii/raw_data.h b/src/core/hle/service/mii/raw_data.h index 5b81b013b..cdd2337d6 100644 --- a/src/core/hle/service/mii/raw_data.h +++ b/src/core/hle/service/mii/raw_data.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | namespace Service::Mii::RawData { | 10 | namespace Service::Mii::RawData { |
| 11 | 11 | ||
| 12 | extern const std::array<Service::Mii::DefaultMii, 2> BaseMii; | ||
| 12 | extern const std::array<Service::Mii::DefaultMii, 6> DefaultMii; | 13 | extern const std::array<Service::Mii::DefaultMii, 6> DefaultMii; |
| 13 | extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFaceline; | 14 | extern const std::array<Service::Mii::RandomMiiData4, 18> RandomMiiFaceline; |
| 14 | extern const std::array<Service::Mii::RandomMiiData3, 6> RandomMiiFacelineColor; | 15 | extern const std::array<Service::Mii::RandomMiiData3, 6> RandomMiiFacelineColor; |
diff --git a/src/core/hle/service/nfc/common/device.cpp b/src/core/hle/service/nfc/common/device.cpp index 49446bc42..5df40f9a0 100644 --- a/src/core/hle/service/nfc/common/device.cpp +++ b/src/core/hle/service/nfc/common/device.cpp | |||
| @@ -826,7 +826,7 @@ Result NfcDevice::SetRegisterInfoPrivate(const NFP::RegisterInfoPrivate& registe | |||
| 826 | } | 826 | } |
| 827 | 827 | ||
| 828 | Service::Mii::MiiManager manager; | 828 | Service::Mii::MiiManager manager; |
| 829 | const auto mii = manager.BuildDefault(0); | 829 | const auto mii = manager.BuildBase(Mii::Gender::Male); |
| 830 | auto& settings = tag_data.settings; | 830 | auto& settings = tag_data.settings; |
| 831 | 831 | ||
| 832 | if (tag_data.settings.settings.amiibo_initialized == 0) { | 832 | if (tag_data.settings.settings.amiibo_initialized == 0) { |
| @@ -1467,7 +1467,7 @@ void NfcDevice::BuildAmiiboWithoutKeys(NFP::NTAG215File& stubbed_tag_data, | |||
| 1467 | SetAmiiboName(settings, {'y', 'u', 'z', 'u', 'A', 'm', 'i', 'i', 'b', 'o'}); | 1467 | SetAmiiboName(settings, {'y', 'u', 'z', 'u', 'A', 'm', 'i', 'i', 'b', 'o'}); |
| 1468 | settings.settings.font_region.Assign(0); | 1468 | settings.settings.font_region.Assign(0); |
| 1469 | settings.init_date = GetAmiiboDate(GetCurrentPosixTime()); | 1469 | settings.init_date = GetAmiiboDate(GetCurrentPosixTime()); |
| 1470 | stubbed_tag_data.owner_mii = manager.BuildFromStoreData(manager.BuildDefault(0)); | 1470 | stubbed_tag_data.owner_mii = manager.BuildFromStoreData(manager.BuildBase(Mii::Gender::Male)); |
| 1471 | 1471 | ||
| 1472 | // Admin info | 1472 | // Admin info |
| 1473 | settings.settings.amiibo_initialized.Assign(1); | 1473 | settings.settings.amiibo_initialized.Assign(1); |