Yes. sort of.
There is a specularity/shininess value in the color struct, but modifying that doesn't do anything, I think it's because there is this other value which is unknown value in the material struct, which seems to control "max shininess" (I actually don't know what the value is for, it could be a bit masked enum, or just some enum for how the material reacts to light).
Here is the
Color Struct:
Color Structures
Offset Size Format Description
0x00 1*4 unsigned RGBA Diffuse
0x04 1*4 unsigned RGBA Ambient
0x08 1*4 unsigned RGBA Specular
0x0C 4 float Transparency (1.0 = opaque)
0x10 4 float Unknown (Shininess?)
Editing the 4 byte float at offset 0x10 doesn't make the jacket shiny, and Fox and Falco actually have the same value for those bytes for their respective Color structs.
Here is the
Material Struct:
Material Structures
Offset Size Format Description
0x00 4 pointer String Offset (typically unused)
0x04 2 unsigned Unknown Flags
0x06 2 unsigned Unknown Value
0x08 4 pointer Texture Struct Offset
0x0C 4 pointer Colors Struct Offset
0x10 4 unsigned Unknown
0x14 4 pointer Unknown (to struct of size 0x0C)
Editing the 2 byte unsigned value at offset 0x06 does make the jacket shiny (Fox has 0x001C for that value, whereas Falco has 0x0014)
The DAT texture wizard doesn't seem to support editing that value (changes to it are not saved).
So that's what my program does, I have an array of offsets where the
Unknown Value needs to be changed are, and it changes all of them.