Guil's encore color bugfix with some additional cleanup

This commit is contained in:
Hannu Hanhi 2020-06-01 21:14:17 +03:00
parent 691a567f5d
commit d9e2336277

View file

@ -1408,7 +1408,7 @@ static void P_LoadRawSideDefs2(void *data)
UINT16 i; UINT16 i;
INT32 num; INT32 num;
size_t j; size_t j;
UINT32 cr, cg, cb; RGBA_t color;
for (i = 0; i < numsides; i++) for (i = 0; i < numsides; i++)
{ {
@ -1491,22 +1491,20 @@ static void P_LoadRawSideDefs2(void *data)
// do it like software by aproximating a color to a palette index, and then convert it to its encore variant and then back to a color code. // do it like software by aproximating a color to a palette index, and then convert it to its encore variant and then back to a color code.
// do this for both the start and fade colormaps. // do this for both the start and fade colormaps.
cr = (HEX2INT(col[1]) << 4) + (HEX2INT(col[2]) << 0); color.s.red = (HEX2INT(col[1]) << 4) + HEX2INT(col[2]);
cg = (HEX2INT(col[3]) << 12) + (HEX2INT(col[4]) << 8); color.s.green = (HEX2INT(col[3]) << 4) + HEX2INT(col[4]);
cb = (HEX2INT(col[5]) << 20) + (HEX2INT(col[6]) << 16); color.s.blue = (HEX2INT(col[5]) << 4) + HEX2INT(col[6]);
#ifdef GLENCORE #ifdef GLENCORE
if (encoremap) if (encoremap)
{ {
j = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)]; j = encoremap[NearestColor(color.s.red, color.s.green, color.s.blue)];
//CONS_Printf("R_CreateColormap: encoremap[%d] = %d\n", j, encoremap[j]); -- moved encoremap upwards for optimisation //CONS_Printf("R_CreateColormap: encoremap[%d] = %d\n", j, encoremap[j]); -- moved encoremap upwards for optimisation
cr = pLocalPalette[j].s.red; color = pLocalPalette[j];
cg = pLocalPalette[j].s.green;
cb = pLocalPalette[j].s.blue;
} }
#endif #endif
sec->extra_colormap->rgba = cr + cg + cb; sec->extra_colormap->rgba = color.rgba;
// alpha // alpha
if (msd->toptexture[7]) if (msd->toptexture[7])
@ -1534,22 +1532,20 @@ static void P_LoadRawSideDefs2(void *data)
// do the exact same thing as above here. // do the exact same thing as above here.
cr = (HEX2INT(col[1]) << 4) + (HEX2INT(col[2]) << 0); color.s.red = (HEX2INT(col[1]) << 4) + HEX2INT(col[2]);
cg = (HEX2INT(col[3]) << 12) + (HEX2INT(col[4]) << 8); color.s.green = (HEX2INT(col[3]) << 4) + HEX2INT(col[4]);
cb = (HEX2INT(col[5]) << 20) + (HEX2INT(col[6]) << 16); color.s.blue = (HEX2INT(col[5]) << 4) + HEX2INT(col[6]);
#ifdef GLENCORE #ifdef GLENCORE
if (encoremap) if (encoremap)
{ {
j = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)]; j = encoremap[NearestColor(color.s.red, color.s.green, color.s.blue)];
//CONS_Printf("R_CreateColormap: encoremap[%d] = %d\n", j, encoremap[j]); -- moved encoremap upwards for optimisation //CONS_Printf("R_CreateColormap: encoremap[%d] = %d\n", j, encoremap[j]); -- moved encoremap upwards for optimisation
cr = pLocalPalette[j].s.red; color = pLocalPalette[j];
cg = pLocalPalette[j].s.green;
cb = pLocalPalette[j].s.blue;
} }
#endif #endif
sec->extra_colormap->fadergba = cr + cg + cb; sec->extra_colormap->fadergba = color.rgba;
// alpha // alpha
if (msd->bottomtexture[7]) if (msd->bottomtexture[7])