wut v1.9.1
Wii U Toolchain
Loading...
Searching...
No Matches
nfp_cpp.h
Go to the documentation of this file.
1#pragma once
2#include <wut.h>
3#include <coreinit/event.h>
4#include <nfc/nfc.h>
5#include <nn/ffl/miidata.h>
6#include <nn/result.h>
7
15#ifdef __cplusplus
16
17namespace nn
18{
19
20namespace nfp
21{
22
47
48enum class NfpState : uint32_t
49{
51 Uninitialized = 0,
53 Initialized = 1,
55 Searching = 2,
57 Found = 3,
59 Removed = 4,
61 Mounted = 5,
62 Unknown6 = 6,
64 MountedROM = 7,
65};
66WUT_CHECK_SIZE(NfpState, 0x4);
67
68enum class AdminFlags : uint8_t
69{
71 IsRegistered = 1 << 0,
73 HasApplicationData = 1 << 1,
74};
75WUT_CHECK_SIZE(AdminFlags, 0x1);
76
77enum class TagType : uint8_t
78{
79 Unknown = 0,
80 Type1Tag = 1 << 0,
81 Type2Tag = 1 << 1,
82 Type3Tag = 1 << 2,
83 Iso15693 = 1 << 5,
84};
85WUT_CHECK_SIZE(TagType, 0x1);
86
87struct Date
88{
90 uint16_t year;
92 uint8_t month;
94 uint8_t day;
95};
96WUT_CHECK_OFFSET(Date, 0x0, year);
97WUT_CHECK_OFFSET(Date, 0x2, month);
98WUT_CHECK_OFFSET(Date, 0x3, day);
99WUT_CHECK_SIZE(Date, 0x4);
100
102{
104 uint32_t accessID;
106 void *data;
108 uint32_t size;
110 uint8_t reserved[0x30];
111};
112WUT_CHECK_OFFSET(ApplicationAreaCreateInfo, 0x0, accessID);
113WUT_CHECK_OFFSET(ApplicationAreaCreateInfo, 0x4, data);
114WUT_CHECK_OFFSET(ApplicationAreaCreateInfo, 0x8, size);
115WUT_CHECK_OFFSET(ApplicationAreaCreateInfo, 0xC, reserved);
116WUT_CHECK_SIZE(ApplicationAreaCreateInfo, 0x3C);
117
118struct TagId
119{
121 uint8_t size;
123 uint8_t uid[10];
124};
125WUT_CHECK_OFFSET(TagId, 0x0, size);
126WUT_CHECK_OFFSET(TagId, 0x1, uid);
127WUT_CHECK_SIZE(TagId, 0xB);
128
142WUT_CHECK_OFFSET(TagInfo, 0x0, id);
143WUT_CHECK_OFFSET(TagInfo, 0xB, reserved0);
144WUT_CHECK_OFFSET(TagInfo, 0x20, technology);
145WUT_CHECK_OFFSET(TagInfo, 0x21, tag_type);
146WUT_CHECK_OFFSET(TagInfo, 0x22, reserved1);
147WUT_CHECK_SIZE(TagInfo, 0x54);
148
150{
154 uint16_t writes;
156 uint8_t characterID[3];
158 uint8_t seriesID;
160 uint16_t numberingID;
162 uint8_t figureType;
168 uint8_t reserved[0x30];
169};
170WUT_CHECK_OFFSET(CommonInfo, 0x0, lastWriteDate);
171WUT_CHECK_OFFSET(CommonInfo, 0x4, writes);
172WUT_CHECK_OFFSET(CommonInfo, 0x6, characterID);
173WUT_CHECK_OFFSET(CommonInfo, 0x9, seriesID);
174WUT_CHECK_OFFSET(CommonInfo, 0xA, numberingID);
175WUT_CHECK_OFFSET(CommonInfo, 0xC, figureType);
176WUT_CHECK_OFFSET(CommonInfo, 0xD, figureVersion);
177WUT_CHECK_OFFSET(CommonInfo, 0xE, applicationAreaSize);
178WUT_CHECK_OFFSET(CommonInfo, 0x10, reserved);
179WUT_CHECK_SIZE(CommonInfo, 0x40);
180
181struct WUT_PACKED RegisterInfo
182{
186 uint16_t name[11];
188 uint8_t fontRegion;
190 uint8_t country;
194 uint8_t reserved[0x2c];
195};
196WUT_CHECK_OFFSET(RegisterInfo, 0x0, mii);
197WUT_CHECK_OFFSET(RegisterInfo, 0x60, name);
198WUT_CHECK_OFFSET(RegisterInfo, 0x76, fontRegion);
199WUT_CHECK_OFFSET(RegisterInfo, 0x77, country);
200WUT_CHECK_OFFSET(RegisterInfo, 0x78, registerDate);
201WUT_CHECK_OFFSET(RegisterInfo, 0x7C, reserved);
202WUT_CHECK_SIZE(RegisterInfo, 0xA8);
203
204struct WUT_PACKED ReadOnlyInfo
205{
207 uint8_t characterID[3];
209 uint8_t seriesID;
211 uint16_t numberingID;
213 uint8_t figureType;
215 uint8_t reserved[0x2f];
216};
217WUT_CHECK_OFFSET(ReadOnlyInfo, 0x0, characterID);
218WUT_CHECK_OFFSET(ReadOnlyInfo, 0x3, seriesID);
219WUT_CHECK_OFFSET(ReadOnlyInfo, 0x4, numberingID);
220WUT_CHECK_OFFSET(ReadOnlyInfo, 0x6, figureType);
221WUT_CHECK_OFFSET(ReadOnlyInfo, 0x7, reserved);
222WUT_CHECK_SIZE(ReadOnlyInfo, 0x36);
223
224// seems to be the same as ReadOnlyInfo
225// maybe left over from an older library version?
227WUT_CHECK_SIZE(RomInfo, 0x36);
228
229struct WUT_PACKED RegisterInfoSet
230{
234 uint16_t name[11];
236 uint8_t fontRegion;
238 uint8_t reserved[0x2d];
239};
240WUT_CHECK_OFFSET(RegisterInfoSet, 0x0, mii);
241WUT_CHECK_OFFSET(RegisterInfoSet, 0x60, name);
242WUT_CHECK_OFFSET(RegisterInfoSet, 0x76, fontRegion);
243WUT_CHECK_OFFSET(RegisterInfoSet, 0x77, reserved);
244WUT_CHECK_SIZE(RegisterInfoSet, 0xA4);
245
246struct WUT_PACKED AdminInfo
247{
249 uint64_t titleID;
251 uint32_t accessID;
259 uint8_t platform;
261 uint8_t reserved[0x2f];
262};
263WUT_CHECK_OFFSET(AdminInfo, 0x0, titleID);
264WUT_CHECK_OFFSET(AdminInfo, 0x8, accessID);
265WUT_CHECK_OFFSET(AdminInfo, 0xC, applicationAreaWrites);
266WUT_CHECK_OFFSET(AdminInfo, 0xE, flags);
267WUT_CHECK_OFFSET(AdminInfo, 0xF, formatVersion);
268WUT_CHECK_OFFSET(AdminInfo, 0x10, platform);
269WUT_CHECK_OFFSET(AdminInfo, 0x11, reserved);
270WUT_CHECK_SIZE(AdminInfo, 0x40);
271
280 asm("GetNfpState__Q2_2nn3nfpFv");
281
285nn::Result
287 asm("Initialize__Q2_2nn3nfpFv");
288
292nn::Result
294 asm("Finalize__Q2_2nn3nfpFv");
295
303nn::Result
305 asm("AntennaCheck__Q2_2nn3nfpFv");
306
314nn::Result
316 asm("SetActivateEvent__Q2_2nn3nfpFP7OSEvent");
317
325nn::Result
327 asm("SetDeactivateEvent__Q2_2nn3nfpFP7OSEvent");
328
333nn::Result
335 asm("StartDetection__Q2_2nn3nfpFv");
336
341nn::Result
343 asm("StopDetection__Q2_2nn3nfpFv");
344
350nn::Result
352 asm("Mount__Q2_2nn3nfpFv");
353
359nn::Result
361 asm("MountReadOnly__Q2_2nn3nfpFv");
362
368nn::Result
370 asm("MountRom__Q2_2nn3nfpFv");
371
377nn::Result
379 asm("Flush__Q2_2nn3nfpFv");
380
390nn::Result
392 asm("Unmount__Q2_2nn3nfpFv");
393
402bool
404 asm("IsExistApplicationArea__Q2_2nn3nfpFv");
405
412nn::Result
414 asm("InitializeCreateInfo__Q2_2nn3nfpFPQ3_2nn3nfp25ApplicationAreaCreateInfo");
415
425nn::Result
427 asm("CreateApplicationArea__Q2_2nn3nfpFRCQ3_2nn3nfp25ApplicationAreaCreateInfo");
428
438nn::Result
439OpenApplicationArea(uint32_t accessID)
440 asm("OpenApplicationArea__Q2_2nn3nfpFUi");
441
448nn::Result
450 asm("DeleteApplicationArea__Q2_2nn3nfpFv");
451
467nn::Result
468WriteApplicationArea(const void *data, uint32_t size, const TagId &id)
469 asm("WriteApplicationArea__Q2_2nn3nfpFPCvUiRCQ3_2nn3nfp5TagId");
470
483nn::Result
484ReadApplicationArea(void *outData, uint32_t size)
485 asm("ReadApplicationArea__Q2_2nn3nfpFPvUi");
486
493nn::Result
495 asm("InitializeRegisterInfoSet__Q2_2nn3nfpFPQ3_2nn3nfp15RegisterInfoSet");
496
505nn::Result
507 asm("SetNfpRegisterInfo__Q2_2nn3nfpFRCQ3_2nn3nfp15RegisterInfoSet");
508
517nn::Result
519 asm("GetNfpRegisterInfo__Q2_2nn3nfpFPQ3_2nn3nfp12RegisterInfo");
520
526nn::Result
528 asm("DeleteNfpRegisterInfo__Q2_2nn3nfpFv");
529
538nn::Result
540 asm("GetNfpCommonInfo__Q2_2nn3nfpFPQ3_2nn3nfp10CommonInfo");
541
550nn::Result
552 asm("GetNfpReadOnlyInfo__Q2_2nn3nfpFPQ3_2nn3nfp12ReadOnlyInfo");
553
562nn::Result
564 asm("GetNfpAdminInfo__Q2_2nn3nfpFPQ3_2nn3nfp9AdminInfo");
565
574nn::Result
576 asm("GetNfpRomInfo__Q2_2nn3nfpFPQ3_2nn3nfp7RomInfo");
577
586nn::Result
588 asm("GetTagInfo__Q2_2nn3nfpFPQ3_2nn3nfp7TagInfo");
589
602nn::Result
603Format(const uint8_t *data, int32_t size)
604 asm("Format__Q2_2nn3nfpFPCUci");
605
606nn::Result
608 asm("Restore__Q2_2nn3nfpFv");
609
616uint32_t
618 asm("GetErrorCode__Q2_2nn3nfpFRCQ2_2nn6Result");
619
620} //namespace nfp
621
622} //namespace nn
623
624#endif
625
Result value type used by nn libraries.
Definition result.h:70
uint8_t NFCTechnology
Definition nfc.h:18
nn::Result SetNfpRegisterInfo(const RegisterInfoSet &info) asm("SetNfpRegisterInfo__Q2_2nn3nfpFRCQ3_2nn3nfp15RegisterInfoSet")
Sets the register info of the mounted tag.
uint8_t reserved1[0x32]
reserved bytes
Definition nfp_cpp.h:140
nn::Result GetNfpReadOnlyInfo(ReadOnlyInfo *outInfo) asm("GetNfpReadOnlyInfo__Q2_2nn3nfpFPQ3_2nn3nfp12ReadOnlyInfo")
Gets the read only info of the mounted tag.
nn::Result InitializeCreateInfo(ApplicationAreaCreateInfo *info) asm("InitializeCreateInfo__Q2_2nn3nfpFPQ3_2nn3nfp25ApplicationAreaCreateInfo")
Initializes a ApplicationAreaCreateInfo struct.
uint64_t titleID
The titleID of the application which wrote to the application data.
Definition nfp_cpp.h:249
uint8_t characterID[3]
The character id of the amiibo.
Definition nfp_cpp.h:156
nn::Result CreateApplicationArea(const ApplicationAreaCreateInfo &createInfo) asm("CreateApplicationArea__Q2_2nn3nfpFRCQ3_2nn3nfp25ApplicationAreaCreateInfo")
Initializes the application area of the tag.
uint16_t numberingID
Numbering ID of the amiibo.
Definition nfp_cpp.h:160
nn::Result DeleteApplicationArea() asm("DeleteApplicationArea__Q2_2nn3nfpFv")
Deletes the application area.
NFCTechnology technology
Technology (always NFC_TECHNOLOGY_A)
Definition nfp_cpp.h:136
nn::Result WriteApplicationArea(const void *data, uint32_t size, const TagId &id) asm("WriteApplicationArea__Q2_2nn3nfpFPCvUiRCQ3_2nn3nfp5TagId")
Writes data to the opened application area.
uint16_t applicationAreaWrites
The amount of times the application area was written to.
Definition nfp_cpp.h:253
uint8_t month
Month (0 - 11)
Definition nfp_cpp.h:92
uint16_t writes
The amount of times this tag was written to.
Definition nfp_cpp.h:154
nn::Result GetTagInfo(TagInfo *outInfo) asm("GetTagInfo__Q2_2nn3nfpFPQ3_2nn3nfp7TagInfo")
Gets the tag info.
uint32_t GetErrorCode(const nn::Result &res) asm("GetErrorCode__Q2_2nn3nfpFRCQ2_2nn6Result")
Converts a nn::Result to an error code.
uint8_t figureVersion
The version of this figure (always 0x00)
Definition nfp_cpp.h:164
uint8_t platform
The platform which wrote to the amiibo (0x01 if Wii U)
Definition nfp_cpp.h:259
nn::Result GetNfpCommonInfo(CommonInfo *outInfo) asm("GetNfpCommonInfo__Q2_2nn3nfpFPQ3_2nn3nfp10CommonInfo")
Gets the common info of the mounted tag.
nn::Result Unmount() asm("Unmount__Q2_2nn3nfpFv")
Unmounts a currently mounted tag.
AdminFlags flags
Flags.
Definition nfp_cpp.h:255
uint16_t year
Year (Starting at 0)
Definition nfp_cpp.h:90
nn::Result AntennaCheck() asm("AntennaCheck__Q2_2nn3nfpFv")
Checks if the NFC Antenna can be used.
bool IsExistApplicationArea() asm("IsExistApplicationArea__Q2_2nn3nfpFv")
Checks if the tag contains application data.
uint8_t figureType
The type of this figure.
Definition nfp_cpp.h:162
uint8_t reserved0[0x15]
reserved bytes
Definition nfp_cpp.h:134
FFLStoreData mii
The mii this figure was registered with.
Definition nfp_cpp.h:184
uint8_t day
Day (0 - 30)
Definition nfp_cpp.h:94
void * data
The initial data to write to the area.
Definition nfp_cpp.h:106
uint8_t reserved[0x30]
reserved bytes, must be set to 0
Definition nfp_cpp.h:110
ResultDescription
NN_NFP result descriptions for nn::Result::GetDescription.
Definition nfp_cpp.h:25
@ RESULT_APP_AREA_ALREADY_EXISTS
Definition nfp_cpp.h:39
@ RESULT_INVALID_TAG
Definition nfp_cpp.h:33
@ RESULT_APP_AREA_TAGID_MISMATCH
Definition nfp_cpp.h:38
@ RESULT_OUT_OF_RANGE
Definition nfp_cpp.h:27
@ RESULT_SYSTEM_ERROR
Definition nfp_cpp.h:42
@ RESULT_INVALID_PARAM
Definition nfp_cpp.h:28
@ RESULT_NO_BACKUPENTRY
Definition nfp_cpp.h:35
@ RESULT_FATAL
Definition nfp_cpp.h:45
@ RESULT_INVALID_STATE
Definition nfp_cpp.h:32
@ RESULT_INVALID_TAG_INFO
Definition nfp_cpp.h:34
@ RESULT_APP_AREA_MISSING
Definition nfp_cpp.h:37
@ RESULT_APP_AREA_ACCESS_ID_MISMATCH
Definition nfp_cpp.h:40
@ RESULT_NO_BACKUP_SAVEDATA
Definition nfp_cpp.h:41
@ RESULT_NO_REGISTER_INFO
Definition nfp_cpp.h:36
@ RESULT_INVALID_ALIGNMENT
Definition nfp_cpp.h:29
NfpState GetNfpState() asm("GetNfpState__Q2_2nn3nfpFv")
Gets the state nfp is currently in.
nn::Result MountRom() asm("MountRom__Q2_2nn3nfpFv")
Mounts a found tag in ROM mode.
nn::Result GetNfpRegisterInfo(RegisterInfo *outInfo) asm("GetNfpRegisterInfo__Q2_2nn3nfpFPQ3_2nn3nfp12RegisterInfo")
Gets the register info of the mounted tag.
uint8_t country
Country code.
Definition nfp_cpp.h:190
uint16_t applicationAreaSize
The size of the application area.
Definition nfp_cpp.h:166
nn::Result SetActivateEvent(OSEvent *event) asm("SetActivateEvent__Q2_2nn3nfpFP7OSEvent")
Sets an event which will be signalled once a tag has been found.
nn::Result Format(const uint8_t *data, int32_t size) asm("Format__Q2_2nn3nfpFPCUci")
Formats a found tag.
nn::Result StartDetection() asm("StartDetection__Q2_2nn3nfpFv")
Starts searching for tags.
Date registerDate
The date when the amiibo was registered.
Definition nfp_cpp.h:192
nn::Result Restore() asm("Restore__Q2_2nn3nfpFv")
AdminFlags
Definition nfp_cpp.h:69
@ IsRegistered
The tag was registered and contains register info.
@ HasApplicationData
The tag contains an application area.
nn::Result SetDeactivateEvent(OSEvent *event) asm("SetDeactivateEvent__Q2_2nn3nfpFP7OSEvent")
Sets an event which will be signalled once a tag has been lost.
nn::Result ReadApplicationArea(void *outData, uint32_t size) asm("ReadApplicationArea__Q2_2nn3nfpFPvUi")
Reads data from the opened application area.
TagId id
The id of the tag.
Definition nfp_cpp.h:132
nn::Result Mount() asm("Mount__Q2_2nn3nfpFv")
Mounts a found tag.
uint32_t size
The size of the data.
Definition nfp_cpp.h:108
uint32_t accessID
The access ID with which the area should be created.
Definition nfp_cpp.h:104
nn::Result StopDetection() asm("StopDetection__Q2_2nn3nfpFv")
Stops searching for tags.
nn::Result GetNfpAdminInfo(AdminInfo *outInfo) asm("GetNfpAdminInfo__Q2_2nn3nfpFPQ3_2nn3nfp9AdminInfo")
Gets the admin info of the mounted tag.
nn::Result InitializeRegisterInfoSet(RegisterInfoSet *infoSet) asm("InitializeRegisterInfoSet__Q2_2nn3nfpFPQ3_2nn3nfp15RegisterInfoSet")
Initializes a RegisterInfoSet struct.
@ Initialized
nn_nfp has been initialized
@ Found
A tag has been found.
@ Searching
Searching for a tag.
@ MountedROM
The tag was mounted in ROM mode.
@ Removed
Tag was removed.
@ Mounted
The tag is mounted.
@ Uninitialized
nn_nfp is uninitialized
nn::Result Finalize() asm("Finalize__Q2_2nn3nfpFv")
Finalizes NFP.
TagType tag_type
Tag type (always TagType::Type2Tag)
Definition nfp_cpp.h:138
uint8_t formatVersion
The version of the amiibo format (always 0x02)
Definition nfp_cpp.h:257
nn::Result OpenApplicationArea(uint32_t accessID) asm("OpenApplicationArea__Q2_2nn3nfpFUi")
Opens the application area for reading and writing.
uint8_t seriesID
The series this amiibo is from.
Definition nfp_cpp.h:158
uint8_t fontRegion
Font region.
Definition nfp_cpp.h:188
nn::Result Initialize() asm("Initialize__Q2_2nn3nfpFv")
Initializes NFP.
uint8_t uid[10]
The uid of the tag.
Definition nfp_cpp.h:123
nn::Result MountReadOnly() asm("MountReadOnly__Q2_2nn3nfpFv")
Mounts a found tag as read-only.
nn::Result GetNfpRomInfo(RomInfo *outInfo) asm("GetNfpRomInfo__Q2_2nn3nfpFPQ3_2nn3nfp7RomInfo")
Gets the rom info of the mounted tag.
uint8_t size
The size of the id.
Definition nfp_cpp.h:121
nn::Result DeleteNfpRegisterInfo() asm("DeleteNfpRegisterInfo__Q2_2nn3nfpFv")
Deletes the register info of the mounted tag.
Date lastWriteDate
The date when the tag was last written to.
Definition nfp_cpp.h:152
nn::Result Flush() asm("Flush__Q2_2nn3nfpFv")
Writes any changes done while mounted to the tag.
Definition ac_cpp.h:16