<- 1  -   of 75 ->
^^
vv
List results:
Search options:
Use \ before commas in usernames
it's awkward because if you want to make a properly integrated editor it really would be simplest just to load the entire game into RAM at startup. this would probably be okay for the gamecube games because their assets will fit into 1.5 GB and you can reasonably expect 4GB RAM on a modern PC. but if you want to edit prime 3 assets as well this might be pushing it.
Edit history:
Aruki: 2014-09-06 11:06:42 pm
Aruki: 2014-09-06 11:04:04 pm
...that sounds a little excessive, lol. I'd like to have functionality to edit worlds individually (MLVLs and their associated rooms), plus functionality for viewing/editing individual assets. I don't think loading every asset in the game is quite necessary, haha.

You also aren't taking compression into account with that 1.5 GB figure.
Edit history:
Aruki: 2014-09-06 11:48:56 pm
LOL wow I just found this in Metroid Prime 3. This is the STRG file used for the intro text...

Quote:
-- Ship Log --
Autopilot navigation initiated.
Destination Coordinates: .0473, -3.43, 00.336.
Planet Norion, Kalandor region

-- Life-Support Status --
Cryogenic systems stable.
Blood Pres

Life-support anomaly detected.

Neurological readings indicat

Destination Coor\n.............. 0xFFFFFFFF NULL
^M\0...Kämpfen000D8B9A723E9FF198X8D99AF199281910
''%s (error %d)''**--0x0000001D.................
################DANGER#####overrun^H^H^H^H^H^H^H
V o u s  m o u r e z .s i v otre##9D02B9EA09F0A1
BIOSv3.0 Wii Format^H^H^H^H^H^H^H^H^H^H?. (y/n)_
02984BA7D98EB098F8BA98C0982877CB094B289A0D98B207
andrayda hat sich die Gestalt\n.\0\0^B..........
29847B8D7B2987G77A987E7A09809482B89D0A9881737019
0X09A09B8A0X07D9839D m o r i r a i i i i i. .  i
G.F.S. \0G.F.S. \0G.F.S. \0G.F.S. \0G.F.S. \0G.F
S. \0G.F.S. \0G.F.S. \0G.F.S. \0G.F.S. \0G.F.S.
0x57 0x41 0x4B 0x45 0xA0 0x55 0x50 0x2E 0x00^B^B
0x57 0x41 0x4B 0x45 0xA0 0x55 0x50 0x2E 0x00^B^B
0x49xA0x41x4DxA0x41x57x41x4Bx45x53x61x6Dx75x73\N

&main-color=#89D6FF;Galactic Federation Bounty Claim Form
Please answer the following questions truthfully and completely.
False information will result in the withholding of payment credits.
&main-color=#FFFFFF;&link=addscore:0;Click here to proceed.&endlink;

&main-color=#89D6FF;Is this your first mission with the Federation?
&main-color=#FFFFFF;&link=addscore:0;Yes&endlink;
&main-color=#FFFFFF;&link=addscore:3;No&endlink;

&main-color=#89D6FF;When you gather information while on a mission, what do you do?
&main-color=#FFFFFF;&link=addscore:0;Gather all the data I can and avoid conflict.&endlink;
&main-color=#FFFFFF;&link=addscore:1;Kill everything in sight and ask questions later.&endlink;

&main-color=#89D6FF;When you become lost during a mission, what is your first instinct?
&main-color=#FFFFFF;&link=addscore:0;Immediately call the Federation for help.&endlink;
&main-color=#FFFFFF;&link=addscore:1;I never get lost.&endlink;

&main-color=#89D6FF;What is a Metroid's weakness?
&main-color=#FFFFFF;&link=addscore:1;Ice&endlink;
&main-color=#FFFFFF;&link=addscore:0;Fire&endlink;
&main-color=#FFFFFF;&link=addscore:0;I don't know.&endlink;

&main-color=#89D6FF;Who do you like better?
&main-color=#FFFFFF;&link=addscore:0;Mother Nature&endlink;
&main-color=#FFFFFF;&link=addscore:1;Mother Brain&endlink;

