MPO

MPO

Overview #

MPO = Multi-Picture Object

Document describing the file format used in mpo files: 🔗 http://www.cipa.jp/std/documents/e/DC-007_E.pdf

Nintendo uses a common format for its 3D pictures. MPO is basically two JPG files concatenated in one file. The two JPG files has an EXIF data structure in their headers (This was developed by CIPA).

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. 🔗 1

Nintendo’s EXIF Data Structure #

IDDESCRIPTIONVALUE
0x010FManufacturerNintendo
0x0110CameraNintendo 3DS
0x011AXResolution72:1
0x011BYResolution72:1
0x0128ResolutionUnit2
0x0131SoftwareDepends on the software: 00204 for the Camera (EU), 00227 for the Mii Editor (EU), 00955 for KH3D (EU)
0x0132DateTimeYYYY:MM:DD HH:mm:SS
0x0213YCbCrPositioning2
0x9000ExifVersion0220
0x9003DateTimeOriginalYYYY:MM:DD HH:mm:SS
0x9004DateTimeDigitizedYYYY:MM:DD HH:mm:SS
0x9101ComponentsConfiguration[0x01,0x02,0x03,0x00]
0x927CMakerNote[DATA - 174 bytes] (yet to be understood)
0xA000FlashPixVersion0100
0xA001ColorSpace1
0xA002PixelXDimension640
0xA003PixelYDimension480
0x5041InteroperabilityIndexR98
0x5042ExifInteroperabilityVersion0100
0x1000InteroperabilityVersionJPEG Exif Ver 2.2
0x501BThumbnailData[DATA - 3000+ bytes]
0x5023ThumbnailCompression6
0x502DThumbnailXResolution72:1
0x502EThumbnailYResolution72:1
0x5030ThumbnailTransferFunction2
0x0201JPEGInterchangeFormat682
0x0202JPEGInterchangeFormatLength3000+
0x5091ChrominanceTable[DATA - 128 bytes]
0x5090LuminanceTable[DATA - 128 bytes]

Nintendo’s EXIF MakerNote Tag #

This still need to be figured out:

The MakerNote is made with Tiff Exif information (Big Endian)

first 2 bytes are the IFD Count (IFD is a 12 byte tag), Regulary there are 2 IFDs.

IFD structure

TagTypeCount/ValueValue/Offset
2 bytes2 bytes4 bytes4 bytes

Nintendo’s IFDs

TagDescTypeCount/ValueValue/Offset
0x1100Software-specific data7-UndefinedCountCount=1 ? Value : Offset
0x1101Nintendo 64byte Note7-UndefinedCountOffset

After the IFDs comes a 4 byte Zero ( {0,0,0,0} ).

And then the Data the IFDs point at (if at all)

Nintendo’s 64Byte Note

Different from the wrapping structure this structure is Little-Endian.

OffsetDescriptionTypeDefault Value
0x00Magicchar[4]{‘3’,‘D’,‘S’,‘1’}
0x04?uint321 / 2 / 4 / 5
0x08Timestampuint32Number of seconds since 1/1/2000 00:00:00
0x0CPaddinguint320
0x10Title ID Lowuint32like the title id low but without the last two letters
0x14Flagsuint32
0x18Console IDbyte[4]unique identifier
0x1CPaddingbyte[12]0
0x283D Parallaxfloat[-52,54]
0x2CPaddinguint320
0x30Categoryuint160x2000 for a man, 0x4000 a woman, 0x1000 a mii…
0x32Filteruint16
0x34Paddingbyte[12]0

Category:File formats