Merge branch 'next' of https://github.com/STJr/SRB2 into text-color
This commit is contained in:
commit
29495ad436
|
@ -1522,6 +1522,13 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
"S_SPINFIRE5",
|
"S_SPINFIRE5",
|
||||||
"S_SPINFIRE6",
|
"S_SPINFIRE6",
|
||||||
|
|
||||||
|
"S_TEAM_SPINFIRE1",
|
||||||
|
"S_TEAM_SPINFIRE2",
|
||||||
|
"S_TEAM_SPINFIRE3",
|
||||||
|
"S_TEAM_SPINFIRE4",
|
||||||
|
"S_TEAM_SPINFIRE5",
|
||||||
|
"S_TEAM_SPINFIRE6",
|
||||||
|
|
||||||
// Spikes
|
// Spikes
|
||||||
"S_SPIKE1",
|
"S_SPIKE1",
|
||||||
"S_SPIKE2",
|
"S_SPIKE2",
|
||||||
|
|
|
@ -108,7 +108,7 @@ static void HWR_DrawColumnInCache(const column_t *patchcol, UINT8 *block, GLMipm
|
||||||
|
|
||||||
//Hurdler: 25/04/2000: now support colormap in hardware mode
|
//Hurdler: 25/04/2000: now support colormap in hardware mode
|
||||||
if (mipmap->colormap)
|
if (mipmap->colormap)
|
||||||
texel = mipmap->colormap[texel];
|
texel = mipmap->colormap->data[texel];
|
||||||
|
|
||||||
// hope compiler will get this switch out of the loops (dreams...)
|
// hope compiler will get this switch out of the loops (dreams...)
|
||||||
// gcc do it ! but vcc not ! (why don't use cygwin gcc for win32 ?)
|
// gcc do it ! but vcc not ! (why don't use cygwin gcc for win32 ?)
|
||||||
|
@ -218,7 +218,7 @@ static void HWR_DrawFlippedColumnInCache(const column_t *patchcol, UINT8 *block,
|
||||||
|
|
||||||
//Hurdler: 25/04/2000: now support colormap in hardware mode
|
//Hurdler: 25/04/2000: now support colormap in hardware mode
|
||||||
if (mipmap->colormap)
|
if (mipmap->colormap)
|
||||||
texel = mipmap->colormap[texel];
|
texel = mipmap->colormap->data[texel];
|
||||||
|
|
||||||
// hope compiler will get this switch out of the loops (dreams...)
|
// hope compiler will get this switch out of the loops (dreams...)
|
||||||
// gcc do it ! but vcc not ! (why don't use cygwin gcc for win32 ?)
|
// gcc do it ! but vcc not ! (why don't use cygwin gcc for win32 ?)
|
||||||
|
@ -659,7 +659,10 @@ void HWR_FreeTextureColormaps(patch_t *patch)
|
||||||
// Free image data from memory.
|
// Free image data from memory.
|
||||||
if (next->data)
|
if (next->data)
|
||||||
Z_Free(next->data);
|
Z_Free(next->data);
|
||||||
|
if (next->colormap)
|
||||||
|
Z_Free(next->colormap);
|
||||||
next->data = NULL;
|
next->data = NULL;
|
||||||
|
next->colormap = NULL;
|
||||||
HWD.pfnDeleteTexture(next);
|
HWD.pfnDeleteTexture(next);
|
||||||
|
|
||||||
// Free the old colormap mipmap from memory.
|
// Free the old colormap mipmap from memory.
|
||||||
|
@ -667,16 +670,29 @@ void HWR_FreeTextureColormaps(patch_t *patch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean FreeTextureCallback(void *mem)
|
||||||
|
{
|
||||||
|
patch_t *patch = (patch_t *)mem;
|
||||||
|
HWR_FreeTexture(patch);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static boolean FreeColormapsCallback(void *mem)
|
||||||
|
{
|
||||||
|
patch_t *patch = (patch_t *)mem;
|
||||||
|
HWR_FreeTextureColormaps(patch);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void HWR_FreePatchCache(boolean freeall)
|
static void HWR_FreePatchCache(boolean freeall)
|
||||||
{
|
{
|
||||||
INT32 i;
|
boolean (*callback)(void *mem) = FreeTextureCallback;
|
||||||
|
|
||||||
for (i = 0; i < numwadfiles; i++)
|
if (!freeall)
|
||||||
{
|
callback = FreeColormapsCallback;
|
||||||
INT32 j = 0;
|
|
||||||
for (; j < wadfiles[i]->numlumps; j++)
|
Z_IterateTags(PU_PATCH, PU_PATCH_ROTATED, callback);
|
||||||
(freeall ? HWR_FreeTexture : HWR_FreeTextureColormaps)(wadfiles[i]->patchcache[j]);
|
Z_IterateTags(PU_SPRITE, PU_HUDGFX, callback);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// free all textures after each level
|
// free all textures after each level
|
||||||
|
@ -977,8 +993,28 @@ static void HWR_LoadPatchMipmap(patch_t *patch, GLMipmap_t *grMipmap)
|
||||||
Z_ChangeTag(grMipmap->data, PU_HWRCACHE_UNLOCKED);
|
Z_ChangeTag(grMipmap->data, PU_HWRCACHE_UNLOCKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------+
|
||||||
|
// HWR_UpdatePatchMipmap : Updates a mipmap.
|
||||||
|
// ----------------------+
|
||||||
|
static void HWR_UpdatePatchMipmap(patch_t *patch, GLMipmap_t *grMipmap)
|
||||||
|
{
|
||||||
|
GLPatch_t *grPatch = patch->hardware;
|
||||||
|
HWR_MakePatch(patch, grPatch, grMipmap, true);
|
||||||
|
|
||||||
|
// If hardware does not have the texture, then call pfnSetTexture to upload it
|
||||||
|
// If it does have the texture, then call pfnUpdateTexture to update it
|
||||||
|
if (!grMipmap->downloaded)
|
||||||
|
HWD.pfnSetTexture(grMipmap);
|
||||||
|
else
|
||||||
|
HWD.pfnUpdateTexture(grMipmap);
|
||||||
|
HWR_SetCurrentTexture(grMipmap);
|
||||||
|
|
||||||
|
// The system-memory data can be purged now.
|
||||||
|
Z_ChangeTag(grMipmap->data, PU_HWRCACHE_UNLOCKED);
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------+
|
// -----------------+
|
||||||
// HWR_GetPatch : Download a patch to the hardware cache and make it ready for use
|
// HWR_GetPatch : Downloads a patch to the hardware cache and make it ready for use
|
||||||
// -----------------+
|
// -----------------+
|
||||||
void HWR_GetPatch(patch_t *patch)
|
void HWR_GetPatch(patch_t *patch)
|
||||||
{
|
{
|
||||||
|
@ -1006,13 +1042,19 @@ void HWR_GetMappedPatch(patch_t *patch, const UINT8 *colormap)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// search for the mimmap
|
// search for the mipmap
|
||||||
// skip the first (no colormap translated)
|
// skip the first (no colormap translated)
|
||||||
for (grMipmap = grPatch->mipmap; grMipmap->nextcolormap; )
|
for (grMipmap = grPatch->mipmap; grMipmap->nextcolormap; )
|
||||||
{
|
{
|
||||||
grMipmap = grMipmap->nextcolormap;
|
grMipmap = grMipmap->nextcolormap;
|
||||||
if (grMipmap->colormap == colormap)
|
if (grMipmap->colormap && grMipmap->colormap->source == colormap)
|
||||||
{
|
{
|
||||||
|
if (memcmp(grMipmap->colormap->data, colormap, 256 * sizeof(UINT8)))
|
||||||
|
{
|
||||||
|
M_Memcpy(grMipmap->colormap->data, colormap, 256 * sizeof(UINT8));
|
||||||
|
HWR_UpdatePatchMipmap(patch, grMipmap);
|
||||||
|
}
|
||||||
|
else
|
||||||
HWR_LoadPatchMipmap(patch, grMipmap);
|
HWR_LoadPatchMipmap(patch, grMipmap);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1029,7 +1071,10 @@ void HWR_GetMappedPatch(patch_t *patch, const UINT8 *colormap)
|
||||||
I_Error("%s: Out of memory", "HWR_GetMappedPatch");
|
I_Error("%s: Out of memory", "HWR_GetMappedPatch");
|
||||||
grMipmap->nextcolormap = newMipmap;
|
grMipmap->nextcolormap = newMipmap;
|
||||||
|
|
||||||
newMipmap->colormap = colormap;
|
newMipmap->colormap = Z_Calloc(sizeof(*newMipmap->colormap), PU_HWRPATCHCOLMIPMAP, NULL);
|
||||||
|
newMipmap->colormap->source = colormap;
|
||||||
|
M_Memcpy(newMipmap->colormap->data, colormap, 256 * sizeof(UINT8));
|
||||||
|
|
||||||
HWR_LoadPatchMipmap(patch, newMipmap);
|
HWR_LoadPatchMipmap(patch, newMipmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,15 @@ typedef enum GLTextureFormat_e
|
||||||
GL_TEXFMT_ALPHA_INTENSITY_88 = 0x22,
|
GL_TEXFMT_ALPHA_INTENSITY_88 = 0x22,
|
||||||
} GLTextureFormat_t;
|
} GLTextureFormat_t;
|
||||||
|
|
||||||
|
// Colormap structure for mipmaps.
|
||||||
|
struct GLColormap_s
|
||||||
|
{
|
||||||
|
const UINT8 *source;
|
||||||
|
UINT8 data[256];
|
||||||
|
};
|
||||||
|
typedef struct GLColormap_s GLColormap_t;
|
||||||
|
|
||||||
|
|
||||||
// data holds the address of the graphics data cached in heap memory
|
// data holds the address of the graphics data cached in heap memory
|
||||||
// NULL if the texture is not in Doom heap cache.
|
// NULL if the texture is not in Doom heap cache.
|
||||||
struct GLMipmap_s
|
struct GLMipmap_s
|
||||||
|
@ -53,7 +62,7 @@ struct GLMipmap_s
|
||||||
UINT32 downloaded; // The GPU has this texture.
|
UINT32 downloaded; // The GPU has this texture.
|
||||||
|
|
||||||
struct GLMipmap_s *nextcolormap;
|
struct GLMipmap_s *nextcolormap;
|
||||||
const UINT8 *colormap;
|
struct GLColormap_s *colormap;
|
||||||
|
|
||||||
struct GLMipmap_s *nextmipmap; // Linked list of all textures
|
struct GLMipmap_s *nextmipmap; // Linked list of all textures
|
||||||
};
|
};
|
||||||
|
@ -77,7 +86,7 @@ struct GLPatch_s
|
||||||
{
|
{
|
||||||
float max_s,max_t;
|
float max_s,max_t;
|
||||||
GLMipmap_t *mipmap;
|
GLMipmap_t *mipmap;
|
||||||
} ATTRPACK;
|
};
|
||||||
typedef struct GLPatch_s GLPatch_t;
|
typedef struct GLPatch_s GLPatch_t;
|
||||||
|
|
||||||
#endif //_HWR_DATA_
|
#endif //_HWR_DATA_
|
||||||
|
|
|
@ -253,6 +253,7 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_SIGN
|
&lspr[NOLIGHT], // SPR_SIGN
|
||||||
&lspr[NOLIGHT], // SPR_SPIK
|
&lspr[NOLIGHT], // SPR_SPIK
|
||||||
&lspr[NOLIGHT], // SPR_SFLM
|
&lspr[NOLIGHT], // SPR_SFLM
|
||||||
|
&lspr[NOLIGHT], // SPR_TFLM
|
||||||
&lspr[NOLIGHT], // SPR_USPK
|
&lspr[NOLIGHT], // SPR_USPK
|
||||||
&lspr[NOLIGHT], // SPR_WSPK
|
&lspr[NOLIGHT], // SPR_WSPK
|
||||||
&lspr[NOLIGHT], // SPR_WSPB
|
&lspr[NOLIGHT], // SPR_WSPB
|
||||||
|
|
|
@ -5295,7 +5295,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
||||||
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color ? vis->mobj->color : SKINCOLOR_CYAN, GTC_CACHE);
|
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color ? vis->mobj->color : SKINCOLOR_CYAN, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vis->colormap = colormaps;
|
vis->colormap = NULL;
|
||||||
|
|
||||||
// set top/bottom coords
|
// set top/bottom coords
|
||||||
vis->gzt = gzt;
|
vis->gzt = gzt;
|
||||||
|
@ -5396,7 +5396,7 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
|
||||||
vis->flip = flip;
|
vis->flip = flip;
|
||||||
vis->mobj = (mobj_t *)thing;
|
vis->mobj = (mobj_t *)thing;
|
||||||
|
|
||||||
vis->colormap = colormaps;
|
vis->colormap = NULL;
|
||||||
|
|
||||||
// set top/bottom coords
|
// set top/bottom coords
|
||||||
vis->gzt = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset);
|
vis->gzt = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset);
|
||||||
|
|
|
@ -1106,11 +1106,19 @@ static void HWR_GetBlendedTexture(patch_t *patch, patch_t *blendpatch, INT32 ski
|
||||||
for (grMipmap = grPatch->mipmap; grMipmap->nextcolormap; )
|
for (grMipmap = grPatch->mipmap; grMipmap->nextcolormap; )
|
||||||
{
|
{
|
||||||
grMipmap = grMipmap->nextcolormap;
|
grMipmap = grMipmap->nextcolormap;
|
||||||
if (grMipmap->colormap == colormap)
|
if (grMipmap->colormap && grMipmap->colormap->source == colormap)
|
||||||
{
|
{
|
||||||
if (grMipmap->downloaded && grMipmap->data)
|
if (grMipmap->downloaded && grMipmap->data)
|
||||||
{
|
{
|
||||||
|
if (memcmp(grMipmap->colormap->data, colormap, 256 * sizeof(UINT8)))
|
||||||
|
{
|
||||||
|
M_Memcpy(grMipmap->colormap->data, colormap, 256 * sizeof(UINT8));
|
||||||
|
HWR_CreateBlendedTexture(patch, blendpatch, grMipmap, skinnum, color);
|
||||||
|
HWD.pfnUpdateTexture(grMipmap);
|
||||||
|
}
|
||||||
|
else
|
||||||
HWD.pfnSetTexture(grMipmap); // found the colormap, set it to the correct texture
|
HWD.pfnSetTexture(grMipmap); // found the colormap, set it to the correct texture
|
||||||
|
|
||||||
Z_ChangeTag(grMipmap->data, PU_HWRMODELTEXTURE_UNLOCKED);
|
Z_ChangeTag(grMipmap->data, PU_HWRMODELTEXTURE_UNLOCKED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1128,7 +1136,10 @@ static void HWR_GetBlendedTexture(patch_t *patch, patch_t *blendpatch, INT32 ski
|
||||||
if (newMipmap == NULL)
|
if (newMipmap == NULL)
|
||||||
I_Error("%s: Out of memory", "HWR_GetBlendedTexture");
|
I_Error("%s: Out of memory", "HWR_GetBlendedTexture");
|
||||||
grMipmap->nextcolormap = newMipmap;
|
grMipmap->nextcolormap = newMipmap;
|
||||||
newMipmap->colormap = colormap;
|
|
||||||
|
newMipmap->colormap = Z_Calloc(sizeof(*newMipmap->colormap), PU_HWRPATCHCOLMIPMAP, NULL);
|
||||||
|
newMipmap->colormap->source = colormap;
|
||||||
|
M_Memcpy(newMipmap->colormap->data, colormap, 256 * sizeof(UINT8));
|
||||||
|
|
||||||
HWR_CreateBlendedTexture(patch, blendpatch, newMipmap, skinnum, color);
|
HWR_CreateBlendedTexture(patch, blendpatch, newMipmap, skinnum, color);
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"SIGN", // Level end sign
|
"SIGN", // Level end sign
|
||||||
"SPIK", // Spike Ball
|
"SPIK", // Spike Ball
|
||||||
"SFLM", // Spin fire
|
"SFLM", // Spin fire
|
||||||
|
"TFLM", // Spin fire (team)
|
||||||
"USPK", // Floor spike
|
"USPK", // Floor spike
|
||||||
"WSPK", // Wall spike
|
"WSPK", // Wall spike
|
||||||
"WSPB", // Wall spike base
|
"WSPB", // Wall spike base
|
||||||
|
@ -1894,6 +1895,13 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6}, // S_SPINFIRE5
|
{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6}, // S_SPINFIRE5
|
||||||
{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1}, // S_SPINFIRE6
|
{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1}, // S_SPINFIRE6
|
||||||
|
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE2}, // S_TEAM_SPINFIRE1
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3}, // S_TEAM_SPINFIRE2
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4}, // S_TEAM_SPINFIRE3
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5}, // S_TEAM_SPINFIRE4
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6}, // S_TEAM_SPINFIRE5
|
||||||
|
{SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1}, // S_TEAM_SPINFIRE6
|
||||||
|
|
||||||
// Floor Spike
|
// Floor Spike
|
||||||
{SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2}, // S_SPIKE1 -- Fully extended
|
{SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2}, // S_SPIKE1 -- Fully extended
|
||||||
{SPR_USPK, 1, 2, {A_Pain}, 0, 0, S_SPIKE3}, // S_SPIKE2
|
{SPR_USPK, 1, 2, {A_Pain}, 0, 0, S_SPIKE3}, // S_SPIKE2
|
||||||
|
|
|
@ -684,6 +684,7 @@ typedef enum sprite
|
||||||
SPR_SIGN, // Level end sign
|
SPR_SIGN, // Level end sign
|
||||||
SPR_SPIK, // Spike Ball
|
SPR_SPIK, // Spike Ball
|
||||||
SPR_SFLM, // Spin fire
|
SPR_SFLM, // Spin fire
|
||||||
|
SPR_TFLM, // Spin fire (team)
|
||||||
SPR_USPK, // Floor spike
|
SPR_USPK, // Floor spike
|
||||||
SPR_WSPK, // Wall spike
|
SPR_WSPK, // Wall spike
|
||||||
SPR_WSPB, // Wall spike base
|
SPR_WSPB, // Wall spike base
|
||||||
|
@ -2324,6 +2325,13 @@ typedef enum state
|
||||||
S_SPINFIRE5,
|
S_SPINFIRE5,
|
||||||
S_SPINFIRE6,
|
S_SPINFIRE6,
|
||||||
|
|
||||||
|
S_TEAM_SPINFIRE1,
|
||||||
|
S_TEAM_SPINFIRE2,
|
||||||
|
S_TEAM_SPINFIRE3,
|
||||||
|
S_TEAM_SPINFIRE4,
|
||||||
|
S_TEAM_SPINFIRE5,
|
||||||
|
S_TEAM_SPINFIRE6,
|
||||||
|
|
||||||
// Spikes
|
// Spikes
|
||||||
S_SPIKE1,
|
S_SPIKE1,
|
||||||
S_SPIKE2,
|
S_SPIKE2,
|
||||||
|
|
11
src/m_menu.c
11
src/m_menu.c
|
@ -8421,7 +8421,7 @@ static void M_DrawLoadGameData(void)
|
||||||
sprdef = &charbotskin->sprites[SPR2_SIGN];
|
sprdef = &charbotskin->sprites[SPR2_SIGN];
|
||||||
if (!sprdef->numframes)
|
if (!sprdef->numframes)
|
||||||
goto skipbot;
|
goto skipbot;
|
||||||
colormap = R_GetTranslationColormap(savegameinfo[savetodraw].botskin-1, charbotskin->prefcolor, 0);
|
colormap = R_GetTranslationColormap(savegameinfo[savetodraw].botskin-1, charbotskin->prefcolor, GTC_CACHE);
|
||||||
sprframe = &sprdef->spriteframes[0];
|
sprframe = &sprdef->spriteframes[0];
|
||||||
patch = W_CachePatchNum(sprframe->lumppat[0], PU_PATCH);
|
patch = W_CachePatchNum(sprframe->lumppat[0], PU_PATCH);
|
||||||
|
|
||||||
|
@ -8431,8 +8431,6 @@ static void M_DrawLoadGameData(void)
|
||||||
charbotskin->highresscale,
|
charbotskin->highresscale,
|
||||||
0, patch, colormap);
|
0, patch, colormap);
|
||||||
|
|
||||||
Z_Free(colormap);
|
|
||||||
|
|
||||||
tempx -= (20<<FRACBITS);
|
tempx -= (20<<FRACBITS);
|
||||||
//flip = V_FLIP;
|
//flip = V_FLIP;
|
||||||
}
|
}
|
||||||
|
@ -8441,7 +8439,7 @@ skipbot:
|
||||||
if (!charskin) // shut up compiler
|
if (!charskin) // shut up compiler
|
||||||
goto skipsign;
|
goto skipsign;
|
||||||
sprdef = &charskin->sprites[SPR2_SIGN];
|
sprdef = &charskin->sprites[SPR2_SIGN];
|
||||||
colormap = R_GetTranslationColormap(savegameinfo[savetodraw].skinnum, charskin->prefcolor, 0);
|
colormap = R_GetTranslationColormap(savegameinfo[savetodraw].skinnum, charskin->prefcolor, GTC_CACHE);
|
||||||
if (!sprdef->numframes)
|
if (!sprdef->numframes)
|
||||||
goto skipsign;
|
goto skipsign;
|
||||||
sprframe = &sprdef->spriteframes[0];
|
sprframe = &sprdef->spriteframes[0];
|
||||||
|
@ -8481,8 +8479,6 @@ skipsign:
|
||||||
charskin->highresscale/2,
|
charskin->highresscale/2,
|
||||||
0, patch, colormap);
|
0, patch, colormap);
|
||||||
skiplife:
|
skiplife:
|
||||||
if (colormap)
|
|
||||||
Z_Free(colormap);
|
|
||||||
|
|
||||||
patch = W_CachePatchName("STLIVEX", PU_PATCH);
|
patch = W_CachePatchName("STLIVEX", PU_PATCH);
|
||||||
|
|
||||||
|
@ -11753,7 +11749,7 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||||
goto faildraw;
|
goto faildraw;
|
||||||
|
|
||||||
// ok, draw player sprite for sure now
|
// ok, draw player sprite for sure now
|
||||||
colormap = R_GetTranslationColormap(setupm_fakeskin, setupm_fakecolor->color, 0);
|
colormap = R_GetTranslationColormap(setupm_fakeskin, setupm_fakecolor->color, GTC_CACHE);
|
||||||
|
|
||||||
if (multi_frame >= sprdef->numframes)
|
if (multi_frame >= sprdef->numframes)
|
||||||
multi_frame = 0;
|
multi_frame = 0;
|
||||||
|
@ -11771,7 +11767,6 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||||
FixedDiv(skins[setupm_fakeskin].highresscale, skins[setupm_fakeskin].shieldscale),
|
FixedDiv(skins[setupm_fakeskin].highresscale, skins[setupm_fakeskin].shieldscale),
|
||||||
flags, patch, colormap);
|
flags, patch, colormap);
|
||||||
|
|
||||||
Z_Free(colormap);
|
|
||||||
goto colordraw;
|
goto colordraw;
|
||||||
|
|
||||||
faildraw:
|
faildraw:
|
||||||
|
|
|
@ -9837,7 +9837,7 @@ static void P_FlagFuseThink(mobj_t *mobj)
|
||||||
if (mobj->type == MT_REDFLAG)
|
if (mobj->type == MT_REDFLAG)
|
||||||
{
|
{
|
||||||
if (!(mobj->flags2 & MF2_JUSTATTACKED))
|
if (!(mobj->flags2 & MF2_JUSTATTACKED))
|
||||||
CONS_Printf(M_GetText("The %c%s%c has returned to base.\n"), 0x85, M_GetText("Red flag"), 0x80);
|
CONS_Printf(M_GetText("The \205Red flag\200 has returned to base.\n"));
|
||||||
|
|
||||||
// Assumedly in splitscreen players will be on opposing teams
|
// Assumedly in splitscreen players will be on opposing teams
|
||||||
if (players[consoleplayer].ctfteam == 1 || splitscreen)
|
if (players[consoleplayer].ctfteam == 1 || splitscreen)
|
||||||
|
@ -9850,7 +9850,7 @@ static void P_FlagFuseThink(mobj_t *mobj)
|
||||||
else // MT_BLUEFLAG
|
else // MT_BLUEFLAG
|
||||||
{
|
{
|
||||||
if (!(mobj->flags2 & MF2_JUSTATTACKED))
|
if (!(mobj->flags2 & MF2_JUSTATTACKED))
|
||||||
CONS_Printf(M_GetText("The %c%s%c has returned to base.\n"), 0x84, M_GetText("Blue flag"), 0x80);
|
CONS_Printf(M_GetText("The \204Blue flag\200 has returned to base.\n"));
|
||||||
|
|
||||||
// Assumedly in splitscreen players will be on opposing teams
|
// Assumedly in splitscreen players will be on opposing teams
|
||||||
if (players[consoleplayer].ctfteam == 2 || splitscreen)
|
if (players[consoleplayer].ctfteam == 2 || splitscreen)
|
||||||
|
|
|
@ -4604,7 +4604,7 @@ DoneSection2:
|
||||||
|
|
||||||
HU_SetCEchoFlags(V_AUTOFADEOUT|V_ALLOWLOWERCASE);
|
HU_SetCEchoFlags(V_AUTOFADEOUT|V_ALLOWLOWERCASE);
|
||||||
HU_SetCEchoDuration(5);
|
HU_SetCEchoDuration(5);
|
||||||
HU_DoCEcho(va(M_GetText("%s%s%s\\CAPTURED THE %sBLUE FLAG%s.\\\\\\\\"), "\x85", player_names[player-players], "\x80", "\x84", "\x80"));
|
HU_DoCEcho(va(M_GetText("\205%s\200\\CAPTURED THE \204BLUE FLAG\200.\\\\\\\\"), player_names[player-players]));
|
||||||
|
|
||||||
if (splitscreen || players[consoleplayer].ctfteam == 1)
|
if (splitscreen || players[consoleplayer].ctfteam == 1)
|
||||||
S_StartSound(NULL, sfx_flgcap);
|
S_StartSound(NULL, sfx_flgcap);
|
||||||
|
@ -4637,7 +4637,7 @@ DoneSection2:
|
||||||
|
|
||||||
HU_SetCEchoFlags(V_AUTOFADEOUT|V_ALLOWLOWERCASE);
|
HU_SetCEchoFlags(V_AUTOFADEOUT|V_ALLOWLOWERCASE);
|
||||||
HU_SetCEchoDuration(5);
|
HU_SetCEchoDuration(5);
|
||||||
HU_DoCEcho(va(M_GetText("%s%s%s\\CAPTURED THE %sRED FLAG%s.\\\\\\\\"), "\x84", player_names[player-players], "\x80", "\x85", "\x80"));
|
HU_DoCEcho(va(M_GetText("\204%s\200\\CAPTURED THE \205RED FLAG\200.\\\\\\\\"), player_names[player-players]));
|
||||||
|
|
||||||
if (splitscreen || players[consoleplayer].ctfteam == 2)
|
if (splitscreen || players[consoleplayer].ctfteam == 2)
|
||||||
S_StartSound(NULL, sfx_flgcap);
|
S_StartSound(NULL, sfx_flgcap);
|
||||||
|
@ -4827,6 +4827,8 @@ DoneSection2:
|
||||||
|
|
||||||
if (player->laps >= (UINT8)cv_numlaps.value)
|
if (player->laps >= (UINT8)cv_numlaps.value)
|
||||||
CONS_Printf(M_GetText("%s has finished the race.\n"), player_names[player-players]);
|
CONS_Printf(M_GetText("%s has finished the race.\n"), player_names[player-players]);
|
||||||
|
else if (player->laps == (UINT8)cv_numlaps.value-1)
|
||||||
|
CONS_Printf(M_GetText("%s started the \205final lap\200!\n"), player_names[player-players]);
|
||||||
else
|
else
|
||||||
CONS_Printf(M_GetText("%s started lap %u\n"), player_names[player-players], (UINT32)player->laps+1);
|
CONS_Printf(M_GetText("%s started lap %u\n"), player_names[player-players], (UINT32)player->laps+1);
|
||||||
|
|
||||||
|
|
10
src/p_user.c
10
src/p_user.c
|
@ -7756,6 +7756,11 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
|
||||||
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
||||||
P_InstaThrust(flame, flame->angle, FixedMul(3*FRACUNIT, flame->scale));
|
P_InstaThrust(flame, flame->angle, FixedMul(3*FRACUNIT, flame->scale));
|
||||||
P_SetObjectMomZ(flame, 3*FRACUNIT, false);
|
P_SetObjectMomZ(flame, 3*FRACUNIT, false);
|
||||||
|
if (!(gametyperules & GTR_FRIENDLY))
|
||||||
|
{
|
||||||
|
P_SetMobjState(flame, S_TEAM_SPINFIRE1);
|
||||||
|
flame->color = player->mo->color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#undef limitangle
|
#undef limitangle
|
||||||
#undef numangles
|
#undef numangles
|
||||||
|
@ -7783,6 +7788,11 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
|
||||||
flame->destscale = player->mo->scale;
|
flame->destscale = player->mo->scale;
|
||||||
P_SetScale(flame, player->mo->scale);
|
P_SetScale(flame, player->mo->scale);
|
||||||
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
||||||
|
if (!(gametyperules & GTR_FRIENDLY))
|
||||||
|
{
|
||||||
|
P_SetMobjState(flame, S_TEAM_SPINFIRE1);
|
||||||
|
flame->color = player->mo->color;
|
||||||
|
}
|
||||||
|
|
||||||
flame->momx = 8; // this is a hack which is used to ensure it still behaves as a missile and can damage others
|
flame->momx = 8; // this is a hack which is used to ensure it still behaves as a missile and can damage others
|
||||||
P_XYMovement(flame);
|
P_XYMovement(flame);
|
||||||
|
|
|
@ -1298,6 +1298,10 @@ boolean I_PlaySong(boolean looping)
|
||||||
if (gme)
|
if (gme)
|
||||||
{
|
{
|
||||||
gme_equalizer_t eq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
|
gme_equalizer_t eq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
|
||||||
|
#if GME_VERSION >= 0x000603
|
||||||
|
if (looping)
|
||||||
|
gme_set_autoload_playback_limit(gme, 0);
|
||||||
|
#endif
|
||||||
gme_set_equalizer(gme, &eq);
|
gme_set_equalizer(gme, &eq);
|
||||||
gme_start_track(gme, 0);
|
gme_start_track(gme, 0);
|
||||||
current_track = 0;
|
current_track = 0;
|
||||||
|
|
|
@ -1229,7 +1229,10 @@ void Y_StartIntermission(void)
|
||||||
data.coop.tics = players[consoleplayer].realtime;
|
data.coop.tics = players[consoleplayer].realtime;
|
||||||
|
|
||||||
for (i = 0; i < 4; ++i)
|
for (i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
if (strlen(data.coop.bonuses[i].patch))
|
||||||
data.coop.bonuspatches[i] = W_CachePatchName(data.coop.bonuses[i].patch, PU_PATCH);
|
data.coop.bonuspatches[i] = W_CachePatchName(data.coop.bonuses[i].patch, PU_PATCH);
|
||||||
|
}
|
||||||
data.coop.ptotal = W_CachePatchName("YB_TOTAL", PU_PATCH);
|
data.coop.ptotal = W_CachePatchName("YB_TOTAL", PU_PATCH);
|
||||||
|
|
||||||
// get act number
|
// get act number
|
||||||
|
@ -1733,7 +1736,6 @@ static void Y_SetNullBonus(player_t *player, y_bonus_t *bstruct)
|
||||||
{
|
{
|
||||||
(void)player;
|
(void)player;
|
||||||
memset(bstruct, 0, sizeof(y_bonus_t));
|
memset(bstruct, 0, sizeof(y_bonus_t));
|
||||||
strncpy(bstruct->patch, "MISSING", sizeof(bstruct->patch));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
10
src/z_zone.c
10
src/z_zone.c
|
@ -813,12 +813,12 @@ static void Command_Memfree_f(void)
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
if (rendermode == render_opengl)
|
if (rendermode == render_opengl)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Patch info headers: %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHINFO)>>10));
|
CONS_Printf(M_GetText("Patch info headers : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHINFO)>>10));
|
||||||
CONS_Printf(M_GetText("Mipmap patches : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHCOLMIPMAP)>>10));
|
CONS_Printf(M_GetText("Cached textures : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRCACHE)>>10));
|
||||||
CONS_Printf(M_GetText("HW Texture cache : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRCACHE)>>10));
|
CONS_Printf(M_GetText("Texture colormaps : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHCOLMIPMAP)>>10));
|
||||||
|
CONS_Printf(M_GetText("Model textures : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRMODELTEXTURE)>>10));
|
||||||
CONS_Printf(M_GetText("Plane polygons : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPLANE)>>10));
|
CONS_Printf(M_GetText("Plane polygons : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPLANE)>>10));
|
||||||
CONS_Printf(M_GetText("HW model textures : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRMODELTEXTURE)>>10));
|
CONS_Printf(M_GetText("All GPU textures : %7d KB\n"), HWR_GetTextureUsed()>>10);
|
||||||
CONS_Printf(M_GetText("HW Texture used : %7d KB\n"), HWR_GetTextureUsed()>>10);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue