Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

Muppet Treasure Island .MPZ .MPL .MPX

Featured Replies

  • Author

I have also requested smiRaphi to see if he can support it with his tool. Maybe he can do a good job.

  • Author
1 hour ago, DKDave said:

Please only post some samples of the relevant files, not a link to the full game ISO.

 

Sorry, I didn’t realize…

  • Supporter
Quote

In "Muppet Treasure Island" game there is only one MPL archive called MTI1.MPL. It holds most of the game's data.

edit: most important info:

Quote

There is a high chance that MPL archive stores files readable only by Macintosh, because mTropolis Editor was never available on Windows.

 

The unfinished py script from ikskoks' link gives this from .MPL (after adding parenthesis to the print lines), 201 strings found:

Quote

4343
Tell0_1: 48
Tell0_2: 4513
Size of str: 15 Tell: 4544 Size: 13337
Size of str: 15 Tell: 4575 Size: 29515
Size of str: 24 Tell: 4615 Size: 38727
...
Size of str: 13 Tell: 10523 Size: 22879
Size of str: 18 Tell: 10557 Size: 6644
Size of str: 13 Tell: 10586 Size: 25004
Sum_size: 6140271

Names (extensions .aif, .pal, .pic, .tun):

Quote

'G00_CREDIT.AIF'
'G00_BEAKER.aif'
'Beaker_finale_smoke.tun'
'G00_muTreasureMapSting.AIF'
'D01agf04.AIF'
'G00_E02_TROLANEY.AIF'
'D01a_FlagJollyDown2.TUN'
'G00_E02_WHEEL.AIF'
'Calico Dick"oof".AIF'
'G00_E02_TREASURE.AIF'
'DrLivesly"ooh".AIF'
'G00_E02_SAVE.AIF'
'D01aP009.tun'
'G00_E02_LOAD.AIF'
'B10.pal'
'E01_BG_Default.pic'
'E01.pal'
...

'A06_ex01.TUN'
'A06_DYNTHROW.AIF'
'FUSE_1.AIF'
'B08_0012.tun'
'A06_map.pic'
'G99_muMT.AIF'
'A06_Xspot.tun'
'C18_muSH.AIF'
'A05_BG_WinOpen.PIC'
'A05_S007.tun'
'Smollet"hmmm".AIF'
'A05_PF01.tun'

Using offzip is no dice, and well, Aluigi wrote about 7 years ago .MPL is hard to extract.

Watching some video of MTIsland could help to decide whether it's worth the effort:

MuppetsTresIsl2.png.e86c6f0f1984a95676743f14b7beb672.png