&main-color=#89D6FF;Claim form complete. Credentials accepted.
&main-color=#89D6FF;Your code name for this mission is &push;&main-color=#E67E00;&if=score:7;Neptune&else;&if=score:6;Saturn&else;Mars&endif;&endif;&pop;

&main-color=#89D6FF;Please select your mission difficulty.
&main-color=#FFFFFF;&link=choose:0;&if=score:7;Mercury&else;&if=score:6;Earth&else;>Mars<&endif;&endif;&endlink;
&main-color=#FFFFFF;&link=choose:1;&if=score:7;>Neptune<&else;&if=score:6;>Saturn<&else;Jupiter&endif;&endif;&endlink;
&main-color=#89D6FF;Thank you and good luck.
Edit history:
DJGrenola: 2014-09-06 11:56:58 pm
Quote from Paraxade:
0x57 0x41 0x4B 0x45 0xA0 0x55 0x50 0x2E 0x00^B^B
0x57 0x41 0x4B 0x45 0xA0 0x55 0x50 0x2E 0x00^B^B
0x49xA0x41x4DxA0x41x57x41x4Bx45x53x61x6Dx75x73\N


ali@gibson:/data/lol/files$ echo $'\x57\x41\x4b\x45\xa0\x55\x50\x2e'
WAKE�UP.
ali@gibson:/data/lol/files$ echo $'\x49\xa0\x41\x4d\xa0\x41\x57\x41\x4b\x45\x53\x61\x6d\x75\x73'
I�AM�AWAKESamus
Anywhere, everywhere
Ha, seems like someone at Retro was having some fun
Figured out most of the CSMPInfo structure in CAUD, it's still not complete and I'm not sure it's 100% correct, but if you have 010 Editor please test this on as many as you can:
Code:
//--------------------------------------
//--- 010 Editor v5.0.1 Binary Template
//
// File:
// Author:
// Revision:
// Purpose:
//--------------------------------------


BigEndian();
struct CSMPInfo
{
    uint unk8;
    uint64 CSMPId <format = hex>;
    union
    {
        struct
        {
            float unkFloat1;
            uint unk1;
            uint unk2;
            float unkFloat2;
            float unkFloat3;
            float unkFloat4;
            uint unk4;
            uint unk5;
            uint unk6;
            uint unk7;
            float unkFloat5;
            uint unk8;
            float unkFloat6;
            ubyte flags[8];
            uint unk9;
            struct
            {
                float unkFloat1;
                float unkFloat2;
                byte flags[2];
            }unkStruct[unk9];
            struct
            {
                ubyte unk1;
                ubyte unk2[8]; // I'm thinking this is padding as it's never changed in any files i've tested
                ushort unk3;
                ushort unk4;
                if (unk4)
                {
                    float unk5;
                    int unk6;
                }
                ushort unk7;
                struct
                {
                    float unkFloat1;
                    float unkFloat2;
                    byte flags[2];
                }unkStruct[unk7];
            }unkStruct2[4] <optimize = false>;
            ushort unk10;
            float unkFloat7;
            ubyte unk11[9];
            uchar unk12[8];  // I'm thinking this is padding as it's never changed in any files i've tested           
        }info <optimize = false>;
        char unk[unk8 - 8];
    }data <optimize = false>;
};

struct
{
    uint magic <format = hex>;
    uint version;
    string name;
    uint unk1;
    if (unk1)
        string name2;
    float unk2;
    uint unk4;
    float unkFloat1;
    float unkFloat2;
    uint unk6;
    uint unk7;
    CSMPInfo csmpInfo[unk7] <optimize = false>;
}file;
Edit history:
Ntsc: 2014-09-07 03:46:12 pm
That 010 binary editor thing is pretty weird. I was talking to a co-worker about writing a program like that but now that I've seen it ugh... that looks painful.
Wait wut? How is that painful? It's a standard C struct with some custom features to make it a bit more useful in an editor environment
That application looks painful to use and I'm sure it was painful to write. Also who uses those types? uint? uchar? ubyte? Whats a `string`?
There are standards for these in "stdint.h" which fully describe their size.

