Added Amiibo support (#1390)

* Fixed conflict with nfp

* Few fixups for nfc

* Conflict 2

* Fixed AttachAvailabilityChangeEvent

* Conflict 3

* Fixed byte padding

* Refactored amiibo to not reside in "System"

* Removed remaining references of nfc from system

* used enum for Nfc GetStateOld

* Added missing newline

* Moved file operations to front end

* Conflict 4

* Amiibos now use structs and added mutexes

* Removed amiibo_path
This commit is contained in:
David
2018-10-24 10:28:17 +11:00
committed by bunnei
parent 5edb2403c2
commit 50e4e81fd3
12 changed files with 386 additions and 80 deletions

View File

@@ -4,6 +4,9 @@
#pragma once
#include <array>
#include <vector>
#include "core/hle/kernel/event.h"
#include "core/hle/service/service.h"
namespace Service::NFP {
@@ -15,7 +18,27 @@ public:
explicit Interface(std::shared_ptr<Module> module, const char* name);
~Interface() override;
struct ModelInfo {
std::array<u8, 0x8> amiibo_identification_block;
INSERT_PADDING_BYTES(0x38);
};
static_assert(sizeof(ModelInfo) == 0x40, "ModelInfo is an invalid size");
struct AmiiboFile {
std::array<u8, 10> uuid;
INSERT_PADDING_BYTES(0x4a);
ModelInfo model_info;
};
static_assert(sizeof(AmiiboFile) == 0x94, "AmiiboFile is an invalid size");
void CreateUserInterface(Kernel::HLERequestContext& ctx);
void LoadAmiibo(const std::vector<u8>& buffer);
const Kernel::SharedPtr<Kernel::Event>& GetNFCEvent() const;
const AmiiboFile& GetAmiiboBuffer() const;
private:
Kernel::SharedPtr<Kernel::Event> nfc_tag_load{};
AmiiboFile amiibo{};
protected:
std::shared_ptr<Module> module;