Browse Source

Apply defines to render

pull/736/head
Anders Jenbo 6 years ago
parent
commit
b7c126d976
  1. 76
      Source/render.cpp

76
Source/render.cpp

@ -13,7 +13,7 @@ enum {
RT_RTRAPEZOID RT_RTRAPEZOID
}; };
static DWORD RightMask[32] = { static DWORD RightMask[TILE_HEIGHT] = {
0xEAAAAAAA, 0xF5555555, 0xEAAAAAAA, 0xF5555555,
0xFEAAAAAA, 0xFF555555, 0xFEAAAAAA, 0xFF555555,
0xFFEAAAAA, 0xFFF55555, 0xFFEAAAAA, 0xFFF55555,
@ -32,7 +32,7 @@ static DWORD RightMask[32] = {
0xFFFFFFFF, 0xFFFFFFFF 0xFFFFFFFF, 0xFFFFFFFF
}; };
static DWORD LeftMask[32] = { static DWORD LeftMask[TILE_HEIGHT] = {
0xAAAAAAAB, 0x5555555F, 0xAAAAAAAB, 0x5555555F,
0xAAAAAABF, 0x555555FF, 0xAAAAAABF, 0x555555FF,
0xAAAAABFF, 0x55555FFF, 0xAAAAABFF, 0x55555FFF,
@ -51,7 +51,7 @@ static DWORD LeftMask[32] = {
0xFFFFFFFF, 0xFFFFFFFF 0xFFFFFFFF, 0xFFFFFFFF
}; };
static DWORD WallMask[32] = { static DWORD WallMask[TILE_HEIGHT] = {
0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555,
0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555,
0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555,
@ -70,7 +70,7 @@ static DWORD WallMask[32] = {
0xAAAAAAAA, 0x55555555 0xAAAAAAAA, 0x55555555
}; };
static DWORD SolidMask[32] = { static DWORD SolidMask[TILE_HEIGHT] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
@ -89,7 +89,7 @@ static DWORD SolidMask[32] = {
0xFFFFFFFF, 0xFFFFFFFF 0xFFFFFFFF, 0xFFFFFFFF
}; };
static DWORD RightFoliageMask[32] = { static DWORD RightFoliageMask[TILE_HEIGHT] = {
0xFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF,
0x0FFFFFFF, 0x03FFFFFF, 0x0FFFFFFF, 0x03FFFFFF,
0x00FFFFFF, 0x003FFFFF, 0x00FFFFFF, 0x003FFFFF,
@ -108,7 +108,7 @@ static DWORD RightFoliageMask[32] = {
0x0FFFFFFF, 0x3FFFFFFF, 0x0FFFFFFF, 0x3FFFFFFF,
}; };
static DWORD LeftFoliageMask[32] = { static DWORD LeftFoliageMask[TILE_HEIGHT] = {
0xFFFFFFFF, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFC,
0xFFFFFFF0, 0xFFFFFFC0, 0xFFFFFFF0, 0xFFFFFFC0,
0xFFFFFF00, 0xFFFFFC00, 0xFFFFFF00, 0xFFFFFC00,
@ -198,22 +198,22 @@ void RenderTile(BYTE *pBuff)
tile = (level_cel_block & 0x7000) >> 12; tile = (level_cel_block & 0x7000) >> 12;
tbl = &pLightTbl[256 * light_table_index]; tbl = &pLightTbl[256 * light_table_index];
mask = &SolidMask[31]; mask = &SolidMask[TILE_HEIGHT - 1];
if (cel_transparency_active) { if (cel_transparency_active) {
if (arch_draw_type == 0) { if (arch_draw_type == 0) {
mask = &WallMask[31]; mask = &WallMask[TILE_HEIGHT - 1];
} }
if (arch_draw_type == 1 && tile != RT_LTRIANGLE) { if (arch_draw_type == 1 && tile != RT_LTRIANGLE) {
c = block_lvid[level_piece_id]; c = block_lvid[level_piece_id];
if (c == 1 || c == 3) { if (c == 1 || c == 3) {
mask = &LeftMask[31]; mask = &LeftMask[TILE_HEIGHT - 1];
} }
} }
if (arch_draw_type == 2 && tile != RT_RTRIANGLE) { if (arch_draw_type == 2 && tile != RT_RTRIANGLE) {
c = block_lvid[level_piece_id]; c = block_lvid[level_piece_id];
if (c == 2 || c == 3) { if (c == 2 || c == 3) {
mask = &RightMask[31]; mask = &RightMask[TILE_HEIGHT - 1];
} }
} }
} else if (arch_draw_type && cel_foliage_active) { } else if (arch_draw_type && cel_foliage_active) {
@ -221,29 +221,29 @@ void RenderTile(BYTE *pBuff)
return; return;
} }
if (arch_draw_type == 1) { if (arch_draw_type == 1) {
mask = &LeftFoliageMask[31]; mask = &LeftFoliageMask[TILE_HEIGHT - 1];
} }
if (arch_draw_type == 2) { if (arch_draw_type == 2) {
mask = &RightFoliageMask[31]; mask = &RightFoliageMask[TILE_HEIGHT - 1];
} }
} }
#ifdef _DEBUG #ifdef _DEBUG
if (GetAsyncKeyState(VK_MENU) & 0x8000) { if (GetAsyncKeyState(VK_MENU) & 0x8000) {
mask = &SolidMask[31]; mask = &SolidMask[TILE_HEIGHT - 1];
} }
#endif #endif
switch (tile) { switch (tile) {
case RT_SQUARE: case RT_SQUARE:
for (i = 32; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask);
} }
break; break;
case RT_TRANSPARENT: case RT_TRANSPARENT:
for (i = 32; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
m = *mask; m = *mask;
for (j = 32; j != 0; j -= v, v == 32 ? m = 0 : m <<= v) { for (j = TILE_WIDTH / 2; j != 0; j -= v, v == TILE_WIDTH / 2 ? m = 0 : m <<= v) {
v = *src++; v = *src++;
if (v >= 0) { if (v >= 0) {
RenderLine(&dst, &src, v, tbl, m); RenderLine(&dst, &src, v, tbl, m);
@ -255,47 +255,47 @@ void RenderTile(BYTE *pBuff)
} }
break; break;
case RT_LTRIANGLE: case RT_LTRIANGLE:
for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
src += i & 2; src += i & 2;
dst += i; dst += i;
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
} }
for (i = 2; i != 32; i += 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = 2; i != TILE_WIDTH / 2; i += 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
src += i & 2; src += i & 2;
dst += i; dst += i;
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
} }
break; break;
case RT_RTRIANGLE: case RT_RTRIANGLE:
for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
src += i & 2; src += i & 2;
dst += i; dst += i;
} }
for (i = 2; i != 32; i += 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = 2; i != TILE_HEIGHT; i += 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
src += i & 2; src += i & 2;
dst += i; dst += i;
} }
break; break;
case RT_LTRAPEZOID: case RT_LTRAPEZOID:
for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
src += i & 2; src += i & 2;
dst += i; dst += i;
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
} }
for (i = 16; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT / 2; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask);
} }
break; break;
case RT_RTRAPEZOID: case RT_RTRAPEZOID:
for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32 - i, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask);
src += i & 2; src += i & 2;
dst += i; dst += i;
} }
for (i = 16; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { for (i = TILE_HEIGHT / 2; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) {
RenderLine(&dst, &src, 32, tbl, *mask); RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask);
} }
break; break;
} }
@ -311,20 +311,20 @@ void world_draw_black_tile(int sx, int sy)
int i, j, k; int i, j, k;
BYTE *dst; BYTE *dst;
if (sx >= SCREEN_X + SCREEN_WIDTH || sy >= SCREEN_Y + VIEWPORT_HEIGHT + 32) if (sx >= SCREEN_X + SCREEN_WIDTH || sy >= SCREEN_Y + VIEWPORT_HEIGHT + TILE_WIDTH / 2)
return; return;
if (sx < SCREEN_X - 60 || sy < SCREEN_Y) if (sx < SCREEN_X - (TILE_WIDTH - 4) || sy < SCREEN_Y)
return; return;
dst = &gpBuffer[sx + BUFFER_WIDTH * sy] + 30; dst = &gpBuffer[sx + BUFFER_WIDTH * sy] + TILE_WIDTH / 2 - 2;
for (i = 30, j = 1; i >= 0; i -= 2, j++, dst -= BUFFER_WIDTH + 2) { for (i = TILE_HEIGHT - 2, j = 1; i >= 0; i -= 2, j++, dst -= BUFFER_WIDTH + 2) {
if (dst < gpBufEnd) if (dst < gpBufEnd)
memset(dst, 0, 4 * j); memset(dst, 0, 4 * j);
} }
dst += 4; dst += 4;
for (i = 2, j = 15; i != 32; i += 2, j--, dst -= BUFFER_WIDTH - 2) { for (i = 2, j = TILE_HEIGHT / 2 - 1; i != TILE_HEIGHT; i += 2, j--, dst -= BUFFER_WIDTH - 2) {
if (dst < gpBufEnd) if (dst < gpBufEnd)
memset(dst, 0, 4 * j); memset(dst, 0, 4 * j);
} }

Loading…
Cancel
Save