MTropolis MPL: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(40 intermediate revisions by the same user not shown)
Line 10: Line 10:
<pre>
<pre>
// MPL file format
// MPL file format
// little endian




// header (56 bytes)
// header (56 bytes)
4 bytes - signature  // always 01 00 A5 A5
4 bytes - signature  // always 01 00 A5 A5
4 bytes - unknown  // 55 AA 00 00 (43605)
4 bytes (uint32) - unknown  // 55 AA 00 00 (43605)
2 bytes - nulls


4 bytes - "struct 1" offset  // 14
 
2 bytes (uint16) - nulls
4 bytes (uint32) - "struct 1" offset  // 14
struct 1
struct 1
{
{
   2 bytes (uint16) - unknown // 1002
   2 bytes (uint16) - ID // 1002
   2 bytes - nulls
   2 bytes (uint16) - nulls
   4 bytes - unknown (some offset?)
   4 bytes (uint32)- unknown
   4 bytes - unknown
   4 bytes (uint32)- unknown
   2 bytes - nulls
   2 bytes (uint16)- nulls
}
}




2 bytes - nulls
2 bytes (uint16) - nulls
4 bytes - "struct 2" offset
4 bytes (uint32) - "struct 2" offset
struct 2
struct 2
{
{
   16 bytes - unknown
   2 bytes (uint16) - ID // 1000
  2 bytes (uint16) - nulls
  4 bytes (uint32) - unknown
  4 bytes (uint32) - unknown
  2 bytes (uint16) - nulls
}
}


struct 3 (stream header?)
struct 3
{
{
   4 bytes (uint32) - number of streams
   4 bytes (uint32) - number of streams
   4 bytes (uint32) - unknown
   2 bytes (uint16) - unknown // 1
  2 bytes (uint16) - number of segments
}
}


Line 45: Line 53:
number of streams *
number of streams *
{
{
   26 bytes - stream type
   16 bytes (char) - stream name  // e.g. "assetStream", "bootStream", "sceneStream" etc.
   4 bytes - stream size
  2 bytes (uint16) - unknown  // 10241
   4 bytes - stream offset?
   4 bytes (uint32) - unknown  // 1F 98 65 53
   4 bytes (uint32) - unknown  // 94836
  2 bytes (uint16) - unknown  // 4399
  6 bytes - nulls
}
}




// ???
// struct 4  (segments table)
4 bytes - ?
4 bytes (uint32) - unknown  // 1
4 bytes - ?
num_of_segments *
2 bytes - size of string
{
x bytes - string ("Startup segment")
  4 bytes (uint32) - segment ID // 0, 2, 3 etc.
2 bytes - size of string
  2 bytes (uint16) - segment name length
x bytes - string ("BIGDEMOWIN:MUPPETS:DEMO:")
  x bytes (char) - segment name  // "Startup segment", "MTI1" etc.
...
  2 bytes (uint16) - length of segment path
  x bytes (char) - segment path  // "MTI1:DATA_MTI:", "MTI2:DATA_MTI:" etc.
}
 
 
// struct 5 (14 bytes)
4 bytes (uint32) - ID  // 1001
8 bytes (uint64) - unknown  // 00 00 4B 0C 00 01 26 00
2 bytes (uint16) - nulls
 
 
// struct 6 (24 bytes)
16 bytes (char) - name  // "builtObjects"
4 bytes (uint32) - unknown  // 31488
4 bytes (uint32) - unknown  // 31488
 
 
// struct 7 (14 bytes)
4 bytes (uint32) - ID  // 1004
4 bytes (uint32) - unknown
4 bytes (uint32) - unknown
2 bytes (uint16) - nulls
 
 
// struct 8 (10 bytes)
10 bytes - unknown
 
 
38 bytes - unknown
 
 
x bytes - string ("Macintosh 8bit")
x bytes - string ("Macintosh 8bit")




// file list (big endian)
// file list (big endian??)
4 bytes - ?
4 bytes - ?
2 bytes - filename length
2 bytes - filename length
Line 81: Line 122:
=== Games ===  
=== Games ===  
List of games using this file format:
List of games using this file format:
* Free Willy Activity Center (PC) (*.MPL)
* MindGym (PC) (*.MPL)
* MindGym (PC) (*.MPL)
* Muppet Treasure Island (PC) (*.MPL)
* Muppet Treasure Island (PC) (*.MPL)
Line 92: Line 134:
=== Notes and Comments ===  
=== Notes and Comments ===  


