<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thib</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thib"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Thib"/>
	<updated>2026-05-01T05:22:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PTM_Services&amp;diff=10814</id>
		<title>PTM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PTM_Services&amp;diff=10814"/>
		<updated>2014-11-22T19:02:07Z</updated>

		<summary type="html">&lt;p&gt;Thib: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A total of 24 sessions can be open for each of these services combined. The commands for each service are handled by the PTM module main() thread.&lt;br /&gt;
&lt;br /&gt;
=User PTM Service &amp;quot;ptm:u&amp;quot; / PTM services=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010002&lt;br /&gt;
| RegisterAlarmClient&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| SetRtcAlarm&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| GetRtcAlarm&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| CancelRtcAlarm&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[PTM:GetAdapterState|GetAdapterState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[PTM:GetShellState|GetShellState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[PTM:GetBatteryLevel|GetBatteryLevel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[PTM:GetBatteryChargeState|GetBatteryChargeState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[PTM:GetPedometerState|GetPedometerState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0042&lt;br /&gt;
| GetStepHistoryEntry&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2&lt;br /&gt;
| GetStepHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[PTM:GetTotalStepCount|GetTotalStepCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0040&lt;br /&gt;
| SetPedometerRecordingMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| GetPedometerRecordingMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0084&lt;br /&gt;
| GetStepHistoryAll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above commands are available for all PTM services.&lt;br /&gt;
&lt;br /&gt;
=PlayHistory PTM Service &amp;quot;ptm:play&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070082&lt;br /&gt;
| GetPlayHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| GetPlayHistoryStart&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| GetPlayHistoryLength&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0080&lt;br /&gt;
| CalcPlayHistoryStart&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=SysMenu PTM Service &amp;quot;ptm:sysm&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C0&lt;br /&gt;
| SetRtcAlarmEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020042&lt;br /&gt;
| ReplySleepQuery&lt;br /&gt;
|-&lt;br /&gt;
| 0x04030042&lt;br /&gt;
| NotifySleepPreparationComplete&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040102&lt;br /&gt;
| SetWakeupTrigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050000&lt;br /&gt;
| GetAwakeReason&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060000&lt;br /&gt;
| RequestSleep&lt;br /&gt;
|-&lt;br /&gt;
| 0x040700C0&lt;br /&gt;
| ShutdownAsync&lt;br /&gt;
|-&lt;br /&gt;
| 0x04080000&lt;br /&gt;
| Awake&lt;br /&gt;
|-&lt;br /&gt;
| 0x04090080&lt;br /&gt;
| [[PTMSYSM:LaunchFIRMRebootSystem|RebootAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040A0000&lt;br /&gt;
| [[PTMSYSM:CheckNew3DS|CheckNew3DS]] (Added with [[8.0.0-18]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010640&lt;br /&gt;
| [[PTMSYSM:SetInfoLEDPattern|SetInfoLEDPattern]] (These 4 LED commands are used for the notification LED, see [[MCU]] regarding boot fail with invalid parameters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020040&lt;br /&gt;
| [[PTMSYSM:SetInfoLEDPatternHeader|SetInfoLEDPatternHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030000&lt;br /&gt;
| [[PTMSYSM:GetInfoLEDStatus|GetInfoLEDStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040040&lt;br /&gt;
| [[PTMSYSM:SetBatteryEmptyLEDPattern|SetBatteryEmptyLEDPattern]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08050000&lt;br /&gt;
| ClearStepHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x080600C2&lt;br /&gt;
| SetStepHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070082&lt;br /&gt;
| GetPlayHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| GetPlayHistoryStart&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| GetPlayHistoryLength&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0000&lt;br /&gt;
| ClearPlayHistory&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0080&lt;br /&gt;
| CalcPlayHistoryStart&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0080&lt;br /&gt;
| SetUserTime&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0000&lt;br /&gt;
| InvalidateSystemTime&lt;br /&gt;
|-&lt;br /&gt;
| 0x080E0140&lt;br /&gt;
| [[PTMSYSM:NotifyPlayEvent|NotifyPlayEvent]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080F0000&lt;br /&gt;
| IsLegacyPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100000&lt;br /&gt;
| ClearLegacyPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x08110000&lt;br /&gt;
| GetShellStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x08120000&lt;br /&gt;
| IsShutdownByBatteryEmpty&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
| FormatSavedata&lt;br /&gt;
|-&lt;br /&gt;
| 0x08140000&lt;br /&gt;
| GetLegacyJumpProhibitedFlag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=GetSystemTime PTM Service &amp;quot;ptm:gets&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
=SystemControl PTM Service &amp;quot;ptm:s&amp;quot;=&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PTM:GetPedometerState&amp;diff=10813</id>
		<title>PTM:GetPedometerState</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PTM:GetPedometerState&amp;diff=10813"/>
		<updated>2014-11-22T19:02:02Z</updated>

		<summary type="html">&lt;p&gt;Thib: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x00090000] |}  =Response= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Des...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00090000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| u8 output: 0 = not counting steps, 1 = counting steps.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PTM:GetShellState&amp;diff=10812</id>
		<title>PTM:GetShellState</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PTM:GetShellState&amp;diff=10812"/>
		<updated>2014-11-22T19:01:04Z</updated>

		<summary type="html">&lt;p&gt;Thib: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x00060000] |}  =Response= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Des...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00060000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| u8 output: 0 = closed, 1 = open (not tested on 2DS).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=4722</id>
		<title>MPO</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=4722"/>
		<updated>2013-01-08T20:29:04Z</updated>

		<summary type="html">&lt;p&gt;Thib: /* Nintendo&amp;#039;s EXIF MakerNote Tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
MPO = Multi-Picture Object&lt;br /&gt;
&lt;br /&gt;
Document describing the file format used in mpo files:&lt;br /&gt;
http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf&lt;br /&gt;
&lt;br /&gt;
Nintendo uses a common format for its 3D pictures.&lt;br /&gt;
MPO is basically two JPG files concatenated in one file.&lt;br /&gt;
The two JPG files has an EXIF data structure in their headers (This was developed by CIPA).&lt;br /&gt;
&lt;br /&gt;
EXIF is a standard that specifies the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras.[http://en.wikipedia.org/wiki/Exchangeable_image_file_format]&lt;br /&gt;
&lt;br /&gt;
=== Nintendo&#039;s EXIF Data Structure ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
!  VALUE&lt;br /&gt;
|-&lt;br /&gt;
|0x010F&lt;br /&gt;
|Manufacturer&lt;br /&gt;
|Nintendo &lt;br /&gt;
|-&lt;br /&gt;
|0x0110&lt;br /&gt;
|Camera&lt;br /&gt;
|Nintendo 3DS &lt;br /&gt;
|-&lt;br /&gt;
|0x011A&lt;br /&gt;
|XResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x011B&lt;br /&gt;
|YResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x0128&lt;br /&gt;
|ResolutionUnit&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0131&lt;br /&gt;
|Software&lt;br /&gt;
|Depends on the software: 00204 for the Camera (EU), 00227 for the Mii Editor (EU), 00955 for KH3D (EU)&lt;br /&gt;
|-&lt;br /&gt;
|0x0132&lt;br /&gt;
|DateTime&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS &lt;br /&gt;
|-&lt;br /&gt;
|0x0213&lt;br /&gt;
|YCbCrPositioning&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x9000&lt;br /&gt;
|ExifVersion&lt;br /&gt;
|0220&lt;br /&gt;
|-&lt;br /&gt;
|0x9003&lt;br /&gt;
|DateTimeOriginal&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9004&lt;br /&gt;
|DateTimeDigitized&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9101&lt;br /&gt;
|ComponentsConfiguration&lt;br /&gt;
|[0x01,0x02,0x03,0x00]&lt;br /&gt;
|-&lt;br /&gt;
|0x927C&lt;br /&gt;
|MakerNote&lt;br /&gt;
|[DATA - 174 bytes] (yet to be understood)&lt;br /&gt;
|-&lt;br /&gt;
|0xA000&lt;br /&gt;
|FlashPixVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0xA001&lt;br /&gt;
|ColorSpace&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|0xA002&lt;br /&gt;
|PixelXDimension&lt;br /&gt;
|640&lt;br /&gt;
|-&lt;br /&gt;
|0xA003&lt;br /&gt;
|PixelYDimension&lt;br /&gt;
|480&lt;br /&gt;
|-&lt;br /&gt;
|0x5041&lt;br /&gt;
|InteroperabilityIndex&lt;br /&gt;
|R98 &lt;br /&gt;
|-&lt;br /&gt;
|0x5042&lt;br /&gt;
|ExifInteroperabilityVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0x1000&lt;br /&gt;
|InteroperabilityVersion&lt;br /&gt;
|JPEG Exif Ver 2.2 &lt;br /&gt;
|-&lt;br /&gt;
|0x501B&lt;br /&gt;
|ThumbnailData&lt;br /&gt;
|[DATA - 3000+ bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5023&lt;br /&gt;
|ThumbnailCompression&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|0x502D&lt;br /&gt;
|ThumbnailXResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x502E&lt;br /&gt;
|ThumbnailYResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x5030&lt;br /&gt;
|ThumbnailTransferFunction&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0201&lt;br /&gt;
|JPEGInterchangeFormat&lt;br /&gt;
|682&lt;br /&gt;
|-&lt;br /&gt;
|0x0202&lt;br /&gt;
|JPEGInterchangeFormatLength&lt;br /&gt;
|3000+&lt;br /&gt;
|-&lt;br /&gt;
|0x5091&lt;br /&gt;
|ChrominanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5090&lt;br /&gt;
|LuminanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Nintendo&#039;s EXIF MakerNote Tag ====&lt;br /&gt;
&#039;&#039;&#039;This still need to be figured out:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MakerNote is made with Tiff Exif information (Big Endian)&lt;br /&gt;
&lt;br /&gt;
first 2 bytes are the IFD Count (IFD is a 12 byte tag), Regulary there are 2 IFDs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IFD structure&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|2 bytes&lt;br /&gt;
|2 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s IFDs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Desc&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1100&lt;br /&gt;
|Software-specific data&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Count=1 ? Value : Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1101&lt;br /&gt;
|Nintendo 64byte Note&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the IFDs comes a 4 byte Zero ( {0,0,0,0} ).&lt;br /&gt;
&lt;br /&gt;
And then the Data the IFDs point at (if at all)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s 64Byte Note&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Different from the wrapping structure this structure is Little-Endian.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|Magic&lt;br /&gt;
|char[4]&lt;br /&gt;
|{&#039;3&#039;,&#039;D&#039;,&#039;S&#039;,&#039;1&#039;}&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|Timestamp&lt;br /&gt;
|uint32&lt;br /&gt;
|Number of seconds since 1/1/2010 00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|0x0C&lt;br /&gt;
|Padding&lt;br /&gt;
|uint32&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Title ID Low&lt;br /&gt;
|uint32&lt;br /&gt;
|like the title id low but without the last two letters&lt;br /&gt;
|-&lt;br /&gt;
|0x14&lt;br /&gt;
|Flags&lt;br /&gt;
|uint32&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18&lt;br /&gt;
|Console ID&lt;br /&gt;
|byte[4]&lt;br /&gt;
|unique identifier&lt;br /&gt;
|-&lt;br /&gt;
|0x1C&lt;br /&gt;
|Padding&lt;br /&gt;
|byte[12]&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0x28&lt;br /&gt;
|3D Parallax&lt;br /&gt;
|float&lt;br /&gt;
|[-52,54]&lt;br /&gt;
|-&lt;br /&gt;
|0x2C&lt;br /&gt;
|Padding&lt;br /&gt;
|uint32&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0x30&lt;br /&gt;
|Category&lt;br /&gt;
|uint16&lt;br /&gt;
|0x2000 for a man, 0x4000 a woman, 0x1000 a mii...&lt;br /&gt;
|-&lt;br /&gt;
|0x32&lt;br /&gt;
|Filter&lt;br /&gt;
|uint16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x34&lt;br /&gt;
|Padding&lt;br /&gt;
|byte[12]&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=4720</id>
		<title>MPO</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=4720"/>
		<updated>2013-01-08T19:09:55Z</updated>

		<summary type="html">&lt;p&gt;Thib: /* Nintendo&amp;#039;s EXIF MakerNote Tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
MPO = Multi-Picture Object&lt;br /&gt;
&lt;br /&gt;
Document describing the file format used in mpo files:&lt;br /&gt;
http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf&lt;br /&gt;
&lt;br /&gt;
Nintendo uses a common format for its 3D pictures.&lt;br /&gt;
MPO is basically two JPG files concatenated in one file.&lt;br /&gt;
The two JPG files has an EXIF data structure in their headers (This was developed by CIPA).&lt;br /&gt;
&lt;br /&gt;
EXIF is a standard that specifies the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras.[http://en.wikipedia.org/wiki/Exchangeable_image_file_format]&lt;br /&gt;
&lt;br /&gt;
=== Nintendo&#039;s EXIF Data Structure ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
!  VALUE&lt;br /&gt;
|-&lt;br /&gt;
|0x010F&lt;br /&gt;
|Manufacturer&lt;br /&gt;
|Nintendo &lt;br /&gt;
|-&lt;br /&gt;
|0x0110&lt;br /&gt;
|Camera&lt;br /&gt;
|Nintendo 3DS &lt;br /&gt;
|-&lt;br /&gt;
|0x011A&lt;br /&gt;
|XResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x011B&lt;br /&gt;
|YResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x0128&lt;br /&gt;
|ResolutionUnit&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0131&lt;br /&gt;
|Software&lt;br /&gt;
|Depends on the software: 00204 for the Camera (EU), 00227 for the Mii Editor (EU), 00955 for KH3D (EU)&lt;br /&gt;
|-&lt;br /&gt;
|0x0132&lt;br /&gt;
|DateTime&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS &lt;br /&gt;
|-&lt;br /&gt;
|0x0213&lt;br /&gt;
|YCbCrPositioning&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x9000&lt;br /&gt;
|ExifVersion&lt;br /&gt;
|0220&lt;br /&gt;
|-&lt;br /&gt;
|0x9003&lt;br /&gt;
|DateTimeOriginal&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9004&lt;br /&gt;
|DateTimeDigitized&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9101&lt;br /&gt;
|ComponentsConfiguration&lt;br /&gt;
|[0x01,0x02,0x03,0x00]&lt;br /&gt;
|-&lt;br /&gt;
|0x927C&lt;br /&gt;
|MakerNote&lt;br /&gt;
|[DATA - 174 bytes] (yet to be understood)&lt;br /&gt;
|-&lt;br /&gt;
|0xA000&lt;br /&gt;
|FlashPixVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0xA001&lt;br /&gt;
|ColorSpace&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|0xA002&lt;br /&gt;
|PixelXDimension&lt;br /&gt;
|640&lt;br /&gt;
|-&lt;br /&gt;
|0xA003&lt;br /&gt;
|PixelYDimension&lt;br /&gt;
|480&lt;br /&gt;
|-&lt;br /&gt;
|0x5041&lt;br /&gt;
|InteroperabilityIndex&lt;br /&gt;
|R98 &lt;br /&gt;
|-&lt;br /&gt;
|0x5042&lt;br /&gt;
|ExifInteroperabilityVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0x1000&lt;br /&gt;
|InteroperabilityVersion&lt;br /&gt;
|JPEG Exif Ver 2.2 &lt;br /&gt;
|-&lt;br /&gt;
|0x501B&lt;br /&gt;
|ThumbnailData&lt;br /&gt;
|[DATA - 3000+ bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5023&lt;br /&gt;
|ThumbnailCompression&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|0x502D&lt;br /&gt;
|ThumbnailXResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x502E&lt;br /&gt;
|ThumbnailYResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x5030&lt;br /&gt;
|ThumbnailTransferFunction&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0201&lt;br /&gt;
|JPEGInterchangeFormat&lt;br /&gt;
|682&lt;br /&gt;
|-&lt;br /&gt;
|0x0202&lt;br /&gt;
|JPEGInterchangeFormatLength&lt;br /&gt;
|3000+&lt;br /&gt;
|-&lt;br /&gt;
|0x5091&lt;br /&gt;
|ChrominanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5090&lt;br /&gt;
|LuminanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Nintendo&#039;s EXIF MakerNote Tag ====&lt;br /&gt;
&#039;&#039;&#039;This still need to be figured out:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MakerNote is made with Tiff Exif information (Big Endian)&lt;br /&gt;
&lt;br /&gt;
first 2 bytes are the IFD Count (IFD is a 12 byte tag), Regulary there are 2 IFDs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IFD structure&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|2 bytes&lt;br /&gt;
|2 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s IFDs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Desc&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1100&lt;br /&gt;
|Software-specific data&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Count=1 ? Value : Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1101&lt;br /&gt;
|Nintendo 64byte Note&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the IFDs comes a 4 byte Zero ( {0,0,0,0} ).&lt;br /&gt;
&lt;br /&gt;
And then the Data the IFDs point at (if at all)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s 64Byte Note&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Magic&lt;br /&gt;
|Byte[4]&lt;br /&gt;
|{&#039;3&#039;,&#039;D&#039;,&#039;S&#039;,&#039;1&#039;}&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Timestamp&lt;br /&gt;
|Int&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|Title ID Low&lt;br /&gt;
|Int&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Console identifier?&lt;br /&gt;
|Int&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|3D Parallax*&lt;br /&gt;
|NegInt?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|Category?&lt;br /&gt;
|Int?&lt;br /&gt;
|0x02000 for a man, 0x04000 a woman, 0x10000 a mii...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*The 3D Parallax value is the distance that the right image needed to move in order to get focus.&lt;br /&gt;
&lt;br /&gt;
My formula to get that value isn&#039;t so good but here it is:&lt;br /&gt;
&lt;br /&gt;
x = (lsb - 0xC0) &amp;lt;&amp;lt; 8 + msb;&lt;br /&gt;
&lt;br /&gt;
Parallax =  - round( 2 ^ (x/128 + 2) )&lt;br /&gt;
&lt;br /&gt;
If someone makes sense of this, please explain or maybe correct..&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=3633</id>
		<title>MPO</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=3633"/>
		<updated>2012-07-28T13:08:55Z</updated>

		<summary type="html">&lt;p&gt;Thib: /* Nintendo&amp;#039;s EXIF Data Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
MPO = Multi-Picture Object&lt;br /&gt;
&lt;br /&gt;
Document describing the file format used in mpo files:&lt;br /&gt;
http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf&lt;br /&gt;
&lt;br /&gt;
Nintendo uses a common format for its 3D pictures.&lt;br /&gt;
MPO is basically two JPG files concatenated in one file.&lt;br /&gt;
The two JPG files has an EXIF data structure in their headers (This was developed by CIPA).&lt;br /&gt;
&lt;br /&gt;
EXIF is a standard that specifies the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras.[http://en.wikipedia.org/wiki/Exchangeable_image_file_format]&lt;br /&gt;
&lt;br /&gt;
=== Nintendo&#039;s EXIF Data Structure ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
!  VALUE&lt;br /&gt;
|-&lt;br /&gt;
|0x010F&lt;br /&gt;
|Manufacturer&lt;br /&gt;
|Nintendo &lt;br /&gt;
|-&lt;br /&gt;
|0x0110&lt;br /&gt;
|Camera&lt;br /&gt;
|Nintendo 3DS &lt;br /&gt;
|-&lt;br /&gt;
|0x011A&lt;br /&gt;
|XResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x011B&lt;br /&gt;
|YResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x0128&lt;br /&gt;
|ResolutionUnit&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0131&lt;br /&gt;
|Software&lt;br /&gt;
|Depends on the software: 00204 for the Camera (EU), 00227 for the Mii Editor (EU), 00955 for KH3D (EU)&lt;br /&gt;
|-&lt;br /&gt;
|0x0132&lt;br /&gt;
|DateTime&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS &lt;br /&gt;
|-&lt;br /&gt;
|0x0213&lt;br /&gt;
|YCbCrPositioning&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x9000&lt;br /&gt;
|ExifVersion&lt;br /&gt;
|0220&lt;br /&gt;
|-&lt;br /&gt;
|0x9003&lt;br /&gt;
|DateTimeOriginal&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9004&lt;br /&gt;
|DateTimeDigitized&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9101&lt;br /&gt;
|ComponentsConfiguration&lt;br /&gt;
|[0x01,0x02,0x03,0x00]&lt;br /&gt;
|-&lt;br /&gt;
|0x927C&lt;br /&gt;
|MakerNote&lt;br /&gt;
|[DATA - 174 bytes] (yet to be understood)&lt;br /&gt;
|-&lt;br /&gt;
|0xA000&lt;br /&gt;
|FlashPixVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0xA001&lt;br /&gt;
|ColorSpace&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|0xA002&lt;br /&gt;
|PixelXDimension&lt;br /&gt;
|640&lt;br /&gt;
|-&lt;br /&gt;
|0xA003&lt;br /&gt;
|PixelYDimension&lt;br /&gt;
|480&lt;br /&gt;
|-&lt;br /&gt;
|0x5041&lt;br /&gt;
|InteroperabilityIndex&lt;br /&gt;
|R98 &lt;br /&gt;
|-&lt;br /&gt;
|0x5042&lt;br /&gt;
|ExifInteroperabilityVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0x1000&lt;br /&gt;
|InteroperabilityVersion&lt;br /&gt;
|JPEG Exif Ver 2.2 &lt;br /&gt;
|-&lt;br /&gt;
|0x501B&lt;br /&gt;
|ThumbnailData&lt;br /&gt;
|[DATA - 3000+ bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5023&lt;br /&gt;
|ThumbnailCompression&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|0x502D&lt;br /&gt;
|ThumbnailXResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x502E&lt;br /&gt;
|ThumbnailYResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x5030&lt;br /&gt;
|ThumbnailTransferFunction&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0201&lt;br /&gt;
|JPEGInterchangeFormat&lt;br /&gt;
|682&lt;br /&gt;
|-&lt;br /&gt;
|0x0202&lt;br /&gt;
|JPEGInterchangeFormatLength&lt;br /&gt;
|3000+&lt;br /&gt;
|-&lt;br /&gt;
|0x5091&lt;br /&gt;
|ChrominanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5090&lt;br /&gt;
|LuminanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Nintendo&#039;s EXIF MakerNote Tag ====&lt;br /&gt;
&#039;&#039;&#039;This still need to be figured out:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MakerNote is made with Tiff Exif information (Big Endian)&lt;br /&gt;
&lt;br /&gt;
first 2 bytes are the IFD Count (IFD is a 12 byte tag), Regulary there are 2 IFDs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IFD structure&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|2 bytes&lt;br /&gt;
|2 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s IFDs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Desc&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1100&lt;br /&gt;
|Software-specific data&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Count=1 ? Value : Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1101&lt;br /&gt;
|Nintendo 64byte Note&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the IFDs comes a 4 byte Zero ( {0,0,0,0} ).&lt;br /&gt;
&lt;br /&gt;
And then the Data the IFDs point at (if at all)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s 64Byte Note&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Magic&lt;br /&gt;
|Byte[4]&lt;br /&gt;
|{&#039;3&#039;,&#039;D&#039;,&#039;S&#039;,&#039;1&#039;}&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Console identifier?&lt;br /&gt;
|Int&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|3D Parallax*&lt;br /&gt;
|NegInt?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|Category?&lt;br /&gt;
|Int?&lt;br /&gt;
|0x02000 for a man, 0x04000 a woman, 0x10000 a mii...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*The 3D Parallax value is the distance that the right image needed to move in order to get focus.&lt;br /&gt;
&lt;br /&gt;
My formula to get that value isn&#039;t so good but here it is:&lt;br /&gt;
&lt;br /&gt;
x = (lsb - 0xC0) &amp;lt;&amp;lt; 8 + msb;&lt;br /&gt;
&lt;br /&gt;
Parallax =  - round( 2 ^ (x/128 + 2) )&lt;br /&gt;
&lt;br /&gt;
If someone makes sense of this, please explain or maybe correct..&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=3632</id>
		<title>MPO</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MPO&amp;diff=3632"/>
		<updated>2012-07-28T13:07:00Z</updated>

		<summary type="html">&lt;p&gt;Thib: /* Nintendo&amp;#039;s EXIF MakerNote Tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
MPO = Multi-Picture Object&lt;br /&gt;
&lt;br /&gt;
Document describing the file format used in mpo files:&lt;br /&gt;
http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf&lt;br /&gt;
&lt;br /&gt;
Nintendo uses a common format for its 3D pictures.&lt;br /&gt;
MPO is basically two JPG files concatenated in one file.&lt;br /&gt;
The two JPG files has an EXIF data structure in their headers (This was developed by CIPA).&lt;br /&gt;
&lt;br /&gt;
EXIF is a standard that specifies the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras.[http://en.wikipedia.org/wiki/Exchangeable_image_file_format]&lt;br /&gt;
&lt;br /&gt;
=== Nintendo&#039;s EXIF Data Structure ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
!  VALUE&lt;br /&gt;
|-&lt;br /&gt;
|0x010F&lt;br /&gt;
|Manufacturer&lt;br /&gt;
|Nintendo &lt;br /&gt;
|-&lt;br /&gt;
|0x0110&lt;br /&gt;
|Camera&lt;br /&gt;
|Nintendo 3DS &lt;br /&gt;
|-&lt;br /&gt;
|0x011A&lt;br /&gt;
|XResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x011B&lt;br /&gt;
|YResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x0128&lt;br /&gt;
|ResolutionUnit&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0131&lt;br /&gt;
|Software&lt;br /&gt;
|00204 &lt;br /&gt;
|-&lt;br /&gt;
|0x0132&lt;br /&gt;
|DateTime&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS &lt;br /&gt;
|-&lt;br /&gt;
|0x0213&lt;br /&gt;
|YCbCrPositioning&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x9000&lt;br /&gt;
|ExifVersion&lt;br /&gt;
|0220&lt;br /&gt;
|-&lt;br /&gt;
|0x9003&lt;br /&gt;
|DateTimeOriginal&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9004&lt;br /&gt;
|DateTimeDigitized&lt;br /&gt;
|YYYY:MM:DD HH:mm:SS&lt;br /&gt;
|-&lt;br /&gt;
|0x9101&lt;br /&gt;
|ComponentsConfiguration&lt;br /&gt;
|[0x01,0x02,0x03,0x00]&lt;br /&gt;
|-&lt;br /&gt;
|0x927C&lt;br /&gt;
|MakerNote&lt;br /&gt;
|[DATA - 174 bytes] (yet to be understood)&lt;br /&gt;
|-&lt;br /&gt;
|0xA000&lt;br /&gt;
|FlashPixVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0xA001&lt;br /&gt;
|ColorSpace&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|0xA002&lt;br /&gt;
|PixelXDimension&lt;br /&gt;
|640&lt;br /&gt;
|-&lt;br /&gt;
|0xA003&lt;br /&gt;
|PixelYDimension&lt;br /&gt;
|480&lt;br /&gt;
|-&lt;br /&gt;
|0x5041&lt;br /&gt;
|InteroperabilityIndex&lt;br /&gt;
|R98 &lt;br /&gt;
|-&lt;br /&gt;
|0x5042&lt;br /&gt;
|ExifInteroperabilityVersion&lt;br /&gt;
|0100&lt;br /&gt;
|-&lt;br /&gt;
|0x1000&lt;br /&gt;
|InteroperabilityVersion&lt;br /&gt;
|JPEG Exif Ver 2.2 &lt;br /&gt;
|-&lt;br /&gt;
|0x501B&lt;br /&gt;
|ThumbnailData&lt;br /&gt;
|[DATA - 3000+ bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5023&lt;br /&gt;
|ThumbnailCompression&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|0x502D&lt;br /&gt;
|ThumbnailXResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x502E&lt;br /&gt;
|ThumbnailYResolution&lt;br /&gt;
|72:1&lt;br /&gt;
|-&lt;br /&gt;
|0x5030&lt;br /&gt;
|ThumbnailTransferFunction&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|0x0201&lt;br /&gt;
|JPEGInterchangeFormat&lt;br /&gt;
|682&lt;br /&gt;
|-&lt;br /&gt;
|0x0202&lt;br /&gt;
|JPEGInterchangeFormatLength&lt;br /&gt;
|3000+&lt;br /&gt;
|-&lt;br /&gt;
|0x5091&lt;br /&gt;
|ChrominanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|-&lt;br /&gt;
|0x5090&lt;br /&gt;
|LuminanceTable&lt;br /&gt;
|[DATA - 128 bytes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Nintendo&#039;s EXIF MakerNote Tag ====&lt;br /&gt;
&#039;&#039;&#039;This still need to be figured out:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The MakerNote is made with Tiff Exif information (Big Endian)&lt;br /&gt;
&lt;br /&gt;
first 2 bytes are the IFD Count (IFD is a 12 byte tag), Regulary there are 2 IFDs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IFD structure&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|2 bytes&lt;br /&gt;
|2 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|4 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s IFDs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Tag&lt;br /&gt;
!  Desc&lt;br /&gt;
!  Type&lt;br /&gt;
!  Count/Value&lt;br /&gt;
!  Value/Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1100&lt;br /&gt;
|Software-specific data&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Count=1 ? Value : Offset&lt;br /&gt;
|-&lt;br /&gt;
|0x1101&lt;br /&gt;
|Nintendo 64byte Note&lt;br /&gt;
|7-Undefined&lt;br /&gt;
|Count&lt;br /&gt;
|Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the IFDs comes a 4 byte Zero ( {0,0,0,0} ).&lt;br /&gt;
&lt;br /&gt;
And then the Data the IFDs point at (if at all)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nintendo&#039;s 64Byte Note&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Magic&lt;br /&gt;
|Byte[4]&lt;br /&gt;
|{&#039;3&#039;,&#039;D&#039;,&#039;S&#039;,&#039;1&#039;}&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Console identifier?&lt;br /&gt;
|Int&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|3D Parallax*&lt;br /&gt;
|NegInt?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|Category?&lt;br /&gt;
|Int?&lt;br /&gt;
|0x02000 for a man, 0x04000 a woman, 0x10000 a mii...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*The 3D Parallax value is the distance that the right image needed to move in order to get focus.&lt;br /&gt;
&lt;br /&gt;
My formula to get that value isn&#039;t so good but here it is:&lt;br /&gt;
&lt;br /&gt;
x = (lsb - 0xC0) &amp;lt;&amp;lt; 8 + msb;&lt;br /&gt;
&lt;br /&gt;
Parallax =  - round( 2 ^ (x/128 + 2) )&lt;br /&gt;
&lt;br /&gt;
If someone makes sense of this, please explain or maybe correct..&lt;/div&gt;</summary>
		<author><name>Thib</name></author>
	</entry>
</feed>