mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-14 08:30:58 +00:00
Do not consider system gamearrays for updating from demos.
This generally fixes demo playback. Before, tilesizx[]/tilesizy[] were written into twice as many bytes as needed. Now, don't do that at all. git-svn-id: https://svn.eduke32.com/eduke32@4191 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9a397a01c1
commit
a5f0610b38
3 changed files with 15 additions and 3 deletions
|
@ -62,7 +62,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
# define BYTEVERSION_JF 288
|
# define BYTEVERSION_JF 288
|
||||||
#else
|
#else
|
||||||
// Non-Lua build
|
// Non-Lua build
|
||||||
# define BYTEVERSION_JF 288
|
# define BYTEVERSION_JF 291
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BYTEVERSION_13 27
|
#define BYTEVERSION_13 27
|
||||||
|
|
|
@ -1447,6 +1447,7 @@ static void Gv_AddSystemVars(void)
|
||||||
Gv_NewVar("rendmode", 0, GAMEVAR_READONLY | GAMEVAR_SYSTEM);
|
Gv_NewVar("rendmode", 0, GAMEVAR_READONLY | GAMEVAR_SYSTEM);
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
// SYSTEM_GAMEARRAY
|
||||||
Gv_NewArray("tilesizx", (void *)tilesizx, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
|
Gv_NewArray("tilesizx", (void *)tilesizx, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
|
||||||
Gv_NewArray("tilesizy", (void *)tilesizy, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
|
Gv_NewArray("tilesizy", (void *)tilesizy, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1076,13 +1076,16 @@ static uint8_t *svdiff;
|
||||||
static void sv_makevarspec()
|
static void sv_makevarspec()
|
||||||
{
|
{
|
||||||
static char *magic = "blK:vars";
|
static char *magic = "blK:vars";
|
||||||
int32_t i, j, numsavedvars=0, per;
|
int32_t i, j, numsavedvars=0, numsavedarrays=0, per;
|
||||||
|
|
||||||
for (i=0; i<g_gameVarCount; i++)
|
for (i=0; i<g_gameVarCount; i++)
|
||||||
numsavedvars += (aGameVars[i].dwFlags&SV_SKIPMASK) ? 0 : 1;
|
numsavedvars += (aGameVars[i].dwFlags&SV_SKIPMASK) ? 0 : 1;
|
||||||
|
|
||||||
|
for (i=0; i<g_gameArrayCount; i++)
|
||||||
|
numsavedarrays += !(aGameArrays[i].dwFlags & GAMEARRAY_READONLY); // SYSTEM_GAMEARRAY
|
||||||
|
|
||||||
Bfree(svgm_vars);
|
Bfree(svgm_vars);
|
||||||
svgm_vars = (dataspec_t *)Bmalloc((numsavedvars+g_gameArrayCount+2)*sizeof(dataspec_t));
|
svgm_vars = (dataspec_t *)Bmalloc((numsavedvars+numsavedarrays+2)*sizeof(dataspec_t));
|
||||||
|
|
||||||
if (svgm_vars == NULL)
|
if (svgm_vars == NULL)
|
||||||
G_GameExit("OUT OF MEMORY in sv_makevarspec()\n");
|
G_GameExit("OUT OF MEMORY in sv_makevarspec()\n");
|
||||||
|
@ -1108,6 +1111,12 @@ static void sv_makevarspec()
|
||||||
|
|
||||||
for (i=0; i<g_gameArrayCount; i++)
|
for (i=0; i<g_gameArrayCount; i++)
|
||||||
{
|
{
|
||||||
|
// We must not update read-only SYSTEM_GAMEARRAY gamearrays: besides
|
||||||
|
// being questionable by itself, sizeof(...) may be e.g. 4 whereas the
|
||||||
|
// actual element type is int16_t (such as tilesizx[]/tilesizy[]).
|
||||||
|
if (aGameArrays[i].dwFlags & GAMEARRAY_READONLY)
|
||||||
|
continue;
|
||||||
|
|
||||||
svgm_vars[j].flags = 0;
|
svgm_vars[j].flags = 0;
|
||||||
svgm_vars[j].ptr = aGameArrays[i].plValues;
|
svgm_vars[j].ptr = aGameArrays[i].plValues;
|
||||||
svgm_vars[j].size = sizeof(aGameArrays[0].plValues[0]);
|
svgm_vars[j].size = sizeof(aGameArrays[0].plValues[0]);
|
||||||
|
@ -1116,6 +1125,8 @@ static void sv_makevarspec()
|
||||||
}
|
}
|
||||||
|
|
||||||
svgm_vars[j].flags = DS_END;
|
svgm_vars[j].flags = DS_END;
|
||||||
|
svgm_vars[j].ptr = NULL;
|
||||||
|
svgm_vars[j].size = svgm_vars[j].cnt = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue