MTropolis MPL: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(85 intermediate revisions by the same user not shown)
Line 1: Line 1:
== MPL ==  
== MPL ==  
* ''' Game ''':    Muppet Treasure Island <br>
* ''' Format Type ''':    Archive <br>  
* ''' Format Type ''':    Archive <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' Signature ''':    None <br>  
* ''' Signature ''':    01 00 A5 A5 <br>  




Line 10: Line 9:
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
<pre>
// Muppet Treasure Island (PC)
// MPL file format
// 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
}


//header
40 bytes - ?
4 bytes - ?
4 bytes - size of the stream table
4 bytes - number of streams
4 bytes - ?


//stream table (34 bytes per entry)
// stream table (34 bytes per entry)
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 (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 - ?
4 bytes (uint32) - ID  // 1001
4 bytes - ?
8 bytes (uint64) - unknown  // 00 00 4B 0C 00 01 26 00
2 bytes - size of string
2 bytes (uint16) - nulls
x bytes - string ("Startup segment")
 
2 bytes - size of string
 
x bytes - string ("BIGDEMOWIN:MUPPETS:DEMO:")
// 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 50: Line 112:
x bytes - filename
x bytes - filename


//data
// data
number of file list entries *
number of file list entries *
{
{
Line 57: Line 119:
</pre>
</pre>
</div>
</div>
=== 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 ===  
=== quickBMS Script ===  
Line 64: Line 134:
=== Notes and Comments ===  
=== Notes and Comments ===  


* There is only one MPL archive called '''MTI1.MPL'''. It holds most of the game's data.
* The games using MPL archives have been created using '''mTropolis Editor'''.  
* The game has been created using '''[https://en.wikipedia.org/wiki/MTropolis mTropolis Editor]'''. In the final build '''mTropolis Player''' (MTPLAY32.EXE) is used to read data from MPL archive.
* 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 ===  
=== Compatible Programs ===  


* [https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Muppets%20Treasure%20Island/Muppets_Treasure_Island_MPL_Tool_1.py Muppet Treasure Island MPL Tool] (unfinished)
* [https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Muppets%20Treasure%20Island/Muppets_Treasure_Island_MPL_Tool_1.py Muppet Treasure Island MPL Tool] (unfinished)
* mTropolis Editor (not available for public)
* [https://drive.google.com/file/d/1MKNko82jpml_W_-XdAjpi8E_qk-XZHOh/view?usp=sharing mTropolis Player]
=== See Also ===
* [https://en.wikipedia.org/wiki/MTropolis mTropolis (wikipedia)]
* [http://www.computinghistory.org.uk/det/56511/mTROPOLIS/ mTropolis (computinghistory.org.uk)]
* [https://web.archive.org/web/19970514004104/http://www.mfactory.com/mtropolis/ www.mfactory.com/mtropolis/ (webarchive backup)]
* [https://web.archive.org/web/19980119101543/http://www.mfactory.com/mtropolis/MT18_TITLES.HTML www.mfactory.com - games made with mTropolis (webarchive backup)]


==Gallery==
==Gallery==

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