| VL-Tone Member Super Mario 64 forum moderator Level: 53 Posts: 13/621 EXP: 1135501 For next: 21618 Since: 07-27-07 From: Montreal, Canada Since last post: 4.7 years Last activity: 1.2 years |
|
||
|
I didn't manage until recently to correctly decode Mario's Geometry Layout data, mainly because of some commands I didn't know the length of. Mario has by far the most complicated geometry layout of all animated characters in the game. But that's mainly because of the LOD (level of detail) system, which creates four variations of Mario: One with all the high-polygon parts, the other with some high and some low polygon parts, another with only low polygon parts, and another with very low polygon parts. Then, there's also four variation of Mario's body, the first one is normal, the 2nd which seems unused in the game, with half metal parts and half normal parts, and the two others seems to be metal Mario, though the last one doesn't seem to be used in the game. So, in total, that makes 16 different Mario variation, each having a similar or the same structure, but pointing to different polygon parts. The geometry layout data is structured in a hierarchy, with command 0x04 opening a node, and 0x05 closing the node. Nodes preceded by the 0x0E commands are animated. The animation code chooses inside that node which command or sub-node is used. For example: 00127CA4/02F4: 0E 00 00 00 80 27 77 40 (hmmm... the "pre" tag inserts additional linefeeds?) So in this example, the root node is "animated" by the code, which choses the one of the two sub-node, depending on if Mario is wearing his hat or not. Then, in the sub-node, the animation code choses which head to use, depending on the state of the eyes animation. Here's the fully decoded Mario geometry layout, with text labels for body parts: MarioGeoLayout.txt HP means High Polygon, LP means Low Polygon and VLP means Very Low Polygon. The addresses found at the beginning of each line show the actual ROM address and after the slash the offset in the current geometry layout segment/bank which starts at 001279B0. Note that this doc also includes small accessory objects which are also found in the same geometry layout bank, and incidentally in the same MIO0 file. To help you understand the meaning of geometry layout commands, here's the newly updated Mario 64 Hacking Doc which includes much more geo layout commands than the original doc. Keep in mind that this doc is aimed at experienced ROM hackers. The root of the Mario geometry layout is found near the end, at 0012A784/2DD4, and this is where the 0x22 command for Mario points to. At the root the two main branches are the High Poly Mario, and the LOD Mario (which includes the HP Mario). The "High Poly Mario" feature in TT64 works by changing the destination of the 0x02 command that normally jumps to the LOD Mario part so that it points to the next command instead, in effect disabling the low-poly Marios. As a bonus, here's a similar deconstruction of Peach's geo layout, also with body parts labels: PeachGeo.txt Some very experienced hacker could, with these docs and a lot of work, change Mario into Peach. It's far from simple since she has no legs, and her body parts hierarchy is a little different, and it would require re-positioning each body part. Also, you could only play with her on the Castle Grounds level, and she would sound like Mario ![]() ____________________ ![]() The Super Mario Level Editor |




















Yeah, I noticed that the Peach Code worked fine when the game ended, but when Mario would walk, he\she got severally messed up.

