EDIT: There's a better way to remove parts of a model. Click here to see the post.
Have you ever wanted to remove a part of a character/stage model, be it a character or stage? Or, have you ever wanted to change the way that an accessory appeared in game (shinier, darker, purple highlights)?
In this guide, I'll attempt to explain how to do just that. Now keep in mind, I suck at tutorials. Chances are I'll miss something, in which case, I am sorry.
Examples of things you can remove (for instance, if they're interfering with your costume):
- Earrings
- Falcon's shoulder pad
- Peach's hair (the part which waves in the wind).
- Mario's moustache (looks a bit weird if you don't edit the shadow out of the texture though).
- Pokemon hats/headbands/crowns etc (say if you just want pure re-colours).
- Ganon's necklace.
- Dr. Mario's Stethoscope and Dr. Light (the headband needs to stay though. He doesn't actually have his forehead behind it).
Now, before we start, you'll need the following:
- Dolphin (to test and make sure it worked).
- One of Steelia's texture dumps (you'll identify the object you need by the offset of the texture). Alternatively, Melee Toolkit or Dat Texture Wizard will also state the offsets of textures.
- GCRebuilder
- A hex editor. I use HxD (but be warned, be sure to say 'no' to the questions in its installer).
Step 1: Identify what part of the model you want to remove or alter
For the purposes of this tutorial, I'll be using Falcon's gun:
Step 2: Find the offset of the texture used for the model.
I strongly recommend using Steelia's texture dumps (for convenience).
Since I want the gun, my texture offset will be: 0x00022c60 in PlCaNr.dat.
Step 3: Finding material data.
The offset for the gun's texture is at
0x00022c60
I now need to subtract 32 bytes off that value. We do this to account for the header Hex, which takes up 32 bytes.
This is easy to do without a calculator (examples: 3F0 -> 3D0, 4A0 -> 480).
Note: If you are using Melee Toolkit to get your offsets, do NOT subtract anything.
This gives me:
0x00022c40
Now, take that value, and find all instances of it within the PlCaNr.dat:
I only found one, but it is possible to find many (example: hands would likely have 2). Each instance will correspond to a different object within the model that uses the texture. In this case, if you wanted a specific one (say, left hand only), it'd be up to trial and error to determine which corresponds to which (at least, as far as I've figured out).
Step 4: Changing material.
Let's say I want his gun to have a magenta shine to it, and capture light more intensely. To do this is very simple:
Note: If you can't find the RGB values as shown in the image, then find the next instance of the offset.
Green RGB: Diffuse color (this has the most effect on the objects color).
Orange RGB: Specular color (the color of the "shininess". Imagine this color is the color of the lamp creating the light).
So if I just change these values like this:
We get this. And no texture needed to be altered. I'll let you play around with these values as you see fit.
Step 5: Removing it completely.
But what if we want to completely remove it? Well first, we need to find the offset of this location:
Note: the offset is exactly 12 bytes before the first RGB value.
0x0000C660
Now, we're going to be working our way through a few pointers:
The blue highlighted area is our 0x0000c660 that we found. Directly above it (16 bytes back), highlighted in red, is a pointer to the previous face block: 0x0001EEC0. Take that value, and follow it (shown by the red arrow). From there, take another step 16 bytes back (aka, one line in this example), then another 2 bytes back. Your cursor will now be directly before the 00 08, which is the size of the displaylist. Aka, the thing which signifies how many faces this particular object has. In this case, it has 8, so changing it to 00 00 will mean it has no faces and thus, nothing is rendered.
Tada!
---
Alright, chances are there's a million and one things I missed in this tutorial, but I hope this helps those of you who are curious.
Have you ever wanted to remove a part of a character/stage model, be it a character or stage? Or, have you ever wanted to change the way that an accessory appeared in game (shinier, darker, purple highlights)?
In this guide, I'll attempt to explain how to do just that. Now keep in mind, I suck at tutorials. Chances are I'll miss something, in which case, I am sorry.
Examples of things you can remove (for instance, if they're interfering with your costume):
- Earrings
- Falcon's shoulder pad
- Peach's hair (the part which waves in the wind).
- Mario's moustache (looks a bit weird if you don't edit the shadow out of the texture though).
- Pokemon hats/headbands/crowns etc (say if you just want pure re-colours).
- Ganon's necklace.
- Dr. Mario's Stethoscope and Dr. Light (the headband needs to stay though. He doesn't actually have his forehead behind it).
Now, before we start, you'll need the following:
- Dolphin (to test and make sure it worked).
- One of Steelia's texture dumps (you'll identify the object you need by the offset of the texture). Alternatively, Melee Toolkit or Dat Texture Wizard will also state the offsets of textures.
- GCRebuilder
- A hex editor. I use HxD (but be warned, be sure to say 'no' to the questions in its installer).
Step 1: Identify what part of the model you want to remove or alter
For the purposes of this tutorial, I'll be using Falcon's gun:
Step 2: Find the offset of the texture used for the model.
I strongly recommend using Steelia's texture dumps (for convenience).
Since I want the gun, my texture offset will be: 0x00022c60 in PlCaNr.dat.
Step 3: Finding material data.
The offset for the gun's texture is at
0x00022c60
I now need to subtract 32 bytes off that value. We do this to account for the header Hex, which takes up 32 bytes.
This is easy to do without a calculator (examples: 3F0 -> 3D0, 4A0 -> 480).
Note: If you are using Melee Toolkit to get your offsets, do NOT subtract anything.
This gives me:
0x00022c40
Now, take that value, and find all instances of it within the PlCaNr.dat:
I only found one, but it is possible to find many (example: hands would likely have 2). Each instance will correspond to a different object within the model that uses the texture. In this case, if you wanted a specific one (say, left hand only), it'd be up to trial and error to determine which corresponds to which (at least, as far as I've figured out).
Step 4: Changing material.
Let's say I want his gun to have a magenta shine to it, and capture light more intensely. To do this is very simple:
Note: If you can't find the RGB values as shown in the image, then find the next instance of the offset.
Green RGB: Diffuse color (this has the most effect on the objects color).
Orange RGB: Specular color (the color of the "shininess". Imagine this color is the color of the lamp creating the light).
So if I just change these values like this:
We get this. And no texture needed to be altered. I'll let you play around with these values as you see fit.
Step 5: Removing it completely.
But what if we want to completely remove it? Well first, we need to find the offset of this location:
Note: the offset is exactly 12 bytes before the first RGB value.
0x0000C660
Now, we're going to be working our way through a few pointers:
The blue highlighted area is our 0x0000c660 that we found. Directly above it (16 bytes back), highlighted in red, is a pointer to the previous face block: 0x0001EEC0. Take that value, and follow it (shown by the red arrow). From there, take another step 16 bytes back (aka, one line in this example), then another 2 bytes back. Your cursor will now be directly before the 00 08, which is the size of the displaylist. Aka, the thing which signifies how many faces this particular object has. In this case, it has 8, so changing it to 00 00 will mean it has no faces and thus, nothing is rendered.
Tada!
---
Alright, chances are there's a million and one things I missed in this tutorial, but I hope this helps those of you who are curious.
Last edited: