mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-02-16 17:35:39 +00:00
When the translator map?? bit is enabled the colour format seems to be 4-5bit. Max observed value is 16. Scaling these values up seems to produce the correct colours in harley and dirt devils.
This commit is contained in:
parent
7407d03036
commit
4a116190b5
|
@ -419,7 +419,6 @@ void CNew3D::DescendCullingNode(UINT32 addr)
|
|||
{
|
||||
tx = 32 * ((node[0x02] >> 7) & 0x3F);
|
||||
ty = 32 * (node[0x02] & 0x1F);
|
||||
|
||||
// apply texture offsets, else retain current ones
|
||||
if ((node[0x02] & 0x8000)) {
|
||||
m_nodeAttribs.currentTexOffsetX = tx;
|
||||
|
@ -1066,15 +1065,15 @@ void CNew3D::CacheModel(Model *m, const UINT32 *data)
|
|||
p.faceColour[0] = ((m_polyRAM[m_colorTableAddr + colorIdx] >> 16) & 0xFF) / 255.f;
|
||||
}
|
||||
else {
|
||||
if (ph.ColorDisabled()) { // no colours were set
|
||||
p.faceColour[0] = 1.0f;
|
||||
p.faceColour[1] = 1.0f;
|
||||
p.faceColour[2] = 1.0f;
|
||||
}
|
||||
else {
|
||||
p.faceColour[0] = ((ph.header[4] >> 24)) / 255.f;
|
||||
p.faceColour[1] = ((ph.header[4] >> 16) & 0xFF) / 255.f;
|
||||
p.faceColour[2] = ((ph.header[4] >> 8) & 0xFF) / 255.f;
|
||||
|
||||
p.faceColour[0] = ((ph.header[4] >> 24)) / 255.f;
|
||||
p.faceColour[1] = ((ph.header[4] >> 16) & 0xFF) / 255.f;
|
||||
p.faceColour[2] = ((ph.header[4] >> 8) & 0xFF) / 255.f;
|
||||
|
||||
if (ph.TranslatorMap()) {
|
||||
p.faceColour[0] *= 15.9375f; // not using 16, as 16x16=256 not 255 and that would overflow (potentially)
|
||||
p.faceColour[1] *= 15.9375f;
|
||||
p.faceColour[2] *= 15.9375f;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ int PolyHeader::SensorColorIndex()
|
|||
return (header[4] >> 20) & 0xFFF;
|
||||
}
|
||||
|
||||
bool PolyHeader::ColorDisabled()
|
||||
bool PolyHeader::TranslatorMap()
|
||||
{
|
||||
return (header[4] & 0x80) > 0;
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ xxxxxxxx xxxxxxxx xxxxxxxx -------- Polygon normal Z coordinate(2.22 fixed poin
|
|||
|
||||
0x04:
|
||||
xxxxxxxx xxxxxxxx xxxxxxxx -------- Color (RGB888 or two 12-bit indexes, sensor color and color)
|
||||
-------- -------- -------- x------- Translator map enable ? (treated as color modulation disabled)
|
||||
-------- -------- -------- x------- Translator map enable ? (Seems to be some 4/5bit colour format. Max observed value=16)
|
||||
-------- -------- -------- -x------ Texture page
|
||||
-------- -------- -------- ---xxxxx Upper 5 bits of texture U coordinate
|
||||
|
||||
|
@ -121,7 +121,7 @@ public:
|
|||
void Color(UINT8& r, UINT8& g, UINT8& b);
|
||||
int ColorIndex();
|
||||
int SensorColorIndex();
|
||||
bool ColorDisabled();
|
||||
bool TranslatorMap();
|
||||
int Page();
|
||||
|
||||
// header 5
|
||||
|
|
Loading…
Reference in a new issue