(There's no 3D models, just sprites, afaics.)

Edited by shak-otay

  • Localization

The MPL file has pointers in to the other MPX files, or in other words, the MPL file contains the directory for content in the MPL + all the other numbered MPX files. The Archive File Number in the Streams directory tells you which MPL/MPX file contains the specific file...

 

+--------------------------------------------+
| Muppet Treasure Island MTI1.MPL + MTI#.MPX |
+--------------------------------------------+

// The main file is MTI1.MPL which contains the directory and some file data, followed by MTI2.MPX , MTI3.MPX , ... for additional file data.

// HEADER
  2 - Version (1)
  2 - Unknown ((bytes)165,165)
  4 - Unknown
  2 - null
  4 - Block 1 Offset (14)
  
  // BLOCK 1
    4 - ID (1002)
    4 - Unknown
    4 - Unknown
    2 - null
    
  2 - null
  4 - Block 2 Offset (34)
  
  // BLOCK 2
    4 - ID (1000)
    4 - Unknown
    4 - Unknown
    2 - null
  
// STREAMS AND SEGMENTS DIRECTORIES
  4 - Number of Streams
  2 - Unknown (1)
  2 - Number of Segments

  // for each stream (34 bytes per entry)
    16 - Stream Name (null terminated, filled with nulls) ("assetStream", "sceneStream",...)
    4 - Unknown
    4 - Stream Abbreviation ("eStr")
    2 - Archive File Number
    4 - Stream Offset
    4 - Stream Length

  4 - Unknown (1)
  
  // for each segment
    4 - Segment ID (0, 2, 3, ...)
    2 - Segment Name Length (including null terminator)
    X - Segment Name
    1 - null Segment Name Terminator
    2 - Segment Path Length (including null terminator)
    X - Segment Path
    1 - null Segment Path Terminator

// STREAM DATA
  // for each stream
    4 - ID (1001)
    4 - Unknown
    4 - Unknown
    2 - null
    X - Stream Data

 

  • Localization
On 4/22/2026 at 9:07 AM, shak-otay said:

Just a quick glance, nothing serious, SPRITES.Q3, width of 640 at the right side:

 

 

This is the structure of the Q3 Archive. Within it are at least a PAL file of RGB888 data, and multiple Sprites.

 

+-----------------------------+
| Muppet Treasure Island *.Q3 |
+-----------------------------+

// HEADER
  4 - Header (MDM!)
  2 - Unknown (256)
  2 - Unknown (256)
  4 - Directory Offset
  
// FILE DATA
  // for each file
    X - File Data

// DETAILS DIRECTORY
  8 - null
  4 - Directory Length
  4 - Number of Files
  
  X - Unknown
  
  // for each file
    4 - File Length
    4 - Entry Type (1=Sprite, 3=?, 4=?, 5=Palette)
    4 - File Offset
    4 - null
    
    
+------------------------------+
| Muppet Treasure Island *.spr |
+------------------------------+

// Requires a separate PAL file to be loaded from the archive

// HEADER
  2 - Image Width
  2 - Image Height
  2 - Half Image Width
  2 - Half Image Height
  2 - null
  2 - Unknown (3)
  4 - Image Data Length
  
// IMAGE DATA
  // for each pixel
    1 - Palette Index

image.thumb.png.78a7e435742aa44a77c42ec19ae6f637.png

  • Localization

took a look myself and got this far but pretty sure the files in the FILE_INFO block aren't actually in the archives (at least not in the format the file extension of them would suggest)

import type.time;

struct Str16 {
    u16 l;
    char v[l-1];
    padding[1];
};

using b;
struct se {
    char name[0x10];
    padding[8]; // memory junk
    u16 seg_id;
    u32 off;
    u32 size;

    if (size != 0 && seg_id == 1) {
        u64 p = $;
        b b @ off;
        $ = p;
    }
};
struct sge {
    u32 seg_id;
    Str16 name;
    Str16 path;
};

struct fe {
    padding[4];
    u32 nl;
    u32 stream_id;
    u32 unk2;
    char name[nl-1];
    padding[1];
};

enum bid:u32 {
    STREAM_SEG = 1000,
    OBJ = 1001,
    ROOT = 1002,
    FILE_INFO = 1004,
};
using pb;
struct b {
    bid id;
    u16 unkb0;
    u16 unkb1;
    u16 unkb2;
    u32 size;
    u64 ep = $ + size;

    match(id) {
        (bid::STREAM_SEG):{
            u32 n_strms;
            u16 unk1;
            u16 segc;
            se se[n_strms];
            u32 unk2;
            sge sge[segc];
        }
        (bid::OBJ):{
            char name[0x10];
            u32 unk1;
            u32 unk2;
            b b;
        }
        (bid::ROOT):pb b[while($ < ep)];
        (bid::FILE_INFO):{
            u16 unk1;
            u16 h;
            u16 w;
            u16 unk2;
            u16 unk3[8];

            u32 unk3;
            u32 c;
            fe fe[c];
        }
    }

    if (ep > $) $ = ep;
};
struct pb {
    padding[2];
    u32 off;
    $ = off;
    b b;
};

struct a {
    u16 unk1;
    u16 unk2;
    u32 unk3;
    pb root;
};

a a @ 0;

 

Edited by NeoGT404
format tcorrection

  • Localization
18 hours ago, NeoGT404 said:

For the Q3 file, type 4 is audio, type 3 might be some form of animation?

Thanks, yes Type 4 looks to have raw audio at offset byte 80, unsigned 8-bit PCM, frequency 22050, 1 channel (mono) - good pick up.

Type 3 I assumed was either some kind of scripting (or maybe animation like you suggest), otherwise maybe screen positioning (ie where to put the images on the screen).

 

Quote

took a look myself and got this far but pretty sure the files in the FILE_INFO block aren't actually in the archives (at least not in the format the file extension of them would suggest)

I agree with this as well.

Edited by wattostudios

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.