Not trying to discourage you I just really wanted to comment on that since it stood out to me.
Edit history:
Aruki: 2014-09-07 05:38:11 pm
Aruki: 2014-09-07 05:25:59 pm
They are slightly hard to follow IMO, as someone who doesn't use 010 and doesn't intend to. It would be better to have more standard struct definitions that aren't tied to any particular program's interface... make it easier for other people to build on your work without having to use the exact same tools you do. That said though...

Quote from Ntsc:
Also who uses those types? uint? uchar? ubyte? Whats a `string`?


what lol? What's weird about those type names? uint is slightly ambiguous and I'm not sure what the use of having both uchar and ubyte is - I guess one is meant for characters and the other is meant for numeric values - but it's not like they're unheard-of type names or hard to tell what's meant by them. String is a very common term as well.
Edit history:
Antidote: 2014-09-07 06:03:42 pm
stdint.h is hardly portable, some toolchains don't have that available, so I'd hardly call that "standard"
And with some simple modifications this could be used directly with any C/C++ program, (remove if's and put them in where appropriate, handle arrays with a loop or pointer logic, etc), personally I find these simpler to follow than any text documentation, becuase you can see the actual flow of it and actually see what affects what and why. I personally prefer 010 over any hex editor I've ever used, and I've used alot: HW, HxD, XVI32, Okteta, and Hex Editor Neo, I've used a few more but I can't remember their names off the top of my head.

What hex editor you use is purely subjective.

Edit:
On top of that, that template when run looks like this:
Edit history:
Antidote: 2014-09-07 09:42:38 pm
I'm such a moron, guess what I found lurking in my bt folder
Code:
//--------------------------------------
//--- 010 Editor v5.0 Binary Template
//
// File:
// Author:
// Revision:
// Purpose:
//--------------------------------------

BigEndian();

struct Entry
{
    uint EntrySize;
    char EntryData[EntrySize];
};

struct
{
    string ModuleDir;
    string ModuleName;
    Entry Entries[4] <optimize = false>;
}file;


Apparently I figured this out back in MAY and totally forgot about it. However it seems to be correct, as every AGSC I've tested has 4 chunks, and it looks like each section has a specific task, one looks like it has all of the coef tables, another looks like valid adpcm data, and I'm not sure what the other two are.

there is that list I posted some pages back that shows locations of chunks from various AGSCs being loaded into RAM and ARAM, don't know whether that's any help
Edit history:
Aruki: 2014-09-08 06:50:26 am
yeah, we covered this way back on page 8.

Quote from Paraxade:
So following that table in the header, you get another size value, and another chunk of data. Following that is a third size value that seems to cover most of the file. That might be all the raw audio; might get slightly better results to rip that out manually instead of using the entire AGSC. In any case, there's more data following the raw audio - it starts with a fourth size value that covers all the rest of the data in the file.

I can hear some of the War Wasp sound effects in Audacity, but pretty distorted.

EDIT: That last chunk of data might have some of the stuff we need; it seems to have offsets into the audio data


also

Quote from Antidote:
No particle effects, Phazon is mostly particle glow.


I think it's actually a bug in my material rendering... hopefully one I can sort out at some point
Edit history:
Antidote: 2014-09-08 10:31:09 pm
Antidote: 2014-09-08 10:29:10 pm
Here is a new mtexdump2, it exports to png and has a few useful command line arguments:
mtexdump2
Code:
USAGE:

   mtexdump2.exe  [-i] [-m <int>] [-o <string>] [--] [--version] [-h]
                  <string>


Where:

   -i,  --info
     Display information about the requested file, does not export

   -m <int>,  --mipmaps <int>
     Total number of mipmap layers to export

   -o <string>,  --output <string>
     Destination basename of exported images

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   <string>
     (required)  Retro TXTR image to convert, or display info


   MTexDump: Texture dumper for Retro Studios games


I WILL be adding more export formats in the future, so be patient about that. The next format I'll be adding is DDS.
Edit history:
Aruki: 2014-09-09 04:11:14 am
Aruki: 2014-09-09 04:02:02 am
Minor PakTool update. I found a bug in Metroid Prime 3 file decompression where data from uncompressed data clusters in compressed files weren't being copied to the output buffer properly. This mainly only affected textures, as most other file types don't have uncompressed clusters. In English: a bunch of MP3 textures were being dumped wrong. Download attached to the post, and I'll be updating the link in the first post in a moment as well.
Edit history:
Aruki: 2014-09-09 05:58:17 am
It would help if I remembered to actually attach it

edit: okay, hold on - realized a couple things need some tweaking
Wannabe Everything
I want to be able to make tools like this. What do I need to learn to do so?
Basically find a programming language you're comfortable with, grab a hex editor and poke around. If you need to learn something specific there are good resources stackoverflow being one of my favorites.

I'd start simple, attempt to figure out a format that's already been done and look at someone else's notes on it. Then work your way to figuring out other formats, the tools will follow naturally.
Yeah, pretty much. Learn at least the basics of a programming language (C++ is a nice choice), then do what Antidote said.

I noticed the readme was super outdated on PakTool, which led to me revising that, which led to me deciding to rework a few features, which led to me realizing a few features were actually broken in the build I posted earlier. Working on fixing everything up, will have a new version up soon.
Wannabe Everything
Quote from Antidote:
Basically find a programming language you're comfortable with, grab a hex editor and poke around. If you need to learn something specific there are good resources stackoverflow being one of my favorites.

I'd start simple, attempt to figure out a format that's already been done and look at someone else's notes on it. Then work your way to figuring out other formats, the tools will follow naturally.

So it doesn't matter which language? One of my goals is to work on picking apart the Metroid games like you guys do since it's been my favorite series since I was little.

Quote from Paraxade:
Yeah, pretty much. Learn at least the basics of a programming language (C++ is a nice choice), then do what Antidote said.

I noticed the readme was super outdated on PakTool, which led to me revising that, which led to me deciding to rework a few features, which led to me realizing a few features were actually broken in the build I posted earlier. Working on fixing everything up, will have a new version up soon.

Okay. Step 1, learn a programming language.

And thank you both for being so friendly. I knew it was risky asking such a question in this thread, since this probably isn't the place for such, but I figured you guys would be the best people to ask since I want to work with these games.
Hey, we're all here to learn, and this is actually a good place to ask such a question since those involved in this thread will probably have a decent answer.

And yeah, the programming language doesn't really matter, if you want to start simple, try C#, it's fairly decent and while it's not my favorite language (that goes to C++) it's definitely got it's merits. I'd also suggest learning python as well.
Edit history:
Antidote: 2014-09-09 06:33:35 am
Oh on an unrelated note, MP3 will definitely need to be handled carefully, fully decompressed Metroid1.pak is a whopping 1GB and the Wii doesn't like it too much.
One way to reduce the size is to remove duplicates, however that will cause a hit on load times.
Edit history:
Uikri: 2014-09-09 06:35:02 am
Wannabe Everything
Quote from Antidote:
Hey, we're all here to learn, and this is actually a good place to ask such a question since those involved in this thread will probably have a decent answer.

And yeah, the programming language doesn't really matter, if you want to start simple, try C#, it's fairly decent and while it's not my favorite language (that goes to C++) it's definitely got it's merits. I'd also suggest learning python as well.

Yeah, and I wanted to talk to you and Paraxade directly, so this seemed like the best place to do that. Oooh, I was actually thinking of starting with python.

Quote from Antidote:
Oh on an unrelated note, MP3 will definitely need to be handled carefully, fully decompressed Metroid1.pak is a whopping 1GB and the Wii doesn't like it too much.
One way to reduce the size is to remove duplicates, however that will cause a hit on load times.

Wow. How large is the entire game compressed?
Edit history:
Antidote: 2014-09-09 06:37:46 am
Antidote: 2014-09-09 06:37:23 am
With duplicated assets? About 9GB, with them removed about half that.
With all textures exported to png (including duplicates), that's about 800MB alone.