mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-11 18:50:46 +00:00
Make makepalookup() accept NULL for 'remapbuf', meaning "use identity mapping".
Also, - use this in game.c and astub.c palookup loading code - when makepalookup() is passed a 0 palnum, return early. This means that 'fogpal' will silently fail when attempting to change pal 0. - in 'makepalookup' DEF command, error out if passed a pal of 0. git-svn-id: https://svn.eduke32.com/eduke32@2569 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
a7eb29027f
commit
0be9b7e568
4 changed files with 29 additions and 31 deletions
|
@ -342,8 +342,7 @@ static int32_t defsparser(scriptfile *script)
|
|||
break;
|
||||
case T_FOGPAL:
|
||||
{
|
||||
int32_t p,r,g,b,j;
|
||||
char tempbuf[256];
|
||||
int32_t p,r,g,b;
|
||||
|
||||
if (scriptfile_getnumber(script,&p)) break;
|
||||
if (scriptfile_getnumber(script,&r)) break;
|
||||
|
@ -354,9 +353,7 @@ static int32_t defsparser(scriptfile *script)
|
|||
g = clamp(g, 0, 63);
|
||||
b = clamp(b, 0, 63);
|
||||
|
||||
for (j = 0; j < 256; j++)
|
||||
tempbuf[j] = j;
|
||||
makepalookup(p, tempbuf, r, g, b, 1);
|
||||
makepalookup(p, NULL, r, g, b, 1);
|
||||
}
|
||||
break;
|
||||
case T_LOADGRP:
|
||||
|
@ -1655,9 +1652,9 @@ static int32_t defsparser(scriptfile *script)
|
|||
initprintf("Error: missing 'palette number' %s\n", msgend);
|
||||
break;
|
||||
}
|
||||
else if ((unsigned)pal >= MAXPALOOKUPS-RESERVEDPALS)
|
||||
else if (pal==0 || (unsigned)pal >= MAXPALOOKUPS-RESERVEDPALS)
|
||||
{
|
||||
initprintf("Error: 'palette number' out of range (max=%d) %s\n",
|
||||
initprintf("Error: 'palette number' out of range (1 .. %d) %s\n",
|
||||
MAXPALOOKUPS-RESERVEDPALS-1, msgend);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -13414,11 +13414,23 @@ void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8
|
|||
const char *ptr;
|
||||
char *ptr2;
|
||||
|
||||
if (paletteloaded == 0) return;
|
||||
static char idmap[256] = {1};
|
||||
|
||||
if ((unsigned)palnum >= MAXPALOOKUPS)
|
||||
if (paletteloaded == 0)
|
||||
return;
|
||||
|
||||
if (palnum==0 || (unsigned)palnum >= MAXPALOOKUPS)
|
||||
return;
|
||||
|
||||
if (remapbuf==NULL)
|
||||
{
|
||||
if (idmap[0]==1) // init identity map
|
||||
for (i=0; i<256; i++)
|
||||
idmap[i] = i;
|
||||
|
||||
remapbuf = idmap;
|
||||
}
|
||||
|
||||
if (palookup[palnum] == NULL)
|
||||
{
|
||||
//Allocate palookup buffer
|
||||
|
|
|
@ -2975,11 +2975,8 @@ static void ReadPaletteTable(void)
|
|||
int32_t i,j,fp;
|
||||
char lookup_num;
|
||||
|
||||
for (j = 0; j < 256; j++)
|
||||
tempbuf[j] = j;
|
||||
|
||||
for (i=1; i<MAXPALOOKUPS; i++)
|
||||
makepalookup(i,tempbuf,0,0,0,1);
|
||||
makepalookup(i,NULL,0,0,0,1);
|
||||
|
||||
if ((fp=kopen4load("lookup.dat",0)) == -1)
|
||||
{
|
||||
|
@ -3001,10 +2998,10 @@ static void ReadPaletteTable(void)
|
|||
tempbuf[j] = j;
|
||||
|
||||
num_tables++;
|
||||
makepalookup(num_tables, tempbuf, 15, 15, 15, 1);
|
||||
makepalookup(num_tables + 1, tempbuf, 15, 0, 0, 1);
|
||||
makepalookup(num_tables + 2, tempbuf, 0, 15, 0, 1);
|
||||
makepalookup(num_tables + 3, tempbuf, 0, 0, 15, 1);
|
||||
makepalookup(num_tables, NULL, 15, 15, 15, 1);
|
||||
makepalookup(num_tables + 1, NULL, 15, 0, 0, 1);
|
||||
makepalookup(num_tables + 2, NULL, 0, 15, 0, 1);
|
||||
makepalookup(num_tables + 3, NULL, 0, 0, 15, 1);
|
||||
|
||||
kread(fp,WATERpalette,768);
|
||||
kread(fp,SLIMEpalette,768);
|
||||
|
|
|
@ -2579,10 +2579,7 @@ void G_SetCrosshairColor(int32_t r, int32_t g, int32_t b)
|
|||
}
|
||||
while (--ii);
|
||||
|
||||
for (i = 255; i >= 0; i--)
|
||||
tempbuf[i] = i;
|
||||
|
||||
makepalookup(CROSSHAIR_PAL,tempbuf,CrosshairColors.r>>2, CrosshairColors.g>>2, CrosshairColors.b>>2,1);
|
||||
makepalookup(CROSSHAIR_PAL, NULL, CrosshairColors.r>>2, CrosshairColors.g>>2, CrosshairColors.b>>2,1);
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
// XXX: this makes us also load all hightile textures tinted with the crosshair color!
|
||||
|
@ -9457,11 +9454,8 @@ static void G_LoadExtraPalettes(void)
|
|||
// g_numRealPalettes = ((g_numRealPalettes * 0x80200802ULL) & 0x0884422110ULL) * 0x0101010101ULL >> 32;
|
||||
#endif
|
||||
|
||||
for (j = 0; j < 256; j++)
|
||||
tempbuf[j] = j;
|
||||
|
||||
for (j=g_numRealPalettes+1; j<MAXPALOOKUPS; j++)
|
||||
makepalookup(j,tempbuf,0,0,0,1);
|
||||
makepalookup(j, NULL ,0,0,0, 1);
|
||||
|
||||
for (j=g_numRealPalettes-1; j>=0; j--)
|
||||
{
|
||||
|
@ -9472,13 +9466,11 @@ static void G_LoadExtraPalettes(void)
|
|||
makepalookup(look_pos, tempbuf, 0,0,0, 1);
|
||||
}
|
||||
|
||||
for (j = 255; j>=0; j--)
|
||||
tempbuf[j] = j;
|
||||
g_numRealPalettes++;
|
||||
makepalookup(g_numRealPalettes, tempbuf, 15, 15, 15, 1);
|
||||
makepalookup(g_numRealPalettes + 1, tempbuf, 15, 0, 0, 1);
|
||||
makepalookup(g_numRealPalettes + 2, tempbuf, 0, 15, 0, 1);
|
||||
makepalookup(g_numRealPalettes + 3, tempbuf, 0, 0, 15, 1);
|
||||
makepalookup(g_numRealPalettes, NULL, 15, 15, 15, 1);
|
||||
makepalookup(g_numRealPalettes + 1, NULL, 15, 0, 0, 1);
|
||||
makepalookup(g_numRealPalettes + 2, NULL, 0, 15, 0, 1);
|
||||
makepalookup(g_numRealPalettes + 3, NULL, 0, 0, 15, 1);
|
||||
|
||||
kread(fp,&water_pal[0],768);
|
||||
kread(fp,&slime_pal[0],768);
|
||||
|
|
Loading…
Reference in a new issue