-
Notifications
You must be signed in to change notification settings - Fork 55
Description
I guess I've found something 💃
HEAD.PRM (Wipeout 1)
For those polygons:
FlatTriangle = 0x05,
FlatQuad = 0x07,
Basically the SubType in the polygon header is misleading, when there are more than 255 vertices, the SubType actually becomes an index as you can see below, and the length of polygons change:

(SHLD is a small object with less than 0xFF vertices, HEAD exceeds 0xFF)
They are bigger than usual:
case PrmPolygonType.FlatTriangle:
var flatTriangle = new FlatTriangle
{
Header = header,
Indices = reader.ReadUInt16BEs(3),
Unknown1 = reader.ReadUInt16BE(),
Colors = reader.ReadUInt32BEs(3)
};
if (prmObjectHeader.PolygonCount > 0xff)
{
reader.ReadBytes(52);
}
case PrmPolygonType.FlatQuad:
var flatQuad = new FlatQuad
{
Header = header,
Indices = reader.ReadUInt16BEs(4),
Colors = reader.ReadUInt32BEs(4)
};
if (prmObjectHeader.PolygonCount > 0xff)
{
reader.ReadBytes(72);
}
The if are the code I've added to my working base and you can see the result below,
It seems to be the trophy championship or something but I can't remember where it's in the game ...
By the way I did somehow try to understand the logic in IDA, there were nearly 20+ cases in switch blocks which makes me believe there are way more forms of polygons that one can think of ... but there must be some logic after all !
Any clue/hints are welcome !
Thanks :D




