|
|
@ -87,49 +87,46 @@ void R_BuildScreenMap() |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define FOR_EACH_COLOR(x) for( r##x = 0; r##x < BIT(3); r##x++ ) for( g##x = 0; g##x < BIT(3); g##x++ ) for( b##x = 0; b##x < BIT(2); b##x++ ) |
|
|
|
|
|
|
|
|
|
|
|
void R_BuildBlendMaps() |
|
|
|
void R_BuildBlendMaps() |
|
|
|
{ |
|
|
|
{ |
|
|
|
unsigned int r1, g1, b1; |
|
|
|
unsigned int r1, g1, b1; |
|
|
|
unsigned int r2, g2, b2; |
|
|
|
unsigned int r2, g2, b2; |
|
|
|
|
|
|
|
|
|
|
|
for( r1 = 0; r1 < BIT(3); r1++ ) |
|
|
|
FOR_EACH_COLOR(1)FOR_EACH_COLOR(2) |
|
|
|
for( g1 = 0; g1 < BIT(3); g1++ ) |
|
|
|
{ |
|
|
|
for( b1 = 0; b1 < BIT(2); b1++ ) |
|
|
|
unsigned int r, g, b; |
|
|
|
for( r2 = 0; r2 < BIT(3); r2++ ) |
|
|
|
unsigned short index1 = r1 << (2 + 3) | g1 << 2 | b1; |
|
|
|
for( g2 = 0; g2 < BIT(3); g2++ ) |
|
|
|
unsigned short index2 = (r2 << (2 + 3) | g2 << 2 | b2) << 8; |
|
|
|
for( b2 = 0; b2 < BIT(2); b2++ ) |
|
|
|
unsigned int a; |
|
|
|
{ |
|
|
|
|
|
|
|
unsigned int r, g, b; |
|
|
|
r = r1 + r2; |
|
|
|
unsigned short index1 = r1 << (2 + 3) | g1 << 2 | b1; |
|
|
|
g = g1 + g2; |
|
|
|
unsigned short index2 = (r2 << (2 + 3) | g2 << 2 | b2) << 8; |
|
|
|
b = b1 + b2; |
|
|
|
unsigned int a; |
|
|
|
if( r > MASK(2) ) |
|
|
|
|
|
|
|
r = MASK(2); |
|
|
|
r = r1 + r2; |
|
|
|
if( g > MASK(2) ) |
|
|
|
g = g1 + g2; |
|
|
|
g = MASK(2); |
|
|
|
b = b1 + b2; |
|
|
|
if( b > MASK(1) ) |
|
|
|
if( r > MASK(2) ) |
|
|
|
b = MASK(1); |
|
|
|
r = MASK(2); |
|
|
|
ASSERT(!vid.addmap[index2|index1]); |
|
|
|
if( g > MASK(2) ) |
|
|
|
|
|
|
|
g = MASK(2); |
|
|
|
vid.addmap[index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
if( b > MASK(1) ) |
|
|
|
r = r1 * r2 / MASK(2); |
|
|
|
b = MASK(1); |
|
|
|
g = g1 * g2 / MASK(2); |
|
|
|
ASSERT(!vid.addmap[index2|index1]); |
|
|
|
b = b1 * b2 / MASK(1); |
|
|
|
|
|
|
|
vid.modmap[index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
vid.addmap[index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
|
|
|
|
r = r1 * r2 / MASK(2); |
|
|
|
for( a = 0; a < 8; a++ ) |
|
|
|
g = g1 * g2 / MASK(2); |
|
|
|
{ |
|
|
|
b = b1 * b2 / MASK(1); |
|
|
|
r = r1 * a / 7 + r2 * (7 - a) / 7; |
|
|
|
vid.modmap[index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
g = g1 * a / 7 + g2 * (7 - a) / 7; |
|
|
|
|
|
|
|
b = b1 * a / 7 + b2 * (7 - a) / 7; |
|
|
|
for( a = 0; a < 8; a++ ) |
|
|
|
vid.alphamap[a << 16|index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
{ |
|
|
|
} |
|
|
|
r = r1 * a / 7 + r2 * (7 - a) / 7; |
|
|
|
|
|
|
|
g = g1 * a / 7 + g2 * (7 - a) / 7; |
|
|
|
} |
|
|
|
b = b1 * a / 7 + b2 * (7 - a) / 7; |
|
|
|
|
|
|
|
vid.alphamap[a << 16|index2|index1] = r << (2 + 3) | g << 2 | b; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void R_InitBlit() |
|
|
|
void R_InitBlit() |
|
|
|