Nintendo 3DS Camera: Difference between revisions

Image gallery requirements and maker note explanation
Clarify Unique ID
 
(3 intermediate revisions by one other user not shown)
Line 34: Line 34:
* Additionally, certain features are only available for valid Nintendo 3DS photographs:
* Additionally, certain features are only available for valid Nintendo 3DS photographs:
** The left-eye image's Exif metadata must specify a camera make of <code>Nintendo</code>, a camera model of <code>Nintendo 3DS</code>, and a software name of <code>00204</code>.
** The left-eye image's Exif metadata must specify a camera make of <code>Nintendo</code>, a camera model of <code>Nintendo 3DS</code>, and a software name of <code>00204</code>.
** The zoom feature is only available when viewing any image with an aspect ratio which is no more horizontally dominant than 4:3. For example, a 480x480 image will be zoomable due aspect ratio, but a 480x288 image will not be zoomable because its 5:3 aspect ratio makes the image too wide relative to its height. All zoomable images are initially zoomed in when viewed in the photo gallery.
** The zoom feature is only available when viewing any image with an aspect ratio which is no more horizontally dominant than 4:3. For example, a 480x480 image will be zoomable due to its aspect ratio, but a 480x288 image will not be zoomable because its 5:3 aspect ratio makes the image too wide relative to its height. All zoomable images are initially zoomed in when viewed in the photo gallery.
** Each 3D image features a faded black border and can be manipulated with the 3D Focus slider, but only if the image is at least 480 pixels wide and contains a valid 3DS Camera maker note in the left-eye image's Exif metadata.
** Each 3D image features a faded black border and can be manipulated with the 3D Focus slider, but only if the image is at least 480 pixels wide and contains a valid 3DS Camera maker note in the left-eye image's Exif metadata.


Line 45: Line 45:
The first field, which is identified by tag <code>0x1100</code>, is 80 bytes long. The meanings of its contents are not known, but the first byte Seems to always have a value of 1. The remaining bytes always seem to have values of zero, unless the photo used a sepia filter, in which case bytes <code>0x8</code>-<code>0x1a</code> (inclusive) are set. This field can be excluded from the maker note without invalidating the 3DS Camera maker note.
The first field, which is identified by tag <code>0x1100</code>, is 80 bytes long. The meanings of its contents are not known, but the first byte Seems to always have a value of 1. The remaining bytes always seem to have values of zero, unless the photo used a sepia filter, in which case bytes <code>0x8</code>-<code>0x1a</code> (inclusive) are set. This field can be excluded from the maker note without invalidating the 3DS Camera maker note.


The second field uses tag <code>0x1101</code>. It is 64 bytes long, although its length can be reduced to as few as 20 bytes without issue. The first four bytes must spell "3DS1" in ASCII (with no null terminator).
The second field uses tag <code>0x1101</code>. It is 64 bytes long, although its length can be reduced to as few as 21 bytes without issue.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 59: Line 59:
|-
|-
| 0x4
| 0x4
| 0x1, 0x2, 0x3, or 0x4
| 0x4
| unknown
| unknown
| Possibly a version number. Seems to always be 1 or 2.
| Possibly a version number. Seems to always be 1 or 2.
Line 69: Line 69:
|-
|-
| 0xc
| 0xc
| 0x8
| 0x4
| unknown
| Unknown. Seems to always be 0.
|-
| 0x10
| 0x4
| unknown
| unknown
| Unknown.
| Unknown. Seems to always be 516.
|-
|-
| 0x14
| 0x14
Line 78: Line 83:
| Unknown. Seems to always be 20, but any non-zero value seems acceptable. Required.
| Unknown. Seems to always be 20, but any non-zero value seems acceptable. Required.
|-
|-
| 0x18
| 0x15
| 0x3
| 0x3
| unknown
| unknown
| Unknown. Seems to always be 0.
| Unknown. Seems to always be 0.
|-
|-
| 0x1c
| 0x18
| 0x4
| 0x4
| u32
| u32
| System format timestamp
| This is the lower word of [[Cfg:GenHashConsoleUnique]].
|-
|-
| 0x20
| 0x1c
| 0xc
| 0xc
| unknown
| unknown
| Unknown. Seems to always be 0.
| Unknown. Seems to always be 0.
|-
|-
| 0x2c
| 0x28
| 0x4
| 0x4
| f32
| f32
| Left translation
| Left translation
|-
|-
| 0x30
| 0x2c
| 0x4
| 0x4
| unknown
| unknown
| Unknown. Seems to always be 0.
| Unknown. Seems to always be 0.
|-
|-
| 0x34
| 0x30
| 0x4
| 0x4
| u32
| u32
| Photo filter(s)
| Photo filter(s)
|-
|-
| 0x38
| 0x34
| 0xc
| 0xc
| unknown
| unknown
Line 114: Line 119:
|}
|}


The photo timestamp is represented by the number of seconds that had passed since the beginning of the year 2000 in the photographer's time zone.
The photo timestamp is represented by the number of seconds that had passed since the beginning of the year 2000 in the photographer's 3DS's time zone.
 
The system format timestamp is a UTC timestamp, in milliseconds, of when the photographer's 3DS system had last been formatted. Despite this value's potential usefulness for preventing previously-formatted photos from being viewed, it does not seem to be used.


The left translation number indicates how many pixels to move the left-eye image to the left before scaling it to fit the entire image on-screen without stretching it. It inversely affects the positions of the right-eye image and the 3D Focus slider. The 3DS Camera clamps this value to prevent the image from moving off-screen. This value is zero in 2D photos, though 3D photos can use a value of zero as well.
The left translation number indicates how many pixels to move the left-eye image to the left before scaling it to fit the entire image on-screen without stretching it. It inversely affects the positions of the right-eye image and the 3D Focus slider. The 3DS Camera clamps this value to prevent the image from moving off-screen. This value is zero in 2D photos, though 3D photos can use a value of zero as well.