* The games using MPL archives have been created using '''mTropolis Editor'''. In the game's final builds '''mTropolis Player''' (MTPLAY32.EXE) is used to read data from MPL archive.
* The games using MPL archives have been created using '''mTropolis Editor'''.  
* In the games final builds '''mTropolis Player''' (MTPLAY32.EXE) is used to read data from MPL archive.
* In "Muppet Treasure Island" game there is only one MPL archive called '''MTI1.MPL'''. It holds most of the game's data.
* In "Muppet Treasure Island" game there is only one MPL archive called '''MTI1.MPL'''. It holds most of the game's data.
* There is a high chance that MPL archive stores files readable only by Macintosh, because '''mTropolis Editor''' was never available on Windows.


=== Compatible Programs ===  
=== Compatible Programs ===  

Latest revision as of 20:27, 29 August 2022

MPL

  • Format Type : Archive
  • Endian Order : Little Endian
  • Signature : 01 00 A5 A5


Format Specifications

// MPL file format

// little endian


// header (56 bytes)
4 bytes - signature  // always 01 00 A5 A5
4 bytes (uint32) - unknown  // 55 AA 00 00 (43605)


2 bytes (uint16) - nulls
4 bytes (uint32) - "struct 1" offset  // 14
struct 1
{
   2 bytes (uint16) - ID  // 1002
   2 bytes (uint16) - nulls
   4 bytes (uint32)- unknown
   4 bytes (uint32)- unknown
   2 bytes (uint16)- nulls
}


2 bytes (uint16) - nulls
4 bytes (uint32) - "struct 2" offset
struct 2
{
   2 bytes (uint16) - ID // 1000
   2 bytes (uint16) - nulls
   4 bytes (uint32) - unknown
   4 bytes (uint32) - unknown
   2 bytes (uint16) - nulls
}

struct 3  
{
   4 bytes (uint32) - number of streams
   2 bytes (uint16) - unknown  // 1
   2 bytes (uint16) - number of segments
}


// stream table (34 bytes per entry)
number of streams *
{
   16 bytes (char) - stream name  // e.g. "assetStream", "bootStream", "sceneStream" etc.
   2 bytes (uint16) - unknown  // 10241
   4 bytes (uint32) - unknown  // 1F 98 65 53
   4 bytes (uint32) - unknown  // 94836
   2 bytes (uint16) - unknown  // 4399
   6 bytes - nulls
}


// struct 4  (segments table)
4 bytes (uint32) - unknown  // 1
num_of_segments *
{
   4 bytes (uint32) - segment ID // 0, 2, 3 etc.
   2 bytes (uint16) - segment name length
   x bytes (char) - segment name  // "Startup segment", "MTI1" etc.
   2 bytes (uint16) - length of segment path
   x bytes (char) - segment path  // "MTI1:DATA_MTI:", "MTI2:DATA_MTI:" etc.
}


// struct 5 (14 bytes)
4 bytes (uint32) - ID  // 1001
8 bytes (uint64) - unknown  // 00 00 4B 0C 00 01 26 00
2 bytes (uint16) - nulls


// struct 6 (24 bytes)
16 bytes (char) - name  // "builtObjects"
4 bytes (uint32) - unknown  // 31488
4 bytes (uint32) - unknown  // 31488


// struct 7 (14 bytes)
4 bytes (uint32) - ID  // 1004
4 bytes (uint32) - unknown
4 bytes (uint32) - unknown
2 bytes (uint16) - nulls


// struct 8 (10 bytes)
10 bytes - unknown


38 bytes - unknown


x bytes - string ("Macintosh 8bit")


// file list (big endian??)
4 bytes - ?
2 bytes - filename length
1 byte - /x00
4 bytes - ?
4 bytes - file size
2 bytes - ?
x bytes - filename

// data
number of file list entries *
{
   x bytes - data
}

Games

List of games using this file format:

  • Free Willy Activity Center (PC) (*.MPL)
  • MindGym (PC) (*.MPL)
  • Muppet Treasure Island (PC) (*.MPL)
  • SPQR: The Empire's Darkest Hour (PC) (*.MPL)
  • The Day The World Broke (PC) (*.MPL)

quickBMS Script

Not written yet.

Notes and Comments

  • The games using MPL archives have been created using mTropolis Editor.
  • In the games final builds mTropolis Player (MTPLAY32.EXE) is used to read data from MPL archive.
  • In "Muppet Treasure Island" game there is only one MPL archive called MTI1.MPL. It holds most of the game's data.
  • There is a high chance that MPL archive stores files readable only by Macintosh, because mTropolis Editor was never available on Windows.

Compatible Programs

See Also

Gallery