mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Fix fillcolor processing. Fillcolor has the same bitness as the color image.
This commit is contained in:
parent
797dfad57e
commit
657a576946
28
gDP.cpp
28
gDP.cpp
|
@ -465,11 +465,7 @@ void gDPSetFogColor( u32 r, u32 g, u32 b, u32 a )
|
||||||
|
|
||||||
void gDPSetFillColor( u32 c )
|
void gDPSetFillColor( u32 c )
|
||||||
{
|
{
|
||||||
gDP.fillColor.r = _SHIFTR( c, 11, 5 ) * 0.032258064f;
|
gDP.fillColor.color = c;
|
||||||
gDP.fillColor.g = _SHIFTR( c, 6, 5 ) * 0.032258064f;
|
|
||||||
gDP.fillColor.b = _SHIFTR( c, 1, 5 ) * 0.032258064f;
|
|
||||||
gDP.fillColor.a = (f32)_SHIFTR( c, 0, 1 );
|
|
||||||
|
|
||||||
gDP.fillColor.z = (f32)_SHIFTR( c, 2, 14 );
|
gDP.fillColor.z = (f32)_SHIFTR( c, 2, 14 );
|
||||||
gDP.fillColor.dz = (f32)_SHIFTR( c, 0, 2 );
|
gDP.fillColor.dz = (f32)_SHIFTR( c, 0, 2 );
|
||||||
|
|
||||||
|
@ -478,6 +474,22 @@ void gDPSetFillColor( u32 c )
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gDPGetFillColor(f32 _fillColor[4])
|
||||||
|
{
|
||||||
|
const u32 c = gDP.fillColor.color;
|
||||||
|
if (gDP.colorImage.size < 3) {
|
||||||
|
_fillColor[0] = _SHIFTR( c, 11, 5 ) * 0.032258064f;
|
||||||
|
_fillColor[1] = _SHIFTR( c, 6, 5 ) * 0.032258064f;
|
||||||
|
_fillColor[2] = _SHIFTR( c, 1, 5 ) * 0.032258064f;
|
||||||
|
_fillColor[3] = (f32)_SHIFTR( c, 0, 1 );
|
||||||
|
} else {
|
||||||
|
_fillColor[0] = _SHIFTR( c, 24, 8 ) * 0.0039215686f;
|
||||||
|
_fillColor[1] = _SHIFTR( c, 16, 8 ) * 0.0039215686f;
|
||||||
|
_fillColor[2] = _SHIFTR( c, 8, 8 ) * 0.0039215686f;
|
||||||
|
_fillColor[3] = _SHIFTR( c, 0, 8 ) * 0.0039215686f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a )
|
void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a )
|
||||||
{
|
{
|
||||||
gDP.primColor.m = m * 0.0039215689f;
|
gDP.primColor.m = m * 0.0039215689f;
|
||||||
|
@ -783,6 +795,8 @@ void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f32 fillColor[4];
|
||||||
|
gDPGetFillColor(fillColor);
|
||||||
if (gDP.otherMode.cycleType == G_CYC_FILL)
|
if (gDP.otherMode.cycleType == G_CYC_FILL)
|
||||||
{
|
{
|
||||||
//if (gDP.fillColor.a == 0.0f)
|
//if (gDP.fillColor.a == 0.0f)
|
||||||
|
@ -793,12 +807,12 @@ void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry )
|
||||||
|
|
||||||
if ((ulx == 0) && (uly == 0) && (lrx == VI.width) && (lry == VI.height))
|
if ((ulx == 0) && (uly == 0) && (lrx == VI.width) && (lry == VI.height))
|
||||||
{
|
{
|
||||||
OGL_ClearColorBuffer( &gDP.fillColor.r );
|
OGL_ClearColorBuffer( fillColor );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OGL_DrawRect( ulx, uly, lrx, lry, (gDP.otherMode.cycleType == G_CYC_FILL) ? &gDP.fillColor.r : &gDP.blendColor.r );
|
OGL_DrawRect( ulx, uly, lrx, lry, (gDP.otherMode.cycleType == G_CYC_FILL) ? fillColor : &gDP.blendColor.r );
|
||||||
|
|
||||||
if (depthBuffer.top) depthBuffer.top->cleared = FALSE;
|
if (depthBuffer.top) depthBuffer.top->cleared = FALSE;
|
||||||
gDP.colorImage.changed = TRUE;
|
gDP.colorImage.changed = TRUE;
|
||||||
|
|
3
gDP.h
3
gDP.h
|
@ -168,8 +168,8 @@ struct gDPInfo
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
f32 r, g, b, a;
|
|
||||||
f32 z, dz;
|
f32 z, dz;
|
||||||
|
u32 color;
|
||||||
} fillColor;
|
} fillColor;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
|
@ -257,6 +257,7 @@ void gDPSetEnvColor( u32 r, u32 g, u32 b, u32 a );
|
||||||
void gDPSetBlendColor( u32 r, u32 g, u32 b, u32 a );
|
void gDPSetBlendColor( u32 r, u32 g, u32 b, u32 a );
|
||||||
void gDPSetFogColor( u32 r, u32 g, u32 b, u32 a );
|
void gDPSetFogColor( u32 r, u32 g, u32 b, u32 a );
|
||||||
void gDPSetFillColor( u32 c );
|
void gDPSetFillColor( u32 c );
|
||||||
|
void gDPGetFillColor(f32 _fillColor[4]);
|
||||||
void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a );
|
void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a );
|
||||||
void gDPSetTile( u32 format, u32 size, u32 line, u32 tmem, u32 tile, u32 palette, u32 cmt, u32 cms, u32 maskt, u32 masks, u32 shiftt, u32 shifts );
|
void gDPSetTile( u32 format, u32 size, u32 line, u32 tmem, u32 tile, u32 palette, u32 cmt, u32 cms, u32 maskt, u32 masks, u32 shiftt, u32 shifts );
|
||||||
void gDPSetTileSize( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
|
void gDPSetTileSize( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user