Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75d24743c1 | ||
|
|
9573d6c4cf | ||
|
|
4fbcb14699 | ||
|
|
325b4d5137 | ||
|
|
f2e7b1d0bf | ||
|
|
02834da690 | ||
|
|
0c2bd7fd47 | ||
|
|
0ce3bea34b | ||
|
|
6a2ee9fa6a | ||
|
|
9525018c02 | ||
|
|
7ea7020095 | ||
|
|
e0b9d131ca | ||
|
|
34ab9d714c | ||
|
|
c68aacc922 | ||
|
|
aeca22c7a3 | ||
|
|
b93d8d1efb | ||
|
|
e16546db12 | ||
|
|
8cf2395d42 | ||
|
|
3abe74de86 | ||
|
|
5a61ebf325 |
No files matched your search
+2
-2
@@ -55,8 +55,8 @@ struct lua_longjmp {
|
||||
|
||||
void luaD_seterrorobj (lua_State *L, int lerrcode, StkId oldtop) {
|
||||
switch (lerrcode) {
|
||||
case LUA_ERRMEM: { /* memory error? */
|
||||
setsvalue2s(L, oldtop, G(L)->memerrmsg); /* reuse preregistered msg. */
|
||||
case LUA_ERRMEM: {
|
||||
setsvalue2s(L, oldtop, luaS_newliteral(L, MEMERRMSG));
|
||||
break;
|
||||
}
|
||||
case LUA_ERRERR: {
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "llimits.h"
|
||||
#include "lua.h"
|
||||
|
||||
#define MEMERRMSG "not enough memory"
|
||||
|
||||
|
||||
#define luaM_reallocv(L,b,on,n,e) \
|
||||
((cast(size_t, (n)+1) <= MAX_SIZET/(e)) ? /* +1 to avoid warnings */ \
|
||||
|
||||
+1
-6
@@ -64,9 +64,6 @@ static void freestack (lua_State *L, lua_State *L1) {
|
||||
}
|
||||
|
||||
|
||||
#define MEMERRMSG "not enough memory"
|
||||
|
||||
|
||||
/*
|
||||
** open parts that may cause memory-allocation errors
|
||||
*/
|
||||
@@ -79,9 +76,7 @@ static void f_luaopen (lua_State *L, void *ud) {
|
||||
luaS_resize(L, MINSTRTABSIZE); /* initial size of string table */
|
||||
luaT_init(L);
|
||||
luaX_init(L);
|
||||
/* pre-create memory-error message */
|
||||
g->memerrmsg = luaS_newliteral(L, MEMERRMSG);
|
||||
luaS_fix(g->memerrmsg); /* it should never be collected */
|
||||
luaS_fix(luaS_newliteral(L, MEMERRMSG));
|
||||
g->GCthreshold = 4*g->totalbytes;
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +88,6 @@ typedef struct global_State {
|
||||
lua_CFunction panic; /* to be called in unprotected errors */
|
||||
TValue l_registry;
|
||||
struct lua_State *mainthread;
|
||||
TString *memerrmsg; /* memory-error message */
|
||||
UpVal uvhead; /* head of double-linked list of all open upvalues */
|
||||
struct Table *mt[NUM_TAGS]; /* metatables for basic types */
|
||||
TString *tmname[TM_N]; /* array with tag-method names */
|
||||
|
||||
@@ -149,30 +149,6 @@ void PoolAllocator::release()
|
||||
allocated_blocks_ = 0;
|
||||
}
|
||||
|
||||
bool PoolAllocator::ptrcheck(const void* p) const
|
||||
{
|
||||
const uintptr_t paddr = reinterpret_cast<uintptr_t>(p);
|
||||
|
||||
ChunkFooter* next = nullptr;
|
||||
for (ChunkFooter* chunk = first_chunk_; chunk != nullptr; chunk = next)
|
||||
{
|
||||
const uintptr_t blockstart = reinterpret_cast<uintptr_t>(chunk->start);
|
||||
const uintptr_t blockend = blockstart + blocks_ * block_size_;
|
||||
|
||||
//CONS_Printf("mobj ptr %lu, block start %lu end %lu\n", paddr, blockstart, blockend);
|
||||
|
||||
if (paddr >= blockstart && paddr < blockend)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
next = chunk->next;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static LinearMemory g_frame_memory {4 * 1024 * 1024};
|
||||
|
||||
void* Z_Frame_Alloc(size_t size)
|
||||
|
||||
@@ -65,7 +65,6 @@ public:
|
||||
constexpr size_t allocated_bytes() const noexcept { return allocated_blocks_ * block_size_; };
|
||||
|
||||
void release();
|
||||
bool ptrcheck(const void* p) const;
|
||||
};
|
||||
|
||||
} // namespace srb2
|
||||
|
||||
+22
-42
@@ -3347,7 +3347,6 @@ static void Command_connect(void)
|
||||
return;
|
||||
}
|
||||
|
||||
// StarManiaKG: allow us to join servers from anywhere at any time //
|
||||
if (Playing() || demo.title || demo.playback)
|
||||
{
|
||||
if (demo.title || demo.playback)
|
||||
@@ -3366,9 +3365,7 @@ static void Command_connect(void)
|
||||
D_StartTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
M_ClearMenus(true); // close the menus
|
||||
}
|
||||
|
||||
// modified game check: no longer handled
|
||||
// we don't request a restart unless the filelist differs
|
||||
@@ -3384,52 +3381,37 @@ static void Command_connect(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get the server node.
|
||||
if (netgame)
|
||||
// used in menu to connect to a server in the list
|
||||
if (netgame && fasticmp(COM_Argv(1), "node"))
|
||||
{
|
||||
// used in menu to connect to a server in the list
|
||||
if (fasticmp(COM_Argv(1), "node"))
|
||||
{
|
||||
servernode = (SINT8)atoi(COM_Argv(2));
|
||||
}
|
||||
else
|
||||
{
|
||||
D_QuitNetGame();
|
||||
CL_Reset();
|
||||
D_StartTitle();
|
||||
}
|
||||
servernode = (SINT8)atoi(COM_Argv(2));
|
||||
}
|
||||
else
|
||||
else if (netgame)
|
||||
{
|
||||
// Standard behaviour
|
||||
if (I_NetOpenSocket)
|
||||
{
|
||||
I_NetOpenSocket();
|
||||
netgame = true;
|
||||
multiplayer = true;
|
||||
CONS_Printf(M_GetText("You cannot connect while in a game. End this game first.\n"));
|
||||
return;
|
||||
}
|
||||
else if (I_NetOpenSocket)
|
||||
{
|
||||
I_NetOpenSocket();
|
||||
netgame = true;
|
||||
multiplayer = true;
|
||||
|
||||
if (fasticmp(COM_Argv(1), "any"))
|
||||
servernode = BROADCASTADDR;
|
||||
else if (I_NetMakeNodewPort)
|
||||
{
|
||||
if (COM_Argc() >= 3) // address AND port
|
||||
servernode = I_NetMakeNodewPort(COM_Argv(1), COM_Argv(2));
|
||||
else // address only, or address:port
|
||||
servernode = I_NetMakeNode(COM_Argv(1));
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("There is no server identification with this network driver\n"));
|
||||
D_CloseConnection();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (fasticmp(COM_Argv(1), "any"))
|
||||
servernode = BROADCASTADDR;
|
||||
else if (I_NetMakeNodewPort && COM_Argc() >= 3)
|
||||
servernode = I_NetMakeNodewPort(COM_Argv(1), COM_Argv(2));
|
||||
else if (I_NetMakeNodewPort)
|
||||
servernode = I_NetMakeNode(COM_Argv(1));
|
||||
else
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("There is no network driver\n"));
|
||||
CONS_Alert(CONS_ERROR, M_GetText("There is no server identification with this network driver\n"));
|
||||
D_CloseConnection();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
CONS_Alert(CONS_ERROR, M_GetText("There is no network driver\n"));
|
||||
|
||||
// invalid address
|
||||
if (servernode == -1)
|
||||
@@ -3476,7 +3458,6 @@ static void ResetNode(INT32 node);
|
||||
//
|
||||
void CL_ClearPlayer(INT32 playernum)
|
||||
{
|
||||
// Handle mobj_t pointers.
|
||||
if (players[playernum].mo)
|
||||
{
|
||||
// Don't leave a NiGHTS ghost!
|
||||
@@ -3485,7 +3466,6 @@ void CL_ClearPlayer(INT32 playernum)
|
||||
P_RemoveMobj(players[playernum].mo);
|
||||
}
|
||||
|
||||
// Wipe the struct.
|
||||
memset(&players[playernum], 0, sizeof(player_t));
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -147,7 +147,7 @@ extern char logfilename[1024];
|
||||
#define VERSIONSTRING CLIENTNAME " v10.1"
|
||||
#define VERSIONSTRINGW CLIENTNAMEW L" v10.1"
|
||||
|
||||
#define SATURN_TESTING // comment out for saturn release builds!
|
||||
//#define SATURN_TESTING // comment out for saturn release builds!
|
||||
|
||||
// Hey! If you change this, add 1 to the MODVERSION below! Otherwise we can't force updates!
|
||||
// And change CMakeLists.txt (not src/, but in root), for CMake users!
|
||||
|
||||
@@ -3283,7 +3283,7 @@ static void GL_Framebuffer_Generate(void)
|
||||
{
|
||||
pglGenTextures(1, &framebufferobject.tex);
|
||||
pglBindTexture(GL_TEXTURE_2D, framebufferobject.tex);
|
||||
pglTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, screen_width, screen_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
||||
pglTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, screen_width, screen_height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
Clamp2D(GL_TEXTURE_WRAP_S);
|
||||
|
||||
+2
-21
@@ -4399,7 +4399,8 @@ void K_KillBananaChain(mobj_t *banana, mobj_t *inflictor, mobj_t *source)
|
||||
mobj_t *cachenext;
|
||||
|
||||
killnext:
|
||||
if (P_MobjWasRemovedCompat(banana))
|
||||
|
||||
if (!banana)
|
||||
return;
|
||||
|
||||
cachenext = banana->hnext;
|
||||
@@ -4438,21 +4439,10 @@ void K_UpdateHnextList(player_t *player, boolean clean)
|
||||
nextwork = work->hnext;
|
||||
|
||||
if (!clean && (!work->movedir || work->movedir <= (UINT16)player->kartstuff[k_itemamount]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
P_RemoveMobj(work);
|
||||
}
|
||||
|
||||
#ifdef PHOBOS_BUILD
|
||||
if (P_MobjWasRemoved(player->mo->hnext))
|
||||
{
|
||||
// Like below, try to clean up the pointer if it's NULL.
|
||||
// Maybe this was a cause of the shrink/eggbox fails?
|
||||
P_SetTarget(&player->mo->hnext, NULL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// For getting hit!
|
||||
@@ -4517,9 +4507,7 @@ void K_DropHnextList(player_t *player)
|
||||
}
|
||||
|
||||
dropwork = P_SpawnMobj(work->x, work->y, work->z, type);
|
||||
|
||||
P_SetTarget(&dropwork->target, player->mo);
|
||||
|
||||
dropwork->angle = work->angle;
|
||||
dropwork->flags2 = work->flags2;
|
||||
dropwork->flags |= MF_NOCLIPTHING;
|
||||
@@ -4587,13 +4575,10 @@ void K_DropHnextList(player_t *player)
|
||||
|
||||
// we need this here too because this is done in afterthink - pointers are cleaned up at the START of each tic...
|
||||
P_SetTarget(&player->mo->hnext, NULL);
|
||||
|
||||
player->kartstuff[k_bananadrag] = 0;
|
||||
|
||||
if (player->kartstuff[k_eggmanheld])
|
||||
{
|
||||
player->kartstuff[k_eggmanheld] = 0;
|
||||
}
|
||||
else if (player->kartstuff[k_itemheld]
|
||||
&& (dropall || (--player->kartstuff[k_itemamount] <= 0)))
|
||||
{
|
||||
@@ -4894,9 +4879,7 @@ static void K_MoveHeldObjects(player_t *player)
|
||||
player->kartstuff[k_bananadrag] = 0;
|
||||
|
||||
if (player->kartstuff[k_eggmanheld])
|
||||
{
|
||||
player->kartstuff[k_eggmanheld] = 0;
|
||||
}
|
||||
else if (player->kartstuff[k_itemheld])
|
||||
{
|
||||
player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0;
|
||||
@@ -4913,9 +4896,7 @@ static void K_MoveHeldObjects(player_t *player)
|
||||
player->kartstuff[k_bananadrag] = 0;
|
||||
|
||||
if (player->kartstuff[k_eggmanheld])
|
||||
{
|
||||
player->kartstuff[k_eggmanheld] = 0;
|
||||
}
|
||||
else if (player->kartstuff[k_itemheld])
|
||||
{
|
||||
player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0;
|
||||
|
||||
+10
-15
@@ -62,6 +62,14 @@ static lua_CFunction liblist[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
// Lua asks for memory using this.
|
||||
static void *LUA_Alloc(void *ud, void *ptr, size_t osize, size_t nsize)
|
||||
{
|
||||
(void)ud;
|
||||
(void)osize;
|
||||
return Z_Realloc(ptr, nsize, PU_LUA, NULL);
|
||||
}
|
||||
|
||||
// Panic function Lua calls when there's an unprotected error.
|
||||
// This function cannot return. Lua would kill the application anyway if it did.
|
||||
FUNCNORETURN static int LUA_Panic(lua_State *L)
|
||||
@@ -189,7 +197,7 @@ void LUA_ClearState(void)
|
||||
CONS_Printf(M_GetText("Pardon me while I initialize the Lua scripting interface...\n"));
|
||||
|
||||
// allocate state
|
||||
L = luaL_newstate();
|
||||
L = lua_newstate(LUA_Alloc, NULL);
|
||||
lua_atpanic(L, LUA_Panic);
|
||||
|
||||
// open base libraries
|
||||
@@ -365,7 +373,7 @@ void LUA_DumpFile(const char *filename)
|
||||
|
||||
static void createMathLibState(void)
|
||||
{
|
||||
mL = luaL_newstate();
|
||||
mL = lua_newstate(LUA_Alloc, NULL);
|
||||
lua_atpanic(mL, LUA_Panic);
|
||||
|
||||
// open only enum lib
|
||||
@@ -1457,16 +1465,3 @@ int Lua_CreateFieldTable(lua_State *L, const char *const lst[])
|
||||
|
||||
return luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
}
|
||||
|
||||
size_t LUA_MemoryUsage(void)
|
||||
{
|
||||
size_t usage = 0;
|
||||
|
||||
if (gL)
|
||||
usage += lua_gc(gL, LUA_GCCOUNT, 0);
|
||||
|
||||
if (mL)
|
||||
usage += lua_gc(mL, LUA_GCCOUNT, 0);
|
||||
|
||||
return usage;
|
||||
}
|
||||
@@ -82,9 +82,6 @@ int Lua_optoption(lua_State *L, int narg, int def, int list_ref);
|
||||
int Lua_CreateFieldTable(lua_State *L, const char *const lst[]);
|
||||
void LUA_HookNetArchive(lua_CFunction archFunc, savebuffer_t *save);
|
||||
|
||||
// Returns lua memory usage in kbytes
|
||||
size_t LUA_MemoryUsage(void);
|
||||
|
||||
// Console wrapper
|
||||
void COM_Lua_f(void);
|
||||
|
||||
|
||||
+331
-708
File diff suppressed because it is too large.
Load diff
+1
-4
@@ -107,9 +107,6 @@ void P_DoNightsScore(player_t *player)
|
||||
|
||||
dummymo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z+player->mo->height/2, MT_NIGHTSCORE);
|
||||
|
||||
if (P_MobjWasRemovedCompat(dummymo))
|
||||
return;
|
||||
|
||||
if (player->bot)
|
||||
player = &players[consoleplayer];
|
||||
|
||||
@@ -2016,7 +2013,7 @@ static inline void P_NiGHTSDamage(mobj_t *target, mobj_t *source)
|
||||
}
|
||||
}
|
||||
|
||||
static boolean P_TagDamage(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 damage)
|
||||
static inline boolean P_TagDamage(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 damage)
|
||||
{
|
||||
player_t *player = target->player;
|
||||
(void)damage; //unused parm
|
||||
|
||||
+3
-3
@@ -2026,7 +2026,7 @@ static boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam)
|
||||
|
||||
mapcampointer = thiscam;
|
||||
|
||||
if (newsec->flags & SF_NOCLIPCAMERA)
|
||||
if (UNLIKELY(GETSECSPECIAL(newsec->special, 4) == 12))
|
||||
{ // Camera noclip on entire sector.
|
||||
tmfloorz = tmdropoffz = thiscam->z;
|
||||
tmceilingz = tmdrpoffceilz = thiscam->z + thiscam->height;
|
||||
@@ -2068,7 +2068,7 @@ static boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam)
|
||||
fixed_t topheight, bottomheight, midheight;
|
||||
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_EXISTS) || !(rover->flags & FF_RENDERALL)
|
||||
|| rover->master->frontsector->flags & SF_NOCLIPCAMERA)
|
||||
|| UNLIKELY(GETSECSPECIAL(rover->master->frontsector->special, 4) == 12))
|
||||
continue;
|
||||
|
||||
topheight = P_CameraGetFOFTopZ(thiscam, newsec, rover, x, y, NULL);
|
||||
@@ -2144,7 +2144,7 @@ static boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam)
|
||||
// We're inside it! Yess...
|
||||
polysec = po->lines[0]->backsector;
|
||||
|
||||
if (polysec->flags & SF_NOCLIPCAMERA)
|
||||
if (UNLIKELY(GETSECSPECIAL(polysec->special, 4) == 12))
|
||||
{ // Camera noclip polyobj.
|
||||
plink = (polymaplink_t *)(plink->link.next);
|
||||
continue;
|
||||
|
||||
+2
-2
@@ -328,7 +328,7 @@ void P_CameraLineOpening(line_t *linedef)
|
||||
{
|
||||
fixed_t topheight, bottomheight, midheight;
|
||||
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_RENDERALL) || !(rover->flags & FF_EXISTS) || (rover->master->frontsector->flags & SF_NOCLIPCAMERA))
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_RENDERALL) || !(rover->flags & FF_EXISTS) || UNLIKELY(GETSECSPECIAL(rover->master->frontsector->special, 4) == 12))
|
||||
continue;
|
||||
|
||||
topheight = P_CameraGetFOFTopZ(mapcampointer, front, rover, tmx, tmy, linedef);
|
||||
@@ -358,7 +358,7 @@ void P_CameraLineOpening(line_t *linedef)
|
||||
{
|
||||
fixed_t topheight, bottomheight, midheight;
|
||||
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_RENDERALL) || !(rover->flags & FF_EXISTS) || (rover->master->frontsector->flags & SF_NOCLIPCAMERA))
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_RENDERALL) || !(rover->flags & FF_EXISTS) || UNLIKELY(GETSECSPECIAL(rover->master->frontsector->special, 4) == 12))
|
||||
continue;
|
||||
|
||||
topheight = P_CameraGetFOFTopZ(mapcampointer, back, rover, tmx, tmy, linedef);
|
||||
|
||||
+866
-1059
File diff suppressed because it is too large.
Load diff
@@ -3331,7 +3331,6 @@ static boolean P_CheckSoundReplacements(UINT16 wadnum, char *name, size_t i)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// P_CheckReplacMapReplacements
|
||||
//
|
||||
|
||||
+4
-18
@@ -3394,7 +3394,7 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
||||
break;
|
||||
case 12: // SRB2kart: Invert Encore Remap
|
||||
break;
|
||||
case 15: // also Invert Encore Remap....
|
||||
case 15: // no idea but keep it dont want anything to break
|
||||
break;
|
||||
}
|
||||
DoneSection2:
|
||||
@@ -5368,11 +5368,6 @@ void P_SpawnSpecials(INT32 fromnetsave, boolean reloadinggamestate)
|
||||
case 11: // Custom global gravity!
|
||||
gravity = sector->floorheight/1000;
|
||||
break;
|
||||
|
||||
case 12: // SRB2kart: Invert Encore Remap
|
||||
case 15: // NOTE: vanilla kart checks only for this for some reason!
|
||||
sector->flags |= SF_INVERTENCORE;
|
||||
break;
|
||||
}
|
||||
|
||||
// Process Section 4
|
||||
@@ -5382,10 +5377,6 @@ void P_SpawnSpecials(INT32 fromnetsave, boolean reloadinggamestate)
|
||||
if (G_RaceGametype())
|
||||
circuitmap = true;
|
||||
break;
|
||||
|
||||
case 12: // Camera noclip
|
||||
sector->flags |= SF_NOCLIPCAMERA;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5470,11 +5461,11 @@ void P_SpawnSpecials(INT32 fromnetsave, boolean reloadinggamestate)
|
||||
sectors[s].gravity = §ors[sec].floorheight; // This allows it to change in realtime!
|
||||
|
||||
if (lines[i].flags & ML_NOCLIMB)
|
||||
sectors[s].flags |= SF_GRAVITYFLIP;
|
||||
sectors[s].verticalflip = true;
|
||||
else
|
||||
sectors[s].flags &= ~SF_GRAVITYFLIP;
|
||||
sectors[s].verticalflip = false;
|
||||
|
||||
CheckForReverseGravity = (boolean)(sectors[s].flags & SF_GRAVITYFLIP);
|
||||
CheckForReverseGravity = sectors[s].verticalflip;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5567,11 +5558,6 @@ void P_SpawnSpecials(INT32 fromnetsave, boolean reloadinggamestate)
|
||||
sectors[s].cullheight = &lines[i]; // This allows it to change in realtime!
|
||||
break;
|
||||
|
||||
case 13: // Heat wave effect
|
||||
for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;)
|
||||
sectors[s].flags |= SF_HEATWAVE;
|
||||
break;
|
||||
|
||||
case 50: // Insta-Lower Sector
|
||||
EV_DoFloor(&lines[i], instantLower);
|
||||
break;
|
||||
|
||||
+5
-6
@@ -3561,7 +3561,7 @@ static boolean P_CheckNoclipCameraPosition(player_t *player, camera_t *thiscam,
|
||||
for (rover = newsubsec->sector->ffloors; rover; rover = rover->next)
|
||||
{
|
||||
fixed_t topheight, bottomheight;
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_EXISTS) || !(rover->flags & FF_RENDERALL) || (rover->master->frontsector->flags & SF_NOCLIPCAMERA))
|
||||
if (!(rover->flags & FF_BLOCKOTHERS) || !(rover->flags & FF_EXISTS) || !(rover->flags & FF_RENDERALL) || UNLIKELY(GETSECSPECIAL(rover->master->frontsector->special, 4) == 12))
|
||||
continue;
|
||||
|
||||
topheight = P_CameraGetFOFTopZ(thiscam, newsubsec->sector, rover, midx, midy, NULL);
|
||||
@@ -3626,7 +3626,7 @@ static boolean P_CheckNoclipCameraPosition(player_t *player, camera_t *thiscam,
|
||||
// We're inside it! Yess...
|
||||
polysec = po->lines[0]->backsector;
|
||||
|
||||
if (polysec->flags & SF_NOCLIPCAMERA)
|
||||
if (UNLIKELY(GETSECSPECIAL(polysec->special, 4) == 12))
|
||||
{ // Camera noclip polyobj.
|
||||
plink = (polymaplink_t *)(plink->link.next);
|
||||
continue;
|
||||
@@ -3682,8 +3682,7 @@ static boolean P_CheckNoclipCameraPosition(player_t *player, camera_t *thiscam,
|
||||
for (rover = newsubsec->sector->ffloors; rover; rover = rover->next)
|
||||
{
|
||||
fixed_t topheight, bottomheight;
|
||||
|
||||
if ((rover->flags & FF_BLOCKOTHERS) && (rover->flags & FF_RENDERALL) && (rover->flags & FF_EXISTS) && (rover->master->frontsector->flags & SF_NOCLIPCAMERA))
|
||||
if (UNLIKELY((rover->flags & FF_BLOCKOTHERS) && (rover->flags & FF_RENDERALL) && (rover->flags & FF_EXISTS) && GETSECSPECIAL(rover->master->frontsector->special, 4) == 12))
|
||||
{
|
||||
topheight = P_CameraGetFOFTopZ(thiscam, newsubsec->sector, rover, midx, midy, NULL);
|
||||
bottomheight = P_CameraGetFOFBottomZ(thiscam, newsubsec->sector, rover, midx, midy, NULL);
|
||||
@@ -4263,7 +4262,7 @@ boolean P_SpectatorJoinGame(player_t *player)
|
||||
|
||||
static boolean P_CameraCheckHeatFirstperson(player_t *player, sector_t *sector, fixed_t pviewheight)
|
||||
{
|
||||
if (sector->flags & SF_HEATWAVE)
|
||||
if (P_FindSpecialLineFromTag(13, sector->tag, -1) != -1)
|
||||
return true;
|
||||
|
||||
if (sector->ffloors)
|
||||
@@ -4281,7 +4280,7 @@ static boolean P_CameraCheckHeatFirstperson(player_t *player, sector_t *sector,
|
||||
if (pviewheight <= P_GetFFloorBottomZAt(rover, player->mo->x, player->mo->y))
|
||||
continue;
|
||||
|
||||
if (rover->master->frontsector->flags & SF_HEATWAVE)
|
||||
if (P_FindSpecialLineFromTag(13, rover->master->frontsector->tag, -1) != -1)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -48,7 +48,8 @@ boolean g_walloffscreen = false;
|
||||
|
||||
boolean R_NoEncore(sector_t *sector, boolean ceiling)
|
||||
{
|
||||
const boolean invertEncore = (sector->flags & SF_INVERTENCORE);
|
||||
const INT32 invspecial = GETSECSPECIAL(sector->special, 2);
|
||||
boolean invertencore = (invspecial == 12 || invspecial == 15); // keeping this incase its used
|
||||
|
||||
#if 0 // perfect implementation
|
||||
const INT32 sprnspecial = GETSECSPECIAL(sector->special, 3);
|
||||
@@ -58,10 +59,10 @@ boolean R_NoEncore(sector_t *sector, boolean ceiling)
|
||||
#endif
|
||||
&& GETSECSPECIAL(sector->special, 4) != 6) // sneaker panel
|
||||
{
|
||||
return invertEncore;
|
||||
return invertencore;
|
||||
}
|
||||
|
||||
if (invertEncore)
|
||||
if (invertencore)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
+5
-13
@@ -307,19 +307,10 @@ typedef struct pslope_s
|
||||
|
||||
typedef enum
|
||||
{
|
||||
// flipspecial - planes with effect
|
||||
SF_FLIPSPECIAL_FLOOR = 1,
|
||||
SF_FLIPSPECIAL_CEILING = 1<<1,
|
||||
SF_FLIPSPECIAL_BOTH = (SF_FLIPSPECIAL_FLOOR|SF_FLIPSPECIAL_CEILING),
|
||||
// triggerspecial - conditions under which plane touch causes effect
|
||||
SF_TRIGGERSPECIAL_TOUCH = 1<<2,
|
||||
|
||||
SF_GRAVITYFLIP = 1<<3,
|
||||
SF_HEATWAVE = 1<<4,
|
||||
SF_NOCLIPCAMERA = 1<<5,
|
||||
|
||||
// invert encore color remap status
|
||||
SF_INVERTENCORE = 1<<6,
|
||||
SF_FLIPSPECIAL_FLOOR = 1,
|
||||
SF_FLIPSPECIAL_CEILING = 2,
|
||||
SF_FLIPSPECIAL_BOTH = 3,
|
||||
SF_TRIGGERSPECIAL_TOUCH = 4,
|
||||
} sectorflags_t;
|
||||
|
||||
//
|
||||
@@ -400,6 +391,7 @@ typedef struct sector_s
|
||||
|
||||
// This points to the master's floorheight, so it can be changed in realtime!
|
||||
fixed_t *gravity; // per-sector gravity
|
||||
boolean verticalflip; // If gravity < 0, then allow flipped physics
|
||||
sectorflags_t flags;
|
||||
|
||||
// Sprite culling feature
|
||||
|
||||
+1
-1
@@ -410,7 +410,7 @@ static void ST_drawDebugInfo(void)
|
||||
}
|
||||
|
||||
if (cv_debug & DBG_MEMORY)
|
||||
V_DrawRightAlignedString(320, height, V_MONOSPACE, va("Heap used: %7sKB", sizeu1(Z_TotalUsage()>>10)));
|
||||
V_DrawRightAlignedString(320, height, V_MONOSPACE, va("Heap used: %7sKB", sizeu1(Z_TagsUsage(0, INT32_MAX)>>10)));
|
||||
}
|
||||
|
||||
static void ST_drawLevelTitle(void)
|
||||
|
||||
+7
-8
@@ -396,11 +396,6 @@ FUNCINLINE static ATTRINLINE UINT32 W_HashLumpName(const char *name)
|
||||
return FNV1a_HashLowercaseString(name);
|
||||
}
|
||||
|
||||
FUNCINLINE static ATTRINLINE UINT32 W_HashLumpNameLen(const char *name, size_t len)
|
||||
{
|
||||
return FNV1a_QuickCaseHash(name, len);
|
||||
}
|
||||
|
||||
/** Detect a file type.
|
||||
* \todo Actually detect the wad/pkzip headers and whatnot, instead of just checking the extensions.
|
||||
*/
|
||||
@@ -1100,14 +1095,18 @@ const char *W_CheckNameForNum(lumpnum_t lumpnum)
|
||||
UINT16 W_CheckNumForNamePwad(const char *name, UINT16 wad, UINT16 startlump)
|
||||
{
|
||||
UINT16 i;
|
||||
static char uname[8 + 1];
|
||||
UINT32 hash;
|
||||
size_t namelen;
|
||||
|
||||
if (!TestValidLump(wad, 0))
|
||||
return INT16_MAX;
|
||||
|
||||
namelen = strnlen(name, 8); // :chaosleep:
|
||||
hash = W_HashLumpNameLen(name, namelen);
|
||||
memset(uname, 0, sizeof(uname));
|
||||
strncpy(uname, name, sizeof(uname)-1);
|
||||
strupr(uname);
|
||||
namelen = strlen(uname);
|
||||
hash = W_HashLumpName(uname);
|
||||
|
||||
//
|
||||
// scan forward
|
||||
@@ -1122,7 +1121,7 @@ UINT16 W_CheckNumForNamePwad(const char *name, UINT16 wad, UINT16 startlump)
|
||||
{
|
||||
if (lump_p->namelength == namelen
|
||||
&& lump_p->hash.name == hash
|
||||
&& !strncasecmp(lump_p->name, name, namelen))
|
||||
&& !memcmp(lump_p->name, uname, sizeof(uname) - 1))
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
+60
-112
@@ -75,7 +75,7 @@ typedef struct memblock_s
|
||||
#define MEMBLOCK(x) (memblock_t *)((uintptr_t)(x) - ALIGNPAD - sizeof(memblock_t))
|
||||
|
||||
// both the head and tail of the zone memory block list
|
||||
static memblock_t headlist[NUM_PURGETAGS];
|
||||
static memblock_t head;
|
||||
|
||||
static constexpr size_t kLevelLargePoolBlockSize = sizeof(mobj_t);
|
||||
static constexpr size_t kLevelMedPoolBlockSize = sizeof(precipmobj_t);
|
||||
@@ -107,14 +107,10 @@ static void Command_Memdump_f(void);
|
||||
void Z_Init(void)
|
||||
{
|
||||
size_t total, memfree;
|
||||
size_t i;
|
||||
|
||||
memset(&headlist, 0x00, sizeof(headlist));
|
||||
memset(&head, 0x00, sizeof(head));
|
||||
|
||||
for (i = 0; i < NUM_PURGETAGS; i++)
|
||||
{
|
||||
headlist[i].next = headlist[i].prev = &headlist[i];
|
||||
}
|
||||
head.next = head.prev = &head;
|
||||
|
||||
memfree = I_GetFreeMem(&total)>>20;
|
||||
|
||||
@@ -208,7 +204,7 @@ static void *xm(size_t size)
|
||||
if (p == NULL)
|
||||
{
|
||||
// Oh crumbs: we're out of heap. Try purging the cache and reallocating.
|
||||
Z_FreeTags(PU_PURGELEVEL, NUM_PURGETAGS-1);
|
||||
Z_FreeTags(PU_PURGELEVEL, INT32_MAX);
|
||||
p = malloc(padedsize);
|
||||
|
||||
if (p == NULL)
|
||||
@@ -249,9 +245,9 @@ void *Z_Malloc(size_t size, INT32 tag, void *user)
|
||||
ptr = MEMORY(block);
|
||||
I_Assert((intptr_t)ptr % alignof (max_align_t) == 0);
|
||||
|
||||
block->next = headlist[tag].next;
|
||||
block->prev = &headlist[tag];
|
||||
headlist[tag].next = block;
|
||||
block->next = head.next;
|
||||
block->prev = &head;
|
||||
head.next = block;
|
||||
block->next->prev = block;
|
||||
|
||||
block->tag = tag;
|
||||
@@ -415,7 +411,6 @@ void Z_FreeTags(INT32 lowtag, INT32 hightag)
|
||||
#endif
|
||||
{
|
||||
memblock_t *block, *next;
|
||||
INT32 i;
|
||||
|
||||
#ifdef ZDEBUG
|
||||
Z_CheckHeap2(file, line);
|
||||
@@ -432,13 +427,11 @@ void Z_FreeTags(INT32 lowtag, INT32 hightag)
|
||||
g_level_tiny_pool.release();
|
||||
}
|
||||
|
||||
for (i = lowtag; i <= hightag; i++)
|
||||
for (block = head.next; block != &head; block = next)
|
||||
{
|
||||
for (block = headlist[i].next; block != &headlist[i]; block = next)
|
||||
{
|
||||
next = block->next; // get link before freeing
|
||||
next = block->next; // get link before freeing
|
||||
if (block->tag >= lowtag && block->tag <= hightag)
|
||||
Z_Free(MEMORY(block));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,20 +444,18 @@ void Z_FreeTags(INT32 lowtag, INT32 hightag)
|
||||
void Z_IterateTags(INT32 lowtag, INT32 hightag, boolean (*iterfunc)(void *))
|
||||
{
|
||||
memblock_t *block, *next;
|
||||
INT32 i;
|
||||
|
||||
if (!iterfunc)
|
||||
I_Error("Z_IterateTags: no iterator function was given");
|
||||
|
||||
for (i = lowtag; i <= hightag; i++)
|
||||
for (block = head.next; block != &head; block = next)
|
||||
{
|
||||
for (block = headlist[i].next; block != &headlist[i]; block = next)
|
||||
{
|
||||
next = block->next; // get link before possibly freeing
|
||||
next = block->next; // get link before possibly freeing
|
||||
|
||||
if (block->tag >= lowtag && block->tag <= hightag)
|
||||
{
|
||||
void *mem = MEMORY(block);
|
||||
boolean free = iterfunc(mem);
|
||||
|
||||
if (free)
|
||||
Z_Free(mem);
|
||||
}
|
||||
@@ -495,7 +486,7 @@ void Z_CheckMemCleanup(void)
|
||||
if (nextcleanup-- == 0)
|
||||
{
|
||||
nextcleanup = CLEANUPCOUNT;
|
||||
Z_FreeTags(PU_PURGELEVEL, NUM_PURGETAGS-1);
|
||||
Z_FreeTags(PU_PURGELEVEL, INT32_MAX);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -513,7 +504,6 @@ void Z_CheckHeap(INT32 tag)
|
||||
{
|
||||
memblock_t *block;
|
||||
UINT32 blocknumon = 0;
|
||||
size_t j;
|
||||
void *given;
|
||||
|
||||
#ifndef ZDEBUG
|
||||
@@ -530,47 +520,40 @@ void Z_CheckHeap(INT32 tag)
|
||||
blocknumon, block->ownerfile, block->ownerline, msg)
|
||||
#endif
|
||||
|
||||
for (j = 0; j < NUM_PURGETAGS; j++)
|
||||
for (block = head.next; block != &head; block = block->next)
|
||||
{
|
||||
for (block = headlist[j].next; block != &headlist[j]; block = block->next)
|
||||
{
|
||||
blocknumon++;
|
||||
given = MEMORY(block);
|
||||
blocknumon++;
|
||||
given = MEMORY(block);
|
||||
#ifdef ZDEBUG2
|
||||
CONS_Debug(DBG_MEMORY, "block %u owned by %s:%d\n",
|
||||
blocknumon, block->ownerfile, block->ownerline);
|
||||
CONS_Debug(DBG_MEMORY, "block %u owned by %s:%d\n",
|
||||
blocknumon, block->ownerfile, block->ownerline);
|
||||
#endif
|
||||
#ifdef HAVE_VALGRIND
|
||||
if (RUNNING_ON_VALGRIND && !VALGRIND_MEMPOOL_EXISTS(block))
|
||||
{
|
||||
HeapError(" should not exist");
|
||||
}
|
||||
#endif
|
||||
if (block->user != NULL && *(block->user) != given)
|
||||
{
|
||||
HeapError(" doesn't have a proper user");
|
||||
}
|
||||
|
||||
if (block->next->prev != block)
|
||||
{
|
||||
HeapError(" lacks proper backlink");
|
||||
}
|
||||
|
||||
if (block->prev->next != block)
|
||||
{
|
||||
HeapError(" lacks proper forward link");
|
||||
}
|
||||
#ifdef PARANOIA
|
||||
if (block->id != ZONEID)
|
||||
{
|
||||
HeapError(" has the wrong ID");
|
||||
}
|
||||
#endif
|
||||
if (block->tag != j)
|
||||
{
|
||||
HeapError(va(" block is contained in the wrong headlist (got: %d expected: %s)", block->tag, sizeu1(j)));
|
||||
}
|
||||
if (RUNNING_ON_VALGRIND && !VALGRIND_MEMPOOL_EXISTS(block))
|
||||
{
|
||||
HeapError(" should not exist");
|
||||
}
|
||||
#endif
|
||||
if (block->user != NULL && *(block->user) != given)
|
||||
{
|
||||
HeapError(" doesn't have a proper user");
|
||||
}
|
||||
|
||||
if (block->next->prev != block)
|
||||
{
|
||||
HeapError(" lacks proper backlink");
|
||||
}
|
||||
|
||||
if (block->prev->next != block)
|
||||
{
|
||||
HeapError(" lacks proper forward link");
|
||||
}
|
||||
#ifdef PARANOIA
|
||||
if (block->id != ZONEID)
|
||||
{
|
||||
HeapError(" has the wrong ID");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,14 +590,6 @@ void Z_ChangeTag(void *ptr, INT32 tag)
|
||||
I_Error("Internal memory management error: "
|
||||
"tried to make block purgable but it has no owner");
|
||||
|
||||
block->prev->next = block->next;
|
||||
block->next->prev = block->prev;
|
||||
|
||||
block->next = headlist[tag].next;
|
||||
block->prev = &headlist[tag];
|
||||
headlist[tag].next = block;
|
||||
block->next->prev = block;
|
||||
|
||||
block->tag = tag;
|
||||
}
|
||||
|
||||
@@ -665,21 +640,18 @@ void Z_SetUser(void *ptr, void **newuser)
|
||||
size_t Z_TagsUsage(INT32 lowtag, INT32 hightag)
|
||||
{
|
||||
size_t cnt = 0;
|
||||
memblock_t *head; // why was this called rover before?????
|
||||
INT32 i;
|
||||
memblock_t *rover;
|
||||
|
||||
for (i = lowtag; i <= hightag; i++)
|
||||
for (rover = head.next; rover != &head; rover = rover->next)
|
||||
{
|
||||
for (head = headlist[i].next; head != &headlist[i]; head = head->next)
|
||||
{
|
||||
cnt += head->size + sizeof *head;
|
||||
}
|
||||
if (rover->tag < lowtag || rover->tag > hightag)
|
||||
continue;
|
||||
cnt += rover->size + sizeof(memblock_t);
|
||||
}
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
|
||||
// -----------------------
|
||||
// Miscellaneous functions
|
||||
// -----------------------
|
||||
@@ -693,8 +665,8 @@ static void Command_Memfree_f(void)
|
||||
|
||||
Z_CheckHeap(-1);
|
||||
CONS_Printf("\x82%s", M_GetText("Memory Info\n"));
|
||||
CONS_Printf(M_GetText("Total heap used : %7s KB\n"), sizeu1((Z_TotalUsage()>>10) + LUA_MemoryUsage()));
|
||||
CONS_Printf(M_GetText("Lua : %7s KB\n"), sizeu1(LUA_MemoryUsage())); // No longer uses z_zone memory but for consistency keep it here
|
||||
CONS_Printf(M_GetText("Total heap used : %7s KB\n"), sizeu1(Z_TotalUsage()>>10));
|
||||
CONS_Printf(M_GetText("Lua : %7s KB\n"), sizeu1(Z_TagUsage(PU_LUA)>>10));
|
||||
CONS_Printf(M_GetText("Static : %7s KB\n"), sizeu1(Z_TagUsage(PU_STATIC)>>10));
|
||||
CONS_Printf(M_GetText("Static (sound) : %7s KB\n"), sizeu1(Z_TagUsage(PU_SOUND)>>10));
|
||||
CONS_Printf(M_GetText("Static (music) : %7s KB\n"), sizeu1(Z_TagUsage(PU_MUSIC)>>10));
|
||||
@@ -708,7 +680,7 @@ static void Command_Memfree_f(void)
|
||||
CONS_Printf(M_GetText("Level (pooled) : %7s KB\n"), sizeu1(Z_LevelPoolUsage()>>10));
|
||||
CONS_Printf(M_GetText("Special thinker : %7s KB\n"), sizeu1(Z_TagUsage(PU_LEVSPEC)>>10));
|
||||
CONS_Printf(M_GetText("All purgable : %7s KB\n"),
|
||||
sizeu1(Z_TagsUsage(PU_PURGELEVEL, NUM_PURGETAGS-1)>>10));
|
||||
sizeu1(Z_TagsUsage(PU_PURGELEVEL, INT32_MAX)>>10));
|
||||
|
||||
#ifdef HWRENDER
|
||||
if (rendermode == render_opengl)
|
||||
@@ -737,24 +709,21 @@ static void Command_Memfree_f(void)
|
||||
static void Command_Memdump_f(void)
|
||||
{
|
||||
memblock_t *block;
|
||||
INT32 mintag = 0, maxtag = NUM_PURGETAGS-1;
|
||||
INT32 check;
|
||||
INT32 mintag = 0, maxtag = INT32_MAX;
|
||||
INT32 i;
|
||||
|
||||
if ((check = COM_CheckParm("-min")))
|
||||
mintag = atoi(COM_Argv(check + 1));
|
||||
if ((i = COM_CheckParm("-min")))
|
||||
mintag = atoi(COM_Argv(i + 1));
|
||||
|
||||
if ((check = COM_CheckParm("-max")))
|
||||
maxtag = atoi(COM_Argv(check + 1));
|
||||
if ((i = COM_CheckParm("-max")))
|
||||
maxtag = atoi(COM_Argv(i + 1));
|
||||
|
||||
for (i = mintag; i <= maxtag; i++)
|
||||
{
|
||||
for (block = headlist[i].next; block != &headlist[i]; block = block->next)
|
||||
for (block = head.next; block != &head; block = block->next)
|
||||
if (block->tag >= mintag && block->tag <= maxtag)
|
||||
{
|
||||
const char *filename = strrchr(block->ownerfile, PATHSEP[0]);
|
||||
CONS_Printf("[%3d] %s (%s) bytes @ %s:%d tag: %d (%d)\n", block->tag, sizeu1(block->size + sizeof(memblock_t)), sizeu2(block->size), filename ? filename + 1 : block->ownerfile, block->ownerline, block->tag, i);
|
||||
CONS_Printf("[%3d] %s (%s) bytes @ %s:%d\n", block->tag, sizeu1(block->size + sizeof(memblock_t)), sizeu2(block->size), filename ? filename + 1 : block->ownerfile, block->ownerline);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -804,27 +773,6 @@ void* Z_LevelPoolMalloc(size_t size)
|
||||
return p;
|
||||
}
|
||||
|
||||
boolean Z_IsMobjValid2(void *p, const char *file, INT32 line)
|
||||
{
|
||||
//(void)file;
|
||||
//(void)line;
|
||||
|
||||
// mobj was removed
|
||||
// no need to worry here
|
||||
if (p == NULL)
|
||||
return false;
|
||||
|
||||
// mobjs reside in the large pool
|
||||
if (!g_level_large_pool.ptrcheck(p))
|
||||
{
|
||||
//I_Error("invalid mobj! at %s:%d", file, line);
|
||||
CONS_Alert(CONS_ERROR, "invalid mobj! at %s:%d", file, line);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void* Z_LevelPoolCalloc(size_t size)
|
||||
{
|
||||
void* p = Z_LevelPoolMalloc(size);
|
||||
|
||||
+25
-30
@@ -42,42 +42,39 @@ extern "C" {
|
||||
enum
|
||||
{
|
||||
// Tags < PU_LEVEL are not purged until freed explicitly.
|
||||
PU_STATIC = 0, // static entire execution time
|
||||
PU_LUA, // static entire execution time -- used by lua so it doesn't get caught in loops forever
|
||||
PU_PERFSTATS, // static between changes to ps_samplesize cvar
|
||||
PU_STATIC = 1, // static entire execution time
|
||||
PU_LUA = 2, // static entire execution time -- used by lua so it doesn't get caught in loops forever
|
||||
PU_PERFSTATS = 3, // static between changes to ps_samplesize cvar
|
||||
|
||||
PU_SOUND, // static while playing
|
||||
PU_MUSIC, // static while playing
|
||||
PU_SOUND = 11, // static while playing
|
||||
PU_MUSIC = 12, // static while playing
|
||||
|
||||
PU_PATCH, // static entire execution time
|
||||
PU_PATCH_LOWPRIORITY, // lower priority patch, static until level exited
|
||||
PU_PATCH_ROTATED, // rotated patch, static until level exited or WAD added
|
||||
PU_PATCH_DATA, // patch data, lifetime depends on the patch that owns it
|
||||
PU_SPRITE, // sprite patch, static until WAD added
|
||||
PU_HUDGFX, // HUD patch, static until WAD added
|
||||
PU_PATCH = 14, // static entire execution time
|
||||
PU_PATCH_LOWPRIORITY = 15, // lower priority patch, static until level exited
|
||||
PU_PATCH_ROTATED = 16, // rotated patch, static entire execution time
|
||||
PU_PATCH_DATA = 17, // patch data, lifetime depends on the patch that owns it
|
||||
PU_SPRITE = 18, // sprite patch, static until WAD added
|
||||
PU_HUDGFX = 19, // HUD patch, static until WAD added
|
||||
|
||||
PU_HWRPATCHINFO, // Hardware GLPatch_t struct for OpenGL texture cache
|
||||
PU_HWRPATCHCOLMIPMAP, // Hardware GLMipmap_t struct colormap variation of patch
|
||||
PU_HWRMODELTEXTURE, // Hardware model texture
|
||||
PU_HWRPATCHINFO = 21, // Hardware GLPatch_t struct for OpenGL texture cache
|
||||
PU_HWRPATCHCOLMIPMAP = 22, // Hardware GLMipmap_t struct colormap variation of patch
|
||||
PU_HWRMODELTEXTURE = 23, // Hardware model texture
|
||||
|
||||
PU_HWRCACHE, // static until unlocked
|
||||
PU_CACHE, // static until unlocked
|
||||
PU_HWRCACHE = 48, // static until unlocked
|
||||
PU_CACHE = 49, // static until unlocked
|
||||
|
||||
// Tags s.t. PU_LEVEL <= tag < PU_PURGELEVEL are purged at level start
|
||||
PU_LEVEL, // static until level exited
|
||||
PU_LEVSPEC, // a special thinker in a level
|
||||
PU_HWRPLANE, // if ZPLANALLOC is enabled in hw_bsp.c, this is used to alloc polygons for OpenGL
|
||||
PU_LEVEL = 50, // static until level exited
|
||||
PU_LEVSPEC = 51, // a special thinker in a level
|
||||
PU_HWRPLANE = 52, // if ZPLANALLOC is enabled in hw_bsp.c, this is used to alloc polygons for OpenGL
|
||||
|
||||
// Tags >= PU_PURGELEVEL are purgable whenever needed
|
||||
PU_PURGELEVEL, // Note: this is never actually used as a tag
|
||||
PU_CACHE_UNLOCKED, // Note: unused
|
||||
PU_HWRCACHE_UNLOCKED, // 'unlocked' PU_HWRCACHE memory:
|
||||
PU_PURGELEVEL = 100, // Note: this is never actually used as a tag
|
||||
PU_CACHE_UNLOCKED = 101, // Note: unused
|
||||
PU_HWRCACHE_UNLOCKED = 102, // 'unlocked' PU_HWRCACHE memory:
|
||||
// 'second-level' cache for graphics
|
||||
|
||||
// stored in hardware format and downloaded as needed
|
||||
PU_HWRMODELTEXTURE_UNLOCKED, // 'unlocked' PU_HWRMODELTEXTURE memory
|
||||
|
||||
NUM_PURGETAGS
|
||||
// stored in hardware format and downloaded as needed
|
||||
PU_HWRMODELTEXTURE_UNLOCKED = 103, // 'unlocked' PU_HWRMODELTEXTURE memory
|
||||
};
|
||||
|
||||
//
|
||||
@@ -160,7 +157,7 @@ void Z_SetUser(void *ptr, void **newuser);
|
||||
//
|
||||
#define Z_TagUsage(tagnum) Z_TagsUsage(tagnum, tagnum)
|
||||
size_t Z_TagsUsage(INT32 lowtag, INT32 hightag);
|
||||
#define Z_TotalUsage() Z_TagsUsage(0, NUM_PURGETAGS-1)
|
||||
#define Z_TotalUsage() Z_TagsUsage(0, INT32_MAX)
|
||||
|
||||
//
|
||||
// Miscellaneous functions
|
||||
@@ -173,8 +170,6 @@ char *Z_StrDup(const char *in);
|
||||
size_t Z_LevelPoolUsage(void);
|
||||
void *Z_LevelPoolMalloc(size_t size);
|
||||
void *Z_LevelPoolCalloc(size_t size);
|
||||
#define Z_IsMobjValid(p) Z_IsMobjValid2(p, __FILE__, __LINE__)
|
||||
boolean Z_IsMobjValid2(void *p, const char *file, INT32 line);
|
||||
void Z_LevelPoolFree(void *p, size_t size);
|
||||
|
||||
// for use with CLEANUP macro
|
||||
|
||||
Reference in new issue
Block a user