nfc: Improve implementation of GetAmiiboConfig

When making the initial implementation, I forgot to add the series variable to the AmiiboConfig struct.
With this PR it is added and many of the AmiiboConfig fields get their proper values now.
The loading of the Amiibo data that is added here has been hwtested.

This fixes Amiibos in Yoshis Woolly World, Smash (partially) and probably other games too.
This commit is contained in:
fearlessTobi 2019-03-12 19:08:01 +01:00
parent acaca4188e
commit ff3d7532c9

View file

@ -27,6 +27,7 @@ struct AmiiboConfig {
u8 lastwritedate_day; u8 lastwritedate_day;
u16_le write_counter; u16_le write_counter;
std::array<u8, 3> characterID; std::array<u8, 3> characterID;
u8 series;
u16_le amiiboID; u16_le amiiboID;
u8 type; u8 type;
u8 pagex4_byte3; u8 pagex4_byte3;
@ -141,7 +142,14 @@ void Module::Interface::GetAmiiboConfig(Kernel::HLERequestContext& ctx) {
amiibo_config.lastwritedate_year = 2017; amiibo_config.lastwritedate_year = 2017;
amiibo_config.lastwritedate_month = 10; amiibo_config.lastwritedate_month = 10;
amiibo_config.lastwritedate_day = 10; amiibo_config.lastwritedate_day = 10;
// TODO(FearlessTobi): Find the right values for the struct amiibo_config.write_counter = 0x0;
std::memcpy(amiibo_config.characterID.data(), &nfc->amiibo_data.char_id,
sizeof(nfc->amiibo_data.char_id));
amiibo_config.series = nfc->amiibo_data.series;
amiibo_config.amiiboID = nfc->amiibo_data.model_number;
amiibo_config.type = nfc->amiibo_data.figure_type;
amiibo_config.pagex4_byte3 = 0x0;
amiibo_config.appdata_size = 0xD8;
IPC::RequestBuilder rb = rp.MakeBuilder(17, 0); IPC::RequestBuilder rb = rp.MakeBuilder(17, 0);
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);