Line 3: |
Line 3: |
| On New3DS NFC module uses the [[I2C_Registers|NFC]] hardware via the [[I2C_Services|i2c::NFC]] and [[GPIO_Services|gpio:NFC]] services. On Old3DS NFC module communicates with a NFC peripheral via IR with the IRUSER service. | | On New3DS NFC module uses the [[I2C_Registers|NFC]] hardware via the [[I2C_Services|i2c::NFC]] and [[GPIO_Services|gpio:NFC]] services. On Old3DS NFC module communicates with a NFC peripheral via IR with the IRUSER service. |
| | | |
− | A total of 6 sessions can be open simultaneously for all of these services combined.
| + | Only 1 session can be open for all of these services combined. Commands for each service are handled by the main-thread. |
| | | |
| =NFC services= | | =NFC services= |
Line 33: |
Line 33: |
| | void | | | void |
| | s32 result, u32 unknownA[16] | | | s32 result, u32 unknownA[16] |
− | | Output seems to be a struct | + | | Output seems to be a struct. unknownA[2]'s value is the AppID of the Amiibo. |
| |- | | |- |
| | 0x04030000 | | | 0x04030000 |
Line 102: |
Line 102: |
| | | |
| ==NFC development service "nfc:dev"== | | ==NFC development service "nfc:dev"== |
− | This service seems to be intended for use only on dev-units(or at least some of the command(s)).
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Command header |
| + | ! Available since system-version |
| + | ! Description |
| + | |- |
| + | | 0x00110100 |
| + | | |
| + | | [[NFCDEV:ReadRawPages|ReadRawPages]] |
| + | |- |
| + | | 0x001200C0 |
| + | | |
| + | | [[NFCDEV:WriteRawPage|WriteRawPage]] |
| + | |} |
| + | |
| + | Some of these commands seems to be intended for use only on dev-units. |
| | | |
| Unlike the New3DS NFC-module, at least some of these commands are stubbed in the Old3DS NFC-module(only returns an error). | | Unlike the New3DS NFC-module, at least some of these commands are stubbed in the Old3DS NFC-module(only returns an error). |
Line 128: |
Line 143: |
| | | | | |
| | ? | | | ? |
| + | |- |
| + | | 0x000500C2 |
| + | | |
| + | | [[NFCP:SendTagCommand|SendTagCommand]] |
| + | |- |
| + | | 0x00060000 |
| + | | |
| + | | GetTagInfo |
| |- | | |- |
| | 0x00070000 | | | 0x00070000 |
Line 134: |
Line 157: |
| |- | | |- |
| | 0x00080000 | | | 0x00080000 |
| + | | |
| + | | Writes a handle to cmdreply[3]. |
| + | |- |
| + | | 0x00090000 |
| | | | | |
| | Writes a handle to cmdreply[3]. | | | Writes a handle to cmdreply[3]. |
Line 140: |
Line 167: |
| | | | | |
| | Unknown. Writes an output value to cmdreply[2]. | | | Unknown. Writes an output value to cmdreply[2]. |
| + | |- |
| + | | 0x000B0000 |
| + | | |
| + | | Unknown. Writes 0x60-bytes of output starting at cmdreply[2]. u16 +0 is the size of the data at +4, +2 is not initialized, u8 +3 is loaded from state, u32 +0x2C is loaded from state, and the data at +4 with the previously mentioned size is copied from state. |
| + | |- |
| + | | 0x000C0040 |
| + | | |
| + | | (u32 outputsize) Writes output to static_buf_id=0, outputsize 1 is used when it's >=1. |
| + | |- |
| + | | 0x000D0040 |
| + | | |
| + | | (u32 outputsize) Writes output to static_buf_id=0, outputsize 1 is used when it's >=1. |
| + | |- |
| + | | 0x000E0080 |
| + | | |
| + | | (u8 unk, u32 outputsize) Writes output to static_buf_id=0, outputsize 2 is used when it's >=2. |
| + | |- |
| + | | 0x000F0040 |
| + | | |
| + | | (u32 outputsize) Writes output to static_buf_id=0, outputsize 2 is used when it's >=2. |
| + | |- |
| + | | 0x00100000 |
| + | | |
| + | | Unknown. |
| + | |- |
| + | | 0x00110000 |
| + | | |
| + | | Unknown. |
| + | |- |
| + | | 0x00120000 |
| + | | |
| + | | Unknown. Writes an output u32 to cmdreply[2]. |
| + | |- |
| + | | 0x00130000 |
| + | | |
| + | | Unknown. Writes an output u32 to cmdreply[2]. |
| |} | | |} |
| | | |
Line 156: |
Line 219: |
| ! Available since system-version | | ! Available since system-version |
| ! Description | | ! Description |
| + | |- |
| + | | 0x00130102 |
| + | | |
| + | | [[NFCS:SendTagCommand|SendTagCommand]] |
| |- | | |- |
| | 0x00230000 | | | 0x00230000 |
Line 390: |
Line 457: |
| | 0x001F0080 | | | 0x001F0080 |
| | [[10.0.0-27|10.0.0-X]] | | | [[10.0.0-27|10.0.0-X]] |
− | | ? | + | | [[NFC:StartOtherTagScanning|StartOtherTagScanning]] |
− | | u16, u32 | + | | |
| | | | | |
| | Used by JPN eShop app "Megami Meguri". | | | Used by JPN eShop app "Megami Meguri". |
Line 397: |
Line 464: |
| | 0x00200102 | | | 0x00200102 |
| | [[10.0.0-27|10.0.0-X]] | | | [[10.0.0-27|10.0.0-X]] |
− | | ?
| + | | [[NFC:SendTagCommand|SendTagCommand]] |
− | | [1]=u32_inputsize, [2]=u32_outputsize, [3]=u32_unk1, [4]=u32_unk2, [5]={static ipc buf translate-header with static_buf_id=0}, [6]=inbufaddr | + | | |
− | | [2]=output_u32, 3={static ipc buf translate-header with static_buf_id=0}, 4=outbufaddr | + | | |
− | | outputsize value 0x800 will be used when it's >=0x800. | + | | |
| |- | | |- |
| | 0x00210000 | | | 0x00210000 |
Line 407: |
Line 474: |
| | | | | |
| | | | | |
− | | Used by JPN eShop app "Megami Meguri". | + | | Used by JPN eShop app "Megami Meguri". This can only be used when [[NFC:Initialize|initialized]] with type3, and when the [[NFC:GetTagState|TagState]] is 3. |
| |- | | |- |
| | 0x00220000 | | | 0x00220000 |
Line 414: |
Line 481: |
| | | | | |
| | | | | |
− | | | + | | This can only be used when [[NFC:Initialize|initialized]] with type3, and when the [[NFC:GetTagState|TagState]] is 3. |
| |} | | |} |
| | | |