Shrink the tilesiz vector to use int16_t members as the original arrays were.

git-svn-id: https://svn.eduke32.com/eduke32@6263 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2017-06-24 09:21:13 +00:00
parent 7afc8202d2
commit 5ef942f4ec
8 changed files with 42 additions and 33 deletions

View file

@ -732,7 +732,7 @@ EXTERN int16_t headspritesect[MAXSECTORS+1], headspritestat[MAXSTATUS+1];
EXTERN int16_t prevspritesect[MAXSPRITES], prevspritestat[MAXSPRITES];
EXTERN int16_t nextspritesect[MAXSPRITES], nextspritestat[MAXSPRITES];
EXTERN vec2_t tilesiz[MAXTILES];
EXTERN vec2s_t tilesiz[MAXTILES];
EXTERN char picsiz[MAXTILES];
EXTERN char walock[MAXTILES];

View file

@ -707,6 +707,10 @@ typedef struct {
int32_t x, y;
} vec2_t;
typedef struct {
int16_t x, y;
} vec2s_t;
typedef struct {
uint32_t x, y;
} vec2u_t;

View file

@ -200,7 +200,7 @@ static int32_t check_tile(const char *defcmd, int32_t tile, const scriptfile *sc
static void tile_from_truecolpic(int32_t tile, const palette_t *picptr, int32_t alphacut)
{
const vec2_t siz = tilesiz[tile];
vec2s_t const siz = tilesiz[tile];
int32_t i, j, tsiz = siz.x * siz.y;
maybe_grow_buffer(&faketilebuffer, &faketilebuffersiz, tsiz);
@ -223,7 +223,7 @@ static void tile_from_truecolpic(int32_t tile, const palette_t *picptr, int32_t
static int32_t Defs_LoadTileIntoBuffer(int32_t const tile)
{
vec2_t const siz = tilesiz[tile];
vec2s_t const siz = tilesiz[tile];
int32_t const tsiz = siz.x * siz.y;
if (EDUKE32_PREDICT_FALSE(tilesiz[tile].x <= 0 || tilesiz[tile].y <= 0))

View file

@ -1819,7 +1819,7 @@ void printbunches(void)
#define WSHELPER_DECL inline //ATTRIBUTE((always_inline))
static WSHELPER_DECL void tweak_tsizes(vec2_t *tsiz)
static WSHELPER_DECL void tweak_tsizes(vec2s_t *tsiz)
{
if (pow2long[picsiz[globalpicnum]&15] == tsiz->x)
tsiz->x--;
@ -1832,7 +1832,7 @@ static WSHELPER_DECL void tweak_tsizes(vec2_t *tsiz)
tsiz->y = -tsiz->y;
}
static WSHELPER_DECL void calc_bufplc(intptr_t *bufplc, int32_t lw, vec2_t tsiz)
static WSHELPER_DECL void calc_bufplc(intptr_t *bufplc, int32_t lw, vec2s_t tsiz)
{
// CAUTION: lw can be negative!
int32_t i = lw + globalxpanning;
@ -1905,7 +1905,7 @@ static void maskwallscan(int32_t x1, int32_t x2, int32_t saturatevplc)
if ((uwall[x1] > ydimen) && (uwall[x2] > ydimen)) return;
if ((dwall[x1] < 0) && (dwall[x2] < 0)) return;
vec2_t tsiz = tilesiz[globalpicnum];
vec2s_t tsiz = tilesiz[globalpicnum];
if ((tsiz.x <= 0) || (tsiz.y <= 0)) return;
setgotpic(globalpicnum);
@ -2908,7 +2908,7 @@ static void wallscan(int32_t x1, int32_t x2,
int32_t x;
intptr_t fpalookup;
int32_t y1ve[4], y2ve[4];
vec2_t tsiz;
vec2s_t tsiz;
#ifdef MULTI_COLUMN_VLINE
char bad;
int32_t u4, d4, z;
@ -3059,7 +3059,7 @@ static void transmaskvline(int32_t x)
intptr_t palookupoffs = FP_OFF(palookup[globalpal]) + getpalookupsh(mulscale16(swall[x],globvis));
vec2_t ntsiz = { -tilesiz[globalpicnum].x, -tilesiz[globalpicnum].y };
vec2s_t const ntsiz = { (int16_t)-tilesiz[globalpicnum].x, (int16_t)-tilesiz[globalpicnum].y };
intptr_t bufplc;
calc_bufplc(&bufplc, lwall[x], ntsiz);
uint32_t vplc;
@ -3101,7 +3101,7 @@ static void transmaskvline2(int32_t x)
setuptvlineasm2(globalshiftval,palookupoffse[0],palookupoffse[1]);
vec2_t const ntsiz = { -tilesiz[globalpicnum].x, -tilesiz[globalpicnum].y };
vec2s_t const ntsiz = { (int16_t)-tilesiz[globalpicnum].x, (int16_t)-tilesiz[globalpicnum].y };
calc_bufplc(&bufplce[0], lwall[x], ntsiz);
calc_bufplc(&bufplce[1], lwall[x2], ntsiz);
@ -4835,7 +4835,7 @@ draw_as_face_sprite:
int const isiz = divscale19(xdimenscale,yp);
int const xv = mulscale16(((int32_t)tspr->xrepeat)<<16,xyaspect);
vec2_t const span = tilesiz[tilenum];
vec2s_t const span = tilesiz[tilenum];
vec2_t const siz = { mulscale30(isiz, xv * span.x), mulscale14(isiz, tspr->yrepeat * span.y) };
if (EDUKE32_PREDICT_FALSE((span.x>>11) >= siz.x || span.y >= (siz.y>>1)))

View file

@ -928,9 +928,8 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
if (!nomiptransfix)
{
vec2_t const tsizzle = { (tsiz.x + (1 << j)-1) >> j, (tsiz.y + (1 << j)-1) >> j };
vec2_t const mnizzle = { siz3.x, siz3.y };
fixtransparency(pic, tsizzle, mnizzle, dameth);
fixtransparency(pic, tsizzle, siz3, dameth);
}
if (j >= miplevel)
@ -998,7 +997,8 @@ static void polymost_setuptexture(const int32_t dameth, int filter)
void gloadtile_art(int32_t dapic, int32_t dapal, int32_t tintpalnum, int32_t dashade, int32_t dameth, pthtyp *pth, int32_t doalloc)
{
static int32_t fullbrightloadingpass = 0;
vec2_t siz = { 0, 0 }, tsiz = tilesiz[dapic];
vec2s_t const & tsizart = tilesiz[dapic];
vec2_t siz = { 0, 0 }, tsiz = { tsizart.x, tsizart.y };
size_t const picdim = tsiz.x*tsiz.y;
char hasalpha = 0, hasfullbright = 0;
char npoty = 0;
@ -1653,7 +1653,8 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
//Load texture (globalpicnum)
setgotpic(globalpicnum);
vec2_t tsiz = tilesiz[globalpicnum];
vec2s_t const & tsizart = tilesiz[globalpicnum];
vec2_t tsiz = { tsizart.x, tsizart.y };
if (!waloff[globalpicnum])
{
@ -4390,7 +4391,8 @@ void polymost_drawsprite(int32_t snum)
pos.y -= (sintable[(tspr->ang) & 2047] >> 13);
}
vec2_t tsiz = tilesiz[globalpicnum], oldsiz = tsiz;
vec2s_t const oldsiz = tilesiz[globalpicnum];
vec2_t tsiz = { oldsiz.x, oldsiz.y };
if (usehightile && h_xsize[globalpicnum])
{
@ -4518,7 +4520,8 @@ void polymost_drawsprite(int32_t snum)
pxy[2].y = pxy[3].y = s0.y;
}
tilesiz[globalpicnum] = tsiz;
tilesiz[globalpicnum].x = tsiz.x;
tilesiz[globalpicnum].y = tsiz.y;
pow2xsplit = 0;
polymost_drawpoly(pxy, 4, method);
@ -4730,7 +4733,8 @@ void polymost_drawsprite(int32_t snum)
vec2f_t const pxy[4] = { { sx0, sc0 }, { sx1, sc1 }, { sx1, sf1 }, { sx0, sf0 } };
tilesiz[globalpicnum] = tsiz;
tilesiz[globalpicnum].x = tsiz.x;
tilesiz[globalpicnum].y = tsiz.y;
pow2xsplit = 0;
polymost_drawpoly(pxy, 4, method);
@ -4902,7 +4906,8 @@ void polymost_drawsprite(int32_t snum)
drawpoly_trepeat = 1;
}
tilesiz[globalpicnum] = tsiz;
tilesiz[globalpicnum].x = tsiz.x;
tilesiz[globalpicnum].y = tsiz.y;
pow2xsplit = 0;
polymost_drawpoly(pxy, npoints, method);
@ -4981,8 +4986,8 @@ void polymost_dorotatespritemodel(int32_t sx, int32_t sy, int32_t z, int16_t a,
if (dastat & RS_TOPLEFT)
{
vec2_t siz = tilesiz[picnum];
vec2_t off = { picanm[picnum].xofs + (siz.x >> 1), picanm[picnum].yofs + (siz.y >> 1) };
vec2s_t siz = tilesiz[picnum];
vec2s_t off = { (int16_t)((siz.x >> 1) + picanm[picnum].xofs), (int16_t)((siz.y >> 1) + picanm[picnum].yofs) };
d = (float)z * (1.0f / (65536.f * 16384.f));
cosang2 = cosang = (float)sintable[(a + 512) & 2047] * d;
@ -4995,8 +5000,9 @@ void polymost_dorotatespritemodel(int32_t sx, int32_t sy, int32_t z, int16_t a,
sinang2 *= d;
}
f.x += -(float)off.x * cosang2 + (float)off.y * sinang2;
f.y += -(float)off.x * sinang - (float)off.y * cosang;
vec2f_t const foff = { (float)off.x, (float)off.y };
f.x += -foff.x * cosang2 + foff.y * sinang2;
f.y += -foff.x * sinang - foff.y * cosang;
}
if (!(dastat & RS_AUTO))
@ -5253,8 +5259,8 @@ void polymost_dorotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16
drawpoly_alpha = daalpha * (1.0f / 255.0f);
drawpoly_blend = dablend;
vec2_t const siz = tilesiz[globalpicnum];
vec2_t ofs = { 0, 0 };
vec2s_t const siz = tilesiz[globalpicnum];
vec2s_t ofs = { 0, 0 };
if (!(dastat & RS_TOPLEFT))
{
@ -5281,8 +5287,9 @@ void polymost_dorotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16
sinang2 *= d;
}
float const cx = (float)sx * (1.0f / 65536.f) - (float)ofs.x * cosang2 + (float)ofs.y * sinang2;
float const cy = (float)sy * (1.0f / 65536.f) - (float)ofs.x * sinang - (float)ofs.y * cosang;
vec2f_t const fofs = { (float)ofs.x, (float)ofs.y };
float const cx = (float)sx * (1.0f / 65536.f) - fofs.x * cosang2 + fofs.y * sinang2;
float const cy = (float)sy * (1.0f / 65536.f) - fofs.x * sinang - fofs.y * cosang;
vec2f_t pxy[8] = { { cx, cy },
{ cx + (float)siz.x * cosang2, cy + (float)siz.x * sinang },

View file

@ -20,7 +20,7 @@ static int32_t tilefileoffs[MAXTILES];
// necessary (have per-map ART files).
static uint8_t *g_bakTileFileNum;
static int32_t *g_bakTileFileOffs;
static vec2_t *g_bakTileSiz;
static vec2s_t *g_bakTileSiz;
static picanm_t *g_bakPicAnm;
// NOTE: picsiz[] is not backed up, but recalculated when necessary.

View file

@ -1526,8 +1526,8 @@ static void Gv_AddSystemVars(void)
# endif
// SYSTEM_GAMEARRAY
Gv_NewArray("tilesizx", (void *)&tilesiz[0].x, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFINT);
Gv_NewArray("tilesizy", (void *)&tilesiz[0].y, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFINT);
Gv_NewArray("tilesizx", (void *)&tilesiz[0].x, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
Gv_NewArray("tilesizy", (void *)&tilesiz[0].y, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
#endif
}

View file

@ -78,8 +78,6 @@ int32_t Gv_NewArray(const char *pszLabel, void *arrayptr, int32_t asize, uint32_
ASSERT_IMPLIES(dwFlags&GAMEARRAY_TYPE_MASK,
g_gameArrayCount==0 || (dwFlags&(GAMEARRAY_READONLY|GAMEARRAY_WARN)));
ASSERT_IMPLIES(dwFlags&GAMEARRAY_STRIDE2, dwFlags&GAMEARRAY_OFINT);
if (g_gameArrayCount >= MAXGAMEARRAYS)
{
C_CUSTOMERROR("too many arrays! (max: %d)", MAXGAMEARRAYS);
@ -672,8 +670,8 @@ static void Gv_AddSystemVars(void)
Gv_NewArray("nextsectbunchf", (void *)nextsectbunch[1], MAXSECTORS, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
#endif
Gv_NewArray("editorcolors", (void *)editorcolors, 256, GAMEARRAY_READONLY|GAMEARRAY_OFCHAR);
Gv_NewArray("tilesizx", (void *)&tilesiz[0].x, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFINT);
Gv_NewArray("tilesizy", (void *)&tilesiz[0].y, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFINT);
Gv_NewArray("tilesizx", (void *)&tilesiz[0].x, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
Gv_NewArray("tilesizy", (void *)&tilesiz[0].y, MAXTILES, GAMEARRAY_STRIDE2|GAMEARRAY_READONLY|GAMEARRAY_OFSHORT);
// Gv_NewArray("picsiz", (void *)picsiz, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFCHAR);
Gv_NewArray("picanm", (void *)picanm, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFINT);