What's new

Back to Metroid Prime hacking

revel8n

New member
Thanks for the update. i had started but hadn't gotten around to finishing looking into this after my update the mpakdump source code. i'll take a look at things and see if i can see what all is going on.


And well since i'm here, i guess i'll:
mreatextured.png
 

antidote

New member
it was rather simple XD, all they really did was add the ID and version and remove the compression method (well version 1 anyway)

EDIT:
Pirate Frigate FTW!
 
Last edited:
OP
I

interdpth

New member
Check out the mdecomp source earlier in the thread, it's super easy to reverse. :)

Good luck on your translating, eventually we'll have a compressor and stuff, again good luck!
 

revel8n

New member
Possibly no compression needed....

Just an added note: The game pak file have flags in the file entry list that specify whether a file is compressed or not. As such it may not be necessary to actually re-compress any files in some cases. As for textures the mtexdump source should be easy to reverse as well to allow for recreation of modified textures and the like.

We will more than likely end up doing tests with recreated pak files as well at some point so it's not too far fetched to as about the possibility of recreating patched pak files. Will have to see how things go, heh.

Hope your translation goes well.
 

antidote

New member
well the pak creator fell through due to unforeseen problems, however i did fix a bug in MPakDump, it now properly reads and dumps the Name Table, now don't think this means that every file has a name, it's only for certain files.
 
OP
I

interdpth

New member
Due to possible copyright stuff, I don't think we'll be making an exporter maybe an importer XD

But it will be open source so anyone can do whatever :)
 
Last edited:

antidote

New member
once it's stable and we have support for most of the formats, Inter and revel8n are doing the programming, I'm helping, rather dismally, to crack the formats, currently the SCLY section of MREA files are giving us a run for our money and that is whats being concentrated on by inter and myself. I'm also reorganizing the code for the utilities so that they can be used in a more efficient manner in the viewer.
 

antidote

New member
Well, we're still around and i'm still working on MP, i took a break from cracking SCLY and looked into FRME and discovered that it is a rather simple format.
it's not quite done YET but here is what i have.

Code:
//--------------------------------------
//--- 010 Editor v3.0.6 Binary Template
//
// File:
// Author:
// Revision:
// Purpose:
//--------------------------------------
#include "common-types.bt"

// #pragma byteorder(big_endian)
BigEndian();

// mark used bytes with a light green background
SetBackColor(cLtGreen);
struct FRME_FILE
{
    struct FRME_HEADER
    {
        uint32 unknown0;
        uint32 unknown1;
        uint32 unknown2;
        uint32 unknown3;
        uint32 unknownCount;
    }fileHeader;

    struct FRME_DATA
    {
        local uint32 i = 0;
        for (i = 0; i < fileHeader.unknownCount; i++)
        {
            struct
            {
                char tag[4];
                //uint8 unk1;
                string Name1;
                //uint8 unk2;
                string Name2;
                uint16 unknown1[2];
                uint32 unknown2[4];
                uint32 unknown3;
                switch(tag)
                {
                    case "BWIG":
                        uint8 unknown4;
                        uint16 unknownArray[unknown4];
                        float4 unknown5;
                        uint8 data[0x32];
                    break;
                    case "CAMR":
                        float4 translateValue;
                        uint32 unknown5[2];
                        uint8 unknown6;
                        switch(unknown6)
                        {
                            case 1:
                                uint8 unknown7;
                            break;
                            case 2:
                                uint8 unknownArray[2];
                            break;
                            case 69:
                                uint32 unknown7[2];
                            break;
                        }
                        uint16 unknown[0x1F];
                    break;
                    case "ENRG":
                        uint8 data[0x47];
                    break;
                    case "GRUP":
                        uint8 unknown4;
                        uint16 unknown5[2];
                        uint8 unknown6;
                        if (unknown5[1] != 0)
                            float3 unknown7;
                        else
                            uint16 unknown7[5];

                        uint8 unknown8[0x36];
                        //uint16 unknown8;
                        //uint8 data[0x48];
                    break;
                    case "HWIG":
                        uint8 data[0x43];
                    break;
                    case "IMGP":
                        uint8 data[0xA7];
                    break;
                    case "LITE":
                        uint8 data[0x63];
                    break;
                    case "MODL":
                        uint32 CMDL;
                        uint32 unknown4[2];
                        uint8 unknown5;
                        uint16 unk[unknown5];
                        float4 translateValue[2];
                        uint32 unknown6[8];
                        uint16 unknown7;
                    break;             
                    case "METR":
                        Printf("%s Here %i\n", tag, i);
                        uint16 unknown4;
                        uint32 unknown5;
                        uint8 data[0x47];
                    break;    
                    case "SLGP":
                        uint8 data[0x53];
                    break;       
                    case "TBGP":
                        uint8 data[0x66];
                    break;
                    case "TXPN":
                        float4 translateValue[2];
                        uint16 unknown4;
                        uint32 unknown5[0x08];
                        uint32 unknown6[2];
                        uint32 FONT <format = hex>;
                        uint32 unknown7[2];
                        uint8 unknownArrayCount;
                        uint16 unknownArray[unknownArrayCount];
                        float4 translateValue2[2];
                        uint8 data[0x22];
                    break;  

                }
            }widgetInfo;
        }
    }fileData;
            
};

struct FRME_FILE fileInfo;
 

Psychomax

New member
the download links for antidote's new versions of mpakdump and mdecomp seem to have expired. Does anyone else have them that can reupload them?
 

Psychomax

New member
Awesome, thanks! Is there another place to get the new version of mdecomp, too? The source code on the other page says that it doesn't work with texture files
 

Andyflower

New member
I will get a new dump of the iso, then head to the store this weekend to get me some verbatim dual-layer discs. I used a memorex, it was the last one I had, and didn't think twice about it, 'cause my SSBB memorex works. I'll burn at 2.4x next time, too.
 

Top