What's new

Interested, yet not prepared.


New member
Hi! First time posting on the forum here, and I'm a bit nervous.. ehe..

I've been browsing around this forum, and.. I gotta say, I'm liking what I'm seeing, and amazed. o_O

I've been doing some experiments with programming and, more recently, going through an uncompressed .CMDL file from Metroid Prime (Love that game) that I've obtained from curiosity with a Hex editor. Armed with the YAGCD (Awesome), I've been just browsing, and I'd like to learn a few things about the GC. :)

As a newbie, I've had a lot of experience with C, not so much with OpenGL, but I'm learning that as well as C++. Since the Gamecube is my favorite system, I'd like to simultaneously learn about various file formats and how you'd analyze them/decode/decrypt the contents of them. Sorry if this is asking too much, but I'm -really- interested in this kind of stuff! :D

Any advice, tutorials, tidbits of information, please send over! :)

Thanks in advance,

P.S: As of a few minutes later, I'm starting to notice patterns in said .CMDL file... the frequency of certain bytes is odd. Perhaps vertex coordinates/references to other data? And what's even more odd, I'm starting to realize that certain 4-byte groups are starting with the same bytes as others. I'm looking at it more and more! :)

UPDATE: Theory made. Judging by the frequency of the starting byte, I've an idea that that's a definition for different types of vertexes, texture maps, things like that. Then the next three bytes are X, Y, and Z coordinates. This is just a theory, but a damn good one! :). I'll be doing some more stuff with this as time progresses.

UPDATE 2: Considering a floating point theory, yet it doesn't make much sense. BF642331 is given as -0.8911619782447815 when computed as a float, and the frequencies of the bytes make me almost certain that this is wrong.

In the original theory, if it went by my method, BF642331 would map it to 100, 35, 49. Also, as a signed/unsigned example, 40FF7588 would place the vertex at -1, 117, -120, or, if unsigned, at 255, 117, 136. I'm thinking signed makes more sense, considering all the facts. (Bear in mind, this is my first attempt at looking at an unknown file type. I may be wrong. :p)

If anyone knows it's right, can you please post and tell me if I'm on the right track? My mind is racing right now, and I wanna possibly get started on translating vertexes into coordinates I could use. :)
Last edited:


New member
Outside of some of the material parameter specifications, most of the CMDL format is "known".


There has even been source code released. i plan on picking up things regarding this format and Melee again soon, hopefully resulting in a good bit of code cleanup. But will have to see, time permitting and all.

The vertex data is indeed usually floating point. The normals can be either floating point or 16-bit integers. The uv information is usually floating point.

If you have questions, i'll do my best to help if i can.
Last edited:


New member
I'm really hoping someone finishes mp3 cmdl's I'd love to know if that was actually syluxes ship at the end.

I hated mp3 stuff. -_-