mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-13 07:58:04 +00:00
Restructure the basepaltable subsystem to support up to 256 palettes and use dynamic allocation like palookup and blendtable.
git-svn-id: https://svn.eduke32.com/eduke32@5348 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
2a237a3d72
commit
c0e7dba4c1
16 changed files with 36 additions and 53 deletions
|
@ -77,7 +77,7 @@ enum rendmode_t {
|
||||||
#define MAXVOXELS 4096
|
#define MAXVOXELS 4096
|
||||||
#define MAXSTATUS 1024
|
#define MAXSTATUS 1024
|
||||||
#define MAXPLAYERS 16
|
#define MAXPLAYERS 16
|
||||||
#define MAXBASEPALS 8
|
#define MAXBASEPALS 256
|
||||||
#define MAXPALOOKUPS 256
|
#define MAXPALOOKUPS 256
|
||||||
#define MAXBLENDTABS 256
|
#define MAXBLENDTABS 256
|
||||||
// Maximum number of component tiles in a multi-psky:
|
// Maximum number of component tiles in a multi-psky:
|
||||||
|
@ -699,7 +699,7 @@ EXTERN int16_t sintable[2048];
|
||||||
EXTERN uint8_t palette[768];
|
EXTERN uint8_t palette[768];
|
||||||
EXTERN int16_t numshades;
|
EXTERN int16_t numshades;
|
||||||
EXTERN char *palookup[MAXPALOOKUPS];
|
EXTERN char *palookup[MAXPALOOKUPS];
|
||||||
EXTERN uint8_t **basepaltableptr;
|
extern uint8_t *basepaltable[MAXBASEPALS];
|
||||||
EXTERN uint8_t paletteloaded;
|
EXTERN uint8_t paletteloaded;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -1045,7 +1045,7 @@ intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz);
|
||||||
void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2);
|
void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2);
|
||||||
void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8_t b, char noFloorPal);
|
void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8_t b, char noFloorPal);
|
||||||
//void setvgapalette(void);
|
//void setvgapalette(void);
|
||||||
void setbasepaltable(uint8_t **basepaltable, uint8_t basepalcount);
|
void setbasepal(int32_t id, uint8_t const *table);
|
||||||
void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags);
|
void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags);
|
||||||
void setpalettefade(char r, char g, char b, char offset);
|
void setpalettefade(char r, char g, char b, char offset);
|
||||||
void squarerotatetile(int16_t tilenume);
|
void squarerotatetile(int16_t tilenume);
|
||||||
|
|
|
@ -1937,7 +1937,7 @@ static int32_t defsparser(scriptfile *script)
|
||||||
scriptfile_getstring(script,&fn); break;
|
scriptfile_getstring(script,&fn); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (EDUKE32_PREDICT_FALSE((unsigned)basepal >= ((unsigned)basepalcount)))
|
if (EDUKE32_PREDICT_FALSE((unsigned)basepal >= MAXBASEPALS))
|
||||||
{
|
{
|
||||||
initprintf("Error: missing or invalid 'base palette number' for highpalookup definition "
|
initprintf("Error: missing or invalid 'base palette number' for highpalookup definition "
|
||||||
"near line %s:%d\n", script->filename, scriptfile_getlinum(script,highpaltokptr));
|
"near line %s:%d\n", script->filename, scriptfile_getlinum(script,highpaltokptr));
|
||||||
|
|
|
@ -2414,8 +2414,8 @@ static int32_t baktile;
|
||||||
|
|
||||||
char apptitle[256] = "Build Engine";
|
char apptitle[256] = "Build Engine";
|
||||||
|
|
||||||
|
uint8_t *basepaltable[MAXBASEPALS] = { palette };
|
||||||
static uint8_t basepalreset=1;
|
static uint8_t basepalreset=1;
|
||||||
uint8_t basepalcount;
|
|
||||||
uint8_t curbasepal;
|
uint8_t curbasepal;
|
||||||
|
|
||||||
static uint32_t g_lastpalettesum = 0;
|
static uint32_t g_lastpalettesum = 0;
|
||||||
|
@ -9369,6 +9369,12 @@ void uninitengine(void)
|
||||||
Bfree(blendtable[i]);
|
Bfree(blendtable[i]);
|
||||||
Bmemset(blendtable, 0, sizeof(blendtable));
|
Bmemset(blendtable, 0, sizeof(blendtable));
|
||||||
|
|
||||||
|
for (int i=1; i<MAXBASEPALS; i++)
|
||||||
|
if (basepaltable[i] != NULL)
|
||||||
|
Bfree(basepaltable[i]);
|
||||||
|
Bmemset(basepaltable, 0, sizeof(basepaltable));
|
||||||
|
basepaltable[0] = palette;
|
||||||
|
|
||||||
#ifdef DYNALLOC_ARRAYS
|
#ifdef DYNALLOC_ARRAYS
|
||||||
DO_FREE_AND_NULL(blockptr);
|
DO_FREE_AND_NULL(blockptr);
|
||||||
#endif
|
#endif
|
||||||
|
@ -15638,15 +15644,14 @@ void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// setbasepaltable
|
// setbasepal
|
||||||
//
|
//
|
||||||
void setbasepaltable(uint8_t **thebasepaltable, uint8_t thebasepalcount)
|
void setbasepal(int32_t id, uint8_t const * const table)
|
||||||
{
|
{
|
||||||
if (thebasepalcount >= MAXBASEPALS)
|
if (basepaltable[id] == NULL)
|
||||||
thebasepalcount = MAXBASEPALS - 1;
|
basepaltable[id] = (uint8_t *)Xmalloc(768);
|
||||||
|
|
||||||
basepaltableptr = thebasepaltable;
|
Bmemcpy(basepaltable[id], table, 768);
|
||||||
basepalcount = thebasepalcount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -15671,7 +15676,7 @@ void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags)
|
||||||
|
|
||||||
Bassert((flags&4)==0);
|
Bassert((flags&4)==0);
|
||||||
|
|
||||||
if (dapalid >= basepalcount)
|
if (/*(unsigned)dapalid >= MAXBASEPALS ||*/ basepaltable[dapalid] == NULL)
|
||||||
dapalid = 0;
|
dapalid = 0;
|
||||||
#ifdef USE_OPENGL
|
#ifdef USE_OPENGL
|
||||||
paldidchange = (curbasepal != dapalid || basepalreset);
|
paldidchange = (curbasepal != dapalid || basepalreset);
|
||||||
|
@ -15679,7 +15684,7 @@ void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags)
|
||||||
curbasepal = dapalid;
|
curbasepal = dapalid;
|
||||||
basepalreset = 0;
|
basepalreset = 0;
|
||||||
|
|
||||||
dapal = basepaltableptr[curbasepal];
|
dapal = basepaltable[curbasepal];
|
||||||
|
|
||||||
if (!(flags&4))
|
if (!(flags&4))
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,6 @@ extern "C" {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern uint8_t basepalcount;
|
|
||||||
extern uint8_t curbasepal;
|
extern uint8_t curbasepal;
|
||||||
|
|
||||||
extern int16_t thesector[MAXWALLSB], thewall[MAXWALLSB];
|
extern int16_t thesector[MAXWALLSB], thewall[MAXWALLSB];
|
||||||
|
|
|
@ -4917,7 +4917,7 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
||||||
0,
|
0,
|
||||||
GL_RGB,
|
GL_RGB,
|
||||||
GL_UNSIGNED_BYTE,
|
GL_UNSIGNED_BYTE,
|
||||||
basepaltableptr[curbasepal]);
|
basepaltable[curbasepal]);
|
||||||
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glinfo.clamptoedge?GL_CLAMP_TO_EDGE:GL_CLAMP);
|
bglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glinfo.clamptoedge?GL_CLAMP_TO_EDGE:GL_CLAMP);
|
||||||
|
|
|
@ -241,7 +241,7 @@ int32_t G_PlayAnim(const char *fn)
|
||||||
goto end_anim;
|
goto end_anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
basepaltable[ANIMPAL] = ANIM_GetPalette();
|
setbasepal(ANIMPAL, ANIM_GetPalette());
|
||||||
|
|
||||||
// setpalette(0L,256L,tempbuf);
|
// setpalette(0L,256L,tempbuf);
|
||||||
// setbrightness(ud.brightness>>2,tempbuf,2);
|
// setbrightness(ud.brightness>>2,tempbuf,2);
|
||||||
|
|
|
@ -9864,11 +9864,6 @@ int32_t ExtInit(void)
|
||||||
Bsprintf(apptitle, "Mapster32 %s %s", VERSION, s_buildRev);
|
Bsprintf(apptitle, "Mapster32 %s %s", VERSION, s_buildRev);
|
||||||
autosavetimer = totalclock+120*autosave;
|
autosavetimer = totalclock+120*autosave;
|
||||||
|
|
||||||
// This must run before the following OSD_Exec() as the cfg may
|
|
||||||
// e.g. contain a vid_gamma setting, resulting in a crash in
|
|
||||||
// setbrightness() which expects basepaltableptr to be initialized.
|
|
||||||
setbasepaltable(basepaltable, BASEPALCOUNT);
|
|
||||||
|
|
||||||
registerosdcommands();
|
registerosdcommands();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -1001,14 +1001,6 @@ void G_DoAutoload(const char *dirname)
|
||||||
|
|
||||||
uint32_t PaletteIndexFullbrights[8] = { 0, 0, 0, 0, 0, 0, 0, 2147418112 };
|
uint32_t PaletteIndexFullbrights[8] = { 0, 0, 0, 0, 0, 0, 0, 2147418112 };
|
||||||
|
|
||||||
static uint8_t water_pal[768], slime_pal[768], title_pal[768], dre_alms[768], ending_pal[768];
|
|
||||||
|
|
||||||
uint8_t *basepaltable[BASEPALCOUNT] = {
|
|
||||||
palette, water_pal, slime_pal,
|
|
||||||
dre_alms, title_pal, ending_pal,
|
|
||||||
NULL /*anim_pal*/
|
|
||||||
};
|
|
||||||
|
|
||||||
void G_LoadLookups(void)
|
void G_LoadLookups(void)
|
||||||
{
|
{
|
||||||
int32_t fp, j;
|
int32_t fp, j;
|
||||||
|
@ -1027,13 +1019,17 @@ void G_LoadLookups(void)
|
||||||
return kclose(fp);
|
return kclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t paldata[768];
|
||||||
|
|
||||||
for (j=1; j<=5; j++)
|
for (j=1; j<=5; j++)
|
||||||
{
|
{
|
||||||
// Account for TITLE and REALMS swap between basepal number and on-disk order.
|
// Account for TITLE and REALMS swap between basepal number and on-disk order.
|
||||||
int32_t basepalnum = (j == 3 || j == 4) ? 4+3-j : j;
|
int32_t basepalnum = (j == 3 || j == 4) ? 4+3-j : j;
|
||||||
|
|
||||||
if (kread_and_test(fp, basepaltable[basepalnum], 768))
|
if (kread_and_test(fp, paldata, 768))
|
||||||
return kclose(fp);
|
return kclose(fp);
|
||||||
|
|
||||||
|
setbasepal(basepalnum, paldata);
|
||||||
}
|
}
|
||||||
|
|
||||||
kclose(fp);
|
kclose(fp);
|
||||||
|
|
|
@ -124,8 +124,6 @@ void G_DoAutoload(const char *dirname);
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
|
|
||||||
extern uint8_t *basepaltable[BASEPALCOUNT];
|
|
||||||
|
|
||||||
extern void G_LoadLookups(void);
|
extern void G_LoadLookups(void);
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
|
|
|
@ -305,10 +305,10 @@ static void G_PatchStatusBar(int32_t x1, int32_t y1, int32_t x2, int32_t y2)
|
||||||
rotatesprite(tx,ty,scl,0,BOTTOMSTATUSBAR,4,0,10+16+64,clx1+clofx,cly1+clofy,clx2+clofx-1,cly2+clofy-1);
|
rotatesprite(tx,ty,scl,0,BOTTOMSTATUSBAR,4,0,10+16+64,clx1+clofx,cly1+clofy,clx2+clofx-1,cly2+clofy-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void P_SetGamePalette(DukePlayer_t *player, uint8_t palid, int32_t set)
|
void P_SetGamePalette(DukePlayer_t *player, uint32_t palid, int32_t set)
|
||||||
{
|
{
|
||||||
if (palid >= BASEPALCOUNT)
|
if (palid >= MAXBASEPALS)
|
||||||
palid = BASEPAL;
|
palid = 0;
|
||||||
|
|
||||||
player->palette = palid;
|
player->palette = palid;
|
||||||
|
|
||||||
|
@ -10982,9 +10982,12 @@ static inline void G_CheckGametype(void)
|
||||||
static void G_PostLoadPalette(void)
|
static void G_PostLoadPalette(void)
|
||||||
{
|
{
|
||||||
// Make color index 255 of default/water/slime palette black.
|
// Make color index 255 of default/water/slime palette black.
|
||||||
Bmemset(&basepaltable[BASEPAL][255*3], 0, 3);
|
if (basepaltable[BASEPAL] != NULL)
|
||||||
Bmemset(&basepaltable[WATERPAL][255*3], 0, 3);
|
Bmemset(&basepaltable[BASEPAL][255*3], 0, 3);
|
||||||
Bmemset(&basepaltable[SLIMEPAL][255*3], 0, 3);
|
if (basepaltable[WATERPAL] != NULL)
|
||||||
|
Bmemset(&basepaltable[WATERPAL][255*3], 0, 3);
|
||||||
|
if (basepaltable[SLIMEPAL] != NULL)
|
||||||
|
Bmemset(&basepaltable[SLIMEPAL][255*3], 0, 3);
|
||||||
|
|
||||||
generatefogpals();
|
generatefogpals();
|
||||||
|
|
||||||
|
@ -11113,8 +11116,6 @@ static void G_Startup(void)
|
||||||
if (initengine())
|
if (initengine())
|
||||||
G_FatalEngineError();
|
G_FatalEngineError();
|
||||||
|
|
||||||
setbasepaltable(basepaltable, BASEPALCOUNT);
|
|
||||||
|
|
||||||
#ifdef LUNATIC
|
#ifdef LUNATIC
|
||||||
El_CreateGameState();
|
El_CreateGameState();
|
||||||
C_InitQuotes();
|
C_InitQuotes();
|
||||||
|
|
|
@ -378,7 +378,7 @@ void G_UpdatePlayerFromMenu(void);
|
||||||
void M32RunScript(const char *s);
|
void M32RunScript(const char *s);
|
||||||
void P_DoQuote(int32_t q,DukePlayer_t *p);
|
void P_DoQuote(int32_t q,DukePlayer_t *p);
|
||||||
extern int32_t textsc(int32_t sc);
|
extern int32_t textsc(int32_t sc);
|
||||||
void P_SetGamePalette(DukePlayer_t *player,uint8_t palid,int32_t set);
|
void P_SetGamePalette(DukePlayer_t *player, uint32_t palid, int32_t set);
|
||||||
|
|
||||||
extern int32_t G_GetStringLineLength(const char *text, const char *end, const int32_t iter);
|
extern int32_t G_GetStringLineLength(const char *text, const char *end, const int32_t iter);
|
||||||
extern int32_t G_GetStringNumLines(const char *text, const char *end, const int32_t iter);
|
extern int32_t G_GetStringNumLines(const char *text, const char *end, const int32_t iter);
|
||||||
|
|
|
@ -681,7 +681,7 @@ int32_t G_CheckActivatorMotion(int32_t lotag);
|
||||||
int32_t A_Dodge(spritetype *s);
|
int32_t A_Dodge(spritetype *s);
|
||||||
int32_t A_MoveSpriteClipdist(int32_t spritenum, const vec3_t *change, uint32_t cliptype, int32_t clipdist);
|
int32_t A_MoveSpriteClipdist(int32_t spritenum, const vec3_t *change, uint32_t cliptype, int32_t clipdist);
|
||||||
void P_DoQuote(int32_t q, DukePlayer_t *p);
|
void P_DoQuote(int32_t q, DukePlayer_t *p);
|
||||||
void P_SetGamePalette(DukePlayer_t *player, uint8_t palid, int32_t set);
|
void P_SetGamePalette(DukePlayer_t *player, uint32_t palid, int32_t set);
|
||||||
void G_AddUserQuote(const char *daquote);
|
void G_AddUserQuote(const char *daquote);
|
||||||
void G_ClearCameraView(DukePlayer_t *ps);
|
void G_ClearCameraView(DukePlayer_t *ps);
|
||||||
void G_DrawTileGeneric(int32_t x, int32_t y, int32_t zoom, int32_t tilenum,
|
void G_DrawTileGeneric(int32_t x, int32_t y, int32_t zoom, int32_t tilenum,
|
||||||
|
|
|
@ -145,8 +145,6 @@ int32_t ExtPostStartupWindow(void)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
setbasepaltable(basepaltable, 1);
|
|
||||||
|
|
||||||
Ken_InitMultiPsky();
|
Ken_InitMultiPsky();
|
||||||
|
|
||||||
tiletovox[PLAYER] = nextvoxid++;
|
tiletovox[PLAYER] = nextvoxid++;
|
||||||
|
|
|
@ -26,11 +26,6 @@ const char *G_DefFile(void)
|
||||||
return defaultdeffilename;
|
return defaultdeffilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *basepaltable[1] =
|
|
||||||
{
|
|
||||||
palette
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t PaletteIndexFullbrights[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
|
uint32_t PaletteIndexFullbrights[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||||
|
|
||||||
void Ken_InitMultiPsky(void)
|
void Ken_InitMultiPsky(void)
|
||||||
|
|
|
@ -4,6 +4,4 @@
|
||||||
extern const char *G_DefaultGrpFile(void);
|
extern const char *G_DefaultGrpFile(void);
|
||||||
extern const char *G_GrpFile(void);
|
extern const char *G_GrpFile(void);
|
||||||
|
|
||||||
extern uint8_t *basepaltable[1];
|
|
||||||
|
|
||||||
extern void Ken_InitMultiPsky(void);
|
extern void Ken_InitMultiPsky(void);
|
||||||
|
|
|
@ -526,8 +526,6 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
setbasepaltable(basepaltable, 1);
|
|
||||||
|
|
||||||
Ken_InitMultiPsky();
|
Ken_InitMultiPsky();
|
||||||
|
|
||||||
initinput();
|
initinput();
|
||||||
|
|
Loading…
Reference in a new issue